:root{--bg:#fff;--fg:#1d1d1f;--muted:#6e6e73;--line:#d2d2d7;--line-soft:#e8e8ed;--surface:#f5f5f7;--accent:#06c;--focus:#0071e3;--font:-apple-system, BlinkMacSystemFont, "SF Pro Text", var(--font-inter), "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-display:-apple-system, BlinkMacSystemFont, "SF Pro Display", var(--font-inter), "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--gutter:clamp(16px, 4vw, 48px);--max:1320px;--header-h:112px;--header-h-compact:64px;--radius:18px;--radius-s:12px;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-io:cubic-bezier(.65, 0, .35, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (max-width:759px){:root{--header-h:64px}}*,:before,:after{box-sizing:border-box}html{-moz-text-size-adjust:100%;text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-padding-top:calc(var(--header-h-compact) + 16px)}html.is-locked,html.is-locked body{overflow:hidden}body{background:var(--bg);min-height:100dvh;color:var(--fg);font-family:var(--font);letter-spacing:-.022em;flex-direction:column;margin:0;font-size:17px;line-height:1.47;display:flex}main{outline:none;flex:1}img,video,svg{max-width:100%;display:block}img,video{height:auto}a{color:inherit;text-decoration:none}button,input,select{font:inherit;color:inherit;letter-spacing:inherit}button{cursor:pointer}h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0}ul,ol{padding:0;list-style:none}:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:6px}::selection{background:var(--fg);color:var(--bg)}.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}.skip-link{z-index:100;background:var(--fg);color:var(--bg);transition:transform .2s var(--ease-out);border-radius:999px;padding:10px 16px;font-size:14px;position:absolute;top:8px;left:8px;transform:translateY(-150%)}.skip-link:focus{transform:none}.container{width:100%;max-width:calc(var(--max) + var(--gutter) * 2);padding-inline:max(var(--gutter), env(safe-area-inset-left)) max(var(--gutter), env(safe-area-inset-right));margin-inline:auto}.narrow{max-width:calc(840px + var(--gutter) * 2)}.page-pad{padding-top:clamp(32px,6vw,72px);padding-bottom:clamp(64px,10vw,120px)}.header{z-index:50;-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px);background:#ffffffb8;border-bottom:1px solid #0000;transition:border-color .3s;position:sticky;top:0}.header[data-scrolled]{border-bottom-color:var(--line-soft)}.header__inner{max-width:920px;height:var(--header-h);padding-inline:var(--gutter);transition:height .45s var(--ease-out);grid-template-columns:1fr auto 1fr;align-items:center;margin-inline:auto;display:grid}.header[data-scrolled] .header__inner{height:var(--header-h-compact)}.nav__group{justify-content:space-around;align-items:center;display:flex}.nav__link{letter-spacing:-.01em;min-height:44px;color:var(--fg);opacity:.88;align-items:center;padding-inline:12px;font-size:14px;font-weight:500;transition:opacity .2s;display:inline-flex;position:relative}.nav__link:after{content:"";transform-origin:100%;height:1.5px;transition:transform .35s var(--ease-out);background:currentColor;position:absolute;bottom:8px;left:12px;right:12px;transform:scaleX(0)}.nav__link:hover,.nav__link[aria-current=page]{opacity:1}.nav__link:hover:after,.nav__link[aria-current=page]:after{transform-origin:0;transform:scaleX(1)}.header__logo{place-items:center;min-width:44px;min-height:44px;margin-inline:clamp(24px,6vw,96px);display:grid}.header__logo img{width:auto;height:50px;transition:height .45s var(--ease-out)}.header__logo-text{font-family:var(--font-display);letter-spacing:-.06em;transition:font-size .45s var(--ease-out);font-size:52px;font-style:italic;font-weight:800;line-height:1}.header[data-scrolled] .header__logo img{height:32px}.header[data-scrolled] .header__logo-text{font-size:34px}.menu-button,.mobile-menu{display:none}@media (max-width:759px){.header__inner{grid-template-columns:44px 1fr 44px}.nav__group{display:none}.header__logo{grid-column:2;justify-self:center;margin:0}.header__logo img,.header[data-scrolled] .header__logo img{height:32px}.header__logo-text,.header[data-scrolled] .header__logo-text{font-size:34px}.menu-button{background:0 0;border:0;grid-column:3;place-content:center;gap:6px;width:44px;height:44px;padding:0;display:grid}.menu-button__bar{background:var(--fg);width:20px;height:1.5px;transition:transform .35s var(--ease-out);border-radius:2px;display:block}.header[data-open] .menu-button__bar:first-child{transform:translateY(3.75px)rotate(45deg)}.header[data-open] .menu-button__bar:last-child{transform:translateY(-3.75px)rotate(-45deg)}.header[data-open]{background:var(--bg);-webkit-backdrop-filter:none;backdrop-filter:none}.mobile-menu:not([hidden]){inset:var(--header-h) 0 0;padding:24px max(var(--gutter), env(safe-area-inset-left)) calc(24px + env(safe-area-inset-bottom));background:var(--bg);animation:.25s both fade-in;display:block;position:fixed;overflow-y:auto}.mobile-menu__list li{border-bottom:1px solid var(--line-soft);animation:rise .5s var(--ease-out) both;animation-delay:calc(var(--i) * 50ms + 60ms)}.mobile-menu .nav__link{min-height:64px;font-family:var(--font-display);letter-spacing:-.03em;padding:0;font-size:30px;font-weight:600;display:flex}.mobile-menu .nav__link:after{display:none}.mobile-menu .nav__link[aria-current=page]{color:var(--muted)}}.page{animation:page-in .7s var(--ease-out) both}@keyframes page-in{0%{opacity:0;transform:translateY(16px)}}@keyframes fade-in{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(14px)}}.js-reveal [data-reveal]{opacity:0;transition:opacity .9s var(--ease-out), transform .9s var(--ease-out);transition-delay:calc(var(--i,0) * 70ms);transform:translateY(28px)}.js-reveal [data-reveal].is-in{opacity:1;transform:none}.hero{min-height:calc(88vh - var(--header-h));min-height:calc(88svh - var(--header-h));align-items:center;padding-block:48px 96px;display:flex;position:relative}.hero__content{will-change:transform, opacity;transform-origin:50% 0}.hero__title{font-family:var(--font-display);letter-spacing:-.045em;font-size:clamp(40px,8.4vw,112px);font-weight:600;line-height:1.02}.hero__line{padding-bottom:.06em;display:block;overflow:hidden}.hero__line-inner{animation:line-up 1.1s var(--ease-out) both;animation-delay:calc(var(--i) * .11s + .15s);display:block}.hero__text{max-width:34em;color:var(--muted);animation:rise 1s var(--ease-out) both;animation-delay:calc(var(--i) * .11s + .25s);margin-top:clamp(20px,3vw,36px);font-size:clamp(17px,1.6vw,21px);line-height:1.45}@keyframes line-up{0%{transform:translateY(105%)}}.hero__scroll{background:var(--line-soft);width:1px;height:44px;position:absolute;bottom:28px;left:50%;overflow:hidden}.hero__scroll span{background:var(--fg);width:100%;height:100%;animation:scroll-hint 2.2s var(--ease-io) infinite;display:block}@keyframes scroll-hint{0%{transform:translateY(-100%)}60%,to{transform:translateY(100%)}}.section{padding-block:clamp(56px,9vw,120px)}.section+.section{border-top:1px solid var(--line-soft)}.section__head{justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:clamp(28px,4vw,48px);display:flex}.section__title{font-family:var(--font-display);letter-spacing:-.035em;font-size:clamp(28px,4vw,48px);font-weight:600;line-height:1.08}.section__link{min-height:44px;color:var(--accent);white-space:nowrap;align-items:center;gap:6px;font-size:17px;display:inline-flex}.section__link:hover{text-underline-offset:4px;text-decoration:underline}.page-head{justify-items:start;gap:16px;margin-bottom:clamp(32px,5vw,56px);display:grid}.page-title{font-family:var(--font-display);letter-spacing:-.04em;font-size:clamp(36px,6vw,72px);font-weight:600;line-height:1.04}.page-lead{max-width:36em;color:var(--muted);font-size:clamp(17px,1.6vw,21px);line-height:1.45}.eyebrow{color:var(--muted);font-size:14px;font-weight:500}.eyebrow a{color:var(--fg)}.eyebrow a:hover{text-underline-offset:3px;text-decoration:underline}.empty{color:var(--muted);text-align:center;padding:64px 0}.button{background:var(--fg);min-height:44px;color:var(--bg);transition:transform .2s var(--ease-out), opacity .2s ease;border-radius:999px;justify-content:center;align-items:center;padding:0 22px;font-size:15px;font-weight:500;display:inline-flex}.button:hover{opacity:.86}.button:active{transform:scale(.97)}.pill-link{border:1px solid var(--line);border-radius:999px;align-items:center;gap:6px;min-height:44px;padding:0 18px;font-size:15px;transition:border-color .2s;display:inline-flex}.pill-link:hover{border-color:var(--fg)}.text-button{min-height:44px;color:var(--accent);background:0 0;border:0;padding:0 4px;font-size:15px}.text-button:hover{text-underline-offset:4px;text-decoration:underline}.icon-button{background:var(--surface);border:0;border-radius:999px;place-items:center;width:44px;height:44px;padding:0;transition:background-color .2s;display:grid}.icon-button:hover:not(:disabled){background:var(--line-soft)}.icon-button:disabled{opacity:.35;cursor:default}.icon-button svg{fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.logo-wall{grid-template-columns:repeat(auto-fill,minmax(min(180px,40vw),1fr));gap:clamp(8px,1.2vw,16px);display:grid}.logo-wall__item{aspect-ratio:3/2;border:1px solid var(--line-soft);border-radius:var(--radius);place-items:center;padding:16% 18%;transition:background-color .4s,border-color .4s;display:grid}.logo-wall__item img{object-fit:contain;width:100%;height:100%;transition:filter .5s ease, opacity .5s ease, transform .6s var(--ease-out)}.logo-wall__name{text-align:center;font-weight:600}@media (hover:hover){.logo-wall__item img{filter:grayscale();opacity:.55}.logo-wall__item:hover,.logo-wall__item:focus-visible{background:var(--surface);border-color:var(--surface)}.logo-wall__item:hover img,.logo-wall__item:focus-visible img{filter:none;opacity:1;transform:scale(1.06)}}.logo-wall__item:focus-visible{outline-offset:2px;border-radius:var(--radius)}.filters{border-bottom:1px solid var(--line-soft);gap:16px;margin-bottom:32px;padding-bottom:20px;display:grid}.filters__row{flex-wrap:wrap;align-items:flex-end;gap:12px 20px;display:flex}.filters__count{color:var(--muted);font-size:14px}.segmented{background:var(--surface);border:0;border-radius:999px;margin:0;padding:3px;display:inline-flex}.segmented__option{position:relative}.segmented__option input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.segmented__option span{min-height:38px;color:var(--muted);border-radius:999px;place-items:center;padding:0 16px;font-size:14px;font-weight:500;transition:background-color .25s,color .25s,box-shadow .25s;display:grid}.segmented__option input:checked+span{background:var(--bg);color:var(--fg);box-shadow:0 1px 2px #00000014,0 2px 8px #0000000a}.segmented__option input:focus-visible+span{outline:2px solid var(--focus);outline-offset:2px}.field{gap:4px;display:grid}.field__label{color:var(--muted);font-size:12px;font-weight:500}.field select{border:1px solid var(--line);border-radius:var(--radius-s);background:var(--bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231d1d1f' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M7 10l5 5 5-5'/%3E%3C/svg%3E") no-repeat right 12px center / 16px;appearance:none;cursor:pointer;min-width:120px;min-height:44px;padding:0 36px 0 14px;font-size:16px}.field select:hover{border-color:var(--muted)}.field-group{align-items:flex-end;gap:8px;display:flex}.field-group__dash{color:var(--muted);padding-bottom:10px}.chips{margin-inline:calc(var(--gutter) * -1);padding-inline:var(--gutter);scrollbar-width:none;scroll-snap-type:x proximity;gap:8px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chip{border:1px solid var(--line);background:var(--bg);white-space:nowrap;scroll-snap-align:start;border-radius:999px;flex:none;min-height:40px;padding:0 16px;font-size:14px;font-weight:500;transition:background-color .2s,color .2s,border-color .2s}.chip:hover{border-color:var(--fg)}.chip[aria-pressed=true]{background:var(--fg);border-color:var(--fg);color:var(--bg)}@media (max-width:559px){.filters__row{gap:12px}.segmented{width:100%}.segmented__option{flex:1}.filters__row>.field,.field-group{flex:100%}.field-group .field{flex:1}.field select{width:100%;min-width:0}}.masonry{grid-template-columns:repeat(var(--cols,3), minmax(0, 1fr));align-items:start;gap:clamp(16px,2.4vw,32px);transition:opacity .3s;display:grid}.masonry[data-dim]{opacity:.4}.masonry__col{gap:clamp(28px,3.2vw,44px);display:grid}.masonry--css{columns:3;column-gap:clamp(16px,2.4vw,32px);display:block}.masonry--css>li{break-inside:avoid;margin-bottom:clamp(28px,3.2vw,44px)}@media (max-width:999px){.masonry--css{columns:2}}@media (max-width:559px){.masonry--css{columns:1}}.work-card__button{text-align:left;background:0 0;border:0;width:100%;padding:0;display:block}.work-card__button:focus-visible{outline-offset:6px;border-radius:var(--radius)}.work-card__media{border-radius:var(--radius);background:var(--surface);isolation:isolate;display:block;overflow:hidden}.work-card__media .media{object-fit:cover;width:100%;height:100%;transition:transform 1.1s var(--ease-out)}@media (hover:hover){.work-card__button:hover .media{transform:scale(1.035)}}.work-card__caption{gap:2px;padding:14px 2px 0;display:grid}.work-card__title{letter-spacing:-.015em;font-size:15px;font-weight:600}.work-card__meta{color:var(--muted);font-size:14px}.works__end{place-items:center;min-height:80px;margin-top:24px;display:grid}.spinner{border:2px solid var(--line);border-top-color:var(--fg);border-radius:50%;width:22px;height:22px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.lightbox{background:var(--bg);width:100%;max-width:none;height:100%;max-height:none;color:var(--fg);border:0;margin:0;padding:0}.lightbox[open]{animation:lightbox-in .45s var(--ease-out) both}.lightbox::backdrop{background:#ffffffe6}@keyframes lightbox-in{0%{opacity:0;transform:scale(.98)}}.lightbox__frame{flex-direction:column;height:100%;display:flex}.lightbox__bar{padding:max(12px, env(safe-area-inset-top)) max(var(--gutter), env(safe-area-inset-right)) 12px max(var(--gutter), env(safe-area-inset-left));border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:center;display:flex}.lightbox__nav{gap:8px;display:flex}.lightbox__body{overscroll-behavior:contain;padding:clamp(24px, 4vw, 48px) var(--gutter) calc(48px + env(safe-area-inset-bottom));flex:1;animation:.35s both fade-in;overflow-y:auto}.lightbox__info{gap:10px;max-width:1200px;margin:0 auto clamp(24px,3vw,40px);display:grid}.lightbox__title{font-family:var(--font-display);letter-spacing:-.035em;font-size:clamp(28px,4vw,48px);font-weight:600;line-height:1.08}.lightbox__text{max-width:40em;color:var(--muted)}.lightbox__media{gap:clamp(16px,2vw,28px);max-width:1200px;margin-inline:auto;display:grid}.lightbox__media .media{border-radius:var(--radius-s);background:var(--surface);width:auto;max-width:100%;max-height:calc(100dvh - 120px);margin-inline:auto}.brand-head{grid-template-columns:minmax(140px,260px) 1fr;align-items:center;gap:clamp(24px,5vw,72px);margin-bottom:clamp(40px,6vw,72px);display:grid}.brand-head__logo{aspect-ratio:1;border-radius:calc(var(--radius) + 6px);background:var(--surface);animation:rise .9s var(--ease-out) both;place-items:center;padding:clamp(24px,5vw,56px);display:grid}.brand-head__logo img{object-fit:contain;width:100%;height:100%}.brand-head__body{justify-items:start;gap:18px;display:grid}.stats{flex-wrap:wrap;gap:12px 40px;display:flex}.stats dt{color:var(--muted);font-size:13px}.stats dd{font-family:var(--font-display);letter-spacing:-.03em;font-size:24px;font-weight:600}@media (max-width:679px){.brand-head{grid-template-columns:1fr}.brand-head__logo{width:120px;padding:24px}}.cv-section{border-top:1px solid var(--line-soft);padding-block:clamp(32px,5vw,56px)}.cv-section__title{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:24px;font-size:13px;font-weight:600}.cv-intro{letter-spacing:-.02em;white-space:pre-line;font-size:clamp(19px,2vw,24px);line-height:1.45}.timeline{gap:28px;display:grid}.timeline__item{grid-template-columns:180px 1fr;gap:4px 32px;display:grid}.timeline__period{color:var(--muted);font-variant-numeric:tabular-nums;font-size:15px}.timeline__title{letter-spacing:-.02em;font-size:19px;font-weight:600}.timeline__sub{color:var(--muted)}.timeline__text{white-space:pre-line;margin-top:8px}@media (max-width:599px){.timeline__item{grid-template-columns:1fr}}.tags{flex-wrap:wrap;gap:8px;display:flex}.tags li{background:var(--surface);border-radius:999px;padding:8px 14px;font-size:15px}.contact-email{font-family:var(--font-display);letter-spacing:-.04em;overflow-wrap:anywhere;transition:background-size .6s var(--ease-out);background:linear-gradient(currentColor,currentColor) 0 100%/0 2px no-repeat;margin-bottom:clamp(40px,6vw,72px);font-size:clamp(26px,5.4vw,64px);font-weight:600;line-height:1.1;display:inline-block}.contact-email:hover{background-size:100% 2px}.contact-list{display:grid}.contact-list>div{border-top:1px solid var(--line-soft);grid-template-columns:180px 1fr;gap:4px 32px;padding-block:18px;display:grid}.contact-list dt{color:var(--muted)}.contact-list a:hover{text-underline-offset:4px;text-decoration:underline}@media (max-width:599px){.contact-list>div{grid-template-columns:1fr}}.not-found{align-content:center;justify-items:start;gap:20px;min-height:50vh;display:grid}.footer{border-top:1px solid var(--line-soft);padding-bottom:env(safe-area-inset-bottom)}.footer__inner{min-height:80px;color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 24px;padding-block:16px;font-size:14px;display:flex}.footer__links{flex-wrap:wrap;gap:0 20px;display:flex}.footer__links a{min-height:44px;color:var(--fg);align-items:center;display:inline-flex}.footer__links a:hover{text-underline-offset:4px;text-decoration:underline}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.js-reveal [data-reveal]{opacity:1;transform:none}.hero__scroll{display:none}}.arrow-icon{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.05em;width:.8em;height:.8em;display:inline-block}
