.Navbar-module__pSp8Ga__nav{z-index:50;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);position:sticky;top:0}.Navbar-module__pSp8Ga__inner{max-width:var(--max);padding:.9rem var(--gutter);justify-content:space-between;align-items:center;gap:1.5rem;margin-inline:auto;display:flex}.Navbar-module__pSp8Ga__logo{margin-block:-.95rem;padding-block:.95rem;display:block}.Navbar-module__pSp8Ga__logoImage{width:auto;height:26px;filter:var(--logo-filter);display:block}.Navbar-module__pSp8Ga__links{gap:2rem;font-size:.95rem;font-weight:500;display:flex}.Navbar-module__pSp8Ga__links a{color:var(--muted);padding-block:.5rem;transition:color .2s;position:relative}@media (hover:hover) and (pointer:fine){.Navbar-module__pSp8Ga__links a:hover{color:var(--fg)}}.Navbar-module__pSp8Ga__links a:after{content:"";background:var(--accent);transform-origin:0;width:100%;height:2px;transition:transform .2s var(--ease-out);position:absolute;bottom:0;left:0;transform:scaleX(0)}.Navbar-module__pSp8Ga__links a[data-active=true]:after{transform:scaleX(1)}@media (hover:hover) and (pointer:fine){.Navbar-module__pSp8Ga__links a:hover:after{transform:scaleX(1)}}.Navbar-module__pSp8Ga__links a[data-active=true]{color:var(--fg)}.Navbar-module__pSp8Ga__tools{align-items:center;gap:1.5rem;display:flex}.Navbar-module__pSp8Ga__lang{font-family:var(--font-label);letter-spacing:.06em;color:var(--muted);margin:-.8rem -.5rem;padding:.8rem .5rem;font-size:.8rem}.Navbar-module__pSp8Ga__lang b{color:var(--fg);font-weight:500}@media (hover:hover) and (pointer:fine){.Navbar-module__pSp8Ga__lang:hover{color:var(--fg)}}.Navbar-module__pSp8Ga__lang,.Navbar-module__pSp8Ga__theme,.Navbar-module__pSp8Ga__burger{transition:transform .16s var(--ease-out), color .2s var(--ease-out)}.Navbar-module__pSp8Ga__lang:active,.Navbar-module__pSp8Ga__theme:active,.Navbar-module__pSp8Ga__burger:active{transform:scale(.95)}.Navbar-module__pSp8Ga__theme{place-items:center;width:2.75rem;height:2.75rem;margin:-.8rem;display:grid}.Navbar-module__pSp8Ga__theme span{border:1.5px solid var(--fg);background:linear-gradient(90deg, var(--fg) 50%, transparent 50%);border-radius:50%;width:1.15rem;height:1.15rem;display:block}.Navbar-module__pSp8Ga__burger{width:2.75rem;height:2.75rem;margin:-.575rem -.575rem -.575rem -.8rem;display:none;position:relative}.Navbar-module__pSp8Ga__burger i{background:var(--fg);height:1.5px;transition:transform .2s var(--ease-in-out);position:absolute;left:.8rem;right:.8rem}.Navbar-module__pSp8Ga__burger i:first-child{top:calc(50% - .25rem)}.Navbar-module__pSp8Ga__burger i:last-child{top:calc(50% + .2rem)}.Navbar-module__pSp8Ga__burger[aria-expanded=true] i:first-child{transform:translateY(.225rem)rotate(45deg)}.Navbar-module__pSp8Ga__burger[aria-expanded=true] i:last-child{transform:translateY(-.225rem)rotate(-45deg)}@media (max-width:768px){.Navbar-module__pSp8Ga__burger{display:block}.Navbar-module__pSp8Ga__links{background:var(--bg);border-bottom:1px solid var(--line);padding:.5rem var(--gutter) 1rem;letter-spacing:-.02em;flex-direction:column;gap:0;font-size:1.25rem;font-weight:600;display:none;position:absolute;top:100%;left:0;right:0}.Navbar-module__pSp8Ga__links.Navbar-module__pSp8Ga__open{display:flex}.Navbar-module__pSp8Ga__links a{color:var(--fg);padding-block:.75rem}.Navbar-module__pSp8Ga__links a:after{display:none}}
.Footer-module__nhiC3q__footer{border-top:1px solid var(--line);padding-block:3rem 2.5rem}.Footer-module__nhiC3q__container{max-width:var(--max);padding-inline:var(--gutter);flex-direction:column;gap:2rem;margin-inline:auto;display:flex}.Footer-module__nhiC3q__content{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:2rem;display:flex}.Footer-module__nhiC3q__info h3{letter-spacing:-.04em;font-size:clamp(1.5rem,3vw,2.25rem);font-weight:800}.Footer-module__nhiC3q__info p{color:var(--muted);font-weight:400}.Footer-module__nhiC3q__social{gap:.6rem;display:flex}.Footer-module__nhiC3q__social a{border:1px solid var(--line);width:2.75rem;height:2.75rem;color:var(--fg);transition:background .2s var(--ease-out), color .2s var(--ease-out), border-color .2s var(--ease-out), transform .16s var(--ease-out);border-radius:50%;place-items:center;display:grid}@media (hover:hover) and (pointer:fine){.Footer-module__nhiC3q__social a:hover{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}}.Footer-module__nhiC3q__social a:active{transform:scale(.95)}.Footer-module__nhiC3q__social a svg{width:1.05rem;height:1.05rem}.Footer-module__nhiC3q__divider{display:none}.Footer-module__nhiC3q__bottom{font-family:var(--font-label);letter-spacing:.05em;color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:1rem;font-size:.75rem;display:flex}.Footer-module__nhiC3q__bottom p,.Footer-module__nhiC3q__credit{color:var(--muted)}
.Hero-module__gNeX-G__hero{padding-block:clamp(4rem,12vw,9rem) clamp(3rem,8vw,6rem)}.Hero-module__gNeX-G__inner{flex-direction:column;gap:1.75rem;display:flex}.Hero-module__gNeX-G__title{overflow-wrap:anywhere;letter-spacing:-.065em;font-variation-settings:"opsz" 40;font-size:clamp(3.5rem,15vw,12rem);font-weight:800;line-height:.88}.Hero-module__gNeX-G__title span{font-weight:300}.Hero-module__gNeX-G__title .Hero-module__gNeX-G__hl{background:var(--accent);color:var(--accent-ink);border-radius:.04em;margin-left:-.04em;padding:0 .08em;font-weight:800}.Hero-module__gNeX-G__row{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr);align-items:start;gap:1rem 3rem;margin-top:1rem;padding-top:1.5rem;display:grid}.Hero-module__gNeX-G__slogan{letter-spacing:-.03em;text-wrap:balance;max-width:22ch;font-size:clamp(1.4rem,3vw,2.25rem);font-weight:600;line-height:1.15}.Hero-module__gNeX-G__spark{background:linear-gradient(var(--accent), var(--accent)) no-repeat 0 100% / 100% .42em;color:inherit;padding:0 .05em;font-weight:800}.Hero-module__gNeX-G__cta{width:fit-content;min-height:2.75rem;font-family:var(--font-label);letter-spacing:.06em;text-transform:uppercase;border-bottom:2px solid var(--accent);transition:background .2s var(--ease-out), color .2s var(--ease-out), transform .16s var(--ease-out);align-items:center;gap:.6rem;font-size:.85rem;display:inline-flex}@media (hover:hover) and (pointer:fine){.Hero-module__gNeX-G__cta:hover{background:var(--accent);color:var(--accent-ink)}}.Hero-module__gNeX-G__cta:active{transform:scale(.97)}@media (max-width:720px){.Hero-module__gNeX-G__row{grid-template-columns:minmax(0,1fr)}}.Hero-module__gNeX-G__actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 2rem;display:flex}.Hero-module__gNeX-G__status{letter-spacing:-.01em;align-items:center;gap:.6rem;font-weight:500;display:inline-flex}.Hero-module__gNeX-G__dot{background:var(--accent);border:1.5px solid var(--fg);border-radius:50%;flex:none;width:.6rem;height:.6rem}@media (prefers-reduced-motion:no-preference){.Hero-module__gNeX-G__title .Hero-module__gNeX-G__hl{animation:Hero-module__gNeX-G__wipe .9s var(--ease-out) .15s both}.Hero-module__gNeX-G__spark{animation:Hero-module__gNeX-G__mark .7s var(--ease-out) .9s both}.Hero-module__gNeX-G__dot{animation:Hero-module__gNeX-G__pulse .9s var(--ease-out) 1.5s 2 both}}@keyframes Hero-module__gNeX-G__wipe{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes Hero-module__gNeX-G__mark{0%{background-size:0% .42em}to{background-size:100% .42em}}@keyframes Hero-module__gNeX-G__pulse{0%{box-shadow:0 0 0 0 var(--accent)}to{box-shadow:0 0 0 .7rem #0000}}
.About-module__Balj8a__about{border-top:1px solid var(--line);padding-block:clamp(4rem,9vw,8rem)}.About-module__Balj8a__inner{grid-template-columns:minmax(0,1fr);gap:2.5rem;display:grid}.About-module__Balj8a__bio{letter-spacing:-.03em;text-wrap:pretty;max-width:30ch;font-size:clamp(1.5rem,3.4vw,2.75rem);font-weight:300;line-height:1.25}.About-module__Balj8a__skills{flex-direction:column;gap:1rem;display:flex}.About-module__Balj8a__skills ul{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:0 2rem;max-width:900px;list-style:none;display:grid}.About-module__Balj8a__skills li{border-top:1px solid var(--line);letter-spacing:-.01em;padding-block:.8rem;font-weight:500}.About-module__Balj8a__bio strong{letter-spacing:-.035em;font-weight:800}.About-module__Balj8a__role{letter-spacing:-.02em;margin-bottom:-1.25rem;font-size:clamp(1.15rem,2.2vw,1.6rem);font-weight:600}
.Skills-module__lhWK4a__skills{border-top:1px solid var(--line);padding-block:clamp(2.5rem,6vw,5rem)}.Skills-module__lhWK4a__inner{flex-direction:column;gap:2rem;display:flex}.Skills-module__lhWK4a__grid{flex-wrap:wrap;justify-content:center;gap:2rem 2.75rem;list-style:none;display:flex}.Skills-module__lhWK4a__item{text-align:center;flex-direction:column;align-items:center;gap:.6rem;width:5.5rem;display:flex}.Skills-module__lhWK4a__item img{filter:grayscale();opacity:.55;width:36px;height:36px;transition:filter .2s,opacity .2s}@media (hover:hover) and (pointer:fine){.Skills-module__lhWK4a__item:hover img{filter:none;opacity:1}}.Skills-module__lhWK4a__item span{font-family:var(--font-label);letter-spacing:.04em;color:var(--muted);font-size:.72rem}[data-theme=dark] .Skills-module__lhWK4a__item img{filter:grayscale()brightness(1.6)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .Skills-module__lhWK4a__item img{filter:grayscale()brightness(1.6)}}@media (hover:hover) and (pointer:fine){[data-theme=dark] .Skills-module__lhWK4a__item:hover img{filter:none}}@media (hover:hover) and (pointer:fine) and (prefers-color-scheme:dark){:root:not([data-theme=light]) .Skills-module__lhWK4a__item:hover img{filter:none}}
@font-face{font-family:DM Sans;font-style:normal;font-weight:500;font-display:swap;src:url(../media/c3cb240f9c892514-s.270md_-rr62el.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5c285b27cdda1fe8-s.p.0lsanbtneewqp.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:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(../media/c3cb240f9c892514-s.270md_-rr62el.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(../media/5c285b27cdda1fe8-s.p.0lsanbtneewqp.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:DM Sans;font-style:normal;font-weight:700;font-display:swap;src:url(../media/c3cb240f9c892514-s.270md_-rr62el.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:700;font-display:swap;src:url(../media/5c285b27cdda1fe8-s.p.0lsanbtneewqp.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:DM Sans Fallback;src:local(Arial);ascent-override:94.9%;descent-override:29.66%;line-gap-override:0.0%;size-adjust:104.53%}.dm_sans_8aac3fb2-module__T3APxq__className{font-family:DM Sans,DM Sans Fallback;font-style:normal}
.Portfolio-module__zKrJKa__portfolio{border-top:1px solid var(--line);padding-block:clamp(4rem,9vw,8rem)}.Portfolio-module__zKrJKa__inner{flex-direction:column;gap:clamp(2.5rem,6vw,5rem);display:flex}.Portfolio-module__zKrJKa__group{flex-direction:column;gap:clamp(1.5rem,3vw,2.5rem);display:flex}.Portfolio-module__zKrJKa__groupHead{border-bottom:2px solid var(--fg);justify-content:space-between;align-items:baseline;padding-bottom:.75rem;display:flex}.Portfolio-module__zKrJKa__groupTitle{letter-spacing:-.04em;font-size:clamp(1.4rem,3vw,2.25rem);font-weight:300}.Portfolio-module__zKrJKa__grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(2rem,4vw,3rem) clamp(1rem,2vw,1.75rem);display:grid}.Portfolio-module__zKrJKa__card{flex-direction:column;gap:.9rem;display:flex}.Portfolio-module__zKrJKa__thumb{aspect-ratio:4/3;background:var(--surface);overflow:hidden}.Portfolio-module__zKrJKa__thumb img{object-fit:cover;object-position:top;width:100%;height:100%;transition:transform .25s var(--ease-out);display:block}@media (hover:hover) and (pointer:fine){.Portfolio-module__zKrJKa__card:hover .Portfolio-module__zKrJKa__thumb img{transform:scale(1.035)}}.Portfolio-module__zKrJKa__meta{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.Portfolio-module__zKrJKa__meta h4{letter-spacing:-.03em;background:linear-gradient(var(--accent), var(--accent)) no-repeat 0 100% / 0 .14em;transition:background-size .2s var(--ease-out);overflow-wrap:anywhere;min-width:0;padding-bottom:.1em;font-size:clamp(1.1rem,1.6vw,1.35rem);font-weight:700}@media (hover:hover) and (pointer:fine){.Portfolio-module__zKrJKa__card:hover .Portfolio-module__zKrJKa__meta h4{background-size:100% .14em}}.Portfolio-module__zKrJKa__meta .Portfolio-module__zKrJKa__label{white-space:nowrap}.Portfolio-module__zKrJKa__desc{color:var(--muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;max-width:52ch;font-size:.93rem;font-weight:400;line-height:1.55;display:-webkit-box;overflow:hidden}@media (max-width:1000px){.Portfolio-module__zKrJKa__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.Portfolio-module__zKrJKa__grid{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){.Portfolio-module__zKrJKa__card:hover .Portfolio-module__zKrJKa__thumb img{transform:none}}
.CaseStudy-module__iTN7Za__hero{background:var(--surface);margin-bottom:clamp(2rem,5vw,4rem);overflow:hidden}.CaseStudy-module__iTN7Za__hero img{width:100%;height:auto;display:block}.CaseStudy-module__iTN7Za__section{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr);gap:1.25rem;padding-block:clamp(2.25rem,5vw,3.75rem);display:grid}.CaseStudy-module__iTN7Za__h2{letter-spacing:-.04em;max-width:22ch;font-size:clamp(1.6rem,3.6vw,2.5rem);font-weight:800;line-height:1.05}.CaseStudy-module__iTN7Za__subtitle{color:var(--muted);max-width:50ch;margin-top:-.5rem;font-size:1.1rem;font-weight:400}.CaseStudy-module__iTN7Za__h3{letter-spacing:-.02em;margin-top:1rem;font-size:1.15rem;font-weight:700}.CaseStudy-module__iTN7Za__p{color:var(--fg);max-width:52ch;font-size:1.1rem;font-weight:400;line-height:1.7}.CaseStudy-module__iTN7Za__list{color:var(--fg);flex-direction:column;gap:.5rem;max-width:52ch;padding-left:1.1rem;font-size:1.05rem;font-weight:400;line-height:1.65;display:flex}.CaseStudy-module__iTN7Za__list li::marker{color:var(--accent-text)}.CaseStudy-module__iTN7Za__note{background:var(--accent);color:var(--accent-ink);max-width:52ch;padding:1.1rem 1.4rem;font-weight:600}.CaseStudy-module__iTN7Za__cards{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:0;display:grid}.CaseStudy-module__iTN7Za__card{border-right:1px solid var(--line);border-bottom:1px solid var(--line);flex-direction:column;gap:.6rem;padding:1.4rem;display:flex}.CaseStudy-module__iTN7Za__card h4{letter-spacing:-.02em;font-size:1.05rem;font-weight:700;line-height:1.2}.CaseStudy-module__iTN7Za__card p{color:var(--muted);font-size:.97rem;font-weight:400;line-height:1.6}.CaseStudy-module__iTN7Za__card .CaseStudy-module__iTN7Za__list{color:var(--muted);gap:.4rem;padding-left:1rem;font-size:.97rem}.CaseStudy-module__iTN7Za__swatches{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem 2rem;display:grid}.CaseStudy-module__iTN7Za__swatch{border-top:1px solid var(--line);align-items:flex-start;gap:1rem;padding-top:1rem;display:flex}.CaseStudy-module__iTN7Za__chip{border:1px solid var(--line);border-radius:50%;flex:none;width:3rem;height:3rem}.CaseStudy-module__iTN7Za__swatch strong{font-weight:600;display:block}.CaseStudy-module__iTN7Za__swatch code{font-family:var(--font-label);color:var(--accent-text);margin:.1rem 0 .35rem;font-size:.82rem;display:block}.CaseStudy-module__iTN7Za__swatch p{color:var(--muted);font-size:.93rem;font-weight:400;line-height:1.5}.CaseStudy-module__iTN7Za__typeBox{color:#111;background:#fff;max-width:640px;padding:1.5rem}.CaseStudy-module__iTN7Za__typeHead{align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.CaseStudy-module__iTN7Za__ag{border-radius:1rem;place-items:center;width:4rem;height:4rem;font-size:2rem;font-weight:600;display:grid;box-shadow:0 4px 16px #0000001f}.CaseStudy-module__iTN7Za__typeHead p{color:#666;font-size:.9rem}.CaseStudy-module__iTN7Za__typeTable{border-collapse:collapse;width:100%}.CaseStudy-module__iTN7Za__typeTable th,.CaseStudy-module__iTN7Za__typeTable td{text-align:left;border-top:1px solid #eee;padding:.45rem .5rem;font-size:1rem}.CaseStudy-module__iTN7Za__typeTable th{width:5.5rem}.CaseStudy-module__iTN7Za__typeTable td:last-child{color:#666;text-align:right}.CaseStudy-module__iTN7Za__buttons{color:#111;background:#f4f4f0;flex-direction:column;gap:1.5rem;padding:1.5rem;display:flex}.CaseStudy-module__iTN7Za__buttonGroup{flex-wrap:wrap;gap:1.5rem;display:flex}.CaseStudy-module__iTN7Za__buttonState{flex-direction:column;align-items:flex-start;gap:.75rem;min-width:150px;display:flex}.CaseStudy-module__iTN7Za__buttonState small{color:#555;line-height:1.5}.CaseStudy-module__iTN7Za__demoBtn{border-radius:.5rem;padding:.7rem 1.6rem;font-size:.9rem;font-weight:700;display:inline-block}.CaseStudy-module__iTN7Za__figure{width:100%;margin:0}.CaseStudy-module__iTN7Za__frame{background:var(--surface);overflow:hidden}.CaseStudy-module__iTN7Za__frame img{width:100%;height:auto;display:block}.CaseStudy-module__iTN7Za__caption{color:var(--muted);font-family:var(--font-label);letter-spacing:.03em;margin-top:.6rem;font-size:.78rem}.CaseStudy-module__iTN7Za__stats{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;display:grid}.CaseStudy-module__iTN7Za__stat{border-top:2px solid var(--fg);flex-direction:column;gap:.35rem;padding-top:.9rem;display:flex}.CaseStudy-module__iTN7Za__stat strong{letter-spacing:-.06em;font-size:clamp(2.75rem,7vw,5rem);font-weight:800;line-height:.9}.CaseStudy-module__iTN7Za__stat span{color:var(--muted);font-family:var(--font-label);letter-spacing:.06em;text-transform:uppercase;font-size:.78rem}.CaseStudy-module__iTN7Za__rules{flex-direction:column;gap:1.5rem;display:flex}.CaseStudy-module__iTN7Za__rule{flex-direction:column;gap:.5rem;display:flex}.CaseStudy-module__iTN7Za__ruleQ{border-bottom:1px solid var(--line);align-items:flex-start;gap:.75rem;padding:.75rem 0;font-weight:600;line-height:1.45;display:flex}.CaseStudy-module__iTN7Za__ruleQ>span:first-child{border-radius:50%;flex:none;place-items:center;width:1.4rem;height:1.4rem;margin-top:.1rem;font-size:.8rem;display:grid}.CaseStudy-module__iTN7Za__pass>span:first-child{background:var(--accent);color:var(--accent-ink)}.CaseStudy-module__iTN7Za__fail>span:first-child{background:var(--fg);color:var(--bg)}.CaseStudy-module__iTN7Za__tableWrap{overflow-x:auto}.CaseStudy-module__iTN7Za__table{border-collapse:collapse;width:100%;font-size:.97rem}.CaseStudy-module__iTN7Za__table caption{text-align:left;color:var(--muted);font-family:var(--font-label);letter-spacing:.04em;padding-bottom:.6rem;font-size:.78rem}.CaseStudy-module__iTN7Za__table th{text-align:left;font-family:var(--font-label);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--fg);padding:.6rem .75rem;font-size:.75rem;font-weight:500}.CaseStudy-module__iTN7Za__table td{border-bottom:1px solid var(--line);vertical-align:top;padding:.7rem .75rem;font-weight:400}.CaseStudy-module__iTN7Za__t1{background:#ff9f4338;font-weight:600!important}.CaseStudy-module__iTN7Za__t2{background:#ffd93d38;font-weight:600!important}.CaseStudy-module__iTN7Za__t3{background:color-mix(in srgb, var(--accent) 45%, transparent);font-weight:600!important}.CaseStudy-module__iTN7Za__survey{flex-direction:column;display:flex}.CaseStudy-module__iTN7Za__group{border-top:1px solid var(--line)}.CaseStudy-module__iTN7Za__group:last-child{border-bottom:1px solid var(--line)}.CaseStudy-module__iTN7Za__group summary{cursor:pointer;letter-spacing:-.01em;justify-content:space-between;gap:1rem;padding:1.1rem 0;font-weight:600;list-style:none;display:flex}.CaseStudy-module__iTN7Za__group summary:after{content:"+";font-family:var(--font-label);color:var(--muted)}.CaseStudy-module__iTN7Za__group[open] summary:after{content:"–"}.CaseStudy-module__iTN7Za__quotes{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:2rem 2.5rem;padding:.5rem 0 2rem;display:grid}.CaseStudy-module__iTN7Za__quote{border-left:2px solid var(--accent);flex-direction:column;gap:.6rem;margin:0;padding-left:1rem;display:flex}.CaseStudy-module__iTN7Za__quote blockquote{font-style:italic;font-weight:400;line-height:1.55}.CaseStudy-module__iTN7Za__quote figcaption{color:var(--muted);font-size:.92rem;font-weight:400;line-height:1.55}.CaseStudy-module__iTN7Za__pull{max-width:28ch;padding:.5rem 0}.CaseStudy-module__iTN7Za__pull p{letter-spacing:-.03em;font-size:clamp(1.5rem,3.4vw,2.5rem);font-weight:300;line-height:1.25}.CaseStudy-module__iTN7Za__pull cite{font-family:var(--font-label);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-top:1rem;font-size:.8rem;font-style:normal;display:block}.CaseStudy-module__iTN7Za__gallery{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));align-items:start;gap:2rem 1.5rem;display:grid}.CaseStudy-module__iTN7Za__post{flex-direction:column;gap:.8rem;margin:0;display:flex}.CaseStudy-module__iTN7Za__post img{background:var(--surface);width:100%;height:auto;display:block}.CaseStudy-module__iTN7Za__post figcaption{color:var(--muted);flex-direction:column;gap:.4rem;font-size:.93rem;font-weight:400;line-height:1.55;display:flex}.CaseStudy-module__iTN7Za__post time{font-family:var(--font-label);letter-spacing:.05em;color:var(--fg);font-size:.75rem;display:block}.CaseStudy-module__iTN7Za__post time:first-letter{text-transform:uppercase}.CaseStudy-module__iTN7Za__post a{width:fit-content;font-family:var(--font-label);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:.3em;margin-block:-.5rem -.9rem;padding-block:.9rem;font-size:.72rem;line-height:1;text-decoration-thickness:2px;transition:color .2s}@media (hover:hover) and (pointer:fine){.CaseStudy-module__iTN7Za__post a:hover{color:var(--fg)}}.CaseStudy-module__iTN7Za__post video{background:var(--surface);width:100%;height:auto;display:block}.CaseStudy-module__iTN7Za__source{margin-top:.5rem}.CaseStudy-module__iTN7Za__source a{font-family:var(--font-label);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:.3em;margin-block:-.9rem;padding-block:.9rem;font-size:.72rem;line-height:1;text-decoration-thickness:2px;transition:color .2s;display:inline-block}@media (hover:hover) and (pointer:fine){.CaseStudy-module__iTN7Za__source a:hover{color:var(--fg)}}.CaseStudy-module__iTN7Za__glance{border-top:2px solid var(--fg);grid-template-columns:minmax(0,1fr);max-width:820px;margin-bottom:1.5rem;display:grid}.CaseStudy-module__iTN7Za__glance>div{border-bottom:1px solid var(--line);grid-template-columns:8rem minmax(0,1fr);gap:1rem;padding-block:.9rem;display:grid}.CaseStudy-module__iTN7Za__glance dt{font-family:var(--font-label);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding-top:.2rem;font-size:.75rem}.CaseStudy-module__iTN7Za__glance dd{max-width:52ch;font-size:1.05rem;line-height:1.55}.CaseStudy-module__iTN7Za__toc{margin-bottom:clamp(1.75rem,4vw,3rem)}.CaseStudy-module__iTN7Za__toc ul{flex-wrap:wrap;gap:0 1.5rem;list-style:none;display:flex}.CaseStudy-module__iTN7Za__toc a{min-height:2.75rem;color:var(--muted);text-underline-offset:.3em;align-items:center;font-weight:500;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;text-decoration-thickness:2px;transition:color .2s,text-decoration-color .2s;display:inline-flex}@media (hover:hover) and (pointer:fine){.CaseStudy-module__iTN7Za__toc a:hover{color:var(--fg);-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}}@media (max-width:480px){.CaseStudy-module__iTN7Za__glance>div{grid-template-columns:minmax(0,1fr);gap:.25rem}}.CaseStudy-module__iTN7Za__section,.CaseStudy-module__iTN7Za__glance,.CaseStudy-module__iTN7Za__toc{overflow-wrap:break-word}.CaseStudy-module__iTN7Za__ruleQ>span:last-child{overflow-wrap:anywhere;min-width:0}.CaseStudy-module__iTN7Za__group summary{overflow-wrap:anywhere}.CaseStudy-module__iTN7Za__layout{display:block}.CaseStudy-module__iTN7Za__body{min-width:0}.CaseStudy-module__iTN7Za__rail{display:none}.CaseStudy-module__iTN7Za__rail ul,.CaseStudy-module__iTN7Za__fabPanel ul{list-style:none}.CaseStudy-module__iTN7Za__rail a,.CaseStudy-module__iTN7Za__fabPanel a{min-height:2.75rem;color:var(--muted);transition:color .2s var(--ease-out);align-items:center;font-size:.95rem;font-weight:500;line-height:1.25;display:flex}.CaseStudy-module__iTN7Za__rail a[data-active],.CaseStudy-module__iTN7Za__fabPanel a[data-active]{color:var(--fg);font-weight:700}.CaseStudy-module__iTN7Za__rail a[data-active]:before,.CaseStudy-module__iTN7Za__fabPanel a[data-active]:before{content:"";background:var(--accent);border:1.5px solid var(--fg);border-radius:50%;flex:none;width:.5rem;height:.5rem;margin-right:.6rem}@media (hover:hover) and (pointer:fine){.CaseStudy-module__iTN7Za__rail a:hover,.CaseStudy-module__iTN7Za__fabPanel a:hover{color:var(--fg)}}@media (min-width:1100px){.CaseStudy-module__iTN7Za__layout{grid-template-columns:13rem minmax(0,1fr);align-items:start;gap:0 clamp(2rem,4vw,4rem);display:grid}.CaseStudy-module__iTN7Za__rail{border-top:1px solid var(--line);padding-top:1.25rem;display:block;position:sticky;top:5rem}.CaseStudy-module__iTN7Za__fab{display:none}}.CaseStudy-module__iTN7Za__fab{z-index:40;opacity:0;pointer-events:none;transition:opacity .2s var(--ease-out), transform .2s var(--ease-out);flex-direction:column;align-items:flex-end;gap:.5rem;display:flex;position:fixed;bottom:1rem;right:1rem;transform:translateY(.5rem)}.CaseStudy-module__iTN7Za__fab[data-show]{opacity:1;pointer-events:auto;transform:none}.CaseStudy-module__iTN7Za__fabBtn{background:var(--accent);min-height:2.75rem;color:var(--accent-ink);font-family:var(--font-label);letter-spacing:.06em;text-transform:uppercase;border:1.5px solid var(--fg);cursor:pointer;transition:transform .16s var(--ease-out);border-radius:999px;padding:0 1.1rem;font-size:.8rem}.CaseStudy-module__iTN7Za__fabBtn:active{transform:scale(.97)}.CaseStudy-module__iTN7Za__fabPanel{background:var(--bg);border:1px solid var(--fg);border-radius:12px;max-width:min(20rem,100vw - 2rem);max-height:60vh;padding:.5rem 1.1rem;overflow-y:auto}@media (min-width:1100px){.CaseStudy-module__iTN7Za__fab{display:none}}
.Resume-module__179FWa__resume{border-top:1px solid var(--line);padding-block:clamp(4rem,9vw,8rem)}.Resume-module__179FWa__inner{flex-direction:column;gap:clamp(2rem,5vw,4rem);display:flex}.Resume-module__179FWa__cols{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(2.5rem,6vw,6rem);display:grid}.Resume-module__179FWa__col{flex-direction:column;gap:1rem;display:flex}.Resume-module__179FWa__list{flex-direction:column;list-style:none;display:flex}.Resume-module__179FWa__list li{border-top:1px solid var(--line);grid-template-columns:10rem minmax(0,1fr);gap:1rem;padding-block:1.25rem;display:grid}.Resume-module__179FWa__list li:last-child{border-bottom:1px solid var(--line)}.Resume-module__179FWa__years{letter-spacing:-.03em;white-space:nowrap;font-size:clamp(1.25rem,2vw,1.6rem);font-weight:300;line-height:1.2}.Resume-module__179FWa__list h3{letter-spacing:-.03em;font-size:clamp(1.1rem,1.8vw,1.4rem);font-weight:700}.Resume-module__179FWa__list p{color:var(--muted);margin-top:.2rem;font-weight:400}@media (max-width:800px){.Resume-module__179FWa__cols{grid-template-columns:minmax(0,1fr)}}@media (max-width:420px){.Resume-module__179FWa__list li{grid-template-columns:minmax(0,1fr);gap:.25rem}}
.project-module__Pp7pyq__page{max-width:var(--max);padding:clamp(2rem, 5vw, 3.5rem) var(--gutter) clamp(4rem, 8vw, 6rem);min-height:70vh;margin-inline:auto}.project-module__Pp7pyq__header{grid-template-columns:minmax(0,1fr);gap:1rem;max-width:1000px;margin-bottom:clamp(2rem,5vw,3.5rem);display:grid}.project-module__Pp7pyq__header h1{letter-spacing:-.04em;text-wrap:balance;overflow-wrap:anywhere;font-size:clamp(2.5rem,8vw,6.5rem);font-weight:800;line-height:.95}.project-module__Pp7pyq__header p{color:var(--muted);max-width:46ch;font-size:clamp(1.05rem,1.7vw,1.3rem);font-weight:400;line-height:1.55}.project-module__Pp7pyq__year{font-family:var(--font-label);letter-spacing:.08em;color:var(--muted);font-size:.8rem}.project-module__Pp7pyq__meta{letter-spacing:0;color:var(--fg)!important;font-size:.95rem!important;font-weight:500!important}.project-module__Pp7pyq__gallery{flex-direction:column;gap:1.5rem;display:flex}.project-module__Pp7pyq__gallery img{width:100%;height:auto;display:block}.project-module__Pp7pyq__empty{color:var(--muted);padding:3rem 0}.project-module__Pp7pyq__collab{color:var(--muted);font-family:var(--font-label);letter-spacing:.04em;text-transform:uppercase;flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:.5rem;font-size:.78rem;display:flex}.project-module__Pp7pyq__collabLink{color:var(--fg);border:1px solid var(--line);transition:background .2s var(--ease-out), border-color .2s var(--ease-out), transform .16s var(--ease-out);border-radius:999px;align-items:center;gap:.5rem;padding:.2rem .8rem .2rem .2rem;display:inline-flex}@media (hover:hover) and (pointer:fine){.project-module__Pp7pyq__collabLink:hover{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}}.project-module__Pp7pyq__collabLink img{object-fit:cover;border-radius:50%;width:1.75rem;height:1.75rem}.project-module__Pp7pyq__collabStatic{cursor:default}.project-module__Pp7pyq__collabStatic:hover{border-color:var(--line);color:var(--fg);background:0 0}.project-module__Pp7pyq__anon{width:1.75rem;height:1.75rem;color:var(--muted);flex:none}.project-module__Pp7pyq__collabLink{overflow-wrap:anywhere;min-width:0;max-width:100%;min-height:2.75rem}.project-module__Pp7pyq__crumbs{margin-bottom:clamp(2rem,5vw,3.5rem)}.project-module__Pp7pyq__crumbs ol{font-family:var(--font-label);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);flex-wrap:wrap;align-items:center;gap:.25rem 0;font-size:.78rem;list-style:none;display:flex}.project-module__Pp7pyq__crumbs li{align-items:center;min-width:0;display:inline-flex}.project-module__Pp7pyq__crumbs li+li:before{content:"/";color:var(--line);padding-inline:.6rem}.project-module__Pp7pyq__crumbs a{min-height:2.75rem;color:var(--muted);align-items:center;transition:color .2s;display:inline-flex}@media (hover:hover) and (pointer:fine){.project-module__Pp7pyq__crumbs a:hover{color:var(--fg)}}.project-module__Pp7pyq__crumbs [aria-current=page]{color:var(--fg);overflow-wrap:anywhere}.project-module__Pp7pyq__end{border-top:1px solid var(--line);margin-top:clamp(3rem,7vw,5rem);padding-top:1.5rem}.project-module__Pp7pyq__back{min-height:2.75rem;font-family:var(--font-label);letter-spacing:.06em;text-transform:uppercase;border-bottom:2px solid var(--accent);transition:background .2s var(--ease-out), color .2s var(--ease-out), transform .16s var(--ease-out);align-items:center;gap:.6rem;font-size:.85rem;display:inline-flex}@media (hover:hover) and (pointer:fine){.project-module__Pp7pyq__back:hover{background:var(--accent);color:var(--accent-ink)}}.project-module__Pp7pyq__back:active{transform:scale(.97)}@media (max-width:480px){.project-module__Pp7pyq__crumbs li:first-child,.project-module__Pp7pyq__crumbs li[aria-current=page]{display:none}.project-module__Pp7pyq__crumbs li+li:before{content:"←";color:var(--muted);padding-inline:0 .5rem}}.project-module__Pp7pyq__collabLink:active{transform:scale(.97)}
.Contact-module__gQiC5G__contact{background:var(--accent);color:var(--accent-ink);padding-block:clamp(4rem,9vw,8rem)}.Contact-module__gQiC5G__contact ::selection{background:var(--accent-ink);color:var(--accent)}.Contact-module__gQiC5G__contact :focus-visible{outline-color:var(--accent-ink)}.Contact-module__gQiC5G__container{max-width:var(--max);padding-inline:var(--gutter);grid-template-columns:repeat(2,minmax(0,1fr));align-items:end;gap:clamp(2rem,6vw,6rem);margin-inline:auto;display:grid}.Contact-module__gQiC5G__info{flex-direction:column;gap:1.25rem;display:flex}.Contact-module__gQiC5G__contact h2{letter-spacing:-.055em;font-size:clamp(2.5rem,7vw,6rem);font-weight:800;line-height:.92}.Contact-module__gQiC5G__subtitle{color:var(--accent-ink);opacity:.7;font-size:clamp(1.05rem,1.6vw,1.3rem);font-weight:400}.Contact-module__gQiC5G__emailLink{letter-spacing:-.035em;border-bottom:2px solid var(--accent-ink);overflow-wrap:anywhere;min-height:2.75rem;transition:background .2s var(--ease-out), color .2s var(--ease-out), transform .16s var(--ease-out);justify-content:space-between;align-items:baseline;gap:1rem;margin-inline:-.75rem;padding:0 .75rem .6rem;font-size:clamp(1.25rem,2.6vw,2.25rem);font-weight:600;display:flex}@media (hover:hover) and (pointer:fine){.Contact-module__gQiC5G__emailLink:hover{background:var(--accent-ink);color:var(--accent);border-bottom-color:var(--accent-ink)}}.Contact-module__gQiC5G__emailLink:active{transform:scale(.98)}.Contact-module__gQiC5G__arrow{transition:transform .2s var(--ease-out);flex:none}@media (hover:hover) and (pointer:fine){.Contact-module__gQiC5G__emailLink:hover .Contact-module__gQiC5G__arrow{transform:translate(4px)}}@media (max-width:768px){.Contact-module__gQiC5G__container{grid-template-columns:minmax(0,1fr);align-items:start}}@media (prefers-reduced-motion:reduce){.Contact-module__gQiC5G__emailLink:hover .Contact-module__gQiC5G__arrow,.Contact-module__gQiC5G__emailLink:active{transform:none}}
