.theme-toggle[data-astro-cid-l6lhmie6]{width:2rem;height:2rem;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;padding:0;display:inline-grid}.theme-toggle[data-astro-cid-l6lhmie6]:hover{color:var(--fg)}.site-header[data-astro-cid-nen7h5rs]{z-index:20;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(10px);border-bottom:1px solid var(--border);position:sticky;top:0}.bar[data-astro-cid-nen7h5rs]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1.5rem;padding-block:.75rem;display:flex}.brand[data-astro-cid-nen7h5rs]{color:var(--fg);align-items:center;gap:.6rem;text-decoration:none;display:inline-flex}.mark[data-astro-cid-nen7h5rs]{background:var(--accent);width:2rem;height:2rem;color:var(--accent-contrast);font-family:var(--font-mono), ui-monospace, monospace;border-radius:8px;place-items:center;font-size:1.05rem;font-weight:700;line-height:1;display:grid}.name[data-astro-cid-nen7h5rs]{font-family:var(--font-display), var(--font-sans), sans-serif;letter-spacing:-.01em;font-size:1.1rem;font-weight:800}ul[data-astro-cid-nen7h5rs]{align-items:center;gap:.25rem;margin:0;padding:0;list-style:none;display:flex}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{color:var(--fg-soft);text-transform:capitalize;border-radius:999px;padding:.35rem .8rem;font-weight:500;text-decoration:none;display:block}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:hover{color:var(--fg);background:var(--surface)}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs][aria-current=page]{color:var(--accent);background:var(--accent-soft)}@media (width<=30rem){.bar[data-astro-cid-nen7h5rs]{justify-content:center}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{padding-inline:.65rem}}.email-reveal[data-astro-cid-gxjgeuvs]{flex-wrap:wrap;align-items:center;gap:.5rem;display:inline-flex}.as-link[data-astro-cid-gxjgeuvs]{color:var(--accent);font:inherit;text-underline-offset:.18em;cursor:pointer;background:0 0;border:0;padding:0;font-weight:600;text-decoration:underline 1px}.as-link[data-astro-cid-gxjgeuvs]:hover{color:var(--accent-hover)}.email-reveal[data-astro-cid-gxjgeuvs] .copy{border:1px solid var(--border);background:var(--surface);color:var(--fg-soft);font:inherit;cursor:pointer;border-radius:999px;padding:.3rem .7rem;font-size:.8rem}.email-reveal[data-astro-cid-gxjgeuvs] .copy:hover{border-color:var(--accent);color:var(--accent)}.btn[data-astro-cid-gxjgeuvs]{cursor:pointer;font-family:inherit}.site-footer[data-astro-cid-jo6i4kqk]{border-top:1px solid var(--border);background:var(--surface);padding-top:3rem;font-size:.95rem}.grid[data-astro-cid-jo6i4kqk]{grid-template-columns:2fr 1fr 1fr;gap:2rem;display:grid}@media (width<=40rem){.grid[data-astro-cid-jo6i4kqk]{grid-template-columns:1fr 1fr}.about[data-astro-cid-jo6i4kqk]{grid-column:1/-1}}.name[data-astro-cid-jo6i4kqk]{font-family:var(--font-display), var(--font-sans), sans-serif;margin:0 0 .25rem;font-size:1.2rem;font-weight:800}.about[data-astro-cid-jo6i4kqk] .muted[data-astro-cid-jo6i4kqk]{max-width:22rem;margin-bottom:1rem}.col-title[data-astro-cid-jo6i4kqk]{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 .75rem;font-size:.75rem;font-weight:600}ul[data-astro-cid-jo6i4kqk]{margin:0;padding:0;list-style:none}li[data-astro-cid-jo6i4kqk]{margin-bottom:.4rem}nav[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk],li[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{color:var(--fg-soft);text-transform:capitalize;text-decoration:none}li[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover{color:var(--accent)}.legal[data-astro-cid-jo6i4kqk]{border-top:1px solid var(--border);margin-top:2.5rem;padding-block:1.25rem 2rem;font-size:.85rem}:root{--bg:#f8f7f3;--surface:#fff;--fg:#14161b;--fg-soft:#343842;--muted:#5c626d;--border:#e4e1d8;--accent:#4338ca;--accent-hover:#3730a3;--accent-soft:#ebebfd;--accent-contrast:#fff;--marker:#fde68a;--code-bg:#f1f0ea;--shadow:0 1px 2px #14161b0a, 0 8px 24px -12px #14161b1f;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0e1014;--surface:#161921;--fg:#eeeef0;--fg-soft:#cfd1d6;--muted:#9ca2ad;--border:#262a34;--accent:#a5b4fc;--accent-hover:#c7d2fe;--accent-soft:#1d2142;--accent-contrast:#0e1014;--marker:#818cf880;--code-bg:#13161c;--shadow:0 1px 2px #0000004d, 0 8px 24px -12px #0009;color-scheme:dark}}:root[data-theme=dark]{--bg:#0e1014;--surface:#161921;--fg:#eeeef0;--fg-soft:#cfd1d6;--muted:#9ca2ad;--border:#262a34;--accent:#a5b4fc;--accent-hover:#c7d2fe;--accent-soft:#1d2142;--accent-contrast:#0e1014;--marker:#818cf880;--code-bg:#13161c;--shadow:0 1px 2px #0000004d, 0 8px 24px -12px #0009;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:5rem;font-size:106.25%}body{background:var(--bg);color:var(--fg);font-family:var(--font-sans), system-ui, sans-serif;text-rendering:optimizelegibility;margin:0;line-height:1.7}.container{max-width:68rem;margin-inline:auto;padding-inline:1rem}.narrow{max-width:44rem;margin-inline:auto;padding-inline:1rem}@media (width>=40rem){.container,.narrow{padding-inline:1.5rem}}main{padding-block:3rem 5rem}a{color:var(--accent);text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{color:var(--accent-hover)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}h1,h2,h3,h4{font-family:var(--font-display), var(--font-sans), system-ui, sans-serif;letter-spacing:-.02em;text-wrap:balance;color:var(--fg);font-weight:800;line-height:1.15}h1{margin:0 0 1rem;font-size:clamp(2.1rem,1.6rem + 2.2vw,3.1rem)}h2{margin:3rem 0 1rem;font-size:clamp(1.45rem,1.3rem + .6vw,1.75rem)}h3{letter-spacing:-.01em;margin:2.25rem 0 .6rem;font-size:1.25rem;font-weight:600}h4{letter-spacing:0;margin:1.75rem 0 .5rem;font-size:1.05rem;font-weight:600}p,ul,ol{margin:0 0 1.15rem}hr{border:0;border-top:1px solid var(--border);margin:3rem 0}img{max-width:100%;height:auto}code,kbd,pre{font-family:var(--font-mono), ui-monospace, monospace;font-size:.86em}strong{color:var(--fg);font-weight:600}mark,.marker{color:inherit;background:linear-gradient(transparent 58%, var(--marker) 58%, var(--marker) 92%, transparent 92%);padding-inline:.08em}.muted{color:var(--muted)}.mono{font-family:var(--font-mono), ui-monospace, monospace;font-variant-numeric:tabular-nums}.eyebrow{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:0 0 .9rem;font-size:.78rem;font-weight:600;display:inline-block}.lede{color:var(--fg-soft);text-wrap:pretty;max-width:40rem;font-size:clamp(1.1rem,1rem + .4vw,1.3rem);line-height:1.55}.page-header{border-bottom:1px solid var(--border);margin-bottom:2.5rem;padding-bottom:2rem}.page-header .lede{margin-bottom:0}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.btn{border:1.5px solid #0000;border-radius:999px;align-items:center;gap:.45rem;padding:.65rem 1.15rem;font-size:.95rem;font-weight:600;line-height:1.2;text-decoration:none;transition:background-color .15s,border-color .15s,color .15s,transform .15s;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn-primary{background:var(--accent);color:var(--accent-contrast)}.btn-primary:hover{background:var(--accent-hover);color:var(--accent-contrast)}.btn-ghost{border-color:var(--border);color:var(--fg);background:var(--surface)}.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}.chips{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.chip{font-family:var(--font-mono), ui-monospace, monospace;border:1px solid var(--border);background:var(--surface);color:var(--fg-soft);border-radius:999px;max-width:100%;padding:.12rem .55rem;font-size:.75rem;line-height:1.5;text-decoration:none;display:inline-block}a.chip:hover{border-color:var(--accent);color:var(--accent)}.chip-accent{background:var(--accent-soft);color:var(--accent);border-color:#0000}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1rem;margin:4.5rem 0 1.5rem;display:flex}.section-head h2{margin:0}.section-head a{font-size:.95rem;font-weight:600;text-decoration:none}.section-head a:hover{text-decoration:underline}.prose{overflow-wrap:break-word;color:var(--fg-soft);font-size:1.04rem}.prose h2{padding-top:.25rem;position:relative}.prose h2:before{content:"";background:var(--accent);border-radius:2px;width:2.25rem;height:4px;margin-bottom:.9rem;display:block}.prose a{font-weight:500}.prose :not(pre)>code{background:var(--accent-soft);color:var(--fg);border-radius:4px;padding:.12em .38em}.prose pre{border:1px solid var(--border);tab-size:4;border-radius:10px;margin:0 0 1.5rem;padding:1rem 1.15rem;font-size:.84rem;line-height:1.6;overflow-x:auto;background:var(--code-bg)!important}.prose blockquote{border-left:4px solid var(--accent);background:var(--accent-soft);color:var(--fg);border-radius:0 8px 8px 0;margin:0 0 1.25rem;padding:.75rem 1.1rem}.prose blockquote p:last-child{margin-bottom:0}.prose li{margin-bottom:.35rem}.prose li::marker{color:var(--accent)}.prose li>ul,.prose li>ol{margin:.35rem 0 0}.prose p>strong:only-child{font-family:var(--font-display), var(--font-sans), sans-serif;margin-top:1.75rem;font-size:1.1rem;display:block}.prose img{border:1px solid var(--border);box-shadow:var(--shadow);background:#fff;border-radius:10px;margin:2rem auto;display:block}.prose table{border-collapse:collapse;width:100%;margin:0 0 1.5rem;font-size:.9rem;display:block;overflow-x:auto}.prose th{text-align:left;color:var(--fg);background:var(--code-bg);font-weight:600}.prose th,.prose td{border-bottom:1px solid var(--border);vertical-align:top;padding:.5rem .7rem}.astro-code,.astro-code span{color:var(--shiki-light);font-style:var(--shiki-light-font-style);font-weight:var(--shiki-light-font-weight)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code,:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark);font-style:var(--shiki-dark-font-style);font-weight:var(--shiki-dark-font-weight)}}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark);font-style:var(--shiki-dark-font-style);font-weight:var(--shiki-dark-font-weight)}.skip[data-astro-cid-z4jru4n3]:focus{clip-path:none;background:var(--bg);border:1px solid var(--border);z-index:10;width:auto;height:auto;padding:.4rem .8rem;position:fixed;top:.5rem;left:.5rem}
