/* ============================================================
   Simon protege ca - design system v2 (import Claude Design)
   Source : projet Claude Design "Website UI mockups for Simon Protege ca",
   dossier _ds/simon-prot-ge-a-v2-design-system.
   Ce fichier regroupe les tokens (couleurs, typo, espacements, rayons,
   mouvement), la base de page, et les composants partages (header, footer,
   boutons) dont les etats :hover remplacent l'attribut style-hover du
   projet Claude Design (non supporte par un navigateur).
   Les pages v2 chargent ds-v2.css PUIS responsive.css.
   Les pages historiques restent sur theme.css : les deux ne se croisent pas.
   ============================================================ */

/* ── Polices, servies depuis le domaine ────────────────────

   Avant : deux preconnect vers Google puis un <link> vers
   fonts.googleapis.com, qui renvoyait une feuille pointant a son tour vers
   fonts.gstatic.com. Trois allers-retours reseau et deux resolutions DNS avant
   qu'une seule lettre soit peinte, plus un tiers de plus a declarer sous la
   Loi 25.

   Maintenant : les fichiers vivent dans fonts/ et partent du meme serveur que
   la page, sur la connexion deja ouverte. Le <head> precharge les deux fichiers
   du chemin critique (Archivo latin et Space Mono 400 latin).

   Sous-ensembles retenus : latin et latin-ext, les seuls qui servent a du
   francais. Le vietnamien de Google Fonts est ecarte. L'italique n'existe qu'en
   latin : la seule italique reelle du site est .mos-liste em sur /bienvenue.

   Archivo est un fichier variable : un seul telechargement couvre wdth 100..110
   et wght 400..900. Archivo et Space Mono sont sous licence SIL Open Font
   License 1.1, qui autorise expressement l'auto-hebergement. */
