/* Hallmark · socle commun des 3 maquettes · DA Espace Triangle conservée (jetons prélevés sur la prod) */
/* Jetons : valeurs mesurées sur espacetriangle.fr (kit Elementor) — ne pas improviser de teinte hors de ce bloc. */
:root {
  --c-navy: #1E325D;         /* primaire : fonds, titres */
  --c-navy-2: #1F3970;       /* secondaire : survols sur navy */
  --c-ink: #292F3E;          /* texte courant */
  --c-teal: #69B8AB;         /* accent : boutons, pictos, symbole du logo */
  --c-teal-deep: #217C70;    /* accent lisible en texte sur fond clair (kit, 5,1:1 sur blanc) */
  --c-mint: #7BF3DF;         /* liens sur fond navy (cartes salles de la prod) */
  --c-white: #FFFFFF;
  --c-grey: #F3F3F3;         /* bandes grises de la prod */
  --c-veil-avis: rgb(0 75 65); /* voile de la bande avis (prod : 0.8) */
  --c-ink-soft: color-mix(in srgb, var(--c-ink) 72%, var(--c-white));
  --c-teal-wash: color-mix(in srgb, var(--c-teal) 14%, var(--c-white));
  --c-navy-line: color-mix(in srgb, var(--c-navy) 12%, transparent);
  --c-white-line: color-mix(in srgb, var(--c-white) 22%, transparent);

  --font: "Montserrat", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;

  --space-2xs: .25rem; --space-xs: .5rem; --space-sm: .75rem; --space-md: 1rem; --space-lg: 1.5rem;
  --space-xl: 2rem; --space-2xl: 3rem; --space-3xl: 4.5rem; --space-4xl: 7rem;

  --r-pill: 999px; --r-card: 16px; --r-card-l: 20px; --r-s: 10px;
  --shadow-card: 0 1px 2px rgb(30 50 93 / .06), 0 12px 32px -12px rgb(30 50 93 / .22);
  --shadow-float: 0 10px 40px -10px rgb(30 50 93 / .35);

  --ease-out: cubic-bezier(.22, 1, .36, 1);
  --ease-in: cubic-bezier(.55, 0, 1, .45);
  --ease-in-out: cubic-bezier(.65, 0, .35, 1);
  --dur-short: 160ms; --dur-base: 320ms; --dur-long: 640ms;

  --container: 1280px; --gutter: clamp(16px, 3vw, 40px);
  --header-h: 84px;
  --z-nav: 50; --z-sheet: 60; --z-dialog: 70;
}

@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 400 800; font-display: swap; src: url("../fonts/montserrat-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 400 800; font-display: swap; src: url("../fonts/montserrat-latin-ext.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }

