/* 2cafés — proposition d'accueil, studio web */
:root{
  --ink:#0e0d0c; --ink-2:#161412; --ink-3:#1f1c19;
  --paper:#f4f1ec; --paper-2:#e9e4dc; --paper-3:#fbfaf7;
  --accent:#f26b2a; --accent-2:#ff8a4f; --cream:#f3d9b8;
  --dim:#a39b90; --muted:#6b645c;
  --line-d:rgba(244,241,236,.12); --line-l:rgba(14,13,12,.12);
  --sans:'Geist',system-ui,-apple-system,sans-serif; --serif:'Instrument Serif',Georgia,serif; --mono:'Geist Mono',ui-monospace,monospace;
  --gut:clamp(20px,4.6vw,80px);
  --ease:cubic-bezier(.19,1,.22,1); --ease-2:cubic-bezier(.65,0,.35,1);
  --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .05 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
*{box-sizing:border-box}
.anchor{display:block;position:relative;top:-90px;height:0}
html{scroll-behavior:smooth;scroll-padding-top:90px;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ink);color:var(--paper);font:400 17px/1.6 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
main{overflow-x:clip}
img,svg,canvas{display:block;max-width:100%}
a{color:inherit}
h1,h2,h3,p{margin:0}
em{font-family:var(--serif);font-style:italic;font-weight:400;letter-spacing:-.01em}
button{font:inherit;color:inherit;cursor:pointer}
::selection{background:var(--accent);color:#fff}
:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:6px}
.skip{position:fixed;left:12px;top:-60px;z-index:300;background:var(--paper);color:var(--ink);padding:10px 16px;border-radius:30px;text-decoration:none}
.skip:focus{top:12px}

/* marque */
.mark{position:relative;display:inline-block;width:30px;height:18px;flex:none}
.mark i{position:absolute;top:0;width:18px;height:18px;border-radius:50%}
.mark i:first-child{left:0;background:var(--accent)}
.mark i:last-child{right:0;border:2px solid currentColor;mix-blend-mode:normal}

/* boutons */
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:14px;min-height:56px;padding:0 28px;border-radius:60px;font:500 15px var(--sans);letter-spacing:-.01em;text-decoration:none;border:1px solid transparent;overflow:hidden;isolation:isolate;transition:color .5s var(--ease),border-color .5s,transform .4s var(--ease)}
.btn:before{content:'';position:absolute;inset:0;border-radius:inherit;transform:translateY(101%);transition:transform .6s var(--ease);z-index:-1}
.btn:hover:before{transform:none}
.btn-ic{position:relative;width:26px;height:26px;border-radius:50%;background:currentColor;flex:none}
.btn-ic:after{content:'';position:absolute;inset:0;background:var(--btn-bg,var(--accent));-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 26 26'%3E%3Cpath d='M9 17L17 9M11 9h6v6' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 26 26'%3E%3Cpath d='M9 17L17 9M11 9h6v6' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/100% no-repeat;transition:transform .5s var(--ease)}
.btn:hover .btn-ic:after{transform:rotate(45deg)}
.btn-accent{background:var(--accent);color:var(--ink);--btn-bg:var(--accent)}
.btn-accent:before{background:var(--paper)}
.btn-accent:hover{--btn-bg:var(--paper)}
.btn-line{border-color:rgba(244,241,236,.35);color:var(--paper)}
.btn-line:before{background:var(--paper)}
.btn-line:hover{color:var(--ink);border-color:var(--paper)}
.btn-dark{background:var(--ink);color:var(--paper);--btn-bg:var(--ink)}
.btn-dark:before{background:var(--accent)}
.btn-dark:hover{color:var(--ink);--btn-bg:var(--accent)}
.label{font:500 12px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.label-light{color:var(--dim)}
.h2{font:500 clamp(40px,5.4vw,88px)/1 var(--sans);letter-spacing:-.045em;margin-top:22px;max-width:14ch}
.h2 em{font-size:1.06em;color:var(--accent)}
.h2-dark{color:var(--ink)}
.pulse{display:inline-block;width:8px;height:8px;border-radius:50%;background:#43d17a;box-shadow:0 0 0 0 rgba(67,209,122,.6);animation:pulse 2s infinite}
@keyframes pulse{70%{box-shadow:0 0 0 10px rgba(67,209,122,0)}100%{box-shadow:0 0 0 0 rgba(67,209,122,0)}}

/* chargement */
.loader{position:fixed;inset:0;z-index:250;background:var(--ink);display:none;align-items:center;justify-content:center;overflow:hidden}
.js .loader.is-on{display:flex}
.ld-center{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center}
.ld-mark{width:min(200px,42vw);overflow:visible}
.ld-a,.ld-b{fill:transparent;stroke:var(--paper);stroke-width:1.6;stroke-dasharray:100;stroke-dashoffset:100}
.ld-a{animation:ld-draw .9s var(--ease-2) .1s forwards,ld-in-a .8s var(--ease) .75s both,ld-fill .5s ease 1.3s forwards}
.ld-b{animation:ld-draw .9s var(--ease-2) .2s forwards,ld-in-b .8s var(--ease) .75s both}
.ld-lens{fill:var(--cream);opacity:0;animation:ld-lens .7s var(--ease) 1.45s forwards}
@keyframes ld-draw{to{stroke-dashoffset:0}}
@keyframes ld-in-a{from{transform:translateX(-34px)}to{transform:none}}
@keyframes ld-in-b{from{transform:translateX(34px)}to{transform:none}}
@keyframes ld-fill{to{fill:var(--accent);stroke:var(--accent)}}
@keyframes ld-lens{0%{opacity:0;filter:brightness(2.2)}40%{opacity:1}100%{opacity:1;filter:none}}
.ld-word{display:flex;align-items:baseline;margin-top:26px;font:600 clamp(46px,7vw,86px)/1 var(--sans);letter-spacing:-.06em;color:var(--paper)}
.ld-2{font:italic 400 1.34em/.8 var(--serif);color:var(--accent);margin-right:.03em;letter-spacing:0;display:inline-block;animation:ld-two .9s var(--ease) 1.25s both}
@keyframes ld-two{from{opacity:0;transform:translateY(.4em) rotate(-18deg)}to{opacity:1;transform:none}}
.ld-l{display:inline-flex;overflow:hidden;padding-bottom:.08em}
.ld-l i{font-style:normal;display:inline-block;animation:ld-up .8s var(--ease) both}
.ld-l i:nth-child(1){animation-delay:1.4s}.ld-l i:nth-child(2){animation-delay:1.46s}.ld-l i:nth-child(3){animation-delay:1.52s}.ld-l i:nth-child(4){animation-delay:1.58s}.ld-l i:nth-child(5){animation-delay:1.64s}
@keyframes ld-up{from{transform:translateY(110%)}to{transform:none}}
.ld-tag{display:flex;gap:18px;margin-top:18px;font:500 11px var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}
.ld-tag span{opacity:0;animation:ld-fade .6s ease 1.8s forwards}
.ld-tag span+span{animation-delay:1.95s}
.ld-tag span+span:before{content:'';display:inline-block;width:4px;height:4px;border-radius:50%;background:var(--accent);margin-right:18px;vertical-align:middle;transform:translateY(-2px)}
@keyframes ld-fade{to{opacity:1}}
.ld-count{position:absolute;right:var(--gut);bottom:28px;z-index:1;font:500 clamp(40px,6vw,90px)/1 var(--sans);letter-spacing:-.05em;color:rgba(244,241,236,.14);font-variant-numeric:tabular-nums}
.ld-corner{position:absolute;left:var(--gut);bottom:34px;z-index:1;font:500 11px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:#6f675e}
.ld-flood{position:absolute;left:50%;top:50%;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:var(--accent);transform:scale(0);z-index:2}
.loader.is-flood .ld-flood{transform:scale(400);transition:transform .85s cubic-bezier(.7,0,.25,1)}
.loader.is-out{transform:translateY(-100%);transition:transform 1s cubic-bezier(.76,0,.24,1)}
.loader.is-out .ld-flood{border-radius:0 0 50% 50%/0 0 12% 12%}

/* logo */
.mk{width:34px;height:22px;flex:none;overflow:visible}
.mk-a{fill:var(--accent)}
.mk-l{fill:var(--cream)}
.mk-b{fill:none;stroke:currentColor;stroke-width:2.6}
.lg{display:inline-flex;align-items:baseline}
.lg-2{font-family:var(--serif);font-style:italic;font-weight:400;color:var(--accent);font-size:1.32em;line-height:.8;margin-right:.03em;letter-spacing:0}
.lg-w{font-weight:600;letter-spacing:-.05em}
.brand{gap:12px}
.brand:hover .mk-a{animation:mk-pulse .6s var(--ease)}
@keyframes mk-pulse{50%{transform:translateX(3px)}}

/* curseur */
.cursor{position:fixed;left:0;top:0;z-index:240;pointer-events:none;width:0;height:0;display:none;opacity:0;transition:opacity .3s;mix-blend-mode:difference}
.cursor.is-on{opacity:1}
.cursor i{position:absolute;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--paper);mix-blend-mode:difference;transition:width .4s var(--ease),height .4s var(--ease),margin .4s var(--ease)}
.cursor.is-link i{width:64px;height:64px;margin:-32px 0 0 -32px}
@media (pointer:fine){.js .cursor{display:block}}

/* en-tête */
.head{position:fixed;left:50%;top:18px;z-index:100;transform:translateX(-50%);width:min(1180px,calc(100% - 24px));display:flex;align-items:center;gap:22px;padding:10px 10px 10px 22px;border-radius:60px;background:rgba(22,20,18,.62);-webkit-backdrop-filter:blur(18px) saturate(1.4);backdrop-filter:blur(18px) saturate(1.4);border:1px solid var(--line-d);transition:transform .6s var(--ease),background .4s}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font:600 19px var(--sans);letter-spacing:-.04em;color:var(--paper)}
.nav{display:flex;gap:6px;margin-left:auto}
.nav a{position:relative;padding:10px 16px;border-radius:30px;font-size:14px;text-decoration:none;color:#d8d2c9;transition:background .3s,color .3s}
.nav a:hover,.nav a.is-here{background:rgba(244,241,236,.08);color:var(--paper)}
.head-cta{display:inline-flex;align-items:center;gap:10px;padding:12px 14px 12px 20px;border-radius:40px;background:var(--paper);color:var(--ink);text-decoration:none;font-weight:500;font-size:14px;transition:background .3s}
.head-cta i{width:8px;height:8px;border-radius:50%;background:var(--accent);transition:transform .4s var(--ease)}
.head-cta:hover{background:var(--accent)}
.head-cta:hover i{transform:scale(1.6);background:var(--ink)}
.burger{display:none;width:44px;height:44px;border:0;border-radius:50%;background:var(--paper);padding:13px}
.burger i{display:block;height:1.5px;background:var(--ink);margin:5px 0;transition:transform .3s var(--ease)}
.burger[aria-expanded=true] i:first-child{transform:translateY(3.3px) rotate(45deg)}
.burger[aria-expanded=true] i:last-child{transform:translateY(-3.3px) rotate(-45deg)}
.mnav{position:fixed;inset:86px 12px auto;z-index:99;background:var(--ink-2);border:1px solid var(--line-d);border-radius:26px;padding:10px 22px 18px}
.mnav a{display:block;padding:16px 0;border-bottom:1px solid var(--line-d);font:500 24px var(--sans);letter-spacing:-.03em;text-decoration:none}
.mnav .mnav-cta{color:var(--accent);border:0}

/* héro */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;padding:140px var(--gut) clamp(40px,6vh,70px);overflow:hidden;background:radial-gradient(120% 90% at 78% 30%,#1c1714 0%,var(--ink) 60%)}
.hero-grain{position:absolute;inset:0;background:var(--grain);pointer-events:none;opacity:.9}
.hero-inner{position:relative;z-index:2;max-width:1400px;width:100%;margin:0 auto}
.eyebrow{display:flex;align-items:center;gap:12px;font:500 12px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--dim);opacity:0;transition:opacity 1s .2s}
.hero-title{font:500 clamp(46px,5.5vw,104px)/.94 var(--sans);max-width:52%;letter-spacing:-.055em;margin:26px 0 clamp(34px,5vh,56px)}
.hero-title em{color:var(--accent);font-size:1.08em;padding-right:.05em}
.l{display:block;overflow:hidden;padding-bottom:.07em;margin-bottom:-.07em}
.l>span{display:inline-block;transform:translateY(110%) rotate(3deg);transform-origin:left bottom;transition:transform 1.3s var(--ease)}
.hero-title .l:nth-child(2)>span{transition-delay:.07s}.hero-title .l:nth-child(3)>span{transition-delay:.14s}.hero-title .l:nth-child(4)>span{transition-delay:.21s}
.is-ready .hero .l>span{transform:none}
.hero-foot{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:28px 40px;padding-top:30px;border-top:1px solid var(--line-d);opacity:0;transform:translateY(20px);transition:opacity 1s .5s,transform 1.2s var(--ease) .5s}
.hero-lede{max-width:500px;color:#d8d2c9;font-size:clamp(16px,1.25vw,19px)}
.hero-actions{display:flex;flex-wrap:wrap;gap:12px}
.is-ready .eyebrow{opacity:1}
.is-ready .hero-foot{opacity:1;transform:none}
.scroll-cue{position:absolute;right:var(--gut);top:50%;z-index:2;width:1px;height:90px;background:var(--line-d);overflow:hidden}
.scroll-cue span{position:absolute;left:0;top:0;width:1px;height:40%;background:var(--paper);animation:cue 2.2s var(--ease-2) infinite}
@keyframes cue{from{transform:translateY(-100%)}to{transform:translateY(260%)}}

/* bandeau */
.ticker{display:flex;align-items:center;gap:30px;border-block:1px solid var(--line-d);background:var(--ink);overflow:hidden;padding:0 0 0 var(--gut)}
.ticker-label{flex:none;font:500 11px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--dim);padding:26px 26px 26px 0;border-right:1px solid var(--line-d);background:var(--ink);position:relative;z-index:1}
.ticker-track{display:flex;gap:56px;width:max-content;animation:tick 50s linear infinite}
.ticker-track span{font:400 clamp(20px,1.9vw,28px) var(--serif);font-style:italic;color:#d8d2c9;white-space:nowrap}
.ticker-track span:before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);margin-right:56px;vertical-align:middle;transform:translateY(-2px)}
@keyframes tick{to{transform:translateX(-50%)}}

/* manifeste */
.intro-sec{background:var(--paper);color:var(--ink);padding:clamp(100px,12vw,190px) var(--gut) clamp(90px,10vw,150px);border-radius:36px 36px 0 0;margin-top:-1px}
.statement{font:500 clamp(30px,3.9vw,64px)/1.1 var(--sans);letter-spacing:-.04em;max-width:1200px;margin-top:30px}
.statement .w{color:rgba(14,13,12,.14);transition:color .4s}
.statement .w.on{color:var(--ink)}
.statement .w.acc{font-family:var(--serif);font-style:italic;font-weight:400}
.statement .w.acc.on{color:var(--accent)}
.statement .two{font-family:var(--serif);font-style:italic;font-weight:400;font-size:1.12em;line-height:.8;margin-right:.02em;transition:color .4s}
.statement .w.on .two{color:var(--accent)}
.facts{list-style:none;margin:clamp(70px,8vw,120px) 0 0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:0}
.facts li{padding:28px 28px 0 0;border-top:1px solid var(--line-l);display:flex;flex-direction:column;gap:10px}
.facts li+li{padding-left:28px;border-left:1px solid var(--line-l)}
.facts b{font:500 20px var(--sans);letter-spacing:-.03em}
.facts span{color:var(--muted);font-size:15px;max-width:260px}

/* services */
.services{position:relative;padding:clamp(100px,11vw,170px) var(--gut);background:var(--ink)}
.svc-head{max-width:1400px;margin:0 auto clamp(50px,6vw,80px)}
.svc-list{list-style:none;padding:0;margin:0 auto;max-width:1400px;border-top:1px solid var(--line-d)}
.svc{border-bottom:1px solid var(--line-d)}
.svc-row{width:100%;display:grid;grid-template-columns:80px 1fr auto 44px;align-items:center;gap:20px;padding:clamp(22px,2.6vw,36px) 0;background:none;border:0;text-align:left;transition:padding .5s var(--ease)}
.svc-n{font:500 13px var(--mono);color:var(--dim)}
.svc-t{font:500 clamp(28px,3.6vw,58px)/1 var(--sans);letter-spacing:-.045em;transition:transform .6s var(--ease),color .4s}
.svc-p{font:400 14px var(--mono);color:var(--dim);white-space:nowrap}
.svc-x{position:relative;width:44px;height:44px;border-radius:50%;border:1px solid var(--line-d);transition:background .4s,border-color .4s,transform .5s var(--ease)}
.svc-x:before,.svc-x:after{content:'';position:absolute;left:14px;right:14px;top:21px;height:1.5px;background:currentColor}
.svc-x:after{transform:rotate(90deg);transition:transform .5s var(--ease)}
.svc-row:hover .svc-t{transform:translateX(14px);color:var(--accent)}
.svc-row:hover .svc-x{background:var(--paper);color:var(--ink);border-color:var(--paper)}
.svc-row[aria-expanded=true] .svc-x{background:var(--accent);border-color:var(--accent);color:var(--ink)}
.svc-row[aria-expanded=true] .svc-x:after{transform:rotate(0)}
.svc-body{display:grid;grid-template-columns:80px minmax(0,640px) 1fr;gap:20px;overflow:hidden;max-height:0;transition:max-height .7s var(--ease)}
.svc-body p{grid-column:2;color:#d8d2c9;font-size:17px}
.svc-body ul{grid-column:3;list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px;align-content:flex-start;justify-content:flex-end}
.svc-body li{font:400 12px var(--mono);letter-spacing:.04em;padding:8px 14px;border-radius:30px;border:1px solid var(--line-d);color:var(--dim)}
.svc-go{grid-column:2;display:flex;flex-wrap:wrap;gap:8px 22px}
.svc-go a{font-weight:500;font-size:15px;text-decoration:none;color:var(--paper);border-bottom:1px solid rgba(242,107,42,.5);padding-bottom:2px;transition:color .3s,border-color .3s}
.svc-go a:after{content:' →';color:var(--accent)}
.svc-go a:hover{color:var(--accent);border-color:var(--accent)}
.svc.is-open .svc-body{max-height:420px}
.svc.is-open .svc-body{padding-bottom:34px}
.preview{position:fixed;left:0;top:0;z-index:40;width:380px;aspect-ratio:16/10;pointer-events:none;border-radius:14px;overflow:hidden;opacity:0;transform:translate(-50%,-50%) scale(.85);transition:opacity .4s,transform .5s var(--ease);box-shadow:0 30px 60px rgba(0,0,0,.5)}
.preview.is-on{opacity:1;transform:translate(-50%,-50%) scale(1)}
.pv{position:absolute;inset:0;opacity:0;transition:opacity .35s}
.pv.is-on{opacity:1}
.pv img{width:100%;height:100%;object-fit:cover;object-position:top}
.pv-panel{background:var(--paper);color:var(--ink);padding:22px 24px}
.pv-title{font:500 12px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:10px}
.pv-panel ul{list-style:none;margin:0;padding:0}
.pv-panel li{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--line-l);font-size:14px}
.pv-panel li:before{content:'';width:14px;height:14px;border-radius:50%;background:#43d17a url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M3.5 7.2l2.3 2.2 4.7-5' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");flex:none}

/* travaux */
.work{background:var(--paper);color:var(--ink);padding:clamp(100px,11vw,170px) var(--gut) clamp(90px,10vw,140px);border-radius:36px 36px 0 0}
.work-head{max-width:1400px;margin:0 auto clamp(50px,6vw,90px);display:grid;grid-template-columns:1fr minmax(0,420px);align-items:end;gap:30px}
.work-head .label{grid-column:1/-1}
.work-head .h2{margin-top:0}
.work-lede{color:var(--muted);font-size:17px}
.stack{max-width:1400px;margin:0 auto}
.case{position:sticky;top:calc(96px + var(--i) * 16px);display:grid;grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr);gap:clamp(24px,3vw,50px);align-items:stretch;background:var(--paper-3);border:1px solid var(--line-l);border-radius:28px;padding:clamp(20px,2.4vw,34px);margin-bottom:clamp(40px,6vh,70px);box-shadow:0 -20px 50px -30px rgba(14,13,12,.25);transform-origin:center top;will-change:transform}
.case-info{display:flex;flex-direction:column;padding:10px 4px}
.case-n{font:500 12px var(--mono);letter-spacing:.1em;color:var(--muted)}
.case h3{font:500 clamp(30px,3.2vw,52px)/1 var(--sans);letter-spacing:-.045em;margin:auto 0 14px;padding-top:40px}
.case-sector{font:400 13px var(--mono);color:var(--accent);letter-spacing:.02em}
.case-desc{color:var(--muted);margin-top:16px;max-width:380px}
.case-link{align-self:flex-start;margin-top:28px;display:inline-flex;align-items:center;gap:10px;font-weight:500;text-decoration:none;padding-bottom:4px;border-bottom:1px solid currentColor;transition:color .3s,gap .4s var(--ease)}
.case-link:after{content:'↗'}
.case-link:hover{color:var(--accent);gap:16px}
.case-shot{position:relative;margin:0;border-radius:18px;overflow:hidden;background:var(--ink-3);aspect-ratio:16/10;padding-top:28px}
.case-shot .dots{position:absolute;left:14px;top:10px;display:flex;gap:6px}
.case-shot .dots,.case-shot .dots:before,.case-shot .dots:after{width:9px;height:9px;border-radius:50%;background:#3a3531}
.case-shot .dots:before,.case-shot .dots:after{content:'';position:absolute;top:0}
.case-shot .dots:before{left:15px}.case-shot .dots:after{left:30px}
.case-shot img{width:100%;height:100%;object-fit:cover;object-position:top;transition:transform 1.4s var(--ease)}
.case:hover .case-shot img{transform:scale(1.03)}
.work-more{text-align:center;margin-top:20px}

/* maintenance */
.maint{background:var(--ink);padding:clamp(100px,11vw,170px) var(--gut)}
.maint-head{max-width:1400px;margin:0 auto clamp(50px,6vw,80px);display:grid;grid-template-columns:1fr minmax(0,440px);align-items:end;gap:30px}
.maint-head .label{grid-column:1/-1}
.maint-head .h2{max-width:16ch;margin-top:0}
.maint-lede{color:#d8d2c9}
.plans{max-width:1400px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr 1.1fr;gap:16px}
.plan{position:relative;display:flex;flex-direction:column;background:var(--ink-2);border:1px solid var(--line-d);border-radius:28px;padding:34px 30px 30px;transition:transform .6s var(--ease),border-color .4s}
.plan:hover{transform:translateY(-6px);border-color:rgba(244,241,236,.3)}
.plan-hi{background:linear-gradient(160deg,#2a1b12 0%,var(--ink-2) 60%);border-color:rgba(242,107,42,.45)}
.plan-tag{position:absolute;top:22px;right:22px;font:500 11px var(--mono);letter-spacing:.06em;color:var(--ink);background:var(--accent);padding:6px 12px;border-radius:30px}
.plan-name{font:500 14px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.plan-price{display:flex;align-items:flex-end;gap:12px;margin:24px 0 28px;padding-bottom:28px;border-bottom:1px solid var(--line-d)}
.plan-price b{font:500 clamp(70px,7vw,112px)/.8 var(--sans);letter-spacing:-.06em}
.plan-price span{font:400 13px/1.4 var(--mono);color:var(--dim);padding-bottom:4px}
.plan ul{list-style:none;margin:0 0 30px;padding:0;display:flex;flex-direction:column;gap:12px;flex:1}
.plan li{display:flex;gap:12px;color:#d8d2c9;font-size:15.5px}
.plan li:before{content:'';flex:none;width:16px;height:16px;margin-top:4px;border-radius:50%;border:1px solid var(--accent);background:radial-gradient(circle,var(--accent) 0 3px,transparent 3.5px)}
.plan .btn{width:100%}
.monitor{background:var(--paper);color:var(--ink);border-radius:28px;padding:28px 28px 22px;display:flex;flex-direction:column}
.mon-title{display:flex;align-items:center;gap:10px;font:500 12px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.mon-log{list-style:none;margin:18px 0 0;padding:0;flex:1}
.mon-log li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line-l);font-size:15px;opacity:.25;transition:opacity .5s}
.mon-log li i{width:20px;height:20px;border-radius:50%;border:1.5px solid var(--line-l);flex:none;position:relative;transition:background .4s,border-color .4s}
.mon-log li.done{opacity:1}
.mon-log li.done i{background:#2fb866;border-color:#2fb866}
.mon-log li.done i:after{content:'';position:absolute;left:6px;top:3px;width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.mon-chart{width:100%;height:70px;margin-top:18px}
.mon-chart path{fill:none;stroke:var(--accent);stroke-width:2;stroke-dasharray:420;stroke-dashoffset:420;transition:stroke-dashoffset 2.4s var(--ease)}
.monitor.in .mon-chart path{stroke-dashoffset:0}
.mon-note{font:400 11px var(--mono);color:var(--muted);margin-top:8px}

/* méthode */
.process{background:var(--paper);color:var(--ink);padding:clamp(100px,11vw,170px) var(--gut);border-radius:36px 36px 0 0}
.proc-head{max-width:1400px;margin:0 auto clamp(60px,7vw,100px)}
.proc{position:relative;max-width:1400px;margin:0 auto}
.proc-line{position:absolute;left:0;right:0;top:22px;height:1px;background:var(--line-l)}
.proc-line i{display:block;height:100%;background:var(--accent);transform-origin:left;transform:scaleX(0)}
.proc-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,1fr);gap:24px}
.proc-steps li{position:relative;padding-top:66px}
.ps-n{position:absolute;top:0;left:0;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--paper);border:1px solid var(--line-l);font:500 12px var(--mono);transition:background .5s,color .5s,border-color .5s}
.proc-steps li.on .ps-n{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.proc-steps h3{font:500 26px var(--sans);letter-spacing:-.04em;margin-bottom:10px}
.proc-steps p{color:var(--muted);font-size:15.5px}

/* studio */
.studio{background:var(--ink);padding:clamp(100px,11vw,170px) var(--gut);text-align:center}
.studio .h2{margin:22px auto 0;max-width:15ch}
.duo{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:clamp(20px,3vw,50px);max-width:1100px;margin:clamp(60px,7vw,100px) auto 0;text-align:left}
.partner{background:var(--ink-2);border:1px solid var(--line-d);border-radius:28px;padding:34px 32px 36px;transition:transform .6s var(--ease),border-color .4s}
.partner:hover{transform:translateY(-6px);border-color:rgba(244,241,236,.3)}
.partner-mono{width:96px;height:96px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:var(--ink);font:italic 400 62px/1 var(--serif);margin-bottom:34px}
.partner-mono-2{background:transparent;border:1.5px solid var(--paper);color:var(--paper)}
.partner h3{font:500 40px/1 var(--sans);letter-spacing:-.045em}
.partner-role{font:400 13px var(--mono);color:var(--accent);margin:12px 0 18px}
.partner p:last-child{color:#d8d2c9;font-size:16px}
.duo-mark{position:relative;width:70px;height:40px}
.duo-mark i{position:absolute;top:0;width:40px;height:40px;border-radius:50%}
.duo-mark i:first-child{left:0;background:var(--accent);animation:dm-l 4s var(--ease-2) infinite}
.duo-mark i:last-child{right:0;border:1.5px solid var(--paper);animation:dm-r 4s var(--ease-2) infinite}
@keyframes dm-l{50%{transform:translateX(15px)}}
@keyframes dm-r{50%{transform:translateX(-15px)}}

/* questions */
.faq{background:var(--paper);color:var(--ink);padding:clamp(100px,11vw,170px) var(--gut);border-radius:36px 36px 0 0;display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(30px,6vw,100px)}
.faq-head .h2{max-width:10ch}
.faq-list details{border-bottom:1px solid var(--line-l)}
.faq-list details:first-child{border-top:1px solid var(--line-l)}
.faq-list summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:26px 0;cursor:pointer;font:500 clamp(19px,1.6vw,24px)/1.3 var(--sans);letter-spacing:-.03em;transition:color .3s}
.faq-list summary:hover{color:var(--accent)}
.faq-list summary::-webkit-details-marker{display:none}
.faq-list summary i{flex:none;position:relative;width:36px;height:36px;border-radius:50%;border:1px solid var(--line-l);transition:background .4s,border-color .4s}
.faq-list summary i:before,.faq-list summary i:after{content:'';position:absolute;left:11px;right:11px;top:17px;height:1.5px;background:var(--ink)}
.faq-list summary i:after{transform:rotate(90deg);transition:transform .4s var(--ease)}
.faq-list details[open] summary i{background:var(--accent);border-color:var(--accent)}
.faq-list details[open] summary i:after{transform:none}
.faq-list details p{padding:0 56px 28px 0;color:var(--muted);font-size:17px}

/* contact */
.contact{background:var(--ink);padding:clamp(110px,12vw,190px) var(--gut) clamp(90px,10vw,140px)}
.contact-title{font:500 clamp(58px,11vw,200px)/.9 var(--sans);letter-spacing:-.06em;max-width:1400px;margin:0 auto}
.contact-title em{color:var(--accent);font-size:1.05em}
.contact-title .l>span{transform:translateY(110%) rotate(3deg)}
.contact-title.in .l>span{transform:none}
.contact-title .l:nth-child(2)>span{transition-delay:.1s}
.contact-grid{max-width:1400px;margin:clamp(50px,6vw,90px) auto 0;display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(30px,6vw,100px);padding-top:40px;border-top:1px solid var(--line-d)}
.contact-lede{color:#d8d2c9;font-size:18px;max-width:420px}
.contact-direct{display:flex;flex-direction:column;gap:6px;margin-top:34px}
.contact-direct a{font:500 clamp(22px,2vw,30px) var(--sans);letter-spacing:-.03em;text-decoration:none;align-self:flex-start;background:linear-gradient(var(--accent),var(--accent)) left bottom/0 1px no-repeat;transition:background-size .5s var(--ease),color .3s}
.contact-direct a:hover{background-size:100% 1px;color:var(--accent)}
.form{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px 18px}
.form .full{grid-column:1/-1}
.chips{grid-column:1/-1;border:0;padding:0;margin:0 0 10px;display:flex;flex-wrap:wrap;gap:8px}
.chips legend{font:500 12px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin-bottom:14px;padding:0}
.chips label{position:relative}
.chips input{position:absolute;opacity:0;inset:0;cursor:pointer}
.chips span{display:inline-block;padding:11px 18px;border-radius:40px;border:1px solid var(--line-d);font-size:14px;transition:background .3s,color .3s,border-color .3s}
.chips input:hover+span{border-color:var(--paper)}
.chips input:checked+span{background:var(--paper);color:var(--ink);border-color:var(--paper)}
.chips input:focus-visible+span{outline:2px solid var(--accent);outline-offset:3px}
.field{position:relative;display:block}
.field input,.field textarea{width:100%;font:inherit;color:var(--paper);background:transparent;border:0;border-bottom:1px solid rgba(244,241,236,.25);padding:28px 0 12px;resize:vertical;transition:border-color .3s}
.field span{position:absolute;left:0;top:26px;color:var(--dim);pointer-events:none;transform-origin:left top;transition:transform .4s var(--ease),color .3s}
.field input:focus,.field textarea:focus{outline:0;border-color:var(--accent)}
.field input:focus+span,.field input:not(:placeholder-shown)+span,.field textarea:focus+span,.field textarea:not(:placeholder-shown)+span{transform:translateY(-22px) scale(.78);color:var(--accent)}
.form .btn{margin-top:18px;width:100%}
.form .btn[disabled]{cursor:progress;opacity:.6;transform:none}
.form .btn[disabled]:before{transform:translateY(101%)}
.form-hp{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.form-cf{grid-column:1/-1}
.form-cf:empty{display:none}
.form-cf.is-on{margin-top:14px}
.form-cf iframe{max-width:100%}
.form-msg{grid-column:1/-1;min-height:1.5em;color:var(--cream)}
.form-msg:focus{outline:0}
.form-msg:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
.form-msg.is-wait{color:var(--dim)}
.form-msg.is-ok{color:#2fb866}
.form-msg.is-err{color:var(--accent-2)}
.form-msg a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.form-msg a:hover{color:var(--paper)}
.form-note{grid-column:1/-1;margin:0;color:var(--dim);font-size:13px;line-height:1.6}
.form-note a{color:var(--cream);text-decoration:underline;text-underline-offset:3px}
.form-note a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}

/* pied */
.foot{background:var(--ink);padding:0 var(--gut) 34px;overflow:hidden}
.foot-logo{display:flex;align-items:center;justify-content:center;gap:clamp(18px,3vw,50px);padding:clamp(50px,7vw,110px) 0 18px;border-top:1px solid var(--line-d)}
.fmk{width:clamp(110px,19vw,330px);flex:none;overflow:visible}
.f-a{fill:var(--accent);transform:translateX(-30px);transition:transform 1.4s var(--ease)}
.f-b{fill:none;stroke:var(--paper);stroke-width:1.4;transform:translateX(30px);transition:transform 1.4s var(--ease)}
.f-l{fill:var(--cream);opacity:0;transition:opacity .8s ease .9s}
.foot-logo.in .f-a,.foot-logo.in .f-b{transform:none}
.foot-logo.in .f-l{opacity:1}
.foot-word{display:flex;align-items:baseline;font:600 clamp(76px,17vw,300px)/.82 var(--sans);letter-spacing:-.07em;color:var(--paper);white-space:nowrap;margin:0}
.foot-word .lg-2{font-size:1.3em;margin-right:.02em;transform:translateY(.02em)}
.foot-tag{text-align:center;font:500 clamp(20px,2.2vw,32px) var(--sans);letter-spacing:-.03em;color:var(--dim);padding:10px 0 60px}
.foot-tag em{color:var(--paper)}
.foot-cols{display:grid;grid-template-columns:1.3fr .9fr .9fr .9fr;gap:30px;padding-top:30px;border-top:1px solid var(--line-d);color:var(--dim);font-size:15px}
.foot-cols a{color:var(--paper);text-decoration:none}
.foot-cols a:hover{color:var(--accent)}
.foot-note{margin-top:40px;font:400 11px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:#6f675e;text-align:center}

/* apparitions */
.js .rv{opacity:0;transform:translateY(40px);transition:opacity 1s var(--ease),transform 1.2s var(--ease)}
.js .rv.in{opacity:1;transform:none}

/* responsive */
@media (max-width:1100px){
  .nav a{padding:10px 12px}
  .facts{grid-template-columns:1fr 1fr;row-gap:30px}
  .facts li:nth-child(3){padding-left:0;border-left:0}
  .plans{grid-template-columns:1fr 1fr}
  .monitor{grid-column:1/-1}
  .proc-steps{grid-template-columns:1fr 1fr 1fr;row-gap:50px}
  .proc-line{display:none}
}
@media (max-width:900px){
  .foot-cols{grid-template-columns:1fr 1fr}
  .nav,.head-cta{display:none}
  .burger{display:block;margin-left:auto}
  .head{padding:8px 8px 8px 20px}
  .scroll-cue{display:none}
  .svc-row{grid-template-columns:44px 1fr 40px;gap:12px}
  .svc-p{grid-column:2;grid-row:2;margin-top:-8px}
  .svc-x{grid-column:3;grid-row:1/3;width:40px;height:40px}
  .svc-x:before,.svc-x:after{left:12px;right:12px;top:19px}
  .svc-body{grid-template-columns:44px 1fr;gap:12px}
  .svc-body ul{grid-column:2;justify-content:flex-start}
  .svc-go{grid-column:2}
  .svc.is-open .svc-body{max-height:640px}
  .work-head,.maint-head{grid-template-columns:1fr}
  .case{position:relative;top:0;grid-template-columns:1fr}
  .case h3{padding-top:18px;margin-top:0}
  .case-info{order:2}
  .duo{grid-template-columns:1fr}
  .duo-mark{margin:0 auto}
  .faq,.contact-grid{grid-template-columns:1fr}
}
@media (max-width:640px){
  body{font-size:16px}
  .hero{padding-top:calc(min(76vw,420px) + 110px);min-height:auto}
  .hero-title{max-width:none}
  .hero-title{font-size:clamp(42px,12.4vw,64px)}
  .hero-actions,.hero-actions .btn{width:100%}
  .ticker-label{display:none}
  .ticker{padding:18px 0}
  .intro-sec,.work,.process,.faq{border-radius:24px 24px 0 0}
  .facts{grid-template-columns:1fr}
  .facts li,.facts li+li{padding:22px 0 0;border-left:0}
  .plans{grid-template-columns:1fr}
  .proc-steps{grid-template-columns:1fr}
  .form{grid-template-columns:minmax(0,1fr)}
  .foot-cols{grid-template-columns:1fr}
  .faq-list details p{padding-right:0}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}


/* ===== héro : scène 3D de construction ===== */
.hero-glow{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.hero-glow i{position:absolute;border-radius:50%;filter:blur(90px);opacity:.38;animation:glow 18s ease-in-out infinite alternate}
.hero-glow i:nth-child(1){width:46vw;height:46vw;right:-6vw;top:-8vw;background:#f26b2a}
.hero-glow i:nth-child(2){width:30vw;height:30vw;right:24vw;top:30vh;background:#7a3a1a;animation-duration:22s;animation-direction:alternate-reverse}
.hero-glow i:nth-child(3){width:26vw;height:26vw;right:4vw;bottom:-10vw;background:#f3d9b8;opacity:.16;animation-duration:26s}
@keyframes glow{to{transform:translate(-6vw,6vh) scale(1.15)}}
.hero-floor{position:absolute;left:-20%;right:-20%;bottom:-10%;height:60%;pointer-events:none;background:
 linear-gradient(rgba(244,241,236,.07) 1px,transparent 1px) 0 0/80px 80px,
 linear-gradient(90deg,rgba(244,241,236,.07) 1px,transparent 1px) 0 0/80px 80px;
 transform:perspective(600px) rotateX(64deg);transform-origin:center bottom;-webkit-mask:linear-gradient(transparent,#000 60%);mask:linear-gradient(transparent,#000 60%);animation:floor 6s linear infinite}
@keyframes floor{to{background-position:0 80px,0 0}}
.scene{position:absolute;z-index:1;right:calc(var(--gut) + 1vw);top:150px;width:min(45vw,760px);height:calc(100svh - 390px);min-height:380px;perspective:1700px;opacity:0;transform:translateY(40px);transition:opacity 1.2s .3s,transform 1.6s var(--ease) .3s}
.is-ready .scene{opacity:1;transform:none}
.rig{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateX(var(--rx,9deg)) rotateY(var(--ry,-17deg)) rotateZ(1.5deg);transition:transform 1.2s var(--ease)}
.win{position:absolute;border-radius:14px;overflow:hidden;background:#fff;box-shadow:0 50px 90px -20px rgba(0,0,0,.75),0 0 0 1px rgba(255,255,255,.07)}
.win img{width:100%;height:calc(100% - 26px);object-fit:cover;object-position:top}
.win-bar{height:26px;background:#1f1c19;display:flex;align-items:center;gap:10px;padding:0 10px}
.win-bar .dots{position:relative;width:8px;height:8px;border-radius:50%;background:#ff5f57;flex:none;box-shadow:13px 0 0 #febc2e,26px 0 0 #28c840;margin-right:28px}
.url{flex:1;max-width:60%;margin:0 auto;height:17px;border-radius:9px;background:#2d2925;display:flex;align-items:center;justify-content:center;gap:6px;font:500 10px var(--mono);color:#cfc7bb;letter-spacing:.02em}
.lock{width:7px;height:6px;border-radius:1.5px;background:#8f877c;position:relative;margin-top:2px}
.lock:before{content:'';position:absolute;left:1.2px;top:-4px;width:4.6px;height:5px;border:1.2px solid #8f877c;border-bottom:0;border-radius:3px 3px 0 0}
.caret{display:inline-block;width:1px;height:10px;background:#f26b2a;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.win-main{left:5%;top:9%;width:86%;aspect-ratio:16/10.6;transform:translateZ(40px)}
.win-b1{left:-10%;top:-6%;width:60%;aspect-ratio:16/10.6;transform:translateZ(-300px) translateY(-10px);opacity:.5;filter:brightness(.65)}
.win-b2{right:-14%;bottom:-6%;width:56%;aspect-ratio:16/10.6;transform:translateZ(-200px);opacity:.55;filter:brightness(.6)}
.canvas-site{position:relative;height:calc(100% - 26px);background:var(--sbg,#f4f1ec);overflow:hidden;transition:background 1s}
.blk{position:absolute;border:1.5px dashed rgba(14,13,12,.28);border-radius:6px;opacity:0;transform:scale(.92);transition:opacity .5s,transform .7s var(--ease),background .8s,border-color .6s}
.blk.wf{opacity:1;transform:none}
.blk.fill{border-color:transparent}
.b-nav{left:4%;top:4%;width:92%;height:7%}
.b-logo{left:6%;top:5.6%;width:9%;height:3.8%;border-radius:20px}
.b-t1{left:6%;top:22%;width:42%;height:8%}
.b-t2{left:6%;top:33%;width:30%;height:8%}
.b-p1{left:6%;top:46%;width:38%;height:2.6%}
.b-p2{left:6%;top:51%;width:30%;height:2.6%}
.b-btn{left:6%;top:59%;width:15%;height:6.5%;border-radius:30px}
.b-img{left:53%;top:18%;width:41%;height:50%;border-radius:10px}
.b-c1{left:6%;top:74%;width:27%;height:21%}.b-c2{left:36.5%;top:74%;width:27%;height:21%}.b-c3{left:67%;top:74%;width:27%;height:21%}
.fill.b-nav{background:rgba(14,13,12,.05)}
.fill.b-logo,.fill.b-btn{background:var(--sa,#f26b2a)}
.fill.b-t1,.fill.b-t2{background:var(--sink,#0e0d0c)}
.fill.b-p1,.fill.b-p2{background:rgba(14,13,12,.2)}
.fill.b-img{background:linear-gradient(135deg,var(--sa,#f26b2a),var(--sb,#f3d9b8))}
.fill.b-c1,.fill.b-c2,.fill.b-c3{background:#fff;box-shadow:0 8px 20px rgba(0,0,0,.08)}
.sel{position:absolute;inset:-4px;border:1.5px solid #f26b2a;border-radius:12px;opacity:0;transition:opacity .3s}
.sel i{position:absolute;width:8px;height:8px;background:#fff;border:1.5px solid #f26b2a;border-radius:2px}
.sel i:nth-child(1){left:-5px;top:-5px}.sel i:nth-child(2){right:-5px;top:-5px}.sel i:nth-child(3){left:-5px;bottom:-5px}.sel i:nth-child(4){right:-5px;bottom:-5px}
.b-img.is-sel .sel{opacity:1}
.b-img.is-sel{transform:scale(1.04)}
.final{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top;clip-path:inset(0 0 100% 0);transition:clip-path 1.2s var(--ease-2)}
.final.show{clip-path:inset(0)}
.grid-ov{position:absolute;inset:0 4%;pointer-events:none;background:repeating-linear-gradient(90deg,rgba(242,107,42,.09) 0 calc(100%/12 - 8px),transparent calc(100%/12 - 8px) calc(100%/12));opacity:0;transition:opacity .6s}
.grid-ov.on{opacity:1}
.chip{position:absolute;border-radius:14px;background:rgba(22,20,18,.82);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(244,241,236,.14);box-shadow:0 30px 50px -20px rgba(0,0,0,.7);padding:12px 14px;color:var(--paper)}
.chip-h{font:500 10px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin-bottom:8px}
.chip-code{left:-4%;bottom:-4%;width:44%;transform:translateZ(150px)}
.chip-code pre{margin:0;font:400 10.5px/1.6 var(--mono);color:#e8e1d6;min-height:8.2em;white-space:pre-wrap}
.chip-code .k{color:#f26b2a}.chip-code .s{color:#9fd6a6}.chip-code .c{color:#7d756b}
.chip-pal{right:-5%;top:6%;width:26%;transform:translateZ(190px)}
.sw{display:flex;gap:6px}
.sw i{flex:1;aspect-ratio:1;border-radius:50%;background:#333;transition:background .8s,transform .4s var(--ease)}
.sw i.pop{transform:scale(1.25)}
.chip-f{margin-top:10px;font:italic 400 20px/1 var(--serif);color:var(--paper)}
.chip-stat{right:-5%;bottom:14%;transform:translateZ(120px);display:flex;flex-direction:column;gap:6px;font:500 11px var(--mono)}
.chip-stat p{display:flex;align-items:center;gap:8px;opacity:.35;transition:opacity .4s}
.chip-stat p i{width:14px;height:14px;border-radius:50%;border:1.5px solid rgba(244,241,236,.3);position:relative;transition:background .3s,border-color .3s}
.chip-stat p.ok{opacity:1}
.chip-stat p.ok i{background:#2fb866;border-color:#2fb866}
.chip-stat p.ok i:after{content:'';position:absolute;left:4px;top:1.5px;width:3px;height:6px;border:solid #fff;border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}
.mcur{position:absolute;left:0;top:0;z-index:5;display:flex;align-items:flex-start;gap:2px;pointer-events:none;transform:translate3d(var(--x,50%),var(--y,50%),240px);transition:transform 1.1s cubic-bezier(.5,0,.2,1)}
.mcur svg{width:18px;height:18px;filter:drop-shadow(0 2px 3px rgba(0,0,0,.4))}
.mcur b{margin-top:14px;font:600 11px var(--sans);padding:4px 9px;border-radius:12px 12px 12px 3px;white-space:nowrap}
.mc-an svg path{fill:#f26b2a;stroke:#fff;stroke-width:1.2}.mc-an b{background:#f26b2a;color:#1b0d05}
.mc-ad svg path{fill:#f3d9b8;stroke:#1b0d05;stroke-width:1.2}.mc-ad b{background:#f3d9b8;color:#1b0d05}
.mcur.click svg{animation:clk .35s}
@keyframes clk{50%{transform:scale(.8)}}

/* ===== mur des accueils ===== */
.wall{position:relative;height:230vh;background:var(--ink)}
.wall-stage{position:sticky;top:0;height:100vh;overflow:hidden;perspective:1500px}
.wall-stage:after{content:'';position:absolute;inset:0;background:radial-gradient(60% 55% at 50% 50%,rgba(14,13,12,.55),rgba(14,13,12,.92) 80%),linear-gradient(var(--ink),transparent 18%,transparent 82%,var(--ink));pointer-events:none}
.wall-grid{position:absolute;left:50%;top:50%;width:175vw;display:grid;grid-template-columns:repeat(6,1fr);gap:22px;transform:translate(-50%,-50%) rotateX(42deg) rotateZ(-20deg);transform-style:preserve-3d}
.wcol{display:flex;flex-direction:column;gap:22px;will-change:transform}
.wcol img{width:100%;aspect-ratio:16/10;object-fit:cover;object-position:top;border-radius:12px;box-shadow:0 30px 60px rgba(0,0,0,.6)}
.wall-copy{position:sticky;top:0;height:100vh;margin-top:-100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:30px;padding:0 var(--gut);z-index:2}
.wall-title{font:500 clamp(48px,7.4vw,136px)/.95 var(--sans);letter-spacing:-.055em;display:flex;flex-direction:column}
.wall-title span{display:block;opacity:.12;transform:translateY(20px);transition:opacity .8s,transform 1s var(--ease)}
.wall-title span.on{opacity:1;transform:none}
.wall-title em{color:var(--accent)}

/* ===== bandeau vitesse ===== */
.velo{background:var(--ink);padding:clamp(40px,6vw,90px) 0;overflow:hidden;border-top:1px solid var(--line-d)}
.velo-row{display:flex;width:max-content;will-change:transform}
.velo-row span{font:600 clamp(64px,10.5vw,190px)/1.02 var(--sans);letter-spacing:-.055em;white-space:nowrap;padding-right:.3em}
.velo-row i{display:inline-block;width:.32em;height:.32em;border-radius:50%;background:var(--accent);vertical-align:middle;margin:0 .25em;transform:translateY(-.05em)}
/* Geist est variable : ses glyphes se chevauchent, un contour sur remplissage transparent montre les recouvrements (barres du F, du H).
   Le remplissage encre peint par-dessus le trait masque l'intérieur ; seule la moitié extérieure des 3px reste visible.
   Interlettrage desserré : à -.055em les contours voisins se touchent (r-a, a-n, c-e). */
.velo-out span{color:var(--ink);-webkit-text-stroke:3px rgba(244,241,236,.4);paint-order:stroke fill;letter-spacing:-.01em}
.velo-out i{background:transparent;border:2px solid var(--paper)}

/* ===== inclinaison des travaux ===== */
.case-shot{transform:perspective(1300px) rotateX(var(--tx,0deg)) rotateY(var(--ty,0deg));transition:transform .6s var(--ease)}

@media (max-width:900px){
  .scene{left:calc(var(--gut) + 14px);right:calc(var(--gut) + 14px);top:100px;width:auto;height:min(76vw,420px);min-height:0}
  .chip-code{left:0;width:52%;bottom:-2%}
  .chip-pal{right:0;width:34%;top:10%}
  .chip-stat{right:-1%}
  .hero-glow i:nth-child(1){width:90vw;height:90vw}
  .wall{height:180vh}
  .wall-grid{width:260vw;grid-template-columns:repeat(6,1fr);transform:translate(-50%,-50%) rotateX(26deg) rotateZ(-16deg)}
  .wall-stage{perspective:2400px}
  .wall-stage:after{background:linear-gradient(var(--ink),rgba(14,13,12,.62) 22%,rgba(14,13,12,.62) 78%,var(--ink))}
}
@media (max-width:640px){
  .chip{padding:8px 10px;border-radius:10px}
  .chip-code pre{font-size:8px;min-height:6em}
  .chip-h{font-size:8px;margin-bottom:4px}
  .chip-f{font-size:14px}
  .chip-stat{font-size:9px;gap:4px}
  .mcur b{font-size:9px;padding:3px 7px;margin-top:12px}
  .url{font-size:8px}
}

.plan-desc{font:500 clamp(22px,2vw,28px)/1.2 var(--sans);letter-spacing:-.035em;margin:22px 0 26px;padding-bottom:26px;border-bottom:1px solid var(--line-d);min-height:4.4em}

/* ===== derniers articles ===== */
.home-blog{background:var(--paper);color:var(--ink);padding:clamp(100px,11vw,170px) var(--gut);border-radius:36px 36px 0 0}
.hb-head{max-width:1400px;margin:0 auto clamp(40px,5vw,70px);display:grid;grid-template-columns:1fr auto;align-items:end;gap:24px}
.hb-head .label{grid-column:1/-1}
.hb-head .h2{margin-top:0}
.hb-grid{max-width:1400px;margin:0 auto;display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.hb-card{display:flex;flex-direction:column;gap:16px;min-height:260px;padding:28px;border-radius:28px;background:var(--paper-3);border:1px solid var(--line-l);text-decoration:none;transition:transform .6s var(--ease),box-shadow .6s var(--ease)}
.hb-card:hover{transform:translateY(-6px);box-shadow:0 30px 50px -30px rgba(14,13,12,.35)}
.hb-cat{align-self:flex-start;font:500 12px var(--mono);letter-spacing:.06em;padding:5px 10px;border-radius:20px;background:var(--ink);color:var(--paper)}
.hb-card b{font:500 clamp(22px,1.8vw,28px)/1.12 var(--sans);letter-spacing:-.035em}
.hb-card b em{color:#b84716}
.hb-date{margin-top:auto;font:400 13px var(--mono);color:var(--muted)}
@media (max-width:900px){.hb-grid{grid-template-columns:1fr}.hb-head{grid-template-columns:1fr}.hb-card{min-height:0}}

/* Le blog s'insère entre le studio (sombre) et la FAQ : deux blocs clairs qui se
   suivent ne doivent pas laisser voir l'arrondi sur le fond sombre. */
.home-blog + .faq{border-radius:0;padding-top:clamp(30px,4vw,60px)}

/* Finalisation migration : identité conservée, accès rapide sur petits écrans. */
.head:focus-within{transform:translateX(-50%)}
.mnav{max-height:calc(100dvh - 100px);overflow-y:auto}
.svc-body[inert]{visibility:hidden}
.svc.is-open .svc-body{max-height:none;padding-bottom:30px}
.home-refs{padding:54px var(--gut) 64px;background:var(--ink-2)}
.refs-head{max-width:1400px;margin:0 auto 28px;display:flex;justify-content:space-between;align-items:end;gap:22px}
.refs-head h2{font:500 clamp(26px,3vw,42px)/1.1 var(--sans);letter-spacing:-.04em;margin-top:12px}
.refs-head h2 em{color:var(--accent)}
.refs-head>a{font-size:14px;text-underline-offset:5px;flex-shrink:0}
.refs-grid{max-width:1400px;margin:auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.ref-card{display:flex;flex-direction:column;text-decoration:none;border:1px solid var(--line-d);border-radius:18px;overflow:hidden;transition:border-color .3s,transform .3s}
.ref-card:hover{border-color:var(--accent);transform:translateY(-4px)}
.ref-card>img{width:100%;height:auto;aspect-ratio:16/8;object-fit:cover;object-position:top}
.ref-card>div{padding:20px;display:flex;flex-direction:column;gap:10px;flex:1}
.ref-card span{font:500 11px/1.5 var(--mono);color:var(--dim)}
.ref-card h3{font:500 23px/1.1 var(--sans);letter-spacing:-.03em}
.ref-card p{font-size:15px;color:#d8d2c9}
.ref-card b{font-weight:500;font-size:14px;color:var(--accent);margin-top:auto;padding-top:8px}
.refs-more{max-width:1400px;margin:24px auto 0}
.refs-more>summary{width:fit-content;max-width:100%;padding:14px 20px;border:1px solid var(--line-d);border-radius:28px;cursor:pointer;font-size:15px;color:var(--paper)}
.refs-more>summary:hover{border-color:var(--accent)}
.refs-more>summary:focus-visible{outline:2px solid var(--accent);outline-offset:5px}
.refs-more[open]>summary{margin-bottom:24px}
.maint-scope{max-width:900px;margin:30px auto 0;color:#d8d2c9;font-size:16px;text-align:center}
.privacy-settings{font:inherit;color:inherit;border:0;border-bottom:1px solid currentColor;background:none;padding:0;text-align:left}
@media (max-width:900px){
  .hero{padding-top:110px;min-height:auto;display:flex}
  .hero-inner{order:0}
  .hero-title{max-width:100%;font-size:clamp(42px,7.5vw,66px);margin:24px 0}
  .hero-foot{padding-top:22px;gap:20px;transition-delay:0s}
  .hero-lede{max-width:620px}
  .scene{position:relative;order:1;left:auto;right:auto;top:auto;width:100%;height:min(55vw,340px);margin:34px auto 0;translate:none!important}
  .ticker,.wall,.velo{display:none}
  .intro-sec{padding:56px var(--gut)}
  .statement{font-size:clamp(27px,4.2vw,36px)}
  .statement .w{color:var(--ink)}
  .statement .w.acc{color:var(--accent)}
  .facts{margin-top:32px;gap:20px}
  .facts li,.facts li+li{padding:16px 0 0;border-left:0}
  .facts span{max-width:none}
  .services,.work,.maint,.process,.studio,.faq,.home-blog{padding-top:64px;padding-bottom:64px}
  .svc-head,.work-head,.maint-head,.proc-head{margin-bottom:32px}
  .case{padding:24px;gap:20px;margin-bottom:22px}
  .case-info{order:0}
  .case-desc{margin-top:12px}
  .proc-steps{row-gap:26px}
}
@media (max-width:640px){
  .hero{padding-top:102px;padding-bottom:30px}
  .hero-title{font-size:clamp(36px,10.6vw,60px)}
  .hero-actions{gap:10px}
  .hero-actions .btn{min-height:50px}
  .eyebrow{font-size:10px;letter-spacing:.07em}
  .scene{height:210px;margin-top:24px}
  .home-refs{padding:36px var(--gut)}
  .refs-head{display:block;margin-bottom:22px}
  .refs-head>a{display:inline-block;margin-top:16px}
  .refs-grid{grid-template-columns:1fr;gap:12px}
  .ref-card{display:grid;grid-template-columns:88px minmax(0,1fr);align-items:start;border-radius:14px}
  .ref-card>img{height:100%;min-height:145px;aspect-ratio:auto;object-position:top left}
  .ref-card>div{padding:14px;gap:6px}
  .ref-card h3{font-size:20px}
  .ref-card p{font-size:14px;line-height:1.45}
  .ref-card b{padding-top:2px}
  .facts{grid-template-columns:1fr 1fr}
  .facts b{font-size:18px}
  .facts span{font-size:14px}
  .svc-row{grid-template-columns:28px minmax(0,1fr) 36px;gap:10px}
  .svc-t{font-size:27px;overflow-wrap:break-word}
  .svc-body{grid-template-columns:28px minmax(0,1fr);gap:10px}
  .svc-go{flex-wrap:wrap}
  .case{padding:20px}
  .maint-scope{text-align:left}
  .proc-steps li{padding-top:20px}
}
@media (prefers-reduced-motion:reduce){
  .js .rv{opacity:1;transform:none}
  .hero .l>span,.hero-foot{transform:none;opacity:1}
  .eyebrow{opacity:1}
  .case{position:relative;top:0}
}

.case[hidden],.work-expand button[hidden]{display:none}
.work-expand{text-align:center}
html:not(.js) .hero .l>span{transform:none}
html:not(.js) .hero-foot,html:not(.js) .eyebrow{opacity:1;transform:none}
@media (max-width:900px){
  .duo-mark{display:none}
  .duo{margin-top:30px}
  .partner{padding-top:24px;padding-bottom:24px}
  .case{scroll-margin-top:95px}
}
