:root{--bg:#0a0d13;--bg-2:#0d1119;--panel:#10151f;--panel-2:#151c29;--panel-3:#1a2232;--line:#222b3b;--line-2:#2c374b;--text:#e3e9f2;--soft:#b6c3d5;--muted:#8391a8;--dim:#5c687d;--accent:#38bdf8;--accent-2:#f472b6;--pos:#25b5c4;--neg:#a86ae0;--q:#e0588f;--k:#4a94ef;--v:#d8a02a;--x:#7c93b8;--emb:#38bdf8;--posn:#a3e635;--norm:#9aa7ba;--attn:#818cf8;--mlp:#4ade80;--out:#fb923c;--train:#fb7185;--ok:#34d399;--warn:#fbbf24;--mono:ui-monospace, "Cascadia Mono", "JetBrains Mono", "SF Mono", Menlo, Consolas, monospace;--sans:"Inter", "Segoe UI Variable", "Segoe UI", system-ui, -apple-system, sans-serif;--topbar:54px;--side:430px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-size:13.5px;overflow:hidden}button{background:var(--panel-2);color:var(--text);border:1px solid var(--line-2);cursor:pointer;border-radius:7px;padding:5px 11px;font-family:inherit;font-size:12.5px;transition:background .12s,border-color .12s,color .12s}button:hover:not(:disabled){background:#1e2737;border-color:#3a4860}button:disabled{opacity:.4;cursor:default}button.primary{color:#cdeeff;background:#13344a;border-color:#1f5b7d}button.primary:hover:not(:disabled){background:#194360}button.ghost{color:var(--muted);background:0 0;border-color:#0000}button.ghost:hover:not(:disabled){background:var(--panel-2);color:var(--text)}button.on{color:#e0f4ff;background:#183a52;border-color:#2c6d93}button.link{color:var(--accent);text-underline-offset:2px;background:0 0;border:none;padding:0;text-decoration:underline}button.link:hover{color:#7dd3fc;background:0 0}input[type=range]{appearance:none;background:var(--line-2);border-radius:2px;outline:none;width:100%;height:4px;margin:8px 0}input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--accent);cursor:pointer;border:2px solid var(--bg);border-radius:50%;width:14px;height:14px}select,input[type=text],textarea{background:var(--bg-2);color:var(--text);border:1px solid var(--line-2);border-radius:7px;padding:6px 8px;font-family:inherit;font-size:13px}textarea{resize:vertical;line-height:1.55}select:focus,input:focus,textarea:focus{border-color:#2c6d93;outline:1px solid #2c6d93}kbd{font:600 10.5px var(--mono);background:var(--panel-3);border:1px solid var(--line-2);color:var(--soft);border-bottom-width:2px;border-radius:4px;padding:0 4px}code,.mono{font-family:var(--mono)}.muted{color:var(--muted)}.dim{color:var(--dim)}.small{font-size:11.5px}.app{grid-template-rows:var(--topbar) minmax(0, 1fr);grid-template-columns:minmax(0, 1fr) var(--side);height:100vh;display:grid}.app.side-closed{grid-template-columns:minmax(0,1fr) 0}.topbar{grid-column:1/-1}.map-wrap{background:radial-gradient(1200px 800px at 40% 30%, #0f1522, var(--bg));min-width:0;min-height:0;position:relative;overflow:hidden}.side{border-left:1px solid var(--line);background:var(--panel);flex-direction:column;min-height:0;display:flex;overflow:hidden}.topbar{background:var(--panel);border-bottom:1px solid var(--line);align-items:center;gap:14px;min-width:0;padding:0 14px;display:flex}.brand{flex:none;align-items:center;gap:10px;display:flex}.brand-mark{color:#e8f6ff;width:32px;height:32px;font:700 15px var(--mono);letter-spacing:-1px;background:linear-gradient(140deg,#1d5878,#5b2d7c);border-radius:9px;place-items:center;display:grid}.brand b{letter-spacing:-.1px;font-size:13.5px;font-weight:650;display:block}.brand span{color:var(--dim);font-size:11px;display:block}.sentence{scrollbar-width:none;flex:1;align-items:center;gap:6px;min-width:0;display:flex;overflow-x:auto}.sentence-label{color:var(--dim);text-transform:uppercase;letter-spacing:.07em;flex:none;font-size:11px}.tok{font:500 13px var(--mono);background:var(--panel-2);border:1px solid var(--line-2);color:var(--soft);cursor:pointer;border-radius:7px;flex:none;align-items:center;gap:6px;padding:4px 9px;display:inline-flex}.tok i{color:var(--dim);font-size:9.5px;font-style:normal}.tok:hover{color:var(--text);border-color:#3d5170}.tok.sel{border-color:var(--q);color:#ffe1ec;background:#3a1c2c;box-shadow:0 0 0 1px #e0588f59}.tok.sel i{color:#f3a6c4}.tok.next{color:var(--out);background:#fb923c14;border-style:dashed;border-color:#7a4a22}.tok-add{flex:none}.top-actions{flex:none;align-items:center;gap:6px;display:flex}.pop{z-index:50;background:var(--panel-2);border:1px solid var(--line-2);border-radius:10px;padding:12px;position:absolute;box-shadow:0 18px 50px #0000008c}.pop h4{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 8px;font-size:11px;font-weight:650}.word-grid{grid-template-columns:repeat(4,auto);gap:5px;display:grid}.word-grid button{font:500 12.5px var(--mono);padding:4px 8px}.word-grid button .k{font:400 9.5px var(--sans);color:var(--dim);display:block}.presets{flex-direction:column;gap:4px;margin-top:10px;display:flex}.presets button{text-align:left;font:12px var(--mono)}.switch-row{cursor:pointer;align-items:flex-start;gap:9px;padding:6px 2px;display:flex}.switch-row input{accent-color:var(--accent);margin-top:2px}.switch-row b{font-size:12.5px;font-weight:560;display:block}.switch-row span{color:var(--muted);font-size:11.5px;line-height:1.45;display:block}.tooltip{z-index:80;pointer-events:none;border:1px solid var(--line-2);max-width:340px;color:var(--soft);background:#141b28f7;border-radius:9px;padding:8px 10px;font-size:12.5px;line-height:1.5;position:fixed;box-shadow:0 10px 30px #00000080}.tooltip b{color:var(--text)}.tooltip .tt-title{color:var(--text);margin-bottom:2px;font-weight:650}.tooltip .tt-hint{color:var(--dim);margin-top:4px;font-size:11px}.term{cursor:help;color:inherit;border-bottom:1px dotted #6b7c96}.term:hover{color:#fff;border-bottom-color:var(--accent)}.badge{font:600 10px var(--mono);text-transform:uppercase;letter-spacing:.06em;background:var(--panel-3);color:var(--soft);border:1px solid var(--line-2);border-radius:5px;align-items:center;gap:5px;padding:2px 7px;display:inline-flex}button.tip-open{color:#f9a8d4}button.tip-open:hover:not(:disabled){color:#fce7f3}.tip-backdrop{z-index:90;background:#04060a9e;place-items:center;padding:12px;display:grid;position:fixed;inset:0}.tip-jar{background:var(--panel-2);border:1px solid var(--line-2);border-radius:12px;width:min(470px,100%);max-height:calc(100vh - 24px);padding:14px 18px 18px;overflow:auto;box-shadow:0 24px 70px #0009}.tip-jar header{justify-content:space-between;align-items:center;gap:10px;display:flex}.tip-jar h3{margin:0;font-size:15px;font-weight:650}.tip-heart{color:var(--accent-2)}.tip-jar>p{color:var(--soft);margin:6px 0 14px;line-height:1.55}.tip-jar h4{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:18px 0 8px;font-size:11px;font-weight:650}.tip-links{flex-wrap:wrap;gap:8px;display:flex}a.tip-btn{background:var(--panel-3);color:var(--text);border:1px solid var(--line-2);border-radius:7px;align-items:center;gap:6px;padding:5px 11px;font-size:12.5px;text-decoration:none;display:inline-flex}a.tip-btn:hover{background:#1e2737;border-color:#3a4860}a.tip-btn.primary{color:#ffe1ec;background:#3a1c2c;border-color:#7a3558;padding:8px 14px;font-size:13.5px}a.tip-btn.primary:hover{background:#4a2338;border-color:#9a4570}.tip-tabs{flex-wrap:wrap;gap:5px;margin-bottom:10px;display:flex}.tip-coin{grid-template-columns:150px minmax(0,1fr);align-items:start;gap:14px;display:grid}.tip-qr{border-radius:8px;width:150px;height:150px;display:block}.tip-coin-info b{margin-bottom:5px;font-size:13px;display:block}.tip-address{color:var(--text);word-break:break-all;-webkit-user-select:all;user-select:all;background:var(--bg-2);border:1px solid var(--line-2);border-radius:7px;padding:6px 8px;font-size:11.5px;line-height:1.5;display:block}.tip-coin-actions{flex-wrap:wrap;gap:6px;margin:8px 0 6px;display:flex}.tip-coin-info p{margin:0;line-height:1.45}@media (width<=520px){.tip-coin{grid-template-columns:minmax(0,1fr);justify-items:center}.tip-coin-info{width:100%}}@media (width<=900px){:root{--side:100vw}body{overflow:hidden}.app{grid-template-rows:auto minmax(0,56vh) minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.app.side-closed{grid-template-rows:auto minmax(0,1fr) 0;grid-template-columns:minmax(0,1fr)}.side{border-left:none;border-top:1px solid var(--line)}.topbar{flex-wrap:wrap;gap:8px;height:auto;padding:8px 10px}.brand span{display:none}.sentence{flex-basis:100%;order:3}.top-actions{flex-wrap:wrap;justify-content:flex-end;margin-left:auto}.welcome{max-width:none;padding:8px 28px 8px 10px;font-size:11.5px;bottom:10px;left:10px;right:58px}.welcome b{font-size:12px}.welcome ol{gap:4px;margin-top:5px}.welcome li:nth-child(2){display:none}.welcome li button{padding:2px 7px;font-size:11px}.crumbs{right:12px}.pop{max-width:calc(100vw - 24px)}}.map{position:absolute;inset:0}.map-svg{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;display:block}.map-svg:active{cursor:grabbing}.map-svg text{font-family:var(--sans)}.map-svg .st{pointer-events:none}.map-svg .st.clickable,.map-svg .clickable{pointer-events:auto;cursor:pointer}.map-svg .clickable:hover text,.map-svg text.clickable:hover{fill:#fff}.map-svg .mono,.map-svg .num{font-family:var(--mono)}.wn-frame{fill:#10151fd1;stroke-width:1.6px;vector-effect:non-scaling-stroke;cursor:zoom-in;transition:fill .2s}.wn-frame.open{fill:#0d1119f0}.wn-frame.round{fill:#10151ff2;stroke-width:2.2px}.wn:hover>.wn-frame{stroke-width:2.6px;filter:brightness(1.25)}.wn.on-path>.wn-frame{stroke-width:2.4px}.wn-hit{fill:#0000;cursor:zoom-in}.wn:hover>.wn-hit{fill:#ffffff0f;stroke:#e3e9f2;stroke-width:1.5px;vector-effect:non-scaling-stroke}.bare-bg{fill:#0d1119;stroke:#2c374b;stroke-width:3px}.wn-plate{fill:#0a0d13b8}.wn-title text{font-family:var(--sans);letter-spacing:-.01em}.wn-glow{fill:none;stroke-width:3px;vector-effect:non-scaling-stroke;pointer-events:none;animation:1.6s ease-in-out infinite glow}@keyframes glow{0%,to{stroke-opacity:.25}50%{stroke-opacity:1}}.hcell{cursor:help}.spotlight{fill:#080b119e;pointer-events:none}.selrow{pointer-events:none}.shape-chip rect{fill:#121a28;stroke:#2c3a52;stroke-width:1.2px}.shape-chip text{fill:#8fb3d9;font-family:var(--mono);pointer-events:none}.map-controls{flex-direction:column;gap:6px;display:flex;position:absolute;bottom:14px;right:14px}.map-controls button{background:#151c29eb;width:34px;height:34px;padding:0;font-size:18px;line-height:1}.minimap{border:1px solid var(--line);opacity:.55;background:#0d1119e6;border-radius:9px;padding:5px;transition:opacity .15s;position:absolute;bottom:12px;left:12px;box-shadow:0 8px 26px #0006}.minimap:hover{opacity:1}.mini-open{background:#151c29eb;padding:3px 9px;font-size:11.5px;position:absolute;bottom:12px;left:12px}.minimap svg{cursor:pointer;display:block}.mm-box{fill:#7c93b80f;stroke:#34415a;stroke-width:.8px}.mm-box.d1{stroke:#4a5a78}.mm-box.tone-attn{stroke:#4b5299}.mm-box.tone-mlp{stroke:#2f7a52}.mm-box.tone-out{stroke:#8a5328}.mm-box.tone-emb{stroke:#23688a}.mm-box.tone-pos{stroke:#5d7f20}.mm-view{fill:#38bdf81a;stroke:var(--accent);stroke-width:1.4px}.mm-cross circle{fill:none;stroke:var(--accent);stroke-width:1.6px}.mm-cross line{stroke:var(--accent);stroke-width:1.2px}.mm-zoom{font:10.5px var(--mono);color:var(--dim);justify-content:space-between;align-items:center;margin-top:2px;display:flex}.mm-close{color:var(--dim);background:0 0;border:none;padding:0 2px;font-size:10.5px}.mm-close:hover{color:var(--text);background:0 0}.crumbs{pointer-events:none;flex-wrap:wrap;align-items:center;gap:2px;display:flex;position:absolute;top:12px;left:14px;right:80px}.crumb{pointer-events:auto;align-items:center;display:inline-flex}.crumb button{border:1px solid var(--line);color:var(--soft);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#10151fdb;padding:3px 9px;font-size:12px}.crumb button.here{color:#fff;background:#18283ceb;border-color:#3b5373}.crumb-sep{color:var(--dim);margin:0 3px}.depth{pointer-events:auto;gap:3px;margin-left:10px;display:inline-flex}.depth i{background:#222b3b;border-radius:50%;width:7px;height:7px;display:block}.depth i.on{background:var(--accent)}.welcome{max-width:360px;color:var(--soft);background:#10151ff2;border:1px solid #2c4560;border-radius:12px;padding:12px 34px 12px 14px;font-size:12.5px;animation:.25s ease-out lab-in;position:absolute;bottom:16px;left:16px;box-shadow:0 12px 36px #00000080}.welcome b{color:#fff;font-size:13.5px}.welcome ol{flex-direction:column;gap:7px;margin:8px 0 0;padding-left:18px;display:flex}.welcome li button{padding:3px 9px;font-size:12px}.welcome-x{padding:2px 7px;position:absolute;top:6px;right:6px}.sp{flex-direction:column;height:100%;min-height:0;display:flex}.sp-scroll{flex:1;min-height:0;padding:16px 18px 40px;overflow-y:auto}.sp-level{font:600 10.5px var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--dim)}.sp-title{letter-spacing:-.2px;margin:4px 0 8px;font-size:19px;font-weight:680;line-height:1.25}.sp-one{color:#f3ecd8;background:linear-gradient(#fcd34d17,#fcd34d05);border:1px solid #5a4a24;border-radius:10px;margin:0 0 14px;padding:11px 14px;font-size:14.5px;line-height:1.55}.sp-sec{margin:16px 0 0}.sp-sec h3{text-transform:uppercase;letter-spacing:.09em;color:var(--muted);align-items:center;gap:8px;margin:0 0 7px;font-size:10.5px;font-weight:650;display:flex}.sp-sec h3:after{content:"";background:var(--line);flex:1;height:1px}.sp-sec p{color:#c9d4e3;margin:0 0 9px;font-size:13.5px;line-height:1.62}.sp-sec ul{margin:0;padding-left:18px}.sp-sec li{color:#c3cfdf;margin-bottom:6px;font-size:13.2px;line-height:1.58}.sp-sec b{color:#eef3fa}.sp-sec code{border:1px solid var(--line);color:#cfe3f7;background:#151c29;border-radius:4px;padding:0 4px;font-size:12.5px}.sp-kids{flex-wrap:wrap;gap:5px;display:flex}.sp-kids button{font-size:12px}.sp-nav{border-bottom:1px solid var(--line);background:var(--panel);flex:none;justify-content:space-between;align-items:center;gap:8px;padding:8px 12px;display:flex}.sp-step{font:11px var(--mono);color:var(--dim)}.sp-live{background:#0e1520;border:1px solid #22344a;border-radius:10px;padding:10px 12px 4px}.sp-live h3{color:#7dd3fc}.sp-live h3:after{background:#1d2c40}.sp-live p{font-size:13px}.lw{color:#ffd1e1;font-weight:600}.out{color:var(--out)}.live-try{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;display:flex}button.mini{font:500 12px var(--mono);padding:2px 8px}.sp-math{border:1px solid var(--line);font:13px/1.7 var(--mono);color:#d7e6f7;white-space:pre-wrap;background:#0b1018;border-radius:8px;margin:0 0 8px;padding:10px 12px}.sp-legend{list-style:none;padding:0!important}.sp-legend li{font-size:12.5px}.sp-shape{font:12px var(--mono);color:#8fb3d9}.sp-whatif{border-left:2px solid #3b4f6b;margin-bottom:10px;padding:2px 0 6px 10px}.sp-whatif b{font-size:13.5px}.sp-whatif p{margin:4px 0 6px}.sp-mixups p{border-left:2px solid #8a5a2a;padding-left:10px}.sp-notes textarea{width:100%;min-height:90px}q.yours{quotes:"“" "”";color:#f5e6c4;background:#fcd34d12;border-radius:4px;padding:0 3px;font-style:italic}q.yours:before{content:"✎ the author's notes: “";color:#c9a75a;font-size:11px;font-style:normal}.tp-chapter{font:600 11px var(--mono);color:#fcd34d;text-transform:uppercase;letter-spacing:.05em}.tp-progress{flex-wrap:wrap;gap:3px;margin-bottom:10px;display:flex}.tp-progress button{background:#222b3b;border:none;border-radius:3px;width:12px;height:7px;padding:0}.tp-progress button.done{background:#3b5373}.tp-progress button.on{background:#fcd34d}.tp-p{color:#d3dceb;margin:0 0 11px;font-size:14px;line-height:1.65}.tp-p b{color:#fff}.tp-actions{flex-direction:column;align-items:flex-start;gap:6px;margin:12px 0 4px;display:flex}.tp-predict{background:#0f141d;border:1px solid #2f3b52;border-radius:10px;flex-direction:column;gap:8px;margin:6px 0 10px;padding:10px 12px;display:flex}.tp-predict-q{color:#dbe5f2;font-size:13.5px;line-height:1.5}.tp-tag{font:700 9.5px var(--mono);text-transform:uppercase;letter-spacing:.06em;color:#06131d;background:var(--accent);border-radius:4px;margin-right:8px;padding:1px 6px;display:inline-block}.tp-predict-opts{flex-wrap:wrap;gap:6px;display:flex}.tp-predict-opts button{font:12.5px var(--mono)}.tp-predict-opts button.right{color:#d1fae5;opacity:1;background:#1f9f6e33;border-color:#1f9f6e}.tp-predict-opts button.wrong{color:#fecdd3;opacity:1;background:#b4535f33;border-color:#b4535f}.tp-predict-opts button.dim{opacity:.4}.tp-verdict{color:#c3cfdf;margin:0;font-size:13px;line-height:1.55}.tp-verdict.bad b{color:#fecdd3}.tp-recap ol{counter-reset:rc;flex-direction:column;gap:1px;margin:0;padding:0;list-style:none;display:flex}.tp-recap li{counter-increment:rc}.tp-recap li button{text-align:left;color:#9fb0c6;background:0 0;border:none;border-radius:6px;gap:8px;width:100%;padding:4px 6px;font-size:12.5px;line-height:1.45;display:flex}.tp-recap li button:before{content:counter(rc) ".";color:var(--dim);font:500 11px var(--mono);text-align:right;min-width:20px;padding-top:1px}.tp-recap li button:hover{color:#dbe5f2;background:#121925}.tp-recap li.now button{color:#fef3c7;background:#fcd34d1a;box-shadow:inset 2px 0 #fcd34d}.tp-foot{border-top:1px solid var(--line);background:var(--panel);flex:none;gap:8px;padding:10px 12px;display:flex}.tp-foot .big{text-align:left;text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.sp-step{align-items:center;gap:8px;display:inline-flex}button.mini.play{font:600 11px var(--sans);padding:2px 8px}button.mini.play.on{color:#ffedd5;background:#3a2a10;border-color:#8a5a2a}.sp-notes-foot{justify-content:space-between;align-items:center;gap:10px;margin-top:4px;display:flex}.lab-host{z-index:30;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0a0d13f7;flex-direction:column;animation:.18s ease-out lab-in;display:flex;position:absolute;inset:0}@keyframes lab-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.lab-head{border-bottom:1px solid var(--line);background:var(--panel);flex:none;align-items:center;gap:10px;padding:8px 12px;display:flex}.lab-tabs{flex-wrap:wrap;flex:1;gap:4px;display:flex}.lab-tabs button{padding:4px 9px;font-size:12px}.lab-close{flex:none}.lab-body{flex:1;min-height:0;padding:18px 22px 60px;overflow-y:auto}.lab-title h2{letter-spacing:-.2px;margin:0;font-size:20px}.lab-title p{color:var(--muted);margin:4px 0 16px;font-size:13.5px}.lab-grid{grid-template-columns:repeat(auto-fit,minmax(440px,1fr));align-items:start;gap:14px;display:grid}.lab-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:8px;min-width:0;padding:14px 16px;display:flex}.lab-card h4{color:#eef3fa;margin:0 0 2px;font-size:14px;font-weight:650}.lab-card h5{color:var(--soft);margin:6px 0 0;font-size:12px;font-weight:600}.lab-note{color:#b9c6d8;margin:0;font-size:13px;line-height:1.55}.lab-big{margin:4px 0;font-size:20px}.lab-slider{color:var(--soft);flex-direction:column;font-size:12.5px;display:flex}.lab-slider-top{justify-content:space-between;display:flex}.lab-slider-top b{color:var(--text);font-weight:600}.lab-two{grid-template-columns:1fr 1fr;gap:16px;display:grid}.lab-presets{flex-wrap:wrap;gap:5px;display:flex}.lab-presets button{font-size:12px}.lab-svg{display:block}.lab-total{font:15px var(--mono);color:var(--soft)}.lab-total b{font-size:18px}.lab-row{flex-wrap:wrap;align-items:flex-start;gap:16px;display:flex}.lab-words{flex-wrap:wrap;gap:5px;display:flex}.lab-words button{font:500 12.5px var(--mono)}.lab-pickers{color:var(--muted);align-items:center;gap:8px;display:flex}.lab-pickers select{width:auto}.lab-text{width:100%;font:14px var(--mono)}.lab-canvas{border:1px solid var(--line);image-rendering:pixelated;border-radius:8px}.lab-scroll{overflow-x:auto}.lab-stats{gap:12px;display:flex}.lab-stats>div{background:var(--bg-2);border:1px solid var(--line);border-radius:9px;flex-direction:column;flex:1;padding:8px 10px;display:flex}.lab-stats span{color:var(--muted);font-size:11.5px}.lab-stats b{font-size:20px}.lab-stats i{color:var(--dim);font-size:11px;font-style:normal}.seg{border:1px solid var(--line-2);border-radius:8px;flex-wrap:wrap;align-self:flex-start;gap:0;display:inline-flex;overflow:hidden}.seg button{border:none;border-right:1px solid var(--line-2);background:var(--panel-2);border-radius:0;padding:5px 10px;font-size:12px}.seg button:last-child{border-right:none}.seg button.on{color:#e0f4ff;background:#183a52}.lab-table{border-collapse:collapse;width:100%;font-size:12.5px}.lab-table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:4px 6px;font-size:11.5px;font-weight:600}.lab-table td{color:var(--soft);border-bottom:1px solid #161d2a;padding:4px 6px}.lab-table tr.best td{color:#fff;background:#38bdf814}.lab-table tr.masked td{opacity:.4}.lab-table .lead{color:#fff;font-weight:600}.lab-table .dim,.dim{color:var(--dim)}.lab-heat{border-collapse:separate;border-spacing:2px;font:11px var(--mono)}.lab-heat th{font:500 11px var(--sans);color:var(--muted);text-align:right;white-space:nowrap;padding:0 4px}.lab-heat td{text-align:center;color:#e3e9f2;cursor:default;border-radius:4px;width:34px;height:24px}.lab-heat.small td{cursor:pointer;width:20px;height:20px}.lab-heat th.rot{vertical-align:bottom;text-align:left;height:70px}.lab-heat th.rot span{transform-origin:0 100%;white-space:nowrap;width:14px;display:inline-block;transform:rotate(-55deg)}.lab-heat tr.pick th{color:#ffd1e1}.lab-heat tr.sum th{color:#fff}.lab-heat tr.sum td{outline:1px solid #55647c}.barchart{display:block}.barchart.draggable{touch-action:none}.tok-row{flex-wrap:wrap;align-items:flex-end;gap:6px 8px;display:flex}.tok-word{gap:2px;display:inline-flex}.tok-chip{font:13px var(--mono);color:#cdd8e6;background:#121824;border:1px solid #2c374b;border-radius:6px;flex-direction:column;align-items:center;gap:1px;padding:3px 7px;display:inline-flex}.tok-chip i{font:9.5px var(--mono);color:var(--dim);font-style:normal}.tok-chip.unk{color:#fda4af;background:#b4535f1f;border-color:#7a3442}.tok-chip.new{border-color:var(--out);color:#ffedd5;background:#fb923c1a}.plane{flex:none;width:300px;height:300px;position:relative}.plane canvas,.plane svg{border-radius:8px;position:absolute;inset:0}.plane canvas{border:1px solid var(--line)}.gen-text{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.gen-passes{color:var(--soft);margin:4px 0 0;padding-left:20px;font-size:13px}.gen-passes li{margin:2px 0}.kv-grid{flex-direction:column;gap:4px;display:flex}.kv-row{align-items:center;gap:4px;font-size:11.5px;display:flex}.kv-row>span:first-child{width:56px}.kv-cell{border:1px solid #222b3b;border-radius:4px;width:26px;height:18px;display:inline-block}.kv-cell.none{opacity:.35;border-style:dashed}.kv-cell.fresh{background:var(--out);border-color:var(--out)}.kv-cell.cached{background:#284a63;border-color:#2c6d93}.kv-legend{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:flex}.rope-plane{border:1px solid var(--line);background:#0d1119;border-radius:10px;flex:none}.rope-side{flex-direction:column;flex:1;gap:4px;min-width:240px;display:flex}.lab-note.mono{font-family:var(--mono);font-size:12px}@media (width<=900px){.lab-host{z-index:70;position:fixed;inset:0}.lab-head{flex-wrap:wrap}.lab-tabs{scrollbar-width:none;flex-wrap:nowrap;flex-basis:100%;order:2;overflow-x:auto}.lab-tabs button{flex:none}.lab-close{margin-left:auto}.lab-body{padding:12px 12px 48px}.lab-grid,.lab-two{grid-template-columns:minmax(0,1fr)}.lab-card{padding:12px}}
