:root{--bg:#06070a;--bg-2:#0b0d12;--ink:#eef1f5;--ink-2:#eef1f5b8;--ink-3:#eef1f573;--ink-4:#eef1f52e;--line:#dce6ff14;--line-2:#dce6ff29;--glass:#1012189e;--glass-2:#1a1d26b3;--led:#76f5c3;--amber:#ffb46a;--hot:#ff5a3c;--blue:#6ad7ff;--pink:#ff7aa8;--violet:#b89cff;--gold:#ffd66a;--accent:var(--blue);--serif:"Instrument Serif", ui-serif, Georgia, serif;--ui:"Geist", ui-sans-serif, system-ui, -apple-system, sans-serif;--mono:"Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--ease:cubic-bezier(.22, 1, .36, 1);--r:16px;--col:720px;--wide:1160px;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:80px}body{background:var(--bg);color:var(--ink);font:400 16.5px/1.65 var(--ui);-webkit-font-smoothing:antialiased;margin:0;overflow-x:hidden}body:after{content:"";pointer-events:none;z-index:-1;background:radial-gradient(60% 60% at 30% 20%, color-mix(in srgb, var(--accent) 12%, transparent), transparent 70%), radial-gradient(40% 50% at 80% 0%, #b89cff14, transparent 70%);height:70vh;position:fixed;inset:-20% -10% auto}a{color:inherit}img,svg,canvas{max-width:100%;display:block}button,input,select{font:inherit;color:inherit}::selection{background:color-mix(in srgb, var(--accent) 40%, transparent);color:#fff}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.mono{font-family:var(--mono)}.serif{font-family:var(--serif);font-weight:400}.dim{color:var(--ink-3)}.topbar{z-index:50;-webkit-backdrop-filter:blur(18px)saturate(1.3);border-bottom:1px solid var(--line);transition:transform .5s var(--ease);background:#08090db8;align-items:center;gap:14px;padding:11px clamp(14px,2.4vw,28px);display:flex;position:fixed;top:0;left:0;right:0}.topbar.hide{transform:translateY(-120%)}html.intro:not(.ready) .topbar{transform:translateY(-140%)}.brand{white-space:nowrap;align-items:center;gap:10px;text-decoration:none;display:flex}.brand-led{background:var(--led);width:9px;height:9px;box-shadow:0 0 12px var(--led);border-radius:50%;animation:2.4s ease-in-out infinite pulse}.brand b{font:600 14px/1 var(--mono);letter-spacing:-.02em}@keyframes pulse{50%{opacity:.45;box-shadow:0 0 4px var(--led)}}.top-links{align-items:center;gap:4px;margin-left:auto;display:flex}.top-links a,.search-btn{font:500 11.5px/1 var(--mono);letter-spacing:.05em;color:var(--ink-3);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:999px;align-items:center;gap:8px;padding:7px 12px;text-decoration:none;transition:color .2s,border-color .2s,background .2s;display:flex}.top-links a:hover,.top-links a[aria-current=page]{color:var(--ink);border-color:var(--line-2)}.search-btn{border-color:var(--line-2);color:var(--ink-2);min-width:190px}.search-btn:hover{background:var(--glass-2);color:var(--ink)}.search-btn kbd{font:500 10px/1 var(--mono);border:1px solid var(--line-2);color:var(--ink-3);border-radius:6px;margin-left:auto;padding:3px 6px}.progress{transform-origin:0;background:linear-gradient(90deg, var(--accent), var(--violet));z-index:60;width:100%;height:2px;position:fixed;top:0;left:0;transform:scaleX(0)}@media (width<=760px){.top-links a.hide-sm{display:none}.search-btn{min-width:0}.search-btn span,.search-btn kbd{display:none}}.grain{z-index:40;pointer-events:none;opacity:.045;will-change:transform;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:1.2s steps(6,end) infinite grain;position:fixed;inset:-50%}@keyframes grain{0%{transform:translate(0)}33%{transform:translate(-47px,31px)}66%{transform:translate(29px,-53px)}to{transform:translate(0)}}.search-dlg{z-index:90;backdrop-filter:blur(6px);background:#03040699;place-items:start center;padding:10vh 16px 16px;display:none;position:fixed;inset:0}.search-dlg.open{display:grid}.search-panel{border:1px solid var(--line-2);background:#0e1016f5;border-radius:18px;flex-direction:column;width:min(680px,100%);max-height:72vh;display:flex;overflow:hidden;box-shadow:0 30px 80px #0009}.search-panel input{border:0;border-bottom:1px solid var(--line);background:0 0;outline:none;width:100%;padding:18px 20px;font-size:17px}.search-panel input::placeholder{color:var(--ink-3)}.search-results{padding:8px;overflow-y:auto}.search-results a{border-radius:12px;padding:12px 14px;text-decoration:none;display:block}.search-results a:hover,.search-results a.sel{background:var(--glass-2)}.search-results b{font-size:15px;font-weight:600;display:block}.search-results small{color:var(--ink-3);font:500 11px/1.4 var(--mono);letter-spacing:.04em;margin-bottom:2px;display:block}.search-results p{color:var(--ink-2);margin:4px 0 0;font-size:13.5px;line-height:1.5}.search-results mark{background:color-mix(in srgb, var(--accent) 30%, transparent);color:#fff;border-radius:3px;padding:0 2px}.search-empty{color:var(--ink-3);padding:22px;font-size:14px}main{padding-top:64px}.wrap{max-width:var(--wide);margin:0 auto;padding:0 clamp(16px,4vw,40px)}.eyebrow{font:500 11.5px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}h1,h2,h3{letter-spacing:-.02em;line-height:1.15}h1.display{font:400 clamp(44px, 7vw, 92px)/.98 var(--serif);letter-spacing:-.02em;margin:18px 0 20px}h1.display em{color:var(--accent);font-style:italic}.split .w{vertical-align:top;margin-bottom:-.1em;padding-bottom:.1em;display:inline-block;overflow:hidden}.split .w>span{transition:transform .9s var(--ease), opacity .75s var(--ease);transition-delay:calc(var(--i) * 35ms);opacity:0;display:inline-block;transform:translateY(105%)}.split.in .w>span{opacity:1;transform:none}.lede{color:var(--ink-2);max-width:680px;font-size:clamp(17px,1.6vw,20px)}.pill{border:1px solid var(--line-2);font:500 11px/1.4 var(--mono);color:var(--ink-2);letter-spacing:.04em;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;display:inline-flex}.pill i{background:var(--c,var(--led));border-radius:50%;width:6px;height:6px}.footer{border-top:1px solid var(--line);color:var(--ink-3);margin-top:120px;padding:36px 0 60px;font-size:13px}.footer p{margin:0}.footer-credit{border-top:1px solid var(--line);font:500 12px/1.4 var(--mono);letter-spacing:.03em;flex-wrap:wrap;align-items:center;gap:8px 22px;padding-top:18px;display:flex;margin-top:18px!important}.footer-credit b{color:var(--ink);font-weight:600}.footer-credit a{color:var(--ink-2);border-bottom:1px solid #0000;text-decoration:none;transition:color .2s,border-color .2s}.footer-credit a:hover{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 60%, transparent)}.lesson{grid-template-columns:240px minmax(0, var(--col));justify-content:center;gap:56px;padding:48px clamp(16px,4vw,40px) 0;display:grid}.toc{align-self:start;max-height:calc(100vh - 110px);padding-right:6px;font-size:13px;position:sticky;top:88px;overflow-y:auto}.toc .toc-mod{font:500 11px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-bottom:10px}.toc a{border-left:1px solid var(--line-2);color:var(--ink-3);padding:5px 0 5px 12px;text-decoration:none;transition:color .2s,border-color .2s;display:block}.toc a.d3{padding-left:24px;font-size:12.5px}.toc a:hover{color:var(--ink)}.toc a.on{color:var(--ink);border-color:var(--accent)}@media (width<=1000px){.lesson{grid-template-columns:minmax(0,1fr)}.toc{display:none}}.lesson-head{margin-bottom:40px}.lesson-head h1{font:400 clamp(40px, 5.4vw, 66px)/1.02 var(--serif);margin:14px 0 16px}.lesson-head .q{color:var(--ink-2);font-size:19px}.meta-row{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.prose{font-size:16.5px}.prose h2{font:400 36px/1.1 var(--serif);letter-spacing:-.01em;margin:72px 0 16px}.prose h2 .num{font:500 12px/1 var(--mono);color:var(--accent);letter-spacing:.12em;margin-bottom:10px;display:block}.prose h3{margin:36px 0 10px;font-size:19px;font-weight:600}.prose p,.prose li{color:var(--ink-2)}.prose strong{color:var(--ink);font-weight:600}.prose a{color:var(--ink);text-decoration-color:color-mix(in srgb, var(--accent) 60%, transparent);text-underline-offset:3px}.prose a:hover{text-decoration-color:var(--accent)}.prose ul,.prose ol{padding-left:22px}.prose li{margin:6px 0}.prose li::marker{color:var(--ink-4)}.prose code{font:500 .86em var(--mono);border:1px solid var(--line);color:var(--ink);background:#ffffff0f;border-radius:6px;padding:1px 6px}.prose pre{border:1px solid var(--line);border-radius:14px;padding:16px 18px;font-size:13.5px;line-height:1.6;overflow-x:auto;background:#0d1017!important}.prose pre code{font-size:inherit;background:0 0;border:0;padding:0}.prose table{border-collapse:collapse;width:100%;margin:20px 0;font-size:14px;display:block;overflow-x:auto}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:9px 12px}.prose th{font:500 11px/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.prose td{color:var(--ink-2)}.prose blockquote{border-left:2px solid var(--accent);color:var(--ink-2);margin:24px 0;padding:4px 0 4px 18px}.prose hr{border:0;border-top:1px solid var(--line);margin:56px 0}.callout{border:1px solid var(--line-2);background:var(--glass);border-radius:14px;margin:26px 0;padding:16px 18px;font-size:15px}.callout>b:first-child{font:600 11px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--c,var(--accent));margin-bottom:8px;display:block}.callout p{margin:6px 0}.callout.plain{--c:var(--led)}.callout.deep{--c:var(--violet)}.callout.measured{--c:var(--gold)}.callout.warn{--c:var(--hot)}.callout.source{--c:var(--blue)}details.deeper{border:1px solid var(--line-2);background:var(--glass);border-radius:14px;margin:22px 0}details.deeper>summary{cursor:pointer;font:600 12px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--violet);align-items:center;gap:10px;padding:14px 18px;list-style:none;display:flex}details.deeper>summary::-webkit-details-marker{display:none}details.deeper>summary:before{content:"+";transition:transform .25s var(--ease);font-size:16px}details.deeper[open]>summary:before{transform:rotate(45deg)}details.deeper>div{padding:0 18px 8px}.term{border-bottom:1px dotted color-mix(in srgb, var(--accent) 70%, transparent);cursor:help;color:var(--ink);text-decoration:none;position:relative}.tip{z-index:80;border:1px solid var(--line-2);width:300px;font:400 13.5px/1.5 var(--ui);color:var(--ink-2);pointer-events:none;opacity:0;background:#101219fa;border-radius:12px;padding:12px 14px;transition:opacity .15s,transform .15s;position:absolute;transform:translateY(4px);box-shadow:0 18px 50px #0000008c}.tip.show{opacity:1;transform:none}.tip b{color:var(--ink);margin-bottom:4px;font-size:14px;display:block}.fig{border:1px solid var(--line-2);background:linear-gradient(#14171fcc,#0b0d12cc);border-radius:20px;margin:36px -40px;padding:22px;position:relative;box-shadow:0 20px 60px #00000059}.fig:after{content:"";pointer-events:none;opacity:0;background:linear-gradient(90deg, transparent, var(--accent), transparent);width:28%;height:1px;position:absolute;top:0;left:-30%}.fig.in:after{animation:fig-sweep .95s var(--ease) .2s both}@keyframes fig-sweep{15%{opacity:.85}to{opacity:0;transform:translate(470%)}}.fig-reveal.rv{opacity:0;filter:blur(8px);transition:opacity .85s var(--ease), transform .85s var(--ease), filter .85s var(--ease);transform:translateY(18px)}.fig-reveal.rv.in{opacity:1;filter:none;transform:none}@media (width<=860px){.fig{margin:32px 0;padding:16px}}.fig-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px;display:flex}.fig-head b{font:600 11.5px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.fig-head span{color:var(--ink-3);font-size:13px}.fig-cap{color:var(--ink-3);margin-top:14px;font-size:13px;line-height:1.55}.fig-cap a{color:var(--ink-2)}.seg{border:1px solid var(--line);background:#ffffff0a;border-radius:12px;flex-wrap:wrap;gap:4px;padding:4px;display:inline-flex}.seg button{font:500 12px/1 var(--mono);color:var(--ink-3);cursor:pointer;background:0 0;border:0;border-radius:9px;padding:7px 11px;transition:background .2s,color .2s}.seg button:hover{color:var(--ink)}.seg button.on{background:var(--glass-2);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-2)}.field{font:500 12px/1 var(--mono);color:var(--ink-3);align-items:center;gap:10px;display:flex}.field input[type=text],.field input[type=number]{border:1px solid var(--line-2);width:130px;font:500 13px/1 var(--mono);color:var(--ink);-moz-appearance:textfield;background:#ffffff0a;border-radius:10px;outline:none;padding:9px 12px}.field input::-webkit-outer-spin-button,.field input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.field input:focus{border-color:var(--accent)}input[type=range]{-webkit-appearance:none;appearance:none;cursor:pointer;background:0 0;width:180px;height:22px}input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(90deg, var(--accent) var(--p,50%), #ffffff1f var(--p,50%));border-radius:4px;height:4px}input[type=range]::-moz-range-track{background:#ffffff1f;border-radius:4px;height:4px}input[type=range]::-moz-range-progress{background:var(--accent);border-radius:4px;height:4px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 35%, transparent);background:#fff;border-radius:50%;margin-top:-6px}input[type=range]::-moz-range-thumb{width:16px;height:16px;box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 35%, transparent);background:#fff;border:0;border-radius:50%}.row{flex-wrap:wrap;align-items:center;gap:12px 18px;display:flex}.stat{border:1px solid var(--line);background:#ffffff08;border-radius:12px;flex-direction:column;gap:4px;min-width:120px;padding:12px 14px;display:flex}.stat small{font:500 10.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}.stat b{font:600 20px/1.1 var(--mono)}.stats{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-top:14px;display:grid}.tbl{border-collapse:collapse;width:100%;font:500 12.5px/1.45 var(--mono)}.tbl th,.tbl td{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:7px 10px}.tbl th{color:var(--ink-3);letter-spacing:.1em;text-transform:uppercase;font-size:10.5px;font-weight:500}.tbl tr.click{cursor:pointer}.tbl tr.click:hover td,.tbl tr.on td{background:#ffffff0a}.tbl td.r,.tbl th.r{text-align:right}.scroll-x{overflow-x:auto}.rv{opacity:0;transition:opacity .8s var(--ease), transform .8s var(--ease);transform:translateY(14px)}.rv.in{opacity:1;transform:none}.grid .card.rv{opacity:0;transition:opacity .8s var(--ease) var(--d,0s), transform .8s var(--ease) var(--d,0s), border-color .25s, background .25s;transform:translateY(14px)}.grid .card.rv.in{opacity:1;transform:none}.grid .card.rv.in:hover{transition-delay:0s;transform:translateY(-3px)}.grid .card.planned.rv.in{opacity:.72}.grid .card.planned.rv.in:hover{opacity:1}.card:after{content:"";z-index:0;pointer-events:none;opacity:0;background:radial-gradient(circle at var(--mx,50%) var(--my,50%), color-mix(in srgb, var(--c,var(--accent)) 16%, transparent), transparent 46%);transition:opacity .25s;position:absolute;inset:0}.card:hover:after{opacity:1}.card>*{z-index:1;position:relative}@media (prefers-reduced-motion:reduce){.rv,.grid .card.rv,.grid .card.rv.in,.grid .card.rv.in:hover,.grid .card.planned.rv.in,.grid .card.planned.rv.in:hover{opacity:1;transition:none;transform:none}}.curtain{display:none}html.intro .curtain{z-index:100;background:radial-gradient(ellipse at 50% 60%, color-mix(in srgb, var(--accent) 7%, transparent), transparent 55%), #050506;clip-path:inset(0);place-items:center;transition:clip-path 1.15s cubic-bezier(.76,0,.24,1);display:grid;position:fixed;inset:0}html.intro .curtain.lift{clip-path:inset(0 0 100%)}.curtain-inner{justify-items:center;gap:22px;width:min(78vw,440px);transition:transform 1.15s cubic-bezier(.76,0,.24,1),opacity .8s;display:grid}.curtain.lift .curtain-inner{opacity:0;transform:translateY(-18vh)}.curtain-count{letter-spacing:-.08em;font-variant-numeric:tabular-nums;font-size:clamp(56px,9vw,92px);font-weight:500;line-height:1}.curtain-progress{background:var(--line-2);width:100%;height:1px;overflow:hidden}.curtain-progress i{transform-origin:0;background:linear-gradient(90deg, transparent, var(--accent));height:100%;box-shadow:0 0 12px var(--accent);animation:1.4s cubic-bezier(.65,0,.35,1) both curtain-progress;display:block}@keyframes curtain-progress{to{transform:scaleX(1)}}.lesson-foot{gap:14px;margin-top:80px;display:grid}.done-btn{border:1px solid var(--line-2);background:var(--glass);cursor:pointer;font:600 13px/1 var(--mono);letter-spacing:.04em;border-radius:12px;justify-self:start;align-items:center;gap:10px;padding:12px 18px;display:inline-flex}.done-btn i{border:1.5px solid var(--ink-3);border-radius:5px;place-items:center;width:16px;height:16px;font-size:11px;font-style:normal;display:grid}.done-btn.on{border-color:color-mix(in srgb, var(--led) 50%, transparent);color:var(--led)}.done-btn.on i{background:var(--led);border-color:var(--led);color:#052}.pn{grid-template-columns:1fr 1fr;gap:12px;display:grid}.pn a{border:1px solid var(--line);border-radius:14px;padding:16px 18px;text-decoration:none;transition:border-color .2s,background .2s;display:block}.pn a:hover{border-color:var(--line-2);background:var(--glass)}.pn a small{font:500 11px/1 var(--mono);color:var(--ink-3);letter-spacing:.08em;margin-bottom:6px;display:block}.pn a.next{text-align:right}.fig [data-num],.fig .bump{text-shadow:0 0 #0000;transition:top .18s var(--ease), text-shadow .25s var(--ease), color .25s var(--ease);position:relative;top:0}.fig [data-num].bump,.fig .bump{color:var(--accent);text-shadow:0 0 14px color-mix(in srgb, var(--accent) 60%, transparent);animation:figure-number-bump .32s var(--ease) both;top:-2px}@keyframes figure-number-bump{0%{translate:0 2px}to{translate:0}}@media (prefers-reduced-motion:reduce){.grain{animation:none}.card:after,.fig:after{transition:none;display:none;animation:none!important}.card.rv,.card.rv:not(.in),.card.rv.in:hover{opacity:1;transition:none;transform:none}.curtain{display:none!important}.topbar{transition:none;transform:none!important}.fig [data-num],.fig [data-num].bump,.fig .bump{text-shadow:none;transition:none;animation:none;top:0}.split .w>span{opacity:1;transition:none;transform:none}.fig-reveal.rv{opacity:1;filter:none;transition:none;transform:none}}
