@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url('/fonts/inter-latin.woff2') format('woff2')}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:100 800;font-display:swap;src:url('/fonts/jetbrains-mono-latin.woff2') format('woff2')}:root{--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--s-9:96px;--s-10:128px;--t-xs:0.75rem;--t-sm:0.8125rem;--t-base:1rem;--t-md:1.0625rem;--t-lg:1.1875rem;--t-xl:1.5rem;--t-2xl:2rem;--t-3xl:2.5rem;--t-4xl:3.25rem;--t-5xl:4.5rem;--bg:oklch(99% 0.002 250);--surface:oklch(100% 0 0);--surface-2:oklch(97% 0.004 250);--fg:oklch(15% 0.012 250);--fg-2:oklch(28% 0.012 250);--muted:oklch(46% 0.014 250);--subtle:oklch(62% 0.012 250);--border:oklch(91% 0.005 250);--border-strong:oklch(80% 0.008 250);--accent:oklch(52% 0.16 245);--accent-hover:oklch(45% 0.18 245);--accent-tint:oklch(96% 0.025 245);--success:oklch(48% 0.13 150);--success-tint:oklch(95% 0.04 150);--error:oklch(54% 0.19 25);--error-tint:oklch(95% 0.04 25);--info:oklch(52% 0.14 240);--info-tint:oklch(95% 0.04 240);--logo-bg:oklch(15% 0.012 250);--logo-fg:oklch(99% 0.002 250);--code-bg:oklch(97% 0.004 250);--code-fg:oklch(20% 0.015 250);--code-border:oklch(90% 0.006 250);--code-comment:oklch(52% 0.04 130);--code-string:oklch(45% 0.14 25);--code-keyword:oklch(45% 0.18 290);--code-fn:oklch(45% 0.16 250);--code-num:oklch(48% 0.14 70);--code-attr:oklch(40% 0.14 200);--font-display:'Inter','Inter Fallback',-apple-system,BlinkMacSystemFont,'SF Pro Display',system-ui,sans-serif;--font-body:'Inter','Inter Fallback',-apple-system,BlinkMacSystemFont,'SF Pro Text',system-ui,sans-serif;--font-mono:'JetBrains Mono','JetBrains Mono Fallback','SF Mono',ui-monospace,Menlo,Monaco,monospace;--r-sm:4px;--r:8px;--r-lg:12px;--r-full:999px;--container:1140px;--container-narrow:720px;--reading:680px;--ease:cubic-bezier(.2, .7, .2, 1);--dur:180ms}@media (prefers-color-scheme:dark){:root{--bg:oklch(15% 0.008 250);--surface:oklch(18% 0.009 250);--surface-2:oklch(22% 0.011 250);--fg:oklch(95% 0.005 250);--fg-2:oklch(86% 0.008 250);--muted:oklch(68% 0.012 250);--subtle:oklch(50% 0.012 250);--border:oklch(26% 0.012 250);--border-strong:oklch(36% 0.014 250);--accent:oklch(72% 0.16 245);--accent-hover:oklch(80% 0.18 245);--accent-tint:oklch(24% 0.05 245);--success:oklch(72% 0.16 150);--success-tint:oklch(22% 0.05 150);--error:oklch(72% 0.2 25);--error-tint:oklch(22% 0.06 25);--info:oklch(72% 0.14 240);--info-tint:oklch(22% 0.05 240);--logo-bg:oklch(95% 0.005 250);--logo-fg:oklch(15% 0.008 250);--code-bg:oklch(13% 0.008 250);--code-fg:oklch(88% 0.012 250);--code-border:oklch(24% 0.012 250);--code-comment:oklch(58% 0.04 130);--code-string:oklch(78% 0.14 25);--code-keyword:oklch(78% 0.18 290);--code-fn:oklch(78% 0.14 250);--code-num:oklch(80% 0.14 70);--code-attr:oklch(74% 0.14 200)}}:root[data-theme=dark]{--bg:oklch(15% 0.008 250);--surface:oklch(18% 0.009 250);--surface-2:oklch(22% 0.011 250);--fg:oklch(95% 0.005 250);--fg-2:oklch(86% 0.008 250);--muted:oklch(68% 0.012 250);--subtle:oklch(50% 0.012 250);--border:oklch(26% 0.012 250);--border-strong:oklch(36% 0.014 250);--accent:oklch(72% 0.16 245);--accent-hover:oklch(80% 0.18 245);--accent-tint:oklch(24% 0.05 245);--success:oklch(72% 0.16 150);--success-tint:oklch(22% 0.05 150);--error:oklch(72% 0.2 25);--error-tint:oklch(22% 0.06 25);--info:oklch(72% 0.14 240);--info-tint:oklch(22% 0.05 240);--logo-bg:oklch(95% 0.005 250);--logo-fg:oklch(15% 0.008 250);--code-bg:oklch(13% 0.008 250);--code-fg:oklch(88% 0.012 250);--code-border:oklch(24% 0.012 250);--code-comment:oklch(58% 0.04 130);--code-string:oklch(78% 0.14 25);--code-keyword:oklch(78% 0.18 290);--code-fn:oklch(78% 0.14 250);--code-num:oklch(80% 0.14 70);--code-attr:oklch(74% 0.14 200)}:root[data-theme=light]{--bg:oklch(99% 0.002 250);--surface:oklch(100% 0 0);--surface-2:oklch(97% 0.004 250);--fg:oklch(15% 0.012 250);--fg-2:oklch(28% 0.012 250);--muted:oklch(46% 0.014 250);--subtle:oklch(62% 0.012 250);--border:oklch(91% 0.005 250);--border-strong:oklch(80% 0.008 250);--accent:oklch(52% 0.16 245);--accent-hover:oklch(45% 0.18 245);--accent-tint:oklch(96% 0.025 245);--success:oklch(48% 0.13 150);--success-tint:oklch(95% 0.04 150);--error:oklch(54% 0.19 25);--error-tint:oklch(95% 0.04 25);--info:oklch(52% 0.14 240);--info-tint:oklch(95% 0.04 240);--logo-bg:oklch(15% 0.012 250);--logo-fg:oklch(99% 0.002 250);--code-bg:oklch(97% 0.004 250);--code-fg:oklch(20% 0.015 250);--code-border:oklch(90% 0.006 250);--code-comment:oklch(52% 0.04 130);--code-string:oklch(45% 0.14 25);--code-keyword:oklch(45% 0.18 290);--code-fn:oklch(45% 0.16 250);--code-num:oklch(48% 0.14 70);--code-attr:oklch(40% 0.14 200)}:root:has(#mode_dark:checked){--bg:oklch(15% 0.008 250);--surface:oklch(18% 0.009 250);--surface-2:oklch(22% 0.011 250);--fg:oklch(95% 0.005 250);--fg-2:oklch(86% 0.008 250);--muted:oklch(68% 0.012 250);--subtle:oklch(50% 0.012 250);--border:oklch(26% 0.012 250);--border-strong:oklch(36% 0.014 250);--accent:oklch(72% 0.16 245);--accent-hover:oklch(80% 0.18 245);--accent-tint:oklch(24% 0.05 245);--success:oklch(72% 0.16 150);--success-tint:oklch(22% 0.05 150);--error:oklch(72% 0.2 25);--error-tint:oklch(22% 0.06 25);--info:oklch(72% 0.14 240);--info-tint:oklch(22% 0.05 240);--logo-bg:oklch(95% 0.005 250);--logo-fg:oklch(15% 0.008 250);--code-bg:oklch(13% 0.008 250);--code-fg:oklch(88% 0.012 250);--code-border:oklch(24% 0.012 250);--code-comment:oklch(58% 0.04 130);--code-string:oklch(78% 0.14 25);--code-keyword:oklch(78% 0.18 290);--code-fn:oklch(78% 0.14 250);--code-num:oklch(80% 0.14 70);--code-attr:oklch(74% 0.14 200)}:root:has(#mode_light:checked){--bg:oklch(99% 0.002 250);--surface:oklch(100% 0 0);--surface-2:oklch(97% 0.004 250);--fg:oklch(15% 0.012 250);--fg-2:oklch(28% 0.012 250);--muted:oklch(46% 0.014 250);--subtle:oklch(62% 0.012 250);--border:oklch(91% 0.005 250);--border-strong:oklch(80% 0.008 250);--accent:oklch(52% 0.16 245);--accent-hover:oklch(45% 0.18 245);--accent-tint:oklch(96% 0.025 245);--success:oklch(48% 0.13 150);--success-tint:oklch(95% 0.04 150);--error:oklch(54% 0.19 25);--error-tint:oklch(95% 0.04 25);--info:oklch(52% 0.14 240);--info-tint:oklch(95% 0.04 240);--logo-bg:oklch(15% 0.012 250);--logo-fg:oklch(99% 0.002 250);--code-bg:oklch(97% 0.004 250);--code-fg:oklch(20% 0.015 250);--code-border:oklch(90% 0.006 250);--code-comment:oklch(52% 0.04 130);--code-string:oklch(45% 0.14 25);--code-keyword:oklch(45% 0.18 290);--code-fn:oklch(45% 0.16 250);--code-num:oklch(48% 0.14 70);--code-attr:oklch(40% 0.14 200)}@font-face{font-family:'Inter Fallback';src:local('Arial'),local('Helvetica Neue'),local('Helvetica');size-adjust:107%;ascent-override:90%;descent-override:22%;line-gap-override:0%}@font-face{font-family:'JetBrains Mono Fallback';src:local('Courier New'),local('Courier');size-adjust:95%;ascent-override:100%;descent-override:23%;line-gap-override:0%}*,::after,::before{box-sizing:border-box}*{margin:0;padding:0}html{font-size:17px;-webkit-text-size-adjust:100%;scroll-behavior:smooth;scrollbar-gutter:stable}body{background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:var(--t-base);line-height:1.7;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:'cv11','ss01';min-height:100vh;display:flex;flex-direction:column;transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease)}.no-transitions *{transition:none!important}img,svg,video{max-width:100%;display:block}button{font:inherit;color:inherit;background:0 0;border:0;cursor:pointer}input,textarea{font:inherit;color:inherit}a{color:var(--accent);text-decoration:none;transition:color var(--dur) var(--ease)}a:hover{color:var(--accent-hover)}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-sm)}::selection{background:var(--accent);color:var(--surface)}.skip-link{position:fixed;top:var(--s-3);left:var(--s-3);z-index:1000;padding:10px 16px;background:var(--accent);color:var(--surface);border-radius:var(--r-sm);font-weight:600;transform:translateY(calc(-100% - var(--s-3) - 4px));transition:transform var(--dur) var(--ease)}.skip-link:focus{transform:translateY(0);outline:2px solid var(--surface);outline-offset:2px}main:focus{outline:0}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,::after,::before{animation-duration:0s!important;animation-iteration-count:1!important;transition-duration:0s!important}}@media (forced-colors:active){.skip-link{border:1px solid}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:CanvasText solid 2px}.btn,.tag{border:1px solid}}.breadcrumb{font-size:var(--t-xs);color:var(--muted);margin-bottom:var(--s-3)}.breadcrumb ol{list-style:none;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2)}.breadcrumb li{display:inline-flex;align-items:center;gap:var(--s-2)}.breadcrumb li+li::before{content:"/";color:var(--border-strong)}.breadcrumb a{color:var(--muted);text-decoration:underline;text-underline-offset:2px}.breadcrumb a:hover{color:var(--accent)}.breadcrumb [aria-current=page]{color:var(--fg-2)}.container{width:100%;max-width:var(--container);margin:0 auto;padding:0 var(--s-5)}.container-narrow{width:100%;max-width:var(--container-narrow);margin:0 auto;padding:0 var(--s-5)}main{flex:1;padding-block:var(--s-8) var(--s-9)}section+section{margin-top:var(--s-9)}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:700;line-height:1.2;letter-spacing:-.02em;color:var(--fg);text-wrap:balance}h1{font-size:clamp(2.2rem, 1.6rem + 2.5vw, 3.25rem);letter-spacing:-.03em}h2{font-size:clamp(1.6rem, 1.3rem + 1.5vw, 2.25rem)}h3{font-size:clamp(1.25rem, 1.1rem + .75vw, 1.5rem)}h4{font-size:var(--t-lg)}p{text-wrap:pretty}.eyebrow{display:inline-block;font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.lede{font-size:var(--t-lg);line-height:1.6;color:var(--fg-2);text-wrap:pretty}.muted{color:var(--muted)}.site-header{position:sticky;top:0;z-index:50;background:color-mix(in oklab,var(--bg) 88%,transparent);backdrop-filter:saturate(180%) blur(16px);-webkit-backdrop-filter:saturate(180%) blur(16px);border-bottom:1px solid var(--border)}.site-header__inner{display:flex;align-items:center;justify-content:space-between;gap:var(--s-5);height:64px}.brand{display:inline-flex;align-items:center;gap:var(--s-3);font-family:var(--font-display);font-weight:700;font-size:var(--t-md);letter-spacing:-.01em;color:var(--fg);white-space:nowrap}.brand:hover{color:var(--fg)}.brand__logo{width:26px;height:26px;flex:0 0 26px;border-radius:var(--r-sm);overflow:hidden}.nav-primary{display:flex;align-items:center;gap:var(--s-1)}.nav-primary a{color:var(--fg-2);font-size:var(--t-sm);font-weight:500;padding:var(--s-2) var(--s-4);border-radius:var(--r-sm);transition:color var(--dur) var(--ease),background-color var(--dur) var(--ease)}.nav-primary a:hover{color:var(--fg);background:var(--surface-2)}.nav-primary a[aria-current=page]{color:var(--fg);font-weight:600}.nav-primary a[aria-current=page]::after{content:"";display:block;height:2px;background:var(--accent);margin-top:4px;border-radius:2px}.header-actions{display:flex;align-items:center;gap:var(--s-2)}.theme-toggle{display:flex;align-items:center}.theme-toggle input[type=radio]{appearance:none;-webkit-appearance:none;margin:0;position:absolute;opacity:0;pointer-events:none}.theme-toggle label{width:40px;height:40px;border-radius:var(--r);display:grid;place-items:center;color:var(--fg-2);border:1px solid var(--border);cursor:pointer;transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.theme-toggle label:hover{background:var(--surface-2);color:var(--fg);border-color:var(--border-strong)}.theme-toggle label svg{width:18px;height:18px}[data-theme=dark] label[for=mode_dark],[data-theme=light] label[for=mode_light],label[for=mode_light]{display:none}[data-theme=dark] label[for=mode_light],[data-theme=light] label[for=mode_dark],label[for=mode_dark]{display:grid}@media (prefers-color-scheme:dark){label[for=mode_light]{display:grid}label[for=mode_dark]{display:none}}:root:has(#mode_dark:checked) label[for=mode_light]{display:grid}:root:has(#mode_dark:checked) label[for=mode_dark]{display:none}:root:has(#mode_light:checked) label[for=mode_light]{display:none}:root:has(#mode_light:checked) label[for=mode_dark]{display:grid}.theme-toggle label:focus-visible,.theme-toggle:has(input:focus-visible) label{outline:2px solid var(--accent);outline-offset:3px}.nav-toggle{display:none;width:40px;height:40px;border-radius:var(--r);align-items:center;justify-content:center;color:var(--fg-2);border:1px solid var(--border)}.nav-toggle:hover{background:var(--surface-2);color:var(--fg)}.nav-toggle svg{width:18px;height:18px}.nav-open .nav-toggle .icon-open,.nav-toggle .icon-close{display:none}.nav-open .nav-toggle .icon-close{display:block}@media (max-width:760px){.nav-primary{position:fixed;inset:64px 0 auto 0;flex-direction:column;align-items:stretch;gap:0;background:var(--bg);border-bottom:1px solid var(--border);padding:var(--s-3) var(--s-5) var(--s-5);transform:translateY(-110%);transition:transform var(--dur) var(--ease);box-shadow:0 20px 30px -20px color-mix(in oklab,var(--fg) 14%,transparent)}.js .nav-primary{visibility:hidden}.js .nav-open .nav-primary{transform:translateY(0);visibility:visible}html:not(.js) .site-header__inner{flex-wrap:wrap}html:not(.js) .nav-primary{position:static;transform:none;order:3;width:100%;box-shadow:none}html:not(.js) .nav-toggle{display:none}.nav-primary a{padding:var(--s-4) var(--s-3);border-bottom:1px solid var(--border);border-radius:0;font-size:var(--t-md)}.nav-primary a:last-child{border-bottom:0}.nav-primary a[aria-current=page]::after{display:none}.nav-toggle{display:inline-flex}}.site-footer{margin-top:var(--s-9);border-top:1px solid var(--border);background:var(--surface)}.subscribe{padding:var(--s-9) 0 var(--s-7);border-bottom:1px solid var(--border);text-align:center}.subscribe__inner{max-width:560px;margin:0 auto;padding:0 var(--s-5)}.subscribe h2{font-size:clamp(1.6rem, 1.3rem + 1vw, 2rem);margin-bottom:var(--s-3)}.subscribe p{color:var(--muted);margin-bottom:var(--s-6)}.contact-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:var(--s-3)}.subscribe-form{display:flex;gap:var(--s-2);flex-wrap:wrap}.subscribe-form input[type=email]{flex:1 1 240px;min-width:0}.subscribe-form button{flex:0 0 auto}.footer-bottom{display:flex;align-items:center;justify-content:space-between;gap:var(--s-5);padding:var(--s-6) var(--s-5);flex-wrap:wrap;font-size:var(--t-sm);color:var(--muted)}.footer-nav{display:flex;gap:var(--s-5);flex-wrap:wrap}.footer-nav a{color:var(--muted)}.footer-nav a:hover{color:var(--fg)}.footer-meta{display:flex;align-items:center;gap:var(--s-4)}.rss-link{display:inline-flex;align-items:center;gap:var(--s-2);color:var(--muted);font-size:var(--t-xs);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase}.rss-link svg{width:14px;height:14px}.rss-link:hover{color:var(--accent)}.field{display:flex;flex-direction:column;gap:var(--s-2)}.field label{font-size:var(--t-sm);font-weight:500;color:var(--fg-2)}.input,.textarea{width:100%;background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:var(--r);padding:var(--s-3) var(--s-4);font-size:var(--t-base);font-family:var(--font-body);line-height:1.5;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),background-color var(--dur) var(--ease)}.input::placeholder,.textarea::placeholder{color:var(--subtle)}.input:hover,.textarea:hover{border-color:var(--border-strong)}.input:focus,.textarea:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklab,var(--accent) 22%,transparent)}.textarea{resize:vertical;min-height:140px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);padding:var(--s-3) var(--s-5);min-height:44px;border-radius:var(--r);font-weight:600;font-size:var(--t-sm);letter-spacing:.01em;cursor:pointer;transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease),transform 80ms var(--ease)}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--fg);color:var(--bg);border:1px solid var(--fg)}.btn-primary:hover{background:var(--fg-2);border-color:var(--fg-2);color:var(--bg)}.btn-ghost{background:0 0;color:var(--fg);border:1px solid var(--border-strong)}.btn-ghost:hover{background:var(--surface-2)}.btn-accent{background:var(--accent);color:#fff;border:1px solid var(--accent)}.btn-accent:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.external-link-label{display:inline-flex;align-items:center;gap:.15em;white-space:nowrap}.prose a .external-link-label>span{text-decoration:underline;text-decoration-color:color-mix(in oklab,var(--accent) 45%,transparent);text-underline-offset:3px}.prose a:hover .external-link-label>span{text-decoration-color:var(--accent)}.project a:hover .external-link-label>span{text-decoration:underline}.hp{position:absolute!important;left:-9999px!important;top:auto;width:1px;height:1px;overflow:hidden}.form-message{margin-bottom:var(--s-5);padding:var(--s-3) var(--s-4);border-radius:var(--r);border:1px solid var(--border);font-size:var(--t-sm);display:none}.form-message.form-message-success{display:block;background:var(--success-tint);border-color:var(--success);color:var(--success)}.form-message.form-message-error{display:block;background:var(--error-tint);border-color:var(--error);color:var(--error)}.form-message.form-message-info{display:block;background:var(--info-tint);border-color:var(--info);color:var(--info)}.privacy-note{font-size:var(--t-xs);color:var(--muted);margin-top:var(--s-3);text-align:center}.footer-bottom>div:first-child a,.privacy-note a{text-decoration:underline;text-underline-offset:2px}.tag{display:inline-flex;align-items:center;gap:var(--s-1);padding:3px var(--s-3);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:var(--muted);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-full);transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease),background-color var(--dur) var(--ease)}.tag:hover{color:var(--fg);border-color:var(--border-strong);background:var(--surface)}.tag .count{color:var(--subtle);font-size:10px;border-left:1px solid var(--border-strong);padding-left:var(--s-2);margin-left:var(--s-1)}.tag-list{display:flex;flex-wrap:wrap;gap:var(--s-2)}.post-card{display:flex;flex-direction:column;gap:var(--s-3);padding:var(--s-6) 0;border-bottom:1px solid var(--border)}.post-card:first-child{padding-top:0}.post-card__meta{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap;font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.04em;color:var(--muted)}.post-card__meta .dot{color:var(--subtle)}.post-card__title{font-size:clamp(1.35rem, 1.15rem + .6vw, 1.625rem)}.post-card__title a{color:var(--fg)}.post-card__title a:hover{color:var(--accent)}.post-card__excerpt{color:var(--muted);max-width:64ch}.post-card__footer{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);flex-wrap:wrap;margin-top:var(--s-1)}.post-card__read{font-family:var(--font-mono);font-size:var(--t-xs);color:var(--accent);letter-spacing:.06em;text-transform:uppercase}.post-card__read::after{content:" →";margin-left:2px}.posts-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-7)}.posts-grid .post-card{padding:0;border:0}@media (max-width:760px){.posts-grid{grid-template-columns:1fr;gap:var(--s-7)}}.pagination{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);margin-top:var(--s-8);padding-top:var(--s-6);border-top:1px solid var(--border);font-family:var(--font-mono);font-size:var(--t-sm)}.pagination a,.pagination span{display:inline-flex;align-items:center;gap:var(--s-2);color:var(--fg-2);letter-spacing:.04em}.pagination a:hover{color:var(--accent)}.pagination .disabled{color:var(--subtle);cursor:default}.pagination .pages{color:var(--muted);font-size:var(--t-xs)}.hero{padding-block:var(--s-9) var(--s-8);border-bottom:1px solid var(--border)}.hero .eyebrow{margin-bottom:var(--s-5)}.hero h1{overflow-wrap:anywhere;hyphens:auto;font-size:clamp(2.5rem, 1.8rem + 4vw, 4.25rem);letter-spacing:-.035em;max-width:18ch;margin-bottom:var(--s-5)}.hero h1 .hero-role{display:block;max-width:none;margin-top:var(--s-3);color:var(--fg-2);font-size:clamp(1.35rem, 1rem + 1.5vw, 1.75rem);font-weight:500;letter-spacing:-.02em;line-height:1.35}.hero .lede{max-width:60ch}.hero .hero-context{max-width:64ch;margin-top:var(--s-5);color:var(--muted);font-size:var(--t-base);line-height:1.7}.social-placeholder{margin-top:var(--s-8);aspect-ratio:1200/630;background:repeating-linear-gradient(45deg,var(--surface-2) 0 12px,transparent 12px 24px),var(--surface);border:1px dashed var(--border-strong);border-radius:var(--r-lg);display:grid;place-items:center;color:var(--muted);font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.12em;text-transform:uppercase;text-align:center;padding:var(--s-5)}.social-placeholder strong{color:var(--fg-2);display:block;font-size:var(--t-sm);letter-spacing:.04em;text-transform:none;margin-bottom:var(--s-2)}.post-header{max-width:var(--reading);margin:0 auto var(--s-7)}.post-header h1{margin-block:var(--s-3);font-size:clamp(2.2rem, 1.6rem + 2.4vw, 3rem)}.post-header .post-meta{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap;margin-top:var(--s-5);font-family:var(--font-mono);font-size:var(--t-xs);color:var(--muted);letter-spacing:.04em}.post-author{display:inline-flex;align-items:center;gap:var(--s-3);color:var(--fg-2);font-family:var(--font-body);font-size:var(--t-sm);letter-spacing:0;text-transform:none}.avatar{width:36px;height:36px;border-radius:var(--r-full);background:linear-gradient(135deg,var(--accent),color-mix(in oklab,var(--accent) 30%,var(--fg)));color:#fff;display:grid;place-items:center;font-family:var(--font-display);font-weight:700;font-size:var(--t-sm);flex:0 0 36px}.avatar.lg{width:72px;height:72px;font-size:var(--t-xl);flex:0 0 72px}.post-layout{display:grid;grid-template-columns:minmax(0,var(--reading)) 280px;gap:var(--s-9);align-items:start;max-width:1080px;margin:0 auto}@media (max-width:980px){.post-layout{grid-template-columns:1fr;gap:var(--s-8);max-width:var(--reading)}}.prose{font-size:var(--t-md);line-height:1.75;color:var(--fg-2)}.prose>*+*{margin-top:var(--s-5)}.prose h2{margin-top:var(--s-8);font-size:1.75rem;color:var(--fg)}.prose h3{margin-top:var(--s-7);font-size:1.35rem;color:var(--fg)}.prose p{max-width:68ch}.prose ol,.prose ul{padding-left:1.4em}.prose ol li,.prose ul li{margin-top:var(--s-2)}.prose ul li::marker{color:var(--subtle)}.prose a{text-decoration:underline;text-decoration-color:color-mix(in oklab,var(--accent) 45%,transparent);text-underline-offset:3px}.prose a:hover{text-decoration-color:var(--accent)}.prose blockquote{border-left:3px solid var(--accent);padding-left:var(--s-5);color:var(--fg);font-size:1.2rem;font-style:italic;line-height:1.6}.prose img{border-radius:var(--r);border:1px solid var(--border)}.prose hr{border:0;border-top:1px solid var(--border);margin-block:var(--s-7)}.prose code,code{font-family:var(--font-mono);font-size:.875em;background:var(--code-bg);color:var(--code-fg);padding:2px 6px;border:1px solid var(--code-border);border-radius:5px}.prose pre,pre{background:var(--code-bg);color:var(--code-fg);border:1px solid var(--code-border);border-radius:var(--r);padding:var(--s-5);overflow-x:auto;font-size:.875rem;line-height:1.65;font-family:var(--font-mono)}.prose pre code,pre code{background:0 0;border:0;padding:0;font-size:inherit}.post-sidebar{display:flex;flex-direction:column;gap:var(--s-6);position:sticky;top:88px}@media (max-width:980px){.post-sidebar{position:static}}.author-card{border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s-5);background:var(--surface)}.author-card__head{display:flex;align-items:center;gap:var(--s-4);margin-bottom:var(--s-4)}.author-card h2{font-size:var(--t-md);line-height:1.2}.author-card .role{font-family:var(--font-mono);font-size:11px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;display:block;margin-top:4px}.author-card p{font-size:var(--t-sm);color:var(--muted);margin-bottom:var(--s-4)}.social-row{display:flex;gap:var(--s-3)}.social-row a{width:32px;height:32px;border-radius:var(--r-sm);display:grid;place-items:center;border:1px solid var(--border);color:var(--fg-2);background:var(--surface)}.social-row a:hover{color:var(--accent);border-color:var(--accent)}.social-row svg{width:14px;height:14px}.sidebar-section h2{font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:var(--s-4);font-weight:600}.related-list{list-style:none;display:flex;flex-direction:column;gap:var(--s-3)}.related-list a{display:block;color:var(--fg);font-size:var(--t-sm);font-weight:500;line-height:1.45}.related-list a:hover{color:var(--accent)}.related-list small{display:block;margin-top:2px;font-family:var(--font-mono);font-size:11px;color:var(--muted);letter-spacing:.04em}.comments{max-width:var(--reading);margin:var(--s-9) auto 0;padding:var(--s-7);border:1px dashed var(--border-strong);border-radius:var(--r-lg);text-align:center}.comments h3{margin-bottom:var(--s-3)}.comments p{color:var(--muted);font-size:var(--t-sm)}.bio{max-width:var(--reading);margin:0 auto}.bio .lede{margin-top:var(--s-5);margin-bottom:var(--s-7)}.bio .prose{color:var(--fg-2)}.bio h1{overflow-wrap:anywhere;hyphens:auto}.author-hero{display:flex;align-items:center;gap:var(--s-6);padding-bottom:var(--s-7);border-bottom:1px solid var(--border);margin-bottom:var(--s-7)}.author-hero h1{font-size:clamp(1.8rem, 1.5rem + 1.5vw, 2.5rem)}.author-hero .role{color:var(--muted);font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.12em;text-transform:uppercase}.author-hero p{color:var(--muted);max-width:56ch;margin-top:var(--s-3)}@media (max-width:600px){.author-hero{flex-direction:column;align-items:flex-start}}.post-list-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-5);padding:var(--s-4) 0;border-bottom:1px solid var(--border)}.post-list-row a{color:var(--fg);font-weight:500}.post-list-row a:hover{color:var(--accent)}.post-list-row time{color:var(--muted);font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.04em;flex:0 0 auto}.tags-grid{display:flex;flex-wrap:wrap;gap:var(--s-3)}.contact-card{max-width:560px;margin:0 auto;padding:var(--s-7);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg)}.contact-card form{display:flex;flex-direction:column;gap:var(--s-5)}.contact-card .row-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-4)}@media (max-width:520px){.contact-card .row-2{grid-template-columns:1fr}}.search-box{max-width:var(--container-narrow);margin:0 auto var(--s-7)}.search-form{display:flex;gap:var(--s-2)}.search-input-wrap{position:relative;flex:1}.search-input-wrap .search-icon{position:absolute;left:var(--s-4);top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--subtle);pointer-events:none}.search-input{padding-left:calc(var(--s-4) + 18px + var(--s-3))!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.search-results{max-width:var(--container-narrow);margin:0 auto}.search-summary{font-family:var(--font-mono);font-size:var(--t-sm);color:var(--muted);margin-bottom:var(--s-6);letter-spacing:.02em}.search-result{padding:var(--s-5) 0;border-bottom:1px solid var(--border)}.search-result:first-of-type{border-top:1px solid var(--border)}.search-result h3{font-size:var(--t-lg);margin-bottom:var(--s-1)}.search-result h3 a{color:var(--fg)}.search-result h3 a:hover{color:var(--accent)}.search-result__url{display:block;font-family:var(--font-mono);font-size:var(--t-xs);color:var(--accent);letter-spacing:.02em;margin-bottom:var(--s-2);font-style:normal}.search-result__snippet{font-size:var(--t-sm);color:var(--muted);line-height:1.6}.search-result__snippet mark{background:var(--accent-tint);color:var(--fg);padding:1px 3px;border-radius:3px}.search-toggle{width:40px;height:40px;border-radius:var(--r);display:grid;place-items:center;color:var(--fg-2);border:1px solid var(--border);transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.search-toggle:hover{background:var(--surface-2);color:var(--fg);border-color:var(--border-strong)}.search-toggle svg{width:18px;height:18px}.notfound{display:grid;place-items:center;min-height:60vh;text-align:center;padding:var(--s-7)}.notfound .num{font-family:var(--font-display);font-size:clamp(6rem, 4rem + 14vw, 13rem);font-weight:800;letter-spacing:-.06em;line-height:1;color:var(--fg)}.notfound .num span{color:var(--accent)}.notfound h1{font-size:clamp(1.5rem, 1.2rem + 1vw, 2rem);margin:var(--s-4) 0 var(--s-3)}.notfound p{color:var(--muted);margin-bottom:var(--s-6);max-width:38ch}.personal-content{max-width:var(--container-narrow)}.project{padding-block:var(--s-6);border-bottom:1px solid var(--border)}.project h2,.project h3{margin-block:var(--s-2) var(--s-4);font-size:var(--t-xl)}.project p+p{margin-top:var(--s-4)}.project p{line-height:1.75;color:var(--fg-2)}.project .eyebrow,.project .project-meta{font-size:var(--t-sm);color:var(--muted)}.project-links{display:flex;flex-wrap:wrap;gap:var(--s-4);list-style:none;margin-top:var(--s-4);padding:0}.prose .project-links{padding:0}.project-links a{font-size:var(--t-sm)}.project img{display:block;max-width:100%;height:auto;margin-top:var(--s-5)}.experience-list{list-style:none}.prose .experience-list{padding:0}.experience-list li{padding-block:var(--s-5);border-bottom:1px solid var(--border)}.experience-list h3{margin-block:var(--s-2)}.experience-list .job-role{font-weight:600;margin-bottom:var(--s-3)}.header-actions{flex-shrink:0}.language-switch{width:40px;height:40px;border:1px solid var(--border);border-radius:var(--r);display:grid;place-items:center;color:var(--fg-2);transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.language-switch:hover{background:var(--surface-2);color:var(--fg);border-color:var(--border-strong)}.language-switch svg{width:18px;height:18px}.language-switch:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.project a{text-underline-offset:3px}.project a:hover{text-decoration:underline}