/* Zensu Visuals — white / ultramarine, editorial motion portfolio. */
:root{--blue:#1554f0;--blue-deep:#103bd4;--ink:#141b2b;--muted:#626d80;--line:#e2e6ed;--pale:#f5f7fa;--white:#fff;--font:-apple-system,BlinkMacSystemFont,"Inter","Helvetica Neue",Arial,sans-serif;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:96px}body{margin:0;background:var(--white);color:var(--ink);font:16px/1.65 var(--font);-webkit-font-smoothing:antialiased;overflow-x:clip}
a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.6}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #85aeff;outline-offset:5px}[hidden]{display:none!important}::selection{color:var(--white);background:var(--blue)}
img{max-width:100%;object-fit:contain}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;flex-shrink:0}h1,h2,h3,p,figure,blockquote,dd{margin:0}h1,h2,h3{font-weight:550;line-height:1.05;letter-spacing:-.055em}p{color:var(--muted)}em{font-style:normal;color:var(--blue)}.wrap{max-width:1440px;padding:0 64px;margin:auto;counter-reset:chapter}.wrap>section[id]{padding:140px 0;counter-increment:chapter;scroll-margin-top:20px}.wrap>section[id]+section[id]{border-top:1px solid var(--line)}
.bg-pattern,.rain,.vignette,.scanlines,.scrub-rail,.orbit-canvas,.logo-glint,.nav-indicator,.btn-border,.card__border,.eb-bracket,.q-short,.avis-dots,.mbar{display:none}.skip-link{position:fixed;top:-100px;left:20px;z-index:100;background:white;padding:12px 18px;border:1px solid var(--blue);border-radius:8px}.skip-link:focus{top:12px}
/* Quiet, persistent navigation. */
header{position:sticky;top:0;z-index:50;background:#fffffff0;backdrop-filter:blur(18px);border-bottom:1px solid #e2e6edb3}nav{height:76px;max-width:1440px;padding:0 64px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:30px}.brand{display:flex;align-items:center;gap:11px}.logo-badge{display:inline-flex;vertical-align:middle}.logo-mark{width:32px;height:32px;border-radius:8px}.logo-text{font-size:15px;font-weight:650;letter-spacing:-.025em}.nav-links{display:flex;align-items:center;gap:24px;font-size:14px}.nav-links a{transition:color .2s}.nav-links a:hover,.nav-links a.active{color:var(--blue)}.nav-links a:last-of-type{background:var(--ink);color:white;padding:10px 18px;border-radius:100px}.nav-links a:last-of-type:hover{background:var(--blue)}.nav-toggle,.mobile-menu{display:none}
/* Intro: one glass sculpture, two acts — product / film. */
.hero{position:relative}.intro-sticky{position:relative;isolation:isolate}.background-stage{position:absolute;inset:0 -64px auto;height:780px;z-index:-1;pointer-events:none;overflow:hidden}.background-stage video{width:100%;height:100%;display:block;object-fit:cover}.background-stage:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#fff 0%,#ffffffee 32%,#ffffff00 69%)}.hero-copy{position:relative;padding:94px 0 80px}.hero .viewport{width:100%}.eyebrow{display:block;font-size:12px;font-weight:550;letter-spacing:.12em;text-transform:uppercase;color:var(--blue);margin-bottom:24px}.hero h1{font-size:clamp(58px,7.7vw,104px);font-weight:550;letter-spacing:-.07em;line-height:1.02}.h1-line{display:block}.h1-line:first-child em{color:inherit}.premium-word,.premium-dot{color:var(--blue)}.hero .lead{font-size:17px;line-height:1.65;max-width:515px;margin:24px 0 28px}.cta-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.btn,.glow-btn,.book-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:50px;padding:13px 23px;font-size:14px;font-weight:500;line-height:1.4;border:1px solid var(--line);border-radius:100px;background:white;color:var(--ink);transition:background .2s,color .2s,transform .25s,border-color .2s}.btn-frame,.glow-btn{background:var(--blue);color:white;border-color:var(--blue)}.btn:hover,.glow-btn:hover,.book-btn:hover{transform:translateY(-3px);border-color:var(--blue)}.btn-frame:hover,.glow-btn:hover{background:var(--blue-deep)}.btn-ghost{background:#ffffffd9}.btn-label,.btn-arrow,.lf-state{display:flex;align-items:center;justify-content:center;gap:10px}.btn-arrow svg{width:15px;height:15px;fill:currentColor;stroke:none}.cta-note{display:flex;align-items:center;justify-content:center;gap:20px;flex-wrap:wrap;font-size:12px;margin:22px 0}.hero .cta-note{justify-content:flex-start;gap:16px}.cn-item{display:flex;align-items:center;gap:6px}.cn-ico{display:flex}.cn-ico svg{width:14px;height:14px}.hero-stats{display:flex;gap:40px;margin-top:34px}.stat{display:flex;flex-direction:column;gap:1px}.stat b{font-size:24px;font-weight:500;letter-spacing:-.045em}.stat span{font-size:12px;color:var(--muted)}
.film-stage{position:relative;z-index:2;padding:10px 0 60px}.reel-object{max-width:1110px;margin:auto;padding:9px;background:#f5f7fa;border:1px solid #dfe4ec;border-radius:24px;box-shadow:0 35px 80px -45px #263c6466;overflow:hidden}.vp-reel{display:block;width:100%;aspect-ratio:16/9;max-height:60svh;object-fit:contain;border-radius:14px;background:#ecf0f6}.vp-hud-top,.vp-hud-bottom{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:8px 12px;color:var(--muted);font-size:12px;letter-spacing:.02em}.vp-hud-top{padding-bottom:14px}.vp-hud-bottom{padding-top:14px}.rec{color:var(--blue)}.tc{margin-right:auto;opacity:.7;font-variant-numeric:tabular-nums}.vp-file{font-weight:550}.scroll-cue{display:none}
.clients-strip{padding:40px 0 72px;text-align:center;border-bottom:1px solid var(--line)}.cs-label{font-size:12px;letter-spacing:.06em}.about-clients{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:48px;margin-top:32px}.ac-logo{width:65px;height:44px;display:flex;align-items:center;justify-content:center}.ac-logo img{max-height:44px;border-radius:5px;opacity:.8;transition:opacity .2s}.ac-logo:hover img{opacity:1}
/* A horizontal cinema wall, framed by a restrained editorial header. */
.section-head{display:grid;grid-template-columns:1.3fr 1fr;align-items:end;gap:20px 75px;margin-bottom:56px}.section-head .eyebrow{grid-column:1/-1;margin:0}.section-head .eyebrow:before{content:"0" counter(chapter) " / ";margin-right:20px;color:#8892a2;font-variant-numeric:tabular-nums;letter-spacing:0}.section-head h2{font-size:clamp(40px,4.7vw,68px);max-width:780px}.section-head p{font-size:16px;max-width:430px;justify-self:end}.work-list{display:grid;grid-template-columns:1fr 1fr;gap:58px 32px}.work-item{min-width:0}.work-card{position:relative;cursor:pointer}.media{position:relative;aspect-ratio:16/10;overflow:hidden;background:var(--pale);border-radius:18px;border:1px solid var(--line)}.media video{display:block;width:100%;height:100%;object-fit:contain;transition:transform .6s cubic-bezier(.22,1,.36,1)}.work-card:hover .media video{transform:scale(1.025)}.info{display:flex;align-items:baseline;justify-content:space-between;gap:20px;padding:21px 0 8px}.name{font-size:23px;font-weight:550;letter-spacing:-.045em}.tag{font-size:12px;color:var(--blue)}.work-desc{font-size:16px;max-width:630px;line-height:1.6}.watch-button{position:absolute;right:20px;bottom:20px;width:50px;height:50px;display:grid;place-items:center;border:1px solid #ffffffb3;border-radius:50%;background:#ffffffed;color:var(--ink);font-size:14px;box-shadow:0 3px 20px #16234012;transition:transform .3s,background .3s,color .3s}.work-card:hover .watch-button{transform:scale(1.08);background:var(--blue);color:white}.gallery-meter{display:none}.gallery-meter>div{height:1px;flex:1;background:var(--line)}.gallery-meter i{display:block;width:100%;height:2px;transform:scaleX(var(--gallery-progress,.125));transform-origin:left;background:var(--blue)}
/* Testimonials read like quotes, not a dashboard of cards. */
.avis-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 72px}.avis-card{display:flex;flex-direction:column;gap:30px;padding:36px 0 44px;border-top:1px solid var(--line)}.avis-hud{display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:12px;color:var(--muted);letter-spacing:.06em}.stars{color:var(--blue);display:flex;gap:3px;font-size:12px}.stars i{font-style:normal}.quote{font-size:23px;line-height:1.55;letter-spacing:-.025em;color:var(--ink)}.avis-card:first-child .quote{color:var(--blue)}.avis-foot{display:flex;align-items:center;gap:13px;margin-top:auto}.avis-mono img{width:38px;height:38px;display:block;border-radius:50%}.avis-ident{display:grid;gap:2px}.client{font-size:14px;font-weight:550}.avis-role{font-size:12px;color:var(--muted)}
/* Six chapters, a fixed introduction, generous vertical rhythm. */
#process{display:grid;grid-template-columns:1fr 1.1fr;gap:0 100px;align-items:start}#process .section-head{display:block;grid-column:1;grid-row:1;position:sticky;top:120px;margin:0}#process .eyebrow{margin-bottom:26px}#process h2{font-size:clamp(44px,5vw,72px);max-width:430px}#process .section-head p{margin-top:24px;max-width:355px}.process-lead{grid-column:1;grid-row:2;position:sticky;top:445px;margin-top:64px;max-width:340px;padding-top:30px;border-top:1px solid var(--line)}.pl-value{display:block;color:var(--blue);font-size:60px;font-weight:450;letter-spacing:-.07em;line-height:1.1}.pl-value b{font-weight:500}.pl-label{display:block;color:var(--muted);font-size:14px;max-width:260px;margin-top:15px}.process-steps{grid-column:2;grid-row:1/3}.step{display:grid;grid-template-columns:62px 1fr;gap:26px;padding:46px 0 70px;min-height:38svh;border-top:1px solid var(--line);transition:opacity .3s}.step-num{font-size:42px;line-height:1;font-weight:400;letter-spacing:-.065em;color:#b9c5dc;transition:color .3s}.step.is-current .step-num{color:var(--blue)}.step h3{font-size:30px;letter-spacing:-.045em;line-height:1.2;margin:0 0 20px}.step p{font-size:16px}.deliver{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:30px;margin-top:25px;padding:30px 0 0;border-top:1px solid var(--line)}.deliver-label{font-size:14px}.deliver-list{display:flex;align-items:center;flex-wrap:wrap;gap:30px;list-style:none;margin:0;padding:0}.dl-item{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--muted)}.dl-ico{display:flex}
/* Offers: strong number hierarchy, a single blue emphasis. */
.price-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;padding-top:12px}.price-card{position:relative;display:flex;flex-direction:column;padding:38px 28px 28px;background:var(--pale);border:1px solid transparent;border-radius:22px}.price-card.featured{background:var(--blue);color:white;box-shadow:0 22px 55px -35px #1554f0a8}.tag2{font-size:16px;font-weight:550;letter-spacing:-.025em}.price-badge{position:absolute;right:22px;top:-13px;padding:5px 13px;font-size:12px;color:var(--blue);background:white;border:1px solid var(--line);border-radius:100px}.amount{margin:32px 0}.amount small{display:block;font-size:12px;color:var(--muted);margin-bottom:9px}.amount strong{display:block;font-size:76px;font-weight:500;line-height:1;letter-spacing:-.075em}.amount .currency{font-size:.62em;letter-spacing:-.05em;margin-left:3px}.amount>span{display:block;font-size:14px;color:var(--muted);margin-top:12px}.price-features{display:grid;gap:13px;list-style:none;padding:25px 0 0;margin:0 0 34px;border-top:1px solid var(--line);font-size:14px;line-height:1.5}.price-features li{display:flex;gap:9px;align-items:baseline}.price-features li:before{content:"✓";font-size:12px;color:var(--blue)}.pc-delay{display:flex;align-items:center;gap:8px;font-size:12px;margin-top:auto;margin-bottom:20px}.pd-ico{display:flex}.pd-ico svg{width:16px;height:16px}.price-cta{width:100%;font-size:14px;border-color:#d2d9e5;background:white}.featured .amount small,.featured .amount>span,.featured .pc-delay{color:#e0e9ff}.featured .price-features{border-color:#ffffff40}.featured .price-features li:before{color:#c9daff}.featured .price-cta{background:white;color:var(--blue);border-color:white}.featured .price-cta:hover{background:#e7efff}.price-guarantee{max-width:700px;text-align:center;margin:0 auto 70px;font-size:14px}.addons-head{display:flex;justify-content:space-between;align-items:baseline;gap:30px;margin-bottom:30px}.addons-title{font-size:28px;letter-spacing:-.04em}.addons-note{font-size:14px}.price-addons{display:grid;grid-template-columns:1fr 1fr;gap:0 65px;margin:0}.addon{display:grid;grid-template-columns:22px 1fr auto;gap:8px 14px;padding:26px 0;border-top:1px solid var(--line)}.addon-ico{display:flex;align-items:center;align-self:start;color:var(--blue);margin-top:3px}.addon-ico svg{width:20px;height:20px}.addon-name{font-size:15px;font-weight:500}.addon-price{font-size:16px;color:var(--blue);white-space:nowrap}.addon-price--quote{font-size:13px}.addon-note{grid-column:2/-1;font-size:13px;color:var(--muted)}.ae-plate{fill:var(--blue);stroke:none}.ae-mark{fill:white;stroke:none}.addons-delay{display:flex;gap:18px;padding:28px 32px;background:var(--pale);border-radius:15px;margin-top:30px}.ad-ico{display:flex;color:var(--blue);padding-top:4px}.ad-title{font-size:16px;color:var(--ink)}.ad-note{font-size:14px;margin-top:7px}
/* The person behind the studio. */
.about-panel{padding:0}.about-hud{margin-bottom:32px}.about-body{display:grid;grid-template-columns:1.25fr 1fr;gap:100px;align-items:start}.about-copy h2{font-size:clamp(44px,5.2vw,74px);max-width:640px;margin-bottom:35px}.about-copy p{font-size:16px;margin-bottom:23px;max-width:610px}.about-copy .about-lede{font-size:22px;color:var(--ink);letter-spacing:-.03em;line-height:1.45}.about-signature{font-size:14px;color:var(--blue);margin-bottom:30px}.about-side{padding:36px;background:var(--pale);border-radius:22px}.ab-side-title{font-size:12px;letter-spacing:.12em;color:var(--muted);text-transform:uppercase;display:block;margin-bottom:25px}.about-item{display:flex;align-items:flex-start;gap:18px;padding:22px 0;border-top:1px solid #dfe4ed}.about-item:last-child{padding-bottom:0}.about-item .n{color:var(--blue);display:flex;padding-top:4px}.about-item .k{font-size:12px;color:var(--muted);margin-bottom:6px}.about-item .v{font-size:15px;display:flex;align-items:center;gap:8px}.ae-badge{display:flex}.ae-badge svg{width:22px;height:22px}
/* Answers and a cobalt closing act. */
#faq{display:grid;grid-template-columns:.8fr 1.2fr;gap:90px;align-items:start}#faq .section-head{display:block;margin:0}#faq .eyebrow{margin-bottom:26px}#faq .section-head p{margin-top:25px}.faq-list{min-width:0}.faq-item{border-top:1px solid var(--line)}.faq-item:last-child{border-bottom:1px solid var(--line)}.faq-q{display:flex;align-items:center;justify-content:space-between;gap:30px;width:100%;min-height:88px;padding:26px 0;text-align:left;border:0;background:none;color:var(--ink);font-size:18px;letter-spacing:-.025em;line-height:1.5}.faq-sign{width:20px;flex-shrink:0}.faq-sign:after{content:"+";font-size:25px;color:var(--blue);font-weight:300}.faq-q[aria-expanded=true]{color:var(--blue)}.faq-q[aria-expanded=true] .faq-sign:after{content:"−"}.faq-a{font-size:16px;line-height:1.7;padding:0 35px 28px 0}.faq-a p+p{margin-top:16px}.faq-a a{color:var(--blue);text-decoration:underline}
.wrap>#contact{padding:0 0 85px;border-top:0}.contact-panel{display:grid;grid-template-columns:1fr 1fr;gap:0 95px;padding:72px 64px;background:var(--blue-deep);border-radius:26px;color:white;position:relative}.contact-panel>.eyebrow,.contact-panel>h2,.contact-panel>p,.contact-links,.book-call{grid-column:1}.contact-panel>.eyebrow{font-size:12px;color:#ccdbff;line-height:1.5;margin-bottom:27px}.contact-panel>h2{font-size:clamp(48px,5.5vw,80px);letter-spacing:-.065em;max-width:420px;align-self:start;margin:0 0 26px}.contact-panel>p{font-size:16px;max-width:380px;color:#dce6ff;margin-bottom:24px}.lead-form{grid-column:2;grid-row:1/9;min-width:0}.lf-row{margin-bottom:22px}.lf-label{font-size:14px;display:block;margin-bottom:9px}.lf-select{position:relative}.lf-select select,.lf-input{width:100%;min-height:54px;border:1px solid #ffffff66;border-radius:9px;background:#ffffff0d;padding:14px 16px;color:white;font-size:16px;line-height:1.5}.lf-select select{appearance:none;padding-right:36px}.lf-select select option{background:white;color:var(--ink)}.lf-input::placeholder{color:#c0d2ff}.lf-textarea{resize:vertical;min-height:100px}.lf-chevron{position:absolute;right:14px;top:20px;width:14px;height:14px;pointer-events:none}.lf-offers-note{font-size:12px;line-height:1.6;color:#c8d8ff;margin-top:12px}.lf-submit{width:100%;background:white;color:var(--blue-deep);border-color:white;margin-top:5px}.lf-submit:hover{background:#e4edff;border-color:white}.lf-state--sent,.lf-at{display:none}.lf-submit.is-sent .lf-state--default{display:none}.lf-submit.is-sent .lf-state--sent{display:flex}.lf-status{font-size:14px;color:white;margin-top:15px}.lf-status.is-error{color:#fff;background:#ffffff18;padding:12px;border-left:2px solid #fff}.lf-botcheck{position:absolute;clip-path:inset(50%);width:1px;height:1px;opacity:0}.lead-form .cta-note{gap:12px;font-size:12px;color:#c8d8ff;margin-bottom:0}.lead-form .cn-ico{display:none}.book-call{margin:10px 0 20px}.book-sep{display:none}.book-btn{color:white;background:transparent;border-color:#ffffff66;font-size:14px}.book-btn:hover{background:#ffffff16;border-color:white}.contact-panel>.contact-alt{font-size:12px;color:#c8d8ff;margin:16px 0}.contact-links{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.mail-wrap,.mail-split,.mail-ico-swap{display:flex;align-items:center}.mail-split{padding:0;min-height:44px;background:white;color:var(--blue-deep)}.mail-part{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:0;background:none;color:inherit}.mail-copy{border-left:1px solid #dce4f5}.ico-arrow,.ico-check,.mail-tip-copied,.mail-tip-default,.social-icon-mask{display:none}.social-btn{display:grid;place-items:center;width:44px;height:44px;border:1px solid #ffffff66;border-radius:50%;background:white}.social-icon-color{width:18px;height:18px}
footer{padding:0 0 32px}.pay-row{list-style:none;margin:0 0 40px;padding:0;display:flex;justify-content:center;gap:35px}.pay{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:12px}.pay-ico{display:flex}.pay-ico svg{width:22px}.foot-row{display:flex;align-items:center;justify-content:space-between;gap:25px;border-top:1px solid var(--line);padding-top:28px;color:var(--muted);font-size:12px}.domain{display:flex;align-items:center;gap:8px}.is-small .logo-mark{width:20px;height:20px}.made-by{text-align:center;font-size:12px;margin-top:28px;color:#778195}.mb-heart svg{width:12px;height:12px;fill:var(--blue);stroke:none}.mb-sr{position:absolute;width:1px;height:1px;clip-path:inset(50%)}
.video-dialog{width:min(1150px,94vw);padding:0;max-height:92svh;background:#101726;color:white;border:0;border-radius:18px;box-shadow:0 40px 100px #07112644}.video-dialog::backdrop{background:#071126dc;backdrop-filter:blur(10px)}.dialog-top{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 22px;font-size:14px}.dialog-top button{width:40px;height:40px;border:1px solid #ffffff55;border-radius:50%;background:none;color:white;font-size:24px}.video-dialog video{display:block;width:100%;max-height:78svh;background:#101726}.motion-toggle{position:fixed;right:20px;bottom:20px;z-index:30;min-height:40px;padding:10px 16px;background:#fffffff5;color:var(--ink);border:1px solid var(--line);border-radius:100px;font-size:12px;box-shadow:0 5px 20px #1023420c}.scroll-progress{position:fixed;top:0;left:0;height:2px;width:100%;background:var(--blue);z-index:100;transform:scaleX(0);transform-origin:left}
/* Progressive enhancement: natural scrolling, never a custom wheel handler. */
.motion-ready .section-head:not(#process .section-head):not(#travaux .section-head),.motion-ready .avis-card,.motion-ready .price-card,.motion-ready .about-panel,.motion-ready .contact-panel{transform:translate3d(0,var(--entry-y,0px),0);opacity:var(--entry-opacity,1)}
@media(min-width:801px) and (min-height:760px){
 .cinema-ready .hero{height:280svh}.cinema-ready .intro-sticky{position:sticky;top:76px;height:calc(100svh - 76px);perspective:1500px}.cinema-ready .background-stage{inset:0 -64px;height:100%;transform:scale(var(--bg-scale,1));opacity:var(--bg-opacity,1);transform-origin:70% 50%}.cinema-ready .hero-copy{position:absolute;inset:0;display:flex;align-items:center;padding:10px 0 40px;opacity:var(--copy-opacity,1);transform:translateY(var(--copy-y,0px))}.cinema-ready .film-stage{position:absolute;inset:0;display:grid;align-items:center;padding:25px 0 65px;opacity:var(--film-opacity,0);transform:translateY(var(--film-y,110px)) rotateX(var(--film-angle,10deg)) scale(var(--film-scale,.86));pointer-events:none;will-change:transform,opacity}.cinema-ready .film-stage.is-present{pointer-events:auto}.cinema-ready .reel-object{width:100%}.cinema-ready .scroll-cue{position:absolute;left:0;right:0;bottom:20px;display:flex;align-items:center;justify-content:center;gap:15px;font-size:12px;color:var(--muted);opacity:var(--cue-opacity,1)}.scroll-line{position:relative;width:50px;height:1px;background:var(--line);overflow:hidden}.scroll-line:after{content:"";position:absolute;inset:0;background:var(--blue);transform:scaleX(var(--intro-progress,0));transform-origin:left}
 .cinema-ready #travaux{height:calc(var(--rail-travel,0px) + 100svh + 130px);padding:70px 0 60px;overflow:clip;overflow-clip-margin:64px}.cinema-ready .work-sticky{position:sticky;top:105px}.cinema-ready #travaux .section-head{margin-bottom:30px;gap:15px 60px}.cinema-ready #travaux .section-head h2{font-size:clamp(40px,4.5vw,62px)}.cinema-ready .work-window{overflow:hidden;padding:10px 0}.cinema-ready .work-list{display:flex;width:max-content;gap:36px;transform:translate3d(var(--rail-x,0px),0,0);will-change:transform;align-items:start}.cinema-ready .work-item{width:min(62vw,800px);flex:none;transform:perspective(1500px) rotateY(var(--card-angle,0deg));transform-origin:center}.cinema-ready .media{aspect-ratio:16/9;max-height:43svh}.cinema-ready .gallery-meter{display:flex;align-items:center;gap:25px;padding-top:24px;font-size:12px;color:var(--blue);font-variant-numeric:tabular-nums}.cinema-ready .step{transform:translateX(var(--step-x,0px));opacity:var(--step-opacity,1)}
}
@media(min-width:801px) and (max-height:759px){#process .section-head,.process-lead{position:static}.hero-copy{padding-top:70px}.background-stage{height:710px}}
@media(max-width:1100px){.wrap{padding:0 36px}nav{padding:0 36px}.nav-links{gap:17px;font-size:13px}.background-stage{left:-36px;right:-36px}.section-head{gap:20px 45px}.hero h1{font-size:clamp(60px,8vw,86px)}.hero .lead{max-width:485px;font-size:16px}.price-card{padding:32px 23px 24px}.amount strong{font-size:66px}.price-features{font-size:13px}#process{gap:0 55px}.process-lead{top:435px}.about-body{gap:55px}#faq{gap:50px}.contact-panel{padding:58px 38px;gap:0 50px}.avis-grid{gap:0 48px}.quote{font-size:21px}}
@media(max-width:800px){
 .wrap{padding:0 24px}.wrap>section[id]{padding:85px 0}nav{height:70px;padding:0 24px}.nav-links{display:none}.nav-toggle{display:grid;place-items:center;background:white;border:1px solid var(--line);border-radius:50%;width:42px;height:42px}.mobile-menu.is-open{display:grid;grid-template-columns:1fr 1fr;padding:12px 24px 24px;gap:0 25px;border-top:1px solid var(--line)}.mobile-menu a{padding:11px 0;font-size:15px}.hero-copy{padding:72px 0 60px}.hero h1{font-size:clamp(43px,9.9vw,78px);letter-spacing:-.065em}.hero .eyebrow{font-size:12px;margin-bottom:26px}.hero .lead{font-size:16px;max-width:490px;margin:26px 0}.background-stage{left:-24px;right:-24px;height:650px;opacity:.48}.background-stage video{object-position:65% center}.background-stage:after{background:linear-gradient(90deg,#fffffff5,#ffffff55)}.hero .cta-row{gap:10px}.hero .cta-row .btn{padding:13px 18px;font-size:14px}.hero .cta-note{font-size:12px;gap:12px}.hero .cn-ico{display:none}.hero-stats{gap:32px;margin-top:32px}.stat b{font-size:25px}.stat span{font-size:12px}.film-stage{padding:0 0 40px}.reel-object{padding:6px;border-radius:16px}.vp-reel{border-radius:10px;max-height:none}.vp-hud-top,.vp-hud-bottom{font-size:10px;gap:10px;padding:6px}.clients-strip{padding:28px 0 48px}.about-clients{gap:24px;margin-top:26px}.ac-logo{width:48px;height:38px}.ac-logo img{max-height:36px}.section-head{display:block;margin-bottom:36px}.section-head .eyebrow{margin-bottom:23px}.section-head .eyebrow:before{margin-right:12px}.section-head h2{font-size:42px;max-width:550px}.section-head p{font-size:16px;margin-top:24px;max-width:500px}.work-list{gap:42px 24px}.media{border-radius:14px}.name{font-size:21px}.tag{font-size:12px}.info{padding-top:16px;gap:12px;flex-wrap:wrap}.work-desc{font-size:16px}.watch-button{right:14px;bottom:14px;width:44px;height:44px}.avis-grid{gap:0 30px}.avis-card{padding:28px 0 36px;gap:23px}.quote{font-size:19px}#process{display:block}#process .section-head{position:static}#process h2{font-size:45px}.process-lead{position:static;display:flex;align-items:center;gap:25px;max-width:none;margin:35px 0 30px;padding:25px 0}.pl-value{font-size:48px;white-space:nowrap}.pl-label{font-size:13px;margin:0}.step{grid-template-columns:46px 1fr;gap:20px;min-height:0;padding:30px 0 40px}.step-num{font-size:35px}.step h3{font-size:27px;margin-bottom:15px}.step p{font-size:16px}.deliver{display:block;margin-top:15px;padding-top:25px}.deliver-list{margin-top:22px;gap:20px}.price-grid{grid-template-columns:1fr;gap:28px}.price-card{padding:34px 28px 28px}.amount strong{font-size:72px}.price-features{font-size:15px}.price-guarantee{font-size:14px;margin-bottom:48px}.addons-head{display:block}.addons-note{margin-top:13px}.price-addons{grid-template-columns:1fr}.addon-name{font-size:15px}.addons-delay{padding:24px;gap:15px}.ad-note{font-size:14px}.about-body{grid-template-columns:1fr;gap:38px}.about-copy h2{font-size:47px}.about-copy p{font-size:16px}.about-copy .about-lede{font-size:21px}.about-side{padding:28px}#faq{display:block}#faq .section-head{margin-bottom:35px}.faq-q{font-size:17px;min-height:80px}.faq-a{font-size:16px;padding-right:15px}.wrap>#contact{padding:0 0 60px}.contact-panel{display:block;padding:38px 27px;border-radius:20px}.contact-panel>h2{font-size:58px;max-width:390px}.contact-panel>.eyebrow{font-size:12px}.lead-form{margin-top:38px}.contact-panel .cta-note{font-size:12px}.book-call{margin-top:35px}.contact-panel>.contact-alt{margin-top:24px}.pay-row{gap:23px}.foot-row{flex-wrap:wrap;justify-content:center;text-align:center;gap:18px}.foot-row>span:first-child{width:100%}.made-by{padding-bottom:32px}.motion-toggle{right:12px;bottom:12px;padding:9px 13px;font-size:12px}
}
@media(max-width:560px){.work-list,.avis-grid{grid-template-columns:1fr}.hero-stats{gap:26px}.stat span{font-size:12px}.section-head h2{font-size:39px}.hero .cta-note{gap:10px}.addon{grid-template-columns:20px 1fr}.addon-price{grid-column:2;grid-row:auto}.addon-note{grid-column:2}.about-copy h2{font-size:43px}.contact-panel>h2{font-size:52px}.pay-row{gap:16px}.pay{gap:6px;font-size:12px}.pl-value{font-size:44px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.background-stage video{visibility:hidden}.background-stage{background:var(--ribbon-poster) center/cover no-repeat}}
body.motion-paused *{scroll-behavior:auto!important;transition:none!important}body.motion-paused .work-card:hover .media video{transform:none}

/* The original glass identity, enhanced progressively by one scroll timeline. */
.story-chapter .work-card{transform:none!important}.story-chapter .work-item,.cinema-ready .story-chapter .work-item{transform:perspective(1600px) translateY(var(--project-y,0px)) rotateX(var(--project-rx,0deg)) rotateY(var(--project-ry,0deg)) scale(var(--project-scale,1))!important;transform-origin:center;will-change:transform}
.wrap>#travaux,.cinema-ready #travaux{height:auto;padding:110px 0;overflow:visible}.project-stories{position:relative}.story-chapter{position:relative;min-width:0}.chapter-pin{display:grid;grid-template-columns:.42fr 1fr;gap:55px;align-items:center;padding:65px 0}.chapter-label>span{font-size:12px;color:var(--muted);letter-spacing:.09em}.chapter-label h3{font-size:clamp(34px,4vw,56px);margin:22px 0;letter-spacing:-.065em}.chapter-progress{width:90px;height:2px;background:var(--line)}.chapter-progress i{display:block;background:rgb(var(--halo));height:100%;transform:scaleX(var(--chapter-progress,0));transform-origin:left}.story-chapter .work-item{width:100%;position:relative;isolation:isolate}.story-chapter .work-item:before{content:"";position:absolute;inset:-10%;z-index:-1;background:radial-gradient(ellipse,rgba(var(--halo),.3),rgba(var(--halo),0) 66%);transform:scale(var(--halo-scale,1));opacity:var(--halo-opacity,.7);pointer-events:none}.story-chapter .work-card{transform:perspective(1600px) translateY(var(--project-y,0px)) rotateX(var(--project-rx,0deg)) rotateY(var(--project-ry,0deg)) scale(var(--project-scale,1));transform-origin:center;will-change:transform}.story-chapter .media{aspect-ratio:16/10;max-height:54svh;padding:10px;border-radius:22px;overflow:hidden;transform:rotateX(var(--tilt-y,0deg)) rotateY(var(--tilt-x,0deg));transform-style:preserve-3d}.story-chapter video{border-radius:12px;object-fit:contain;background:#101626}.story-chapter .glare{position:absolute;inset:0;pointer-events:none;border-radius:inherit;background:radial-gradient(ellipse at var(--light-x,50%) var(--light-y,20%),#fff7,transparent 55%);opacity:.3;mix-blend-mode:screen}.story-chapter .frame{position:absolute;inset:0;border-radius:inherit;border:1px solid #fff9;pointer-events:none}.story-chapter .info{padding:18px 8px 8px}.story-chapter .name{font-size:19px}.story-chapter .tag{font-size:12px}.story-chapter .work-desc{padding:0 8px;max-width:650px;font-size:15px}.archive-projects{padding-top:70px;border-top:1px solid var(--line)}.archive-projects>h3{font-size:30px;margin-bottom:35px}.archive-projects .work-list{display:grid;grid-template-columns:repeat(3,1fr);width:auto;gap:25px;transform:none}.archive-projects .work-item{width:auto;transform:none}.archive-projects .media{max-height:none;aspect-ratio:16/10}.archive-projects .name{font-size:21px}.archive-projects .work-desc{font-size:14px}
@media(min-width:801px) and (min-height:760px){.cinema-ready .story-chapter{height:180svh}.cinema-ready .chapter-pin{position:sticky;top:96px;height:calc(100svh - 110px);padding:30px 0 45px}.cinema-ready .story-chapter .work-item{width:100%;transform:none}.cinema-ready .story-chapter .media{max-height:51svh;aspect-ratio:16/10}.cinema-ready .story-chapter .work-desc{margin-top:8px}}
@media(max-width:800px){.chapter-pin{display:block;padding:40px 0 65px}.chapter-label>span{font-size:12px}.chapter-label h3{font-size:39px;margin:12px 0 18px}.chapter-progress{margin-bottom:30px}.story-chapter .media{max-height:none;aspect-ratio:16/11;padding:7px;border-radius:16px}.story-chapter .work-card{transform:perspective(1000px) translateY(var(--project-y,0px)) rotateX(var(--project-rx,0deg)) scale(var(--project-scale,1))}.archive-projects .work-list{grid-template-columns:1fr}.background-stage{opacity:.3}.story-chapter .work-desc{font-size:16px}}
body{background:var(--white)}.bg-pattern{display:block;position:fixed;inset:-15%;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 15% 20%,#edf5ff 0%,transparent 38%),radial-gradient(ellipse at 82% 75%,#f2f7ff 0%,transparent 38%),#fff;animation:ambient-drift 22s ease-in-out infinite alternate;will-change:transform}
@keyframes ambient-drift{to{transform:translate3d(3%,-2%,0) scale(1.06)}}
.motion-ready .price-card{transform:perspective(1300px) translateY(var(--entry-y,0px)) rotateX(var(--entry-angle,0deg)) scale(var(--entry-scale,1));transform-origin:50% 20%;opacity:1}.price-card{border:1px solid #e5ecf7;background:#ffffffc9}.price-card.featured{background:#1554f0}.price-grid{perspective:1400px}
.process-steps{position:relative;padding-left:28px}.process-steps:before,.process-steps:after{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:#e7edf7;transform-origin:top}.process-steps:after{background:var(--blue);transform:scaleY(var(--process-fill,0))}.step{position:relative;transition:none}.step:before{content:"";position:absolute;left:-32px;top:47px;width:10px;height:10px;border-radius:50%;background:white;border:2px solid #c9d5e9}.step.is-current:before,.step.is-complete:before{background:var(--blue);border-color:var(--blue)}.step.is-current h3{color:var(--blue)}.motion-ready .step-d{transform:translateX(var(--step-x,0px));opacity:var(--step-opacity,1)}.cinema-ready .step{transform:none;opacity:1}.step-num{transition:none}
@media(max-width:800px){.process-steps{padding-left:20px}.step{grid-template-columns:36px 1fr;gap:15px}.step:before{left:-24px;top:32px}.step h3{font-size:26px}.step-num{font-size:30px}}
#process .section-head p{justify-self:start}.bg-pattern{opacity:.45}html{overflow-x:clip}
.avis-grid{gap:24px}.avis-card{padding:34px;border:1px solid #e5ecf7;border-radius:20px;background:#ffffffc9;box-shadow:0 16px 45px -36px #1c447655;backdrop-filter:none}.motion-ready .avis-card{transform:perspective(1500px) translateY(var(--entry-y,0px)) rotateX(var(--entry-angle,0deg));opacity:var(--entry-opacity,1);transform-origin:50% 0}.avis-card:first-child{grid-column:1/-1;padding:52px;max-width:none}.avis-card:first-child .quote{font-size:clamp(24px,3vw,38px);line-height:1.4;max-width:1050px}.avis-card .quote{font-size:20px}.avis-card:first-child .avis-foot{margin-top:15px}
.contact-panel.glass{background:#ffffffcc;border:1px solid #dce6f6;color:var(--ink);box-shadow:0 35px 85px -55px #1554f055;isolation:isolate;overflow:hidden;backdrop-filter:none}.contact-panel>h2{color:var(--blue)}.contact-panel>.eyebrow{color:var(--blue)}.contact-panel>p,.contact-panel>.contact-alt,.lf-offers-note,.lead-form .cta-note{color:var(--muted)}.contact-panel .lf-input,.contact-panel select{background:#fff;border-color:#dce4ef;color:var(--ink)}.contact-panel .lf-input::placeholder{color:#6d788a}.contact-panel .lf-submit{background:var(--blue);color:white;border-color:var(--blue)}.contact-panel .lf-submit:hover{background:var(--blue-deep)}.lf-status{color:var(--ink)}.lf-status.is-error{color:var(--ink);border-color:var(--blue);background:#edf4ff}.book-btn{color:var(--ink);border-color:#dce4ef;background:#fff}.book-btn:hover{background:#edf4ff;border-color:var(--blue)}.contact-email{grid-column:1;font-size:22px;color:var(--blue);font-weight:500;letter-spacing:-.03em;align-self:start;margin:12px 0 6px;padding:16px 0;border-bottom:1px solid #d8e4fb;position:relative;z-index:1}.contact-email span{display:inline-block;transition:transform .25s}.contact-email:hover span{transform:translate(3px,-3px)}.contact-email small{display:block;font-size:14px;font-weight:400;letter-spacing:0;margin-top:6px}.contact-links .mail-split,.contact-links .social-btn{border-color:#dce4ef}.contact-panel>.closing-art{position:absolute;left:-10%;bottom:-12%;width:65%;height:85%;z-index:-1;pointer-events:none;opacity:.28;mix-blend-mode:multiply;mask-image:linear-gradient(180deg,transparent,#000 30%,#000 75%,transparent)}.closing-art video{width:100%;height:100%;object-fit:cover;transform:translateY(calc((1 - var(--closing-progress,1)) * 70px)) scale(calc(1.08 - var(--closing-progress,1) * .08))}.motion-ready .contact-panel{transform:perspective(1800px) translateY(var(--entry-y,0px)) rotateX(calc(var(--entry-angle,0deg) * .5));opacity:1;transform-origin:50% 100%}.contact-panel>h2{transform:translateY(calc((1 - var(--closing-progress,1)) * 22px))}
@media(max-width:800px){.avis-card,.avis-card:first-child{padding:27px}.avis-card:first-child .quote{font-size:25px}.contact-panel>.closing-art{top:0;left:15%;width:110%;height:420px;opacity:.18}.contact-email{display:block;font-size:21px}.contact-panel>h2{font-size:51px}.contact-panel{padding:34px 23px}}
body.motion-paused .story-chapter .work-item,body.motion-paused .media,body.motion-paused .reel-object,body.motion-paused .hero .h1-line,body.motion-paused .contact-panel>h2,body.motion-paused .closing-art video{transform:none!important}body.motion-paused .process-steps:after{transform:scaleY(1)}body.motion-paused .step-d{opacity:1;transform:none}
header{background:#ffffffdc;backdrop-filter:blur(20px)}.background-stage{mix-blend-mode:multiply}.background-stage:after{background:linear-gradient(90deg,#fff 0%,#ffffffb3 32%,transparent 69%)}
.reel-object,.glass,.media{background:#ffffff73;border:1px solid #ffffffdb;box-shadow:inset 0 1px 0 #fff,0 20px 60px -35px #334a7555;backdrop-filter:blur(12px)}.reel-object{box-shadow:inset 0 1px 0 white,0 35px 85px -42px #1554f06b}
.reel-object{transform:rotateX(var(--tilt-y,0deg)) rotateY(var(--tilt-x,0deg));transform-style:preserve-3d}.reel-object:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(ellipse at var(--light-x,50%) var(--light-y,20%),#fff6,transparent 48%);opacity:.25}
.hero .h1-line:first-child{transform:translateX(var(--title-shift,0px))}.hero .h1-line:last-child{transform:translateX(calc(var(--title-shift,0px) * -.5))}
@media(prefers-reduced-motion:reduce){.bg-pattern{animation:none!important}.hero .h1-line{transform:none!important}}body.motion-paused .bg-pattern{animation-play-state:paused}

/* v11: the browser scroll position owns the scene. No wheel interception. */
.gsap-ready .hero,.gsap-ready.cinema-ready .hero{height:auto}
.gsap-ready .intro-sticky,.gsap-ready.cinema-ready .intro-sticky{position:relative;top:auto;height:auto}
.gsap-ready.hero-pinned .intro-sticky{height:calc(100svh - 76px);min-height:660px;perspective:1500px}
.gsap-ready.hero-pinned .hero-copy{position:absolute;inset:0;display:flex;align-items:center;padding:15px 0 40px;opacity:var(--copy-opacity,1);transform:translateY(var(--copy-y,0px))}
.gsap-ready.hero-pinned .background-stage{inset:0 -64px;height:100%;transform:scale(var(--bg-scale,1));opacity:var(--bg-opacity,1);transform-origin:70% 50%}
.gsap-ready.hero-pinned .film-stage{position:absolute;inset:0;display:grid;align-items:center;padding:25px 0 65px;opacity:var(--film-opacity,0);transform:translateY(var(--film-y,130px)) rotateX(var(--film-angle,14deg)) scale(var(--film-scale,.76));pointer-events:none;will-change:transform,opacity}
.gsap-ready.hero-pinned .film-stage.is-present{pointer-events:auto}.gsap-ready.hero-pinned .reel-object{width:100%}
.gsap-ready.hero-pinned .scroll-cue{position:absolute;left:0;right:0;bottom:20px;display:flex;align-items:center;justify-content:center;gap:15px;font-size:12px;color:var(--muted)}
.gsap-ready .story-chapter,.gsap-ready.cinema-ready .story-chapter{height:auto}
.gsap-ready .chapter-pin,.gsap-ready.cinema-ready .chapter-pin{position:relative;top:auto;height:calc(100svh - 100px);min-height:0;padding:24px 0}
.gsap-ready .story-chapter .work-item{backface-visibility:hidden;transform:perspective(1600px) translate3d(var(--project-x,0px),var(--project-y,0px),0) rotateX(var(--project-rx,0deg)) rotateY(var(--project-ry,0deg)) scale(var(--project-scale,1))!important;transform-origin:50% 50%}
.gsap-ready .story-chapter .media{max-height:52svh;backdrop-filter:none}.gsap-ready .archive-projects .work-item{transform-origin:50% 50%}
.gsap-ready .step-d{transform:translateX(var(--step-x,0px)) scale(var(--step-scale,1));transform-origin:left center;opacity:1}
.closing-story{position:relative;border-top:1px solid var(--line);margin:20px 0 80px}
.closing-sticky{position:relative;height:calc(100svh - 100px);min-height:490px;display:grid;grid-template-columns:1.05fr 1fr;align-items:center;gap:25px;isolation:isolate}
.closing-art{position:relative;width:100%;aspect-ratio:1;mix-blend-mode:multiply;pointer-events:none;mask-image:radial-gradient(ellipse at center,#000 35%,transparent 70%)}
.closing-art video{width:100%;height:100%;object-fit:cover;filter:brightness(1.45);transform:none}
.closing-caption h2{font-size:clamp(48px,6vw,84px);line-height:1.02;letter-spacing:-.07em;font-weight:550}.closing-caption h2 em{color:var(--blue);font-style:normal}.closing-link{display:inline-flex;gap:20px;align-items:center;margin-top:32px;color:var(--blue);font-size:16px;padding:12px 0;border-bottom:1px solid #b8ccfa}
.contact-panel>.lead-form{grid-row:1/9}
body.motion-paused .chapter-pin{min-height:0!important;height:auto!important}body.motion-paused .chapter-label{transform:none!important}body.motion-paused .step-d{transform:none!important}
@media(max-width:1100px){.gsap-ready.hero-pinned .background-stage{left:-36px;right:-36px}}
@media(max-width:800px){
 .gsap-ready.hero-pinned .intro-sticky{height:calc(100svh - 70px);min-height:660px}
 .gsap-ready.hero-pinned .hero-copy{padding:25px 0 42px;align-items:center}.gsap-ready.hero-pinned .background-stage{left:-24px;right:-24px}
 .gsap-ready.hero-pinned .background-stage video{opacity:.3}.gsap-ready.hero-pinned .background-stage:after{background:linear-gradient(90deg,#ffffff9c,transparent)}
 .gsap-ready.hero-pinned .hero .lead{font-size:16px;margin:23px 0}.gsap-ready.hero-pinned .hero-stats{margin-top:26px}
 .gsap-ready .chapter-pin,.gsap-ready.cinema-ready .chapter-pin{height:auto;padding:32px 0 52px}
 .gsap-ready .story-chapter .media{max-height:none;aspect-ratio:16/10}.chapter-label h3{margin:10px 0 15px}.chapter-progress{margin-bottom:22px}
 .closing-sticky{height:calc(100svh - 90px);min-height:560px;display:flex;flex-direction:column;justify-content:center;gap:0;text-align:center}
 .closing-art{width:min(100%,380px);height:290px;aspect-ratio:auto;flex-shrink:0;margin-top:-40px}
 .closing-caption h2{font-size:52px}.closing-caption .eyebrow{margin-bottom:20px}.closing-link{font-size:15px;margin-top:24px}
 .closing-story{margin-bottom:50px}.hero .h1-line:first-child,.hero .h1-line:last-child{transform:none}
}
@media(max-height:739px){.gsap-ready:not(.hero-pinned) .film-stage{opacity:1;transform:none;position:relative;pointer-events:auto}.closing-sticky{min-height:480px}.closing-art{max-height:290px}}
@media(prefers-reduced-motion:reduce){.closing-sticky{height:auto;min-height:0;padding:45px 0}.site-intro{transition:none}}

.site-intro{position:fixed;inset:0;z-index:10000;background:#030408;color:#f3f7ff;display:flex;flex-direction:column;justify-content:space-between;padding:clamp(25px,5vw,72px);transition:clip-path .4s cubic-bezier(.76,0,.24,1),visibility .4s;clip-path:inset(0)}
.site-intro[hidden]{display:none}.intro-brand{font-size:14px;font-weight:600;letter-spacing:.08em}.intro-count{display:flex;align-items:baseline;justify-content:center;font-weight:500;letter-spacing:-.085em;line-height:1;font-variant-numeric:tabular-nums}.intro-number{font-size:clamp(120px,25vw,340px)}.intro-percent{font-size:clamp(22px,4vw,54px);letter-spacing:-.05em;margin-left:16px}.intro-bottom{display:flex;justify-content:space-between;align-items:end;font-size:12px;letter-spacing:.08em;text-transform:uppercase;gap:20px}.intro-track{height:2px;width:min(40vw,480px);background:#e7edf8;overflow:hidden}.intro-track:after{content:"";display:block;width:100%;height:100%;background:#1554f0;transform:scaleX(var(--load,0));transform-origin:left}.site-intro.is-finished{clip-path:inset(0 0 100%);pointer-events:none;visibility:hidden}html.intro-loading{overflow:hidden}html.intro-loading .motion-toggle{visibility:hidden}@media(prefers-reduced-motion:reduce){.site-intro{transition:none}}

/* v12: keep the existing white / blue identity; simplify the page silhouette. */
:root{--page-gutter:clamp(24px,4.5vw,86px)}
.legal-page{width:calc(100% - var(--page-gutter)*2);max-width:960px;margin:0 auto;padding:65px 0 90px}.legal-back{display:inline-block;color:var(--muted);font-size:14px;margin-bottom:65px}.legal-page h1{font-size:clamp(42px,6vw,78px);line-height:1.08;max-width:850px;margin-bottom:65px}.legal-block{padding:28px 0;border-top:1px solid var(--line)}.legal-block h2{font-size:26px;letter-spacing:-.035em;margin-bottom:18px;line-height:1.25}.legal-block p{font-size:16px;line-height:1.8;margin-bottom:14px}.legal-block a{color:var(--blue);text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere}.legal-footer{max-width:1312px;width:calc(100% - var(--page-gutter)*2);margin:auto}
.intro-count{text-shadow:0 0 24px #367cff48,0 0 85px #1554f032;transform:scale(calc(.94 + var(--load,0)*.06));opacity:calc(.65 + var(--load,0)*.35)}.intro-percent{color:#77a7ff}.intro-brand{color:#eaf1ff}.intro-bottom{color:#8294b7}.intro-track{background:#142038}.intro-track:after{background:#689cff;box-shadow:0 0 12px #4588ff}.intro-number{font-weight:400}
.wrap{max-width:none;padding:0}.wrap>section[id],.wrap>footer,.closing-story{width:calc(100% - var(--page-gutter)*2);max-width:1312px;margin-left:auto;margin-right:auto}
.wrap>section[id]{padding:110px 0;scroll-margin-top:80px}.wrap>#travaux{padding:95px 0 110px}
.hero{width:100%;overflow:clip}.hero .intro-sticky,.gsap-ready.hero-pinned .hero .intro-sticky,.cinema-ready .hero .intro-sticky{height:calc(100svh - 76px);min-height:600px;isolation:isolate}
.hero .hero-copy,.gsap-ready.hero-pinned .hero .hero-copy,.cinema-ready .hero .hero-copy{position:relative;inset:auto;display:flex;align-items:center;min-height:100%;padding:45px 0 65px;transform:translateY(var(--copy-y,0px));opacity:1}
.hero .viewport{width:calc(100% - var(--page-gutter)*2);max-width:1500px;margin:auto}
.hero .background-stage,.gsap-ready.hero-pinned .hero .background-stage,.cinema-ready .hero .background-stage{inset:0!important;width:100%;height:100%;opacity:1;transform:scale(var(--bg-scale,1));transform-origin:70% 50%;mix-blend-mode:multiply}
.hero .background-stage video{height:100%;width:100%;object-fit:cover;object-position:68% center;opacity:1}
.hero .background-stage:after{background:linear-gradient(90deg,#fff 0%,#ffffffeb 17%,#ffffff96 38%,transparent 67%)}
.hero h1{font-size:clamp(64px,7.2vw,136px);max-width:1100px;line-height:1.02}.hero .h1-line:last-child{color:var(--blue);text-shadow:0 8px 35px #1554f012}
.hero .lead{font-size:clamp(16px,1.3vw,19px);max-width:520px;margin:30px 0}.hero .scroll-cue{position:absolute;bottom:20px;left:var(--page-gutter);display:flex;gap:15px;align-items:center;color:var(--muted);font-size:12px}
.clients-strip{width:100%;padding:42px 0 46px;border-bottom:1px solid var(--line);overflow:hidden;background:var(--white)}.cs-label{color:var(--muted);font-size:14px}
.client-marquee{overflow:hidden;margin-top:28px;mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.client-track{display:flex;width:max-content;animation:client-loop 42s linear infinite}.client-group{display:flex;align-items:center;gap:70px;padding-right:70px;flex:none}
.client-group .ac-logo{width:auto;height:48px;gap:12px;white-space:nowrap}.client-group img{width:42px;height:42px;object-fit:contain;filter:grayscale(1);opacity:.68;transition:filter .25s,opacity .25s}.client-group .ac-logo:hover img{filter:grayscale(0);opacity:1}.client-word{font-size:18px;font-weight:550;letter-spacing:-.035em;color:#596272}
@keyframes client-loop{to{transform:translateX(-50%)}}.client-marquee:hover .client-track{animation-play-state:paused}
.display-head{display:flex;flex-direction:column;align-items:center;text-align:center;gap:20px;margin-bottom:48px}.display-head h2,.cinema-ready #travaux .display-head h2{font-size:clamp(58px,8vw,118px);line-height:1.06;max-width:none;letter-spacing:-.075em}.display-head h2 span,.blue-dot{color:var(--blue)}.display-head p{font-size:20px;text-align:center;max-width:none}
.portfolio-grid,.cinema-ready .portfolio-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;gap:38px 26px;transform:none;will-change:auto}
.portfolio-grid .work-item,.cinema-ready .portfolio-grid .work-item{width:100%;min-width:0;transform-origin:50% 75%}.portfolio-grid .media,.cinema-ready .portfolio-grid .media{aspect-ratio:16/9;max-height:none;border-radius:16px;background:#f3f5f9;border:1px solid #e6eaf0;box-shadow:0 12px 35px -28px #15387655;backdrop-filter:none;transform:perspective(1300px) rotateX(var(--tilt-y,0deg)) rotateY(var(--tilt-x,0deg))}
.portfolio-grid video{object-fit:contain;border-radius:inherit}.portfolio-grid .info{padding:16px 2px 0}.portfolio-grid .info>div{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.portfolio-grid .name{font-size:18px}.portfolio-grid .tag{font-size:12px;color:var(--muted)}.portfolio-grid .glare{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at var(--light-x,50%) var(--light-y,10%),#fff5,transparent 60%);opacity:.2}
.benefits-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.benefit-column{padding:34px;border:1px solid #e7eaf0;border-radius:22px;background:var(--white)}.benefit-column.with-video{background:linear-gradient(145deg,#f5f9ff,#edf4ff);border-color:#b5ccff;box-shadow:0 16px 65px -45px #1554f065}.benefit-column h3{font-size:25px;letter-spacing:-.035em;margin-bottom:30px}.with-video h3{color:var(--blue)}.benefit-column ul{padding:0;margin:0;list-style:none;display:grid;gap:26px}.benefit-column li{display:flex;gap:14px}.benefit-icon{display:grid;place-items:center;flex:none;width:21px;height:21px;margin-top:2px;border:1px solid #dde3ed;border-radius:50%;color:#8b95a6;font-size:13px}.with-video .benefit-icon{background:var(--blue);border-color:var(--blue);color:#fff}.benefit-column h4{font-size:17px;font-weight:550;line-height:1.4;margin:0 0 7px;letter-spacing:-.025em}.benefit-column p{font-size:15px;line-height:1.65}
.wrap>#avis{max-width:none;width:100%;overflow:hidden;border-top:0}.reviews-window{overflow-x:auto;scrollbar-width:thin;scrollbar-color:#c4d5fa transparent;overscroll-behavior-x:contain;padding:5px 0 24px;mask-image:linear-gradient(90deg,transparent,#000 3%,#000 97%,transparent)}.reviews-window:focus-visible{outline:2px solid var(--blue);outline-offset:-3px}.reviews-track,.reviews-group{display:flex;width:max-content;gap:22px}.reviews-group{padding-right:0;align-items:stretch}.reviews-track{padding:0 24px}
.reviews-group .avis-card,.reviews-group .avis-card:first-child{width:340px;flex:none;padding:28px;gap:25px;max-width:none;background:white;border:1px solid #e8e8e8;border-radius:18px;box-shadow:0 15px 35px -30px #16387533;transform:none;opacity:1}.reviews-group .avis-card .quote,.reviews-group .avis-card:first-child .quote{font-size:17px;line-height:1.65;letter-spacing:-.018em;color:var(--ink)}.reviews-group .avis-card .avis-foot{margin-top:auto;padding-top:10px}.q-long{display:inline!important}.marquee-pause{font-size:13px;color:var(--muted);background:#fff;border:1px solid var(--line);padding:9px 17px;border-radius:40px;cursor:pointer}
.offer-config{padding:42px;border-radius:26px;border:1px solid #dce6f7;background:linear-gradient(145deg,#fff,#f6f9ff);box-shadow:0 25px 75px -55px #1554f077;backdrop-filter:none}.offer-heading{display:flex;justify-content:space-between;gap:35px;padding-bottom:30px;border-bottom:1px solid var(--line)}.offer-heading h3{font-size:28px;margin-bottom:12px;letter-spacing:-.04em}.offer-heading p{font-size:16px;max-width:700px}.offer-badge{align-self:start;white-space:nowrap;font-size:11px;color:var(--blue);background:#eaf1ff;border-radius:50px;padding:7px 11px;letter-spacing:.06em}.offer-config fieldset{border:0;padding:0;margin:28px 0}.offer-config legend{padding:0;font-size:13px;letter-spacing:.04em;color:var(--muted);margin-bottom:17px}.duration-options{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:6px;background:#eaf0fa;border-radius:16px}.duration-options label{position:relative;cursor:pointer}.duration-options input,.offer-option>input{position:absolute;opacity:0;width:1px;height:1px}.duration-options label>span{display:flex;justify-content:center;align-items:center;gap:16px;padding:18px 15px;border-radius:11px;color:var(--muted);transition:background .2s,color .2s,box-shadow .2s}.duration-options strong{font-size:19px;font-weight:550}.duration-options small{font-size:13px}.duration-options input:checked+span{background:var(--blue);color:white;box-shadow:0 6px 20px -10px #1554f0}.duration-options input:focus-visible+span,.offer-option input:focus-visible+.option-switch{outline:2px solid var(--blue);outline-offset:4px}
.offer-option{display:flex;position:relative;align-items:center;gap:18px;cursor:pointer;padding:19px 0;border-bottom:1px solid #e6ecf5}.option-switch{width:35px;height:21px;border-radius:20px;background:#dbe3ef;position:relative;flex:none;transition:background .2s}.option-switch:after{content:"";position:absolute;left:3px;top:3px;background:#fff;width:15px;height:15px;border-radius:50%;transition:transform .2s}.offer-option input:checked+.option-switch{background:var(--blue)}.offer-option input:checked+.option-switch:after{transform:translateX(14px)}.option-copy{display:grid;gap:4px}.option-copy strong{font-size:16px;font-weight:500}.option-copy small{font-size:14px;color:var(--muted);line-height:1.5}.option-price{margin-left:auto;white-space:nowrap;font-size:14px;color:var(--muted)}.offer-total{display:flex;justify-content:space-between;align-items:center;margin:32px 0 26px;gap:25px}.offer-total span{font-size:14px;color:var(--muted)}.offer-total p{font-size:15px;color:var(--ink);margin-top:6px}.offer-total>strong{font-size:32px;letter-spacing:-.055em;font-weight:550;white-space:nowrap}.offer-cta{width:100%}
.why-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 65px}.why-item{display:grid;grid-template-columns:50px 1fr;gap:20px;padding:34px 0 42px;border-top:1px solid var(--line)}.why-number{font-size:36px;color:#b6caf4;line-height:1;letter-spacing:-.05em}.why-item h3{font-size:25px;line-height:1.2;margin-bottom:15px;letter-spacing:-.035em}.why-item p{font-size:16px;line-height:1.65}
#process .step{min-height:0;padding:30px 0 38px}#process .process-lead{top:420px}#process .step h3{font-size:26px}#process .step p{font-size:15px}
.contact-panel{gap:0 65px;padding:60px 48px}.contact-panel>h2{font-size:clamp(40px,4.4vw,64px);max-width:510px}.contact-actions{grid-column:1;display:flex;gap:12px;flex-wrap:wrap;margin:0 0 20px;align-items:start}.contact-actions .btn{font-size:14px}.contact-panel>.lead-form{grid-row:1/12}#leadForm{scroll-margin-top:110px}.form-privacy{font-size:12px;line-height:1.6;margin-top:20px}.form-privacy a{text-decoration:underline;text-underline-offset:3px}.request-summary{font-size:14px;margin:12px 0;padding:12px 14px;background:#edf4ff;border-radius:8px;color:#17418c}
.foot-legal{display:flex;gap:20px;flex-wrap:wrap;justify-content:center}.foot-legal a{font-size:13px}.closing-story{margin-top:0;margin-bottom:35px;border-top:0}.closing-sticky{min-height:400px;height:65svh;max-height:620px}.closing-caption h2{font-size:clamp(42px,5vw,68px)}
body.motion-paused .client-track{animation-play-state:paused}body.motion-paused .hero .hero-copy{transform:none}.motion-paused .portfolio-grid .work-item{transform:none!important}
@media(max-width:1024px){.hero h1{font-size:clamp(62px,7.7vw,90px)}.hero .lead{max-width:480px}.contact-panel{padding:40px 30px;gap:0 35px}.contact-actions .btn{width:100%}.why-grid{gap:0 35px}.why-item{grid-template-columns:35px 1fr;gap:15px}.benefit-column{padding:26px}.offer-config{padding:30px}.display-head h2{font-size:84px}}
@media(max-width:800px){
 .wrap>section[id]{padding:75px 0}.wrap>#travaux{padding:65px 0 75px}.hero .intro-sticky,.gsap-ready.hero-pinned .hero .intro-sticky,.cinema-ready .hero .intro-sticky{height:calc(100svh - 70px);min-height:620px}.hero .hero-copy,.gsap-ready.hero-pinned .hero .hero-copy{padding:55px 0 70px}.hero h1{font-size:clamp(43px,8.8vw,70px)}.hero .background-stage video{object-position:68% center;opacity:.34!important}.hero .background-stage:after{background:linear-gradient(90deg,#ffffffd9,#ffffff70 50%,transparent)}.hero .lead{max-width:490px;margin:27px 0;font-size:16px}.hero .h1-line{transform:none!important}
 .client-group{gap:35px;padding-right:35px}.client-word{font-size:16px}.client-group img{width:35px;height:35px}.clients-strip{padding:30px 0}.display-head h2,.cinema-ready #travaux .display-head h2{font-size:clamp(50px,10vw,76px)}.display-head{margin-bottom:30px}.display-head p{font-size:18px}.benefits-grid{gap:18px}.benefit-column{padding:24px}.benefit-column h4{font-size:16px}.benefit-column p{font-size:14px}.why-grid{grid-template-columns:1fr 1fr;gap:0 25px}.why-item h3{font-size:23px}.why-item{grid-template-columns:1fr;gap:14px}.why-number{font-size:30px}.why-item p{font-size:15px}.reviews-group .avis-card,.reviews-group .avis-card:first-child{width:300px;padding:24px}.reviews-group .avis-card .quote{font-size:16px}.offer-heading{display:block}.offer-badge{display:none}.duration-options label>span{flex-direction:column;gap:4px;padding:15px 8px}.duration-options strong{font-size:18px}.offer-config{padding:26px}.contact-actions{display:flex}.contact-actions .btn{width:auto}.contact-panel{padding:35px 24px}.contact-panel>h2{font-size:47px}.closing-sticky{height:65svh;min-height:470px}.closing-art{height:230px;max-width:300px}.closing-caption h2{font-size:44px}.foot-legal{gap:16px}
}
@media(max-width:600px){.portfolio-grid,.cinema-ready .portfolio-grid{grid-template-columns:1fr;gap:30px}.benefits-grid{grid-template-columns:1fr}.benefit-column li{gap:12px}.benefit-column p{font-size:15px}.why-grid{grid-template-columns:1fr}.why-item{grid-template-columns:38px 1fr;gap:15px}.offer-config{padding:22px 18px}.offer-heading h3{font-size:25px}.offer-heading p{font-size:15px}.offer-option{gap:12px;flex-wrap:wrap}.option-copy{flex:1;min-width:0}.option-copy strong{font-size:15px}.option-copy small{font-size:13px}.option-price{font-size:12px;flex-basis:100%;margin-left:47px;margin-top:-5px}.offer-total{align-items:start}.offer-total>strong{font-size:26px}.offer-total p{font-size:13px}.contact-actions{flex-direction:column;align-items:stretch}.contact-actions .btn{width:100%}.hero .cta-row{align-items:stretch;flex-direction:column;width:max-content;max-width:100%}.hero .cta-note{max-width:300px;font-size:11px;gap:10px}.hero .lead{max-width:340px}.hero .scroll-cue{bottom:22px}}
@media(prefers-reduced-motion:reduce){.client-track{animation:none}.reviews-group[aria-hidden=true],.client-group[aria-hidden=true]{display:none}.hero .hero-copy{transform:none!important}.portfolio-grid .work-item{transform:none!important}}

/* v13 polish pass — preserve the white Zensu identity, remove visual friction. */
.portfolio-note{margin-top:-8px!important;font-size:13px!important;color:#8a94a6!important;letter-spacing:.01em}
.portfolio-grid .media{transition:border-color .28s ease,box-shadow .35s ease,transform .4s cubic-bezier(.22,1,.36,1)}
.portfolio-grid .work-card:hover .media{border-color:#cbdcff;box-shadow:0 22px 58px -38px #1554f070}
.portfolio-grid .info{border-top:0}.portfolio-grid .tag{color:#7a8495}.portfolio-grid .name{font-weight:600}

/* Reviews: seamless auto-marquee without an exposed browser scrollbar. */
.reviews-window{scrollbar-width:none;-ms-overflow-style:none;cursor:grab;padding-bottom:8px}
.reviews-window::-webkit-scrollbar{display:none}
.reviews-window:active{cursor:grabbing}
.reviews-track{padding-top:6px;padding-bottom:10px}
.reviews-group .avis-card,.reviews-group .avis-card:first-child{min-height:360px;transition:transform .28s ease,border-color .28s ease,box-shadow .28s ease}
.reviews-group .avis-card:hover{transform:translateY(-3px);border-color:#d5e1f7;box-shadow:0 24px 52px -38px #1538764d}
.marquee-pause{transition:color .2s,border-color .2s,background .2s}.marquee-pause:hover{color:var(--blue);border-color:#bfd1f7;background:#f8fbff}

/* Offers: a soft Gaussian-style light source behind the existing configurator, not a colored section. */
#tarifs{position:relative;isolation:isolate}
#tarifs:before{content:"";position:absolute;z-index:-1;left:7%;right:24%;bottom:3%;height:48%;pointer-events:none;background:radial-gradient(ellipse at 38% 62%,rgba(21,84,240,.17),rgba(70,160,255,.075) 38%,rgba(255,255,255,0) 72%);filter:blur(64px);opacity:.9}
.offer-config{position:relative;isolation:isolate;box-shadow:0 28px 82px -58px #1554f08c}
.offer-option{transition:background .22s ease,padding .22s ease,border-color .22s ease}
.offer-option:hover{background:#f7faff;border-color:#d9e5fa;padding-left:10px;padding-right:10px;border-radius:11px}
.option-switch,.option-switch:after{transition:background .22s ease,transform .26s cubic-bezier(.22,1,.36,1),box-shadow .22s ease}
.offer-option input:checked+.option-switch{box-shadow:0 0 0 4px #1554f011,0 5px 14px -8px #1554f0}
.offer-cta{transition:transform .25s ease,box-shadow .25s ease,background .2s ease}.offer-cta:hover{transform:translateY(-2px);box-shadow:0 12px 28px -18px #1554f099}

/* Closing film gets more presence now that its scroll scene is longer. */
.closing-sticky{height:72svh;max-height:720px;gap:52px}
.closing-art{max-width:620px;justify-self:center;filter:drop-shadow(0 28px 42px rgba(21,84,240,.09))}
.closing-art video{filter:brightness(1.48) contrast(1.015)}
.closing-caption{position:relative}.closing-caption:before{content:"";position:absolute;width:190px;height:190px;left:-85px;top:20%;z-index:-1;background:radial-gradient(circle,rgba(21,84,240,.12),transparent 68%);filter:blur(28px);pointer-events:none}

/* More precise request selector. */
#projetCombo select{font-weight:500}.lf-select select:valid{border-color:#cfdcf1}.lf-row--precision{transition:opacity .2s ease}

/* Keep animation accessibility, but stop the control competing with conversion CTAs. */
.motion-toggle{width:38px;height:38px;min-height:38px;padding:0;display:grid;place-items:center;border-radius:50%;font-size:13px;font-weight:700;color:#5d6879;background:#fffffff2;box-shadow:0 7px 22px -14px #152a4a55;opacity:.68;transition:opacity .2s,border-color .2s,color .2s,transform .2s}
.motion-toggle:hover,.motion-toggle:focus-visible{opacity:1;color:var(--blue);border-color:#b9cdf9;transform:translateY(-1px)}

/* Global spacing polish: white remains dominant, separators stay quiet. */
.wrap>section[id]+section[id]{border-top-color:#edf0f5}
.section-head h2{ text-wrap:balance }
.why-item,.faq-item,.step{border-color:#e8edf4}
.btn{box-shadow:none}.btn-frame{box-shadow:0 10px 24px -18px #1554f0aa}.btn-frame:hover{box-shadow:0 16px 34px -20px #1554f0cc}

@media(max-width:800px){
 .portfolio-note{font-size:12px!important;margin-top:-4px!important}
 .reviews-group .avis-card,.reviews-group .avis-card:first-child{min-height:330px}
 #tarifs:before{left:0;right:0;height:36%;bottom:8%;filter:blur(52px)}
 .closing-sticky{height:68svh;max-height:none}.closing-art{width:min(100%,410px);height:310px;max-width:410px;margin-top:-18px}
 .closing-caption:before{left:50%;transform:translateX(-50%);top:-40px}
 .motion-toggle{right:12px;bottom:12px;width:36px;height:36px;min-height:36px}
}

@media(prefers-reduced-motion:reduce){
 .reviews-group .avis-card:hover,.portfolio-grid .work-card:hover .media,.offer-cta:hover,.motion-toggle:hover{transform:none}
}

/* v13 stacking/white-background safety */
.bg-pattern{opacity:.28}
#tarifs:before{z-index:0}
#tarifs>.section-head,#tarifs>.offer-config{position:relative;z-index:1}

/* v14 targeted fixes — stable hero story, clean method layout, colored collaborators, guaranteed review loop. */

/* 1/3. Use CSS sticky for the opening Higgsfield story. This removes GSAP pin spacers,
   so returning to scrollY=0 can never expose a large blank block above the hero. */
@media (min-width:801px) and (min-height:700px){
  html.gsap-ready.hero-pinned .hero{
    height:calc((100svh - 76px) + 118svh);
    overflow:visible;
  }
  html.gsap-ready.hero-pinned .hero .intro-sticky{
    position:sticky!important;
    top:76px;
    height:calc(100svh - 76px);
    min-height:600px;
  }
}

/* 1. Method: the heading + 7-day metric are one intentional sticky rail, never two
   independent sticky elements that can collide while scrolling. */
#process{
  grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);
  gap:0 clamp(64px,7vw,110px);
}
/* The rail sits in a wrapper stretched over row 1 only: the sticky range ends
   with the steps, so the rail never slides over .deliver ("Livrables") in row 2. */
#process .process-intro{
  grid-column:1;
  grid-row:1;
  align-self:stretch;
  min-width:0;
}
#process .process-rail{
  position:sticky;
  top:118px;
}
#process .deliver{grid-row:2}
#process .process-intro .section-head{
  position:static!important;
  display:block;
  grid-column:auto;
  grid-row:auto;
  margin:0;
}
#process .process-intro .process-lead{
  position:static!important;
  grid-column:auto;
  grid-row:auto;
  top:auto!important;
  margin:48px 0 0;
  max-width:340px;
  padding-top:28px;
}
#process .process-steps{
  grid-column:2;
  grid-row:1;
}

/* Keep the metric visually subordinate to the method title instead of crossing it. */
#process .pl-value{font-size:clamp(48px,4.2vw,62px)}
#process .pl-label{max-width:290px;line-height:1.55}

/* 4. Real client logos keep their native colors, and each collaborator name picks up
   a restrained brand accent instead of the previous all-grey treatment. */
.client-group img{
  filter:none!important;
  opacity:1!important;
  transition:transform .28s ease,filter .28s ease,opacity .28s ease;
}
.client-group .ac-logo:hover img{transform:translateY(-2px) scale(1.035)}
.client-group .client-word{color:var(--client-accent,#334155);transition:color .25s ease,opacity .25s ease}
.client-group .ac-logo[title="Loop Studios"]{--client-accent:#8c6d3f}
.client-group .ac-logo[title="BridgeArchive"]{--client-accent:#5f3034}
.client-group .ac-logo[title="CarSpot"]{--client-accent:#d98b00}
.client-group .ac-logo[title="Plantifia"]{--client-accent:#5aa832}
.client-group .ac-logo[title="Mat & La"]{--client-accent:#8a6d49}
.client-group .ac-logo[title="Maître AO"]{--client-accent:#2f77e8}
.client-group .ac-logo[title="FileWright"]{--client-accent:#2f6ee5}
.client-group .ac-logo:hover .client-word{color:var(--ink)}

/* 5. Reviews: CSS animation is deterministic and does not depend on scrollLeft,
   IntersectionObserver timing, hover state or a browser scrollbar. */
.reviews-window{
  overflow:hidden!important;
  cursor:default;
  padding-left:0;
  padding-right:0;
}
.reviews-track{
  --reviews-gap:22px;
  gap:var(--reviews-gap)!important;
  padding-left:0!important;
  padding-right:0!important;
  margin-left:24px;
  will-change:transform;
  animation:zensu-reviews-loop 56s linear infinite;
}
@keyframes zensu-reviews-loop{
  from{transform:translate3d(0,0,0)}
  to{transform:translate3d(calc(-50% - (var(--reviews-gap) / 2)),0,0)}
}
.reviews-window.reviews-paused .reviews-track,
.reviews-window.reviews-hidden .reviews-track,
body.motion-paused .reviews-track{animation-play-state:paused}

/* Preserve the automatic motion even when the pointer is over the testimonials. */
.reviews-window:hover .reviews-track{animation-play-state:running}
.reviews-window.reviews-paused:hover .reviews-track,
body.motion-paused .reviews-window:hover .reviews-track{animation-play-state:paused}

@media(max-width:800px){
  #process{display:block}
  #process .process-intro,#process .process-rail{position:static;top:auto}
  #process .process-intro .process-lead{display:flex;align-items:center;gap:24px;max-width:none;margin:34px 0 30px;padding:24px 0}
  #process .process-steps{grid-column:auto;grid-row:auto}
  .reviews-track{margin-left:18px;animation-duration:48s}
}

@media(max-height:699px) and (min-width:801px){
  #process .process-intro,#process .process-rail{position:static}
}

@media(prefers-reduced-motion:reduce){
  .reviews-track{animation:none!important;transform:none!important}
}

/* v15 scroll-storytelling pass — white background, smoother Higgsfield, stable sticky sections. */
:root{
  --hero-scroll-span:132svh;
  --closing-scroll-span:128svh;
}

body,
.wrap,
.hero,
.clients-strip,
.closing-story,
.contact-panel,
.offer-config,
.reviews-group .avis-card,
.reviews-group .avis-card:first-child{
  /* var(--white) et non #fff : ces fonds suivent alors le fondu progressif
     vers le sombre (--dark-p), au lieu d'attendre la bascule de classe. */
  background-color:var(--white);
}

html.story-v15.gsap-ready.hero-pinned .hero,
html.story-v15 .hero{
  position:relative;
  min-height:calc((100svh - 76px) + var(--hero-scroll-span));
  overflow:clip;
  isolation:isolate;
}
html.story-v15 .hero .intro-sticky{
  position:sticky !important;
  top:76px;
  height:calc(100svh - 76px);
  min-height:620px;
  overflow:hidden;
}
html.story-v15 .hero .background-stage{
  position:absolute !important;
  inset:0 !important;
  height:100% !important;
  z-index:0;
  overflow:hidden;
  transform:scale(var(--bg-scale,1));
  transform-origin:70% 50%;
}
html.story-v15 .hero .background-stage video{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:70% center;
  display:block;
  opacity:1 !important;
}
html.story-v15 .hero .background-stage::before{
  content:"";
  position:absolute;
  inset:-2%;
  background:radial-gradient(circle at 76% 45%, rgba(64,134,255,.16), transparent 34%);
  opacity:var(--hero-overlay-opacity,0);
  filter:blur(36px);
  pointer-events:none;
}
html.story-v15 .hero .background-stage::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,#fff 0%,#ffffffef 15%,#ffffffb8 34%,#ffffff6d 48%,transparent 66%);
  pointer-events:none;
}
html.story-v15 .hero .hero-copy{
  position:relative !important;
  z-index:1;
  min-height:100%;
  display:flex;
  align-items:center;
  opacity:var(--copy-opacity,1);
  transform:translate3d(0,var(--copy-y,0px),0) !important;
}
html.story-v15 .hero .eyebrow-unfold{transform:translate3d(0,var(--eyebrow-y,0px),0)}
html.story-v15 .hero .scroll-cue{
  opacity:var(--cue-opacity,1);
  transition:opacity .2s linear;
}
html.story-v15 .hero h1{
  max-width:10.5ch;
}
html.story-v15 .hero .lead{
  max-width:560px;
}

.clients-strip{
  position:relative;
  z-index:2;
}
.client-group img{
  filter:none !important;
  opacity:1 !important;
}
.client-group .client-word{
  color:var(--client-accent,#314155) !important;
}

#process{
  position:relative;
  display:grid !important;
  grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);
  gap:0 clamp(64px,7vw,110px);
  align-items:start;
}
/* Collant sur .process-rail, pas sur .process-intro : l'intro est étirée sur la
   seule rangée des étapes, donc le rail s'arrête avant .deliver (« Livrables »).
   Collé sur .process-intro, il restait accroché sur toute la section et son
   fond passait par-dessus les livrables. */
#process .process-intro{
  position:relative !important;
  align-self:stretch;
  padding-right:28px;
  min-width:0;
}
#process .process-rail{
  position:sticky;
  top:118px;
  z-index:2;
  background:linear-gradient(180deg, rgba(255,255,255,.98) 0%, rgba(255,255,255,.96) 72%, rgba(255,255,255,0) 100%);
  backdrop-filter:blur(2px);
}
#process .process-intro .section-head,
#process .process-intro .process-lead,
#process .process-intro .section-head h2,
#process .process-intro .section-head p,
#process .process-intro .pl-value,
#process .process-intro .pl-label{
  position:static !important;
  top:auto !important;
  transform:none !important;
}
#process .process-intro .section-head{
  margin:0 !important;
  display:block !important;
}
#process .process-intro .section-head h2{
  max-width:8.4ch;
  line-height:.94;
  letter-spacing:-.075em;
}
#process .process-intro .section-head p{
  margin-top:24px;
  max-width:340px;
}
#process .process-intro .process-lead{
  display:grid !important;
  gap:10px;
  margin:36px 0 0 !important;
  padding:24px 0 0 !important;
  border-top:1px solid var(--line);
  background:transparent !important;
}
#process .pl-value{
  font-size:clamp(42px,3.8vw,56px) !important;
  line-height:1.02;
  display:flex;
  align-items:baseline;
  gap:8px;
  white-space:nowrap;
}
#process .pl-label{
  max-width:320px;
  line-height:1.6;
  font-size:14px;
}
#process .process-steps{
  grid-column:2;
  grid-row:1;
}
#process .step{
  min-height:160px;
}
#process .step-d{
  /* Pas de plaque sous le texte : la carte se pose à même le fond de page,
     clair comme sombre. */
  background:transparent;
}

.reviews-window{
  overflow-x:auto !important;
  overflow-y:hidden !important;
  scrollbar-width:none;
  -ms-overflow-style:none;
  overscroll-behavior-x:contain;
  padding-bottom:18px !important;
}
.reviews-window::-webkit-scrollbar{display:none}
.reviews-track{
  display:inline-flex !important;
  flex-wrap:nowrap !important;
  align-items:stretch;
  min-width:max-content;
  gap:22px;
  will-change:scroll-position;
}
.reviews-group{
  display:inline-flex !important;
  flex-wrap:nowrap !important;
  align-items:stretch;
  min-width:max-content;
}
.reviews-group .avis-card,
.reviews-group .avis-card:first-child{
  min-height:350px;
}

.offer-config{
  position:relative;
  overflow:hidden;
}
.offer-config::before{
  content:"";
  position:absolute;
  inset:auto 9% 12% 9%;
  height:180px;
  border-radius:999px;
  background:radial-gradient(circle, rgba(21,84,240,.10), rgba(21,84,240,0) 70%);
  filter:blur(48px);
  pointer-events:none;
  z-index:0;
}
.offer-config > *{position:relative; z-index:1}

html.story-v15.closing-pinned .closing-story,
html.story-v15 .closing-story{
  position:relative;
  min-height:calc((100svh - 76px) + var(--closing-scroll-span));
  overflow:clip;
  border-top:0;
  margin-bottom:60px;
}
html.story-v15 .closing-sticky{
  position:sticky;
  top:90px;
  min-height:calc(100svh - 108px);
  height:calc(100svh - 108px);
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  align-items:center;
  gap:clamp(36px,5vw,68px);
}
html.story-v15 .closing-art{
  max-width:620px;
  justify-self:center;
  transform:translate3d(0,var(--closing-art-y,28px),0) scale(var(--closing-art-scale,.9));
  transform-origin:center center;
  filter:drop-shadow(0 28px 42px rgba(21,84,240,.09));
}
html.story-v15 .closing-art::before{
  content:"";
  position:absolute;
  inset:16% 12%;
  background:radial-gradient(circle, rgba(74,136,255,var(--closing-glow-opacity,.15)), transparent 68%);
  filter:blur(34px);
  z-index:-1;
}
html.story-v15 .closing-art video{
  width:100%;
  height:100%;
  object-fit:cover;
  filter:brightness(1.04) contrast(1.02);
}
html.story-v15 .closing-caption{
  transform:translate3d(0,var(--closing-caption-y,48px),0);
  opacity:var(--closing-caption-opacity,.72);
}
html.story-v15 .closing-caption h2{
  max-width:9.4ch;
}

@media (max-width:800px){
  html.story-v15 .hero,
  html.story-v15.gsap-ready.hero-pinned .hero{
    min-height:calc((100svh - 70px) + 72svh);
  }
  html.story-v15 .hero .intro-sticky{
    top:70px;
    height:calc(100svh - 70px);
    min-height:620px;
  }
  html.story-v15 .hero h1{max-width:11ch}
  html.story-v15 .hero .background-stage::after{background:linear-gradient(90deg,#ffffffeb 0%, #ffffff9f 42%, transparent 78%)}
  #process{
    display:block !important;
  }
  #process .process-intro,#process .process-rail{
    position:static !important;
    padding-right:0;
    background:none;
    backdrop-filter:none;
  }
  #process .process-intro .process-lead{
    display:flex !important;
    align-items:flex-start;
    gap:22px;
    flex-wrap:wrap;
  }
  .reviews-group .avis-card,
  .reviews-group .avis-card:first-child{
    min-height:330px;
  }
  html.story-v15 .closing-story,
  html.story-v15.closing-pinned .closing-story{
    min-height:calc((100svh - 70px) + 76svh);
  }
  html.story-v15 .closing-sticky{
    top:82px;
    min-height:calc(100svh - 96px);
    height:calc(100svh - 96px);
    display:flex;
    flex-direction:column;
    justify-content:center;
    text-align:center;
  }
  html.story-v15 .closing-art{
    width:min(100%,380px);
    max-width:380px;
  }
  html.story-v15 .closing-caption h2{max-width:none}
}

@media (max-height:740px) and (min-width:801px){
  #process .process-intro,#process .process-rail{position:static !important}
}

@media(prefers-reduced-motion:reduce){
  html.story-v15 .hero,
  html.story-v15 .closing-story{min-height:auto}
  html.story-v15 .hero .intro-sticky,
  html.story-v15 .closing-sticky{position:relative !important; top:auto; height:auto; min-height:0}
}

/* v16 premium line storytelling + cleaner closing scene */
.story-lines{
  position:absolute;
  inset:0;
  pointer-events:none;
  overflow:hidden;
}
.story-lines svg{
  width:100%;
  height:100%;
  display:block;
}
.story-lines .draw,
.story-lines .node,
.story-lines .dot{
  fill:none;
  vector-effect:non-scaling-stroke;
}
.story-lines .draw,
.story-lines .node{
  stroke-linecap:round;
  stroke-linejoin:round;
}
.story-lines .dot{
  fill:rgba(38,89,241,.95);
  opacity:var(--line-pts-opacity,.9);
}
.story-lines--hero{
  opacity:var(--hero-line-opacity,.34);
  transform:translate3d(0,var(--hero-line-shift,0px),0);
}
.story-lines--hero .draw,
.story-lines--hero .node{
  stroke:rgba(34,88,238,.6);
}
.story-lines--hero .draw-a{stroke-width:1.1;stroke-dasharray:660;stroke-dashoffset:calc(660px - (660px * var(--hero-line-draw,0)))}
.story-lines--hero .draw-b{stroke-width:1.1;stroke-dasharray:560;stroke-dashoffset:calc(560px - (560px * var(--hero-line-draw,0)))}
.story-lines--hero .draw-c{stroke-width:1.2;stroke-dasharray:620;stroke-dashoffset:calc(620px - (620px * var(--hero-line-draw,0)))}
.story-lines--hero .draw-d{stroke-width:1.2;stroke-dasharray:1560;stroke-dashoffset:calc(1560px - (1560px * var(--hero-line-draw,0)))}
.story-lines--hero .draw-e{stroke:rgba(101,126,172,.46);stroke-width:1;stroke-dasharray:1060;stroke-dashoffset:calc(1060px - (1060px * var(--hero-line-draw,0)))}
.story-lines--hero .draw-f{stroke:rgba(57,103,223,.54);stroke-width:1.1;stroke-dasharray:520;stroke-dashoffset:calc(520px - (520px * var(--hero-line-draw,0)))}
.story-lines--hero .draw-g{stroke:rgba(93,141,255,.6);stroke-width:1.05;stroke-dasharray:320;stroke-dashoffset:calc(320px - (320px * var(--hero-line-draw,0)))}
.story-lines--hero .draw-h,
.story-lines--hero .draw-i{stroke:rgba(40,74,140,.24);stroke-width:.9;stroke-dasharray:690;stroke-dashoffset:calc(690px - (690px * var(--hero-line-draw,0)))}
.story-lines--hero .node-a{stroke:rgba(38,89,241,.8);stroke-width:1.4;stroke-dasharray:39;stroke-dashoffset:calc(39px - (39px * var(--hero-line-draw,0)))}

.story-lines--closing{
  opacity:calc(.12 + (.62 * var(--closing-line-draw,0)));
  transform:translate3d(0,var(--closing-line-shift,-20px),0);
}
.story-lines--closing .draw,
.story-lines--closing .node{
  stroke:rgba(48,95,242,.36);
  stroke-width:1.05;
}
.story-lines--closing .draw-j{stroke-dasharray:840;stroke-dashoffset:calc(840px - (840px * var(--closing-line-draw,0)))}
.story-lines--closing .draw-k{stroke-dasharray:620;stroke-dashoffset:calc(620px - (620px * var(--closing-line-draw,0)))}
.story-lines--closing .draw-l{stroke:rgba(81,122,215,.18);stroke-width:1;stroke-dasharray:1295;stroke-dashoffset:calc(1295px - (1295px * var(--closing-line-draw,0)))}
.story-lines--closing .draw-m{stroke:rgba(81,122,215,.22);stroke-width:1;stroke-dasharray:920;stroke-dashoffset:calc(920px - (920px * var(--closing-line-draw,0)))}
.story-lines--closing .draw-n{stroke-dasharray:518;stroke-dashoffset:calc(518px - (518px * var(--closing-line-draw,0)))}

html.story-v15 .closing-sticky{
  position:sticky;
  overflow:hidden;
}
html.story-v15 .closing-story .story-lines--closing{
  inset:6% 2% 8%;
  z-index:0;
}
html.story-v15 .closing-art,
html.story-v15 .closing-caption{position:relative;z-index:1}
html.story-v15 .closing-art{
  background:transparent !important;
  box-shadow:none !important;
  filter:none;
  width:min(100%,540px);
}
html.story-v15 .closing-art::before{content:none}
html.story-v15 .closing-art video{
  mix-blend-mode:multiply;
  background:transparent !important;
  object-fit:contain;
  box-shadow:none !important;
}
html.story-v15 .closing-caption .eyebrow{
  letter-spacing:.18em;
}
html.story-v15 .closing-caption h2{
  max-width:8.8ch;
}
html.story-v15 .closing-link{
  margin-top:30px;
}
@media (max-width:800px){
  .story-lines--hero{transform:translate3d(0,calc(var(--hero-line-shift,0px) * .62),0)}
  html.story-v15 .closing-story .story-lines--closing{inset:10% -8% 18%}
  html.story-v15 .closing-art{width:min(100%,350px)}
}


/* v17 — transparent closing ring: no baked rectangle, no blend/mask artifacts. */
html.story-v15 .closing-art,
.closing-story .closing-art{
  background:transparent !important;
  box-shadow:none !important;
  mix-blend-mode:normal !important;
  -webkit-mask-image:none !important;
  mask-image:none !important;
  overflow:visible !important;
}
html.story-v15 .closing-art::before,
.closing-story .closing-art::before{content:none !important;}
html.story-v15 .closing-art video,
.closing-story .closing-art video{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain !important;
  object-position:center;
  background:transparent !important;
  mix-blend-mode:normal !important;
  filter:none !important;
  box-shadow:none !important;
}


/* v18 — restore V2 closing animation look only. */
html.story-v15 .closing-art,
.closing-story .closing-art{
  position:relative;
  width:100%;
  aspect-ratio:1;
  mix-blend-mode:multiply !important;
  pointer-events:none;
  -webkit-mask-image:radial-gradient(ellipse at center,#000 35%,transparent 70%) !important;
  mask-image:radial-gradient(ellipse at center,#000 35%,transparent 70%) !important;
  background:transparent !important;
  overflow:visible !important;
}
html.story-v15 .closing-art video,
.closing-story .closing-art video{
  width:100%;
  height:100%;
  object-fit:cover !important;
  filter:brightness(1.45) contrast(1.01) !important;
  transform:none !important;
  background:transparent !important;
  mix-blend-mode:multiply !important;
}
html.story-v15 .closing-art::before,
.closing-story .closing-art::before{content:none !important;}
@media (max-width:800px){
  html.story-v15 .closing-art,.closing-story .closing-art{width:min(100%,380px);height:290px;aspect-ratio:auto;}
}

.arrow-ico{display:inline-block;width:.95em;height:.95em;vertical-align:-.12em;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.media-ico{display:block;pointer-events:none}
.watch-button .media-ico{width:16px;height:16px;margin-left:2px}
.motion-toggle .media-ico{width:13px;height:13px}

/* Dark mode de fin de page — html.theme-dark est posé par theme-closing.js dès que
   la clôture « Faisons bouger votre produit » occupe l'écran, retiré en remontant.
   Beaucoup de couleurs claires sont codées en dur : en plus des tokens, seules les
   surfaces visibles de la clôture au pied de page sont surchargées. */
body,header{transition:background-color .6s ease,border-color .6s ease,color .6s ease}
.bg-pattern{transition:opacity .6s ease}
html.theme-dark{color-scheme:dark}
html.theme-dark body{background:var(--white);color:var(--ink)}
html.theme-dark .bg-pattern{opacity:0}
/* La barre de navigation a son propre seuil (html.nav-dark) : elle flotte
   au-dessus du contenu et passerait au sombre avant lui si elle suivait
   html.theme-dark. */
html.nav-dark header{background:#070b14e0;border-bottom-color:#1e2635b3}
html.nav-dark .nav-links a:last-of-type{background:var(--ink);color:#070b14}
html.nav-dark .nav-links a:last-of-type:hover{background:#1f5cf5;color:#fff}
html.nav-dark .nav-toggle{background:var(--pale);color:var(--ink)}
html.theme-dark .btn-frame,html.theme-dark .glow-btn,html.theme-dark .contact-panel .lf-submit{background:#1f5cf5;border-color:#1f5cf5;color:#fff}
html.theme-dark .btn-frame:hover,html.theme-dark .glow-btn:hover,html.theme-dark .contact-panel .lf-submit:hover{background:#3a70ff;border-color:#3a70ff}
html.theme-dark .btn-ghost{background:#0e1420d9;color:var(--ink)}
html.theme-dark .motion-toggle{background:#0e1420f2;color:var(--muted);box-shadow:0 7px 22px -14px #000}
/* L'anneau est filmé sur un fond de studio clair, éclairci puis fondu en multiply
   sur le blanc. Sur fond sombre : image inversée (hue-rotate rend au bleu sa
   teinte) fondue en screen — le fond du studio devient noir et disparaît.
   Pas de transition sur ce basculement : un multiply→screen interpolé flasherait.
   !important obligatoire : le bloc « v18 » plus haut verrouille déjà ces propriétés.
   isolation:auto sur .closing-sticky : isolé, le fondu ne voit pas le fond de page
   et le fond de studio resterait peint tel quel. */
html.closing-dark .closing-sticky{isolation:auto}
html.theme-dark .closing-link{border-bottom-color:#6b93ff66}
html.theme-dark .story-lines--closing .draw,html.theme-dark .story-lines--closing .node{stroke:rgba(107,147,255,.42)}
html.theme-dark .contact-panel.glass{background:#0c121ecc;border-color:#1e2a3d;box-shadow:0 35px 85px -55px #000}
html.theme-dark .contact-panel .lf-input,html.theme-dark .contact-panel select{background:var(--white);border-color:#26324a;color:var(--ink)}
html.theme-dark .contact-panel .lf-input::placeholder{color:#7d889b}
html.theme-dark .lf-select select option{background:var(--pale);color:var(--ink)}
html.theme-dark .lf-select select:valid{border-color:#34435f}
html.theme-dark .lf-status.is-error,html.theme-dark .request-summary{background:#16203a;color:#c7d6ff}
html.theme-dark .book-btn{background:var(--pale);border-color:#26324a;color:var(--ink)}
html.theme-dark .book-btn:hover{background:#16203a}
html.theme-dark .contact-email{border-bottom-color:#26324a}
html.theme-dark .contact-links .mail-split,html.theme-dark .contact-links .social-btn{border-color:#26324a}
html.theme-dark .made-by{color:#8a95a8}
@media(prefers-reduced-motion:reduce){body,header,.bg-pattern{transition:none}}

/* Lenis 1.3.26 — règles de vendor lenis.css, intégrées ici pour éviter une requête.
   Le scroll-behavior:smooth natif doit être coupé : il se battrait avec Lenis. */
html.lenis,html.lenis body{height:auto}
html.lenis{scroll-behavior:auto!important}
.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}
.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}
.lenis.lenis-smooth iframe{pointer-events:none}
.lenis.lenis-autoToggle{transition-property:overflow;transition-duration:1ms;transition-behavior:allow-discrete}

/* Lecteur vidéo : origine en haut à gauche pour l'animation FLIP d'experience.js. */
.video-dialog{transform-origin:0 0}

/* Menus déroulants sur mesure du formulaire de contact (form-select.js).
   Le <select> d'origine reste superposé au bouton, invisible : il porte la
   valeur, required et la bulle de validation du navigateur. */
.lf-select .lf-native{position:absolute;inset:0;width:100%;height:100%;opacity:0;pointer-events:none}
.lf-trigger{display:flex;align-items:center;width:100%;min-height:54px;padding:14px 42px 14px 16px;border:1px solid #dce4ef;border-radius:9px;background:#fff;color:#6d788a;font-size:16px;line-height:1.5;text-align:left;cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease,background-color .6s ease,color .2s ease}
.lf-trigger-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lf-select.has-value .lf-trigger{color:var(--ink);border-color:#cfdcf1}
#projetCombo.has-value .lf-trigger{font-weight:500}
.lf-trigger:hover,.lf-select.is-open .lf-trigger{border-color:var(--blue)}
.lf-select.is-open .lf-trigger{box-shadow:0 0 0 4px rgba(21,84,240,.1)}
.lf-select.is-invalid .lf-trigger{border-color:#d64545}
.lf-chevron{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;color:var(--muted);transition:transform .25s cubic-bezier(.22,1,.36,1),color .2s ease}
.lf-select.is-open .lf-chevron{transform:rotate(180deg);color:var(--blue)}
.lf-menu{position:absolute;z-index:20;top:calc(100% + 6px);left:0;right:0;max-height:min(320px,50svh);overflow-y:auto;overscroll-behavior:contain;margin:0;padding:6px;list-style:none;background:#fff;border:1px solid #dce4ef;border-radius:12px;box-shadow:0 24px 50px -24px rgba(16,35,66,.35);opacity:0;visibility:hidden;transform:translateY(-6px) scale(.985);transform-origin:top center;transition:opacity .16s ease,transform .16s ease,visibility 0s linear .16s}
.lf-select.is-open .lf-menu{opacity:1;visibility:visible;transform:none;transition:opacity .2s ease,transform .28s cubic-bezier(.22,1,.36,1),visibility 0s}
.lf-menu [role=option]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:8px;font-size:15px;line-height:1.4;color:var(--ink);cursor:pointer;transition:background-color .12s ease,color .12s ease}
.lf-menu [role=option].is-active{background:#edf4ff;color:var(--blue)}
.lf-menu [role=option][aria-selected=true]{font-weight:550}
.lf-menu [role=option][aria-selected=true]::after{content:"";flex-shrink:0;width:14px;height:14px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
html.theme-dark .lf-trigger{background:var(--white);border-color:#26324a;color:#7d889b}
html.theme-dark .lf-select.has-value .lf-trigger{color:var(--ink);border-color:#34435f}
html.theme-dark .lf-trigger:hover,html.theme-dark .lf-select.is-open .lf-trigger{border-color:var(--blue)}
html.theme-dark .lf-select.is-open .lf-trigger{box-shadow:0 0 0 4px rgba(107,147,255,.14)}
html.theme-dark .lf-menu{background:var(--pale);border-color:#26324a;box-shadow:0 24px 50px -20px #000}
html.theme-dark .lf-menu [role=option].is-active{background:#16203a;color:#c7d6ff}
@media(prefers-reduced-motion:reduce){.lf-menu,.lf-select.is-open .lf-menu,.lf-chevron,.lf-trigger{transition:none}}

/* Dark mode — passage global. Le bloc plus haut ne couvrait que la clôture et le
   pied de page ; les surfaces claires du reste du site (hero, travaux, offres,
   avis, tarifs, bandeaux) sont codées en dur et ignoraient les tokens. Ici, tout
   ce qui reste peint en blanc/gris pâle est ramené sur la palette sombre.
   Placé en fin de fichier : même spécificité gagnée par l'ordre source. */
html.theme-dark .bg-pattern{opacity:1;background:radial-gradient(ellipse at 15% 20%,#0d1626 0%,transparent 38%),radial-gradient(ellipse at 82% 75%,#0b1322 0%,transparent 38%),var(--white)}
/* Le showreel de fond est fondu en multiply sur blanc : sur fond sombre il
   assombrirait tout. screen + léger voile sombre à la place. */
html.theme-dark .background-stage{mix-blend-mode:screen}
html.theme-dark .background-stage:after,
html.theme-dark .hero .background-stage:after,
html.theme-dark.gsap-ready.hero-pinned .background-stage:after,
html.theme-dark.story-v15 .hero .background-stage::after{background:linear-gradient(90deg,var(--white) 0%,#070b14ee 32%,#070b1400 69%)}

/* Surfaces vitrées et cartes */
html.theme-dark .reel-object,html.theme-dark .glass,html.theme-dark .media{background:#0c121ebf;border-color:#1e2a3d;box-shadow:inset 0 1px 0 #ffffff14,0 20px 60px -35px #000}
html.theme-dark .reel-object{box-shadow:inset 0 1px 0 #ffffff14,0 35px 85px -42px #000}
html.theme-dark .reel-object:after{background:radial-gradient(ellipse at var(--light-x,50%) var(--light-y,20%),#ffffff1a,transparent 48%)}
html.theme-dark .vp-reel{background:#060a12}
html.theme-dark .portfolio-grid .media,html.theme-dark.cinema-ready .portfolio-grid .media{background:#0b111c;border-color:#1e2a3d;box-shadow:0 12px 35px -28px #000}
html.theme-dark .clients-strip{background:var(--white);border-bottom-color:var(--line)}
html.theme-dark .benefit-column{background:var(--pale);border-color:#1e2a3d}
html.theme-dark .benefit-column.with-video{background:linear-gradient(145deg,#101a2e,#0b1426);border-color:#24406f}
html.theme-dark .avis-card,html.theme-dark .reviews-group .avis-card,html.theme-dark .reviews-group .avis-card:first-child{background:#0c121ec9;border-color:#1e2a3d;box-shadow:0 16px 45px -36px #000}
html.theme-dark .price-card{background:#0c121ec9;border-color:#1e2a3d}
html.theme-dark .price-card.featured{background:#1f5cf5;border-color:#1f5cf5;color:#fff}
html.theme-dark .offer-config{background:linear-gradient(145deg,#0e1420,#0a1120);border-color:#1e2a3d;box-shadow:0 25px 75px -55px #000}
html.theme-dark .offer-option{border-bottom-color:#1e2a3d}
html.theme-dark .offer-option:hover{background:#101a2e;border-color:#243349}
html.theme-dark .option-switch{background:#243049}
html.theme-dark .option-switch:after{background:#dbe3ef}
html.theme-dark .marquee-pause:hover{background:#101a2e;border-color:#2b3c58}
html.theme-dark .section-head .eyebrow:before{color:#6d7a8e}
html.nav-dark .mobile-menu.is-open{background:var(--white);border-top-color:var(--line)}

/* Rubans (avis + logos clients) — boucle infinie pilotée par revision.js
   (transform). Les animations CSS d'origine (`zensu-reviews-loop`, `client-loop`)
   supposaient exactement deux groupes et translataient de -50% : dès qu'un
   groupe ne remplissait pas l'écran, un trou apparaissait en fin de cycle ; sur
   les avis, elles se superposaient en plus au défilement JS. Le JS est désormais
   seul maître et clone les groupes ; la fenêtre des avis ne défile plus à la
   main (le scrollLeft fausserait l'offset). La pause au survol des logos est
   reprise en JS. */
.reviews-track,.client-track{animation:none!important}
.client-marquee{overflow:hidden}
.reviews-window{overflow:hidden!important;cursor:default;padding-left:0;padding-right:0}
html.theme-dark .reviews-window{scrollbar-color:#2b3c58 transparent}
@media(prefers-reduced-motion:reduce){
  .reviews-window{overflow-x:auto!important}
  .reviews-track,.client-track{transform:none!important}
}

/* Le bloc « v15 » repeint en blanc opaque non seulement body mais aussi .wrap,
   .hero, .clients-strip et .closing-story : ces calques masquaient le fond
   sombre et la page restait blanche sous un header déjà passé en dark. */
html.theme-dark body,
html.theme-dark .wrap,
html.theme-dark .hero,
html.theme-dark .clients-strip,
html.theme-dark .closing-story{background-color:var(--white)}

/* Passage progressif au sombre — theme-closing.js écrit --dark-p (0 → 1) au fil
   du scroll sur la clôture, et ne pose html.theme-dark qu'au-delà de la moitié.
   Les tokens sont interpolés en continu par color-mix : tout ce qui les utilise
   se teinte progressivement, sans palier. Les surfaces encore codées en dur
   basculent, elles, avec la classe — d'où la transition de 600 ms ci-dessous,
   qui tombe au milieu du fondu des tokens. */
:root{
  --dark-p:0;
  --white:color-mix(in srgb,#fff,#070b14 calc(var(--dark-p) * 100%));
  --pale:color-mix(in srgb,#f5f7fa,#0e1420 calc(var(--dark-p) * 100%));
  --ink:color-mix(in srgb,#141b2b,#edf1f8 calc(var(--dark-p) * 100%));
  --muted:color-mix(in srgb,#626d80,#9ba6b9 calc(var(--dark-p) * 100%));
  --line:color-mix(in srgb,#e2e6ed,#1e2635 calc(var(--dark-p) * 100%));
  --blue:color-mix(in srgb,#1554f0,#6b93ff calc(var(--dark-p) * 100%));
}
body,header,.wrap,.hero,.clients-strip,.closing-story,
.reel-object,.glass,.media,.portfolio-grid .media,
.benefit-column,.avis-card,.reviews-group .avis-card,.price-card,
.offer-config,.offer-option,.option-switch,.marquee-pause,
.contact-panel,.lf-input,.lf-trigger,.lf-menu,.book-btn,
.btn-frame,.glow-btn,.btn-ghost,.nav-toggle,.motion-toggle,
.bg-pattern,#process .step-d,.vp-reel{
  transition:background-color .6s ease,background-image .6s ease,border-color .6s ease,color .6s ease,box-shadow .6s ease;
}
@media(prefers-reduced-motion:reduce){
  body,header,.wrap,.hero,.clients-strip,.closing-story,
  .reel-object,.glass,.media,.portfolio-grid .media,
  .benefit-column,.avis-card,.reviews-group .avis-card,.price-card,
  .offer-config,.offer-option,.option-switch,.marquee-pause,
  .contact-panel,.lf-input,.lf-trigger,.lf-menu,.book-btn,
  .btn-frame,.glow-btn,.btn-ghost,.nav-toggle,.motion-toggle,
  .bg-pattern,#process .step-d,.vp-reel{transition:none}
}

/* Anneau de clôture — deux traitements superposés, fondus l'un dans l'autre.
   La vidéo n'a pas de couche alpha : son fond de studio est retiré par un mode
   de fusion, et aucun des deux modes n'est juste sur les deux fonds — multiply
   sur page sombre dessine un halo noir, screen sur page claire efface l'anneau.
   Une seule couche devait donc s'effacer au passage. Deux couches, non : la
   copie sombre (screen, image inversée) monte pendant que l'originale (multiply)
   descend, sur --closing-dark-w écrit par theme-closing.js. L'anneau reste
   visible d'un bout à l'autre.
   La fusion est portée par les vidéos elles-mêmes et non par le conteneur :
   sinon les deux couches se mélangeraient entre elles avant d'atteindre la page.
   !important : le bloc « v18 » plus haut verrouille déjà ces propriétés. */
.closing-story .closing-art{opacity:1;mix-blend-mode:normal!important;isolation:auto}
.closing-story .closing-art #closingFilm{mix-blend-mode:multiply!important;opacity:calc(1 - var(--closing-dark-w,0))}
.closing-story .closing-art .closing-film-alt{position:absolute;inset:0;width:100%;height:100%;object-fit:cover!important;pointer-events:none;mix-blend-mode:screen!important;filter:brightness(1.48) contrast(1.015) invert(1) hue-rotate(180deg)!important;opacity:var(--closing-dark-w,0)}

/* Pas de lueur derrière l'anneau : ni le halo bleu (--closing-glow-opacity,
   déjà neutralisé par le bloc v18 mais la variable restait pilotée), ni l'ombre
   portée bleutée du conteneur, qui se lisait comme une nappe sur fond sombre. */
.closing-story .closing-art{filter:none!important}
.closing-story .closing-art::before{content:none!important}

/* La lueur restante n'est pas un décor : c'est le fond de studio du clip, un
   dégradé clair autour de l'anneau. multiply ne l'efface que s'il atteint le
   blanc pur (et screen, après inversion, que s'il atteint le noir pur) — or il
   s'arrête à un gris clair. Le gain ci-dessous le pousse au blanc ; l'anneau,
   bien plus sombre et saturé, y survit. Les deux couches partagent le même
   étalonnage, la copie sombre l'inverse ensuite. */
.closing-story .closing-art #closingFilm{filter:brightness(1.9) contrast(1.28)!important}
.closing-story .closing-art .closing-film-alt{filter:brightness(1.9) contrast(1.28) invert(1) hue-rotate(180deg)!important}
