:root{--bg:#fff;--surface:#fbfaf8;--surface-2:#f3f1ed;--ink:#1a1a1a;--ink-2:#333;--muted:#555;--line:#dcd9d3;--line-strong:#1a1a1a;--grid:#1a1a1a0d;--todo-bg:#fff4d6;--todo-ink:#6b4d00;--todo-line:#d9a400;--accent:#7a1f1f;--accent-ink:#fff;--accent-soft:#7a1f1f12;--viewer-edge:#16181b;--viewer-cut:var(--accent);--font-text:var(--font-text-face), system-ui, sans-serif;--font-mono:var(--font-mono-face), ui-monospace, Menlo, monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-md:1.125rem;--text-lg:clamp(1.25rem, 1.1rem + .6vw, 1.5rem);--text-xl:clamp(1.6rem, 1.3rem + 1.4vw, 2.25rem);--text-2xl:clamp(2.2rem, 1.6rem + 3vw, 3.75rem);--leading-tight:1.15;--leading-snug:1.3;--leading:1.6;--tracking-label:.08em;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4.5rem;--space-9:7rem;--gutter:clamp(1rem, 4vw, 2.5rem);--max:72rem;--measure:40rem;--radius:2px;--stroke:1px;--ease:cubic-bezier(.2, .7, .2, 1);color-scheme:light}:root[data-theme=dark]{--bg:#121416;--surface:#181b1e;--surface-2:#1f2327;--ink:#ecebe6;--ink-2:#c4c6c9;--muted:#8b9098;--line:#2d3136;--line-strong:#d7d6d1;--grid:#ecebe60d;--todo-bg:#2e2508;--todo-ink:#f3d27a;--todo-line:#9a7a14;--accent:#e2a19a;--accent-ink:#121416;--accent-soft:#e2a19a1f;--viewer-edge:#e6e5df;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-text);font-size:var(--text-base);line-height:var(--leading);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;overflow-x:clip}img,svg,video,canvas{max-width:100%;display:block}img{height:auto}h1,h2,h3,h4{font-weight:700;line-height:var(--leading-tight);letter-spacing:-.005em;text-wrap:balance;margin:0}h1{font-size:var(--text-2xl);letter-spacing:-.015em}h2{font-size:var(--text-xl);letter-spacing:-.01em}h3{font-size:var(--text-lg)}p{text-wrap:pretty;margin:0}a{color:inherit;text-underline-offset:.2em;text-decoration-thickness:1px;text-decoration-color:color-mix(in srgb, currentColor 40%, transparent);transition:text-decoration-color .15s var(--ease)}a:hover{text-decoration-color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::selection{background:var(--accent);color:var(--accent-ink)}code,kbd,samp,pre{font-family:var(--font-mono);font-size:.9em}hr{border:0;border-top:var(--stroke) solid var(--line);margin:var(--space-6) 0}.container{width:100%;max-width:calc(var(--max) + 2 * var(--gutter));padding-inline:var(--gutter);margin-inline:auto}.label{font-family:var(--font-text);font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent);font-weight:700}.mono{font-family:var(--font-mono)}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}.btn{align-items:center;gap:var(--space-2);min-height:2.75rem;padding:0 var(--space-5);border:var(--stroke) solid var(--line-strong);border-radius:var(--radius);color:var(--ink);font:700 var(--text-sm) / 1 var(--font-text);letter-spacing:.01em;cursor:pointer;transition:background .15s var(--ease), color .15s var(--ease), border-color .15s var(--ease);background:0 0;text-decoration:none;display:inline-flex}.btn:hover{background:var(--ink);color:var(--bg)}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn--primary:hover{background:var(--ink);border-color:var(--ink);color:var(--bg)}.btn--sm{min-height:2.25rem;padding:0 var(--space-4);font-size:var(--text-xs)}.chip{border:var(--stroke) solid var(--line);border-radius:var(--radius);font:400 var(--text-sm) / 1.4 var(--font-text);color:var(--ink-2);white-space:nowrap;padding:.15rem .5rem;display:inline-block}.prose{max-width:var(--measure);font-size:var(--text-md);color:var(--ink-2);line-height:1.65}.prose>*+*{margin-top:1em}.prose h2{margin-top:var(--space-8);margin-bottom:var(--space-4);font-size:var(--text-lg);color:var(--ink)}.prose h3{margin-top:var(--space-6);font-size:var(--text-md);color:var(--ink)}.prose strong{color:var(--ink);font-weight:600}.prose ul,.prose ol{padding-left:1.25em}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--muted)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}.prose table{border-collapse:collapse;width:100%;font-size:var(--text-sm);line-height:1.45}.prose th{padding:var(--space-2) var(--space-3);border-bottom:var(--stroke) solid var(--line-strong);font:700 var(--text-xs) var(--font-text);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--muted);text-align:left}.prose td{padding:var(--space-2) var(--space-3);border-bottom:var(--stroke) solid var(--line);vertical-align:top}.prose td:not(:first-child):not(:last-child){font-family:var(--font-mono);white-space:nowrap}.prose .table-wrap{overflow-x:auto}:root{--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-io:cubic-bezier(.65, 0, .35, 1)}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth;scroll-padding-top:5rem}@keyframes rise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes settle{0%{opacity:0;transform:translateY(14px)scale(.975)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}}.rise{animation:rise .9s var(--ease-out) both;animation-delay:calc(var(--i,0) * 90ms + 60ms)}.settle{animation:settle 1.2s var(--ease-out) .32s both}.js .reveal{opacity:0;transition:opacity .8s var(--ease-out), transform .9s var(--ease-out);transition-delay:calc(var(--i,0) * 90ms);transform:translateY(18px)}.js .reveal.is-visible{opacity:1;transform:none}.js .draw>*{clip-path:inset(-6px 100% -6px 0);transition:clip-path 1.2s var(--ease-out)}.js .draw.is-visible>*{clip-path:inset(-6px 0)}.btn{isolation:isolate;transition:color .35s var(--ease-out), border-color .35s var(--ease-out);position:relative;overflow:hidden}.btn:before{content:"";z-index:-1;background:var(--ink);transition:transform .5s var(--ease-out);position:absolute;inset:0;transform:translateY(101%)}.btn:hover,.btn:focus-visible{color:var(--bg);border-color:var(--ink);background:0 0}.btn--primary:hover,.btn--primary:focus-visible{background:var(--accent)}.btn:hover:before,.btn:focus-visible:before{transform:none}html.theme-anim,html.theme-anim *,html.theme-anim :before,html.theme-anim :after{transition:background-color .4s var(--ease-io), color .4s var(--ease-io), border-color .4s var(--ease-io), fill .4s var(--ease-io), stroke .4s var(--ease-io)!important}@view-transition{navigation:auto}@keyframes vt-out{to{opacity:0}}@keyframes vt-in{0%{opacity:0;transform:translateY(10px)}}::view-transition-old(root){animation:vt-out .16s var(--ease-io) both}::view-transition-new(root){animation:vt-in .48s var(--ease-out) 60ms both}.header{view-transition-name:site-header}::view-transition-group(site-header){animation-duration:0s}@supports (animation-timeline:scroll()){@keyframes read{to{transform:scaleX(1)}}.read-progress{z-index:60;background:var(--accent);transform-origin:0;height:2px;animation:linear both read scroll(root);position:fixed;inset:0 0 auto;transform:scaleX(0)}}.mv-canvas{animation:fade .6s var(--ease-out) both}@keyframes pop{0%{opacity:0;transform:translateY(10px)scale(.985)}}dialog[open]{animation:pop .42s var(--ease-out) both}dialog[open]::backdrop{animation:fade .36s var(--ease-out) both}}.toggle[data-astro-cid-l6lhmie6]{border:var(--stroke) solid var(--line);border-radius:var(--radius);width:2.25rem;height:2.25rem;color:var(--ink-2);cursor:pointer;background:0 0;place-items:center;display:grid}.toggle[data-astro-cid-l6lhmie6]:hover{color:var(--ink);border-color:var(--line-strong)}.moon[data-astro-cid-l6lhmie6],[data-theme=dark] .sun[data-astro-cid-l6lhmie6]{display:none}[data-theme=dark] .moon[data-astro-cid-l6lhmie6]{display:block}.header[data-astro-cid-nen7h5rs]{z-index:40;border-bottom:var(--stroke) solid transparent;background:color-mix(in srgb, var(--bg) 88%, transparent);backdrop-filter:saturate(1.4)blur(10px);transition:border-color .3s var(--ease-out);position:sticky;top:0}.header[data-astro-cid-nen7h5rs].is-stuck{border-bottom-color:var(--line)}.bar[data-astro-cid-nen7h5rs]{align-items:center;gap:var(--space-5);grid-template-columns:auto 1fr auto;min-height:4rem;display:grid}.name[data-astro-cid-nen7h5rs]{font-weight:600;font-size:var(--text-md);letter-spacing:-.01em;white-space:nowrap;text-decoration:none}ul[data-astro-cid-nen7h5rs]{gap:var(--space-5);margin:0;padding:0;list-style:none;display:flex}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{font:400 var(--text-md) var(--font-text);color:var(--ink-2);padding-block:var(--space-2);background:linear-gradient(var(--accent), var(--accent)) left bottom / 0 2px no-repeat;transition:background-size .4s var(--ease-out), color .2s var(--ease-out);text-decoration:none}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:hover,nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs][aria-current=page]{color:var(--ink);background-size:100% 2px}.actions[data-astro-cid-nen7h5rs]{align-items:center;gap:var(--space-2);display:flex}.resume[data-astro-cid-nen7h5rs] .mono[data-astro-cid-nen7h5rs]{opacity:.75;border:1px solid;padding:.05rem .25rem;font-size:.65rem}.short[data-astro-cid-nen7h5rs]{display:none}@media (width<=640px){.bar[data-astro-cid-nen7h5rs]{padding-top:var(--space-2);grid-template-columns:1fr auto;grid-template-areas:"name actions""nav nav";row-gap:0}.name[data-astro-cid-nen7h5rs]{grid-area:name}.actions[data-astro-cid-nen7h5rs]{grid-area:actions}nav[data-astro-cid-nen7h5rs]{grid-area:nav}ul[data-astro-cid-nen7h5rs]{gap:var(--space-5);padding-bottom:var(--space-2)}.long[data-astro-cid-nen7h5rs]{display:none}.short[data-astro-cid-nen7h5rs]{display:inline}}.footer[data-astro-cid-jo6i4kqk]{margin-top:var(--space-9);border-top:var(--stroke) solid var(--line-strong);padding-block:var(--space-6) var(--space-7);font-size:var(--text-sm)}.grid[data-astro-cid-jo6i4kqk]{gap:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));display:grid}.grid[data-astro-cid-jo6i4kqk]>div[data-astro-cid-jo6i4kqk]{gap:var(--space-1);align-content:start;display:grid}.grid[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{overflow-wrap:anywhere}.end[data-astro-cid-jo6i4kqk]{color:var(--muted)}@media (width>=900px){.end[data-astro-cid-jo6i4kqk]{text-align:right;justify-items:end}}.skip[data-astro-cid-hkbrpulz]{left:var(--space-4);z-index:100;padding:var(--space-2) var(--space-4);background:var(--ink);color:var(--bg);font:500 var(--text-sm) var(--font-text);position:absolute;top:-4rem}.skip[data-astro-cid-hkbrpulz]:focus{top:var(--space-4)}main[data-astro-cid-hkbrpulz]{min-height:60vh}
