.book-page .book-hero{isolation:isolate;background:radial-gradient(1200px 700px at 50% -10%, rgb(var(--c-purple) / .18), transparent 70%), radial-gradient(700px 420px at 100% 0%, rgb(var(--c-green) / .07), transparent 70%), linear-gradient(160deg, #141b2e 0%, #0d1322 55%, #0a0e1a 100%);margin-top:calc(var(--nav-h) * -1);padding-top:calc(var(--nav-h) + 72px);border-bottom:1px solid var(--border);padding-bottom:112px;position:relative;overflow:clip}.book-page .book-hero:before{content:"";z-index:-1;background-image:var(--dots);background-size:24px 24px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(80% 70% at 70% 30%,#000 30%,#0000 80%);mask-image:radial-gradient(80% 70% at 70% 30%,#000 30%,#0000 80%)}.book-page .book-hero .reg{top:calc(var(--nav-h) + 24px);width:14px;height:14px;color:var(--border-strong);pointer-events:none;position:absolute}.book-page .book-hero .reg:before,.book-page .book-hero .reg:after{content:"";background:currentColor;position:absolute}.book-page .book-hero .reg:before{width:2px;height:14px;top:0;left:6px}.book-page .book-hero .reg:after{width:14px;height:2px;top:6px;left:0}@media (max-width:640px){.book-page .book-hero{padding-top:calc(var(--nav-h) + 40px);padding-bottom:72px}.book-page .book-hero .reg{display:none}}.book-page .bh{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:start;gap:64px;display:grid}.book-page .bh-copy{gap:22px;min-width:0;display:grid}.book-page .bh .type-display{max-width:17ch;font-size:clamp(2.5rem,1.5rem + 3.6vw,4.25rem)}.book-page .title-row{flex-wrap:wrap;align-items:center;gap:12px 16px;display:flex}.book-page .title-row h1{letter-spacing:-.02em;color:var(--text);font-size:clamp(1.5rem,1.2rem + 1vw,1.9rem);font-weight:800;line-height:1.1}.book-page .rating{align-items:center;gap:6px;display:inline-flex}.book-page .rating svg{width:14px;height:14px}.book-page .cta-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.book-page .book-micro{color:var(--text-subtle);font-size:14px;line-height:1.5}.book-page .facts{flex-wrap:wrap;gap:8px;display:flex}.book-page .facts .chip{text-transform:none;letter-spacing:0;color:var(--text);padding:7px 10px;font-size:12.5px;font-weight:600}.book-page .facts .chip b{color:var(--purple-text);font-weight:700}.book-page .author{color:var(--text-muted);align-items:center;gap:12px;font-size:15px;display:flex}.book-page .author img{-o-object-fit:cover;object-fit:cover;-o-object-position:50% 15%;object-position:50% 15%;background:var(--raised);width:40px;height:40px;box-shadow:0 0 0 2px var(--bg), 0 0 0 3px var(--border-strong);border-radius:50%;flex:none}.book-page .author b{color:var(--text);font-weight:600}@media (max-width:1023px){.book-page .bh{grid-template-columns:minmax(0,1fr);gap:40px}}.book-page .stage{perspective:1100px;place-items:center;padding:24px 0 56px;display:grid;position:relative}.book-page .stage:before{content:"";aspect-ratio:1;border:1px dashed rgb(var(--c-purple) / .45);border-radius:50%;width:78%;position:absolute;top:46%;left:50%;translate:-50% -50%}.book-page .stage:after{content:"";filter:blur(4px);background:radial-gradient(closest-side,#000000a6,#0000);width:58%;height:26px;position:absolute;bottom:40px;left:50%;translate:-50%}.book-page .book3d{--ry:-8deg;z-index:1;aspect-ratio:2430/3156;width:min(340px,74vw);transform-style:preserve-3d;position:relative}@media (max-width:1023px){.book-page .book3d{width:min(280px,66vw)}}.book-page .book3d .page{color:#1c2233;background:#f4f1ea;border-radius:4px 10px 10px 4px;align-content:start;gap:10px;padding:26px 22px 22px 30px;display:grid;position:absolute;inset:0;overflow:hidden;transform:translateZ(-1px);box-shadow:inset 6px 0 14px -8px #00000059}.book-page .page .ph-k{font:700 10px/1 var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;letter-spacing:.2em;text-transform:uppercase;color:#5143e6}.book-page .page .ph-t{letter-spacing:-.02em;color:#0e1426;margin-bottom:6px;font-size:19px;font-weight:800;line-height:1.1}.book-page .page ol{counter-reset:c;gap:7px;display:grid}.book-page .page li{counter-increment:c;color:#283048;border-bottom:1px dotted #c9c3b5;grid-template-columns:22px minmax(0,1fr);padding-bottom:6px;font-size:12.5px;font-weight:600;line-height:1.35;display:grid}.book-page .page li:before{content:counter(c, decimal-leading-zero);font:700 10.5px/1.6 var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;color:#5143e6}.book-page .page-dense ol{gap:4px}.book-page .page-dense li{padding-bottom:4px;font-size:11px}.book-page .cover{transform-origin:0;backface-visibility:hidden;transition:transform .7s var(--spring-smooth);border-radius:4px 10px 10px 4px;position:absolute;inset:0;overflow:hidden;box-shadow:0 50px 80px -30px #000000e6,0 0 0 1px #ffffff0f}.book-page .cover img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.book-page .cover:before{content:"";z-index:1;background:linear-gradient(90deg,#00000059,#ffffff14 60%,#0000);width:14px;position:absolute;inset:0 auto 0 0}.book-page .cover .glare{background:radial-gradient(420px circle at var(--gx,30%) var(--gy,20%), #ffffff29, transparent 50%);mix-blend-mode:soft-light;opacity:.8;pointer-events:none;position:absolute;inset:0}@media (hover:hover) and (pointer:fine){.book-page .stage:hover .cover{transform:rotateY(-32deg)}}.book-page .stage[data-peek] .cover,.book-page .stage[data-peek]:hover .cover{transform:rotateY(-72deg)}.book-page .peek-btn{z-index:2;min-height:44px;position:absolute;bottom:0;left:50%;translate:-50%}.book-page .prows{gap:20px;display:grid}.book-page .prow{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;gap:40px;display:grid}.book-page .prow-txt{align-content:start;justify-items:start;gap:16px;display:grid}.book-page .prow-txt p{letter-spacing:-.01em;color:var(--text);text-wrap:pretty;font-size:20px;font-weight:500;line-height:1.5}.book-page .prow-txt code{color:var(--purple-text);font-size:.85em}.book-page .fixed-in{font:600 13px/1.4 var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;color:var(--text-muted);align-items:center;gap:8px;display:inline-flex}.book-page .fixed-in i{background:var(--green);flex:none;width:7px;height:7px;transform:rotate(45deg)}.book-page .fixed-in b{color:var(--text);font-weight:600}.book-page .ba{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;min-width:0;display:grid}.book-page .ba>div{align-content:start;gap:8px;min-width:0;display:grid}.book-page .ba>div>.chip{justify-self:start}.book-page .ba .code{font-size:12.5px}.book-page .mini{border:1px solid var(--border);background:var(--code-bg);min-height:100%;font:12.5px/1.75 var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;color:var(--text-muted);border-radius:12px;padding:12px 14px}.book-page .prof{gap:6px;display:grid}.book-page .prof .bar{border:1px solid rgb(var(--c-purple) / .4);background:rgb(var(--c-purple) / .22);height:20px;color:var(--text);white-space:nowrap;text-overflow:ellipsis;transform-origin:0;transition:transform .6s var(--ease-out);transition-delay:calc(var(--i) * 70ms);border-radius:4px;padding:0 6px;font-size:11px;line-height:18px;overflow:hidden}.book-page .prof .bar.hot{border-color:rgb(var(--c-amber) / .6);background:rgb(var(--c-amber) / .18);color:var(--amber)}.book-page .prof .bar.cool{border-color:var(--border-strong);background:rgb(var(--c-subtle) / .12);color:var(--text-muted)}.book-page .prof.draw[data-armed] .bar{transform:scaleX(.05)}.book-page .prof .lab{color:var(--text-subtle);margin-bottom:2px;font-size:11px}@media (max-width:1023px){.book-page .prow{grid-template-columns:minmax(0,1fr);gap:24px}}@media (max-width:560px){.book-page .ba{grid-template-columns:minmax(0,1fr)}.book-page .prow.card{padding:20px 16px}.book-page .prow-txt p{font-size:18px}}.book-page .tree-wrap{gap:14px;min-width:0;display:grid}.book-page .tree-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 20px;display:flex}.book-page .tree-read{font:600 11.5px/1.3 var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);align-items:baseline;gap:10px;display:flex}.book-page .tree-read b{font:800 30px/1 var(--font-sans), "Archivo Fallback", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--red);transition:color .2s}.book-page .tree-wrap[data-view=feature] .tree-read b{color:var(--green)}.book-page .tree-board{grid-template-columns:minmax(0,1fr) 140px;align-items:start;gap:16px;display:grid}.book-page .tree-stage{border:1px solid var(--border);background-color:var(--code-bg);background-image:var(--dots);height:358px;font:400 12.5px/1 var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;background-size:24px 24px;border-radius:12px;padding:10px 14px;position:relative;overflow:hidden}.book-page .ti{--x:var(--xa);--y:var(--ya);white-space:nowrap;height:24px;color:var(--text-muted);opacity:var(--oa,1);transform:translate(calc(var(--x) * 18px), calc(var(--y) * 24px));transition:transform .56s var(--spring-smooth), opacity .26s var(--ease-out);align-items:center;gap:8px;display:flex;position:absolute;top:11px;left:14px}.book-page .tree-wrap[data-view=feature] .ti{--x:var(--xb);--y:var(--yb);opacity:var(--ob,1)}.book-page .ti.folder{color:var(--text);font-weight:600}.book-page .ti svg{flex:none;width:14px;height:14px}.book-page .ti i,.book-page .tree-legend i{background:var(--border-strong);flex:none;width:7px;height:7px;transform:rotate(45deg)}.book-page .ti.cart{color:var(--purple-text)}.book-page .ti.cart i,.book-page .tree-legend i.cart{background:var(--purple)}.book-page .ti.prod{color:var(--text-body)}.book-page .ti.prod i,.book-page .tree-legend i.prod{background:var(--text-subtle)}.book-page .tree-legend{color:var(--text-muted);gap:10px;padding-top:8px;font-size:13.5px;display:grid}.book-page .tree-legend span{align-items:center;gap:10px;display:flex}.book-page .tree-note{font:600 12.5px/1.4 var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;color:var(--red);margin-top:6px}.book-page .tree-wrap[data-view=feature] .tree-note{color:var(--purple-text)}@media (max-width:560px){.book-page .tree-board{grid-template-columns:minmax(0,1fr)}.book-page .tree-legend{grid-template-columns:repeat(3,auto);justify-content:start;gap:8px 18px;padding-top:0}.book-page .tree-note{grid-column:1/-1;margin-top:0}}.book-page .why{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;gap:48px;display:grid}.book-page .prows+.why{margin-top:64px}.book-page .why-copy{justify-items:start;gap:20px;display:grid}.book-page .stat{border:1px solid var(--border);background:var(--surface);border-radius:14px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:18px;padding:18px 20px;display:grid}.book-page .stat .big{font:700 44px/1 var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;letter-spacing:-.04em;color:var(--amber)}.book-page .stat p{color:var(--text-muted);font-size:14.5px;line-height:1.5}.book-page .fig{border-radius:24px;gap:12px;padding:18px;display:grid}.book-page .fig-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.book-page .fig-state{min-height:1.5em;color:var(--text-body);font-size:15px}@media (max-width:1023px){.book-page .why{grid-template-columns:minmax(0,1fr)}}@media (max-width:480px){.book-page .fig{border-radius:18px;padding:12px}}.book-page .sprawl-scroll{overflow:hidden}.book-page .sprawl-svg{width:100%;height:auto;display:block}.book-page svg.fig-narrow{display:none}@media (max-width:640px){.book-page svg.fig-wide{display:none}.book-page svg.fig-narrow{display:block}}.book-page .sprawl-svg text{font:600 12px var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;fill:var(--text);text-anchor:middle}.book-page .sprawl-svg .node rect{fill:var(--surface);stroke:var(--purple);stroke-width:1.2px}.book-page .sprawl-svg .node{transform:translate(var(--bx), var(--by));transition:transform .85s var(--ease-in-out)}.book-page .sprawl[data-state=after] .node{transform:translate(var(--ax), var(--ay))}.book-page .sprawl-svg .src rect{fill:#1a1420;stroke:var(--red);stroke-dasharray:3 3}.book-page .sprawl-svg .src text{fill:var(--red);font-size:11.5px}.book-page .sprawl-svg .sources,.book-page .sprawl-svg .e-before{transition:opacity .3s var(--ease-out)}.book-page .sprawl-svg .e-before path{stroke:var(--red);stroke-width:1.1px;stroke-dasharray:4 4;opacity:.6}.book-page .sprawl-svg .e-after path{stroke:var(--purple);stroke-width:1.6px;stroke-dasharray:1;stroke-dashoffset:1px;transition:stroke-dashoffset .6s var(--ease-out)}.book-page .sprawl-svg .e-after path.win{stroke:var(--green)}.book-page .sprawl-svg .rungs{opacity:0;transition:opacity .4s var(--ease-out)}.book-page .sprawl-svg .rung rect{fill:var(--surface);stroke:var(--purple);stroke-width:1.2px}.book-page .sprawl-svg .rung.win rect{fill:var(--green-tint);stroke:var(--green)}.book-page .sprawl-svg .rl{font:700 13px var(--font-sans), "Archivo Fallback", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";text-anchor:start;fill:var(--text)}.book-page .sprawl-svg .rung.win .rl{fill:var(--green)}.book-page .sprawl-svg .rs{font:500 10.5px var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;text-anchor:start;fill:var(--text-muted)}.book-page .sprawl-svg .rail{stroke:var(--purple-line);stroke-width:1.2px}.book-page .sprawl-svg .dia{fill:var(--purple)}.book-page .sprawl-svg .rung.win .dia{fill:var(--green)}.book-page .sprawl-svg .rung-title{font:600 11px var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;text-anchor:start;fill:var(--purple-text);letter-spacing:.12em;text-transform:uppercase}.book-page .sprawl[data-state=after] .e-before,.book-page .sprawl[data-state=after] .sources{opacity:0}.book-page .sprawl[data-state=after] .rungs{opacity:1;transition-delay:.45s}.book-page .sprawl[data-state=after] .e-after path{stroke-dashoffset:0;transition-delay:calc(var(--i) * 70ms + .75s)}.book-page .tip{border-radius:24px;gap:28px;padding:40px;display:grid}.book-page .tip-label{font:700 11.5px/1 var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--purple-text);margin-bottom:10px;display:inline-block}.book-page .tip-codes{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.book-page .tip-codes .code{font-size:13.5px}.book-page .tip-take{border:1px solid rgb(var(--c-purple) / .3);background:var(--purple-tint);border-radius:14px;padding:20px 22px}.book-page .tip-take p{max-width:72ch;color:var(--text);font-weight:500}.book-page .tip-take code,.book-page .tip-ctx code{color:var(--purple-text);font-size:.88em}.book-page .tip-after{text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px 24px;margin-top:24px;display:flex}.book-page .tip-after p{color:var(--text-muted);font-size:16px}.book-page .fmt{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.book-page .fmt span{border:1px solid var(--border-strong);font:600 11px/1 var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;color:var(--text-muted);border-radius:6px;padding:5px 8px}.book-page .fmt i{color:var(--purple);font-style:normal}@media (max-width:960px){.book-page .tip-codes{grid-template-columns:minmax(0,1fr)}}@media (max-width:640px){.book-page .tip{border-radius:18px;gap:22px;padding:20px 14px}.book-page .tip>:not(.tip-codes):not(.tip-take){margin-inline:4px}.book-page .tip-take{padding:16px}}.book-page .toc .acc-item>summary{gap:18px;padding:20px 4px}.book-page .toc-n{width:28px;font:700 13px/1 var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;color:var(--purple-text);flex:none}.book-page .toc-t{letter-spacing:-.012em;color:var(--text);flex:1;font-size:20px;font-weight:700}.book-page .toc .acc-body{max-width:none;padding:0 48px 26px 50px}.book-page .toc-body{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;display:grid}.book-page .toc-label{font:700 11.5px/1 var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--text-subtle);margin-bottom:10px}.book-page .toc-body p:not(.toc-label){font-size:16.5px;line-height:1.6}.book-page .toc-body .dia-list li{color:var(--text);font-size:16px}@media (max-width:720px){.book-page .toc .acc-body{padding:0 8px 22px 46px}.book-page .toc-body{grid-template-columns:minmax(0,1fr);gap:18px}.book-page .toc-t{font-size:18px}}.book-page .toc-list{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(var(--rows,5), auto);border-top:1px solid var(--border);grid-auto-flow:column;gap:0 32px;display:grid}.book-page .toc-list li{border-bottom:1px solid var(--border);align-items:baseline;gap:18px;padding:18px 4px;display:flex}.book-page .toc-list .toc-t{font-size:18px}@media (max-width:720px){.book-page .toc-list{grid-template-rows:none;grid-template-columns:minmax(0,1fr);grid-auto-flow:row}}.book-page .book-stats{margin-top:40px}.book-page .sample{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;gap:56px;display:grid}.book-page .sample-copy{gap:20px;display:grid}.book-page .checks{gap:14px;margin-top:4px;display:grid}.book-page .checks li{grid-template-columns:28px minmax(0,1fr);align-items:start;gap:14px;display:grid}.book-page .checks .ck{border:1px solid rgb(var(--c-green) / .35);background:var(--green-tint);width:28px;height:28px;color:var(--green);border-radius:8px;place-items:center;display:grid}.book-page .checks .ck svg{width:15px;height:15px}.book-page .checks b{color:var(--text);font-size:17.5px;font-weight:600;line-height:1.35;display:block}.book-page .checks b span{font-family:var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;color:var(--purple-text);margin-right:6px;font-size:14px}.book-page .checks em{color:var(--text-muted);font-size:15px;font-style:normal}.book-page .sample-card{gap:18px;display:grid}.book-page .files{gap:12px;display:flex}.book-page .file{border:1px solid var(--border-strong);background:var(--raised);width:62px;height:76px;font:700 11px/1 var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;letter-spacing:.08em;color:var(--text);clip-path:polygon(0 0,72% 0,100% 22%,100% 100%,0 100%);border-radius:6px;place-items:end center;padding-bottom:10px;display:grid;position:relative}.book-page .file:before{content:"";background:var(--border-strong);clip-path:polygon(0 0,100% 100%,0 100%);width:28%;height:22%;position:absolute;top:0;right:0}.book-page .file:after{content:"";background:repeating-linear-gradient(var(--border-strong) 0 2px, transparent 2px 7px);height:22px;position:absolute;top:20px;left:10px;right:14px}.book-page .file.pdf{color:var(--red)}.book-page .file.epub{color:var(--purple-text)}@media (max-width:960px){.book-page .sample{grid-template-columns:minmax(0,1fr);gap:36px}}.book-page .rate-big{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.book-page .rate-big .type-num{letter-spacing:-.04em;font-size:44px;line-height:1}.book-page .stars{color:var(--amber);gap:3px;display:inline-flex}.book-page .stars svg{width:20px;height:20px}.book-page .tgrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;display:grid}.book-page .tgrid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.book-page .tgrid+.twide{margin-top:24px}@media (max-width:960px){.book-page .tgrid,.book-page .tgrid-2{grid-template-columns:minmax(0,1fr)}}.book-page .book-pricing{background:linear-gradient(var(--bg), #0c1122)}.book-page .tiers-wrap{justify-content:center;margin-bottom:40px;display:flex}.book-page .tiers{border:1px solid var(--border-strong);background:var(--code-bg);border-radius:12px;grid-template-columns:repeat(3,auto);padding:4px;display:inline-grid;position:relative}.book-page .tiers button{z-index:1;min-height:44px;font:600 14px/1 var(--font-sans), "Archivo Fallback", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";white-space:nowrap;color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:9px;padding:10px 16px;transition:color .2s;position:relative}.book-page .tiers button[aria-checked=true]{color:var(--ink)}.book-page .tiers .ind{width:var(--w,0);background:var(--green);transform:translateX(var(--x,0));transition:transform .4s var(--spring-smooth), width .4s var(--spring-smooth);border-radius:9px;position:absolute;top:4px;bottom:4px;left:0}.book-page .tiers:not([data-measured]) button[aria-checked=true]{background:var(--green)}.book-page .pgrid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:20px;display:grid}.book-page .pgrid .tier{cursor:pointer;transition:transform .35s var(--spring-smooth), border-color .2s, background-color .2s, box-shadow .3s;position:relative}@media (min-width:1024px){.book-page .pgrid .tier-recommended{transform:translateY(-14px)}}.book-page .pgrid .tier code{color:var(--purple-text);font-size:13px}.book-page .repo-mini{border:1px solid var(--border);background:var(--code-bg);font:12px/1.8 var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;color:var(--text-muted);border-radius:10px;padding:10px 12px}.book-page .repo-mini .rt{color:var(--text)}.book-page .repo-mini .ri{padding-left:16px;position:relative}.book-page .repo-mini .ri:before{content:"├";color:var(--ln);position:absolute;left:0}.book-page .repo-mini .ri.last:before{content:"└"}.book-page .repo-mini .ri.ii{padding-left:32px}.book-page .repo-mini .ri.ii:before{left:16px}.book-page .repo-mini .hot{color:var(--green)}.book-page .pnote{text-align:center;color:var(--text-subtle);margin-top:28px;font-size:14px}.book-page .perr{text-align:center;color:var(--red);margin-top:20px;font-size:15px}@media (max-width:1023px){.book-page .pgrid{grid-template-columns:minmax(0,1fr);max-width:560px;margin-inline:auto}}@media (max-width:480px){.book-page .tiers{grid-template-columns:repeat(3,minmax(0,1fr));width:100%}.book-page .tiers button{white-space:normal;padding:10px 6px;font-size:13px;line-height:1.2}}.book-page .faq-grid{grid-template-columns:minmax(0,4fr) minmax(0,8fr);align-items:start;gap:56px;display:grid}.book-page .faq-side{gap:16px;display:grid;position:sticky;top:96px}@media (max-width:900px){.book-page .faq-grid{grid-template-columns:minmax(0,1fr);gap:32px}.book-page .faq-side{position:static}}.book-page .final{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;gap:56px;display:grid}.book-page .final-copy{justify-items:start;gap:22px;display:grid}.book-page .final-cover{border-radius:4px 10px 10px 4px;justify-self:center;width:min(260px,60vw);height:auto;rotate:4deg;box-shadow:0 40px 70px -30px #000000e6,0 0 0 1px #ffffff0f}@media (max-width:900px){.book-page .final{grid-template-columns:minmax(0,1fr)}.book-page .final-cover{order:-1;width:200px}}.book-buybar{z-index:40;padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--border);-webkit-backdrop-filter:blur(14px)saturate(140%);backdrop-filter:blur(14px)saturate(140%);visibility:hidden;transition:transform .3s var(--ease-out), visibility .3s;background:#0d1322e6;position:fixed;bottom:0;left:0;right:0;transform:translateY(100%)}.book-buybar[data-show]{visibility:visible;transform:none}.book-buybar .wrap{align-items:center;gap:14px;min-height:68px;display:flex}.book-buybar img{-o-object-fit:cover;object-fit:cover;border-radius:3px;flex:none;width:32px;height:42px}.book-buybar .bb-txt{min-width:0;line-height:1.3;display:grid}.book-buybar .bb-txt b{white-space:nowrap;text-overflow:ellipsis;color:var(--text);font-size:15px;font-weight:700;overflow:hidden}.book-buybar .bb-txt span{white-space:nowrap;font:500 12.5px var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;color:var(--text-muted)}.book-buybar .bb-short{display:none}.book-buybar .bb-price{height:26px;font:800 24px/1 var(--font-sans), "Archivo Fallback", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--text);align-items:center;margin-left:auto;display:inline-grid;overflow:hidden}.book-buybar .bb-price>span{transition:transform .3s var(--ease-out), opacity .3s;grid-area:1/1}.book-buybar .bb-price>span.out{opacity:0;transform:translateY(-100%)}@starting-style{.book-buybar .bb-price>span{opacity:0;transform:translateY(100%)}}@media (max-width:560px){.book-buybar .bb-long{display:none}.book-buybar .bb-short{display:block}.book-buybar .bb-txt b{font-size:14px}.book-buybar .btn{padding-inline:14px;font-size:14px}}.book-page .layers-svg{width:100%;height:auto;display:block}.book-page .layers-svg .plate rect{fill:var(--surface);stroke:var(--purple);stroke-width:1.2px}.book-page .layers-svg .plate-name{font:700 13px var(--font-sans), "Archivo Fallback", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";fill:var(--text)}.book-page .layers-svg .plate-sub{font:500 10.5px var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;fill:var(--text-muted)}.book-page .layers-svg .h rect{fill:var(--raised);stroke:var(--border-strong);stroke-width:1px;transition:stroke .2s,fill .2s}.book-page .layers-svg .h text,.book-page .layers-svg .svc text{font:600 11.5px var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;fill:var(--text);text-anchor:middle}.book-page .layers-svg .rule rect{fill:rgb(var(--c-red) / .1);stroke:var(--red);stroke-dasharray:3 3}.book-page .layers-svg .rule text{font:600 10.5px var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;fill:var(--red);text-anchor:middle}.book-page .layers-svg .svc rect{fill:var(--green-tint);stroke:var(--green);stroke-width:1.2px}.book-page .layers-svg .svc text{fill:var(--green)}.book-page .layers-svg .jump path{fill:none;stroke:var(--red);stroke-width:1.4px;stroke-dasharray:4 4;transition:opacity .3s var(--ease-out)}.book-page .layers-svg .jump .tip{fill:var(--red);stroke:none;stroke-dasharray:none}.book-page .layers-svg .flow path{fill:none;stroke:var(--purple);stroke-width:1.4px;stroke-dasharray:1;stroke-dashoffset:1px;transition:stroke-dashoffset .6s var(--ease-out)}.book-page .layers-svg .flow .dia{fill:var(--purple);opacity:0;transition:opacity .3s var(--ease-out);stroke:none}.book-page .layers-svg .fbox{fill:var(--surface);stroke:var(--purple);stroke-width:1.2px}.book-page .layers-svg .fbox-t{font:600 11.5px var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;fill:var(--text);text-anchor:middle}.book-page .layers-svg .fbox,.book-page .layers-svg .fbox-t{opacity:0;transition:opacity .3s var(--ease-out)}.book-page .layers[data-state=layered] .fbox,.book-page .layers[data-state=layered] .fbox-t{opacity:1}.book-page .layers-narrow .plate-name{font-size:12px}.book-page .layers-narrow .h text,.book-page .layers-narrow .fbox-t,.book-page .layers-narrow .svc text{font-size:10.5px}.book-page .layers-svg .avoid-chip rect{fill:#1a1420;stroke:var(--red)}.book-page .layers-svg .avoid-chip text{font:700 10.5px var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;letter-spacing:.06em;fill:var(--red)}.book-page .layers-svg .avoid-chip,.book-page .layers-svg .rule,.book-page .layers-svg .svc{transition:opacity .3s var(--ease-out)}.book-page .layers[data-state=shortcut] .svc,.book-page .layers[data-state=layered] .rule,.book-page .layers[data-state=layered] .jump,.book-page .layers[data-state=layered] .avoid-chip{opacity:0}.book-page .layers[data-state=layered] .flow path{stroke-dashoffset:0;transition-delay:calc(var(--i) * 60ms + .2s)}.book-page .layers[data-state=layered] .flow .dia{opacity:1;transition-delay:.5s}.book-page .layers[data-trace] .h,.book-page .layers[data-trace] .jump g,.book-page .layers[data-trace] .flow g{opacity:.3;transition:opacity .2s var(--ease-out)}.book-page .layers[data-trace="0"] .t0,.book-page .layers[data-trace="1"] .t1,.book-page .layers[data-trace="2"] .t2{opacity:1}.book-page .layers[data-trace="0"] .h.t0 rect,.book-page .layers[data-trace="1"] .h.t1 rect,.book-page .layers[data-trace="2"] .h.t2 rect{stroke:var(--purple-text);fill:rgb(var(--c-purple) / .18)}.book-page .layers .packet{fill:var(--purple-text);opacity:0}.book-page .layers[data-state=layered][data-run] .packet{animation:packet-down 1.4s var(--ease-in-out) .6s 1 both}@keyframes packet-down{0%{opacity:0;transform:translateY(0)}10%{opacity:1}90%{opacity:1}to{opacity:0;transform:translateY(var(--drop))}}.book-page .trace-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.book-page .trace-row .type-caption{margin-right:4px}.book-page .trace-btn{border:1px solid var(--border-strong);background:var(--code-bg);min-height:44px;font:600 12px/1 var(--font-mono), "JetBrains Mono Fallback", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;color:var(--text-muted);cursor:pointer;border-radius:8px;padding:0 12px;transition:color .15s,border-color .15s,background-color .15s}.book-page .trace-btn:hover,.book-page .trace-btn[aria-pressed=true]{color:var(--text);border-color:var(--purple);background:var(--purple-tint)}.book-page .chooser{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.book-page .book-card{grid-template-rows:auto 1fr;gap:28px;display:grid;position:relative}.book-page .book-card-cover{background-color:var(--code-bg);background-image:var(--dots);background-size:24px 24px;border-radius:12px;justify-content:center;padding:28px 0 8px;display:flex}.book-page .book-card-cover img{width:min(220px,56vw);height:auto;transition:transform .35s var(--spring-smooth);border-radius:4px 10px 10px 4px;box-shadow:0 30px 50px -24px #000000e6,0 0 0 1px #ffffff0f}@media (hover:hover) and (pointer:fine){.book-page .book-card:hover .book-card-cover img{transform:translateY(-4px)rotate(-1.5deg)}}.book-page .book-card-body{align-content:start;gap:18px;display:grid}.book-page .book-card-link{justify-self:start;margin-top:auto;position:static}.book-page .book-card-link,.book-page .book-card-link:hover,.book-page .book-card-link:active{transform:none}.book-page .book-card-link:after{content:"";border-radius:inherit;position:absolute;inset:0}.book-page .book-card:has(.book-card-link:focus-visible){outline:2px solid var(--purple-text);outline-offset:3px}.book-page .bundle-strip{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px 40px;margin-top:24px;display:grid}@media (max-width:900px){.book-page .chooser,.book-page .bundle-strip{grid-template-columns:minmax(0,1fr)}}.book-page .next-steps{counter-reset:step;gap:20px;display:grid}.book-page .next-steps li{grid-template-columns:36px minmax(0,1fr);align-items:start;gap:16px;display:grid}.book-page .next-steps h3{font-size:inherit;line-height:inherit;color:var(--text);margin-bottom:4px;font-weight:600}.book-page .result-badge{border:1px solid rgb(var(--c-green) / .35);background:var(--green-tint);width:56px;height:56px;color:var(--green);border-radius:16px;place-items:center;display:grid}.book-page .result-badge-neutral{border-color:var(--border-strong);background:var(--surface);color:var(--text-muted)}@media (min-width:1024px){.book-page .stage{margin-top:40px}}@media (prefers-reduced-motion:reduce){.book-page .sprawl-svg .e-after path,.book-page .sprawl-svg .rungs,.book-page .sprawl-svg .e-before,.book-page .sprawl-svg .sources,.book-page .layers-svg .flow path,.book-page .layers-svg .flow .dia{transition:none}.book-buybar{opacity:0;transition:opacity .15s linear,visibility .15s;transform:none}.book-buybar[data-show]{opacity:1}.book-page .sprawl-svg .node,.book-page .cover,.book-page .pgrid .tier,.book-page .book-card-cover img{transition:none}.book-page .ti{transition:opacity .15s linear}.book-buybar .bb-price>span{transition:opacity .15s linear;transform:none}.book-page .layers .packet{display:none}}
