/* base.css — socle commun (reset, utilitaires, états d'animation). Les tokens sont définis par chaque site dans style.css. */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;min-height:100svh;font-family:var(--f-body);font-size:var(--t-body);line-height:1.6;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}
html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-stopped{overflow:hidden}
img,picture,video,svg{display:block;max-width:100%}img{height:auto}
h1,h2,h3,h4,p,ul,ol,figure,blockquote{margin:0}ul,ol{padding:0;list-style:none}
a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
input,textarea,select{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:fixed;top:-100px;left:16px;z-index:1000;padding:.6rem 1rem;background:var(--ink);color:var(--bg);border-radius:6px}.skip:focus{top:16px}
.wrap{width:min(100% - 2*var(--gut),var(--max));margin-inline:auto}
.wrap--n{width:min(100% - 2*var(--gut),var(--max-n))}
.wrap--w{width:min(100% - 2*var(--gut),var(--max-w))}
.sec{padding-block:var(--sec)}.sec--t{padding-top:var(--sec)}.sec--b{padding-bottom:var(--sec)}
.grid{display:grid;gap:var(--gap)}.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}
@media (max-width:900px){.g3,.g4{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.g2,.g3,.g4{grid-template-columns:1fr}}
.flex{display:flex;flex-wrap:wrap;gap:var(--gap-s);align-items:center}
.ph{position:relative;overflow:hidden}.ph img{width:100%;height:100%;object-fit:cover}
.ratio{aspect-ratio:var(--r,4/5)}.ratio img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* ---- états d'animation : visibles sans JS, masqués seulement quand le moteur est prêt */
html.js:not(.no-motion) [data-rv],html.js:not(.no-motion) [data-rv-stagger]>*,html.js:not(.no-motion) [data-split]{opacity:0}
html.js:not(.no-motion) [data-hero-item],html.js:not(.no-motion) [data-hero-media]{opacity:0}
html.no-motion [data-rv],html.no-motion [data-rv-stagger]>*,html.no-motion [data-split],html.no-motion [data-hero-item],html.no-motion [data-hero-media]{opacity:1!important;transform:none!important;clip-path:none!important}
.sp-line,.sp-word,.sp-char{will-change:transform}
[data-curtain]{position:fixed;inset:0;z-index:2000;background:var(--curtain,var(--ink));pointer-events:none}
html:not(.js) [data-curtain],html.no-motion [data-curtain]{display:none}
[data-progress]{position:fixed;top:0;left:0;height:2px;width:100%;background:var(--accent);transform:scaleX(0);transform-origin:left;z-index:1200;pointer-events:none}
/* ---- marquee */
[data-marquee]{overflow:hidden;display:flex;white-space:nowrap;mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
[data-marquee] .marquee__track{display:flex;flex-shrink:0;gap:var(--mq-gap,3rem);padding-right:var(--mq-gap,3rem);animation:mq var(--mq-dur,40s) linear infinite}
[data-marquee]:hover .marquee__track{animation-play-state:paused}
@keyframes mq{to{transform:translateX(-100%)}}
@media (prefers-reduced-motion:reduce){[data-marquee]{mask-image:none;-webkit-mask-image:none;overflow-x:auto}[data-marquee] .marquee__track{animation:none}}
/* ---- parallaxe : l'image dépasse son cadre */
[data-plx]{will-change:transform;height:118%!important;top:-9%!important;position:absolute;left:0;width:100%;object-fit:cover}
html.no-motion [data-plx]{height:100%!important;top:0!important}
/* ---- nav commun */
.nav{position:fixed;top:0;left:0;right:0;z-index:900;transition:transform .5s cubic-bezier(.2,.7,.2,1),background .4s,box-shadow .4s,padding .4s}
.nav.is-hidden{transform:translateY(-110%)}
.nav__in{display:flex;align-items:center;justify-content:space-between;gap:1.5rem}
.nav__menu{display:flex;gap:clamp(.9rem,1.6vw,1.6rem);align-items:center}
.nav__burger{display:none;width:44px;height:44px;position:relative;z-index:2}
.nav__burger span{position:absolute;left:11px;width:22px;height:2px;background:currentColor;transition:transform .35s,opacity .3s,top .35s}
.nav__burger span:nth-child(1){top:16px}.nav__burger span:nth-child(2){top:22px}.nav__burger span:nth-child(3){top:28px}
.nav.is-open .nav__burger span:nth-child(1){top:22px;transform:rotate(45deg)}.nav.is-open .nav__burger span:nth-child(2){opacity:0}.nav.is-open .nav__burger span:nth-child(3){top:22px;transform:rotate(-45deg)}
@media (max-width:1000px){
  .nav__burger{display:block}
  .nav__menu{position:fixed;inset:0;flex-direction:column;justify-content:safe center;gap:clamp(.65rem,2.4vh,1.4rem);background:var(--nav-menu-bg,var(--ink));color:var(--nav-menu-ink,var(--bg));font-size:1.6rem;opacity:0;pointer-events:none;transform:translateY(-6px);transition:opacity .4s,transform .4s;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:clamp(4.75rem,12vh,6.5rem) 1.25rem 2rem}
  .nav.is-open .nav__menu{opacity:1;pointer-events:auto;transform:none}
  .nav__cta{display:none}.nav.is-open .nav__menu .nav__cta{display:inline-flex}
  .nav.is-open .nav__right .nav__cta{display:none}
}
/* ---- formulaire */
.form{display:grid;gap:1rem}.form .row{display:grid;gap:1rem;grid-template-columns:1fr 1fr}@media (max-width:640px){.form .row{grid-template-columns:1fr}}
.field{display:grid;gap:.35rem}.field label{font-size:.85rem;font-weight:600;letter-spacing:.02em}
.field input,.field textarea,.field select{width:100%;padding:.85rem 1rem;border:1px solid var(--line);border-radius:var(--radius-s,8px);background:var(--field-bg,#fff);transition:border-color .3s,box-shadow .3s}
.field input:focus,.field textarea:focus,.field select:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}
.field textarea{min-height:140px;resize:vertical}
/* ---- accordéon */
.acc{border-top:1px solid var(--line)}.acc details{border-bottom:1px solid var(--line)}
.acc summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.15rem 0;font-weight:600}
.acc summary::-webkit-details-marker{display:none}.acc summary::after{content:"+";font-size:1.4rem;font-weight:300;transition:transform .3s}
.acc details[open] summary::after{transform:rotate(45deg)}.acc .acc__b{padding:0 0 1.2rem;max-width:64ch}
