:root{--canvas: #f6f3ed;--surface: #fbfaf6;--paper: #ffffff;--ink: #22262a;--muted: #646b67;--line: #dcd6ca;--line-soft: #e8e3d8;--accent: #45736a;--accent-hover: #375d55;--accent-ink: #ffffff;--accent-soft: #e3ece8;--ochre: #a8801f;--ochre-ink: #7a5c12;--ochre-soft: #f2e9d3;--pos: #2f6b4f;--neg: #a33a2c;--primary: var(--accent);--primary-pressed: var(--accent-hover);--on-dark: #ffffff;--on-dark-muted: #c9c4b8;--navy: var(--ink);--hairline: var(--line);--hairline-strong: #c4bdae;--charcoal: #3a3f42;--slate: var(--muted);--success: var(--pos);--error: var(--neg);--warning: var(--ochre-ink);--tint-mint: var(--accent-soft);--tint-lavender: var(--accent-soft);--tint-peach: var(--ochre-soft);--tint-cream: var(--ochre-soft);--iris: var(--accent);--r-sm: 4px;--r-md: 4px;--r-lg: 4px;--r-xl: 4px;--r-full: 9999px;--display: "Jost", "Futura", "Century Gothic", sans-serif;--font: "Source Sans 3", "Source Sans Pro", -apple-system, "Segoe UI", sans-serif;--mono: "JetBrains Mono", ui-monospace, Menlo, monospace;--wrap: 1120px}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--canvas);color:var(--ink);font:400 18px/1.6 var(--font);-webkit-font-smoothing:antialiased;font-feature-settings:"kern"}img,svg{max-width:100%;display:block}a{color:var(--accent);text-underline-offset:3px}a:hover{color:var(--accent-hover)}h1,h2,h3,h4{margin:0;font-family:var(--display);font-weight:500;color:inherit;letter-spacing:-.01em}p{margin:0}.num,.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.wrap{max-width:var(--wrap);margin:0 auto;padding:0 28px}@media(max-width:640px){.wrap{padding:0 18px}body{font-size:17px}}.eyebrow{font:500 13px/1.4 var(--mono);letter-spacing:.02em;color:var(--ochre-ink)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 22px;border-radius:var(--r-sm);font:600 17px/1 var(--font);text-decoration:none;cursor:pointer;border:1px solid transparent;transition:background .15s,border-color .15s,color .15s}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover{background:var(--accent-hover);color:var(--accent-ink)}.btn-ghost,.btn-ghost-dark{color:var(--ink);border-color:var(--ink);background:transparent}.btn-ghost:hover,.btn-ghost-dark:hover{background:var(--ink);color:var(--canvas)}.chip{display:inline-block;padding:1px 8px;border-radius:var(--r-full);font:500 11px/1.6 var(--mono);text-transform:uppercase;letter-spacing:.04em;border:1px solid currentColor;white-space:nowrap}.chip-out{color:var(--muted)}.chip-open{color:var(--accent)}section{padding:96px 0}@media(max-width:640px){section{padding:64px 0}}.section-head{max-width:720px;margin-bottom:40px}.section-head h2{font-size:clamp(30px,4vw,42px);line-height:1.12;margin-top:8px}.section-head p{color:var(--muted);font-size:19px;margin-top:14px}:focus-visible{outline:3px solid var(--ochre);outline-offset:2px}::selection{background:var(--ochre-soft)}[hidden]{display:none!important}.art{max-width:820px}.art .art-head{padding-top:56px}.art .art-head h1{font-size:clamp(32px,4.6vw,48px);line-height:1.1;margin-top:10px}.art .byline{margin-top:16px;font-size:15px;color:var(--muted);max-width:44em}.art .tldr{margin:32px 0 0;background:var(--paper);border:1px solid var(--line);border-left:4px solid var(--ochre);border-radius:var(--r-sm);padding:20px 24px}.art .tldr .k{font:500 13px var(--mono);color:var(--ochre-ink);margin-bottom:6px}.art .prose{display:grid;gap:18px}.art .tldr ul{margin:0;padding-left:20px;display:grid;gap:6px}.art .lead{max-width:40em;margin-bottom:20px}.art .pts{margin:20px 0 0;padding-left:20px;display:grid;gap:10px;max-width:44em}.art .pts li::marker{color:var(--accent)}.art .prose p{max-width:40em}.art>.prose{margin-top:32px}.art .toc{display:flex;flex-wrap:wrap;gap:8px}.art .toc a{display:inline-flex;gap:8px;align-items:center;min-height:40px;padding:0 14px;border:1px solid var(--line);border-radius:var(--r-full);background:var(--paper);text-decoration:none;color:var(--ink);font-size:15px}.art .toc a span{font:500 13px var(--mono);color:var(--ochre-ink)}.art .toc a:hover{border-color:var(--accent)}.art .step{padding:72px 0 0;scroll-margin-top:72px}.art .step-n{font:500 13px var(--mono);color:var(--ochre-ink)}.art .step h2{font-size:clamp(26px,3.4vw,34px);line-height:1.15;margin:6px 0 20px}.art .crumbs{font:500 13px var(--mono);color:var(--muted);display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.art .crumbs a{color:var(--muted)}.art .sub{font-size:22px;margin:40px 0 12px}.art .note{margin-top:12px;font-size:14px;color:var(--muted)}.art .do{margin:0 0 28px;padding:18px 22px;background:var(--paper);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:var(--r-sm);max-width:44em}.art .do .k{font:500 13px var(--mono);color:var(--accent);margin-bottom:8px}.art .do ol{margin:0;padding-left:22px;display:grid;gap:6px}.art .do li::marker{font:600 15px var(--mono);color:var(--accent)}.art .watch{margin-top:20px;padding:14px 18px;background:var(--accent-soft);border-radius:var(--r-sm);max-width:44em;font-size:16px}.art .deeper{margin-top:12px;font-size:15px;color:var(--muted)}.art .tbl-wrap{overflow-x:auto;margin-top:20px}.art .bench{width:100%;border-collapse:collapse;font-size:16px;background:var(--paper);border:1px solid var(--line)}.art .bench th,.art .bench td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line-soft);vertical-align:top}.art .bench thead th{font:500 13px var(--mono);color:var(--muted)}.art .fig{margin:28px 0 8px;padding:20px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-sm)}.art .fig>svg{width:100%;height:auto;display:block}.art .fig figcaption{margin-top:10px;font-size:14px;color:var(--muted)}.art .fig>svg text{font-family:var(--font);fill:var(--ink)}.art .fig>svg .lbl{font:500 12px var(--mono);fill:var(--muted);letter-spacing:.06em}.art .fig .lbl.c{fill:var(--ochre-ink)}.art .fig>svg .small{font-size:14px;fill:var(--muted)}.art .fig>svg .rowk{font-size:15px;font-weight:600}.art .fig>svg .val{font:600 15px var(--mono)}.art .fig>svg .axis{stroke:var(--hairline-strong);stroke-width:1.5}.art .fig>svg .base{stroke:var(--hairline-strong);stroke-dasharray:4 5}.art .fig>svg .band{fill:var(--ochre-soft)}.art .fig>svg .kept{fill:none;stroke:var(--accent);stroke-width:3.5;stroke-linejoin:round}.art .fig>svg .divider{stroke:var(--line);stroke-width:1}.art .fig>svg .warn-line{fill:none;stroke:var(--ochre);stroke-width:3.5;stroke-linejoin:round}.art .fig>svg .warn{fill:var(--ochre-soft);stroke:var(--ochre)}.art .fig>svg .lost-solid{fill:none;stroke:var(--neg);stroke-width:3.5;stroke-linejoin:round}.art .fig>svg .lost{fill:none;stroke:var(--neg);stroke-width:2.5;stroke-dasharray:7 6;stroke-linejoin:round}.art .fig>svg .kept-dot{fill:var(--accent)}.art .fig>svg .lost-dot{fill:var(--neg)}.art .fig>svg .kept-t{fill:var(--accent);font-weight:600}.art .fig>svg .lost-t{fill:var(--neg);font-weight:600}.art .fig>svg .bar-pd{fill:var(--accent)}.art .fig>svg .bar-bf{fill:var(--ochre)}.art .fig>svg .node{fill:var(--surface);stroke:var(--hairline-strong)}.art .fig>svg .go{fill:var(--accent-soft);stroke:var(--accent)}.art .fig>svg .stop{fill:#f6e3df;stroke:var(--neg)}.art .fig>svg .nt{font-size:16px}.art .fig>svg .strong{font-weight:700}.art .fig>svg .flow{stroke:var(--muted);stroke-width:1.5}.art .fig>svg .arrow{fill:var(--muted)}.art .fig>svg .seg-a{fill:var(--accent)}.art .fig>svg .seg-b{fill:var(--ochre)}.art .fig>svg .seg-c{fill:var(--ink)}.art .fig>svg .seg-d{fill:#7c6aa8}.art .fig>svg .segt{font-size:14px;fill:#fff;font-weight:600}.art .fig>svg .tick{stroke:var(--line)}.art .fig>svg .ct{font-size:15px;paint-order:stroke;stroke:var(--paper);stroke-width:5px;stroke-linejoin:round}.art .fig>svg .cd{font:600 14px var(--mono)}.art .fig .dot.ops{fill:var(--accent);background:var(--accent)}.art .fig .dot.pricing{fill:var(--ochre);background:var(--ochre)}.art .fig .dot.vis{fill:var(--ink);background:var(--ink)}.art .fig .dot.ratings{fill:#7c6aa8;background:#7c6aa8}.art .fig .dot.event{fill:var(--neg);background:var(--neg)}.art .fig .cal-list{display:none;list-style:none;padding:0;margin:0;gap:10px;font-size:16px}.art .fig .cal-list i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:8px}.art .fig .legend{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-wrap:wrap;gap:16px;font-size:14px;color:var(--muted)}.art .fig .legend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px}.art .cta{margin-top:72px;padding:36px;background:var(--ink);color:var(--canvas);border-radius:var(--r-sm)}.art .cta h2{font-size:clamp(26px,3.4vw,34px)}.art .cta p{margin-top:12px;color:var(--on-dark-muted);max-width:40em}.art .cta-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}.art .cta .btn-ghost{color:var(--canvas);border-color:var(--canvas)}.art .cta .btn-ghost:hover{background:var(--canvas);color:var(--ink)}.art .sources{padding-bottom:96px}.art .sources ol{padding-left:20px;display:grid;gap:8px;font-size:15px;color:var(--muted)}@media(max-width:640px){.art .art-head{padding-top:32px}.art .step{padding-top:56px}.art .cta{padding:24px}.art .fig{padding:12px;overflow-x:auto}.art .fig>svg{min-width:600px}.art .fig:not(.cal):has(>svg):before{content:"Swipe sideways to see the whole chart →";display:block;position:sticky;left:0;margin-bottom:8px;font-size:13px;color:var(--muted)}.art .fig.cal>svg{display:none}.art .fig .cal-list{display:grid}.art .bench th,.art .bench td{padding:10px;font-size:15px}}.art .qa h3{font-size:19px;margin:22px 0 4px}.art .qa p{max-width:40em}.art .fig>svg .bar-neg{fill:var(--neg)}.art .author{display:flex;gap:16px;align-items:flex-start;margin-top:40px;padding:20px 22px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-sm);max-width:44em}.art .author-av{flex:0 0 48px;height:48px;border-radius:50%;background:var(--ink);color:var(--canvas);display:flex;align-items:center;justify-content:center;font:600 18px var(--display)}.art .author p{font-size:15px;color:var(--muted)}.art .author .author-name{font-weight:600;color:var(--ink);margin-bottom:4px}.nav[data-astro-cid-5hce7sga]{position:sticky;top:0;z-index:20;background:#f6f3edf0;backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.nav-inner[data-astro-cid-5hce7sga]{display:flex;align-items:center;height:64px}.logo[data-astro-cid-5hce7sga]{font:600 22px/1 var(--display);letter-spacing:-.02em;color:var(--ink);text-decoration:none}.foot[data-astro-cid-5hce7sga]{border-top:1px solid var(--line);padding:32px 0 40px;font-size:15px;color:var(--muted)}
