:root{--font-sans:var(--font-inter);--font-serif:var(--font-newsreader);--font-mono:var(--font-jetbrains-mono);--bg:#fbfbf9;--bg-subtle:#f3f2ee;--bg-raised:#fff;--text:#1c1c1a;--text-secondary:#4a4a46;--text-muted:#76766f;--border:#e8e7e2;--border-strong:#d6d5cf;--accent:#3f4bd6;--accent-strong:#333dbb;--accent-subtle:#ecedfb;--ok:#16a34a;--code-bg:#fff;--measure:40rem;--wide:66rem}:root[data-theme=dark]{--bg:#111110;--bg-subtle:#1a1a18;--bg-raised:#161615;--text:#ededea;--text-secondary:#b4b4ae;--text-muted:#85857f;--border:#262624;--border-strong:#363633;--accent:#a3acff;--accent-strong:#bfc5ff;--accent-subtle:#23243a;--ok:#22c55e;--code-bg:#161615}*,:before,:after{box-sizing:border-box}*{margin:0}html{color-scheme:light;scroll-behavior:smooth;background:var(--bg)}html[data-theme=dark]{color-scheme:dark}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;flex-direction:column;min-height:100dvh;font-size:1.0625rem;line-height:1.7;display:flex}::selection{background:var(--accent);color:#fff}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}img,svg,video{max-width:100%;display:block}button svg{flex-shrink:0;max-width:none}a{color:var(--accent)}.container{width:100%;max-width:calc(var(--measure) + 3rem);margin-inline:auto;padding-inline:1.5rem}.container.wide{max-width:calc(var(--wide) + 3rem)}@media (width<=30rem){.container{padding-inline:1.25rem}}main{flex:1;padding-block:2.5rem 5rem}h1,h2,h3,h4{letter-spacing:-.01em;text-wrap:balance;font-weight:600;line-height:1.25}h1,.prose h2,.prose h3{font-family:var(--font-serif);font-weight:400}.page-title{letter-spacing:-.015em;text-wrap:pretty;font-size:clamp(2rem,6vw,2.75rem);line-height:1.12}.page-lead{color:var(--text-secondary);max-width:38rem;margin-top:.75rem;font-size:1.0625rem}.meta{color:var(--text-muted);font-family:var(--font-mono);font-size:.8125rem}.label{color:var(--text-muted);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:.9rem;margin-bottom:1.25rem;font-size:.75rem;font-weight:400;display:flex}.label:after{content:"";border-top:1px solid var(--border);flex:1}.tag{color:var(--text-muted);font-family:var(--font-mono);font-size:.75rem;line-height:1.6;display:inline-block}.tag:before{content:"#";opacity:.6}a.tag{text-decoration:none;transition:color .15s,border-color .15s}a.tag:hover{color:var(--accent);border-color:var(--accent)}.prose{color:var(--text-secondary);font-size:1.0625rem}.prose :is(h2,h3,strong,th){color:var(--text)}.prose>*+*{margin-top:1.1em}.prose h2{margin-top:2em;font-size:1.75rem}.prose :is(h2,h3){scroll-margin-top:5rem;position:relative}.heading-anchor{color:var(--text-muted);opacity:0;padding-inline-end:.4em;font-weight:400;text-decoration:none;transition:opacity .15s;position:absolute;inset-inline-end:100%}.prose :is(h2,h3):hover .heading-anchor,.heading-anchor:focus-visible{opacity:1}.heading-anchor:hover{color:var(--accent)}@media (width<=48rem){.heading-anchor{display:none}}.prose h3{margin-top:1.8em;font-size:1.375rem}.prose h2+*,.prose h3+*{margin-top:.7em}.prose a{color:var(--text);text-decoration:underline 1px;text-decoration-color:var(--text-muted);text-underline-offset:3px;transition:color .15s,text-decoration-color .15s}.prose a:hover{color:var(--accent);text-decoration-color:var(--accent)}.prose strong{font-weight:600}.prose ul,.prose ol{padding-inline-start:1.4rem}.prose li+li{margin-top:.35em}.prose ul:has(>.task-list-item){padding-inline-start:0}.prose .task-list-item{align-items:baseline;gap:.6rem;list-style:none;display:flex}.prose .task-list-item input{width:1rem;height:1rem;accent-color:var(--accent);flex-shrink:0;transform:translateY(.15em)}.prose blockquote{border-inline-start:2px solid var(--border-strong);font-family:var(--font-serif);color:var(--text-secondary);padding-inline-start:1.1rem;font-size:1.1875rem;font-style:italic}.prose hr{border:0;border-top:1px solid var(--border);margin-block:2.5rem}.prose img{border-radius:.625rem}.prose .table-scroll{overflow-x:auto}.prose table{border-collapse:collapse;width:100%;font-size:.9375rem}.prose th,.prose td{text-align:start;border-bottom:1px solid var(--border);padding:.5rem .75rem}.prose th{color:var(--text-muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;font-size:.75rem;font-weight:400}.prose code{font-family:var(--font-mono);font-size:.875em}.prose :not(pre)>code{color:var(--text);background:var(--bg-subtle);border-radius:.3rem;padding:.1em .35em}.prose pre{border:1px solid var(--border);border-radius:.625rem;padding:1rem 1.25rem;font-size:.8125rem;line-height:1.65;overflow-x:auto}.prose pre.astro-code{background-color:var(--code-bg)!important}.prose .code-block{border:1px solid var(--border);border-radius:.625rem;position:relative;overflow:hidden}.prose .code-block pre{border:0;border-radius:0}.prose .code-bar{background:var(--bg);border-bottom:1px solid var(--border);color:var(--text-muted);font-family:var(--font-mono);justify-content:space-between;align-items:center;gap:1rem;padding:.25rem .5rem .25rem 1.25rem;font-size:.75rem;display:flex}.prose .code-copy{font:inherit;font-family:var(--font-sans);color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:.375rem;padding:.2rem .6rem;transition:color .15s,background .15s}.prose .code-copy:hover{color:var(--text);background:var(--bg)}.prose .code-block:after{content:"";pointer-events:none;background:linear-gradient(to right, transparent, var(--code-bg));opacity:0;width:2.5rem;transition:opacity .15s;position:absolute;inset-block:2.1rem 0;inset-inline-end:0}.prose .code-block[data-overflow=true]:after{opacity:1}@media (width<=30rem){.prose pre{padding-inline:1rem;font-size:.75rem}.prose .code-bar{padding-inline-start:1rem}}:root[data-theme=dark] .astro-code span,:root[data-theme=dark] .astro-code{color:var(--shiki-dark)!important}@view-transition{navigation:auto}@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}button[data-astro-cid-l6lhmie6]{width:2rem;height:2rem;color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:color .15s,border-color .15s;display:inline-flex}button[data-astro-cid-l6lhmie6]:hover{color:var(--text);background:var(--bg-subtle)}.moon[data-astro-cid-l6lhmie6]{display:none}:root[data-theme=dark] .moon[data-astro-cid-l6lhmie6]{display:block}:root[data-theme=dark] .sun[data-astro-cid-l6lhmie6]{display:none}.site-header[data-astro-cid-nen7h5rs]{z-index:10;background:var(--bg);position:sticky;top:0}.inner[data-astro-cid-nen7h5rs]{align-items:center;gap:1.5rem;height:4rem;display:flex}.home[data-astro-cid-nen7h5rs]{color:var(--text);font-family:var(--font-serif);white-space:nowrap;font-size:1.1875rem;text-decoration:none}nav[data-astro-cid-nen7h5rs]{align-items:center;gap:1.25rem;margin-inline-start:auto;display:flex}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{color:var(--text-secondary);font-size:.9375rem;text-decoration:none;transition:color .15s}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:hover,nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs][aria-current]{color:var(--text)}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs][aria-current]{text-decoration:underline;text-decoration-color:var(--text-muted);text-underline-offset:6px;text-decoration-thickness:1px}@media (width<=30rem){.contact-link[data-astro-cid-nen7h5rs]{display:none}}@media (width<=26rem){.inner[data-astro-cid-nen7h5rs]{gap:.875rem}.home[data-astro-cid-nen7h5rs]{font-size:1.0625rem}nav[data-astro-cid-nen7h5rs]{gap:.875rem}}footer[data-astro-cid-jo6i4kqk]{color:var(--text-muted);font-family:var(--font-mono);padding-block:2.5rem;font-size:.75rem}.inner[data-astro-cid-jo6i4kqk]{flex-wrap:wrap;justify-content:space-between;gap:1rem;display:flex}a[data-astro-cid-jo6i4kqk]{color:inherit;text-decoration:none}a[data-astro-cid-jo6i4kqk]:hover{color:var(--text)}.contact[data-astro-cid-idrjwhv4]{border:1px solid var(--border);background:var(--bg);width:min(34rem,100vw - 2rem);max-height:calc(100dvh - 2rem);color:var(--text);overscroll-behavior:contain;border-radius:1rem;margin:auto;padding:0;overflow-y:auto;box-shadow:0 30px 80px -20px #00000059}.contact[data-astro-cid-idrjwhv4]::backdrop{backdrop-filter:blur(3px);background:#11111073}.contact[data-astro-cid-idrjwhv4][open]{animation:.18s ease-out rise}@keyframes rise{0%{opacity:0;transform:translateY(.75rem)}}.sheet[data-astro-cid-idrjwhv4]{gap:1rem;padding:1.5rem;display:grid}.sheet[data-astro-cid-idrjwhv4][hidden]{display:none}header[data-astro-cid-idrjwhv4]{justify-content:space-between;align-items:center;gap:1rem;display:flex}h2[data-astro-cid-idrjwhv4]{font-family:var(--font-serif);font-size:1.75rem;font-weight:400;line-height:1.15}.close[data-astro-cid-idrjwhv4]{width:2rem;height:2rem;color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:50%;font-size:.95rem}.close[data-astro-cid-idrjwhv4]:hover{background:var(--bg-subtle);color:var(--text)}.lead[data-astro-cid-idrjwhv4]{color:var(--text-secondary);margin-top:-.4rem;font-size:.9375rem;line-height:1.55}.lead[data-astro-cid-idrjwhv4] a[data-astro-cid-idrjwhv4]{color:inherit;text-decoration-color:var(--text-muted);text-underline-offset:3px}.field[data-astro-cid-idrjwhv4]{min-width:0;display:grid}textarea[data-astro-cid-idrjwhv4]{border:1px solid var(--border-strong);background:var(--bg-raised);width:100%;color:var(--text);font:inherit;resize:vertical;border-radius:.5rem;min-height:12rem;padding:.75rem .85rem;font-size:1rem;line-height:1.55}textarea[data-astro-cid-idrjwhv4]::placeholder{color:var(--text-muted)}textarea[data-astro-cid-idrjwhv4]:focus{border-color:var(--text-muted);outline:none}.trap[data-astro-cid-idrjwhv4]{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.turnstile[data-astro-cid-idrjwhv4]:empty{display:none}.status[data-astro-cid-idrjwhv4]{color:#c2410c;font-size:.875rem}.status[data-astro-cid-idrjwhv4]:empty{display:none}footer[data-astro-cid-idrjwhv4]{justify-content:flex-end;display:flex}.send[data-astro-cid-idrjwhv4]{background:var(--text);color:var(--bg);font:inherit;cursor:pointer;border:0;border-radius:999px;padding:.6rem 1.25rem;font-weight:600}.send[data-astro-cid-idrjwhv4]:disabled{opacity:.6;cursor:progress}@media (width<=34rem){.contact[data-astro-cid-idrjwhv4]{border-width:1px 0 0;border-radius:1rem 1rem 0 0;width:100vw;max-width:100vw;max-height:92dvh;margin:auto 0 0}.sheet[data-astro-cid-idrjwhv4]{padding:1.25rem 1.25rem calc(1.25rem + env(safe-area-inset-bottom));gap:.75rem}h2[data-astro-cid-idrjwhv4]{font-size:1.5rem}textarea[data-astro-cid-idrjwhv4]{min-height:10rem}.send[data-astro-cid-idrjwhv4]{width:100%}}@media (prefers-reduced-motion:reduce){.contact[data-astro-cid-idrjwhv4][open]{animation:none}}
