@font-face{font-family:Geist;src:url(/assets/fonts/geist-variable.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/fonts/GeistMono-Variable.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Geist Pixel Grid;src:url(/assets/fonts/GeistPixel-Grid.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Geist Fallback;src:local("Arial"),local("Liberation Sans"),local("Helvetica");size-adjust:102.21%;ascent-override:98.33%;descent-override:28.86%;line-gap-override:0%}:root{--font-body: "Geist", "Geist Fallback", ui-sans-serif, system-ui, sans-serif;--font-display: "Geist", "Geist Fallback", ui-sans-serif, system-ui, sans-serif;--font-heading: var(--font-display);--font-mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--font-label: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--font-pixel: "Geist Pixel Grid", "Geist", "Geist Fallback", ui-sans-serif, sans-serif;--font-size-base: 16px;--text-body: 1.1875rem;--text-lead: 1.375rem;--text-small: .9375rem;--text-meta: .8125rem;--text-label: .75rem;--label-tracking: .08em;--label-tracking-tight: .05em;--label-weight: 500;--text-h4: clamp(1.0625rem, 1rem + .3vw, 1.1875rem);--text-h3: clamp(1.25rem, 1.1rem + .7vw, 1.5rem);--text-h2: clamp(1.5rem, 1.24rem + 1.3vw, 2.0625rem);--text-h1: clamp(2rem, 1.4rem + 3vw, 3.25rem);--text-display: clamp(2.5rem, 1.6rem + 4.5vw, 4.5rem);--font-size-sm: var(--text-meta);--font-size-md: 1rem;--font-size-lg: var(--text-body);--font-size-xl: var(--text-lead);--font-size-2xl: var(--text-h3);--font-size-3xl: var(--text-h2);--font-size-4xl: var(--text-h1);--font-size-5xl: var(--text-display);--font-size-reading: var(--text-body);--leading-display: 1;--leading-heading: 1.1;--leading-lead: 1.45;--leading-body: 1.65;--text-code: 1.0625rem;--leading-code: 1.55;--line-height-tight: var(--leading-heading);--line-height-normal: 1.5;--line-height-relaxed: var(--leading-body);--rhythm: calc(var(--text-body) * var(--leading-body));--space-xs: calc(var(--rhythm) * .25);--space-sm: calc(var(--rhythm) * .5);--space-md: var(--rhythm);--space-lg: calc(var(--rhythm) * 1.5);--space-xl: calc(var(--rhythm) * 2);--space-2xl: calc(var(--rhythm) * 3);--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;--measure: 66ch;--measure-wide: 82ch;--gutter: clamp(1rem, 4vw, 2.5rem);--container-max: min(90vw, 1280px);--color-bg: #ffffff;--color-bg-alt: #f4f4f4;--color-text: #111111;--color-text-muted: #666666;--color-border: #e2e2e2;--color-border-strong: #111111;--color-accent: #111111;--color-accent-hover: #666666;--color-llm: #111111;--color-llm-hover: #666666;--color-code-bg: #f7f7f7;--color-code-border: #e2e2e2;--color-code-badge-bg: #ebebeb;--color-code-badge-text: #111111;--color-selection: color-mix(in srgb, #111111 14%, transparent);--color-code-ink: #111111;--color-code-mid: #4a4a4a;--color-code-dim: #6e6e6e;--shiki-color-text: var(--color-code-ink);--shiki-color-background: transparent;--shiki-token-constant: var(--color-code-ink);--shiki-token-keyword: var(--color-code-ink);--shiki-token-function: var(--color-code-ink);--shiki-token-string: var(--color-code-mid);--shiki-token-parameter: var(--color-code-mid);--shiki-token-string-expression: var(--color-code-mid);--shiki-token-comment: var(--color-code-dim);--shiki-token-punctuation: var(--color-code-dim);--shiki-token-link: var(--color-code-ink)}@media(prefers-color-scheme:dark){:root{--color-bg: #000000;--color-bg-alt: #0d0d0d;--color-text: #e6e6e6;--color-text-muted: #909090;--color-border: #262626;--color-border-strong: #e6e6e6;--color-accent: #e6e6e6;--color-accent-hover: #909090;--color-llm: #e6e6e6;--color-llm-hover: #909090;--color-code-bg: #0d0d0d;--color-code-border: #262626;--color-code-badge-bg: #1c1c1c;--color-code-badge-text: #e6e6e6;--color-selection: color-mix(in srgb, #e6e6e6 24%, transparent);--color-code-ink: #e6e6e6;--color-code-mid: #a8a8a8;--color-code-dim: #7d7d7d;--shiki-color-text: var(--color-code-ink);--shiki-color-background: transparent;--shiki-token-constant: var(--color-code-ink);--shiki-token-keyword: var(--color-code-ink);--shiki-token-function: var(--color-code-ink);--shiki-token-string: var(--color-code-mid);--shiki-token-parameter: var(--color-code-mid);--shiki-token-string-expression: var(--color-code-mid);--shiki-token-comment: var(--color-code-dim);--shiki-token-punctuation: var(--color-code-dim);--shiki-token-link: var(--color-code-ink)}}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html{font-size:var(--font-size-base);-webkit-text-size-adjust:100%}body{font-family:var(--font-body);font-size:var(--font-size-base);line-height:var(--line-height-relaxed);color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-weight:400;font-kerning:normal;font-synthesis:style;font-optical-sizing:auto;font-size-adjust:from-font;-webkit-text-size-adjust:100%;text-size-adjust:100%}::selection{background-color:var(--color-selection)}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-optical-sizing:auto;font-synthesis:none;font-weight:800;line-height:var(--leading-heading);letter-spacing:-.025em;text-wrap:balance;margin-block:var(--space-xl) var(--space-sm)}@supports (text-box-trim: trim-both){h1,h2,h3,h4,h5,h6{text-box-trim:trim-both;text-box-edge:cap alphabetic}}h1{font-size:var(--font-size-5xl)}h2{font-size:var(--font-size-4xl)}h3{font-size:var(--font-size-3xl)}h4{font-size:var(--font-size-2xl)}h5{font-size:var(--font-size-lg)}h6{font-size:var(--font-size-md)}p,ul,ol,pre,table,blockquote{margin-bottom:var(--space-4)}table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm);line-height:var(--line-height-normal);overflow-x:auto;display:block}thead{border-bottom:2px solid var(--color-border)}th{font-weight:600;text-align:left;padding:var(--space-3) var(--space-4);color:var(--color-text);white-space:nowrap}td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);color:var(--color-text);vertical-align:top}tr:last-child td{border-bottom:none}tbody tr:hover{background-color:var(--color-bg-alt)}p{text-wrap:pretty}@media(max-width:34rem){p,li{hyphens:auto;hyphenate-limit-chars:8 4 3}}pre+p,pre+ul,pre+ol,pre+blockquote{margin-top:var(--space-6)}a{color:var(--color-accent);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .2s,color .2s;cursor:pointer}a:hover{color:var(--color-accent-hover);border-bottom-color:currentColor}ul,ol{padding-left:var(--space-6)}li{margin-bottom:var(--space-2)}blockquote{position:relative;margin-left:0;margin-right:0;padding:var(--space-6) var(--space-8);padding-left:var(--space-8);background-color:var(--color-bg-alt);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);color:var(--color-text);font-style:normal}blockquote p{font-family:var(--font-body);font-size:var(--text-body);line-height:var(--leading-body)}blockquote p:last-child{margin-bottom:0}blockquote cite,blockquote footer{display:block;margin-top:var(--space-3);font-family:var(--font-body);font-size:var(--font-size-sm);font-style:normal;color:var(--color-text-muted)}blockquote cite:before,blockquote footer:before{content:"— "}code{font-family:var(--font-mono);font-size:1em;padding:.1em .3em;background-color:var(--color-code-bg);border:none;word-break:break-word}pre{overflow-x:auto;overflow-y:hidden;padding:var(--space-md);margin:0;background-color:var(--color-code-bg);font-family:var(--font-mono);font-size:var(--text-code);line-height:var(--leading-code);position:relative;tab-size:4}pre code{padding:0;background:none;border:none;font-family:inherit}.astro-code{background-color:var(--color-code-bg)!important;padding:var(--space-md);padding-top:var(--space-lg);margin-block:var(--space-lg)}.astro-code[data-language]:before{content:attr(data-language);position:absolute;top:0;right:0;padding:var(--space-1) var(--space-3);font-family:var(--font-pixel);font-size:var(--text-label);font-weight:400;letter-spacing:.05em;text-transform:uppercase;color:var(--color-code-badge-text);background-color:var(--color-code-badge-bg)}.astro-code code{display:block;width:100%;background:transparent!important;padding:0!important}.code-block-tabs{margin:var(--space-6) 0;background-color:var(--color-code-bg);border:1px solid var(--color-code-border);overflow:hidden}.code-tabs-container{display:flex;gap:0;border-bottom:1px solid var(--color-code-border);padding:0;background-color:var(--color-code-badge-bg)}.code-tab{background:none;border:none;padding:var(--space-3) var(--space-4);min-height:44px;font-family:var(--font-pixel);font-size:var(--text-label);color:var(--color-text-muted);cursor:pointer;text-transform:lowercase;letter-spacing:.05em;transition:color .2s ease,background-color .2s ease;border-bottom:2px solid transparent;position:relative;top:1px}.code-tab:hover{color:var(--color-text)}.code-tab.active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.code-block-tabs .code-content{display:none;margin:0;border:none;padding:var(--space-4);background-color:transparent!important}.code-block-tabs .code-content.active,.code-block-tabs .code-content code{display:block}.code-block-tabs .code-content,.code-block-tabs .code-content span{background-color:transparent!important}img{max-width:100%;height:auto;display:block;margin:var(--space-8) auto}hr{border:none;border-top:1px solid var(--color-border);margin:var(--space-10) 0}.container{display:grid;grid-template-columns:1fr min(var(--container-max),100%) 1fr;grid-template-rows:auto 1fr auto;min-height:100dvh;padding-left:max(var(--space-6),env(safe-area-inset-left,0px));padding-right:max(var(--space-6),env(safe-area-inset-right,0px));overflow-x:hidden}.container>*{grid-column:2}.site-header{position:sticky;top:0;z-index:100;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);background-color:color-mix(in srgb,var(--color-bg) 75%,transparent);padding-block:var(--space-sm);border-bottom:1px solid var(--color-border-strong);margin-block-end:var(--space-xl)}.nav{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:nowrap;position:relative}.nav-see-more{background:none;border:1px solid var(--color-border);padding:var(--space-1) var(--space-3);font-family:var(--font-body);font-size:var(--font-size-sm);color:var(--color-text);cursor:pointer;transition:background-color .2s}.nav-see-more:hover{background-color:var(--color-bg-alt)}.nav-popover{margin:0;inset:unset;border:1px solid var(--color-border);padding:var(--space-4);background-color:var(--color-bg);box-shadow:0 4px 12px #0000001a;color:var(--color-text);position:absolute;top:calc(100% + var(--space-2));right:0}.nav-popover-inner{display:flex;flex-direction:column;gap:var(--space-3);min-width:200px}.nav-popover-inner a{color:var(--color-text);text-decoration:none;padding:var(--space-2) 0;border-bottom:1px solid var(--color-border);transition:color .2s}.nav-popover-inner a:last-child{border-bottom:none}.nav-popover-inner a:hover,.nav-popover-inner a[aria-current=page]{color:var(--color-accent)}.nav-popover-close{align-self:flex-end;background:none;border:none;font-size:var(--font-size-xl);cursor:pointer;color:var(--color-text-muted);line-height:1}.mobile-menu-toggle{display:none;background:none;border:none;padding:var(--space-3);min-width:48px;min-height:48px;cursor:pointer;z-index:1000}.hamburger{display:block;width:24px;height:2px;background-color:var(--color-text);position:relative;transition:background-color .3s ease}.hamburger:before,.hamburger:after{content:"";position:absolute;width:24px;height:2px;background-color:var(--color-text);transition:transform .3s ease}.hamburger:before{top:-8px}.hamburger:after{top:8px}.mobile-menu-toggle[aria-expanded=true] .hamburger{background-color:transparent}.mobile-menu-toggle[aria-expanded=true] .hamburger:before{transform:rotate(45deg) translate(6px,6px)}.mobile-menu-toggle[aria-expanded=true] .hamburger:after{transform:rotate(-45deg) translate(6px,-6px)}.nav-title{display:inline-flex;align-items:center;gap:var(--space-2);font-family:var(--font-label);font-size:var(--text-label);font-weight:600;letter-spacing:var(--label-tracking);text-transform:uppercase;color:var(--color-text);border:none;text-decoration:none;transition:color .2s ease;flex-shrink:0;white-space:nowrap}.nav-title:hover{color:var(--color-accent);border:none}.nav-links{display:flex;align-items:center;gap:var(--space-4);overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;flex-shrink:1;min-width:0;flex-wrap:nowrap}.nav-links::-webkit-scrollbar{height:4px}.nav-links::-webkit-scrollbar-track{background:transparent}.nav-links::-webkit-scrollbar-thumb{background:var(--color-border)}.nav-links::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.nav-links a{color:var(--color-text-muted);border:none;font-family:var(--font-label);font-weight:500;font-size:var(--text-label);letter-spacing:var(--label-tracking);text-transform:uppercase;padding:var(--space-1) var(--space-2);transition:color .2s ease;position:relative;white-space:nowrap;flex-shrink:0}.nav-links a:after{content:"";position:absolute;bottom:0;left:var(--space-3);right:var(--space-3);height:2px;background-color:var(--color-accent);transform:scaleX(0);transition:transform .2s ease}.nav-links a:hover{color:var(--color-text)}.nav-links a:hover:after{transform:scaleX(1)}.nav-links a[aria-current=page]{color:var(--color-accent);font-weight:600}.nav-links a[aria-current=page]:after{transform:scaleX(1)}.main{container-type:inline-size;min-height:calc(100dvh - 200px);margin-block-end:var(--space-2xl)}.posts-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr auto;border-top:1px solid var(--color-border)}.post-item{display:grid;grid-template-columns:subgrid;grid-column:1 / -1;column-gap:var(--space-6);padding-block:var(--space-5);border-bottom:1px solid var(--color-border)}.post-header{display:grid;grid-template-columns:subgrid;grid-column:1 / -1;align-items:baseline;column-gap:var(--space-6)}.post-meta{font-family:var(--font-label);font-size:var(--font-size-sm);color:var(--color-text-muted);white-space:nowrap;text-align:right;letter-spacing:var(--label-tracking)}.post-title{font-family:var(--font-heading);font-size:var(--font-size-2xl);font-weight:600;margin:0;line-height:var(--line-height-tight);letter-spacing:-.015em;text-wrap:balance}.post-title a{color:var(--color-text);border:none;transition:color .2s ease}.post-title a:hover{color:var(--color-accent);border:none}.post-excerpt{grid-column:1 / -1;max-width:64ch;color:var(--color-text-muted);text-wrap:pretty;font-size:var(--font-size-md);line-height:var(--line-height-relaxed);margin:var(--space-2) 0 0}.post-type-devlog .post-title a{color:var(--color-accent)}.post-type-devlog .post-title a:hover{color:var(--color-accent-hover)}.devlog-page h1{text-align:center}.devlog-intro{text-align:center;color:var(--color-text-muted);margin-bottom:var(--space-12)}.no-posts{text-align:center;color:var(--color-text-muted);margin-top:var(--space-12)}.post-type-llm-guide .post-title a,.post-type-llm-link .post-title a{color:var(--color-llm)}.post-type-llm-guide .post-title a:hover,.post-type-llm-link .post-title a:hover{color:var(--color-llm-hover)}.external-indicator{font-size:.5em;vertical-align:super;opacity:.5;margin-left:.25em}.post-title-author{font-weight:400;color:var(--color-text-muted);font-size:.75em}.llm-author{font-weight:500}.page-heading{text-align:center}.page-intro{text-align:center;color:var(--color-text-muted);margin-bottom:var(--space-12)}.empty-state{text-align:center;color:var(--color-text-muted);margin-top:var(--space-12)}.home{display:flex;flex-direction:column}.home section{padding:var(--space-6) 0}.home-intro{display:flex;flex-direction:column;gap:var(--space-3);padding-top:var(--space-4)}.home-label{font-family:var(--font-label);font-size:var(--text-label);font-weight:var(--label-weight);letter-spacing:var(--label-tracking);text-transform:uppercase;color:var(--color-text-muted);line-height:1.4;margin:0}.home-now{margin:0;font-family:var(--font-label);font-size:var(--font-size-sm)}.home-now-link{color:var(--color-accent);font-weight:500;border:none}.home-rule{height:1px;border:0;background:var(--color-border);margin:0}.home-featured{display:flex;flex-direction:column;gap:var(--space-3)}.home-featured-title{margin:0;font-family:var(--font-display);font-size:clamp(var(--font-size-2xl),3.4vw,2rem);line-height:1.18;font-weight:600}.home-featured-title a{color:var(--color-accent);border:none;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:from-font}.home-featured-sum{margin:0;font-family:var(--font-body);font-size:var(--font-size-xl);line-height:1.5;color:var(--color-text);max-width:62ch}.home-work{display:flex;flex-direction:column;gap:var(--space-2);align-items:flex-start}.home-work-link{font-family:var(--font-body);font-size:var(--font-size-lg);color:var(--color-accent);border:none;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:from-font;width:fit-content}.home-latest{display:flex;flex-direction:column}.home-latest-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-2)}.home-alllink{font-family:var(--font-label);font-size:var(--text-label);font-weight:var(--label-weight);letter-spacing:var(--label-tracking);text-transform:uppercase;color:var(--color-accent);border:none;white-space:nowrap}.home-note{display:grid;grid-template-columns:190px 1fr;gap:var(--space-8);align-items:baseline;padding:var(--space-4) 0;border-top:1px solid var(--color-border)}.home-note-meta{font-family:var(--font-label);font-size:var(--text-label);letter-spacing:var(--label-tracking-tight);text-transform:uppercase;color:var(--color-text-muted)}.home-note-title{margin:0;font-family:var(--font-display);font-size:var(--font-size-xl);line-height:1.3;font-weight:500}.home-note-title a{color:var(--color-accent);border:none;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:from-font}.ext-arrow{font-family:var(--font-label);font-size:.82em}@media(max-width:680px){.home-note{grid-template-columns:1fr;gap:var(--space-1)}.home-note-meta{order:-1}}.projects-page h1,.project-page h1{text-align:center}.projects-intro{text-align:center;color:var(--color-text-muted);margin-bottom:var(--space-12)}.project-description{color:var(--color-text-muted);margin-bottom:var(--space-4)}.no-projects{text-align:center;color:var(--color-text-muted);margin-top:var(--space-12)}.project-page .project-description{text-align:center;font-size:var(--font-size-lg);margin-bottom:var(--space-8)}.project-nav{display:flex;justify-content:center;align-items:center;gap:var(--space-4);margin-bottom:var(--space-12);font-size:var(--font-size-sm)}.project-nav a{color:var(--color-text-muted)}.project-nav a:hover{color:var(--color-text)}.post-project a{color:var(--color-accent);font-weight:500}.post-project a:hover{color:var(--color-accent-hover)}.project-nav-links{text-align:center;margin-bottom:var(--space-12)}.project-nav-links a{color:var(--color-accent)}.project-nav-links a:hover{color:var(--color-accent-hover)}.project-section{margin-bottom:var(--space-16)}.project-section:last-child{margin-bottom:0}.project-section-title{font-size:var(--font-size-2xl);color:var(--color-accent);margin-bottom:var(--space-6);padding-bottom:var(--space-2);border-bottom:2px solid var(--color-border)}.project-section .post-title{font-size:var(--font-size-lg)}.posts-page h1{text-align:center}.view-all{text-align:center;margin-top:var(--space-12)}.tags-index h1,.tag-page h1{margin-bottom:var(--space-8)}.tags-list{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-4)}.tags-list li{margin:0}.tags-list a{display:inline-block;padding:var(--space-1) var(--space-3);background:var(--color-bg-alt);border:1px solid var(--color-border)}.tags-list a:hover{background:var(--color-accent);color:var(--color-bg);border-color:var(--color-accent)}.tag-count{color:var(--color-text-muted);font-size:var(--font-size-sm);margin-left:var(--space-1)}.article{max-inline-size:54rem;margin-inline:auto}.article-endmatter{margin-block-start:var(--space-xl);max-inline-size:var(--measure);margin-inline:auto}.article-endmatter>*+*{margin-block-start:var(--space-lg)}.article-hero{display:flex;flex-direction:column;gap:var(--space-sm);text-align:left;padding-block-start:var(--space-xl);max-inline-size:var(--measure);margin-inline:auto}.article-kicker{font-family:var(--font-label);font-size:var(--text-label);font-weight:var(--label-weight);letter-spacing:var(--label-tracking);text-transform:uppercase;color:var(--color-text-muted);margin:0}.article-title{font-family:var(--font-display);margin:0;text-wrap:balance;font-size:var(--text-h1);font-weight:800;line-height:var(--leading-display);letter-spacing:-.04em;text-transform:none}.article-lead{font-family:var(--font-body);font-size:var(--text-lead);line-height:var(--leading-lead);color:var(--color-text);margin:0;max-inline-size:54ch;text-wrap:pretty}.article-meta{display:flex;gap:var(--space-3);font-family:var(--font-label);font-size:var(--text-label);letter-spacing:var(--label-tracking-tight);text-transform:uppercase;color:var(--color-text-muted);justify-content:flex-start;align-items:center;flex-wrap:wrap}.scroll-to-top-link{position:fixed;bottom:var(--space-6);right:var(--space-6);font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--color-text-muted);text-decoration:none;border:none;white-space:nowrap;transition:color .2s ease,opacity .2s ease;cursor:pointer;opacity:0;visibility:hidden;z-index:10}.scroll-to-top-link.visible{opacity:1;visibility:visible}.scroll-to-top-link:hover{color:var(--color-accent)}.article-content>*:first-child{margin-top:0}.article-content{font-family:var(--font-body);font-size:var(--text-body);line-height:var(--leading-body);margin-inline:0;padding-inline:0;text-rendering:optimizeLegibility;font-kerning:normal;font-feature-settings:"kern" 1,"liga" 1;font-synthesis:style;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-wrap:break-word}.article-content>*{max-inline-size:var(--measure);margin-inline:auto}.article-content>pre,.article-content>figure,.article-content>table,.article-content>.code-block,.article-content>.mdx-image-figure{max-inline-size:var(--measure-wide)}.article-content p{margin-block:1lh}.article-content a{border-bottom:none;text-decoration-line:underline;text-decoration-thickness:from-font;text-underline-offset:.15em;text-decoration-skip-ink:auto;text-decoration-color:color-mix(in srgb,currentColor 40%,transparent);transition:text-decoration-color .2s,color .2s}.article-content a:hover,.article-content a:focus-visible{text-decoration-color:currentColor}.article-content p,.article-content li,.article-content blockquote{hanging-punctuation:first last}.article-content pre,.article-content code,.article-content pre *{hanging-punctuation:none}.sidenote-host{display:inline}.sidenote-ref{font-family:var(--font-label);font-size:.68em;font-weight:var(--label-weight);line-height:1;color:var(--color-accent);margin-inline-start:.12em}.sidenote{display:block;margin-block:var(--space-sm);margin-inline-start:var(--space-md);font-size:var(--text-small);line-height:1.5;color:var(--color-text-muted);text-wrap:pretty;hanging-punctuation:none}.sidenote-marker{font-family:var(--font-label);font-size:var(--text-label);font-weight:var(--label-weight);color:var(--color-accent);margin-inline-end:.5em}.article-content blockquote{margin-block:var(--space-lg);padding-inline-start:var(--space-md)}.article-content blockquote p{font-family:var(--font-display);font-weight:500;font-size:1.3em;line-height:1.3;letter-spacing:-.02em;font-synthesis:none;text-wrap:balance;color:var(--color-text)}.article-content blockquote>p:first-child{margin-top:0}.article-content blockquote>p:last-child{margin-bottom:0}.article-content ul,.article-content ol{margin-block:1lh;padding-inline-start:1.5em}.article-content li{margin-block:.35lh}.article-content li::marker{color:var(--color-text-muted)}.article-content li>ul,.article-content li>ol{margin-block:.35lh}.article-content table{width:100%;margin-block:var(--space-lg);border-collapse:collapse;font-size:var(--text-small);line-height:1.45}.article-content th{font-family:var(--font-label);font-size:var(--text-label);font-weight:var(--label-weight);letter-spacing:var(--label-tracking);text-transform:uppercase;text-align:start;color:var(--color-text-muted);padding-block:var(--space-xs);border-bottom:1px solid var(--color-border-strong)}.article-content td{padding-block:var(--space-xs);border-bottom:1px solid var(--color-border);vertical-align:baseline}.article-content td:has(>code:only-child),.article-content th:has(>code:only-child){font-family:var(--font-mono)}.article-content hr{border:none;border-top:1px solid var(--color-border);margin-block:var(--space-xl)}.article-content :is(h1,h2,h3,h4,h5,h6){font-family:var(--font-heading);font-weight:700;margin-block:var(--space-xl) var(--space-sm)}.article-content h1{font-size:var(--text-h1)}.article-content h2{font-size:var(--text-h2)}.article-content h3{font-size:var(--text-h3)}.article-content h4{font-size:var(--text-h4)}.article-content h5{font-family:var(--font-body);font-size:var(--text-body);font-weight:600;letter-spacing:0}.article-content h6{font-family:var(--font-label);font-size:var(--text-label);font-weight:var(--label-weight);letter-spacing:var(--label-tracking);text-transform:uppercase;color:var(--color-text-muted)}.article-content h1{color:var(--color-accent)}.article-content em{font-style:italic}.article-content strong{font-weight:700}.warning-box{margin-block:var(--space-lg);padding:var(--space-md);max-inline-size:var(--measure);position:relative;background-color:var(--color-bg-alt)}.warning-header{margin-bottom:var(--space-2);font-weight:600}.warning-title{font-size:var(--font-size-md);letter-spacing:-.02em;font-family:var(--font-display)}.warning-content{font-size:var(--font-size-sm);line-height:var(--line-height-relaxed);color:var(--color-text-muted)}.warning-content p:last-child{margin-bottom:0}.warning-danger{background-color:var(--color-bg-alt)}.warning-danger .warning-title{color:var(--color-text);font-weight:800;text-transform:uppercase;letter-spacing:var(--label-tracking);font-size:var(--text-label)}.warning-warning{background-color:var(--color-bg-alt)}.warning-warning .warning-title{color:var(--color-text);font-weight:700}.warning-muted,.warning-deprecated{background-color:transparent}.warning-muted{background-color:var(--color-bg-alt)}.warning-muted .warning-title{color:var(--color-text-muted);font-weight:500}.post-tags{margin-top:var(--space-4);color:var(--color-text-muted)}.post-tag{color:var(--color-accent);text-decoration:underline}.post-tag:hover{color:var(--color-accent-hover)}.like-button{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);background:transparent;color:var(--color-text-muted);font-family:var(--font-body);font-size:var(--font-size-sm);cursor:pointer;transition:color .2s ease,border-color .2s ease,background-color .2s ease;margin-top:var(--space-6)}.like-button:hover{color:var(--color-accent);border-color:var(--color-accent)}.like-button.liked{color:var(--color-accent);border-color:var(--color-accent);background-color:color-mix(in srgb,var(--color-accent) 8%,transparent)}.heart-icon{flex-shrink:0}.related-posts{margin-top:var(--space-8);margin-bottom:var(--space-6);padding:var(--space-6);background-color:var(--color-bg-alt);border:1px solid var(--color-border);border-left:3px solid var(--color-accent)}.related-posts h3{margin-block:0 var(--space-sm);font-family:var(--font-label);font-size:var(--text-label);font-weight:var(--label-weight);letter-spacing:var(--label-tracking);text-transform:uppercase;color:var(--color-text-muted)}.related-posts-list{list-style:none;padding:0;margin:0}.related-posts-list li{margin-bottom:var(--space-3);padding-left:var(--space-4);position:relative}.related-posts-list li:last-child{margin-bottom:0}.related-posts-list a{color:var(--color-accent);border:none}.related-posts-list a:hover{color:var(--color-accent-hover);border-bottom:1px solid currentColor}.references{margin-top:var(--space-10);margin-bottom:var(--space-6);padding-top:var(--space-6);border-top:1px solid var(--color-border)}.references-title{margin-block:0 var(--space-sm);font-family:var(--font-label);font-size:var(--text-label);font-weight:var(--label-weight);letter-spacing:var(--label-tracking);text-transform:uppercase;color:var(--color-text-muted)}.references-list{list-style:none;counter-reset:ref;padding:0;margin:0}.references-list li{counter-increment:ref;position:relative;padding-left:var(--space-8);margin-bottom:var(--space-3);font-size:var(--font-size-sm);line-height:var(--line-height-relaxed);color:var(--color-text-muted)}.references-list li:before{content:counter(ref) ".";position:absolute;left:0;width:var(--space-6);text-align:right;font-family:var(--font-mono);font-size:var(--text-label);color:var(--color-text-muted);opacity:.6}.references-list li:last-child{margin-bottom:0}.references-list a{color:var(--color-accent);border:none;word-break:break-all}.references-list a:hover{color:var(--color-accent-hover);border-bottom:1px solid currentColor}.site-footer{padding:var(--space-md) 0 max(var(--space-xl),env(safe-area-inset-bottom,0px));margin-block-start:var(--space-2xl);font-family:var(--font-label);font-size:var(--text-label);color:var(--color-text-muted)}.footer-rail{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4) var(--space-6);flex-wrap:wrap}.footer-brand{display:inline-flex;align-items:center;gap:var(--space-2);font-weight:600;letter-spacing:var(--label-tracking);text-transform:uppercase;color:var(--color-text);white-space:nowrap}.footer-links{display:flex;gap:var(--space-6);flex-wrap:wrap;align-items:center}.footer-links a,.footer-links span{color:var(--color-text-muted);border:none;text-decoration:none;letter-spacing:var(--label-tracking);text-transform:uppercase;transition:color .2s ease}.footer-links a:hover{color:var(--color-accent)}.mdx-image-figure{margin:var(--space-xl) 0}.code-block{margin:var(--space-xl) 0;overflow:hidden}.code-header{background-color:var(--color-bg-alt);padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center;font-family:var(--font-mono);font-size:var(--font-size-sm)}.code-title{color:var(--color-text);font-weight:600}.code-filename{color:var(--color-text-muted);letter-spacing:var(--label-tracking-tight)}.code-content{position:relative}.code-block pre{margin:0;border:none}.code-block code{display:block;padding:var(--space-md);background:transparent;border:none;font-size:1em;line-height:var(--leading-code)}.mdx-image{cursor:zoom-in;border:1px solid var(--color-border);transition:border-color .2s ease}.mdx-image:hover{border-color:var(--color-accent)}.mdx-image-figure figcaption{margin-top:var(--space-3);font-size:var(--font-size-sm);color:var(--color-text-muted);text-align:center;line-height:var(--line-height-normal)}.image-dialog{padding:0;border:none;background:transparent;width:100dvw;height:100dvh;max-width:100dvw;max-height:100dvh;overflow:visible}.image-dialog[open]{display:flex;align-items:center;justify-content:center}.image-dialog::backdrop{background:#000000e6;backdrop-filter:blur(4px)}.image-dialog .zoomed-image{max-width:90vw;max-height:90vh;object-fit:contain;cursor:default}.dialog-close{position:absolute;top:var(--space-xl);right:var(--space-xl);padding:var(--space-sm);border:none;background:none;color:#ffffffb3;font-size:var(--font-size-sm);font-family:var(--font-mono);font-weight:400;cursor:pointer;transition:color .2s,transform .2s;text-transform:lowercase;letter-spacing:.1em;outline:none}.dialog-close:hover{color:#fff;transform:scale(1.05)}.dialog-close:focus{outline:none}.dialog-close:focus-visible{outline:2px solid rgba(255,255,255,.5);outline-offset:2px}.header-anchor{color:inherit;text-decoration:none;border:none;font-family:inherit}.header-anchor:hover{color:inherit;border:none}.header-anchor:before{content:"#";position:absolute;left:-1.5em;opacity:0;transition:opacity .2s;color:var(--color-text-muted)}h1:hover .header-anchor:before,h2:hover .header-anchor:before,h3:hover .header-anchor:before,h4:hover .header-anchor:before,h5:hover .header-anchor:before,h6:hover .header-anchor:before{opacity:1}.table-of-contents{background-color:var(--color-bg-alt);border:1px solid var(--color-border);padding:var(--space-lg);margin:var(--space-xl) 0}.table-of-contents ol{margin:0;padding-left:var(--space-lg)}.table-of-contents li{margin-bottom:var(--space-xs)}.text-muted{color:var(--color-text-muted)}.text-small{font-size:var(--font-size-sm)}@media(max-width:900px){.nav{gap:var(--space-4)}.nav-title{font-size:var(--font-size-2xl)}.mobile-menu-toggle{display:block}.nav-links{position:fixed;top:0;left:0;right:0;background-color:var(--color-bg);flex-direction:column;align-items:stretch;gap:0;padding-top:calc(var(--space-8) + var(--space-12) + env(safe-area-inset-top,0px));padding-left:max(var(--space-6),env(safe-area-inset-left,0px));padding-right:max(var(--space-6),env(safe-area-inset-right,0px));padding-bottom:max(var(--space-8),env(safe-area-inset-bottom,0px));margin:0;max-height:0;overflow:hidden;opacity:0;transition:max-height .3s ease,opacity .3s ease;border-bottom:1px solid var(--color-border);z-index:999}.mobile-menu-toggle[aria-expanded=true]~.nav-links{max-height:100dvh;opacity:1}.nav-links::-webkit-scrollbar{display:none}.nav-links a{font-size:var(--font-size-md);padding:var(--space-4);border-bottom:1px solid var(--color-border);text-align:left;width:100%}.nav-links a:after{display:none}}@media(max-width:640px){:root{--container-max: 95vw}.container{padding-left:max(var(--space-4),env(safe-area-inset-left,0px));padding-right:max(var(--space-4),env(safe-area-inset-right,0px))}.site-header{padding:var(--space-4) 0}.scroll-to-top-link{display:none!important}.dialog-close{top:var(--space-sm);right:var(--space-sm)}.article-title{font-size:clamp(1.25rem,4vw,1.5rem)}.article-meta{gap:var(--space-2);font-size:var(--text-label)}}@container (max-width: 500px){.posts-list{grid-template-columns:1fr}.post-item,.post-header{grid-template-columns:1fr;row-gap:var(--space-1)}.post-meta{order:-1;text-align:left}.post-title{font-size:var(--font-size-xl)}}.social-embed{margin:var(--space-8) 0;display:flex;justify-content:center;align-items:center}.social-embed-mastodon iframe{border:1px solid var(--color-border);background:var(--color-bg-alt);max-width:100%}.social-embed-bluesky{width:100%;max-width:600px;margin:0 auto}.social-embed-bluesky .bluesky-embed{border:1px solid var(--color-border);padding:var(--space-4);background:var(--color-bg-alt);margin:0;font-family:var(--font-body);font-size:var(--font-size-md)}.social-embed-bluesky .bluesky-embed a{color:var(--color-accent);text-decoration:none}.social-embed-bluesky .bluesky-embed a:hover{color:var(--color-accent-hover);text-decoration:underline}.social-embed-error{padding:var(--space-4);background:var(--color-bg-alt);border:1px solid var(--color-border);color:var(--color-text-muted);font-family:var(--font-mono);font-size:var(--font-size-sm);margin:var(--space-4) 0}@media(max-width:640px){.social-embed-mastodon iframe{width:100%;height:auto;min-height:400px}.social-embed-bluesky{max-width:100%}}.github-repo-link,.youtube-video-link{display:inline;white-space:nowrap}.github-repo-link svg,.youtube-video-link svg{display:inline-block;width:15px;height:15px;color:var(--color-text-muted);vertical-align:middle;margin-right:.25rem}.github-repo-link a,.youtube-video-link a{color:var(--color-accent);text-decoration:underline;border:none}.github-repo-link a:hover,.youtube-video-link a:hover{color:var(--color-accent-hover);border:none}.github-repo-link{position:relative;display:inline}.github-link-anchor{anchor-name:--github-link}.github-popup{display:block;position:absolute;position-anchor:--github-link;bottom:anchor(top);left:anchor(center);translate:-50% 0;margin-bottom:var(--space-3);position-try-options:--below-center,--above-left,--above-right,--below-left,--below-right;background-color:var(--color-bg-alt);border:1px solid var(--color-border);padding:0;min-width:280px;max-width:320px;box-shadow:0 8px 24px #0003;overflow:hidden;opacity:0;pointer-events:none;visibility:hidden;transition:opacity .2s ease,visibility .2s ease;z-index:100}@position-try --below-center{top:anchor(bottom);bottom:auto;left:anchor(center);translate:-50% 0;margin-top:var(--space-3);margin-bottom:0}@position-try --above-left{bottom:anchor(top);left:anchor(left);translate:0 0;margin-bottom:var(--space-3)}@position-try --above-right{bottom:anchor(top);right:anchor(right);left:auto;translate:0 0;margin-bottom:var(--space-3)}@position-try --below-left{top:anchor(bottom);bottom:auto;left:anchor(left);translate:0 0;margin-top:var(--space-3)}@position-try --below-right{top:anchor(bottom);bottom:auto;right:anchor(right);left:auto;translate:0 0;margin-top:var(--space-3)}.github-repo-link:hover .github-popup,.github-link-anchor:focus+.github-popup{opacity:1;pointer-events:auto;visibility:visible}.github-popup-content{display:flex;flex-direction:column;font-family:var(--font-mono);font-size:var(--font-size-sm)}.github-popup-header{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4);background:linear-gradient(135deg,var(--color-bg-alt) 0%,var(--color-bg) 100%);border-bottom:1px solid var(--color-border)}.github-popup-avatar{width:48px;height:48px;flex-shrink:0;border:1px solid var(--color-border)}.github-popup-title{flex:1;min-width:0}.github-popup-repo-name{color:var(--color-text);font-weight:600;font-size:var(--font-size-base);margin-bottom:var(--space-1);word-break:break-word}.github-popup-description{color:var(--color-text-muted);font-size:var(--font-size-sm);line-height:1.4;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.github-popup-stats{display:flex;gap:var(--space-4);padding:var(--space-3) var(--space-4);background-color:var(--color-bg-alt)}.github-popup-stat{display:flex;align-items:center;gap:var(--space-2);color:var(--color-text);font-size:var(--font-size-sm);font-weight:500}.github-popup-stat svg{width:14px;height:14px;color:var(--color-accent);flex-shrink:0}.github-popup-loading,.github-popup-error{color:var(--color-text-muted);font-family:var(--font-mono);font-size:var(--font-size-sm);font-style:italic;padding:var(--space-2)}.github-popup-error{color:var(--color-text-muted)}@media(prefers-color-scheme:dark){.github-popup{box-shadow:0 4px 12px #0006}}@media(prefers-reduced-motion:reduce){.github-popup{transition:none}}.archive-intro,.ledger .archive-intro{display:flex;flex-direction:column;gap:var(--space-2);padding-top:var(--space-4)}.archive-title{font-family:var(--font-display);font-size:clamp(1.6rem,3.4vw,2.2rem);font-weight:600;line-height:1.15;margin:0}.archive-lead{font-family:var(--font-body);font-size:var(--font-size-lg);color:var(--color-text-muted);line-height:1.5;margin:0;max-width:60ch}.year{padding:var(--space-6) 0 var(--space-2)}.year-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4);padding-bottom:var(--space-2)}.year-label{font-family:var(--font-display);font-size:var(--font-size-2xl);font-weight:600;margin:0}.year-count{font-family:var(--font-label);font-size:var(--text-label);letter-spacing:var(--label-tracking);text-transform:uppercase;color:var(--color-text-muted)}.arch-row{display:grid;grid-template-columns:120px 1fr;gap:var(--space-6);align-items:baseline;padding:var(--space-3) 0;border-top:1px solid var(--color-border)}.arch-date{font-family:var(--font-label);font-size:var(--text-label);letter-spacing:var(--label-tracking-tight);text-transform:uppercase;color:var(--color-text-muted);white-space:nowrap}.arch-link-t{margin:0;font-family:var(--font-display);font-size:var(--font-size-lg);font-weight:500;line-height:1.3}.arch-link-t a{color:var(--color-accent);border:none;text-decoration:none}.arch-link-t a:hover{text-decoration:underline;text-underline-offset:3px}.archive-count{font-family:var(--font-label);font-size:var(--text-label);letter-spacing:var(--label-tracking);text-transform:uppercase;color:var(--color-text-muted);margin:var(--space-6) 0 0}.ledger-list{display:flex;flex-direction:column}.ledger-row{display:grid;grid-template-columns:260px 1fr auto;gap:var(--space-6);align-items:baseline;padding:var(--space-4) 0;border-top:1px solid var(--color-border)}.ledger-name{margin:0;font-family:var(--font-display);font-size:var(--font-size-xl);font-weight:600;line-height:1.2}.ledger-name a{color:var(--color-accent);border:none;text-decoration:none}.ledger-name a:hover{text-decoration:underline;text-underline-offset:3px}.ledger-desc{margin:0;font-family:var(--font-body);font-size:var(--font-size-md);color:var(--color-text-muted);line-height:1.5}.ledger-meta{font-family:var(--font-label);font-size:var(--text-label);letter-spacing:var(--label-tracking);text-transform:uppercase;color:var(--color-text-muted);white-space:nowrap}@media(max-width:680px){.arch-row{grid-template-columns:1fr;gap:var(--space-1)}.arch-date{order:-1}.ledger-row{grid-template-columns:1fr;gap:var(--space-1)}.ledger-meta{order:3}}
