:root{--bg: #FAFAF7;--fg: #111110;--muted: #6B6B66;--line: rgba(0, 0, 0, .08);--font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "JetBrains Mono", "Cascadia Code", Menlo, monospace;--fs-14: .875rem;--fs-16: 1rem;--fs-20: 1.25rem;--fs-24: 1.5rem;--fs-32: 2rem;--fs-48: 3rem;--fs-64: 4rem;--fs-hero: clamp(4rem, 9vw, 7.5rem);--lh-tight: 1.05;--lh-body: 1.75;--tracking-display: -.02em;--tracking-body: 0;--space-1: .5rem;--space-2: 1rem;--space-3: 1.5rem;--space-4: 2rem;--space-6: 3rem;--space-8: 4rem;--space-12: 6rem;--space-16: 8rem;--space-24: 12rem;--max-width: 1240px;--reading-width: 880px;--cover-width: 1400px;--gutter: 24px;--outer: clamp(1.5rem, 4vw, 5rem);--measure: 64ch;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--dur-hover: .25s;--dur-reveal: .6s;--dur-page: .45s}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/Inter-Variable.woff2) format("woff2-variations")}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0E0E0C;--fg: #EFEFEC;--muted: #8C8C87;--line: rgba(255, 255, 255, .08)}}:root[data-theme=dark]{--bg: #0E0E0C;--fg: #EFEFEC;--muted: #8C8C87;--line: rgba(255, 255, 255, .08)}*,*:before,*:after{box-sizing:border-box}html,body,h1,h2,h3,h4,h5,h6,p,ul,ol,figure,blockquote{margin:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit;color:inherit}ul,ol{padding:0;list-style:none}a{color:inherit;text-decoration:none}button{background:none;border:0;padding:0;cursor:pointer}.reveal{opacity:0;transform:translateY(16px);transition:opacity var(--dur-reveal) var(--ease-out),transform var(--dur-reveal) var(--ease-out);transition-delay:var(--reveal-delay, 0ms)}.reveal.is-visible{opacity:1;transform:translateY(0)}.reveal>*{opacity:0;transform:translateY(8px);transition:opacity var(--dur-reveal) var(--ease-out),transform var(--dur-reveal) var(--ease-out)}.reveal.is-visible>*{opacity:1;transform:translateY(0)}.reveal.is-visible>*:nth-child(1){transition-delay:0ms}.reveal.is-visible>*:nth-child(2){transition-delay:60ms}.reveal.is-visible>*:nth-child(3){transition-delay:.12s}.reveal.is-visible>*:nth-child(4){transition-delay:.18s}.reveal.is-visible>*:nth-child(5){transition-delay:.24s}.reveal.is-visible>*:nth-child(6){transition-delay:.3s}::view-transition-old(root),::view-transition-new(root){animation-duration:var(--dur-page);animation-timing-function:var(--ease-in-out)}::view-transition-old(root){animation-name:page-out}::view-transition-new(root){animation-name:page-in}@keyframes page-out{to{opacity:0;transform:translateY(-8px)}}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}}.cursor{position:fixed;top:0;left:0;width:8px;height:8px;border-radius:50%;background:currentColor;pointer-events:none;z-index:9999;mix-blend-mode:difference;transform:translate3d(-100px,-100px,0);transition:width var(--dur-hover) var(--ease-out),height var(--dur-hover) var(--ease-out);will-change:transform}.cursor.is-hover{width:12.8px;height:12.8px}@media(pointer:coarse){.cursor{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.reveal,.reveal>*{opacity:1;transform:none}::view-transition-old(root),::view-transition-new(root){animation:none}.cursor{display:none}}[data-now-current]{display:inline-block;transition:opacity .3s var(--ease-out),transform .3s var(--ease-out)}[data-now-current].is-leaving{opacity:0;transform:translateY(-4px)}html{font-family:var(--font-sans);font-size:16px;color:var(--fg);background:var(--bg)}body{font-size:var(--fs-16);line-height:var(--lh-body);letter-spacing:var(--tracking-body);font-feature-settings:"ss01","cv11";transition:background-color var(--dur-hover) var(--ease-out),color var(--dur-hover) var(--ease-out)}h1,h2,h3{letter-spacing:var(--tracking-display);line-height:var(--lh-tight);font-weight:500}h1{font-size:var(--fs-hero)}h2{font-size:var(--fs-48)}h3{font-size:var(--fs-32)}@media(max-width:768px){h2{font-size:var(--fs-32)}h3{font-size:var(--fs-24)}}a{transition:opacity var(--dur-hover) var(--ease-out)}a:hover{opacity:.6}::selection{background:var(--fg);color:var(--bg)}.container{width:100%;max-width:var(--max-width);margin-inline:auto;padding-inline:var(--outer)}.muted{color:var(--muted)}.mono{font-family:var(--font-mono);font-size:var(--fs-14);letter-spacing:0}.hairline{height:1px;background:var(--line);border:0}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}.theme-toggle[data-astro-cid-lfoluaxz]{position:relative;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;color:var(--fg);background:none;border:0;cursor:pointer;transition:opacity var(--dur-hover) var(--ease-out)}.theme-toggle[data-astro-cid-lfoluaxz]:hover{opacity:.6}.icon[data-astro-cid-lfoluaxz]{width:22px;height:22px;display:none}.theme-toggle[data-astro-cid-lfoluaxz][data-current=light] .icon-light[data-astro-cid-lfoluaxz],.theme-toggle[data-astro-cid-lfoluaxz][data-current=dark] .icon-dark[data-astro-cid-lfoluaxz]{display:block}.site-header[data-astro-cid-qlfjksao]{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--outer);background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:saturate(140%) blur(8px);-webkit-backdrop-filter:saturate(140%) blur(8px)}.mark-link[data-astro-cid-qlfjksao]{display:inline-flex;color:var(--fg)}.nav[data-astro-cid-qlfjksao]{display:flex;gap:var(--space-4);font-size:var(--fs-14);margin-right:var(--space-3)}.nav-link[data-astro-cid-qlfjksao]{color:var(--muted);transition:color var(--dur-hover) var(--ease-out)}.nav-link[data-astro-cid-qlfjksao]:hover,.nav-link[data-astro-cid-qlfjksao].is-active{color:var(--fg)}@media(max-width:480px){.nav[data-astro-cid-qlfjksao]{gap:var(--space-3);margin-right:var(--space-2)}}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}.site-footer[data-astro-cid-35ed7um5]{margin-top:var(--space-12);border-top:1px solid var(--line);padding:var(--space-8) 0 var(--space-12)}.row[data-astro-cid-35ed7um5]{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4) var(--space-8);align-items:start}.links[data-astro-cid-35ed7um5],.socials[data-astro-cid-35ed7um5]{display:flex;gap:var(--space-3);font-size:var(--fs-14)}.socials[data-astro-cid-35ed7um5]{justify-self:end}.build[data-astro-cid-35ed7um5]{grid-column:1;color:var(--fg);margin-top:var(--space-6);font-size:var(--fs-14)}.copyright[data-astro-cid-35ed7um5]{grid-column:2;justify-self:end;color:var(--muted);margin-top:var(--space-6);font-size:var(--fs-14)}@media(max-width:640px){.row[data-astro-cid-35ed7um5]{grid-template-columns:1fr}.build[data-astro-cid-35ed7um5],.copyright[data-astro-cid-35ed7um5]{grid-column:1 / -1}.socials[data-astro-cid-35ed7um5],.copyright[data-astro-cid-35ed7um5]{justify-self:start}.copyright[data-astro-cid-35ed7um5]{margin-top:var(--space-2)}}.nav-loading{position:fixed;top:0;left:0;width:100%;height:2px;z-index:9999;pointer-events:none;opacity:0;transition:opacity .15s ease}.nav-loading.is-loading{opacity:1}.nav-loading-bar{height:100%;background:var(--fg);transform-origin:left;animation:nav-bar 1.2s ease-in-out infinite}@keyframes nav-bar{0%{transform:scaleX(0)}50%{transform:scaleX(.7)}to{transform:scaleX(1)}}@media(prefers-reduced-motion:reduce){.nav-loading-bar{animation:none}.nav-loading.is-loading .nav-loading-bar{transform:scaleX(.4)}}
