@font-face{font-family:Young Serif;src:url(./youngserif.BrWXKXgC.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Atkinson Hyperlegible Next;src:url(./atkinsonhyperlegiblenext.zeyP0PbS.woff2)format("woff2");font-weight:200 800;font-style:normal;font-display:swap}@font-face{font-family:Atkinson Hyperlegible Mono;src:url(./atkinsonhyperlegiblemono.2ubfmZBO.woff2)format("woff2");font-weight:200 800;font-style:normal;font-display:swap}@font-face{font-family:PC Accidentals;src:url(data:font/woff2;base64,d09GMgABAAAAAAMgAAoAAAAABlAAAALWAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAANAqDHIMEATYCJAMQCwoABCAFhRoHPRt4BQCeBeXYY3pkYJZJzvKnyzoevt+Pdu77b0WTmHexKohF1yoWinljSMw28EgikmBDoXplh+ba7UUzmi69im+vcnsTQqVSGplSKE00NPoBiDJa5/you/ufa+qd5QZe3yY0jn4+seigfL6zFR3YRjSMxNSyNQ2kaYBzMDaxfbS/b1fEc9xSInPZC2ZuXU6lgWNgzJtSv/3/TJSKGThK/EzP0AUgoUAdqkAdmi5AlgUDZ/83GTiNW31PAEIG5ajEc7wCZECS5ZVpGjS5dC7lBuEKu1IbXNWJgDXKY3HN4tQV8/QqWtbjlGKPgr5YXz5PxEFyHsvGql5vNtNqNtFi8XD+2rUKd8bDtRvnb168mPF4dTr+rYiyKzjWrPsWkdgUMpVCpf1+uN8B3fbYbNabbmfdaWfRI+Pz+wvF3mA7YGhZ2d1wWE7t2RwS3d9zKpj8AZ7Wm8mkmwTemDHPncNRs5ntgPiNPTP54t/VmfNrO9ex49FAbfBl5tOFabPQfShT6Er7kzwAAJiCIbh19Mt7mflXXlDf4EfHs+POeoLNO3E9baCQQDBEeOMvA6PvIKRsueqfiNdm4phEvDMEQ3YZDSQQqLUupPYAxRBq7YGkzGEo1BtB1uABStR46CjljaOKzAasewEIbbEdktqYQGEkLkE2Fi+hREt8tZeisrWPT6b/HdW+GpEnTB67jo62na0Z3oiyqg3TwQiM+7IlpUwJBdOnEJJPP7QFbbOm9C6IPiSldpORG1KYcENnJdMFxrR2remWop7tgpZptSOqlClSdwAS+nATU25TSwtImwS0MoJDSBPfunSNbHVsmUEjfU1tk7zhUFpQBBTnczhKMsrHBTqmJkiIXCWC7MpuNtMkhWtq6mtpmyDhRhCpjr+XIW2QhBLcIKcKekpb19II9gW7FZtBitb1ZYLO+Jy2BaRvatKmDkVadQoDMpEwKkajzSxdzFmOgz5XBgA=)format("woff2");font-weight:400;unicode-range:U+266D-266F;font-display:swap}@font-face{font-family:PC Accidentals;src:url(data:font/woff2;base64,d09GMgABAAAAAAMUAAoAAAAABjwAAALKAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAANAqDJIMEATYCJAMQCwoABCAFhH8HPRtdBQAeg+NuiaHupbUpytBEf3w8omrVsmab91Hfb/Hf4153DockEAphEYZDOOKcB2GwCAVD+3vvfUDpPqTBepqk0FfFFBCS25ZXxND/c029s6PZnte32cDG0c8nFtVeQZVgo41o2Am+poE0DQQOZ7wif12Xn/ZsSLFwZyY+XFZUArjXZxqgvvzB9ycBOEl+Wx8bABo6LKIKFtFsAEoJey///+w9c6+vUwFEgVGM4wOfgAI0pW68NIS5dC5FiXBpyQUG8kU6ECUHgijwMo4sWEvn0qptAoGgAJOkS7KrO5CoTRLfi2fZ1dXYKLoysny8dHR4yLFEvuv4aIWOWFV2TshsUanYbI4+SWOzxWMFBQ0N3TszOzvboFsJk5sbmxPjYGN4p6qc3Ny6/LqG+oZGcZrGgsbCeKE9btNoOBwWUyk3Bv0BX0Z5ellZGaO8vKIisyorG5Ren2KndVfP2DN83dmo0TWzths87mc1D3mdwKB552xeac7VEQAcQBAOR9GLVmHib7SjvsPPWr/LPMzyf5ztTXQaCEOEqY0UgQm3EJH+lV9aB45y56FIagTlFa1BA8W0gfD3gHSIaT1oyhN05nVBWTADQ6a8aYeLG0aVYgMG3oFYST40o8Ghs5M+KHs5giFLudMMEynrau8f+O+omvEReUT/MSR7p4ipOLwRZRoOK/OLYGlOPOR1eaFl+mQfcU8/RClNg6jzLojmEWeh7Vyjk6PWskyYnktyMKQoa7mmdVJZnAbq8rUNl9fliTwAKNOlXb8BmQaMGTYC5wCN69VuxKh+PzaQek0hTImDenVB4fqT+kOV8hWBSuWYBC8X7/MWhAH9Ro1wl4mOSLLOG4RyaodCdcHyF45q12uEs4r/dxk1aZRVmUxQehmpGQb0woqrxzA4qb9aRmh6a+DdJNplQH97aT1R/in0KNIQKkKjzRH1zPmKlj7rBQA=)format("woff2");font-weight:700;unicode-range:U+266D-266F;font-display:swap}@font-face{font-family:PC Accidentals Display;src:url(data:font/woff2;base64,d09GMgABAAAAAAMUAAoAAAAABjwAAALKAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAANAqDJIMEATYCJAMQCwoABCAFhH8HPRtdBQAeg+NuiaHupbUpytBEf3w8omrVsmab91Hfb/Hf4153DockEAphEYZDOOKcB2GwCAVD+3vvfUDpPqTBepqk0FfFFBCS25ZXxND/c029s6PZnte32cDG0c8nFtVeQZVgo41o2Am+poE0DQQOZ7wif12Xn/ZsSLFwZyY+XFZUArjXZxqgvvzB9ycBOEl+Wx8bABo6LKIKFtFsAEoJey///+w9c6+vUwFEgVGM4wOfgAI0pW68NIS5dC5FiXBpyQUG8kU6ECUHgijwMo4sWEvn0qptAoGgAJOkS7KrO5CoTRLfi2fZ1dXYKLoysny8dHR4yLFEvuv4aIWOWFV2TshsUanYbI4+SWOzxWMFBQ0N3TszOzvboFsJk5sbmxPjYGN4p6qc3Ny6/LqG+oZGcZrGgsbCeKE9btNoOBwWUyk3Bv0BX0Z5ellZGaO8vKIisyorG5Ren2KndVfP2DN83dmo0TWzths87mc1D3mdwKB552xeac7VEQAcQBAOR9GLVmHib7SjvsPPWr/LPMzyf5ztTXQaCEOEqY0UgQm3EJH+lV9aB45y56FIagTlFa1BA8W0gfD3gHSIaT1oyhN05nVBWTADQ6a8aYeLG0aVYgMG3oFYST40o8Ghs5M+KHs5giFLudMMEynrau8f+O+omvEReUT/MSR7p4ipOLwRZRoOK/OLYGlOPOR1eaFl+mQfcU8/RClNg6jzLojmEWeh7Vyjk6PWskyYnktyMKQoa7mmdVJZnAbq8rUNl9fliTwAKNOlXb8BmQaMGTYC5wCN69VuxKh+PzaQek0hTImDenVB4fqT+kOV8hWBSuWYBC8X7/MWhAH9Ro1wl4mOSLLOG4RyaodCdcHyF45q12uEs4r/dxk1aZRVmUxQehmpGQb0woqrxzA4qb9aRmh6a+DdJNplQH97aT1R/in0KNIQKkKjzRH1zPmKlj7rBQA=)format("woff2");font-weight:400 700;unicode-range:U+266D-266F;font-display:swap}:root{--p-white:#fff;--p-mist-50:#f3f6fa;--p-ink-900:#1e2330;--p-slate-600:#556070;--p-slate-400:#848d9c;--p-slate-200:#dde3eb;--p-teal-700:#00706b;--p-navy-800:#048;--p-gold-500:#da3;--p-rose-500:#b56;--p-blue-600:#07b;--p-green-500:#3c9a55;--p-green-700:#23753a;--p-red-800:#9f1c24;--p-red-600:#c1272d;--c-bg:var(--p-white);--c-surface:var(--p-mist-50);--c-ink:var(--p-ink-900);--c-muted:var(--p-slate-600);--c-line:var(--p-slate-200);--c-line-strong:var(--p-slate-400);--c-accent:var(--p-teal-700);--c-on-accent:var(--p-white);--c-accent-tint:color-mix(in oklab, var(--c-accent) 10%, var(--c-bg));--c-hl:var(--c-accent);--c-fn-t:var(--p-navy-800);--c-fn-s:var(--p-gold-500);--c-fn-d:var(--p-rose-500);--c-fn-t-tint:color-mix(in oklab, var(--c-fn-t) 14%, var(--c-bg));--c-fn-s-tint:color-mix(in oklab, var(--c-fn-s) 18%, var(--c-bg));--c-fn-d-tint:color-mix(in oklab, var(--c-fn-d) 14%, var(--c-bg));--c-fn-s-edge:color-mix(in oklab, var(--c-fn-s) 55%, var(--c-ink));--c-bass:var(--p-blue-600);--c-ok:var(--p-green-500);--c-ok-text:var(--p-green-700);--c-ok-tint:color-mix(in oklab, var(--c-ok) 12%, var(--c-bg));--c-bad:var(--p-red-800);--c-bad-text:var(--p-red-600);--c-bad-tint:color-mix(in oklab, var(--c-bad) 9%, var(--c-bg));--c-scrim:color-mix(in oklab, var(--p-ink-900) 50%, transparent);--f-display:"Young Serif", "PC Accidentals Display", Georgia, serif;--f-text:"Atkinson Hyperlegible Next", "PC Accidentals", "Segoe UI", sans-serif;--f-mono:"Atkinson Hyperlegible Mono", "PC Accidentals", ui-monospace, monospace;--fs-xs:14px;--fs-s:15px;--fs-body:17px;--fs-lead:20px;--fs-h3:22px;--fs-h2:28px;--fs-h1:40px;--lh-body:1.6;--lh-tight:1.15;--measure:65ch;--r-s:6px;--r-m:10px;--r-l:20px;--r-pill:999px;--t-fast:.12s;--t-base:.2s;--sh-1:0 10px 30px -18px color-mix(in oklab, var(--p-ink-900) 45%, transparent);--nav-h:64px;--nav-indicator:var(--c-ink);--focus:var(--c-accent);--key-white:var(--c-bg);--key-white-edge:var(--c-line-strong);--key-black:var(--c-ink);--key-black-sheen:color-mix(in oklab, var(--c-bg) 8%, transparent);--key-lbl:var(--c-muted);--key-hl:var(--c-hl);--key-hl-black:color-mix(in oklab, var(--c-hl) 70%, var(--c-bg));--key-on-hl:var(--c-on-accent);--key-bass:var(--c-bass);--key-bass-black:color-mix(in oklab, var(--c-bass) 70%, var(--c-bg));--key-fg-bg:var(--c-bg);--key-press:var(--c-ink);--key-press-on-dark:var(--c-bg);--key-fn-t:var(--c-fn-t);--key-fn-s:var(--c-fn-s);--key-fn-d:var(--c-fn-d);--key-fn-t-black:color-mix(in oklab, var(--c-fn-t) 55%, var(--c-bg));--key-fn-s-black:var(--c-fn-s);--key-fn-d-black:color-mix(in oklab, var(--c-fn-d) 80%, var(--c-bg));--chip-fn-t-on:var(--c-on-accent);--chip-fn-s-on:var(--c-ink);--chip-fn-d-on:var(--c-on-accent);--kb-strip:var(--c-ink);--kb-lesson-h:180px;--mx-cell:22px;--mx-need:var(--c-ink);--node-done:var(--c-ink);--node-next:var(--c-accent);--step-dot:34px;--fb-ico-ok:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M12 0a12 12 0 1 1 0 24a12 12 0 1 1 0-24zM6.2 12.6l1.9-1.9l2.6 2.6l5.2-5.2l1.9 1.9l-7.1 7.1z'/%3E%3C/svg%3E");--fb-ico-bad:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M12 0a12 12 0 1 1 0 24a12 12 0 1 1 0-24zM7.4 9.3l2.7 2.7l-2.7 2.7l1.9 1.9l2.7-2.7l2.7 2.7l1.9-1.9l-2.7-2.7l2.7-2.7l-1.9-1.9l-2.7 2.7l-2.7-2.7z'/%3E%3C/svg%3E");--fb-ico-info:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M12 0a12 12 0 1 1 0 24a12 12 0 1 1 0-24zM12 8a4 4 0 1 0 0 8a4 4 0 1 0 0-8z'/%3E%3C/svg%3E");--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;padding-top:env(safe-area-inset-top,0);padding-bottom:env(safe-area-inset-bottom,0)}img{max-width:100%}[hidden]{display:none!important}*{box-sizing:border-box}html{scroll-padding-top:calc(16px + var(--nav-h));font-synthesis:none}body{background:var(--c-bg);color:var(--c-ink);font-family:var(--f-text);font-size:var(--fs-body);line-height:var(--lh-body);margin:0}body:before{content:"";height:env(safe-area-inset-top,0);z-index:30;background:var(--c-surface);position:fixed;inset:0 0 auto}.wrap{max-width:1080px;padding:28px max(16px,env(safe-area-inset-right,0px)) 48px max(16px,env(safe-area-inset-left,0px));gap:28px;margin:0 auto;display:grid}h1,h2{font-family:var(--f-display);text-wrap:balance;font-weight:400;line-height:var(--lh-tight);margin:0}h1{font-size:var(--fs-h1)}h2{font-size:var(--fs-h3)}a{color:var(--c-accent);text-underline-offset:3px}button,input,select{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}main:focus{outline:none}.badge{border:1px solid var(--c-line);color:var(--c-muted);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:2px 9px;font-size:12px;font-weight:600;display:inline-flex}.badge .dot{background:var(--key-black);border:1px solid var(--key-white-edge);border-radius:50%;width:8px;height:8px}.badge.zero .dot{background:var(--key-white)}.controls{flex-wrap:wrap;gap:10px 18px;font-size:14px;display:flex}.btn,.controls,.ctl{align-items:center}.btn{border:1px solid var(--c-line);background:var(--c-bg);cursor:pointer;border-radius:999px;gap:7px;padding:7px 14px;font-weight:600;display:inline-flex}.btn.primary,.btn:hover{border-color:var(--c-accent)}.btn.primary{background:var(--c-accent);color:var(--c-on-accent)}.ctl{color:var(--c-muted);gap:8px;min-height:44px;display:inline-flex}.ctl input[type=range]{width:120px;height:32px;accent-color:var(--c-accent);margin:0}.ctl input[type=checkbox]{accent-color:var(--c-accent);width:16px;height:16px}.ctl select{border:1px solid var(--c-line);background:var(--c-bg);border-radius:8px;padding:4px 6px}.tnum{font-variant-numeric:tabular-nums;color:var(--c-ink);min-width:3ch;display:inline-block}section{gap:14px;display:grid}.sec-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 16px;display:flex}.sec-head p{font-size:var(--fs-s);max-width:var(--measure)}.note,.sec-head p{color:var(--c-muted);margin:0}.note{font-size:12px}.info{grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:14px;display:grid}.info>div,.pane,.panel>*,.sheet>*{min-width:0}.info ol,.info ul{gap:6px;margin:6px 0 0;padding-left:20px;display:grid}.info h2{font-size:18px}footer{color:var(--c-muted);font-size:13px}.prose{font-size:var(--fs-body);max-width:var(--measure);gap:10px;display:grid}.prose p{margin:0}.warn{border-left:3px solid var(--c-line-strong);background:var(--c-surface);border-radius:0 var(--r-m) var(--r-m) 0;font-size:var(--fs-s);padding:8px 12px}.src-list{color:var(--c-muted);word-break:break-word;gap:2px;margin:0;padding-left:18px;font-size:12px;display:grid}.err{border:2px solid var(--c-bad);color:var(--c-bad-text);background:var(--c-bad-tint);border-radius:var(--r-m);font-family:var(--f-mono);font-size:var(--fs-xs);padding:10px 12px}.pane{gap:28px;display:grid}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.seg{border:1px solid var(--c-line);background:var(--c-bg);flex-wrap:wrap;padding:3px;display:inline-flex}.seg,.seg button{border-radius:999px}.seg button{cursor:pointer;color:var(--c-muted);background:0 0;border:0;padding:5px 12px;font-size:13px;font-weight:600}.seg button[aria-pressed=true]{background:var(--c-ink);color:var(--c-bg)}.filter-row{flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 12px;display:flex}.filter-lbl{color:var(--c-muted);font-size:13px;font-weight:600}.seg button .cnt{opacity:.6;margin-left:4px;font-size:12px;font-weight:500}.map-box{background:var(--c-bg);border:1px solid var(--c-line);border-radius:var(--r-l);min-width:0;padding:8px 16px 14px}.plan-scroll,.tbl-wrap{overflow-x:auto}.plan{border-collapse:collapse;width:100%;font-size:var(--fs-s)}.plan td,.plan th{text-align:left;border-bottom:1px solid var(--c-line);vertical-align:middle;padding:10px 8px}.plan thead th{color:var(--c-muted);white-space:nowrap;border-bottom:2px solid var(--c-line-strong);font-weight:700}.plan tbody tr:last-child td,.plan tbody tr:last-child th{border-bottom:0}.plan tbody th{font-weight:400;line-height:1.35}.plan tbody th .lt{grid-template-columns:2.6em minmax(0,1fr);align-items:baseline;display:grid}.plan tbody th .code{font-variant-numeric:tabular-nums;color:var(--c-muted)}.plan tbody th a{color:var(--c-ink);text-underline-offset:3px;font-weight:700}.plan tbody th a:hover{color:var(--c-accent)}.plan tbody th .core{font-size:var(--fs-xs);color:var(--c-muted);max-width:60ch;margin-top:2px;display:block}.plan .needs-col{color:var(--c-muted);white-space:nowrap;font-variant-numeric:tabular-nums}.plan .mx,.plan .mx-h{width:var(--mx-cell);text-align:center;padding-inline:0}.plan .mx-h{font-variant-numeric:tabular-nums;font-size:12px}.plan .mx-first{border-left:2px solid var(--c-line-strong)}.plan .mx i,.plan-legend i{vertical-align:middle;border-radius:3px;width:12px;height:12px;display:inline-block}.plan .mx i.need,.plan-legend i.need{background:var(--mx-need)}.plan .mx i.need-open,.plan-legend i.need-open{box-shadow:inset 0 0 0 2px var(--mx-need)}.plan .mx i.self{border-radius:var(--r-pill);background:var(--c-line-strong);width:6px;height:6px}.plan tr.is-soon td,.plan tr.is-soon th,.plan tr.is-todo .code{color:var(--c-muted)}.plan tr.is-next td,.plan tr.is-next th{background:var(--c-accent-tint)}.plan .st{white-space:nowrap;align-items:center;gap:8px;display:inline-flex}.plan .is-next .st{color:var(--c-accent);font-weight:700}.plan .dot{border-radius:var(--r-pill);width:22px;height:22px;box-shadow:inset 0 0 0 2px var(--c-line-strong);flex:none;place-items:center;display:grid}.plan .dot svg{width:16px;height:16px}.plan .is-done .dot{background:var(--node-done);box-shadow:none}.plan .is-done .dot path{fill:none;stroke:var(--c-bg);stroke-width:3px;stroke-linecap:round;stroke-linejoin:round}.plan .is-next .dot{box-shadow:inset 0 0 0 3px var(--node-next)}.plan .is-next .dot circle{fill:var(--node-next)}.plan .is-soon .dot{box-shadow:none;border:2px dashed var(--c-line-strong)}.plan-legend{font-size:var(--fs-xs);color:var(--c-muted);flex-wrap:wrap;gap:6px 20px;margin:10px 0 0;display:flex}.plan-legend span{align-items:center;gap:8px;display:inline-flex}@media (width<=999px){.plan .mx,.plan .mx-h,.plan-legend{display:none}}@media (width<=640px){.map-box{padding:4px 8px 8px}.plan .needs-col{white-space:normal}}.plan .needs-in,.plan .st-in{display:none}@media (width<=480px){.plan tbody td,.plan thead th:not(:first-child){display:none}.plan .st-in{margin-top:8px;display:flex}.plan .needs-in{font-size:var(--fs-xs);color:var(--c-muted);margin-top:4px;display:block}.plan tbody th .lt{grid-template-columns:2.4em minmax(0,1fr)}.plan td,.plan th{padding-inline:6px}}.continue{background:var(--c-surface);border-radius:var(--r-l);-moz-column-gap:24px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 24px;padding:20px 24px;display:grid}.continue>*{grid-column:1;margin:0}.continue .cont-lbl{font-size:var(--fs-s);color:var(--c-muted);font-weight:700}.continue h3{font-family:var(--f-display);font-weight:400;font-size:var(--fs-h3)}.continue .core{color:var(--c-muted);max-width:var(--measure)}.continue .meter{gap:4px;max-width:420px;margin-top:4px;display:flex}.continue .meter i{border-radius:var(--r-pill);background:var(--c-line);flex:1;height:8px}.continue .meter i.done{background:var(--node-done)}.continue .meter i.cur{background:var(--node-next)}.continue>.btn{grid-area:1/2/span 4;justify-self:end}@media (width<=640px){.continue{grid-template-columns:minmax(0,1fr);padding:16px}.continue>.btn{grid-area:auto/1;justify-self:start;margin-top:6px}}.refs-box{gap:10px;display:grid}.refs,.refs-box .theory-h{margin:0}.refs{max-width:var(--measure);gap:8px;padding:0;list-style:none;display:grid}.refs a{color:var(--c-ink);text-underline-offset:3px;font-weight:700}.refs .core{font-size:var(--fs-xs);display:block}.crumb,.refs .core,.tbl th{color:var(--c-muted)}.crumb{font-size:var(--fs-s)}.crumb a{color:var(--c-accent);text-underline-offset:3px}.lesson-view>.lead{font-size:var(--fs-lead);max-width:var(--measure);margin:0}.cof-side>.btn,.step-top>.seg{justify-self:start}.theory-h{margin-top:8px;font-size:18px}.lesson-view{gap:16px;min-width:0;display:grid}.cof path.wg:focus,.lesson-view h2:focus{outline:none}.lesson-view .prose,.lesson-view ul.tight{max-width:var(--measure)}.lesson-view ul.tight{font-size:var(--fs-body);gap:6px;margin:0;padding-left:20px;display:grid}.tbl-wrap{border:1px solid var(--c-line);background:var(--c-bg);border-radius:12px}.tbl{border-collapse:collapse;width:100%;font-size:14px}.tbl td,.tbl th{text-align:left;border-bottom:1px solid var(--c-line);vertical-align:top;padding:8px 12px}.tbl th{font-size:var(--fs-xs)}.tbl tr:last-child td{border-bottom:0}.tbl td:first-child{font-family:var(--f-text);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:13px}.cof{grid-template-columns:minmax(0,440px) minmax(0,1fr);align-items:start;gap:20px;display:grid}@media (width<=820px){.cof{grid-template-columns:minmax(0,1fr)}}.cof svg{touch-action:manipulation;-webkit-user-select:none;user-select:none;width:100%;max-width:440px;height:auto;margin:0 auto;display:block}.cof path.wg{fill:var(--c-bg);stroke:var(--c-line);stroke-width:1.5px;cursor:pointer}.cof path.wg.in{fill:var(--c-surface)}.cof path.wg.slice{fill:var(--c-accent-tint)}.cof path.wg.sel{fill:var(--c-accent)}.cof path.wg.now{stroke:var(--c-ink);stroke-width:3.5px}.cof path.wg.dimm{stroke:var(--c-accent);stroke-width:2px;stroke-dasharray:5 4}.cof path.wg:focus-visible{stroke:var(--c-ink);stroke-width:3.5px}.cof circle.hub{fill:var(--c-bg);stroke:var(--c-line);stroke-width:1.5px}.cof text{fill:var(--c-ink);font-family:var(--f-text);text-anchor:middle;dominant-baseline:central;pointer-events:none}.cof text.nm{font-size:19px;font-weight:700}.cof text.nm.in{font-size:14px}.cof text.alt{fill:var(--c-muted);font-size:10.5px}.cof text.num{fill:var(--c-accent);font-size:11px;font-weight:700;font-family:var(--f-text);font-variant-numeric:tabular-nums}.cof text.sig{fill:var(--c-muted);font-size:11px}@media (width<=480px){.cof svg text.alt,.cof svg text.hub-sub,.cof svg text.num,.cof svg text.sig{font-size:15px}.cof svg text.nm.in{font-size:16px}}@media (width<=360px){.cof svg text.alt,.cof svg text.hub-sub,.cof svg text.num,.cof svg text.sig{font-size:17px}}.cof text.on{fill:var(--c-on-accent)}.cof text.hub-name{font-family:var(--f-display);font-size:20px;font-weight:700}.cof text.hub-sub{fill:var(--c-muted);font-size:12px}.cof-side{gap:12px;min-width:0;display:grid}.cof-side h3{font-family:var(--f-display);margin:0;font-size:26px;line-height:1.1}.cof-side p{font-size:var(--fs-body);margin:0}.cof-side .sub{color:var(--c-muted);font-size:13px}.btnrow{flex-wrap:wrap;gap:8px;display:flex}.degs{grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:6px}.deg,.degs{display:grid}.deg{border:1px solid var(--c-line);background:var(--c-surface);cursor:pointer;text-align:center;font:inherit;color:inherit;border-radius:10px;padding:6px 8px}.deg.now,.deg:hover{border-color:var(--c-accent)}.deg.now{background:var(--c-accent);color:var(--c-on-accent)}.deg small{font-family:var(--f-text);font-variant-numeric:tabular-nums;color:var(--c-accent);font-size:12px;font-weight:700}.deg.now small{color:var(--c-on-accent)}.deg b{font-family:var(--f-display);font-size:18px}.layer-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.guide{border:1px solid var(--c-line);background:var(--c-surface);border-radius:12px;gap:10px;padding:12px 14px;display:grid}.guide p{font-size:var(--fs-body);margin:0}.guide .gstep{color:var(--c-muted);font-size:12px;font-weight:600}.goal{border-left:4px solid var(--c-accent);background:var(--c-surface);font-size:var(--fs-body);border-radius:0 12px 12px 0;margin:0;padding:10px 14px}.steps{grid-template-columns:repeat(var(--n),minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.steps li{justify-content:center;min-width:0;display:flex;position:relative}.steps li+li:before{content:"";top:calc(2.5px + var(--step-dot) / 2);right:calc(50% + 4px + var(--step-dot) / 2);left:calc(-50% + 4px + var(--step-dot) / 2);border-radius:var(--r-pill);background:var(--c-line);height:3px;position:absolute}.steps li:has(.is-done)+li:before{background:var(--node-done)}.stepbtn{all:unset;box-sizing:border-box;border-radius:var(--r-m);cursor:pointer;text-align:center;flex-direction:column;align-items:center;gap:6px;min-width:44px;max-width:100%;min-height:44px;padding:4px 2px;display:flex}.stepbtn:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.steps .sd{width:var(--step-dot);height:var(--step-dot);border-radius:var(--r-pill);font-variant-numeric:tabular-nums;background:var(--c-bg);box-shadow:inset 0 0 0 2px var(--c-line-strong);color:var(--c-muted);place-items:center;font-weight:700;display:grid}.steps .nm{font-size:var(--fs-xs);color:var(--c-muted);overflow-wrap:anywhere;line-height:1.25}.stepbtn:hover .nm{color:var(--c-ink)}.stepbtn.is-done .sd{background:var(--node-done);color:var(--c-bg);box-shadow:none}.stepbtn[aria-current=step] .sd{background:var(--node-next);color:var(--c-on-accent);box-shadow:0 0 0 5px var(--c-accent-tint)}.stepbtn[aria-current=step] .nm{color:var(--c-ink);font-weight:700}@media (width<=767px){.steps .nm{display:none}}@media (width<=480px){:root{--step-dot:26px}.steps .sd{font-size:13px}.stepbtn{min-width:0;padding-inline:0}.steps li+li:before{display:none}}.step{gap:12px}.step h3{font-family:var(--f-display);margin:0;font-size:22px}.step h3:focus{outline:none}.step-top{gap:10px;min-width:0;display:grid}.step-top p,.task-fb{max-width:var(--measure);margin:0}.lkb{background:var(--c-bg);border-radius:10px;padding:8px 8px 0}.lkb .kb{height:var(--kb-lesson-h)}.task-q{font-weight:600}.task-out{gap:8px;display:grid}.task-out>.btn,a.btn{justify-self:start}.task-fb{min-height:1.6em;font-size:var(--fs-body);align-items:flex-start;gap:10px;display:flex}.task-fb:not(:empty){border-radius:var(--r-m);box-shadow:inset 0 0 0 1px var(--c-line);background:var(--c-bg);padding:10px 14px}.task-fb:not(:empty):before{content:"";border-radius:var(--r-pill);background:var(--c-muted);width:24px;height:24px;-webkit-mask:var(--fb-ico-info) center/100% no-repeat;-webkit-mask:var(--fb-ico-info) center/100% no-repeat;mask:var(--fb-ico-info) center/100% no-repeat;flex:none;margin-top:1px}.task-fb[data-kind=ok]{color:var(--c-ok-text);font-weight:700}.task-fb[data-kind=ok]:not(:empty){background:var(--c-ok-tint);box-shadow:inset 0 0 0 1.5px var(--c-ok)}.task-fb[data-kind=ok]:not(:empty):before{background:var(--c-ok-text);-webkit-mask-image:var(--fb-ico-ok);-webkit-mask-image:var(--fb-ico-ok);mask-image:var(--fb-ico-ok)}.task-fb[data-kind=bad]{color:var(--c-ink)}.task-fb[data-kind=bad]:not(:empty){background:var(--c-bad-tint);box-shadow:inset 0 0 0 1.5px var(--c-bad)}.task-fb[data-kind=bad]:not(:empty):before{background:var(--c-bad);-webkit-mask-image:var(--fb-ico-bad);-webkit-mask-image:var(--fb-ico-bad);mask-image:var(--fb-ico-bad)}.tap-row{gap:8px;display:grid}.tap-pad{touch-action:manipulation;border-radius:14px;min-height:96px;font-size:22px}.tap-pad.hit{background:var(--key-hl);color:var(--key-on-hl)}.tap-count{font-family:var(--f-text);font-variant-numeric:tabular-nums;min-height:1.4em;margin:0;font-weight:700}.staff{max-width:100%;overflow-x:auto}.staff svg{max-width:100%;height:auto}.task-prog{font-family:var(--f-text);font-variant-numeric:tabular-nums;align-self:center;min-width:44px;font-size:13px;font-weight:700}.step-nav{border-top:1px solid var(--c-line);padding-top:10px}a.btn{color:var(--c-ink);text-decoration:none}.chain{flex-wrap:wrap;align-items:baseline;gap:4px 6px;margin:0;font-size:17px;display:flex}.chain .inc{font-family:var(--f-text);font-variant-numeric:tabular-nums;color:var(--c-accent);font-size:12px;font-weight:700}.roots{grid-template-columns:repeat(auto-fill,minmax(56px,1fr))}.roots.typed{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}.degs.seqs{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.deg[aria-pressed=true]{background:var(--c-accent);border-color:var(--c-accent);color:var(--c-on-accent)}.ivs{grid-template-columns:repeat(auto-fill,minmax(112px,1fr))}.ivs .deg b{font-family:var(--f-text);font-size:15px}.ivs .deg span{color:var(--c-muted);font-size:12px}.formula{font-size:var(--fs-body);margin:0}.formula b{font-family:var(--f-display);margin-right:4px;font-size:20px}.fnl{color:var(--c-muted);font-size:11px}.fns{grid-template-columns:repeat(auto-fill,minmax(108px,1fr))}.deg[aria-pressed=true] .fnl,.deg[aria-pressed=true] small{color:var(--c-on-accent)}.sigs{grid-template-columns:repeat(auto-fill,minmax(92px,1fr))}.sigs .deg b{font-family:var(--f-text);font-size:14px}.quiz{gap:14px;margin:0;padding-left:22px;display:grid}.qitem{gap:8px;display:grid}.qq{margin:0;font-weight:600}.opts{flex-wrap:wrap;gap:6px;display:flex}.opt{border:1px solid var(--c-line);background:var(--c-bg);color:var(--c-ink);font:inherit;cursor:pointer;text-align:left;border-radius:10px;padding:7px 12px;font-size:14px}.opt:hover:not(:disabled){border-color:var(--c-accent)}.opt:disabled{cursor:default;opacity:.55}.opt.ok{background:var(--c-ok-tint);border-color:var(--c-ok);color:var(--c-ink);opacity:1;font-weight:700}.opt.ok:before{content:"✓ ";color:var(--c-ok-text)}.opt.no{text-decoration:line-through}.qfb{font-size:var(--fs-body);min-height:1.6em;margin:0}.qfb.bad{color:var(--c-bad-text)}