@font-face{
  font-family:'Archivo';
  font-style:normal;font-weight:400 900;font-stretch:100% 110%;font-display:swap;
  src:url(fonts/archivo-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Archivo';
  font-style:normal;font-weight:400 900;font-stretch:100% 110%;font-display:swap;
  src:url(fonts/archivo-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:'Archivo';
  font-style:italic;font-weight:400 900;font-stretch:100% 110%;font-display:swap;
  src:url(fonts/archivo-italic-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Space Mono';
  font-style:normal;font-weight:400;font-display:swap;
  src:url(fonts/space-mono-400-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Space Mono';
  font-style:normal;font-weight:400;font-display:swap;
  src:url(fonts/space-mono-400-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:'Space Mono';
  font-style:normal;font-weight:700;font-display:swap;
  src:url(fonts/space-mono-700-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Space Mono';
  font-style:normal;font-weight:700;font-display:swap;
  src:url(fonts/space-mono-700-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ── Couleurs ───────────────────────────────────────────────
   Regle qui gouverne tout : BLEU = action et donnees. CORAIL = accent
   seulement (tampons, <em> sur fond sombre, kickers sombres, puces).
   INK = protection. Les fonds sont du papier chaud, jamais du blanc pur.
   Maximum 1 ou 2 couleurs de fond par vue. */
:root{
  /* surfaces */
  --creme:#FAF7F0;       /* fond principal, papier chaud */
  --creme-2:#F1ECE0;     /* fond de section alternee */
  --ink:#101319;         /* texte principal et fonds sombres */
  --ink-soft:#2A2F3A;    /* texte secondaire sur creme */
  --ink-surface:#171C26; /* surface de carte sur fond sombre */

  /* bleu : action, donnees, courbes, CTA, aplats */
  --bleu:#064DD9;
  --bleu-deep:#0435A8;    /* hover bouton bleu */
  --bleu-tint:#E9EFFF;    /* fond doux */
  --bleu-on-bleu:#BFD3FF; /* texte bleu clair sur aplat bleu */

  /* corail : accent chaud, jamais en action ni en corps de texte */
  --corail:#FF6B4A;

  /* texte et filets */
  --muted:#5A6072;
  --line:#DED8C8;        /* filets beiges, pas gris */

  /* gris sur fond sombre */
  --on-dark-body:#A8B0C4;
  --on-dark-mono:#8F97AB;
  /* 5.10:1 sur --ink. L'ancienne valeur #6E7688 donnait 4.08:1 et echouait
     WCAG AA sur la barre legale du pied de page (12.5 px), lien vers la
     politique de confidentialite compris. */
  --on-dark-legal:#7E8699;
  --on-dark-line:#2E3442;

  /* alias semantiques */
  --bg:var(--creme);
  --bg-alt:var(--creme-2);
  --bg-dark:var(--ink);
  --surface:var(--creme);
  --surface-dark:var(--ink-surface);
  --text:var(--ink);
  --text-soft:var(--ink-soft);
  --text-muted:var(--muted);
  --text-on-dark:var(--on-dark-body);
  --accent:var(--bleu);
  --accent-hover:var(--bleu-deep);
  --accent-tint:var(--bleu-tint);
  --accent-warm:var(--corail);
  --border:var(--line);
  --border-dark:var(--on-dark-line);
  --link:var(--bleu);
  --link-hover:var(--bleu-deep);
  --selection-bg:var(--bleu);
  --selection-fg:var(--creme);
}

/* ── Typographie ────────────────────────────────────────────
   Archivo (--font-d) pour tout ce qui se lit. Space Mono (--font-m) pour
   tout le meta-texte (kickers, legendes, chiffres tabulaires, libelles,
   pied de page, notes) et jamais pour le corps.
   Signature : les grands titres sont larges ET compresses verticalement,
   font-stretch 105-110% + graisse 900 + interligne serre. L'emphase passe
   par <em> devie en font-style:normal + couleur (bleu sur clair, corail
   sur sombre), jamais en italique. */
:root{
  --font-d:'Archivo',system-ui,-apple-system,sans-serif;
  --font-m:'Space Mono',ui-monospace,'SFMono-Regular',monospace;

  --w-reg:400;
  --w-med:500;
  --w-semi:600;
  --w-bold:700;
  --w-heavy:800;
  --w-black:900;

  --stretch-display:105%;
  --stretch-giant:110%;
  --stretch-hero:108%;

  --ls-giant:-.03em;
  --ls-display:-.025em;
  --ls-head:-.02em;
  --ls-tight:-.015em;
  --ls-kicker:.14em;
  --ls-mono:.08em;
  --ls-cue:.18em;

  --lh-giant:1.02;
  --lh-head:1.05;
  --lh-tight:1.15;
  --lh-body:1.6;
  --lh-lead:1.45;

  --fs-giant:min(clamp(120px,22vw,300px),32svh);
  --fs-display:clamp(32px,3.8vw,56px);
  --fs-chapter:min(clamp(34px,4.6vw,72px),6.6svh);
  --fs-hero:clamp(28px,3.4vw,46px);
  --fs-h3:clamp(20px,2.3vw,26px);
  --fs-lead:clamp(15px,1.3vw,19px);
  --fs-body:16px;
  --fs-body-lg:17px;
  --fs-small:14.5px;
  --fs-kicker:12px;
  --fs-mono-sm:11px;
  --fs-mono-xs:10.5px;
}

/* ── Espacements et gabarit ─────────────────────────────── */
:root{
  --space-1:4px;
  --space-2:8px;
  --space-3:12px;
  --space-4:14px;
  --space-5:16px;
  --space-6:18px;
  --space-7:20px;
  --space-8:26px;
  --space-9:34px;
  --space-10:48px;
  --space-11:64px;

  --wrap:1180px;
  --wrap-film:1240px;
  --gutter:6vw;
  --gutter-chrome:4vw;
  --sec-y:clamp(80px,12vh,140px);
  --scene-h:100svh;
  --sticky-top:110px;
}

/* ── Rayons ─────────────────────────────────────────────── */
:root{
  --r-pill:999px;
  --r-field:12px;
  --r-stamp:10px;
  --r-card:16px;
  --r-tile:18px;
  --r-card-lg:20px;
  --r-panel:22px;
  --r-img:14px;
}

/* ── Mouvement, elevation, bordures ─────────────────────────
   Aucune ombre decorative. La separation vient du contraste de fond,
   jamais de l'elevation. Une seule courbe d'accompagnement partout. */
:root{
  --ease:cubic-bezier(.22,1,.36,1);
  --dur-fast:.25s;
  --dur:.35s;
  --dur-slow:.45s;
  --dur-color:.4s;

  --lift-tile:-4px;
  --nudge:3px;
  --nudge-lg:5px;

  --reveal-y:26px;

  --bd:1px solid var(--line);
  --bd-dark:1px solid var(--on-dark-line);
  --bd-stamp:4px solid var(--corail);
  --bd-cta:1.5px solid currentColor;
  --bd-field:1.5px solid var(--line);
  --stamp-tilt:rotate(-7deg);

  --shadow-lightbox:0 30px 90px rgba(0,0,0,.55);
}

/* ── Base ───────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box}

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

body{
  margin:0;
  background:var(--creme);
  color:var(--ink);
  font-family:var(--font-d),system-ui,sans-serif;
  font-size:var(--fs-body);
  line-height:var(--lh-body);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

/* height:auto est indispensable depuis que les <img> portent width et height :
   sans lui, une image contrainte par max-width garderait la hauteur de
   l'attribut et se deformerait. Les deux attributs reservent la place avant le
   telechargement, ce qui supprime le decalage de mise en page (CLS). */
img{max-width:100%;height:auto}

/* Lien d'evitement : premier element focusable de chaque page, invisible
   jusqu'au premier Tab, il saute la banniere et mene droit au contenu. */
.sp-skip{
  position:absolute;left:12px;top:-64px;z-index:1000;
  background:var(--ink);color:var(--creme);
  font-family:var(--font-m);font-size:13px;
  padding:12px 18px;border-radius:var(--r-stamp);
  text-decoration:none;transition:top var(--dur-fast) var(--ease);
}
.sp-skip:focus{top:12px}

/* Texte reserve aux lecteurs d'ecran. */
.sr-only{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
}

::selection{background:var(--selection-bg);color:var(--selection-fg)}

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

/* Le <main> porte tabindex="-1" pour recevoir le focus apres le lien
   d'evitement. On masque son contour : encadrer toute la page n'apprend rien,
   le saut est deja annonce par le changement de contexte. */
main:focus,main:focus-visible{outline:none}

@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}
}

/* ── En-tete de site ────────────────────────────────────── */
.sp-head{
  display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:18px clamp(20px,4vw,48px);
  background:var(--creme);
  border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:50;
  backdrop-filter:blur(8px);
}
.sp-head-brand{display:flex;align-items:center;gap:14px;text-decoration:none}
.sp-head-brand img{display:block;width:auto}
.sp-head-rule{width:1px;height:28px;background:var(--line);display:block}
/* Le CTA d'en-tete ne porte plus de fleche : sur telephone, chaque pixel pris
   par le bouton est un pixel retire au lockup iA, qui doit rester visible.
   Pas de gap non plus, il n'y a plus qu'un seul enfant. */
.sp-head-cta{
  display:inline-flex;align-items:center;
  background:var(--bleu);color:var(--creme);
  font-family:var(--font-m);font-size:12px;letter-spacing:.06em;text-transform:uppercase;
  padding:12px 20px;border-radius:var(--r-pill);text-decoration:none;
  white-space:nowrap;
  transition:background var(--dur) var(--ease),transform var(--dur) var(--ease);
}
.sp-head-cta:hover{background:var(--bleu-deep);transform:translateY(-1px)}

/* ── Boutons ────────────────────────────────────────────── */
.sp-btn{
  display:inline-flex;align-items:center;gap:12px;
  background:var(--bleu);color:var(--creme);
  font-weight:var(--w-bold);font-size:16px;
  padding:16px 30px;border-radius:var(--r-pill);text-decoration:none;
  transition:transform var(--dur) var(--ease),background var(--dur) var(--ease);
}
.sp-btn:hover{background:var(--bleu-deep);transform:translateY(-2px)}

.sp-btn-ghost{
  display:inline-flex;align-items:center;gap:12px;
  color:var(--creme);
  font-weight:var(--w-bold);font-size:16px;
  padding:16px 26px;border-radius:var(--r-pill);
  border:1.5px solid var(--on-dark-line);text-decoration:none;
  transition:transform var(--dur) var(--ease),border-color var(--dur) var(--ease);
}
.sp-btn-ghost:hover{border-color:var(--creme);transform:translateY(-2px)}

/* Lien meta avec fleche : l'ecart se creuse au survol. */
.sp-arrow-link{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--font-m);font-size:12px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--bleu);text-decoration:none;
  transition:gap var(--dur) var(--ease);
}
.sp-arrow-link:hover{gap:16px}

/* ── Pied de page ───────────────────────────────────────── */
.sp-ft a{color:#CBD2E0;text-decoration:none;transition:color .2s var(--ease)}
.sp-ft a:hover{color:var(--creme)}
.sp-ft .amf a{text-decoration:underline;text-underline-offset:3px;text-decoration-color:#3A414F;transition:color var(--dur-fast) var(--ease),text-decoration-color var(--dur-fast) var(--ease)}
.sp-ft .amf a:hover{color:var(--creme);text-decoration-color:var(--corail)}
.sp-ft .soc{width:38px;height:38px;border:1.5px solid var(--on-dark-line);border-radius:var(--r-pill);display:grid;place-items:center;color:var(--creme);transition:all var(--dur-fast) var(--ease)}
.sp-ft .soc:hover{background:var(--bleu);border-color:var(--bleu);color:#fff;transform:translateY(-2px)}

/* Lien inline sur fond clair (corps de texte). */
.sp-link{color:var(--bleu);font-weight:var(--w-bold);text-decoration:underline;text-underline-offset:3px;transition:color var(--dur-fast) var(--ease)}
.sp-link:hover{color:var(--bleu-deep)}

/* Lien discret bleu, sans soulignement (fin de paragraphe, FAQ). */
.sp-quiet-link{color:var(--bleu);font-weight:var(--w-semi);text-decoration:none;transition:color var(--dur-fast) var(--ease)}
.sp-quiet-link:hover{color:var(--bleu-deep);text-decoration:underline;text-underline-offset:3px}

/* Rangee « et aussi » sur fond clair : soulignement beige qui passe au bleu.
   Un lien de liste, pas un bouton : il ne se souleve pas, seul le filet change. */
.sp-more-link{
  color:var(--ink);font-weight:var(--w-semi);font-size:15px;
  text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line);
  transition:color var(--dur-fast) var(--ease),text-decoration-color var(--dur-fast) var(--ease);
}
.sp-more-link:hover{color:var(--bleu);text-decoration-color:var(--bleu)}

/* Tampon « Simon protege ca. » devenu cliquable : il mene a /bienvenue, la page
   qui raconte d'ou vient le « CA ». Le style du tampon reste en attribut style
   sur chaque page (position et taille varient) ; cette classe ne fait que
   neutraliser l'apparence de lien et ajouter la reaction au survol. */
.sp-stamp-link{
  text-decoration:none;display:inline-block;
  transition:transform var(--dur-fast) var(--ease),background-color var(--dur-fast) var(--ease);
}
/* !important : chaque tampon porte son fond, sa couleur et sa rotation en
   attribut style (position et taille varient d'une page a l'autre), et un style
   en ligne bat une feuille. Sans lui, aucun etat de survol ne serait visible. */
.sp-stamp-link:hover,.sp-stamp-link:focus-visible{
  background:var(--corail) !important;color:var(--creme) !important;
  transform:rotate(-7deg) scale(1.04) !important;
}
.sp-stamp-link:focus-visible{outline:2px solid var(--bleu);outline-offset:4px}
@media (prefers-reduced-motion: reduce){
  .sp-stamp-link:hover,.sp-stamp-link:focus-visible{transform:rotate(-7deg) !important}
}

/* ── Tableau comparatif ──────────────────────────────────

   Le meme rendu qu'avant (grille sombre en tete, colonne de criteres sur fond
   creme, colonne mise en avant en bleu), mais sur un vrai <table>. Le rendu
   visuel ne change pas d'un pixel ; ce qui change, c'est que le contenu devient
   un tableau pour un lecteur d'ecran comme pour un moteur, au lieu d'une pile
   de <div> dont la structure ligne/colonne n'existait que dans le CSS.
   table-layout:fixed reproduit exactement les colonnes 1fr de la grille. */
.sp-cmp-wrap{border:1px solid var(--line);border-radius:20px;overflow-x:auto;overflow-y:hidden}
.sp-cmp{width:100%;min-width:560px;border-collapse:collapse;table-layout:fixed;text-align:left}
.sp-cmp thead tr{background:var(--ink);color:var(--creme)}
.sp-cmp thead th{
  padding:18px;font-weight:800;font-size:15px;vertical-align:top;
  border-left:1px solid var(--on-dark-line);
}
/* La premiere en-tete nomme la colonne des criteres : etiquette, pas titre. */
.sp-cmp thead th:first-child{
  border-left:0;font-family:var(--font-m);font-size:11px;font-weight:400;
  letter-spacing:.1em;text-transform:uppercase;color:var(--on-dark-mono);
}
.sp-cmp thead th.sp-cmp-vedette{background:var(--bleu)}
.sp-cmp tbody tr{border-top:1px solid var(--line)}
.sp-cmp tbody th{
  padding:16px 18px;font-weight:700;font-size:13.5px;color:var(--ink);
  background:var(--creme-2);vertical-align:top;
}
.sp-cmp tbody td{
  padding:16px 18px;font-size:13.5px;line-height:1.45;color:var(--muted);
  border-left:1px solid var(--line);vertical-align:top;
}
.sp-cmp tbody td.sp-cmp-vedette{color:var(--ink);background:var(--bleu-tint)}
/* Cellules a pictogramme (banque contre assurance vie). Le display:flex va sur
   un conteneur DANS la cellule, jamais sur le <td> : un <td> en flex perd son
   comportement de cellule, la ligne se disloque et le tableau double de
   hauteur. L'icone ne doit pas se retrecir quand le texte passe sur deux
   lignes, d'ou le flex:none. */
.sp-cmp .sp-cmp-signe{display:flex;gap:10px;align-items:flex-start}
.sp-cmp .sp-cmp-signe > :first-child{flex:none}
.sp-cmp-note{font-family:var(--font-m);font-size:12px;color:var(--muted);margin:16px 0 0;line-height:1.6}
/* Variante large : trois colonnes, texte plus long, donc plus d'air. Utilisee
   par la comparaison banque contre assurance vie. Les largeurs de colonnes
   viennent du <colgroup> de la page (table-layout:fixed les respecte). */
.sp-cmp-lg{min-width:620px}
.sp-cmp-lg thead th{padding:20px 22px;font-size:16px;letter-spacing:-.01em}
.sp-cmp-lg thead th:first-child{font-size:12px;letter-spacing:.1em}
.sp-cmp-lg tbody th{padding:18px 22px;font-size:15px}
.sp-cmp-lg tbody td{padding:18px 22px;font-size:14.5px;line-height:1.5}

/* ── Signature d'auteur (pages guides) ───────────────────
   Qui a ecrit, avec quel permis, et quand le texte a ete revu. */
.sp-signature{
  display:flex;gap:16px;align-items:center;
  max-width:760px;margin:clamp(30px,3.5vw,44px) auto 0;
  padding-top:clamp(20px,2.4vw,28px);border-top:1px solid var(--line);
}
.sp-signature img{
  width:56px;height:56px;flex:none;border-radius:50%;object-fit:cover;
  object-position:50% 12%;background:var(--creme-2);
}
.sp-signature p{margin:0}
.sp-signature-nom{font-size:14.5px;line-height:1.5;color:var(--ink);font-weight:600}
.sp-signature-meta{font-family:var(--font-m);font-size:12px;line-height:1.7;color:var(--muted)}
.sp-signature a{color:var(--bleu);text-decoration:underline;text-underline-offset:3px}
@media (max-width:560px){
  .sp-signature{flex-direction:column;align-items:flex-start;gap:12px}
}

/* ── Boutons complementaires (gabarit page service) ─────── */

/* Contour ink sur fond creme : se remplit au survol. */
.sp-btn-outline{
  display:inline-flex;align-items:center;gap:12px;
  color:var(--ink);background:transparent;
  font-weight:var(--w-bold);font-size:16px;
  padding:16px 26px;border-radius:var(--r-pill);
  border:1.5px solid var(--ink);text-decoration:none;
  transition:transform var(--dur) var(--ease),background var(--dur) var(--ease),color var(--dur) var(--ease);
}
.sp-btn-outline:hover{background:var(--ink);color:var(--creme);transform:translateY(-2px)}

/* Bouton clair pose sur l'aplat bleu du CTA final. */
.sp-btn-light{
  display:inline-flex;align-items:center;gap:12px;
  background:var(--creme);color:var(--ink);
  font-weight:var(--w-bold);font-size:16px;
  padding:16px 32px;border-radius:var(--r-pill);text-decoration:none;
  transition:transform var(--dur) var(--ease);
}
.sp-btn-light:hover{transform:translateY(-2px)}

/* Bouton bleu compact (encadre partenaire). */
.sp-btn-sm{
  display:inline-flex;align-items:center;gap:10px;margin-top:20px;
  background:var(--bleu);color:var(--creme);
  font-weight:var(--w-bold);font-size:15px;
  padding:13px 24px;border-radius:var(--r-pill);text-decoration:none;
  transition:transform var(--dur) var(--ease),background var(--dur) var(--ease);
}
.sp-btn-sm:hover{background:var(--bleu-deep);transform:translateY(-2px)}

/* Carte « a explorer aussi » sur fond sombre. */
.sp-card-related{
  background:var(--ink-surface);border:1px solid var(--on-dark-line);
  border-radius:var(--r-tile);padding:26px 24px;
  color:var(--creme);text-decoration:none;
  display:flex;flex-direction:column;gap:8px;min-height:180px;
  transition:transform var(--dur) var(--ease),border-color var(--dur) var(--ease);
}
.sp-card-related:hover{transform:translateY(var(--lift-tile));border-color:var(--corail)}

/* Tuile de service sur fond clair : se souleve, le filet passe au bleu. */
.sp-tile{
  background:var(--creme);border:1px solid var(--line);border-radius:var(--r-tile);
  color:inherit;text-decoration:none;
  display:flex;flex-direction:column;gap:8px;
  transition:transform var(--dur) var(--ease),border-color var(--dur) var(--ease);
}
.sp-tile:hover{transform:translateY(var(--lift-tile));border-color:var(--bleu)}

/* Tuile principale en aplat bleu. */
.sp-tile-hero{
  background:var(--bleu);border:1px solid var(--bleu);border-radius:var(--r-tile);
  color:var(--creme);text-decoration:none;
  display:flex;flex-direction:column;gap:10px;
  transition:transform var(--dur) var(--ease),border-color var(--dur) var(--ease);
}
.sp-tile-hero:hover{transform:translateY(var(--lift-tile));border-color:var(--creme)}

/* Bloc vedette pleine largeur (page guides) : simple soulevement. */
.sp-feature{transition:transform var(--dur) var(--ease)}
.sp-feature:hover{transform:translateY(var(--lift-tile))}

/* Etape de la ligne de vie : simple soulevement. */
.sp-step{
  display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;
  color:inherit;text-decoration:none;
  transition:transform var(--dur) var(--ease);
}
.sp-step:hover{transform:translateY(var(--lift-tile))}

/* Rangee de choix (bloc de qualification de l'accueil). */
.sp-choice{
  display:block;font-family:var(--font-d);font-size:15.5px;font-weight:var(--w-med);
  text-align:left;background:var(--creme);color:var(--ink);text-decoration:none;
  border:1.5px solid var(--line);border-radius:var(--r-field);padding:15px 18px;
  transition:border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease);
}
.sp-choice:hover{border-color:var(--bleu);transform:translateX(var(--nudge))}
.sp-choice.is-first,
.sp-choice.is-selected{background:var(--bleu-tint);border-color:var(--bleu)}
/* Variante <button> : meme rendu que le <a>. */
button.sp-choice{width:100%;cursor:pointer;font:inherit;font-size:15.5px;font-weight:var(--w-med)}

/* Bouton « Retour » du questionnaire de contact. */
.qualif-back{
  font-family:var(--font-m);font-size:12px;letter-spacing:.06em;text-transform:uppercase;
  font-weight:var(--w-bold);background:transparent;border:none;cursor:pointer;
  color:var(--muted);padding:8px 0;
}
.qualif-back[disabled]{cursor:default;color:var(--line)}

/* Recapitulation du questionnaire de contact : l'etape qui suit la troisieme
   question. Meme vocabulaire que les rangees de choix (fond bleu tres pale,
   filet bleu) pour que la lecture reste dans le meme monde, sans bouton. */
.qualif-recap{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}
.qualif-recap li{
  display:flex;flex-direction:column;gap:4px;
  background:var(--bleu-tint);border:1px solid var(--bleu);
  border-radius:var(--r-card);padding:14px 16px;
}
.qualif-recap-k{
  font-family:var(--font-m);font-size:11px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--bleu);
}
.qualif-recap-v{font-size:15.5px;font-weight:var(--w-med);color:var(--ink);line-height:1.4}
.qualif-recap-note{
  font-family:var(--font-m);font-size:12px;line-height:1.7;
  color:var(--muted);margin:16px 0 0;
}

/* Bouton corail sur fond sombre (concours de references). */
.sp-btn-warm{
  display:inline-flex;align-items:center;gap:12px;
  background:var(--corail);color:var(--ink);
  font-weight:var(--w-bold);font-size:16px;
  padding:16px 30px;border-radius:var(--r-pill);text-decoration:none;
  transition:transform var(--dur) var(--ease);
}
.sp-btn-warm:hover{transform:translateY(-2px)}

/* ── Rangees de liens utiles (/prochaines-etapes) ───────── */
.sp-row{
  display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;
  padding:18px 24px;border-top:1px solid var(--line);
  text-decoration:none;color:inherit;
  transition:background var(--dur-fast) var(--ease);
}
a.sp-row:hover{background:var(--bleu-tint)}
.sp-row.is-soon{opacity:.72}
.sp-row-t{display:block;font-weight:var(--w-bold);font-size:17px;letter-spacing:-.01em;color:var(--ink);margin-bottom:4px}
.sp-row-d{display:block;font-size:14.5px;line-height:1.5;color:var(--muted);margin-bottom:6px}
.sp-row-u{display:block;font-family:var(--font-m);font-size:11px;color:var(--muted)}
.sp-row-a{font-family:var(--font-m);font-size:16px;color:var(--bleu)}
.sp-row-soon{
  font-family:var(--font-m);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);border:1px solid var(--line);border-radius:var(--r-pill);
  padding:6px 11px;white-space:nowrap;
}

/* ── Bandeau de consentement (consent.js) ───────────────── */
/* Le CSS vit ici plutot que dans le JS : un <style> injecte de moins, et le
   bandeau suit automatiquement les tokens du systeme.
   Structure produite par consent.js :
   #sp-cb > .sp-cb-card > .sp-cb-row (texte + actions) + .sp-cb-panel
   .sp-on = bandeau visible, .sp-open = panneau de details deplie. */
#sp-cb{
  position:fixed;left:0;right:0;bottom:0;z-index:9000;
  display:flex;justify-content:center;
  padding:0 clamp(12px,2.4vw,28px) clamp(12px,2vw,24px);
  pointer-events:none;
  font-family:var(--font-d),system-ui,sans-serif;
  opacity:0;transform:translateY(26px);
  transition:opacity var(--dur-slow) var(--ease),transform var(--dur-slow) var(--ease);
}
#sp-cb.sp-on{opacity:1;transform:translateY(0)}
.sp-cb-card{
  pointer-events:auto;width:100%;max-width:1220px;margin:0 auto;box-sizing:border-box;
  background:var(--ink);color:var(--on-dark-body);
  border:1px solid var(--on-dark-line);border-radius:20px;
  padding:clamp(20px,2.4vw,30px) clamp(20px,2.6vw,34px);
  max-height:calc(100dvh - clamp(44px,7vw,72px));
  overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
}
#sp-cb a{
  color:var(--creme);text-decoration:underline;text-underline-offset:3px;
  text-decoration-color:var(--on-dark-line);
  transition:text-decoration-color var(--dur-fast) var(--ease);
}
#sp-cb a:hover{text-decoration-color:var(--corail)}

.sp-cb-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:clamp(18px,2.4vw,40px);align-items:center}
.sp-cb-kicker{
  font-family:var(--font-m);font-size:11px;letter-spacing:var(--ls-kicker);
  text-transform:uppercase;color:var(--corail);margin:0 0 10px;
}
.sp-cb-title{
  font-weight:var(--w-black);font-stretch:var(--stretch-display);
  font-size:clamp(21px,2.1vw,28px);line-height:1.06;letter-spacing:var(--ls-display);
  margin:0 0 10px;color:var(--creme);
}
.sp-cb-title em{font-style:normal;color:var(--corail)}
.sp-cb-text{font-size:14.5px;line-height:1.65;color:var(--on-dark-body);margin:0;max-width:62ch}

