@font-face{font-family:Inter Tight;src:url(/fonts/inter-tight-var.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/plex-mono-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/plex-mono-500.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Inter Tight Fallback;src:local(Arial),local(Helvetica Neue),local(Helvetica);size-adjust:95%;ascent-override:102%;descent-override:25.4%;line-gap-override:0%}@font-face{font-family:Plex Mono Fallback;src:local(Courier New),local(Menlo),local(Consolas);size-adjust:100%;ascent-override:102.5%;descent-override:27.5%;line-gap-override:0%}:root{--font-sans:"Inter Tight", "Inter Tight Fallback", system-ui, sans-serif;--font-mono:"IBM Plex Mono", "Plex Mono Fallback", ui-monospace, monospace;--bg:#fbfaf7;--ink:#1a1915;--gray-1:#4f4c45;--gray-2:#6d6a62;--gray-3:#e3e0d8;--fill:#f2f0ea;--signal:#e8481c;--signal-text:#c43d12;--signal-wash:#e8481c1a;--ok:#1f7a4d;--c-blue:#2463d1;--c-teal:#0b7f74;--c-violet:#6d45c9;--c-rose:#c42b62;--c-amber:#a86500;--c-green:#23813a;--c-slate:#5b6472;--radius:4px;--radius-lg:6px;--width-grid:680px;--width-read:680px;--gutter:clamp(20px, 4vw, 32px);--header-h:60px;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#121212;--ink:#edebe6;--gray-1:#b9b5ad;--gray-2:#959189;--gray-3:#2c2b29;--fill:#1c1c1b;--signal:#e8481c;--signal-text:#ff8a5f;--signal-wash:#e8481c29;--ok:#4cc38a;--c-blue:#79adff;--c-teal:#4fd1c0;--c-violet:#b49cff;--c-rose:#ff7fac;--c-amber:#f2b552;--c-green:#6fd68a;--c-slate:#9aa4b2;color-scheme:dark}}:root[data-theme=dark]{--bg:#121212;--ink:#edebe6;--gray-1:#b9b5ad;--gray-2:#959189;--gray-3:#2c2b29;--fill:#1c1c1b;--signal:#e8481c;--signal-text:#ff8a5f;--signal-wash:#e8481c29;--ok:#4cc38a;--c-blue:#79adff;--c-teal:#4fd1c0;--c-violet:#b49cff;--c-rose:#ff7fac;--c-amber:#f2b552;--c-green:#6fd68a;--c-slate:#9aa4b2;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 16px)}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-feature-settings:"kern", "calt";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex-direction:column;min-height:100vh;margin:0;font-size:17px;line-height:1.6;display:flex}main{flex:1}main:focus{outline:none}img,svg,video{max-width:100%;display:block}img,video{height:auto}h1,h2,h3,h4{text-wrap:balance;margin:0;font-weight:600;line-height:1.15}h1{letter-spacing:-.015em;font-size:1.5rem;line-height:1.25}h2{letter-spacing:0;font-size:1.0625rem}h3{letter-spacing:0;font-size:1rem}p{text-wrap:pretty;margin:0}a{color:inherit;text-underline-offset:3px;text-decoration-line:underline;text-decoration-thickness:1px;text-decoration-color:var(--gray-2)}a:hover{text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--signal);outline-offset:2px;border-radius:2px}::selection{background:var(--ink);color:var(--bg)}code,kbd,pre,.mono{font-family:var(--font-mono)}.mono{letter-spacing:0;font-size:13px}.container{width:100%;max-width:calc(var(--width-grid) + 2 * var(--gutter));padding-inline:var(--gutter);margin-inline:auto}.reading{max-width:calc(var(--width-read) + 2 * var(--gutter))}.section{padding-block:clamp(48px,7vw,88px)}.section+.section{border-top:1px solid var(--gray-3)}.eyebrow{font-family:var(--font-mono);letter-spacing:.02em;color:var(--gray-2);text-transform:lowercase;font-size:12px;font-weight:400}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:28px;display:flex}.section-head .more{font-family:var(--font-mono);color:var(--gray-1);font-size:13px}.muted{color:var(--gray-1)}.lede{color:var(--gray-1);max-width:62ch;font-size:1.0625rem;line-height:1.6}.btn{border:1px solid var(--ink);border-radius:var(--radius);min-height:40px;font-family:var(--font-mono);color:var(--ink);background:0 0;align-items:center;gap:8px;padding:8px 16px;font-size:13px;font-weight:500;text-decoration:none;transition:background-color .12s;display:inline-flex}.btn:hover{background:var(--fill)}.btn-filled{background:var(--ink);color:var(--bg)}.btn-filled:hover{background:var(--gray-1)}.textlink{font-family:var(--font-mono);color:var(--gray-1);align-items:center;min-height:40px;font-size:13px;display:inline-flex}.tags{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.tag{font-family:var(--font-mono);border:1px solid var(--gray-3);color:var(--gray-1);white-space:nowrap;border-radius:3px;padding:5px 7px;font-size:12px;line-height:1}a.tag{text-decoration:none}a.tag:hover{border-color:var(--gray-2);color:var(--ink)}.attrs{font-family:var(--font-mono);margin:0;padding:0;font-size:13px;line-height:1.7;list-style:none}.attr-k{color:var(--gray-2)}.attr-v{color:var(--ink)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.skip-link{z-index:100;background:var(--ink);color:var(--bg);font-family:var(--font-mono);border-radius:var(--radius);padding:8px 12px;font-size:13px;position:absolute;top:-60px;left:12px}.skip-link:focus{top:12px}.prose{font-size:18px;line-height:1.7}.prose>*+*{margin-top:1.1em}.prose h2{margin-top:2em;font-size:1.5rem}.prose h3{margin-top:1.6em;font-size:1.2rem}.prose ul,.prose ol{padding-left:1.3em}.prose li+li{margin-top:.35em}.prose blockquote{border-left:2px solid var(--gray-3);color:var(--gray-1);margin-inline:0;padding-left:18px}.prose :not(pre)>code{background:var(--fill);border:1px solid var(--gray-3);border-radius:3px;padding:1px 5px;font-size:.85em}.prose pre{border:1px solid var(--gray-3);border-radius:var(--radius-lg);padding:16px 18px;font-size:14px;line-height:1.6;overflow-x:auto;background:var(--fill)!important}.prose hr{border:0;border-top:1px solid var(--gray-3);margin-block:2.4em}.prose img{border:1px solid var(--gray-3);border-radius:var(--radius-lg)}.astro-code,.astro-code span{color:var(--shiki-light)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code,:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark)}}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.page{gap:clamp(48px,7vw,72px);padding-block:clamp(48px,9vw,96px) clamp(56px,9vw,104px);font-size:17px;line-height:1.6;display:grid}.page-head{gap:8px;display:grid}.back{color:var(--gray-2);justify-self:start;font-size:.875rem;text-decoration:none}.back:hover{color:var(--ink)}.dots{color:var(--gray-2);flex-wrap:wrap;gap:4px 10px;display:flex}.dots a{color:var(--ink);text-decoration-color:var(--gray-3)}.dots a:hover{text-decoration-color:currentColor}.block-head{justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:8px;display:flex}.block-head .more{color:var(--gray-2);font-size:.875rem;text-decoration:none}.block-head .more:hover{color:var(--ink)}.rows{margin:0;padding:0;list-style:none}.rows>li+li{border-top:1px solid var(--gray-3)}.row{color:inherit;justify-content:space-between;align-items:baseline;gap:16px;padding:14px 0;text-decoration:none;display:flex}.row-main{gap:2px;min-width:0;display:grid}.row-title{color:var(--ink);font-weight:500}a.row:hover .row-title{text-underline-offset:3px;text-decoration:underline}.row-sub{color:var(--gray-2)}.row-date{color:var(--gray-2);font-variant-numeric:tabular-nums;flex:none;font-size:.875rem}@media (width<=480px){.row{flex-direction:column;gap:2px}}@view-transition{navigation:auto}a.row{border-radius:10px;margin-inline:-14px;padding-inline:14px 40px;transition:background-color .16s;position:relative}a.row:after{content:"→";opacity:0;color:var(--gray-2);transition:opacity .16s,translate .2s;position:absolute;top:50%;right:14px;translate:-6px -50%}a.row:hover,a.row:focus-visible{background:var(--fill)}a.row:hover:after,a.row:focus-visible:after{opacity:1;translate:0 -50%}a.row:hover .row-title{text-decoration:none}.rows>li:has(a.row:hover)+li,.rows>li:has(+li a.row:hover),.rows>li:has(a.row:hover){border-color:#0000}.row-meta{color:var(--gray-2);margin-top:2px;font-size:.875rem}@supports (animation-timeline:view()){.page>section,.writeup>section{animation:linear both rise view();animation-range:entry entry 30%}}@keyframes rise{0%{opacity:0;translate:0 16px}to{opacity:1;translate:0}}.intro-in>*{animation:.52s cubic-bezier(.2,.7,.2,1) both rise}.intro-in>:nth-child(2){animation-delay:60ms}.intro-in>:nth-child(3){animation-delay:.12s}.intro-in>:nth-child(4){animation-delay:.18s}.intro-in>:nth-child(5){animation-delay:.24s}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}@view-transition{navigation:none}}:root{--accent:var(--signal)}a.row.tinted .row-title:before{content:"";background:var(--accent);vertical-align:.12em;border-radius:50%;width:8px;height:8px;margin-right:10px;display:inline-block}a.row.tinted:hover,a.row.tinted:focus-visible{background:color-mix(in srgb, var(--accent) 9%, var(--bg))}a.row.tinted:after{color:var(--accent)}.tinted .row-sub a,.page-accent .writeup p a,.page-accent .writeup li a{text-decoration-color:color-mix(in srgb, var(--accent) 60%, transparent)}.rows div.row{padding-right:26px}.site-header[data-astro-cid-nen7h5rs]{background:var(--bg)}.bar[data-astro-cid-nen7h5rs]{height:var(--header-h);align-items:center;gap:24px;display:flex}.logo[data-astro-cid-nen7h5rs]{margin-right:auto;padding-block:8px;font-size:15px;font-weight:600;text-decoration:none}ul[data-astro-cid-nen7h5rs]{margin:0;padding:0;list-style:none}.nav-desktop[data-astro-cid-nen7h5rs] ul[data-astro-cid-nen7h5rs]{gap:0;display:flex}.nav-desktop[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{min-height:40px;color:var(--gray-2);border-radius:var(--radius);align-items:center;padding:0 8px;font-size:15px;text-decoration:none;display:inline-flex}.nav-desktop[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:hover{color:var(--ink)}a[data-astro-cid-nen7h5rs][aria-current=page]{color:var(--ink)!important}.actions[data-astro-cid-nen7h5rs]{align-items:center;gap:8px;display:flex}.resume[data-astro-cid-nen7h5rs]{min-height:40px;color:var(--gray-2);align-items:center;padding:0 8px;font-size:15px;text-decoration:none;display:inline-flex}.resume[data-astro-cid-nen7h5rs]:hover{color:var(--ink)}.theme-toggle[data-astro-cid-nen7h5rs]{border-radius:var(--radius);width:40px;height:40px;color:var(--gray-2);cursor:pointer;background:0 0;border:1px solid #0000;place-items:center;padding:0;display:inline-grid}.theme-toggle[data-astro-cid-nen7h5rs][hidden]{display:none}.theme-toggle[data-astro-cid-nen7h5rs]:hover{color:var(--ink);border-color:var(--gray-3)}.icon-sun[data-astro-cid-nen7h5rs]{display:none}.theme-toggle[data-astro-cid-nen7h5rs][aria-pressed=true] .icon-sun[data-astro-cid-nen7h5rs]{display:block}.theme-toggle[data-astro-cid-nen7h5rs][aria-pressed=true] .icon-moon[data-astro-cid-nen7h5rs]{display:none}.nav-mobile[data-astro-cid-nen7h5rs]{display:none;position:relative}.nav-mobile[data-astro-cid-nen7h5rs] summary[data-astro-cid-nen7h5rs]{border:1px solid var(--gray-3);border-radius:var(--radius);cursor:pointer;min-height:40px;color:var(--ink);align-items:center;padding:0 10px;list-style:none;display:inline-flex}.nav-mobile[data-astro-cid-nen7h5rs] summary[data-astro-cid-nen7h5rs]::-webkit-details-marker{display:none}.nav-mobile[data-astro-cid-nen7h5rs][open] summary[data-astro-cid-nen7h5rs]{border-color:var(--gray-2)}.nav-mobile[data-astro-cid-nen7h5rs] nav[data-astro-cid-nen7h5rs]{background:var(--bg);border:1px solid var(--gray-3);border-radius:var(--radius-lg);min-width:200px;padding:6px;position:absolute;top:calc(100% + 10px);right:0}.nav-mobile[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{border-radius:var(--radius);align-items:center;min-height:44px;padding:0 12px;text-decoration:none;display:flex}.nav-mobile[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:hover{background:var(--fill)}@media (width<=600px){.nav-desktop[data-astro-cid-nen7h5rs]{display:none}.nav-mobile[data-astro-cid-nen7h5rs]{display:block}.bar[data-astro-cid-nen7h5rs]{gap:12px}}.site-footer[data-astro-cid-jo6i4kqk]{border-top:1px solid var(--gray-3);font-size:15px}.inner[data-astro-cid-jo6i4kqk]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 32px;padding-block:32px 40px;display:flex}.links[data-astro-cid-jo6i4kqk]{flex-wrap:wrap;gap:4px 20px;margin:0;padding:0;list-style:none;display:flex}.links[data-astro-cid-jo6i4kqk] a{min-height:32px;color:var(--gray-1);overflow-wrap:anywhere;align-items:center;text-decoration:none;display:inline-flex}.status[data-astro-cid-jo6i4kqk]{color:var(--gray-2);flex-wrap:wrap;gap:4px 8px;display:flex}
