:root{--bg: #000000;--bg-1: #0a0a0c;--bg-2: #101013;--bg-3: #17171b;--line: #1e1e23;--line-2: #2c2c32;--text: #f5f5f7;--text-2: #a1a1a6;--text-3: #6e6e73;--accent: #4f9dff;--accent-2: #7db8ff;--good: #3ecf8e;--warn: #f5b544;--bad: #ff6b6b;--violet: #a78bfa;--radius: 10px;--radius-sm: 7px;font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:6px;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:#434d63}.app{display:grid;grid-template-columns:232px 1fr;height:100%}.sidebar{background:var(--bg-1);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}.brand{padding:18px 18px 14px;border-bottom:1px solid var(--line)}.brand h1{margin:0;font-size:15px;letter-spacing:.14em;text-transform:uppercase;font-weight:700}.brand h1 span{color:var(--accent)}.brand p{margin:4px 0 0;font-size:11.5px;color:var(--text-3);letter-spacing:.03em}.nav{flex:1;overflow-y:auto;padding:12px 10px;min-height:0}.nav-group{margin-bottom:16px}.nav-group>h4{margin:0 0 6px;padding:0 10px;font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-3)}.nav-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-2);cursor:pointer;text-align:left;font-size:13.5px;transition:background .12s,color .12s}.nav-item:hover{background:var(--bg-2);color:var(--text)}.nav-item.active{background:linear-gradient(90deg,#4f9dff2e,#4f9dff0d);color:#fff;box-shadow:inset 2px 0 0 var(--accent)}.nav-item .icon{width:16px;height:16px;flex:0 0 16px;opacity:.85}.status-bar{border-top:1px solid var(--line);padding:12px 14px;font-size:12px;color:var(--text-3);display:flex;flex-direction:column;gap:6px}.status-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.main{min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.topbar{height:54px;flex:0 0 54px;border-bottom:1px solid var(--line);background:var(--bg-1);display:flex;align-items:center;justify-content:space-between;padding:0 20px;gap:16px}.topbar h2{margin:0;font-size:15px;font-weight:600}.topbar .sub{color:var(--text-3);font-size:12.5px}.content{flex:1;overflow-y:auto;padding:22px;min-height:0}.grid{display:grid;gap:16px}.card{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}.card>h3{margin:0 0 4px;font-size:13px;font-weight:600;letter-spacing:.04em}.card>.hint{margin:0 0 14px;color:var(--text-3);font-size:12.5px}.row{display:flex;align-items:center;gap:10px}.row.wrap{flex-wrap:wrap}.spread{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:12px}.btn{border:1px solid var(--line-2);background:var(--bg-3);color:var(--text);border-radius:var(--radius-sm);padding:7px 14px;font-size:13px;cursor:pointer;transition:background .12s,border-color .12s,opacity .12s;white-space:nowrap}.btn:hover:not(:disabled){background:#262c3b;border-color:#445069}.btn:disabled{opacity:.42;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:#07101d;font-weight:600}.btn.primary:hover:not(:disabled){background:var(--accent-2);border-color:var(--accent-2)}.btn.danger{border-color:#ff6b6b80;color:var(--bad)}.btn.ghost{background:transparent;border-color:var(--line);color:var(--text-2)}.btn.sm{padding:4px 10px;font-size:12px}.input,select.input{background:var(--bg-2);border:1px solid var(--line-2);border-radius:var(--radius-sm);padding:7px 10px;font-size:13px;min-width:0;width:100%}.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #4f9dff2e}.label{font-size:11.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-3);font-weight:600}.slider-row{display:grid;grid-template-columns:1fr auto;gap:8px 12px;align-items:center}.slider-row .value{font-variant-numeric:tabular-nums;font-size:13px;color:var(--accent-2);min-width:56px;text-align:right}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:4px;border-radius:3px;background:var(--line-2);outline:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:15px;height:15px;border-radius:50%;background:var(--accent);cursor:pointer;border:2px solid var(--bg-1);box-shadow:0 0 0 1px var(--accent)}input[type=range]:disabled::-webkit-slider-thumb{background:var(--text-3);box-shadow:none}.toggle{position:relative;width:38px;height:21px;border-radius:11px;background:var(--line-2);border:0;cursor:pointer;transition:background .15s;flex:0 0 38px}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:15px;height:15px;border-radius:50%;background:#8b93a6;transition:transform .15s,background .15s}.toggle.on{background:#4f9dff59}.toggle.on:after{transform:translate(17px);background:var(--accent)}.toggle:disabled{opacity:.4;cursor:not-allowed}.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:20px;font-size:11.5px;font-weight:600;border:1px solid var(--line-2);background:var(--bg-2);color:var(--text-2)}.pill.good{color:var(--good);border-color:#3ecf8e59;background:#3ecf8e1a}.pill.warn{color:var(--warn);border-color:#f5b54459;background:#f5b5441a}.pill.bad{color:var(--bad);border-color:#ff6b6b59;background:#ff6b6b1a}.pill.accent{color:var(--accent-2);border-color:#4f9dff59;background:#4f9dff1a}.dot{width:7px;height:7px;border-radius:50%;background:var(--text-3);flex:0 0 7px}.dot.good{background:var(--good);box-shadow:0 0 7px #3ecf8eb3}.dot.warn{background:var(--warn)}.dot.bad{background:var(--bad)}.stat{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px}.stat .k{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);font-weight:600}.stat .v{font-size:22px;font-weight:600;font-variant-numeric:tabular-nums;margin-top:3px}.stat .v small{font-size:12px;font-weight:500;color:var(--text-3);margin-left:3px}table.tbl{width:100%;border-collapse:collapse;font-size:13px}table.tbl th{text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);padding:7px 10px;border-bottom:1px solid var(--line);font-weight:600}table.tbl td{padding:8px 10px;border-bottom:1px solid var(--line)}table.tbl tr:last-child td{border-bottom:0}table.tbl tbody tr:hover{background:var(--bg-2)}.mono{font-family:JetBrains Mono,Cascadia Mono,Consolas,monospace;font-size:12px}.msg{padding:32px;text-align:center;color:var(--text-3)}.msg h3{color:var(--text);margin:0 0 8px;font-size:16px}.msg p{margin:0 auto 16px;max-width:460px}.two{display:grid;grid-template-columns:1fr 1fr;gap:16px}.three{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.four{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.pad{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px}.stick-viz{position:relative;width:100%;aspect-ratio:1;max-width:200px;margin:0 auto;background:radial-gradient(circle,var(--bg-3) 0%,var(--bg-2) 100%);border:1px solid var(--line-2);border-radius:50%;overflow:hidden}.stick-viz .cross-h,.stick-viz .cross-v{position:absolute;background:var(--line-2)}.stick-viz .cross-h{left:0;right:0;top:50%;height:1px}.stick-viz .cross-v{top:0;bottom:0;left:50%;width:1px}.stick-viz .dot-pos{position:absolute;width:16px;height:16px;margin:-8px 0 0 -8px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px #4f9dffd9;transition:left .04s linear,top .04s linear}.trackbar{height:12px;background:var(--bg-3);border:1px solid var(--line-2);border-radius:7px;overflow:hidden;position:relative}.trackbar>i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--violet));transition:width .05s linear}.key-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}.key-chip{border:1px solid var(--line-2);background:var(--bg-2);border-radius:var(--radius-sm);padding:8px 6px;text-align:center;font-size:11.5px;cursor:pointer;transition:all .1s;color:var(--text-2)}.key-chip:hover{border-color:var(--accent);color:var(--text)}.key-chip.on{background:#4f9dff38;border-color:var(--accent);color:#fff;font-weight:600}.key-chip small{display:block;font-size:9.5px;color:var(--text-3);margin-top:2px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px;overflow-x:auto}.tab{border:0;background:transparent;color:var(--text-3);padding:9px 14px;cursor:pointer;font-size:13px;border-bottom:2px solid transparent;white-space:nowrap}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.choice{display:flex;gap:6px;flex-wrap:wrap}.choice-btn{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:72px;padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:var(--bg-2);color:var(--text-3);cursor:pointer;font-size:13px;line-height:1.2;transition:border-color .12s,color .12s,background .12s}.choice-btn:hover:not(:disabled){color:var(--text);border-color:var(--line-2)}.choice-btn:disabled{opacity:.45;cursor:not-allowed}.choice-btn.active{color:var(--text);border-color:var(--accent);background:var(--bg-3)}.choice-btn.active .choice-sub{color:var(--accent-2)}.choice-label{font-weight:600;font-variant-numeric:tabular-nums}.choice-sub{font-size:10.5px;color:var(--text-3);font-variant-numeric:tabular-nums}.log{background:#070910;border:1px solid var(--line);border-radius:var(--radius-sm);font-family:JetBrains Mono,Consolas,monospace;font-size:11.5px;padding:10px 12px;height:320px;overflow-y:auto;white-space:pre;color:var(--text-2)}.log .t{color:var(--text-3)}.log .cmd{color:var(--accent-2)}.log .resp{color:var(--good)}.log .in{color:var(--text-3)}.log .err{color:var(--bad)}canvas.plot{width:100%;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius-sm);display:block}.divider{height:1px;background:var(--line);margin:14px 0}.note{font-size:12.5px;color:var(--text-3);background:var(--bg-2);border-left:2px solid var(--accent);padding:9px 12px;border-radius:0 var(--radius-sm) var(--radius-sm) 0}.note.warn{border-left-color:var(--warn)}.note.bad{border-left-color:var(--bad)}.tag{font-size:10.5px;padding:1px 6px;border-radius:4px;background:var(--bg-3);border:1px solid var(--line-2);color:var(--text-3)}body,.app,.main,.content,.sidebar,.topbar{background:#000}.card,.msg,.log,.plot{background:#0a0a0c;box-shadow:none}.btn:disabled{opacity:.35}.input:focus{box-shadow:none}table.tbl tbody tr:hover{background:#101013}::-webkit-scrollbar-thumb{background:#2c2c32;border:2px solid #000}