.sp-cb-acts{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:flex-end}
.sp-cb-btn{
  appearance:none;cursor:pointer;font-family:inherit;
  font-weight:var(--w-bold);font-size:15px;min-height:46px;padding:12px 26px;
  border-radius:var(--r-pill);border:1.5px solid transparent;white-space:nowrap;
  transition:transform var(--dur) var(--ease),background var(--dur-fast) var(--ease),
             color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease);
}
.sp-cb-refuse{background:transparent;color:var(--creme);border-color:currentColor}
.sp-cb-refuse:hover{background:var(--creme);color:var(--ink);transform:translateY(-2px)}
.sp-cb-accept{background:var(--bleu);color:var(--creme);border-color:var(--bleu)}
.sp-cb-accept:hover{background:var(--bleu-deep);border-color:var(--bleu-deep);transform:translateY(-2px)}
.sp-cb-save{background:var(--creme);color:var(--ink);border-color:var(--creme)}
.sp-cb-save:hover{background:var(--corail);border-color:var(--corail);color:var(--ink);transform:translateY(-2px)}
.sp-cb-more{
  appearance:none;cursor:pointer;background:transparent;color:var(--on-dark-body);
  font-family:var(--font-m);font-size:12px;letter-spacing:var(--ls-mono);text-transform:uppercase;
  min-height:46px;padding:12px 8px;border:0;border-bottom:1px solid transparent;
  transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease);
}
.sp-cb-more:hover{color:var(--creme);border-bottom-color:var(--corail)}

