:root{--paper: #F7F0E7;--ink: #272027;--rule: #E4DBC9;--muted: #7C6F64;--bg-highlight: #FFFFFF;--bg-fade: #F7F0E7;--highlight: #F0C36D}:root[data-theme="dark"]{--paper: #0F172A;--ink: #F2F2F2;--rule: #263449;--muted: #94A3B8;--bg-highlight: #16233A;--bg-fade: #000000;--highlight: #475569}:root[data-theme="light"]{--paper: #F7F0E7;--ink: #272027;--rule: #E4DBC9;--muted: #7C6F64;--bg-highlight: #FFFFFF;--bg-fade: #F7F0E7;--highlight: #F0C36D}::selection{background:var(--highlight)}@font-face{font-family:'Geist';font-style:normal;font-weight:400 800;font-display:swap;src:url("/fonts/Geist-Variable-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400 800;font-display:swap;src:url("/fonts/JetBrainsMono-Variable-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*{box-sizing:border-box}html,body{margin:0;padding:0}html{scroll-behavior:smooth}h2,h3,h4,dt[id]{scroll-margin-top:1.5rem}body{background-color:var(--paper);background-image:radial-gradient(150% 150% at 100% 100%, var(--bg-highlight) 0%, var(--bg-fade) 70%);background-attachment:fixed;color:var(--ink);font-family:'Geist', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;font-size:14px;min-height:100vh}@media (prefers-reduced-motion: no-preference){body,.theme-toggle,a{transition:background-color .15s ease, color .15s ease, border-color .15s ease}}a{color:var(--ink);text-decoration:underline;text-decoration-style:dotted;text-decoration-color:var(--rule);text-underline-offset:3px}a:hover{text-decoration-color:var(--ink)}.back-link-wrap{max-width:820px;margin:2rem auto 0;padding:0 clamp(1.5rem, 6vw, 5rem)}.back-link{font-size:.78rem;color:var(--muted);text-decoration:none}.back-link:hover{color:var(--ink)}.page{max-width:820px;margin:0 auto;padding:2.5rem clamp(1.5rem, 6vw, 5rem) 6rem;font-size:1rem}.masthead{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:3rem;border-bottom:1px solid var(--rule);padding-bottom:2rem}.eyebrow{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);margin-bottom:1rem}h1{font-size:clamp(1.55rem, 3.4vw, 2.1rem);font-weight:700;letter-spacing:-0.015em;margin:0 0 .6rem;text-wrap:balance;line-height:1.25}.subtitle{color:var(--muted);font-size:1.02rem;margin:0 0 1rem;max-width:56ch;line-height:1.6}.meta-line{font-size:.8rem;color:var(--muted);margin:0}.meta-line b{color:var(--ink);font-weight:600}.meta-line .sep{margin:0 .5em;opacity:.5}.theme-toggle{display:flex;align-items:center;justify-content:center;border:1px solid var(--rule);background:none;color:var(--ink);width:2.6rem;height:2.6rem;border-radius:999px;cursor:pointer;flex-shrink:0;font-family:inherit}.theme-toggle:hover{border-color:var(--ink)}.theme-toggle:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.toc{border:1px solid var(--rule);border-radius:12px;padding:1.25rem 1.5rem 1.4rem;margin:0 0 3rem;background:color-mix(in srgb, var(--ink) 3%, var(--paper))}.toc-title{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:0 0 .9rem}.toc ol{list-style:none;margin:0;padding:0;counter-reset:toc}.toc>ol>li{counter-increment:toc;margin:0 0 .55rem}.toc>ol>li::before{content:counter(toc) ".";display:inline-block;width:1.4em;color:var(--muted);font-size:.82rem}.toc a{text-decoration:none;color:var(--ink);font-size:.92rem}.toc a:hover{text-decoration:underline;text-decoration-style:dotted;text-decoration-color:var(--rule)}.toc ol ol{margin:.4rem 0 .6rem 2.1rem}.toc ol ol li{margin-bottom:.35rem}.toc ol ol a{font-size:.82rem;color:var(--muted)}.toc ol ol a:hover{color:var(--ink)}@media (max-width: 640px){.toc{padding:1rem 1.1rem 1.2rem}.toc ol ol{margin-left:1.4rem}}.prose{font-size:1rem}.prose>section{margin-bottom:3.25rem}.prose>section::after{content:'';display:table;clear:both}.prose>section:last-of-type{margin-bottom:0}.prose h2{font-size:1.55rem;font-weight:700;letter-spacing:-0.01em;margin:0 0 1.2rem;max-width:32ch;text-wrap:balance}.prose h3{font-size:1.1rem;font-weight:700;margin:1.8rem 0 .7rem}.prose details.collapsible{margin:1.8rem 0 .7rem}.prose details.collapsible summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:.5rem;user-select:none}.prose details.collapsible summary::-webkit-details-marker{display:none}.prose details.collapsible summary::before{content:'\25B8';display:inline-block;font-size:.85em;color:var(--muted);transition:transform .15s ease;flex-shrink:0}.prose details.collapsible[open] summary::before{transform:rotate(90deg)}.prose details.collapsible summary h3{display:inline;margin:0}.prose details.collapsible summary:hover h3{color:var(--ink)}.prose details.collapsible>*:not(summary):first-of-type{margin-top:.9rem}.prose h4{font-size:.88rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:1.6rem 0 .6rem}.prose p{line-height:1.75;margin:0 0 1.2rem;max-width:68ch}.prose p:last-child{margin-bottom:0}.prose ul,.prose ol{line-height:1.75;max-width:66ch;padding-left:1.3em;margin:0 0 1.2rem}.prose li{margin-bottom:.5em}.prose li:last-child{margin-bottom:0}.prose li ul,.prose li ol{margin:.6em 0 0}.prose strong{font-weight:600}.prose code{font-family:ui-monospace, 'SFMono-Regular', Menlo, monospace;font-size:.88em;background:color-mix(in srgb, var(--ink) 6%, var(--paper));padding:.15em .4em;border-radius:4px}.pull-quote{margin:1.8rem 0;padding:.2rem 0 .2rem 1.4rem;border-left:3px solid var(--highlight);font-size:1.05rem;font-weight:500;line-height:1.55;max-width:52ch;color:var(--ink)}.pull-quote cite{display:block;margin-top:.6rem;font-size:.78rem;font-weight:400;color:var(--muted);font-style:normal}.lead-term{color:var(--muted);font-size:.99em;font-weight:600}.note{margin:1.2rem 0;padding:.9rem 1.1rem;background:color-mix(in srgb, var(--highlight) 14%, var(--paper));border-left:3px solid var(--highlight);border-radius:6px;font-size:.95rem;line-height:1.6;color:var(--ink)}.note-label{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:.3rem;font-weight:700}.formula{font-family:ui-monospace, 'SFMono-Regular', Menlo, monospace;font-size:.85rem;background:color-mix(in srgb, var(--ink) 5%, var(--paper));border:1px solid var(--rule);border-radius:8px;padding:.9rem 1.1rem;margin:1.2rem 0;overflow-x:auto;line-height:1.7;max-width:100%}.figure{margin:1.6rem 0}.figure-frame{border:1px solid var(--rule);border-radius:10px;background:#FFFFFF;overflow-x:auto;padding:1rem}.figure-frame img{display:block;max-width:100%;height:auto;margin:0 auto}.figure-frame.is-wide img{max-width:none;height:420px;width:auto}.figure-frame a{display:block;cursor:zoom-in}.figure-caption{font-size:.8rem;color:var(--muted);margin:.6rem 0 0;line-height:1.55}.figure-caption b{color:var(--ink)}.lightbox-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.85);display:flex;align-items:center;justify-content:center;padding:clamp(1rem, 5vw, 4rem);z-index:9999;cursor:zoom-out;opacity:0;visibility:hidden;transition:opacity .2s ease}.lightbox-overlay.is-open{opacity:1;visibility:visible}.lightbox-overlay img{max-width:100%;max-height:100%;border-radius:8px;box-shadow:0 20px 60px rgba(0,0,0,0.5);cursor:zoom-out}.lightbox-close{position:fixed;top:1.2rem;right:1.4rem;width:2.4rem;height:2.4rem;border-radius:999px;border:1px solid rgba(255,255,255,0.35);background:rgba(0,0,0,0.35);color:#fff;font-size:1.2rem;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer}.portrait{float:right;width:clamp(140px, 32vw, 220px);margin:.2rem 0 1.2rem 1.6rem;border:1px solid var(--rule);border-radius:12px;overflow:hidden;background:var(--bg-highlight)}.portrait img{display:block;width:100%;height:auto}.portrait-caption{padding:.55rem .7rem;border-top:1px solid var(--rule);font-size:.74rem;color:var(--muted);line-height:1.5;text-align:center}@media (max-width: 640px){.portrait{float:none;width:160px;margin:0 auto 1.4rem}}.lr-widget{margin:1.6rem 0 2rem}.lr-frame{border:1px solid var(--rule);border-radius:10px;background:var(--bg-highlight);padding:1.1rem 1.1rem .4rem}.lr-frame svg{width:100%;height:auto;display:block}.lr-axis{stroke:var(--rule);stroke-width:1}.lr-axis-label{fill:var(--muted);font-size:11px;font-family:inherit}.lr-point{fill:var(--ink)}.lr-point-new{fill:var(--highlight);stroke:var(--ink);stroke-width:1}.lr-fit-line{stroke:var(--ink);stroke-width:2}.lr-fit-line-old{stroke:var(--muted);stroke-width:1.5;stroke-dasharray:6 4}.lr-residual-line{stroke:var(--highlight);stroke-width:2;stroke-dasharray:3 3}.lr-residual-label{fill:var(--ink);font-size:11px;font-weight:600;font-family:ui-monospace, 'SFMono-Regular', Menlo, monospace}.lr-predict-guide{stroke:var(--muted);stroke-width:1;stroke-dasharray:4 3}.lr-predict-point{fill:var(--paper);stroke:var(--ink);stroke-width:2}.lr-results{border:1px solid var(--rule);border-radius:10px;margin:1rem 0 0;padding:.9rem 1.1rem;background:color-mix(in srgb, var(--ink) 3%, var(--paper))}.lr-formula{font-family:ui-monospace, 'SFMono-Regular', Menlo, monospace;font-size:.92rem;font-weight:700;color:var(--ink);padding-bottom:.7rem;margin-bottom:.3rem;border-bottom:1px solid var(--rule)}.lr-stat-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1rem;padding:.4rem 0;font-size:.84rem}.lr-stat-row+.lr-stat-row{border-top:1px dashed var(--rule)}.lr-stat-row.lr-stat-diff{margin-top:.2rem;padding-top:.7rem;border-top:1px solid var(--rule)}.lr-stat-label{color:var(--muted)}.lr-stat-value{font-family:ui-monospace, 'SFMono-Regular', Menlo, monospace;color:var(--ink);text-align:right}.lr-delta{font-weight:700}.lr-caption{font-size:.88rem;color:var(--muted);line-height:1.65;margin:.8rem 0 0;max-width:66ch}.lr-caption b{color:var(--ink)}.lr-controls{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:1.1rem 0 0;padding-top:1rem;border-top:1px solid var(--rule)}.lr-nav-btn{display:inline-flex;align-items:center;gap:.4em;border:1px solid var(--rule);background:none;color:var(--ink);font:inherit;font-size:.82rem;padding:.5em 1.1em;border-radius:999px;cursor:pointer}.lr-nav-btn:hover:not(:disabled){border-color:var(--ink)}.lr-nav-btn:disabled{opacity:.35;cursor:not-allowed}.lr-nav-btn:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.lr-dots{display:flex;gap:.45em}.lr-dot{width:6px;height:6px;border-radius:50%;background:var(--rule)}.lr-dot.is-active{background:var(--ink)}.section-label{font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin:0 0 .75rem;font-weight:700}.table-wrap{overflow-x:auto;margin:1.2rem 0}.blog-table{width:100%;min-width:480px;border-collapse:collapse;font-size:.84rem;font-variant-numeric:tabular-nums}.blog-table th,.blog-table td{padding:.55em .7em;border-bottom:1px solid var(--rule);text-align:left;vertical-align:top}.blog-table th{font-weight:600;text-transform:uppercase;letter-spacing:.05em;font-size:.68rem;color:var(--muted);white-space:nowrap}.blog-table td:first-child,.blog-table th:first-child{padding-left:.2rem}.blog-table tbody tr:hover{background:color-mix(in srgb, var(--ink) 4%, var(--paper))}.blog-table td.hl{font-weight:700;color:var(--ink);background:color-mix(in srgb, var(--highlight) 22%, transparent);border-radius:4px}p.table-caption{font-size:.78rem;color:var(--muted);margin:.5rem 0 0;max-width:none}.table-caption strong{color:var(--ink)}.timeline{list-style:none;margin:1.6rem 0;padding:0;border-left:2px solid var(--rule)}.timeline-item{position:relative;padding:0 0 1.6rem 1.4rem}.timeline-item:last-child{padding-bottom:0}.timeline-item::before{content:'';position:absolute;left:-5px;top:.3em;width:8px;height:8px;border-radius:50%;background:var(--highlight);border:2px solid var(--paper)}.timeline-date{font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-variant-numeric:tabular-nums}.timeline-title{font-size:.98rem;font-weight:700;margin:.2rem 0 .3rem}.timeline-desc{font-size:.88rem;color:var(--ink);line-height:1.6;max-width:58ch;margin:0}.closing-note{margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--rule);font-size:.92rem;color:var(--muted);font-style:italic;max-width:58ch;line-height:1.7}.sources{margin-top:2rem}.sources h2{font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:700;margin:0 0 .8rem}.sources ol{margin:0;padding-left:1.3em;font-size:.84rem;line-height:1.8;color:var(--muted)}.sources a{color:var(--muted)}.sources a:hover{color:var(--ink)}@media (max-width: 640px){.page{padding:2rem 1.25rem 4rem}.back-link-wrap{padding:0 1.25rem}.masthead{flex-direction:column}.prose h2{max-width:none}.figure-frame.is-wide img{height:260px}}.diagram-wrap{--d-bg: #faf5e9;--d-paper: #fffdf8;--d-ink: #2c2620;--d-ink-soft: #4c4436;--d-teal: #1f7a7e;--d-teal-strong: #0f5457;--d-container-bg: #f5e5c6;--d-container-line: #dcb271;--d-red: #b8441c;--d-rule: #e3d7bd;margin-top:1.2rem}:root[data-theme="dark"] .diagram-wrap{--d-bg: #14181a;--d-paper: #1a1f21;--d-ink: #ece4d4;--d-ink-soft: #cabfa9;--d-teal: #5fd0d4;--d-teal-strong: #8be8ea;--d-container-bg: #241d14;--d-container-line: #4d3c24;--d-red: #ff8b5e;--d-rule: #33291c}.diagram-wrap .legend{display:flex;flex-wrap:wrap;gap:10px 22px;margin:0 0 20px;padding:14px 18px;background:var(--d-paper);border:1px solid var(--d-rule);border-radius:12px}.diagram-wrap .legend-item{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--d-ink-soft)}.diagram-wrap .swatch{width:22px;height:14px;border-radius:4px;flex:none}.diagram-wrap .swatch.module{border:2px solid var(--d-teal);background:var(--d-paper)}.diagram-wrap .swatch.repeat{border:2px solid var(--d-teal);background:var(--d-container-bg)}.diagram-wrap .swatch.flow{height:2px;background:var(--d-red);position:relative}.diagram-wrap .swatch.flow::after{content:"";position:absolute;right:-1px;top:-3px;border:4px solid transparent;border-left-color:var(--d-red)}.diagram-wrap .swatch.add{border:2px solid var(--d-red);border-radius:50%;background:var(--d-paper)}.diagram-wrap figure{margin:0;background:var(--d-paper);border:1px solid var(--d-rule);border-radius:16px;padding:20px clamp(4px, 2vw, 20px);overflow-x:auto}.diagram-wrap svg{display:block;width:100%;height:auto;min-width:640px}.diagram-wrap.is-compact figure{overflow-x:visible}.diagram-wrap.is-compact svg{min-width:0}.diagram-wrap figcaption{margin-top:14px;font-size:13.5px;color:var(--d-ink-soft);line-height:1.6;max-width:68ch}.diagram-wrap figcaption code{font-size:.92em;background:var(--d-paper);border:1px solid var(--d-rule);border-radius:4px;padding:.05em .4em}.diagram-wrap figcaption dl{margin:0}.diagram-wrap figcaption dt{font-family:'JetBrains Mono', ui-monospace, 'Cascadia Mono', Consolas, monospace;font-size:13.5px;font-weight:700;margin:1.1rem 0 .3rem;scroll-margin-top:1.5rem}.diagram-wrap figcaption dt:first-child{margin-top:0}.diagram-wrap figcaption dt a{color:var(--d-teal-strong);text-decoration:none}.diagram-wrap figcaption dt a:hover{text-decoration:underline;text-decoration-style:dotted}.diagram-wrap figcaption dd{margin:0 0 .2rem;padding:0}.diagram-wrap figcaption ul{margin:0 0 .2rem;padding-left:1.15em;max-width:none;line-height:1.55}.diagram-wrap figcaption li{margin-bottom:.3rem}.diagram-wrap figcaption li:last-child{margin-bottom:0}.diagram-wrap figcaption .formula{margin:.5rem 0 .8rem;font-size:.82rem}[id^="diagram-comp-"]{scroll-margin-top:2rem}.diagram-wrap .lbl{font-family:'JetBrains Mono', ui-monospace, 'Cascadia Mono', Consolas, monospace;font-size:14px;font-weight:700;fill:var(--d-ink)}.diagram-wrap .sub{font-family:'JetBrains Mono', ui-monospace, 'Cascadia Mono', Consolas, monospace;font-size:11.5px;font-weight:400;fill:var(--d-ink-soft)}.diagram-wrap .clbl{font-family:'JetBrains Mono', ui-monospace, 'Cascadia Mono', Consolas, monospace;font-size:13.5px;font-weight:700;fill:var(--d-teal-strong)}.diagram-wrap .shapetxt{font-family:'JetBrains Mono', ui-monospace, 'Cascadia Mono', Consolas, monospace;font-size:12px;font-weight:700;fill:var(--d-red)}.diagram-wrap .skiplbl{font-family:'JetBrains Mono', ui-monospace, 'Cascadia Mono', Consolas, monospace;font-size:10.5px;font-weight:400;fill:var(--d-red);opacity:0.9;letter-spacing:0.02em}.diagram-wrap .addsym{font-family:'JetBrains Mono', ui-monospace, 'Cascadia Mono', Consolas, monospace;font-size:19px;font-weight:700;fill:var(--d-red)}.diagram-wrap .term{fill:var(--d-paper);stroke:var(--d-teal);stroke-width:2.4}.diagram-wrap .proc{fill:var(--d-paper);stroke:var(--d-teal);stroke-width:2.4}.diagram-wrap .container{fill:var(--d-container-bg);stroke:var(--d-teal);stroke-width:2.2}.diagram-wrap .containerOuter{fill:var(--d-container-bg);stroke:var(--d-teal-strong);stroke-width:2.6}.diagram-wrap .ghost{fill:none;stroke:var(--d-teal);stroke-width:1.6;opacity:0.4}.diagram-wrap .arrow{stroke:var(--d-red);stroke-width:2.2;fill:none}.diagram-wrap .skip{stroke:var(--d-red);stroke-width:2;fill:none;opacity:0.85}.diagram-wrap .addnode{fill:var(--d-paper);stroke:var(--d-red);stroke-width:2.2}.diagram-wrap .shapepill{fill:var(--d-paper);stroke:var(--d-red);stroke-width:1.1;opacity:0.95}.diagram-wrap svg a{cursor:pointer;text-decoration:none}.diagram-wrap svg a:hover .proc,.diagram-wrap svg a:hover .containerOuter{stroke-width:3.2}.diagram-wrap svg a:hover .lbl,.diagram-wrap svg a:hover .clbl{text-decoration:underline;text-decoration-style:dotted}.diagram-wrap footer{margin-top:20px;font-size:12.5px;color:var(--d-ink-soft);line-height:1.6;border-top:1px solid var(--d-rule);padding-top:14px}.diagram-wrap footer code{font-size:0.95em}