*, *::before, *::after { box-sizing: border-box; }
html { overflow-x: clip; scroll-padding-top: calc(var(--header-h) + 16px); -webkit-text-size-adjust: 100%; }
body { margin: 0; overflow-x: clip; font-family: var(--font); font-size: 1rem; line-height: 1.6; color: var(--c-ink); background: var(--c-white); text-rendering: optimizeLegibility; }
h1, h2, h3, h4 { margin: 0; font-weight: 700; line-height: 1.08; color: var(--c-navy); text-wrap: balance; overflow-wrap: anywhere; min-width: 0; }
p { margin: 0; }
p + p { margin-top: .9em; }
ul[class] { margin: 0; padding: 0; list-style: none; }
img, svg, video, iframe { display: block; max-width: 100%; }
img { height: auto; }
figure { margin: 0; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .18em; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
:focus-visible { outline: 3px solid var(--c-teal); outline-offset: 3px; border-radius: 4px; }
.sr-only { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
[hidden] { display: none !important; }

/* texte riche repris de la prod */
.rich p + p, .rich p + ul, .rich ul + p { margin-top: .9em; }
.rich ul { padding-left: 1.2em; margin: 0; }
.rich li { margin: .25em 0; }
.rich strong { font-weight: 700; }

/* boutons : la pilule de la prod (rayon 24 px, capitales, 600) */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .6em; min-height: 46px; padding: 0 1.4rem; border-radius: var(--r-pill); font-weight: 600; font-size: .8125rem; letter-spacing: .06em; text-transform: uppercase; text-decoration: none; white-space: nowrap; transition: background-color var(--dur-short) var(--ease-out), color var(--dur-short) var(--ease-out), transform var(--dur-short) var(--ease-out); }
.btn:active { transform: translateY(1px); }
.btn--teal { background: var(--c-teal); color: var(--c-navy); }
.btn--teal:hover { background: var(--c-navy); color: var(--c-white); }
.btn--navy { background: var(--c-navy); color: var(--c-white); }
.btn--navy:hover { background: var(--c-teal); color: var(--c-navy); }
.btn--white { background: var(--c-white); color: var(--c-navy); }
.btn--white:hover { background: var(--c-teal); color: var(--c-navy); }
.btn--ghost { border: 1.5px solid currentColor; color: var(--c-navy); }
.btn--ghost:hover { background: var(--c-navy); color: var(--c-white); border-color: var(--c-navy); }
.btn--ghost-light { border: 1.5px solid var(--c-white-line); color: var(--c-white); }
.btn--ghost-light:hover { background: var(--c-white); color: var(--c-navy); }
.btn--icon { width: 46px; padding: 0; }
.btn svg { width: 1.1em; height: 1.1em; flex: none; }
.btn--icon svg { width: 1.25em; height: 1.25em; }

/* lien typographique (cartes salles de la prod : mint souligné) */
.lien-fleche { display: inline-flex; align-items: center; gap: .5em; font-weight: 600; text-decoration: underline; text-decoration-thickness: 1.5px; text-underline-offset: .22em; }
.lien-fleche::after { content: "→"; transition: transform var(--dur-short) var(--ease-out); }
.lien-fleche:hover::after { transform: translateX(4px); }

/* avis */
.etoiles { display: inline-flex; gap: 2px; color: var(--c-teal); }
.etoiles svg { width: 16px; height: 16px; fill: currentColor; }
.avatar { display: inline-grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: var(--c-teal-wash); color: var(--c-navy); font-weight: 700; font-size: .95rem; letter-spacing: .02em; flex: none; }

/* visionneuse de galerie */
.visionneuse { border: 0; padding: 0; max-width: min(96vw, 1400px); max-height: 92svh; background: transparent; }
.visionneuse::backdrop { background: rgb(13 24 48 / .88); }
.visionneuse figure { position: relative; margin: 0; display: grid; }
.visionneuse img { max-height: 84svh; width: auto; max-width: 100%; margin: 0 auto; border-radius: var(--r-s); }
.visionneuse figcaption { color: var(--c-white); text-align: center; padding: var(--space-sm) 0 0; font-size: .9rem; }
.visionneuse .vis-btn { position: absolute; top: 50%; transform: translateY(-50%); width: 48px; height: 48px; border-radius: 50%; background: var(--c-white); color: var(--c-navy); display: grid; place-items: center; }
.visionneuse .vis-btn svg { width: 20px; height: 20px; }
.visionneuse .vis-prev { left: 8px; } .visionneuse .vis-next { right: 8px; }
.visionneuse .vis-close { position: absolute; top: -56px; right: 0; width: 44px; height: 44px; border-radius: 50%; background: var(--c-white); color: var(--c-navy); display: grid; place-items: center; }

/* plan d’accès : repli sous l’iframe */
.plan { position: relative; width: 100%; height: 100%; min-height: 260px; background: var(--c-navy-2); color: var(--c-white); border-radius: var(--r-card); overflow: hidden; }
.plan__repli { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; gap: 14px; padding: var(--space-lg); text-align: left; text-decoration: none; font-size: .9375rem; line-height: 1.5; }
.plan__repli svg { width: 32px; height: 32px; flex: none; color: var(--c-teal); }
.plan iframe { position: relative; z-index: 1; width: 100%; height: 100%; border: 0; display: block; }

/* repli mouvement réduit : filet de sécurité global */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .15s !important; animation-iteration-count: 1 !important; transition-duration: .15s !important; scroll-behavior: auto !important; }
}
/* une animation ne retient jamais le contenu : sans JS, tout est visible */
html.no-js [data-reveal], html.no-js [data-hero-el] { opacity: 1 !important; transform: none !important; }