/* Panneau de details : 0fr vers 1fr, la seule facon d'animer une hauteur auto. */
.sp-cb-panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s var(--ease)}
#sp-cb.sp-open .sp-cb-panel{grid-template-rows:1fr}
.sp-cb-panel-clip{overflow:hidden;min-height:0}
.sp-cb-panel-inner{
  border-top:1px solid var(--on-dark-line);margin-top:22px;padding-top:22px;
  display:flex;flex-direction:column;gap:2px;
}
.sp-cb-cat{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px;align-items:start;
  padding:16px 0;border-bottom:1px solid var(--on-dark-line);
}
.sp-cb-cat:last-of-type{border-bottom:0}
.sp-cb-cat-name{font-weight:var(--w-heavy);font-size:15.5px;letter-spacing:-.01em;color:var(--creme);margin:0 0 5px}
.sp-cb-cat-desc{font-size:13.5px;line-height:1.6;color:var(--on-dark-mono);margin:0;max-width:70ch}
.sp-cb-mono{font-family:var(--font-m);font-size:12.5px;color:var(--on-dark-body)}
.sp-cb-always{
  font-family:var(--font-m);font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--on-dark-legal);white-space:nowrap;padding-top:4px;
}
.sp-cb-switch{
  appearance:none;cursor:pointer;flex:none;width:52px;height:30px;padding:0;
  border-radius:var(--r-pill);border:1.5px solid var(--on-dark-line);background:transparent;
  position:relative;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease);
}
.sp-cb-switch.is-on{background:var(--bleu);border-color:var(--bleu)}
.sp-cb-knob{
  position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:var(--r-pill);
  background:var(--on-dark-mono);transform:translateX(0);
  transition:transform var(--dur) var(--ease),background var(--dur) var(--ease);
}
.sp-cb-switch.is-on .sp-cb-knob{background:var(--creme);transform:translateX(22px)}
.sp-cb-foot{
  display:flex;flex-wrap:wrap;gap:16px 22px;align-items:center;justify-content:space-between;
  border-top:1px solid var(--on-dark-line);margin-top:8px;padding-top:20px;
}
.sp-cb-legal{font-size:12.5px;line-height:1.7;color:var(--on-dark-legal);margin:0;max-width:64ch}

