.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}@font-face{font-family:DisplayFont;src:url(/fonts/ApfelGrotezk-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:HeadingFont;src:url(/fonts/ApfelGrotezk-Fett.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/JetBrainsMono-Regular.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/JetBrainsMono-Bold.woff2)format("woff2")}:root{--font-sans:"DisplayFont", system-ui, -apple-system, sans-serif;--font-heading:"HeadingFont", "DisplayFont", sans-serif;--font-mono:"JetBrains Mono", monospace;--text-xs:clamp(.7rem, .5vw + .6rem, .75rem);--text-sm:clamp(.8rem, .6vw + .7rem, .875rem);--text-base:clamp(.95rem, .8vw + .8rem, 1rem);--text-lg:clamp(1.05rem, 1vw + .9rem, 1.125rem);--text-xl:clamp(1.15rem, 1.2vw + 1rem, 1.25rem);--text-2xl:clamp(1.3rem, 2vw + 1rem, 1.5rem);--text-3xl:clamp(1.6rem, 3vw + 1rem, 2rem);--text-4xl:clamp(2rem, 4vw + 1rem, 2.75rem);--text-5xl:clamp(2.5rem, 6vw + 1rem, 3.75rem);--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-base:.25s cubic-bezier(.4, 0, .2, 1);--transition-slow:.4s cubic-bezier(.4, 0, .2, 1);--content-width:720px;--wide-width:960px;--full-width:1200px}:root,[data-theme=light]{--color-bg:#fdfff5;--color-bg-subtle:#f5f7ef;--color-bg-card:#fff;--color-border:color-mix(in srgb, var(--color-text) 14%, transparent);--color-border-hover:color-mix(in srgb, var(--color-text) 28%, transparent);--color-text:#0d0e0e;--color-text-muted:#5a5a58;--color-text-faint:#8a8a85;--color-accent:#e7000b;--color-accent-hover:#c50009;--color-accent-dim:#e7000b14;--color-accent-text:#e7000b;--color-code-bg:#f0f2ea;--color-code-text:#b8000a}[data-theme=dark]{--color-bg:#0d0e0e;--color-bg-subtle:#171818;--color-bg-card:#141515;--color-border:color-mix(in srgb, var(--color-text) 14%, transparent);--color-border-hover:color-mix(in srgb, var(--color-text) 28%, transparent);--color-text:#fdfff5;--color-text-muted:#9a9b95;--color-text-faint:#606160;--color-accent:#e7000b;--color-accent-hover:#ff2a33;--color-accent-dim:#e7000b1f;--color-accent-text:#ff3038;--color-code-bg:#1a1b1b;--color-code-text:#ff4d55}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;tab-size:2;font-size:100%}body{font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text);background-color:var(--color-bg);min-height:100dvh;transition:background-color var(--transition-base), color var(--transition-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex-direction:column;line-height:1.7;display:flex}img,picture,video,canvas,svg{max-width:100%;display:block}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);letter-spacing:-.02em;color:var(--color-text);font-weight:700;line-height:1.25}a{color:var(--color-accent-text);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-accent-hover)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px;border-radius:var(--radius-sm)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg)}::-webkit-scrollbar-thumb{background:var(--color-border-hover);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-faint)}::selection{background:var(--color-accent-dim);color:var(--color-text)}main{flex:1}.container{width:100%;max-width:var(--content-width);padding-inline:var(--space-6);margin-inline:auto}.container--wide{max-width:var(--wide-width)}.container--full{max-width:var(--full-width)}.prose{max-width:var(--content-width);color:var(--color-text)}.prose h1{font-size:var(--text-4xl);margin-top:var(--space-10);margin-bottom:var(--space-4)}.prose h2{font-size:var(--text-3xl);margin-top:var(--space-10);margin-bottom:var(--space-3);border-bottom:1px solid var(--color-border);padding-bottom:var(--space-2)}.prose h3{font-size:var(--text-2xl);margin-top:var(--space-8);margin-bottom:var(--space-2)}.prose h4{font-size:var(--text-xl);margin-top:var(--space-6);margin-bottom:var(--space-2)}.prose p{margin-bottom:var(--space-5);font-size:var(--text-lg);line-height:1.8}.prose a{color:var(--color-accent-text);text-underline-offset:3px;text-decoration:underline;text-decoration-color:var(--color-accent-dim);transition:color var(--transition-fast), text-decoration-color var(--transition-fast)}.prose a:hover{text-decoration-color:var(--color-accent)}.prose ul,.prose ol{margin-bottom:var(--space-5);padding-left:var(--space-6);font-size:var(--text-lg)}.prose li{margin-bottom:var(--space-2);line-height:1.7}.prose blockquote{margin:var(--space-6) 0;padding:var(--space-4) var(--space-6);border-left:3px solid var(--color-border-hover);background:var(--color-bg-subtle);border-radius:0 var(--radius-md) var(--radius-md) 0;color:var(--color-text-muted);font-style:italic}.prose blockquote p{margin-bottom:0}.prose :not(pre)>code{font-family:var(--font-mono);background:var(--color-code-bg);color:var(--color-code-text);border-radius:var(--radius-sm);border:1px solid var(--color-border);padding:.1em .4em;font-size:.875em}.prose pre,pre.astro-code{font-family:var(--font-mono);font-size:var(--text-sm);margin:var(--space-6) 0;padding:var(--space-6);border-radius:var(--radius-lg);border:1px solid var(--color-border);color:var(--color-text);line-height:1.65;overflow-x:auto;background-color:var(--color-bg-subtle)!important}:root[data-theme=dark] pre.astro-code,:root[data-theme=dark] .prose pre,html[data-theme=dark] pre.astro-code,html[data-theme=dark] .prose pre{background-color:var(--color-bg-subtle)!important;color:var(--shiki-dark,var(--color-text))!important}:root[data-theme=dark] pre.astro-code code,:root[data-theme=dark] .prose pre code,html[data-theme=dark] pre.astro-code code,html[data-theme=dark] .prose pre code{color:inherit!important}:root[data-theme=dark] pre.astro-code span,:root[data-theme=dark] .prose pre span,html[data-theme=dark] pre.astro-code span,html[data-theme=dark] .prose pre span{color:var(--shiki-dark,inherit)!important;font-style:var(--shiki-dark-font-style,inherit)!important;font-weight:var(--shiki-dark-font-weight,inherit)!important;text-decoration:var(--shiki-dark-text-decoration,inherit)!important}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) pre.astro-code,:root:not([data-theme=light]) .prose pre{background-color:var(--color-bg-subtle)!important;color:var(--shiki-dark,var(--color-text))!important}:root:not([data-theme=light]) pre.astro-code code,:root:not([data-theme=light]) .prose pre code{color:inherit!important}:root:not([data-theme=light]) pre.astro-code span,:root:not([data-theme=light]) .prose pre span{color:var(--shiki-dark,inherit)!important;font-style:var(--shiki-dark-font-style,inherit)!important;font-weight:var(--shiki-dark-font-weight,inherit)!important;text-decoration:var(--shiki-dark-text-decoration,inherit)!important}}.prose hr{border:none;border-top:1px solid var(--color-border);margin:var(--space-10) 0}.prose img{border-radius:var(--radius-lg);margin:var(--space-8) auto}.prose table{border-collapse:collapse;width:100%;margin:var(--space-6) 0;font-size:var(--text-sm)}.prose th,.prose td{padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);text-align:left}.prose th{background:var(--color-bg-subtle);font-weight:700}.prose tr:hover{background:var(--color-bg-subtle)}.accent-dot{color:var(--color-accent)}@media (width<=640px){.container{padding-inline:var(--space-4)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}button[data-astro-cid-l6lhmie6]{border:1px solid var(--color-border);border-radius:var(--radius-md);width:36px;height:36px;color:var(--color-text);cursor:pointer;transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;justify-content:center;align-items:center;display:flex}button[data-astro-cid-l6lhmie6]:hover{color:var(--color-accent);border-color:var(--color-border-hover);background:var(--color-bg-subtle)}[data-theme=dark] .icon-moon[data-astro-cid-l6lhmie6]{display:none}[data-theme=dark] .icon-sun[data-astro-cid-l6lhmie6]{display:block}[data-theme=light] .icon-sun[data-astro-cid-l6lhmie6]{display:none}[data-theme=light] .icon-moon[data-astro-cid-l6lhmie6]{display:block}:not([data-theme]) .icon-moon[data-astro-cid-l6lhmie6]{display:none}:not([data-theme]) .icon-sun[data-astro-cid-l6lhmie6]{display:block}.site-header[data-astro-cid-nen7h5rs]{z-index:100;border-bottom:1px solid var(--color-border);background-color:var(--color-bg);width:100%;transition:background-color var(--transition-base), border-color var(--transition-base);position:sticky;top:0}.header-inner[data-astro-cid-nen7h5rs]{justify-content:space-between;align-items:center;gap:var(--space-4);height:64px;display:flex}.brand[data-astro-cid-nen7h5rs]{font-family:var(--font-mono);font-size:var(--text-base);color:var(--color-text);letter-spacing:-.02em;transition:color var(--transition-fast);align-items:center;gap:4px;font-weight:700;text-decoration:none;display:inline-flex}.brand[data-astro-cid-nen7h5rs]:hover{color:var(--color-accent-text)}.brand-symbol[data-astro-cid-nen7h5rs]{color:var(--color-accent-text);margin-right:2px}.brand-dot[data-astro-cid-nen7h5rs]{color:var(--color-accent-text)}.brand-ext[data-astro-cid-nen7h5rs]{color:var(--color-text-muted)}.brand[data-astro-cid-nen7h5rs]:hover .brand-ext[data-astro-cid-nen7h5rs]{color:var(--color-accent-text)}.site-nav[data-astro-cid-nen7h5rs]{align-items:center;gap:var(--space-6);display:flex}.nav-list[data-astro-cid-nen7h5rs]{align-items:center;gap:var(--space-2);list-style:none;display:flex}.nav-link[data-astro-cid-nen7h5rs]{padding:var(--space-1) var(--space-2);font-size:var(--text-sm);color:var(--color-text-muted);transition:color var(--transition-fast);font-weight:500;text-decoration:none;display:inline-block}.nav-link[data-astro-cid-nen7h5rs]:hover{color:var(--color-text)}.nav-link[data-astro-cid-nen7h5rs].active{color:var(--color-accent-text);font-weight:600}.nav-actions[data-astro-cid-nen7h5rs]{padding-left:var(--space-2);border-left:1px solid var(--color-border);align-items:center;display:flex}@media (width<=640px){.header-inner[data-astro-cid-nen7h5rs]{height:56px}.site-nav[data-astro-cid-nen7h5rs]{gap:var(--space-3)}.nav-list[data-astro-cid-nen7h5rs]{gap:2px}.nav-link[data-astro-cid-nen7h5rs]{padding:var(--space-1) var(--space-2);font-size:var(--text-xs)}}.site-footer[data-astro-cid-jo6i4kqk]{border-top:1px solid var(--color-border);background-color:var(--color-bg-subtle);padding-block:var(--space-10);transition:background-color var(--transition-base), border-color var(--transition-base);margin-top:auto}.footer-inner[data-astro-cid-jo6i4kqk]{justify-content:space-between;align-items:center;gap:var(--space-6);flex-wrap:wrap;display:flex}.footer-meta[data-astro-cid-jo6i4kqk]{gap:var(--space-1);flex-direction:column;display:flex}.copyright[data-astro-cid-jo6i4kqk]{font-size:var(--text-sm);color:var(--color-text)}.author-link[data-astro-cid-jo6i4kqk]{color:var(--color-text);font-weight:600}.author-link[data-astro-cid-jo6i4kqk]:hover{color:var(--color-accent-text)}.footer-links[data-astro-cid-jo6i4kqk]{align-items:center;gap:var(--space-4);flex-wrap:wrap;list-style:none;display:flex}.footer-link[data-astro-cid-jo6i4kqk]{font-size:var(--text-sm);color:var(--color-text-muted);transition:color var(--transition-fast);align-items:center;gap:3px;display:inline-flex}.footer-link[data-astro-cid-jo6i4kqk]:hover{color:var(--color-accent-text)}.external-icon[data-astro-cid-jo6i4kqk]{opacity:.7;transition:transform var(--transition-fast);font-size:.75em}.footer-link[data-astro-cid-jo6i4kqk]:hover .external-icon[data-astro-cid-jo6i4kqk]{opacity:1;transform:translate(1px,-1px)}@media (width<=640px){.site-footer[data-astro-cid-jo6i4kqk]{padding-block:var(--space-8)}.footer-inner[data-astro-cid-jo6i4kqk]{align-items:flex-start;gap:var(--space-4);flex-direction:column}.footer-links[data-astro-cid-jo6i4kqk]{gap:var(--space-3)}}.skip-to-content[data-astro-cid-z4jru4n3]{top:-100px;left:var(--space-4);background:var(--color-accent);color:#fff;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);z-index:1000;font-size:var(--text-sm);transition:top var(--transition-fast);font-weight:600;text-decoration:none;position:absolute}.skip-to-content[data-astro-cid-z4jru4n3]:focus{top:var(--space-4)}
