@font-face{font-family:Mulish;src:url('/assets/fonts/Mulish-LatinExt.woff2') format('woff2');font-style:normal;font-weight:200 900;font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020-2027,U+2030-205E,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Mulish;src:url('/assets/fonts/Mulish-Latin.woff2') format('woff2');font-style:normal;font-weight:200 900;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{font-family:Mulish,Arial,sans-serif;--gutter:clamp(24px,4.5vw,80px);--grid-gap:24px;--type-vw:min(1vw,10px);--content-width:min(calc(100% - var(--gutter)*2),1000px);--line:rgba(32,38,36,.23);font-weight:400}
header,main,footer{width:var(--content-width);max-width:1000px;margin-left:auto;margin-right:auto;padding-left:0;padding-right:0}
.grid,.overview-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--grid-gap)}
h1,h2,h3,p{overflow-wrap:break-word}
.brand{font-weight:500;font-size:18px;letter-spacing:-.025em}
nav{font-size:11px;letter-spacing:.04em}
.micro,.eyebrow{font-size:10px;font-weight:500;letter-spacing:.075em;line-height:1.6}
.hero h1,.page-title,.contact h2{font-weight:300;letter-spacing:-.055em;line-height:1.04}
.hero h1{font-size:clamp(76px,calc(var(--type-vw) * 8.4),132px)}
.page-title{font-size:clamp(62px,calc(var(--type-vw) * 7.2),110px)}
.statement h2,.case-copy h2,.section-head h2,.overview .section-head h2{font-weight:400;letter-spacing:-.04em}
.project-row h3,.project-card h2,.cv-row h3,.recognition-row h3,.education-row h3{font-weight:400;letter-spacing:-.03em}
.statement p,.case-copy p{font-size:16px;line-height:1.8}
.statement,.case-copy{grid-column:4/12}
.section-label{grid-column:1/4}
.section{padding:88px 0}
.section-head{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--grid-gap)}
.section-head>h2,.section-head>div{grid-column:1/10}
.section-head>.text-link{grid-column:10/13;justify-self:start}
.hero-bottom p{grid-column:1/5}
.hero-bottom>.micro{grid-column:10/13;justify-self:start;text-align:left}
.portrait-indicator{justify-content:flex-start}
.portrait-stack{right:-8vw;width:min(132vh,100vw);overflow:visible}
.portrait-stack img{transform:scale(1.28);transform-origin:50% 32%;object-position:50% 32%}
.hero .eyebrow{font-size:10px;line-height:1.7}
.project-row{grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--grid-gap);padding:30px 0}
.project-row>.micro{grid-column:1/2;align-self:start;margin-top:7px}
.project-row>div{grid-column:4/9}
.project-row>.discipline{grid-column:9/12;line-height:1.6;font-size:11px}
.project-row>.arrow{grid-column:12;justify-self:end}
.project-row h3{font-size:clamp(25px,calc(var(--type-vw) * 2.8),42px)}
.project-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:64px var(--grid-gap)}
.project-card{grid-column:1/7}.project-card:nth-child(2){grid-column:7/13}.project-card:last-child{grid-column:4/10}
.case-meta{grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--grid-gap)}
.case-meta>div:nth-child(1){grid-column:1/4}.case-meta>div:nth-child(2){grid-column:4/7}.case-meta>.role-meta{grid-column:7/13}
.case-page .page-head{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px var(--grid-gap);padding-top:58px}
.case-page .page-head>.text-link{grid-column:1/4;justify-self:start;align-self:start}
.case-eyebrow{grid-column:4/13;margin:0!important;align-self:center}
.case-page .page-title{grid-column:4/13;margin:26px 0 0;font-size:clamp(58px,calc(var(--type-vw) * 6.2),98px)}
.case-page .intro{grid-column:4/10;margin:4px 0 0;max-width:none;font-size:16px;line-height:1.7}
.hero-film{margin:0 0 24px}
.film-frame{position:relative;aspect-ratio:16/9;overflow:hidden;background:#28302c;color:#f2f4ef}
.film-poster{width:100%;height:100%;display:block;object-fit:cover;opacity:.38;filter:saturate(.55)}
.film-frame::after{content:'';position:absolute;inset:16px;border:1px solid rgba(255,255,255,.22);pointer-events:none}
.film-topline,.film-bottomline{position:absolute;left:32px;right:32px;display:flex;justify-content:space-between;gap:16px}
.film-topline{top:32px}.film-bottomline{bottom:32px}
.film-message{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center}
.film-symbol{font-family:Arial,sans-serif;font-size:38px;font-weight:300;display:grid;place-items:center;border:1px solid rgba(255,255,255,.55);width:80px;height:80px;border-radius:50%;padding-left:5px}
.film-message p{font-size:clamp(20px,calc(var(--type-vw) * 2.8),36px);font-weight:300;margin:22px 0 9px;letter-spacing:-.025em}
.hero-film figcaption{font-size:11px;line-height:1.6;margin-top:12px;color:var(--muted)}
.film-grain{position:fixed;inset:0;pointer-events:none;z-index:1;background:url('/assets/grain.svg') repeat;background-size:150px 150px;opacity:.16;mix-blend-mode:multiply}
.grid-markers{position:fixed;z-index:2;inset:96px auto 32px;left:50%;width:var(--content-width);max-width:1000px;transform:translateX(-50%);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-template-rows:repeat(5,1fr);column-gap:var(--grid-gap);pointer-events:none}
.grid-cross{position:relative;left:auto;top:auto;width:16px;height:16px;grid-row:calc(var(--y) + 1);transform:translate(-50%,-50%);color:rgba(255,255,255,.76);align-self:start}
.grid-cross.x-0{grid-column:1}.grid-cross.x-1{grid-column:4}.grid-cross.x-2{grid-column:7}.grid-cross.x-3{grid-column:10}.grid-cross.x-4{grid-column:12;justify-self:end;transform:translate(50%,-50%)}
.grid-cross::before{width:16px;height:1px;left:0;top:7.5px}.grid-cross::after{width:1px;height:16px;left:7.5px;top:0}
.cursor-preview{position:fixed;left:0;top:0;width:clamp(230px,26vw,380px);z-index:5;pointer-events:none;opacity:0;transition:opacity .12s;background:#e3e5e1;border:1px solid rgba(32,38,36,.22);box-shadow:0 12px 36px rgba(20,26,24,.13);will-change:transform}
.cursor-preview.is-visible{opacity:1}.cursor-preview img{display:block;width:100%;aspect-ratio:3/2;object-fit:cover}
/* Scroll-driven, diffuse geometry for the CV. */
.abstract-field{position:absolute;inset:0;overflow:hidden;--drift-a:0px;--drift-b:0px;--drift-c:0px}
.abstract-shape{position:absolute;filter:blur(75px);opacity:.42;will-change:transform}
.shape-a{width:55vw;height:48vh;background:#7d9594;left:-12vw;top:34vh;border-radius:45%;transform:translate3d(var(--drift-a),var(--drift-b),0) rotate(-24deg)}
.shape-b{width:37vw;height:72vh;background:#a5a28d;right:-5vw;top:-20vh;transform:translate3d(var(--drift-b),var(--drift-c),0) rotate(28deg)}
.shape-c{width:44vw;height:23vh;background:#74868d;left:40vw;bottom:-3vh;border-radius:50%;transform:translate3d(0,var(--drift-b),0) rotate(-12deg)}
.backdrop.abstract .glass{background:rgba(235,237,232,.57)}
/* CV: twelve-column editorial sheet, with distinct spans for each content type. */
.cv-masthead{padding:72px 0 64px;row-gap:44px;align-items:start}
.cv-edition{grid-column:1/4;display:flex;flex-direction:column;gap:32px}
.cv-sheet-number{font-weight:300;font-size:34px;letter-spacing:-.035em}
.cv-name{grid-column:4/13;font-size:clamp(40px,calc(var(--type-vw) * 7.8),78px);white-space:nowrap;font-weight:300;letter-spacing:-.065em;line-height:.98;margin:-10px 0 0}
.cv-name-dot{color:#687b73}
.cv-location{grid-column:1/4;line-height:1.9}
.cv-position{grid-column:4/10;font-size:clamp(19px,calc(var(--type-vw) * 2.3),31px);font-weight:300;line-height:1.45;margin:0;letter-spacing:-.025em}
.cv-index{grid-column:10/13;display:flex;flex-direction:column;align-items:stretch;gap:0;font-size:10px}
.cv-index a{border-bottom:1px solid var(--line);padding:9px 0;line-height:1.4}
.cv-index a:first-child{border-top:1px solid var(--line)}
.cv-section{padding:60px 0;border-top:1px solid var(--line);scroll-margin-top:32px}
.cv-section h2{font-size:clamp(31px,calc(var(--type-vw) * 3.2),48px);font-weight:350;line-height:1.17;letter-spacing:-.04em;margin:0}
.cv-section h3{font-weight:450;line-height:1.3;letter-spacing:-.025em}
.cv-section p{margin-top:0}
.cv-side-label,.cv-section-head>.micro{grid-column:1/4;margin:4px 0 0}
.cv-practice>h2{grid-column:4/9}.cv-body{grid-column:9/13;font-size:14px;line-height:1.85}.cv-body p:last-child{margin-bottom:0}
.cv-practice-note{grid-column:4/9;margin-bottom:0;align-self:end}
.cv-section-head{margin-bottom:38px;align-items:baseline}.cv-section-head h2{grid-column:4/13}
.cv-ledger-head{padding-bottom:14px;color:var(--muted)}
.cv-ledger-head>span:nth-child(1),.cv-period{grid-column:1/4}.cv-ledger-head>span:nth-child(2),.cv-ledger-row h3{grid-column:4/7}.cv-ledger-head>span:nth-child(3),.cv-studio{grid-column:7/9}.cv-ledger-head>span:nth-child(4),.cv-focus{grid-column:9/13}
.cv-ledger-row{padding:26px 0;border-top:1px solid var(--line);align-items:start}.cv-ledger-row h3{font-size:24px;margin:0}.cv-ledger-row p{margin-bottom:0;line-height:1.75}.cv-period{padding-top:5px}.cv-studio{font-size:13px}.cv-focus{font-size:13px}
.cv-module{grid-column:span 4;border-top:1px solid var(--line);padding-top:20px}.cv-module h3{font-size:31px;margin:26px 0}.cv-module ul{list-style:none;padding:0;margin:0;font-size:13px;line-height:1.6}.cv-module li{border-top:1px solid rgba(32,38,36,.14);padding:12px 0}
.cv-side-heading{grid-column:1/4}.cv-side-heading h2{margin-top:28px;font-size:34px}.cv-small{font-size:12px;line-height:1.8;margin:25px 0;max-width:205px}
.cv-awards-ledger{grid-column:4/13}.cv-award{display:grid;grid-template-columns:40px 1fr 1fr;gap:24px;align-items:baseline;padding:24px 0;border-top:1px solid var(--line)}.cv-award h3{font-size:20px;margin:0}.cv-award p{font-size:12px;line-height:1.8;margin:0}
.cv-education-card{grid-column:span 6;display:grid;grid-template-columns:1fr 3fr;gap:24px;border-top:1px solid var(--line);padding:25px 0}.cv-education-card h3{font-size:25px;margin:0 0 12px}.cv-education-card p{font-size:13px;line-height:1.6;margin:0}
.cv-industry-note{grid-column:4/8;border-top:1px solid var(--line);padding-top:22px}.cv-industry-note+.cv-industry-note{grid-column:9/13}.cv-industry-note h3{font-size:30px;margin:24px 0}.cv-industry-note>p:last-child{font-size:14px;line-height:1.8;max-width:340px}
.cv-closing>.micro{grid-column:1/4}.cv-closing>div{grid-column:4/11}.cv-closing h2{font-weight:300;font-size:clamp(58px,calc(var(--type-vw) * 7),105px);line-height:1.03}.cv-closing div>p{font-size:16px;line-height:1.8;margin:30px 0;max-width:550px}
@media(min-width:1600px){.grid-markers{inset-inline:auto;left:50%}header,footer{width:var(--content-width)}main{padding:0}}
@media(max-width:1000px) and (min-width:761px){.cv-practice>h2{grid-column:4/13}.cv-body{grid-column:4/12}.cv-ledger-row h3{font-size:20px}.cv-award{grid-template-columns:24px 1fr 1fr;gap:16px}.cv-award h3{font-size:17px}}
@media(max-width:760px){
 :root{--gutter:24px;--grid-gap:16px}
 .grid,.overview-grid,.section-head,.project-grid,.case-meta,.case-page .page-head{grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--grid-gap)}
 .brand{font-size:15px}header{gap:16px}nav{font-size:10px;gap:16px}
 .hero h1{font-size:clamp(54px,calc(var(--type-vw) * 13.2),94px);font-weight:300;line-height:1.05;letter-spacing:-.05em}
 .hero-bottom p{grid-column:1/4}.hero-bottom>.micro{grid-column:4;justify-self:end;text-align:right;font-size:8px}.portrait-indicator{justify-content:flex-end}
 .portrait-stack{width:155vw;right:-39vw}.portrait-stack img{transform:scale(1.2);transform-origin:50% 30%}
 .statement,.case-copy,.section-label{grid-column:1/-1}.statement h2{font-size:36px}.section{padding:60px 0}
 .section-head>h2,.section-head>div{grid-column:1/4}.section-head>.text-link{grid-column:4;justify-self:end;font-size:10px;gap:10px}
 .overview .section-head{display:grid}.overview .section-head h2{font-size:33px}.overview-column{grid-column:1/-1}
 .project-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 16px;padding:24px 0}.project-row>.micro{grid-column:1;grid-row:1;align-self:start}.project-row>div{grid-column:2/5}.project-row>.discipline{grid-column:2/5;grid-row:2;padding-right:40px;font-size:10px}.project-row>.arrow{grid-column:4;grid-row:2;align-self:end;font-size:22px}.project-row h3{font-size:27px}.project-subtitle{font-size:11px}
 .project-card,.project-card:nth-child(2),.project-card:last-child{grid-column:1/-1}.project-grid{row-gap:48px}
 .page-title{font-size:54px}.case-page .page-head{padding-top:36px;row-gap:25px}.case-page .page-head>.text-link,.case-eyebrow,.case-page .page-title,.case-page .intro{grid-column:1/-1}.case-page .page-title{font-size:clamp(45px,calc(var(--type-vw) * 11.8),70px);margin:0}.case-page .intro{font-size:15px}
 .case-meta>div:nth-child(1){grid-column:1/3}.case-meta>div:nth-child(2){grid-column:3/5}.case-meta>.role-meta{grid-column:1/-1}
 .film-frame::after{inset:9px}.film-topline,.film-bottomline{left:18px;right:18px;font-size:8px}.film-topline{top:17px}.film-bottomline{bottom:17px}.film-symbol{width:42px;height:42px;font-size:24px}.film-message p{font-size:20px;margin:10px 0 4px}.film-message>.micro{font-size:8px}.hero-film figcaption{font-size:10px}
 .grid-markers{grid-template-columns:repeat(4,minmax(0,1fr));inset-block:80px 24px}.grid-cross.x-1,.grid-cross.x-3{display:none}.grid-cross.x-0{grid-column:1}.grid-cross.x-2{grid-column:3}.grid-cross.x-4{grid-column:4}.grid-cross{width:14px;height:14px}.grid-cross::before{width:14px;top:6.5px}.grid-cross::after{height:14px;left:6.5px}
 .cv-masthead{padding:44px 0;row-gap:28px}.cv-edition{grid-column:1/-1;flex-direction:row;justify-content:space-between;align-items:baseline}.cv-sheet-number{font-size:22px}.cv-name{grid-column:1/-1;font-size:clamp(28px,8.8vw,60px);margin:0}.cv-location{grid-column:1/-1;font-size:9px}.cv-position{grid-column:1/-1;font-size:23px}.cv-index{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}.cv-index a:nth-child(2){border-top:1px solid var(--line)}
 .cv-section{padding:40px 0}.cv-side-label,.cv-section-head>.micro{grid-column:1/-1}.cv-practice>h2,.cv-body,.cv-practice-note,.cv-section-head h2{grid-column:1/-1}.cv-practice>h2{font-size:32px;margin:10px 0}.cv-body{font-size:14px}.cv-practice-note{font-size:9px}.cv-section-head{row-gap:16px;margin-bottom:28px}.cv-section h2{font-size:32px}.cv-ledger-head{display:none}
 .cv-ledger-row{row-gap:12px;padding:23px 0}.cv-period{grid-column:1/-1}.cv-ledger-row h3{grid-column:1/4;font-size:25px}.cv-studio{grid-column:1/-1;font-size:13px}.cv-focus{grid-column:2/5;font-size:13px;margin-top:8px!important}
 .cv-module{grid-column:1/-1;margin-bottom:16px}.cv-module h3{font-size:30px;margin:18px 0}.cv-module li{font-size:14px}
 .cv-side-heading,.cv-awards-ledger{grid-column:1/-1}.cv-side-heading h2{margin-top:18px}.cv-small{max-width:280px;margin-bottom:12px}.cv-award{grid-template-columns:30px 1fr;gap:12px 16px;padding:21px 0}.cv-award h3{font-size:21px}.cv-award p{grid-column:2;font-size:12px}
 .cv-education-card{grid-column:1/-1;gap:16px;grid-template-columns:1fr 3fr}.cv-education-card h3{font-size:23px}
 .cv-industry-note,.cv-industry-note+.cv-industry-note{grid-column:1/-1}.cv-industry-note h3{font-size:28px}.cv-closing>.micro,.cv-closing>div{grid-column:1/-1}.cv-closing h2{font-size:66px}.cv-closing div>p{font-size:15px}
 .abstract-shape{filter:blur(55px)}.shape-a{width:100vw;left:-40vw}.shape-b{width:75vw;right:-30vw}.shape-c{width:90vw;left:25vw}
}
@media(prefers-reduced-motion:reduce){.abstract-shape{transform:none;will-change:auto}.cursor-preview{display:none}}
@media(hover:none),(pointer:coarse){.cursor-preview{display:none}}

/* Hosted case film: native Drive controls, responsive frame. */
.film-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
.film-embed::after{display:none}
.hero-film figcaption a{margin-left:1.5em;text-decoration:underline;text-underline-offset:3px}

.client-list{list-style:none;padding:0;margin:0}
.client-list li{font-size:13px;line-height:1.5;padding:12px 0;border-bottom:1px solid rgba(32,38,36,.14)}
.film-play{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;color:#fff;font-size:20px;text-decoration:none}
.film-play:focus-visible{outline:2px solid white;outline-offset:-6px}
@media(max-width:600px){.client-list li{font-size:14px}}

/* Background (0), grain (1), grid (2), content (3), hover preview (5). */
body>header,body>main,body>footer{z-index:3}

/* A single client strip introduces the two-column overview. */
.overview-clients{margin-bottom:42px;min-width:0}
.client-strip{list-style:none;display:flex;align-items:baseline;gap:0;overflow-x:auto;overscroll-behavior-x:contain;margin:0;padding:16px 0 20px;scrollbar-width:thin;scrollbar-color:var(--line) transparent}
.client-strip li{flex:none;white-space:nowrap;font-size:14px;line-height:1.6}
.client-strip li+li::before{content:"·";display:inline-block;margin:0 20px;color:var(--muted)}
.client-strip:focus-visible{outline:2px solid #245d70;outline-offset:5px}
.client-strip{cursor:grab;user-select:none;-webkit-user-select:none;touch-action:pan-x pan-y}
.client-strip.is-scrubbing{cursor:grabbing}
.overview-two-columns>.overview-column{grid-column:span 6}
.competence-subtitle{display:block;color:var(--muted);font-size:11px;line-height:1.6;margin-top:4px}
@media(max-width:760px){.overview-two-columns>.overview-column{grid-column:1/-1}.overview-clients{margin-bottom:32px}.client-strip li{font-size:13px}.client-strip li+li::before{margin:0 14px}}

/* Work overview: manual horizontal browsing with native swipe and scroll snap. */
.work-carousel{padding-bottom:72px}
.carousel-toolbar{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:20px;border-top:1px solid var(--line);padding-top:16px}
.carousel-toolbar[hidden]{display:none}
.carousel-toolbar p{margin:0}
.carousel-controls{display:flex;align-items:center;gap:12px}
.carousel-count{min-width:56px;text-align:center;font-variant-numeric:tabular-nums}
.carousel-controls button{background:transparent;border:1px solid var(--line);color:inherit;width:44px;height:44px;font-size:24px;cursor:pointer}
.carousel-controls button:disabled{opacity:.3;cursor:default}
.carousel-track.project-grid{display:flex;gap:24px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;padding:8px 0 24px;scrollbar-width:thin;scrollbar-color:var(--muted) transparent}
.carousel-track .project-card{flex:0 0 calc(75% - 6px);min-width:0;scroll-snap-align:start;scroll-margin:0}
.carousel-track::after{content:"";flex:0 0 calc(25% - 18px)}
.carousel-track .project-card img{aspect-ratio:16/10;object-fit:cover}
.carousel-track:focus-visible{outline:2px solid #245d70;outline-offset:5px}
.carousel-track .project-card:focus-visible{outline-offset:-3px}
@media(max-width:760px){.carousel-track.project-grid{gap:16px}.carousel-track .project-card{flex-basis:88%}.carousel-track::after{flex-basis:calc(12% - 16px)}.carousel-toolbar{gap:12px}.carousel-controls{gap:8px}.carousel-toolbar>.micro{max-width:100px}.work-carousel{padding-bottom:48px}}

/* Match the client scrollbar to the fine editorial divider rules. */
@supports selector(::-webkit-scrollbar){
 .client-strip{scrollbar-width:auto;scrollbar-color:auto}
 .client-strip::-webkit-scrollbar{height:1.3px}
 .client-strip::-webkit-scrollbar-track{background:rgba(32,38,36,.08)}
 .client-strip::-webkit-scrollbar-thumb{background:var(--line);border-radius:0}
 .client-strip::-webkit-scrollbar-button{display:none}
}

.png-sequence{position:relative;aspect-ratio:800/338}
.png-sequence canvas{display:block;width:100%;height:auto}
.png-sequence canvas[hidden],.png-sequence img[hidden],.sequence-toggle[hidden]{display:none}
.sequence-toggle{position:absolute;right:16px;bottom:16px;padding:10px 14px;border:1px solid rgba(255,255,255,.7);background:rgba(24,31,39,.7);color:#fff;font:inherit;font-size:12px;cursor:pointer}
.sequence-toggle:focus-visible{outline:2px solid white;outline-offset:4px}

/* Extended project credits use the landing-page competency list treatment. */
.other-projects>h2{grid-column:1/4;align-self:start;margin:0;font-weight:500}
.other-projects .project-list{grid-column:4/13;border-top:1px solid var(--line)}
.other-projects .project-list li{padding:16px 0}
@media(max-width:760px){.other-projects>h2,.other-projects .project-list{grid-column:1/-1}}