/* Declencheur du pied de page. Un <button> plutot qu'un <a> : ce n'est pas une
   navigation. Il se fond dans la ligne legale du footer. */
.sp-cb-open{
  appearance:none;background:none;border:0;padding:0;cursor:pointer;
  font-family:inherit;font-size:inherit;line-height:inherit;color:var(--on-dark-legal);
  text-decoration:underline;text-underline-offset:3px;
  transition:color var(--dur-fast) var(--ease);
}
.sp-cb-open:hover{color:var(--creme)}

@media (max-width:820px){
  .sp-cb-row{grid-template-columns:minmax(0,1fr)}
  .sp-cb-acts{justify-content:stretch}
  .sp-cb-acts > *{flex:1 1 auto}
}
@media (prefers-reduced-motion:reduce){
  #sp-cb,.sp-cb-panel,.sp-cb-btn,.sp-cb-switch,.sp-cb-knob{transition:none}
  #sp-cb{transform:none}
}

/* ── Page 404 ───────────────────────────────────────────── */
/* Pied de page collé en bas même quand le contenu est court. */
.sp-page-fill{min-height:100vh;display:flex;flex-direction:column}
.sp-card-404{
  background:var(--creme-2);border-radius:var(--r-tile);padding:26px 24px;
  border-top:3px solid var(--bleu);text-decoration:none;display:block;
  transition:transform var(--dur) var(--ease);
}
.sp-card-404:hover{transform:translateY(var(--lift-tile))}

