/* Shared CTA type roles: keep prominent project actions distinct from compact utilities. */
:root{--font-accent:'Archivo Black','Arial Black',sans-serif;--cta-text-size:16px;--cta-panel-size:18px;--cta-project-size:clamp(26px,2.8vw,40px);--cta-feature-size:clamp(36px,4vw,58px)}
:root{--page-heading-size:clamp(44px,4.5vw,72px);--paper:#121212;--card-shadow:0 4px 2px rgb(0 0 0/.85),0 1px 1px rgb(0 0 0/.95);--card-shadow-hover:0 6px 3px rgb(0 0 0/.9),0 1px 1px rgb(0 0 0/.95);--ink:#f2f2f2;--muted:#adadad;--accent:#78c8ec;--line:#303030;--media:#101010;color-scheme:dark;--gutter:clamp(18px,3.3vw,60px);--ease:cubic-bezier(.2,.75,.2,1)}
*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:auto;scroll-padding-top:100px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.5 'Inter',Arial,sans-serif;-webkit-font-smoothing:antialiased}body.dialog-open{overflow:hidden}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button{color:inherit;cursor:pointer;border:0;background:none;padding:0}[hidden]{display:none!important}img,video{max-width:100%;display:block}img{height:auto}figure,p,h1,h2,h3,ul{margin:0}svg{width:32px;height:32px;display:block}::selection{background:var(--ink);color:var(--paper)}:focus-visible{outline:none}.wrap{max-width:1800px;width:100%;margin-inline:auto;padding-inline:var(--gutter)}.eyebrow{font-size:12px;font-weight:500;line-height:1.35}.text-link{display:inline-flex;gap:20px;align-items:center;min-height:44px;font-family:var(--font-accent);font-size:var(--cta-text-size);font-weight:400}.text-link>span{font:inherit;letter-spacing:inherit;color:inherit}.text-link .action-icon{width:1.25em;height:1.25em;flex:none}.skip-link{position:fixed;top:12px;left:16px;z-index:100;padding:12px 20px;background:var(--ink);color:var(--paper);transform:translateY(-160%)}.skip-link:focus{transform:none}figcaption{font-size:12px;color:var(--muted);line-height:1.45;margin-top:12px}
.site-header{position:fixed;z-index:30;inset:0 0 auto;min-height:80px;display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:32px;padding:12px var(--gutter);background:var(--paper);border-bottom:1px solid var(--line)}.admin-bar .site-header{top:32px}.wordmark{display:inline-flex;align-items:center;gap:10px;width:max-content;min-height:44px;font-size:14px;font-weight:600;letter-spacing:-.025em}.main-nav,.language-nav,.nav-links{display:flex;align-items:center;gap:4px}.nav-links{list-style:none;padding:0}.main-nav a,.language-nav a{min-height:44px;display:flex;align-items:center;padding:0 10px;font-size:12px;font-weight:500;white-space:nowrap}.main-nav [aria-current],.language-nav [aria-current],.current-menu-item>a{color:var(--accent)}.language-nav{gap:0}.language-nav a{padding-inline:6px}
.hero{padding-top:148px;padding-bottom:110px}.hero-title{font-size:clamp(100px,12.7vw,190px);font-weight:500;line-height:.93;letter-spacing:-.075em;display:flex;gap:.22em;white-space:nowrap}.hero-signature{display:flex;justify-content:space-between;align-items:center;margin-top:30px;font-size:14px}.hero-signature .text-link{font-size:12px}.hero-stage{height:clamp(510px,43vw,680px);position:relative;margin-top:35px;isolation:isolate}.hero-card{position:absolute;display:block;transition:filter .3s;will-change:transform}.hero-card-0{width:49%;left:1%;top:50px;z-index:1;--angle:-1.5deg;--spread-x:-18px;--spread-y:20px}.hero-card-1{width:31%;left:55%;top:4px;z-index:2;--angle:2deg;--spread-x:30px;--spread-y:-12px}.hero-card-2{width:28%;left:71%;top:285px;z-index:3;--angle:-2deg;--spread-x:22px;--spread-y:24px}.hero-card-3{width:25%;left:43%;top:330px;z-index:4;--angle:3deg;--spread-x:-12px;--spread-y:26px}.hero-card-image{box-shadow:0 12px 35px #17171712;transition:box-shadow .3s var(--ease);overflow:hidden;background:var(--media)}.hero-card-image img{width:100%;height:auto}.hero-card-label{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:10px 2px;font-size:13px;font-weight:500}.hero-card-label>span:last-child{color:var(--accent);font-size:21px;transition:transform .3s}.hero-index{display:flex;justify-content:space-between;gap:30px;color:var(--muted);font-size:11px;margin-top:35px}.hero-index>span:last-child{max-width:390px;text-align:right}
.section-label{display:flex;justify-content:space-between;align-items:center;gap:25px;border-top:1px solid var(--line);padding-block:24px;font-size:12px}.section-label h2{font-size:12px;font-weight:500}.section-label>span{color:var(--muted)}.selected-work{padding-bottom:100px}.featured-case{margin-top:55px;padding-bottom:95px}.case-top{display:flex;justify-content:space-between;color:var(--muted)}.case-title{display:flex;align-items:center;justify-content:space-between;margin:15px 0 25px;gap:30px}.case-title h2{font-weight:500;font-size:clamp(62px,7vw,112px);line-height:.98;letter-spacing:-.065em}.case-title>span{color:var(--accent);transition:transform .4s var(--ease)}.case-title svg{width:64px;height:64px}.case-description{display:grid;grid-template-columns:1.3fr 1fr;align-items:end;gap:70px;margin-bottom:44px}.case-description>p{max-width:700px;font-size:clamp(23px,2.6vw,38px);line-height:1.18;letter-spacing:-.035em}.case-description>span{max-width:300px;font-size:12px;color:var(--muted);justify-self:end;text-align:right}.case-media{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px;align-items:start;padding:48px;position:relative;background:var(--media);overflow:hidden}.case-main{grid-column:1/9;grid-row:1/3;margin-top:20px;z-index:1}.case-support-0{grid-column:8/13;grid-row:1;z-index:2}.case-support-1{grid-column:10/13;grid-row:2;margin-top:20px;z-index:2}.case-media img{width:100%;height:auto}.case-media a{display:block}.case-media>.treatment-screen{box-shadow:0 10px 30px #0002}.case-main.treatment-screen::before,.hero-card-image.treatment-screen::before,.project-main-media.treatment-screen>div::before,.project-main-media.treatment-screen>a::before{content:'● ● ●';display:block;font-size:8px;letter-spacing:3px;color:#777;padding:7px 12px;background:var(--media);line-height:1;border-radius:4px 4px 0 0}.case-main.treatment-screen{border-radius:4px;overflow:hidden}.case-cona .case-media{background:var(--media)}.case-agrft80 .case-media{background:var(--media)}.case-agrft80 .case-main{grid-column:5/13;grid-row:1/3;margin-top:55px}.case-agrft80 .case-support-0{grid-column:1/6;grid-row:1;z-index:2}.case-agrft80 .case-support-1{grid-column:1/5;grid-row:2;margin-top:30px}.case-artopolis .case-media{background:var(--media)}.case-artopolis .case-main{grid-column:2/12;grid-row:1;margin-top:0}.case-artopolis .case-support-0{grid-column:1/7;grid-row:2;margin-top:0}.case-artopolis .case-support-1{grid-column:8/13;grid-row:2;margin-top:60px}.case-topot .case-media{background:var(--media)}.case-topot .case-main{grid-column:1/7;grid-row:1/3;margin-top:0}.case-topot .case-support-0{grid-column:8/13;grid-row:1;margin-top:40px}.case-topot .case-support-1{grid-column:8/13;grid-row:2;margin-top:10px}.featured-case>.text-link{margin-top:18px}.all-work-link{display:flex;justify-content:space-between;align-items:center;gap:30px;padding:25px 0;border-block:1px solid var(--line);font-size:clamp(35px,4vw,60px);line-height:1.1;letter-spacing:-.05em}.all-work-link svg{color:var(--accent);width:45px;height:45px}
.dark-section{background:var(--paper);color:var(--ink)}.art-selection{padding-block:65px 90px}.dark-section .section-label{border-color:var(--line)}.dark-section .section-label>span,.dark-section figcaption{color:var(--muted)}.art-heading{display:grid;grid-template-columns:1.7fr 1fr;gap:50px;margin:45px 0 80px;align-items:end}.art-heading h2{font-size:clamp(40px,5.3vw,85px);line-height:1;letter-spacing:-.05em;font-weight:500}.art-heading p{max-width:310px;font-size:17px;color:var(--muted)}.art-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px;align-items:center;margin-bottom:50px}.art-grid figure:nth-child(2){margin-top:100px}.art-grid figure:nth-child(3){margin-top:-60px}.art-grid img{width:100%;height:auto}.art-grid a{display:block;transition:transform .5s var(--ease)}.dark-section .text-link>span{color:var(--accent)}
.personal-section{display:grid;grid-template-columns:.75fr 1.2fr;gap:clamp(50px,10vw,160px);padding-block:135px;align-items:center}.personal-portrait{max-width:410px}.personal-portrait img{width:100%}.personal-section h2{font-size:clamp(36px,4.6vw,70px);line-height:1.05;letter-spacing:-.055em;font-weight:500;margin:35px 0}.personal-text{max-width:660px;font-size:20px;line-height:1.6}.personal-text p+p{margin-top:24px}.personal-section .text-link{margin-top:25px}.collaboration{display:grid;grid-template-columns:1fr 2fr;gap:65px;padding-block:40px 95px;border-top:1px solid var(--line)}.collaboration>div{font-size:clamp(23px,2.5vw,36px);letter-spacing:-.035em;line-height:1.35;max-width:900px}
.site-footer{border-top:1px solid var(--line)}.footer-invitation{padding-block:55px 65px}.footer-cta{display:flex;justify-content:space-between;align-items:center;gap:30px;font-size:clamp(68px,12vw,180px);font-weight:500;letter-spacing:-.075em;line-height:1;margin-top:35px}.footer-cta svg{color:var(--accent);width:clamp(55px,9vw,130px);height:clamp(55px,9vw,130px);transition:transform .35s var(--ease)}.footer-note{font-size:16px;max-width:520px;margin-top:35px;color:var(--muted)}.footer-bottom{display:flex;justify-content:space-between;align-items:center;gap:25px;font-size:12px;padding-block:18px;border-top:1px solid var(--line)}.footer-bottom>div{display:flex;gap:25px}.footer-bottom a{min-height:44px;display:flex;align-items:center}
.contact-content{padding-block:60px;max-width:none}.contact-content>h2{font-size:clamp(48px,5.5vw,85px);line-height:1.02;letter-spacing:-.055em;font-weight:500;margin-top:55px;overflow-wrap:anywhere}.contact-intro{max-width:470px;font-size:20px;line-height:1.5;margin-top:35px}.contact-address{margin:75px 0 20px}.email-link{display:block;font-size:clamp(23px,2.5vw,38px);font-weight:500;letter-spacing:-.04em;min-height:44px;margin-top:16px;overflow-wrap:anywhere}.copy-email{min-height:44px;font-size:13px;color:var(--muted);text-decoration:underline;text-underline-offset:4px}.copy-status{font-size:12px;min-height:18px}.contact-footnote{font-size:12px;color:var(--muted);margin-top:80px}.contact-dialog{position:fixed;inset:16px 16px 16px auto;width:58vw;max-width:800px;max-height:calc(100dvh - 32px);height:calc(100dvh - 32px);margin:0;padding:0;border:1px solid #3d3d3d;background:var(--paper);color:var(--ink);overscroll-behavior:contain;overflow:auto;box-shadow:0 20px 80px #0002}.contact-dialog::backdrop{background:#000a;animation:backdrop-in .4s var(--ease)}.contact-dialog .contact-content{padding:50px clamp(24px,4vw,65px);position:relative}.contact-dialog.is-closing::backdrop{animation:backdrop-out .3s forwards}.contact-close{position:absolute;right:24px;top:20px;min-height:44px;display:flex;gap:15px;align-items:center;font-size:13px}.contact-close span{font-size:28px}.contact-dialog .contact-content>.eyebrow{padding-right:90px}
.page-intro{padding-block:155px 75px;max-width:1180px}.page-intro h1,.project-intro h1{font-size:clamp(60px,10vw,160px);font-weight:500;line-height:1;letter-spacing:-.07em;margin-top:25px;overflow-wrap:anywhere}.page-lead{font-size:clamp(24px,3vw,40px);line-height:1.25;letter-spacing:-.035em;max-width:890px;margin-top:40px}.page-lead p+p{margin-top:18px}.project-row{margin:35px 0 80px;padding-top:25px;border-top:1px solid var(--line)}.project-heading{display:grid;grid-template-columns:40px minmax(0,1fr) 60px 100px;align-items:center;gap:20px}.project-heading h2{font-size:clamp(40px,5.4vw,82px);font-weight:500;line-height:1.05;letter-spacing:-.055em;overflow-wrap:anywhere}.project-number{font-size:12px;color:var(--muted);align-self:start;margin-top:14px}.project-heading__arrow{color:var(--accent);transition:transform .3s}.project-heading__arrow svg{width:42px;height:42px}.project-period{font-size:12px;color:var(--muted);justify-self:end;text-align:right}.project-summary{display:flex;justify-content:space-between;gap:35px;margin:24px 0 35px;padding-left:60px}.project-summary p{font-size:20px;letter-spacing:-.02em;max-width:620px}.project-summary>span{font-size:12px;color:var(--muted);max-width:260px;text-align:right;align-self:end}.project-previews{display:grid;grid-template-columns:repeat(var(--preview-count,6),minmax(0,1fr));gap:18px;align-items:start}.project-preview{background:var(--media);position:relative;overflow:hidden}.project-preview a{display:block}.project-preview img{width:100%;height:auto}.project-preview:nth-child(even){margin-top:35px}.project-preview.treatment-photo img{aspect-ratio:4/3;object-fit:cover}.project-preview.treatment-art{background:var(--media);padding:10px}.project-detail-link{margin-top:20px}.work-page{padding-bottom:20px}
.project-intro{padding-top:120px}.back-link{margin-bottom:40px;font-size:12px}.project-intro__bottom{display:grid;grid-template-columns:1fr 2fr;gap:65px;align-items:end;margin:50px 0}.project-intro__bottom>span{font-size:13px;color:var(--muted)}.project-intro__bottom>p{font-size:clamp(26px,3.4vw,48px);line-height:1.18;letter-spacing:-.04em;max-width:950px}.project-main-media img{width:100%;height:auto;max-height:900px;object-fit:contain}.project-main-media.treatment-print,.project-main-media.treatment-art{padding-block:50px;background:var(--media)}.project-main-media.treatment-print img{max-height:800px}.project-main-media.treatment-screen>div{border-radius:5px;overflow:hidden;box-shadow:0 14px 50px #0001}.project-main-media figcaption{margin-top:18px}.project-story{display:grid;grid-template-columns:1.4fr 1fr;gap:clamp(55px,10vw,160px);padding-block:110px}.prose{font-size:21px;line-height:1.6;letter-spacing:-.015em;max-width:780px;overflow-wrap:anywhere}.prose p+p,.prose>ul,.prose>ol{margin-top:26px}.prose>h2{font-size:36px;font-weight:500;line-height:1.1;letter-spacing:-.04em;margin:45px 0 20px}.prose>h3{font-size:25px;margin:35px 0 18px}.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:4px}.prose>.text-link{margin-top:25px;text-decoration:none}.project-facts{font-size:16px;line-height:1.6}.project-facts>div{border-top:1px solid var(--line);padding:22px 0 30px}.project-facts h2{font-size:12px;font-weight:500;margin-bottom:16px}.project-facts p+p{margin-top:13px}.project-facts .text-link{display:flex}.project-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:75px 40px;align-items:start;margin-bottom:120px}.project-gallery figure:nth-child(even){margin-top:100px}.project-gallery figure:last-child:nth-child(odd){grid-column:1/-1;max-width:1100px;justify-self:center}.project-gallery img{width:100%;height:auto}.project-gallery .treatment-screen>img{box-shadow:0 15px 40px #0001}.project-gallery figcaption{font-size:12px}.project-gallery figcaption span{display:block;margin-top:5px}.related-work{padding-block:40px 0;border-top:1px solid var(--line)}.project-art{background:var(--paper);color:var(--ink)}.project-art .project-main-media{background:var(--paper);padding-block:50px}.project-art .project-main-media img{max-height:none;max-width:1250px;margin-inline:auto}.project-art .project-facts>div,.project-art .related-work,.project-art .project-row{border-color:var(--line)}.project-art figcaption,.project-art .project-period,.project-art .project-intro__bottom>span,.project-art .project-summary>span{color:var(--muted)}.project-art .project-gallery{display:block}.project-art .project-gallery figure{margin:0 auto 110px;max-width:1300px}.project-art .text-link>span,.project-art .project-heading__arrow{color:var(--accent)}
.video-media{position:relative;width:100%;overflow:hidden}.video-media>img{width:100%;height:auto;display:block}.video-media>video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;background:var(--media)}.video-media.is-playing>video{opacity:1}.video-toggle{position:absolute;bottom:14px;right:14px;min-height:44px;padding:8px 14px;border-radius:3px;background:var(--paper);color:var(--ink);font-size:12px;box-shadow:0 2px 8px #0003;z-index:2}.video-media.has-error .video-toggle{display:none}
.about-grid{display:grid;grid-template-columns:.7fr 1.2fr;gap:clamp(50px,10vw,150px);padding-block:20px 110px;align-items:start}.about-portrait{max-width:440px}.about-portrait img{width:100%}.professional-path{padding-bottom:100px}.professional-path>.eyebrow{margin-bottom:25px}.professional-path article{display:grid;grid-template-columns:150px 1fr 1.2fr;gap:35px;padding-block:30px;border-top:1px solid var(--line)}.professional-path article>span{font-size:13px;color:var(--muted)}.professional-path h2{font-size:27px;line-height:1.15;letter-spacing:-.035em;font-weight:500}.professional-path p{font-size:16px;color:var(--muted)}.cv-full-stop{color:var(--accent)}.cv-nav{display:flex;flex-wrap:wrap;gap:10px 24px;margin-bottom:55px;max-width:1100px}.cv-nav a{font-size:13px;display:flex;align-items:center;min-height:44px;border-bottom:1px solid var(--line)}.cv-section{display:grid;grid-template-columns:minmax(150px,.6fr) minmax(0,1.5fr);gap:70px;margin-bottom:70px;border-top:1px solid var(--line);padding-top:25px;scroll-margin-top:110px}.cv-section>h2{font-size:24px;line-height:1.2;font-weight:500;letter-spacing:-.035em;max-width:280px}.cv-row{display:grid;grid-template-columns:140px minmax(0,1fr);gap:35px;padding-bottom:25px}.cv-row>span{font-size:13px;color:var(--muted);padding-top:3px}.cv-row>div{font-size:16px;line-height:1.6}.cv-row p+p{margin-top:12px}.cv-row a{color:var(--accent)}.cv-notes{font-size:15px;margin-bottom:80px}.text-page{padding-bottom:100px}.text-page .prose{max-width:850px}
@keyframes card-arrival{from{opacity:0;translate:0 50px;scale:.92}to{opacity:1;translate:0 0;scale:1}}@keyframes backdrop-in{from{background:#0000}to{background:#000a}}@keyframes backdrop-out{to{background:#0000}}
@media(min-width:1024px){.has-motion .hero-card{animation:card-arrival .72s var(--ease) both;transform:translate(calc(var(--spread,0) * var(--spread-x) + var(--pointer-x,0px)),calc(var(--spread,0) * var(--spread-y) + var(--pointer-y,0px))) rotate(calc(var(--angle) * (1 - var(--spread,0))));transition:transform .15s linear}.has-motion .hero-card-1{animation-delay:70ms}.has-motion .hero-card-2{animation-delay:120ms}.has-motion .hero-card-3{animation-delay:180ms}.has-motion [data-arrive]{transition:opacity .7s var(--ease),translate .7s var(--ease)}.has-motion [data-arrive].will-arrive{opacity:.2;translate:0 45px}}
@media(max-width:1023px){.site-header{gap:15px}.hero{padding-top:135px;padding-bottom:80px}.hero-title{font-size:12.5vw}.hero-stage{display:grid;grid-template-columns:1.3fr 1fr;gap:30px 24px;height:auto;margin-top:45px;align-items:start}.hero-card{position:relative;width:auto;inset:auto;transform:none;will-change:auto}.hero-card-0{grid-row:1/3;margin-top:40px}.hero-card-1{grid-column:2;grid-row:1}.hero-card-2{grid-column:2;grid-row:2}.hero-card-3{grid-column:1;grid-row:3;width:75%;margin-top:-35px}.hero-index{margin-top:50px}.featured-case{padding-bottom:60px}.case-title h2{font-size:80px}.case-media{padding:30px;gap:18px}.case-support-1{grid-column:9/13}.case-description{gap:35px}.case-description>p{font-size:29px}.art-heading{grid-template-columns:1fr;gap:25px;margin-bottom:50px}.art-grid{gap:24px}.art-grid figure:nth-child(2){margin-top:60px}.art-grid figure:nth-child(3){margin-top:-20px}.personal-section{gap:50px;padding-block:90px}.personal-text{font-size:18px}.personal-section h2{font-size:42px}.collaboration{gap:40px;grid-template-columns:.7fr 1.3fr}.contact-dialog{width:calc(100vw - 32px);max-width:none}.project-previews{grid-template-columns:repeat(var(--tablet-count,4),minmax(0,1fr))}.project-preview:nth-child(n+5){display:none}.project-heading{grid-template-columns:30px minmax(0,1fr) 42px 80px;gap:14px}.project-heading h2{font-size:56px}.project-summary{padding-left:44px}.project-story{gap:50px}.project-gallery{gap:50px 25px}.professional-path article{grid-template-columns:100px 1fr 1fr;gap:25px}.cv-section{gap:40px}.cv-row{grid-template-columns:100px minmax(0,1fr);gap:25px}}
@media(max-width:767px){:root{--gutter:18px}.site-header{min-height:90px;grid-template-columns:1fr auto;gap:0;padding-block:5px}.wordmark{font-size:13px}.language-nav{grid-column:2;grid-row:1}.main-nav{grid-column:1/-1;grid-row:2;margin-left:-10px;gap:10px}.main-nav a,.language-nav a{font-size:12px;min-height:38px}.admin-bar .site-header{top:46px}.hero{padding-top:135px;padding-bottom:65px}.hero-title{display:block;white-space:normal;font-size:clamp(66px,20.5vw,104px);line-height:.93;letter-spacing:-.065em}.hero-title>span{display:block}.hero-title>span+span{margin-top:4px}.hero-signature{display:block;margin-top:26px}.hero-signature>p{font-size:12px;max-width:300px}.hero-signature .text-link{margin-top:10px;min-height:34px}.hero-stage{grid-template-columns:1fr 1fr;gap:24px 14px;margin-top:22px}.hero-card-0{grid-column:1/-1;grid-row:1;margin:0}.hero-card-1{grid-column:1;grid-row:2}.hero-card-2{grid-column:2;grid-row:2;margin-top:35px}.hero-card-3{grid-column:1;grid-row:3;width:100%;margin-top:-15px}.hero-card-label{font-size:12px;padding-block:6px}.hero-card-label>span:last-child{font-size:19px}.hero-index{font-size:10px;gap:20px;margin-top:30px}.hero-index>span:last-child{max-width:235px}.section-label{padding-block:20px;font-size:11px}.section-label h2{font-size:11px}.selected-work{padding-bottom:65px}.featured-case{margin-top:30px;padding-bottom:45px}.case-title{margin:17px 0 24px;gap:20px}.case-title h2{font-size:clamp(48px,15vw,74px)}.case-title svg{width:36px;height:36px}.case-description{display:block;margin-bottom:28px}.case-description>p{font-size:25px;line-height:1.2}.case-description>span{display:block;text-align:left;font-size:11px;max-width:300px;margin-top:18px}.case-media{padding:20px 14px;grid-template-columns:1fr 1fr;gap:20px 14px}.case-media .case-main{grid-column:1/-1;grid-row:1;margin:0}.case-media .case-support-0{grid-column:1;grid-row:2;margin:0}.case-media .case-support-1{grid-column:2;grid-row:2;margin-top:25px}.case-media .case-main.treatment-print{grid-column:1;grid-row:1/3}.case-topot .case-media .case-support-0{grid-column:8/13;grid-row:1}.case-topot .case-media .case-support-1{grid-column:2;grid-row:2;margin-top:0}.featured-case>.text-link{margin-top:10px}.all-work-link{font-size:37px;padding-block:22px}.all-work-link svg{width:36px;height:36px}.art-selection{padding-block:45px 60px}.art-heading{margin:30px 0 45px;gap:20px}.art-heading h2{font-size:43px}.art-heading p{font-size:16px}.art-grid{display:block;margin-bottom:35px}.art-grid figure,.art-grid figure:nth-child(2),.art-grid figure:nth-child(3){margin:0 0 40px}.art-grid figure:nth-child(2){width:90%;margin-left:auto}.art-grid figcaption{font-size:11px}.personal-section{grid-template-columns:1fr;gap:40px;padding-block:65px}.personal-portrait{width:65%;max-width:350px}.personal-section h2{font-size:40px;margin:28px 0}.personal-text{font-size:18px}.personal-section .text-link{margin-top:20px}.collaboration{grid-template-columns:1fr;gap:25px;padding-block:30px 60px}.collaboration>div{font-size:24px;line-height:1.4}.footer-invitation{padding-block:40px 45px}.footer-cta{font-size:72px;gap:20px;margin-top:25px}.footer-cta svg{width:50px;height:50px}.footer-note{font-size:15px;margin-top:28px}.footer-bottom{flex-wrap:wrap;gap:5px 18px;font-size:11px;padding-block:15px}.footer-bottom>div{gap:18px}.contact-dialog{inset:10px;width:calc(100vw - 20px);height:calc(100dvh - 20px);max-height:calc(100dvh - 20px)}.contact-dialog .contact-content{padding:35px 24px}.contact-close{top:15px;right:18px}.contact-content>h2{font-size:52px;margin-top:65px}.contact-intro{font-size:18px;margin-top:28px}.contact-address{margin-top:55px}.email-link{font-size:24px}.contact-footnote{margin-top:60px}.page-intro{padding-block:140px 55px}.page-intro h1,.project-intro h1{font-size:clamp(50px,14vw,78px)}.page-lead{font-size:27px;line-height:1.3;margin-top:30px}.project-row{margin:25px 0 55px;padding-top:20px}.project-heading{grid-template-columns:24px minmax(0,1fr) 32px;gap:10px}.project-heading h2{font-size:clamp(32px,9vw,48px)}.project-number{font-size:10px;margin-top:9px}.project-heading__arrow svg{width:30px;height:30px}.project-period{grid-column:2;justify-self:start;font-size:11px;text-align:left}.project-summary{display:block;padding-left:34px;margin:18px 0 25px}.project-summary p{font-size:17px}.project-summary>span{display:block;font-size:11px;text-align:left;margin-top:13px}.project-previews{grid-template-columns:repeat(var(--phone-count,2),minmax(0,1fr));gap:14px}.project-preview:nth-child(n+3){display:none}.project-preview:nth-child(even){margin-top:25px}.project-detail-link{font-size:13px;margin-top:12px}.project-intro{padding-top:125px}.back-link{margin-bottom:30px}.project-intro>.eyebrow{font-size:11px}.project-intro__bottom{grid-template-columns:1fr;gap:22px;margin:32px 0}.project-intro__bottom>span{font-size:12px}.project-intro__bottom>p{font-size:28px;line-height:1.25}.project-main-media.treatment-print,.project-main-media.treatment-art{padding-block:25px}.project-main-media figcaption{font-size:10px}.project-story{grid-template-columns:1fr;gap:45px;padding-block:55px 65px}.prose{font-size:18px;line-height:1.65}.prose>h2{font-size:30px}.project-facts{font-size:16px}.project-gallery{grid-template-columns:1fr;gap:40px;margin-bottom:65px}.project-gallery figure:nth-child(even){margin-top:0}.project-gallery figure:last-child:nth-child(odd){grid-column:1}.project-gallery figcaption{font-size:11px}.project-art .project-main-media{padding-block:30px}.project-art .project-gallery figure{margin-bottom:55px}.related-work{padding-top:30px}.video-toggle{bottom:8px;right:8px;font-size:10px;padding-inline:9px;min-height:44px}.about-grid{grid-template-columns:1fr;gap:40px;padding-block:0 65px}.about-portrait{width:70%;max-width:350px}.professional-path{padding-bottom:65px}.professional-path article{grid-template-columns:1fr;gap:12px;padding-block:25px}.professional-path h2{font-size:27px}.cv-nav{gap:7px 20px;margin-bottom:40px}.cv-section{grid-template-columns:1fr;gap:28px;margin-bottom:45px;padding-top:22px}.cv-section>h2{max-width:none;font-size:26px}.cv-row{grid-template-columns:85px minmax(0,1fr);gap:16px;padding-bottom:23px}.cv-row>span{font-size:11px}.cv-row>div{font-size:15px}.cv-notes{font-size:13px}.text-page{padding-bottom:65px}}
/* Editorial composition: name, proof, then the person behind it. */
.site-header{min-height:64px;grid-template-columns:1fr auto auto;background:none;border:0;pointer-events:none;gap:18px;padding-block:10px}.site-header>a,.site-header>nav{pointer-events:auto;background:var(--paper);border-radius:3px}.wordmark{padding:0 10px;margin-left:-10px;font-size:12px}.main-nav{padding:0 3px}.main-nav a,.language-nav a{font-size:13px;min-height:40px}.main-nav [aria-current],.language-nav [aria-current]{background:#242424;color:var(--ink);border-radius:2px}.hero{padding-top:112px;padding-bottom:70px}.hero-title{justify-content:center;font-size:clamp(100px,11.9vw,180px);letter-spacing:-.04em;line-height:1;gap:.25em}.hero-signature{justify-content:center;gap:30px;margin-top:24px;font-size:13px}.hero-signature .text-link{position:absolute;right:var(--gutter)}.hero-stage{height:550px;margin-top:40px;max-width:1400px;margin-inline:auto}.hero-card-0{width:44%;left:4%;top:38px;--angle:-1deg;--spread-x:-22px;--spread-y:15px}.hero-card-1{width:29%;left:55%;top:0;--angle:1.5deg;--spread-x:30px;--spread-y:-8px}.hero-card-2{width:25%;left:73%;top:290px;--angle:-1deg;--spread-x:15px;--spread-y:22px}.hero-card-3{width:18%;left:49%;top:315px;--angle:2deg;--spread-x:-10px;--spread-y:12px}.hero-card-image{background:var(--media);padding:12px;box-shadow:none}.hero-card-image.treatment-print{padding:0;background:none}.hero-card-image.treatment-screen::before,.case-main.treatment-screen::before,.project-main-media.treatment-screen>div::before,.project-main-media.treatment-screen>a::before{content:none}.hero-card-label{font-size:13px;padding:10px 0;min-height:44px}.hero-index{margin-top:10px;max-width:1400px;margin-inline:auto}.hero-index>span:last-child{font-size:12px}.selected-work{padding-bottom:75px}.featured-case{display:grid;grid-template-columns:4fr 8fr;gap:clamp(40px,5vw,80px);align-items:center;margin-top:90px;padding-bottom:0}.case-info{min-width:0}.case-top{justify-content:flex-start;gap:25px;font-size:12px}.case-title{gap:12px;margin:24px 0}.case-title h2{font-size:clamp(48px,5.1vw,80px);letter-spacing:-.045em;line-height:1}.case-title svg{width:38px;height:38px}.case-title>span{display:none}.case-description{display:block;margin-bottom:20px}.case-description>p{font-size:clamp(23px,2vw,29px);line-height:1.28;letter-spacing:-.025em}.case-description>span{display:block;text-align:left;max-width:300px;font-size:12px;margin-top:25px}.case-media{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px;padding:0;background:none!important;overflow:visible;align-items:start}.case-media .case-main{position:relative;grid-column:1/12;grid-row:1;margin:0;padding:24px;background:var(--media);border-radius:0;box-shadow:none;overflow:visible}.case-media .case-support{grid-column:7/13;grid-row:1;margin:220px 0 0;padding:12px;background:var(--media);box-shadow:none;z-index:3}.case-cona .case-support{grid-column:1/6;margin-top:235px}.case-main.treatment-screen{position:relative}.case-main .case-media-link{display:block}.case-demo{position:absolute;inset:24px;pointer-events:none}.case-demo .video-media{height:100%}.case-demo .video-media>img{visibility:hidden}.case-demo video{pointer-events:none}.case-demo button{pointer-events:auto}.case-agrft80{grid-template-columns:8fr 4fr}.case-agrft80 .case-info{grid-column:2;grid-row:1}.case-agrft80 .case-media{grid-column:1;grid-row:1}.case-agrft80 .case-main{grid-column:2/13}.case-agrft80 .case-support{grid-column:1/6;margin-top:215px;padding:12px}.case-artopolis{grid-template-columns:3fr 9fr}.case-artopolis .case-media{padding-left:7vw}.case-artopolis .case-main{grid-column:1/-1;padding:30px}.case-topot .case-media{grid-template-columns:repeat(12,minmax(0,1fr));align-items:center}.case-topot .case-main{grid-column:1/8;grid-row:1;padding:0;background:none}.case-topot .case-support{grid-column:8/13;grid-row:1;margin:75px 0 0;padding:12px}.all-work-link{margin-top:90px}.art-selection{padding-top:60px}.personal-section{padding-block:100px}.personal-text{max-width:55ch}.collaboration{padding-bottom:75px}.footer-cta{margin-top:0}.footer-note{max-width:500px}.work-page .page-intro{padding-top:120px;padding-bottom:32px}.work-page .page-intro h1{font-size:clamp(64px,7vw,110px);letter-spacing:-.05em}.work-page .page-lead{font-size:20px;line-height:1.45;max-width:600px;margin-top:22px}.work-page .project-row{margin-top:22px;margin-bottom:90px;padding-top:25px}.project-previews{align-items:start;gap:20px}.project-preview{padding:14px;background:var(--media);margin-top:0}.project-preview.treatment-print,.project-preview.treatment-art{padding:0;background:none}.project-preview:nth-child(2){margin-top:35px}.project-preview:nth-child(3){margin-top:14px}.project-preview:nth-child(4){margin-top:60px}.project-preview:nth-child(5){margin-top:35px}.project-preview:nth-child(6){margin-top:85px}.project-summary p{max-width:700px}.project-heading h2{letter-spacing:-.045em}.project-intro h1,.page-intro h1{letter-spacing:-.05em}.dark-section :focus-visible,.project-art :focus-visible{outline-color:var(--accent)}.project-art .prose a{color:var(--accent)}.has-motion .case-main{transform:scale(calc(.94 + var(--case-progress,1) * .06));transform-origin:center;transition:transform .12s linear}.has-motion .case-support{transform:translateY(calc((1 - var(--case-progress,1)) * 45px));transition:transform .12s linear}.has-motion [data-arrive].will-arrive{opacity:1;translate:none}.has-motion .hero-card{transition:transform .2s var(--ease)}
@media(max-width:1199px) and (min-width:1024px){.hero-stage{height:470px}.hero-card-2{top:235px}.hero-card-3{top:205px}.case-media .case-support,.case-cona .case-support{margin-top:175px}.case-agrft80 .case-support{margin-top:175px}}
@media(max-width:1023px){.site-header{gap:12px}.hero{padding-top:120px;padding-bottom:60px}.hero-title{font-size:11.7vw;justify-content:center}.hero-stage{display:grid;grid-template-columns:1.2fr 1fr;gap:32px 38px;height:auto;max-width:800px;margin-top:40px;align-items:start}.hero-card{position:relative;inset:auto;width:auto;grid-row:auto;grid-column:auto;margin:0!important;transform:none}.hero-card-0{grid-column:1;grid-row:1}.hero-card-1{grid-column:2;grid-row:1;margin-top:38px!important}.hero-card-2{grid-column:2;grid-row:2;margin-top:32px!important}.hero-card-3{grid-column:1;grid-row:2;width:65%;justify-self:end}.hero-index{margin-top:32px}.featured-case,.case-agrft80,.case-artopolis{display:grid;grid-template-columns:1fr;gap:30px;margin-top:60px}.case-info,.case-agrft80 .case-info{grid-column:1;grid-row:1;max-width:650px}.case-media,.case-agrft80 .case-media{grid-column:1;grid-row:2}.case-title{margin:20px 0}.case-title h2{font-size:64px}.case-title>span{display:block}.case-description>p{font-size:28px}.case-description>span{margin-top:16px}.case-media{max-width:800px;width:100%;margin:auto;gap:20px}.case-media .case-support,.case-cona .case-support{margin-top:210px}.case-artopolis .case-media{padding-left:0}.case-topot .case-support{margin-top:0}.case-main .case-media-link{display:block}.all-work-link{margin-top:60px}.has-motion .case-main,.has-motion .case-support{transform:none}.work-page .page-intro{padding-top:120px;padding-bottom:25px}.work-page .page-lead{font-size:20px}.work-page .project-row{margin-bottom:65px}.project-preview{padding:10px}.project-preview:nth-child(2){margin-top:25px}.project-preview:nth-child(3){margin-top:10px}.project-preview:nth-child(4){margin-top:40px}}
@media(max-width:767px){.site-header{min-height:76px;grid-template-columns:1fr auto;padding:6px 12px;gap:0 8px}.wordmark{margin:0;padding-inline:6px;min-height:30px;font-size:11px}.language-nav{grid-column:2;grid-row:1}.language-nav a{min-height:30px;font-size:12px}.main-nav{grid-column:1/-1;grid-row:2;width:max-content;margin-left:0;gap:0}.main-nav a{min-height:34px;padding-inline:9px;font-size:12px}.hero{padding-top:114px;padding-bottom:50px}.hero-title{font-size:clamp(64px,20vw,110px);display:block;line-height:.98;letter-spacing:-.045em;white-space:normal;text-align:left}.hero-title>span+span{margin-top:0}.hero-signature{display:flex;justify-content:space-between;align-items:start;gap:12px;margin-top:25px}.hero-signature>p{font-size:12px;line-height:1.5;max-width:215px}.hero-signature .text-link{position:static;right:auto;font-size:11px;min-height:34px;margin:0;gap:8px;white-space:nowrap}.hero-stage{grid-template-columns:1fr 1fr;gap:25px 20px;margin-top:24px}.hero-card-0{grid-column:1/-1;grid-row:1}.hero-card-1{grid-column:1;grid-row:2;margin:0!important}.hero-card-2{grid-column:2;grid-row:2;margin-top:25px!important}.hero-card-3{grid-column:1;grid-row:3;width:100%;justify-self:auto}.hero-card-image{padding:10px}.hero-card-label{font-size:12px;min-height:44px}.hero-index{margin-top:20px}.hero-index>span:last-child{font-size:11px}.featured-case,.case-agrft80,.case-artopolis{gap:24px;margin-top:45px}.case-title h2{font-size:clamp(44px,14vw,65px)}.case-title{margin:17px 0}.case-title svg{width:32px;height:32px}.case-description>p{font-size:24px}.case-description>span{font-size:12px;margin-top:16px}.case-description{margin-bottom:10px}.case-media{grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}.case-media .case-main,.case-agrft80 .case-main{grid-column:1/-1;grid-row:1;padding:14px;margin:0}.case-demo{inset:14px}.case-media .case-support,.case-cona .case-support,.case-agrft80 .case-support{grid-column:1/8;grid-row:2;margin:-24px 0 0;padding:8px}.case-topot .case-main.treatment-print{grid-column:1/8;grid-row:1;padding:0}.case-topot .case-support{grid-column:8/13;grid-row:1;margin:0;padding:8px}.case-artopolis .case-main{padding:14px}.all-work-link{margin-top:50px}.personal-section{padding-block:65px}.personal-section h2{font-size:39px}.collaboration{padding-bottom:55px}.work-page .page-intro{padding-top:120px;padding-bottom:25px}.work-page .page-intro h1{font-size:64px}.work-page .page-lead{font-size:17px;margin-top:18px;max-width:330px}.work-page .project-row{margin-top:0;padding-top:22px;margin-bottom:55px}.project-previews{gap:14px}.project-preview{padding:8px}.project-preview:nth-child(2){margin-top:22px}.project-summary{margin-top:16px;margin-bottom:22px}.project-summary p{font-size:17px}.video-toggle{font-size:11px;min-height:44px}.footer-cta{margin-top:0}}

@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.has-motion .hero-card,.has-motion .case-main,.has-motion .case-support{transform:none;translate:none;scale:1;opacity:1}.has-motion [data-arrive].will-arrive{opacity:1;translate:none}}
@media print{.site-header,.site-footer,.skip-link,.print-cv,.cv-nav,.back-link,.video-toggle{display:none!important}body{background:#fff;color:#000;font-size:11pt}.wrap{padding:0;max-width:none}.page-intro{padding:0 0 25px}.page-intro h1{font-size:36pt}.page-lead{font-size:14pt;max-width:none;margin-top:15px}.cv-section{display:block;border-top:1px solid #aaa;margin-bottom:22px;padding-top:12px}.cv-section>h2{font-size:16pt;max-width:none;margin-bottom:15px;break-after:avoid}.cv-row{grid-template-columns:100px 1fr;gap:20px;break-inside:avoid;padding-bottom:12px}.cv-row>span{font-size:9pt}.cv-row>div{font-size:10pt}[data-arrive]{opacity:1!important;translate:none!important}@page{size:A4;margin:17mm}}

/* Clean portfolio templates, without decorative labels. */
.cleanup-home .hero{padding-bottom:65px}
.cleanup-home .hero-stage{margin-top:38px;height:660px}
.cleanup-home .all-work-link{margin-top:24px;font-size:clamp(27px,3vw,42px);padding-block:24px}
.cleanup-home .all-work-link svg{width:35px;height:35px}
.cleanup-home .art-selection{padding-block:70px 80px}
.cleanup-home .art-heading{display:block;margin:0 0 55px}
.cleanup-home .art-grid{margin-bottom:0}
.cleanup-home .art-grid figcaption{font-size:14px;margin-top:18px}
.cleanup-home .personal-section{padding-block:90px;gap:clamp(40px,7vw,100px)}
.cleanup-home .personal-section h2{margin:0 0 28px;font-size:clamp(34px,3.6vw,54px)}
.cleanup-home .personal-text{max-width:47ch;font-size:clamp(18px,1.55vw,23px);line-height:1.5}
.footer-clean .footer-invitation{padding-block:45px}
.clean-contact>h2{margin-top:42px}
.clean-contact .contact-address{margin:45px 0 16px}
.clean-contact .email-link{margin-top:0}

.project-clean .project-intro{display:flex;justify-content:space-between;align-items:end;gap:30px;padding-block:125px 40px}
.project-clean .project-intro h1{margin:0}
.clean-project-period{font-size:14px;color:var(--muted);padding-bottom:12px;white-space:nowrap}
.clean-project-media{padding:18px;background:var(--media)}
.project-clean .project-story{display:block;padding-block:70px 85px}
.project-clean .prose{max-width:850px;margin-inline:auto;font-size:clamp(20px,1.85vw,27px);line-height:1.5}
.project-clean .prose .text-link{margin-top:25px;font-size:var(--cta-text-size)}
.project-clean .project-gallery{gap:55px 32px;margin-bottom:0}
.clean-project-credits{padding-block:40px 55px;font-size:13px;line-height:1.6;color:var(--muted)}
.clean-project-credits p+p{margin-top:6px}
.clean-related-work{display:grid;grid-template-columns:1fr 1fr;gap:35px;padding-block:35px 75px;border-top:1px solid var(--line)}
.clean-related-card{display:block;min-width:0}
.clean-related-card img{width:100%;height:auto;max-height:310px;object-fit:contain;object-position:left bottom}
.clean-related-card>span{display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:clamp(24px,2.4vw,35px);letter-spacing:-.025em;margin-top:20px;min-height:44px}
.clean-related-card svg{color:var(--accent);transition:transform .3s var(--ease)}

.clean-work .page-intro{padding-bottom:40px}
.clean-work .page-intro h1,.clean-about .page-intro h1{margin-top:0}
.clean-work .project-row{margin:0 0 70px;padding-top:24px}
.clean-work .project-heading{display:flex;justify-content:space-between;gap:24px;margin-bottom:28px}
.clean-work .project-heading h2{min-width:0;font-size:clamp(36px,4.6vw,70px)}
.clean-work .project-preview:only-child{max-width:800px}
.clean-about .page-intro{padding-block:125px 55px}
.clean-about .about-grid{padding-block:0 80px}
.clean-about .prose{font-size:clamp(19px,1.55vw,23px);line-height:1.5}
.project-clean .project-intro{flex-wrap:wrap;row-gap:12px}
.project-clean .project-intro h1{max-width:100%}
.project-clean .project-main-media.treatment-print,.project-clean .project-main-media.treatment-art{background:transparent;padding-block:0}
.project-clean .project-main-media.treatment-screen>div{border-radius:0;box-shadow:none}
.project-clean .project-main-media figcaption{font-size:13px}
.project-art .clean-project-period,.project-art .clean-project-credits{color:var(--muted)}
.project-art .clean-related-work{border-color:var(--line)}
.project-art .clean-related-card svg{color:var(--accent)}

@media(max-width:1199px) and (min-width:1024px){
 .cleanup-home .hero-stage{height:500px}
}
@media(max-width:1023px){
 .cleanup-home .hero-stage{height:auto;margin-top:36px}
 .cleanup-home .all-work-link{margin-top:40px}
 .cleanup-home .art-selection{padding-block:55px 65px}
 .cleanup-home .personal-section{padding-block:70px}
 .project-clean .project-intro{padding-top:120px}
 .project-clean .project-story{padding-block:55px 65px}
}
@media(max-width:767px){
 .clean-work .page-intro{padding-block:115px 30px}
 .clean-work .project-row{margin-bottom:45px;padding-top:20px}
 .clean-work .project-heading{gap:18px;margin-bottom:22px}
 .clean-work .project-heading h2{font-size:clamp(32px,9vw,40px)}
 .clean-about .page-intro{padding-block:115px 30px}
 .clean-about .about-grid{padding-bottom:55px;gap:30px}
 .clean-about .prose{font-size:18px}
 .cleanup-home .hero{padding-bottom:45px}
 .cleanup-home .hero-stage{margin-top:28px;gap:22px 18px}
 .cleanup-home .all-work-link{margin-top:26px;font-size:29px;padding-block:20px}
 .cleanup-home .art-selection{padding-block:45px}
 .cleanup-home .art-heading{margin-bottom:35px}
 .cleanup-home .art-heading h2{font-size:38px}
 .cleanup-home .art-grid figure:last-child{margin-bottom:0}
 .cleanup-home .personal-section{padding-block:55px;gap:30px}
 .cleanup-home .personal-section h2{font-size:34px;margin-bottom:22px}
 .cleanup-home .personal-text{font-size:18px}
 .footer-clean .footer-invitation{padding-block:32px}
 .clean-contact>h2{margin-top:55px;font-size:48px}
 .clean-contact .contact-address{margin-top:38px}
 .project-clean .project-intro{padding-block:115px 28px;gap:20px}
 .project-clean .project-intro h1{font-size:clamp(52px,16vw,72px)}
 .clean-project-period{font-size:12px;padding-bottom:6px}
 .clean-project-media{padding:8px}
 .project-clean .project-story{padding-block:40px 50px}
 .project-clean .prose{font-size:19px}
 .project-clean .project-gallery{gap:30px}
 .clean-project-credits{padding-block:30px 40px;font-size:12px}
 .clean-related-work{gap:24px;padding-block:28px 45px}
 .clean-related-card img{max-height:180px}
 .clean-related-card>span{font-size:22px;margin-top:12px;gap:10px}
 .clean-related-card svg{width:25px;height:25px}
}

/* Compact, heavy display type. Archivo Black's Regular face is already black. */
h1,h2,h3,.hero-title,.page-intro h1,.project-intro h1,.case-title h2,
.project-heading h2,.art-heading h2,.personal-section h2,.cv-section>h2,
.prose>h2,.professional-path h2,.contact-content>h2,.section-label h2,
.footer-cta,.all-work-link,.clean-related-card>span{
 font-family:'Archivo Black','Arial Black',sans-serif;
 font-weight:400;
 letter-spacing:-.035em;
}
.wordmark{font-weight:700}
.main-nav a,.language-nav a,.hero-card-label{font-weight:600}
.hero-title{font-size:clamp(84px,9.2vw,128px);line-height:1.05;letter-spacing:-.045em;gap:.22em}
.page-intro h1,.project-intro h1{font-size:var(--page-heading-size);line-height:1.08}
.cv-page .page-intro,.text-page .page-intro{padding-block:125px 40px}
.cv-page .page-intro h1,.text-page .page-intro h1{margin-top:0}
.cv-page .print-cv,.text-page .page-intro .text-link{margin-top:20px}
.work-page .page-intro h1{font-size:var(--page-heading-size)}
.clean-work .project-heading h2{font-size:clamp(30px,3.5vw,52px);line-height:1.12;letter-spacing:-.025em}
.case-title h2{font-size:clamp(40px,4vw,62px);line-height:1.1}
.cleanup-home .all-work-link{font-size:clamp(24px,2.5vw,34px);letter-spacing:-.025em}
.art-heading h2{font-size:clamp(34px,4vw,58px);line-height:1.12}
.cleanup-home .personal-section h2{font-size:clamp(28px,2.8vw,40px);line-height:1.18}
.footer-cta{font-size:clamp(56px,8vw,112px);line-height:1.12}
.footer-cta svg{width:clamp(44px,6vw,85px);height:clamp(44px,6vw,85px)}
.contact-content>h2{font-size:clamp(38px,4.2vw,60px);line-height:1.14}
.clean-related-card>span{font-size:clamp(21px,1.9vw,28px);letter-spacing:-.02em;line-height:1.2}
.cv-section>h2{font-size:21px;letter-spacing:-.02em;line-height:1.3}
.prose>h2{font-size:28px;letter-spacing:-.025em;line-height:1.25}
.prose>h3{font-size:22px;letter-spacing:-.02em}
@media(max-width:1023px){
 .hero-title{font-size:9.3vw}
}
@media(max-width:767px){
 .hero-title{font-size:clamp(48px,14.4vw,72px);line-height:1.08;letter-spacing:-.04em}
 .page-intro h1,.project-clean .project-intro h1,.work-page .page-intro h1{font-size:var(--page-heading-size);line-height:1.12;letter-spacing:-.035em}
 .cv-page .page-intro,.text-page .page-intro{padding-block:115px 30px}
 .clean-work .project-heading h2{font-size:clamp(26px,7.2vw,34px);line-height:1.16;letter-spacing:-.02em}
 .case-title h2{font-size:38px}
 .cleanup-home .all-work-link{font-size:25px}
 .cleanup-home .art-heading h2{font-size:30px;line-height:1.15}
 .cleanup-home .personal-section h2{font-size:28px;line-height:1.2}
 .footer-cta{font-size:clamp(44px,12vw,58px);letter-spacing:-.035em}
 .footer-cta svg{width:40px;height:40px;flex-shrink:0}
 .clean-contact>h2{font-size:38px;letter-spacing:-.03em}
 .clean-related-card>span{font-size:20px;letter-spacing:-.02em}
 .cv-section>h2{font-size:21px}
 .prose>h2{font-size:25px}
}
@media print{
 .cv-page .page-intro{padding:0 0 25px}
 .page-intro h1{font-size:30pt}
 .cv-section>h2{font-size:14pt}
}

/* Permanent monochrome screen palette and compact spacing. */
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}
.wordmark{font-family:'Archivo Black','Arial Black',sans-serif;font-weight:400;font-size:18px;letter-spacing:-.025em}
.cv-row a{text-decoration:underline;text-underline-offset:3px}
.video-toggle{border:0}
.cleanup-home .hero{padding-block:96px 40px}
.cleanup-home .hero-stage{margin-top:0;height:clamp(536px,calc(36vw + 168px),720px)}
.cleanup-home .hero-card-0{top:24px}
.cleanup-home .hero-card-2{top:clamp(256px,calc(18vw + 70px),356px)}
.cleanup-home .hero-card-3{top:clamp(262px,calc(18vw + 76px),362px)}
.cleanup-home .all-work-link{margin-top:12px;padding-block:18px}
.cleanup-home .art-selection{padding-block:44px}
.cleanup-home .art-heading{margin-bottom:32px}
.cleanup-home .art-grid{gap:28px}
.cleanup-home .art-grid figure:nth-child(2){margin-top:44px}
.cleanup-home .art-grid figure:nth-child(3){margin-top:0}
.cleanup-home .personal-section{padding-block:60px;gap:clamp(32px,5vw,72px)}
.cleanup-home .personal-section h2{margin-bottom:20px}
.cleanup-home .personal-text{line-height:1.45}
.cleanup-home .personal-section .text-link{margin-top:16px}
.footer-clean .footer-invitation{padding-block:28px}
.cv-page .page-intro{display:flex;justify-content:space-between;align-items:end;gap:24px;padding-block:96px 24px}
.cv-page .print-cv{margin-top:0;margin-bottom:8px}
.cv-nav{max-width:none;gap:4px 20px;margin-bottom:28px}
.cv-section{gap:40px;margin-bottom:44px;padding-top:20px;scroll-margin-top:8px}
.cv-row{grid-template-columns:140px minmax(0,1fr);gap:24px;padding-bottom:16px}
.cv-row>div{line-height:1.5}
.cv-row p+p{margin-top:8px}
.cv-notes{margin-bottom:44px}
@media(max-width:1023px){
 .cleanup-home .hero-stage{height:auto;gap:20px 28px}
 .cleanup-home .hero-card{top:auto}
 .cleanup-home .hero-card-1{margin-top:20px!important}
 .cleanup-home .hero-card-2{margin-top:16px!important}
 .cleanup-home .all-work-link{margin-top:24px}
 .cv-row{grid-template-columns:100px minmax(0,1fr);gap:20px}
}
@media(max-width:767px){
 .wordmark{font-size:15px;min-height:30px}
 .cleanup-home .hero{padding-block:104px 28px}
 .cleanup-home .hero-stage{margin-top:0;gap:16px 18px}
 .cleanup-home .hero-card-1{margin-top:0!important}
 .cleanup-home .hero-card-2{margin-top:12px!important}
 .cleanup-home .all-work-link{margin-top:16px;padding-block:16px}
 .cleanup-home .art-selection{padding-block:30px}
 .cleanup-home .art-heading{margin-bottom:24px}
 .cleanup-home .art-grid{gap:28px}
 .cleanup-home .art-grid figure:nth-child(2){margin-top:0}
 .cleanup-home .personal-section{padding-block:36px;gap:24px}
 .cleanup-home .personal-section h2{margin-bottom:16px}
 .footer-clean .footer-invitation{padding-block:24px}
 .cv-page .page-intro{padding-block:104px 20px;gap:16px}
 .cv-page .print-cv{font-size:12px;gap:12px;margin-bottom:0}
 .cv-nav{gap:2px 16px;margin-bottom:24px}
 .cv-section{gap:18px;margin-bottom:32px;padding-top:18px}
 .cv-row{grid-template-columns:85px minmax(0,1fr);gap:16px;padding-bottom:16px}
 .cv-notes{margin-bottom:32px}
}
@media print{
 :root{color-scheme:light;--paper:#fff;--ink:#000;--muted:#555;--accent:#000;--line:#aaa}
 .cv-page .page-intro{display:block;padding:0 0 25px}
 .cv-section{margin-bottom:22px;padding-top:12px}
 .cv-row{grid-template-columns:100px 1fr;gap:20px;padding-bottom:12px}
}

/* Portfolio pilot: stationary links, an open grid and bounded media motion. */
.site-header a{min-height:44px}
.portfolio-pilot{--ease:cubic-bezier(.22,1,.36,1)}
.portfolio-pilot .hero{padding-block:128px 44px;max-width:1540px}
.pilot-orientation{max-width:740px;font-size:clamp(22px,2.1vw,30px);line-height:1.3;letter-spacing:-.02em;margin-bottom:40px}
.pilot-project-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:56px 54px;align-items:start}
.pilot-project{min-width:0}
.pilot-project:nth-child(2){margin-top:72px}
.pilot-project:nth-child(4){margin-top:44px}
.pilot-project-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:64px;margin-bottom:16px}
.pilot-project-heading h2{font-size:clamp(34px,3.6vw,54px);line-height:1.12;letter-spacing:-.03em}
.pilot-project-heading svg{width:28px;height:28px;flex-shrink:0;transition:transform 220ms var(--ease)}
.pilot-project-media{position:relative;isolation:isolate;outline:1px solid transparent;transition:outline-color 220ms var(--ease)}
.pilot-project-media:has(:focus-visible){outline-color:transparent}
.pilot-project-media img{width:100%;height:auto}
.pilot-project-media.treatment-print,.pilot-project-media.treatment-art{max-width:420px}
.pilot-project-media.treatment-print img,.pilot-project-media.treatment-art img{object-fit:contain}
.pilot-media-link{position:absolute;inset:0;z-index:2;display:block}
.pilot-media-link:focus-visible{outline-offset:6px}
.pilot-project-media .video-toggle{z-index:3;border-radius:0;box-shadow:none}
.portfolio-pilot .video-toggle,.project-pilot .video-toggle{font-size:13px;min-height:44px}
.pilot-media-frame,.video-media[data-motion]{overflow:hidden;background:var(--media)}
[data-motion-layer]{transform:translateY(var(--motion-y,0px)) scale(var(--motion-scale,1));transform-origin:center}
.arrival-preparing,.arrival-preparing > *{transition:none!important}
.motion-ready [data-motion-layer]{transition:transform 640ms cubic-bezier(.22,1,.36,1)}
.motion-ready:not(.motion-arrived) [data-motion-layer]{transform:translateY(1%) scale(1.025)}
.motion-entering [data-motion-layer]{animation:pilot-media-enter 640ms cubic-bezier(.22,1,.36,1) both}
@keyframes pilot-media-enter{from{transform:translateY(1%) scale(1.025)}to{transform:translateY(0) scale(1)}}
.motion-settled [data-motion-layer]{transition:transform 140ms ease-out}
.video-picture{position:relative;width:100%}
.video-picture>img{width:100%;height:auto}
.video-picture>video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;background:var(--media)}
.video-media.is-playing .video-picture>video{opacity:1}
.portfolio-pilot .all-work-link{font-family:inherit;font-weight:500;font-size:17px;letter-spacing:0;min-height:44px;width:max-content;gap:20px;border:0;padding:0;margin-top:40px}
.portfolio-pilot .all-work-link svg{width:24px;height:24px;transition:transform 220ms var(--ease)}
.portfolio-pilot .art-selection{padding-block:32px 56px;border-top:1px solid var(--line)}
.portfolio-pilot .art-heading h2{font-size:32px}
.portfolio-pilot .art-grid{gap:40px;align-items:center}
.portfolio-pilot .art-grid figure{margin-top:0}
.portfolio-pilot .art-grid img{max-height:390px;object-fit:contain}
.portfolio-pilot .art-grid a{transform:none;transition:none}
.portfolio-pilot .personal-section{max-width:1540px;padding-block:44px 64px;border-top:1px solid var(--line);grid-template-columns:minmax(0,.65fr) minmax(0,1.35fr);align-items:center}
.portfolio-pilot .personal-portrait{max-width:300px}
.portfolio-pilot .personal-text{max-width:52ch;font-size:clamp(19px,1.55vw,23px)}

.project-pilot .pilot-case-head{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.5fr);align-items:start;gap:48px;padding-block:128px 40px;max-width:1540px}
.project-pilot .pilot-case-title h1{font-size:clamp(48px,5.2vw,76px);line-height:1.08}
.project-pilot .clean-project-period{margin-top:18px;padding:0;font-size:15px}
.project-pilot .pilot-case-intro{font-size:clamp(20px,1.7vw,25px);line-height:1.45;max-width:760px;margin-top:4px}
.project-pilot .project-main-media{max-width:1540px}
.project-pilot .clean-project-media{padding:0;background:transparent}
.project-pilot .project-main-media.treatment-screen>div::before{display:none}
.project-pilot .project-story{padding-block:48px 56px}
.project-pilot .prose{font-size:clamp(20px,1.7vw,25px);line-height:1.5;max-width:760px}
.project-pilot .project-gallery{gap:32px;max-width:1540px}
.project-pilot .project-gallery figure{margin-top:0}
.project-pilot .project-gallery figure:last-child:nth-child(odd){max-width:900px}
.project-pilot .clean-project-credits{padding-block:28px 40px}
.project-pilot .clean-related-work{padding-block:28px 44px}
.project-pilot .clean-related-card img{max-height:200px}
.project-pilot .clean-related-card>span{font-family:inherit;font-size:20px;letter-spacing:0}

.footer-compact{padding-block:20px}
.footer-main{display:flex;align-items:center;justify-content:flex-start;gap:clamp(28px,3vw,48px)}
.footer-main a{font-family:'Archivo Black','Arial Black',sans-serif;font-weight:400}
.footer-email{display:inline-flex;align-items:center;min-height:44px;font-size:24px;letter-spacing:-.025em;overflow-wrap:anywhere}
.footer-links{display:flex;align-items:center;gap:32px;font-size:18px}
.footer-links a{display:flex;align-items:center;min-height:44px}
.footer-compact .footer-bottom{justify-content:flex-start;flex-wrap:nowrap;gap:24px;padding:0;border:0;margin-top:12px;font-size:12px;color:var(--muted)}
.footer-compact .footer-bottom>span,.footer-compact .footer-bottom>a,.footer-compact .footer-bottom>button{white-space:nowrap}
.footer-copyright{display:inline-flex;align-items:center;gap:6px}
.footer-bottom .footer-copyright a{color:var(--muted)}
.footer-compact .footer-bottom>a{gap:8px}
.footer-compact>.contact-content{display:none}
.footer-compact>.contact-content:target{display:block;padding-top:24px}
.contact-dialog{inset:0 0 0 auto;width:min(500px,100%);max-width:100%;height:100dvh;max-height:100dvh;box-shadow:none}
.contact-dialog .contact-content{padding:32px;max-width:none}
.contact-dialog .clean-contact>h2{font-size:36px;margin-top:60px;letter-spacing:-.025em;line-height:1.15}
.contact-dialog .clean-contact .contact-address{margin:32px 0 12px}
.contact-dialog .email-link{font-size:clamp(22px,2vw,28px);letter-spacing:-.025em}
.contact-dialog .copy-email{font-size:14px}
.contact-dialog .text-link{font-size:16px}
.contact-dialog .text-link svg{width:20px;height:20px}
.contact-close{right:32px;top:16px;font-size:14px}

.contact-dialog::backdrop{animation:backdrop-in 240ms ease-out both}

.contact-dialog.is-closing::backdrop{animation:backdrop-out var(--popup-exit-duration) ease-in both}

@view-transition{navigation:auto}
[data-project-key="cona"]{view-transition-name:cona-media}
::view-transition-group(cona-media){animation-duration:480ms;animation-timing-function:cubic-bezier(.22,1,.36,1)}

@media(max-width:1023px){
 .pilot-project-grid{gap:36px 28px}
 .pilot-project:nth-child(2){margin-top:48px}
 .pilot-project:nth-child(4){margin-top:28px}
 .pilot-project-heading{min-height:52px;gap:14px;margin-bottom:12px}
 .pilot-project-heading h2{font-size:32px}
 .pilot-project-heading svg{width:24px;height:24px}
 .project-pilot .pilot-case-head{gap:28px}
 .portfolio-pilot .art-grid{gap:24px}
 .footer-email{font-size:22px}
 .footer-links{gap:20px}
}
@media(max-width:767px){
 .site-header{padding-inline:var(--gutter);padding-block:6px;min-height:100px}
 .wordmark,.language-nav a,.main-nav a{min-height:44px}
 .wordmark{padding:0}
 .main-nav{margin-left:-9px}
 .portfolio-pilot .hero{padding-block:128px 32px}
 .pilot-orientation{font-size:22px;line-height:1.3;margin-bottom:26px}
 .pilot-project-grid{grid-template-columns:minmax(0,1fr);gap:32px}
 .pilot-project:nth-child(n){margin-top:0}
 .pilot-project-heading{min-height:44px;margin-bottom:12px}
 .pilot-project-heading h2{font-size:34px}
 .pilot-project-media.treatment-print,.pilot-project-media.treatment-art{max-width:300px}
 .pilot-project-media .video-toggle{right:8px;bottom:8px;font-size:13px;padding:6px 10px}
 .portfolio-pilot .all-work-link{margin-top:28px;font-size:16px}
 .portfolio-pilot .art-selection{padding-block:28px 36px}
 .portfolio-pilot .art-heading h2{font-size:28px}
 .portfolio-pilot .art-grid img{max-height:none}
 .portfolio-pilot .personal-section{grid-template-columns:minmax(0,1fr);padding-block:32px 40px}
 .portfolio-pilot .personal-portrait{max-width:220px}
 .portfolio-pilot .personal-section h2{font-size:28px}
 .project-pilot .pilot-case-head{grid-template-columns:minmax(0,1fr);gap:22px;padding-block:128px 28px}
 .project-pilot .pilot-case-title h1{font-size:48px}
 .project-pilot .clean-project-period{margin-top:12px;font-size:14px}
 .project-pilot .pilot-case-intro{font-size:20px;margin:0}
 .project-pilot .project-story{padding-block:32px 40px}
 .project-pilot .project-gallery{gap:28px}
 .project-pilot .clean-related-card img{max-height:140px}
 .project-pilot .clean-related-card>span{font-size:18px}
 .footer-compact{padding-block:12px}
 .footer-main{flex-direction:column;align-items:flex-start;gap:0}
 .footer-email{font-size:18px}
 .footer-links{justify-content:flex-start;width:auto;font-size:15px;gap:18px}
 .footer-compact .footer-bottom{flex-wrap:wrap;gap:0 14px;margin-top:4px}
 .contact-dialog .contact-content{padding:24px}
 .contact-close{right:24px}
}
@media(prefers-reduced-motion:reduce){
 [data-motion-layer]{transform:none!important;transition:none!important}
 ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}
}

/* CV follows the original site's single-column, date-first reading order. */
.cv-page{width:calc(100% - 2 * var(--gutter));max-width:930px;padding-inline:0}
.cv-page .page-intro{padding-block:76px 44px;align-items:center}
.cv-page .page-intro h1{font-size:38px;line-height:1.1}
.cv-page .cv-section{display:block;border:0;padding-top:0;margin-bottom:54px}
.cv-page .cv-section>h2{max-width:none;font-size:24px;line-height:1.3;text-transform:uppercase;margin-bottom:24px}
.cv-page .cv-row{display:block;padding:0;margin-bottom:22px;font-size:18px;line-height:1.7}
.cv-page .cv-row p{margin:0}
.cv-page .cv-row strong{font-weight:700}
.cv-page .cv-row a{text-decoration:underline;text-underline-offset:3px}
.work-references{max-width:930px;margin:40px 0 64px}
.work-references>h2{font-size:24px;margin:48px 0 24px}
.work-references p{font-size:17px;margin:0 0 18px}
.work-references ul{list-style:none;padding:0;margin:0}
.work-references li{font-size:17px;margin-bottom:18px}
.work-references a{font-weight:700;text-decoration:underline;text-underline-offset:4px}
@media(max-width:767px){
 .cv-page .page-intro{padding-block:128px 32px;align-items:flex-start;flex-wrap:wrap}
 .cv-page .page-intro h1{font-size:32px}
 .cv-page .cv-section{margin-bottom:38px}
 .cv-page .cv-section>h2{font-size:21px;line-height:1.4;margin-bottom:20px}
 .cv-page .cv-row{font-size:16px;line-height:1.65;margin-bottom:20px}
 .work-references{margin-block:28px 40px}
 .work-references>h2{font-size:22px;margin-top:36px}
}
@media print{
 .cv-page{width:100%;max-width:none}
 .cv-page .page-intro{padding:0 0 22px}
 .cv-page .cv-section{margin-bottom:24px}
 .cv-page .cv-section>h2{font-size:14pt;margin-bottom:12px}
 .cv-page .cv-row{font-size:10pt;line-height:1.5;margin-bottom:10px;break-inside:avoid}
}

/* Work uses the same project sentence as the individual project page. */
.clean-work .project-heading{margin-bottom:16px}
.clean-work .work-project-hero{max-width:60ch;margin:0 0 28px;font-family:'Archivo Black','Arial Black',sans-serif;font-size:clamp(20px,1.8vw,27px);font-weight:400;line-height:1.35;letter-spacing:-.015em;text-wrap:pretty}
@media(max-width:767px){
 .clean-work .project-heading{margin-bottom:12px}
 .clean-work .work-project-hero{margin-bottom:22px;font-size:20px;line-height:1.4}
}

/* Header: centered labels, straight motion and full button surfaces. */
.site-header .main-nav{padding:0;gap:0;border-radius:3px;background:#171717}
.site-header .nav-links{margin:0;gap:0}
.site-header .wordmark,.site-header .main-nav a,.site-header .language-nav a{
 min-height:44px;
 justify-content:center;
 text-align:center;
 border-radius:2px;
 color:var(--ink);
 background-color:#171717;
 background-image:none;
}
.site-header .nav-label{display:block}
.site-header .main-nav a{padding-inline:14px;font-size:14px;font-weight:600;border-radius:0}
.site-header .main-nav>a:first-child,.site-header .nav-links li:first-child>a{border-radius:3px 0 0 3px}
.site-header .main-nav>a:last-child{border-radius:0 3px 3px 0}
.site-header .wordmark{padding-inline:10px;background-color:var(--paper);background-image:none}
.site-header .language-nav{gap:0;border-radius:3px;background:#171717}
.site-header .language-nav a{padding-inline:10px;border-radius:0}
.site-header .language-nav a:first-child{border-radius:3px 0 0 3px}
.site-header .language-nav a:last-child{border-radius:0 3px 3px 0}
.site-header .main-nav a[aria-current],.site-header .main-nav .current-menu-item>a,.site-header .language-nav a[aria-current]{
 color:var(--ink);background-color:#444;
}
.site-header [data-contact-open] .nav-label{display:flex;align-items:center;gap:8px}
.site-header .contact-nav-arrow{width:14px;height:14px;flex-shrink:0}
.site-header .wordmark:focus-visible,.site-header .main-nav a:focus-visible,.site-header .language-nav a:focus-visible{
 outline:none;
}

.site-header .wordmark:active,.site-header .main-nav a:active,.site-header .language-nav a:active{
 transition:none;
}
.site-header .main-nav a[aria-current]:active,.site-header .main-nav .current-menu-item>a:active,.site-header .language-nav a[aria-current]:active{background-color:#444}

@media(max-width:767px){
 .site-header .main-nav{margin-left:0;gap:0}
 .site-header .main-nav a{padding-inline:12px;font-size:13px}
 .site-header .wordmark{padding-inline:8px;margin-left:-8px}
}
@media(prefers-reduced-motion:reduce){
 .site-header .wordmark,.site-header .main-nav a,.site-header .language-nav a,.site-header .nav-label{transition:none}
 .site-header a .nav-label{transform:none!important}
}

/* Contact fits its content; email is the primary action. */
.contact-dialog{inset:16px 16px auto auto;width:min(460px,calc(100vw - 32px));height:auto;max-height:calc(100dvh - 32px);border-radius:3px;background:#171717}
.contact-dialog .contact-content{padding:20px 24px}
.contact-dialog .clean-contact>h2{margin:0;font-size:26px;line-height:1.2;letter-spacing:-.025em}
.contact-dialog .screen-reader-text{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.contact-dialog .clean-contact .contact-address{display:flex;flex-direction:column;align-items:flex-end;width:max-content;max-width:100%;margin:0}
.contact-dialog .email-link{display:inline-flex;align-items:center;min-height:44px;max-width:100%;margin:0;font-family:'Archivo Black','Arial Black',sans-serif;font-size:clamp(22px,3vw,32px);font-weight:400;letter-spacing:-.035em;line-height:1.3;background:none;border:0;outline:none;box-shadow:none;padding:0}
.contact-email-label{display:block}
.contact-dialog .copy-email{display:inline-flex;align-items:center;flex:none;min-height:32px;margin:0 0 0 auto;padding:0;font-size:12px;border-radius:3px;text-decoration:none;white-space:nowrap}
.contact-dialog .copy-feedback{position:relative;display:inline-flex}
.contact-dialog .copy-email:is(.is-pointer-hovered,:focus-visible,:active)>.copy-feedback{transform:translateY(var(--interaction-lift));transition-duration:var(--interaction-duration)}
.contact-dialog .copy-email:is(.is-pointer-hovered,:focus-visible,:active,.is-copied){background-color:transparent;animation:none}
.contact-dialog .copy-confirmation{position:absolute;left:calc(100% + 6px);top:50%;width:14px;height:14px;opacity:0;transform:translateY(-50%);transition:opacity 180ms ease}
.contact-dialog .copy-confirmation path{stroke-dasharray:24;stroke-dashoffset:24}
.contact-dialog .is-copied .copy-confirmation{opacity:1}
.contact-dialog .is-copied .copy-confirmation path{animation:copy-check-in 320ms ease-out forwards}
@keyframes copy-check-in{to{stroke-dashoffset:0}}
@media(prefers-reduced-motion:reduce){
 .contact-dialog .copy-email.is-copied{animation:none}
 .contact-dialog .copy-confirmation{transition:none}
 .contact-dialog .is-copied .copy-confirmation path{animation:none;stroke-dashoffset:0}
}
.contact-dialog .copy-email[hidden]{display:none}
.contact-dialog .copy-status:empty{display:none}
.contact-dialog .text-link{width:100%;margin-top:20px;padding-top:16px;border-top:1px solid #3d3d3d;justify-content:space-between}
.contact-dialog .contact-social-links{display:flex;align-items:center;gap:20px;width:100%;margin:0;padding:0;border:0}
.contact-dialog .contact-social-links .text-link{width:auto;min-width:0;margin:0;padding:0;border:0;gap:10px;justify-content:flex-start}
.action-icon{width:1em;height:1em;flex:none}
.footer-links a,.consent-settings-link{display:inline-flex;align-items:center;gap:8px}
.footer-links{flex-wrap:nowrap}
@media(max-width:767px){
 .contact-dialog{inset:12px 12px auto;width:calc(100vw - 24px);max-height:calc(100dvh - 24px)}
 .contact-dialog .contact-content{padding:18px}
 .contact-dialog .clean-contact>h2{font-size:24px}
 .contact-dialog .email-link{font-size:clamp(18px,5.5vw,26px)}
 .contact-dialog .contact-social-links{gap:8px}
 .contact-dialog .contact-social-links .text-link{font-size:clamp(12px,3.1vw,13px);gap:5px}
 .contact-dialog .contact-social-links .text-link svg{width:1em;height:1em}
 .contact-dialog .copy-email{font-size:12px}
}
@media(prefers-reduced-motion:reduce){
 .contact-email-label{transition:none;transform:none!important}
}

/* Shared interaction system: surface fill / text fill. Layout stays with components. */
@property --liquid-level{syntax:'<percentage>';inherits:false;initial-value:-14%}
@property --ocean-tide{syntax:'<length>';inherits:false;initial-value:0px}
@property --ocean-bob{syntax:'<percentage>';inherits:false;initial-value:0%}
:root{
 --accent-deep:#173e68;
 --accent-light:#85d2ef;
 --accent-foam:#f0faff;
 --accent-gradient:linear-gradient(180deg,#95dcf4,#74c7e9 55%,#58acd6 82%,#3984b5 96%,#286ba1);
 --ocean-water:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20720%20120%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22sea%22%20x1%3D%220%22%20y1%3D%2254%22%20x2%3D%220%22%20y2%3D%22120%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%2395dcf4%22%20%2F%3E%3Cstop%20offset%3D%22.55%22%20stop-color%3D%22%2374c7e9%22%20%2F%3E%3Cstop%20offset%3D%22.82%22%20stop-color%3D%22%2358acd6%22%20%2F%3E%3Cstop%20offset%3D%22.96%22%20stop-color%3D%22%233984b5%22%20%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23286ba1%22%20%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Cpath%20fill%3D%22url%28%23sea%29%22%20d%3D%22M-2%2060%20L0%2060%20C18%2060%2028%2054%2046%2055C64%2056%2069%2061%2088%2060C108%2059%20112%2053%20130%2054C148%2055%20151%2061%20171%2060C192%2059%20203%2054%20219%2056C229%2057%20234%2060%20240%2060%20C258%2060%20268%2054%20286%2055C304%2056%20309%2061%20328%2060C348%2059%20352%2053%20370%2054C388%2055%20391%2061%20411%2060C432%2059%20443%2054%20459%2056C469%2057%20474%2060%20480%2060%20C498%2060%20508%2054%20526%2055C544%2056%20549%2061%20568%2060C588%2059%20592%2053%20610%2054C628%2055%20631%2061%20651%2060C672%2059%20683%2054%20699%2056C709%2057%20714%2060%20720%2060%20L722%2060%20V122%20H-2%20Z%22%20%2F%3E%3Cpath%20fill%3D%22%23f4fbff%22%20d%3D%22M-2%2060%20L0%2060%20C18%2060%2028%2054%2046%2055C64%2056%2069%2061%2088%2060C108%2059%20112%2053%20130%2054C148%2055%20151%2061%20171%2060C192%2059%20203%2054%20219%2056C229%2057%20234%2060%20240%2060%20C258%2060%20268%2054%20286%2055C304%2056%20309%2061%20328%2060C348%2059%20352%2053%20370%2054C388%2055%20391%2061%20411%2060C432%2059%20443%2054%20459%2056C469%2057%20474%2060%20480%2060%20C498%2060%20508%2054%20526%2055C544%2056%20549%2061%20568%2060C588%2059%20592%2053%20610%2054C628%2055%20631%2061%20651%2060C672%2059%20683%2054%20699%2056C709%2057%20714%2060%20720%2060%20L722%2060%20L722%2062%20L720%2062%20C713%2062%20706%2063%20698%2061C687%2059%20684%2061%20676%2063C666%2065%20657%2065%20650%2064C639%2064%20633%2060%20626%2060C616%2059%20612%2063%20603%2063C590%2064%20585%2066%20572%2064C559%2063%20556%2060%20548%2060C540%2059%20535%2062%20527%2062C509%2063%20502%2065%20489%2063C485%2062%20482%2062%20480%2062%20C473%2062%20466%2063%20458%2061C447%2059%20444%2061%20436%2063C426%2065%20417%2065%20410%2064C399%2064%20393%2060%20386%2060C376%2059%20372%2063%20363%2063C350%2064%20345%2066%20332%2064C319%2063%20316%2060%20308%2060C300%2059%20295%2062%20287%2062C269%2063%20262%2065%20249%2063C245%2062%20242%2062%20240%2062%20C233%2062%20226%2063%20218%2061C207%2059%20204%2061%20196%2063C186%2065%20177%2065%20170%2064C159%2064%20153%2060%20146%2060C136%2059%20132%2063%20123%2063C110%2064%20105%2066%2092%2064C79%2063%2076%2060%2068%2060C60%2059%2055%2062%2047%2062C29%2063%2022%2065%209%2063C5%2062%202%2062%200%2062%20L-2%2062%20Z%22%20%2F%3E%3C%2Fsvg%3E");
 --interaction-duration:700ms;
 --interaction-release:500ms;
 --interaction-ease:cubic-bezier(.25,.46,.45,.94);
 --interaction-lift:-2px;
 --popup-enter-duration:420ms;
 --popup-exit-duration:260ms;
 --popup-enter-ease:cubic-bezier(.22,1,.36,1);
 --popup-shadow:0 20px 64px rgb(0 0 0/.65),0 4px 18px rgb(0 0 0/.45);
}
/* One continuous, oversized SVG removes WebKit tile seams and duplicate edge masks.
   The 240px travel stays inside the overscan; direction reverses smoothly.
   A lower text endpoint places foam at the cap height, inside the glyphs. */
.interaction-surface::before,.interaction-link .liquid-label-ink,.interaction-link .liquid-icon-ink{
 background-image:var(--ocean-water);
 background-size:calc(100% + 240px) 200%;
 background-repeat:no-repeat;
 background-position:calc(var(--ocean-tide) - 240px) calc(var(--liquid-level) + var(--ocean-bob));
 opacity:1;
 transition:--liquid-level var(--interaction-release) var(--interaction-ease);
 animation:ocean-tide 12s ease-in-out -2s infinite alternate paused,ocean-bob 6.8s ease-in-out -1.6s infinite paused;
}
/* Keep the current wave phase moving until the level has finished receding. */
.interaction-surface.is-water-moving::before,.interaction-link.is-water-moving .liquid-label-ink,.interaction-link.is-water-moving .liquid-icon-ink{animation-play-state:running}
.liquid-label.liquid-label{
 position:relative;display:inline-block;font:inherit;letter-spacing:inherit;line-height:inherit;
 color:inherit;margin:0;padding:0;min-height:0;max-width:100%;vertical-align:baseline;transform:none;
}
:is(a,button).interaction-link{color:var(--ink)}
.interaction-link .liquid-label-ink,.interaction-link .liquid-icon-ink{
 position:absolute;inset:0;display:block;font:inherit;letter-spacing:inherit;line-height:inherit;
 pointer-events:none;margin:0;padding:0;color:var(--accent);
 background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;
}
.interaction-static{position:relative}
.interaction-surface{isolation:isolate}
.interaction-surface::before{
 content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;
}
.interaction-surface>span:not(.ocean-spray),.interaction-surface>svg{
 display:inline-block;
 transition:transform var(--interaction-release) var(--interaction-ease),color var(--interaction-release) var(--interaction-ease);
}
:is(a,button).interaction-surface:is(:focus-visible,:active){color:#111}
.interaction-surface:is(:focus-visible,:active)::before{--liquid-level:86%;transition-duration:var(--interaction-duration)}
.interaction-link:is(:focus-visible,:active) :is(.liquid-label-ink,.liquid-icon-ink){--liquid-level:82%;transition-duration:var(--interaction-duration)}
.interaction-surface:is(:focus-visible,:active)>span:not(.ocean-spray),.interaction-surface:is(:focus-visible,:active)>svg{transform:translateY(var(--interaction-lift));color:#111;transition-duration:var(--interaction-duration)}
@media(hover:hover){
 :is(a,button).interaction-surface.is-pointer-hovered{color:#111;text-decoration:none}
 .interaction-surface.is-pointer-hovered::before{--liquid-level:86%;transition-duration:var(--interaction-duration)}
 .interaction-link:is(.is-pointer-hovered,.is-media-hovered) :is(.liquid-label-ink,.liquid-icon-ink){--liquid-level:82%;transition-duration:var(--interaction-duration)}
 .interaction-surface.is-pointer-hovered>span:not(.ocean-spray),.interaction-surface.is-pointer-hovered>svg{transform:translateY(var(--interaction-lift));color:#111;transition-duration:var(--interaction-duration)}
 .interaction-link.is-pointer-hovered{text-decoration:none}
}
/* Text links never inherit the old directional label motion. */
.interaction-link .liquid-label,.interaction-link .contact-email-label{transform:none!important}
.text-link>.liquid-label,.text-link>.liquid-icon{font-size:inherit;color:inherit}
/* Primary text links fill both glyphs and SVG arrows, without moving either. */
.liquid-icon{position:relative;display:inline-grid;vertical-align:middle;flex:none;line-height:0;transform:none!important}
/* The visible SVG and its water mask share exactly one box, without component margins. */
.interaction-link .liquid-icon.liquid-icon>svg{display:block;grid-area:1/1;margin:0;padding:0;border:0;vertical-align:initial;transform:none;transition:none}

/* The last word and its indicator form one unbreakable text unit everywhere. */
.inline-action-tail.inline-action-tail{display:inline-flex;align-items:center;gap:.25em;white-space:nowrap;vertical-align:baseline;letter-spacing:inherit}
.inline-action-tail>.liquid-label{max-width:none;white-space:nowrap}
.inline-action-tail>:last-child{flex:none}
.inline-action-tail>.action-icon{display:block}
/* Text controls contain one floating label; center that complete label in the hit area. */
:is(a,button).has-inline-action:not(.interaction-link){display:inline-block}
:is(a,button).interaction-link.has-inline-action{display:inline-flex;align-items:center}
.about-page-floater .cv-download-action .cv-download.has-inline-action{display:block}
.clean-work a.project-heading.has-inline-action,.animated-home .project-caption a.has-inline-action{display:block}
.interaction-link .liquid-icon-ink{background-clip:border-box;-webkit-background-clip:border-box;mask-image:var(--icon-shape);-webkit-mask-image:var(--icon-shape);mask-size:100% 100%;-webkit-mask-size:100% 100%;mask-position:center;-webkit-mask-position:center;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat}
/* Secondary controls opt in with data-interaction="secondary". */
/* Text buoyancy must keep its transition and timeline across window focus changes.
   Only the ink descendants suppress replay; pausing the whole link freezes its float. */
.interaction-window-resuming :is(.interaction-surface,.interaction-secondary),
.interaction-window-resuming :is(.interaction-surface,.interaction-link,.interaction-secondary)::before,
.interaction-window-resuming :is(.interaction-surface,.interaction-link,.interaction-secondary) *{
 transition:none!important;animation-play-state:paused!important;
}
.interaction-secondary{transition:background-color var(--interaction-release) var(--interaction-ease)}
.interaction-secondary>span,.interaction-secondary>svg{display:inline-block;transition:transform var(--interaction-release) var(--interaction-ease)}
.interaction-secondary:is(:focus-visible,:active){background-color:#444;transition-duration:var(--interaction-duration)}
@media(hover:hover){
 .interaction-secondary.is-pointer-hovered{background-color:#444;transition-duration:var(--interaction-duration)}
 .interaction-secondary.is-pointer-hovered>span,.interaction-secondary.is-pointer-hovered>svg{transform:translateY(var(--interaction-lift));transition-duration:var(--interaction-duration)}
}
@media(prefers-reduced-motion:reduce){.interaction-secondary,.interaction-secondary>span,.interaction-secondary>svg{transition:none;transform:none!important}}

/* Fourth interaction: the secondary lift with the existing blue accent. */
:is(a,button).interaction-secondary.interaction-secondary-blue:is(:focus-visible,:active){background-color:var(--accent);color:#111;transition-duration:var(--interaction-duration)}
:is(a,button).interaction-secondary.interaction-secondary-blue:is(:focus-visible,:active)>:is(span,svg){color:#111}
@media(hover:hover){
 :is(a,button).interaction-secondary.interaction-secondary-blue.is-pointer-hovered{background-color:var(--accent);color:#111;transition-duration:var(--interaction-duration)}
 :is(a,button).interaction-secondary.interaction-secondary-blue.is-pointer-hovered>:is(span,svg){color:#111}
}

/* Decorative top-layer spray escapes panel/media clipping without capturing input. */
.ocean-spray{position:fixed;inset:auto;display:none;margin:0;padding:0;border:0;background:none;color:inherit;overflow:visible;pointer-events:none;opacity:0;transform:none!important;transition:opacity var(--interaction-release) ease}
.ocean-spray:popover-open{display:block}
.ocean-spray::backdrop{background:none;pointer-events:none}
.ocean-spray i{position:absolute;left:var(--spray-x);top:15%;width:var(--spray-size);height:var(--spray-size);border-radius:50%;background:none;opacity:0;animation:ocean-spray-rise var(--spray-time) ease-out var(--spray-delay) infinite paused}
.ocean-spray i:nth-child(1){--spray-x:22%;--spray-size:4px;--spray-time:3.8s;--spray-delay:.7s;--spray-drift:-6px}
.ocean-spray i:nth-child(2){--spray-x:65%;--spray-size:6px;--spray-time:5.1s;--spray-delay:2.1s;--spray-drift:9px}
.ocean-spray i:nth-child(3){--spray-x:84%;--spray-size:3px;--spray-time:4.6s;--spray-delay:3.3s;--spray-drift:-4px}
.ocean-spray i::before,.ocean-spray i::after{content:'';position:absolute;pointer-events:none;animation-duration:var(--spray-time);animation-delay:var(--spray-delay);animation-iteration-count:infinite;animation-play-state:paused}
.ocean-spray i::before{inset:0;border-radius:50%;background:#fff;animation-name:ocean-bubble-pop}
.ocean-spray i::after{left:50%;top:50%;width:1.5px;height:1.5px;margin:-.75px;border-radius:50%;box-shadow:-4px -4px 0 #fff,4px -3px 0 #fff,-3px 4px 0 #fff,4px 4px 0 #fff;opacity:0;animation-name:ocean-pop-fragments}
.ocean-spray.is-spraying{opacity:1}
.ocean-spray.is-spraying i,.ocean-spray.is-spraying i::before,.ocean-spray.is-spraying i::after{animation-play-state:running}
/* At the crest the bubble breaks into a ring and four tiny fragments; no end fade. */
@keyframes ocean-spray-rise{
 0%,12%{opacity:0;transform:translate(0,0);animation-timing-function:steps(1,end)}
 13%{opacity:.9;transform:translate(0,0);animation-timing-function:ease-out}
 74%,82%{opacity:.9;transform:translate(var(--spray-drift),-30px);animation-timing-function:steps(1,end)}
 83%,100%{opacity:0;transform:translate(var(--spray-drift),-30px)}
}
@keyframes ocean-bubble-pop{
 0%,24%{background:#fff;border:0 solid #fff;transform:scale(.5)}
 25%,73%{background:#fff;border:0 solid #fff;transform:scale(1);opacity:1;animation-timing-function:steps(1,end)}
 74%{background:transparent;border:1px solid #fff;transform:scale(1);opacity:1;animation-timing-function:ease-out}
 79%{background:transparent;border:1px solid #fff;transform:scale(2);opacity:1;animation-timing-function:steps(1,end)}
 80%,100%{background:transparent;border:1px solid #fff;transform:scale(2);opacity:0}
}
@keyframes ocean-pop-fragments{
 0%,73%{opacity:0;transform:scale(.4);animation-timing-function:steps(1,end)}
 74%{opacity:1;transform:scale(.4);animation-timing-function:ease-out}
 80%{opacity:1;transform:scale(1.5);animation-timing-function:steps(1,end)}
 81%,100%{opacity:0;transform:scale(1.5)}
}
@media(prefers-reduced-motion:reduce){.ocean-spray,.ocean-spray:popover-open{display:none}}
@media print{.ocean-spray,.ocean-spray:popover-open{display:none}}
@keyframes ocean-tide{to{--ocean-tide:240px}}
@keyframes ocean-bob{0%,100%{--ocean-bob:0%}23%{--ocean-bob:1.8%}57%{--ocean-bob:-1.4%}81%{--ocean-bob:.6%}}
@media(prefers-reduced-motion:reduce){
 .interaction-surface>span:not(.ocean-spray),.interaction-surface>svg{transform:none!important}
 .interaction-surface::before,.interaction-link .liquid-label-ink,.interaction-link .liquid-icon-ink{transition:none;animation:none}
}
@media print{
 .interaction-surface::before,:is(.liquid-label-ink,.liquid-icon-ink){display:none!important}
 :is(a,button).interaction-link{color:inherit}
}
/* All floating surfaces share one borderless black drop shadow. */
html :is(.contact-dialog,.consent-banner,.consent-dialog,.privacy-toc),
html .project-lightbox :is(.project-lightbox__close,.project-lightbox__prev,.project-lightbox__next,.project-lightbox__play),
html .video-media :is(.video-toggle,.video-toggle-icon),
html :is(.editorial-home,.clean-work,.project-layout) .video-media :is(.video-toggle,.video-toggle-icon){border:0;box-shadow:var(--popup-shadow)}
.contact-dialog .email-link:focus-visible{outline:none}
/* Popup motion is a separate system from water interactions. */
.contact-dialog.is-anchored,.consent-dialog.is-anchored{position:fixed;inset:auto;margin:0}
@media screen and (max-width:1023px){
 .contact-dialog .copy-feedback{padding-right:20px}
 .contact-dialog .copy-confirmation{left:auto;right:0}
}
.contact-dialog[open],.consent-dialog[open],.consent-banner:not([hidden]){transform-origin:var(--popup-origin-x,50%) var(--popup-origin-y,50%);clip-path:none;animation:popup-pop-in var(--popup-enter-duration) var(--popup-enter-ease) both}
:is(.contact-dialog,.consent-dialog,.consent-banner).is-closing{animation:popup-pop-out var(--popup-exit-duration) ease-in-out both}
.consent-dialog::backdrop{animation:backdrop-in 240ms ease-out both}
:is(.contact-dialog,.consent-dialog).is-closing::backdrop{animation:backdrop-out var(--popup-exit-duration) ease-in-out both}

.contact-dialog .contact-content>h2,.contact-dialog .contact-address,.contact-dialog .text-link{animation:none}
@keyframes popup-pop-in{
 0%{opacity:0;transform:translateY(4px) scale(.97)}
 100%{opacity:1;transform:translateY(0) scale(1)}
}
@keyframes popup-pop-out{
 from{opacity:1;transform:translateY(0) scale(1)}
 to{opacity:0;transform:translateY(3px) scale(.98)}
}
@media(prefers-reduced-motion:reduce){
 .liquid-label .liquid-label-ink{transition:none}
 .contact-dialog[open],.consent-dialog[open],.consent-banner:not([hidden]),:is(.contact-dialog,.consent-dialog,.consent-banner).is-closing{animation:none}
}
@media print{:is(.liquid-label-ink,.liquid-icon-ink){display:none!important}}
/* These interaction variants express focus/press through their own fill. */
:is(a,button):is(.interaction-surface,.interaction-link,.interaction-secondary):is(:focus,:focus-visible,:active){outline:none!important}
.interaction-secondary:is(:focus-visible,:active)>span,.interaction-secondary:is(:focus-visible,:active)>svg{transform:none}

/* One bottom navigation pill on phones; the name keeps its own black surface. */
.site-header .header-controls{display:contents}
.site-header .header-controls>nav{pointer-events:auto}
.site-header .nav-label{white-space:nowrap}
.site-header .main-nav .header-cv-download{display:none}
.site-header .header-cv-download .nav-label{display:flex;align-items:center;gap:6px}
.site-header .header-cv-arrow{width:14px;height:14px;flex:none}

/* Shared collaboration invitation precedes the footer contact actions. */
.footer-collaboration{padding-block:36px 40px;scroll-margin-top:0}
.footer-collaboration h2{font-family:'Archivo Black','Arial Black',sans-serif;font-size:clamp(40px,5vw,76px);font-weight:400;line-height:1.12;letter-spacing:-.035em;margin-bottom:24px;text-wrap:balance}
.footer-collaboration-copy{max-width:850px;font-size:21px;line-height:1.6;letter-spacing:-.015em;overflow-wrap:anywhere}
.footer-collaboration-copy p+p{margin-top:20px}
@media(max-width:767px){.footer-collaboration{padding-block:24px 32px}.footer-collaboration h2{font-size:clamp(34px,9vw,48px);margin-bottom:20px}.footer-collaboration-copy{font-size:18px;line-height:1.65}}

/* Shared screen title scale, anchored to the About page. */
@media screen and (max-width:767px){:root{--page-heading-size:clamp(42px,11.5vw,60px)}}

/* Compact surfaces retain the desktop composition above 1023px. */
@media screen and (max-width:1023px){
 .footer-main{flex-wrap:wrap;gap:8px 28px}
 .footer-links{flex-wrap:wrap;gap:4px 20px;min-width:0}
 .footer-main>a{min-width:0;max-width:100%}
 .footer-compact .footer-bottom{flex-wrap:wrap;gap:4px 20px}
 .footer-compact .footer-bottom>span,.footer-compact .footer-bottom>a,.footer-compact .footer-bottom>button{max-width:100%;white-space:normal}
 .footer-copyright{flex-wrap:wrap}
 .footer-bottom a,.consent-settings-link{min-height:44px}
 .contact-dialog{overscroll-behavior:contain;max-height:calc(100dvh - 32px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}
 .contact-dialog .contact-social-links{flex-wrap:wrap;gap:4px 16px}
 .contact-dialog .copy-email{min-height:44px}
 .contact-dialog .contact-social-links .text-link{min-height:44px}
 .contact-dialog .contact-address{min-width:0}
 .contact-dialog .email-link{overflow-wrap:anywhere}
 .text-page{min-height:55dvh}
}
@media screen and (max-width:767px){
 .footer-links a .action-icon,.footer-bottom a .action-icon,.consent-settings-link .action-icon{width:20px;height:20px;flex:none}
 .footer-links{gap:4px 18px}
 .contact-dialog .contact-social-links{gap:4px 12px}
 .contact-dialog .contact-social-links .text-link{font-size:13px}
 .contact-dialog .copy-email{font-size:12px}
 .contact-dialog{inset:calc(12px + env(safe-area-inset-top,0px)) 12px auto;max-height:calc(100dvh - 24px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}
}


/* Shared play/pause controls for every inline video preview. */
.video-media .video-toggle-icon{inset:auto 10px 10px auto;display:flex;align-items:center;justify-content:center;width:44px;height:44px;min-height:44px;padding:0;margin:0;border:0;border-radius:3px;background:#171717;color:#fff;box-shadow:none;transition:background-color 160ms ease}
.video-media .video-toggle-icon:hover,.video-media .video-toggle-icon:focus-visible{background:#444}
.video-media .video-toggle-icon svg{width:20px;height:20px;flex:none}
.video-media .video-toggle-icon .video-icon-pause,.video-media.is-playing .video-toggle-icon .video-icon-play{display:none}
.video-media.is-playing .video-toggle-icon .video-icon-pause{display:block}
.video-media .video-toggle-icon[hidden]{display:none}

/* The fixed text control owns its hit area; only this shared inner label floats.
   liquid-links.js owns the 1.2s entry and 14s drift. Ink keeps its own CSS clock. */
.interaction-link>.interaction-float.interaction-float{
 position:relative;max-width:100%;font:inherit;color:inherit;letter-spacing:inherit;
 text-align:inherit;align-items:inherit;justify-content:inherit;gap:inherit;
 flex-direction:inherit;flex-wrap:inherit;pointer-events:none;
 transition:none;animation:none;
}
@media(prefers-reduced-motion:reduce){.interaction-link>.interaction-float.interaction-float{translate:none!important;rotate:none!important}}
@media print{.interaction-link>.interaction-float.interaction-float{translate:none!important;rotate:none!important}}

/* Keyboard focus follows the control's existing hover treatment. Unenhanced
   controls retain a static underline, including when JavaScript is unavailable. */
:is(a,button,summary):focus-visible:not(.interaction-link,.interaction-surface,.interaction-secondary,.project-hit,.work-project-hit,.clean-related-hit,.project-gallery-card,.video-toggle-icon){text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.22em}
:is(input,textarea,select):focus-visible{outline:none;box-shadow:inset 0 -3px 0 var(--ink)}
/* Lift only media inside the fixed hit area. Gallery cards keep their own pose. */
:is(.project-visual,.project-preview,.clean-related-preview)>:is(img,video,.video-media,.work-photo-sequence){transition:translate 1.2s cubic-bezier(.2,.75,.2,1)}
:is(.project-visual,.project-preview,.clean-related-preview):not(.video-media):has(>:is(.project-hit,.work-project-hit,.clean-related-hit):focus-visible)>:is(img,.work-photo-sequence){translate:0 -5px}
/* A persistent light baseline identifies the precise focused media control;
   the title's linked animation remains active independently. */
:is(.project-hit,.work-project-hit,.clean-related-hit):focus-visible{box-shadow:inset 0 -3px 0 var(--ink)}
/* Motion preferences remove the lift, while keeping a static focus cue. */
html.motion-reduced :is(.project-visual,.project-preview,.clean-related-preview)>:is(img,video,.video-media,.work-photo-sequence),
html.motion-reduced .about-cv-toggle>:is(span,h2,svg){translate:none!important}
html.motion-reduced :is(a,button,summary,input,textarea,select,[role=button]):focus-visible{box-shadow:inset 0 -3px 0 var(--ink)!important;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.22em}
@media(prefers-reduced-motion:reduce){
 :is(.project-visual,.project-preview,.clean-related-preview)>:is(img,video,.video-media,.work-photo-sequence),.about-cv-toggle>:is(span,h2,svg){translate:none!important;transition:none}
 :is(a,button,summary,input,textarea,select,[role=button]):focus-visible{box-shadow:inset 0 -3px 0 var(--ink)!important;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.22em}
}
@media(forced-colors:active){html body :focus-visible,html body :is(a,button):is(.interaction-surface,.interaction-link,.interaction-secondary):focus-visible{outline:2px solid CanvasText!important;outline-offset:4px}}

/* A decoded video owns its canvas; the poster only reserves layout beneath it.
   Keeping both painted exposes stale image strips at fractional/transformed edges. */
.video-media:is(.is-playing,.has-video-frame)>img,
.video-media:is(.is-playing,.has-video-frame)>.video-picture>img{visibility:hidden}

/* Desktop keeps its notch; compact controls stay in one row until they move below. */
@media screen and (min-width:1024px){
 .site-header{align-items:start}
 .site-header .wordmark{font-size:40px;letter-spacing:.01em;line-height:1;margin-top:-10px;margin-left:-14px;padding:10px 14px 12px;border-radius:0 0 3px 3px}
 .site-header .main-nav>[data-contact-open]{border-radius:0 3px 3px 0}
}
@media screen and (max-width:1023px){
 .site-header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:24px;padding:calc(12px + env(safe-area-inset-top,0px)) 18px 8px;min-height:0}
 .site-header .wordmark{margin:0;padding:0 14px;min-height:44px;font-size:22px;letter-spacing:.01em;line-height:1;border-radius:3px;box-shadow:var(--popup-shadow);flex:none}
 .site-header .header-controls{display:flex;align-items:stretch;gap:8px;flex:none;pointer-events:none}
 .site-header .main-nav,.site-header .language-nav{grid-column:auto;grid-row:auto;margin:0;flex:none}
 .site-header .main-nav a{padding-inline:12px;font-size:14px;min-height:44px}
 .site-header .language-nav a{padding-inline:10px;font-size:12px;min-height:44px}
 .site-header .main-nav .header-cv-download{display:flex}
 .about-document-layout>.about-page-floater{display:none}
}
@media screen and (max-width:639px){
 html{scroll-padding-top:76px;scroll-padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}
 body{padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}
 .site-header{inset:0 0 auto;justify-content:center;gap:0;padding-inline:12px;background:transparent;border:0;pointer-events:none}
 .admin-bar .site-header{top:46px}
 .site-header .wordmark{font-size:clamp(26px,7.5vw,34px);pointer-events:auto}
 .site-header .header-controls{position:fixed;inset:auto auto calc(12px + env(safe-area-inset-bottom,0px)) 50%;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 24px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px));min-height:44px;background:transparent}
 .site-header .main-nav{display:flex;align-items:stretch;padding:0;gap:0;border-radius:3px}
 .site-header .main-nav>a{flex:none;min-width:0;padding-inline:8px;font-size:13px;border-radius:0}
 .site-header .main-nav>a:first-child{border-radius:3px 0 0 3px}
 .site-header .main-nav>a:last-child{border-radius:0 3px 3px 0}
 .site-header .nav-links{display:flex;flex:none;min-width:0;align-items:stretch}
 .site-header .nav-links>li{flex:none;min-width:0}
 .site-header .nav-links a{width:100%;padding-inline:8px;font-size:13px}
 .site-header .language-nav{display:flex;align-items:stretch;border:0;border-radius:3px}
 .site-header .language-nav a{min-width:44px;padding-inline:8px}
 .site-header .language-nav a[aria-current]{display:flex}
 .site-header .language-nav a:first-child{border-radius:3px 0 0 3px}
 .site-header .language-nav a:last-child{border-radius:0 3px 3px 0}
 .consent-banner{bottom:calc(76px + env(safe-area-inset-bottom,0px))}
}
@media screen and (max-width:374px){
 .site-header .header-controls{gap:0;border-radius:3px;background:#171717}
 .site-header .main-nav{background:transparent;border-radius:0}
 .site-header .main-nav>a:last-child{border-radius:0}
 .site-header .language-nav{background:transparent;border-left:1px solid #303030;border-radius:0}
 .site-header .language-nav a[aria-current]{display:none}
 .site-header .language-nav a:first-child,.site-header .language-nav a:last-child{border-radius:0 3px 3px 0}
}
@media screen and (max-width:359px){
 .site-header .main-nav a{padding-inline:6px}
}
/* The homepage uses fixed content gutters rather than the inner-page fluid gutter. */
@media screen and (min-width:1024px){body.home .site-header{padding-left:48px}}

/* Each floating surface owns its shadow; only the narrowest pill is combined. */
.site-header :is(.main-nav,.language-nav){box-shadow:var(--popup-shadow)}
@media screen and (max-width:374px){
 .site-header .header-controls{border:0;box-shadow:var(--popup-shadow)}
 .site-header :is(.main-nav,.language-nav){box-shadow:none}
}
@media print{
 html :is(.contact-dialog,.consent-banner,.consent-dialog,.privacy-toc),
 .site-header :is(.main-nav,.language-nav,.header-controls){box-shadow:none}
}

/* Popup activation drains the hover fill even when native focus is restored. */
.interaction-link.interaction-suspended :is(.liquid-label-ink,.liquid-icon-ink),
:is(a,button).interaction-surface.interaction-suspended::before{--liquid-level:0%;transition-duration:var(--interaction-release)}
:is(a,button).interaction-surface.interaction-history-suspended::before{--liquid-level:-14%}
:is(a,button).interaction-surface.interaction-suspended{color:var(--ink)}
.interaction-surface.interaction-suspended>span:not(.ocean-spray),
.interaction-surface.interaction-suspended>svg{transform:none;color:inherit}
.interaction-suspended:focus-visible{text-decoration:underline;text-underline-offset:.22em}

/* Restored history snapshots must commit the idle fill without replaying it. */
.interaction-history-reset :is(.interaction-link,.interaction-surface),
.interaction-history-reset :is(.interaction-link,.interaction-surface)::before,
.interaction-history-reset :is(.interaction-link,.interaction-surface) *{transition:none!important;animation-play-state:paused!important}

/* Touch-first devices keep static labels and feedback, without decorative water or drift. */
html.interaction-touch-device :is(.liquid-label-ink,.liquid-icon-ink,.ocean-spray),
html.interaction-touch-device .interaction-surface::before{display:none!important}
html.interaction-touch-device :is(.interaction-link,.interaction-surface,.interaction-secondary){transition:none!important}
html.interaction-touch-device .interaction-link>.interaction-float,
html.interaction-touch-device .interaction-surface>span:not(.ocean-spray),
html.interaction-touch-device .interaction-surface>svg,
html.interaction-touch-device .interaction-secondary>span,
html.interaction-touch-device .interaction-secondary>svg,
html.interaction-touch-device .contact-dialog .copy-feedback{transform:none!important;translate:none!important;rotate:none!important;transition:none!important}
html.interaction-touch-device .interaction-surface:is(:hover,:focus-visible,:active){color:var(--ink)!important}
html.interaction-touch-device .interaction-surface>span:not(.ocean-spray),
html.interaction-touch-device .interaction-surface>svg{color:inherit!important}
html.interaction-touch-device :is(.interaction-link,.interaction-surface,.interaction-secondary):focus-visible{text-decoration:underline;text-underline-offset:.22em}

/* Native dialogs stay near their opener and within the currently visible viewport. */
html .contact-dialog,html .consent-dialog{
 --popup-safe-top:env(safe-area-inset-top,0px);--popup-safe-right:env(safe-area-inset-right,0px);
 --popup-safe-bottom:env(safe-area-inset-bottom,0px);--popup-safe-left:env(safe-area-inset-left,0px);
 max-width:var(--popup-max-width,calc(100vw - 32px));max-height:var(--popup-max-height,calc(100dvh - 32px));
 overflow:auto;overscroll-behavior:contain;
}
.contact-dialog.is-anchored,.consent-dialog.is-anchored{position:fixed;inset:auto;margin:0}
