@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2c55a0e60120577a-s.0-dom-5bn10r2.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:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/ad66f9afd8947f86-s.3lvt2whj97whp.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/5476f68d60460930-s.2uwcyprjm3xu3.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:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2bbe8d2671613f1f-s.0k62hbripvv8p.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:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/1bffadaabf893a1e-s.3-6t-g6q0vh0a.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:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.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:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/2c55a0e60120577a-s.0-dom-5bn10r2.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:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/ad66f9afd8947f86-s.3lvt2whj97whp.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5476f68d60460930-s.2uwcyprjm3xu3.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:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/2bbe8d2671613f1f-s.0k62hbripvv8p.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:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/1bffadaabf893a1e-s.3-6t-g6q0vh0a.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:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.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:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/2c55a0e60120577a-s.0-dom-5bn10r2.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:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/ad66f9afd8947f86-s.3lvt2whj97whp.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/5476f68d60460930-s.2uwcyprjm3xu3.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:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/2bbe8d2671613f1f-s.0k62hbripvv8p.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:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/1bffadaabf893a1e-s.3-6t-g6q0vh0a.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:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.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:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(../media/2c55a0e60120577a-s.0-dom-5bn10r2.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:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(../media/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(../media/ad66f9afd8947f86-s.3lvt2whj97whp.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(../media/5476f68d60460930-s.2uwcyprjm3xu3.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:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(../media/2bbe8d2671613f1f-s.0k62hbripvv8p.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:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(../media/1bffadaabf893a1e-s.3-6t-g6q0vh0a.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:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(../media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.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:Inter Fallback;src:local(Arial);ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.0%;size-adjust:107.12%}._V44Sa_className{font-family:Inter,Inter Fallback;font-style:normal}._V44Sa_variable{--font-sans:"Inter", "Inter Fallback"}
@font-face{font-family:Inter Tight;font-style:normal;font-weight:500;font-display:swap;src:url(../media/13ae3e01af63c0ce-s.35p9_4tnsm_o4.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:Inter Tight;font-style:normal;font-weight:500;font-display:swap;src:url(../media/0ee4b8f05dcd9fee-s.1q0qwmqzyniyk.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Tight;font-style:normal;font-weight:500;font-display:swap;src:url(../media/9eba4caf7edd2921-s.02gir8avbbwr_.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter Tight;font-style:normal;font-weight:500;font-display:swap;src:url(../media/f6752bd2263820da-s.3hqxvms4e79hg.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:Inter Tight;font-style:normal;font-weight:500;font-display:swap;src:url(../media/f285987c35230861-s.1xbprfp_s2_ea.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:Inter Tight;font-style:normal;font-weight:500;font-display:swap;src:url(../media/b8d1f0a88dfecec3-s.1e3bxj0ebt1gg.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:Inter Tight;font-style:normal;font-weight:500;font-display:swap;src:url(../media/ab57efd000576a30-s.p.3fofz6dws3mg0.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:Inter Tight;font-style:normal;font-weight:600;font-display:swap;src:url(../media/13ae3e01af63c0ce-s.35p9_4tnsm_o4.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:Inter Tight;font-style:normal;font-weight:600;font-display:swap;src:url(../media/0ee4b8f05dcd9fee-s.1q0qwmqzyniyk.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Tight;font-style:normal;font-weight:600;font-display:swap;src:url(../media/9eba4caf7edd2921-s.02gir8avbbwr_.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter Tight;font-style:normal;font-weight:600;font-display:swap;src:url(../media/f6752bd2263820da-s.3hqxvms4e79hg.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:Inter Tight;font-style:normal;font-weight:600;font-display:swap;src:url(../media/f285987c35230861-s.1xbprfp_s2_ea.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:Inter Tight;font-style:normal;font-weight:600;font-display:swap;src:url(../media/b8d1f0a88dfecec3-s.1e3bxj0ebt1gg.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:Inter Tight;font-style:normal;font-weight:600;font-display:swap;src:url(../media/ab57efd000576a30-s.p.3fofz6dws3mg0.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:Inter Tight;font-style:normal;font-weight:700;font-display:swap;src:url(../media/13ae3e01af63c0ce-s.35p9_4tnsm_o4.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:Inter Tight;font-style:normal;font-weight:700;font-display:swap;src:url(../media/0ee4b8f05dcd9fee-s.1q0qwmqzyniyk.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Tight;font-style:normal;font-weight:700;font-display:swap;src:url(../media/9eba4caf7edd2921-s.02gir8avbbwr_.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter Tight;font-style:normal;font-weight:700;font-display:swap;src:url(../media/f6752bd2263820da-s.3hqxvms4e79hg.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:Inter Tight;font-style:normal;font-weight:700;font-display:swap;src:url(../media/f285987c35230861-s.1xbprfp_s2_ea.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:Inter Tight;font-style:normal;font-weight:700;font-display:swap;src:url(../media/b8d1f0a88dfecec3-s.1e3bxj0ebt1gg.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:Inter Tight;font-style:normal;font-weight:700;font-display:swap;src:url(../media/ab57efd000576a30-s.p.3fofz6dws3mg0.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:Inter Tight;font-style:normal;font-weight:800;font-display:swap;src:url(../media/13ae3e01af63c0ce-s.35p9_4tnsm_o4.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:Inter Tight;font-style:normal;font-weight:800;font-display:swap;src:url(../media/0ee4b8f05dcd9fee-s.1q0qwmqzyniyk.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Tight;font-style:normal;font-weight:800;font-display:swap;src:url(../media/9eba4caf7edd2921-s.02gir8avbbwr_.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter Tight;font-style:normal;font-weight:800;font-display:swap;src:url(../media/f6752bd2263820da-s.3hqxvms4e79hg.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:Inter Tight;font-style:normal;font-weight:800;font-display:swap;src:url(../media/f285987c35230861-s.1xbprfp_s2_ea.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:Inter Tight;font-style:normal;font-weight:800;font-display:swap;src:url(../media/b8d1f0a88dfecec3-s.1e3bxj0ebt1gg.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:Inter Tight;font-style:normal;font-weight:800;font-display:swap;src:url(../media/ab57efd000576a30-s.p.3fofz6dws3mg0.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:Inter Tight Fallback;src:local(Arial);ascent-override:100.51%;descent-override:25.03%;line-gap-override:0.0%;size-adjust:96.39%}.gnG9Ua_className{font-family:Inter Tight,Inter Tight Fallback;font-style:normal}.gnG9Ua_variable{--font-display:"Inter Tight", "Inter Tight Fallback"}
:root{--bg:#f3f3ef;--fg:#111110;--muted:#5d5d58;--line:#111110;--line-soft:#d4d4ce;--accent:#d6261c;--red:#d6261c;--on-red:#fff;--gutter:1.25rem;--ease:cubic-bezier(.2, .7, .1, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#0e0e0d;--fg:#f1f1ec;--muted:#a2a29b;--line:#f1f1ec;--line-soft:#2c2c29;--accent:#ff5045}}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--fg);font-family:var(--font-sans), "Helvetica Neue", Helvetica, Arial, sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:1rem;line-height:1.6;overflow-x:clip}::selection{background:var(--red);color:var(--on-red)}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}main:focus{outline:none}b{color:var(--fg);font-weight:600}em{color:var(--accent);font-style:normal}ul,ol{margin:0;padding:0;list-style:none}h1,h2,h3{font-family:var(--font-display), var(--font-sans), sans-serif;letter-spacing:-.03em;margin:0;line-height:1.05}.wrap{width:100%;max-width:84rem;padding-left:var(--gutter);padding-right:var(--gutter);margin:0 auto}.grid{column-gap:var(--gutter);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.grid>*{grid-column:1/-1}.skip{position:absolute;left:-999px}.skip:focus{z-index:100;background:var(--bg);padding:.5rem .9rem;top:1rem;left:1rem}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.topnav{z-index:10;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line-soft);position:sticky;top:0}.topnav-inner{align-items:center;gap:1.5rem;height:3.5rem;font-size:.88rem;font-weight:500;display:flex}.brand{white-space:nowrap;align-items:center;gap:.6rem;font-weight:600;display:flex}.brand-mark{background:var(--red);width:.85rem;height:.85rem;transition:transform .5s var(--ease)}.brand:hover .brand-mark{transform:rotate(90deg)scale(.8)}.clock{color:var(--muted);font-variant-numeric:tabular-nums;gap:.5rem;display:none}.clock time{color:var(--fg);margin-left:.5rem}.colon{animation:2s step-end infinite blink}.topnav-links{gap:1.25rem;margin-left:auto;display:flex}.topnav-links .wide{display:none}.topnav-links a,.more,.contact-li,.footer a{transition:background-size .35s var(--ease), color .2s;background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat}.topnav-links a:hover,.topnav-links a[aria-current=page],.more:hover,.contact-li:hover,.footer a:hover{background-size:100% 1px}.topnav-links a[aria-current=page]{color:var(--accent)}.has-menu{position:relative}.job[id]{scroll-margin-top:4.5rem}.topnav-menu{display:none}@media (hover:hover){.topnav-menu{background:var(--bg);border:1px solid var(--line-soft);border-top:3px solid var(--red);visibility:hidden;opacity:0;min-width:15rem;transition:opacity .2s, transform .25s var(--ease), visibility .2s;margin:0;padding:.5rem 0;list-style:none;display:grid;position:absolute;top:calc(100% + 1.15rem);right:-1rem;transform:translateY(-.4rem)}.has-menu:after{content:"";height:1.3rem;position:absolute;top:100%;left:0;right:0}.has-menu:hover .topnav-menu{visibility:visible;opacity:1;transform:none}.has-menu:has(:focus-visible) .topnav-menu{visibility:visible;opacity:1;transform:none}.topnav-links:hover .has-menu:not(:hover) .topnav-menu{visibility:hidden;opacity:0;transition:none}.topnav-menu li{display:block}.topnav-menu a{white-space:nowrap;background-size:0 0;padding:.45rem 1rem;display:block}.topnav-menu a:hover,.topnav-menu a:focus-visible{background:var(--red);color:var(--on-red)}}.btn{background:var(--fg);min-height:3rem;color:var(--bg);border:1px solid var(--fg);align-items:center;gap:.6rem;padding:0 1.25rem;font-size:.95rem;font-weight:600;transition:background .2s,border-color .2s,color .2s;display:inline-flex}.btn span{transition:transform .3s var(--ease)}.btn:hover{background:var(--red);border-color:var(--red);color:var(--on-red)}.btn:hover span{transform:translate(4px)}.btn-ghost{color:var(--fg);background:0 0}.cta{flex-wrap:wrap;gap:.6rem;display:flex}.more{gap:.5rem;font-weight:600;display:inline-flex}.hero{row-gap:1.5rem;padding-top:2.5rem;padding-bottom:3rem}.hero-meta{border-top:1px solid var(--line);flex-direction:column;margin:0;padding-top:.6rem;font-size:.9rem;font-weight:500;line-height:1.4;display:flex}.hero-meta span+span{color:var(--muted)}.hero .hero-role{grid-column:1/3}.hero .hero-place{grid-column:3/5}.hero .hero-lang{grid-column:1/3}.hero-name,.page-title{letter-spacing:-.065em;margin:1rem 0 0 -.05em;font-size:clamp(3.5rem,12vw,8.5rem);font-weight:700;line-height:.86}.line{padding-bottom:.06em;display:block;overflow:hidden}.line>span{display:inline-block}.square{background:var(--red);width:.16em;height:.16em;margin-left:.06em;display:inline-block}.portrait{aspect-ratio:1;object-fit:cover;grid-area:3/4/auto/5;align-self:end;width:100%;height:auto}.hero .hero-name{grid-area:3/1/auto/4}.tagline{font-family:var(--font-display), sans-serif;letter-spacing:-.03em;grid-row:4;max-width:22ch;margin:1rem 0 0;font-size:clamp(1.5rem,3.2vw,2.6rem);font-weight:600;line-height:1.12}.hero-side{grid-row:5}.lead{color:var(--muted);max-width:34rem;margin:0 0 1.5rem;font-size:1.05rem}.ticker{border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-family:var(--font-display), sans-serif;letter-spacing:-.02em;white-space:nowrap;padding:.9rem 0;font-size:clamp(1.1rem,2vw,1.5rem);font-weight:600;overflow:hidden}.ticker-track{width:max-content;animation:70s linear infinite ticker;display:flex}.ticker:hover .ticker-track{animation-play-state:paused}.ticker ul{display:flex}.ticker li{align-items:center;display:flex}.ticker svg{fill:currentColor;width:.85em;height:.85em;margin-right:.45em}.ticker li:after{content:"";background:var(--red);width:.4em;height:.4em;margin:0 1.1em}.stats{row-gap:2rem;margin:3.5rem 0 0}.stats div{border-top:1px solid var(--line);padding-top:.75rem}.stats dt{font-family:var(--font-display), sans-serif;white-space:nowrap;letter-spacing:-.05em;font-variant-numeric:tabular-nums;font-size:clamp(2.6rem,4.6vw,4.5rem);font-weight:700;line-height:1}.stats dd{color:var(--muted);max-width:24rem;margin:.6rem 0 0;font-size:.95rem;line-height:1.45;position:relative}.term{color:var(--fg);text-underline-offset:.2em;cursor:help;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.term-tip,.job-tip{z-index:5;background:var(--fg);width:max-content;max-width:16rem;color:var(--bg);text-align:left;opacity:0;visibility:hidden;padding:.6rem .75rem;font-size:.85rem;font-weight:400;line-height:1.4;text-decoration:none;transition:opacity .18s,transform .18s,visibility .18s;position:absolute;top:calc(100% + .6rem);left:0;transform:translateY(-.3rem)}.job-tip:before,.job-tip:after,.term-tip:after{content:"";border:.4rem solid #0000;border-bottom-color:var(--fg);position:absolute;bottom:100%;left:1rem}@media (min-width:48rem){.term{position:relative}}.tip-metrics{border-top:1px solid color-mix(in srgb, var(--bg) 25%, transparent);flex-wrap:wrap;gap:.25rem 1rem;margin-top:.5rem;padding-top:.5rem;font-size:.8rem;display:flex}.tip-metrics b{color:inherit;font-family:var(--font-display), sans-serif;letter-spacing:-.02em;font-size:1rem;font-weight:700}.job{position:relative}.job:has(.logo-plate:hover,.logo-plate:focus,.job-title:hover,.job-title:focus,.job-tip:hover,.job-tip:focus-within){z-index:10}.job-title,.logo-plate[tabindex]{cursor:help}.job-tip{grid-area:2/1/auto/-1;max-width:min(30rem,100%);transition:opacity .18s .3s,transform .18s .3s,visibility 0s .48s;top:2.1rem}.job-tip:before{display:none}.job-tip:before,.job-tip:after{border-width:.6rem}@media (min-width:48rem){.job-tip{grid-row:1;min-width:19rem;top:4.4rem}.job-tip:before{display:block;left:13.5rem}}.term-end .term-tip{left:auto;right:0}.term-end .term-tip:after{left:auto;right:1rem}.term:hover .term-tip,.term:focus .term-tip{opacity:1;visibility:visible;transition-delay:0s;transform:none}.job:has(.logo-plate:hover,.logo-plate:focus,.job-title:hover,.job-title:focus,.job-tip:hover,.job-tip:focus-within) .job-tip{opacity:1;visibility:visible;transition-delay:0s;transform:none}.section{row-gap:1.5rem;padding-top:5.5rem;scroll-margin-top:2.5rem}.section:before{content:"";background:var(--line);transform-origin:0;grid-column:1/-1;height:2px}.section-head h2{-webkit-hyphens:auto;hyphens:auto}.section-head{flex-direction:column;gap:.4rem;display:flex}.section-no{color:var(--accent);font-variant-numeric:tabular-nums;font-size:.9rem;font-weight:600}h2{font-size:clamp(1.9rem,3.5vw,2.8rem);font-weight:700}h3{font-size:1.35rem;font-weight:650}.period{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.9rem;font-weight:500;display:block}.role{margin:.3rem 0 0;font-weight:500}.summary{color:var(--muted);max-width:44rem;margin:.8rem 0 1.1rem}.jobs{display:grid}.logo-plate{border:1px solid var(--line-soft);width:10rem;height:3.75rem;transition:transform .4s var(--ease);background:#fff;justify-content:center;align-items:center;margin-bottom:.9rem;padding:.55rem .7rem;display:flex;position:relative}.skill-group li:hover,.skill-group li:focus-within{z-index:10}.job:hover .logo-plate{transform:translateY(-3px)}.logo-plate img{width:auto;max-width:100%;height:auto;max-height:100%;display:block}.job{border-top:1px solid var(--line-soft);gap:.5rem 2rem;padding:1.75rem 0;display:grid}.jobs .job:first-child,.section-body>.job{border-top:0;padding-top:0}.job-refs{margin:.75rem 0 0;font-size:.85rem}.tip-ref{margin-top:.5rem;font-size:.8rem;display:block}.tip-ref a{color:inherit;text-underline-offset:.2em;text-decoration:underline}.tip-ref a:hover{-webkit-text-decoration-color:var(--red);text-decoration-color:var(--red)}.job-refs a{color:var(--muted);text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:.2em;transition:color .2s,text-decoration-color .2s}.job-refs a:hover{color:var(--fg);-webkit-text-decoration-color:var(--red);text-decoration-color:var(--red)}.points{color:var(--muted);gap:.55rem;max-width:44rem;display:grid}.points li{padding-left:1.5rem;position:relative}.points li:before{content:"";background:var(--accent);width:.7rem;height:1px;position:absolute;top:.78em;left:0}.teasers{border-top:1px solid var(--line)}.teaser{border-bottom:1px solid var(--line);isolation:isolate;grid-template-columns:2.5rem 1fr auto;align-items:baseline;gap:0 1rem;padding:1.15rem 0;display:grid;position:relative;overflow:hidden}.teaser:before{content:"";z-index:-1;background:var(--red);transform-origin:bottom;transition:transform .45s var(--ease);position:absolute;inset:0;transform:scaleY(0)}.teaser:hover:before,.teaser:focus-visible:before{transform:scaleY(1)}.teaser:hover,.teaser:focus-visible{color:var(--on-red)}.teaser>span{transition:transform .45s var(--ease), color .2s}.teaser:hover>span,.teaser:focus-visible>span{transform:translate(.75rem)}.teaser-summary{opacity:0;max-width:40rem;transition:grid-template-rows .45s var(--ease), opacity .3s, transform .45s var(--ease);grid-column:2/-1;grid-template-rows:0fr;font-size:.95rem;line-height:1.5;display:grid}.teaser-summary>span{overflow:hidden}.teaser:hover .teaser-summary,.teaser:focus-visible .teaser-summary{opacity:1;grid-template-rows:1fr;padding-top:.5rem}.teaser-no{color:var(--accent);font-variant-numeric:tabular-nums;font-size:.9rem;font-weight:600}.teaser:hover .teaser-no{color:inherit}.teaser-title{font-family:var(--font-display), sans-serif;letter-spacing:-.035em;font-size:clamp(1.5rem,3vw,2.3rem);font-weight:650;line-height:1.1}.teaser-kind{font-size:.9rem;font-weight:500;display:none}.teaser-arrow{padding-right:.75rem;font-size:1.4rem}.teaser:hover .teaser-arrow{transform:translate(0)rotate(-45deg)}.teasers+.more{margin-top:1.5rem}.skill-grid{gap:2rem var(--gutter);display:grid}.skill-group h3{font-family:var(--font-sans), sans-serif;letter-spacing:0;border-bottom:1px solid var(--line);margin-bottom:.6rem;padding-bottom:.6rem;font-size:.9rem;font-weight:600}.skill-group li{letter-spacing:-.01em;padding:.2rem 0;font-size:1.15rem;font-weight:500;position:relative}.carousel{margin:2.5rem 0 1.5rem}.carousel-head{justify-content:flex-end;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.carousel-nav{gap:.5rem;display:flex}.carousel-nav button{border:1px solid var(--line);width:2.75rem;height:2.75rem;color:var(--fg);cursor:pointer;background:0 0;font-size:1.1rem;transition:background .2s,color .2s}.carousel-nav button:hover{background:var(--red);border-color:var(--red);color:var(--on-red)}.carousel-track{scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;grid-auto-columns:min(85%,22rem);grid-auto-flow:column;gap:1rem;margin:0;padding:0 0 1rem;list-style:none;display:grid;overflow-x:auto}.carousel-track::-webkit-scrollbar{display:none}.carousel-track li{scroll-snap-align:start}.carousel-card{border:1px solid var(--line);isolation:isolate;flex-direction:column;gap:.75rem;height:100%;min-height:15rem;padding:1.25rem;transition:color .2s;display:flex;position:relative;overflow:hidden}.carousel-card:before{content:"";z-index:-1;background:var(--red);transform-origin:bottom;transition:transform .45s var(--ease);position:absolute;inset:0;transform:scaleY(0)}.carousel-card:hover:before,.carousel-card:focus-visible:before{transform:scaleY(1)}.carousel-card:hover,.carousel-card:focus-visible{color:var(--on-red)}.carousel-meta{letter-spacing:.04em;text-transform:uppercase;justify-content:space-between;font-size:.8rem;display:flex}.carousel-title{font-family:var(--font-display), sans-serif;letter-spacing:-.03em;font-size:1.6rem;font-weight:700;line-height:1.05}.carousel-summary{font-size:.95rem;line-height:1.5}.carousel-result{border-left:3px solid var(--red);margin-top:auto;padding-left:.6rem;font-weight:600}.carousel-card:hover .carousel-result,.carousel-card:focus-visible .carousel-result{border-left-color:var(--on-red)}.carousel-arrow{position:absolute;bottom:1.25rem;right:1.25rem}.carousel-card.is-active{box-shadow:inset 0 4px 0 var(--red)}.carousel-nav{align-items:center}.carousel-count{color:var(--muted);font-variant-numeric:tabular-nums;margin-right:.5rem;font-size:.85rem}.carousel-dots{gap:.4rem;margin-top:.5rem;display:flex}.carousel-dots button{cursor:pointer;background:0 0;border:0;flex:1;max-width:3rem;height:1.25rem;padding:0;position:relative}.carousel-dots button:before{content:"";background:var(--line-soft);height:3px;margin-top:-1.5px;transition:background .2s;position:absolute;inset:50% 0 auto}.carousel-dots button:hover:before,.carousel-dots button.is-active:before{background:var(--muted)}.carousel-progress{background:var(--red);transform-origin:0;height:3px;margin-top:-1.5px;animation:linear forwards carousel-progress;position:absolute;inset:50% 0 auto}@keyframes carousel-progress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.quote,.quote blockquote{margin:0}.quote blockquote:before{content:"“";height:3.25rem;color:var(--red);font-family:var(--font-display), sans-serif;margin-left:-.05em;font-size:6.5rem;font-weight:800;line-height:1;display:block}.quote-lead{font-family:var(--font-display), sans-serif;letter-spacing:-.045em;margin:0 0 1rem;font-size:clamp(2rem,4.5vw,3.6rem);font-weight:700;line-height:1}.quote-text{max-width:42rem;margin:0;font-size:clamp(1.1rem,1.6vw,1.3rem);line-height:1.55}.quote figcaption{border-left:4px solid var(--red);color:var(--muted);flex-direction:column;gap:.15rem;margin-bottom:2rem;padding-left:1rem;font-size:.9rem;display:flex}.quote-name{color:var(--fg);font-family:var(--font-display), sans-serif;letter-spacing:-.03em;font-size:clamp(1.5rem,2.6vw,2rem);font-weight:700;line-height:1.1}.quote-role{color:var(--fg);font-size:1rem;font-weight:500}.contact{background:var(--red);color:var(--on-red);margin-top:7rem;padding:3.5rem 0 4rem;scroll-margin-top:3.5rem}.contact .grid{row-gap:1.5rem}.contact .section-no{color:inherit}.contact-title{letter-spacing:-.06em;font-size:clamp(4rem,15vw,11rem);font-weight:700;line-height:.86}.contact-body{align-self:end}.bubble-wrap{filter:drop-shadow(.4rem .4rem #111110);transform-origin:2rem 100%;max-width:36rem;margin:0 0 2.75rem}.bubble{--tail:1.4rem;padding:1.6rem 1.8rem calc(1.6rem + var(--tail));color:#111110;clip-path:polygon(0 0, 100% 0, 100% calc(100% - var(--tail)), 4rem calc(100% - var(--tail)), 1.75rem 100%, 1.75rem calc(100% - var(--tail)), 0 calc(100% - var(--tail)));background:#fff;margin:0;font-size:1.15rem;line-height:1.5}.bubble b{color:inherit;font-family:var(--font-display), sans-serif;letter-spacing:-.03em;margin-bottom:.5rem;font-size:clamp(1.45rem,2.4vw,1.85rem);font-weight:700;line-height:1.15;display:block}.contact-mail{width:fit-content;max-width:100%;font-family:var(--font-display), sans-serif;letter-spacing:-.03em;overflow-wrap:anywhere;transition:padding .35s var(--ease);border-bottom:2px solid;align-items:center;gap:.6rem;font-size:clamp(1.4rem,3vw,2.2rem);font-weight:650;display:flex}.contact-mail:hover{padding-left:.6rem}.contact-li{align-items:center;gap:.55rem;margin-top:1.25rem;font-size:1.1rem;font-weight:600;display:inline-flex}.contact-mail svg,.contact-li svg{fill:currentColor;flex:none;width:.85em;height:.85em}.contact-li svg{width:1.1em;height:1.1em}.contact-mail .icon-stroke{fill:none;stroke:currentColor;stroke-width:2.2px;stroke-linejoin:miter}.footer{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;padding-top:1.5rem;padding-bottom:2.5rem;font-size:.85rem;display:flex}.footer-deploy{align-items:center;gap:.45rem;display:inline-flex}.footer .homelab-link{border:1px solid var(--fg);color:var(--fg);background:0 0;align-items:center;gap:.4rem;padding:.2rem .55rem;font-weight:600;transition:background-color .2s,border-color .2s,color .2s;display:inline-flex}.footer .homelab-link:hover,.footer .homelab-link:focus-visible{background:var(--red);border-color:var(--red);color:var(--on-red)}.homelab-link svg{width:.95rem;height:.95rem}.homelab-link .rack{fill:none;stroke:currentColor;stroke-width:2px}.homelab-link .led{fill:var(--accent)}.homelab-link:hover .led{fill:currentColor}.page-head{row-gap:1.5rem;padding:2.5rem 0 3.5rem}.page-head .hero-meta{grid-column:1/3}.page-lead{margin:0;font-size:1.2rem}.page-head.index-head{align-items:end;row-gap:1rem;padding:1.5rem 0 1.75rem}.index-head .page-title{margin-top:0;font-size:clamp(3rem,9vw,5.5rem)}.index-head .page-lead{color:var(--muted);font-size:1rem}@media (min-width:48rem){.page-head.index-head{padding:2.5rem 0 2rem}.index-head .page-title{grid-area:1/1/3/8}.page-head.index-head .hero-meta,.index-head .page-lead{grid-column:8/13}}.filters{z-index:9;background:var(--bg);border-top:2px solid var(--line);position:sticky;top:3.5rem}.filters-summary{cursor:pointer;justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 0;list-style:none;display:flex}.filters-summary::-webkit-details-marker{display:none}.filters-title{letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:.5rem;font-size:.72rem;font-weight:600;display:inline-flex}.filters-title:after{content:"+";color:var(--accent);font-size:1rem;line-height:1}.filters[open] .filters-title:after{content:"−"}.filters-active{background:var(--red);min-width:1.4rem;color:var(--on-red);text-align:center;font-variant-numeric:tabular-nums;padding:0 .35rem}.filters-body{background:var(--bg);border-top:1px solid var(--line-soft);border-bottom:2px solid var(--line);box-shadow:0 1.5rem 2rem -1.5rem color-mix(in srgb, var(--fg) 25%, transparent);gap:.75rem;padding:.75rem 0 1.25rem;display:grid;position:absolute;top:100%;left:0;right:0}.filter-group{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.filter-label{min-width:5.5rem;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:.72rem;font-weight:600}.filter-chip{border:1px solid var(--line-soft);color:var(--fg);font:inherit;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;padding:.3rem .6rem;font-size:.72rem;font-weight:600;line-height:1.5;transition:background .2s,border-color .2s,color .2s}.filter-chip:hover:not(:disabled){border-color:var(--fg)}.filter-chip:disabled{opacity:.35;cursor:default}.filter-chip[aria-pressed=true]{background:var(--fg);border-color:var(--fg);color:var(--bg)}.filter-count{color:var(--accent);letter-spacing:.08em;font-variant-numeric:tabular-nums;font-size:.72rem;font-weight:700}.filter-empty{border-top:2px solid var(--line);color:var(--muted);margin:0;padding:2rem 0}.filter-reset{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-weight:600;text-decoration:underline}.projects{border-top:2px solid var(--line)}.project{border-bottom:1px solid var(--line-soft);row-gap:.75rem;padding:2rem 0 2.25rem;scroll-margin-top:3.5rem;position:relative}.project:after{content:"";background:var(--accent);transform-origin:0;height:1px;transition:transform .6s var(--ease);position:absolute;bottom:-1px;left:0;right:0;transform:scaleX(0)}.project:hover:after,.project:target:after{transform:scaleX(1)}.project-no{font-family:var(--font-display), sans-serif;color:var(--accent);font-variant-numeric:tabular-nums;font-size:.95rem;font-weight:600}.project h2{letter-spacing:-.045em;transition:padding-left .45s var(--ease);font-size:clamp(1.6rem,3vw,2.6rem)}.project:hover h2{padding-left:.4rem}.project-org{flex-wrap:wrap;align-items:center;gap:.4rem;margin:.9rem 0 0;display:flex}.badge{color:var(--fg);letter-spacing:.08em;text-transform:uppercase;border:1px solid;padding:.15rem .5rem;font-size:.72rem;font-weight:600;line-height:1.5;display:inline-block}.badge[data-cat=Professional]{background:var(--fg);border-color:var(--fg);color:var(--bg)}.badge[data-cat=Personal]{background:var(--red);border-color:var(--red);color:var(--on-red)}.badge[data-cat=Academic]{color:var(--accent)}.project-year{color:var(--accent);letter-spacing:.08em;font-variant-numeric:tabular-nums;margin-left:.3rem;font-size:.72rem;font-weight:700}.detail-tags{margin:0}.project-body{font-size:.92rem}.project-body>p{max-width:38rem;margin:0 0 .9rem}.project-kind{color:var(--muted);font-size:.8rem;font-weight:600}.project-result{font-family:var(--font-display), sans-serif;letter-spacing:-.02em;border-left:3px solid var(--red);padding-left:.75rem;font-size:1.15rem;font-weight:650;display:inline-block}.project-head .project-result{margin:1.1rem 0 0;display:block}@media (max-width:47.99rem){.project-body{display:none}}.project-details{gap:.9rem;margin:.4rem 0 1.25rem;display:grid}.project-details div{border-top:1px solid var(--line-soft);padding-top:.6rem}.project-details dt{font-weight:600}.project-details dd{color:var(--muted);margin:.1rem 0 0;font-size:.95rem}.project-tags{color:var(--muted);flex-wrap:wrap;gap:.35rem 1.1rem;font-size:.8rem;font-weight:500;display:flex}.project-tags li:before{content:"/ ";color:var(--accent)}.projects-end{flex-wrap:wrap;justify-content:space-between;gap:1rem;margin:3rem 0 5rem;display:flex}.project-link:before{content:"";position:absolute;inset:0}.project-open{z-index:1;color:var(--accent);transition:transform .45s var(--ease);margin-top:1rem;font-size:.9rem;font-weight:600;display:inline-block;position:relative}.project:hover .project-open{transform:translate(.4rem)}.project:has(.project-link:focus-visible){outline:2px solid var(--accent);outline-offset:4px}.project-link:focus-visible{outline:none}.back{width:fit-content;color:var(--fg)}.back:hover{color:var(--accent)}.detail-title{font-size:clamp(3rem,11vw,9.5rem);line-height:.9}.detail-meta{border-top:2px solid var(--line);row-gap:1.25rem;margin:0;padding-top:1rem}.detail-meta dt{color:var(--muted);font-size:.85rem;font-weight:600}.detail-meta dd{margin:.2rem 0 0;font-weight:500}.detail-stats{margin-top:4rem}.detail-result{font-family:var(--font-display), sans-serif;letter-spacing:-.04em;border-left:4px solid var(--red);margin:4rem 0 0;padding-left:1rem;font-size:clamp(1.8rem,4vw,3rem);font-weight:700;line-height:1.05}.gallery{margin-top:4rem}.gallery-grid{gap:2rem var(--gutter);display:grid}.demo{border-top:2px solid var(--line);margin-top:4rem;padding-top:1.5rem}.demo iframe{color-scheme:normal;border:0;width:100%;display:block}.gallery figure{margin:0}.gallery img{border-top:2px solid var(--line);width:100%;height:auto;padding-top:.75rem;display:block}.zoom{cursor:zoom-in;background:0 0;border:0;width:100%;padding:0;display:block}.zoom-dialog{cursor:zoom-out;background:0 0;border:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:1rem}.zoom-dialog[open]{place-items:center;display:grid}.zoom-dialog::backdrop{background:#000000d9}.zoom-dialog img{border:0;width:auto;max-width:100%;height:auto;max-height:calc(100dvh - 2rem);padding:0}.zoom-close{background:var(--fg);width:2.5rem;height:2.5rem;color:var(--bg);cursor:pointer;border:0;font-size:1.5rem;line-height:1;position:fixed;top:1rem;right:1rem}.gallery figcaption{margin-top:.6rem;font-size:.9rem;font-weight:500}.gallery-credit{color:var(--muted);margin:1rem 0 0;font-size:.8rem}.tools{flex-wrap:wrap;gap:.5rem;margin-top:1.5rem;display:flex}.tools li{border:1px solid var(--line-soft);transition:border-color .2s, transform .3s var(--ease);align-items:center;gap:.5rem;padding:.4rem .75rem .4rem .6rem;font-size:.88rem;font-weight:600;display:inline-flex}.tools li:hover{border-color:var(--fg);transform:translateY(-2px)}.tools svg{fill:currentColor;width:1rem;height:1rem}.tools img{width:1rem;height:1rem;display:block}.tool-mono{background:var(--red);width:1rem;height:1rem;color:var(--on-red);place-items:center;font-size:.65rem;font-weight:700;line-height:1;display:grid}.diagram{margin:2.5rem 0 0}.diagram-scroll{border-top:2px solid var(--line);padding-top:1rem;overflow-x:auto}.diagram svg{width:100%;min-width:40rem;height:auto;font-family:var(--font-sans), sans-serif;display:block}.diagram figcaption{color:var(--muted);margin-top:.6rem;font-size:.85rem}.dg-box rect{fill:var(--bg);stroke:var(--fg);stroke-width:1.5px}.dg-region rect{fill:none;stroke:var(--fg);stroke-width:1px}.dg-dashed rect{stroke:var(--accent);stroke-dasharray:6 5}.dg-red rect{fill:var(--red);stroke:var(--red)}.dg-red text{fill:var(--on-red)}.dg-t{fill:var(--fg);font-size:15px;font-weight:600}.dg-s{fill:var(--muted);font-size:12px;font-weight:500}.dg-label{fill:var(--fg);letter-spacing:-.01em;font-size:16px;font-weight:700}.dg-cap{fill:var(--muted);letter-spacing:.08em;font-size:10.5px;font-weight:600}.dg-time{fill:var(--accent);font-size:13px;font-weight:700}.dg-flow{fill:none;stroke:var(--accent);stroke-width:1.75px;stroke-dasharray:5 4}.dg-head{fill:var(--accent)}.dg-axis{fill:none;stroke:var(--fg);stroke-width:2px}.dg-tick{stroke:var(--muted);stroke-width:1px}.dg-mark{fill:var(--red)}.detail-text{max-width:40rem;margin:0;font-size:clamp(1.15rem,1.8vw,1.4rem);line-height:1.5}.inline-link{color:var(--fg);border-bottom:1px solid var(--accent)}.inline-link:hover{color:var(--accent)}.detail-points{gap:.6rem;padding:0;display:grid}.detail-points li{padding-left:1.75rem;position:relative}.detail-points li:before{content:"";background:var(--red);width:.5rem;height:.5rem;position:absolute;top:.62em;left:0}.detail-links a{font-family:var(--font-display), sans-serif;letter-spacing:-.02em;border-bottom:2px solid var(--accent);font-size:clamp(1.15rem,1.8vw,1.4rem);font-weight:600;transition:color .2s}.detail-links a:hover{color:var(--accent)}.detail-principles{margin:0}.detail-principles dt{font-size:1.15rem}.pager{border-top:2px solid var(--line);margin-top:6rem;display:grid}.pager-link{isolation:isolate;gap:.3rem;padding:1.5rem 0;display:grid;position:relative}.pager-link+.pager-link{border-top:1px solid var(--line-soft)}.pager-link:before{content:"";z-index:-1;background:var(--red);transform-origin:bottom;transition:transform .45s var(--ease);position:absolute;inset:0;transform:scaleY(0)}.pager-link:hover,.pager-link:focus-visible{color:var(--on-red)}.pager-link:hover:before,.pager-link:focus-visible:before{transform:scaleY(1)}.pager-link>span{transition:transform .45s var(--ease)}.pager-link:hover>span{transform:translate(.75rem)}.pager-next{text-align:right}.pager-next:hover>span{transform:translate(-.75rem)}.pager-dir{font-size:.9rem;font-weight:600}.pager-title{font-family:var(--font-display), sans-serif;letter-spacing:-.04em;font-size:clamp(1.6rem,3.5vw,2.6rem);font-weight:700;line-height:1.05}@media (min-width:48rem){.detail-meta>div{grid-column:span 3}.gallery-grid{grid-template-columns:1fr 1fr}.gallery-grid:has(>:only-child){grid-template-columns:1fr}.pager{grid-template-columns:1fr 1fr}.pager-link{padding:2rem 1rem}.pager-link+.pager-link{border-top:0;border-left:1px solid var(--line-soft)}:root{--gutter:2rem}.grid{grid-template-columns:repeat(12,minmax(0,1fr))}.clock{display:inline-flex}.topnav-links{gap:2rem}.topnav-links .wide{display:list-item}.hero{row-gap:2rem;padding-top:4rem;padding-bottom:4.5rem}.hero .hero-role{grid-column:1/4}.hero .hero-place{grid-column:4/7}.hero .hero-lang{grid-area:1/7/auto/10}.hero .hero-name{grid-column:1/10}.portrait{grid-column:10/13}.tagline{grid-column:1/7}.hero-side{grid-area:4/8/auto/13;align-self:end}.stats>div{grid-column:span 4}.section-head{grid-column:1/4}.section-body{grid-column:4/13}.job{grid-template-columns:11rem 1fr}.teaser{grid-template-columns:3.5rem 1fr 10rem auto;padding:1.4rem 0}.teaser-kind{display:block}.skill-grid{grid-template-columns:repeat(2,1fr)}.contact{padding:5rem 0 5.5rem}.contact .section-no{grid-column:1/4}.contact-title{grid-column:1/8}.contact-body{grid-column:8/13}.page-head{padding:4rem 0 5rem}.page-head .hero-meta{grid-column:1/4}.page-title{grid-column:1/13}.page-lead{grid-column:8/13}.detail-tags{grid-column:1/7;align-self:start;margin-top:.5rem}.project{padding:2.75rem 0 3rem}.project-no{grid-column:1/2;padding-top:.6rem}.project-head{grid-column:2/7}.project-body{grid-column:8/13;padding-top:.6rem}}@keyframes blink{50%{opacity:.2}}@keyframes ticker{to{transform:translate(-50%)}}@keyframes line-up{0%{transform:translateY(105%)}}@keyframes fade-up{0%{opacity:0;transform:translateY(1rem)}}@keyframes square-in{0%{transform:scale(0)rotate(-90deg)}}@keyframes wipe{0%{clip-path:inset(100% 0 0)}}@keyframes dash{to{stroke-dashoffset:-9px}}@keyframes stroke-draw{0%{stroke-dashoffset:1px}}@keyframes bubble-in{0%{opacity:0;transform:scale(.6)rotate(-4deg)}}@keyframes draw{0%{transform:scaleX(0)}}@media (prefers-reduced-motion:no-preference){.homelab-link .led{animation:1.6s step-end infinite blink}.line>span{animation:line-up 1s var(--ease) both}.line+.line>span{animation-delay:.1s}.square{animation:square-in .7s var(--ease) .75s both}.hero-meta{animation:fade-up .8s var(--ease) .1s both}.hero-place{animation-delay:.2s}.hero-lang{animation-delay:.3s}.portrait{animation:wipe 1.1s var(--ease) .3s both}.tagline,.page-lead{animation:fade-up .9s var(--ease) .45s both}.hero-side{animation:fade-up .9s var(--ease) .6s both}.ticker{animation:fade-up .9s var(--ease) .8s both}.dg-flow{animation:1.2s linear infinite dash}@supports (animation-timeline:view()){.diagram .dg-box rect,.diagram .dg-region rect,.diagram .dg-axis{stroke-dasharray:1;animation:linear both stroke-draw;animation-timeline:view();animation-range:entry 10% cover 45%}.diagram .dg-dashed rect{stroke-dasharray:6 5;animation:none}.diagram .dg-mark{transform-box:fill-box;transform-origin:50%;animation:linear both square-in;animation-timeline:view();animation-range:entry 20% cover 50%}.reveal{animation:linear both fade-up;animation-timeline:view();animation-range:entry entry 70%}.section:before{animation:linear both draw;animation-timeline:view();animation-range:entry cover 35%}.section-head{animation:linear both fade-up;animation-timeline:view();animation-range:entry entry 80%}.bubble-wrap{animation:linear both bubble-in;animation-timeline:view();animation-range:entry}.contact-title{animation:linear both fade-up;animation-timeline:view();animation-range:entry}}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.ticker-track,.colon{animation:none}}.detail-meta dd,.detail-tags{position:relative}.badge .term{color:inherit}.badge .term-tip{letter-spacing:normal;text-transform:none}.detail-meta .term-tip,.detail-tags .term-tip{min-width:min(19rem,100vw - 2rem);max-width:min(30rem,100vw - 2rem);transition:opacity .18s .3s,transform .18s .3s,visibility 0s .48s}