/* ── Pages d'atterrissage publicitaires ─────────────────── */
.pub-head{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:14px clamp(18px,4vw,44px);
  background:rgba(250,247,240,.92);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);position:sticky;top:0;z-index:60;
}
.pub-head-cta{
  display:inline-flex;align-items:center;gap:9px;
  font-family:var(--font-m);font-size:12px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink);text-decoration:none;border:1.5px solid var(--ink);
  padding:11px 18px;border-radius:var(--r-pill);
  transition:background var(--dur) var(--ease),color var(--dur) var(--ease);
}
.pub-head-cta:hover{background:var(--ink);color:var(--creme)}

/* Lien meta souligne d'un filet qui passe au bleu. */
.pub-jump{
  display:inline-flex;align-items:center;gap:9px;
  font-family:var(--font-m);font-size:12px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--bleu);text-decoration:none;
  border-bottom:1.5px solid var(--line);padding-bottom:7px;
  transition:border-color var(--dur) var(--ease),gap var(--dur) var(--ease);
}
.pub-jump:hover{border-color:var(--bleu);gap:14px}

/* Accordeon FAQ des pages pub (pub.js). */
.pub-faq-item{border-bottom:1px solid var(--line)}
.pub-faq-q{
  width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;
  background:none;border:none;cursor:pointer;padding:22px 0;text-align:left;
  font-family:var(--font-d);font-weight:var(--w-bold);font-size:18.5px;
  letter-spacing:-.01em;color:var(--ink);
}
.pub-faq-sign{flex:none;font-family:var(--font-m);font-size:20px;color:var(--bleu);transition:transform var(--dur) var(--ease)}
.pub-faq-item.is-open .pub-faq-sign{transform:rotate(45deg)}
.pub-faq-a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s var(--ease)}
.pub-faq-item.is-open .pub-faq-a{grid-template-rows:1fr}
.pub-faq-a > div{overflow:hidden}
.pub-faq-a p{font-size:16.5px;line-height:var(--lh-body);color:var(--ink-soft);margin:0 0 22px;max-width:62ch}

