/* ------------------------------------------------------------------
   YONE IT : feuille de style du site
   Direction « bleu de plan » : encre bleue sur papier crème.
   Deux familles : Schibsted Grotesk (texte) et Space Mono (libellés
   techniques). Space Grotesk reste réservé au logotype.
   ------------------------------------------------------------------ */

@font-face{font-family:'IBM Plex Sans';font-weight:400;font-style:normal;font-display:swap;src:url('fonts/ibm-plex-sans-latin-400-normal.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-weight:600;font-style:normal;font-display:swap;src:url('fonts/ibm-plex-sans-latin-600-normal.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-weight:400;font-style:italic;font-display:swap;src:url('fonts/ibm-plex-sans-latin-400-italic.woff2') format('woff2')}
@font-face{font-family:'Space Grotesk';font-weight:400;font-style:normal;font-display:swap;src:url('fonts/space-grotesk-latin-400-normal.woff2') format('woff2')}
@font-face{font-family:'Space Grotesk';font-weight:500;font-style:normal;font-display:swap;src:url('fonts/space-grotesk-latin-500-normal.woff2') format('woff2')}
@font-face{font-family:'Space Grotesk';font-weight:600;font-style:normal;font-display:swap;src:url('fonts/space-grotesk-latin-700-normal.woff2') format('woff2')}
@font-face{font-family:'Space Mono';font-weight:400;font-style:normal;font-display:swap;src:url('fonts/space-mono-latin-400-normal.woff2') format('woff2')}

:root{
  /* couleurs */
  --papier:#EFEDE8;
  --blanc:#FFFFFF;
  --encre:#1C4C7C;        /* le bleu de marque : titres, filets, traits, boutons */
  --profond:#12304E;      /* aplats pleins de section */
  --texte:#4A4F4B;
  --discret:#666C6B;
  --tres-discret:#636A6C;
  --filet:#DCD9D2;
  --filet-clair:#E6E3DC;
  --sur-sombre:#EFEDE8;
  --sur-sombre-doux:rgba(239,237,232,.62);
  --sur-sombre-faible:rgba(239,237,232,.55);
  --sur-sombre-filet:rgba(239,237,232,.20);

  /* typographie */
  --sans:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --titre:'Space Grotesk',var(--sans);
  --mono:'Space Mono',ui-monospace,'SFMono-Regular',Menlo,monospace;
  --logo:'Space Grotesk',var(--sans);

  /* mesures */
  --marge:clamp(20px,5vw,80px);
  --large:1440px;
  --rayon:10px;
}

*,*::before,*::after{box-sizing:border-box}

html{-webkit-text-size-adjust:100%}

body{
  margin:0;
  background:var(--papier);
  color:var(--texte);
  font-family:var(--sans);
  font-size:17px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

img{max-width:100%;height:auto;display:block}

a{color:var(--encre);text-underline-offset:3px;text-decoration-thickness:1px}
a:hover{text-decoration-thickness:2px}

:focus-visible{outline:2px solid var(--encre);outline-offset:3px;border-radius:2px}

.saut-contenu{
  position:absolute;left:-9999px;top:0;
  background:var(--encre);color:var(--sur-sombre);
  padding:12px 20px;z-index:100;border-radius:0 0 var(--rayon) 0;
}
.saut-contenu:focus{left:0}

/* ---------- structure ---------- */

.zone{max-width:var(--large);margin-inline:auto;padding-inline:var(--marge)}
.section{padding-block:clamp(64px,8vw,104px)}
.section--blanc{background:var(--blanc)}
.section--sombre{background:var(--profond);color:var(--sur-sombre-doux)}

/* ---------- typographie ---------- */

.mono{
  font-family:var(--sans);
  font-weight:500;
  letter-spacing:.015em;
  font-size:13.5px;
  line-height:1.4;
  color:var(--discret);
  margin:0;
}
.section--sombre .mono{color:var(--sur-sombre-faible)}

h1,h2,h3{font-family:var(--titre);color:var(--encre);font-weight:400;margin:0;text-wrap:balance}
.section--sombre h1,.section--sombre h2,.section--sombre h3{color:var(--sur-sombre)}

h1{font-size:clamp(38px,6.2vw,84px);line-height:1.04;letter-spacing:-.03em;max-width:15ch}
/* Le titre d'accueil porte le service, pas la signature : il est plus long,
   donc plus petit et plus large que le h1 par défaut. */
.accroche h1{font-size:clamp(31px,4.5vw,58px);line-height:1.1;max-width:none}
.accroche__signature{color:var(--encre);font-size:14.5px}
h2{font-size:clamp(29px,4.1vw,51px);line-height:1.09;letter-spacing:-.026em;max-width:20ch}
h3{font-size:clamp(20px,2vw,27px);line-height:1.22;letter-spacing:-.02em;font-weight:500}

p{margin:0}
p + p{margin-top:1em}

.chapeau{font-size:clamp(17px,1.6vw,18.5px);line-height:1.55;max-width:42ch}
.note{font-size:13.5px;line-height:1.68;color:var(--discret)}

/* en-tête de section : titre à gauche, phrase de contexte à droite */
.entete{
  display:grid;grid-template-columns:1fr;gap:26px;
  margin-bottom:clamp(36px,4vw,52px);
}
@media (min-width:900px){
  .entete{grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr);gap:clamp(36px,4vw,60px);align-items:end}
  .entete h2,.entete .titre-page{max-width:none}
  .entete__aparte{padding-bottom:10px;max-width:36ch;justify-self:end}
}
.entete__titre{display:flex;flex-direction:column;gap:22px}

/* ---------- boutons ---------- */

.bouton{
  display:inline-flex;align-items:center;justify-content:center;
  font-size:15.5px;font-weight:600;line-height:1;
  padding:16px 30px;border-radius:999px;border:1px solid transparent;
  text-decoration:none;cursor:pointer;
  transition:background-color .18s ease,color .18s ease,border-color .18s ease;
}
.bouton--plein{background:var(--encre);color:var(--blanc)}
.bouton--plein:hover{background:var(--profond)}
.bouton--clair{background:var(--papier);color:var(--encre)}
.bouton--clair:hover{background:var(--blanc)}
.bouton--lien{
  padding:0 0 3px;border-radius:0;background:none;color:var(--encre);
  border-bottom:1px solid var(--encre);
}
.bouton--lien:hover{border-bottom-width:2px}

/* ---------- pastille de navigation ---------- */

.pastille{
  position:sticky;top:14px;z-index:40;
  margin:14px auto 0;width:max-content;max-width:calc(100% - 2*var(--marge));
  display:flex;align-items:center;gap:0;
  background:rgba(255,255,255,.93);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border:1px solid rgba(28,76,124,.12);
  border-radius:999px;
  padding:7px 7px 7px 26px;
  box-shadow:0 1px 2px rgba(28,76,124,.06);
}
/* Le logotype est carre et cerne de blanc : la fenetre le recadre sur sa
   hauteur utile, sans jamais toucher aux lettres. */
.pastille__marque{
  width:80px;height:54px;margin-right:16px;overflow:hidden;flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;text-decoration:none;
}
.pastille__marque img{display:block;width:80px;height:80px;max-width:none}
.pastille__liens{display:flex;align-items:center;gap:0}
.pastille__liens a{font-size:14.5px;color:var(--texte);text-decoration:none;padding:8px 15px;border-radius:999px}
.pastille__liens a:hover{color:var(--encre);background:rgba(28,76,124,.06)}
.pastille .bouton{margin-left:12px;padding:11px 24px;font-size:14.5px}

.pastille__bascule{display:none}

@media (max-width:1149px){
  .pastille{width:auto;margin-inline:var(--marge);padding:8px 8px 8px 20px;justify-content:space-between}
  .pastille__liens{
    display:none;position:absolute;top:calc(100% + 10px);left:0;right:0;
    flex-direction:column;align-items:stretch;gap:2px;
    background:var(--blanc);border:1px solid var(--filet);border-radius:18px;padding:10px;
    box-shadow:0 8px 24px rgba(28,76,124,.10);
  }
  .pastille__liens[data-ouvert="oui"]{display:flex}
  .pastille__liens a{padding:12px 16px}
  .pastille__bascule{
    display:inline-flex;align-items:center;gap:9px;
    background:none;border:0;cursor:pointer;font:inherit;font-size:14.5px;
    color:var(--encre);padding:10px 14px;border-radius:999px;
  }
  .pastille__bascule span{display:block;width:18px;height:1.5px;background:currentColor;position:relative}
  .pastille__bascule span::before,.pastille__bascule span::after{
    content:"";position:absolute;left:0;width:18px;height:1.5px;background:currentColor
  }
  .pastille__bascule span::before{top:-6px}
  .pastille__bascule span::after{top:6px}
  .pastille .bouton{display:none}
}

/* ---------- accroche ---------- */

.accroche{padding-top:clamp(60px,9vw,120px);display:flex;flex-direction:column;gap:38px}
.accroche__pied{display:flex;flex-direction:column;gap:28px}
@media (min-width:900px){
  .accroche__pied{flex-direction:row;align-items:flex-end;justify-content:space-between;gap:60px}
}
.accroche__actions{display:flex;align-items:center;gap:clamp(20px,3vw,30px);flex-wrap:wrap}

/* ---------- le plan ---------- */

.plan{margin-top:clamp(48px,7vw,86px);border-top:1px solid #D4D1C9;padding-top:18px}
.plan__legende{
  display:flex;justify-content:space-between;gap:20px;
  padding-bottom:10px;
}
.plan__legende .mono{font-size:12.5px;color:#666C6B}
.plan__dessin{width:100%;height:auto;display:block;overflow:visible}
.plan__cadre{overflow-x:auto}

/* Deux installations types. Sans JavaScript, les deux restent visibles l'une
   sous l'autre, chacune avec son intitulé : rien ne disparaît. */
.plan__choix{display:none;gap:22px;align-items:baseline;flex-wrap:wrap}
.plan[data-onglets="oui"] .plan__choix{display:flex}
.plan__onglet{
  font-family:var(--sans);font-weight:500;letter-spacing:.015em;font-size:13px;
  color:var(--tres-discret);background:none;border:0;padding:0 0 4px;
  border-bottom:1px solid transparent;cursor:pointer;
}
.plan__onglet:hover{color:var(--encre)}
.plan__onglet[aria-pressed="true"]{color:var(--encre);border-bottom-color:var(--encre)}
.plan__titre{font-size:12.5px;color:#666C6B;padding-bottom:10px}
.plan__panneau + .plan__panneau{margin-top:34px}
.plan__panneau[hidden]{display:none}
.plan[data-onglets="oui"] .plan__titre{display:none}
.plan[data-onglets="oui"] .plan__panneau + .plan__panneau{margin-top:0}

.plan .trait{stroke:var(--encre);stroke-opacity:.38;stroke-width:1;fill:none}
.plan .pointille{stroke:var(--encre);stroke-opacity:.26;stroke-width:1;fill:none;stroke-dasharray:2 5}
.plan .boite{stroke:var(--encre);stroke-opacity:.42;stroke-width:1;fill:none}
.plan .enveloppe{stroke:var(--encre);stroke-opacity:.24;stroke-width:1;fill:none;stroke-dasharray:3 4}
.plan .repere{stroke:var(--encre);stroke-opacity:.55;stroke-width:1;fill:none}
.plan .etiquette{font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;fill:var(--encre);fill-opacity:.72}
.plan .sous-etiquette{font-family:var(--mono);font-size:9px;letter-spacing:.10em;fill:var(--encre);fill-opacity:.42}

/* Le plan se dévoile de gauche à droite, comme un tracé qui avance.
   On ne touche pas aux traits eux-mêmes : un stroke-dasharray forcé
   tronquait le rectangle des murs, dont le périmètre dépasse la valeur
   du motif. Le dévoilement se fait donc par un masque, pas par le trait. */
@media (prefers-reduced-motion:no-preference){
  .plan[data-anime="attente"] .plan__dessin{clip-path:inset(0 100% 0 0)}
  .plan[data-anime="oui"] .plan__dessin{
    animation:devoiler 1.6s cubic-bezier(.22,.61,.36,1) forwards;
  }
}
@keyframes devoiler{
  from{clip-path:inset(0 100% 0 0)}
  to{clip-path:inset(0 0 0 0)}
}

/* ---------- chiffres ---------- */

.chiffres{display:grid;grid-template-columns:1fr;gap:0}
@media (min-width:640px){.chiffres{grid-template-columns:1fr 1fr}}
@media (min-width:1024px){.chiffres{grid-template-columns:repeat(4,minmax(0,1fr))}}
.chiffre{border-top:1px solid var(--sur-sombre-filet);padding:22px 0 34px}
@media (min-width:640px){.chiffre{padding-right:36px}}
@media (min-width:1024px){
  .chiffre{padding-bottom:0}
  .chiffre + .chiffre{padding-left:36px}
}
.chiffre__portee{margin-bottom:22px}
.chiffre__valeur{
  font-family:var(--titre);
  font-size:clamp(46px,5vw,63px);line-height:.98;letter-spacing:-.028em;
  color:var(--sur-sombre);font-variant-numeric:tabular-nums;font-weight:400;
}
.chiffre__texte{font-size:14.5px;line-height:1.55;color:rgba(239,237,232,.62);max-width:24ch;margin-top:16px}

.definition{
  border-top:1px solid var(--sur-sombre-filet);
  padding-top:24px;margin-top:clamp(36px,4vw,46px);
  display:grid;grid-template-columns:1fr;gap:16px;
}
@media (min-width:900px){.definition{grid-template-columns:1fr 1.15fr;gap:60px}}
.definition p{font-size:15.5px;line-height:1.62;color:var(--sur-sombre-doux);max-width:62ch}

/* La même définition, mais sur fond clair et en tête de page : c'est la
   réponse courte qu'un moteur ou un lecteur pressé vient chercher. */
.definition--large{border-top-color:var(--encre);margin-top:0}
.definition--large p{color:var(--encre);font-size:clamp(17px,1.6vw,19.5px);line-height:1.58;max-width:76ch}
@media (min-width:900px){.definition--large{grid-template-columns:1fr 3.4fr;gap:60px}}

/* ---------- fil d'Ariane ---------- */

.fil{
  font-size:13px;color:var(--discret);
  margin-bottom:clamp(20px,2.5vw,30px);
  display:flex;gap:9px;flex-wrap:wrap;align-items:baseline;
}
.fil a{color:var(--discret);text-decoration:none;border-bottom:1px solid var(--filet)}
.fil a:hover{color:var(--encre);border-bottom-color:var(--encre)}
.fil [aria-current="page"]{color:var(--encre)}

/* ---------- index numéroté ---------- */

.index{display:flex;flex-direction:column}
.index__ligne{
  display:grid;grid-template-columns:1fr;gap:12px;
  padding:26px 0;border-top:1px solid var(--filet);
}
.index__ligne:last-child{border-bottom:1px solid var(--filet)}
@media (min-width:900px){
  .index__ligne{grid-template-columns:84px 1.05fr 1.6fr;gap:40px;align-items:baseline;padding:32px 0}
}
.index__numero{font-family:var(--mono);color:var(--tres-discret);font-size:11px;letter-spacing:.06em}
.index__texte{max-width:48ch}

/* Le même motif, appliqué aux pages de contenu. Un numéro, un titre, un corps
   qui peut porter plusieurs paragraphes, une liste ou un glossaire. Les filets
   séparent les articles : on voit où l'un finit et où le suivant commence. */
.index--legal .index__ligne{gap:0;padding:clamp(28px,3vw,38px) 0}
.index--legal h2{margin-top:9px}
.index--legal .index__corps{margin-top:18px}
@media (min-width:900px){
  .index--legal .index__ligne{
    grid-template-columns:76px minmax(0,1fr) minmax(0,1.7fr);
    gap:clamp(32px,3.4vw,48px);align-items:start;padding:clamp(34px,3.6vw,46px) 0;
  }
  .index--legal h2,.index--legal .index__corps{margin-top:0}
}
.index--legal h2{
  font-size:clamp(20px,2vw,24px);line-height:1.24;letter-spacing:-.016em;
  max-width:none;margin:0;
}
.index__corps{max-width:64ch;font-size:16.5px;line-height:1.72;color:var(--texte)}
.index__corps > * + *{margin-top:1.1em}
.index__corps h3{font-size:clamp(17px,1.7vw,19px);line-height:1.3;margin-top:1.9em}
.index__corps h3 + *{margin-top:.55em}
.index__corps ul,.index__corps ol{padding-left:1.15em}
.index__corps li + li{margin-top:.55em}
/* glossaire : l'intitulé, la réponse dessous, un filet entre deux entrées.
   Empilé et non en deux colonnes : la mesure est déjà étroite, et une réponse
   de huit lignes en face d'un intitulé de deux mots creuse un trou au milieu. */
.index__corps dl{margin:1.5em 0 0;display:flex;flex-direction:column}
.index__corps dt{
  font-family:var(--sans);font-weight:500;letter-spacing:.015em;font-size:13.5px;
  color:var(--discret);line-height:1.4;
  margin-top:1.4em;padding-top:1.4em;border-top:1px solid var(--filet-clair);
}
.index__corps dd{margin:.5em 0 0}
.index__corps dl > dt:first-child{margin-top:0;padding-top:0;border-top:0}
/* Variante « fiche » : des valeurs courtes, un intitulé en regard. Utilisée
   pour l'identité de l'éditeur, où empiler neuf entrées ferait une colonne
   d'un mètre de haut pour l'équivalent d'une carte de visite. */
@media (min-width:640px){
  .index__corps dl.fiche{display:grid;grid-template-columns:minmax(0,15em) minmax(0,1fr);column-gap:28px}
  .index__corps dl.fiche dt,
  .index__corps dl.fiche dd{
    margin:0;padding:15px 0;border-top:1px solid var(--filet-clair);align-self:start;
  }
  .index__corps dl.fiche dt{padding-top:18px}
  .index__corps dl.fiche dt{grid-column:1}
  .index__corps dl.fiche dd{grid-column:2}
  .index__corps dl.fiche > dt:first-child,
  .index__corps dl.fiche > dt:first-child + dd{padding-top:0;border-top:0}
}

/* ---------- colonnes à filet ---------- */

.colonnes{display:grid;grid-template-columns:1fr;gap:0}
@media (min-width:768px){.colonnes{grid-template-columns:repeat(3,minmax(0,1fr))}}
.colonnes--fort .colonne{border-top:1px solid var(--encre)}
@media (min-width:1080px){.colonnes--quatre{grid-template-columns:repeat(4,minmax(0,1fr))}}
.colonnes--quatre .colonne p{max-width:30ch}

/* le pack : un exemple chiffré, pas un catalogue */
.pack{margin-top:clamp(40px,5vw,64px);border-top:1px solid var(--filet);padding-top:24px}
.pack > .mono{font-size:12.5px;color:var(--tres-discret);margin-bottom:20px}
.pack__corps{display:grid;grid-template-columns:1fr;gap:8px}
@media (min-width:900px){.pack__corps{grid-template-columns:minmax(0,22ch) minmax(0,1fr);gap:0 44px;align-items:start}}
.pack__corps h3{font-family:var(--titre);font-weight:400;font-size:clamp(24px,2.4vw,30px);letter-spacing:-.022em;color:var(--encre);line-height:1.12}
.pack__resultat{font-size:clamp(17px,1.5vw,19px);line-height:1.5;color:var(--encre);max-width:46ch}
.pack__detail{font-size:15.5px;line-height:1.62;color:var(--texte);max-width:58ch;margin-top:14px}
.colonne{border-top:1px solid var(--filet);padding:26px 0 30px}
@media (min-width:768px){
  .colonne{padding:26px 44px 0 0}
  .colonne + .colonne{padding-left:44px}
  .colonne:last-child{padding-right:0}
}
.colonne h3{font-size:18px;font-weight:600;margin-bottom:13px}
.colonne p{font-size:15.5px;line-height:1.62;max-width:32ch}

/* ---------- tableau des prix ---------- */

.prix{width:100%;border-collapse:collapse;text-align:left}
.prix caption{position:absolute;left:-9999px}
.prix th{
  font-family:var(--sans);letter-spacing:.015em;
  font-size:13px;font-weight:500;color:var(--discret);
  padding:0 28px 14px 0;border-bottom:1px solid var(--encre);vertical-align:bottom;
}
.prix td{padding:28px 28px 28px 0;border-bottom:1px solid var(--filet);vertical-align:baseline;font-size:16px}
.prix th:last-child,.prix td:last-child{padding-right:0}
.prix .offre{width:1%;white-space:nowrap}
.prix .offre{font-family:var(--titre);font-size:clamp(20px,2vw,24px);font-weight:500;letter-spacing:-.022em;color:var(--encre)}
.prix .montant{
  font-family:var(--titre);
  font-size:clamp(22px,2.2vw,26px);color:var(--encre);text-align:right;
  font-variant-numeric:tabular-nums;white-space:nowrap;
}
.prix th:last-child{text-align:right}
.prix .vide{color:var(--tres-discret)}
.prix .nombre{font-variant-numeric:tabular-nums}

/* ---------- la matrice des offres ---------- */

.matrice__cadre{overflow-x:auto;margin-top:6px}
.matrice{width:100%;min-width:720px;border-collapse:collapse;text-align:left}
.matrice caption{position:absolute;left:-9999px}
.matrice th,.matrice td{
  padding:16px 22px 16px 0;border-bottom:1px solid var(--filet);
  vertical-align:baseline;font-size:15.5px;line-height:1.55;
}
.matrice thead td{border-bottom:1px solid var(--encre)}
.matrice thead th{
  font-family:var(--titre);font-size:clamp(20px,2vw,24px);font-weight:500;
  letter-spacing:-.022em;color:var(--encre);
  padding-bottom:12px;border-bottom:1px solid var(--encre);
}
/* L'intitulé de ligne reste lisible quand on fait défiler les colonnes. */
.matrice tbody th{
  font-family:var(--sans);font-weight:500;font-size:13.5px;color:var(--discret);
  width:22ch;position:sticky;left:0;background:var(--blanc);
  padding-right:28px;
}
.matrice tbody td{color:var(--texte)}
.matrice__pourqui td{color:var(--encre);font-size:16px}
.matrice .vide{color:var(--tres-discret)}
.matrice .nombre{font-variant-numeric:tabular-nums;white-space:nowrap}
.matrice__prix th,.matrice__prix td{border-bottom:0;padding-top:22px}
.matrice__prix .montant{
  font-family:var(--titre);font-size:clamp(22px,2.2vw,26px);color:var(--encre);
  font-variant-numeric:tabular-nums;white-space:nowrap;
}
.matrice__aide{margin-top:12px}
@media (min-width:860px){.matrice__aide{display:none}}

/* la portée de l'offre, sous son nom */
.offre__portee{
  display:block;font-family:var(--sans);font-size:12.5px;font-weight:400;
  letter-spacing:0;color:var(--discret);margin-top:5px;
}

/* les règles de temps : un tableau plutôt qu'un paragraphe de bas de page */
.regles{margin-top:clamp(36px,4.5vw,58px);border-top:1px solid var(--filet);padding-top:0}

/* Un bloc qui se replie. Sans JavaScript, <details> fait le travail tout
   seul : le navigateur gère l'ouverture, le clavier et les lecteurs d'écran. */
/* Pas de filet sous le résumé : celui des options en dessous suffit, et
   quand le bloc est ouvert c'est la dernière ligne du tableau qui ferme. */
.repli > summary{
  cursor:pointer;list-style:none;position:relative;
  padding:24px 44px 24px 0;
  display:flex;flex-direction:column;gap:6px;
}
.repli > summary::-webkit-details-marker{display:none}
.repli__titre{
  font-family:var(--titre);font-weight:500;color:var(--encre);
  font-size:clamp(19px,1.9vw,23px);letter-spacing:-.018em;line-height:1.2;
}
.repli__aide{font-size:13.5px;line-height:1.5;color:var(--discret);max-width:56ch}
.repli > summary::after{
  content:"";position:absolute;right:8px;top:32px;
  width:11px;height:11px;
  border-right:1px solid var(--encre);border-bottom:1px solid var(--encre);
  transform:rotate(45deg);transform-origin:center;transition:transform .18s ease;
}
.repli[open] > summary::after{transform:rotate(-135deg)}
.repli > summary:hover .repli__titre{text-decoration:underline;text-underline-offset:4px}
.repli > .regle{margin-bottom:22px}
@media (prefers-reduced-motion:reduce){.repli > summary::after{transition:none}}

.regle{width:100%;border-collapse:collapse;text-align:left}
.regle caption{position:absolute;left:-9999px}
.regle th{
  font-family:var(--sans);font-weight:500;font-size:13.5px;color:var(--encre);
  text-align:left;vertical-align:baseline;
}
.regle td{font-size:15.5px;line-height:1.62;color:var(--texte);max-width:72ch;vertical-align:baseline}
/* Sous 768 px, l'intitulé passe au-dessus de sa règle : deux colonnes dans
   390 px de large, ça n'est plus un tableau, c'est une gouttière. */
@media (max-width:767px){
  .regle,.regle tbody,.regle tr,.regle th,.regle td{display:block;width:auto}
  .regle tr{border-top:1px solid var(--filet);padding:18px 0}
  .regle tr:last-child{border-bottom:1px solid var(--filet)}
  .regle th{padding:0 0 6px}
  .regle td{padding:0}
}
@media (min-width:768px){
  .regle th,.regle td{padding:16px 0;border-bottom:1px solid var(--filet)}
  .regle tr:first-child th,.regle tr:first-child td{border-top:1px solid var(--filet)}
  .regle th{width:24ch;padding-right:40px}
}

/* les options, sous le tableau : ce qui n'est pas compris dans l'abonnement.
   Second repli, jumeau de celui des règles de temps. Le résumé énumère les sept
   options et dit qu'aucune n'est comprise : replié ne veut pas dire caché. */
.options{margin-top:0;border-top:1px solid var(--filet);padding-top:0}
.options__chapeau{max-width:62ch;font-size:15.5px;line-height:1.62;color:var(--texte);margin:0 0 4px}
/* le dernier filet ferme le bloc ouvert, comme la dernière ligne du tableau
   ferme celui des règles */
.options[open] .options__liste{border-bottom:1px solid var(--filet);margin-bottom:26px}
.options__liste{display:grid;grid-template-columns:1fr;gap:0}
@media (min-width:768px){.options__liste{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 44px}}
@media (min-width:1080px){.options__liste{grid-template-columns:repeat(3,minmax(0,1fr));gap:0 44px}}
.option{border-top:1px solid var(--filet);padding:22px 0 24px}
.option h3{
  font-size:18px;font-weight:500;line-height:1.25;letter-spacing:-.018em;
  color:var(--encre);margin-bottom:10px;
}
.option p{font-size:15.5px;line-height:1.62;color:var(--texte);max-width:40ch}

@media (max-width:767px){
  .prix thead{position:absolute;left:-9999px}
  .prix tr{display:block;border-bottom:1px solid var(--filet);padding:20px 0}
  .prix td{display:flex;justify-content:space-between;gap:20px;padding:5px 0;border:0;text-align:right}
  .prix td::before{content:attr(data-libelle);font-family:var(--sans);font-weight:500;letter-spacing:.015em;font-size:12.5px;color:var(--discret);text-align:left;flex:none;white-space:nowrap;overflow-wrap:normal}
  .prix .offre{text-align:left;justify-content:flex-start;width:auto;white-space:normal;display:block}
  .prix .offre::before{content:none}
}

.prix-pied{
  display:grid;grid-template-columns:1fr;gap:26px;
  margin-top:clamp(30px,4vw,46px);
}
@media (min-width:900px){.prix-pied{grid-template-columns:1fr 1.15fr;gap:60px;align-items:start}}
.prix-pied__cadre{
  border-left:1px solid var(--encre);padding-left:20px;
  font-size:15.5px;line-height:1.62;color:var(--texte);max-width:44ch;
}

/* ---------- la voix ---------- */

.voix{display:grid;grid-template-columns:1fr;gap:40px;align-items:center}
@media (min-width:900px){.voix{grid-template-columns:.78fr 1.22fr;gap:clamp(48px,6vw,76px)}}
.voix img{
  width:100%;max-height:430px;object-fit:cover;object-position:center 14%;
  border-radius:var(--rayon);filter:grayscale(.28) contrast(1.03);
}
.voix__propos{display:flex;flex-direction:column;gap:34px}
.voix blockquote{
  font-family:var(--titre);
  margin:0;font-size:clamp(23px,2.9vw,33px);line-height:1.4;letter-spacing:-.024em;
  color:var(--sur-sombre);max-width:28ch;font-weight:400;
}
.voix figcaption{display:flex;flex-direction:column;gap:5px}
.voix__nom{font-weight:600;font-size:16px;color:var(--sur-sombre)}
.voix__role{font-size:15px;color:rgba(239,237,232,.62)}

/* ---------- questions ---------- */

.questions{display:flex;flex-direction:column}
.question{border-top:1px solid var(--filet);padding:0}
.question:last-child{border-bottom:1px solid var(--filet)}
.question summary{
  cursor:pointer;list-style:none;padding:26px 40px 26px 0;position:relative;
  font-size:clamp(17px,1.8vw,20px);font-weight:600;color:var(--encre);letter-spacing:-.01em;
}
.question summary::-webkit-details-marker{display:none}
.question summary::after{
  content:"";position:absolute;right:6px;top:50%;
  width:11px;height:11px;margin-top:-6px;
  border-right:1px solid var(--encre);border-bottom:1px solid var(--encre);
  transform:rotate(45deg);transform-origin:center;transition:transform .18s ease;
}
.question[open] summary::after{transform:rotate(-135deg)}
.question p{padding:0 0 26px;max-width:70ch;font-size:16px}

/* ---------- contact ---------- */

.contact{display:grid;grid-template-columns:1fr;gap:clamp(36px,5vw,72px)}
@media (min-width:900px){.contact{grid-template-columns:1.1fr .9fr}}

.champ{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}
.champ label{font-family:var(--sans);font-weight:500;letter-spacing:.015em;font-size:13.5px;color:var(--sur-sombre-faible)}
.champ input,.champ textarea,.champ select{
  font:inherit;font-size:16px;color:var(--sur-sombre);
  background:transparent;border:0;border-bottom:1px solid var(--sur-sombre-filet);
  padding:10px 0;border-radius:0;
}
.champ input:focus,.champ textarea:focus,.champ select:focus{outline:0;border-bottom-color:var(--sur-sombre)}
.champ textarea{resize:vertical;min-height:110px}
.duo-champs{display:grid;grid-template-columns:1fr;gap:0}
@media (min-width:560px){.duo-champs{grid-template-columns:1fr 1fr;gap:0 22px}}
.champ select option{color:#12304E}

/* Aide de saisie et signalement d'erreur. :user-invalid ne se déclenche
   qu'après une tentative, jamais sur un champ encore vierge : on ne barre
   pas de rouge un formulaire qu'on vient d'ouvrir. */
.champ__aide{
  margin:0;font-size:13px;line-height:1.5;
  color:rgba(239,237,232,.48);
}
.champ__facultatif{
  font-weight:400;letter-spacing:0;font-size:12.5px;
  color:rgba(239,237,232,.42);
}
.champ input:user-invalid,
.champ select:user-invalid{border-bottom-color:#E4A08A;border-bottom-width:2px}
.champ input:user-invalid ~ .champ__aide{color:#E4A08A}

.coordonnees{display:flex;flex-direction:column;gap:22px}
.coordonnees dl{margin:0;display:flex;flex-direction:column;gap:18px}
.coordonnees dt{font-family:var(--sans);font-weight:500;letter-spacing:.015em;font-size:13.5px;color:var(--sur-sombre-faible);margin-bottom:5px}
.coordonnees dd{margin:0;font-size:16.5px;color:var(--sur-sombre)}
.coordonnees a{color:var(--sur-sombre)}

/* ---------- clôture et pied ---------- */

.cloture{display:flex;flex-direction:column;align-items:center;gap:34px;text-align:center}
.cloture h2{max-width:24ch;font-size:clamp(28px,4vw,50px);line-height:1.18}

.pied{background:var(--profond);color:var(--sur-sombre-doux);padding-block:clamp(48px,6vw,72px);font-size:15px}
.pied a{color:var(--sur-sombre-doux);text-decoration:none}
.pied a:hover{color:var(--sur-sombre);text-decoration:underline}
.pied__haut{
  display:grid;grid-template-columns:1fr;gap:32px;
  padding-bottom:36px;border-bottom:1px solid var(--sur-sombre-filet);
}
@media (min-width:768px){.pied__haut{grid-template-columns:1.4fr 1fr 1fr}}
.pied__marque{font-family:var(--logo);font-weight:700;font-size:19px;color:var(--sur-sombre);letter-spacing:.01em}
.pied__liste{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.pied__bas{
  display:flex;flex-wrap:wrap;gap:12px 28px;justify-content:space-between;
  padding-top:28px;font-size:13.5px;color:var(--sur-sombre-faible);
}

/* ---------- pages de contenu (légales, article) ---------- */

/* Colonne de texte simple, pour une page qui n'appelle pas la numérotation.
   Un titre ne touche jamais son paragraphe : il l'annonce, il ne s'y colle pas. */
.texte{width:100%;max-width:74ch}
.texte h2{font-size:clamp(22px,2.4vw,28px);line-height:1.22;max-width:none;margin:2.4em 0 .65em}
.texte h2:first-of-type{margin-top:0}
.texte h3{font-size:clamp(17px,1.8vw,20px);line-height:1.3;max-width:none;margin:1.9em 0 .5em}
.texte p,.texte li{font-size:16.5px;line-height:1.72}
.texte ul{padding-left:1.2em;margin:1.1em 0}
.texte li + li{margin-top:.55em}
.texte dl{margin:1.3em 0}
.texte dt{font-weight:600;color:var(--encre);margin-top:1.2em}
.texte dd{margin:.35em 0 0}

/* ---------- utilitaires ---------- */

.pile{display:flex;flex-direction:column}
.pile--large{gap:clamp(36px,4vw,52px)}
.visuellement-cache{
  position:absolute;width:1px;height:1px;overflow:hidden;
  clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;
}

@media print{
  .pastille,.plan,.bouton{display:none}
  body{background:#fff;color:#000;font-size:11pt}
  .section--sombre,.pied{background:#fff;color:#000}
  .section--sombre h1,.section--sombre h2,.section--sombre h3{color:#000}
  /* Un contrat ne se lit pas replié : tout s'ouvre à l'impression. */
  details{display:block}
  details > *:not(summary){display:revert !important}
  .repli > summary::after,.question summary::after{display:none}
}

/* ---------- correctifs de lisibilité sur fond sombre ---------- */

.section--sombre a{color:var(--sur-sombre)}
.section--sombre a:hover{color:#fff}
.section--sombre .note{color:rgba(239,237,232,.62)}
.champ label{color:rgba(239,237,232,.62)}
.pied__bas{color:rgba(239,237,232,.62)}
.pied__bas a{color:rgba(239,237,232,.72)}

/* le pied se distingue de la section contact, toutes deux en bleu profond */
.pied{border-top:1px solid var(--sur-sombre-filet)}

/* titres cliquables de l'index : discrets, soulignés au survol seulement */
.index__ligne h3 a{text-decoration:none;color:inherit;border-bottom:1px solid transparent}
.index__ligne h3 a:hover{border-bottom-color:currentColor}

/* le plan reste lisible sur petit écran : il défile horizontalement */
@media (max-width:900px){
  .plan__cadre{-webkit-overflow-scrolling:touch;scrollbar-width:thin}
  .plan__dessin{width:1080px;min-width:1080px}
  .plan__legende{flex-direction:column;gap:6px}
}

/* le bouton de la pastille garde ses couleurs propres */
.pastille__liens a.bouton--plein{color:var(--blanc);background:var(--encre)}
.pastille__liens a.bouton--plein:hover{color:var(--blanc);background:var(--profond)}

/* ---------- V2 : ancres, mouvement, sélection ---------- */

/* la pastille est fixe : les ancres ne doivent pas passer dessous */
[id]{scroll-margin-top:104px}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}

::selection{background:var(--encre);color:var(--blanc)}
.section--sombre ::selection{background:var(--papier);color:var(--profond)}

/* le tableau des prix reste lisible si la page est très étroite */
.prix td,.prix th{overflow-wrap:anywhere}

/* les liens du corps de texte se distinguent sans crier */
.texte a,.index__texte a,.question p a{text-decoration:underline}

/* ---------- V2 : classes utilitaires, en remplacement des styles en ligne
   (permet de retirer 'unsafe-inline' de la directive style-src) ---------- */

.titre-page{font-size:clamp(33px,4.6vw,58px);max-width:19ch;line-height:1.08}
.titre-simple{margin:0}
.espace-sous{margin-bottom:14px}
.espace-avant-l{margin-top:36px}
.espace-avant-m{margin-top:28px}
.espace-avant-s{margin-top:12px}
.espace-sous-l{margin-bottom:26px}
.baseline{margin-top:26px}
.mesure-32{max-width:32ch}
.mesure-44{max-width:44ch}
.actions{display:flex;gap:26px;flex-wrap:wrap;align-items:center}
.page-courte{padding-block:clamp(90px,14vh,170px)}
.mention-formulaire{margin-top:20px;color:var(--sur-sombre-faible);max-width:44ch}

/* ---------- V2 : le repère bleu suit la lecture ----------
   Une seule entrée est mise en relief à la fois. En haut de page c'est
   l'appel à l'action ; dès qu'on descend, le bleu passe à la section lue. */

.pastille__liens a[aria-current]{
  background:var(--encre);color:var(--blanc);
  border-radius:999px;
}
.pastille__liens a[aria-current]:hover{background:var(--profond);color:var(--blanc)}

/* quand une section est atteinte, l'appel à l'action rend son aplat */
.pastille__liens[data-suivi="oui"] a.bouton--plein:not([aria-current]){
  background:transparent;color:var(--encre);font-weight:600;
}
.pastille__liens[data-suivi="oui"] a.bouton--plein:not([aria-current]):hover{
  background:rgba(28,76,124,.06);color:var(--encre);
}

@media (prefers-reduced-motion:no-preference){
  .pastille__liens a{transition:background-color .22s ease,color .22s ease}
}

/* ---------- bouton de recherche dans la barre (pages du blog) ---------- */

.pastille__recherche{
  display:inline-flex;align-items:center;gap:8px;
  font:inherit;font-size:14.5px;color:var(--texte);
  background:none;border:0;cursor:pointer;text-decoration:none;
  padding:8px 15px;border-radius:999px;
}
.pastille__recherche:hover{color:var(--encre);background:rgba(28,76,124,.06)}
.pastille__recherche svg{flex:none}

/* la barre porte deux entrées de plus sur le blog : on replie un peu plus tôt */
@media (max-width:1149px){
  .pastille__recherche{justify-content:flex-start;padding:12px 16px;width:100%}
}
