:root{--accent:#0d7d6e;--bg:#fbfbfa;--surface:#f2f3f2;--surface-2:#e9ebea;--rule:#dfe3e2;--text:#14181a;--muted:#5a686d;--radius:0px;--rail:15rem;--gutter:clamp(1.25rem, 4vw, 4rem);--measure:72ch;--font-sans:"Geist Variable", ui-sans-serif, system-ui, sans-serif;--font-mono:"Geist Mono Variable", ui-monospace, SFMono-Regular, Menlo, monospace;--step--1:.8125rem;--step-0:1rem;--step-1:1.1875rem;--step-2:clamp(1.35rem, 1.1rem + .9vw, 1.75rem);--step-3:clamp(1.75rem, 1.3rem + 1.8vw, 2.5rem);--step-4:clamp(2.25rem, 1.4rem + 3.6vw, 4rem)}@media (prefers-color-scheme:dark){:root{--accent:#4ec9b0;--bg:#0a0c0d;--surface:#111416;--surface-2:#171b1d;--rule:#1f2628;--text:#e8ecee;--muted:#76858b}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--step-0);-webkit-font-smoothing:antialiased;font-synthesis-weight:none;margin:0;line-height:1.65}.shell{grid-template-columns:var(--rail) minmax(0, 1fr);min-height:100dvh;display:grid}.rail{border-right:1px solid var(--rule);padding:var(--gutter) 1.5rem;flex-direction:column;gap:2.5rem;height:100dvh;display:flex;position:sticky;top:0}.mark{border:1px solid var(--accent);width:2.25rem;height:2.25rem;color:var(--accent);font-family:var(--font-mono);letter-spacing:-.02em;flex:none;justify-content:center;align-items:center;font-size:.8125rem;font-weight:600;text-decoration:none;display:inline-flex}.rail-name{font-size:var(--step-0);letter-spacing:-.02em;color:var(--text);margin:.875rem 0 .125rem;font-weight:600;text-decoration:none;display:block}.rail-role{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin:0;font-size:.6875rem}.rail nav{flex-direction:column;gap:.125rem;display:flex}.rail nav a{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--muted);align-items:baseline;gap:.75rem;padding:.45rem 0;font-size:.75rem;text-decoration:none;display:flex}.rail nav a .idx{color:var(--rule);font-size:.625rem}.rail nav a:hover{color:var(--text)}.rail nav a[aria-current=page],.rail nav a[aria-current=page] .idx{color:var(--accent)}.rail-foot{font-family:var(--font-mono);color:var(--muted);border-top:1px solid var(--rule);flex-direction:column;gap:.35rem;padding-top:1.25rem;font-size:.6875rem;display:flex}.rail-foot a{color:var(--muted);text-decoration:none}.rail-foot a:hover{color:var(--accent)}.main{min-width:0}.band{padding:clamp(3rem, 7vw, 6rem) var(--gutter);border-bottom:1px solid var(--rule)}.band:last-child{border-bottom:0}.prose-width{max-width:var(--measure)}.sec-head{border-bottom:1px solid var(--rule);align-items:baseline;gap:1rem;margin-bottom:2.5rem;padding-bottom:.875rem;display:flex}.sec-head h2{font-size:var(--step-2);letter-spacing:-.025em;margin:0 auto 0 0;font-weight:600}.sec-head .more{font-family:var(--font-mono);color:var(--muted);white-space:nowrap;font-size:.75rem;text-decoration:none}.sec-head .more:hover{color:var(--accent)}h1{font-size:var(--step-3);letter-spacing:-.03em;margin:0 0 1rem;font-weight:600;line-height:1.1}h2{font-size:var(--step-2);letter-spacing:-.025em;font-weight:600}h3{font-size:var(--step-1);letter-spacing:-.015em;font-weight:600}a{color:var(--accent);text-underline-offset:3px}p{margin:0 0 1.25rem}.lede{font-size:var(--step-1);color:var(--muted);max-width:60ch;line-height:1.6}.meta{font-family:var(--font-mono);color:var(--muted);letter-spacing:.01em;font-size:.75rem}.meta .sep{opacity:.4;padding:0 .5rem}.chip{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--accent);border:1px solid var(--accent);padding:.15rem .45rem;font-size:.625rem}.entries{margin:0;padding:0;list-style:none}.entries>li{border-bottom:1px solid var(--rule)}.entries>li:last-child{border-bottom:0}.entry{color:inherit;grid-template-columns:3.5rem minmax(0,1fr) auto;align-items:baseline;gap:0 1.5rem;padding:1.5rem 0;text-decoration:none;display:grid}.entry .num{font-family:var(--font-mono);color:var(--rule);font-variant-numeric:tabular-nums;font-size:.75rem}.entry .body{min-width:0}.entry h3{font-size:var(--step-1);letter-spacing:-.015em;margin:0 0 .3rem}.entry p{color:var(--muted);max-width:62ch;margin:0 0 .5rem;font-size:.9375rem}.entry .date{font-family:var(--font-mono);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.75rem}.entry:hover h3{color:var(--accent)}.link-grid{border-top:1px solid var(--rule);grid-template-columns:repeat(auto-fill,minmax(min(26rem,100%),1fr));gap:0;margin:0;padding:0;list-style:none;display:grid}.link-grid>li{border-bottom:1px solid var(--rule);border-right:1px solid var(--rule)}.link-card{color:inherit;height:100%;padding:1.5rem;text-decoration:none;display:block}.link-card h3{font-size:var(--step-0);letter-spacing:-.01em;margin:0 0 .5rem;font-weight:600;line-height:1.4}.link-card:hover h3{color:var(--accent)}.link-card .host{font-family:var(--font-mono);color:var(--muted);text-transform:lowercase;font-size:.6875rem}.link-card .note{color:var(--muted);max-width:48ch;margin:.625rem 0 0;font-size:.875rem}.link-card .note>:last-child{margin-bottom:0}.article-head{padding:clamp(3rem, 7vw, 5.5rem) var(--gutter) 2.5rem;border-bottom:1px solid var(--rule)}.article-head h1{max-width:20ch;font-size:var(--step-4)}.article-body{padding:3rem var(--gutter) 5rem;max-width:var(--measure)}.prose{font-size:1.0625rem;line-height:1.75}.prose>:first-child{margin-top:0}.prose h2{margin:3rem 0 1rem}.prose h3{margin:2.25rem 0 .75rem}.prose img{max-width:100%;height:auto}.prose blockquote{border-left:2px solid var(--accent);color:var(--muted);margin:2rem 0;padding-left:1.25rem}.prose code{font-family:var(--font-mono);background:var(--surface);border:1px solid var(--rule);padding:.1em .35em;font-size:.875em}.prose pre{background:var(--surface);border:1px solid var(--rule);margin:1.75rem 0;padding:1.25rem;font-size:.875rem;line-height:1.6;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;border:0;padding:0}.prose table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;margin:1.75rem 0;font-size:.9375rem}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--rule);padding:.6rem .75rem}.prose th{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:.6875rem;font-weight:500}.prose hr{border:0;border-top:1px solid var(--rule);margin:3rem 0}.prose ul,.prose ol{padding-left:1.25rem}.prose li{margin-bottom:.5rem}@media (prefers-color-scheme:dark){.astro-code,.astro-code span{color:var(--shiki-dark)!important;background-color:#0000!important}}.empty{color:var(--muted);font-family:var(--font-mono);font-size:.875rem}@media (width<=60rem){:root{--rail:0}.shell{grid-template-columns:minmax(0,1fr)}.rail{height:auto;padding:1rem var(--gutter);border-right:0;border-bottom:1px solid var(--rule);flex-flow:wrap;align-items:center;gap:1rem;position:static}.rail-id{align-items:center;gap:.75rem;margin-right:auto;display:flex}.rail-name{margin:0}.rail-role,.rail-foot{display:none}.rail nav{flex-direction:row;gap:1rem;width:100%;margin-top:0;overflow-x:auto}.rail nav a .idx{display:none}.entry{grid-template-columns:minmax(0,1fr);gap:.25rem}.entry .num{display:none}.entry .date{grid-column:1}.link-grid>li{border-right:0}}.hero{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:center;gap:clamp(2rem,5vw,5rem);min-height:min(38rem,72dvh);display:grid}.hero-copy h1{font-size:var(--step-4);max-width:16ch;margin-bottom:1.25rem}.hero-copy .lede{max-width:42ch;margin-bottom:1.75rem}.cta{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--bg);background:var(--accent);border:1px solid var(--accent);white-space:nowrap;align-items:center;gap:.6rem;padding:.7rem 1.2rem;font-size:.8125rem;text-decoration:none;display:inline-flex}.cta:hover{color:var(--accent);background:0 0}@media (width<=60rem){.hero{grid-template-columns:minmax(0,1fr);min-height:0}.hero-copy h1{max-width:100%}}.article-layout{grid-template-columns:minmax(0, var(--measure)) minmax(0, 15rem);padding:3rem var(--gutter) 6rem;align-items:start;gap:clamp(2rem,5vw,5rem);display:grid}.article-layout .article-body{max-width:none;padding:0}.toc{top:var(--gutter);border-left:1px solid var(--rule);padding-left:1.25rem;position:sticky}.toc-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:0 0 .875rem;font-size:.625rem}.toc ol{counter-reset:toc;flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.toc li{counter-increment:toc}.toc a{color:var(--muted);gap:.7rem;font-size:.8125rem;line-height:1.4;text-decoration:none;display:flex}.toc a:before{content:counter(toc, decimal-leading-zero);font-family:var(--font-mono);color:var(--rule);flex:none;padding-top:.15em;font-size:.625rem}.toc a:hover{color:var(--accent)}@media (width<=68rem){.article-layout{grid-template-columns:minmax(0,1fr)}.toc{display:none}}:root{--dur-fast:.15s;--dur-normal:.3s;--dur-slow:.55s;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-sharp:cubic-bezier(.4, 0, .2, 1)}.progress-track{background:var(--rule);flex:1;width:1px;min-height:3rem;margin:0 auto;position:relative}.progress-fill{background:var(--accent);transform-origin:top;position:absolute;inset:0;transform:scaleY(0)}@supports (animation-timeline:scroll()){@media (prefers-reduced-motion:no-preference){.progress-fill{animation:linear both fill-down scroll(root)}}}@keyframes fill-down{to{transform:scaleY(1)}}@media (width<=60rem){.progress-track{z-index:50;width:auto;height:2px;min-height:0;margin:0;position:fixed;top:0;left:0;right:0}.progress-fill{transform-origin:0;transform:scaleX(0)}@supports (animation-timeline:scroll()){@media (prefers-reduced-motion:no-preference){.progress-fill{animation-name:fill-across}}}}@keyframes fill-across{to{transform:scaleX(1)}}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.hero-figure{will-change:transform, opacity;animation:linear both drift view();animation-range:exit}}}@keyframes drift{to{opacity:.25;transform:translateY(-3.5rem)}}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.entries>li,.link-grid>li{animation:linear both rise view();animation-range:entry entry 22%}.prose>:is(h2,h3,p,ul,ol,pre,blockquote,table){animation:linear both fade view();animation-range:entry entry 16%}}}@keyframes rise{0%{opacity:0;transform:translateY(.875rem)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}@view-transition{navigation:auto}@media (prefers-reduced-motion:no-preference){.rail{view-transition-name:rail}::view-transition-group(rail){animation-duration:var(--dur-fast)}::view-transition-old(root){animation:vt-out var(--dur-fast) var(--ease-sharp) both}::view-transition-new(root){animation:vt-in var(--dur-normal) var(--ease-out) both}}@keyframes vt-out{to{opacity:0}}@keyframes vt-in{0%{opacity:0;transform:translateY(.5rem)}}@media (prefers-reduced-motion:no-preference){.article-head>*,.band>.sec-head,.hero-copy>*{transition:opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out)}@starting-style{.article-head>*,.band>.sec-head,.hero-copy>*{opacity:0;transform:translateY(.5rem)}}}.rail nav a,.rail nav a .idx{transition:color var(--dur-fast) var(--ease-sharp)}.entry,.link-card{transition:background-color var(--dur-normal) var(--ease-out)}.entry:hover,.link-card:hover{background:var(--surface)}.entry h3,.link-card h3{transition:color var(--dur-fast) var(--ease-sharp)}.entry .num{transition:color var(--dur-normal) var(--ease-out)}.entry:hover .num{color:var(--accent)}.arrow{transition:transform var(--dur-normal) var(--ease-out);display:inline-block}.link-card:hover .arrow{transform:translate(2px,-2px)}button{transition:transform var(--dur-fast) var(--ease-sharp), background-color var(--dur-fast) var(--ease-sharp), border-color var(--dur-fast) var(--ease-sharp)}button:active:not(:disabled){transform:translateY(1px)}:is(a,button,input,textarea,select,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}.progress-fill{transform:none}}@media print{.entries>li,.link-grid>li,.prose>*,.hero-figure{opacity:1!important;animation:none!important;transform:none!important}.rail,.progress-track{display:none!important}.shell{grid-template-columns:1fr}}
