/* Every absolute font-size is calc(<design size>*var(--fs-<category>,1)) — headings, body, captions or navigation,
   the category whose font the element uses (lists in typography.css). Factor 1 = the design; set in admin → Typographie. */
:root{--ink:#101010;--muted:#777774;--line:#deded9;--paper:#fff;--red:#f4000c;--gutter:clamp(24px,4.45vw,88px);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:calc(16px*var(--fs-body,1));color:var(--ink);background:var(--paper);font-synthesis:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-gutter:stable}body{margin:0}body.locked{overflow:hidden;position:fixed;left:0;right:0}button,a,input,textarea{-webkit-tap-highlight-color:transparent}button,input,textarea{font:inherit}button{color:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button{border:0;background:none}button:disabled{cursor:default;opacity:.5}img{display:block;max-width:100%}svg{fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}a:focus-visible,button:focus-visible{outline:2px solid var(--red);outline-offset:6px}::selection{background:var(--red);color:#fff}[hidden]{display:none!important}.wrap{max-width:1600px;padding-left:var(--gutter);padding-right:var(--gutter);margin:0 auto}.eyebrow{font-size:calc(10px*var(--fs-captions,1));line-height:1.4;font-weight:500;letter-spacing:1.65px;margin:0;text-transform:uppercase}.red-period{color:var(--red)}.red-square{width:5px;height:5px;background:var(--red);display:inline-block;flex:0 0 auto}.skip-link{position:fixed;top:8px;left:8px;transform:translateY(-200%);z-index:10000;background:#fff;padding:14px}.skip-link:focus{transform:none}
.site-header{height:132px;display:flex;align-items:center;gap:60px}.brand{display:flex;align-items:flex-end;gap:11px;flex-shrink:0}.brand img{width:91px;height:auto}.brand>span{font-size:calc(10px*var(--fs-captions,1));letter-spacing:2.6px;margin-bottom:13px;font-weight:550}.header-descriptor{font-size:calc(11px*var(--fs-captions,1));line-height:1.5;color:#666;margin:0 0 0 40px}.main-nav{margin-left:auto;display:flex;gap:40px;align-items:center;font-size:calc(12px*var(--fs-navigation,1))}.main-nav a{padding:12px 0;position:relative}.main-nav sup{color:var(--red);font-size:calc(8px*var(--fs-navigation,1));top:-.5em;margin-left:5px}.nav-contact span{margin-left:9px}
.hero{padding-top:45px;padding-bottom:77px;display:flex;align-items:flex-end;justify-content:space-between;gap:40px}.hero-kicker{display:flex;align-items:center;gap:10px;margin-bottom:25px;color:#646461;font-size:calc(9px*var(--fs-captions,1));letter-spacing:1.45px}.hero h1{font-size:calc(clamp(58px,7.05vw,115px)*var(--fs-headings,1));letter-spacing:-.071em;line-height:.98;font-weight:500;margin:0}.hero-aside{padding-bottom:6px;min-width:210px}.hero-aside p{font-size:calc(13px*var(--fs-body,1));line-height:1.75;font-weight:400;color:#747471;margin:0 0 25px}.text-link{font-size:calc(12px*var(--fs-body,1));display:flex;align-items:center;justify-content:space-between;gap:26px;width:max-content}.text-link span{font-size:calc(22px*var(--fs-body,1));display:inline-block;transition:transform var(--dur-fast) var(--ease-rise)}.text-link:hover span{transform:translateY(4px)}
.section-heading{display:flex;align-items:center;justify-content:space-between;gap:25px;margin-bottom:21px}.section-heading h2{font-weight:500;font-size:calc(9px*var(--fs-captions,1));letter-spacing:1.6px}.section-note{font-size:calc(10px*var(--fs-captions,1));color:var(--muted)}
.site-footer{height:132px;display:flex;align-items:center;gap:40px}.copyright{font-size:calc(9px*var(--fs-captions,1));color:#8c8c87;margin-left:auto}.legal-link{font-size:calc(9px*var(--fs-captions,1));color:#8c8c87;padding:12px 0}.legal-link:hover{color:#111}.back-top{font-size:calc(22px*var(--fs-captions,1));padding:12px 0 12px 25px}
/* The dialog is the actual presentation layer. The two inert page copies above it
   are clipped at the viewport centre, not at the centre of the clicked thumbnail. */
.viewer-dialog{width:100%;max-width:none;height:100%;height:100dvh;max-height:none;margin:0;padding:0;border:0;overflow:hidden;background:#f4f3ef;color:var(--ink)}.viewer-dialog::backdrop{background:#fff}.viewer-shell{height:100%;display:flex;flex-direction:column;position:relative}.viewer-header{height:96px;flex-shrink:0;background:#fff;display:flex;align-items:center;gap:37px;padding:0 36px;border-bottom:1px solid #e5e5e0;z-index:3}.viewer-brand{display:flex;align-items:flex-end;gap:8px;border-right:1px solid #e4e4df;padding-right:31px;flex-shrink:0}.viewer-brand img{width:59px;height:auto}.viewer-brand>span{font-size:calc(7px*var(--fs-captions,1));letter-spacing:1.8px;margin-bottom:8px}.viewer-heading .eyebrow{font-size:calc(7px*var(--fs-captions,1));color:#82827c;letter-spacing:1.3px;margin-bottom:5px}.viewer-heading h2{font-size:calc(20px*var(--fs-headings,1));font-weight:400;letter-spacing:-.65px;margin:0}.viewer-actions{margin-left:auto;display:flex;align-items:center;gap:35px}.project-information{font-size:calc(10px*var(--fs-captions,1));display:flex;gap:18px;align-items:center}.project-information>span{font-size:calc(19px*var(--fs-captions,1))}.project-information[aria-expanded=true]>span{transform:rotate(45deg)}.close-viewer{display:flex;gap:17px;align-items:center;padding:12px 0 12px 17px;font-size:calc(11px*var(--fs-body,1))}.close-viewer svg{width:22px;height:22px;transition:transform var(--dur-fast) var(--ease-rise)}.close-viewer:hover svg{transform:rotate(90deg)}.close-viewer:hover{color:var(--red)}.viewer-body{position:relative;flex:1;min-height:0;background:#f4f3ef}.project-frame{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;opacity:0;transition:opacity var(--dur-base) var(--ease-reveal)}.project-frame.ready{opacity:1}.viewer-footer{height:37px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 36px;font-size:calc(7px*var(--fs-captions,1));letter-spacing:1px;color:#86867f;background:#fff;border-top:1px solid #e5e5e0}.viewer-footer>span{display:flex;align-items:center;gap:8px}.viewer-footer .red-square{width:3px;height:3px}.footer-divider{opacity:.4;padding:0 5px}.viewer-footer button{font-size:calc(8px*var(--fs-captions,1));color:#75756e;display:flex;align-items:center;gap:13px;padding:8px 0}.viewer-footer button:hover{color:#111}.project-info-panel{position:absolute;z-index:5;right:34px;top:85px;width:360px;background:#fff;padding:29px;border:1px solid var(--line);box-shadow:0 20px 60px #00000012}.project-info-panel h3{font-size:calc(23px*var(--fs-headings,1));font-weight:400;letter-spacing:-.6px;margin:0 0 20px}.project-info-panel p{font-size:calc(12px*var(--fs-body,1));line-height:1.75;color:#6d6d67}.project-info-panel dl{font-size:calc(11px*var(--fs-captions,1));margin:22px 0}.project-info-panel dl>div{display:flex;justify-content:space-between;gap:20px;border-top:1px solid #ededE8;padding:11px 0}.project-info-panel dt{color:#8b8b84}.project-info-panel dd{margin:0;text-align:right}.project-info-panel .credit{font-size:calc(9px*var(--fs-captions,1));line-height:1.65;color:#9a9a92;margin-bottom:0}.module-loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background:#f4f3ef;z-index:1}.loader-line{width:28px;height:2px;background:var(--red);transform-origin:left;animation:loadpulse 1.3s ease-in-out infinite}.module-loader p{font-size:calc(20px*var(--fs-body,1));letter-spacing:-.5px;margin:22px 0 9px}.module-loader small{font-size:calc(10px*var(--fs-body,1));color:#92928b}.module-error{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:30px;background:#f4f3ef;z-index:2}.module-error h3{font-size:calc(28px*var(--fs-headings,1));font-weight:400;letter-spacing:-.8px}.module-error p:not(.eyebrow){font-size:calc(13px*var(--fs-body,1));color:#74746d;max-width:420px;line-height:1.6}.button-dark{background:#141414;color:white;border-radius:0;padding:14px 22px;font-size:calc(11px*var(--fs-body,1));margin-top:18px}
.split-layer{position:absolute;inset:0;z-index:20;overflow:hidden;pointer-events:none;background:transparent}.split-panel{position:absolute;left:0;right:0;height:50%;overflow:hidden;will-change:transform;background:#fff;pointer-events:none}.split-top{top:0}.split-bottom{bottom:0}.split-copy{position:absolute;left:0;right:0;max-width:none;pointer-events:none;user-select:none}.split-copy *{animation:none!important;transition:none!important;pointer-events:none!important;caret-color:transparent!important}.split-seam{position:absolute;top:50%;left:0;width:100%;height:1px;background:var(--red);opacity:0;transform:scaleX(0);transform-origin:center;pointer-events:none}
.info-dialog{max-width:510px;width:calc(100% - 40px);border:1px solid #e4e4df;padding:44px;color:var(--ink);background:#fff}.info-dialog::backdrop{background:#1115;backdrop-filter:blur(4px)}.info-dialog h2{font-size:calc(31px*var(--fs-headings,1));font-weight:400;letter-spacing:-1px;margin:25px 0 22px}.info-dialog p:not(.eyebrow){font-size:calc(13px*var(--fs-body,1));color:#77776f;line-height:1.8}.info-close{position:absolute;top:12px;right:17px;font-size:calc(26px*var(--fs-body,1));font-weight:300}.live-region{position:fixed;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@keyframes loadpulse{0%,100%{transform:scaleX(.5);opacity:.4}50%{transform:scaleX(1);opacity:1}}
@media(min-width:1650px){.hero{padding-top:75px;padding-bottom:100px}.project-card:first-child .project-link{aspect-ratio:2.06}.project-brow{font-size:calc(10px*var(--fs-captions,1))}}
@media(max-width:1050px){.header-descriptor{margin-left:0}.site-header{gap:30px}.main-nav{gap:28px}.hero{gap:25px;padding-top:30px}.hero h1{font-size:calc(7.8vw*var(--fs-headings,1))}.hero-aside{min-width:185px}.hero-aside p{font-size:calc(12px*var(--fs-body,1))}.project-card:first-child .project-link{aspect-ratio:1.9;min-height:380px}.project-brow{left:29px;top:28px}.project-overlay{left:29px;bottom:32px}.project-open{right:27px;bottom:28px;width:55px;height:55px}.open-label{right:99px;bottom:51px}.studio-section{gap:45px}.studio-intro h2{font-size:calc(40px*var(--fs-headings,1))}}
@media(max-width:760px){:root{--gutter:24px}.site-header{height:102px;gap:20px}.brand img{width:71px}.brand>span{font-size:calc(8px*var(--fs-captions,1));margin-bottom:10px;letter-spacing:2px}.header-descriptor{display:none}.main-nav{gap:20px;font-size:calc(11px*var(--fs-navigation,1))}.hero{padding-top:25px;padding-bottom:47px;display:block}.hero-kicker{font-size:calc(8px*var(--fs-captions,1));margin-bottom:24px}.hero h1{font-size:calc(clamp(49px,8.8vw,68px)*var(--fs-headings,1));letter-spacing:-.067em}.hero-aside{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-top:26px;padding:0}.hero-aside p{font-size:calc(11px*var(--fs-body,1));line-height:1.65;margin:0}.hero-aside .text-link{font-size:calc(10px*var(--fs-body,1));gap:15px;white-space:nowrap}.section-heading{margin-bottom:16px;gap:12px}.section-heading h2{font-size:calc(8px*var(--fs-captions,1));letter-spacing:1.2px}.section-note{font-size:calc(9px*var(--fs-captions,1))}.project-card:first-child .project-link{aspect-ratio:.95;min-height:0}.project-card:first-child .project-image{width:125%;height:87%;right:-14%;top:4%;object-fit:contain}.project-brow{font-size:calc(8px*var(--fs-captions,1));left:22px;top:24px;letter-spacing:1.2px}.project-brow span{font-size:calc(7px*var(--fs-captions,1))}.project-overlay{left:23px;bottom:28px}.project-overlay h3{font-size:calc(47px*var(--fs-headings,1))}.project-overlay .project-type{font-size:calc(7px*var(--fs-captions,1));margin-bottom:10px}.project-overlay p{font-size:calc(10px*var(--fs-body,1));margin-top:9px}.project-open{width:48px;height:48px;right:22px;bottom:27px}.project-open svg{width:20px;height:20px}.open-label{display:none}.project-meta{align-items:flex-start;padding-top:14px;gap:18px}.project-meta h3{font-size:calc(12px*var(--fs-headings,1))}.project-meta h3 span{display:block;margin:5px 0 0;font-size:calc(10px*var(--fs-headings,1))}.project-meta p{font-size:calc(9px*var(--fs-captions,1));max-width:140px;text-align:right;line-height:1.5}.project-grid{gap:30px 20px}.project-card:not(:first-child){grid-column:1/-1}.details-section{padding-top:48px;padding-bottom:56px}.details-grid{gap:19px}.detail-image{aspect-ratio:.9}.detail-marker{font-size:calc(7px*var(--fs-captions,1));top:16px;left:15px;letter-spacing:.8px}.detail-image img{object-fit:cover;width:100%;height:100%;object-position:center}.detail-enter{width:31px;height:31px;right:12px;bottom:13px}.detail-caption{align-items:flex-start;display:block;padding-top:12px}.detail-caption strong{font-size:calc(12px*var(--fs-body,1))}.detail-caption span{font-size:calc(9px*var(--fs-captions,1));display:block;margin-top:6px;line-height:1.5}.studio-section{padding-top:46px;padding-bottom:54px;display:block}.studio-intro h2{font-size:calc(39px*var(--fs-headings,1));line-height:1.06;margin-top:27px}.studio-copy{padding-top:29px;max-width:440px}.studio-copy .studio-lead{font-size:calc(19px*var(--fs-body,1))}.studio-copy p{font-size:calc(12px*var(--fs-body,1))}.expertise{font-size:calc(8px*var(--fs-body,1));gap:12px 16px}.contact-inner{padding-top:46px;padding-bottom:49px;gap:25px}.contact-inner .eyebrow{font-size:calc(8px*var(--fs-captions,1))}.contact-inner h2{font-size:calc(55px*var(--fs-headings,1));margin-top:26px}.contact-copy{min-width:150px;padding-bottom:0}.contact-copy>p:first-child{font-size:calc(11px*var(--fs-body,1));margin-bottom:18px}.contact-link{font-size:calc(18px*var(--fs-headings,1));gap:20px}.contact-subline{font-size:calc(8px*var(--fs-captions,1));max-width:160px;line-height:1.5}.site-footer{height:auto;min-height:113px;gap:16px;flex-wrap:wrap;padding-top:26px;padding-bottom:26px}.footer-wordmark{font-size:calc(14px*var(--fs-headings,1))}.copyright{font-size:calc(8px*var(--fs-captions,1))}.legal-link{order:5;width:100%;text-align:left;font-size:calc(8px*var(--fs-captions,1));padding:0}.back-top{font-size:calc(19px*var(--fs-captions,1));padding-left:5px}.viewer-header{height:80px;padding:0 22px;gap:20px}.viewer-brand{padding-right:20px}.viewer-brand img{width:43px}.viewer-brand>span{font-size:calc(6px*var(--fs-captions,1));letter-spacing:1px;margin-bottom:7px}.viewer-heading h2{font-size:calc(18px*var(--fs-headings,1))}.viewer-heading .eyebrow{font-size:calc(6px*var(--fs-captions,1));letter-spacing:.6px}.viewer-actions{gap:16px}.close-viewer{padding-left:4px;gap:7px}.close-viewer span{display:none}.project-information{font-size:calc(9px*var(--fs-captions,1));gap:9px}.viewer-footer{padding:0 20px;font-size:calc(6px*var(--fs-captions,1));height:32px}.viewer-footer button{font-size:calc(7px*var(--fs-captions,1))}.project-info-panel{right:15px;top:73px;width:min(360px,calc(100% - 30px));padding:25px}}
@media(max-width:430px){:root{--gutter:20px}.brand>span{font-size:calc(7px*var(--fs-captions,1));letter-spacing:1.5px}.brand{gap:7px}.brand img{width:65px}.main-nav{gap:17px;font-size:calc(10px*var(--fs-navigation,1))}.nav-contact span{margin-left:2px}.hero h1{font-size:calc(11vw*var(--fs-headings,1))}.hero-aside{gap:15px}.hero-aside p{font-size:calc(10px*var(--fs-body,1))}.hero-aside .text-link{font-size:calc(9px*var(--fs-body,1));gap:8px}.section-note{max-width:155px;text-align:right;font-size:calc(8px*var(--fs-captions,1));line-height:1.5}.project-card:first-child .project-link{aspect-ratio:.85}.project-card:first-child .project-image{height:83%;top:5%}.project-overlay h3{font-size:calc(43px*var(--fs-headings,1))}.details-grid{gap:13px}.detail-marker{font-size:calc(6px*var(--fs-captions,1));left:12px;top:13px}.contact-inner{display:block}.contact-inner h2{font-size:calc(65px*var(--fs-headings,1))}.contact-copy{margin-top:32px;display:grid;grid-template-columns:1fr 1.15fr;gap:0 25px;align-items:end}.contact-copy>p:first-child{margin:0}.contact-link{font-size:calc(21px*var(--fs-headings,1))}.contact-subline{grid-column:2;margin-top:12px}.viewer-header{gap:13px;padding:0 16px}.viewer-brand{padding-right:13px}.viewer-brand>span{display:none}.viewer-heading .eyebrow{font-size:calc(5.8px*var(--fs-captions,1))}.viewer-heading h2{font-size:calc(17px*var(--fs-headings,1))}.project-information{font-size:0;gap:0}.project-information>span{font-size:calc(24px*var(--fs-captions,1))}.viewer-actions{gap:17px}.viewer-footer{padding:0 15px}.viewer-footer #viewer-caption{font-size:calc(5.5px*var(--fs-captions,1))}.info-dialog{padding:32px}}

/* Epix Works 2.0 — Oversized identity, five-image project mosaic, real pages. */
:root{--gutter:clamp(24px,4.45vw,80px);--red:#ff0015;--ink:#111111;--muted:#777872;--line:#e7e7e2}
html{scroll-padding-top:24px}body{background:#fff}a{text-underline-offset:5px}button,a,input,textarea{ -webkit-tap-highlight-color:transparent}input,textarea{border-radius:0}h1:focus{outline:0}.wrap{width:calc(100% - var(--gutter)*2);max-width:1600px;padding-left:0;padding-right:0;margin-left:auto;margin-right:auto}
.site-header{height:auto;min-height:236px;padding-top:25px;padding-bottom:30px;display:flex;align-items:flex-end;justify-content:space-between;gap:50px;border-bottom:1px solid var(--line)}
.brand{display:block;flex-shrink:0}.brand img{display:block;width:clamp(230px,24vw,330px);height:auto;max-width:none}.navigation-block{display:flex;align-items:flex-end;gap:clamp(45px,8vw,150px);padding-bottom:17px}.header-descriptor{margin:0;color:#7b7b77;line-height:1.65;font-size:calc(11px*var(--fs-captions,1));white-space:nowrap}.main-nav{margin:0;display:flex;gap:clamp(30px,4.2vw,70px);align-items:flex-end;font-size:calc(17px*var(--fs-navigation,1))}.main-nav a{display:flex;align-items:flex-start;gap:9px;position:relative;padding:12px 0}.main-nav sup{font-size:calc(8px*var(--fs-navigation,1));font-weight:500;color:var(--red);top:0;position:relative;margin:0;line-height:1.3}.main-nav a:after{content:'';position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform var(--dur-fast) var(--ease-rise)}.main-nav a:hover:after,.main-nav a[aria-current=page]:after{transform:scaleX(1)}.main-nav a[aria-current=page]:after{background:var(--red)}
.hero{padding-top:43px;padding-bottom:55px;display:flex;justify-content:space-between;align-items:flex-end;gap:50px}.hero-kicker{margin-bottom:24px;font-size:calc(8px*var(--fs-captions,1))}.hero h1{font-size:calc(clamp(62px,7.4vw,112px)*var(--fs-headings,1));line-height:.97;letter-spacing:-.069em;font-weight:400;margin:0}.hero-aside{padding-bottom:5px;min-width:190px}.hero-aside p{font-size:calc(12px*var(--fs-body,1));line-height:1.8;margin-bottom:24px}.text-link{font-size:calc(12px*var(--fs-body,1));gap:30px}.section-heading{margin-bottom:26px}.section-note{font-size:calc(10px*var(--fs-captions,1))}.work-section{padding-top:0;padding-bottom:0}
.studio-teaser{padding-top:90px;padding-bottom:82px;margin-top:70px;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 2fr;gap:50px}.studio-teaser h2{font-size:calc(clamp(32px,3.7vw,59px)*var(--fs-headings,1));font-weight:400;line-height:1.07;letter-spacing:-2px;margin:0 0 26px}.studio-teaser>.eyebrow{margin-top:8px}.bottom-cta{padding:46px 0 58px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.bottom-cta>a{display:flex;align-items:center;margin-top:22px;font-size:calc(clamp(35px,5vw,78px)*var(--fs-headings,1));line-height:1.1;letter-spacing:-.05em}.bottom-cta .red-period{margin-left:8px}.cta-arrow{font-weight:300;color:var(--red);margin-left:auto;transition:transform var(--dur-fast) var(--ease-rise)}.bottom-cta>a:hover .cta-arrow{transform:translate(5px,-5px)}
.page-intro{padding-top:52px;padding-bottom:60px}.page-intro>.eyebrow{display:flex;align-items:center;gap:12px}.page-intro h1{font-size:calc(clamp(58px,7.5vw,116px)*var(--fs-headings,1));line-height:1.01;font-weight:400;letter-spacing:-.068em;margin:34px 0 42px}.intro-bottom{display:flex;align-items:flex-end;justify-content:space-between}.intro-bottom>p{font-size:calc(17px*var(--fs-body,1));line-height:1.65;max-width:370px;margin:0}.studio-story{border-top:1px solid var(--line);padding-top:60px;padding-bottom:75px;display:grid;--studio-gap:clamp(50px,7vw,115px);grid-template-columns:minmax(0,calc((100% - var(--studio-gap))*var(--size-studio,1)/1.95)) minmax(calc((100% - var(--studio-gap))/3),1fr);gap:var(--studio-gap);align-items:center}.studio-image{position:relative;background:#eeeae4;aspect-ratio:1;overflow:hidden}.studio-image img{height:100%;width:100%;object-fit:cover}.image-caption{position:absolute;bottom:23px;left:25px;font-size:calc(8px*var(--fs-captions,1));letter-spacing:1.2px;text-transform:uppercase;color:#787972}.studio-story-copy h2{font-size:calc(clamp(31px,3vw,47px)*var(--fs-headings,1));font-weight:400;line-height:1.1;letter-spacing:-1.7px;margin:27px 0}.studio-story-copy p:not(.eyebrow){max-width:460px;font-size:calc(14px*var(--fs-body,1));line-height:1.9;color:#6c6f68}.expertise-section{padding-top:24px;padding-bottom:70px}.expertise-section .section-heading{margin-bottom:35px}.expertise-row{display:grid;grid-template-columns:.13fr 1fr 1fr;gap:35px;border-top:1px solid var(--line);padding:32px 0}.expertise-number{font-size:calc(10px*var(--fs-captions,1));color:var(--red);padding-top:7px}.expertise-row h3{font-size:calc(28px*var(--fs-headings,1));font-weight:400;letter-spacing:-.8px;margin:0}.expertise-row>p{font-size:calc(12px*var(--fs-body,1));line-height:1.85;color:#74776e;margin:0;max-width:440px}.studio-statement{border-top:1px solid var(--line);padding:60px 0 80px}.statement{font-size:calc(clamp(40px,5.1vw,76px)*var(--fs-headings,1));line-height:1.08;font-weight:400;letter-spacing:-.045em;margin:30px 0}
.contact-page{display:grid;grid-template-columns:.95fr 1.05fr;gap:clamp(45px,8vw,140px);padding-top:57px;padding-bottom:100px}.contact-intro>.eyebrow{display:flex;align-items:center;gap:10px}.contact-intro h1{font-size:calc(clamp(64px,7.6vw,115px)*var(--fs-headings,1));line-height:.97;font-weight:400;letter-spacing:-.065em;margin:39px 0 32px}.contact-lead{font-size:calc(24px*var(--fs-body,1));letter-spacing:-.5px;line-height:1.45;margin:0 0 18px}.contact-description{font-size:calc(13px*var(--fs-body,1));line-height:1.85;color:#75796f;max-width:320px}.contact-signature{display:block;font-size:calc(9px*var(--fs-captions,1));letter-spacing:1.2px;margin-top:50px}.contact-signature>span{display:block;font-size:calc(10px*var(--fs-captions,1));letter-spacing:0;color:#8c8e86;margin-top:9px}.contact-direct{display:inline-block;font-size:calc(15px*var(--fs-body,1));margin-top:20px;border-bottom:1px solid var(--ink);padding-bottom:5px}.form-column{padding-top:4px}.form-eyebrow{font-size:calc(9px*var(--fs-captions,1));letter-spacing:1.4px;margin:0 0 38px;font-weight:500}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:25px}.form-field{position:relative;margin-bottom:27px;min-width:0}.form-field>label,.service-field legend{display:block;font-size:calc(11px*var(--fs-body,1));font-weight:500;margin-bottom:11px}.form-field>label>span:not(.optional){color:var(--red)}.optional{font-weight:400;color:#8b8e86;font-size:calc(9px*var(--fs-captions,1));margin-left:9px}.form-field input,.form-field textarea{appearance:none;-webkit-appearance:none;width:100%;border:none;border-bottom:1px solid #cdd0c7;background:transparent;padding:9px 0 14px;outline:0;color:var(--ink);font:inherit;font-size:calc(14px*var(--fs-body,1));line-height:1.6;transition:border-color var(--dur-fast) var(--ease-rise)}.form-field input::placeholder,.form-field textarea::placeholder{color:#a4a89f;opacity:1}.form-field input:focus,.form-field textarea:focus{border-color:var(--ink);box-shadow:0 1px 0 var(--ink);outline:none}.form-field [aria-invalid=true]{border-color:var(--red)}.form-field textarea{resize:vertical;min-height:136px}.field-error{font-size:calc(10px*var(--fs-captions,1));color:#b50014;line-height:1.55;display:block;margin-top:6px}.field-error:empty{display:none}.service-field{border:0;padding:0;margin:0 0 30px;min-width:0}.service-field legend{margin-bottom:16px}.service-options{display:flex;flex-wrap:wrap;gap:8px}.service-choice{cursor:pointer;position:relative;font-size:calc(10px*var(--fs-body,1))}.service-choice input{position:absolute;opacity:0;width:1px;height:1px}.service-choice>span{display:block;border:1px solid #d9ddd3;padding:10px 12px;transition:background-color var(--dur-fast) var(--ease-rise),color var(--dur-fast) var(--ease-rise),border-color var(--dur-fast) var(--ease-rise)}.service-choice:hover>span{border-color:#92978d}.service-choice input:checked+span{background:var(--ink);color:white;border-color:var(--ink)}.service-choice input:focus-visible+span{outline:2px solid var(--red);outline-offset:3px}.message-field{margin-bottom:21px}.message-footer{display:flex;justify-content:space-between;align-items:flex-start;gap:15px;margin-top:6px}.message-footer #message-count{font-size:calc(9px*var(--fs-captions,1));color:#a1a598;white-space:nowrap;margin-left:auto}.message-footer .field-error{margin:0}.form-privacy{font-size:calc(9px*var(--fs-captions,1));line-height:1.85;color:#8b8e83;margin:0;max-width:440px}.form-privacy button{text-decoration:underline;font-size:inherit;color:inherit;padding:0;display:inline}.turnstile-widget{margin-top:24px;min-height:65px}.turnstile-widget[hidden]{display:none}.form-submit-row{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:25px}.submit-contact{display:inline-flex;align-items:center;justify-content:space-between;gap:36px;min-height:54px;padding:0 0 0 18px;color:#fff;background:#111;font-size:calc(11px*var(--fs-body,1));border:0;transition:background-color var(--dur-fast) var(--ease-rise)}.submit-arrow{display:grid;place-items:center;background:var(--red);width:54px;align-self:stretch;font-size:calc(23px*var(--fs-body,1));transition:background-color var(--dur-fast) var(--ease-rise)}.submit-contact:hover{background:#363633}.submit-contact:disabled{opacity:.55;cursor:wait}.required-note{font-size:calc(8px*var(--fs-captions,1));color:#989b91}.form-status{font-size:calc(12px*var(--fs-body,1));line-height:1.75;border-left:2px solid var(--red);padding:12px 15px;margin:22px 0 0;background:#fcf6f5;color:#8f0010}.form-status.success{background:#f0f6f1;border-color:#437458;color:#254c31}.form-status:focus{outline:0}.contact-mode{font-size:calc(9px*var(--fs-captions,1));line-height:1.7;color:#96998f;margin-top:16px}.form-trap{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.info-dialog h3{font-size:calc(17px*var(--fs-headings,1));font-weight:400;letter-spacing:-.4px;margin:22px 0 10px}.info-dialog{max-height:85dvh;overflow-y:auto}.site-footer{height:118px}.viewer-brand img{width:72px}.viewer-header{height:96px}.viewer-heading h2{font-size:calc(23px*var(--fs-headings,1))}
@media(min-width:1650px){.hero{padding-top:58px;padding-bottom:68px}}
@media(max-width:1100px){.site-header{min-height:215px;gap:35px}.brand img{width:265px}.navigation-block{gap:40px}.header-descriptor{font-size:calc(9px*var(--fs-captions,1))}.main-nav{gap:32px;font-size:calc(15px*var(--fs-navigation,1))}.hero h1{font-size:calc(8vw*var(--fs-headings,1))}.project-mosaic{aspect-ratio:1.95;min-height:330px}.tile-center-label{font-size:calc(7px*var(--fs-captions,1));left:20px;bottom:39px}.mosaic-center .tile-enter{width:45px;height:45px;right:20px;bottom:22px}.contact-page{gap:50px}.contact-intro h1{font-size:calc(8vw*var(--fs-headings,1))}.form-row{gap:18px}}
@media(max-width:800px){.header-descriptor{display:none}.site-header{min-height:178px;padding:20px 0 26px}.brand img{width:225px}.navigation-block{padding-bottom:11px}.main-nav{gap:27px;font-size:calc(14px*var(--fs-navigation,1))}.hero{padding-top:35px;padding-bottom:45px;gap:22px}.hero h1{font-size:calc(8.1vw*var(--fs-headings,1))}.hero-aside{min-width:155px}.hero-aside p{font-size:calc(10px*var(--fs-body,1))}.hero-aside .text-link{font-size:calc(9px*var(--fs-body,1));gap:17px}.project-heading h3{font-size:calc(32px*var(--fs-headings,1))}.project-heading h3>span{font-size:calc(10px*var(--fs-headings,1))}.project-heading .text-link{font-size:calc(9px*var(--fs-body,1));gap:12px}.project-mosaic{min-height:300px;aspect-ratio:1.9;gap:6px;grid-template-columns:1fr 1.6fr 1fr}.tile-caption{font-size:calc(6px*var(--fs-captions,1));left:12px;top:14px;letter-spacing:.8px}.mosaic-center .tile-caption{left:17px;top:18px}.tile-enter{right:10px;bottom:10px;width:24px;height:24px}.mosaic-center .tile-enter{width:38px;height:38px;right:15px;bottom:15px}.tile-center-label{font-size:calc(6px*var(--fs-captions,1));left:17px;bottom:30px}.mosaic-caption{font-size:calc(8px*var(--fs-captions,1))}.studio-teaser{padding-top:55px;padding-bottom:55px;margin-top:50px;gap:30px}.studio-teaser h2{font-size:calc(35px*var(--fs-headings,1));letter-spacing:-1.3px}.bottom-cta>a{font-size:calc(43px*var(--fs-headings,1))}.page-intro h1{font-size:calc(8vw*var(--fs-headings,1))}.studio-story{--studio-gap:35px;padding-top:40px}.studio-story-copy h2{font-size:calc(30px*var(--fs-headings,1))}.studio-story-copy p:not(.eyebrow){font-size:calc(12px*var(--fs-body,1))}.expertise-row{gap:20px;grid-template-columns:.1fr 1fr 1fr}.expertise-row h3{font-size:calc(23px*var(--fs-headings,1))}.expertise-row>p{font-size:calc(11px*var(--fs-body,1))}.contact-page{padding-top:42px;gap:35px;grid-template-columns:.85fr 1.15fr}.contact-intro h1{font-size:calc(8.5vw*var(--fs-headings,1))}.contact-lead{font-size:calc(20px*var(--fs-body,1))}.contact-description{font-size:calc(11px*var(--fs-body,1))}.form-row{grid-template-columns:1fr;gap:0}.form-column{padding-top:3px}.service-choice{font-size:calc(9px*var(--fs-body,1))}.form-eyebrow{font-size:calc(8px*var(--fs-captions,1));letter-spacing:1px}.form-field input,.form-field textarea{font-size:calc(13px*var(--fs-body,1))}.optional{font-size:calc(8px*var(--fs-captions,1))}.service-field legend{line-height:1.6}.viewer-header{height:82px}.viewer-brand img{width:55px}.viewer-heading h2{font-size:calc(18px*var(--fs-headings,1))}}
@media(max-width:580px){:root{--gutter:22px}.site-header{display:block;padding-top:21px;padding-bottom:0;min-height:0}.brand img{width:205px}.navigation-block{margin-top:15px;padding-bottom:0}.main-nav{width:100%;justify-content:space-between;gap:20px;font-size:calc(14px*var(--fs-navigation,1))}.main-nav a{padding:14px 0 17px}.main-nav sup{font-size:calc(7px*var(--fs-navigation,1))}.hero{display:block;padding-top:33px;padding-bottom:40px}.hero-kicker{font-size:calc(7px*var(--fs-captions,1));letter-spacing:1.2px;margin-bottom:23px}.hero h1{font-size:calc(11.4vw*var(--fs-headings,1));line-height:1.02}.hero-aside{display:flex;justify-content:space-between;gap:22px;margin-top:23px;padding:0}.hero-aside p{font-size:calc(10px*var(--fs-body,1));line-height:1.8;margin:0}.hero-aside .text-link{font-size:calc(9px*var(--fs-body,1));gap:15px;white-space:nowrap}.section-heading{margin-bottom:23px}.section-note{max-width:140px;font-size:calc(8px*var(--fs-captions,1))}.project-heading{margin-bottom:17px}.project-heading h3{font-size:calc(30px*var(--fs-headings,1));letter-spacing:-.9px}.project-heading h3>span{display:block;margin:6px 0 0;font-size:calc(10px*var(--fs-headings,1))}.project-heading>.text-link{font-size:0;gap:0}.project-heading>.text-link>span{font-size:calc(25px*var(--fs-body,1));color:var(--red)}.project-heading .eyebrow{font-size:calc(7px*var(--fs-captions,1))}.project-mosaic{aspect-ratio:auto;min-height:0;max-height:none;grid-template-columns:1fr 1fr;grid-template-rows:150px 330px 150px;gap:6px}.mosaic-center{grid-column:1/3;grid-row:2}.mosaic-left-top{grid-column:1;grid-row:1}.mosaic-right-top{grid-column:2;grid-row:1}.mosaic-left-bottom{grid-column:1;grid-row:3}.mosaic-right-bottom{grid-column:2;grid-row:3}.mosaic-center img{object-position:center 49%}.tile-center-label{font-size:calc(7px*var(--fs-captions,1));bottom:30px;left:20px}.mosaic-center .tile-caption{font-size:calc(8px*var(--fs-captions,1));left:20px;top:20px}.mosaic-center .tile-enter{right:20px;bottom:17px;width:40px;height:40px}.mosaic-caption{font-size:calc(8px*var(--fs-captions,1));line-height:1.7;align-items:flex-start}.mosaic-caption>span{max-width:135px;text-align:right}.mosaic-caption>span>span{display:none}.studio-teaser{display:block;padding:40px 0 50px;margin-top:45px}.studio-teaser h2{font-size:calc(34px*var(--fs-headings,1));letter-spacing:-1.2px;margin-top:26px}.bottom-cta{padding-top:30px;padding-bottom:35px}.bottom-cta>a{font-size:calc(7.8vw*var(--fs-headings,1));letter-spacing:-.04em;gap:0}.bottom-cta>.eyebrow{font-size:calc(7px*var(--fs-captions,1))}.page-intro{padding-top:37px;padding-bottom:34px}.page-intro>.eyebrow{font-size:calc(7px*var(--fs-captions,1))}.page-intro h1{font-size:calc(10.8vw*var(--fs-headings,1));line-height:1.04;margin:28px 0}.intro-bottom>.eyebrow{font-size:calc(7px*var(--fs-captions,1))}.intro-bottom>p{font-size:calc(12px*var(--fs-body,1));line-height:1.75;max-width:215px}.studio-story{display:block;padding:28px 0 38px}.studio-image{aspect-ratio:calc(1.25/var(--size-studio,1))}.studio-story-copy{padding-top:36px}.studio-story-copy h2{font-size:calc(34px*var(--fs-headings,1))}.studio-story-copy p:not(.eyebrow){font-size:calc(13px*var(--fs-body,1))}.expertise-section{padding-top:15px;padding-bottom:35px}.expertise-row{grid-template-columns:25px 1fr;gap:13px;padding:24px 0}.expertise-row h3{font-size:calc(25px*var(--fs-headings,1))}.expertise-row>p{grid-column:2;font-size:calc(12px*var(--fs-body,1))}.studio-statement{padding:35px 0 50px}.statement{font-size:calc(10.4vw*var(--fs-headings,1));margin:25px 0}.contact-page{display:block;padding:37px 0 50px}.contact-intro h1{font-size:calc(22vw*var(--fs-headings,1));line-height:.98;margin:30px 0 22px}.contact-lead{font-size:calc(20px*var(--fs-body,1))}.contact-description{font-size:calc(12px*var(--fs-body,1));max-width:300px}.contact-signature{display:none}.form-column{margin-top:45px;border-top:1px solid var(--line);padding-top:32px}.form-eyebrow{margin-bottom:28px}.form-row{grid-template-columns:1fr 1fr;gap:20px}.form-field>label,.service-field legend{font-size:calc(10px*var(--fs-body,1))}.form-field{margin-bottom:24px}.form-field input,.form-field textarea{font-size:calc(12px*var(--fs-body,1))}.service-choice{font-size:calc(9px*var(--fs-body,1))}.service-choice>span{padding:10px}.service-field .optional{display:block;margin:5px 0 0}.form-submit-row{gap:10px}.submit-contact{font-size:calc(11px*var(--fs-body,1));gap:25px}.form-privacy{font-size:calc(9px*var(--fs-captions,1))}.site-footer{height:auto;min-height:110px;padding-top:25px;padding-bottom:24px}.copyright{margin-left:auto}.legal-link{margin-top:5px}.viewer-brand img{width:50px}.viewer-heading h2{font-size:calc(16px*var(--fs-headings,1))}.viewer-header{height:77px}.info-dialog{padding:30px}}
@media(max-width:360px){:root{--gutter:17px}.brand img{width:185px}.main-nav{font-size:calc(13px*var(--fs-navigation,1))}.project-mosaic{grid-template-rows:128px 290px 128px}.form-row{grid-template-columns:1fr;gap:0}.hero-aside .text-link{font-size:calc(8px*var(--fs-body,1));gap:8px}}


/* Epix Works 3.0 — responsive project masonry and readability pass. */
.site-header{min-height:154px;padding-top:20px;padding-bottom:22px}
.brand img{width:clamp(116px,12vw,165px);height:auto}
.navigation-block{padding-bottom:8px;gap:clamp(38px,7vw,118px)}
.header-descriptor{font-size:calc(13px*var(--fs-captions,1));line-height:1.55}
.main-nav{font-size:calc(18px*var(--fs-navigation,1))}
.main-nav sup{font-size:calc(9px*var(--fs-navigation,1))}
.eyebrow{font-size:calc(11px*var(--fs-captions,1))}
.hero-kicker{font-size:calc(10px*var(--fs-captions,1))}
.hero-aside p{font-size:calc(14px*var(--fs-body,1));line-height:1.75}
.text-link{font-size:calc(13px*var(--fs-body,1))}
.section-heading h2{font-size:calc(11px*var(--fs-captions,1))}
.section-note{font-size:calc(12px*var(--fs-captions,1))}

.project-masonry{display:grid;align-items:stretch;gap:clamp(8px,.75vw,13px);padding-bottom:12px}.project-masonry.is-flush{gap:0}.is-flush .project-tile-link{outline-offset:-2px}
.project-tile{min-width:0;min-height:0}
/* Category filters (site.js renderProjectFilters): a <details> (accordion tween), then text buttons, the chosen one underlined in red like the current page in the menu. */
.project-filters{margin:0 0 clamp(16px,1.8vw,26px)}
.project-filters>summary{list-style:none;display:inline-flex;align-items:center;gap:12px;padding:10px 0;cursor:pointer;user-select:none;font-size:calc(11px*var(--fs-captions,1));font-weight:500;letter-spacing:1.35px;text-transform:uppercase}
.project-filters>summary::-webkit-details-marker{display:none}.project-filters>summary::marker{content:""}
.project-filters-current{color:var(--muted)}.project-filters-current:not(:empty):before{content:"· ";color:var(--red)}.project-filters[open] .project-filters-current{display:none}
.project-filters .expertise-toggle{font-size:calc(19px*var(--fs-body,1))}.project-filters[open] .expertise-toggle{transform:rotate(45deg)}
.project-filters-list{display:flex;flex-wrap:wrap;gap:2px clamp(20px,2.4vw,36px);padding-bottom:4px}
.project-filters button{position:relative;padding:10px 0;font-size:calc(11px*var(--fs-captions,1));font-weight:500;letter-spacing:1.35px;text-transform:uppercase;color:var(--muted);transition:color var(--dur-fast) var(--ease-rise)}
.project-filters button:after{content:'';position:absolute;left:0;right:0;bottom:4px;height:1px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform var(--dur-fast) var(--ease-rise)}
.project-filters button:hover,.project-filters button[aria-pressed=true]{color:var(--ink)}.project-filters button[aria-pressed=true]:after{transform:scaleX(1)}
.project-tile-link{position:relative;display:block;width:100%;height:100%;overflow:hidden;background:var(--tile-bg,#efeee9);isolation:isolate;outline-offset:4px}
.project-tile-link:before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(0,0,0,0) 43%,rgba(0,0,0,.08) 69%,rgba(0,0,0,.42) 100%);pointer-events:none}
.project-tile-image{width:100%;height:100%;object-fit:cover;transition:transform var(--dur-slow) var(--ease-reveal);will-change:transform}
.project-tile-link:hover .project-tile-image,.project-tile-link:focus-visible .project-tile-image{transform:scale(1.035)}
.project-tile-link:focus-visible{outline:2px solid var(--red)}
.project-tile-index{position:absolute;top:18px;left:19px;z-index:2;font-size:calc(11px*var(--fs-captions,1));letter-spacing:1.45px;color:#111;background:rgba(255,255,255,.82);padding:7px 9px;backdrop-filter:blur(7px)}
.project-tile-copy{position:absolute;left:22px;right:72px;bottom:20px;z-index:2;color:#fff;text-shadow:0 1px 12px rgba(0,0,0,.12)}
.project-tile-publisher{display:block;font-size:calc(11px*var(--fs-captions,1));letter-spacing:1.35px;text-transform:uppercase;margin-bottom:7px;opacity:.86}
.project-tile-copy strong{display:block;font-size:calc(clamp(25px,2.35vw,42px)*var(--fs-headings,1));line-height:.98;letter-spacing:-.047em;font-weight:400}
.project-tile-subtitle{display:block;font-size:calc(13px*var(--fs-captions,1));line-height:1.45;margin-top:7px;opacity:.9}
.project-tile-enter{position:absolute;right:18px;bottom:18px;z-index:2;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:#111;color:#fff;transition:background-color var(--dur-fast) var(--ease-rise),transform var(--dur-fast) var(--ease-rise)}
.project-tile-enter svg{width:18px;height:18px;stroke-width:1.35}
.project-tile-link:hover .project-tile-enter{background:var(--red);transform:rotate(6deg)}
.project-empty{font-size:calc(15px*var(--fs-body,1));color:var(--muted);margin:20px 0 55px}

.page-intro>.eyebrow,.intro-bottom>.eyebrow,.studio-story-copy>.eyebrow,.contact-intro>.eyebrow{font-size:calc(10px*var(--fs-captions,1))}
.intro-bottom>p{font-size:calc(18px*var(--fs-body,1))}
.studio-story-copy p:not(.eyebrow){font-size:calc(16px*var(--fs-body,1));line-height:1.82}
.expertise-number{font-size:calc(11px*var(--fs-captions,1))}.expertise-row>p{font-size:calc(14px*var(--fs-body,1));line-height:1.75}
.contact-description{font-size:calc(15px*var(--fs-body,1));line-height:1.8}.contact-lead{font-size:calc(25px*var(--fs-body,1))}
.form-eyebrow{font-size:calc(11px*var(--fs-captions,1))}.form-field>label,.service-field legend{font-size:calc(13px*var(--fs-body,1))}.optional{font-size:calc(11px*var(--fs-captions,1))}
.form-field input,.form-field textarea{font-size:calc(16px*var(--fs-body,1))}.service-choice{font-size:calc(12px*var(--fs-body,1))}.form-privacy{font-size:calc(11px*var(--fs-captions,1))}.required-note{font-size:calc(10px*var(--fs-captions,1))}.contact-mode{font-size:calc(11px*var(--fs-captions,1))}
.copyright,.legal-link{font-size:calc(11px*var(--fs-captions,1))}

@media(max-width:1100px){
 .site-header{min-height:142px;gap:28px}.brand img{width:133px}.navigation-block{gap:38px}.header-descriptor{font-size:calc(12px*var(--fs-captions,1))}.main-nav{font-size:calc(17px*var(--fs-navigation,1))}
 .hero-aside p{font-size:calc(13px*var(--fs-body,1))}.project-tile-copy strong{font-size:calc(clamp(24px,3vw,36px)*var(--fs-headings,1))}
}
@media(max-width:800px){
 :root{--gutter:clamp(22px,5vw,36px)}
 .site-header{min-height:124px;padding:18px 0 21px}.brand img{width:113px}.main-nav{font-size:calc(16px*var(--fs-navigation,1));gap:24px}.main-nav sup{font-size:calc(8px*var(--fs-navigation,1))}
 .hero{padding-top:34px;padding-bottom:42px}.hero-aside p{font-size:calc(13px*var(--fs-body,1))}.hero-aside .text-link{font-size:calc(12px*var(--fs-body,1))}.section-note{font-size:calc(11px*var(--fs-captions,1))}
 .project-tile-index{font-size:calc(10px*var(--fs-captions,1));top:14px;left:14px}.project-tile-copy{left:16px;right:59px;bottom:15px}.project-tile-publisher{font-size:calc(9px*var(--fs-captions,1))}.project-tile-subtitle{font-size:calc(11px*var(--fs-captions,1))}.project-tile-enter{width:38px;height:38px;right:14px;bottom:14px}
 .studio-story-copy p:not(.eyebrow){font-size:calc(15px*var(--fs-body,1))}.expertise-row>p{font-size:calc(13.5px*var(--fs-body,1))}.contact-description{font-size:calc(14px*var(--fs-body,1))}
}
@media(max-width:580px){
 :root{--gutter:20px}
 .site-header{display:block;padding-top:18px;padding-bottom:0}.brand img{width:103px}.navigation-block{margin-top:8px}.main-nav{font-size:calc(15px*var(--fs-navigation,1));gap:14px}.main-nav a{padding:12px 0 14px}
 .hero{padding-top:28px;padding-bottom:36px}.hero-kicker{font-size:calc(9px*var(--fs-captions,1))}.hero-aside p{font-size:calc(12px*var(--fs-body,1))}.hero-aside .text-link{font-size:calc(11px*var(--fs-body,1))}.section-heading h2{font-size:calc(10px*var(--fs-captions,1))}.section-note{font-size:calc(10px*var(--fs-captions,1))}
 .project-masonry{gap:7px}.project-tile-index{font-size:calc(9px*var(--fs-captions,1));padding:6px 7px}.project-tile-copy strong{font-size:calc(clamp(21px,7vw,30px)*var(--fs-headings,1))}.project-tile-subtitle{font-size:calc(10px*var(--fs-captions,1))}.project-tile-enter{width:34px;height:34px}.project-tile-enter svg{width:15px;height:15px}
 .intro-bottom>p{font-size:calc(15px*var(--fs-body,1))}.studio-story-copy p:not(.eyebrow){font-size:calc(14px*var(--fs-body,1))}.expertise-row>p{font-size:calc(13px*var(--fs-body,1))}.contact-description{font-size:calc(14px*var(--fs-body,1))}.contact-lead{font-size:calc(21px*var(--fs-body,1))}
 .form-row{grid-template-columns:1fr;gap:0}.form-field>label,.service-field legend{font-size:calc(12px*var(--fs-body,1))}.form-field input,.form-field textarea{font-size:calc(15px*var(--fs-body,1))}.service-choice{font-size:calc(11px*var(--fs-body,1))}.form-privacy{font-size:calc(10px*var(--fs-captions,1))}.copyright,.legal-link{font-size:calc(10px*var(--fs-captions,1))}
 .viewer-heading h2{font-size:calc(17px*var(--fs-headings,1))}.project-information{font-size:calc(10px*var(--fs-captions,1))}
}
@media(max-width:360px){
 :root{--gutter:17px}.brand img{width:93px}.main-nav{font-size:calc(14px*var(--fs-navigation,1));gap:10px}.hero-aside{gap:12px}.hero-aside p{font-size:calc(11px*var(--fs-body,1))}.hero-aside .text-link{font-size:calc(10px*var(--fs-body,1))}.project-tile-publisher{font-size:calc(8px*var(--fs-captions,1))}.project-tile-copy{left:13px;bottom:12px;right:52px}.project-tile-enter{right:11px;bottom:11px}
}


/* Epix Works 6.0 — passive project information on gallery hover. */
.project-tile{position:relative}
.project-info-bubble{position:absolute;z-index:4;top:18px;right:18px;width:min(300px,calc(100% - 36px));padding:18px 18px 16px;background:rgba(255,255,255,.94);color:#111;border:1px solid rgba(255,255,255,.72);box-shadow:0 18px 45px rgba(0,0,0,.16);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);opacity:0;visibility:hidden;transform:translateY(-7px);transition:opacity var(--dur-fast) var(--ease-rise),transform var(--dur-fast) var(--ease-rise),visibility var(--dur-fast);pointer-events:none}
.project-tile:hover{z-index:3}
.project-tile:hover .project-info-bubble,.project-tile:focus-within .project-info-bubble{opacity:1;visibility:visible;transform:none}
.project-info-bubble-title{margin:0 0 12px;font-size:calc(17px*var(--fs-headings,1));line-height:1.05;letter-spacing:-.025em;font-weight:500}
.project-info-bubble dl{margin:0;font-size:calc(10px*var(--fs-captions,1));line-height:1.45}
.project-info-bubble dl>div{display:grid;grid-template-columns:minmax(58px,.75fr) minmax(0,1.25fr);gap:10px;padding:7px 0;border-top:1px solid rgba(16,16,16,.10)}
.project-info-bubble dt{color:#777770;text-transform:lowercase}.project-info-bubble dd{margin:0;text-align:right;overflow-wrap:anywhere}
@media(max-width:800px){
 .project-info-bubble{top:14px;right:14px;width:min(270px,calc(100% - 28px));padding:15px}.project-info-bubble-title{font-size:calc(15px*var(--fs-headings,1))}.project-info-bubble dl{font-size:calc(9px*var(--fs-captions,1))}
}
@media(max-width:580px){
 .project-info-bubble{top:11px;right:10px;width:calc(100% - 20px);padding:13px 14px}.project-info-bubble-title{font-size:calc(14px*var(--fs-headings,1));margin-bottom:9px}.project-info-bubble dl{font-size:calc(8.5px*var(--fs-captions,1))}.project-info-bubble dl>div{padding:6px 0}
}
@media(hover:none){.project-info-bubble{display:none}}

.viewer-shell{overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scroll-behavior:smooth;background:#fff}
.viewer-header{position:sticky;top:0;z-index:12}
.viewer-body{flex:0 0 calc(100dvh - 133px);height:calc(100dvh - 133px);min-height:520px}
.viewer-footer{flex:0 0 37px;position:relative;z-index:4}
.project-information>span{font-size:calc(15px*var(--fs-captions,1));transition:transform var(--dur-fast) var(--ease-rise)}.project-information:hover>span{transform:translateY(3px)}
.project-detail-section{background:#fff;border-top:1px solid var(--line);scroll-margin-top:96px}
.project-detail-inner{max-width:1760px;margin:0 auto;padding:clamp(64px,7vw,118px) var(--gutter) clamp(58px,7vw,105px)}
.project-detail-head{display:grid;grid-template-columns:minmax(150px,.34fr) minmax(0,1fr);gap:clamp(28px,5vw,90px);align-items:start;padding-bottom:clamp(38px,5vw,74px)}
.project-detail-head>.eyebrow{display:flex;align-items:center;gap:10px;padding-top:9px}
.project-detail-head h3{font-size:calc(clamp(54px,6.3vw,108px)*var(--fs-headings,1));font-weight:500;letter-spacing:-.067em;line-height:.92;margin:0}
.project-detail-head h3>span{display:block;margin-top:16px;font-size:calc(clamp(14px,1.1vw,20px)*var(--fs-headings,1));line-height:1.2;letter-spacing:.02em;font-weight:400;color:#72726d}
.project-detail-grid{display:grid;grid-template-columns:minmax(230px,.34fr) minmax(0,1fr);gap:clamp(28px,5vw,90px);border-top:1px solid var(--line);padding-top:clamp(30px,4vw,58px)}
.project-detail-facts{margin:0;font-size:calc(12px*var(--fs-captions,1))}
.project-detail-facts>div{display:grid;grid-template-columns:minmax(80px,.8fr) minmax(0,1.2fr);gap:18px;padding:13px 0;border-bottom:1px solid #ecece8}
.project-detail-facts dt{color:#8b8b84}.project-detail-facts dd{margin:0;text-align:right;line-height:1.45}
.project-detail-copy{max-width:900px}
.project-detail-copy p{font-size:calc(clamp(20px,1.75vw,30px)*var(--fs-body,1));line-height:1.5;letter-spacing:-.025em;margin:0 0 1.05em;font-weight:400}
.project-detail-copy p:last-child{margin-bottom:0}
.project-detail-credit{max-width:900px;margin:clamp(38px,5vw,70px) 0 0 auto;padding-top:18px;border-top:1px solid #ecece8;font-size:calc(10px*var(--fs-captions,1));line-height:1.65;color:#92928b}

@media(max-width:800px){
 .viewer-body{flex-basis:calc(100dvh - 119px);height:calc(100dvh - 119px);min-height:440px}.project-detail-section{scroll-margin-top:82px}.project-detail-inner{padding-top:55px;padding-bottom:65px}.project-detail-head,.project-detail-grid{grid-template-columns:1fr;gap:26px}.project-detail-head{padding-bottom:40px}.project-detail-head>.eyebrow{padding-top:0}.project-detail-head h3{font-size:calc(clamp(48px,11vw,76px)*var(--fs-headings,1))}.project-detail-facts{max-width:430px}.project-detail-copy p{font-size:calc(clamp(18px,4.1vw,24px)*var(--fs-body,1))}.project-detail-credit{margin-left:0}
}
@media(max-width:580px){
 .viewer-actions{gap:16px}.project-information{font-size:calc(9px*var(--fs-captions,1));gap:8px}.close-viewer{gap:8px;padding-left:8px}.viewer-body{flex-basis:calc(100dvh - 114px);height:calc(100dvh - 114px);min-height:390px}.project-detail-inner{padding-top:44px;padding-bottom:52px}.project-detail-head{gap:22px;padding-bottom:34px}.project-detail-head h3{font-size:calc(12.5vw*var(--fs-headings,1))}.project-detail-head h3>span{font-size:calc(12px*var(--fs-headings,1));margin-top:10px}.project-detail-grid{gap:30px;padding-top:28px}.project-detail-facts{font-size:calc(11px*var(--fs-captions,1))}.project-detail-copy p{font-size:calc(18px*var(--fs-body,1));line-height:1.55}.project-detail-credit{font-size:calc(9px*var(--fs-captions,1));margin-top:36px}
}
/* Epix Works 6.0 — 3D and editorial content coexist in one project composition.
   Desktop: persistent side-by-side scene. Mobile/tablet: persistent 3D stage above a dedicated scrolling project sheet. */
.viewer-shell{overflow:hidden!important;background:#fff}
.viewer-header{position:relative!important;top:auto!important;flex:0 0 96px;height:96px}
.viewer-content{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:minmax(0,1.72fr) minmax(370px,.88fr);background:#fff}
.viewer-stage{min-width:0;min-height:0;display:flex;flex-direction:column;background:#f4f3ef;border-right:1px solid var(--line)}
.viewer-stage .viewer-body{position:relative;flex:1 1 auto!important;flex-basis:auto!important;width:100%;height:auto!important;min-height:0!important;background:#f4f3ef}
.viewer-stage .viewer-footer{flex:0 0 37px;height:37px}
.project-detail-section{display:block!important;min-width:0;min-height:0!important;height:auto!important;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scroll-behavior:smooth;border-top:0!important;background:#fff;scrollbar-gutter:stable}
.project-detail-inner{max-width:none;margin:0;padding:clamp(34px,3.1vw,60px) clamp(28px,3vw,56px) clamp(46px,5vw,82px)}
.project-detail-head{display:block;padding-bottom:clamp(28px,3vw,46px)}
.project-detail-head>.eyebrow{padding-top:0;margin-bottom:clamp(21px,2.1vw,34px)}
.project-detail-head h3{font-size:calc(clamp(42px,4vw,66px)*var(--fs-headings,1));line-height:.94;letter-spacing:-.058em}
.project-detail-head h3>span{margin-top:13px;font-size:calc(clamp(12px,.9vw,16px)*var(--fs-headings,1));line-height:1.35;letter-spacing:.015em}
.project-detail-grid{display:block;border-top:1px solid var(--line);padding-top:clamp(25px,2.6vw,40px)}
.project-detail-facts{font-size:calc(11px*var(--fs-captions,1));margin:0 0 clamp(31px,3vw,48px)}
.project-detail-facts>div{grid-template-columns:minmax(88px,.78fr) minmax(0,1.22fr);gap:16px;padding:11px 0}
.project-detail-copy{max-width:680px}
.project-detail-copy p{font-size:calc(clamp(17px,1.28vw,22px)*var(--fs-body,1));line-height:1.58;letter-spacing:-.018em;margin-bottom:1.12em}
.project-detail-credit{max-width:680px;margin:clamp(32px,3.6vw,52px) 0 0;padding-top:16px;font-size:calc(9.5px*var(--fs-captions,1))}
.viewer-actions{gap:20px}
.viewer-heading .eyebrow::after{content:" — FICHE PROJET";color:#aaa9a3}

@media(max-width:1180px) and (min-width:801px){
 .viewer-content{grid-template-columns:minmax(0,1.35fr) minmax(360px,1fr)}
 .project-detail-inner{padding-left:34px;padding-right:34px}
 .project-detail-head h3{font-size:calc(clamp(38px,4.4vw,55px)*var(--fs-headings,1))}
 .project-detail-copy p{font-size:calc(17px*var(--fs-body,1))}
}
@media(max-width:800px){
 .viewer-header{flex:0 0 82px;height:82px}
 .viewer-content{grid-template-columns:1fr;grid-template-rows:clamp(250px,43dvh,410px) minmax(0,1fr);min-height:0}
 .viewer-stage{border-right:0;border-bottom:1px solid var(--line)}
 .viewer-stage .viewer-body{flex-basis:auto!important;height:auto!important;min-height:0!important}
 .viewer-stage .viewer-footer{flex:0 0 32px;height:32px}
 .project-detail-section{min-height:0!important;height:auto!important}
 .project-detail-inner{padding:29px var(--gutter) 50px}
 .project-detail-head{padding-bottom:27px}
 .project-detail-head>.eyebrow{margin-bottom:18px}
 .project-detail-head h3{font-size:calc(clamp(37px,8vw,58px)*var(--fs-headings,1))}
 .project-detail-head h3>span{font-size:calc(12px*var(--fs-headings,1));margin-top:9px}
 .project-detail-grid{padding-top:23px}
 .project-detail-facts{max-width:none;margin-bottom:29px;font-size:calc(10.5px*var(--fs-captions,1))}
 .project-detail-copy{max-width:680px}
 .project-detail-copy p{font-size:calc(clamp(16px,3.5vw,20px)*var(--fs-body,1));line-height:1.58}
 .project-detail-credit{margin-top:31px;font-size:calc(9px*var(--fs-captions,1))}
 .viewer-heading .eyebrow::after{content:""}
}
@media(max-width:580px){
 .viewer-header{flex-basis:77px;height:77px}
 .viewer-content{grid-template-rows:clamp(230px,40dvh,340px) minmax(0,1fr)}
 .viewer-footer>span{max-width:65%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .viewer-footer button{white-space:nowrap}
 .project-detail-inner{padding:25px 20px 44px}
 .project-detail-head{padding-bottom:24px}
 .project-detail-head>.eyebrow{font-size:calc(8px*var(--fs-captions,1));margin-bottom:15px}
 .project-detail-head h3{font-size:calc(clamp(34px,10vw,48px)*var(--fs-headings,1))}
 .project-detail-facts{font-size:calc(10px*var(--fs-captions,1))}
 .project-detail-facts>div{grid-template-columns:82px 1fr;gap:12px;padding:9px 0}
 .project-detail-copy p{font-size:calc(16px*var(--fs-body,1));line-height:1.58}
}
@media(max-width:390px){
 .viewer-content{grid-template-rows:clamp(220px,38dvh,300px) minmax(0,1fr)}
 .viewer-heading h2{max-width:115px}
 .project-detail-inner{padding-left:17px;padding-right:17px}
 .project-detail-head h3{font-size:calc(34px*var(--fs-headings,1))}
}
@media(max-height:650px) and (max-width:800px){
 .viewer-content{grid-template-rows:230px minmax(0,1fr)}
}

/* Epix Works 8.0 — Development / apps */
.development-hero{padding-top:clamp(46px,5.4vw,90px);padding-bottom:clamp(62px,7vw,118px);display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);gap:clamp(45px,7vw,120px);align-items:end}
.development-kicker{display:flex;align-items:center;gap:10px;color:#646461;margin-bottom:clamp(26px,3vw,44px)}
.development-hero h1{font-size:calc(clamp(58px,7.1vw,116px)*var(--fs-headings,1));letter-spacing:-.071em;line-height:.96;font-weight:500;margin:0}
.development-hero-copy{padding-bottom:8px;max-width:430px}
.development-lead{font-size:calc(clamp(20px,1.65vw,28px)*var(--fs-body,1));line-height:1.38;letter-spacing:-.035em;margin:0 0 26px}
.development-description{font-size:calc(13px*var(--fs-body,1));line-height:1.8;color:#72726d;margin:0;max-width:390px}
.development-section{padding-bottom:clamp(74px,8vw,138px)}
.development-grid{border-top:1px solid var(--line)}
.development-app{display:grid;grid-template-columns:minmax(0,calc(100%*1.52/2.24*var(--size-development,1))) minmax(max(320px,30%),1fr);min-height:calc(clamp(520px,51vw,760px)*var(--size-development,1));border-bottom:1px solid var(--line)}
.development-app-reverse{grid-template-columns:minmax(max(320px,30%),1fr) minmax(0,calc(100%*1.52/2.24*var(--size-development,1)))}
.development-app-reverse .development-app-visual{order:2}.development-app-reverse .development-app-copy{order:1;border-left:0;border-right:1px solid var(--line)}
.development-app-visual{position:relative;overflow:hidden;background:var(--app-bg,#f1f0eb);min-height:0}
.development-app-visual img{width:100%;height:100%;object-fit:cover;object-position:center;transition:transform var(--dur-slow) var(--ease-reveal)}
.development-app:hover .development-app-visual img{transform:scale(1.015)}
.development-app-index,.development-app-status{position:absolute;top:24px;z-index:2;font-size:calc(9px*var(--fs-captions,1));letter-spacing:1.35px;text-transform:uppercase;background:rgba(255,255,255,.88);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:9px 11px}
.development-app-index{left:24px;color:#777770}.development-app-status{right:24px;color:#111}
.development-app-copy{border-left:1px solid var(--line);display:flex;flex-direction:column;justify-content:center;padding:clamp(38px,5.2vw,88px)}
.development-app-copy>.eyebrow{color:#888881;margin-bottom:clamp(24px,2.8vw,42px)}
.development-app-copy h3{font-size:calc(clamp(48px,4.9vw,82px)*var(--fs-headings,1));line-height:.93;letter-spacing:-.065em;font-weight:500;margin:0}
.development-app-tagline{font-size:calc(clamp(19px,1.55vw,26px)*var(--fs-body,1));line-height:1.42;letter-spacing:-.03em;margin:clamp(28px,3.2vw,48px) 0 0;max-width:520px}
.development-app-description{font-size:calc(13px*var(--fs-body,1));line-height:1.8;color:#74746f;margin:24px 0 0;max-width:540px}
.development-app-link{display:flex;align-items:center;justify-content:space-between;gap:30px;border-top:1px solid var(--ink);padding-top:15px;margin-top:clamp(36px,4vw,62px);width:min(100%,330px);font-size:calc(12px*var(--fs-body,1))}
.development-app-link span{font-size:calc(19px*var(--fs-body,1));color:var(--red);transition:transform var(--dur-fast) var(--ease-rise)}.development-app-link:hover span{transform:translate(3px,-3px)}
.development-empty{padding:70px 0;color:var(--muted);font-size:calc(13px*var(--fs-body,1))}

@media(max-width:1050px){
 .development-hero{grid-template-columns:minmax(0,1.2fr) minmax(260px,.8fr);gap:45px}.development-app{grid-template-columns:minmax(0,calc(62.5%*var(--size-development,1))) minmax(max(300px,30%),1fr)}.development-app-reverse{grid-template-columns:minmax(max(300px,30%),1fr) minmax(0,calc(62.5%*var(--size-development,1)))}.development-app-copy{padding:44px}.development-app-copy h3{font-size:calc(52px*var(--fs-headings,1))}
}
@media(max-width:800px){
 .development-hero{padding-top:40px;padding-bottom:64px;grid-template-columns:1fr;gap:32px}.development-hero h1{font-size:calc(9vw*var(--fs-headings,1))}.development-hero-copy{padding:0;display:grid;grid-template-columns:1fr 1fr;gap:28px;max-width:none}.development-lead{font-size:calc(20px*var(--fs-body,1));margin:0}.development-description{font-size:calc(12px*var(--fs-body,1))}.development-app,.development-app-reverse{display:grid;grid-template-columns:1fr;min-height:0}.development-app-reverse .development-app-visual,.development-app-reverse .development-app-copy{order:initial}.development-app-visual{aspect-ratio:calc(1.35/var(--size-development,1))}.development-app-copy,.development-app-reverse .development-app-copy{border:0;border-top:1px solid var(--line);padding:42px 34px 50px}.development-app-copy h3{font-size:calc(clamp(44px,8vw,62px)*var(--fs-headings,1))}
}
@media(max-width:580px){
 .main-nav{gap:10px;font-size:calc(12.5px*var(--fs-navigation,1))}.main-nav a{gap:4px}.main-nav sup{font-size:calc(6.5px*var(--fs-navigation,1))}.development-hero{padding-top:35px;padding-bottom:50px}.development-kicker{font-size:calc(7px*var(--fs-captions,1));margin-bottom:22px}.development-hero h1{font-size:calc(12vw*var(--fs-headings,1));line-height:1}.development-hero-copy{display:block}.development-lead{font-size:calc(19px*var(--fs-body,1));margin-bottom:20px}.development-description{font-size:calc(11.5px*var(--fs-body,1));line-height:1.7}.development-section .section-note{max-width:150px;text-align:right}.development-app-visual{aspect-ratio:calc(1.06/var(--size-development,1))}.development-app-index,.development-app-status{top:15px;padding:8px 9px;font-size:calc(7px*var(--fs-captions,1))}.development-app-index{left:15px}.development-app-status{right:15px}.development-app-copy,.development-app-reverse .development-app-copy{padding:31px 22px 40px}.development-app-copy>.eyebrow{font-size:calc(7px*var(--fs-captions,1));margin-bottom:22px}.development-app-copy h3{font-size:calc(12vw*var(--fs-headings,1))}.development-app-tagline{font-size:calc(18px*var(--fs-body,1));margin-top:24px}.development-app-description{font-size:calc(12px*var(--fs-body,1));line-height:1.72;margin-top:19px}.development-app-link{font-size:calc(11px*var(--fs-body,1));margin-top:34px}.development-section{padding-bottom:70px}
}
@media(max-width:390px){.main-nav{font-size:calc(11.5px*var(--fs-navigation,1));gap:7px}.main-nav sup{display:none}.development-hero h1{font-size:calc(12.2vw*var(--fs-headings,1))}}

/* V11 — Studio accordions */
.expertise-row{display:block;border-top:1px solid var(--line);padding:0}
.expertise-row:last-of-type{border-bottom:1px solid var(--line)}
.expertise-row>summary{list-style:none;display:grid;grid-template-columns:.13fr 1fr auto;gap:35px;align-items:center;padding:30px 0;cursor:pointer;user-select:none}
.expertise-row>summary::-webkit-details-marker{display:none}
.expertise-row>summary::marker{content:""}
.expertise-row>summary:focus-visible{outline:2px solid currentColor;outline-offset:6px}
.expertise-row>summary .expertise-number{padding-top:0}
.expertise-row>summary h3{font-size:calc(28px*var(--fs-headings,1));font-weight:400;letter-spacing:-.8px;margin:0}
.expertise-toggle{display:inline-block;font-size:calc(27px*var(--fs-body,1));font-weight:300;line-height:1;color:var(--red)}
.expertise-row[open] .expertise-toggle{transform:rotate(45deg)}
.expertise-content{display:grid;grid-template-columns:.13fr 1fr 1fr;gap:35px;padding:0 0 30px}
.expertise-content>p{grid-column:3;font-size:calc(14px*var(--fs-body,1));line-height:1.75;color:#74776e;margin:0;max-width:440px}
@media(max-width:800px){.expertise-row>summary{grid-template-columns:.1fr 1fr auto;gap:20px}.expertise-row>summary h3{font-size:calc(23px*var(--fs-headings,1))}.expertise-content{grid-template-columns:.1fr 1fr 1fr;gap:20px}.expertise-content>p{font-size:calc(13.5px*var(--fs-body,1))}}
@media(max-width:580px){.expertise-row>summary{grid-template-columns:25px 1fr auto;gap:13px;padding:23px 0}.expertise-row>summary h3{font-size:calc(25px*var(--fs-headings,1))}.expertise-toggle{font-size:calc(24px*var(--fs-body,1))}.expertise-content{display:block;padding:0 0 24px 38px}.expertise-content>p{font-size:calc(13px*var(--fs-body,1));max-width:100%}}

/* Epix Works 11.0 — bilingual language selector. */
.site-header{position:relative}
.language-switcher{position:absolute;top:27px;right:0;display:flex;align-items:center;gap:9px;font-size:calc(9px*var(--fs-navigation,1));letter-spacing:.12em;z-index:8}
.language-switcher::before{content:"";width:18px;height:1px;background:var(--line);margin-right:2px}
.language-switcher button{appearance:none;border:0;background:transparent;color:#9a9a94;font:inherit;letter-spacing:inherit;padding:5px 2px;cursor:pointer;transition:color var(--dur-fast) var(--ease-rise)}
.language-switcher button:hover,.language-switcher button:focus-visible{color:var(--ink)}
.language-switcher button.active{color:var(--ink);font-weight:650}
.viewer-heading .eyebrow::after{content:var(--viewer-sheet-label," — FICHE PROJET")!important}
@media(max-width:800px){.language-switcher{top:20px;font-size:calc(8px*var(--fs-navigation,1));gap:7px}.language-switcher::before{width:14px}}
@media(max-width:580px){.language-switcher{top:16px;right:0}.language-switcher::before{display:none}}

/* Editable article and portfolio page templates. */
.site-header{height:auto;min-height:132px}.main-nav{flex-wrap:wrap;justify-content:flex-end;column-gap:25px;row-gap:0}.custom-page{padding-top:65px;padding-bottom:105px}.custom-page>.eyebrow{font-size:calc(10px*var(--fs-captions,1));letter-spacing:.13em;text-transform:uppercase;color:var(--red)}.custom-page-heading{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(220px,.6fr);gap:50px;align-items:end;margin:31px 0 26px}.custom-page-heading h1{font-size:calc(clamp(52px,8vw,112px)*var(--fs-headings,1));line-height:.98;letter-spacing:-.07em;font-weight:400;margin:0;overflow-wrap:anywhere}.custom-page-heading p{font-size:calc(clamp(17px,2vw,25px)*var(--fs-body,1));line-height:1.45;color:#656861;margin:0}.custom-page-meta{display:flex;flex-wrap:wrap;gap:10px 28px;border-top:1px solid var(--line);padding:18px 0 30px;font-size:calc(10px*var(--fs-captions,1));letter-spacing:.09em;text-transform:uppercase;color:#777a72}.custom-page-cover{margin:0 0 58px;background:#ecebe5}.custom-page-cover img{display:block;width:100%;max-height:750px;object-fit:cover}.custom-page-body{max-width:730px;margin:0 auto 70px}.custom-page-body p{white-space:pre-line;font-size:calc(clamp(16px,1.8vw,21px)*var(--fs-body,1));line-height:1.8;color:#43453e;margin:0 0 28px}.custom-page-body h2{font-weight:500;font-size:calc(clamp(30px,3.4vw,48px)*var(--fs-headings,1));letter-spacing:-.045em;margin:66px 0 25px}.custom-page-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:30px;margin-bottom:75px}.custom-page-gallery:empty{display:none}.custom-page-gallery figure{margin:0}.custom-page-gallery img{display:block;width:100%;height:auto;background:#ecebe5}.custom-page-gallery figcaption{font-size:calc(11px*var(--fs-captions,1));line-height:1.5;color:#777a72;padding-top:11px}.custom-page-back{display:inline-block;border-bottom:1px solid currentColor;padding-bottom:10px;font-size:calc(12px*var(--fs-body,1))}.custom-blog .custom-page-cover{max-width:950px;margin-left:auto;margin-right:auto}.custom-blog .custom-page-gallery{max-width:950px;margin-left:auto;margin-right:auto}
@media(max-width:760px){.main-nav{justify-content:flex-start}.custom-page{padding-top:42px;padding-bottom:70px}.custom-page-heading{display:block;margin-top:22px}.custom-page-heading h1{font-size:calc(clamp(50px,11vw,78px)*var(--fs-headings,1))}.custom-page-heading p{margin-top:25px}.custom-page-gallery{grid-template-columns:1fr;gap:35px}.custom-page-cover{margin-bottom:40px}.custom-page-body{margin-bottom:45px}}



/* Project image gallery — optional, next to the 3D viewer. Motion: transform, opacity, clip-path. */
.viewer-stage{position:relative;--viewer-footer-h:37px}
.viewer-mode{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;align-items:stretch;padding:4px;background:#f4f3ef;border:1px solid var(--line);z-index:4}
.viewer-mode[hidden]{display:none}
.viewer-mode button{position:relative;z-index:1;display:inline-flex;align-items:center;gap:10px;padding:11px 22px;font-size:calc(14px*var(--fs-navigation,1));letter-spacing:.01em;color:#5f5f59;white-space:nowrap;transition:color var(--dur-base) var(--ease-reveal)}
.viewer-mode button[aria-pressed=true]{color:#fff;cursor:default}
.viewer-mode button[aria-pressed=false]:hover{color:var(--ink)}
.viewer-mode button:focus-visible{outline:2px solid var(--red);outline-offset:2px}
.viewer-mode button[aria-pressed=false]:hover .viewer-mode-icon{transform:translateY(-2px)}
.viewer-mode sup{font-size:calc(10px*var(--fs-navigation,1));line-height:1;letter-spacing:.05em;color:var(--red);align-self:flex-start;margin-top:2px;transition:color var(--dur-base) var(--ease-reveal)}
.viewer-mode button[aria-pressed=true] sup{color:#fff}
.viewer-mode-icon{display:block;width:18px;height:18px;stroke-width:1.4;transition:transform var(--dur-fast) var(--ease-rise)}
.viewer-mode-indicator{position:absolute;top:4px;bottom:4px;left:0;width:1px;background:var(--ink);transform-origin:0 50%;transform:scaleX(0)}
@media(max-width:1180px){.viewer-mode{position:static;transform:none;margin-left:auto}.viewer-dialog.has-gallery-switch .viewer-actions{margin-left:0}}
@media(max-width:640px){.viewer-mode button{padding:9px 12px;gap:6px}.viewer-mode-label{display:none}}
.viewer-dialog.has-gallery-switch .viewer-heading{min-width:0}
.viewer-dialog.has-gallery-switch .viewer-heading h2{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* The 3D stage stays in layout (no resize of the module) and is hidden once the gallery covers it. */
.viewer-dialog.gallery-settled .viewer-stage .viewer-body{visibility:hidden}

.gallery-view{position:absolute;left:0;right:0;top:0;bottom:var(--viewer-footer-h);z-index:3;display:grid;grid-template-rows:minmax(0,1fr) auto;background:#fff;--gallery-bg:#efeee9}
.gallery-view:focus{outline:none}
.gallery-stage{position:relative;min-height:0;overflow:hidden;background:var(--gallery-bg);touch-action:pan-y pinch-zoom;-webkit-user-select:none;user-select:none}
.gallery-view:not(.is-single) .gallery-stage{cursor:grab}
.gallery-stage.is-dragging{cursor:grabbing}
.gallery-slides{position:absolute;inset:0}
.gallery-slide{position:absolute;inset:clamp(20px,3.2vw,52px) clamp(76px,7.5vw,124px);margin:0;display:flex;align-items:center;justify-content:center;pointer-events:none}
.gallery-slide img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;-webkit-user-drag:none}
.gallery-seam{position:absolute;left:0;top:0;width:100%;height:1px;z-index:1;background:var(--red);opacity:0;pointer-events:none}
.gallery-nav{position:absolute;top:50%;z-index:2;width:52px;height:52px;margin-top:-26px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.94);color:var(--ink);box-shadow:0 12px 34px rgba(0,0,0,.08);transition:background-color var(--dur-fast) var(--ease-rise),color var(--dur-fast) var(--ease-rise),scale var(--dur-fast) var(--ease-rise)}
.gallery-prev{left:clamp(14px,1.7vw,28px)}.gallery-next{right:clamp(14px,1.7vw,28px)}
.gallery-nav svg{width:20px;height:20px;stroke-width:1.4;transition:transform var(--dur-fast) var(--ease-rise)}
.gallery-nav:hover,.gallery-nav:focus-visible{background:var(--red);color:#fff}
.gallery-prev:hover svg,.gallery-prev:focus-visible svg{transform:translateX(-3px)}
.gallery-next:hover svg,.gallery-next:focus-visible svg{transform:translateX(3px)}
.gallery-nav:active{scale:.93}
.gallery-nav:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.gallery-view.is-single .gallery-nav,.gallery-view.is-single .gallery-strip{display:none}

.gallery-bar{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:clamp(18px,2.2vw,36px);min-width:0;padding:14px clamp(18px,2.4vw,36px) 12px;border-top:1px solid var(--line);background:#fff}
.gallery-view.is-single .gallery-bar{grid-template-columns:auto minmax(0,1fr)}
.gallery-counter{margin:0;display:flex;align-items:baseline;gap:9px;white-space:nowrap;font-variant-numeric:tabular-nums}
.gallery-counter-now{display:inline-flex;font-size:calc(clamp(28px,2.4vw,40px)*var(--fs-headings,1));line-height:1;letter-spacing:-.04em;font-weight:400}
.gallery-digit{position:relative;display:block;overflow:hidden}
.gallery-digit>span{display:block}
.gallery-counter-total{font-size:calc(11px*var(--fs-captions,1));letter-spacing:.1em;color:var(--muted)}
.gallery-live{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.gallery-caption{min-width:0}
.gallery-line{position:relative;margin:0;overflow:hidden}
.gallery-line>span{display:block}
.gallery-line>.is-leaving,.gallery-digit>.is-leaving{position:absolute;left:0;top:0;width:100%}
.gallery-eyebrow{margin-bottom:4px;font-size:calc(10px*var(--fs-captions,1));line-height:1.5;letter-spacing:1.4px;text-transform:uppercase;color:#777770}
.gallery-eyebrow>span{display:flex;align-items:center;gap:9px;min-width:0}
.gallery-eyebrow-text{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gallery-text{min-height:1.5em;font-size:calc(13px*var(--fs-captions,1));line-height:1.5;color:var(--ink)}
.gallery-text>span{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.gallery-strip{position:relative;justify-self:end;max-width:min(440px,30vw);overflow-x:auto;overflow-y:hidden;padding:3px 0 7px;scrollbar-width:none;overscroll-behavior-x:contain}
.gallery-strip::-webkit-scrollbar{display:none}
.gallery-track{display:flex;gap:6px}
.gallery-thumb{position:relative;flex:0 0 auto;width:62px;height:46px;padding:0;overflow:hidden;background:var(--gallery-bg);opacity:.48;transition:opacity var(--dur-fast) var(--ease-rise)}
.gallery-thumb img{width:100%;height:100%;object-fit:cover;transition:transform var(--dur-slow) var(--ease-reveal)}
.gallery-thumb:hover,.gallery-thumb:focus-visible,.gallery-thumb.is-active{opacity:1}
.gallery-thumb:hover img,.gallery-thumb:focus-visible img{transform:scale(1.08)}
.gallery-thumb:focus-visible{outline:2px solid var(--red);outline-offset:-2px}
.gallery-indicator{position:absolute;left:0;bottom:2px;width:100px;height:2px;background:var(--red);transform-origin:0 50%;transform:scaleX(0);pointer-events:none}

/* Compact entry point in the project sheet. */
.project-detail-gallery{padding-bottom:clamp(26px,2.8vw,40px)}
.project-detail-gallery>.eyebrow{display:flex;align-items:center;gap:10px;margin-bottom:14px;color:#777770}
.detail-thumbs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.detail-thumb{position:relative;display:block;aspect-ratio:1;padding:0;overflow:hidden;background:var(--detail-bg,#efeee9)}
.detail-thumb img{width:100%;height:100%;object-fit:cover;transition:transform var(--dur-slow) var(--ease-reveal)}
.detail-thumb:hover img,.detail-thumb:focus-visible img{transform:scale(1.07)}
.detail-thumb::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--red);transform:scaleX(0);transform-origin:0 50%;transition:transform var(--dur-fast) var(--ease-reveal)}
.detail-thumb:hover::after,.detail-thumb:focus-visible::after,.detail-thumb[aria-current=true]::after{transform:scaleX(1)}
.detail-thumb:focus-visible{outline:2px solid var(--red);outline-offset:2px}
.detail-thumb-more{position:absolute;inset:0;display:grid;place-items:center;background:rgba(17,17,17,.52);color:#fff;font-size:calc(clamp(14px,1.2vw,18px)*var(--fs-body,1));letter-spacing:-.02em;transition:background-color var(--dur-fast) var(--ease-rise)}
.detail-thumb:hover .detail-thumb-more{background:rgba(17,17,17,.38)}

@media(max-width:800px){
 .viewer-stage{--viewer-footer-h:32px}
 .viewer-dialog.is-gallery .viewer-content{grid-template-rows:minmax(0,1fr) clamp(104px,26dvh,240px)}
 .gallery-slide{inset:14px 16px}
 .gallery-nav{width:40px;height:40px;margin-top:-20px}.gallery-nav svg{width:17px;height:17px}.gallery-prev{left:10px}.gallery-next{right:10px}
 .gallery-bar{grid-template-columns:auto minmax(0,1fr);gap:8px 16px;padding:10px var(--gutter) 8px}
 .gallery-strip{grid-column:1/-1;justify-self:stretch;max-width:none}
 .gallery-thumb{width:50px;height:38px}
 .gallery-counter-now{font-size:calc(26px*var(--fs-headings,1))}
 .gallery-eyebrow{margin-bottom:2px;font-size:calc(8px*var(--fs-captions,1));letter-spacing:1.1px}
 .gallery-text{font-size:calc(12px*var(--fs-captions,1))}
 .gallery-text>span{-webkit-line-clamp:1}
}
@media(max-width:580px){

 .gallery-nav{background:rgba(255,255,255,.88)}
 .detail-thumbs{gap:5px}
}

@media(max-height:560px){.gallery-strip{display:none}}

/* Project open: the real header compacts at the top; the non-modal viewer sits right under it. */
html.project-open #page .site-header{position:fixed;top:0;left:0;right:0;z-index:1000;height:auto;min-height:0!important;padding-top:6px!important;padding-bottom:6px!important;display:flex!important;align-items:center!important;justify-content:space-between;gap:32px;border-bottom-color:transparent}
/* The white band and its rule are a plate behind the header's children. While the header compacts or expands,
   site.js moves it from the page header's box to the compact one (--plate-y/--plate-h) without reflowing anything. */
html.project-open #page .site-header::before{content:"";position:absolute;z-index:-1;left:0;right:0;top:0;box-sizing:border-box;height:var(--plate-h,calc(100% + 1px));transform:translateY(var(--plate-y,0px));background:#fff;border-bottom:1px solid var(--line);box-shadow:0 0 0 100vmax #fff;clip-path:inset(0 -100vmax 0);pointer-events:none}
html.project-open #page .site-header .brand img{width:clamp(58px,5vw,84px)!important}
html.project-open #page .site-header .main-nav{font-size:calc(12px*var(--fs-navigation,1))}
/* The language switch joins the compact bar's row, after the nav (as in the sticky compact bar), instead of
   hanging at its page-header spot over the nav. */
@media(min-width:581px){html.project-open #page .site-header .navigation-block{margin-left:auto}html.project-open #page .site-header .language-switcher{position:static}}
@media(max-width:580px){html.project-open #page .site-header .language-switcher{visibility:hidden}}
html.project-open .viewer-brand{display:none}
.viewer-dialog[open]{position:fixed;left:0;right:0;bottom:0;top:0;height:auto!important;max-height:none;width:100%;margin:0;z-index:900}
@media(max-width:760px){html.project-open #page .site-header{padding-top:4px!important;padding-bottom:4px!important;gap:16px}html.project-open #page .site-header .brand img{width:52px!important}}

/* Previous / next 3D element (site.js renderSets). At rest: the set's name along the border and a hairline, like
   a book spine; the whole band is the target. Hover or keyboard focus: the band lights up, the hairline turns red
   and a small pile of the destination set fans out beside it. Touch has no hover: the spine alone. */
.viewer-body .set-edge{display:none}
.viewer-dialog.has-module-sets .project-frame.ready~.set-edge{display:flex}
/* top clears the module's tab bar and its tools box (right side), about 124 px on desktop, 144 px on phones */
.set-edge{position:absolute;z-index:3;top:max(132px,30%);height:clamp(110px,40%,380px);max-height:calc(100% - 144px);width:56px;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:#66665f;transition:background-color var(--dur-fast) var(--ease-rise),color var(--dur-fast) var(--ease-rise)}
.set-prev{left:0}.set-next{right:0}
.set-edge::before{content:"";position:absolute;top:30%;bottom:30%;width:1px;background:rgba(28,28,21,.16);transition:background-color var(--dur-fast) var(--ease-rise)}
.set-prev::before{left:0}.set-next::before{right:0}
.set-edge svg{width:14px;height:14px;flex:none;stroke-width:1.5}
.set-edge-label{writing-mode:vertical-rl;font-size:calc(10px*var(--fs-captions,1));letter-spacing:.18em;text-transform:uppercase;white-space:nowrap;max-height:calc(100% - 40px);overflow:hidden;text-overflow:ellipsis}
.set-prev .set-edge-label{transform:rotate(180deg)}
.set-edge-pile{position:absolute;top:50%;width:76px;height:76px;opacity:0;pointer-events:none;transition:opacity var(--dur-fast) var(--ease-rise),transform .35s cubic-bezier(.2,.7,0,1)}
.set-prev .set-edge-pile{left:60px;transform:translate(-14px,-50%)}
.set-next .set-edge-pile{right:60px;transform:translate(14px,-50%)}
.set-edge-pile img{position:absolute;left:50%;top:50%;width:auto;height:auto;max-width:56px;max-height:58px;border-radius:2px;transform:translate(-50%,-50%) translateX(calc(var(--fan,0)*9px)) rotate(calc(var(--fan,0)*8deg));filter:drop-shadow(0 6px 8px rgba(30,28,20,.18))}
.set-edge:focus-visible{outline-offset:-2px}
.set-edge:focus-visible{color:var(--ink)}
.set-edge:focus-visible::before{background:var(--red);width:2px}
.set-prev:focus-visible{background:linear-gradient(to right,rgba(255,255,253,.95),rgba(255,255,253,0))}
.set-next:focus-visible{background:linear-gradient(to left,rgba(255,255,253,.95),rgba(255,255,253,0))}
.set-edge:focus-visible .set-edge-pile{opacity:1;transform:translate(0,-50%)}
@media(hover:hover){
 .set-edge:hover{color:var(--ink)}
 .set-edge:hover::before{background:var(--red);width:2px}
 .set-prev:hover{background:linear-gradient(to right,rgba(255,255,253,.95),rgba(255,255,253,0))}
 .set-next:hover{background:linear-gradient(to left,rgba(255,255,253,.95),rgba(255,255,253,0))}
 .set-edge:hover .set-edge-pile{opacity:1;transform:translate(0,-50%)}
}
@media(max-width:580px){.set-edge{width:34px;top:max(152px,30%)}.set-edge-label{font-size:calc(9px*var(--fs-captions,1));letter-spacing:.16em}}

/* Motion core. Page enter/leave, project open/close, accordions, footer reveal, image fade-in and gallery
   transitions run on GSAP (site.js, same vocabulary). These tokens mirror it for the CSS transitions left. */
:root{--ease-reveal:cubic-bezier(.19,1,.22,1);--ease-rise:cubic-bezier(.22,1,.36,1);--ease-move:cubic-bezier(.76,0,.24,1);--ease-exit:cubic-bezier(.55,.055,.675,.19);--dur-fast:.25s;--dur-base:.5s;--dur-slow:.9s}
/* Page enter: armed by the inline head script only (never without JS), released by site.js or by that script's own timer. */
html.motion-armed:not(.motion-ready) #main,html.motion-armed:not(.motion-ready) #page .site-footer{opacity:0}
/* E/P page transition. The head marker covers the next document before its first paint.
   The monogram is traced from assets/epix-logo.png; no font substitutes. */
.page-loader{position:fixed;inset:0;z-index:10000;overflow:hidden;visibility:hidden;opacity:0;pointer-events:none;color:#fff;contain:layout style}
.page-loader-veil{position:absolute;inset:0;background:#0b0b0b}
.page-loader-center{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}
.page-loader-center>svg{grid-area:1/1;width:clamp(160px,38vmin,340px);height:auto;overflow:visible;transform-box:view-box;transform-origin:50% 50%}
.page-loader-logo{fill:currentColor;stroke:currentColor;stroke-width:3.2;stroke-linejoin:round}
.page-loader-letter{fill-opacity:0;stroke-dasharray:1;stroke-dashoffset:1}
.page-loader-cutout{display:none;fill:#0b0b0b;stroke:none}
html.page-arriving::before{content:"";position:fixed;inset:0;z-index:9999;background:#0b0b0b;pointer-events:none}
html.page-arriving .page-loader{visibility:visible;opacity:1;pointer-events:auto}
html.page-arriving .page-loader-letter{stroke-dashoffset:0}
@media(prefers-reduced-motion:reduce){
 .page-loader,html.page-arriving::before{display:none}
}
@keyframes soft-in{from{opacity:0;transform:translateY(8px)}}
.form-status:not([hidden]),.module-error:not([hidden]),.module-loader:not([hidden]){animation:soft-in var(--dur-base) var(--ease-reveal) both}

/* Footer — black, large: logo, repeated nav, copyright. */
.site-footer.epix-footer{--red:#ff5160;height:auto;min-height:0;display:block;padding:0;gap:0;margin-top:clamp(48px,6vw,88px);background:#0b0b0b;color:#fff;font-family:var(--font-captions);font-size:calc(16px*var(--fs-body,1));font-weight:400;line-height:normal}
.epix-footer-inner{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:24px;row-gap:clamp(36px,4vw,56px);padding-top:clamp(48px,5vw,72px);padding-bottom:24px;align-items:center}
.epix-footer-logo{grid-column:1/span 4;display:block;width:clamp(85px,11vw,160px)}
.epix-footer-logo img{width:100%;height:auto;display:block}
.footer-nav{grid-column:5/span 8;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px clamp(20px,2.4vw,36px);font-family:var(--font-footer-navigation,"Helvetica Neue",Helvetica,Arial,sans-serif)}
.footer-nav a{position:relative;display:inline-flex;align-items:flex-start;gap:6px;font-size:calc(13px*var(--fs-navigation,1));line-height:1.4;letter-spacing:.01em;color:#e9e9e4;padding:4px 0}
.footer-nav a sup{font-size:calc(8px*var(--fs-navigation,1));letter-spacing:.05em;color:var(--red);margin-top:.1em}
.footer-nav a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--red);transform:scaleX(0);transform-origin:right;transition:transform var(--dur-fast) var(--ease-reveal)}
.footer-nav a:hover::after,.footer-nav a:focus-visible::after{transform:scaleX(1);transform-origin:left}
.footer-nav a:hover,.footer-nav a:focus-visible{color:#fff}
.footer-nav a:focus-visible{outline:2px solid var(--red);outline-offset:6px}
.epix-footer-bottom{grid-column:1/-1;display:flex;align-items:center;gap:32px;padding-top:22px;border-top:1px solid #262626;font-size:calc(12px*var(--fs-captions,1));color:#8d8d87}
.epix-footer-bottom .legal-link{color:#8d8d87;font-size:calc(12px*var(--fs-captions,1));padding:0;transition:color var(--dur-fast) var(--ease-rise)}
.epix-footer-bottom .legal-link:hover,.epix-footer-bottom .legal-link:focus-visible{color:#fff}
/* Discreet administration entry, just right of the copyright. */
.epix-footer-bottom .admin-link{margin-left:-18px;color:#5e5e5a;font-size:calc(10px*var(--fs-captions,1));letter-spacing:.04em;transition:color var(--dur-fast) var(--ease-rise)}
.epix-footer-bottom .admin-link:hover,.epix-footer-bottom .admin-link:focus-visible{color:#fff}
.epix-footer-bottom .back-top{margin-left:auto;color:#fff;font-size:calc(18px*var(--fs-captions,1));transition:transform var(--dur-fast) var(--ease-rise)}
.epix-footer-bottom .back-top:hover{transform:translateY(-4px)}
@media(max-width:760px){.epix-footer-logo{grid-column:1/-1;width:90px}.footer-nav{grid-column:1/-1;justify-content:flex-start}.epix-footer-bottom{flex-wrap:wrap;gap:14px 22px}.epix-footer-bottom .admin-link{margin-left:-10px}}

/* Scroll reveals (site.js). These wrappers and classes exist only while an element waits for or plays its
   reveal; site.js removes them afterwards. Nothing here hides content by default. */
.sl-split{display:flow-root}
.sl-line{display:block;overflow:hidden;padding:.15em 0 .2em;margin:-.15em 0 -.2em}
.sl-in{display:block}
.sl-eb{display:inline-block}
.sl-num{display:inline-flex;clip-path:inset(0)}.sl-num>span{display:block}
.rule-draw{position:relative;border-top-color:transparent}
.rule-draw::before{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;background:var(--rule-c,var(--line));transform:scaleX(var(--rule,1));transform-origin:0 50%;pointer-events:none}

/* Reduced motion: every CSS transition and animation stops, hover movements stay put, content is never held
   back by the page-enter arming. GSAP motion is skipped by site.js itself. */
@media(prefers-reduced-motion:reduce){
 html,.viewer-shell,.project-detail-section{scroll-behavior:auto}
 *,*::before,*::after{animation:none!important;transition:none!important}
 .project-tile-link:hover .project-tile-image,.project-tile-link:focus-visible .project-tile-image,.development-app:hover .development-app-visual img,.gallery-thumb:hover img,.gallery-thumb:focus-visible img,.detail-thumb:hover img,.detail-thumb:focus-visible img,.gallery-nav:hover svg,.gallery-nav:focus-visible svg{transform:none!important}
 .gallery-nav:active{scale:none}
 html.motion-armed:not(.motion-ready) #main,html.motion-armed:not(.motion-ready) #page .site-footer{opacity:1}
}

/* Homepage (index.html) — hero, studio, selected projects, call to action. Scoped .home-*; the full project grid
   lives on direction-artistique.html. Reveals come from site.js (HEADS/RULES/MEDIA/NUMBERS/RISE), nothing is hidden here. */
.home-hero{padding-top:clamp(48px,6.5vw,118px);padding-bottom:clamp(64px,8.5vw,150px);gap:clamp(40px,5vw,96px)}
.home-hero h1{font-size:calc(clamp(58px,8.2vw,148px)*var(--fs-headings,1));line-height:.95;letter-spacing:-.072em}
.home-studio{display:grid;--home-studio-gap:clamp(16px,2vw,32px);grid-template-columns:minmax(0,1fr) minmax(0,calc((100% - 2*var(--home-studio-gap))/3*var(--size-home-studio,1)));column-gap:calc((100% - 11*var(--home-studio-gap))/12 + 2*var(--home-studio-gap));row-gap:40px;align-items:start;padding-top:clamp(48px,6vw,104px);padding-bottom:clamp(64px,8vw,140px);border-top:1px solid var(--line)}
.home-studio-statement{grid-column:1}
.home-studio-statement>.eyebrow,.home-cta>.eyebrow{display:flex;align-items:center;gap:10px;color:#646461}
.home-studio h2{font-size:calc(clamp(38px,4.6vw,84px)*var(--fs-headings,1));line-height:1.02;letter-spacing:-.058em;font-weight:400;margin:clamp(24px,3vw,44px) 0 0}
.home-studio-side{grid-column:2;padding-top:6px}
.home-studio-media{position:relative;margin:0 0 clamp(22px,2.4vw,34px);aspect-ratio:4/3;overflow:hidden;background:#eeeae4}
.home-studio-media img{width:100%;height:100%;object-fit:cover}
.home-studio-text{font-size:calc(clamp(15px,1.1vw,18px)*var(--fs-body,1));line-height:1.65;color:#5f5f5b;margin:0 0 28px;max-width:420px}
.home-work{padding-bottom:clamp(64px,8vw,140px)}
.work-intro~.work-section{padding-bottom:clamp(56px,6vw,100px)}
.home-work .section-heading{margin-bottom:clamp(24px,3vw,44px)}
/* Selected projects: one column by default; 2 columns on tablets; editorial grid on desktop
   (3 = one large + two stacked, 2 = 7/5, 1 = full width). */
.home-featured{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(36px,3vw,48px) clamp(16px,1.6vw,28px)}
.home-card,.home-featured>.project-empty{grid-column:1/-1;min-width:0}
.home-card{display:flex}
.home-card-link{display:flex;flex-direction:column;width:100%}
.home-card-media{position:relative;display:block;aspect-ratio:4/3;overflow:hidden;background:var(--tile-bg,#efeee9);isolation:isolate}
.home-card-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform var(--dur-slow) var(--ease-reveal)}
.home-card-link:hover .home-card-image,.home-card-link:focus-visible .home-card-image{transform:scale(1.035)}
.home-card-link:hover .project-tile-enter,.home-card-link:focus-visible .project-tile-enter{background:var(--red);transform:rotate(6deg)}
.home-card-meta{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:clamp(14px,1.6vw,26px);align-items:start;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.home-card-index{font-size:calc(11px*var(--fs-captions,1));letter-spacing:1.45px;color:var(--ink);padding-top:.5em}
.home-card h3{font-size:calc(clamp(24px,2.1vw,38px)*var(--fs-headings,1));line-height:1;letter-spacing:-.047em;font-weight:400;margin:0}
.home-card-subtitle{font-size:calc(13px*var(--fs-body,1));line-height:1.45;color:#646461;margin:7px 0 0}
.home-card-client{font-size:calc(10px*var(--fs-captions,1));letter-spacing:1.4px;text-transform:uppercase;color:#646461;padding-top:.7em;text-align:right}
.home-work-foot{display:flex;justify-content:flex-end;margin-top:clamp(36px,4vw,64px);padding-top:18px;border-top:1px solid var(--line)}
@media(min-width:621px) and (max-width:980px){
 .home-card{grid-column:span 6}
 .home-featured[data-count="1"] .home-card,.home-featured[data-count="3"] .home-card:first-child{grid-column:1/-1}
 .home-featured[data-count="1"] .home-card-media,.home-featured[data-count="3"] .home-card:first-child .home-card-media{aspect-ratio:16/9}
}
@media(min-width:981px){
 .home-featured[data-count="1"] .home-card{grid-column:1/-1}
 .home-featured[data-count="1"] .home-card-media{aspect-ratio:21/9}
 .home-featured[data-count="2"] .home-card:first-child,.home-featured[data-count="3"] .home-card:first-child{grid-column:1/span 7}
 .home-featured[data-count="2"] .home-card:nth-child(2),.home-featured[data-count="3"] .home-card:not(:first-child){grid-column:8/span 5}
 .home-featured[data-count="3"] .home-card:first-child{grid-row:span 2}
 .home-featured[data-count="3"] .home-card:not(:first-child) .home-card-media{aspect-ratio:16/10}
 /* The large card (and the second of two) takes the height of its row(s): its image fills what the text leaves. */
 .home-featured[data-count="3"] .home-card:first-child .home-card-media,.home-featured[data-count="2"] .home-card:nth-child(2) .home-card-media{flex:1 1 auto;aspect-ratio:auto;min-height:320px}
 .home-featured[data-count="1"] .home-card h3,.home-featured[data-count="3"] .home-card:first-child h3{font-size:calc(clamp(32px,3.3vw,60px)*var(--fs-headings,1))}
}
.home-cta{padding-top:clamp(48px,6vw,104px);padding-bottom:clamp(56px,6.5vw,112px);border-top:1px solid var(--line)}
.home-cta h2{margin:clamp(22px,2.6vw,40px) 0 0;font-size:calc(clamp(44px,7.4vw,136px)*var(--fs-headings,1));line-height:1;letter-spacing:-.065em;font-weight:400}
.home-cta h2 a{position:relative;display:block;padding-right:1.1em}
.home-cta h2 .cta-arrow{position:absolute;right:0;bottom:.06em;margin:0}
.home-cta h2 a:hover .cta-arrow,.home-cta h2 a:focus-visible .cta-arrow{transform:translate(.06em,-.06em)}
.home-cta-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:24px 40px;margin-top:clamp(32px,4vw,64px)}
.home-cta-text{font-size:calc(clamp(15px,1.15vw,19px)*var(--fs-body,1));line-height:1.6;color:#5f5f5b;margin:0;max-width:460px}
.home-cta-button{display:inline-flex;align-items:stretch;min-height:56px;background:#111;color:#fff;font-size:calc(12px*var(--fs-body,1));letter-spacing:.01em;transition:background-color var(--dur-fast) var(--ease-rise)}
.home-cta-label{display:flex;align-items:center;padding:0 clamp(22px,2vw,32px)}
.home-cta-arrow{display:grid;place-items:center;width:56px;flex:0 0 auto;background:var(--red);font-size:calc(22px*var(--fs-body,1))}
.home-cta-button:hover,.home-cta-button:focus-visible{background:#363633}
@media(max-width:980px){
 .home-hero{display:block}
 .home-hero h1{font-size:calc(clamp(40px,10.6vw,104px)*var(--fs-headings,1))}
 .home-hero .hero-aside{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-top:clamp(28px,5vw,44px);padding:0;min-width:0}
 .home-hero .hero-aside p{margin:0}
 .home-studio{grid-template-columns:minmax(0,1fr)}
 .home-studio-statement,.home-studio-side{grid-column:1}
 .home-studio-side{display:grid;--home-studio-gap:clamp(16px,3vw,32px);grid-template-columns:minmax(0,calc((100% - var(--home-studio-gap))/2*var(--size-home-studio,1))) minmax(calc((100% - var(--home-studio-gap))/3),1fr);column-gap:var(--home-studio-gap);align-items:end}
 .home-studio-media{grid-column:1;grid-row:1/span 2;margin:0}
}
@media(max-width:620px){
 .home-studio-side{display:block}
 .home-studio-media{margin-bottom:24px;aspect-ratio:calc(4/3/var(--size-home-studio,1))}
 .home-cta-row{flex-direction:column;align-items:stretch}
 .home-cta-button{justify-content:space-between}
}
@media(prefers-reduced-motion:reduce){
 .home-card-link:hover .home-card-image,.home-card-link:focus-visible .home-card-image,.home-card-link:hover .project-tile-enter,.home-card-link:focus-visible .project-tile-enter,.home-cta h2 a:hover .cta-arrow,.home-cta h2 a:focus-visible .cta-arrow{transform:none!important}
}

/* Sticky navigation — admin → Réglages → Navigation fixe (site.stickyNav). The server marks <html data-sticky-nav>
   (site.js as a fallback); without it none of these rules match. They also need html.js (inline <head> script, set
   before the first paint): without JavaScript the header stays static, as without the option, instead of pinning its
   full height for good. From the first paint the real header sticks to the top, in flow (the page keeps its layout), on a white plate that carries its hairline — the plate of the project-open
   header, drawn where the header's own rule was. Past the top of the page site.js adds html.nav-compact: the
   project-open compact look, while a bottom margin (--nav-gap) keeps the full header height in flow, so the content
   never moves. html.nav-locked holds the header where it was while the viewer locks the body. While a project is open
   only the project-open rules above apply, unchanged. The language switch joins the compact bar (hidden on phones,
   where the bar has no room; it stays at the top of the page). */
html.js[data-sticky-nav]:not(.project-open) #page .site-header{position:sticky;top:0;z-index:50;border-bottom-color:transparent}
html.js[data-sticky-nav]:not(.project-open) #page .site-header::before{content:"";position:absolute;z-index:-1;left:0;right:0;top:0;box-sizing:border-box;height:var(--plate-h,calc(100% + 1px));transform:translateY(var(--plate-y,0px));background:#fff;border-bottom:1px solid var(--line);box-shadow:0 0 0 100vmax #fff;clip-path:inset(0 -100vmax 0);pointer-events:none}
html.js.nav-locked:not(.project-open) #page .site-header{position:relative;top:var(--nav-lock-y,0px)}   /* html.js: must outrank the sticky rule above */
html.nav-compact:not(.project-open) #page .site-header{height:auto;min-height:0!important;padding-top:6px!important;padding-bottom:6px!important;display:flex!important;align-items:center!important;justify-content:space-between;gap:32px;margin-bottom:var(--nav-gap,0px)}
html.nav-compact:not(.project-open) #page .site-header .brand img{width:clamp(58px,5vw,84px)!important}
html.nav-compact:not(.project-open) #page .site-header .main-nav{font-size:calc(12px*var(--fs-navigation,1))}
@media(min-width:581px){html.nav-compact:not(.project-open) #page .site-header .navigation-block{margin-left:auto}html.nav-compact:not(.project-open) #page .site-header .language-switcher{position:static}}
@media(max-width:760px){html.nav-compact:not(.project-open) #page .site-header{padding-top:4px!important;padding-bottom:4px!important;gap:16px}html.nav-compact:not(.project-open) #page .site-header .brand img{width:52px!important}}
@media(max-width:580px){html.nav-compact:not(.project-open) #page .site-header .language-switcher{visibility:hidden}}
/* Split copies: the real header's place in flow is empty space under the sticky bar, so the copies' header is too. */
html.js[data-sticky-nav] .split-copy>.site-header{visibility:hidden}
/* In-page links and focus land below the bar (compact past the top; #main itself, at the top, below the full header). */
html.js[data-sticky-nav] #main{scroll-margin-top:var(--nav-full-h,160px)}
html.js[data-sticky-nav] #main :is(section,[id],a,button,input,select,textarea,summary){scroll-margin-top:var(--nav-compact-h,72px)}

/* Page Projets — optional introduction text under the heading. */
.work-text{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:24px;padding-bottom:clamp(40px,5vw,72px)}
.work-text[hidden]{display:none}
.work-text p{grid-column:5/span 7;margin:0 0 1.2em;max-width:62ch;font-size:calc(17px*var(--fs-body,1));line-height:1.75;color:#55554f}
@media(max-width:760px){.work-text p{grid-column:1/-1;font-size:calc(15px*var(--fs-body,1))}}

/* Info bubble: short intent delay before appearing, instant hide. */
.project-tile:hover .project-info-bubble{transition-delay:.45s}
.project-tile:focus-within .project-info-bubble{transition-delay:.15s}
.project-tile .project-info-bubble{transition-delay:0s}
.project-tile:hover .project-info-bubble,.project-tile:focus-within .project-info-bubble{transition-duration:var(--dur-base)}

/* Site width (Réglages → Largeur du site). Boxed: project pages sit inside the content box, white around. */
html[data-layout="full"] .wrap{max-width:none}
html:not([data-layout="full"]) .viewer-dialog[open]{left:var(--box-left,0px);right:var(--box-right,0px);width:auto;box-shadow:0 0 0 100vmax #fff;animation:box-surround-in var(--dur-slow,.9s) var(--ease-move,ease) both;transition:box-shadow var(--dur-slow,.9s) var(--ease-move,ease)}
html:not([data-layout="full"]) .viewer-dialog.is-closing{box-shadow:0 0 0 100vmax rgba(255,255,255,0)}
@keyframes box-surround-in{from{box-shadow:0 0 0 100vmax rgba(255,255,255,0)}}
@media(prefers-reduced-motion:reduce){html:not([data-layout="full"]) .viewer-dialog[open]{animation:none;transition:none}}

/* Compact header over a project: the language switcher joins the flex row after the nav
   (it is absolutely positioned in the page header, where it collided with the compact nav). */
html.project-open #page .site-header .navigation-block{margin-left:auto}
html.project-open #page .site-header .language-switcher{position:static;margin-left:clamp(18px,2vw,32px);flex:0 0 auto}
@media(max-width:580px){html.project-open #page .site-header .language-switcher{display:none}}

/* Page heroes (admin → <page> → Hero, site.heroes.<page>), rendered by the server (backend render_hero).
   Image: fills the page's .page-hero-media slot, under the hero (inside it on Contact), cropped to fill (no layout
   shift while it loads); its height follows the hero's size.
   Switched off: <body data-hero="off">; the hero's title stays for screen readers and search engines.
   Image sizes (admin → Taille; backend render_image_sizes): :root{--size-hero|studio|home-studio|development},
   factors, 1 = the design. A banner (hero) or a stacked image (phones) changes height; an image beside text
   (.studio-story, .home-studio, .development-app, whose row height follows too) changes its column's width, the
   text keeps at least a third (30 % beside the app visuals, their design's share). */
.page-hero-media{position:relative;margin:0 auto clamp(28px,3.2vw,56px);overflow:hidden;background:#efeee9}
.page-hero-media img{display:block;width:100%;aspect-ratio:calc(2.2/var(--size-hero,1));object-fit:cover}
.page-hero:has(+.page-hero-media:not([hidden])){padding-bottom:clamp(28px,3.2vw,56px)}
.contact-intro .page-hero-media{margin:clamp(32px,3.5vw,52px) 0 0}
.contact-intro .page-hero-media img{aspect-ratio:calc(4/3/var(--size-hero,1))}
@media(max-width:760px){.page-hero-media img{aspect-ratio:calc(4/3/var(--size-hero,1))}}
[data-hero="off"] .page-hero{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
[data-hero="off"] .page-hero :not(h1,h1 *,:has(h1)),[data-hero="off"] .page-hero-media{display:none}
[data-hero="off"] .contact-page{grid-template-columns:minmax(0,1fr)}
[data-hero="off"] .form-column{width:100%;max-width:880px;margin-top:0;border-top:0}
/* Long privacy notice: readable sections and a reachable close button on small screens. */
.info-dialog { max-width: 640px; max-height: calc(100dvh - 40px); box-sizing: border-box; overflow-y: auto; }
.info-dialog h3 { margin: 30px 0 10px; font-size: 17px; line-height: 1.4; font-weight: 500; letter-spacing: -.2px; }
.info-dialog p:not(.eyebrow) { color: #55554e; }
.info-dialog a { color: inherit; text-decoration: underline; text-underline-offset: 3px; overflow-wrap: anywhere; }
.info-dialog a:focus-visible { outline: 2px solid #f4000c; outline-offset: 4px; }
.info-dialog .privacy-request { display: inline-block; font-weight: 500; }
.info-dialog .info-close { position: sticky; float: right; top: 0; width: 32px; height: 32px; background: #fff; color: #171715; z-index: 1; }
@media (max-width: 640px) {
  .info-dialog { width: calc(100% - 24px); max-height: calc(100dvh - 24px); padding: 22px; }
  .info-dialog h2 { font-size: 26px; }
}
