:root{--bg:#16181d;--panel:#1e2128;--border:#2c3038;--text:#dfe3ea;--muted:#8b929e;--accent:#4a9eff;--error:#ff6b6b;--ok:#4ade80}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font:14px/1.5 ui-sans-serif,system-ui,Noto Sans KR,sans-serif}button{font:inherit;color:var(--text);background:var(--panel);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:6px 12px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#0b1220;font-weight:600}button.link{color:var(--muted);background:0 0;border:none;text-decoration:underline}button.tab{color:var(--muted);background:0 0;border:none}button.tab.active{color:var(--text);border-bottom:2px solid var(--accent);border-radius:0}input{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:8px 10px}input:focus{border-color:var(--accent);outline:none}.muted{color:var(--muted)}.error{color:var(--error)}.spacer{flex:1}.centered{place-items:center;min-height:100vh;display:grid}.card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:28px}.auth{flex-direction:column;gap:8px;width:320px;display:flex}.auth h1{margin:0;font-size:22px}.auth p{margin:0 0 12px}.auth label{color:var(--muted);margin-top:6px;font-size:12px}.auth button[type=submit]{margin-top:16px}.workspace{flex-direction:column;height:100vh;display:flex}.workspace header{border-bottom:1px solid var(--border);align-items:center;gap:14px;padding:10px 16px;display:flex}.workspace header nav{gap:4px;display:flex}.occupancy{font-variant-numeric:tabular-nums;border:1px solid var(--border);white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:12px}.occupancy.full{color:var(--error);border-color:var(--error)}.toolbar{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:8px 16px;display:flex}.toolbar .message{color:var(--muted);font-size:13px}.dot{background:var(--accent);vertical-align:middle;border-radius:50%;width:6px;height:6px;display:inline-block}.workspace main{flex:1;min-height:0;display:grid}.workspace .editor{border-right:1px solid var(--border);min-height:0}.workspace aside{min-height:0;overflow:auto}.panel{flex-direction:column;gap:10px;min-height:100%;padding:12px 16px;display:flex}.panel-head{align-items:center;gap:10px;display:flex}.status{border:1px solid var(--border);border-radius:999px;padding:2px 8px;font-size:12px}.status-succeeded{color:var(--ok);border-color:var(--ok)}.status-failed,.status-timed_out{color:var(--error);border-color:var(--error)}.status-running,.status-queued{color:var(--accent);border-color:var(--accent)}.elapsed{font-variant-numeric:tabular-nums;font-size:12px}.progress{border:1px solid var(--border);border-left:3px solid var(--accent);background:var(--bg);border-radius:6px;padding:6px 10px;font-size:12px}.artifacts{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.artifacts li{align-items:center;gap:8px;font-size:13px;display:flex}.artifacts .seq{color:var(--muted);text-align:right;width:18px}.log{resize:vertical;background:var(--bg);border:1px solid var(--border);white-space:pre-wrap;word-break:break-word;border-radius:6px;flex:none;min-height:200px;max-height:60vh;margin:0;padding:10px;font:12px/1.5 ui-monospace,monospace;overflow:auto}.result{flex-direction:column;gap:10px;display:flex}.scrubber,.controls{align-items:center;gap:8px;font-size:12px;display:flex}.scrubber label,.controls label{color:var(--muted);white-space:nowrap}.stage-name{text-overflow:ellipsis;white-space:nowrap;margin:2px 0 0;font-size:12px;overflow:hidden}select{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:4px 8px}.surface{aspect-ratio:4/3;border:1px solid var(--border);background:var(--bg);cursor:crosshair;border-radius:6px;width:100%;display:block}.chart{margin:0}.chart svg{width:100%;height:auto;display:block}.chart .grid{stroke:var(--border);stroke-width:1px}.chart .tick,.chart .axis-label{fill:var(--muted);font-size:10px}.chart .surface-line{stroke:var(--muted);stroke-width:1px;stroke-dasharray:3 3}.chart figcaption{color:var(--muted);flex-wrap:wrap;gap:10px;font-size:12px;display:flex}.legend{gap:10px;display:flex}.legend span{align-items:center;gap:4px;display:flex}.legend i{border-radius:2px;width:10px;height:3px}.legend i.band{border:1px solid var(--border);border-radius:2px;height:10px}.legend.materials{color:var(--muted)}.auth .hint{margin:2px 0 0;font-size:12px}.admin{border-bottom:1px solid var(--border);background:var(--panel);flex-direction:column;gap:12px;padding:14px 16px;display:flex}.admin header{align-items:center;gap:12px;display:flex}.admin h2{margin:0;font-size:15px}.admin .issue{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.admin .issue label{color:var(--muted);font-size:12px}.admin .issue input{width:72px}.issued{border:1px solid var(--accent);border-radius:8px;flex-direction:column;gap:8px;padding:12px;display:flex}.issued .warn{color:var(--accent);margin:0;font-size:13px}.issued .code-row{align-items:center;gap:8px;display:flex}.issued code{background:var(--bg);border:1px solid var(--border);word-break:break-all;-webkit-user-select:all;user-select:all;border-radius:6px;flex:1;padding:8px 10px;font:13px/1.4 ui-monospace,monospace}.issued p.muted{margin:0;font-size:12px}.invites{border-collapse:collapse;font-size:13px}.invites th,.invites td{text-align:left;padding:6px 12px 6px 0}.invites th{color:var(--muted);font-size:12px;font-weight:500}.invites tr.spent{color:var(--muted)}.docs{border-right:1px solid var(--border);flex-direction:column;gap:10px;min-height:0;padding:12px 14px;display:flex;overflow:auto}.docs header{align-items:center;gap:10px;display:flex}.docs h2{margin:0;font-size:15px}.docs h3{margin:0 0 2px;font-size:14px}.docs h4{color:var(--accent);letter-spacing:.04em;margin:12px 0 4px;font-size:12px}.docs-search{gap:6px;display:flex}.docs-search input{flex:1}.docs-hits{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.docs-hits li p{margin:2px 0 0;font-size:12px}.reference{flex-direction:column;gap:10px;min-height:0;display:flex}.reference-filter input{box-sizing:border-box;width:100%}.reference details{border-top:1px solid var(--border);padding-top:6px}.reference summary{cursor:pointer;letter-spacing:.04em;color:var(--accent);font-size:12px;font-weight:600}.reference .note{margin:4px 0 6px;font-size:11px}.reference ul{margin:0;padding:0;list-style:none}.reference li{grid-template-columns:1fr auto;margin-bottom:8px;display:grid}.reference li code{font-size:12px}.reference li .count{font-variant-numeric:tabular-nums;font-size:11px}.reference li p{grid-column:1/-1;margin:1px 0 0;font-size:11px;line-height:1.4}.chart svg.zoomed{cursor:grab}.chart svg.zoomed:active{cursor:grabbing}.chart svg{-webkit-user-select:none;user-select:none}.chart .band-label{pointer-events:none}.file-browser{border-bottom:1px solid var(--border);background:var(--panel);flex-direction:column;gap:10px;max-height:55vh;padding:14px 16px;display:flex;overflow:auto}.file-browser header{align-items:center;gap:10px;display:flex}.file-browser h2{margin:0;font-size:15px}.file-tree{margin:0;padding:0;list-style:none}.file-tree li{padding:2px 0;padding-left:calc(var(--depth) * 18px);align-items:center;gap:10px;font-size:13px;display:flex}.file-tree li:hover{background:#ffffff0a}.file-tree li{cursor:grab}.file-tree li .name,.file-tree li button{cursor:pointer}.file-tree li.drop-target{outline:1px dashed var(--accent);outline-offset:-1px;background:#4a9eff29}.file-tree .name{color:var(--text);text-decoration:none}.file-tree .size{font-variant-numeric:tabular-nums;font-size:11px}.file-tree li .name{text-align:left;flex:1}.workspace header nav .tab{border-bottom:2px solid #0000;border-radius:6px 6px 0 0;align-items:center;gap:2px;padding:4px 6px 4px 10px;display:inline-flex}.workspace header nav .tab:hover{background:#ffffff0a}.workspace header nav .tab.active{border-bottom-color:var(--accent);background:#4a9eff14}.workspace header nav .tab button[role=tab]{color:var(--muted);text-decoration:none}.workspace header nav .tab.active button[role=tab]{color:var(--text);font-weight:600}.workspace header nav .tab .close{padding:0 4px;font-size:15px;line-height:1;text-decoration:none}.workspace header nav .tab .close:hover{color:var(--error)}.link.danger{color:#ff6b6b}.material-edge{stroke:#ffffff52;stroke-width:1px;stroke-dasharray:2 2}.band-label{fill:#ffffff73;letter-spacing:.04em;font-size:10px}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.docs pre{white-space:pre-wrap;word-break:break-word;color:var(--text);margin:0;font:12px/1.5 ui-monospace,monospace}.docs .tabs{border-bottom:1px solid var(--border);gap:2px;display:flex}.docs .tabs .tab{padding:6px 10px;font-size:13px}.params{border-collapse:collapse;width:100%;font-size:12px}.params th,.params td{text-align:left;vertical-align:top;border-bottom:1px solid var(--border);padding:6px 8px 6px 0}.params th{color:var(--muted);font-weight:500}.params code{color:var(--text);font:12px/1.4 ui-monospace,monospace}.params tr.unreachable{opacity:.55}.params .constraint{color:var(--muted);margin-top:3px;font-size:11px}.badge{vertical-align:middle;cursor:help;border-radius:4px;margin-left:5px;padding:1px 5px;font-size:10px;display:inline-block}.badge.warn{color:#ff9f43;background:#4a3a1a}.badge.error{color:var(--error);background:#4a1f1f}.badge.group{background:var(--border);color:var(--muted)}.splitter{cursor:col-resize;background:var(--border);border:none;flex:none;width:7px;padding:0}.splitter:hover,.splitter:focus-visible{background:var(--accent);outline:none}body.resizing{-webkit-user-select:none;user-select:none;cursor:col-resize}.log.expanded{flex:1;max-height:none}.quantities{border:1px solid var(--border);border-radius:6px;flex-wrap:wrap;gap:4px 14px;margin:0;padding:6px 10px 8px;font-size:12px;display:flex}.quantities legend{color:var(--muted);padding:0 4px}.quantities label{align-items:center;gap:4px;display:flex}.controls label.toggle{cursor:pointer;align-items:center;gap:4px;display:flex}.empty-editor{flex-direction:column;justify-content:center;align-items:center;gap:12px;height:100%;display:flex}.empty-editor p{margin:0}.workspace header nav .tab .dot{margin-left:6px}.view{height:100%}.view-tabs{gap:2px;margin-right:12px;display:flex}.view-tabs button{color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-bottom-width:2px;padding:4px 12px;font-size:13px}.view-tabs button[aria-selected=true]{color:var(--text);border-bottom-color:var(--accent)}.app-header{border-bottom:1px solid var(--border);background:var(--panel);align-items:center;gap:12px;padding:8px 12px;display:flex}.devsim{flex-direction:column;height:calc(100% - 41px);display:flex;overflow:hidden}.devsim-bar{border-bottom:1px solid var(--border);align-items:flex-end;gap:16px;padding:8px 12px;display:flex}.devsim-tabs{gap:2px;margin-left:auto;display:flex}.devsim-tabs button{border:1px solid var(--border);color:var(--muted);cursor:pointer;background:0 0;padding:4px 14px}.devsim-tabs button[aria-selected=true]{color:var(--text);border-color:var(--accent)}.devsim-body{flex:1;gap:0;min-height:0;display:grid}.devsim-map,.devsim-run{min-width:0;padding:12px;overflow-y:auto}.devsim-actions{align-items:center;gap:10px;margin-bottom:8px;display:flex}.electrode-map{border:1px solid var(--border);background:var(--bg);display:block}.field{color:var(--muted);flex-direction:column;gap:3px;font-size:12px;display:flex}.field.inline{flex-direction:row;align-items:center;gap:6px}.field input,.field select{background:var(--bg);border:1px solid var(--border);color:var(--text);padding:3px 6px;font-size:13px}.hint{color:var(--muted);margin:4px 0;font-size:12px}.problems{color:var(--error);margin:6px 0;padding-left:18px;font-size:12px}.source-editor section{margin-top:14px}.source-editor h3{margin:0 0 2px;font-size:13px}.electrode-list{margin:6px 0;padding:0;list-style:none}.electrode-list li{align-items:center;gap:6px;padding:2px 0;display:flex}.electrode-list input{background:var(--bg);border:1px solid var(--border);color:var(--text);width:8em;padding:2px 6px}.swatch{border-radius:2px;flex:none;width:10px;height:10px;display:inline-block}.origin{color:var(--muted);font-size:11px}.bias{border:1px solid var(--border);margin:6px 0;padding:8px}.bias-head{align-items:center;gap:6px;display:flex}.bias-name{background:var(--bg);border:1px solid var(--border);width:6em;color:var(--text);padding:2px 6px}.bias-electrodes{flex-wrap:wrap;gap:8px;margin:6px 0;font-size:12px;display:flex}.bias-electrodes label{color:var(--muted);align-items:center;gap:3px;display:inline-flex}.bias-electrodes label.on{color:var(--text)}.bias-electrodes em{opacity:.6;font-size:11px;font-style:normal}.sweep-fields{gap:8px;display:flex}.sweep-fields input{width:5em}button.ghost{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:15px;line-height:1}.iv-chart{border:1px solid var(--border);background:var(--bg);margin-top:8px;display:block}.chart-controls{color:var(--muted);align-items:center;gap:10px;margin-top:10px;font-size:12px;display:flex}.chart-controls select{background:var(--bg);border:1px solid var(--border);color:var(--text);padding:2px 6px}.legend{color:var(--muted);flex-wrap:wrap;gap:10px;margin:6px 0;padding:0;font-size:12px;list-style:none;display:flex}.legend li{align-items:center;gap:4px;display:flex}.legend .c0{background:#4a9eff}.legend .c1{background:#ff9f43}.legend .c2{background:#2ed573}.legend .c3{background:#ff6b81}.legend .c4{background:#a55eea}.legend .c5{background:#26d0ce}.legend .c6{background:#ffd32a}.legend .c7{background:#c8d6e5}.figure-table,.diff{margin-top:10px;overflow-x:auto}.figure-table table,.diff table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:12px}.figure-table th,.figure-table td,.diff th,.diff td{border:1px solid var(--border);text-align:right;white-space:nowrap;padding:3px 8px}.figure-table th[scope=row],.diff th[scope=row]{text-align:left;color:var(--muted);font-weight:400}.figure-table thead th,.diff thead th{color:var(--muted);font-weight:400}.run-status{align-items:center;gap:8px;display:flex}.warning{color:#ffd32a;font-size:12px}button.analyse{border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;margin-left:auto;padding:2px 10px;font-size:12px}.compare{flex:1;grid-template-columns:minmax(220px,280px) minmax(0,1fr);min-height:0;display:grid}.compare-picker{border-right:1px solid var(--border);padding:12px;overflow-y:auto}.compare-picker ul{margin:6px 0;padding:0;list-style:none}.compare-picker li label{cursor:pointer;align-items:center;gap:6px;padding:3px 0;font-size:12px;display:flex}.compare-body{min-width:0;padding:12px;overflow-y:auto}.electrode-map-wrap{position:relative}.electrode-map{cursor:pointer}.interface-popover{z-index:5;background:var(--panel);border:1px solid var(--accent);min-width:190px;max-width:260px;padding:8px 10px;position:absolute;transform:translate(-50%,8px);box-shadow:0 6px 18px #00000080}.popover-head{align-items:center;gap:6px;display:flex}.popover-head strong{font-size:13px}.popover-head .ghost{margin-left:auto}.popover-choices{max-height:180px;margin:4px 0;padding:0;list-style:none;overflow-y:auto}.popover-choices button{text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:6px;padding:3px 6px;font-size:12px;display:flex}.popover-choices button:hover{border-color:var(--border)}.popover-choices button.on{border-color:var(--accent)}.popover-actions{gap:6px;margin-top:4px;display:flex}.attached{flex-wrap:wrap;flex:1;gap:4px;min-width:0;display:flex}.attached .chip{border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:2px;padding:0 5px;font-size:11px}.attached .empty{color:var(--error);font-size:11px;font-style:normal}.bias-head .drives{color:var(--muted);white-space:nowrap;font-size:12px}.devsim-bar .notice{color:var(--muted);flex-basis:100%;order:10;margin:2px 0 0;font-size:12px;line-height:1.5}.devsim-bar .notice strong{color:var(--text);font-weight:600}.devsim-bar{flex-wrap:wrap}.skipped{border:1px solid var(--error);margin-top:10px;padding:6px 10px;font-size:12px}.skipped summary{color:var(--error);cursor:pointer}.skipped ul{color:var(--muted);max-height:160px;margin:6px 0 0;padding-left:18px;overflow-y:auto}.skipped code{color:var(--text);font-variant-numeric:tabular-nums}.devsim-bar .notice.caution{color:#ffd32a}.devsim-bar .notice.caution:before{content:"⚠ "}.save-run{gap:6px;margin-top:10px;display:flex}.save-run input{background:var(--bg);border:1px solid var(--border);min-width:0;color:var(--text);flex:1;padding:3px 6px;font-size:13px}.origins{margin:6px 0;padding:0;font-size:12px;list-style:none}.origins li{align-items:center;gap:6px;padding:2px 0;display:flex}.origins input{background:var(--bg);border:1px solid var(--accent);color:var(--text);padding:1px 5px;font-size:12px}.origins .link{border:none;border-bottom:1px dashed var(--border);color:var(--text);cursor:pointer;background:0 0;padding:0;font-size:12px}.compare-picker li{align-items:center;gap:4px;display:flex}.compare-picker li label{flex:1;min-width:0}
