.muted{color:var(--ink-3)}.learn-head h1{max-width:18ch}.lh-stats{display:flex;flex-wrap:wrap;gap:.4rem 1.6rem;margin-top:1.4rem;color:var(--ink-2);font-size:.92rem}.lh-stats b{font:600 1.05rem var(--f-display);color:var(--ink);margin-right:.25em}.lh-progress b{color:var(--teal)}.lib-intro{display:grid;grid-template-columns:minmax(0,1.6fr)minmax(0,1fr);gap:28px 56px;align-items:start}.lib-intro h2{font-size:1.35rem;margin:0 0 .8rem}.li-cover p{color:var(--ink-2)}.li-cover p:first-of-type{color:var(--ink)}.li-author{padding:22px 24px;border:1px solid var(--line);border-radius:14px;background:var(--card)}.li-author p{color:var(--ink-2);font-size:.94rem;margin:0 0 .8em}.li-author p:last-child{margin-bottom:0}.peek-grid{display:grid;grid-template-columns:minmax(0,1.55fr)minmax(0,1fr);gap:28px 44px;align-items:start}.peek{display:grid;grid-template-columns:210px minmax(0,1fr);border:1px solid var(--line);border-radius:16px;background:var(--bg);overflow:hidden;box-shadow:0 1px 0 var(--line),0 18px 40px -28px rgba(12,18,34,.35)}.pk-rail{position:relative;display:flex;flex-direction:column;gap:2px;padding:18px 12px 18px 16px;border-right:1px solid var(--line);background:var(--bg-2);font-size:.76rem;color:var(--ink-3)}.pk-rail>span:not(.pk-n){padding:4px 8px;border-radius:7px;line-height:1.3}.pk-rail .pk-book{font:600 .8rem var(--f-display);color:var(--ink);padding-bottom:8px;padding-right:30px!important}.pk-rail .sub{padding-left:20px}.pk-rail .on{color:var(--ink)}.pk-rail .sub.on{background:color-mix(in oklab,var(--tone) 14%,transparent);color:var(--ink);font-weight:600}.pk-body{padding:20px 24px 22px 54px;display:grid;gap:14px;min-width:0}.pk-step{position:relative;min-width:0}.pk-step h3{margin:0 0 .5rem;font-size:1.12rem}.pk-step p{margin:0;font-size:.92rem;color:var(--ink-2)}.pk-step .eqcard{margin:0}.pk-fig{margin:0}.pk-fig figcaption{font-size:.82rem;color:var(--ink-3);margin-top:.4rem}.pk-end{display:flex;flex-wrap:wrap;gap:8px}.pk-end>span:not(.pk-n){padding:6px 12px;border-radius:999px;border:1px solid var(--line);font-size:.8rem;color:var(--ink-2);background:var(--card)}.pk-n{position:absolute;left:-38px;top:0;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:var(--bg);font:600 .75rem var(--f-display)}.pk-rail .pk-n{left:auto;right:10px;top:14px}.pk-end .pk-n{top:4px}.peek-notes{list-style:none;counter-reset:pk;margin:0;padding:0;display:grid;gap:18px}.peek-notes li{counter-increment:pk;position:relative;padding-left:38px;color:var(--ink-2);font-size:.94rem;line-height:1.55}.peek-notes li::before{content:counter(pk);position:absolute;left:0;top:1px;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:var(--bg);font:600 .75rem var(--f-display)}.peek-notes b{color:var(--ink)}.start-h{margin:56px 0 16px;font-size:1.2rem}.start-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.card.start{display:flex;flex-direction:column;gap:.45rem;color:var(--ink);text-decoration:none}.card.start b{font:600 1rem var(--f-display)}.card.start span{color:var(--ink-2);font-size:.9rem}@media(max-width:1000px){.lib-intro,.peek-grid{grid-template-columns:minmax(0,1fr)}.start-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.peek{grid-template-columns:minmax(0,1fr)}.pk-rail{border-right:0;border-bottom:1px solid var(--line)}.pk-body{padding:18px 16px 18px 50px}.pk-n{left:-36px}.start-grid{grid-template-columns:minmax(0,1fr)}}.lh-cta{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:1.6rem}.learn-how{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.learn-how>div{padding:4px 0}.learn-how h3{margin:.7rem 0 .35rem;font-size:1.06rem}.learn-how p{color:var(--ink-2);font-size:.94rem;margin:0}.lhw-n{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:9px;background:var(--accent-soft);color:var(--accent);font:600 .9rem var(--f-display)}.lp-route{list-style:none;padding:0;margin:0 0 40px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;counter-reset:none}.lp-route a{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto auto;column-gap:10px;padding:14px 14px 12px;border-radius:12px;background:var(--card);border:1px solid var(--line);color:var(--ink);text-decoration:none;height:100%;position:relative;transition:border-color .2s,transform .2s}.lp-route a:hover{border-color:var(--tone);transform:translateY(-2px);text-decoration:none}.lp-route li:not(:last-child) a::after{content:"";position:absolute;right:-9px;top:50%;width:8px;height:2px;background:var(--line-2)}.lp-rn{grid-row:1/3;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:color-mix(in oklab,var(--tone) 14%,transparent);color:var(--tone);font:600 .9rem var(--f-display)}.lp-rt{font:600 .95rem/1.25 var(--f-display)}.lp-rs{font-size:.76rem;color:var(--ink-3)}.lp-bar{grid-column:1/-1;height:4px;border-radius:4px;background:var(--line);margin-top:10px;overflow:hidden}.lp-bar i{display:block;height:100%;width:0;background:var(--tone);border-radius:4px;transition:width .4s}.lp-track{display:grid;grid-template-columns:minmax(0,340px)minmax(0,1fr);gap:20px 48px;padding:36px 0;border-top:1px solid var(--line);scroll-margin-top:80px}.lp-th{display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;align-content:start;position:sticky;top:90px}.lp-icon{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:color-mix(in oklab,var(--tone) 13%,transparent);color:var(--tone)}.lt-icon{width:24px;height:24px}.lp-meta{margin:0 0 .2rem;font:600 .78rem var(--f-body);color:var(--tone)}.lp-th h3{font-size:1.32rem;margin:0 0 .5rem}.lp-th p:last-child{color:var(--ink-2);font-size:.93rem;margin:0}.lp-lessons{list-style:none;margin:0;padding:0;display:grid;gap:10px}.lp-lesson{display:grid;grid-template-columns:54px minmax(0,1fr)28px;gap:14px;align-items:start;padding:16px 18px;border-radius:12px;background:var(--card);border:1px solid var(--line);color:var(--ink);text-decoration:none;transition:border-color .2s,box-shadow .2s}.lp-lesson:hover{border-color:color-mix(in oklab,var(--tone) 55%,var(--line));box-shadow:var(--shadow);text-decoration:none}.lp-num{font:600 1.05rem var(--f-mono);color:var(--tone);padding-top:1px}.lp-body{display:grid;gap:.25rem;min-width:0}.lp-body b{font:600 1.02rem/1.3 var(--f-display)}.lp-body>span:not(.lp-tags){color:var(--ink-2);font-size:.9rem;line-height:1.5}.lp-tags{display:flex;flex-wrap:wrap;gap:.35rem .8rem;align-items:center;font-size:.78rem;color:var(--ink-3);margin-top:.25rem}.lp-lab{display:inline-flex;align-items:center;gap:.3em}.lp-lab svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.lp-done{width:26px;height:26px;border-radius:50%;border:1.5px solid var(--line-2);display:grid;place-items:center}.lp-done svg{width:15px;height:15px;fill:none;stroke:transparent;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.is-done .lp-done{background:var(--teal);border-color:var(--teal)}.is-done .lp-done svg{stroke:#fff}.lvl{display:inline-block;font:600 .7rem/1 var(--f-body);padding:.38em .6em;border-radius:6px;letter-spacing:.01em}.lvl-foundation{background:color-mix(in oklab,var(--teal) 14%,transparent);color:var(--teal)}.lvl-core{background:color-mix(in oklab,var(--accent) 14%,transparent);color:var(--accent)}.lvl-advanced{background:color-mix(in oklab,var(--rose) 14%,transparent);color:var(--rose)}.lq-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.lq h3{margin-top:0}.learn-about{margin-top:48px}@media(max-width:1000px){.lp-route{grid-template-columns:repeat(2,minmax(0,1fr))}.lp-route li:not(:last-child) a::after{display:none}.lp-track{grid-template-columns:minmax(0,1fr)}.lp-th{position:static}.lq-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.learn-how,.lq-grid{grid-template-columns:minmax(0,1fr)}.lp-lesson{grid-template-columns:40px minmax(0,1fr)26px;padding:14px;gap:10px}}.lesson-head{padding-block:clamp(40px,5vw,70px)28px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,color-mix(in oklab,var(--tone) 6%,var(--bg)),var(--bg))}.crumbs{display:flex;flex-wrap:wrap;gap:.5rem;font-size:.84rem;color:var(--ink-3)}.crumbs a{color:var(--ink-2)}.crumbs a:last-child{color:var(--tone);font-weight:500}.lesson-head h1{font-size:clamp(2rem,4.2vw,3.1rem);margin:.8rem 0 .6rem;max-width:22ch}.lesson-meta{list-style:none;padding:0;margin:1.2rem 0 0;display:flex;flex-wrap:wrap;gap:.5rem 1.4rem;font-size:.88rem;color:var(--ink-2);align-items:center}.lesson-meta b{color:var(--ink);font-weight:600}.prereq{margin:.9rem 0 0;font-size:.88rem;color:var(--ink-3)}.lesson-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:56px;align-items:start;padding-top:40px;padding-bottom:24px}.course-nav{position:sticky;top:84px;max-height:calc(100vh - 100px);overflow-y:auto;font-size:.86rem;padding-right:4px;scrollbar-width:thin}.cn-box summary{cursor:pointer;font:600 .9rem var(--f-display);color:var(--ink);padding:.2rem 0 .8rem;list-style:none;display:flex;justify-content:space-between;align-items:center}.cn-box summary::-webkit-details-marker{display:none}.cn-prog{font:500 .76rem var(--f-mono);color:var(--ink-3)}.cn-track{margin-bottom:1rem}.cn-th{display:flex;align-items:center;gap:.5rem;margin:0 0 .35rem;font:600 .78rem var(--f-body);color:var(--ink-3)}.cn-th span{width:18px;height:18px;border-radius:5px;display:inline-grid;place-items:center;background:color-mix(in oklab,var(--tone) 15%,transparent);color:var(--tone);font-size:.7rem}.cn-track.is-cur .cn-th{color:var(--ink)}.cn-track ol,.cn-track ul{list-style:none;margin:0;padding:0 0 0 9px;border-left:1px solid var(--line)}.cn-track>:is(ol,ul)>li>a{display:grid;grid-template-columns:14px minmax(0,1fr);gap:6px;padding:.32em .5em .32em .7em;color:var(--ink-2);border-radius:0 7px 7px 0;margin-left:-1px;border-left:2px solid transparent;line-height:1.35}.cn-track>:is(ol,ul)>li>a:hover{color:var(--ink);background:var(--bg-2);text-decoration:none}.cn-track>:is(ol,ul)>li>a[aria-current=page]{color:var(--ink);background:color-mix(in oklab,var(--tone) 9%,transparent);border-left-color:var(--tone);font-weight:500}.cn-n{width:6px;height:6px;margin-top:.5em;border-radius:50%;border:1.5px solid var(--line-2)}.cn-track li a[aria-current=page] .cn-n{border-color:var(--tone);background:var(--tone)}.cn-track li a.is-done .cn-n{border-color:var(--teal);background:var(--teal)}.cn-toc{padding:.2rem 0 .4rem 1.6rem}.cn-toc nav ul{list-style:none;margin:0;padding:0}.cn-toc nav ul ul{display:none}.cn-toc a{display:block;color:var(--ink-3);font-size:.8rem;padding:.18em 0;line-height:1.35}.cn-toc a:hover{color:var(--ink)}.lesson-body{max-width:none}.lesson-body>*{max-width:72ch}.lesson-body>.lw,.lesson-body>.pycell,.lesson-body>.wide,.lesson-body>.highlight,.lesson-body>table,.lesson-body>.quiz,.lesson-body>.callout{max-width:880px}.lesson-body h2{scroll-margin-top:84px}.lesson-body h2:first-child{margin-top:0}.lesson-body .katex{font-size:1.06em}.lesson-body .katex-display,.chapter .katex-display{margin:1.2em 0;overflow-x:auto;overflow-y:hidden;max-width:100%;position:relative;padding:.2em 0}.lesson-body .katex{position:relative}.lesson-body .refs{overflow-wrap:anywhere}.lesson-body ol.refs,.lesson-body .refs ol{font-size:.9rem;color:var(--ink-2);padding-left:1.4rem}.lesson-body ol.refs li,.lesson-body .refs li{margin:.45em 0}.lesson-finish{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-top:3rem;padding-top:1.6rem;border-top:1px solid var(--line)}.lesson-finish p{margin:0;font-size:.86rem}.lesson-pager{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:12px 0 64px}.lesson-pager a{display:grid;gap:.2rem;padding:16px 18px;border:1px solid var(--line);border-radius:12px;color:var(--ink);background:var(--card)}.lesson-pager a:hover{border-color:var(--tone);text-decoration:none}.lesson-pager small{color:var(--ink-3);font-size:.8rem}.lesson-pager span{font:600 1rem var(--f-display)}.lesson-pager .next{text-align:right;grid-column:2}@media(max-width:1100px){.lesson-layout{grid-template-columns:minmax(0,1fr);gap:24px;padding-top:24px}.course-nav{position:static;max-height:none;border:1px solid var(--line);border-radius:12px;padding:12px 14px 4px;background:var(--card)}.cn-box:not([open]) summary{padding-bottom:.5rem}}@media(max-width:640px){.lesson-pager{grid-template-columns:minmax(0,1fr)}.lesson-pager .next{grid-column:1}}.lesson-body .highlight,.lesson-body>pre{position:relative}.lesson-body pre{font-size:.8rem;line-height:1.62}.copy-btn{position:absolute;top:8px;right:8px;font:500 .72rem var(--f-body);padding:.35em .7em;border-radius:6px;border:1px solid rgb(255 255 255/.15);background:rgb(255 255 255/6%);color:#c9d1e6;cursor:pointer;opacity:0;transition:opacity .15s}.has-copy:hover .copy-btn,.copy-btn:focus-visible{opacity:1}@media(hover:none){.copy-btn{opacity:1}}.chroma .nv,.chroma .nx,.chroma .na{color:#c6d0ff}.chroma .o,.chroma .ow{color:#9aa8ff}.chroma .se,.chroma .sh,.chroma .sb{color:#8fd8b6}.chroma .kt,.chroma .kc{color:#ffb26b}.chroma .gp{color:#7a8399;user-select:none}.callout{margin:1.6em 0;padding:1rem 1.2rem;border-radius:12px;border:1px solid var(--line);background:var(--bg-2)}.callout .c-title{margin:0 0 .45rem;font:600 .86rem var(--f-display);letter-spacing:.005em;display:flex;align-items:center;gap:.5rem}.callout .c-title::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--c,var(--accent))}.callout>:last-child{margin-bottom:0}.callout p,.callout li{font-size:.97rem}.c-tip{--c:var(--accent)}.c-warn{--c:var(--rose);background:color-mix(in oklab,var(--rose) 6%,var(--bg));border-color:color-mix(in oklab,var(--rose) 22%,var(--line))}.c-practice{--c:var(--teal)}.c-key{--c:var(--gold);background:color-mix(in oklab,var(--gold) 7%,var(--bg));border-color:color-mix(in oklab,var(--gold) 25%,var(--line))}.c-math{--c:var(--violet)}.c-try{--c:var(--teal);background:color-mix(in oklab,var(--teal) 7%,var(--bg));border-color:color-mix(in oklab,var(--teal) 24%,var(--line))}.lw{margin:2em 0 2.2em;border:1px solid var(--line);border-radius:var(--lw-radius);background:var(--card);box-shadow:var(--shadow-sm);overflow:hidden}.lw-head{display:flex;align-items:center;gap:.7rem;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--bg-2)}.lw-head h4{margin:0;font:600 .95rem var(--f-display);letter-spacing:-.005em}.lw-tag{font:600 .66rem var(--f-body);padding:.35em .55em;border-radius:5px;background:color-mix(in oklab,var(--tone,var(--accent)) 15%,transparent);color:var(--tone,var(--accent));flex:none}.lw-body{padding:14px 16px 16px;display:grid;gap:12px;min-width:0}.lw>figcaption{padding:0 16px 14px;margin:0;font-size:.86rem;color:var(--ink-3);line-height:1.55}.lw-loading{margin:0;padding:40px 0;text-align:center;color:var(--ink-3);font-size:.9rem}.lw-cv{display:block;width:100%;touch-action:none;border-radius:8px}.lw-ctl{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:end}.lw-ctl.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px 18px}.lw-slider{display:grid;gap:4px;min-width:150px;flex:1 1 150px;font-size:.8rem;color:var(--ink-2);cursor:pointer}.lw-sl-top{display:flex;justify-content:space-between;gap:.6rem}.lw-slider output{font:600 .78rem var(--f-mono);color:var(--ink)}.lw-slider input{width:100%;accent-color:var(--tone,var(--accent));margin:0}.lw-seg-wrap{display:grid;gap:4px;font-size:.8rem;color:var(--ink-2)}.lw-seg{display:inline-flex;flex-wrap:wrap;gap:2px;padding:3px;border-radius:9px;background:var(--bg-2);border:1px solid var(--line)}.lw-seg button{all:unset;cursor:pointer;padding:.42em .75em;border-radius:6px;font:500 .8rem var(--f-body);color:var(--ink-2);white-space:nowrap}.lw-seg button:hover{color:var(--ink)}.lw-seg button[aria-pressed=true]{background:var(--card);color:var(--ink);box-shadow:var(--shadow-sm),inset 0 0 0 1px var(--line)}.lw-seg button:focus-visible,.lw-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.lw-btn{font:600 .82rem var(--f-body);padding:.55em .95em;border-radius:8px;border:1px solid var(--line-2);background:var(--card);color:var(--ink);cursor:pointer;white-space:nowrap}.lw-btn:hover{border-color:var(--ink-3)}.lw-btn.primary{background:var(--tone,var(--accent));border-color:transparent;color:#fff}:root[data-theme=dark] .lw-btn.primary{color:#0a0e19}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .lw-btn.primary{color:#0a0e19}}.lw-btn:disabled{opacity:.5;cursor:default}.lw-check{display:inline-flex;align-items:center;gap:.45rem;font-size:.84rem;color:var(--ink-2);cursor:pointer}.lw-check input{accent-color:var(--tone,var(--accent));margin:0}.lw-stats{display:flex;flex-wrap:wrap;gap:8px}.lw-stats>span{display:grid;gap:1px;padding:7px 11px;border-radius:9px;background:var(--bg-2);border:1px solid var(--line);min-width:92px}.lw-stats small{font-size:.7rem;color:var(--ink-3)}.lw-stats b{font:600 .9rem var(--f-mono);color:var(--ink)}.lw-stats .good b{color:var(--teal)}.lw-stats .bad b{color:var(--rose)}.lw-note{margin:0;font-size:.86rem;color:var(--ink-2);line-height:1.55}.lw-note.warn{color:var(--rose)}.lw-legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:.78rem;color:var(--ink-2)}.lw-legend>span{display:inline-flex;align-items:center;gap:.4rem}.lw-legend i{width:16px;height:3px;border-radius:2px;display:inline-block}.lw-row{display:grid;grid-template-columns:minmax(0,1.4fr)minmax(0,1fr);gap:14px;align-items:start}@media(max-width:720px){.lw-row{grid-template-columns:minmax(0,1fr)!important}.lw-body{padding:12px}}.quiz{margin:3rem 0 1rem;padding:1.4rem 1.4rem .6rem;border-radius:14px;border:1px solid var(--line);background:var(--bg-2)}.quiz h2,.quiz h3{margin:0 0 1rem!important;padding:0!important;border:0!important;font-size:1.3rem}.qz-list{padding-left:1.3rem;margin:0}.qz{margin:0 0 1.4rem}.qz-q p{margin:0 0 .6rem;font-weight:500;color:var(--ink)}.qz-opts{display:grid;gap:6px}.qz-o{display:grid;grid-template-columns:24px minmax(0,1fr);gap:.6rem;align-items:start;text-align:left;font:.95rem/1.5 var(--f-body);padding:.6em .8em;border-radius:9px;border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;transition:border-color .15s}.qz-o:hover:not(:disabled){border-color:var(--accent)}.qz-o p{margin:0}.qz-mark{width:22px;height:22px;border-radius:6px;display:grid;place-items:center;font:600 .74rem var(--f-mono);background:var(--bg-2);color:var(--ink-3);border:1px solid var(--line)}.qz-o.right{border-color:var(--teal);background:color-mix(in oklab,var(--teal) 9%,var(--card))}.qz-o.right .qz-mark{background:var(--teal);color:#fff;border-color:var(--teal)}.qz-o.wrong{border-color:var(--rose);background:color-mix(in oklab,var(--rose) 7%,var(--card))}.qz-o.wrong .qz-mark{background:var(--rose);color:#fff;border-color:var(--rose)}.qz-o:disabled{cursor:default}.qz-o:disabled:not(.right){opacity:.6}.qz-why{margin-top:.6rem;padding:.7rem .9rem;border-radius:9px;font-size:.92rem;background:color-mix(in oklab,var(--rose) 7%,var(--card));border:1px solid color-mix(in oklab,var(--rose) 20%,var(--line))}.qz-why.ok{background:color-mix(in oklab,var(--teal) 8%,var(--card));border-color:color-mix(in oklab,var(--teal) 24%,var(--line))}.qz-why::before{content:attr(data-prefix);font-weight:600}.qz-why p{display:inline;margin:0}.qz-score{margin:0 0 1rem;font-size:.95rem;color:var(--ink-2)}.pycell{margin:1.6em 0;border-radius:12px;overflow:hidden;border:1px solid #1e2945;background:#0d1324}.pc-bar{display:flex;align-items:center;gap:.5rem;padding:7px 8px 7px 14px;background:#121a31;border-bottom:1px solid #1e2945}.pc-lang{font:600 .74rem var(--f-mono);color:#9fb0e0}.pc-status{margin-left:auto;font-size:.74rem;color:#8892ad}.pc-btn{font:600 .76rem var(--f-body);padding:.45em .8em;border-radius:7px;border:1px solid #2b3a63;background:0 0;color:#c9d1e6;cursor:pointer}.pc-btn:hover{border-color:#5a6c9e}.pc-run{background:#3b50e0;border-color:#3b50e0;color:#fff}.pc-run:hover{background:#4b60f0}.pc-run:disabled{opacity:.6;cursor:wait}.pc-run kbd{font:500 .68rem var(--f-mono);opacity:.75;margin-left:.2em}.pc-code{display:block;width:100%;min-height:80px;resize:vertical;border:0;outline:0;padding:12px 16px;background:0 0;color:#e3e7f1;font:.82rem/1.62 var(--f-mono);tab-size:4;white-space:pre;overflow-x:auto}.pc-code:focus{background:#0f1630}.pc-out{margin:0;border-radius:0;border-top:1px dashed #26325a;background:#0a0f1e;color:#b9f0d6;font-size:.8rem;max-height:340px;overflow:auto}.pc-out.err{color:#ffb3c4}.term-wrap{display:grid;grid-template-columns:minmax(0,1.55fr)minmax(0,1fr);gap:14px;align-items:start}.term{height:430px;overflow-y:auto;background:#0b1020;border:1px solid #1d2745;border-radius:10px;padding:12px 14px;font:.8rem/1.55 var(--f-mono);color:#d7deef;cursor:text}.term-o{white-space:pre-wrap;word-break:break-word}.term-o.echo{color:#e9edf7;margin-top:4px}.term-o.err{color:#ff9db3}.term-o.info{color:#8fa2d8;margin-bottom:6px}.term-prompt{white-space:pre}.term-prompt b,.term-o.echo b{color:#6fe0b5;font-weight:500}.term-prompt i,.term-o.echo i{color:#8fb0ff;font-style:normal}.term-line{display:flex;align-items:baseline;margin-top:4px}.term-in{flex:1;min-width:0;background:0 0;border:0;outline:0;color:#fff;font:inherit;padding:0;caret-color:#6fe0b5}.term-side{display:grid;gap:10px;font-size:.85rem}.term-st{margin:0;font:600 .9rem var(--f-display);display:flex;justify-content:space-between}.term-st span{font:500 .8rem var(--f-mono);color:var(--teal)}.term-ms{margin:0;padding:0;list-style:none;counter-reset:ms;display:grid;gap:6px;max-height:378px;overflow-y:auto;padding-right:4px}.term-ms li{counter-increment:ms;position:relative;padding:8px 10px 8px 34px;border:1px solid var(--line);border-radius:9px;background:var(--bg-2);display:grid;gap:2px}.term-ms li::before{content:counter(ms);position:absolute;left:9px;top:9px;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font:600 .68rem var(--f-mono);background:var(--card);border:1px solid var(--line-2);color:var(--ink-3)}.term-ms li.done{border-color:color-mix(in oklab,var(--teal) 40%,var(--line));background:color-mix(in oklab,var(--teal) 7%,var(--card))}.term-ms li.done::before{content:"✓";background:var(--teal);border-color:var(--teal);color:#fff}.term-ms b{font-weight:600;color:var(--ink);font-size:.85rem}.term-ms span{color:var(--ink-2);font-size:.8rem;line-height:1.45}.term-ms code{font-size:.74rem;cursor:pointer;justify-self:start;margin-top:3px}.term-hint{all:unset;cursor:pointer;font-size:.74rem;color:var(--accent);justify-self:start;margin-top:2px}.term-hint:hover{text-decoration:underline}@media(max-width:860px){.term-wrap{grid-template-columns:minmax(0,1fr)}.term{height:340px}.term-ms{max-height:none}}.cx{display:grid;gap:10px}.cx-in,.cr-search{width:100%;font:500 .9rem var(--f-mono);padding:.7em .9em;border-radius:10px;border:1px solid var(--line-2);background:#0b1020;color:#e9edf7}.cr-search{background:var(--card);color:var(--ink);font-family:var(--f-body)}.cx-in:focus,.cr-search:focus{outline:2px solid var(--accent);outline-offset:1px}.cx-out{display:grid;gap:6px}.cx-i{display:grid;grid-template-columns:minmax(80px,max-content)minmax(0,1fr);gap:4px 14px;align-items:baseline;padding:6px 10px;border-left:3px solid var(--line-2);background:var(--bg-2);border-radius:0 8px 8px 0;font-size:.88rem;color:var(--ink-2)}.cx-i code{font-size:.82rem;background:0 0;border:0;padding:0;color:var(--ink);font-weight:600;word-break:break-all}.cx-cmd{border-left-color:var(--accent)}.cx-flag{border-left-color:var(--teal)}.cx-val{border-left-color:var(--gold)}.cx-op{border-left-color:var(--rose)}.cx-file,.cx-arg{border-left-color:var(--violet)}.cx-ex{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:.8rem;color:var(--ink-3)}.cx-ex button{all:unset;cursor:pointer;font:500 .74rem var(--f-mono);padding:.3em .6em;border-radius:6px;border:1px dashed var(--line-2);color:var(--ink-2)}.cx-ex button:hover{border-style:solid;color:var(--ink)}.cr-ctl{display:grid;gap:10px}.cr-wrap{max-height:560px;overflow:auto;border:1px solid var(--line);border-radius:10px}table.cr{width:100%;border-collapse:collapse;font-size:.86rem;display:table;margin:0}table.cr th{position:sticky;top:0;background:var(--bg-2);text-align:left;font-size:.74rem;color:var(--ink-3);padding:.6em .8em;border-bottom:1px solid var(--line);z-index:1}table.cr td{padding:.55em .8em;border-bottom:1px solid var(--line);vertical-align:top;color:var(--ink-2)}table.cr td:first-child{white-space:nowrap}table.cr td:first-child code{font-weight:600;color:var(--ink)}table.cr td small{display:block;color:var(--ink-3);font-size:.7rem;margin-top:2px}table.cr .cr-ex{cursor:pointer;font-size:.76rem;white-space:pre-wrap;word-break:break-word}table.cr .cr-ex:hover{border-color:var(--accent)}@media(max-width:640px){table.cr td:nth-child(2){min-width:160px}}.sl-grid{display:grid;grid-template-columns:minmax(0,.72fr)minmax(0,1.28fr);gap:16px;align-items:start}.sl-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px}.sl-form>.lw-seg-wrap,.sl-form>.sl-c{grid-column:1/-1}.sl-f{display:grid;gap:3px;font-size:.8rem;color:var(--ink-2)}.sl-f input{font:500 .86rem var(--f-mono);padding:.45em .6em;border-radius:8px;border:1px solid var(--line-2);background:var(--card);color:var(--ink);min-width:0}.sl-c{display:grid;gap:6px}.sl-right{display:grid;gap:8px;min-width:0}.sl-right .lw-btn{justify-self:start}.sl-out{margin:0;font-size:.74rem;line-height:1.55;max-height:470px;overflow:auto}@media(max-width:860px){.sl-grid{grid-template-columns:minmax(0,1fr)}}.fm-code{margin:0;font-size:.78rem}.lesson-body :not(pre)>code{overflow-wrap:anywhere}.course-map{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:56px}.course-card{display:grid;gap:10px;align-content:start;padding:20px 20px 16px;border-radius:16px;border:1px solid var(--line);background:var(--card);color:var(--ink);text-decoration:none;box-shadow:var(--shadow-sm);transition:border-color .2s,transform .2s,box-shadow .2s;border-top:3px solid var(--tone)}.course-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);text-decoration:none;border-color:color-mix(in oklab,var(--tone) 50%,var(--line));border-top-color:var(--tone)}.course-card>b{font:600 1.25rem/1.2 var(--f-display);letter-spacing:-.015em}.cc-top{display:flex;align-items:center;gap:10px}.cc-num{font:600 .78rem var(--f-body);color:var(--tone)}.cc-blurb{color:var(--ink-2);font-size:.92rem;line-height:1.55}.cc-parts{margin:0;padding:0;list-style:none;display:grid;gap:4px;counter-reset:cp}.cc-parts li{counter-increment:cp;font-size:.84rem;color:var(--ink-2);display:flex;gap:8px}.cc-parts li::before{content:counter(cp);width:18px;height:18px;flex:none;border-radius:5px;display:grid;place-items:center;font:600 .7rem var(--f-mono);background:color-mix(in oklab,var(--tone) 14%,transparent);color:var(--tone)}.cc-foot{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:center;font-size:.8rem;color:var(--ink-3);margin-top:4px}.cc-foot .lp-bar{margin:0}.course-arrows{order:4;grid-column:1/-1;width:100%;height:42px;margin:-6px 0;stroke:var(--line-2);stroke-width:1.6;fill:none;stroke-dasharray:4 4}.course-card.is-capstone{order:5;grid-column:1/-1;grid-template-columns:minmax(0,1fr)minmax(0,1fr);column-gap:32px}.course-card.is-capstone .cc-top,.course-card.is-capstone>b,.course-card.is-capstone .cc-blurb{grid-column:1}.course-card.is-capstone .cc-parts{display:none}.course-card.is-capstone .cc-foot{grid-column:2;grid-row:1/span 3;align-self:end}.lp-partno{font:600 1.1rem var(--f-display)}.course-head .crumbs span:last-child{color:var(--tone);font-weight:500}.course-next{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:40px;padding-top:28px;border-top:1px solid var(--line)}.course-next a{display:grid;grid-template-columns:36px minmax(0,1fr);gap:12px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);text-decoration:none}.course-next a:hover{border-color:var(--tone);text-decoration:none}.course-next small{display:block;color:var(--ink-3);font-size:.76rem}.course-next b{font:600 .95rem var(--f-display)}.cn-cn{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;font:600 1rem var(--f-display);background:color-mix(in oklab,var(--tone) 14%,transparent);color:var(--tone)}.cn-all{margin:.4rem 0 0;font-size:.84rem}.cn-all a{color:var(--ink-3)}@media(max-width:1000px){.course-map{grid-template-columns:minmax(0,1fr)}.course-arrows{display:none}.course-card.is-capstone{grid-template-columns:minmax(0,1fr)}.course-card.is-capstone .cc-foot{grid-column:1;grid-row:auto}.course-next{grid-template-columns:minmax(0,1fr)}}.eqcard{margin:1.8em 0;padding:1.1rem 1.3rem 1rem;border-radius:14px;border:1px solid color-mix(in oklab,var(--tone,var(--accent)) 30%,var(--line));background:linear-gradient(135deg,color-mix(in oklab,var(--tone,var(--accent)) 7%,var(--card)),var(--card) 70%)}.eqcard .eq-title{margin:0 0 .2rem;font:600 .8rem var(--f-body);color:var(--tone,var(--accent))}.eqcard .katex-display{margin:.5em 0 .7em;font-size:1.12em;overflow-x:auto;overflow-y:hidden}.eq-read{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:6px 18px;font-size:.9rem;color:var(--ink-2)}.eq-read li{display:block;margin:0!important;line-height:1.5}.eq-read li .katex{font-size:1.05em}.eq-say{margin:.8rem 0 0;font-size:.95rem;color:var(--ink);font-style:italic}.fb-l{display:grid;gap:4px;font-size:.8rem;color:var(--ink-2)}.fb-in{font:500 .95rem var(--f-mono);padding:.5em .7em;border-radius:8px;border:1px solid var(--line-2);background:var(--card);color:var(--ink);width:230px;max-width:100%}.fb-pre{display:flex;flex-wrap:wrap;gap:5px;align-items:end}.fb-pre button{all:unset;cursor:pointer;font:500 .74rem var(--f-mono);padding:.3em .6em;border-radius:6px;border:1px dashed var(--line-2);color:var(--ink-2)}.fb-pre button:hover{border-style:solid;color:var(--ink)}.fb-board{display:grid;gap:8px;overflow-x:auto;padding-bottom:4px}.fb-row{display:grid;grid-template-columns:repeat(8,minmax(34px,1fr));gap:4px}.fb-row.f32{grid-template-columns:repeat(32,minmax(17px,1fr));gap:2px;min-width:560px}.fb-bit{all:unset;cursor:pointer;display:grid;place-items:center;gap:1px;padding:6px 0;border-radius:6px;border:1px solid var(--line-2);background:var(--card);text-align:center}.fb-bit b{font:600 1rem var(--f-mono);color:var(--ink-3)}.fb-bit small{font:500 .62rem var(--f-mono);color:var(--ink-3)}.fb-bit.on b{color:#fff}.fb-s{--bc:#e64980}.fb-e{--bc:#4c6ef5}.fb-m{--bc:#12a594}.fb-bit.on{background:var(--bc);border-color:var(--bc)}.fb-bit.on small{color:rgb(255 255 255/.85)}.fb-bit:not(.on){border-color:color-mix(in oklab,var(--bc) 45%,var(--line))}@media(max-width:640px){.fb-row.f32{grid-template-columns:repeat(16,minmax(0,1fr));row-gap:6px;min-width:0}.fb-row.f32 .fb-bit b{font-size:.9rem}}.fb-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:.78rem;font-weight:600}.c-s{color:#e64980}.c-e{color:#4c6ef5}.c-m{color:#12a594}.fb-eq{font:500 1.05rem var(--f-mono);color:var(--ink);margin:.2rem 0 .6rem;overflow-x:auto}.ls-wrap{display:grid;grid-template-columns:minmax(0,1.5fr)minmax(0,1fr);gap:14px;align-items:start}.ls-stack{display:grid;gap:6px}.ls-layer{display:grid;grid-template-columns:130px minmax(0,1fr);gap:10px;align-items:stretch;padding:8px;border-radius:10px;border:1px solid var(--line)}.ls-app{background:color-mix(in oklab,#4c6ef5 8%,var(--card))}.ls-lib{background:color-mix(in oklab,#845ef7 8%,var(--card))}.ls-sys{background:color-mix(in oklab,#e64980 8%,var(--card));border-style:dashed}.ls-kern{background:color-mix(in oklab,#f08c2e 9%,var(--card))}.ls-hw{background:color-mix(in oklab,#12a594 9%,var(--card))}.ls-name{display:grid;align-content:center}.ls-name b{font:600 .86rem var(--f-display)}.ls-name small{font-size:.7rem;color:var(--ink-3)}.ls-blocks{display:flex;flex-wrap:wrap;gap:5px}.ls-b{all:unset;cursor:pointer;font:500 .78rem var(--f-body);padding:.45em .65em;border-radius:7px;background:var(--card);border:1px solid var(--line-2);color:var(--ink);transition:transform .15s,box-shadow .15s}.ls-b:hover{border-color:var(--ink-3)}.ls-b.sel{box-shadow:0 0 0 2px var(--accent)}.ls-b.hot{background:var(--orange,#f08c2e);background:#f08c2e;color:#fff;border-color:#f08c2e;transform:scale(1.06);box-shadow:0 6px 18px -6px rgb(240 140 46/.7)}.ls-mode{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px;font:500 .7rem var(--f-mono);color:var(--ink-3);padding:0 6px}.ls-side{position:sticky;top:90px;padding:14px 16px;border-radius:12px;border:1px solid var(--line);background:var(--bg-2);font-size:.9rem;min-height:200px}.ls-side h5{margin:.2rem 0 .4rem;font:600 1rem var(--f-display)}.ls-side p{margin:0 0 .6rem;color:var(--ink-2)}.ls-k{font:600 .74rem var(--f-body)!important;color:var(--accent)!important}.ls-steps{margin:0;padding-left:1.2rem;font-size:.76rem;color:var(--ink-3);display:grid;gap:2px}.ls-steps .cur{color:#f08c2e;font-weight:600}.ls-steps .past{color:var(--ink-2)}@media(max-width:860px){.ls-wrap{grid-template-columns:minmax(0,1fr)}.ls-side{position:static}.ls-layer{grid-template-columns:minmax(0,1fr)}}.bf-out{display:grid;gap:10px}.bf-stage{display:grid;grid-template-columns:30px minmax(0,1fr);gap:12px;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--bg-2)}.bf-stage h5{margin:3px 0 6px;font:600 .9rem var(--f-display)}.bf-n{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:#fff;font:600 .8rem var(--f-mono)}.bf-toks{display:flex;flex-wrap:wrap;gap:5px;margin:0}.bf-t{font:500 .8rem var(--f-mono);padding:.25em .5em;border-radius:6px;border:1px solid var(--line-2);background:var(--card)}.bf-op{background:color-mix(in oklab,#e64980 14%,var(--card));border-color:color-mix(in oklab,#e64980 40%,var(--line))}.bf-dq,.bf-sq{background:color-mix(in oklab,#12a594 12%,var(--card))}.bf-notes{margin:0 0 6px;padding-left:1.1rem;font-size:.84rem;color:var(--ink-2)}.bf-list{display:grid;gap:4px;margin-bottom:6px}.bf-procs{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.bf-proc{display:grid;gap:3px;padding:8px 10px;border-radius:9px;border:1px solid color-mix(in oklab,#4c6ef5 35%,var(--line));background:var(--card);min-width:0}.bf-proc small{font-size:.68rem;color:var(--ink-3)}.bf-proc b{font:600 .82rem var(--f-mono);word-break:break-word}.bf-fd{font:500 .72rem var(--f-mono);color:#f08c2e}.bf-pipe{font:600 .72rem var(--f-mono);color:#e64980}.bf-sep{margin:0;font:500 .76rem var(--f-mono);color:var(--violet)}.lib-head{padding-block:clamp(52px,7vw,92px)12px;background:radial-gradient(1200px 400px at 85% -10%,color-mix(in oklab,var(--accent) 10%,transparent),transparent 70%),var(--bg)}.lib-head h1{max-width:18ch}.shelf{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.volume{display:grid;grid-template-rows:auto 1fr;border-radius:16px;overflow:hidden;border:1px solid var(--line);background:var(--card);color:var(--ink);text-decoration:none;box-shadow:var(--shadow-sm);transition:transform .25s,box-shadow .25s}.volume:hover{transform:translateY(-6px)rotate(-.4deg);box-shadow:var(--shadow);text-decoration:none}.vol-cover{position:relative;display:block;aspect-ratio:4/3;overflow:hidden;color:#fff;background:linear-gradient(150deg,color-mix(in oklab,var(--tone) 92%,#000),color-mix(in oklab,var(--tone) 55%,#0b1020))}.vol-cover::after{content:"";position:absolute;inset:0 auto 0 0;width:14px;background:linear-gradient(90deg,rgb(0 0 0/.28),transparent)}.vol-art{position:absolute;inset:0;width:100%;height:100%}.vol-rn{position:absolute;right:14px;bottom:8px;font:2.4rem/1 instrument serif,Georgia,serif;color:rgb(255 255 255/.92);z-index:1;text-shadow:0 2px 12px rgb(0 0 0/.25)}.vol-body{display:grid;gap:8px;align-content:start;padding:16px 16px 14px}.vol-body>b{font:600 1.12rem/1.2 var(--f-display);letter-spacing:-.012em}.vol-blurb{font-size:.86rem;color:var(--ink-2);line-height:1.5}.vol-parts{display:grid;gap:3px;font-size:.8rem;color:var(--ink-2)}.vol-parts i{font-style:normal;font:600 .72rem var(--f-mono);color:var(--tone);display:inline-block;width:26px}.vol-foot{display:grid;gap:6px;font-size:.76rem;color:var(--ink-3);margin-top:4px}.vol-foot .lp-bar{margin:0}@media(max-width:1080px){.shelf{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.shelf{grid-template-columns:minmax(0,1fr)}.vol-cover{aspect-ratio:16/7}}.lw-map{margin:0}.lw-map .lw-body{padding:0}.vol-head{padding-block:clamp(40px,6vw,76px)36px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,color-mix(in oklab,var(--tone) 7%,var(--bg)),var(--bg))}.vol-head-in{display:grid;grid-template-columns:220px minmax(0,1fr);gap:40px;align-items:center}.vol-head .vol-cover{aspect-ratio:3/4;border-radius:12px;box-shadow:0 24px 50px -24px rgb(0 0 0/.45);transform:rotate(-2deg)}.vol-head h1{margin:.7rem 0 .6rem;font-size:clamp(2.2rem,4.6vw,3.4rem);max-width:20ch}.vol-head .crumbs span:last-child{color:var(--tone);font-weight:500}@media(max-width:760px){.vol-head-in{grid-template-columns:minmax(0,1fr)}.vol-head .vol-cover{width:150px}}.contents{max-width:960px}.contents-h{font:2.4rem instrument serif,Georgia,serif;letter-spacing:0;margin:0 0 1.2rem}.toc-part{margin-bottom:40px;scroll-margin-top:80px}.toc-part header{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:16px;align-items:baseline;padding-bottom:12px;border-bottom:2px solid var(--tone)}.toc-pn{font:600 .82rem var(--f-mono);color:var(--tone);grid-row:1/3}.toc-part h3{margin:0;font-size:1.45rem}.toc-part header p{margin:.2rem 0 0;color:var(--ink-2);font-size:.94rem}.toc{list-style:none;margin:0;padding:0}.toc a{display:grid;grid-template-columns:54px minmax(0,1fr)auto;gap:16px;align-items:start;padding:16px 4px;border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none;transition:background .15s}.toc a:hover{background:color-mix(in oklab,var(--tone) 6%,transparent);text-decoration:none}.toc-n{font:1.6rem/1 instrument serif,Georgia,serif;color:var(--tone);padding-top:2px}.toc-b{display:grid;gap:4px;min-width:0}.toc-b b{font:600 1.06rem/1.3 var(--f-display)}.toc-b>span:not(.toc-m){color:var(--ink-2);font-size:.9rem;line-height:1.5}.toc-m{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:.76rem;color:var(--ink-3);align-items:center}.toc-r{display:grid;justify-items:end;gap:8px;font:500 .78rem var(--f-mono);color:var(--ink-3)}@media(max-width:560px){.toc a{grid-template-columns:40px minmax(0,1fr)}.toc-r{grid-column:2;justify-items:start;grid-auto-flow:column}}.lm-tip{position:absolute;z-index:3;display:grid;gap:4px;padding:12px 14px;border-radius:12px;background:var(--card);border:1px solid var(--line-2);box-shadow:var(--shadow);pointer-events:none;font-size:.84rem;color:var(--ink-2)}.lm-tip small{font:600 .7rem var(--f-mono);color:var(--ink-3)}.lm-tip b{font:600 .98rem var(--f-display);color:var(--ink)}.lm-tip em{font-style:normal;font-size:.76rem;color:var(--accent)}.nn-eq{font:500 .98rem var(--f-mono);padding:10px 14px;border-radius:10px;background:var(--bg-2);border:1px solid var(--line);overflow-x:auto;white-space:nowrap}.depth-ladder{list-style:none;padding:0;margin:1.3rem 0 0;display:flex;flex-wrap:wrap;gap:8px}.depth-ladder a{display:inline-flex;align-items:center;gap:.55rem;padding:.42rem .8rem .42rem .6rem;border-radius:999px;border:1px solid var(--line-2);background:var(--card);color:var(--ink);font-size:.86rem;font-weight:500;text-decoration:none;transition:border-color .15s,transform .15s}.depth-ladder a:hover{border-color:var(--tone);transform:translateY(-1px);text-decoration:none}.dl-g,.db-g{display:inline-flex;align-items:flex-end;gap:2px}.dl-g i,.db-g i{display:block;width:4px;border-radius:2px;background:var(--line-2)}.dl-g i:nth-child(1){height:6px}.dl-g i:nth-child(2){height:10px}.dl-g i:nth-child(3){height:14px}.d1 .dl-g i:nth-child(-n+1),.d2 .dl-g i:nth-child(-n+2),.d3 .dl-g i:nth-child(-n+3){background:var(--tone)}.lesson-body>.depth-band{max-width:880px}.depth-band{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:18px;align-items:center;margin:4.2rem 0 1.6rem;padding:22px 24px;border-radius:16px;scroll-margin-top:84px;background:linear-gradient(120deg,color-mix(in oklab,var(--tone) 12%,var(--card)),var(--card) 70%);border:1px solid color-mix(in oklab,var(--tone) 28%,var(--line));overflow:hidden}.lesson-body>.depth-band:first-child{margin-top:0}.depth-band::after{content:"";position:absolute;right:-40px;top:-40px;width:160px;height:160px;border-radius:50%;border:22px solid color-mix(in oklab,var(--tone) 9%,transparent)}.db-g i{width:7px}.db-g i:nth-child(1){height:14px}.db-g i:nth-child(2){height:24px}.db-g i:nth-child(3){height:34px}.d1 .db-g i:nth-child(-n+1),.d2 .db-g i:nth-child(-n+2),.d3 .db-g i:nth-child(-n+3){background:var(--tone)}.db-t{margin:0;font:1.9rem/1.1 instrument serif,Georgia,serif;color:var(--ink)}.db-s,.db-s p{margin:.3rem 0 0;color:var(--ink-2);font-size:.95rem;line-height:1.55}@media(max-width:560px){.depth-band{padding:18px;gap:14px}.db-t{font-size:1.6rem}}.themes{max-width:1120px}.theme{margin-bottom:56px;scroll-margin-top:80px}.theme>header{display:grid;gap:.3rem;max-width:70ch;padding-bottom:16px;margin-bottom:18px;border-bottom:2px solid var(--tone)}.theme>header h2{margin:0;font:2.2rem/1.1 instrument serif,Georgia,serif;letter-spacing:0}.theme>header p{margin:0;color:var(--ink-2)}.topic-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:14px}.topic-card{position:relative;display:grid;align-content:start;gap:8px;padding:18px 18px 16px;border-radius:14px;border:1px solid var(--line);background:var(--card);color:var(--ink);text-decoration:none;transition:transform .2s,border-color .2s,box-shadow .2s}.topic-card::before{content:"";position:absolute;left:18px;top:0;width:36px;height:3px;border-radius:0 0 3px 3px;background:var(--tone)}.topic-card:hover{transform:translateY(-3px);border-color:color-mix(in oklab,var(--tone) 50%,var(--line));box-shadow:var(--shadow-sm);text-decoration:none}.topic-card b{font:600 1.08rem/1.3 var(--f-display);padding-right:26px}.tc-d{color:var(--ink-2);font-size:.88rem;line-height:1.5}.tc-m{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;font-size:.76rem;color:var(--ink-3);margin-top:2px}.topic-card .lp-done{position:absolute;right:14px;top:16px}.course-next{grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr))}.cn-cn{width:12px;height:12px;border-radius:50%;background:var(--tone)}.course-next a{grid-template-columns:12px minmax(0,1fr)}.topic-next{padding:8px 0 72px}.topic-next>h2{font:2rem instrument serif,Georgia,serif;letter-spacing:0;margin:0 0 1rem}.tn-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:28px}.tn-grid h3{font-size:.95rem;color:var(--ink-2);margin:0 0 .6rem}.tn-grid ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}.tn-grid a{display:grid;gap:2px;padding:12px 14px;border-radius:11px;border:1px solid var(--line);background:var(--card);color:var(--ink);text-decoration:none;border-left:3px solid var(--tone)}.tn-grid a:hover{border-color:var(--tone);text-decoration:none}.tn-grid small{font-size:.74rem;color:var(--tone);font-weight:600}.tn-grid span{font:600 .98rem var(--f-display)}.lesson-body{counter-reset:sec fig}.lw-tag:empty::before{content:"Figure"}.lesson-body figure.lw{counter-increment:fig}.lesson-body figure.lw .lw-tag::before{content:"Figure " counter(fig)}.lesson-body>h2:not([id^=references]){counter-increment:sec;display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:.7em;align-items:baseline;padding-top:.9em;border-top:1px solid var(--line)}.lesson-body>h2:not([id^=references])::before{content:counter(sec);font:1.5em/1 instrument serif,Georgia,serif;color:var(--tone)}.lesson-body>h2:first-child{border-top:0;padding-top:0}.lesson-body>h3{font-size:1.1rem}.pp-src{width:100%;min-height:70px;font:500 .86rem/1.55 var(--f-mono);padding:12px 14px;border-radius:10px;border:1px solid var(--line-2);background:var(--bg-2);color:var(--ink);resize:vertical;tab-size:4}.pp-status{font-size:.8rem;color:var(--ink-3)}.pp-stages{list-style:none;padding:0;margin:12px 0 10px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}.pp-stages button{all:unset;cursor:pointer;display:grid;gap:1px;padding:8px 12px;border-radius:10px;border:1px solid var(--line-2);background:var(--card)}.pp-stages button b{font:600 .84rem var(--f-display);color:var(--ink)}.pp-stages button small{font:500 .7rem var(--f-mono);color:var(--ink-3)}.pp-stages button[aria-pressed=true]{border-color:var(--tone,var(--accent));background:color-mix(in oklab,var(--tone,var(--accent)) 10%,var(--card))}.pp-arrow{color:var(--ink-3);font-size:.9rem}.pp-panel{border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--card);min-height:120px;overflow-x:auto}.pp-hint{margin:0 0 10px;font-size:.88rem;color:var(--ink-2)}.pp-bytes,.pp-toks{display:flex;flex-wrap:wrap;gap:4px}.pp-bytes span{display:grid;justify-items:center;min-width:26px;padding:3px 2px;border-radius:6px;border:1px solid var(--line);background:var(--bg-2)}.pp-bytes b{font:600 .82rem var(--f-mono);color:var(--ink)}.pp-bytes small{font:500 .62rem var(--f-mono);color:var(--ink-3)}.pp-tok{--c:var(--ink-3);display:grid;justify-items:center;gap:1px;padding:4px 8px;border-radius:7px;border:1px solid color-mix(in oklab,var(--c) 45%,var(--line));background:color-mix(in oklab,var(--c) 9%,var(--card))}.pp-tok b{font:600 .86rem var(--f-mono);color:var(--ink);white-space:pre}.pp-tok small{font:600 .58rem var(--f-mono);color:var(--c);letter-spacing:.02em}.pp-tree ul{list-style:none;margin:0;padding-left:18px;border-left:1px dashed var(--line-2)}.pp-tree>ul{border:0;padding:0}.pp-tree li{margin:3px 0;font-size:.82rem}.pp-node{font:600 .84rem var(--f-mono);color:var(--violet)}.pp-ctx{margin-left:4px;font:500 .66rem var(--f-mono);color:var(--ink-3);border:1px solid var(--line);border-radius:4px;padding:0 3px}.pp-at{font:500 .8rem var(--f-mono);color:var(--ink-2)}.pp-at i{font-style:normal;color:#d4a017}.pp-f{font:500 .74rem var(--f-mono);color:var(--ink-3)}.pp-bc{margin-bottom:12px}.pp-bc p{margin:0 0 4px;font-size:.84rem;color:var(--ink-2)}.pp-bc table,.vm-bc{border-collapse:collapse;font:500 .8rem var(--f-mono);width:100%}.pp-bc th{text-align:left;font:600 .7rem var(--f-body);color:var(--ink-3);padding:2px 10px 4px 0}.pp-bc td{padding:2px 12px 2px 0;color:var(--ink-2)}.pp-bc tr.nl td{border-top:1px solid var(--line)}.pp-bc code,.vm-bc code{color:var(--ink);background:0 0;padding:0}.pp-out,.pp-err,.pt-out{margin:0;padding:10px 12px;border-radius:8px;background:var(--bg-2);font:500 .82rem var(--f-mono);white-space:pre-wrap}.pp-err,.pt-err{color:#e64980}.vm-expl{min-height:3.2em;margin:10px 0;padding:10px 14px;border-radius:10px;background:color-mix(in oklab,var(--tone,var(--accent)) 8%,var(--card));border:1px solid color-mix(in oklab,var(--tone,var(--accent)) 25%,var(--line));font-size:.9rem;color:var(--ink)}.vm-grid{display:grid;grid-template-columns:minmax(0,.9fr)minmax(0,.9fr)minmax(0,1.4fr);gap:14px;align-items:start}@media(max-width:760px){.vm-grid{grid-template-columns:minmax(0,1fr)}}.vm-h{margin:0 0 6px;font:600 .74rem var(--f-body);color:var(--ink-3)}.vm-src{margin:0;padding:8px 0;border-radius:8px;background:var(--bg-2);color:var(--ink);font:500 .8rem/1.7 var(--f-mono);overflow-x:auto}.vm-src span{display:block;padding:0 10px;white-space:pre}.vm-src span.on{background:color-mix(in oklab,#f08c2e 22%,transparent)}.vm-bc td{padding:3px 8px;border-bottom:1px solid var(--line);color:var(--ink-2)}.vm-bc tr.on td{background:color-mix(in oklab,#f08c2e 22%,transparent);color:var(--ink);font-weight:600}.vm-frame{border:1px solid var(--line-2);border-radius:10px;padding:8px 10px;margin-bottom:8px;background:var(--card);opacity:.7}.vm-frame.top{opacity:1;border-color:var(--tone,var(--accent))}.vm-fr-in{display:grid;grid-template-columns:minmax(0,1fr)minmax(0,1.5fr);gap:10px}.vm-fr-in small{font-size:.68rem;color:var(--ink-3)}.vm-stack{display:flex;flex-direction:column;gap:3px;margin-top:3px;min-height:30px}.vm-stack span{padding:4px 8px;border-radius:6px;background:color-mix(in oklab,#4c6ef5 14%,var(--card));border:1px solid color-mix(in oklab,#4c6ef5 40%,var(--line));font:600 .78rem var(--f-mono);color:var(--ink);overflow-wrap:anywhere}.vm-stack span:first-child{border-color:#4c6ef5}.vm-stack em,.vm-names em{font-size:.76rem;color:var(--ink-3)}.vm-names{font:500 .8rem var(--f-mono);margin-top:3px}.vm-names td{padding:2px 6px 2px 0;color:var(--ink);vertical-align:top}.vm-names td:first-child{white-space:nowrap}.pt-slider{width:100%;margin:6px 0}.pt-grid{display:grid;grid-template-columns:minmax(0,.9fr)minmax(0,1.4fr);gap:14px;align-items:start}@media(max-width:760px){.pt-grid{grid-template-columns:minmax(0,1fr)}}.pt-code{margin:0;padding:8px 0;border-radius:8px;background:var(--bg-2);color:var(--ink);font:500 .8rem/1.75 var(--f-mono);overflow-x:auto}.pt-code span{display:block;padding:0 10px;white-space:pre;position:relative}.pt-code i{display:inline-block;width:2.2em;color:var(--ink-3);font-style:normal}.pt-code span.on{background:color-mix(in oklab,#f08c2e 24%,transparent)}.pt-code span.ret{background:color-mix(in oklab,#12a594 22%,transparent)}.pt-mem{position:relative;display:grid;grid-template-columns:minmax(0,.85fr)minmax(0,1fr);gap:46px;padding:4px}.pt-svg{position:absolute;inset:0;pointer-events:none;overflow:visible}.pt-h{margin:0 0 6px;font:600 .74rem var(--f-body);color:var(--ink-3)}.pt-frame{border:1px solid var(--line-2);border-radius:9px;padding:6px 8px;margin-bottom:8px;background:var(--card)}.pt-frame.top{border-color:var(--tone,var(--accent))}.pt-frame p{margin:0 0 4px;font:600 .78rem var(--f-display);color:var(--ink)}.pt-frame table{width:100%;font:500 .8rem var(--f-mono);border-collapse:collapse}.pt-frame td{padding:3px 4px;border-top:1px solid var(--line)}.pt-frame td:last-child{text-align:right;width:18px}.pt-frame em{font-size:.74rem;color:var(--ink-3)}.pt-ret td{color:#12a594}.pt-ref{display:inline-block;width:9px;height:9px;border-radius:50%;background:#4c6ef5;vertical-align:middle}.pt-heap{display:grid;gap:8px;align-content:start}.pt-obj{justify-self:start;max-width:100%;display:grid;gap:2px;padding:5px 9px;border-radius:8px;border:1px solid var(--line-2);background:color-mix(in oklab,#d4a017 7%,var(--card))}.pt-obj>small{font:600 .62rem var(--f-mono);color:var(--ink-3)}.pt-obj>b{font:600 .84rem var(--f-mono);color:var(--ink);overflow-wrap:anywhere}.pt-obj.t-list,.pt-obj.t-tuple,.pt-obj.t-dict,.pt-obj.t-set{background:color-mix(in oklab,#845ef7 8%,var(--card))}.pt-cells{display:flex;flex-wrap:wrap;gap:0}.pt-cell{display:grid;justify-items:center;min-width:30px;padding:2px 5px;border:1px solid var(--line-2);margin-left:-1px}.pt-cell small{font:500 .58rem var(--f-mono);color:var(--ink-3)}.pt-inl{font:600 .8rem var(--f-mono);color:var(--ink)}.pt-dict{border-collapse:collapse;font:500 .8rem var(--f-mono)}.pt-dict td{border:1px solid var(--line-2);padding:2px 6px}.pt-note{margin:10px 0 6px;font-size:.86rem;color:var(--ink-2)}.ht-msg{margin:0 0 10px;font-size:.88rem;color:var(--ink-2);min-height:2.6em}.ht-grid{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:5px}@media(max-width:640px){.ht-grid{grid-template-columns:repeat(min(var(--n),8),minmax(0,1fr))}}.ht-slot{display:grid;justify-items:center;gap:1px;padding:6px 2px;border-radius:8px;border:1px dashed var(--line-2);min-height:58px;align-content:start}.ht-slot small{font:500 .62rem var(--f-mono);color:var(--ink-3)}.ht-slot em{font-size:.66rem;color:var(--ink-3);font-style:normal}.ht-slot b{font:600 .9rem var(--f-mono);color:var(--ink)}.ht-slot span{font:500 .72rem var(--f-mono);color:var(--ink-2)}.ht-slot.full{border-style:solid;background:color-mix(in oklab,#12a594 10%,var(--card))}.ht-slot.probe{border-color:#f08c2e;box-shadow:0 0 0 2px color-mix(in oklab,#f08c2e 35%,transparent)}.ht-slot.last{background:color-mix(in oklab,#f08c2e 18%,var(--card))}.ht-in{font:500 .86rem var(--f-mono);padding:.3em .5em;border-radius:7px;border:1px solid var(--line-2);background:var(--card);color:var(--ink);width:6em}.bc-out{margin:4px 0 8px;overflow-x:auto}.bc-tab{border-collapse:collapse;font:500 .84rem var(--f-mono)}.bc-tab th{font:600 .7rem var(--f-body);color:var(--ink-3);padding:2px 10px;text-align:center}.bc-tab th:first-child,.bc-tab td:first-child{text-align:left;padding-left:0}.bc-tab td{padding:4px 10px;border-top:1px solid var(--line);text-align:center;color:var(--ink)}.bc-tab tr.ok td{font-weight:700;color:#12a594}.bc-tab tr.bad td{font-weight:700;color:#e64980}.bc-why{margin:6px 0;padding-left:1.2rem;font-size:.82rem;color:var(--ink-2)}.bc-res{margin:4px 0 0;font-size:.88rem}.bc-res.ok{color:var(--ink)}.bc-res.bad{color:#e64980;font-weight:600}.pf-img{display:block;max-width:100%;margin:10px auto 0;border-radius:10px;background:#fff}.pt-frame em{white-space:nowrap}.book-head{padding-block:clamp(36px,5vw,64px)30px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,color-mix(in oklab,var(--tone) 7%,var(--bg)),var(--bg))}.book-head-in{display:grid;grid-template-columns:170px minmax(0,1fr);gap:36px;align-items:center}.book-head .vol-cover{aspect-ratio:3/4;border-radius:12px;box-shadow:0 22px 44px -22px rgb(0 0 0/.45);transform:rotate(-2deg)}.book-head h1{margin:.6rem 0 .5rem;font-size:clamp(2rem,4.2vw,3.1rem);max-width:22ch}.book-head .crumbs span:last-child{color:var(--tone);font-weight:500}@media(max-width:760px){.book-head-in{grid-template-columns:minmax(0,1fr)}.book-head .vol-cover{display:none}}.book-layout{display:grid;grid-template-columns:290px minmax(0,1fr);gap:56px;align-items:start;padding-top:36px;padding-bottom:80px}.book-nav{position:sticky;top:76px;max-height:calc(100vh - 92px);overflow-y:auto;scrollbar-width:thin;font-size:.86rem;padding-right:6px}.bn-toggle{display:none}.bn-title{margin:0 0 .8rem;font:600 .95rem var(--f-display);color:var(--ink)}.bn-in{counter-reset:bnp}.bn-part{margin:1.1rem 0 .35rem;font:600 .74rem var(--f-body);color:var(--tone);letter-spacing:.02em;counter-increment:bnp}.bn-part::before{content:"Part " counter(bnp,upper-roman)"\2002\00b7\2002"}.bn-chs,.bn-secs{list-style:none;margin:0;padding:0}.bn-chs>li>a{display:grid;grid-template-columns:22px minmax(0,1fr);gap:6px;padding:.34em .5em;border-radius:7px;color:var(--ink-2);line-height:1.35;text-decoration:none}.bn-chs>li>a:hover{background:var(--bg-2);color:var(--ink)}.bn-n{font:500 .74rem var(--f-mono);color:var(--ink-3);padding-top:.15em}.bn-chs>li>a.is-done .bn-n{color:var(--teal)}.bn-chs>li.on>a{background:color-mix(in oklab,var(--tone) 11%,transparent);color:var(--ink);font-weight:600}.bn-chs>li.on>a .bn-n{color:var(--tone)}.bn-secs{display:none;margin:.15rem 0 .5rem 1.9rem;border-left:1px solid var(--line)}.bn-chs>li.on .bn-secs{display:block}.bn-secs a{display:block;padding:.2em .7em;color:var(--ink-3);font-size:.8rem;line-height:1.35;text-decoration:none;border-left:2px solid transparent;margin-left:-1px}.bn-secs a:hover{color:var(--ink)}.bn-secs a.on{color:var(--tone);border-left-color:var(--tone);font-weight:500}.bn-all{margin:1.4rem 0 0;font-size:.82rem}.book-body{min-width:0;counter-reset:chap part}.book-part{scroll-margin-top:80px;counter-increment:part}.bp-title::before{content:"Part " counter(part,upper-roman)"\2002";color:var(--tone)}.bp-title{margin:0 0 .3rem;font:clamp(2rem,3.6vw,2.7rem)/1.1 instrument serif,Georgia,serif;letter-spacing:0;padding-top:2.2rem;border-top:3px solid var(--tone)}.book-part:first-child .bp-title{padding-top:.4rem;border-top:0}.bp-blurb{margin:0 0 1.6rem;color:var(--ink-2);max-width:70ch}.chapter{counter-increment:chap;counter-reset:sec fig;scroll-margin-top:76px;padding:1.2rem 0 2.6rem}.chapter+.chapter{border-top:1px solid var(--line);padding-top:2.6rem}.ch-head{margin-bottom:1.6rem;max-width:76ch}.ch-title{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55em;align-items:baseline;margin:0 0 .6rem;font-size:clamp(1.6rem,2.8vw,2.15rem);line-height:1.15;text-wrap:balance}.ch-n{font:500 .92em/1 var(--f-display);color:var(--tone);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.ch-desc{display:none}.ch-meta{display:flex;flex-wrap:wrap;gap:.4rem 1rem;align-items:center;margin:0;font-size:.86rem;color:var(--ink-3)}.ch-foot{margin-top:2rem}.ch-body>h3{scroll-margin-top:76px;font-size:1.42rem;margin:2.4em 0 .7em}.ch-body>h3:not([id$=references-and-further-reading]){counter-increment:sec;display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:.6em;align-items:baseline;padding-top:.8em;border-top:1px solid var(--line)}.ch-body>h3:not([id$=references-and-further-reading])::before{content:counter(chap)"." counter(sec);font:500 .9em/1 var(--f-display);color:var(--tone);font-variant-numeric:tabular-nums}.ch-body>h3:first-child{margin-top:0}.ch-body>h3{counter-reset:sub}.ch-body>h4{font-size:1.12rem;scroll-margin-top:76px;margin:1.9em 0 .55em;counter-increment:sub;display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:.55em;align-items:baseline}.ch-body>h4::before{content:counter(chap)"." counter(sec)"." counter(sub);font:500 .86em var(--f-mono,monospace);color:var(--ink-3)}.ch-body>h3+h4{margin-top:.9em}.ch-body figure.lw{counter-increment:fig}.ch-body figure.lw .lw-tag::before{content:"Figure " counter(chap)"." counter(fig)}.learn-forward{padding-block:80px;text-align:center;color:var(--ink-2)}@media(max-width:1100px){.book-layout{grid-template-columns:minmax(0,1fr);gap:0;padding-top:0}.book-nav{position:sticky;top:56px;z-index:5;max-height:none;overflow:visible;margin:0 calc(-1 * var(--gutter));padding:8px var(--gutter);background:color-mix(in oklab,var(--bg) 92%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.bn-toggle{display:inline-flex;align-items:center;gap:.5em;font:600 .86rem var(--f-body);padding:.45em .9em;border-radius:9px;border:1px solid var(--line-2);background:var(--card);color:var(--ink);cursor:pointer}.bn-toggle::after{content:"▾";font-size:.8em}.bn-in{display:none;max-height:70vh;overflow-y:auto;padding:8px 2px 12px}.book-nav.open .bn-in{display:block}.book-body{padding-top:24px}}.zoo{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px;max-height:560px;overflow-y:auto;padding-right:4px}.zoo li{--c:var(--accent);display:grid;grid-template-columns:52px minmax(0,1fr);gap:10px;padding:10px 12px;border-radius:10px;border:1px solid var(--line);border-left:3px solid var(--c);background:var(--card);cursor:pointer}.zoo li.on{background:color-mix(in oklab,var(--c) 8%,var(--card))}.zoo-y{font:600 .9rem var(--f-mono);color:var(--c)}.zoo b{font:600 .98rem var(--f-display);color:var(--ink)}.zoo-f{font-size:.72rem;color:var(--c);font-weight:600;margin-left:.4em}.zoo p{margin:.25rem 0;font-size:.86rem;color:var(--ink-2);line-height:1.5}.zoo small{font-size:.74rem;color:var(--ink-3)}.vol-rn{display:none}.ch-time{color:var(--ink-3)}.book-progress{position:fixed;left:0;right:0;top:0;height:3px;z-index:60;pointer-events:none}.book-progress i{display:block;height:100%;background:var(--tone,var(--accent));transform-origin:0 50%;transform:scaleX(0)}.section-learn .site-header{background:color-mix(in oklab,var(--bg) 97%,transparent)}.lib-intro{grid-template-columns:minmax(0,1.2fr)minmax(0,1fr)}.li-author{order:-1;padding:0;border:0;background:0 0}.li-author p{font-size:1.02rem;line-height:1.7;color:var(--ink-2);margin:0 0 1em}.li-author p:first-of-type{color:var(--ink)}.li-cover p{font-size:.94rem}.lib-head .wrap{text-align:center}.lib-head h1{max-width:20ch;margin-inline:auto;text-wrap:balance}.lib-head .lead{max-width:62ch;margin-inline:auto;text-wrap:pretty}.lib-head .lh-stats{justify-content:center}.lib-head h1{max-width:24ch}