/* Bouton crème sur aplat bleu (CTA final des pages pub). */
.pub-btn-light{
  display:inline-flex;align-items:center;gap:12px;
  background:var(--creme);color:var(--bleu);
  font-weight:var(--w-bold);font-size:17px;padding:17px 32px;
  border-radius:var(--r-pill);text-decoration:none;
  transition:transform var(--dur) var(--ease),background var(--dur) var(--ease);
}
.pub-btn-light:hover{transform:translateY(-2px);background:#fff}
.pub-btn-outline{
  display:inline-flex;align-items:center;gap:12px;
  color:var(--creme);font-weight:var(--w-bold);font-size:17px;padding:17px 30px;
  border-radius:var(--r-pill);border:1.5px solid currentColor;text-decoration:none;
  transition:transform var(--dur) var(--ease),background var(--dur) var(--ease),color var(--dur) var(--ease);
}
.pub-btn-outline:hover{background:var(--creme);color:var(--bleu);transform:translateY(-2px)}

/* Barre d'action collante (mobile), affichee par responsive.css. */
.pub-bar{
  position:fixed;left:0;right:0;bottom:0;z-index:70;align-items:center;gap:10px;
  padding:12px 14px;background:rgba(250,247,240,.96);backdrop-filter:blur(10px);
  border-top:1px solid var(--line);
}

/* Pied de page allege des pages pub. */
.pub-ft a{color:var(--on-dark-mono);text-decoration:none;transition:color var(--dur-fast) var(--ease)}
.pub-ft a:hover{color:var(--creme)}
/* Le declencheur du bandeau temoins se fond dans la rangee de liens. */
.pub-ft .sp-cb-open{color:var(--on-dark-mono);text-decoration:none;letter-spacing:inherit;text-transform:inherit}
.pub-ft .sp-cb-open:hover{color:var(--creme)}

/* ── Calculatrice de placements (calculateur.js) ────────── */
:root{
  /* Rampe de donnees du graphique : bleu = ce que tu deposes,
     bleu clair = interets. Ces valeurs ne servent qu'a la data-viz. */
  --viz-contrib:#4C86FF;
  --viz-interest:#BFD3FF;
  --viz-grid:#2A3244;
  --viz-rail:#242B3A;
  --viz-axis:#767E92;
  /* Gris neutre des illustrations et schemas (hors data-viz). */
  --gris-illus:#9AA3B5;
}

.calc-grid{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:clamp(22px,2.6vw,40px);align-items:start}
.calc-panel{
  background:var(--ink-surface);border:1px solid var(--on-dark-line);border-radius:var(--r-tile);
  padding:clamp(22px,2.4vw,28px);display:flex;flex-direction:column;gap:24px;
}
.calc-right{display:flex;flex-direction:column;gap:16px}

/* Controles */
.calc-ctl-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:10px}
.calc-ctl-label{font-family:var(--font-m);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--on-dark-mono);line-height:1.3}
.calc-ctl-val{display:inline-flex;align-items:baseline;gap:5px;flex:none}
.calc-input{
  background:transparent;border:0;border-bottom:1.5px solid var(--on-dark-line);
  color:var(--creme);font-family:var(--font-m);font-size:17px;font-weight:var(--w-bold);
  text-align:right;padding:2px 3px 5px;outline:none;
  transition:border-color var(--dur-fast) var(--ease);
}
.calc-input:focus{border-color:var(--bleu)}
.calc-ctl-unit{font-family:var(--font-m);font-size:13px;color:var(--on-dark-mono)}
.calc-ctl-note{
  display:inline-block;margin-top:9px;font-family:var(--font-m);font-size:11px;letter-spacing:.02em;
  color:var(--on-dark-mono);text-decoration:none;border-bottom:1px solid var(--on-dark-line);
  padding-bottom:2px;line-height:1.5;
  transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease);
}
.calc-ctl-note:hover{color:var(--corail);border-color:var(--corail)}

/* Curseur */
.calc-track{position:relative;height:22px;display:flex;align-items:center;cursor:pointer;touch-action:none}
.calc-track-bg{position:absolute;left:0;right:0;height:6px;border-radius:var(--r-pill);background:var(--viz-rail)}
.calc-track-fill{position:absolute;left:0;height:6px;border-radius:var(--r-pill);background:var(--bleu)}
.calc-knob{
  position:absolute;width:20px;height:20px;margin-left:-10px;border-radius:var(--r-pill);
  background:var(--creme);border:3px solid var(--bleu);outline:none;
  transition:transform .2s var(--ease);
}
.calc-knob:hover,.calc-knob:focus-visible{transform:scale(1.14)}
.calc-track-ends{display:flex;justify-content:space-between;font-family:var(--font-m);font-size:10.5px;color:var(--on-dark-legal);margin-top:7px}

/* Frequence */
.calc-freqs{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}
.calc-freq{
  font-family:var(--font-m);font-size:11.5px;font-weight:var(--w-bold);letter-spacing:.02em;
  padding:8px 13px;border-radius:var(--r-pill);cursor:pointer;
  background:transparent;color:var(--on-dark-body);border:1.5px solid var(--on-dark-line);
  transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease);
}
.calc-freq.is-on{background:var(--bleu);color:var(--creme);border-color:var(--bleu)}

/* Tuiles de resultat */
.calc-stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.calc-tile{background:var(--ink-surface);border:1px solid var(--on-dark-line);border-radius:var(--r-tile);padding:20px 20px 18px;min-width:0}
.calc-tile.is-total{background:var(--bleu);border-color:var(--bleu)}
.calc-tile-label{
  display:flex;align-items:center;gap:8px;font-family:var(--font-m);font-size:10.5px;
  letter-spacing:.1em;text-transform:uppercase;color:var(--on-dark-mono);margin-bottom:12px;
}
.calc-tile.is-total .calc-tile-label,.calc-tile.is-total .calc-tile-note{color:var(--bleu-on-bleu)}
.calc-tile-label i{width:10px;height:10px;border-radius:3px;flex:none}
.calc-tile-value{display:block;font-weight:var(--w-black);font-stretch:104%;letter-spacing:-.02em;line-height:1;color:var(--creme)}
.calc-tile-note{display:block;font-family:var(--font-m);font-size:11.5px;color:var(--on-dark-legal);margin-top:8px}

/* Barre de repartition */
.calc-share{display:flex;height:10px;border-radius:var(--r-pill);overflow:hidden;background:var(--viz-rail)}
.calc-share-fill{background:var(--bleu);transition:width var(--dur) var(--ease)}
.calc-share-rest{background:var(--viz-interest);flex:1}
.calc-share-labels{display:flex;justify-content:space-between;font-family:var(--font-m);font-size:11px;color:var(--on-dark-mono);margin-top:8px}

/* Graphique */
.calc-card{background:var(--ink-surface);border:1px solid var(--on-dark-line);border-radius:var(--r-tile);padding:clamp(16px,1.8vw,22px)}
.calc-chart{position:relative;width:100%;height:300px;padding-left:56px;box-sizing:border-box;touch-action:pan-y}
.calc-chart svg{display:block}
.calc-y{position:absolute;left:0;top:0;width:46px;height:100%;pointer-events:none;font-family:var(--font-m);font-size:10.5px;color:var(--viz-axis);text-align:right}
.calc-y span{position:absolute;right:0;white-space:nowrap}
.calc-x{position:absolute;left:56px;right:0;top:0;bottom:0;pointer-events:none;font-family:var(--font-m);font-size:10.5px;color:var(--viz-axis)}
.calc-x span{position:absolute;bottom:0;white-space:nowrap}
.calc-hover{position:absolute;left:56px;right:0;top:0;bottom:0;pointer-events:none}
.calc-hover-line{position:absolute;top:0;width:1px;background:var(--on-dark-mono)}
.calc-hover-dot{position:absolute;width:11px;height:11px;border-radius:var(--r-pill);background:var(--viz-interest);border:2px solid var(--ink-surface);margin:-5.5px 0 0 -5.5px}
.calc-tip{
  position:absolute;transform:translate(-50%,-100%);
  background:var(--ink);border:1px solid var(--on-dark-line);border-radius:var(--r-field);
  padding:11px 13px;min-width:150px;
}
.calc-tip-title{display:block;font-family:var(--font-m);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--on-dark-mono);margin-bottom:7px}
.calc-tip-row{display:flex;justify-content:space-between;gap:14px;font-family:var(--font-m);font-size:11.5px;color:var(--on-dark-body);margin-bottom:3px}
.calc-tip-row.is-total{border-top:1px solid var(--on-dark-line);margin-top:6px;padding-top:6px;font-weight:var(--w-bold)}
.calc-note{font-family:var(--font-m);font-size:11px;line-height:1.6;color:var(--on-dark-legal);margin:14px 0 0}

