
/* Brilo : tunnel quiz mobile (repris de projets/guide-enfant-21-jours/page-de-vente.html, validé par Martin).
   Un écran à la fois, barre d'étapes en haut, papier quadrillé pêche, bouton noir en bas. */
:root {
  --fond: #F7F3EE;
  --papier: #FBE9E0;
  --grille: rgba(205,122,92,.12);
  --carte: #FFFFFF;
  --encre: #1B1B1B;
  --doux: #5E5A57;
  --terre: #CD7A5C;
  --terre-clair: #F6DDD2;
  --vert: #3C9A6C;
  --vert-clair: #DDEFE5;
  --trait: #E6DED6;
  --bouton: #111111;
  --bouton-texte: #FFFFFF;
  --serif: "Fraunces", Georgia, serif;
  --texte: "Nunito Sans", "Segoe UI", system-ui, sans-serif;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --fond: #17130F; --papier: #2A1D17; --grille: rgba(232,150,118,.10); --carte: #241E1A;
    --encre: #F4EEE8; --doux: #BDB3AA; --terre: #E8967A; --terre-clair: #4A2F25;
    --vert: #5CC092; --vert-clair: #1F3A2C; --trait: #3A312B; --bouton: #F4EEE8; --bouton-texte: #17130F; color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --fond: #17130F; --papier: #2A1D17; --grille: rgba(232,150,118,.10); --carte: #241E1A;
  --encre: #F4EEE8; --doux: #BDB3AA; --terre: #E8967A; --terre-clair: #4A2F25;
  --vert: #5CC092; --vert-clair: #1F3A2C; --trait: #3A312B; --bouton: #F4EEE8; --bouton-texte: #17130F; color-scheme: dark;
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--fond); color: var(--encre); font-family: var(--texte); font-size: 17px; line-height: 1.5; }
.app { max-width: 480px; margin: 0 auto; min-height: 100vh; display: flex; flex-direction: column;
  background: linear-gradient(var(--papier), var(--fond) 340px),
              var(--fond);
  position: relative; }
