@font-face{font-family:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/32687112bd2dd8db-s.1gepa_7fcx9fm.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:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/28868e710e86be81-s.p.2eksvhm1z0jwa.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:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.2cyn07wtgehh0.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:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(../media/32687112bd2dd8db-s.1gepa_7fcx9fm.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:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(../media/28868e710e86be81-s.p.2eksvhm1z0jwa.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:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.2cyn07wtgehh0.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:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../media/32687112bd2dd8db-s.1gepa_7fcx9fm.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:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../media/28868e710e86be81-s.p.2eksvhm1z0jwa.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:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.2cyn07wtgehh0.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:Space Grotesk Fallback;src:local(Arial);ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.0%;size-adjust:109.69%}.space_grotesk_7deacc25-module__Wr4bpG__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_7deacc25-module__Wr4bpG__variable{--font-display:"Space Grotesk", "Space Grotesk 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.p.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.p.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.p.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_48cd30b5-module__ekFZDG__className{font-family:IBM Plex Sans,IBM Plex Sans Fallback;font-style:normal}.ibm_plex_sans_48cd30b5-module__ekFZDG__variable{--font-body:"IBM Plex Sans", "IBM Plex Sans Fallback"}
:root{--bg:#f6f9fb;--bg-alt:#eff2f6;--surface:#fff;--fg:#13191f;--muted:#525960;--border:#d7dbe0;--accent:#2b7ec9;--accent-soft:#d9eafc;--accent-soft-2:#e8f3ff;--accent-ink:#004983;--dark:#0c141f;--dark-raised:#15202d;--darker:#060c13;--on-dark:#f4f5f7;--on-dark-muted:#aaaeb4;--on-dark-subtle:#8a9097;--on-dark-accent:#6da3da;--placeholder:#7c8186;--maxw:1160px;--header-h:73px}@supports (color:lab(0% 0 0)){:root{--bg:lab(97.677% -.443965 -1.43216);--bg-alt:lab(95.3554% -.662148 -2.14612);--surface:lab(100% 0 0);--fg:lab(8.33319% -1.36373 -5.23238);--muted:lab(37.3423% -1.54042 -5.30548);--border:lab(87.2335% -.876665 -2.85795);--accent:lab(50.6175% -4.648 -47.097);--accent-soft:lab(91.8449% -3.08394 -10.6124);--accent-soft-2:lab(95.3401% -2.12318 -7.10804);--accent-ink:lab(29.6964% -1.36633 -40.1139);--dark:lab(6.10986% -.873566 -8.51069);--dark-raised:lab(11.7208% -1.33529 -10.5855);--darker:lab(3.00549% -.429377 -4.60005);--on-dark:lab(96.5143% -.248939 -1.10372);--on-dark-muted:lab(70.9792% -.799447 -3.66181);--on-dark-subtle:lab(59.3741% -.941008 -4.38434);--on-dark-accent:lab(64.9032% -6.78036 -34.218);--placeholder:lab(53.5787% -.789523 -3.65645)}}*{box-sizing:border-box}html{scroll-padding-top:var(--header-h)}body{background:var(--bg);color:var(--fg);font-family:var(--font-body), sans-serif;margin:0;overflow-x:hidden}a{color:inherit;text-decoration:none}button{cursor:pointer;background:0 0;border:none;font-family:inherit}input,textarea{outline:none;font-family:inherit}input::placeholder,textarea::placeholder{color:var(--placeholder)}[hidden]{display:none!important}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.container{max-width:var(--maxw);margin:0 auto}.display{font-family:var(--font-display), sans-serif}.btn{border-radius:8px;font-weight:600;transition:filter .15s,background-color .15s;display:inline-block}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{filter:brightness(1.08)}.btn-ghost-dark{color:var(--on-dark);border:1px solid #f4f5f74d;border:1px solid lab(96.5143% -.248939 -1.10372/.3)}.btn-ghost-dark:hover{background:#f4f5f70f;background:lab(96.5143% -.248939 -1.10372/.06)}.post-meta{color:var(--accent);align-items:center;gap:8px;font-size:12px;font-weight:600;display:flex}.post-meta time{color:var(--muted);font-weight:500}.site-header{z-index:50;background:color-mix(in oklch, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--border);position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;gap:16px;padding:18px 32px;display:flex}.brand{align-items:center;display:flex}.logo-lockup{align-items:center;gap:12px;display:inline-flex}.logo-lockup svg{flex:none;display:block}.logo-text{flex-direction:column;gap:2px;display:flex}.logo-name{font-family:var(--font-display), sans-serif;letter-spacing:-.01em;color:var(--fg);font-size:18px;font-weight:700;line-height:1.1}.logo-tagline{font-family:var(--font-display), sans-serif;letter-spacing:.32em;color:var(--muted);font-size:10px;font-weight:500;line-height:1.2}.logo-lockup.inverse .logo-name{color:#fff}.logo-lockup.inverse .logo-tagline{color:var(--on-dark-muted)}.brand-mark{background:var(--accent);width:36px;height:36px;color:var(--on-dark);font-family:var(--font-display), sans-serif;border-radius:10px;justify-content:center;align-items:center;font-size:15px;font-weight:700;display:flex}.desktop-nav{align-items:center;gap:32px;display:flex}.desktop-nav a{color:var(--muted);font-size:15px;font-weight:500;transition:color .15s}.desktop-nav a:hover{color:var(--fg)}.desktop-nav a.active{color:var(--accent);font-weight:600}.header-cta{padding:10px 20px;font-size:14px}.menu-toggle{background:var(--accent-soft);border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:40px;height:40px;display:none}.menu-toggle span{background:var(--fg);border-radius:2px;width:18px;height:2px}.mobile-nav{background:var(--surface);border-bottom:1px solid var(--border);flex-direction:column;gap:16px;padding:20px 32px;display:flex;position:absolute;top:100%;left:0;right:0;box-shadow:0 16px 32px #13191f1a;box-shadow:0 16px 32px lab(8.33319% -1.36373 -5.23238/.1)}.mobile-nav a{font-size:15px;font-weight:500}.mobile-nav .btn{text-align:center;padding:12px;font-weight:600}@media (max-width:859.98px){.desktop-nav,.header-cta{display:none}.menu-toggle{display:flex}}@media (min-width:860px){.mobile-nav{display:none}}.section{padding:96px 32px}.eyebrow{font-family:var(--font-display), sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);font-size:14px;font-weight:600}.section-title{font-family:var(--font-display), sans-serif;margin:0;font-size:clamp(28px,4vw,36px);font-weight:700}.chip{color:var(--accent-ink);background:var(--accent-soft);border-radius:999px;font-weight:500}.hero{background:var(--dark);color:var(--on-dark);padding:clamp(64px,10vw,120px) 32px clamp(72px,9vw,110px)}.hero-inner{flex-direction:column;gap:28px;display:flex}.hero-badge{letter-spacing:.02em;color:var(--on-dark-muted);border:1px solid #f4f5f740;border:1px solid lab(96.5143% -.248939 -1.10372/.25);border-radius:999px;align-self:flex-start;align-items:center;gap:8px;padding:8px 16px;font-size:13px;font-weight:500;display:inline-flex}.hero h1{font-family:var(--font-display), sans-serif;max-width:16ch;margin:0;font-size:clamp(36px,6vw,64px);font-weight:700;line-height:1.08}.hero-lead{color:var(--on-dark-muted);max-width:56ch;margin:0;font-size:clamp(16px,2vw,20px);line-height:1.6}.hero-actions{flex-wrap:wrap;gap:16px;margin-top:8px;display:flex}.hero-actions .btn{padding:14px 28px;font-size:15px}.hero-stack{letter-spacing:.03em;color:var(--on-dark-subtle);border-top:1px solid #f4f5f71f;border-top:1px solid lab(96.5143% -.248939 -1.10372/.12);flex-wrap:wrap;gap:10px 24px;margin:24px 0 0;padding:24px 0 0;font-size:13px;list-style:none;display:flex}.hero-stack li+li:before{content:"·";margin-right:24px}.about-inner{flex-wrap:wrap;align-items:flex-start;gap:64px;display:flex}.avatar{background:var(--accent-soft);border:1px solid var(--border);width:220px;height:220px;font-family:var(--font-display), sans-serif;color:var(--accent);border-radius:20px;flex:none;justify-content:center;align-items:center;font-size:64px;font-weight:700;display:flex}.avatar-photo{position:relative;overflow:hidden}.glasses-lockup{background:var(--dark);color:#fff;border-radius:20px;flex:0 auto;justify-content:center;align-items:center;gap:16px;max-width:100%;padding:36px 24px;display:flex}.glasses-lockup svg{flex:none;display:block}.glasses-lockup-text{flex-direction:column;gap:2px;min-width:0;display:flex}.glasses-lockup-name{font-family:var(--font-display), sans-serif;white-space:nowrap;font-size:24px;font-weight:700;line-height:1.2}@media (max-width:400px){.glasses-lockup{gap:14px;padding:32px 18px}}.glasses-lockup-tagline{font-family:var(--font-display), sans-serif;letter-spacing:.32em;color:var(--on-dark-muted);font-size:11px;font-weight:500}.about-body{flex-direction:column;flex:420px;gap:20px;display:flex}.about-body p{color:var(--muted);max-width:64ch;margin:0;font-size:16px;line-height:1.75}.facts{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin:12px 0 0;display:grid}.facts dt{color:var(--muted);font-size:13px}.facts dd{margin:0;font-size:15px;font-weight:600}.skills{background:var(--bg)}.skills .section-title{margin:12px 0 40px}.skill-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;display:grid}.skill-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:24px}.skill-card h3{font-family:var(--font-display), sans-serif;margin:0 0 16px;font-size:16px;font-weight:600}.chip-list{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.skill-card .chip{padding:6px 12px;font-size:13px;display:inline-block}.projects-section{background:var(--bg-alt);border-top:1px solid var(--border)}.projects-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:40px;display:flex}.projects-head .section-title{margin-top:12px}.projects-head p{color:var(--muted);max-width:38ch;margin:0;font-size:14px}.project-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:24px;display:grid}.project-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;flex-direction:column;transition:box-shadow .2s,transform .2s;display:flex;overflow:hidden}.project-card:hover{transform:translateY(-2px);box-shadow:0 12px 28px #13191f14;box-shadow:0 12px 28px lab(8.33319% -1.36373 -5.23238/.08)}.project-media{background:var(--accent-soft);border-bottom:1px solid var(--border);height:180px;position:relative;overflow:hidden}.project-media img,.avatar-photo img{object-fit:cover}.media-fallback{background:linear-gradient(135deg, var(--accent-soft), var(--accent-soft-2));font-family:var(--font-display), sans-serif;color:var(--accent);letter-spacing:.04em;justify-content:center;align-items:center;font-size:40px;font-weight:700;display:flex;position:absolute;inset:0}.project-body{flex-direction:column;flex:1;gap:12px;padding:24px;display:flex}.project-body h3{font-family:var(--font-display), sans-serif;margin:0;font-size:18px;font-weight:600}.project-body p{color:var(--muted);flex:1;margin:0;font-size:14px;line-height:1.6}.project-body .chip-list{gap:6px}.project-body .chip{padding:4px 10px;font-size:12px;display:inline-block}.project-link{color:var(--accent);align-self:flex-start;align-items:center;gap:6px;margin-top:8px;font-size:14px;font-weight:600;display:inline-flex}.project-link:hover{text-decoration:underline}.projects-more{justify-content:center;margin-top:40px;display:flex}.projects-more .btn{padding:14px 28px;font-size:15px}.empty-state{text-align:center;border:1px dashed var(--border);color:var(--muted);border-radius:16px;padding:48px}.experience{background:var(--bg-alt);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.experience .section-title{margin:12px 0 40px}.timeline{flex-direction:column;gap:16px;margin:0;padding:0;list-style:none;display:flex}.timeline-item{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:32px;display:flex}.timeline-when{text-align:right;flex-direction:column;flex:0 0 170px;align-items:flex-end;gap:4px;padding-right:28px;display:flex}.timeline-year{font-family:var(--font-display), sans-serif;font-size:26px;font-weight:700;line-height:1}.timeline-month{color:var(--muted);font-size:13px}.timeline-end{color:#0465af;color:lab(41.2342% -2.64815 -46.8883);white-space:nowrap;margin-top:10px;font-size:12px;font-weight:600}.timeline-duration{color:var(--muted);font-size:12px}.timeline-raw{font-family:var(--font-display), sans-serif;color:var(--accent);font-size:14px;font-weight:600}.timeline-rail{background:#d4dfeb;background:lab(88.3797% -2.11504 -7.10391);flex:0 0 2px;margin-right:32px;position:relative}.timeline-dot{background:var(--accent);width:14px;height:14px;box-shadow:0 0 0 4px var(--accent-soft);border-radius:50%;position:absolute;top:4px;left:-6px}.timeline-body{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.timeline-body h3{font-family:var(--font-display), sans-serif;margin:0;font-size:18px;font-weight:600}.timeline-company{color:#424850;color:lab(30.3812% -1.51862 -5.29536);font-size:14px}.timeline-body p{color:#474e55;color:lab(32.7016% -1.52661 -5.29902);text-wrap:pretty;margin:8px 0 0;font-size:14px;line-height:1.7}@media (max-width:640px){.timeline-item{padding:24px 20px}.timeline-when{flex-basis:84px;padding-right:16px}.timeline-year{font-size:22px}.timeline-rail{margin-right:18px}}.contact{background:var(--dark);color:var(--on-dark)}.contact-inner{flex-wrap:wrap;gap:56px;display:flex}.contact-info{flex-direction:column;flex:320px;gap:20px;display:flex}.contact-info .eyebrow{color:var(--on-dark-accent)}.contact-info p{color:var(--on-dark-muted);max-width:48ch;margin:0;font-size:15px;line-height:1.7}.contact-links{flex-direction:column;gap:12px;margin-top:12px;font-size:15px;font-style:normal;display:flex}.social{gap:12px;margin-top:8px;display:flex}.social a{border:1px solid #f4f5f740;border:1px solid lab(96.5143% -.248939 -1.10372/.25);border-radius:8px;padding:10px 18px;font-size:14px;font-weight:500}.social a:hover{background:#f4f5f70f;background:lab(96.5143% -.248939 -1.10372/.06)}.contact-form{background:var(--dark-raised);border-radius:16px;flex-direction:column;flex:380px;gap:16px;padding:32px;display:flex}.field{flex-direction:column;gap:6px;display:flex}.field label{color:var(--on-dark-muted);font-size:13px}.field input,.field textarea{background:var(--dark);color:var(--on-dark);border:1px solid #f4f5f726;border:1px solid lab(96.5143% -.248939 -1.10372/.15);border-radius:8px;padding:12px 14px;font-size:14px}.field input:focus,.field textarea:focus{border-color:var(--accent)}.field textarea{resize:vertical}.contact-form .btn{margin-top:4px;padding:14px;font-size:15px}.consent{color:var(--on-dark-muted);cursor:pointer;align-items:flex-start;gap:10px;font-size:13px;line-height:1.5;display:flex}.consent input{width:16px;height:16px;accent-color:var(--accent);flex-shrink:0;margin-top:2px}.consent a{color:var(--on-dark);text-decoration:underline}.form-status{color:#97c2f0;color:lab(76.62% -6.55097 -27.6683);font-size:13px;line-height:1.5}.form-status.error{color:#fb9890;color:lab(73.3287% 37.3462 20.7821)}.form-status a{text-decoration:underline}.contact-form .btn:disabled{opacity:.6;cursor:default}.hp-field{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.site-footer{background:var(--darker);color:var(--on-dark-subtle);padding:28px 32px}.footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;font-size:13px;display:flex}.footer-legal{flex-wrap:wrap;gap:6px 18px;display:flex}.footer-legal a:hover,.footer-inner>a:hover{color:var(--on-dark);text-decoration:underline}.legal-text{max-width:72ch;color:var(--fg);font-size:15px;line-height:1.75}.legal-text h2{font-family:var(--font-display), sans-serif;margin:36px 0 12px;font-size:20px;font-weight:600}.legal-text h2:first-child{margin-top:0}.legal-text p{color:var(--muted);margin:0 0 14px}.legal-text ul{color:var(--muted);margin:0 0 14px;padding-left:20px}.legal-text li{margin-bottom:6px}@media (max-width:400px){.project-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.error-page{background:var(--bg-alt);justify-content:center;align-items:center;min-height:100vh;padding:32px;display:flex}.error-card{text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:16px;flex-direction:column;align-items:center;gap:14px;max-width:440px;padding:40px 32px;display:flex}.error-card h1{font-family:var(--font-display), sans-serif;margin:0;font-size:24px}.error-card p{color:var(--muted);margin:0;line-height:1.6}.error-card .btn{margin-top:6px;padding:12px 24px;font-size:14px}