/* Avertissements */
.calc-warns{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .5s var(--ease),opacity .4s var(--ease)}
.calc-warn-list{display:flex;flex-direction:column;gap:12px}
.calc-warn{border:1.5px solid var(--corail);border-radius:var(--r-tile);padding:clamp(18px,2vw,24px);background:rgba(255,107,74,.07)}
.calc-warn-kicker{font-family:var(--font-m);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--corail);margin:0 0 10px}
.calc-warn-title{display:block;font-weight:var(--w-heavy);font-size:19px;letter-spacing:-.01em;line-height:1.25;color:var(--creme);margin-bottom:10px}
.calc-warn-body{font-size:15.5px;line-height:var(--lh-body);color:var(--on-dark-body);margin:0}

.calc-closing{font-size:15.5px;line-height:var(--lh-body);color:var(--on-dark-body);margin:6px 0 0}
.calc-closing-link{color:var(--corail);font-weight:var(--w-bold);text-decoration:none;white-space:nowrap}
.calc-closing-link:hover{text-decoration:underline;text-underline-offset:3px}

/* ── Page legale (/politique-confidentialite) ───────────── */
html{scroll-behavior:smooth}
.pp a{color:var(--bleu);font-weight:var(--w-semi);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line);transition:text-decoration-color var(--dur-fast) var(--ease)}
.pp a:hover{text-decoration-color:var(--corail)}
.pp-toc a{
  display:block;padding:7px 0;font-family:var(--font-m);font-size:11.5px;line-height:1.45;
  letter-spacing:.02em;color:var(--muted);text-decoration:none;border-top:1px solid var(--line);
  transition:color .2s var(--ease),padding-left .2s var(--ease);
}
.pp-toc a:hover{color:var(--bleu);padding-left:6px}
.pp-card a{color:#BFD3FF;text-decoration:none}
.pp-card a:hover{color:var(--creme)}
/* Le header et le footer partages gardent leurs propres regles de lien. */
.pp .sp-head a,.pp .sp-ft a{text-decoration:none}

/* ── Aide-memoire de preparation (/preparation-rencontre) ─ */
.prep-card{background:var(--creme);border:1px solid var(--line);border-radius:var(--r-tile);padding:clamp(24px,3vw,34px)}
.prep-card-head{display:flex;align-items:baseline;gap:14px;margin-bottom:6px}
.prep-num{font-family:var(--font-m);font-size:12px;letter-spacing:var(--ls-kicker);color:var(--bleu)}
.prep-title{font-weight:var(--w-heavy);font-size:clamp(20px,2.2vw,25px);letter-spacing:var(--ls-head);margin:0;color:var(--ink)}
.prep-note{font-size:15px;line-height:var(--lh-body);color:var(--muted);margin:0 0 18px;max-width:62ch}
.prep-items{display:flex;flex-direction:column;gap:2px}
.prep-item{
  display:flex;align-items:flex-start;gap:14px;text-align:left;width:100%;
  background:transparent;border:0;border-top:1px solid var(--line);
  padding:16px 2px;cursor:pointer;font-family:var(--font-d);
}
.prep-box{
  flex:0 0 auto;width:24px;height:24px;border-radius:7px;display:grid;place-items:center;
  margin-top:2px;border:1.5px solid var(--line);background:transparent;
  transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease);
}
.prep-box svg{opacity:0;transition:opacity .2s var(--ease)}
.prep-box.is-on{background:var(--bleu);border-color:var(--bleu)}
.prep-box.is-on svg{opacity:1}
.prep-label{display:block;font-weight:var(--w-semi);font-size:16.5px;line-height:1.35;color:var(--ink);margin-bottom:4px}
.prep-hint{display:block;font-size:14px;line-height:1.5;color:var(--muted)}
.prep-reset{
  font-family:var(--font-m);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;
  font-weight:var(--w-bold);background:transparent;border:none;cursor:pointer;color:var(--muted);
  padding:12px 0 0;text-decoration:underline;text-underline-offset:3px;
}

/* Accordeon FAQ pose sur fond sombre. */
.sp-faq-dark details{border-top:1px solid var(--on-dark-line);padding:4px 0}
.sp-faq-dark summary{
  list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;
  gap:16px;padding:16px 0;font-weight:var(--w-bold);font-size:16.5px;color:var(--creme);
}
.sp-faq-dark summary::-webkit-details-marker{display:none}
.sp-faq-dark summary .sp-faq-sign{font-family:var(--font-m);color:var(--corail);flex:0 0 auto;transition:transform var(--dur-fast) var(--ease)}
.sp-faq-dark details[open] summary .sp-faq-sign{transform:rotate(45deg)}
.sp-faq-dark details p{margin:0 0 18px;font-size:15px;line-height:1.65;color:var(--on-dark-body)}

/* ── Accordeon FAQ natif (<details>) ────────────────────── */
.sp-faq details{border-top:1px solid var(--line);padding:6px 0}
.sp-faq summary{
  list-style:none;cursor:pointer;
  display:flex;justify-content:space-between;align-items:center;gap:16px;
  padding:18px 0;font-weight:var(--w-bold);font-size:18px;color:var(--ink);
}
.sp-faq summary::-webkit-details-marker{display:none}
.sp-faq summary .sp-faq-sign{
  color:var(--bleu);font-weight:var(--w-reg);font-size:24px;flex:none;
  transition:transform var(--dur-fast) var(--ease);
}
.sp-faq details[open] summary .sp-faq-sign{transform:rotate(45deg)}
.sp-faq details p{margin:0 0 18px;font-size:15.5px;line-height:1.6;color:var(--muted)}
