/* ==========================================================================
   TRICOLORE NUISIBLES — feuille de style unique (mise en page façon Astra)
   Règles d'usage : ../../../CHARTE.md — catalogue des composants : COMPOSANTS.md
   Les noms ast-* reprennent les conventions du thème Astra (conteneur, en-tête,
   pied de page, points de rupture 921 / 544 px) pour faciliter un portage futur.
   ========================================================================== */

/* ---------- Polices (hébergées localement, licence OFL) ---------- */
@font-face { font-family: "Inter"; font-weight: 600; font-style: normal; font-display: swap; src: url("../fonts/inter-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "Inter"; font-weight: 700; font-style: normal; font-display: swap; src: url("../fonts/inter-latin-700-normal.woff2") format("woff2"); }
@font-face { font-family: "Inter"; font-weight: 800; font-style: normal; font-display: swap; src: url("../fonts/inter-latin-800-normal.woff2") format("woff2"); }
@font-face { font-family: "Roboto"; font-weight: 400; font-style: normal; font-display: swap; src: url("../fonts/roboto-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Roboto"; font-weight: 400; font-style: italic; font-display: swap; src: url("../fonts/roboto-latin-400-italic.woff2") format("woff2"); }
@font-face { font-family: "Roboto"; font-weight: 500; font-style: normal; font-display: swap; src: url("../fonts/roboto-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family: "Roboto"; font-weight: 700; font-style: normal; font-display: swap; src: url("../fonts/roboto-latin-700-normal.woff2") format("woff2"); }

/* ---------- Jetons de la charte (mesurés sur le logo) ---------- */
:root {
  --tn-marine: #013359;
  --tn-marine-2: #0A4677;
  --tn-marine-fonce: #01243F;
  --tn-rouge: #D3141E;
  --tn-rouge-fonce: #A80F17;
  --tn-bleu: #0074C0;
  --tn-or: #D1A538;
  --tn-blanc: #FFFFFF;
  --tn-texte: #2B3645;
  --tn-gris: #5B6776;
  --tn-fond-clair: #F2F6FA;
  --tn-bordure: #DCE3EB;

  /* Palette globale au format Astra (--ast-global-color-0 à 8) */
  --ast-global-color-0: var(--tn-rouge);
  --ast-global-color-1: var(--tn-rouge-fonce);
  --ast-global-color-2: var(--tn-marine);
  --ast-global-color-3: var(--tn-texte);
  --ast-global-color-4: var(--tn-blanc);
  --ast-global-color-5: var(--tn-fond-clair);
  --ast-global-color-6: var(--tn-bleu);
  --ast-global-color-7: var(--tn-bordure);
  --ast-global-color-8: var(--tn-or);

  --tn-font-titre: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  --tn-font-texte: "Roboto", system-ui, -apple-system, "Segoe UI", sans-serif;
  --tn-rayon: 12px;
  --tn-rayon-petit: 6px;
  --tn-ombre: 0 10px 30px rgba(1, 51, 89, .10);
  --tn-ombre-forte: 0 18px 45px rgba(1, 51, 89, .18);
  --tn-conteneur: 1200px;
  --tn-transition: .2s ease;

  /* Liseré tricolore (drapeau) */
  --tn-tricolore: linear-gradient(90deg, var(--tn-bleu) 0 33.333%, var(--tn-blanc) 33.333% 66.666%, var(--tn-rouge) 66.666% 100%);

  /* Icônes (masques SVG en ligne, aucune ressource externe) */
  --ico-flamme: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13.5.67s.74 2.65.74 4.8c0 2.06-1.35 3.73-3.41 3.73-2.07 0-3.63-1.67-3.63-3.73l.03-.36C5.21 7.51 4 10.62 4 14c0 4.42 3.58 8 8 8s8-3.58 8-8C20 8.61 17.41 3.8 13.5.67zM11.71 19c-1.78 0-3.22-1.4-3.22-3.14 0-1.62 1.05-2.76 2.81-3.12 1.77-.36 3.6-1.21 4.62-2.58.39 1.29.59 2.65.59 4.04 0 2.65-2.15 4.8-4.8 4.8z'/%3E%3C/svg%3E");
  --ico-flocon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M22 11h-4.17l3.24-3.24-1.41-1.42L15 11h-2V9l4.66-4.66-1.42-1.41L13 6.17V2h-2v4.17L7.76 2.93 6.34 4.34 11 9v2H9L4.34 6.34 2.93 7.76 6.17 11H2v2h4.17l-3.24 3.24 1.41 1.42L9 13h2v2l-4.66 4.66 1.42 1.41L11 17.83V22h2v-4.17l3.24 3.24 1.42-1.41L13 15v-2h2l4.66 4.66 1.41-1.42L17.83 13H22z'/%3E%3C/svg%3E");
  --ico-pulve: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M8 10a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v12H8zM10 4h3v3h-3zM13 4.5h4v2h-4zM19 3a1 1 0 1 0 2 0 1 1 0 1 0-2 0zM19.5 6a1 1 0 1 0 2 0 1 1 0 1 0-2 0zM19 9a1 1 0 1 0 2 0 1 1 0 1 0-2 0z'/%3E%3C/svg%3E");
  --ico-brume: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96z'/%3E%3C/svg%3E");
  --ico-lavage: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.17 16.83c1.56 1.56 4.1 1.56 5.66 0 1.56-1.56 1.56-4.1 0-5.66l-5.66 5.66zM18 2.01 6 2c-1.11 0-2 .89-2 2v16c0 1.11.89 2 2 2h12c1.11 0 2-.89 2-2V4c0-1.11-.89-1.99-2-1.99zM10 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM7 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm5 16c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z'/%3E%3C/svg%3E");
  --ico-regle: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 10H3V8h2v4h2V8h2v4h2V8h2v4h2V8h2v4h2V8h2v8z'/%3E%3C/svg%3E");
  --ico-oeuf: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2C8.5 2 5 8.6 5 13.6 5 17.7 8.1 21 12 21s7-3.3 7-7.4C19 8.6 15.5 2 12 2z'/%3E%3C/svg%3E");
  --ico-oeil: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z'/%3E%3C/svg%3E");
  --ico-punaise: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 5a2.5 2.5 0 0 0-2.45 2H8.4L6.7 5.3 5.3 6.7 7 8.4V9c-1.3.7-2.2 1.9-2.6 3.3L2 12v2l2.3.3c.1.7.3 1.4.7 2L3.3 18 4.7 19.4l1.6-1.6C7.8 19.2 9.8 20 12 20s4.2-.8 5.7-2.2l1.6 1.6 1.4-1.4-1.7-1.7c.4-.6.6-1.3.7-2L22 14v-2l-2.4.3c-.4-1.4-1.3-2.6-2.6-3.3v-.6l1.7-1.7-1.4-1.4L15.6 7h-1.15A2.5 2.5 0 0 0 12 5zm-1 6h2v7.9a6 6 0 0 1-2 0z'/%3E%3C/svg%3E");
  --ico-alerte: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z'/%3E%3C/svg%3E");
  --ico-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E");
  --ico-phone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.62 10.79a15.05 15.05 0 0 0 6.59 6.59l2.2-2.2a1 1 0 0 1 1.02-.24c1.12.37 2.33.57 3.57.57a1 1 0 0 1 1 1V20a1 1 0 0 1-1 1A17 17 0 0 1 3 4a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1c0 1.25.2 2.45.57 3.57a1 1 0 0 1-.25 1.02z'/%3E%3C/svg%3E");
  --ico-mail: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 4H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zm0 4-8 5-8-5V6l8 5 8-5z'/%3E%3C/svg%3E");
  --ico-pin: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a7 7 0 0 0-7 7c0 5.25 7 13 7 13s7-7.75 7-13a7 7 0 0 0-7-7zm0 9.5A2.5 2.5 0 1 1 12 6.5a2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E");
  --ico-clock: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm0 18a8 8 0 1 1 0-16 8 8 0 0 1 0 16zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z'/%3E%3C/svg%3E");
  --ico-shield: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 1 3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm-2 16-4-4 1.41-1.41L10 14.17l6.59-6.59L18 9l-8 8z'/%3E%3C/svg%3E");
  --ico-bolt: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 2v11h3v9l7-12h-4l4-8z'/%3E%3C/svg%3E");
  --ico-doc: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z'/%3E%3C/svg%3E");
  --ico-calendar: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M19 4h-1V2h-2v2H8V2H6v2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zm0 16H5V9h14v11zM7 11h5v5H7z'/%3E%3C/svg%3E");
  --ico-users: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M16 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-8 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5C15 14.17 10.33 13 8 13zm8 0c-.29 0-.62.02-.97.05A4.22 4.22 0 0 1 17 16.5V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z'/%3E%3C/svg%3E");
  --ico-search: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M15.5 14h-.79l-.28-.27A6.47 6.47 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16a6.47 6.47 0 0 0 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0A4.5 4.5 0 1 1 14 9.5 4.49 4.49 0 0 1 9.5 14z'/%3E%3C/svg%3E");
  --ico-leaf: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17 8C8 10 5.9 16.17 3.82 21.34l1.89.66.95-2.3c.48.17.98.3 1.34.3C19 20 22 3 22 3c-1 2-8 2.25-13 3.25S2 11.5 2 13.5s1.75 3.75 1.75 3.75C7 8 17 8 17 8z'/%3E%3C/svg%3E");
  --ico-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z'/%3E%3C/svg%3E");
  --ico-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6z'/%3E%3C/svg%3E");
  --ico-plus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z'/%3E%3C/svg%3E");
  --ico-quote: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 17h3l2-4V7H5v6h3zm8 0h3l2-4V7h-6v6h3z'/%3E%3C/svg%3E");
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 110px; }
body {
  margin: 0; background: var(--tn-blanc); color: var(--tn-texte);
  font-family: var(--tn-font-texte); font-size: 17px; line-height: 1.65;
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--tn-bleu); text-decoration: none; transition: color var(--tn-transition); }
a, button, summary { -webkit-tap-highlight-color: transparent; }
a:hover { color: var(--tn-rouge); }
:focus-visible { outline: 3px solid var(--tn-bleu); outline-offset: 3px; border-radius: 4px; }
p { margin: 0 0 1.1em; }
ul, ol { margin: 0 0 1.1em; padding-left: 1.3em; }
strong { color: var(--tn-marine); font-weight: 700; }
h1, h2, h3, h4, h5, h6 {
  font-family: var(--tn-font-titre); color: var(--tn-marine); font-weight: 800;
  line-height: 1.2; margin: 0 0 .6em; letter-spacing: -.01em;
}
h1 { font-size: clamp(2rem, 1.35rem + 2.6vw, 3.25rem); }
h2 { font-size: clamp(1.6rem, 1.2rem + 1.6vw, 2.4rem); }
h3 { font-size: clamp(1.2rem, 1.05rem + .6vw, 1.45rem); font-weight: 700; }
h4 { font-size: 1.15rem; font-weight: 700; }
h5, h6 { font-size: 1rem; font-weight: 700; }
hr { border: 0; height: 1px; background: var(--tn-bordure); margin: 2rem 0; }

.screen-reader-text {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.skip-link:focus {
  position: fixed; top: 10px; left: 10px; z-index: 1000; width: auto; height: auto; clip: auto;
  background: var(--tn-blanc); color: var(--tn-marine); padding: 12px 18px; border-radius: var(--tn-rayon-petit);
  box-shadow: var(--tn-ombre-forte); font-weight: 700;
}

/* ---------- Conteneur Astra ---------- */
.ast-container { width: 100%; max-width: calc(var(--tn-conteneur) + 40px); margin: 0 auto; padding: 0 20px; }
.ast-container--narrow { max-width: 860px; }

/* ---------- Icônes ---------- */
.tn-ico {
  display: inline-block; width: 1.1em; height: 1.1em; flex: none; vertical-align: -.15em;
  background: currentColor; -webkit-mask: var(--ico) center / contain no-repeat; mask: var(--ico) center / contain no-repeat;
}
.tn-ico--check { --ico: var(--ico-check); } .tn-ico--phone { --ico: var(--ico-phone); }
.tn-ico--mail { --ico: var(--ico-mail); } .tn-ico--pin { --ico: var(--ico-pin); }
.tn-ico--clock { --ico: var(--ico-clock); } .tn-ico--shield { --ico: var(--ico-shield); }
.tn-ico--bolt { --ico: var(--ico-bolt); } .tn-ico--doc { --ico: var(--ico-doc); }
.tn-ico--calendar { --ico: var(--ico-calendar); } .tn-ico--users { --ico: var(--ico-users); }
.tn-ico--search { --ico: var(--ico-search); } .tn-ico--leaf { --ico: var(--ico-leaf); }
.tn-ico--arrow { --ico: var(--ico-arrow); } .tn-ico--chevron { --ico: var(--ico-chevron); }
.tn-ico--quote { --ico: var(--ico-quote); }
.tn-ico--flamme { --ico: var(--ico-flamme); } .tn-ico--flocon { --ico: var(--ico-flocon); }
.tn-ico--pulve { --ico: var(--ico-pulve); } .tn-ico--brume { --ico: var(--ico-brume); }
.tn-ico--lavage { --ico: var(--ico-lavage); } .tn-ico--regle { --ico: var(--ico-regle); }
.tn-ico--oeuf { --ico: var(--ico-oeuf); } .tn-ico--oeil { --ico: var(--ico-oeil); }
.tn-ico--punaise { --ico: var(--ico-punaise); } .tn-ico--alerte { --ico: var(--ico-alerte); }

/* ---------- Boutons (style Astra) ---------- */
.ast-button {
  display: inline-flex; align-items: center; justify-content: center; gap: .55em;
  font-family: var(--tn-font-titre); font-weight: 700; font-size: 1rem; line-height: 1.2;
  padding: 15px 28px; border-radius: var(--tn-rayon-petit); border: 2px solid var(--tn-rouge);
  background: var(--tn-rouge); color: var(--tn-blanc); cursor: pointer; text-align: center;
  transition: background var(--tn-transition), border-color var(--tn-transition), color var(--tn-transition), transform var(--tn-transition), box-shadow var(--tn-transition);
}
.ast-button:hover { background: var(--tn-rouge-fonce); border-color: var(--tn-rouge-fonce); color: var(--tn-blanc); transform: translateY(-1px); box-shadow: 0 8px 20px rgba(211, 20, 30, .25); }
.ast-button--marine { background: var(--tn-marine); border-color: var(--tn-marine); }
.ast-button--marine:hover { background: var(--tn-marine-fonce); border-color: var(--tn-marine-fonce); box-shadow: var(--tn-ombre); }
.ast-button--outline { background: transparent; color: var(--tn-marine); border-color: var(--tn-marine); }
.ast-button--outline:hover { background: var(--tn-marine); border-color: var(--tn-marine); color: var(--tn-blanc); box-shadow: none; }
.ast-button--light { background: var(--tn-blanc); color: var(--tn-marine); border-color: var(--tn-blanc); }
.ast-button--light:hover { background: transparent; color: var(--tn-blanc); border-color: var(--tn-blanc); box-shadow: none; }
.ast-button--small { padding: 10px 18px; font-size: .92rem; }
.ast-button--large { padding: 18px 34px; font-size: 1.08rem; }
.tn-actions { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; margin-top: 1.6rem; }
.tn-actions--center { justify-content: center; }

/* ---------- Liseré tricolore et surtitre ---------- */
.tn-tricolore-bar { height: 5px; background: var(--tn-tricolore); }
.tn-eyebrow {
  display: inline-flex; align-items: center; gap: 10px; margin: 0 0 .9rem;
  font-family: var(--tn-font-titre); font-size: .8rem; font-weight: 800; letter-spacing: .14em;
  text-transform: uppercase; color: var(--tn-rouge);
}
.tn-eyebrow::before {
  content: ""; width: 24px; height: 14px; flex: none; border-radius: 2px;
  background: var(--tn-tricolore); box-shadow: 0 0 0 1px var(--tn-bordure);
}
.tn-section--marine .tn-eyebrow, .tn-cta .tn-eyebrow, .tn-page-title .tn-eyebrow { color: var(--tn-blanc); }
.tn-section--marine .tn-eyebrow::before, .tn-cta .tn-eyebrow::before, .tn-page-title .tn-eyebrow::before { box-shadow: none; }
.tn-lead { font-size: 1.14rem; color: var(--tn-gris); }
.tn-accent { color: var(--tn-rouge); }
.tn-text-center { text-align: center; }
.tn-nowrap, .tn-phone-box__number, .tn-topphone { white-space: nowrap; }

/* ==========================================================================
   EN-TÊTE (structure Astra : barre supérieure + en-tête principal)
   ========================================================================== */
.ast-above-header-bar { background: var(--tn-marine); color: #D7E3EE; font-size: .88rem; }
.ast-above-header-bar .ast-container { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 42px; }
.ast-above-header-bar a { color: var(--tn-blanc); }
.ast-above-header-bar a:hover { color: #FFD9DB; }
.tn-topinfo { display: flex; flex-wrap: wrap; gap: 6px 22px; margin: 0; padding: 0; list-style: none; }
.tn-topinfo li { display: inline-flex; align-items: center; gap: 8px; }
.tn-topinfo .tn-ico { color: #8FB8DC; }
.tn-topphone { font-family: var(--tn-font-titre); font-weight: 800; font-size: 1rem; display: inline-flex; align-items: center; gap: 8px; }

.site-header { position: sticky; top: 0; z-index: 100; background: var(--tn-blanc); transition: box-shadow var(--tn-transition); }
.site-header.is-scrolled { box-shadow: 0 6px 24px rgba(1, 51, 89, .12); }
.ast-primary-header-bar .ast-container { display: flex; align-items: center; gap: 24px; min-height: 84px; }
.site-branding { flex: none; }
.site-branding img { height: 64px; width: auto; }
.main-navigation { margin-left: auto; }
.main-header-menu { display: flex; align-items: center; gap: 2px; margin: 0; padding: 0; list-style: none; }
.main-header-menu > li { position: relative; }
.main-header-menu a, .main-header-menu .menu-parent {
  display: flex; align-items: center; gap: 6px; padding: 10px 14px; border-radius: var(--tn-rayon-petit);
  font-family: var(--tn-font-titre); font-weight: 700; font-size: .98rem; color: var(--tn-marine);
  background: none; border: 0; cursor: pointer;
}
.main-header-menu .menu-parent .tn-ico { width: .95em; height: .95em; transition: transform var(--tn-transition); }
.main-header-menu > li > a:hover, .main-header-menu .menu-parent:hover,
.main-header-menu > li:focus-within > .menu-parent { color: var(--tn-rouge); }
.main-header-menu [aria-current="page"], .main-header-menu .current-menu-ancestor > .menu-parent { color: var(--tn-rouge); }
.main-header-menu > li > [aria-current="page"]::after, .main-header-menu > .current-menu-ancestor > .menu-parent::after {
  content: ""; position: absolute; left: 14px; right: 14px; bottom: 2px; height: 3px; border-radius: 3px; background: var(--tn-tricolore);
}
.sub-menu {
  position: absolute; top: calc(100% + 6px); left: 0; min-width: 250px; margin: 0; padding: 10px; list-style: none;
  background: var(--tn-blanc); border-radius: var(--tn-rayon); box-shadow: var(--tn-ombre-forte); border-top: 4px solid var(--tn-rouge);
  opacity: 0; visibility: hidden; transform: translateY(8px); transition: opacity var(--tn-transition), transform var(--tn-transition), visibility var(--tn-transition);
}
.sub-menu a { padding: 10px 12px; font-weight: 600; font-size: .95rem; }
.sub-menu a:hover, .sub-menu [aria-current="page"] { background: var(--tn-fond-clair); color: var(--tn-rouge); }
.main-header-menu > li:hover > .sub-menu, .main-header-menu > li:focus-within > .sub-menu, .main-header-menu > li.is-open > .sub-menu {
  opacity: 1; visibility: visible; transform: none;
}
.main-header-menu > li:hover > .menu-parent .tn-ico, .main-header-menu > li.is-open > .menu-parent .tn-ico { transform: rotate(180deg); }
.ast-header-cta { display: flex; align-items: center; gap: 10px; flex: none; }
.tn-mobile-call, .menu-toggle { display: none; }
.menu-toggle, .tn-mobile-call {
  width: 46px; height: 46px; border-radius: var(--tn-rayon-petit); border: 2px solid var(--tn-bordure);
  background: var(--tn-blanc); color: var(--tn-marine); align-items: center; justify-content: center; cursor: pointer; padding: 0;
}
.tn-mobile-call { background: var(--tn-rouge); border-color: var(--tn-rouge); color: var(--tn-blanc); }
.tn-mobile-call .tn-ico { width: 22px; height: 22px; }
.menu-toggle svg { width: 24px; height: 24px; }
.menu-toggle .tn-close { display: none; }
.menu-toggle[aria-expanded="true"] .tn-open { display: none; }
.menu-toggle[aria-expanded="true"] .tn-close { display: block; }

/* ---------- Bandeau de titre de page (page header Astra) ---------- */
.tn-page-title {
  position: relative; overflow: hidden; color: #DCE7F1;
  background: linear-gradient(135deg, var(--tn-marine) 0%, var(--tn-marine-2) 100%);
}
.tn-page-title::before {
  content: ""; position: absolute; inset: 0 -10% 0 auto; width: 46%;
  background: linear-gradient(115deg, transparent 0 22%, rgba(255,255,255,.07) 22% 40%, rgba(211,20,30,.9) 40% 47%, transparent 47%);
  pointer-events: none;
}
.tn-page-title .ast-container { position: relative; display: grid; grid-template-columns: 1.35fr 1fr; align-items: center; gap: 32px; min-height: 300px; padding-top: 44px; padding-bottom: 44px; }
.tn-page-title h1 { color: var(--tn-blanc); margin-bottom: .35em; }
.tn-page-title p { color: #DCE7F1; max-width: 620px; }
.tn-page-title__media { justify-self: end; }
.tn-page-title__media img { height: 280px; width: auto; max-width: 100%; object-fit: contain; filter: drop-shadow(0 18px 30px rgba(0,0,0,.35)); }
.tn-page-title__media .tn-figure img { height: auto; width: 100%; filter: none; }
.tn-page-title__media .tn-figure { max-width: 300px; border: 4px solid rgba(255,255,255,.9); }
.tn-breadcrumb ol { display: flex; flex-wrap: wrap; gap: 4px 0; margin: 0 0 1rem; padding: 0; list-style: none; font-size: .9rem; }
.tn-breadcrumb li { display: inline-flex; align-items: center; }
.tn-breadcrumb li + li::before { content: "/"; margin: 0 10px; opacity: .55; }
.tn-breadcrumb a { color: var(--tn-blanc); }
.tn-breadcrumb a:hover { color: #FFD9DB; }
.tn-breadcrumb [aria-current="page"] { color: #AFC7DC; }

/* ---------- Héros d'accueil ---------- */
.tn-hero { position: relative; overflow: hidden; background: var(--tn-fond-clair); }
.tn-hero::before {
  content: ""; position: absolute; top: 0; bottom: 0; right: 0; width: 44%;
  background: var(--tn-marine); clip-path: polygon(22% 0, 100% 0, 100% 100%, 0 100%);
}
.tn-hero::after {
  content: ""; position: absolute; top: 0; bottom: 0; right: calc(44% - 18px); width: 60px;
  background: var(--tn-rouge); clip-path: polygon(78% 0, 100% 0, 22% 100%, 0 100%); opacity: .95;
}
.tn-hero .ast-container { position: relative; z-index: 1; display: grid; grid-template-columns: 1.1fr .9fr; align-items: center; gap: 48px; padding-top: 72px; padding-bottom: 80px; }
.tn-hero h1 { margin-bottom: .4em; }
.tn-hero h1 .tn-accent { display: block; }
.tn-hero__text .tn-lead { max-width: 560px; }
.tn-hero__media { position: relative; justify-self: center; max-width: 480px; }
.tn-hero__media .tn-figure { border: 6px solid var(--tn-blanc); box-shadow: var(--tn-ombre-forte); }
.tn-hero__points { display: flex; flex-wrap: wrap; gap: 10px 22px; margin: 1.6rem 0 0; padding: 0; list-style: none; font-weight: 500; color: var(--tn-marine); }
.tn-hero__points li { display: inline-flex; align-items: center; gap: 8px; }
.tn-hero__points .tn-ico { color: var(--tn-rouge); }

/* ---------- Sections ---------- */
.tn-section { padding: 88px 0; }
.tn-section--tight { padding: 56px 0; }
.tn-section--flush-top { padding-top: 0; }
.tn-section--alt { background: var(--tn-fond-clair); }
.tn-section--marine { background: var(--tn-marine); color: #D7E3EE; }
.tn-section--marine h2, .tn-section--marine h3, .tn-section--marine h4, .tn-section--marine strong { color: var(--tn-blanc); }
.tn-section__head { max-width: 780px; margin: 0 auto 48px; text-align: center; }
.tn-section__head--left { margin-left: 0; text-align: left; }
.tn-section__head p:last-child { margin-bottom: 0; }

/* ---------- Deux colonnes ---------- */
.tn-split { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }
.tn-split--reverse .tn-split__media { order: 2; }
.tn-split--top { align-items: start; }
.tn-split__content > :last-child { margin-bottom: 0; }

/* ---------- Grilles ---------- */
.tn-grid { display: grid; gap: 28px; }
.tn-grid--2 { grid-template-columns: repeat(2, 1fr); }
.tn-grid--3 { grid-template-columns: repeat(3, 1fr); }
.tn-grid--4 { grid-template-columns: repeat(4, 1fr); }

/* ---------- Images ---------- */
.tn-figure { margin: 0; border-radius: var(--tn-rayon); overflow: hidden; box-shadow: var(--tn-ombre); background: var(--tn-blanc); }
.tn-figure img { width: 100%; }
.tn-figure--plain { border-radius: 0; overflow: visible; box-shadow: none; background: none; }
.tn-figure--plain img { filter: drop-shadow(0 14px 24px rgba(1, 51, 89, .18)); }
.tn-figure figcaption { padding: 12px 16px; font-size: .9rem; color: var(--tn-gris); }
.tn-media-duo { position: relative; padding: 0 0 18% 0; }
.tn-media-duo > .tn-figure:first-child { width: 82%; }
.tn-media-duo > .tn-figure:last-child { position: absolute; right: 0; bottom: 0; width: 52%; border: 6px solid var(--tn-blanc); box-shadow: var(--tn-ombre-forte); }

/* ---------- Cartes ---------- */
.tn-card {
  display: flex; flex-direction: column; background: var(--tn-blanc); border: 1px solid var(--tn-bordure);
  border-radius: var(--tn-rayon); overflow: hidden; transition: transform var(--tn-transition), box-shadow var(--tn-transition), border-color var(--tn-transition);
}
.tn-card:hover { transform: translateY(-4px); box-shadow: var(--tn-ombre-forte); border-color: transparent; }
.tn-card__media { aspect-ratio: 4 / 3; overflow: hidden; background: var(--tn-fond-clair); border-bottom: 4px solid transparent; border-image: var(--tn-tricolore) 1; }
.tn-card__media img { width: 100%; height: 100%; object-fit: cover; }
.tn-card__body { display: flex; flex-direction: column; flex: 1; padding: 24px 24px 26px; }
.tn-card__title { margin-bottom: .45em; }
.tn-card__title a { color: inherit; }
.tn-card__text { color: var(--tn-gris); flex: 1; }
.tn-card__link { display: inline-flex; align-items: center; gap: 8px; margin-top: 6px; font-family: var(--tn-font-titre); font-weight: 700; color: var(--tn-rouge); }
.tn-card__link .tn-ico { transition: transform var(--tn-transition); }
.tn-card__link:hover .tn-ico { transform: translateX(4px); }
.tn-card--link { position: relative; }
.tn-card--link .tn-card__title a::after { content: ""; position: absolute; inset: 0; }

/* ---------- Atouts (icône + titre + texte) ---------- */
.tn-features { display: grid; gap: 24px; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); margin: 0; padding: 0; list-style: none; }
.tn-feature { display: flex; gap: 16px; align-items: flex-start; }
.tn-feature__icon {
  display: inline-flex; align-items: center; justify-content: center; flex: none; width: 52px; height: 52px;
  border-radius: 50%; background: var(--tn-fond-clair); color: var(--tn-rouge); box-shadow: inset 0 0 0 2px var(--tn-bordure);
}
.tn-feature__icon .tn-ico { width: 24px; height: 24px; }
.tn-feature__title { font-family: var(--tn-font-titre); font-weight: 700; color: var(--tn-marine); font-size: 1.08rem; line-height: 1.3; margin: 2px 0 .3em; }
.tn-feature__text { margin: 0; color: var(--tn-gris); }
.tn-section--marine .tn-feature__icon { background: rgba(255,255,255,.08); box-shadow: inset 0 0 0 2px rgba(255,255,255,.18); color: var(--tn-blanc); }
.tn-section--marine .tn-feature__text { color: #C8D7E5; }
.tn-trustbar { background: var(--tn-blanc); border-radius: var(--tn-rayon); box-shadow: var(--tn-ombre); padding: 28px 32px; }
.tn-trustbar .tn-features { grid-template-columns: repeat(4, 1fr); }
.tn-trustbar--overlap { position: relative; z-index: 2; margin-top: -48px; }

/* ---------- Listes à coches ---------- */
.tn-checklist { margin: 0 0 1.3em; padding: 0; list-style: none; display: grid; gap: 10px; }
.tn-checklist li { position: relative; padding-left: 34px; }
.tn-checklist li::before {
  content: ""; position: absolute; left: 0; top: .18em; width: 22px; height: 22px; border-radius: 50%;
  background: var(--tn-rouge) var(--ico-check) center / 15px no-repeat;
  -webkit-mask: none; background-color: var(--tn-rouge);
}
.tn-checklist li::after {
  content: ""; position: absolute; left: 4px; top: calc(.18em + 4px); width: 14px; height: 14px; background: var(--tn-blanc);
  -webkit-mask: var(--ico-check) center / contain no-repeat; mask: var(--ico-check) center / contain no-repeat;
}
.tn-checklist--2 { grid-template-columns: repeat(2, 1fr); gap: 10px 28px; }
.tn-checklist--caps li { text-transform: uppercase; font-family: var(--tn-font-titre); font-weight: 700; font-size: .86rem; letter-spacing: .04em; color: var(--tn-marine); }
.tn-checklist--marine li::before { background-color: var(--tn-marine); }

/* ---------- Chiffres clés ---------- */
.tn-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 24px; }
.tn-stat { text-align: center; padding: 30px 20px; border-radius: var(--tn-rayon); background: var(--tn-blanc); border: 1px solid var(--tn-bordure); }
.tn-stat__value { display: block; font-family: var(--tn-font-titre); font-weight: 800; font-size: clamp(2rem, 1.6rem + 1.4vw, 2.8rem); line-height: 1.1; color: var(--tn-rouge); }
.tn-stat__label { display: block; margin: .45em 0 .35em; font-family: var(--tn-font-titre); font-weight: 700; color: var(--tn-marine); }
.tn-stat__text { margin: 0; font-size: .95rem; color: var(--tn-gris); }
.tn-section--marine .tn-stat { background: rgba(255,255,255,.05); border-color: rgba(255,255,255,.14); }
.tn-section--marine .tn-stat__label { color: var(--tn-blanc); }
.tn-section--marine .tn-stat__text { color: #C8D7E5; }
.tn-stat--text .tn-stat__value { font-size: clamp(1.3rem, 1.1rem + .8vw, 1.7rem); }
.tn-stat__icon { display: inline-flex; align-items: center; justify-content: center; width: 56px; height: 56px; margin: 0 auto 10px; border-radius: 50%; background: var(--tn-fond-clair); color: var(--tn-rouge); }
.tn-stat__icon .tn-ico { width: 26px; height: 26px; }
.tn-section--marine .tn-stat__icon { background: rgba(255,255,255,.08); color: var(--tn-blanc); }
.tn-stat--inline { display: inline-flex; align-items: center; gap: 16px; text-align: left; padding: 18px 24px; box-shadow: var(--tn-ombre); border: 0; }
.tn-stat--inline .tn-stat__label { margin: 0; }

/* ---------- Étapes ---------- */
.tn-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; counter-reset: tn-step; margin: 0; padding: 0; list-style: none; }
.tn-steps--4 { grid-template-columns: repeat(4, 1fr); }
.tn-step { position: relative; padding: 34px 26px 28px; border-radius: var(--tn-rayon); background: var(--tn-blanc); border: 1px solid var(--tn-bordure); counter-increment: tn-step; }
.tn-step::before {
  content: counter(tn-step, decimal-leading-zero); display: inline-flex; align-items: center; justify-content: center;
  width: 54px; height: 54px; margin-bottom: 16px; border-radius: 50%; background: var(--tn-marine); color: var(--tn-blanc);
  font-family: var(--tn-font-titre); font-weight: 800; font-size: 1.1rem; box-shadow: 0 0 0 5px var(--tn-fond-clair), 0 0 0 7px var(--tn-rouge);
}
.tn-step__title { font-size: 1.12rem; }
.tn-step p:last-child { margin-bottom: 0; color: var(--tn-gris); }

/* ---------- Écussons ---------- */
.tn-badges { display: flex; flex-wrap: wrap; justify-content: center; gap: 24px; margin: 0; padding: 0; list-style: none; }
.tn-badge { flex: 0 1 200px; text-align: center; }
.tn-badge img { width: 100%; max-width: 190px; margin: 0 auto; filter: drop-shadow(0 12px 20px rgba(1, 51, 89, .2)); transition: transform var(--tn-transition); }
.tn-badge:hover img { transform: translateY(-4px) rotate(-2deg); }
.tn-badges--compact { flex-wrap: nowrap; gap: 14px; }
.tn-badges--compact .tn-badge { flex: 1 1 0; min-width: 0; }
.tn-badges--compact .tn-badge img { max-width: 150px; }
.tn-badges--compact .tn-badge__label { font-size: .76rem; }
.tn-badge__label { display: block; margin-top: 10px; font-family: var(--tn-font-titre); font-weight: 800; font-size: .88rem; letter-spacing: .08em; text-transform: uppercase; color: var(--tn-marine); }

/* ---------- Formules / tarifs ---------- */
.tn-pricing { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; align-items: stretch; }
.tn-price-card {
  display: flex; flex-direction: column; background: var(--tn-blanc); border: 1px solid var(--tn-bordure);
  border-radius: var(--tn-rayon); overflow: hidden; box-shadow: var(--tn-ombre);
}
.tn-price-card__head { padding: 26px 26px 22px; background: var(--tn-marine); color: var(--tn-blanc); text-align: center; border-bottom: 5px solid transparent; border-image: var(--tn-tricolore) 1; }
.tn-price-card__title { margin: 0 0 .3em; color: var(--tn-blanc); font-size: 1.15rem; letter-spacing: .06em; text-transform: uppercase; }
.tn-price-card__subtitle { margin: 0; color: #BFD2E3; font-size: .95rem; }
.tn-price-card__price { display: block; margin-top: 10px; font-family: var(--tn-font-titre); font-weight: 800; font-size: 2rem; line-height: 1.1; color: var(--tn-blanc); }
.tn-price-card__price small { font-size: .95rem; font-weight: 600; color: #BFD2E3; }
.tn-price-card__media { padding: 20px 26px 0; }
.tn-price-card__media img { height: 170px; width: auto; max-width: 100%; object-fit: contain; margin: 0 auto; }
.tn-price-card__body { display: flex; flex-direction: column; flex: 1; padding: 24px 26px 28px; }
.tn-price-card__body .tn-checklist { flex: 1; }
.tn-price-card__body .ast-button { width: 100%; }
.tn-price-card--featured { border: 2px solid var(--tn-rouge); transform: translateY(-8px); box-shadow: var(--tn-ombre-forte); }
.tn-price-card--featured .tn-price-card__head { background: var(--tn-rouge); }

/* ---------- Tableau ---------- */
.tn-table-wrap { overflow-x: auto; border-radius: var(--tn-rayon); box-shadow: var(--tn-ombre); }
.tn-table { width: 100%; border-collapse: collapse; background: var(--tn-blanc); font-size: .98rem; }
.tn-table th, .tn-table td { padding: 14px 18px; text-align: left; border-bottom: 1px solid var(--tn-bordure); }
.tn-table thead th { background: var(--tn-marine); color: var(--tn-blanc); font-family: var(--tn-font-titre); font-weight: 700; }
.tn-table tbody tr:nth-child(even) { background: var(--tn-fond-clair); }

/* ---------- FAQ (accordéon sans JavaScript) ---------- */
.tn-faq { display: grid; gap: 14px; }
.tn-faq__item { background: var(--tn-blanc); border: 1px solid var(--tn-bordure); border-radius: var(--tn-rayon); transition: box-shadow var(--tn-transition), border-color var(--tn-transition); }
.tn-faq__item[open] { box-shadow: var(--tn-ombre); border-color: transparent; }
.tn-faq__item summary {
  position: relative; list-style: none; cursor: pointer; padding: 20px 64px 20px 24px;
  font-family: var(--tn-font-titre); font-weight: 700; font-size: 1.04rem; color: var(--tn-marine);
}
.tn-faq__item summary::-webkit-details-marker { display: none; }
.tn-faq__item summary::after {
  content: ""; position: absolute; right: 20px; top: 50%; width: 30px; height: 30px; margin-top: -15px; border-radius: 50%;
  background: var(--tn-fond-clair); transition: transform var(--tn-transition), background var(--tn-transition);
}
.tn-faq__item summary::before {
  content: ""; position: absolute; right: 27px; top: 50%; z-index: 1; width: 16px; height: 16px; margin-top: -8px; background: var(--tn-rouge);
  -webkit-mask: var(--ico-plus) center / contain no-repeat; mask: var(--ico-plus) center / contain no-repeat; transition: transform var(--tn-transition);
}
.tn-faq__item[open] summary { color: var(--tn-rouge); }
.tn-faq__item[open] summary::before { transform: rotate(45deg); }
.tn-faq__answer { padding: 0 24px 20px; color: var(--tn-gris); }
.tn-faq__answer > :last-child { margin-bottom: 0; }

/* ---------- Témoignages ---------- */
.tn-testimonials { display: grid; grid-template-columns: repeat(2, 1fr); gap: 28px; }
.tn-testimonial { position: relative; margin: 0; padding: 32px 30px 28px; background: var(--tn-blanc); border-radius: var(--tn-rayon); box-shadow: var(--tn-ombre); }
.tn-testimonial::before {
  content: ""; position: absolute; top: 22px; right: 26px; width: 44px; height: 44px; background: var(--tn-fond-clair);
  -webkit-mask: var(--ico-quote) center / contain no-repeat; mask: var(--ico-quote) center / contain no-repeat;
}
.tn-testimonial blockquote { margin: 0 0 22px; padding-right: 48px; font-size: 1.05rem; font-style: italic; color: var(--tn-texte); }
.tn-testimonial figcaption { display: flex; align-items: center; gap: 14px; }
.tn-testimonial figcaption img { width: 62px; height: 62px; border-radius: 50%; object-fit: cover; box-shadow: 0 0 0 3px var(--tn-blanc), 0 0 0 5px var(--tn-rouge); }
.tn-testimonial__name { display: block; font-family: var(--tn-font-titre); font-weight: 800; color: var(--tn-marine); }
.tn-testimonial__place { display: block; font-size: .92rem; color: var(--tn-gris); }

/* ---------- Encart téléphone ---------- */
.tn-phone-box {
  display: inline-flex; align-items: center; gap: 16px; padding: 16px 22px 16px 16px; border-radius: var(--tn-rayon);
  background: var(--tn-blanc); box-shadow: var(--tn-ombre); color: var(--tn-marine);
}
.tn-phone-box:hover { color: var(--tn-marine); box-shadow: var(--tn-ombre-forte); }
.tn-phone-box__icon { display: inline-flex; align-items: center; justify-content: center; width: 54px; height: 54px; border-radius: 50%; background: var(--tn-rouge); color: var(--tn-blanc); flex: none; }
.tn-phone-box__icon .tn-ico { width: 24px; height: 24px; }
.tn-phone-box__label { display: block; font-size: .78rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--tn-gris); }
.tn-phone-box__number { display: block; font-family: var(--tn-font-titre); font-weight: 800; font-size: 1.45rem; line-height: 1.2; }

/* ---------- Bandeau d'appel à l'action ---------- */
.tn-cta { position: relative; overflow: hidden; background: var(--tn-marine); color: #D7E3EE; }
.tn-cta::before {
  content: ""; position: absolute; top: 0; bottom: 0; right: -4%; width: 42%;
  background: linear-gradient(110deg, transparent 0 18%, rgba(255,255,255,.08) 18% 44%, var(--tn-rouge) 44% 52%, transparent 52%);
}
.tn-cta .ast-container { position: relative; display: grid; grid-template-columns: 1.5fr 1fr; align-items: center; gap: 32px; padding-top: 64px; padding-bottom: 64px; }
.tn-cta h2 { color: var(--tn-blanc); margin-bottom: .35em; }
.tn-cta p { color: #D7E3EE; font-size: 1.1rem; }
.tn-cta strong { color: var(--tn-blanc); }
.tn-cta__media { justify-self: end; }
.tn-cta__media img { height: 260px; width: auto; max-width: 100%; object-fit: contain; filter: drop-shadow(0 18px 30px rgba(0,0,0,.35)); }
.tn-cta__media .tn-figure img { filter: none; }
.tn-cta--compact .ast-container { grid-template-columns: 1fr auto; padding-top: 44px; padding-bottom: 44px; }

/* ---------- Formulaire ---------- */
.tn-form-card { background: var(--tn-blanc); border-radius: var(--tn-rayon); box-shadow: var(--tn-ombre-forte); padding: 34px; border-top: 5px solid transparent; border-image: var(--tn-tricolore) 1; }
.tn-form { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px 18px; }
.tn-form__field { display: flex; flex-direction: column; gap: 6px; }
.tn-form__field--full { grid-column: 1 / -1; }
.tn-form label { font-family: var(--tn-font-titre); font-weight: 700; font-size: .9rem; color: var(--tn-marine); }
.tn-form input, .tn-form textarea, .tn-form select {
  width: 100%; padding: 13px 15px; border: 1px solid var(--tn-bordure); border-radius: var(--tn-rayon-petit);
  background: var(--tn-fond-clair); color: var(--tn-texte); font: inherit; font-size: 1rem; transition: border-color var(--tn-transition), background var(--tn-transition);
}
.tn-form textarea { min-height: 130px; resize: vertical; }
.tn-form input:focus, .tn-form textarea:focus, .tn-form select:focus { outline: none; border-color: var(--tn-bleu); background: var(--tn-blanc); box-shadow: 0 0 0 3px rgba(0, 116, 192, .15); }
.tn-form__actions { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 14px; }
.tn-form__notice { grid-column: 1 / -1; display: none; margin: 0; padding: 12px 16px; border-radius: var(--tn-rayon-petit); background: #FFF6DE; border-left: 4px solid var(--tn-or); color: #5A4613; font-size: .95rem; }
.tn-form__notice.is-visible { display: block; }
.tn-form__legal { grid-column: 1 / -1; margin: 0; font-size: .85rem; color: var(--tn-gris); }

/* ---------- Coordonnées ---------- */
.tn-contact-list { display: grid; gap: 16px; margin: 0; padding: 0; list-style: none; }
.tn-contact-list li { display: flex; gap: 14px; align-items: flex-start; }
.tn-contact-list .tn-ico { width: 22px; height: 22px; margin-top: 2px; color: var(--tn-rouge); }
.tn-contact-list strong { display: block; }

/* ---------- Texte long (pages légales, CGS) ---------- */
.tn-prose { max-width: 860px; margin: 0 auto; }
.tn-prose h2 { font-size: 1.5rem; margin-top: 2em; padding-top: .2em; }
.tn-prose h2:first-child { margin-top: 0; }
.tn-prose h3 { font-size: 1.15rem; margin-top: 1.6em; }
.tn-prose ul li { margin-bottom: .35em; }

/* ---------- Encadré ---------- */
.tn-note { padding: 18px 22px; border-radius: var(--tn-rayon); background: var(--tn-fond-clair); border-left: 5px solid var(--tn-bleu); }
.tn-note--rouge { border-left-color: var(--tn-rouge); }
.tn-note > :last-child { margin-bottom: 0; }

/* ==========================================================================
   PIED DE PAGE (footer builder Astra : bandeau d'appel + widgets + copyright)
   ========================================================================== */
.tn-footer-call { background: var(--tn-marine-fonce); color: var(--tn-blanc); border-top: 5px solid transparent; border-image: var(--tn-tricolore) 1; }
.tn-footer-call .ast-container { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px 28px; padding-top: 26px; padding-bottom: 26px; }
.tn-footer-call__text { display: flex; align-items: center; gap: 18px; font-family: var(--tn-font-titre); font-weight: 800; font-size: clamp(1.15rem, 1rem + .6vw, 1.5rem); }
.tn-footer-call__text img { width: 64px; height: 64px; border-radius: 50%; background: var(--tn-blanc); padding: 4px; }
.site-footer { background: var(--tn-fond-clair); color: var(--tn-gris); font-size: .97rem; }
.ast-footer-widgets .ast-container { display: grid; grid-template-columns: 1.35fr 1fr 1fr 1.25fr; gap: 40px; padding-top: 64px; padding-bottom: 56px; }
.ast-footer-widgets img.tn-footer-logo { width: 220px; height: auto; margin-bottom: 18px; }
.footer-widget-title { font-size: 1.05rem; margin-bottom: 1.1em; padding-bottom: .7em; position: relative; }
.footer-widget-title::after { content: ""; position: absolute; left: 0; bottom: 0; width: 42px; height: 4px; border-radius: 2px; background: var(--tn-tricolore); box-shadow: 0 0 0 1px var(--tn-bordure); }
.footer-menu { margin: 0; padding: 0; list-style: none; display: grid; gap: 9px; }
.footer-menu a { color: var(--tn-texte); }
.footer-menu a:hover { color: var(--tn-rouge); }
.site-footer .tn-contact-list a { color: var(--tn-texte); }
.site-footer .tn-contact-list a:hover { color: var(--tn-rouge); }
.ast-small-footer { background: var(--tn-marine); color: #BFD2E3; font-size: .9rem; }
.ast-small-footer::before { content: ""; display: block; height: 5px; background: var(--tn-tricolore); }
.ast-small-footer .ast-container { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 24px; padding-top: 18px; padding-bottom: 18px; }
.ast-small-footer a { color: var(--tn-blanc); }
.ast-small-footer a:hover { color: #FFD9DB; }
.ast-small-footer ul { display: flex; flex-wrap: wrap; gap: 6px 20px; margin: 0; padding: 0; list-style: none; }
/* Mobile : le bouton « retour en haut » (fixe, en bas à droite) ne doit pas masquer les derniers liens du pied de page */
@media (max-width: 921px) { .ast-small-footer .ast-container { padding-bottom: 84px; } }

/* ---------- Retour en haut (Astra scroll-to-top) ---------- */
.ast-scroll-top {
  position: fixed; right: 22px; bottom: 22px; z-index: 90; width: 46px; height: 46px; border: 0; border-radius: var(--tn-rayon-petit);
  background: var(--tn-marine); color: var(--tn-blanc); cursor: pointer; opacity: 0; visibility: hidden; transform: translateY(10px);
  transition: opacity var(--tn-transition), transform var(--tn-transition), visibility var(--tn-transition), background var(--tn-transition);
}
.ast-scroll-top .tn-ico { width: 24px; height: 24px; transform: rotate(180deg); }
.ast-scroll-top.is-visible { opacity: 1; visibility: visible; transform: none; }
.ast-scroll-top:hover { background: var(--tn-rouge); }

/* ==========================================================================
   RESPONSIVE — points de rupture Astra
   ========================================================================== */
@media (max-width: 1100px) {
  .main-header-menu a, .main-header-menu .menu-parent { padding: 10px 10px; font-size: .94rem; }
  .ast-header-cta .ast-button { padding: 12px 18px; }
}
@media (max-width: 921px) {
  body { font-size: 16px; }
  .ast-above-header-bar .tn-topinfo li:not(:first-child) { display: none; }
  .ast-primary-header-bar .ast-container { min-height: 70px; gap: 12px; }
  .site-branding img { height: 50px; }
  .menu-toggle, .tn-mobile-call { display: inline-flex; }
  .ast-header-cta { margin-left: auto; }
  .ast-header-cta .ast-button { display: none; }
  .main-navigation {
    position: absolute; top: 100%; left: 0; right: 0; margin: 0; background: var(--tn-blanc);
    border-top: 1px solid var(--tn-bordure); box-shadow: 0 18px 30px rgba(1, 51, 89, .15);
    max-height: calc(100vh - 110px); overflow-y: auto; display: none;
  }
  .main-navigation.is-open { display: block; }
  .main-header-menu { flex-direction: column; align-items: stretch; gap: 0; padding: 10px 20px 18px; }
  .main-header-menu > li { border-bottom: 1px solid var(--tn-bordure); }
  .main-header-menu a, .main-header-menu .menu-parent { width: 100%; justify-content: space-between; padding: 14px 4px; font-size: 1.02rem; }
  .main-header-menu > li > [aria-current="page"]::after, .main-header-menu > .current-menu-ancestor > .menu-parent::after { display: none; }
  .sub-menu { position: static; min-width: 0; padding: 0 0 10px 12px; box-shadow: none; border: 0; border-radius: 0; opacity: 1; visibility: visible; transform: none; display: none; }
  .main-header-menu > li.is-open > .sub-menu { display: block; }
  .main-header-menu > li:hover > .sub-menu { display: none; }
  .main-header-menu > li.is-open:hover > .sub-menu { display: block; }
  .tn-mobile-cta { display: block; padding: 6px 20px 20px; }
  .tn-mobile-cta .ast-button { width: 100%; }

  .tn-section { padding: 64px 0; }
  .tn-hero::before, .tn-hero::after { display: none; }
  .tn-hero { background: linear-gradient(180deg, var(--tn-fond-clair) 0 62%, var(--tn-marine) 62% 100%); }
  .tn-hero .ast-container, .tn-page-title .ast-container, .tn-cta .ast-container, .tn-split { grid-template-columns: 1fr; }
  .tn-hero .ast-container { padding-top: 48px; padding-bottom: 56px; gap: 36px; }
  .tn-hero__media { max-width: 420px; }
  .tn-page-title::before { width: 70%; opacity: .6; }
  .tn-page-title .ast-container { min-height: 0; }
  .tn-page-title__media { justify-self: start; }
  .tn-page-title__media img { height: 200px; }
  .tn-page-title__media .tn-figure img { height: auto; }
  .tn-split { gap: 36px; }
  .tn-split--reverse .tn-split__media { order: 0; }
  .tn-grid--3, .tn-grid--4, .tn-trustbar .tn-features, .tn-steps, .tn-pricing { grid-template-columns: repeat(2, 1fr); }
  .tn-testimonials { grid-template-columns: 1fr; }
  .tn-price-card--featured { transform: none; }
  .tn-cta::before { width: 70%; opacity: .5; }
  .tn-cta__media { justify-self: start; }
  .tn-cta__media img { height: 200px; }
  .ast-footer-widgets .ast-container { grid-template-columns: 1fr 1fr; gap: 36px; }
}
@media (min-width: 922px) { .tn-mobile-cta { display: none; } }
@media (max-width: 544px) {
  .ast-above-header-bar { display: none; }
  .tn-section { padding: 52px 0; }
  .tn-grid--2, .tn-grid--3, .tn-grid--4, .tn-trustbar .tn-features, .tn-steps, .tn-pricing, .tn-form, .tn-checklist--2 { grid-template-columns: 1fr; }
  .tn-trustbar { padding: 22px; }
  .tn-form-card { padding: 24px 20px; }
  .ast-footer-widgets .ast-container { grid-template-columns: 1fr; }
  .tn-footer-call__text img { display: none; }
  .tn-testimonial { padding: 28px 22px 24px; }
  .tn-testimonial blockquote { padding-right: 0; }
  .tn-testimonial::before { width: 34px; height: 34px; top: 14px; right: 16px; opacity: .8; }
  .tn-actions .ast-button { width: 100%; }
  .tn-media-duo { padding-bottom: 0; }
  .tn-media-duo > .tn-figure:first-child { width: 100%; }
  .tn-media-duo > .tn-figure:last-child { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; animation: none !important; }
}

/* ==========================================================================
   PAGE DE SERVICE « VIVANTE » (Punaises de lit, v3 du 02/10/2026)
   Héros clair animé + formulaire au premier écran, ronds de chiffres clés,
   cartes, FAQ sur deux colonnes, apparitions au défilement (main.js).
   Tout le héros tient dans 1440 × 730. Animations coupées si l'utilisateur
   demande moins de mouvement (règle prefers-reduced-motion plus haut + main.js).
   ========================================================================== */

/* ---------- Héros (v4 : carte de formulaire moderne inspirée du « hero with form » de Preline UI, MIT) ---------- */
.tn-hero-devis { position: relative; overflow: hidden; isolation: isolate; background: linear-gradient(180deg, #F7FAFD 0%, #EEF4FA 100%); border-bottom: 1px solid var(--tn-bordure); }
.tn-hero-devis::before {
  content: ""; position: absolute; inset: 0; z-index: -1; opacity: .7;
  background-image: linear-gradient(rgba(1, 51, 89, .045) 1px, transparent 1px), linear-gradient(90deg, rgba(1, 51, 89, .045) 1px, transparent 1px);
  background-size: 44px 44px; -webkit-mask: radial-gradient(ellipse 70% 80% at 30% 40%, #000 30%, transparent 75%); mask: radial-gradient(ellipse 70% 80% at 30% 40%, #000 30%, transparent 75%);
}
.tn-blob { position: absolute; z-index: -1; border-radius: 50%; filter: blur(70px); opacity: .5; pointer-events: none; animation: tn-derive 16s ease-in-out infinite alternate; }
.tn-blob--bleu { width: 560px; height: 560px; right: -140px; top: -200px; background: radial-gradient(circle, rgba(0, 116, 192, .32), transparent 70%); }
.tn-blob--rouge { width: 440px; height: 440px; right: 20%; bottom: -280px; background: radial-gradient(circle, rgba(211, 20, 30, .18), transparent 70%); animation-duration: 19s; animation-delay: -6s; }
.tn-blob--or { width: 320px; height: 320px; left: -140px; top: 35%; background: radial-gradient(circle, rgba(209, 165, 56, .18), transparent 70%); animation-duration: 22s; }
@keyframes tn-derive { 0% { transform: translate(0, 0) scale(1); } 50% { transform: translate(-40px, 30px) scale(1.08); } 100% { transform: translate(30px, -20px) scale(.96); } }

.tn-hero-devis .ast-container {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 470px); grid-template-areas: "intro form" "plus form";
  grid-template-rows: auto 1fr; column-gap: 64px; row-gap: 26px; padding-top: 24px; padding-bottom: 26px; align-items: start;
}
.tn-hero-devis__intro { grid-area: intro; padding-top: 4px; }
.tn-hero-devis__plus { grid-area: plus; }
.tn-hero-devis__form { grid-area: form; scroll-margin-top: 24px; }
.tn-hero-devis .tn-breadcrumb ol { margin-bottom: .9rem; font-size: .85rem; }
.tn-hero-devis .tn-breadcrumb a { color: var(--tn-gris); }
.tn-hero-devis .tn-breadcrumb a:hover { color: var(--tn-rouge); }
.tn-hero-devis .tn-breadcrumb [aria-current="page"] { color: var(--tn-marine); }
.tn-hero-devis h1 { font-size: clamp(1.9rem, 1.2rem + 1.8vw, 2.6rem); line-height: 1.1; letter-spacing: -.02em; margin-bottom: .4em; max-width: 660px; }
.tn-hero-devis h1 .tn-accent { background: linear-gradient(90deg, var(--tn-bleu), var(--tn-marine) 55%, var(--tn-rouge)); -webkit-background-clip: text; background-clip: text; color: transparent; background-size: 200% 100%; animation: tn-degrade 8s ease-in-out infinite alternate; }
@keyframes tn-degrade { from { background-position: 0% 50%; } to { background-position: 100% 50%; } }
.tn-hero-devis .tn-lead { max-width: 540px; margin: 0; color: var(--tn-gris); font-size: 1.15rem; }

/* Annonce en pastille (au-dessus du titre) */
.tn-annonce { display: inline-flex; align-items: center; gap: 10px; max-width: 100%; margin: 0 0 16px; padding: 5px 14px 5px 5px; border-radius: 999px; background: var(--tn-blanc); border: 1px solid var(--tn-bordure); box-shadow: 0 4px 14px rgba(1, 51, 89, .06); font-size: .9rem; color: var(--tn-texte); }
.tn-annonce__tag { position: relative; flex: none; display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; background: rgba(211, 20, 30, .1); color: var(--tn-rouge); font-family: var(--tn-font-titre); font-weight: 700; font-size: .78rem; letter-spacing: .02em; }
.tn-annonce__tag::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--tn-rouge); box-shadow: 0 0 0 0 rgba(211, 20, 30, .5); animation: tn-point 2s ease-out infinite; }
@keyframes tn-point { 0% { box-shadow: 0 0 0 0 rgba(211, 20, 30, .5); } 80%, 100% { box-shadow: 0 0 0 7px rgba(211, 20, 30, 0); } }

/* Entrée en scène du héros (CSS seul : rien n'est caché si l'animation est coupée) */
.tn-monte { animation: tn-monte .8s cubic-bezier(.2, .8, .2, 1) both; }
.tn-d1 { animation-delay: .08s; } .tn-d2 { animation-delay: .18s; } .tn-d3 { animation-delay: .28s; } .tn-d4 { animation-delay: .4s; } .tn-d5 { animation-delay: .52s; }
@keyframes tn-monte { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes tn-tourne { to { transform: rotate(360deg); } }

/* Chiffres clés : une barre à séparateurs, chiffres en dégradé */
.tn-chiffres { display: grid; grid-template-columns: repeat(3, 1fr); max-width: 560px; margin: 0; padding: 18px 6px; list-style: none; border-radius: 18px; background: rgba(255, 255, 255, .75); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); border: 1px solid rgba(220, 227, 235, .9); box-shadow: 0 10px 30px rgba(1, 51, 89, .07); }
.tn-chiffre { padding: 0 18px; text-align: left; }
.tn-chiffre + .tn-chiffre { border-left: 1px solid var(--tn-bordure); }
.tn-chiffre__haut { display: block; font-size: .78rem; font-weight: 600; color: var(--tn-gris); line-height: 1.3; }
.tn-chiffre__valeur { display: block; font-family: var(--tn-font-titre); font-weight: 800; font-size: 2rem; line-height: 1.15; letter-spacing: -.02em; background: linear-gradient(135deg, var(--tn-marine), var(--tn-bleu)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.tn-chiffre__valeur sup { font-size: .5em; color: var(--tn-rouge); -webkit-text-fill-color: var(--tn-rouge); }
.tn-chiffre__bas { display: block; font-size: .85rem; color: var(--tn-gris); line-height: 1.3; }
.tn-renvoi { margin: 8px 0 0 4px; font-size: .76rem; color: var(--tn-gris); }
.tn-appel-direct { display: inline-flex; align-items: center; gap: 12px; margin-top: 18px; color: var(--tn-marine); font-weight: 600; }
.tn-appel-direct__icone { position: relative; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: var(--tn-marine); color: var(--tn-blanc); transition: transform .3s ease; animation: tn-lueur 2.8s ease-out infinite; }
.tn-appel-direct__icone .tn-ico { width: 20px; height: 20px; }
.tn-appel-direct strong { display: block; font-family: var(--tn-font-titre); font-size: 1.15rem; color: var(--tn-marine); }
.tn-appel-direct small { display: block; font-size: .82rem; color: var(--tn-gris); font-weight: 500; }
.tn-appel-direct:hover .tn-appel-direct__icone { transform: scale(1.08) rotate(-8deg); }
@keyframes tn-lueur { 0% { box-shadow: 0 0 0 0 rgba(1, 51, 89, .3); } 70%, 100% { box-shadow: 0 0 0 12px rgba(1, 51, 89, 0); } }

/* Carte du formulaire */
.tn-devis-card { position: relative; padding: 22px 26px 18px; border-radius: 24px; border: 0; border-image: none; background: rgba(255, 255, 255, .92); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); box-shadow: 0 30px 60px -12px rgba(1, 51, 89, .22), 0 0 0 1px rgba(1, 51, 89, .06); }
.tn-devis-card::before { content: ""; position: absolute; inset: 0; padding: 1px; border-radius: inherit; background: linear-gradient(135deg, rgba(0, 116, 192, .55), rgba(255, 255, 255, 0) 40%, rgba(211, 20, 30, .45)); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; pointer-events: none; }
.tn-devis-card__head { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.tn-devis-card__avatar { flex: none; width: 46px; height: 46px; border-radius: 14px; overflow: hidden; background: var(--tn-blanc); box-shadow: 0 0 0 1px var(--tn-bordure); }
.tn-devis-card__avatar img { width: 100%; height: 100%; object-fit: cover; }
.tn-devis-card__title { margin: 0 0 2px; font-size: 1.3rem; line-height: 1.2; letter-spacing: -.01em; color: var(--tn-marine); }
.tn-devis-card__sub { margin: 0; font-size: .9rem; color: var(--tn-gris); }
.tn-devis-card .tn-form { gap: 12px; }
.tn-devis-card .tn-form__notice { font-size: .86rem; line-height: 1.45; padding: 8px 12px; }

/* Choix « Vous êtes » en boutons segmentés */
.tn-segment { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; margin: 0; padding: 4px; border: 0; border-radius: 14px; background: #EEF3F8; min-width: 0; }
.tn-segment legend { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.tn-segment label { position: relative; display: block; cursor: pointer; }
.tn-segment input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.tn-segment span { display: block; padding: 9px 6px; border-radius: 10px; text-align: center; font-family: var(--tn-font-titre); font-weight: 600; font-size: .86rem; color: var(--tn-gris); transition: background .25s, color .25s, box-shadow .25s; }
.tn-segment input:checked + span { background: var(--tn-blanc); color: var(--tn-marine); box-shadow: 0 2px 8px rgba(1, 51, 89, .12); }
.tn-segment input:focus-visible + span { outline: 2px solid var(--tn-bleu); outline-offset: 1px; }
.tn-segment label:hover span { color: var(--tn-marine); }

/* Champs à étiquette flottante */
.tn-flottant { position: relative; }
.tn-devis-card .tn-flottant input, .tn-devis-card .tn-flottant textarea {
  width: 100%; padding: 22px 14px 8px; border: 1px solid var(--tn-bordure); border-radius: 14px; background: var(--tn-blanc);
  font-size: 1rem; color: var(--tn-texte); transition: border-color .2s, box-shadow .2s;
}
.tn-devis-card .tn-flottant textarea { min-height: 92px; padding-top: 26px; resize: vertical; }
.tn-devis-card .tn-flottant label {
  position: absolute; left: 15px; top: 15px; margin: 0; pointer-events: none; transform-origin: left top;
  font-family: var(--tn-font-texte, inherit); font-weight: 500; font-size: .98rem; color: var(--tn-gris); transition: transform .2s ease, color .2s ease;
}
.tn-devis-card .tn-flottant input:focus + label, .tn-devis-card .tn-flottant input:not(:placeholder-shown) + label,
.tn-devis-card .tn-flottant textarea:focus + label, .tn-devis-card .tn-flottant textarea:not(:placeholder-shown) + label { transform: translateY(-9px) scale(.78); color: var(--tn-bleu); font-weight: 600; }
.tn-devis-card .tn-flottant input:focus, .tn-devis-card .tn-flottant textarea:focus { outline: none; border-color: var(--tn-bleu); box-shadow: 0 0 0 4px rgba(0, 116, 192, .12); }
.tn-devis-card .tn-flottant input::placeholder, .tn-devis-card .tn-flottant textarea::placeholder { color: transparent; }

/* Bouton d'envoi */
.tn-devis-card .tn-form__actions .ast-button { width: 100%; justify-content: center; gap: 10px; padding: 16px 20px; border-radius: 14px; font-size: 1.05rem; background: linear-gradient(135deg, #E0242E, var(--tn-rouge) 50%, var(--tn-rouge-fonce)); box-shadow: 0 12px 24px -8px rgba(211, 20, 30, .55); transition: transform .2s ease, box-shadow .2s ease; }
.tn-devis-card .tn-form__actions .ast-button:hover { transform: translateY(-2px); box-shadow: 0 16px 28px -8px rgba(211, 20, 30, .6); }
.tn-devis-card .tn-form__actions .ast-button .tn-ico { width: 18px; height: 18px; transition: transform .25s ease; }
.tn-devis-card .tn-form__actions .ast-button:hover .tn-ico { transform: translateX(4px); }
.tn-brille { position: relative; overflow: hidden; }
.tn-brille::before { content: ""; position: absolute; top: 0; bottom: 0; left: -60%; width: 40%; transform: skewX(-20deg); background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .35), transparent); animation: tn-brille 4.5s 1.5s ease-in-out infinite; }
@keyframes tn-brille { 0%, 70% { left: -60%; } 100% { left: 130%; } }
.tn-garanties { grid-column: 1 / -1; display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 16px; margin: 2px 0 0; padding: 0; list-style: none; font-size: .84rem; color: var(--tn-gris); }
.tn-garanties li { display: inline-flex; align-items: center; gap: 6px; }
.tn-garanties .tn-ico { width: 15px; height: 15px; color: var(--tn-bleu); }

/* ---------- Quatre ronds d'engagements ---------- */
.tn-cercles { display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px; margin: 0; padding: 0; list-style: none; text-align: center; }
.tn-cercle__disque {
  position: relative; width: 92px; height: 92px; margin: 0 auto 14px; border-radius: 50%; display: grid; place-items: center;
  background: linear-gradient(145deg, #FFFFFF, #EEF3F8); box-shadow: 0 10px 24px rgba(1, 51, 89, .10), inset 0 0 0 1px var(--tn-bordure);
  transition: transform .35s cubic-bezier(.2, .8, .2, 1), box-shadow .35s;
}
.tn-cercle__disque::before { content: ""; position: absolute; inset: -6px; border-radius: 50%; border: 2px dashed rgba(0, 116, 192, .35); animation: tn-tourne 18s linear infinite; }
.tn-cercle:hover .tn-cercle__disque { transform: translateY(-6px); box-shadow: 0 18px 32px rgba(1, 51, 89, .16), inset 0 0 0 1px var(--tn-bordure); }
.tn-cercle__disque .tn-ico { width: 34px; height: 34px; color: var(--tn-rouge); }
.tn-cercle__chiffre { font-family: var(--tn-font-titre); font-weight: 800; font-size: 1.15rem; color: var(--tn-marine); letter-spacing: -.01em; }
.tn-cercle__fois { font-family: var(--tn-font-titre); font-weight: 800; font-size: 1.05rem; line-height: 1.05; color: var(--tn-marine); }
.tn-cercle__fois span { display: block; color: var(--tn-rouge); }
.tn-cercle__titre { margin: 0 0 4px; font-family: var(--tn-font-titre); font-weight: 700; font-size: 1.12rem; color: var(--tn-marine); }
.tn-cercle__texte { margin: 0; font-size: .95rem; color: var(--tn-gris); }

/* ---------- Cartes « signes » ---------- */
.tn-signes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; margin: 0; padding: 0; list-style: none; counter-reset: signe; }
.tn-signe { position: relative; padding: 26px 24px 24px; border-radius: var(--tn-rayon); background: var(--tn-blanc); border: 1px solid var(--tn-bordure); box-shadow: var(--tn-ombre); transition: transform .3s ease, box-shadow .3s ease, border-color .3s; counter-increment: signe; }
.tn-signe:hover { transform: translateY(-6px); box-shadow: 0 20px 40px rgba(1, 51, 89, .14); border-color: rgba(0, 116, 192, .35); }
.tn-signe::before { content: counter(signe, decimal-leading-zero); display: inline-grid; place-items: center; width: 42px; height: 42px; margin-bottom: 14px; border-radius: 12px; background: rgba(211, 20, 30, .08); color: var(--tn-rouge); font-family: var(--tn-font-titre); font-weight: 800; }
.tn-signe h3 { margin: 0 0 6px; font-size: 1.12rem; }
.tn-signe p { margin: 0; font-size: .97rem; color: var(--tn-gris); }
.tn-astuce { display: flex; gap: 12px; align-items: flex-start; max-width: 860px; margin: 28px auto 0; padding: 16px 20px; border-radius: var(--tn-rayon); background: var(--tn-blanc); border: 1px dashed rgba(0, 116, 192, .45); }
.tn-astuce .tn-ico { flex: none; width: 22px; height: 22px; margin-top: 2px; color: var(--tn-bleu); }
.tn-astuce p { margin: 0; }

/* ---------- Bandeau d'appel clair ---------- */
.tn-appel { position: relative; overflow: hidden; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 20px 32px; padding: 30px 36px; border-radius: 18px; background: linear-gradient(120deg, #FFFFFF 0%, #EEF4FA 100%); border: 1px solid var(--tn-bordure); box-shadow: var(--tn-ombre); }
.tn-appel::after { content: ""; position: absolute; right: -80px; top: -80px; width: 240px; height: 240px; border-radius: 50%; background: radial-gradient(circle, rgba(211, 20, 30, .12), transparent 70%); animation: tn-derive 14s ease-in-out infinite alternate; pointer-events: none; }
.tn-appel h2 { margin: 0 0 4px; font-size: clamp(1.35rem, 1.1rem + .8vw, 1.8rem); }
.tn-appel p { margin: 0; color: var(--tn-gris); }
.tn-appel .tn-actions { position: relative; z-index: 1; margin: 0; }

/* ---------- FAQ sur deux colonnes ---------- */
.tn-section__head h2, .tn-appel h2 { text-wrap: balance; }
.tn-faq-duo { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 22px; align-items: start; }
.tn-faq-duo .tn-faq { display: grid; gap: 14px; }

/* ---------- Méthodes en cartes à icône ---------- */
.tn-methodes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; margin: 0; padding: 0; list-style: none; }
.tn-methode { position: relative; display: flex; flex-direction: column; padding: 26px 24px 24px; border-radius: 20px; background: var(--tn-blanc); border: 1px solid var(--tn-bordure); box-shadow: var(--tn-ombre); transition: transform .3s ease, box-shadow .3s ease; }
.tn-methode:hover { transform: translateY(-6px); box-shadow: 0 22px 44px rgba(1, 51, 89, .14); }
.tn-methode__icone { display: grid; place-items: center; width: 56px; height: 56px; margin-bottom: 16px; border-radius: 16px; color: var(--tn-blanc); box-shadow: 0 10px 20px -6px var(--teinte-ombre, rgba(1, 51, 89, .35)); transition: transform .4s cubic-bezier(.2, .8, .2, 1); }
.tn-methode:hover .tn-methode__icone { transform: rotate(-8deg) scale(1.08); }
.tn-methode__icone .tn-ico { width: 28px; height: 28px; }
.tn-methode--chaleur .tn-methode__icone { background: linear-gradient(135deg, #FF8A3D, var(--tn-rouge)); --teinte-ombre: rgba(211, 20, 30, .45); }
.tn-methode--froid .tn-methode__icone { background: linear-gradient(135deg, #7FD3FF, var(--tn-bleu)); --teinte-ombre: rgba(0, 116, 192, .45); }
.tn-methode--produit .tn-methode__icone { background: linear-gradient(135deg, var(--tn-marine-2), var(--tn-marine)); }
.tn-methode--brume .tn-methode__icone { background: linear-gradient(135deg, #A9B9CC, #5B7290); --teinte-ombre: rgba(91, 114, 144, .45); }
.tn-methode--textile .tn-methode__icone { background: linear-gradient(135deg, #5CC8B4, #1C8C8A); --teinte-ombre: rgba(28, 140, 138, .45); }
.tn-methode h3 { margin: 0 0 8px; font-size: 1.18rem; }
.tn-methode p { margin: 0; font-size: .97rem; color: var(--tn-gris); }
.tn-methode p + p:not(.tn-methode__tag) { margin-top: .65em; }
.tn-methode .tn-methode__tag { margin-top: auto; }
.tn-methode__tag { align-self: flex-start; margin-top: auto; padding-top: 16px; }
.tn-methode__tag span { display: inline-block; padding: 4px 10px; border-radius: 999px; background: #EEF3F8; color: var(--tn-marine); font-family: var(--tn-font-titre); font-weight: 600; font-size: .78rem; }
.tn-methode--image { padding: 0; overflow: hidden; background: linear-gradient(160deg, #F2F7FC, #E3ECF6); }
.tn-methode--image img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.tn-methode--image:hover img { transform: scale(1.04); }

/* ---------- Chiffres « Comprendre l'insecte » ---------- */
.tn-stats--vivant { gap: 18px; }
.tn-stats--vivant .tn-stat { position: relative; overflow: hidden; padding: 22px 20px 20px; border-radius: 20px; background: var(--tn-blanc); border: 1px solid var(--tn-bordure); box-shadow: var(--tn-ombre); text-align: left; transition: transform .3s ease, box-shadow .3s ease; }
.tn-stats--vivant .tn-stat::after { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px; background: linear-gradient(90deg, var(--tn-bleu), var(--tn-rouge)); transform: scaleX(0); transform-origin: left; transition: transform .5s ease; }
.tn-stats--vivant .tn-stat:hover { transform: translateY(-5px); box-shadow: 0 20px 40px rgba(1, 51, 89, .13); }
.tn-stats--vivant .tn-stat:hover::after { transform: scaleX(1); }
.tn-stat__icone { display: grid; place-items: center; width: 44px; height: 44px; margin-bottom: 12px; border-radius: 13px; background: rgba(0, 116, 192, .1); color: var(--tn-bleu); }
.tn-stat__icone .tn-ico { width: 24px; height: 24px; }
.tn-stats--vivant .tn-stat__value { display: block; font-size: 1.6rem; background: linear-gradient(135deg, var(--tn-marine), var(--tn-bleu)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.tn-stats--vivant .tn-stat__label { display: block; margin-bottom: 6px; }
.tn-stats--vivant .tn-stat__text { text-align: left; }
.tn-stats--vivant .tn-stat--alerte .tn-stat__icone { background: rgba(211, 20, 30, .1); color: var(--tn-rouge); }

/* ---------- Bandeau de certifications ---------- */
.tn-certifs__titre { display: flex; justify-content: center; margin-bottom: 22px; }
.tn-certifs { display: flex; flex-wrap: wrap; justify-content: center; gap: 28px; margin: 0; padding: 0; list-style: none; }
.tn-sceau { display: flex; align-items: center; gap: 22px; padding: 22px 26px 22px 30px; border-radius: 20px; background: var(--tn-blanc); border: 1px solid var(--tn-bordure); box-shadow: var(--tn-ombre); }
.tn-sceau__disque { position: relative; flex: none; display: grid; place-items: center; width: 74px; height: 74px; border-radius: 50%; background: radial-gradient(circle at 30% 30%, var(--tn-marine-2), var(--tn-marine)); color: var(--tn-blanc); box-shadow: 0 0 0 4px var(--tn-blanc), 0 0 0 6px var(--tn-or); }
.tn-sceau__disque::after { content: ""; position: absolute; inset: -12px; border-radius: 50%; border: 1px dashed rgba(209, 165, 56, .7); animation: tn-tourne 24s linear infinite; }
.tn-sceau__disque .tn-ico { width: 34px; height: 34px; }
.tn-sceau__nom { display: block; font-family: var(--tn-font-titre); font-weight: 800; font-size: 1.25rem; letter-spacing: .04em; color: var(--tn-marine); text-transform: uppercase; }
.tn-sceau__detail { display: block; font-size: .92rem; color: var(--tn-gris); }

/* ---------- Frise du déroulement (étapes verticales) ---------- */
.tn-frise { position: relative; max-width: 900px; margin: 0 auto; padding: 0; list-style: none; counter-reset: frise; }
.tn-frise::before { content: ""; position: absolute; left: 27px; top: 10px; bottom: 10px; width: 2px; background: linear-gradient(180deg, var(--tn-bleu), var(--tn-rouge)); opacity: .35; }
.tn-frise__etape { position: relative; display: grid; grid-template-columns: 56px 1fr; gap: 22px; padding-bottom: 26px; counter-increment: frise; }
.tn-frise__etape:last-child { padding-bottom: 0; }
.tn-frise__etape::before { content: counter(frise); position: relative; z-index: 1; display: grid; place-items: center; width: 56px; height: 56px; border-radius: 50%; background: var(--tn-blanc); color: var(--tn-marine); font-family: var(--tn-font-titre); font-weight: 800; font-size: 1.3rem; box-shadow: 0 0 0 2px var(--tn-bordure), 0 10px 20px rgba(1, 51, 89, .10); transition: background .3s, color .3s, transform .3s; }
.tn-frise__etape:hover::before { background: var(--tn-marine); color: var(--tn-blanc); transform: scale(1.06); }
.tn-frise__carte { padding: 22px 26px; border-radius: 20px; background: var(--tn-blanc); border: 1px solid var(--tn-bordure); box-shadow: var(--tn-ombre); transition: transform .3s ease, box-shadow .3s ease; }
.tn-frise__etape:hover .tn-frise__carte { transform: translateX(4px); box-shadow: 0 18px 36px rgba(1, 51, 89, .12); }
.tn-frise__carte h3 { margin: 0 0 8px; font-size: 1.2rem; }
.tn-frise__carte p { margin: 0 0 .6em; color: var(--tn-gris); }
.tn-frise__carte p:last-child { margin-bottom: 0; }
.tn-frise__objectif { margin: 26px auto 0; max-width: 900px; padding: 16px 22px; border-radius: 16px; background: linear-gradient(120deg, rgba(0, 116, 192, .08), rgba(211, 20, 30, .06)); color: var(--tn-marine); font-weight: 600; text-align: center; }

/* ---------- Qualifications (variante des sceaux) ---------- */
.tn-certifs--3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.tn-certifs--3 .tn-sceau { padding: 22px 22px 22px 30px; }
.tn-sceau--rouge .tn-sceau__disque { background: radial-gradient(circle at 30% 30%, #E43A43, var(--tn-rouge-fonce)); box-shadow: 0 0 0 4px var(--tn-blanc), 0 0 0 6px rgba(211, 20, 30, .35); }
.tn-sceau--rouge .tn-sceau__disque::after { border-color: rgba(211, 20, 30, .45); }
.tn-sceau--bleu .tn-sceau__disque { background: radial-gradient(circle at 30% 30%, #2E8FD6, var(--tn-bleu)); box-shadow: 0 0 0 4px var(--tn-blanc), 0 0 0 6px rgba(0, 116, 192, .35); }
.tn-sceau--bleu .tn-sceau__disque::after { border-color: rgba(0, 116, 192, .45); }
.tn-sceau__nom sup { font-size: .5em; }
.tn-certifs--3 .tn-sceau__nom { font-size: 1.08rem; letter-spacing: .02em; text-transform: none; }

/* ---------- Apparitions au défilement (classe tn-anim posée par main.js) ---------- */
.tn-anim .tn-reveal { opacity: 0; transform: translateY(26px); transition: opacity .7s cubic-bezier(.2, .8, .2, 1), transform .7s cubic-bezier(.2, .8, .2, 1); }
.tn-anim .tn-reveal.is-in { opacity: 1; transform: none; }
.tn-anim .tn-reveal--gauche { transform: translateX(-30px); }
.tn-anim .tn-reveal--droite { transform: translateX(30px); }

@media (max-width: 1100px) {
  .tn-hero-devis .ast-container { column-gap: 40px; grid-template-columns: minmax(0, 1fr) minmax(0, 420px); }
}
@media (max-width: 921px) {
  .tn-hero-devis .ast-container { grid-template-columns: 1fr; grid-template-areas: "intro" "form" "plus"; row-gap: 24px; padding-top: 22px; padding-bottom: 40px; }
  .tn-hero-devis__form, .tn-hero-devis__plus { max-width: 560px; width: 100%; justify-self: center; }
  .tn-cercles { grid-template-columns: repeat(2, 1fr); gap: 32px 18px; }
  .tn-signes { grid-template-columns: repeat(2, 1fr); }
  .tn-methodes { grid-template-columns: repeat(2, 1fr); }
  .tn-certifs--3 { grid-template-columns: 1fr; max-width: 520px; margin: 0 auto; }
  .tn-faq-duo { grid-template-columns: 1fr; }
}
@media (max-width: 544px) {
  .tn-hero-devis .tn-breadcrumb { display: none; }
  .tn-hero-devis .ast-container { padding-top: 20px; }
  .tn-hero-devis .tn-lead { font-size: 1.04rem; }
  .tn-annonce { font-size: .82rem; border-radius: 16px; align-items: flex-start; }
  .tn-devis-card { padding: 20px 16px 18px; border-radius: 20px; }
  .tn-devis-card .tn-form { grid-template-columns: 1fr 1fr; }
  .tn-segment span { font-size: .78rem; line-height: 1.2; padding: 8px 2px; }
  .tn-segment { align-items: stretch; }
  .tn-segment label, .tn-segment span { height: 100%; display: grid; place-items: center; }
  .tn-chiffre { padding: 0 10px; }
  .tn-chiffre__valeur { font-size: 1.5rem; }
  .tn-chiffre__haut, .tn-chiffre__bas { font-size: .72rem; }
  .tn-cercle__disque { width: 78px; height: 78px; }
  .tn-cercle__titre { font-size: 1rem; }
  .tn-cercle__texte { font-size: .86rem; }
  .tn-signes { grid-template-columns: 1fr; }
  .tn-methodes { grid-template-columns: 1fr; }
  .tn-frise::before { left: 21px; }
  .tn-frise__etape { grid-template-columns: 44px 1fr; gap: 14px; }
  .tn-frise__etape::before { width: 44px; height: 44px; font-size: 1.1rem; }
  .tn-frise__carte { padding: 18px 18px; }
  .tn-methode--image { max-height: 260px; }
  .tn-appel { padding: 24px 20px; }
}
@media (prefers-reduced-motion: reduce) {
  .tn-anim .tn-reveal { opacity: 1; transform: none; }
}
