@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(*),[data-astro-transition-scope]{animation:none!important}}.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:Fraunces;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/6NUs8FyLNQOQZAnv9ZwNjucMHVn85Ni7emAe9lKqZTnbB-gzTK0K1ChJdt9hFwpX9W37ll9_mvIiQublWIIkfg.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/6NUs8FyLNQOQZAnv9ZwNjucMHVn85Ni7emAe9lKqZTnbB-gzTK0K1ChJdt9hFwpX9W37ll9_mvMiQublWIIkfg.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/6NUs8FyLNQOQZAnv9ZwNjucMHVn85Ni7emAe9lKqZTnbB-gzTK0K1ChJdt9hFwpX9W37ll9_mv0iQublWII.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/6NU78FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2Wa0KxCBTeP2Xz5fU8w.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/6NU78FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2Wa0KxCFTeP2Xz5fU8w.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/6NU78FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2Wa0KxC9TeP2Xz5c.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/6NU78FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2Wa0KxCBTeP2Xz5fU8w.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/6NU78FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2Wa0KxCFTeP2Xz5fU8w.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/6NU78FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2Wa0KxC9TeP2Xz5c.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/6NU78FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2Wa0KxCBTeP2Xz5fU8w.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/6NU78FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2Wa0KxCFTeP2Xz5fU8w.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/6NU78FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2Wa0KxC9TeP2Xz5c.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa2HdgregdFOFh.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa0XdgregdFOFh.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa2ndgregdFOFh.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa23dgregdFOFh.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa1XdgregdFA.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/-F63fjptAgt5VM-kVkqdyU8n1iIq131nj-otFQ.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/-F63fjptAgt5VM-kVkqdyU8n1isq131nj-otFQ.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/-F63fjptAgt5VM-kVkqdyU8n1iAq131nj-otFQ.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/-F63fjptAgt5VM-kVkqdyU8n1iEq131nj-otFQ.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/-F63fjptAgt5VM-kVkqdyU8n1i8q131nj-o.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwl1FgsAXHNlYzg.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwlRFgsAXHNlYzg.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwl9FgsAXHNlYzg.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwl5FgsAXHNlYzg.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwlBFgsAXHNk.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Outfit;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/QGYvz_MVcBeNP4NJuktqUYLkn8BJ.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Outfit;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/QGYvz_MVcBeNP4NJtEtqUYLknw.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Outfit;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/QGYvz_MVcBeNP4NJuktqUYLkn8BJ.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Outfit;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/QGYvz_MVcBeNP4NJtEtqUYLknw.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Outfit;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/QGYvz_MVcBeNP4NJuktqUYLkn8BJ.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Outfit;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/QGYvz_MVcBeNP4NJtEtqUYLknw.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-display:"Fraunces", "Georgia", serif;--font-body:"Outfit", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--radius:12px;--page-pad:clamp(1.25rem, 4vw, 2.5rem);--gap-below-topbar:clamp(1.25rem, 3.5vw, 2.25rem);--content-max:44rem;--content-reading:48rem;--content-wide:52rem;--radius-tight:6px;--radius-control:8px;--radius-code:5px;--radius-pill:999px;color-scheme:dark;--color-ink:#f2efe8;--color-muted:#ada8a0;--color-muted-2:#858078;--color-surface:#2d2a26;--color-surface-2:#3a3630;--color-stroke:color-mix(in srgb, var(--color-ink) 12%, transparent);--color-accent:#c98c5a;--color-accent-2:#a67b4f;--color-on-accent:#2d2a26;--body-gradient:radial-gradient(ellipse 120% 80% at 50% -20%, #454038 0%, transparent 52%), linear-gradient(180deg, #242220 0%, #2d2a26 42%);--color-footer:color-mix(in srgb, #000 18%, var(--color-surface));--grain-opacity:.28;--shadow-soft:0 1px 0 #ffffff0f, 0 18px 40px -20px #0008;--shadow-lift:0 2px 0 #ffffff14, 0 24px 48px -16px #0006;--hero-pattern-stroke-opacity:.5;--hero-pattern-footer-stroke-opacity:.58;--image-gold-ring:color-mix(in srgb, var(--color-accent) 72%, transparent);--image-gold-bevel:color-mix(in srgb, var(--color-ink) 7%, transparent);--image-gold-elev-1:0 2px 8px #0000001c;--image-gold-elev-2:0 10px 32px #00000017}@media (prefers-color-scheme:light){:root:not([data-theme]){color-scheme:light;--color-ink:#1c1916;--color-muted:#5e5a52;--color-muted-2:#7a756c;--color-surface:#f7f4ef;--color-surface-2:#efe9e0;--color-stroke:color-mix(in srgb, var(--color-ink) 9%, transparent);--color-accent:#8f4f18;--color-accent-2:#6d3b10;--color-on-accent:#faf6f0;--body-gradient:radial-gradient(ellipse 100% 70% at 50% 0%, #fff9f2 0%, transparent 55%), linear-gradient(180deg, #e8e2d8 0%, #f7f4ef 45%);--color-footer:color-mix(in srgb, #000 4%, var(--color-surface));--grain-opacity:.22;--shadow-soft:0 1px 0 #0000000a, 0 16px 36px -18px #0001a;--shadow-lift:0 2px 0 #0000000f, 0 22px 44px -14px #00012;--hero-pattern-stroke-opacity:.38;--hero-pattern-footer-stroke-opacity:.52}}:root[data-theme=dark]{color-scheme:dark}:root[data-theme=light]{color-scheme:light;--color-ink:#1c1916;--color-muted:#5e5a52;--color-muted-2:#7a756c;--color-surface:#f7f4ef;--color-surface-2:#efe9e0;--color-stroke:color-mix(in srgb, var(--color-ink) 9%, transparent);--color-accent:#8f4f18;--color-accent-2:#6d3b10;--color-on-accent:#faf6f0;--body-gradient:radial-gradient(ellipse 100% 70% at 50% 0%, #fff9f2 0%, transparent 55%), linear-gradient(180deg, #e8e2d8 0%, #f7f4ef 45%);--color-footer:color-mix(in srgb, #000 4%, var(--color-surface));--grain-opacity:.22;--shadow-soft:0 1px 0 #0000000a, 0 16px 36px -18px #0001a;--shadow-lift:0 2px 0 #0000000f, 0 22px 44px -14px #00012;--hero-pattern-stroke-opacity:.38;--hero-pattern-footer-stroke-opacity:.52}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;overflow-x:clip}body{min-height:100dvh;font-family:var(--font-body);color:var(--color-ink);background-color:var(--color-surface);background-image:var(--body-gradient);flex-direction:column;margin:0;font-size:1.05rem;line-height:1.6;display:flex}img,video{border:3px solid var(--image-gold-ring);box-shadow:inset 0 1px 1px var(--image-gold-bevel), var(--image-gold-elev-1), var(--image-gold-elev-2)}img:hover{transform:scale();transition:transform .4s}.site-content-shell{z-index:1;flex-direction:column;flex:1;width:100%;min-width:0;min-height:0;display:flex;position:relative}body:before{content:"";pointer-events:none;opacity:var(--grain-opacity);mix-blend-mode:overlay;z-index:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}.landing,.blog-index,.post-layout{flex-direction:column;flex:1;width:100%;min-width:0;min-height:0;display:flex;position:relative}.landing{padding-top:var(--gap-below-topbar)}.landing__pattern{pointer-events:none;z-index:0;position:absolute}.landing__pattern--hero{top:calc(-1 * (2.75rem + .65rem + .65rem + env(safe-area-inset-top,0px)));width:auto;left:0;right:0}.landing__pattern--footer{width:auto;margin-inline:0;bottom:0;left:0;right:0}.landing__pattern-strokes{stroke-opacity:var(--hero-pattern-stroke-opacity)}.landing__pattern-strokes--footer{stroke-opacity:var(--hero-pattern-footer-stroke-opacity);stroke-width:2.25px}.landing__pattern--footer .landing__pattern-img{transform-origin:50%;max-height:min(50vw,15rem);transform:scale(-1)}.landing__pattern-img{width:100%;height:auto;display:block}.landing__main{z-index:1;width:100%;max-width:calc(var(--content-max) + 2 * var(--page-pad));padding:var(--page-pad);flex:1;margin:0 auto;padding-bottom:4rem;position:relative}.hero{padding-top:clamp(2.5rem,8vh,5rem);padding-bottom:1rem}@media (prefers-reduced-motion:no-preference){.hero__name,.hero__sub,.hero__actions{animation:.85s backwards hero-in}.hero__name{animation-delay:.12s}.hero__sub{animation-delay:.2s}.hero__actions{animation-delay:.3s}.landing__prose{animation:.8s .36s backwards hero-in}}@keyframes hero-in{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.hero__name{font-family:var(--font-display);font-variation-settings:"opsz" 72;letter-spacing:-.03em;color:var(--color-ink);max-width:14ch;margin:0 0 1rem;font-size:clamp(2.35rem,6.5vw,3.6rem);font-weight:600;line-height:1.08}.hero__name em{color:var(--color-accent-2);font-style:italic}.hero__sub{color:var(--color-muted);max-width:36ch;margin:0 0 1.75rem;font-size:1.1rem;line-height:1.55}.hero__actions{flex-wrap:wrap;align-items:center;gap:.75rem 1rem;display:flex}.hero__link{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--color-on-accent);background:var(--color-accent);border-radius:var(--radius-tight);border:none;align-items:center;gap:.4rem;padding:.7rem 1.15rem;font-size:.78rem;text-decoration:none;transition:background .2s,transform .2s;display:inline-flex;box-shadow:0 1px #fff3}.hero__link:hover,.hero__link:focus-visible{background:color-mix(in srgb, var(--color-accent) 90%, #fff);transform:translateY(-1px)}.hero__link:focus-visible{outline:2px solid var(--color-ink);outline-offset:3px}.hero__link--ghost{color:var(--color-ink);box-shadow:none;border:1px solid var(--color-stroke);background:0 0;padding:.65rem 1.1rem}.hero__link--ghost:hover,.hero__link--ghost:focus-visible{background:color-mix(in srgb, var(--color-ink) 6%, transparent);border-color:var(--color-muted-2);transform:none}.hero__link svg{opacity:.9;width:.9rem;height:.9rem}.landing__rule{background:linear-gradient(90deg, transparent, var(--color-stroke) 15%, var(--color-stroke) 85%, transparent);border:none;height:1px;margin:2.5rem 0 0}.landing__footer{z-index:1;padding:2rem var(--page-pad) 2.25rem;border-top:1px solid var(--color-stroke);background:var(--color-footer);flex-shrink:0;position:relative;overflow:hidden}.landing__footer-inner{z-index:1;max-width:calc(var(--content-max) + 2 * var(--page-pad));font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-muted-2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1.5rem;margin:0 auto;font-size:.75rem;display:flex;position:relative}.landing__footer a,.landing__footer .c-nav-link{color:var(--color-muted);border-bottom:1px solid #0000;text-decoration:none;transition:color .2s,border-color .2s}.landing__footer a:hover,.landing__footer a:focus-visible{color:var(--color-accent-2);border-bottom-color:var(--color-accent-2)}.landing__footer .c-nav-link--current{cursor:default}.landing__footer a[aria-disabled=true]{pointer-events:none;cursor:not-allowed;opacity:.5;border:none}.prose{--prose-pad:var(--page-pad);max-width:min(var(--content-reading), 100%);width:100%;min-width:0;padding:2.5rem var(--prose-pad) 4rem;color:var(--color-ink);margin:0 auto;line-height:1.7}.prose h1,.prose h2,.prose h3{font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-ink);font-weight:600;line-height:1.25}.prose h1{margin:0 0 .5rem;font-size:clamp(1.85rem,4vw,2.5rem)}.prose h2{margin:2rem 0 .75rem;font-size:1.4rem}.prose h3{margin:1.5rem 0 .5rem;font-size:1.15rem}.prose p{color:color-mix(in srgb, var(--color-ink) 88%, var(--color-muted));margin:0 0 1rem}.prose a{color:var(--color-accent-2);text-underline-offset:.2em;text-decoration:underline}.prose a:hover{color:var(--color-accent)}.prose code{font-family:var(--font-mono);background:color-mix(in srgb, var(--color-ink) 8%, transparent);border-radius:var(--radius-code);padding:.1em .35em;font-size:.9em}.prose pre{font-family:var(--font-mono);border-radius:var(--radius);border:1px solid var(--color-stroke);background:var(--color-surface-2);padding:1rem 1.1rem;font-size:.85rem;line-height:1.5;overflow-x:auto}.prose pre code{background:0 0;padding:0}.prose pre.astro-code{background:var(--color-surface-2)!important}.prose ul,.prose ol{margin:0 0 1rem;padding-left:1.35rem}.prose li{margin:.35rem 0}.prose>*{min-width:0}.prose :is(img,video){max-width:100%;width:min(100%, max-content);border-radius:var(--radius-tight);height:auto;margin-inline:auto;display:block}img.img-70p{width:70%;max-width:70%}.prose svg{max-width:100%;height:auto;margin-inline:auto;display:block}.prose iframe{border:1px solid var(--color-stroke);border-radius:var(--radius-control);height:auto;margin-inline:auto;display:block;width:100%!important;min-width:0!important;max-width:100%!important}.site-top-nav{z-index:50;isolation:isolate;background:linear-gradient(180deg, color-mix(in srgb, var(--color-surface) 64%, transparent) 0%, color-mix(in srgb, var(--color-surface) 44%, transparent) 100%), color-mix(in srgb, var(--color-surface-2) 20%, transparent);-webkit-backdrop-filter:blur(2px)saturate(1.08);position:sticky;top:0;overflow:hidden;box-shadow:inset 0 1px #ffffff17,0 10px 36px -8px #0003}.site-top-nav__frost{z-index:0;pointer-events:none;-webkit-backdrop-filter:blur(16px)saturate(1.2);position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0%,#0000008c 45%,#0000 100%);mask-image:linear-gradient(#000 0%,#0000008c 45%,#0000 100%);-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.site-top-nav:before{content:"";z-index:1;pointer-events:none;background:radial-gradient(ellipse 55% 70% at 20% 0%, color-mix(in srgb, var(--color-accent) 28%, transparent) 0%, transparent 60%), radial-gradient(ellipse 50% 65% at 90% 15%, #ffffff0f 0%, transparent 55%), radial-gradient(ellipse 45% 50% at 55% 80%, color-mix(in srgb, var(--color-muted) 8%, transparent) 0%, transparent 50%);mix-blend-mode:soft-light;opacity:.85;animation:18s ease-in-out infinite site-top-nav-liquid;position:absolute;inset:-80% -15% 0}.site-top-nav:after{content:"";z-index:1;pointer-events:none;background:linear-gradient(100deg, transparent 0%, color-mix(in srgb, #fff 14%, var(--color-accent) 8%) 42%, transparent 64%);mix-blend-mode:overlay;opacity:.55;background-position:0 0;background-size:220% 100%;height:3px;animation:9s ease-in-out infinite site-top-nav-sheen;position:absolute;top:0;left:0;right:0}@keyframes site-top-nav-liquid{0%,to{transform:translate(-1%)scale(1.02)rotate(.25deg)}33%{transform:translate(3%,1%)scale(1.06)rotate(0)}66%{transform:translate(1.5%,-.5%)scale(1.04)rotate(-.2deg)}}@keyframes site-top-nav-sheen{0%,to{opacity:.4;background-position:0%}50%{opacity:.7;background-position:100%}}@supports not (backdrop-filter:blur(1px)){.site-top-nav{background:color-mix(in srgb, var(--color-surface) 88%, var(--color-surface-2))}.site-top-nav__frost{display:none}}@media (prefers-reduced-transparency:reduce){.site-top-nav{-webkit-backdrop-filter:none;background:color-mix(in srgb, var(--color-surface) 90%, var(--color-surface-2))}.site-top-nav__frost{display:none}.site-top-nav:before,.site-top-nav:after{opacity:.3;animation:none}}@media (prefers-reduced-motion:reduce){.site-top-nav:before,.site-top-nav:after{animation:none}}.site-top-nav__inner{z-index:2;max-width:calc(var(--content-wide) + 2 * var(--page-pad));min-height:2.75rem;padding:calc(.65rem + env(safe-area-inset-top,0px)) var(--page-pad) .65rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem;margin:0 auto;display:flex;position:relative}.site-top-nav__start{flex-wrap:wrap;flex:1;align-items:baseline;gap:.5rem .9rem;min-width:0;display:flex}.site-top-nav__brand{font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-ink);flex-shrink:0;font-size:1.05rem;font-weight:600;text-decoration:none;transition:color .15s}.site-top-nav__brand:hover,.site-top-nav__brand:focus-visible{color:var(--color-accent-2)}.site-top-nav__brand:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px;border-radius:2px}.site-top-nav__crumbs{min-width:0}.site-top-nav__crumb-list{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--color-muted-2);flex-wrap:wrap;align-items:baseline;gap:.2rem .5rem;margin:0;padding:0;font-size:.72rem;list-style:none;display:flex}.site-top-nav__crumb-item{align-items:baseline;gap:.5rem;min-width:0;display:flex}.site-top-nav__crumb-sep{color:var(--color-muted-2);opacity:.55;user-select:none}.site-top-nav__crumb-link{color:var(--color-muted);border-bottom:1px solid #0000;text-decoration:none;transition:color .15s,border-color .15s}.site-top-nav__crumb-link:hover,.site-top-nav__crumb-link:focus-visible{color:var(--color-accent-2);border-bottom-color:var(--color-accent-2)}.site-top-nav__crumb-current,.site-top-nav__crumb-link.c-nav-link--current{color:var(--color-ink);white-space:nowrap;text-overflow:ellipsis;cursor:default;border-bottom:none;max-width:min(50vw,20rem);font-weight:500;overflow:hidden}.theme-control{flex-shrink:0;justify-content:center;align-items:center;display:flex}.theme-control__cycle{border-radius:var(--radius-control);width:2.4rem;height:2.4rem;color:var(--color-ink);cursor:pointer;box-shadow:none;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:color .15s,background .15s;display:flex}.theme-control__cycle:hover,.theme-control__cycle:focus-visible{background:color-mix(in srgb, var(--color-ink) 6%, transparent)}.theme-control__cycle:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.theme-control__icon-wrap{width:1.15rem;height:1.15rem;display:block;position:relative}.theme-control__icon{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.theme-control__icon--hidden{display:none}.post-layout{padding-top:var(--gap-below-topbar)}.post-header{max-width:min(var(--content-reading), 100%);width:100%;min-width:0;padding:.5rem var(--page-pad) 1.5rem;border-bottom:1px solid var(--color-stroke);margin:0 auto}.post-header__title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-ink);margin:0;font-size:clamp(1.85rem,4vw,2.5rem);font-weight:600;line-height:1.2}.post-header__meta{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--color-muted-2);margin:0 0 .5rem;font-size:.72rem}.post-hero{margin:1.35rem 0 0;animation:.55s post-hero-in}.post-hero__frame{border-radius:var(--radius-tight);background:var(--color-surface-2);box-shadow:var(--shadow-soft), var(--image-gold-elev-1), var(--image-gold-elev-2);aspect-ratio:16/9;position:relative;overflow:hidden}.post-hero__img{object-fit:cover;width:100%;height:100%;display:block}.post-hero__frame :is(img,video){box-shadow:inset 0 1px 1px var(--image-gold-bevel)}.featured__media :is(img,video){box-shadow:none;border:none}@keyframes post-hero-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.post-hero{animation:none}}.prose-article{flex:1;width:100%;min-width:0}.blog-index{width:100%;max-width:calc(var(--content-wide) + 2 * var(--page-pad));padding:var(--gap-below-topbar) var(--page-pad) 2rem;margin:0 auto}.blog-index__header{border-bottom:1px solid var(--color-stroke);padding:.5rem 0 2.5rem}.blog-index__title{font-family:var(--font-display);font-variation-settings:"opsz" 72;letter-spacing:-.03em;color:var(--color-ink);margin:0 0 .75rem;font-size:clamp(2rem,5vw,3rem);font-weight:600;line-height:1.1}.blog-index__lede{color:var(--color-muted);max-width:40ch;margin:0;font-size:1.05rem;line-height:1.55}.blog-index__section{margin-top:2.75rem}.blog-index__section+.blog-index__section{border-top:1px solid var(--color-stroke);margin-top:3.25rem;padding-top:2.5rem}.blog-index__section-title{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.16em;color:var(--color-muted-2);margin:0 0 1.25rem;font-size:.7rem;font-weight:500}.blog-index__section .featured__grid{margin-top:.25rem}.blog-index__empty{color:var(--color-muted);margin:0;font-size:1rem}.resume-frame{border-radius:var(--radius);border:1px solid var(--color-stroke);box-shadow:var(--shadow-soft);margin-top:.75rem;overflow:hidden}.resume-frame__embed{border:0;width:100%;height:min(85vh,900px);display:block}.prose .tech-logo svg,.tech-logo .inline-icon{vertical-align:-.28em;width:auto;max-width:none;height:1.3em;margin-inline:0;display:inline-block}.tech-logo svg.icon-light{display:none}@media (prefers-color-scheme:light){:root:not([data-theme]) .tech-logo svg.icon-dark{display:none}:root:not([data-theme]) .tech-logo svg.icon-light{display:inline-block}}:root[data-theme=light] .tech-logo svg.icon-dark{display:none}:root[data-theme=light] .tech-logo svg.icon-light,:root[data-theme=dark] .tech-logo svg.icon-dark{display:inline-block}:root[data-theme=dark] .tech-logo svg.icon-light{display:none}.tech-table{margin-block:2rem;font-size:.92rem}.tech-table table{border-collapse:collapse;border:1px solid var(--color-stroke);border-radius:var(--radius-tight);background:var(--color-surface-2);width:100%;overflow:hidden}.tech-table th,.tech-table td{text-align:left;border-bottom:1px solid var(--color-stroke);padding:.5rem .75rem}.tech-table tr:last-child th,.tech-table tr:last-child td{border-bottom:none}.tech-table th{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--color-muted-2);background:color-mix(in srgb, var(--color-ink) 5%, transparent);font-size:.72rem}.landing-latest{max-width:var(--content-reading);padding:0 var(--page-pad);margin-top:3rem;margin-left:auto;margin-right:auto}.landing-latest__title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-ink);margin:0 0 1.25rem;font-size:clamp(1.5rem,2.5vw,1.85rem);font-weight:600;line-height:1.2}.landing-latest__list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.landing-latest__item{margin:0;padding:0}.landing-latest__link{border-radius:var(--radius-tight);grid-template-columns:5.5rem 1fr;align-items:baseline;gap:.5rem 1rem;padding:.6rem 1rem;text-decoration:none;transition:background .15s;display:grid}.landing-latest__link:hover,.landing-latest__link:focus-visible{background:color-mix(in srgb, var(--color-ink) 4%, transparent)}.landing-latest__link:focus-visible{outline:2px solid var(--color-ink);outline-offset:2px}.landing-latest__date{font-family:var(--font-mono);color:var(--color-muted-2);text-transform:uppercase;letter-spacing:.06em;grid-row:1/3;font-size:.72rem}.landing-latest__name{color:var(--color-ink);font-size:1rem;font-weight:500;line-height:1.3}.landing-latest__desc{color:var(--color-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.85rem;line-height:1.4;display:-webkit-box;overflow:hidden}.landing-latest__all{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--color-accent);align-items:center;gap:.35em;margin-top:1rem;margin-left:1rem;font-size:.75rem;font-weight:500;text-decoration:none;transition:color .15s;display:inline-flex}.landing-latest__all:hover{color:var(--color-accent-2)}.landing-latest__all:focus-visible{outline:2px solid var(--color-ink);outline-offset:3px;border-radius:2px}.landing-latest__all svg{width:.85rem;height:.85rem}.featured{margin-top:4.5rem}.featured__head{max-width:34ch;margin-bottom:2.25rem}.featured__title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-ink);margin:0 0 .5rem;font-size:clamp(1.75rem,3vw,2.25rem);font-weight:600;line-height:1.2}.featured__lede{color:var(--color-muted);margin:0;font-size:1.05rem;line-height:1.5}.featured__all{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--color-accent);white-space:nowrap;align-items:center;gap:.35em;margin-left:.35em;font-size:.82em;font-weight:500;text-decoration:none;display:inline-flex}.featured__all-icon{flex-shrink:0;width:1.1em;height:1.1em}.featured__all:hover .featured__all-label,.featured__all:focus-visible .featured__all-label{text-underline-offset:.15em;text-decoration:underline}.featured__all:focus-visible{outline:2px solid var(--color-ink);outline-offset:3px;border-radius:2px}.featured__footer{flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem;margin-top:2rem;display:flex}.featured__empty{color:var(--color-muted);font-size:.95rem}.featured__empty code{font-family:var(--font-mono);color:var(--color-accent-2);font-size:.9em}.featured__grid{flex-direction:column;gap:1.5rem;margin:0;padding:0;list-style:none;display:flex}.featured__item{margin:0;padding:0}@media (prefers-reduced-motion:no-preference){.featured__item{animation:.7s backwards featured-in;animation-delay:calc(.12s * var(--stagger) + .25s)}}@keyframes featured-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.featured__card{color:inherit;border-radius:var(--radius);background:var(--color-surface-2);box-shadow:var(--shadow-soft);border:1px solid #0000;text-decoration:none;transition:border-color .2s,box-shadow .25s,transform .25s;display:block}.featured__card:hover{border-color:var(--color-accent);box-shadow:var(--shadow-lift);transform:translateY(-2px)}.featured__card:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px;box-shadow:var(--shadow-lift);transform:translateY(-2px)}.featured__card-inner{border-radius:inherit;grid-template-columns:1fr;display:grid;overflow:hidden}@media (width>=48rem){.featured__card-inner{grid-template-columns:minmax(0,1.15fr) minmax(0,1.4fr)}}.featured__media{background:var(--color-surface);background-image:linear-gradient(145deg, var(--color-surface) 0%, var(--color-surface-2) 100%);min-height:12rem;position:relative;overflow:hidden}.featured__media--empty{min-height:6rem}@media (width>=48rem){.featured__media--empty{min-height:100%}}.featured__img{object-fit:cover;width:100%;height:100%;transition:transform .45s;display:block;position:absolute;inset:0}.featured__card:hover .featured__img,.featured__card:focus-visible .featured__img{transform:scale(1.04)}.featured__body{flex-direction:column;gap:.75rem;padding:1.35rem 1.4rem 1.5rem;display:flex}.featured__name{font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-ink);margin:0;font-size:1.35rem;font-weight:600}.featured__desc{color:var(--color-muted);flex:1;margin:0;font-size:.98rem;line-height:1.55}.featured__tags{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin:0;padding:0;list-style:none;display:flex}.featured__tag{border-radius:var(--radius-pill);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--color-muted-2);background:color-mix(in srgb, var(--color-ink) 6%, transparent);border:1px solid var(--color-stroke);padding:.2rem .6rem;font-size:.7rem;display:inline-block}.featured__cta{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--color-accent-2);margin-top:.25rem;font-size:.75rem}.featured__card:hover .featured__cta,.featured__card:focus-visible .featured__cta{color:var(--color-accent)}::view-transition-group(site-top-nav){z-index:100}@media (prefers-reduced-motion:reduce){.hero__name,.hero__sub,.hero__actions,.landing__prose,.featured__item{animation:none!important}.featured__img{transition:none}.featured__card:hover .featured__img,.featured__card:focus-visible .featured__img{transform:none}::view-transition-old(*),::view-transition-new(*){animation:none!important}}
