:root,[data-theme=dark-teal]{--void:#000000;--panel:#08090b;--panel-alt:#0e1013;--border:#1a1d22;--text:#c8d0d8;--text-dim:#5b6470;--accent:#2dd4bf;--accent-dim:#123a35;--accent-text:#eafffb;--active-vp:#ffd60a;--overlay:#8ce99a;--danger:#ff6b6b;--notice-text:#8ce99a;--panel-hover:#14181e;--primary-btn-hover:#175349;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--sans: system-ui, -apple-system, "Segoe UI", sans-serif}[data-theme=dark-amber]{--void:#000000;--panel:#0c0a08;--panel-alt:#161109;--border:#2a2115;--text:#ddd2c0;--text-dim:#7d7059;--accent:#f5a623;--accent-dim:#3d2a0e;--accent-text:#fff2dc;--active-vp:#ffd60a;--overlay:#8ce99a;--danger:#ff8080;--notice-text:#ffcf8a;--panel-hover:#201810;--primary-btn-hover:#5c3f10}[data-theme=light]{--void:#eef0f3;--panel:#ffffff;--panel-alt:#f2f4f7;--border:#d7dbe1;--text:#1b2028;--text-dim:#697180;--accent:#0d9488;--accent-dim:#ccfbf1;--accent-text:#04332e;--active-vp:#d97706;--overlay:#8ce99a;--danger:#c22b2b;--notice-text:#0f766e;--panel-hover:#e6eaf0;--primary-btn-hover:#a6f0e8}[data-theme=terminal]{--void:#000000;--panel:#0a0f0a;--panel-alt:#0f160f;--border:#1c331c;--text:#4fd94f;--text-dim:#2d7a2d;--accent:#00ff41;--accent-dim:#0a2e0a;--accent-text:#d9ffd9;--active-vp:#ffcc00;--overlay:#8ce99a;--danger:#ff3333;--notice-text:#4fd94f;--panel-hover:#142014;--primary-btn-hover:#0f3d0f}[data-theme=vaporwave]{--void:#180a2e;--panel:#1f0f3d;--panel-alt:#2a1650;--border:#3d2166;--text:#e8d5ff;--text-dim:#9678c2;--accent:#ff71ce;--accent-dim:#4d1f3d;--accent-text:#ffe0f5;--active-vp:#05ffa1;--overlay:#8ce99a;--danger:#ff4d6a;--notice-text:#01cdfe;--panel-hover:#351c5c;--primary-btn-hover:#6b2f52}[data-theme=art-deco]{--void:#0d1420;--panel:#14203a;--panel-alt:#1c2c4a;--border:#2e4266;--text:#e8dcc0;--text-dim:#8a8268;--accent:#d4af37;--accent-dim:#4a3d18;--accent-text:#fff8e0;--active-vp:#e94560;--overlay:#8ce99a;--danger:#c0304a;--notice-text:#d4af37;--panel-hover:#24345a;--primary-btn-hover:#5c4a1f}*{box-sizing:border-box}#btnLoadZip,#loadStatus{display:none}html,body{height:100%;margin:0;background:var(--void);color:var(--text);font-family:var(--sans);overflow:hidden}#app{display:flex;flex-direction:column;height:100vh;position:relative}#loadProgress{position:absolute;top:0;left:0;right:0;z-index:200;height:3px;background:transparent;opacity:0;transition:opacity .25s;pointer-events:none}#loadProgress.active{opacity:1}#loadProgressFill{height:100%;width:0%;background:var(--accent);box-shadow:0 0 8px var(--accent);transition:width .15s ease-out}#toolbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:6px 10px;background:var(--panel);border-bottom:1px solid var(--border);font-size:12px;-webkit-user-select:none;user-select:none}.tgroup{display:flex;align-items:center;gap:4px;padding:2px 8px;border-right:1px solid var(--border)}.tgroup:last-child{border-right:none}.tgroup .label{color:var(--text-dim);font-size:10px;text-transform:uppercase;letter-spacing:.06em;margin-right:4px}.contextual-options-group{display:inline-flex;align-items:center;gap:4px;background:var(--accent-dim);border:1px solid var(--accent);border-radius:6px;padding:3px 8px}.contextual-options-group .label{color:var(--accent-text)}button,select,input[type=file]::file-selector-button,#btnFeedback{background:var(--panel-alt);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:5px 9px;font-size:12px;cursor:pointer;font-family:var(--sans);transition:background .12s,border-color .12s}button:hover,#btnFeedback:hover{background:var(--panel-hover)}button.active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent-text)}button:disabled{opacity:.35;cursor:not-allowed}select{padding:5px 6px}#btnFeedback{text-decoration:none;display:inline-block}input[type=file]{color:var(--text-dim);font-size:11px;max-width:150px}input[type=range]{width:90px;accent-color:var(--accent);vertical-align:middle}#loadStatus{font-size:11px;color:var(--text-dim);font-family:var(--mono)}#main{flex:1;display:flex;min-height:0}#sidebar{width:250px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;transition:width .15s ease;overflow:hidden}#sidebar.collapsed{width:0;border-right:none}#sidebarInner{width:250px;overflow-y:auto;flex:1}#sidebarHead{padding:8px 10px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:8px}#btnSortStudies{padding:2px 7px;font-size:10px;text-transform:none;letter-spacing:normal}.study{border-bottom:1px solid var(--border)}.study.activeStudy .study-head{background:var(--accent-dim)}.study.activeStudy .study-head .pname:after{content:" ● active";color:var(--accent);font-size:9px;font-weight:400}.study-head{padding:8px 10px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-size:12px}.study-head:hover{background:var(--panel-alt)}.study-head .pname{font-weight:600}.study-head .meta{color:var(--text-dim);font-size:10px;font-family:var(--mono)}.study-body{display:none;padding:4px 6px 8px}.study.open .study-body{display:block}.study.open .chev{transform:rotate(90deg)}.chev{display:inline-block;transition:transform .1s;color:var(--text-dim);margin-right:4px}.series-item{display:flex;gap:8px;align-items:center;padding:5px 6px;border-radius:4px;cursor:grab}.series-item:hover{background:var(--panel-alt)}.series-item canvas{width:44px;height:44px;background:#000;border-radius:2px;border:1px solid var(--border)}.series-item .si-text{font-size:11px;line-height:1.3;overflow:hidden}.series-item .si-desc{color:var(--text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:150px}.series-item .si-meta{color:var(--text-dim);font-family:var(--mono);font-size:10px}.remove-btn{margin-left:auto;flex-shrink:0;background:none;border:none;color:var(--text-dim);font-size:12px;padding:2px 6px;border-radius:3px;cursor:pointer;line-height:1}.remove-btn:hover{background:#5a1f1f;color:#ff8080}#vpArea{flex:1;display:grid;gap:2px;background:var(--border);min-width:0;min-height:0}.mpr-wrap{display:grid;gap:2px;background:var(--border);min-width:0;min-height:0;overflow:hidden}.mpr-wrap.mprTriptych{grid-template-columns:200px 1fr!important;grid-template-rows:1fr 1fr!important;grid-template-areas:"small1 main" "small2 main"}.mpr-wrap.mprTriptych.mprEqualSize{grid-template-columns:1fr 1fr 1fr!important;grid-template-rows:1fr!important;grid-template-areas:"main small1 small2"!important}.mpr-wrap.mprTriptych.mprEqualSize .viewport.mpr-small1 .vp-overlay,.mpr-wrap.mprTriptych.mprEqualSize .viewport.mpr-small2 .vp-overlay{font-size:10.5px}.viewport.mpr-main{grid-area:main}.viewport.mpr-small1{grid-area:small1}.viewport.mpr-small2{grid-area:small2}.viewport.mpr-small1 .vp-overlay,.viewport.mpr-small2 .vp-overlay{font-size:9px}.viewport.mpr-role-label{position:absolute;bottom:4px;left:50%;transform:translate(-50%);background:#0d1117bf;color:var(--accent);font-size:10px;padding:2px 8px;border-radius:4px;pointer-events:none;font-family:var(--mono)}.viewport{position:relative;background:#000;overflow:hidden;border:2px solid transparent;min-width:0;min-height:0}.viewport.active{border-color:var(--active-vp)}.viewport.dropTarget{border-color:var(--accent);box-shadow:inset 0 0 0 2px var(--accent)}.viewport canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.viewport canvas.gl-layer{z-index:0;pointer-events:none}.viewport canvas.overlay-layer{z-index:1;cursor:crosshair}.vp-overlay{position:absolute;font-family:var(--mono);font-size:10.5px;color:var(--overlay);pointer-events:none;text-shadow:0 1px 2px #000;line-height:1.4;white-space:pre}.vp-overlay.tl{top:4px;left:6px}.vp-overlay.tr{top:4px;right:6px;text-align:right}.vp-overlay.bl{bottom:4px;left:6px}.vp-overlay.br{bottom:4px;right:6px;text-align:right}.vp-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:var(--text-dim);font-size:12px;pointer-events:none}.vp-controls{position:absolute;top:4px;left:50%;transform:translate(-50%);display:flex;gap:4px;opacity:0;transition:opacity .12s;pointer-events:none}.viewport:hover .vp-controls{opacity:1;pointer-events:auto}.vp-controls select,.vp-controls button{font-size:10px;padding:2px 5px}#footer{padding:3px 10px;font-size:10px;color:var(--text-dim);background:var(--panel);border-top:1px solid var(--border);font-family:var(--mono)}#uiToggleHandle{position:fixed;top:8px;right:8px;z-index:500;width:26px;height:26px;border-radius:6px;background:#0d11178c;border:1px solid var(--border);color:var(--text-dim);font-size:14px;line-height:1;cursor:pointer;opacity:.35;transition:opacity .15s,background .15s,width .15s,height .15s;display:flex;align-items:center;justify-content:center}#uiToggleHandle:hover{opacity:1;background:var(--panel-alt);color:var(--text)}#uiToggleHandle.uiIsHidden{width:38px;height:38px;font-size:20px;opacity:.85;background:#0d1117d9;border:1.5px solid var(--accent);color:#fff}#uiToggleHandle.uiIsHidden:hover{opacity:1}.brand{display:flex;align-items:center;gap:6px;font-weight:600;font-size:13px;color:var(--text);padding-right:10px;border-right:1px solid var(--border);margin-right:2px}.brand svg{width:20px;height:20px;flex-shrink:0}.brand .name{letter-spacing:.02em}.modalOverlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:#020305e0;display:flex;align-items:center;justify-content:center;padding:20px}.modalBox{max-width:460px;max-height:86vh;overflow-y:auto;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:22px 24px;font-family:var(--sans);box-shadow:0 20px 60px #0009}.modalBox h2{margin:0 0 12px;font-size:15px;color:var(--text);display:flex;align-items:center;gap:8px}.modalBox h3{margin:16px 0 6px;font-size:12px;color:var(--text)}.modalBox p{margin:0 0 10px;font-size:12.5px;line-height:1.55;color:var(--text-dim)}.modalBox ul{margin:0 0 14px;padding-left:18px;font-size:12.5px;line-height:1.6;color:var(--text)}.modalBox #dataNotice{margin:0 0 14px;padding:8px 10px;border:1px solid var(--accent);border-radius:5px;color:var(--notice-text);font-size:11.5px;line-height:1.5;background:color-mix(in srgb,var(--accent) 8%,transparent)}.modalBox #dataNotice strong{color:var(--text)}.modalBox #uaWarning{display:none;margin:0 0 14px;padding:8px 10px;border:1px solid var(--danger);border-radius:5px;color:var(--danger);font-size:11.5px;background:color-mix(in srgb,var(--danger) 8%,transparent)}.modalBox button.primary{width:100%;padding:9px 0;background:var(--accent-dim);border:1px solid var(--accent);color:var(--accent-text);font-size:13px;border-radius:5px;cursor:pointer}.modalBox button.primary:hover{background:var(--primary-btn-hover)}.modalChoices{display:flex;flex-direction:column;gap:8px}.modalChoices button{padding:10px 12px;text-align:left;background:var(--panel-alt);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:12.5px;cursor:pointer}.modalChoices button:hover{border-color:var(--accent)}.modalChoices button .sub{display:block;color:var(--text-dim);font-size:11px;margin-top:2px}.shortcutsBox{max-width:520px}#shortcutsList{display:flex;flex-direction:column;gap:2px;margin:14px 0}.shortcutRow{display:flex;align-items:center;gap:10px;padding:6px 4px;border-radius:4px}.shortcutRow:hover{background:var(--panel-alt)}.shortcutRow .shortcutLabel{flex:1;font-size:12.5px;color:var(--text)}.shortcutRow kbd{font-family:var(--mono);font-size:11px;font-weight:600;color:var(--accent-text);background:var(--accent-dim);border:1px solid var(--accent);border-radius:4px;padding:2px 8px;min-width:14px;text-align:center}.shortcutRow button{font-size:11px;padding:4px 9px}.shortcutRow button.listening{background:var(--accent-dim);border-color:var(--accent);color:var(--accent-text)}.shortcutRow.needsKey{background:color-mix(in srgb,var(--danger) 10%,transparent)}.shortcutRow kbd.empty{background:transparent;border-color:var(--danger);color:var(--danger)}.shortcutsFooter{display:flex;gap:8px;margin-top:4px}.shortcutsFooter .primary{width:auto;flex:1}.shortcutsFooter #btnResetKeybinds{flex:1}#app{filter:blur(2px);pointer-events:none}#app.unlocked{filter:none;pointer-events:auto}
