:root{--bg:#fbfbf9;--surface:#fff;--surface-2:#f2f2ef;--ink:#101010;--muted:#46464a;--faint:#6d6d70;--accent:#0645ad;--accent-bg:#eef1f8;--ok:#0a6b2d;--ok-bg:#eaf3ec;--warn:#a33000;--hair:#1111111f;--rule:#11111147;--sans:-apple-system, "SF Pro Text", Inter, "Segoe UI", system-ui, sans-serif;--font-mono:ui-monospace, "SF Mono", "SFMono-Regular", Menlo, Consolas, monospace;font-family:var(--sans);font-size:16px}:root[data-theme=dark]{--bg:#131313;--surface:#1c1c1c;--surface-2:#272727;--ink:#ececea;--muted:#b6b6b1;--faint:#9c9c97;--accent:#8ab2ee;--accent-bg:#1f2a3d;--ok:#79c48c;--ok-bg:#1e2b21;--warn:#e6957a;--hair:#ffffff21;--rule:#ffffff4d}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;flex-direction:column;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--rule);flex-wrap:wrap;align-items:center;gap:6px 12px;padding:10px 20px;display:flex}.brand{font-size:17px;font-weight:700}.crumb{color:var(--muted);font-size:13px}.spacer{flex:1}.ghost-btn{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:0;padding:7px 12px;font-size:13px}.ghost-btn:hover{background:var(--surface-2);color:var(--ink)}.seg{border:1px solid var(--rule);display:inline-flex;overflow:hidden}.seg button{font:inherit;border:none;border-right:1px solid var(--rule);color:var(--muted);cursor:pointer;background:0 0;padding:5px 11px;font-size:12px}.seg button:last-child{border-right:none}.seg button:hover{color:var(--ink);background:var(--surface-2)}.seg button.active{background:var(--ink);color:var(--surface)}.layout{flex:1;grid-template-columns:264px 1fr;min-height:0;display:grid}.layout>*{min-height:0;overflow:auto}.rail{background:var(--surface);border-right:1px solid var(--rule);padding:16px 0 40px}.rail-sec{padding:0 16px 14px}.rail-h{letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin:0 0 8px;font-size:11px}.rail-link{width:100%;font:inherit;text-align:left;color:var(--ink);cursor:pointer;background:0 0;border:none;align-items:baseline;gap:8px;padding:6px 8px;font-size:13px;display:flex}.rail-link:hover{background:var(--surface-2)}.rail-link .n{font-family:var(--font-mono);color:var(--faint);width:12px;font-size:11px}.rail-link .pct{font-family:var(--font-mono);color:var(--faint);margin-left:auto;font-size:11px}.rail-sec.totals{border-top:1px solid var(--hair);padding-top:14px}.meter{background:var(--surface-2);border:1px solid var(--hair);height:4px}.meter i{background:var(--ok);height:100%;display:block}.tot-line{color:var(--muted);justify-content:space-between;margin:8px 0 6px;font-size:12px;display:flex}.tot-line b{font-family:var(--font-mono);color:var(--ink);font-weight:600}.map{max-width:1080px;padding:24px 32px 120px}.intro{border:1px solid var(--rule);background:var(--surface);margin-bottom:28px;padding:16px 18px}.intro h2{margin:0 0 6px;font-size:15px}.intro p{color:var(--muted);margin:0;font-size:13px;line-height:1.55}.axes{border:1px solid var(--rule);background:var(--surface);grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:0;margin-bottom:36px;display:grid}.axis{border-right:1px solid var(--hair);padding:14px 16px}.axis:last-child{border-right:none}.axis h3{margin:0 0 6px;font-size:13px}.axis p{color:var(--muted);margin:0 0 6px;font-size:12.5px;line-height:1.5}.axis .ex{font-family:var(--font-mono);color:var(--faint);font-size:11px;line-height:1.5}.layer{padding-bottom:26px;padding-left:28px;position:relative}.layer:before{content:"";border-left:1px solid var(--hair);position:absolute;top:8px;bottom:0;left:8px}.layer:last-child:before{height:26px;bottom:auto}.layer-h{align-items:baseline;gap:10px;margin-bottom:3px;display:flex;position:relative}.layer-h:before{content:"";background:var(--surface);border:1px solid var(--rule);width:9px;height:9px;position:absolute;top:7px;left:-24px}.layer-h .num{font-family:var(--font-mono);color:var(--faint);font-size:11px}.layer-h h2{margin:0;font-size:15px}.layer-h .count{font-family:var(--font-mono);color:var(--faint);margin-left:auto;font-size:11px}.layer-sub{color:var(--muted);margin:0 0 12px;font-size:12.5px}.nodes{grid-template-columns:repeat(auto-fill,minmax(228px,1fr));gap:-1px 0;display:grid}.node{text-align:left;font:inherit;background:var(--surface);border:1px solid var(--hair);cursor:pointer;margin:0 -1px -1px 0;padding:9px 11px 9px 13px;position:relative}.node:hover{border-color:var(--rule);z-index:2}.node.sel{border-color:var(--accent);z-index:3}.node:before{content:"";background:0 0;width:3px;position:absolute;top:-1px;bottom:-1px;left:0}.node.st-learning:before{background:var(--accent)}.node.st-known:before{background:var(--ok)}.node.st-known{background:var(--ok-bg)}.node .ua{font-size:13px;line-height:1.35;display:block}.node .en{font-family:var(--font-mono);color:var(--faint);margin-top:3px;font-size:10.5px;display:block}.node .tier{font-family:var(--font-mono);color:var(--faint);font-size:10px;position:absolute;top:9px;right:9px}.node.core .ua:after{content:"◆";color:var(--accent);vertical-align:super;margin-left:4px;font-size:8px}.node.dim{opacity:.3}.drawer{background:var(--surface);border-left:1px solid var(--rule);padding:18px 20px 60px}.drawer-top{align-items:flex-start;gap:10px;margin-bottom:4px;display:flex}.drawer h2{flex:1;margin:0;font-size:16px;line-height:1.3}.drawer .en-t{font-family:var(--font-mono);color:var(--faint);margin:0 0 16px;font-size:11px}.drawer h4{letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin:18px 0 5px;font-size:11px;font-weight:600}.drawer p{color:var(--ink);margin:0;font-size:13.5px;line-height:1.6}.drawer p.mut{color:var(--muted)}.state-row{margin:16px 0 0;display:flex}.state-row button{font:inherit;border:1px solid var(--rule);color:var(--muted);cursor:pointer;background:0 0;border-right:none;flex:1;padding:7px 0;font-size:12px}.state-row button:last-child{border-right:1px solid var(--rule)}.state-row button.on{background:var(--ink);color:var(--surface);border-color:var(--ink)}.rel{flex-wrap:wrap;gap:6px;display:flex}.rel button{font:inherit;border:1px solid var(--hair);color:var(--accent);cursor:pointer;background:0 0;padding:4px 8px;font-size:12px}.rel button:hover{border-color:var(--rule)}.close-x{font:inherit;color:var(--faint);cursor:pointer;background:0 0;border:none;padding:2px 6px;font-size:16px;line-height:1}.legend{color:var(--faint);flex-wrap:wrap;gap:16px;margin-bottom:22px;font-size:11.5px;display:flex}.legend span{align-items:center;gap:5px;display:inline-flex}.legend i{border:1px solid var(--hair);width:9px;height:9px;display:inline-block}.legend i.k{background:var(--ok);border-color:var(--ok)}.legend i.l{background:var(--accent);border-color:var(--accent)}.glyph{color:var(--muted);flex:none;display:inline-flex}.glyph svg{width:18px;height:18px;display:block}.glyph.sm svg{width:14px;height:14px}.glyph.big svg{width:30px;height:30px}.glyph.big{color:var(--ink);margin-bottom:8px}.glyph.earned{color:var(--ok)}.axis .glyph.big{display:block}.badge-grid{grid-template-columns:1fr 1fr;display:grid}.badge{font:inherit;cursor:pointer;border:1px solid var(--hair);color:var(--faint);background:0 0;align-items:center;gap:6px;min-width:0;margin:0 -1px -1px 0;padding:6px 7px;display:flex}.badge:hover{border-color:var(--rule)}.badge .glyph svg{width:15px;height:15px}.badge .bt{text-align:left;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;line-height:1.2;overflow:hidden}.badge.on{color:var(--ok);background:var(--ok-bg);border-color:var(--ok);z-index:1}.badge.on .glyph{color:var(--ok)}.rail-sec.badges,.rail-sec.io{border-top:1px solid var(--hair);padding-top:14px}.rail-sec.io{flex-wrap:wrap;gap:2px;display:flex}.rail-sec.io .ghost-btn{padding:5px 8px;font-size:12px}.rail-link,.layer-h{align-items:center}.layer-tools{align-items:center;gap:6px;margin-left:auto;display:flex}.mini{font:inherit;border:1px solid var(--hair);color:var(--muted);cursor:pointer;background:0 0;padding:3px 8px;font-size:11px}.mini:hover{border-color:var(--rule);color:var(--ink)}.mini.done{color:var(--ok);border-color:var(--ok);background:var(--ok-bg)}.sheet-actions{gap:6px;margin-top:16px;display:flex}.quiz-card p.q{margin:4px 0 16px;font-size:17px;line-height:1.45}p.why{color:var(--muted);border-left:2px solid var(--hair);margin-top:12px;padding-left:10px;font-size:12.5px;line-height:1.55}.opts{flex-direction:column;display:flex}.opt{font:inherit;text-align:left;border:1px solid var(--hair);color:var(--ink);cursor:pointer;background:0 0;margin-bottom:-1px;padding:9px 11px;font-size:13.5px;line-height:1.4}.opt:not(:disabled):hover{border-color:var(--rule);z-index:1;position:relative}.opt.right{border-color:var(--ok);background:var(--ok-bg);color:var(--ok);z-index:2;position:relative}.opt.wrong{border-color:var(--warn);color:var(--warn);z-index:2;position:relative}.opt:disabled{cursor:default}@media (width<=900px){.layout,.layout.drawer-open{grid-template-columns:1fr}.rail{border-right:none;border-bottom:1px solid var(--rule)}.drawer{border-left:none;border-top:1px solid var(--rule)}}.main{max-width:1080px;padding:24px 32px 120px}.layout.drawer-open{grid-template-columns:264px 1fr 420px}.rail-link .rl-t{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.node.deep .en:after{content:" ●";color:var(--accent)}.intro.ok{border-color:var(--ok);background:var(--ok-bg)}.test-list{border:1px solid var(--rule);background:var(--surface);margin-top:22px}.test-card{border-bottom:1px solid var(--hair);align-items:center;gap:12px;padding:12px 16px;display:flex}.test-card:last-child{border-bottom:none}.test-card.done{background:var(--ok-bg)}.test-card.done .glyph{color:var(--ok)}.tc-txt{flex:1;min-width:0}.tc-txt h3{margin:0 0 2px;font-size:14px}.tc-txt p{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:12px;overflow:hidden}.tc-meta{align-items:center;gap:10px;display:flex}.tc-meta .sc{font-family:var(--font-mono);color:var(--faint);font-size:12px}.quiz-bar{align-items:center;gap:12px;margin-bottom:18px;display:flex}.qb-title{font-size:14px;font-weight:600}.qb-n{font-family:var(--font-mono);color:var(--faint);margin-left:auto;font-size:12px}.quiz-card{border:1px solid var(--rule);background:var(--surface);max-width:640px;padding:20px 22px}.review-h h3{margin:22px 0 8px;font-size:13px}.review{border:1px solid var(--hair);background:var(--surface);margin-bottom:-1px;padding:12px 14px}.review.ok{opacity:.6}.review .rq{margin:0 0 6px;font-size:13.5px}.review .ra{color:var(--ok);margin:0 0 2px;font-size:12.5px}.review .ra.wrong{color:var(--warn)}.review .why{margin-top:6px}.check{border:1px solid var(--accent);background:var(--accent-bg);padding:11px 12px}.check p{margin:0 0 10px;font-size:13.5px;line-height:1.55}.sources{flex-direction:column;display:flex}a.src{border:1px solid var(--hair);color:var(--ink);margin-bottom:-1px;padding:8px 10px;text-decoration:none;display:block}a.src:hover{border-color:var(--rule);z-index:1;position:relative}a.src .st{color:var(--accent);font-size:13px;display:block}a.src .sn{color:var(--muted);margin-top:2px;font-size:12px;line-height:1.45;display:block}a.src .sh{font-family:var(--font-mono);color:var(--faint);margin-top:3px;font-size:10.5px;display:block}.soon{border-left:2px solid var(--hair);color:var(--faint);margin-top:18px;padding:2px 0 2px 10px;font-size:12.5px;line-height:1.55}.ego{border:1px solid var(--hair);background:var(--surface);padding:4px 4px 0}svg.egograph{width:100%;height:auto;display:block}.eedge{stroke:var(--hair);stroke-width:1px}.enode circle{fill:var(--surface);stroke:var(--rule);stroke-width:1.2px;cursor:pointer}.enode.st-learning circle{fill:var(--accent-bg);stroke:var(--accent)}.enode.st-known circle{fill:var(--ok-bg);stroke:var(--ok)}.enode.center circle{stroke:var(--ink);stroke-width:2px;cursor:default}.enum{font-family:var(--font-mono);fill:var(--faint);pointer-events:none;font-size:9px}.elabel{font-family:var(--sans);fill:var(--muted);pointer-events:none;font-size:10.5px}.enode:hover circle{stroke:var(--accent)}.enode:hover .elabel{fill:var(--ink)}.ego-note{color:var(--faint);margin:0;padding:0 6px 5px;font-size:10.5px}.rel button.axis-chip{color:var(--faint)}
