:root{--bg: #0b0f14;--panel: #121821;--panel-2: #161e29;--grid: #1e2836;--border: #243044;--text: #e6edf3;--text-muted: #9fb1c1;--text-faint: #66788c;--s: #4f9cff;--p: #3ecf8e;--d: #ffb020;--f: #c77dff;--g: #ff6b9d;--accent: #4f9cff;--danger: #ff6b6b;--ok: #3ecf8e;--font-ui: "Inter", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--radius-sm: 6px;--radius: 10px;--radius-lg: 16px}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{margin:0;font-weight:600}button{font-family:inherit;font-size:inherit;color:inherit;cursor:pointer;background:none;border:0;padding:0}canvas{display:block}::selection{background:color-mix(in srgb,var(--accent) 40%,transparent)}.app{display:grid;grid-template-columns:minmax(340px,420px) 1fr;grid-template-rows:auto minmax(0,1fr);grid-template-areas:"header header" "side   main";height:100vh;min-height:0;overflow:hidden}.header{grid-area:header;display:flex;align-items:center;gap:18px;padding:12px 18px;background:linear-gradient(180deg,#121821,#0e141c);border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:10px;font-weight:600;font-size:15px}.brand .mark{width:26px;height:26px;border-radius:7px;background:conic-gradient(from 210deg,var(--s),var(--p),var(--d),var(--f),var(--s));box-shadow:0 0 0 1px var(--border),0 0 18px -4px var(--s)}.header .subtitle{color:var(--text-muted);font-size:12.5px}.header .spacer{flex:1}.header .pill{font-family:var(--font-mono);font-size:12px;color:var(--text-muted);padding:4px 10px;border:1px solid var(--border);border-radius:999px;background:var(--panel-2)}.sidebar{grid-area:side;background:var(--panel);border-right:1px solid var(--border);overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:14px;min-height:0}.section{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);padding:12px}.section h3{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);font-weight:600;margin-bottom:10px;display:flex;align-items:center;justify-content:space-between}.section h3 .count{font-family:var(--font-mono);color:var(--text-muted);font-size:11px}.ptable{--cols: 18;display:grid;grid-template-columns:repeat(var(--cols),1fr);gap:3px;font-family:var(--font-mono)}.ptable .fblock-sep{height:6px}.el{--c: var(--text-faint);position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;aspect-ratio:1;border-radius:4px;background:color-mix(in srgb,var(--c) 16%,#141b25);border:1px solid color-mix(in srgb,var(--c) 40%,var(--border));color:#cdd9e5;transition:transform .08s ease,box-shadow .08s ease,background .12s ease;user-select:none}.el .z{font-size:7px;line-height:1;color:var(--text-faint);position:absolute;top:2px;left:3px}.el .sym{font-size:11px;font-weight:600;margin-top:4px}.el .nm{display:none}.el:hover{transform:translateY(-1px);box-shadow:0 3px 10px -4px #000;z-index:2}.el.sel{background:var(--c);color:#0b0f14;box-shadow:0 0 0 2px color-mix(in srgb,var(--c) 60%,#fff),0 0 18px -2px var(--c)}.el.sel .z{color:#0b0f14;opacity:.6}.el.disabled{opacity:.35;cursor:default}.el.placeholder{background:transparent;border:1px dashed var(--border);color:var(--text-faint);font-size:8px;font-family:var(--font-mono)}@media (min-width: 1100px){.el .nm{display:block;font-size:7px;color:var(--text-faint);margin-top:1px}.el .sym{margin-top:2px}.el.sel .nm{color:#0b0f14;opacity:.65}}.elinfo{display:flex;align-items:center;gap:12px}.elinfo .glyph{width:46px;height:46px;border-radius:10px;flex:none;display:grid;place-items:center;font-family:var(--font-mono);font-weight:700;font-size:20px;background:color-mix(in srgb,var(--c, var(--accent)) 20%,#141b25);color:var(--text);border:1px solid color-mix(in srgb,var(--c, var(--accent)) 45%,var(--border))}.elinfo .meta{min-width:0}.elinfo .name{font-size:15px;font-weight:600}.elinfo .sub{font-size:12px;color:var(--text-muted);display:flex;flex-wrap:wrap;gap:6px}.elinfo .sub .cat{color:var(--c, var(--accent));font-weight:500}.elinfo .facts{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:6px;font-family:var(--font-mono);font-size:11px;color:var(--text-muted)}.elinfo .facts b{color:var(--text);font-weight:600}.shells{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:6px}.shell{--c: var(--s);display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 6px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--c) 14%,#141b25);border:1px solid color-mix(in srgb,var(--c) 35%,var(--border));transition:transform .08s ease,box-shadow .08s ease;font-family:var(--font-mono)}.shell:hover{transform:translateY(-1px)}.shell .l{font-size:15px;font-weight:600}.shell .r{font-size:10px;color:var(--text-muted)}.shell.sel{background:var(--c);color:#0b0f14;box-shadow:0 0 0 2px color-mix(in srgb,var(--c) 55%,#fff),0 0 20px -4px var(--c)}.shell.sel .r{color:#0b0f14;opacity:.6}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{--c: var(--accent);display:inline-flex;align-items:center;gap:6px;padding:3px 8px 3px 4px;border-radius:999px;background:color-mix(in srgb,var(--c) 14%,#141b25);border:1px solid color-mix(in srgb,var(--c) 45%,var(--border));color:var(--text);font-family:var(--font-mono);font-size:11.5px;cursor:pointer}.chip:hover{background:color-mix(in srgb,var(--c) 22%,#141b25)}.chip:focus-visible{outline:2px solid var(--c);outline-offset:1px}.chip-color{width:16px;height:16px;flex:none;display:grid;place-items:center}.chip-color input[type=color]{width:15px;height:15px;padding:0;border:0;border-radius:50%;background:none;cursor:pointer}.chip-color input[type=color]::-webkit-color-swatch-wrapper{padding:0}.chip-color input[type=color]::-webkit-color-swatch{border:2px solid #0b0f14;border-radius:50%}.chip-color input[type=color]::-moz-color-swatch{border:2px solid #0b0f14;border-radius:50%}.chip-label{white-space:nowrap}.chip-x{color:var(--text-faint);font-size:10px;padding:0 2px;border-radius:4px}.chip-x:hover{color:var(--text);background:#0000004d}.stage.multi{overflow-y:auto}.multi-wrap{display:flex;flex-direction:column;gap:12px;padding:10px}.multi-chart{width:100%;height:340px;min-height:300px}.multi-chart .js-plotly-plot,.multi-chart .plot-container{height:100%!important}.radial-chart{width:100%;height:100%;min-height:260px}.multi-empty{margin:8px 12px;padding:26px 16px;text-align:center;border:1px dashed var(--border);border-radius:var(--radius);color:var(--text-faint);font-size:13px}.stage.multi .loading,.stage .loading{display:block;padding:30px 16px;text-align:center;color:var(--text-faint);font-size:12.5px;font-family:var(--font-mono)}.stage.multi .controls{position:sticky;top:0;left:0;right:0;z-index:3;display:flex;gap:6px;flex-wrap:wrap;padding:8px 10px;margin:-10px -10px 0;background:color-mix(in srgb,var(--c, var(--accent)) 8%,#121821);border-bottom:1px solid var(--border)}.stage.multi .ctl{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);padding:4px 8px;border-radius:6px;background:#141b25;border:1px solid var(--border)}.stage.multi .ctl.on{background:color-mix(in srgb,var(--c) 22%,#141b25);border-color:var(--c);color:var(--text)}.stage.multi .ctl-label{background:none;border:none;padding:4px 6px 4px 2px;white-space:nowrap}.stage.multi .ctl[title]{cursor:default}.stage.multi input[type=number].ctl{width:90px;padding:4px 8px;border-radius:6px;background:#0e141c;border:1px solid var(--border);color:var(--text);font-family:var(--font-mono);font-size:11px;-moz-appearance:textfield}.stage.multi input[type=number].ctl::-webkit-inner-spin-button{opacity:.4}.stage.multi input[type=number].ctl:focus{outline:none;border-color:var(--c, #4f9cff)}.shell.no-data{opacity:.38;cursor:default;border-style:dashed;background:#141b25}.shell.no-data:hover{transform:none}.comps{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.comp{--c: var(--accent);padding:5px 10px;border-radius:999px;font-family:var(--font-mono);font-size:12px;background:#141b25;border:1px solid var(--border);color:var(--text-muted);transition:transform .08s ease}.comp:hover{transform:translateY(-1px);color:var(--text)}.comp.sel{background:color-mix(in srgb,var(--c) 22%,#141b25);border-color:var(--c);color:var(--text)}.comp:disabled{opacity:.4;cursor:default}.add{--c: var(--ok);display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:12.5px;font-weight:600;color:#0b0f14;background:var(--c);border:1px solid color-mix(in srgb,var(--c) 60%,#fff);border-radius:8px;padding:8px 14px;cursor:pointer;box-shadow:0 0 16px -4px var(--c);transition:transform .08s ease,filter .1s ease}.add span{font-size:15px;line-height:1;font-weight:700}.add:hover{transform:translateY(-1px);filter:brightness(1.08)}.add:active{transform:translateY(0)}.add:focus-visible{outline:2px solid #fff;outline-offset:2px}.main{grid-area:main;min-width:0;min-height:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:minmax(260px,1fr);gap:14px;padding:14px;overflow:hidden;background:#0d131b}.plot{--c: var(--accent);background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);display:grid;grid-template-rows:auto minmax(0,1fr);min-height:0;min-width:0;overflow:hidden}.plot .bar{display:flex;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--c) 8%,#121821)}.dot{width:9px;height:9px;border-radius:50%;background:var(--c);box-shadow:0 0 10px var(--c)}.plot .bar h3{font-size:13px;letter-spacing:.02em}.plot .bar .val{margin-left:auto;font-family:var(--font-mono);font-size:11.5px;color:var(--text-muted)}.plot .bar .val b{color:var(--text)}.plot .stage{min-height:0;min-width:0;position:relative;width:100%}.plot .stage canvas{position:absolute;inset:0;width:100%;height:100%}.plot .hint{position:absolute;left:10px;bottom:8px;font-size:10.5px;color:var(--text-faint);font-family:var(--font-mono);pointer-events:none}.plot .controls{position:absolute;right:10px;top:10px;display:flex;gap:6px}.plot .ctl{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);padding:4px 8px;border-radius:6px;background:#141b25;border:1px solid var(--border);backdrop-filter:blur(4px)}.plot .ctl:hover{color:var(--text);border-color:var(--text-faint)}.plot .ctl.on{background:color-mix(in srgb,var(--c) 22%,#141b25);border-color:var(--c);color:var(--text)}.legend{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:center;gap:14px;padding:8px 12px;margin-top:-2px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);font-size:11.5px;color:var(--text-muted)}.legend .k{display:inline-flex;align-items:center;gap:6px}.legend .sw{width:10px;height:10px;border-radius:3px}*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--border);border-radius:999px;border:2px solid var(--panel)}*::-webkit-scrollbar-track{background:transparent}@media (max-width: 1240px){.main{grid-template-columns:1fr 1fr}}@media (max-width: 940px){.app{grid-template-columns:1fr;grid-template-rows:auto auto 1fr;grid-template-areas:"header" "side" "main";height:auto;min-height:100vh}.sidebar{border-right:0;border-bottom:1px solid var(--border);max-height:60vh}.main{grid-template-columns:1fr;grid-template-rows:minmax(260px,1fr) minmax(260px,1fr) minmax(260px,1fr);overflow:auto}}