.app::before { content: ""; position: absolute; inset: 0; pointer-events: none;
  background-image: linear-gradient(var(--grille) 1px, transparent 1px), linear-gradient(90deg, var(--grille) 1px, transparent 1px);
  background-size: 22px 22px; mask-image: linear-gradient(#000, transparent 420px); -webkit-mask-image: linear-gradient(#000, transparent 420px); }
.haut { position: sticky; top: env(safe-area-inset-top, 0px); z-index: 3; padding: 14px max(16px, env(safe-area-inset-right, 0px)) 8px max(16px, env(safe-area-inset-left, 0px)); display: grid; gap: 10px; background: linear-gradient(var(--papier), transparent); }
.etapes { display: flex; gap: 4px; }
.etapes i { flex: 1; height: 5px; border-radius: 3px; background: var(--trait); }
.etapes i.fait { background: var(--encre); }
.ligne-haut { display: flex; align-items: center; justify-content: space-between; min-height: 32px; }
.retour { background: none; border: 0; font-size: 26px; color: var(--encre); cursor: pointer; padding: 0 8px 0 0; }
.retour[hidden] { display: none; }
.marque { font-family: var(--serif); font-weight: 800; font-size: 20px; }
.marque b { color: var(--terre); }
.ecran { position: relative; z-index: 1; flex: 1; display: flex; flex-direction: column; gap: 18px; padding: 8px max(16px, env(safe-area-inset-right, 0px)) 120px max(16px, env(safe-area-inset-left, 0px)); }
h1, h2 { font-family: var(--serif); line-height: 1.12; text-wrap: balance; margin: 0; text-align: center; }
h1 { font-size: 34px; font-weight: 800; }
h2 { font-size: 27px; font-weight: 800; }
.sous { text-align: center; color: var(--doux); margin: 0; }
.gras-it { font-family: var(--texte); font-weight: 800; font-style: italic; text-transform: uppercase; font-size: 28px; letter-spacing: -.01em; }
.choix { display: grid; gap: 10px; }
.choix button { text-align: left; font: inherit; font-weight: 700; color: var(--encre); background: var(--carte); border: 2px solid var(--trait); border-radius: 16px; padding: 16px 18px; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.choix button small { display: block; font-weight: 400; color: var(--doux); font-size: 14px; }
.choix button.on { border-color: var(--vert); background: var(--vert-clair); }
.choix button .rond { width: 22px; height: 22px; border-radius: 50%; border: 2px solid var(--trait); flex: none; }
.choix button.on .rond { background: var(--vert); border-color: var(--vert); box-shadow: inset 0 0 0 4px var(--vert-clair); }
.choix.grille2 { grid-template-columns: 1fr 1fr; }
input[type=text], input[type=tel] { width: 100%; font: inherit; font-size: 19px; padding: 16px 18px; border-radius: 16px; border: 2px solid var(--trait); background: var(--carte); color: var(--encre); }
input:focus-visible, button:focus-visible { outline: 3px solid var(--terre); outline-offset: 2px; }
.bas { position: fixed; left: 0; right: 0; bottom: 0; z-index: 4; padding: 12px max(16px, env(safe-area-inset-right, 0px)) calc(14px + env(safe-area-inset-bottom, 0px)) max(16px, env(safe-area-inset-left, 0px)); background: linear-gradient(transparent, var(--fond) 30%); }
.bas .in { max-width: 448px; margin: 0 auto; display: grid; gap: 8px; }
.go { font: inherit; font-weight: 800; font-size: 19px; background: var(--bouton); color: var(--bouton-texte); border: 0; border-radius: 18px; padding: 18px; width: 100%; cursor: pointer; }
.go:disabled { opacity: .35; cursor: default; }
.mini { font-size: 12.5px; color: var(--doux); text-align: center; }
.carte { background: var(--carte); border: 1px solid var(--trait); border-radius: 20px; padding: 18px; display: grid; gap: 10px; }
.pastille { display: inline-flex; align-self: center; gap: 8px; align-items: center; background: var(--terre); color: #fff; font-weight: 800; border-radius: 999px; padding: 8px 16px; font-size: 15px; }
.coches { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
.coches li { display: flex; gap: 10px; align-items: flex-start; }
.coches li::before { content: "✓"; color: var(--terre); font-weight: 800; }
.duo { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.duo .carte { padding: 14px; gap: 8px; }
.duo h3 { font-family: var(--serif); font-size: 18px; margin: 0; text-align: center; }
.duo .t { font-size: 14px; background: var(--fond); border-radius: 8px; padding: 6px 8px; }
.duo .mal .t { color: var(--doux); }
.duo .bien .t { background: var(--vert-clair); }
.signe { width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; color: #fff; font-weight: 800; font-size: 22px; justify-self: center; }
.signe.non { background: #D24B3E; } .signe.oui { background: var(--vert); }
.chargement { display: grid; gap: 18px; }
.barre { height: 12px; background: var(--trait); border-radius: 6px; overflow: hidden; }
.barre i { display: block; height: 100%; width: 0; background: var(--terre); transition: width .25s linear; }
.plan-semaines { display: grid; gap: 10px; }
.sem { display: grid; grid-template-columns: 56px 1fr; gap: 12px; align-items: center; background: var(--carte); border: 1px solid var(--trait); border-radius: 16px; padding: 12px; }
.sem .n { font-family: var(--serif); font-weight: 800; font-size: 13px; text-align: center; background: var(--terre-clair); border-radius: 12px; padding: 8px 4px; line-height: 1.1; }
.sem .n b { display: block; font-size: 22px; }
.sem p { margin: 0; font-size: 15px; color: var(--doux); }
.sem strong { display: block; color: var(--encre); }
.offres { display: grid; gap: 12px; }
.offre { text-align: left; font: inherit; color: var(--encre); background: var(--carte); border: 2px solid var(--trait); border-radius: 20px; padding: 16px; cursor: pointer; display: grid; grid-template-columns: 26px 1fr auto; gap: 12px; align-items: center; }
.offre.on { border-color: var(--vert); background: var(--vert-clair); }
.offre .rond { width: 24px; height: 24px; border-radius: 50%; border: 2px solid var(--trait); }
.offre.on .rond { background: var(--vert); border-color: var(--vert); box-shadow: inset 0 0 0 5px var(--vert-clair); }
.offre .nom { font-weight: 800; text-transform: uppercase; }
.offre .tags { display: flex; gap: 6px; flex-wrap: wrap; margin: 4px 0; }
.tag { font-size: 12px; font-weight: 800; border-radius: 6px; padding: 2px 8px; color: #fff; background: var(--vert); }
.tag.t2 { background: var(--terre); }
.offre .desc { font-size: 14px; color: var(--doux); }
.offre .prix { background: var(--fond); border-radius: 12px; padding: 8px 10px; text-align: center; font-weight: 800; font-size: 18px; line-height: 1.1; }
.offre .prix small { display: block; font-weight: 400; font-size: 12px; color: var(--doux); }
.payer { display: grid; gap: 10px; }
.payer button { font: inherit; font-weight: 800; border-radius: 16px; padding: 16px; border: 2px solid var(--trait); background: var(--carte); color: var(--encre); cursor: pointer; text-align: left; display: flex; justify-content: space-between; gap: 10px; }
.payer button.on { border-color: var(--vert); background: var(--vert-clair); }
.payer small { font-weight: 400; color: var(--doux); }
.bouclier { width: 88px; height: 100px; margin: 0 auto; }
.extrait { background: var(--terre-clair); border-radius: 20px; padding: 18px; display: grid; gap: 8px; }
.extrait ol { margin: 0; padding-left: 20px; }
.ticket { border: 3px solid var(--terre); border-radius: 22px; background: var(--carte); padding: 22px; text-align: center; display: grid; gap: 8px; }
.ticket .gros { font-family: var(--serif); font-size: 44px; font-weight: 800; line-height: 1; }
.note-modele { position: relative; z-index: 1; margin: 0 max(16px, env(safe-area-inset-right, 0px)) 0 max(16px, env(safe-area-inset-left, 0px)); font-size: 12px; color: var(--doux); text-align: center; }
@media (prefers-reduced-motion: reduce) { .barre i { transition: none; } }

/* Ajouts du site (prix barré, minuteur réel, avis, contact, pied de page, pages simples). */
.barre-prix { text-decoration: line-through; color: var(--doux); font-weight: 400; font-size: 13px; display: block; }
.minuteur { display: flex; justify-content: center; align-items: center; gap: 10px; background: var(--encre); color: var(--fond); border-radius: 14px; padding: 10px 14px; font-weight: 800; font-size: 15px; text-align: center; }
.minuteur b { font-variant-numeric: tabular-nums; font-size: 20px; }
.minuteur.fini { background: var(--trait); color: var(--encre); font-weight: 600; }
.bandeau { position: relative; z-index: 2; background: var(--terre); color: #fff; font-weight: 700; font-size: 14px; text-align: center; padding: 8px 16px; }
.tel { display: grid; grid-template-columns: 104px 1fr; gap: 8px; }
select { width: 100%; font: inherit; font-size: 17px; padding: 16px 10px; border-radius: 16px; border: 2px solid var(--trait); background: var(--carte); color: var(--encre); }
textarea { width: 100%; font: inherit; font-size: 17px; padding: 14px 16px; border-radius: 16px; border: 2px solid var(--trait); background: var(--carte); color: var(--encre); min-height: 120px; }
.etiquette { font-weight: 700; font-size: 15px; display: grid; gap: 6px; }
.accord { display: grid; grid-template-columns: 26px 1fr; gap: 10px; align-items: start; font-size: 15px; color: var(--encre); cursor: pointer; }
.accord input { width: 22px; height: 22px; margin: 2px 0 0; accent-color: var(--vert); }
.avis-liste { display: grid; gap: 10px; }
.avis-un { background: var(--carte); border: 1px solid var(--trait); border-radius: 16px; padding: 14px; display: grid; gap: 6px; }
.avis-un p { margin: 0; font-size: 15px; }
.avis-un .qui { font-size: 13px; color: var(--doux); }
.etoiles { color: var(--terre); letter-spacing: 2px; font-size: 16px; }
.choix-etoiles { display: flex; gap: 6px; justify-content: center; }
.choix-etoiles button { font-size: 34px; background: none; border: 0; color: var(--trait); cursor: pointer; padding: 0 2px; }
.choix-etoiles button.on { color: var(--terre); }
.erreur { color: #B3261E; font-weight: 700; text-align: center; margin: 0; }
.simu { border: 2px dashed var(--terre); border-radius: 16px; padding: 14px; display: grid; gap: 8px; background: var(--carte); }
.simu .duo-btn { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.simu button { font: inherit; font-weight: 800; border-radius: 12px; padding: 12px; border: 0; cursor: pointer; background: var(--vert); color: #fff; }
.simu button.non { background: var(--trait); color: var(--encre); }
.fichiers { display: grid; gap: 8px; }
.fichier { display: flex; justify-content: space-between; align-items: center; gap: 10px; background: var(--fond); border-radius: 12px; padding: 10px 12px; font-size: 15px; }
.fichier a { font-weight: 800; color: var(--bouton-texte); background: var(--bouton); border-radius: 10px; padding: 8px 12px; text-decoration: none; white-space: nowrap; }
.fichier small { color: var(--doux); }
.histoire p { margin: 0; font-size: 18px; }
.histoire { display: grid; gap: 14px; }
.pied { position: relative; z-index: 1; display: flex; flex-wrap: wrap; gap: 6px 14px; justify-content: center; font-size: 13px; padding: 4px 16px 0; }
.pied a { color: var(--doux); }
.toast { position: fixed; left: 16px; right: 16px; bottom: 120px; z-index: 5; max-width: 420px; margin: 0 auto; background: var(--carte); border: 1px solid var(--trait); border-radius: 14px; padding: 10px 14px; font-size: 14px; box-shadow: 0 6px 24px rgba(0,0,0,.12); }
.page { position: relative; z-index: 1; padding: 8px 16px 48px; display: grid; gap: 16px; }
.page p { margin: 0; }
.page h1 { font-size: 30px; }
.spin { width: 54px; height: 54px; margin: 10px auto; border-radius: 50%; border: 6px solid var(--trait); border-top-color: var(--terre); animation: tourne 1s linear infinite; }
@keyframes tourne { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .spin { animation-duration: 4s; } }

/* ---------- Fin du tunnel (modèle Sunly, version honnête) : 21/10/2026 ---------- */
:root { --lien: #2B64C8; --rouge: #D24B3E; --peche: #F6DDD2; --creme-rose: #FBE9E0; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { --lien: #8AB4F8; --peche: #4A2F25; --creme-rose: #2A1D17; } }
:root[data-theme="dark"] { --lien: #8AB4F8; --peche: #4A2F25; --creme-rose: #2A1D17; }
.cache { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.ligne-haut { justify-content: center; position: relative; }
.ligne-haut .retour { position: absolute; left: 0; top: 50%; transform: translateY(-50%); }
.ligne-haut > span[style] { display: none; }
.marque { display: inline-flex; line-height: 0; }
.marque .logo { height: 34px; width: auto; display: block; }
.page .marque .logo, .haut a.marque .logo { height: 34px; }
.pastille { justify-self: center; margin: 4px auto 0; }
body.sans-bas .ecran { padding-bottom: 32px; }
.ecran > h1, .ecran > h2 { margin-top: 2px; }
.autre-langue { text-align: center; margin: 0; font-size: 14px; }
.autre-langue a { color: var(--doux); }
.carte.info { margin-top: 10px; }

/* (a) Comparaison « Seul » contre « Avec Brilo » */
.comparaison { display: grid; grid-template-columns: 1fr 18px 1fr; gap: 4px; align-items: center; margin-top: 4px; }
.carte-comp { position: relative; background: #FFFDF9; border-radius: 22px; padding: 12px 8px 34px; display: grid; gap: 7px; box-shadow: 0 6px 22px rgba(42,29,23,.08); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .carte-comp { background: var(--carte); } }
:root[data-theme="dark"] .carte-comp { background: var(--carte); }
.carte-comp h3 { font-family: var(--texte); font-weight: 800; font-size: 19px; margin: 0; text-align: center; line-height: 1.15; }
.carte-comp .illu { background: var(--creme-rose); border-radius: 14px; aspect-ratio: 4 / 3; display: grid; place-items: center; }
.carte-comp .illu svg { width: 86%; height: auto; }
.carte-comp ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.carte-comp li { font-size: 13.5px; line-height: 1.25; background: var(--fond); border-radius: 9px; padding: 7px 8px; display: flex; gap: 6px; align-items: center; }
.carte-comp.mal li { color: var(--doux); }
.carte-comp .ok { flex: none; width: 18px; height: 18px; border-radius: 50%; background: var(--vert); color: #fff; display: grid; place-items: center; }
.carte-comp .ok svg { width: 12px; height: 12px; }
.carte-comp .signe { position: absolute; left: 50%; bottom: -24px; transform: translateX(-50%); width: 50px; height: 50px; box-shadow: 0 4px 12px rgba(0,0,0,.15); }
.carte-comp .signe svg { width: 26px; height: 26px; color: #fff; }
.signe.non { background: var(--rouge); }
.comparaison .fleche svg { width: 18px; height: auto; display: block; }
.comparaison + .gras-it { margin-top: 30px; }
.gras-it { text-align: center; margin: 0; line-height: 1.05; }

/* (b) Cadeau : offre débloquée */
.cadeau { display: grid; gap: 6px; justify-items: center; text-align: center; margin-top: 4px; }
.cadeau .boite svg { width: 110px; height: auto; }
.sur-titre { margin: 0; color: var(--terre); font-family: var(--serif); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; font-size: 15px; }
.gros-pct { margin: 0; font-family: var(--serif); font-weight: 800; font-size: 76px; line-height: 1; letter-spacing: -.02em; }
.ticket2 { position: relative; width: 100%; margin-top: 12px; background: linear-gradient(#FFF8F4, #FBEDE6); border: 4px solid var(--terre); border-radius: 26px; padding: 20px 22px 24px; display: grid; gap: 10px; box-shadow: 0 10px 30px rgba(205,122,92,.18); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .ticket2 { background: var(--carte); } }
:root[data-theme="dark"] .ticket2 { background: var(--carte); }
.ticket2::before, .ticket2::after { content: ""; position: absolute; top: 50%; width: 26px; height: 26px; border-radius: 50%; background: var(--fond); border: 4px solid var(--terre); transform: translateY(-50%); }
.ticket2::before { left: -16px; clip-path: inset(0 0 0 50%); }
.ticket2::after { right: -16px; clip-path: inset(0 50% 0 0); }
.ticket-texte { margin: 0; font-family: var(--serif); font-size: 19px; line-height: 1.3; }
.ticket2 hr { width: 100%; border: 0; border-top: 2px dashed rgba(205,122,92,.45); margin: 4px 0; }
.ticket2 .code { margin: 0 auto; border: 2px dashed var(--terre); border-radius: 12px; padding: 10px 16px; font-size: 22px; color: var(--terre); font-family: var(--serif); font-weight: 800; }
.ticket2 .code s { color: var(--doux); font-weight: 600; font-size: 17px; }

/* (c) Haut de l'offre */
.bandeau-remise { display: flex; justify-content: space-between; align-items: center; gap: 10px; background: var(--terre); color: #fff; border-radius: 999px; padding: 11px 20px; font-weight: 800; font-size: 17px; }
.bandeau-remise b { font-variant-numeric: tabular-nums; font-size: 19px; letter-spacing: .02em; }
.note-finie { margin: 0; background: var(--trait); border-radius: 14px; padding: 10px 14px; font-size: 14px; text-align: center; }
.offre-haut { display: grid; gap: 14px; }
.titre-produit { font-size: 32px; }
.coches.grandes { justify-self: center; gap: 12px; font-family: var(--serif); font-size: 18px; line-height: 1.3; }
.coches.grandes li::before { font-family: var(--texte); }
.offre-haut .gras-it { margin-top: 8px; }
.offre-haut .sous s, .prix-ligne s { color: var(--doux); }
.ecran .go { display: block; text-align: center; text-decoration: none; }
.go.secondaire { font-size: 16px; padding: 13px; }
.accepter { text-align: center; font-size: 13px; color: var(--doux); display: grid; gap: 4px; }
.accepter p { margin: 0; }
.liens { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 16px; margin: 0; }
.lien-legal { font: inherit; font-size: 13px; background: none; border: 0; padding: 4px 0; margin: 0; color: var(--lien); text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }

/* (d) Choisissez votre formule */
.bloc-formules { display: grid; gap: 12px; padding-top: 18px; }
.bloc-formules.bas-page { padding-top: 0; }
.badges { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-bottom: 8px; }
.badges:has(.badge:only-child) { grid-template-columns: 1fr; justify-items: center; }
.badge { display: flex; align-items: center; justify-content: center; gap: 2px; text-align: center; }
.badge > svg { width: 22px; height: 52px; flex: none; }
.badge > svg:last-child { transform: scaleX(-1); }
.badge span { display: grid; line-height: 1.15; }
.badge small { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: var(--doux); }
.badge b { font-size: 20px; font-weight: 800; }
.badge .etoiles { color: #F2B544; font-size: 15px; letter-spacing: 1px; }
.pilule-minuteur { justify-self: center; display: inline-flex; align-items: center; gap: 6px; margin: 0; background: var(--terre); color: #fff; border-radius: 999px; padding: 5px 16px 5px 8px; font-weight: 800; font-size: 22px; font-variant-numeric: tabular-nums; }
.pilule-minuteur svg, .minuteur-large svg { width: 22px; height: 22px; color: #fff; flex: none; }
.bloc-formules h2 { font-family: var(--texte); font-size: 28px; }
.formules { display: grid; gap: 12px; }
.formule { font: inherit; color: var(--encre); text-align: left; cursor: pointer; display: grid; grid-template-columns: 26px 1fr auto; gap: 10px; align-items: center; background: #F1EEEA; border: 2px solid var(--trait); border-radius: 20px; padding: 12px 12px 12px 12px; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .formule { background: var(--carte); } }
:root[data-theme="dark"] .formule { background: var(--carte); }
.formule.on { background: var(--vert-clair); border-color: var(--vert); }
.formule .rond { width: 24px; height: 24px; border-radius: 50%; border: 2px solid #B9B3AD; display: grid; place-items: center; color: transparent; background: var(--carte); }
.formule.on .rond { background: var(--vert); border-color: var(--vert); color: #fff; }
.formule .rond svg { width: 15px; height: 15px; }
.formule .info { display: grid; gap: 3px; min-width: 0; }
.formule .nom { font-weight: 800; text-transform: uppercase; font-size: 16px; line-height: 1.15; }
.formule .tags { display: flex; gap: 5px; flex-wrap: wrap; }
.formule .tag { text-transform: uppercase; font-size: 12px; }
.prix-ligne { font-size: 14px; }
.formule .desc { font-size: 12.5px; color: var(--doux); line-height: 1.3; }
.formule .jour { background: rgba(0,0,0,.06); border-radius: 14px; padding: 8px 10px; text-align: center; min-width: 86px; line-height: 1.1; }
.formule.on .jour { background: rgba(60,154,108,.13); }
.formule .jour b { display: block; font-size: 19px; font-weight: 800; white-space: nowrap; }
.formule .jour small { color: var(--doux); font-size: 12px; }
.pilule-securise { justify-self: center; display: inline-flex; align-items: center; gap: 8px; margin: 0; background: var(--terre); color: #fff; border-radius: 999px; padding: 8px 16px; font-weight: 700; font-size: 14px; text-align: left; line-height: 1.25; }
.pilule-securise svg { width: 18px; height: 18px; color: #fff; flex: none; }

/* (e) (f) Avis */
.avis-vedette { padding-top: 6px; }
.avis-carte { background: #F1EEEA; border: 1px solid var(--trait); border-radius: 22px; padding: 16px 18px; display: grid; gap: 8px; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .avis-carte { background: var(--carte); } }
:root[data-theme="dark"] .avis-carte { background: var(--carte); }
.avis-carte.grand { background: var(--carte); box-shadow: 0 6px 20px rgba(42,29,23,.06); }
.avis-tete { display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: center; }
.avis-carte .photo { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; display: grid; place-items: center; background: var(--peche); color: var(--terre); font-family: var(--serif); font-weight: 800; font-size: 20px; }
.avis-carte.grand .photo { width: 56px; height: 56px; }
.avis-qui { display: grid; line-height: 1.2; min-width: 0; }
.avis-qui b { font-size: 17px; }
.avis-qui small { color: var(--doux); font-size: 13px; }
.avis-carte .etoiles { color: #F2B544; font-size: 18px; letter-spacing: 1px; white-space: nowrap; }
.etoiles .vide { color: var(--trait); }
.avis-titre { margin: 0; font-weight: 800; }
.avis-texte { margin: 0; font-size: 16.5px; line-height: 1.45; }
.avis-carte.grand .avis-texte { font-size: 18px; }
.avis-source { margin: 0; display: flex; gap: 5px; align-items: center; color: var(--vert); font-size: 12.5px; font-weight: 700; }
.avis-source svg { width: 14px; height: 14px; }
.avis-section { display: grid; gap: 12px; padding-top: 10px; }
.avis-resume { display: grid; grid-template-columns: auto 1fr; gap: 6px 16px; align-items: center; background: var(--carte); border: 1px solid var(--trait); border-radius: 20px; padding: 14px 16px; }
.avis-resume p { margin: 0; color: var(--doux); font-size: 14px; }
.avis-note { display: grid; text-align: center; line-height: 1; }
.avis-note b { font-family: var(--serif); font-size: 46px; font-weight: 800; }
.avis-note span { font-size: 13px; color: var(--doux); }
.avis-resume .etoiles { color: #F2B544; font-size: 22px; }
.repartition { grid-column: 1 / -1; list-style: none; margin: 4px 0 0; padding: 0; display: grid; gap: 4px; font-size: 13px; color: var(--doux); }
.repartition li { display: grid; grid-template-columns: 14px 1fr 28px; gap: 8px; align-items: center; }
.repartition i { height: 8px; border-radius: 4px; background: var(--trait); overflow: hidden; }
.repartition i b { display: block; height: 100%; background: #F2B544; }
.avis-liste { display: grid; gap: 10px; }
.voir-plus { font: inherit; font-weight: 800; background: var(--carte); color: var(--encre); border: 2px solid var(--encre); border-radius: 16px; padding: 13px; cursor: pointer; }

/* (g) Vous y êtes presque */
.presque { background: #F1EEEA; border: 1px solid var(--trait); border-radius: 22px; padding: 20px 18px; display: grid; gap: 14px; margin-top: 8px; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .presque { background: var(--carte); } }
:root[data-theme="dark"] .presque { background: var(--carte); }
.presque h2 { font-family: var(--texte); font-size: 26px; }
.etapes3 { list-style: none; margin: 0; padding: 0; display: grid; }
.etapes3 li { position: relative; display: grid; grid-template-columns: 46px 1fr; gap: 14px; padding-bottom: 18px; }
.etapes3 li:last-child { padding-bottom: 0; }
.etapes3 li:not(:last-child)::after { content: ""; position: absolute; left: 21px; top: 46px; bottom: 0; width: 4px; border-radius: 2px; background: var(--peche); }
.etapes3 li.actif:not(:last-child)::after { background: linear-gradient(var(--terre) 50%, var(--peche) 50%); }
.etapes3 .puce { width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; font-weight: 800; font-size: 18px; color: var(--terre); border: 2px solid var(--terre); background: var(--creme-rose); }
.etapes3 li.actif .puce { background: var(--terre); color: #fff; }
.etapes3 b { display: block; font-size: 17px; margin-top: 2px; }
.etapes3 p { margin: 2px 0 0; color: var(--doux); font-size: 15px; line-height: 1.35; }

/* (h) Votre achat est protégé */
.protege { position: relative; overflow: hidden; text-align: center; display: grid; gap: 12px; justify-items: center; background: #FCF3EE; border: 1px solid #EFCFC2; border-radius: 24px; padding: 26px 18px 22px; margin-top: 8px; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .protege { background: var(--papier); border-color: var(--trait); } }
:root[data-theme="dark"] .protege { background: var(--papier); border-color: var(--trait); }
.protege .ondes { position: absolute; left: 50%; top: 92px; width: 420px; height: 420px; transform: translate(-50%, -50%); border-radius: 50%;
  background: repeating-radial-gradient(circle, transparent 0 46px, rgba(205,122,92,.10) 46px 48px); pointer-events: none; }
.grand-bouclier { position: relative; width: 132px; height: auto; filter: drop-shadow(0 10px 18px rgba(185,96,63,.35)); }
.protege h2 { position: relative; font-family: var(--texte); font-size: 26px; }
.protege .coches { position: relative; text-align: left; font-size: 17px; }
.pastille.garantie { position: relative; margin: 6px 0 0; display: inline-flex; gap: 8px; align-items: center; font-size: 16px; padding: 9px 18px; }
.pastille.garantie svg { width: 20px; height: 20px; background: #fff; color: var(--terre); border-radius: 50%; padding: 2px; }

/* (i) Bandeau minuteur long */
.minuteur-large { display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: center; background: var(--terre); color: #fff; border-radius: 20px; padding: 16px 18px; font-weight: 700; font-size: 17px; margin-top: 8px; }
.minuteur-large b { font-size: 26px; font-weight: 800; font-variant-numeric: tabular-nums; }

/* (j) Pied légal (identique sur tous les écrans du tunnel) */
.pied-legal { display: grid; gap: 10px; padding: 22px 0 8px; margin-top: 8px; text-align: center; }
.texte-legal { margin: 0; font-size: 12.5px; line-height: 1.45; color: var(--doux); }

/* Paiement, attente, offres en plus, merci */
.carte.recap span { color: var(--doux); }
.payer button { align-items: center; }
.payer button .rond { width: 22px; height: 22px; border-radius: 50%; border: 2px solid var(--trait); flex: none; }
.payer button.on .rond { background: var(--vert); border-color: var(--vert); box-shadow: inset 0 0 0 4px var(--vert-clair); }
.payer button small { display: block; }
input[type=email] { width: 100%; font: inherit; font-size: 18px; padding: 15px 18px; border-radius: 16px; border: 2px solid var(--trait); background: var(--carte); color: var(--encre); }
.attente { display: grid; gap: 14px; text-align: center; margin-top: 16px; }
.attente .mini { margin: 0; }
.ticket .gros { font-size: 34px; }
.ticket h2 { font-size: 24px; }
.prix-offre { font-size: 26px; font-family: var(--serif); }
.non-merci { font: inherit; background: none; border: 0; color: var(--doux); text-decoration: underline; padding: 8px; cursor: pointer; }

/* Panneau légal : glisse depuis le bas, en-tête fixe, texte qui défile à l'intérieur */
html.panneau-ouvert { overflow: hidden; }
html.panneau-ouvert body { position: fixed; left: 0; right: 0; overflow: hidden; }
.panneau-fond { position: fixed; inset: 0; z-index: 20; background: rgba(23,19,15,.5); opacity: 0; transition: opacity .3s ease; }
.panneau-fond.on { opacity: 1; }
.panneau { position: fixed; left: 0; right: 0; bottom: 0; z-index: 21; max-width: 560px; margin: 0 auto; height: 92vh; height: 92dvh; display: flex; flex-direction: column;
  background: var(--carte); color: var(--encre); border-radius: 22px 22px 0 0; box-shadow: 0 -10px 40px rgba(0,0,0,.25);
  transform: translateY(100%); transition: transform .34s cubic-bezier(.22,.9,.24,1); }
.panneau.on { transform: translateY(0); }
.panneau-tete { flex: none; display: grid; grid-template-columns: 44px 1fr 44px; align-items: center; padding: 10px 8px 8px; border-bottom: 1px solid var(--trait); }
.panneau-tete::before { content: ""; position: absolute; top: 7px; left: 50%; width: 40px; height: 4px; margin-left: -20px; border-radius: 2px; background: var(--trait); }
.panneau-tete h2 { grid-column: 2; font-family: var(--texte); font-size: 19px; margin: 6px 0 0; }
.croix { grid-column: 3; width: 44px; height: 44px; border: 0; border-radius: 50%; background: none; color: var(--encre); font-size: 32px; line-height: 1; cursor: pointer; }
.croix:hover { background: var(--fond); }
.panneau-corps { flex: 1; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; padding: 16px 20px calc(28px + env(safe-area-inset-bottom, 0px)); display: grid; gap: 12px; align-content: start; font-size: 15.5px; line-height: 1.55; }
.panneau-corps p { margin: 0; }
@media (min-width: 700px) { .panneau { height: 80vh; bottom: 4vh; border-radius: 22px; } }
@media (prefers-reduced-motion: reduce) { .panneau, .panneau-fond { transition: none; } }
.panneau[hidden], .panneau-fond[hidden], .bas[hidden], .avis-item[hidden] { display: none; }
/* Corrections après relecture des captures */
.haut { background: transparent; box-shadow: none; } /* Martin 21/10 : pas de bande, l'en-tête reste posé sur le quadrillage comme chez Sunly */
.comparaison { align-items: stretch; }
.comparaison .fleche { align-self: center; }
.pilule-securise { font-size: 12.5px; padding: 8px 14px; }
.minuteur-large { font-size: 16px; }
/* Écran e-mail et vérification du numéro */
input[type=email] { font-size: 19px; }
.suggestion { margin: -6px 0 0; text-align: left; }
.lien-suggestion { font: inherit; font-size: 15px; font-weight: 700; background: var(--terre-clair); color: var(--encre); border: 0; border-radius: 10px; padding: 8px 12px; cursor: pointer; text-decoration: underline; }
.verif { display: block; margin-top: 6px; font-size: 15px; font-weight: 700; color: var(--vert); font-variant-numeric: tabular-nums; }
.email-donne { margin: 0; font-size: 13.5px; color: var(--doux); }
.email-donne .lien-legal { font-size: 13.5px; }
/* Écran des coordonnées (fin du quiz) : prénom, WhatsApp, e-mail, case WhatsApp ; numéro rappelé au paiement */
.coordonnees { display: grid; gap: 14px; }
.coordonnees input[type=email] { font-size: 17px; }
.numero-donne { margin: 0; display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 10px; font-size: 16px; font-weight: 700; color: var(--vert); font-variant-numeric: tabular-nums; }
.numero-donne .lien-legal { font-size: 14px; font-weight: 600; }
/* E-mail public : texte sélectionnable */
.contact-email { margin: 0; font-size: 13.5px; color: var(--doux); }
.email-support { color: var(--lien); font-weight: 700; user-select: text; -webkit-user-select: text; word-break: break-all; }
.souci { font-size: 15px; }
.wa-bloc { margin: 0; text-align: center; }
.wa-support { display: inline-block; font-weight: 800; color: #fff; background: #1F8F4E; border-radius: 12px; padding: 10px 16px; text-decoration: none; }
/* Accueil Brilo (lien de la bio) : aiguillage vers les guides */
.aiguillage-titre { font-size: 31px; margin-top: 6px; }
.cartes-guides { display: grid; gap: 14px; }
.carte-guide { display: grid; grid-template-columns: 64px 1fr; gap: 14px; align-items: center; text-decoration: none; color: var(--encre); background: var(--carte); border: 2px solid var(--trait); border-radius: 22px; padding: 18px 16px; box-shadow: 0 6px 20px rgba(42,29,23,.06); }
.carte-guide:hover, .carte-guide:focus-visible { border-color: var(--terre); }
.icone-guide { width: 64px; height: 64px; border-radius: 18px; background: var(--terre-clair); display: grid; place-items: center; }
.icone-guide svg { width: 34px; height: 34px; fill: none; stroke: var(--terre); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.carte-guide-texte { display: grid; gap: 4px; }
.carte-guide-texte b { font-family: var(--serif); font-size: 21px; line-height: 1.15; }
.carte-guide-texte > span { color: var(--doux); font-size: 15px; line-height: 1.35; }
.carte-guide-texte .carte-guide-btn { margin-top: 6px; color: var(--encre); font-weight: 800; font-size: 15.5px; }

/* Passages fluides (Martin 21/10) : glissement entre les écrans du quiz, et fondu entre l'accueil et le quiz. */
@keyframes brilo-entree { from { opacity: 0; transform: translateX(28px); } to { opacity: 1; transform: none; } }
@keyframes brilo-entree-retour { from { opacity: 0; transform: translateX(-28px); } to { opacity: 1; transform: none; } }
.ecran.entree { animation: brilo-entree .32s cubic-bezier(.2,.8,.2,1) both; }
.ecran.entree-retour { animation: brilo-entree-retour .32s cubic-bezier(.2,.8,.2,1) both; }
.etapes i { transition: background-color .35s ease; }
.choix button { transition: border-color .15s ease, background-color .15s ease, transform .1s ease; }
.choix button:active { transform: scale(.98); }
@view-transition { navigation: auto; }
::view-transition-old(root), ::view-transition-new(root) { animation-duration: .25s; }
@media (prefers-reduced-motion: reduce) { .ecran.entree, .ecran.entree-retour { animation: none; } .choix button:active { transform: none; } @view-transition { navigation: none; } }
/* Le glissement ne doit jamais élargir la page (sinon le téléphone dézoome et le bouton sort de l'écran). */
html, body { overflow-x: clip; }
.app { overflow-x: clip; }
/* Fond identique sur toute la largeur (ordinateur et tablette) : dégradé rose et quadrillage partout, pas seulement dans
   la colonne du site (Martin 21/10 : « pourquoi le fond change ici ? »). */
body { background: linear-gradient(var(--papier), var(--fond) 340px) no-repeat, var(--fond); position: relative; }
body::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 420px; pointer-events: none; z-index: 0;
  background-image: linear-gradient(var(--grille) 1px, transparent 1px), linear-gradient(90deg, var(--grille) 1px, transparent 1px);
  background-size: 22px 22px; background-position: center top;
  mask-image: linear-gradient(#000, transparent 420px); -webkit-mask-image: linear-gradient(#000, transparent 420px); }
.app { background: transparent; z-index: 1; }
.app::before { display: none; }
/* En-tête au défilement : voir majDefile dans tunnel.js. */
.haut { transition: background .2s ease, padding .2s ease; }
.haut .marque .logo { transition: height .2s ease, opacity .2s ease; }
body.defile .haut { background: linear-gradient(var(--fond) 72%, rgba(247, 243, 238, 0)); }
body.defile .haut .marque .logo { height: 0; opacity: 0; }
body.defile .ligne-haut { min-height: 28px; }
@media (prefers-reduced-motion: reduce) { .haut, .haut .marque .logo { transition: none; } }
/* Carte de comparaison (Martin 21/10 : « la carte Avec Brilo est cassée ») : les colonnes rétrécissent vraiment,
   rien ne déborde de la carte, et l'ensemble est plus compact pour que les signes ✗ / ✓ ne passent pas sous le bouton. */
.comparaison { grid-template-columns: minmax(0, 1fr) 16px minmax(0, 1fr); gap: 6px; }
.carte-comp { min-width: 0; grid-template-columns: minmax(0, 1fr); padding: 12px 8px 30px; overflow: visible; }
.carte-comp > * { min-width: 0; }
.carte-comp li { overflow-wrap: anywhere; min-width: 0; }
.carte-comp .illu { aspect-ratio: 16 / 11; }
.carte-comp .illu svg { width: 74%; }
.carte-comp .signe { width: 42px; height: 42px; bottom: -21px; }
.carte-comp .signe svg { width: 22px; height: 22px; }
.ecran[data-ecran="duo"] { padding-bottom: 150px; }

/* Aucun texte sous la barre du bas (Martin 21/10) : marge = hauteur réelle de #bas (variable --bas-h, mise à jour en JS). */
.ecran { padding-bottom: calc(var(--bas-h, 120px) + 24px); }
body.sans-bas .ecran { padding-bottom: 32px; }
.ecran[data-ecran="duo"] { padding-bottom: calc(var(--bas-h, 120px) + 40px); }

/* Offre : les deux formules visibles sans défiler (Martin 21/10) */
.offre-haut { gap: 10px; }
.offre-haut .titre-produit { font-size: 27px; }
.offre-haut .coches.grandes { font-size: 16px; gap: 6px; line-height: 1.28; }
.bloc-formules#formules { padding-top: 4px; scroll-margin-top: 70px; }
.bloc-formules#formules h2 { font-size: 24px; }
.offre-fort { display: grid; gap: 12px; padding-top: 8px; }
@keyframes brilo-brille { 0% { box-shadow: 0 0 0 0 rgba(60,154,108,.55); } 60% { box-shadow: 0 0 0 10px rgba(60,154,108,0); } 100% { box-shadow: 0 0 0 0 rgba(60,154,108,0); } }
.formule.brille { animation: brilo-brille 1.1s ease-out 2; }
@media (prefers-reduced-motion: reduce) { .formule.brille { animation: none; outline: 3px solid var(--vert); } }

/* Paiement : rappel de la formule choisie, avec « Changer » */
.formule-choisie .recap-tete { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.formule-choisie .recap-tete .changer { margin-left: auto; font-size: 14px; font-weight: 700; }
.formule-choisie s { color: var(--doux); }
.panneau-formules .formules { gap: 10px; }

/* Sélecteur d'indicatif (remplace le <select> natif) */
.tel { grid-template-columns: auto 1fr; }
.indicatif-btn { font: inherit; font-size: 17px; font-weight: 800; display: inline-flex; align-items: center; gap: 8px; padding: 0 12px 0 10px; min-height: 58px; border: 2px solid var(--trait); border-radius: 16px; background: var(--carte); color: var(--encre); cursor: pointer; }
.indicatif-btn:hover, .indicatif-btn:focus-visible { border-color: var(--terre); }
.indicatif-btn svg { width: 18px; height: 18px; fill: none; stroke: var(--doux); stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.rond-pays { flex: none; width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; font-size: 11.5px; font-weight: 800; letter-spacing: .02em; color: #fff; background: var(--brilo-chocolat, #2A1D17); }
.rond-pays.fcfa { background: var(--terre); }
.panneau[data-panneau="pays"] .panneau-corps { padding-top: 0; gap: 0; }
.recherche-pays { position: sticky; top: 0; z-index: 1; background: var(--carte); padding: 12px 0 10px; }
.recherche-pays input { width: 100%; font: inherit; font-size: 17px; padding: 13px 16px; border-radius: 14px; border: 2px solid var(--trait); background: var(--fond); color: var(--encre); }
.recherche-pays input:focus-visible { border-color: var(--terre); outline: none; }
.liste-pays { list-style: none; margin: 0; padding: 0; }
.liste-pays li[hidden] { display: none; }
.groupe-pays { font-size: 12.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: var(--doux); padding: 14px 4px 6px; }
.pays-ligne { font: inherit; width: 100%; display: grid; grid-template-columns: 34px 1fr auto 22px; gap: 12px; align-items: center; text-align: left; background: none; border: 0; border-bottom: 1px solid var(--trait); padding: 11px 4px; color: var(--encre); cursor: pointer; }
.pays-ligne:hover, .pays-ligne:focus-visible { background: var(--fond); }
.pays-ligne .nom { font-weight: 700; }
.pays-ligne .ind { color: var(--doux); font-variant-numeric: tabular-nums; font-weight: 700; }
.pays-ligne .coche-pays { color: transparent; }
.pays-ligne .coche-pays svg { width: 20px; height: 20px; }
.pays-ligne.on .coche-pays { color: var(--vert); }
.pays-ligne.on .nom { color: var(--encre); }
.prix-ligne b, .prix-ligne s { white-space: nowrap; }
.bandeau-remise span { font-size: 16px; line-height: 1.25; }

/* Site TOUJOURS en chocolat (décision ferme de Martin, 21/10/2026) : data-theme="dark" sur <html>, quel que soit le
   réglage du téléphone. Les couleurs passent par les variables ; ci-dessous ce qui était encore en dur pour le clair. */
:root { --fond-transparent: rgba(247, 243, 238, 0); --sur-terre: #FFFFFF; }
:root[data-theme="dark"] { --fond-transparent: rgba(23, 19, 15, 0); --sur-terre: #17130F; --carte-comp: #241E1A; }
body { background: linear-gradient(var(--papier), var(--fond) 340px) no-repeat, var(--fond); }
body.defile .haut { background: linear-gradient(var(--fond) 72%, var(--fond-transparent)); }
:root[data-theme="dark"] body { background: linear-gradient(var(--papier), var(--fond) 360px) no-repeat, var(--fond); }
/* Texte sur l'orange : chocolat sur l'orange vif (contraste suffisant), blanc sur l'orange terre cuite en clair. */
:root[data-theme="dark"] .pastille, :root[data-theme="dark"] .bandeau, :root[data-theme="dark"] .bandeau-remise,
:root[data-theme="dark"] .pilule-minuteur, :root[data-theme="dark"] .pilule-securise, :root[data-theme="dark"] .minuteur-large,
:root[data-theme="dark"] .etapes3 li.actif .puce, :root[data-theme="dark"] .tag.t2, :root[data-theme="dark"] .rond-pays.fcfa { color: var(--sur-terre); }
:root[data-theme="dark"] .pilule-minuteur svg, :root[data-theme="dark"] .minuteur-large svg, :root[data-theme="dark"] .pilule-securise svg { color: var(--sur-terre); }
:root[data-theme="dark"] .pilule-securise svg path:last-child { stroke: var(--terre); }
:root[data-theme="dark"] .pastille.garantie svg { background: var(--sur-terre); color: var(--terre); }
:root[data-theme="dark"] .rond-pays { background: var(--trait); color: var(--encre); }
:root[data-theme="dark"] .rond-pays.fcfa { background: var(--terre); }
:root[data-theme="dark"] .tag { color: #0F2419; }
:root[data-theme="dark"] .carte-comp { box-shadow: 0 6px 22px rgba(0,0,0,.35); }
:root[data-theme="dark"] .carte-comp .illu { background: var(--papier); }
:root[data-theme="dark"] .ticket2 .code s, :root[data-theme="dark"] .prix-ligne s { color: var(--doux); }
:root[data-theme="dark"] .formule .jour { background: rgba(255,255,255,.06); }
:root[data-theme="dark"] .formule.on .jour { background: rgba(92,192,146,.16); }
:root[data-theme="dark"] .carte-guide, :root[data-theme="dark"] .avis-carte.grand { box-shadow: 0 6px 20px rgba(0,0,0,.3); }
:root[data-theme="dark"] .simu button { color: #0F2419; }
:root[data-theme="dark"] .simu button.non { color: var(--encre); }
:root[data-theme="dark"] .wa-support { color: #fff; }

/* Cartes de formule (Martin 21/10) : le vrai prix en grand à droite, plus de « prix par jour ». */
.formule .jour { min-width: 104px; padding: 10px 12px; }
.formule .jour b { font-size: 21px; }
.formule .prix-ligne s { color: var(--doux); font-size: 15px; }
#avis-copie { z-index: 30; text-align: center; font-weight: 700; } #avis-copie[hidden] { display: none; }

/* Correctif du tremblement (Martin 21/10) : l'en-tête garde TOUJOURS la même hauteur au défilement (sinon la page saute,
   l'état bascule en boucle et la barre de progression tremble). Le logo s'efface en fondu sans changer de taille. */
.haut, body.defile .haut { padding-bottom: 8px; }
.haut .marque .logo, body.defile .haut .marque .logo { height: 34px; }
.haut .marque .logo { transition: opacity .2s ease, transform .2s ease; }
body.defile .haut .marque .logo { opacity: 0; transform: translateY(-6px) scale(.92); }
body.defile .ligne-haut { min-height: 32px; }

/* Panneau « Écrire au support » (e-mail prérempli, Gmail dans un nouvel onglet). */
.form-email { display: grid; gap: 8px; }
.form-email label { font-weight: 800; font-size: 14px; color: var(--doux); margin-top: 6px; }
.form-email input, .form-email textarea { width: 100%; font: inherit; font-size: 16px; padding: 12px 14px; border-radius: 14px; border: 2px solid var(--trait); background: var(--carte); color: var(--encre); resize: vertical; }
.form-email textarea { min-height: 170px; line-height: 1.45; }
.em-a { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 14px; border-radius: 14px; background: var(--fond); border: 2px solid var(--trait); font-weight: 700; overflow-wrap: anywhere; }
.lien-copier { font: inherit; font-weight: 800; color: var(--terre); background: none; border: 0; cursor: pointer; padding: 4px; flex: none; }
.btn-gmail { margin-top: 10px; font: inherit; font-weight: 800; font-size: 18px; color: var(--bouton-texte, #fff); background: var(--bouton, #111); border: 0; border-radius: 16px; padding: 16px; cursor: pointer; }
.note-email { margin: 0; text-align: center; font-size: 13px; color: var(--doux); }

/* Passages du quiz (Martin 22/10 : flash du bouton, transition pas fluide). Une seule animation, transform et opacity
   seulement : l'écran sortant (copie inerte, voir fantome() dans tunnel.js) glisse et s'efface en 140 ms, l'entrant
   arrive après 90 ms en 230 ms. Total 320 ms, courbes douces, aucune hauteur animée. */
@keyframes brilo-sortie { 75% { opacity: 0; } to { opacity: 0; transform: translateX(-22px); } }
@keyframes brilo-sortie-retour { 75% { opacity: 0; } to { opacity: 0; transform: translateX(22px); } }
@keyframes brilo-premiere { from { opacity: 0; } to { opacity: 1; } }
.ecran-fantome { position: fixed; z-index: 1; margin: 0; overflow: hidden; pointer-events: none; will-change: transform, opacity; }
.ecran-fantome.sort { animation: brilo-sortie .14s linear forwards; }
.ecran-fantome.sort-retour { animation: brilo-sortie-retour .14s linear forwards; }
.ecran.entree { animation: brilo-entree .23s cubic-bezier(.2,.8,.2,1) .09s both; }
.ecran.entree-retour { animation: brilo-entree-retour .23s cubic-bezier(.2,.8,.2,1) .09s both; }
.ecran.entree-premiere { animation: brilo-premiere .22s ease-out both; }
/* Barre du bas : apparaît et s'efface en fondu (jamais de saut), seulement sur les écrans qui ont un bouton. */
.bas { transition: opacity .2s ease, transform .2s cubic-bezier(.2,.8,.2,1); }
.bas.bas-cache { opacity: 0; transform: translateY(12px); pointer-events: none; transition: opacity .08s linear, transform .08s linear; }
/* Réponse touchée : état « choisi » net tout de suite, petit rebond (transform seulement). */
@keyframes brilo-choisi { 0% { transform: scale(.97); } 100% { transform: none; } }
.choix button.on { animation: brilo-choisi .2s cubic-bezier(.2,.8,.2,1); }
.choix button { transition: border-color .1s ease, background-color .1s ease, transform .1s ease; }
/* Barre de progression : chaque segment se remplit en glissant (transform), au lieu d'apparaître d'un coup. */
.etapes i { position: relative; overflow: hidden; }
.etapes i::after { content: ""; position: absolute; inset: 0; border-radius: inherit; background: var(--encre); transform: scaleX(0); transform-origin: left center; transition: transform .35s cubic-bezier(.2,.8,.2,1); }
.etapes i.fait { background: var(--trait); }
.etapes i.fait::after { transform: scaleX(1); }
@media (prefers-reduced-motion: reduce) {
  .ecran.entree, .ecran.entree-retour, .ecran.entree-premiere, .ecran-fantome, .choix button.on { animation: none; }
  .bas, .bas.bas-cache, .etapes i::after { transition: none; }
}
/* Formules (Martin 22/10) : le prix barré est DANS la case du prix, juste dessous ; plus de « en une fois ». */
.formule .jour { display: grid; justify-items: center; gap: 2px; }
.formule .jour s { color: var(--doux); font-size: 13.5px; font-weight: 600; white-space: nowrap; }

/* Minuteur de l'offre (Martin 22/10/2026) : bande JAUNE, puis sous 2 min ROUGE qui clignote ; bloqué à 00:10. */
:root { --minuteur-jaune: #F5C842; --minuteur-jaune-texte: #2B1D12; --minuteur-rouge: #C8322A; }
.bandeau-remise, .pilule-minuteur, .minuteur-large,
:root[data-theme="dark"] .bandeau-remise, :root[data-theme="dark"] .pilule-minuteur, :root[data-theme="dark"] .minuteur-large {
  background: var(--minuteur-jaune); color: var(--minuteur-jaune-texte); transition: background-color .4s ease, color .4s ease; }
.pilule-minuteur svg, .minuteur-large svg,
:root[data-theme="dark"] .pilule-minuteur svg, :root[data-theme="dark"] .minuteur-large svg { color: var(--minuteur-jaune-texte); }
.minuteur-urgent .bandeau-remise, .minuteur-urgent .pilule-minuteur, .minuteur-urgent .minuteur-large,
:root[data-theme="dark"].minuteur-urgent .bandeau-remise, :root[data-theme="dark"].minuteur-urgent .pilule-minuteur, :root[data-theme="dark"].minuteur-urgent .minuteur-large {
  background: var(--minuteur-rouge); color: #fff; }
.minuteur-urgent .pilule-minuteur svg, .minuteur-urgent .minuteur-large svg { color: #fff; }
.minuteur-urgent [data-minuteur] { animation: clignote 1s steps(1, end) infinite; }
@keyframes clignote { 50% { opacity: .25; } }
@media (prefers-reduced-motion: reduce) { .minuteur-urgent [data-minuteur] { animation-duration: 2s; } }
.page-paiement { text-align: left; margin-top: 4px; }

/* Paiement (Martin 22/10) : récapitulatif clair, numéro prérempli dans sa carte, rien sous le bouton. */
.recap-paie { display: grid; gap: 4px; padding: 16px 18px; }
.recap-paie .rp-tete { display: flex; align-items: baseline; gap: 10px; }
.recap-paie .rp-nom { font-size: 17px; font-weight: 800; color: var(--encre); }
.recap-paie .rp-tete .changer { margin-left: auto; font-size: 14px; font-weight: 700; white-space: nowrap; }
.recap-paie .rp-note { margin: 0; font-size: 14px; color: var(--doux); }
.recap-paie .rp-prix { display: flex; align-items: center; gap: 10px; margin-top: 6px; }
.recap-paie .rp-montant { font-size: 30px; font-weight: 800; line-height: 1.1; color: var(--encre); font-variant-numeric: tabular-nums; }
.recap-paie .rp-barre { display: block; font-size: 15px; color: var(--doux); font-variant-numeric: tabular-nums; }
.recap-paie .rp-pour { margin: 6px 0 0; padding-top: 10px; border-top: 1px solid var(--trait); font-size: 15px; font-weight: 600; color: var(--encre); }
.numero-paie { display: grid; gap: 6px; padding: 14px 18px; }
.numero-paie .np-titre { font-size: 14px; font-weight: 700; color: var(--doux); }
.numero-paie .numero-donne { font-size: 18px; }
.numero-paie .verif { margin-top: 8px; }
