@font-face{font-family:bricolage grotesque;src:url(/fonts/bricolage-grotesque.woff2)format("woff2");font-weight:200 800;font-stretch:75% 100%;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"source serif 4";src:url(/fonts/source-serif-4.woff2)format("woff2");font-weight:200 900;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"source serif 4";src:url(/fonts/source-serif-4-italic.woff2)format("woff2");font-weight:200 900;font-style:italic;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,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;src:url(/fonts/jetbrains-mono.woff2)format("woff2");font-weight:100 800;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-display:"Bricolage Grotesque", ui-sans-serif, system-ui, "Segoe UI", sans-serif;--font-text:"Source Serif 4", Charter, Georgia, "Times New Roman", serif;--font-mono:"JetBrains Mono", ui-monospace, "Cascadia Mono", Menlo, Consolas, monospace;--wrap:72rem;--measure:68ch;--radius:16px;--ease:cubic-bezier(.2, .7, .2, 1);--bg:#f1f6f3;--bg-2:#e6eeea;--surface:#ffffff;--surface-2:#f6faf8;--fg:#0c1a16;--fg-2:#24362f;--muted:#586c65;--line:#d5e1db;--line-strong:#b5c7bf;--accent:#04805e;--accent-fill:#0cb383;--accent-soft:#0cb3831c;--accent-ink:#ffffff;--accent-2:#a35400;--accent-2-fill:#ffb341;--accent-2-soft:#ffb34126;--danger:#c22c4a;--danger-soft:#c22c4a14;--code-bg:#0e1b18;--code-head:#142521;--code-line:#213630;--inline-code-bg:#dfeae5;--inline-code-fg:#075b44;--shadow-sm:0 1px 2px #0c1a160d;--shadow:0 1px 2px #0c1a160f, 0 18px 40px -22px #0c3a2c55;--glow:#0cb38326;--glow-2:#ffb3411f;color-scheme:light}:root[data-theme=dark]{--bg:#07100e;--bg-2:#0b1714;--surface:#0e1c19;--surface-2:#11221e;--fg:#e7f3ee;--fg-2:#c0d3cb;--muted:#84a097;--line:#1a2f2a;--line-strong:#2a4740;--accent:#3ee2ae;--accent-fill:#27d39d;--accent-soft:#27d39d1a;--accent-ink:#03140e;--accent-2:#ffbd57;--accent-2-fill:#ffb341;--accent-2-soft:#ffb3411a;--danger:#ff6d84;--danger-soft:#ff6d8414;--code-bg:#050d0b;--code-head:#0a1613;--code-line:#192b26;--inline-code-bg:#132621;--inline-code-fg:#7ff0c9;--shadow-sm:0 1px 2px #0008;--shadow:0 1px 2px #0009, 0 22px 48px -24px #000d;--glow:#27d39d2e;--glow-2:#ffb34117;color-scheme:dark}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#07100e;--bg-2:#0b1714;--surface:#0e1c19;--surface-2:#11221e;--fg:#e7f3ee;--fg-2:#c0d3cb;--muted:#84a097;--line:#1a2f2a;--line-strong:#2a4740;--accent:#3ee2ae;--accent-fill:#27d39d;--accent-soft:#27d39d1a;--accent-ink:#03140e;--accent-2:#ffbd57;--accent-2-fill:#ffb341;--accent-2-soft:#ffb3411a;--danger:#ff6d84;--danger-soft:#ff6d8414;--code-bg:#050d0b;--code-head:#0a1613;--code-line:#192b26;--inline-code-bg:#132621;--inline-code-fg:#7ff0c9;--shadow-sm:0 1px 2px #0008;--shadow:0 1px 2px #0009, 0 22px 48px -24px #000d;--glow:#27d39d2e;--glow-2:#ffb34117;color-scheme:dark}}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{margin:0;min-height:100vh;display:flex;flex-direction:column;color:var(--fg-2);background:radial-gradient(56rem 28rem at 92% -6rem,var(--glow),transparent 70%),radial-gradient(40rem 22rem at -8% 2rem,var(--glow-2),transparent 70%),var(--bg);background-repeat:no-repeat;font:1.0625rem/1.65 var(--font-text);font-optical-sizing:auto;overflow-wrap:break-word;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}main{flex:1}.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 16px}a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}img,svg{max-width:100%}::selection{background:var(--accent-2-fill);color:#1b1202}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}h1,h2,h3,h4{font-family:var(--font-display);color:var(--fg);letter-spacing:-.012em;line-height:1.15}.nw{white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.skip{position:absolute;left:16px;top:-3rem;z-index:50;padding:.5rem .8rem;background:var(--accent-fill);color:var(--accent-ink);border-radius:8px;font-family:var(--font-display)}.skip:focus{top:.75rem}.site-header{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 80%,transparent);-webkit-backdrop-filter:saturate(1.4)blur(14px);backdrop-filter:saturate(1.4)blur(14px);border-bottom:1px solid color-mix(in srgb,var(--line) 70%,transparent)}.site-header .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.5rem;min-height:4rem;padding-top:.55rem;padding-bottom:.55rem}.brand{display:inline-flex;align-items:center;gap:.6rem;text-decoration:none;color:var(--fg)}.brand .mark{width:34px;height:34px;flex:none;transition:transform .5s var(--ease)}.brand:hover .mark{transform:rotate(-8deg)scale(1.05)}.wordmark{font:750 1.3rem/1 var(--font-display);letter-spacing:-.02em;font-stretch:92%}.wordmark i{font-style:normal;color:var(--accent)}.site-nav{display:flex;gap:.2rem;margin-left:auto;font:500 .95rem/1 var(--font-display)}.site-nav a{position:relative;color:var(--muted);text-decoration:none;padding:.55rem .7rem;border-radius:10px;transition:color .2s,background-color .2s}.site-nav a:hover{color:var(--fg);background:var(--accent-soft)}.site-nav a[aria-current=page]{color:var(--fg)}.site-nav a[aria-current=page]::after{content:"";position:absolute;left:.7rem;right:.7rem;bottom:.2rem;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--accent-fill),var(--accent-2-fill))}.theme-toggle{display:grid;place-items:center;width:40px;height:40px;padding:0;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--fg-2);cursor:pointer;box-shadow:var(--shadow-sm);transition:border-color .2s,color .2s,transform .2s var(--ease)}.theme-toggle:hover{color:var(--accent);border-color:var(--line-strong)}.theme-toggle:active{transform:scale(.94)}.theme-toggle svg{width:19px;height:19px;display:none}.theme-toggle[data-mode=system] .i-system,.theme-toggle[data-mode=light] .i-light,.theme-toggle[data-mode=dark] .i-dark{display:block}@media(max-width:640px){.site-header .wrap{gap:.1rem .75rem}.theme-toggle{margin-left:auto}.site-nav{order:3;width:100%;margin:0 0 0 -.7rem;overflow-x:auto}}.progress{position:fixed;inset:0 0 auto;height:3px;z-index:30;pointer-events:none}.progress span{display:block;height:100%;transform:scaleX(0);transform-origin:0 50%;background:linear-gradient(90deg,var(--accent-fill),var(--accent-2-fill))}.icon{width:1.1em;height:1.1em;flex:none}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.72rem 1.1rem;border-radius:12px;font:600 .98rem/1 var(--font-display);text-decoration:none;border:1px solid transparent;background:var(--accent-fill);color:var(--accent-ink);box-shadow:0 8px 22px -12px var(--accent-fill);transition:transform .2s var(--ease),box-shadow .2s,background-color .2s}.btn:hover{transform:translateY(-2px);box-shadow:0 14px 28px -14px var(--accent-fill)}.btn .icon{transition:transform .25s var(--ease)}.btn:hover .icon{transform:translateX(3px)}.btn-ghost{background:var(--surface);color:var(--fg);border-color:var(--line);box-shadow:var(--shadow-sm)}.btn-ghost:hover{border-color:var(--line-strong);box-shadow:var(--shadow)}.chips{display:flex;flex-wrap:wrap;gap:.4rem;padding:0;margin:0;list-style:none}.chip{display:inline-flex;align-items:center;gap:0;padding:.22rem .62rem;border-radius:999px;font:500 .8rem/1.3 var(--font-display);color:var(--accent);background:var(--accent-soft);border:1px solid transparent;text-decoration:none;transition:border-color .2s,transform .2s var(--ease),background-color .2s}.chip::before{content:"#";opacity:.55;margin-right:.1em}.chip:hover{border-color:color-mix(in srgb,var(--accent) 45%,transparent);transform:translateY(-1px)}.chip .n{margin-left:.4rem;color:var(--muted);font-variant-numeric:tabular-nums}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .55rem;font:500 .86rem/1.4 var(--font-display);color:var(--muted)}.meta .dot{width:3px;height:3px;border-radius:50%;background:currentColor;opacity:.6}.hero{position:relative;display:grid;grid-template-columns:minmax(0,1.2fr)minmax(0,1fr);gap:2.5rem;align-items:center;padding:4.5rem 0 3.5rem}.hero::before{content:"";position:absolute;inset:-1rem -16px 0;z-index:-1;background-image:radial-gradient(var(--line-strong) 1.1px,transparent 1.2px);background-size:24px 24px;-webkit-mask-image:radial-gradient(ellipse 70% 80% at 72% 45%,#000 15%,transparent 72%);mask-image:radial-gradient(ellipse 70% 80% at 72% 45%,#000 15%,transparent 72%);opacity:.75}.eyebrow{display:inline-flex;align-items:center;gap:.55rem;margin:0 0 1.1rem;padding:.32rem .75rem .32rem .55rem;border:1px solid var(--line);border-radius:999px;background:var(--surface);box-shadow:var(--shadow-sm);font:600 .78rem/1 var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-2)}.eyebrow .pulse{width:8px;height:8px;border-radius:50%;background:var(--accent-2-fill);box-shadow:0 0 0 0 var(--accent-2-fill)}@media(prefers-reduced-motion:no-preference){.eyebrow .pulse{animation:ping 2.4s var(--ease)infinite}}@keyframes ping{0%{box-shadow:0 0 color-mix(in srgb,var(--accent-2-fill) 70%,transparent)}80%,100%{box-shadow:0 0 0 9px transparent}}.hero h1{margin:0;font-size:clamp(2.6rem,2rem + 3.6vw,4.6rem);font-weight:800;line-height:1;letter-spacing:-.028em;font-stretch:96%}.hero h1 .name{background:linear-gradient(100deg,var(--accent) 15%,var(--accent-fill) 50%,var(--accent-2-fill) 100%);-webkit-background-clip:text;background-clip:text;color:transparent}.lede{margin:1.3rem 0 0;max-width:34rem;font-size:1.28rem;line-height:1.55;color:var(--fg-2)}.lede p{margin:0}.hero-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.8rem}.stats{display:flex;flex-wrap:wrap;gap:1.6rem;margin:2rem 0 0;padding:0;list-style:none;font-family:var(--font-display)}.stats b{display:block;font-size:1.6rem;line-height:1;color:var(--fg);letter-spacing:-.015em}.stats span{font-size:.82rem;color:var(--muted)}.hero-art{position:relative;display:grid;place-items:center}.hero-art::before{content:"";position:absolute;width:74%;aspect-ratio:1;border-radius:50%;z-index:-1;background:radial-gradient(circle at 34% 30%,color-mix(in srgb,var(--accent-fill) 55%,#fff) 0%,var(--accent-fill) 32%,color-mix(in srgb,var(--accent-fill) 30%,transparent) 62%,transparent 72%);filter:blur(26px);opacity:.45}.graph{width:100%;max-width:440px;height:auto;overflow:visible}.graph .edge{stroke:var(--line-strong);stroke-width:1.4;fill:none}.graph .edge.hot{stroke:var(--accent-fill);stroke-width:1.8;stroke-dasharray:5 7}.graph .node{fill:var(--surface);stroke:var(--line-strong);stroke-width:1.6}.graph .node.on{fill:var(--accent-fill);stroke:none}.graph .node.warm{fill:var(--accent-2-fill);stroke:none}.graph .ring{fill:none;stroke:var(--accent-fill);stroke-width:1.4;opacity:.5}.graph .label{font:500 11px var(--font-mono);fill:var(--muted)}@media(prefers-reduced-motion:no-preference){.graph .edge.hot{animation:flow 2.8s linear infinite}.graph .blink{animation:blink 3.2s ease-in-out infinite}.graph .blink.d2{animation-delay:1.1s}.graph .blink.d3{animation-delay:2.2s}.graph .ring{transform-box:fill-box;transform-origin:center;animation:ring 3.6s var(--ease)infinite}}@keyframes flow{to{stroke-dashoffset:-24}}@keyframes blink{0%,100%{opacity:1}50%{opacity:.35}}@keyframes ring{0%{transform:scale(.6);opacity:.7}100%{transform:scale(1.5);opacity:0}}@media(max-width:860px){.hero{grid-template-columns:1fr;padding-top:2.8rem;gap:1.5rem}.hero-art{order:-1;justify-items:start}.graph{max-width:230px}.hero-art::before{width:180px;left:10px}}.home-grid{display:grid;grid-template-columns:minmax(0,1fr)20rem;gap:2.5rem;padding-bottom:4rem}@media(max-width:960px){.home-grid{grid-template-columns:minmax(0,1fr)}}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin:0 0 1.1rem}.section-head h2{margin:0;font-size:1.45rem}.section-head a{font:600 .92rem/1 var(--font-display);text-decoration:none;display:inline-flex;align-items:center;gap:.35rem}.cards{display:grid;gap:1rem;padding:0;margin:0;list-style:none}.card{position:relative;padding:1.35rem 1.45rem 1.25rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:transform .3s var(--ease),border-color .3s,box-shadow .3s}.card:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--accent) 40%,var(--line));box-shadow:var(--shadow)}.card h3{margin:.45rem 2rem .45rem 0;font-size:1.32rem;font-weight:700;line-height:1.22}.card h3 a{color:inherit;text-decoration:none}.card h3 a::after{content:"";position:absolute;inset:0;border-radius:inherit}.card:hover h3{color:var(--accent)}.card p{margin:0 0 .9rem;color:var(--fg-2);font-size:1.02rem;line-height:1.55}.card .chips{position:relative;z-index:1}.card-arrow{position:absolute;top:1.35rem;right:1.3rem;width:22px;height:22px;color:var(--muted);transition:transform .3s var(--ease),color .3s}.card:hover .card-arrow{color:var(--accent);transform:translate(3px,-3px)}.card.featured{padding:1.7rem 1.8rem 1.5rem;background:linear-gradient(160deg,color-mix(in srgb,var(--accent-fill) 9%,var(--surface)) 0%,var(--surface) 55%)}.card.featured h3{font-size:1.7rem}.badge{display:inline-flex;align-items:center;padding:.15rem .5rem;border-radius:6px;background:var(--accent-2-soft);color:var(--accent-2);font:700 .7rem/1.3 var(--font-display);letter-spacing:.08em;text-transform:uppercase}.side{display:grid;gap:1rem;align-content:start}.panel{padding:1.25rem 1.3rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.panel h2{display:flex;align-items:center;gap:.5rem;margin:0 0 .85rem;font-size:.8rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.panel h2 .icon{color:var(--accent)}.now{margin:0;padding:0;list-style:none}.now li{position:relative;padding:0 0 .7rem 1.2rem;line-height:1.45;font-size:.98rem}.now li::before{content:"";position:absolute;left:0;top:.5em;width:7px;height:7px;border-radius:2px;background:var(--accent-fill);transform:rotate(45deg)}.now li:nth-child(2n)::before{background:var(--accent-2-fill)}.now b{color:var(--fg);font-weight:600}.panel .small{margin:.2rem 0 0;font:500 .8rem/1.4 var(--font-display);color:var(--muted)}.panel p{margin:0 0 .9rem;font-size:.98rem;line-height:1.5}.feed-url{display:block;margin-top:.8rem;padding:.45rem .6rem;border-radius:8px;background:var(--bg-2);font:500 .78rem/1.3 var(--font-mono);color:var(--muted);overflow-wrap:anywhere}.panel-rss{background:linear-gradient(150deg,color-mix(in srgb,var(--accent-2-fill) 13%,var(--surface)),var(--surface) 70%)}.page-head{padding:3.2rem 0 1.8rem}.page-head h1{margin:0;font-size:clamp(2.2rem,1.8rem + 2vw,3.2rem);font-weight:800;letter-spacing:-.025em}.page-head p{margin:.7rem 0 0;max-width:40rem;font-size:1.15rem;color:var(--muted)}.kicker{margin:0 0 .8rem;font:700 .78rem/1 var(--font-display);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.year{display:grid;grid-template-columns:7rem minmax(0,1fr);gap:1rem;padding:1.4rem 0;border-top:1px solid var(--line)}.year h2{margin:.2rem 0 0;font-size:2rem;font-weight:800;color:transparent;-webkit-text-stroke:1.2px var(--accent);letter-spacing:-.03em}.rows{list-style:none;margin:0;padding:0}.rows>li{display:grid;grid-template-columns:4.6rem minmax(0,1fr)auto;gap:1rem;align-items:baseline;padding:.7rem .8rem;margin:0 -.8rem;border-radius:12px;transition:background-color .2s}.rows>li:hover{background:var(--surface)}.rows time{font:500 .82rem/1.4 var(--font-mono);color:var(--muted)}.rows>li>a{font:600 1.12rem/1.35 var(--font-display);color:var(--fg);text-decoration:none}.rows>li>a:hover{color:var(--accent)}.rows .chips{justify-content:flex-end}@media(max-width:720px){.year{grid-template-columns:1fr;gap:.2rem}.rows>li{grid-template-columns:4.2rem minmax(0,1fr)}.rows .chips{display:none}}.tag-cloud{display:flex;flex-wrap:wrap;gap:.6rem;padding:0 0 4rem;margin:0;list-style:none}.tag-cloud .chip{font-size:1rem;padding:.45rem .9rem}.projects{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,19rem),1fr));gap:1rem;padding:0 0 4rem;margin:0;list-style:none}.project{display:flex;flex-direction:column;padding:1.4rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:transform .3s var(--ease),box-shadow .3s,border-color .3s}.project:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}.project-top{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin-bottom:.7rem}.project h2{margin:0;font:700 1.3rem/1.2 var(--font-mono);letter-spacing:-.02em}.project p{margin:0 0 1rem;font-size:1rem;line-height:1.55}.project ul{margin:0 0 1.1rem;padding-left:1.1rem;font-size:.95rem;line-height:1.5}.project li::marker{color:var(--accent)}.project-foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:.5rem;font:500 .82rem/1 var(--font-display);color:var(--muted)}.lang{display:inline-flex;align-items:center;gap:.4rem}.lang::before{content:"";width:10px;height:10px;border-radius:50%;background:var(--c,var(--accent-fill))}.lock{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .5rem;border-radius:6px;background:var(--bg-2)}.post-head{padding:3.4rem 0 2rem}.post-head h1{margin:.9rem 0 0;font-size:clamp(2.15rem,1.6rem + 2.6vw,3.35rem);font-weight:800;line-height:1.06;letter-spacing:-.022em;font-stretch:96%;text-wrap:balance}.post-head .desc{margin:1rem 0 1.2rem;font-size:1.24rem;line-height:1.55;color:var(--muted);text-wrap:pretty}.post-layout{display:grid;grid-template-columns:minmax(0,var(--measure));justify-content:center;column-gap:4rem;font-size:1.14rem}.post-layout>*{min-width:0;grid-column:1}@media(min-width:1140px){.post-layout.has-toc{grid-template-columns:minmax(0,var(--measure))15.5rem}.post-layout.has-toc .toc{grid-column:2;grid-row:1/span 3;align-self:start;position:sticky;top:5.5rem;margin-top:3.6rem;max-height:calc(100vh - 7rem);overflow:auto}}.toc{font-family:var(--font-display);font-size:.9rem;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:var(--shadow-sm);margin:0 0 2rem}.toc summary{display:flex;align-items:center;gap:.5rem;padding:.8rem 1rem;cursor:pointer;list-style:none;font-weight:700;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.toc summary::-webkit-details-marker{display:none}.toc summary .chev{margin-left:auto;width:16px;height:16px;transition:transform .25s var(--ease)}.toc[open] summary .chev{transform:rotate(180deg)}.toc nav{padding:0 1rem .9rem}.toc ul{list-style:none;margin:0;padding:0}.toc ul ul{padding-left:.85rem}.toc a{display:block;padding:.3rem 0 .3rem .75rem;border-left:2px solid var(--line);color:var(--muted);text-decoration:none;line-height:1.35;transition:color .2s,border-color .2s}.toc ul ul a{font-size:.85rem}.toc a:hover{color:var(--fg)}.toc a.active{color:var(--accent);border-left-color:var(--accent-fill);font-weight:600}.prose{line-height:1.75;color:var(--fg-2)}.prose>:first-child{margin-top:0}.prose p,.prose ul,.prose ol{margin:0 0 1.2em}.prose h2{position:relative;margin:2.3em 0 .7em;font-size:1.62em;font-weight:750;scroll-margin-top:5.5rem}.prose h3{position:relative;margin:1.9em 0 .55em;font-size:1.22em;font-weight:700;scroll-margin-top:5.5rem}.prose h2::before{content:"";display:block;width:2.2rem;height:3px;margin-bottom:.7rem;border-radius:3px;background:linear-gradient(90deg,var(--accent-fill),var(--accent-2-fill))}.anchor{margin-left:.35rem;padding:0 .2rem;color:var(--accent);text-decoration:none;font-weight:500;opacity:0;transition:opacity .2s}.prose h2:hover .anchor,.prose h3:hover .anchor,.anchor:focus-visible{opacity:.75}@media(hover:none){.anchor{opacity:.35}}.prose a{text-decoration-color:color-mix(in srgb,var(--accent) 45%,transparent)}.prose a:hover{text-decoration-color:var(--accent)}.prose strong{color:var(--fg);font-weight:650}.prose ul,.prose ol{padding-left:1.4em}.prose li{margin:.35em 0;padding-left:.2em}.prose ul li::marker{color:var(--accent-fill)}.prose ol li::marker{color:var(--accent);font:700 .9em var(--font-display)}.prose blockquote{margin:1.6em 0;padding:.9em 1.2em;border-left:3px solid var(--accent-2-fill);border-radius:0 12px 12px 0;background:var(--accent-2-soft);font-style:italic;color:var(--fg)}.prose blockquote p:last-child{margin-bottom:0}.prose hr{height:1px;border:0;margin:2.6em 0;background:linear-gradient(90deg,transparent,var(--line-strong),transparent)}.prose img{border-radius:12px}code,kbd,pre{font-family:var(--font-mono);font-variant-ligatures:none}:not(pre)>code{padding:.12em .38em;border-radius:6px;font-size:.82em;background:var(--inline-code-bg);color:var(--inline-code-fg);border:1px solid color-mix(in srgb,var(--accent) 16%,transparent);white-space:break-spaces}h2 code,h3 code{font-size:.85em}kbd{display:inline-block;padding:.08em .45em;margin:0 .08em;font-size:.78em;line-height:1.5;color:var(--fg);background:var(--surface);border:1px solid var(--line-strong);border-bottom-width:3px;border-radius:7px}.table-wrap{margin:1.7em 0;overflow-x:auto;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:var(--shadow-sm)}.table-wrap table{width:100%;border-collapse:collapse;font-size:.92em;line-height:1.5}.table-wrap th{padding:.75em 1em;text-align:left;font:700 .76em/1.3 var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:var(--bg-2);border-bottom:1px solid var(--line);white-space:nowrap}.table-wrap td{padding:.7em 1em;border-bottom:1px solid var(--line);vertical-align:top}.table-wrap tr:last-child td{border-bottom:0}.table-wrap tbody tr:hover td{background:var(--surface-2)}.callout{--c:var(--accent);--c-fill:var(--accent-fill);--c-soft:var(--accent-soft);margin:1.7em 0;padding:1em 1.2em 1.05em;border:1px solid color-mix(in srgb,var(--c-fill) 30%,transparent);border-radius:14px;background:var(--c-soft);font-size:.95em;line-height:1.65;position:relative;overflow:hidden}.callout::before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--c-fill)}.callout-tip{--c:var(--accent-2);--c-fill:var(--accent-2-fill);--c-soft:var(--accent-2-soft)}.callout-warning{--c:var(--danger);--c-fill:var(--danger);--c-soft:var(--danger-soft)}.callout-title{display:flex;align-items:center;gap:.5rem;margin-bottom:.4em;font:700 .76rem/1.2 var(--font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--c)}.callout-title .icon{width:18px;height:18px}.callout-body>:last-child{margin-bottom:0}.callout-body p{margin-bottom:.7em}.code{margin:1.7em 0;border:1px solid var(--code-line);border-radius:14px;background:var(--code-bg);box-shadow:var(--shadow);overflow:hidden}.code figcaption{display:flex;align-items:center;gap:.6rem;min-height:2.5rem;padding:.35rem .45rem .35rem 1rem;background:var(--code-head);border-bottom:1px solid var(--code-line);font:500 .76rem/1.2 var(--font-mono);color:#8aa49b}.code-title{display:inline-flex;flex:1;align-items:center;gap:.5rem;min-width:0;color:#dfeee8}.code-title::before{content:"";width:8px;height:8px;flex:none;border-radius:50%;background:#27d39d;box-shadow:0 0 10px #27d39d99}.code-title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.code-lang{padding:.18rem .45rem;border-radius:6px;background:#ffffff0d;text-transform:lowercase}.copy{display:inline-flex;align-items:center;gap:.35rem;padding:.32rem .6rem;border:1px solid #ffffff1f;border-radius:8px;background:0 0;color:#cfe2db;font:600 .74rem/1 var(--font-display);cursor:pointer;transition:background-color .2s,border-color .2s,color .2s}.copy:hover{background:#ffffff12;border-color:#ffffff38}.copy.done{color:#27d39d;border-color:#27d39d66}.copy svg{width:14px;height:14px}.code pre{margin:0;padding:1rem 1.15rem 1.1rem;overflow-x:auto;background:0 0!important;color:#d8e6e0;font-size:.8em;line-height:1.7;tab-size:2;scrollbar-color:#2a4740 transparent}.code pre code{display:block;width:max-content;min-width:100%}.code .highlight{margin:0}.chroma{color:#d8e6e0;background:0 0}.chroma .line{display:block}.chroma .hl{display:block;margin:0 -1.15rem;padding:0 1.15rem;background:#27d39d14;box-shadow:inset 3px 0 #27d39d}.chroma .ln,.chroma .lnt{color:#4f6a62;margin-right:.9rem}.chroma .err{color:#ff7f92}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cpf{color:#6f8c83;font-style:italic}.chroma .cp{color:#6f8c83}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .ow{color:#55e0b2}.chroma .kt{color:#7cc8ff}.chroma .nb,.chroma .bp{color:#7cc8ff}.chroma .nf,.chroma .fm{color:#9bd3ff}.chroma .na,.chroma .py{color:#c7a9ff}.chroma .nt{color:#55e0b2}.chroma .nc,.chroma .no,.chroma .ne,.chroma .nd,.chroma .nl{color:#ffd17a}.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi,.chroma .vm{color:#f3a6d6}.chroma .nn,.chroma .nx,.chroma .ni{color:#d8e6e0}.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .sh,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss{color:#ffc46a}.chroma .se,.chroma .si{color:#ff9f7f}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo,.chroma .l,.chroma .ld{color:#ff9f7f}.chroma .o{color:#8fdcc2}.chroma .p{color:#93aaa2}.chroma .gd{color:#ff8b9a;background:#ff6d8414}.chroma .gi{color:#6fe7a4;background:#27d39d14}.chroma .gh,.chroma .gu{color:#7cc8ff;font-weight:700}.chroma .ge{font-style:italic}.chroma .gs{font-weight:700}.chroma .gp{color:#55e0b2;user-select:none}.chroma .go{color:#a7bcb5}.chroma .gt,.chroma .gr{color:#ff7f92}.chroma .w{color:#5d7770}.post-end{grid-column:1;margin-top:3rem;padding-bottom:4rem}.post-tags{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;padding:1.2rem 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font:600 .85rem/1 var(--font-display);color:var(--muted)}.pager{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:2rem 0 0}.pager a{position:relative;display:block;padding:1rem 1.15rem;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--fg);text-decoration:none;box-shadow:var(--shadow-sm);transition:transform .3s var(--ease),border-color .3s,box-shadow .3s}.pager a:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 40%,var(--line));box-shadow:var(--shadow)}.pager small{display:flex;align-items:center;gap:.35rem;margin-bottom:.35rem;font:600 .74rem/1 var(--font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.pager b{font:650 1.02rem/1.3 var(--font-display)}.pager .next{grid-column:2;text-align:right}.pager .next small{justify-content:flex-end}@media(max-width:560px){.pager{grid-template-columns:1fr}.pager .next{grid-column:1}}.related{margin-top:2.8rem}.related h2{margin:0 0 1rem;font-size:1.2rem}.related .cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,14rem),1fr))}.related .card{padding:1.1rem 1.15rem}.related .card h3{font-size:1.05rem;margin-right:1.5rem}.related .card-arrow{top:1.1rem;right:1rem;width:18px;height:18px}.lost{display:grid;justify-items:center;text-align:center;padding:4rem 0 5rem}.lost .big{margin:0;font:800 clamp(5rem,3rem + 10vw,9rem)/1 var(--font-display);letter-spacing:-.06em;background:linear-gradient(120deg,var(--accent-fill),var(--accent-2-fill));-webkit-background-clip:text;background-clip:text;color:transparent}.lost h1{margin:.6rem 0 .4rem;font-size:1.8rem}.lost p{max-width:30rem;color:var(--muted)}.lost .graph{max-width:260px;margin:1rem 0}.site-footer{margin-top:auto;border-top:1px solid var(--line);background:color-mix(in srgb,var(--bg-2) 60%,transparent);font-family:var(--font-display)}.site-footer .wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem 2rem;padding-top:2rem;padding-bottom:2.2rem}.foot-brand{display:flex;align-items:center;gap:.7rem;color:var(--fg)}.foot-brand .mark{width:28px;height:28px}.foot-brand span{display:block;font-size:.85rem;color:var(--muted)}.foot-nav{display:flex;flex-wrap:wrap;gap:.3rem 1.2rem;font-size:.9rem}.foot-nav a{color:var(--muted);text-decoration:none}.foot-nav a:hover{color:var(--accent)}.foot-note{width:100%;margin:0;font-size:.8rem;color:var(--muted)}@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:no-preference){.rise{animation:rise .7s var(--ease)both;animation-delay:calc(var(--i,0) * 70ms)}}html.theme-anim,html.theme-anim *,html.theme-anim *::before,html.theme-anim *::after{transition:background-color .4s var(--ease),color .4s var(--ease),border-color .4s var(--ease),fill .4s,stroke .4s,box-shadow .4s!important}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}@media(max-width:480px){body{font-size:1rem}.post-layout{font-size:1.06rem}.card,.card.featured{padding:1.15rem 1.1rem}.card.featured h3{font-size:1.4rem}.code pre{font-size:.76em;padding:.9rem}}@media print{.site-header,.site-footer,.toc,.post-end,.progress,.copy{display:none!important}body{background:#fff;color:#000}}