:root,[data-theme=dark]{--bg: #080c14;--panel: #111a2b;--panel-2: #0d1523;--text: #e6ebf5;--muted: #8b96ad;--line: rgba(255, 255, 255, .1);--line-strong: rgba(255, 255, 255, .2);--accent: #5cc8ff;--accent-2: #ffb454;--ok: #41d18b;--bad: #ff6b6b;--shadow: 0 10px 30px rgba(0, 0, 0, .35);color-scheme:dark}[data-theme=light]{--bg: #eef2f8;--panel: #ffffff;--panel-2: #f7f9fd;--text: #1c2333;--muted: #5b667c;--line: rgba(20, 30, 60, .12);--line-strong: rgba(20, 30, 60, .22);--accent: #1f6fd0;--accent-2: #c46d00;--ok: #12895a;--bad: #c22b2b;--shadow: 0 10px 24px rgba(20, 30, 60, .1);color-scheme:light}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--text);font:14px/1.5 ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif}#app{display:grid;grid-template-rows:auto minmax(260px,1fr) minmax(340px,auto);gap:12px;padding:12px;height:100dvh;max-height:100dvh;overflow:auto}.topbar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:10px 14px;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.brand{display:flex;align-items:center;gap:10px;margin-right:auto}.brand h1{margin:0;font-size:17px;letter-spacing:.2px}.brand p{margin:0;font-size:12px;color:var(--muted)}.logo{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:linear-gradient(140deg,var(--accent),var(--accent-2));color:#08101c;font-size:18px;font-weight:700}.topbar-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.topbar-group label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}select,textarea,input[type=text],input[type=file]{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line-strong);border-radius:8px;padding:6px 8px}#worksheet-name{width:160px;min-width:110px}#worksheet-name::placeholder{color:var(--muted);opacity:.7}select:focus-visible,textarea:focus-visible,input[type=text]:focus-visible,.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn{font:inherit;font-size:13px;color:var(--text);background:var(--panel-2);border:1px solid var(--line-strong);border-radius:8px;padding:6px 11px;cursor:pointer;transition:background .15s,border-color .15s,transform .05s}.btn:hover{background:color-mix(in srgb,var(--panel-2) 70%,var(--accent) 30%)}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--accent);border-color:transparent;color:#07101d;font-weight:600}.btn.ghost{background:transparent}.btn.small{font-size:12px;padding:3px 8px}.workspace{display:grid;grid-template-columns:minmax(280px,1.05fr) minmax(300px,1.25fr) minmax(240px,.85fr);gap:12px;min-height:0}.bottom{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:12px;min-height:0}.panel{display:flex;flex-direction:column;min-height:0;min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line)}.panel-head h2{margin:0;font-size:13px;font-weight:600;letter-spacing:.02em}.controls{display:flex;align-items:center;gap:6px}.tabs{display:flex;align-items:center;gap:2px}.tab{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:12.5px;font-weight:600;color:var(--muted);background:transparent;border:1px solid transparent;border-radius:8px 8px 0 0;padding:5px 11px;cursor:pointer}.tab:hover{color:var(--text)}.tab.active{color:var(--text);background:var(--panel-2);border-color:var(--line)}.tab-count{min-width:17px;padding:0 5px;border-radius:999px;background:var(--accent);color:#07101d;font-size:10px;font-weight:700;line-height:17px;text-align:center}.pane{display:flex;flex-direction:column;flex:1;min-height:0}.debug-toolbar{flex:none;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:6px 12px;border-bottom:1px solid var(--line)}.debug-toolbar code{font-family:ui-monospace,JetBrains Mono,monospace;font-size:11.5px;background:var(--panel-2);border:1px solid var(--line);border-radius:4px;padding:0 4px}.debug-log{flex:1;min-height:120px;margin:0;padding:8px 12px 12px;list-style:none;overflow:auto;font-family:ui-monospace,JetBrains Mono,Cascadia Code,monospace;font-size:12px;line-height:1.55}.debug-log li{display:flex;gap:10px;padding:1px 0;border-bottom:1px solid color-mix(in srgb,var(--line) 45%,transparent)}.debug-log li:last-child{border-bottom:none}.debug-log .log-time{flex:none;min-width:58px;text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}.debug-log .log-text{flex:1;min-width:0;white-space:pre-wrap;word-break:break-word}.debug-log li.suppressed .log-text{color:var(--bad);font-style:italic}#chart-legend{display:flex;gap:12px;flex-wrap:wrap}.legend-item{display:inline-flex;align-items:center;gap:5px}.legend-item i{width:8px;height:8px;border-radius:50%;display:inline-block}.canvas-wrap{position:relative;flex:1;min-height:180px}.canvas-wrap canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.chart-host{position:relative;flex:1;min-height:200px;padding:4px 4px 0;overflow:hidden}.chart-host .uplot{position:absolute;top:4px;left:4px;max-width:100%}.help-panel.collapsed .markdown{display:none}.markdown{overflow:auto;padding:4px 14px 14px;font-size:13px;color:var(--text)}.markdown h2{font-size:15px;margin:14px 0 6px}.markdown h3{font-size:13px;margin:12px 0 4px;color:var(--accent)}.markdown code{font-family:ui-monospace,JetBrains Mono,Cascadia Code,monospace;font-size:12px;background:var(--panel-2);border:1px solid var(--line);border-radius:5px;padding:1px 4px}.markdown pre{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:9px 11px;overflow:auto}.markdown pre code{background:none;border:0;padding:0}.markdown table{border-collapse:collapse;width:100%;font-size:12px}.markdown th,.markdown td{border-bottom:1px solid var(--line);padding:4px 6px;text-align:left}.markdown th:first-child,.markdown td:first-child{white-space:nowrap;width:1%}.markdown td code{white-space:nowrap}.markdown ul{padding-left:18px}.editor-host{flex:1;min-height:170px;overflow:auto;border-bottom:1px solid var(--line);background:var(--panel-2)}.editor-host .cm-editor{height:100%;min-height:170px}.editor-host .cm-editor.cm-focused{outline:none}.editor-host .cm-scroller{font-family:ui-monospace,JetBrains Mono,Cascadia Code,monospace;font-size:12.5px;line-height:1.55}.error-box{margin:8px 12px;padding:8px 10px;border-radius:8px;background:color-mix(in srgb,var(--bad) 18%,transparent);border:1px solid color-mix(in srgb,var(--bad) 55%,transparent);color:var(--text);font-family:ui-monospace,monospace;font-size:12px;white-space:pre-wrap}.hidden{display:none!important}.metrics{flex:none;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:10px 12px}.metric{background:var(--panel-2);border:1px solid var(--line);border-radius:9px;padding:6px 9px}.metric span{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.metric strong{font-size:15px;font-variant-numeric:tabular-nums}.metric strong.ok{color:var(--ok)}.metric strong.bad{color:var(--bad)}.badge{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:3px 9px;border-radius:999px;border:1px solid var(--line-strong);background:var(--panel-2);color:var(--muted);white-space:nowrap}.badge.muted{text-transform:none;letter-spacing:0;font-weight:500;max-width:46ch;overflow:hidden;text-overflow:ellipsis}.badge.running{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 55%,transparent)}.badge.settled{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 55%,transparent)}.badge.failed,.badge.error{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 55%,transparent)}.muted{color:var(--muted)}.small{font-size:11px}.side-stack{display:grid;grid-template-rows:minmax(0,1.35fr) minmax(0,1fr);gap:12px;min-height:0}.math-help{overflow:auto;padding:8px 12px 12px;font-size:12px}.math-group+.math-group{margin-top:10px}.math-group h3{margin:0 0 4px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--accent)}.math-group dl{margin:0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 8px}.math-group dt{font-family:ui-monospace,JetBrains Mono,monospace;font-size:11.5px;color:var(--text);white-space:nowrap}.math-group dd{margin:0;color:var(--muted);font-size:11.5px}.notes-panel textarea{flex:1;resize:none;margin:8px 10px 10px;width:calc(100% - 20px);min-height:90px;font-size:12.5px;line-height:1.5}@media (max-width: 1180px){#app{height:auto;max-height:none;overflow:auto;grid-template-rows:auto auto auto}.workspace,.bottom{grid-template-columns:minmax(0,1fr)}.workspace .scene-panel{min-height:300px}.chart-panel{min-height:280px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;-webkit-user-select:none;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:#00000012;position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}
