/* sandbox.css — Bank ABC Portal API | Board 4 Sandbox Console | V1.1 + Monitor patch | Zero hardcoded hex */
.sandbox-root{display:flex;flex-direction:column;gap:var(--space-4);padding-bottom:var(--space-8)}
.sandbox-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);padding-bottom:var(--space-4);border-bottom:1px solid var(--surface-muted)}
.sandbox-header__meta{display:flex;flex-direction:column;gap:2px}
.sandbox-header__eyebrow{font-size:var(--text-xs);font-weight:var(--font-medium);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.07em}
.sandbox-header__title{font-size:var(--text-2xl);font-weight:var(--font-bold);color:var(--text-primary);line-height:var(--leading-tight);margin:0}
.sandbox-header__subtitle{font-size:var(--text-sm);color:var(--text-secondary);margin:var(--space-1) 0 0}
.sandbox-header__actions{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0;margin-top:4px}
/* Mode tabs */
.sandbox-mode-tabs{display:flex;border-bottom:2px solid var(--surface-muted)}
.sandbox-mode-tab{padding:var(--space-2) var(--space-5);font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-secondary);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;font-family:var(--font-sans);margin-bottom:-2px;display:flex;align-items:center;gap:var(--space-2);transition:color var(--transition-fast),border-color var(--transition-fast)}
.sandbox-mode-tab:hover{color:var(--text-primary)}
.sandbox-mode-tab--active{color:var(--brand-primary);border-bottom-color:var(--brand-primary);font-weight:var(--font-semibold)}
.sandbox-mode-tab:focus-visible{outline:2px solid var(--brand-primary);outline-offset:2px}
.sandbox-mode-tab__live-dot{width:7px;height:7px;border-radius:var(--radius-full);background-color:var(--status-success);animation:pulse-dot 2s ease infinite}
@keyframes pulse-dot{0%,100%{opacity:1}50%{opacity:.4}}
/* Console wrapper */
.sandbox-console-wrapper{border:1px solid var(--surface-muted);border-radius:var(--radius-xl);overflow:hidden;display:flex;flex-direction:column}
/* Scenario bar — LOCKED orange, semantik berbeda dari F-03 */
.sandbox-scenario-bar{background-color:var(--f03-bg);border-bottom:1px solid var(--f03-border);padding:var(--space-2) var(--space-4);display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;min-height:44px}
.sandbox-scenario-bar__label{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--f03-text);white-space:nowrap;flex-shrink:0}
.sandbox-scenario-bar__pills{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;flex:1}
.scenario-pill{padding:3px var(--space-3);font-size:var(--text-xs);font-weight:var(--font-medium);border:1px solid var(--f03-border);border-radius:var(--radius-full);cursor:pointer;font-family:var(--font-sans);background:transparent;color:var(--f03-text);opacity:.65;white-space:nowrap;transition:background-color var(--transition-fast),opacity var(--transition-fast)}
.scenario-pill:hover{opacity:1;background-color:rgba(255,152,0,.12)}
.scenario-pill--active{background-color:var(--f03-border);color:var(--text-inverse);opacity:1;font-weight:var(--font-semibold)}
.scenario-pill:focus-visible{outline:2px solid var(--f03-text);outline-offset:2px}
.sandbox-fidelity-label{margin-left:auto;flex-shrink:0;font-size:var(--text-xs);font-weight:var(--font-medium);color:var(--f03-text);opacity:.8;white-space:nowrap;padding:2px var(--space-2);border:1px solid var(--f03-border);border-radius:var(--radius-sm);background-color:rgba(255,255,255,.5)}
/* Mobile tabs */
.sandbox-mobile-tabs{display:none;border-bottom:1px solid var(--surface-muted);background-color:var(--surface-card)}
.sandbox-mobile-tab{flex:1;padding:var(--space-3);font-size:var(--text-xs);font-weight:var(--font-medium);color:var(--text-secondary);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;font-family:var(--font-sans);transition:color var(--transition-fast),border-color var(--transition-fast)}
.sandbox-mobile-tab--active{color:var(--brand-primary);border-bottom-color:var(--brand-primary)}
/* 3-panel */
.sandbox-console{display:flex;min-height:540px;background-color:var(--surface-card)}
.sandbox-endpoint-list{width:200px;min-width:200px;border-right:1px solid var(--surface-muted);background-color:var(--surface-subtle);display:flex;flex-direction:column;overflow-y:auto;flex-shrink:0}
.sandbox-endpoint-search{padding:var(--space-3);border-bottom:1px solid var(--surface-muted);display:flex;align-items:center;gap:var(--space-2)}
.sandbox-endpoint-search__icon{color:var(--text-tertiary);flex-shrink:0;width:13px;height:13px}
.sandbox-endpoint-search__input{flex:1;border:none;outline:none;background:transparent;font-size:var(--text-xs);color:var(--text-primary);font-family:var(--font-sans)}
.sandbox-endpoint-search__input::placeholder{color:var(--text-tertiary)}
.endpoint-category{border-bottom:1px solid var(--surface-muted)}
.endpoint-category__toggle{width:100%;display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em;background:none;border:none;cursor:pointer;font-family:var(--font-sans);text-align:left;transition:background-color var(--transition-fast)}
.endpoint-category__toggle:hover{background-color:var(--surface-muted);color:var(--text-secondary)}
.endpoint-category__chevron{transition:transform var(--transition-fast);flex-shrink:0}
.endpoint-category__chevron--closed{transform:rotate(-90deg)}
.endpoint-category__list{list-style:none;margin:0;padding:var(--space-1) 0}
.sandbox-endpoint-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);cursor:pointer;background:none;border:none;width:100%;text-align:left;font-family:var(--font-sans);transition:background-color var(--transition-fast);position:relative}
.sandbox-endpoint-item:hover{background-color:var(--surface-muted)}
.sandbox-endpoint-item--active{background-color:var(--brand-primary-subtle)}
.sandbox-endpoint-item--active::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background-color:var(--brand-primary);border-radius:0 var(--radius-sm) var(--radius-sm) 0}
.sandbox-endpoint-item:focus-visible{outline:2px solid var(--brand-primary);outline-offset:-2px}
.endpoint-method-badge{font-size:9px;font-weight:var(--font-bold);font-family:var(--font-mono);padding:1px 4px;border-radius:var(--radius-sm);flex-shrink:0;line-height:1.4}
.endpoint-method-badge--post{background-color:var(--status-info-bg);color:var(--status-info)}
.endpoint-method-badge--get{background-color:var(--status-success-bg);color:var(--status-success)}
.endpoint-method-badge--delete{background-color:var(--status-danger-bg);color:var(--status-danger)}
.endpoint-path{font-size:var(--text-xs);font-family:var(--font-mono);color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sandbox-endpoint-item--active .endpoint-path{color:var(--brand-primary);font-weight:var(--font-semibold)}
.sandbox-panel__header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--surface-muted);gap:var(--space-2);flex-shrink:0}
.sandbox-panel__title{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.07em}
.sandbox-panel__body{padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-4);flex:1}
.sandbox-request-panel{flex:1;border-right:1px solid var(--surface-muted);background-color:var(--surface-card);display:flex;flex-direction:column;overflow-y:auto;min-width:0}
.request-endpoint-label{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}
.request-method-badge{font-size:var(--text-xs);font-weight:var(--font-bold);font-family:var(--font-mono);padding:2px var(--space-2);border-radius:var(--radius-md)}
.request-method-badge--post{background-color:var(--status-info-bg);color:var(--status-info)}
.request-method-badge--get{background-color:var(--status-success-bg);color:var(--status-success)}
.request-method-badge--delete{background-color:var(--status-danger-bg);color:var(--status-danger)}
.request-path{font-size:var(--text-sm);font-family:var(--font-mono);font-weight:var(--font-semibold);color:var(--text-primary)}
.request-section-label{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--space-2);display:block}
.request-headers{background-color:var(--surface-subtle);border:1px solid var(--surface-muted);border-radius:var(--radius-md);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}
.request-header-row{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);font-family:var(--font-mono)}
.request-header-key{color:var(--text-tertiary);flex-shrink:0;min-width:120px}
.request-header-value{color:var(--text-primary)}
.request-header-value--masked{letter-spacing:.15em}
.request-body-textarea{width:100%;min-height:160px;background-color:var(--surface-subtle);border:1px solid var(--surface-muted);border-radius:var(--radius-md);padding:var(--space-3);font-size:var(--text-xs);font-family:var(--font-mono);color:var(--text-primary);line-height:var(--leading-relaxed);resize:vertical;outline:none;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}
.request-body-textarea:focus{border-color:var(--brand-primary);box-shadow:0 0 0 3px var(--brand-primary-subtle)}
.request-actions{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}
.btn--loading{opacity:.7;cursor:wait;pointer-events:none}
.btn--loading::after{content:'';display:inline-block;width:10px;height:10px;border:2px solid rgba(255,255,255,.4);border-top-color:white;border-radius:50%;animation:spin .7s linear infinite;margin-left:var(--space-2);vertical-align:middle}
@keyframes spin{to{transform:rotate(360deg)}}
.sandbox-docs-link{font-size:var(--text-xs);color:var(--text-link);text-decoration:none;display:inline-flex;align-items:center;gap:3px;transition:opacity var(--transition-fast)}
.sandbox-docs-link:hover{opacity:.75;text-decoration:underline}
.sandbox-response-panel{flex:1;background-color:var(--status-success-bg);display:flex;flex-direction:column;overflow-y:auto;min-width:0;transition:background-color var(--transition-base)}
.sandbox-response-panel--error{background-color:var(--status-danger-bg)}
.sandbox-response-panel--timeout{background-color:var(--surface-subtle)}
.response-status-bar{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}
.response-status-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-bold);font-family:var(--font-mono);white-space:nowrap}
.response-status-badge--ok{background-color:var(--status-success);color:white}
.response-status-badge--error{background-color:var(--status-danger);color:white}
.response-status-badge--warning{background-color:var(--status-warning);color:white}
.response-status-badge--pending{background-color:var(--surface-muted);color:var(--text-tertiary)}
.response-meta{display:flex;align-items:center;gap:var(--space-3)}
.response-meta-item{font-size:var(--text-xs);color:var(--text-tertiary);display:flex;align-items:center;gap:3px}
.response-meta-item strong{color:var(--text-secondary);font-weight:var(--font-semibold)}
.response-tabs{display:flex;border-bottom:1px solid var(--surface-muted);margin:0 calc(-1*var(--space-4));padding:0 var(--space-4)}
.response-tab{padding:var(--space-2) var(--space-3);font-size:var(--text-xs);font-weight:var(--font-medium);color:var(--text-tertiary);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;font-family:var(--font-sans);margin-bottom:-1px;transition:color var(--transition-fast),border-color var(--transition-fast)}
.response-tab:hover{color:var(--text-secondary)}
.response-tab--active{color:var(--brand-primary);border-bottom-color:var(--brand-primary);font-weight:var(--font-semibold)}
.response-body-viewer{background-color:var(--surface-card);border:1px solid var(--surface-muted);border-radius:var(--radius-md);padding:var(--space-3);font-size:var(--text-xs);font-family:var(--font-mono);color:var(--text-primary);line-height:var(--leading-relaxed);white-space:pre-wrap;word-break:break-all;min-height:120px;transition:background-color var(--transition-base)}
.response-body-viewer--loading{color:var(--text-tertiary);font-style:italic}
.response-headers-table{display:flex;flex-direction:column;gap:var(--space-1)}
.response-header-row{display:flex;gap:var(--space-2);font-size:var(--text-xs);font-family:var(--font-mono)}
.response-header-key{color:var(--text-tertiary);min-width:160px;flex-shrink:0}
.response-header-value{color:var(--text-primary)}
.response-actions{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-top:auto;padding-top:var(--space-3)}
.response-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-8);text-align:center;flex:1}
.response-empty-state__icon{color:var(--text-tertiary);opacity:.4}
.response-empty-state__text{font-size:var(--text-sm);color:var(--text-tertiary)}
.sandbox-compare-panel{border-top:1px solid var(--surface-muted);padding:var(--space-4);background-color:var(--surface-subtle);display:flex;flex-direction:column;gap:var(--space-3)}
.sandbox-compare-panel__header{display:flex;align-items:center;justify-content:space-between}
.sandbox-compare-panel__title{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em}
.sandbox-compare-panel__close{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:none;border:none;border-radius:var(--radius-sm);color:var(--text-tertiary);cursor:pointer;transition:background-color var(--transition-fast)}
.sandbox-compare-panel__close:hover{background-color:var(--surface-muted);color:var(--text-primary)}
.sandbox-compare-body{background-color:var(--surface-card);border:1px solid var(--surface-muted);border-radius:var(--radius-md);padding:var(--space-3);font-size:var(--text-xs);font-family:var(--font-mono);color:var(--text-tertiary);white-space:pre-wrap;max-height:120px;overflow-y:auto}
/* Monitor Langsung */
.sandbox-monitor-panel{border:1px solid var(--surface-muted);border-radius:var(--radius-xl);overflow:hidden;display:flex;flex-direction:column}
.monitor-status-bar{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-5);background-color:var(--surface-subtle);border-bottom:1px solid var(--surface-muted);flex-wrap:wrap;gap:var(--space-3)}
.monitor-connection{display:flex;align-items:center;gap:var(--space-2)}
.monitor-live-dot{width:9px;height:9px;border-radius:var(--radius-full);background-color:var(--status-success);flex-shrink:0;animation:pulse-dot 2s ease infinite}
.monitor-connection-label{font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--text-primary)}
.monitor-connection-sub{font-size:var(--text-xs);color:var(--text-tertiary);margin-left:var(--space-1)}
.monitor-controls{display:flex;align-items:center;gap:var(--space-3)}
.monitor-count{font-size:var(--text-xs);color:var(--text-tertiary)}
.monitor-table-wrapper{flex:1;overflow-y:auto;max-height:480px;background-color:var(--surface-card)}
.monitor-table{width:100%;border-collapse:collapse;min-width:580px}
.monitor-table thead th{position:sticky;top:0;background-color:var(--surface-subtle);padding:var(--space-2) var(--space-4);text-align:left;font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--surface-muted);white-space:nowrap;z-index:1}
.monitor-table tbody tr{border-bottom:1px solid var(--surface-muted);transition:background-color var(--transition-fast)}
.monitor-table tbody tr:hover{background-color:var(--surface-subtle)}
.monitor-table tbody tr.monitor-row--new{animation:rowIn .4s ease}
@keyframes rowIn{from{opacity:0;background-color:var(--status-success-bg)}to{opacity:1}}
.monitor-table tbody td{padding:var(--space-2) var(--space-4);font-size:var(--text-xs);color:var(--text-primary);vertical-align:middle;white-space:nowrap}
.monitor-method-badge{font-size:9px;font-weight:var(--font-bold);font-family:var(--font-mono);padding:1px 5px;border-radius:var(--radius-sm);line-height:1.4;display:inline-block}
.monitor-method-badge--post{background-color:var(--status-info-bg);color:var(--status-info)}
.monitor-method-badge--get{background-color:var(--status-success-bg);color:var(--status-success)}
.monitor-path{font-family:var(--font-mono);color:var(--text-secondary)}
.monitor-status{display:inline-flex;align-items:center;gap:4px;font-weight:var(--font-semibold)}
.monitor-status--ok{color:var(--status-success)}
.monitor-status--error{color:var(--status-danger)}
.monitor-status--warning{color:var(--status-warning)}
.monitor-latency,.monitor-time,.monitor-ip{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-tertiary)}
.monitor-system{font-size:var(--text-xs);color:var(--text-secondary);font-weight:var(--font-medium)}
.monitor-footer-bar{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-5);border-top:1px solid var(--surface-muted);background-color:var(--surface-subtle);font-size:var(--text-xs);color:var(--text-tertiary);flex-wrap:wrap;gap:var(--space-2)}
.monitor-footer-bar a{color:var(--text-link);text-decoration:none;display:inline-flex;align-items:center;gap:3px}
.monitor-footer-bar a:hover{text-decoration:underline}
@media(max-width:1023px){.sandbox-console{flex-direction:column;min-height:unset}.sandbox-endpoint-list{width:100%;min-width:unset;border-right:none;border-bottom:1px solid var(--surface-muted);max-height:200px}.sandbox-request-panel{border-right:none;border-bottom:1px solid var(--surface-muted)}.sandbox-mobile-tabs{display:flex}}
@media(max-width:639px){.sandbox-scenario-bar{gap:var(--space-2);padding:var(--space-2) var(--space-3)}.sandbox-fidelity-label{display:none}.sandbox-mode-tab{padding:var(--space-2) var(--space-3);font-size:var(--text-xs)}}