@font-face{font-family:Fraunces;font-style:italic;font-weight:400;font-display:swap;src:url(../media/50a3f1070da3c6cc-s.2xm1k7t3a0pcd.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(../media/b887d91685b8c137-s.330vchwb4izzb.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:italic;font-weight:400;font-display:swap;src:url(../media/3c7c6164b2587822-s.p.16u3vygyjnhr0.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:italic;font-weight:500;font-display:swap;src:url(../media/50a3f1070da3c6cc-s.2xm1k7t3a0pcd.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:500;font-display:swap;src:url(../media/b887d91685b8c137-s.330vchwb4izzb.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:italic;font-weight:500;font-display:swap;src:url(../media/3c7c6164b2587822-s.p.16u3vygyjnhr0.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:italic;font-weight:600;font-display:swap;src:url(../media/50a3f1070da3c6cc-s.2xm1k7t3a0pcd.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:600;font-display:swap;src:url(../media/b887d91685b8c137-s.330vchwb4izzb.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:italic;font-weight:600;font-display:swap;src:url(../media/3c7c6164b2587822-s.p.16u3vygyjnhr0.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(../media/1e219c03c996efbd-s.2qo5md4hn_gum.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(../media/b35b0dbffda7f2c4-s.1d9rlgtqyj_-l.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:400;font-display:swap;src:url(../media/03bda585a99c6450-s.p.32sris142tqlb.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:500;font-display:swap;src:url(../media/1e219c03c996efbd-s.2qo5md4hn_gum.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:500;font-display:swap;src:url(../media/b35b0dbffda7f2c4-s.1d9rlgtqyj_-l.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:500;font-display:swap;src:url(../media/03bda585a99c6450-s.p.32sris142tqlb.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(../media/1e219c03c996efbd-s.2qo5md4hn_gum.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(../media/b35b0dbffda7f2c4-s.1d9rlgtqyj_-l.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:600;font-display:swap;src:url(../media/03bda585a99c6450-s.p.32sris142tqlb.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 Fallback;src:local(Times New Roman);ascent-override:84.71%;descent-override:22.09%;line-gap-override:0.0%;size-adjust:115.45%}.fraunces_8216e5e-module__OTAlMq__className{font-family:Fraunces,Fraunces Fallback}.fraunces_8216e5e-module__OTAlMq__variable{--font-display:"Fraunces", "Fraunces Fallback"}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/7fea77d1d19108bf-s.2y65deuc30pmy.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 Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/1bcd0e671759a44c-s.2qt3tdwt-y9x_.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/e15f58668ad64cb8-s.3cvcemwuzoywn.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/90c51ce8fb754fe8-s.02z5rrbg5nt92.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 Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/57215795b8570f5c-s.2rixgazldzomk.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/03fc1b4a8d284b5e-s.p.0wiir8udbzjvx.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 Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/7fea77d1d19108bf-s.2y65deuc30pmy.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 Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/1bcd0e671759a44c-s.2qt3tdwt-y9x_.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/e15f58668ad64cb8-s.3cvcemwuzoywn.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/90c51ce8fb754fe8-s.02z5rrbg5nt92.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 Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/57215795b8570f5c-s.2rixgazldzomk.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/03fc1b4a8d284b5e-s.p.0wiir8udbzjvx.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 Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/7fea77d1d19108bf-s.2y65deuc30pmy.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 Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/1bcd0e671759a44c-s.2qt3tdwt-y9x_.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/e15f58668ad64cb8-s.3cvcemwuzoywn.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/90c51ce8fb754fe8-s.02z5rrbg5nt92.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 Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/57215795b8570f5c-s.2rixgazldzomk.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/03fc1b4a8d284b5e-s.p.0wiir8udbzjvx.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 Sans Fallback;src:local(Arial);ascent-override:101.32%;descent-override:27.18%;line-gap-override:0.0%;size-adjust:101.17%}.ibm_plex_sans_7ea1a318-module__hhH2WG__className{font-family:IBM Plex Sans,IBM Plex Sans Fallback;font-style:normal}.ibm_plex_sans_7ea1a318-module__hhH2WG__variable{--font-body:"IBM Plex Sans", "IBM Plex Sans Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-s.0rgnxg2b64rzs.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(../media/59b15b4bcd7b1eb5-s.2vemzm0itqzfy.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(../media/e532fa1b9921e1cd-s.3cb5lpr2l6xud.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(../media/2fe89d53234c61d4-s.1u30mmyq6lnsd.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-20C4,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(../media/99e609270109b47d-s.p.40sczeszzbjw1.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(../media/5e05ae5b48faa55e-s.1yd4_i3e35931.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(../media/a7afbb44bec2bb18-s.1qc6dx89jd2qv.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(../media/02263ebadd758ea4-s.29yke99gs9qpn.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(../media/68757d6cddeff913-s.1i-sca43-qwng.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-20C4,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(../media/effe91970fc4db64-s.p.0oace-s_gkfks.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 Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.ibm_plex_mono_f2269766-module__tRawia__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.ibm_plex_mono_f2269766-module__tRawia__variable{--font-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
:root{--paper:#e9ebe3;--card:#f5f6f0;--ink:#1b221c;--ink-soft:#565f56;--ink-faint:#838c80;--line:#c9cfc1;--blue:#24468f;--blue-ink:#12274f;--amber:#a1650f;--amber-soft:#f2e3c8;--amber-ink:#5c3a08}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#12160f;--card:#181e15;--ink:#e8ebe1;--ink-soft:#a9b09f;--ink-faint:#767f70;--line:#333c2c;--blue:#82a6ef;--blue-ink:#dbe6fb;--amber:#e2ab52;--amber-soft:#392a12;--amber-ink:#f3d8a6}}:root[data-theme=dark]{--paper:#12160f;--card:#181e15;--ink:#e8ebe1;--ink-soft:#a9b09f;--ink-faint:#767f70;--line:#333c2c;--blue:#82a6ef;--blue-ink:#dbe6fb;--amber:#e2ab52;--amber-soft:#392a12;--amber-ink:#f3d8a6}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--font-body), ui-sans-serif, system-ui, sans-serif;line-height:1.6}::selection{background:var(--blue);color:var(--paper)}a{color:var(--blue)}.gridfield{z-index:0;background-image:linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px);opacity:.5;background-position:top;background-size:56px 56px;height:520px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 92%);mask-image:linear-gradient(#000,#0000 92%)}:root:not([data-theme=light]) .gridfield,:root[data-theme=dark] .gridfield{opacity:.28}.wrap{z-index:1;max-width:980px;margin:0 auto;padding:0 28px;position:relative}.nav-bar{z-index:40;background:0 0;border-bottom:1px solid #0000;transition:background .25s,border-color .25s,box-shadow .25s;position:fixed;top:0;left:0;right:0}.nav-bar.nav-scrolled{background:var(--card);border-bottom-color:var(--line);box-shadow:0 6px 20px #0000001f}.nav-spacer{height:72px}nav{justify-content:space-between;align-items:center;gap:20px;max-width:980px;margin:0 auto;padding:18px 28px;display:flex}.wordmark{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.03em;font-size:15px;font-weight:500}.wm-nosy{color:var(--ink)}.wm-soa{color:var(--amber)}.wm-tech{color:var(--blue)}.navright{align-items:center;gap:26px;display:flex}.navlinks{gap:28px;display:flex}.navlinks a{color:var(--ink-soft);font-size:14px;text-decoration:none}.navlinks a:hover{color:var(--ink)}.navlangs{align-items:center;gap:10px;display:flex}.lang-label{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);font-size:11.5px}.langswitch{background:var(--card);border:1px solid var(--line);border-radius:20px;align-items:center;gap:2px;padding:3px;display:flex}.lang-btn{cursor:pointer;font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.02em;color:var(--ink-soft);background:0 0;border:none;border-radius:16px;padding:5px 12px;font-size:11.5px}.lang-btn:hover{color:var(--ink)}.lang-btn[data-active=true]{background:var(--blue);color:var(--paper)}.lang-btn[data-active=true]:hover{color:var(--paper)}header.hero{position:relative;overflow:hidden}.hero-inner{padding:64px 0 56px;position:relative}.idrow{align-items:center;gap:14px;margin-bottom:22px;display:flex}.avatar{object-fit:cover;border:1px solid var(--line);border-radius:50%;flex-shrink:0;width:52px;height:52px;display:block}.eyebrow{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--blue);align-items:center;gap:10px;font-size:12.5px;display:flex}.eyebrow:before{content:"";background:var(--blue);width:22px;height:1px}h1{color:var(--ink-soft);max-width:56ch;margin:0 0 34px;font-size:18px;font-weight:400}h1 b{color:var(--ink);font-weight:600}.hero-sub{font-family:var(--font-display), Georgia, serif;font-optical-sizing:auto;letter-spacing:-.01em;text-wrap:balance;max-width:24ch;color:var(--ink);margin:0 0 22px;font-size:clamp(28px,3.8vw,44px);font-weight:500;line-height:1.05;display:block}.chiprow{flex-wrap:wrap;gap:10px;margin-bottom:44px;display:flex}.chip{font-family:var(--font-mono), ui-monospace, monospace;border:1px solid var(--line);background:var(--card);color:var(--ink-soft);border-radius:3px;padding:7px 13px;font-size:12.5px}.chip b{color:var(--ink);font-weight:500}.cta-row{align-items:center;gap:14px;display:flex}.btn{font-family:var(--font-body), sans-serif;cursor:pointer;border:1px solid #0000;border-radius:3px;padding:12px 22px;font-size:14.5px;font-weight:600;text-decoration:none;display:inline-block}.btn.primary{background:var(--blue);color:var(--paper)}.btn.ghost{border:1px solid var(--line);color:var(--ink)}section{border-top:1px solid var(--line);padding:56px 0}.sec-head{margin-bottom:32px}.sec-head .kicker{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--blue);margin-bottom:10px;font-size:12px;display:block}h2{font-family:var(--font-display), serif;letter-spacing:-.005em;margin:0;font-size:28px;font-weight:500}.pillars{background:var(--line);border:1px solid var(--line);grid-template-columns:repeat(3,1fr);gap:1px;display:grid}.pillar{background:var(--card);flex-direction:column;gap:12px;padding:28px 24px;display:flex}.pillar .pnum{font-family:var(--font-mono), ui-monospace, monospace;color:var(--ink-faint);font-size:12px}.pillar h3{font-family:var(--font-display), serif;margin:0;font-size:20px;font-weight:500}.pillar p{color:var(--ink-soft);margin:0;font-size:14.5px}.pillar .stack{flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:14px;display:flex}.pillar .stack span{font-family:var(--font-mono), ui-monospace, monospace;color:var(--blue-ink);border:1px solid var(--line);border-radius:3px;padding:3px 8px;font-size:11.5px}.projects{background:var(--line);border:1px solid var(--line);flex-direction:column;gap:1px;display:flex}.proj{background:var(--card);grid-template-columns:1fr 3fr auto;align-items:start;gap:22px;padding:24px 26px;display:grid}.proj .pname{font-family:var(--font-display), serif;font-size:18px;font-weight:500}.proj .pdesc{color:var(--ink-soft);font-size:14.5px}.proj .pdesc b{color:var(--ink);font-weight:600}.status{font-family:var(--font-mono), ui-monospace, monospace;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;border-radius:3px;height:fit-content;padding:5px 10px;font-size:11px}.status.live{background:var(--card);border:1px solid var(--blue);color:var(--blue)}.status.wip{background:var(--amber-soft);color:var(--amber-ink)}.status.conf{background:var(--card);border:1px solid var(--line);color:var(--ink-soft)}.ptags{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.ptags span{font-family:var(--font-mono), ui-monospace, monospace;color:var(--blue-ink);border:1px solid var(--line);border-radius:3px;padding:2px 8px;font-size:11.5px}.brand{align-items:center;gap:10px;text-decoration:none;display:flex}.brand-icon{border-radius:6px;width:28px;height:28px;display:block}.hero-grid{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:40px;display:grid}.hero-grid .eyebrow{margin-bottom:18px}.availability{font-family:var(--font-mono), ui-monospace, monospace;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:20px;align-items:center;gap:8px;margin-bottom:22px;padding:6px 12px;font-size:12px;display:inline-flex}.availability-dot{background:#2e9d5b;border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 3px #2e9d5b40}.hero-photo{flex-direction:column;align-items:center;gap:12px;display:flex}.hero-photo .avatar{width:168px;height:168px}.hero-location{font-family:var(--font-mono), ui-monospace, monospace;color:var(--ink-soft);font-size:12px}.metrics{background:var(--line);border:1px solid var(--line);grid-template-columns:repeat(4,1fr);gap:1px;margin-top:44px;display:grid}.metric{background:var(--card);flex-direction:column;gap:2px;padding:16px 18px;display:flex}.metric b{font-family:var(--font-display), serif;color:var(--ink);font-size:22px;font-weight:500}.metric span{color:var(--ink-soft);font-size:13px}.also{font-family:var(--font-mono), ui-monospace, monospace;color:var(--ink-faint);margin:18px 0 0;font-size:13px}.sec-desc{color:var(--ink-soft);max-width:60ch;margin:12px 0 0;font-size:15px}.steps{background:var(--line);border:1px solid var(--line);grid-template-columns:repeat(4,1fr);gap:1px;margin:0;padding:0;list-style:none;display:grid}.step{background:var(--card);border-top:3px solid var(--amber);flex-direction:column;gap:6px;padding:22px 20px;display:flex}.step .pnum{font-family:var(--font-mono), ui-monospace, monospace;color:var(--amber);font-size:12px}.step b{font-family:var(--font-display), serif;font-size:18px;font-weight:500}.step span:last-child{color:var(--ink-soft);font-size:14px}footer{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;padding:56px 0 44px;display:flex}footer h2{margin-bottom:10px;font-size:24px}footer p{color:var(--ink-soft);max-width:38ch;margin:0;font-size:14.5px}.foot-links{flex-direction:column;gap:14px;display:flex}.foot-info{font-family:var(--font-mono), ui-monospace, monospace;color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:10px;font-size:13px;display:flex}.foot-info a{color:var(--ink-soft);text-decoration:none}.foot-info a:hover{color:var(--blue)}.foot-info .foot-sep{color:var(--ink-faint)}.foot-actions{font-family:var(--font-mono), ui-monospace, monospace;flex-wrap:wrap;gap:20px;font-size:13px;display:flex}.foot-actions a{color:var(--blue);text-decoration:none}.foot-link-btn{color:var(--blue);cursor:pointer;font-family:var(--font-mono), ui-monospace, monospace;background:0 0;border:none;padding:0;font-size:13px}.foot-link-btn:hover{text-decoration:underline}.float-stack{z-index:30;flex-direction:column;gap:12px;display:flex;position:fixed;bottom:24px;right:24px}.float-btn{background:var(--card);border:1px solid var(--line);width:52px;height:52px;color:var(--ink);cursor:pointer;font:inherit;appearance:none;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:transform .15s,border-color .15s;display:flex;position:relative;box-shadow:0 4px 16px #0000002e}.float-btn:hover,.float-btn:focus-visible{border-color:var(--blue);transform:scale(1.06)}.float-btn svg{width:22px;height:22px}.float-btn.wa{background:#25d366;border-color:#25d366;box-shadow:0 4px 16px #00000047}.float-btn.wa:hover{border-color:#1ebe5b}.float-btn[data-tip]:after{content:attr(data-tip);background:var(--card);border:1px solid var(--line);color:var(--ink);font-family:var(--font-mono), ui-monospace, monospace;white-space:nowrap;opacity:0;pointer-events:none;border-radius:3px;padding:6px 10px;font-size:12px;transition:opacity .15s;position:absolute;top:50%;right:calc(100% + 12px);transform:translateY(-50%)}.float-btn[data-tip]:hover:after,.float-btn[data-tip]:focus-visible:after{opacity:1}dialog.contact-modal{background:var(--card);color:var(--ink);border:none;border-radius:4px;width:min(440px,100vw - 48px);padding:0;box-shadow:0 16px 48px #0000004d}dialog.contact-modal::backdrop{background:#0a0d088c}:root:not([data-theme=light]) dialog.contact-modal::backdrop,:root[data-theme=dark] dialog.contact-modal::backdrop{background:#000000b3}.cm-head{justify-content:space-between;align-items:flex-start;padding:24px 22px 4px 24px;display:flex}.cm-head h2{font-size:22px}.cm-close{color:var(--ink-faint);cursor:pointer;background:0 0;border:none;padding:2px 6px;font-size:24px;line-height:1}.cm-close:hover{color:var(--ink)}.cm-sub{color:var(--ink-soft);margin:0 0 18px;padding:0 24px;font-size:13.5px}.cm-sub .mono{font-family:var(--font-mono), ui-monospace, monospace;color:var(--ink)}.cm-body{flex-direction:column;gap:16px;padding:0 24px 26px;display:flex}.field{color:var(--ink-soft);flex-direction:column;gap:6px;font-size:13px;display:flex}.field input,.field textarea{font-family:var(--font-body), sans-serif;color:var(--ink);background:var(--paper);border:1px solid var(--line);resize:vertical;border-radius:3px;padding:9px 11px;font-size:14.5px}.field input:focus,.field textarea:focus{outline:2px solid var(--blue);outline-offset:1px}.cm-submit{cursor:pointer;border:none;justify-content:center;align-items:center;gap:8px;width:100%;margin-top:4px;display:flex}.cm-submit:disabled{cursor:default}.cm-error{color:#b3261e;margin:-4px 0 0;font-size:13px}:root:not([data-theme=light]) .cm-error,:root[data-theme=dark] .cm-error{color:#f2938b}.cm-alt{font-family:var(--font-mono), ui-monospace, monospace;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);align-items:center;gap:10px;margin:2px 0;font-size:11px;display:flex}.cm-alt-line{background:var(--line);flex:1;height:1px}.cm-mailto{text-align:center;color:var(--blue);font-size:13.5px;text-decoration:none;display:block}.cm-mailto:hover{text-decoration:underline}.cm-spinner{border:2px solid color-mix(in srgb, var(--paper) 35%, transparent);border-top-color:var(--paper);border-radius:50%;width:15px;height:15px;animation:.7s linear infinite cm-spin;display:none}.cm-submit[data-loading=true] .cm-spinner{display:inline-block}.cm-submit[data-loading=true] .cm-submit-label{opacity:.75}@keyframes cm-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.cm-spinner{opacity:.6;animation:none}}.cm-success{text-align:center;flex-direction:column;align-items:center;gap:14px;padding:38px 26px 32px;display:flex}.cm-success-icon{width:40px;height:40px;color:var(--blue);border:1px solid var(--blue);border-radius:50%;justify-content:center;align-items:center;font-size:17px;display:flex}.cm-success p{color:var(--ink-soft);margin:0;font-size:14.5px}.cm-success p b{color:var(--ink)}@media (max-width:900px){.pillars,.metrics,.steps{grid-template-columns:repeat(2,1fr)}}@media (max-width:760px){.pillars{grid-template-columns:1fr}.hero-grid{grid-template-columns:1fr;gap:28px}.hero-photo{flex-direction:row;order:-1;justify-content:flex-start}.hero-photo .avatar{width:88px;height:88px}.cta-row{flex-wrap:wrap}.proj{grid-template-columns:1fr}.navlinks{display:none}.navright{gap:14px}.lang-label{display:none}nav{padding:14px 20px}}
