:root{--n-0:#fff;--n-50:#f5f5f5;--n-100:#ebebeb;--n-200:#d6d6d6;--n-300:#b0b0b0;--n-400:#8a8a8a;--n-500:#5f5f5f;--n-600:#3a3a3a;--n-700:#262626;--n-800:#141414;--a-50:#fbf4e8;--a-100:#f8e8cf;--a-200:#f4d4a4;--a-300:#e6b968;--a-400:#c99536;--a-500:#8a5d14;--a-600:#6b470d;--a-700:#4a310a;--bg:var(--n-100);--surface:var(--n-0);--raise:var(--n-50);--rule:var(--n-200);--faint:var(--n-400);--body:var(--n-600);--muted:var(--n-500);--ink:var(--n-800);--accent:var(--a-500);--accent-soft:var(--a-50);--skin:var(--a-200);--band:var(--n-800);--band-raise:var(--n-700);--band-rule:var(--n-600);--band-ink:var(--n-0);--band-body:var(--n-200);--band-muted:var(--n-300);--band-accent:var(--a-200);--font:"Helvetica Neue", Helvetica, Arial, sans-serif;--mono:var(--font);--fs-xs:13px;--fs-sm:14px;--fs-md:16px;--fs-lg:20px;--fs-xl:24px;--fs-2xl:clamp(28px, 3vw, 32px);--fs-3xl:clamp(32px, 4.2vw, 48px);--fs-4xl:clamp(40px, 5.4vw, 64px);--lh-tight:1.08;--lh-snug:1.35;--lh-body:1.55;--track-tight:-.02em;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--s-9:96px;--s-10:128px;--r-sm:6px;--r-md:12px;--r-pill:999px;--shadow:0 12px 32px #14141429;--gutter:clamp(var(--s-4), 4vw, var(--s-7));--max:1240px;--measure:760px;--header:54px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:112px}body{background:var(--bg);color:var(--ink);font:400 var(--fs-md) / var(--lh-body) var(--font);-webkit-font-smoothing:antialiased;margin:0;overflow-x:hidden}a{color:inherit}h1,h2,h3{font-weight:700;line-height:var(--lh-tight);margin:0}h1,h2{letter-spacing:var(--track-tight)}h3{font-size:var(--fs-lg);line-height:1.2}p{margin:0}button{font:inherit;color:inherit}b,strong{font-weight:700}.wrap{max-width:var(--max);padding:0 var(--gutter);margin:0 auto}.nowrap{white-space:nowrap}.eyebrow,.eyebrow.neutral,.step-num,.book-flag,.chapter .num,.pager .k,.k{font:400 var(--fs-sm) / var(--lh-snug) var(--font);color:var(--muted);letter-spacing:0;text-transform:none}.kicker{gap:0 var(--s-3);flex-wrap:wrap;display:flex}.kicker>*+:before{content:"·";margin-right:var(--s-3);color:var(--faint)}.section{padding:var(--s-9) 0 var(--s-8)}.section+.section{border-top:1px solid var(--rule)}.section-head{gap:var(--s-3);margin-bottom:var(--s-7);max-width:var(--measure);display:grid}.section-head h2{font-size:var(--fs-3xl)}.section-head p{color:var(--body);font-size:var(--fs-md)}.src{font-size:var(--fs-xs);line-height:var(--lh-snug);color:var(--muted)}.src a,a.plain{color:inherit}a.plain{font-weight:700;text-decoration:none}a.plain:hover{color:var(--accent);text-decoration:underline}.sub{color:var(--muted);font-size:var(--fs-sm)}.btn{border:1px solid var(--ink);background:var(--ink);color:var(--n-0);border-radius:var(--r-pill);padding:var(--s-2) var(--s-4);font:700 var(--fs-sm) / var(--lh-snug) var(--font);cursor:pointer;text-decoration:none;display:inline-block}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.ghost{color:var(--ink);border-color:var(--n-300);background:0 0}.btn.ghost:hover{border-color:var(--ink)}.chip{border:1px solid var(--rule);background:var(--surface);border-radius:var(--r-pill);padding:var(--s-1) var(--s-3);font-size:var(--fs-sm);line-height:var(--lh-snug);cursor:pointer}.chip[aria-pressed=true]{background:var(--ink);color:var(--n-0);border-color:var(--ink)}.chip:disabled{opacity:.4;cursor:not-allowed}.pill{font-size:var(--fs-xs);padding:2px var(--s-2);border-radius:var(--r-pill);background:var(--raise);color:var(--muted);font-weight:700;display:inline-block}.pill.live{background:var(--accent);color:var(--n-0);text-decoration:none}.range{width:100%;accent-color:var(--accent);margin:var(--s-1) 0 var(--s-3)}.search{padding:var(--s-3) var(--s-4);border-radius:var(--r-sm);border:1px solid var(--rule);background:var(--surface);font:inherit;flex:280px}.filters{gap:var(--s-2);margin-bottom:var(--s-4);flex-wrap:wrap;align-items:center;display:flex}.legend{gap:var(--s-4);font-size:var(--fs-sm);color:var(--muted);align-items:center;margin-left:auto;display:flex}.legend i{width:10px;height:10px;margin-right:var(--s-2);vertical-align:-1px;border-radius:50%;display:inline-block}.tip{pointer-events:none;z-index:5;background:var(--ink);max-width:320px;color:var(--n-0);border-radius:var(--r-sm);padding:var(--s-3);font-size:var(--fs-xs);line-height:var(--lh-snug);position:absolute}.tip b{font-size:var(--fs-sm)}.tip small{color:var(--n-300);margin-top:var(--s-1);font-size:var(--fs-xs);display:block}.card{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-md);padding:var(--s-5);min-width:0}.card h3{font-size:var(--fs-lg);margin-bottom:var(--s-4)}.top{z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--band-rule);color:var(--band-ink);--edge:max(var(--gutter), calc((100% - var(--max)) / 2 + var(--gutter)));background:#141414f0;position:fixed;inset:0 0 auto}.top .bar{align-items:center;gap:var(--s-5);padding:var(--s-3) var(--edge);min-height:var(--header);display:flex}.top .name{font-weight:700;font-size:var(--fs-md);text-decoration:none}.top .primary{align-items:center;gap:var(--s-5);font-size:var(--fs-sm);margin-left:auto;display:flex}.top .primary>a,.top summary{color:var(--band-muted);cursor:pointer;text-decoration:none}.top .primary>a:hover,.top summary:hover,.top .primary>a[aria-current],.top summary.on{color:var(--band-ink)}.top .primary>a[aria-current]{text-decoration:underline;-webkit-text-decoration-color:var(--band-accent);text-decoration-color:var(--band-accent);text-underline-offset:6px;text-decoration-thickness:2px}.top .primary>a[aria-current],.top summary.on{font-weight:700}.top summary{align-items:center;gap:var(--s-2);list-style:none;display:flex}.top summary::-webkit-details-marker{display:none}.top .drop summary:after{content:"";border:1.5px solid;border-width:0 1.5px 1.5px 0;width:6px;height:6px;transform:translateY(-2px)rotate(45deg)}.top .drop[open] summary:after{transform:translateY(1px)rotate(-135deg)}.top details{position:relative}.drop-panel,.menu-panel{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-md);box-shadow:var(--shadow)}.drop-panel{right:calc(-1 * var(--s-3));top:calc(100% + var(--s-4));width:360px;padding:var(--s-2);display:grid;position:absolute}.drop-panel a,.menu-panel a{gap:var(--s-3);padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);color:var(--ink);font-size:var(--fs-sm);text-decoration:none;display:flex}.drop-panel a:hover,.menu-panel a:hover{background:var(--raise)}.drop-panel a[aria-current],.menu-panel a[aria-current]{background:var(--accent-soft);color:var(--accent);font-weight:700}.drop-panel .n,.menu-panel .n{font-size:var(--fs-xs);color:var(--muted);font-variant-numeric:tabular-nums;min-width:18px;padding-top:2px}.drop-panel a:first-child{color:var(--muted);border-bottom:1px solid var(--rule);border-radius:var(--r-sm) var(--r-sm) 0 0;margin-bottom:var(--s-1)}.top .menu{margin-left:auto;display:none;position:static}.top .menu summary{border:1px solid var(--n-500);border-radius:var(--r-pill);padding:var(--s-1) var(--s-4);font-size:var(--fs-sm);color:var(--band-ink);background:0 0;font-weight:700}.menu-panel{left:var(--s-3);right:var(--s-3);top:calc(100% + var(--s-2));max-height:calc(100vh - 110px);padding:var(--s-2);gap:var(--s-1);display:grid;position:absolute;overflow-y:auto}.menu-panel .group{padding:var(--s-1) 0;border-bottom:1px solid var(--rule);display:grid}.menu-panel .group:last-child{border-bottom:0}.top .label{font-size:var(--fs-xs);line-height:var(--lh-snug);color:var(--n-400)}.menu-panel .label{color:var(--muted);padding:var(--s-2) var(--s-3) var(--s-1)}.top .sub{align-items:center;gap:var(--s-5);padding:var(--s-2) var(--edge);border-top:1px solid var(--band-rule);font-size:var(--fs-xs);white-space:nowrap;display:flex;overflow-x:auto}.top .sub a{color:var(--band-muted);text-decoration:none}.top .sub a:hover{color:var(--band-ink)}@media (max-width:820px){html{scroll-padding-top:76px}.top .primary,.top .sub{display:none}.top .menu{display:block}.top .name{font-size:var(--fs-sm)}.top .bar{gap:var(--s-3)}}.intro,.ch-hero{background:var(--band);color:var(--band-ink)}.intro h1,.ch-hero h1{color:var(--band-accent);font-size:var(--fs-4xl)}.intro .eyebrow,.intro .book-flag,.ch-hero .eyebrow,.ch-hero .step-num{color:var(--band-muted)}.ch-hero .kicker>*+:before{color:var(--n-400)}.ch-hero a{color:inherit}.intro .btn,.ch-hero .btn{background:var(--band-accent);color:var(--band);border-color:var(--band-accent)}.intro .btn.ghost,.ch-hero .btn.ghost{color:var(--band-ink);border-color:var(--n-500);background:0 0}.intro .btn.ghost:hover,.ch-hero .btn.ghost:hover{border-color:var(--band-ink)}.intro{padding:calc(var(--header) + var(--s-7)) 0 var(--s-8)}.intro-grid{gap:clamp(var(--s-6), 5vw, var(--s-8));grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:start;display:grid}.intro-main{gap:var(--s-4);max-width:720px;display:grid}.intro .lede{font-size:var(--fs-lg);color:var(--band-body);line-height:1.45}.intro .bio{font-size:var(--fs-sm);line-height:var(--lh-body);color:var(--band-muted)}.intro-links{gap:var(--s-3);margin-top:var(--s-1);flex-wrap:wrap;display:flex}.book-strip{display:none}.book-feature{gap:var(--s-4) var(--s-5);background:var(--band-raise);border:1px solid var(--band-rule);border-radius:var(--r-md);padding:var(--s-5);grid-template-columns:116px minmax(0,1fr);display:grid}.book-flag{grid-column:1/-1}.book-cover-img{align-self:start;display:block}.book-cover-img img{border-radius:2px 4px 4px 2px;width:100%;height:auto;transition:transform .2s;display:block;box-shadow:0 0 0 1px #ffffff24,0 10px 24px #0006}.book-cover-img:hover img{transform:translateY(-2px)}.book-head{gap:var(--s-2);align-content:center;display:grid}.book-head h2{font-size:var(--fs-lg);letter-spacing:0;color:var(--band-accent);line-height:1.2}.book-meta{font-size:var(--fs-sm);color:var(--band-muted)}.book-desc{font-size:var(--fs-sm);color:var(--band-muted);grid-column:1/-1}.book-links{grid-column:1/-1;margin-top:0}.book-cover{aspect-ratio:2/3;padding:var(--s-3);gap:var(--s-2);background:var(--accent);color:var(--n-0);border-radius:2px 4px 4px 2px;flex-direction:column;display:flex}.metrics{gap:var(--s-5);margin-top:var(--s-6);padding-top:var(--s-5);border-top:1px solid var(--band-rule);grid-template-columns:repeat(6,minmax(0,1fr));display:grid}.metrics>*{gap:var(--s-2);color:inherit;align-content:start;text-decoration:none;display:grid}.metrics b{font-size:var(--fs-2xl);letter-spacing:var(--track-tight);font-variant-numeric:tabular-nums;line-height:1}.metrics span{font-size:var(--fs-xs);line-height:var(--lh-snug);color:var(--band-muted)}.metrics a:hover span{color:var(--band-ink);text-decoration:underline}@media (max-width:1000px){.intro-grid{grid-template-columns:1fr}.book-feature{max-width:620px}.metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.book-strip{font-size:var(--fs-sm);color:var(--band-ink);background:var(--band-raise);border-radius:var(--r-pill);padding:var(--s-1) var(--s-3);justify-self:start;text-decoration:none;display:block}}@media (max-width:560px){.book-feature{padding:var(--s-4);gap:var(--s-4);grid-template-columns:96px minmax(0,1fr)}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}.chapter-page{padding-top:0}.ch-hero{padding:calc(92px + var(--s-8)) 0 var(--s-8)}.ch-hero .wrap{gap:var(--s-4);display:grid}.ch-hero h1{max-width:15ch}.ch-hero .lede{font-size:var(--fs-lg);color:var(--band-body);max-width:720px;line-height:1.45}.ch-hero .stats{max-width:1000px;margin-top:var(--s-4);grid-template-columns:repeat(4,minmax(0,1fr))}.ch-hero .stat span{color:var(--band-muted)}@media (max-width:860px){.ch-hero{padding:calc(var(--header) + var(--s-7)) 0 var(--s-7)}.ch-hero .stats{grid-template-columns:repeat(2,minmax(0,1fr))}}.book-hero{column-gap:clamp(var(--s-6), 5vw, var(--s-8));grid-template-columns:minmax(0,1fr) 212px;align-items:start}.book-hero-text{gap:var(--s-4);display:grid}.book-hero .stats{grid-column:1/-1}@media (max-width:760px){.book-hero{grid-template-columns:1fr}.book-hero-cover{width:140px}}.stats{gap:var(--s-4) var(--s-6);margin-top:var(--s-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.stat b{font-size:var(--fs-2xl);letter-spacing:var(--track-tight);margin-bottom:var(--s-2);font-variant-numeric:tabular-nums;line-height:1;display:block}.stat span{font-size:var(--fs-xs);line-height:var(--lh-snug);color:var(--muted);display:block}.hero-num{font-size:var(--fs-3xl);letter-spacing:var(--track-tight);font-variant-numeric:tabular-nums;font-weight:700;line-height:1}.readout,.mini-stats,.pat .facts{gap:var(--s-3);display:grid}.readout{grid-template-columns:repeat(auto-fit,minmax(110px,1fr))}.mini-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.pat .facts{margin:var(--s-1) 0;grid-template-columns:repeat(3,minmax(0,1fr))}.readout b,.mini-stats b,.pat .facts b{font-size:var(--fs-xl);letter-spacing:var(--track-tight);font-variant-numeric:tabular-nums;line-height:1.15;display:block}.mini-stats b{color:var(--accent)}.readout span,.mini-stats span,.pat .facts span{font-size:var(--fs-xs);line-height:var(--lh-snug);color:var(--muted);display:block}.figure svg,.figure canvas{max-width:100%;display:block}.chapters{gap:var(--s-7) var(--s-6);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.chapter{gap:var(--s-2);border-top:1px solid var(--ink);padding:var(--s-4) 0 0;color:inherit;grid-template-rows:auto auto 1fr auto;text-decoration:none;display:grid}.chapter .num{font-variant-numeric:tabular-nums}.chapter h3{font-size:var(--fs-lg);transition:color .15s}.chapter:hover h3{color:var(--accent);text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:1px}.chapter .ext{color:var(--muted);font-weight:400}.chapter p{color:var(--body);font-size:var(--fs-sm)}.chapter .meta{justify-content:space-between;align-items:end;gap:var(--s-3);font-size:var(--fs-xs);line-height:var(--lh-snug);color:var(--muted);margin-top:var(--s-2);display:flex}.chapter .insts{color:var(--muted)}.spark text{font:12px var(--font);fill:var(--muted);font-variant-numeric:tabular-nums}.atlas{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-md);padding:var(--s-4) var(--s-4) var(--s-2);position:relative}.atlas-scroll{overflow-x:auto}.atlas svg{display:block}.index-tools{gap:var(--s-3);margin-bottom:var(--s-4);flex-wrap:wrap;align-items:center;display:flex}.index-list{display:grid}.year-row{gap:var(--s-4);padding:var(--s-4) 0;border-top:1px solid var(--rule);grid-template-columns:72px 1fr;display:grid}.year-row h3{font-size:var(--fs-lg);color:var(--muted);font-variant-numeric:tabular-nums}.pub{padding:var(--s-1) 0 var(--s-3)}.pub a.t{font-weight:700;text-decoration:none}.pub a.t:hover{color:var(--accent);text-decoration:underline}.pub .v{font-size:var(--fs-sm);color:var(--muted)}.tag{font-size:var(--fs-xs);margin-right:var(--s-2);font-weight:700}.tag.qu{color:var(--accent)}.tag.other{color:var(--muted)}@media (max-width:600px){.year-row{gap:var(--s-1);grid-template-columns:1fr}}.cv-grid{gap:var(--s-4);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.span-12{grid-column:span 12}.span-7{grid-column:span 7}.span-5{grid-column:span 5}.span-6{grid-column:span 6}@media (max-width:900px){.span-7,.span-5,.span-6{grid-column:span 12}}.list{gap:var(--s-3);margin:0;padding:0;list-style:none;display:grid}.list li{gap:var(--s-3);font-size:var(--fs-sm);grid-template-columns:auto 1fr;display:grid}.list .k{font-size:var(--fs-xs);color:var(--muted);font-variant-numeric:tabular-nums;min-width:64px;padding-top:2px}.foot{padding:var(--s-7) 0 var(--s-8);background:var(--band);color:var(--band-muted);font-size:var(--fs-sm)}.foot a{color:var(--band-ink)}.pager-wrap{padding-top:0}.pager{gap:var(--s-5);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:stretch;display:grid}.pager .card{gap:var(--s-2);color:var(--ink);text-decoration:none;display:grid}.pager .card:hover{border-color:var(--accent)}.pager .card b{font-size:var(--fs-lg);line-height:1.2}.pager .next{text-align:right}.pager .all{font-size:var(--fs-sm);color:var(--muted);align-self:center;font-weight:700}@media (max-width:720px){.pager{grid-template-columns:minmax(0,1fr)}.pager .next{text-align:left}.pager .all{order:3;justify-self:start}}.two,.duo,.pat,.skin-board{gap:var(--s-5);align-items:stretch;display:grid}.two{grid-template-columns:repeat(2,minmax(0,1fr))}.duo{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}.pat{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}.pat+.pat{margin-top:var(--s-5)}.two .card,.duo .card,.pat .card,.timeline-cards .card,.book-toc .card{gap:var(--s-3);grid-template-columns:minmax(0,1fr);align-content:start;display:grid}.two .card h3,.duo .card h3,.pat .card h3,.timeline-cards .card h3,.book-toc h3{margin-bottom:0}@media (max-width:900px){.duo,.pat{grid-template-columns:minmax(0,1fr)}}@media (max-width:760px){.two{grid-template-columns:1fr}}.timeline-cards{gap:var(--s-5);grid-template-columns:repeat(auto-fill,minmax(250px,1fr));display:grid}.ctl{gap:var(--s-2);display:grid}.ctl>label,.ctl>b{font-size:var(--fs-sm);justify-content:space-between;gap:var(--s-2);font-weight:700;display:flex}.ctl .filters{margin-bottom:0}.lab{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-md);grid-template-columns:minmax(0,7fr) minmax(0,5fr);display:grid;overflow:hidden}.lab-stage{background:radial-gradient(circle at 50% 45%, var(--n-0) 0%, var(--raise) 70%);cursor:grab;touch-action:pan-y;height:clamp(320px,70vh,560px);position:relative}.lab-stage:active{cursor:grabbing}.lab-hint{left:var(--s-4);bottom:var(--s-3);font-size:var(--fs-xs);color:var(--muted);pointer-events:none;position:absolute}.lab-panel{align-content:start;gap:var(--s-5);padding:var(--s-5);border-left:1px solid var(--rule);display:grid}.lab-panel h3{font-size:var(--fs-sm);margin-bottom:var(--s-2);justify-content:space-between;display:flex}.lab-panel .filters{margin-bottom:var(--s-2)}.lab-val{font-size:var(--fs-sm);color:var(--accent);font-variant-numeric:tabular-nums;font-weight:700}@media (max-width:860px){.lab{grid-template-columns:1fr}.lab-stage{height:clamp(320px,52vh,480px)}.lab-panel{border-left:0;border-top:1px solid var(--rule)}}.pipeline{margin:0 0 var(--s-5);gap:var(--s-3);counter-reset:step;grid-template-columns:repeat(6,minmax(0,1fr));padding:0;list-style:none;display:grid}.pipeline li{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-md);padding:var(--s-4);align-content:start;gap:var(--s-1);counter-increment:step;display:grid}.pipeline li:before{content:counter(step, decimal-leading-zero);font-size:var(--fs-xs);color:var(--muted);font-variant-numeric:tabular-nums}.pipeline b{font-size:var(--fs-md)}.pipeline span{font-size:var(--fs-xs);line-height:var(--lh-snug);color:var(--muted)}@media (max-width:900px){.pipeline{grid-template-columns:repeat(2,minmax(0,1fr))}}.skin-board{gap:var(--s-6);grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:start}.skin-grid{gap:var(--s-2);grid-template-columns:56px repeat(4,minmax(0,1fr));max-width:460px;display:grid}.skin-h{font-size:var(--fs-sm);color:var(--ink);text-align:center;font-weight:700;line-height:var(--lh-snug);place-items:center;display:grid}.skin-h small{font-weight:400;font-size:var(--fs-xs);color:var(--muted);display:block}.skin-cell{aspect-ratio:1.5;border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-lg);color:var(--ink);border:2px solid #0000;place-items:center;font-weight:700;display:grid}.skin-cell[aria-pressed=true]{border-color:var(--ink)}.skin-read h3{font-size:var(--fs-lg);margin-bottom:var(--s-2)}.skin-n{margin-top:var(--s-4);font-size:var(--fs-sm)}.skin-n b{font-size:var(--fs-2xl);color:var(--accent);margin-right:var(--s-1)}@media (max-width:860px){.skin-board{grid-template-columns:1fr}.skin-grid{gap:var(--s-2);grid-template-columns:44px repeat(4,minmax(0,1fr))}}.flow{margin:var(--s-3) 0 0;gap:var(--s-2);grid-template-columns:repeat(4,minmax(0,1fr));padding:0;list-style:none;display:grid}.flow li{border:1px solid var(--rule);border-radius:var(--r-sm);padding:var(--s-2) var(--s-3);font-size:var(--fs-xs);line-height:var(--lh-snug);color:var(--muted);transition:all .25s}.flow li b{font-size:var(--fs-xs);display:block}.flow li[data-state=on]{color:var(--ink);border-color:var(--ink)}.flow li[data-state=on] b{color:var(--accent)}.flow li[data-state=fail]{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}@media (max-width:520px){.flow{grid-template-columns:repeat(2,minmax(0,1fr))}}.verdict{margin-top:var(--s-3);font-weight:700;font-size:var(--fs-sm);min-height:var(--s-5)}.verdict[data-ok=false]{color:var(--accent)}.parts{margin:var(--s-3) 0 0;padding-left:var(--s-5);font-size:var(--fs-sm);color:var(--muted);gap:2px;display:grid}.parts li::marker{font-size:var(--fs-xs);color:var(--ink)}.stack{border-radius:var(--r-sm);max-width:420px;display:grid;overflow:hidden}.stack div{padding:0 var(--s-3);align-items:center;min-width:0;display:flex}.stack span{font-size:var(--fs-xs);color:var(--ink);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.book-toc{gap:var(--s-5);grid-template-columns:repeat(auto-fill,minmax(230px,1fr));display:grid}.book-toc ol{padding-left:var(--s-5);font-size:var(--fs-sm);margin:0;line-height:1.5}.book-toc li::marker{color:var(--muted);font-size:var(--fs-xs)}.book-toc li a{color:var(--ink);text-decoration:none}.book-toc li a:hover{color:var(--accent);text-decoration:underline}.book-ch{scroll-margin-top:90px}.book-ch+.book-ch{margin-top:var(--s-7);padding-top:var(--s-6);border-top:1px solid var(--rule)}.book-ch-head{max-width:var(--measure);margin-bottom:var(--s-4);gap:var(--s-2);display:grid}.book-ch-head h3{font-size:var(--fs-xl);margin:0}.book-ch-head p{color:var(--body);margin:0}.book-ch .src{margin-top:var(--s-3)}.hero{grid-template-columns:minmax(0,5fr) minmax(0,6fr);display:grid;position:relative}.hero-stage{grid-area:1/2;height:100vh;position:sticky;top:0}.hero-stage canvas{display:block}.hero-steps{padding:0 0 0 var(--gutter);grid-area:1/1}.step{justify-content:center;gap:var(--s-5);min-height:100vh;padding:var(--s-9) 0;flex-direction:column;max-width:520px;display:flex}.step h1{font-size:var(--fs-4xl)}.step h2{font-size:var(--fs-3xl)}.step .lede{font-size:var(--fs-lg);color:var(--muted)}.step .body{font-size:var(--fs-md);color:var(--muted)}.scroll-cue{font-size:var(--fs-xs);color:var(--muted)}@media (max-width:860px){.hero{grid-template-columns:1fr}.hero-stage{z-index:0;grid-column:1;height:56vh;top:60px}.hero-steps{padding:0 var(--gutter);z-index:1;grid-area:2/1;margin-top:-10vh;position:relative}.step{min-height:70vh;padding:var(--s-6) var(--s-5);border-radius:var(--r-md);background:#ebebebf0;margin-bottom:30vh}}@media (max-width:640px){.section{padding:var(--s-8) 0 var(--s-7)}.section-head{margin-bottom:var(--s-6)}.two,.duo,.pat,.timeline-cards,.book-toc,.pager{gap:var(--s-3)}.pat+.pat{margin-top:var(--s-3)}}svg[viewBox] text[font-size="12"]{font-size:calc(12px / var(--k,1))}svg[viewBox] text[font-size="14"]{font-size:calc(14px / var(--k,1))}svg[viewBox] text[font-size="16"]{font-size:calc(16px / var(--k,1))}svg[viewBox] text[font-size="24"]{font-size:calc(24px / var(--k,1))}
