/* SAGAVIE V2 — surcouche du design system.
   Contrainte de conception : la cible peut voir difficilement et lire sur un iPad posé sur la
   table. Corps ≥ 20 px, boutons ≥ 56 px, aucun survol, aucun geste complexe,
   aucun menu déroulant. Un bouton trop petit, c'est un livre jamais terminé. */

.v2 { max-width: 34rem; margin: 0 auto; padding: 1.5rem 1.25rem 4rem; }
.v2.large { max-width: 60rem; }

.v2 h1 { font-size: 1.9rem; font-style: italic; text-align: center; margin-bottom: .75rem; }
.v2 h2 { font-size: 1.35rem; font-style: italic; margin-bottom: .5rem; }
.v2 p  { font-size: 1.15rem; line-height: 1.6; }          /* ≈ 20.7 px */

.v2 .aide { color: var(--sepia-texte); font-size: 1.02rem; }
.v2 .centre { text-align: center; }

/* --- Boutons : 56 px minimum, jamais côte à côte sur mobile --- */
.v2 .btn-xl {
  display: block; width: 100%; min-height: 3.4rem;
  font-family: "Instrument Sans", system-ui, sans-serif;
  font-size: 1.2rem; font-weight: 600;
  border: none; border-radius: .5rem; cursor: pointer;
  padding: 1rem 1.25rem; margin: 1rem 0; text-align: center; text-decoration: none;
  background: var(--bic); color: var(--blanc-photo);
}
.v2 .btn-xl.secondaire {
  background: transparent; color: var(--bic);
  border: 2px solid var(--bic); font-weight: 400;
}
.v2 .btn-xl[disabled] { opacity: .45 }
.v2 .btn-xl.rouge { background: #8A2E23 }

/* --- Saisie du code --- */
.v2 input[type="text"], .v2 input[type="email"], .v2 input[type="tel"], .v2 textarea, .v2 input[type="file"] {
  width: 100%; font-size: 1.2rem; padding: .9rem 1rem;
  border: 2px solid var(--filet); border-radius: .5rem;
  background: var(--blanc-photo); color: var(--encre);
  font-family: "Instrument Sans", system-ui, sans-serif;
}
.v2 input.code {
  font-size: 2rem; text-align: center; letter-spacing: .22em;
  text-transform: uppercase; font-weight: 600;
}
.v2 label { display: block; font-size: 1.1rem; margin: 1.25rem 0 .4rem; font-weight: 600;
            font-family: "Instrument Sans", system-ui, sans-serif; }
.v2 .erreur {
  background: #F6E3DF; border-left: 4px solid #8A2E23; color: #6B241B;
  padding: .9rem 1rem; border-radius: .3rem; font-size: 1.05rem; margin-bottom: 1rem;
}

/* --- Progression --- */
.progression { margin: 1.5rem 0 1rem; text-align: center }
.progression .compte { font-family: "Caveat", cursive; font-size: 1.7rem; color: var(--bic) }
.progression .barre {
  height: .75rem; background: var(--filet); border-radius: .4rem;
  overflow: hidden; margin-top: .5rem;
}
.progression .barre span { display: block; height: 100%; background: var(--bic) }

/* --- Liste des 12 questions --- */
.liste-q { list-style: none; margin-top: 1rem }
.liste-q li { margin-bottom: .75rem }
.liste-q a {
  display: flex; align-items: center; gap: .9rem; min-height: 3.4rem;
  background: var(--blanc-photo); border: 1.5px solid var(--filet);
  border-radius: .5rem; padding: .9rem 1rem; text-decoration: none; color: var(--encre);
  font-size: 1.08rem; line-height: 1.4;
}
.liste-q a .num {
  font-family: "Caveat", cursive; font-size: 1.6rem; color: var(--bic); min-width: 1.5rem;
}
.liste-q a.fait { border-color: var(--bic); background: #EFEAF4 }
.liste-q a.fait .num::after { content: " ✓" }

/* --- Enregistreur --- */
.q-texte { font-size: 1.5rem; line-height: 1.45; text-align: center; margin: 1.5rem 0 }
.q-relance { font-family: "Caveat", cursive; font-size: 1.4rem; color: var(--bic);
             text-align: center; margin-bottom: 1.5rem }
.minuteur { font-family: "Instrument Sans", system-ui, sans-serif; font-size: 2.2rem;
            text-align: center; color: var(--bic); font-weight: 600; margin: 1rem 0 }
.etat { text-align: center; font-size: 1.1rem; color: var(--sepia-texte); min-height: 1.6rem }
/* « .cache » seul (0,1,0) perdait contre « .v2 .btn-xl { display: block } »
   (0,2,0) : la classe qui masque ne masquait aucun bouton, et le narrateur
   voyait les quatre actions à la fois dans tous les états. Le second sélecteur
   remet les spécificités à égalité, et il passe en dernier. */
.cache,
.v2 .cache { display: none }

/* --- Admin (densité assumée : ce n'est pas la même cible) --- */
.adm { font-family: "Instrument Sans", system-ui, sans-serif; font-size: .95rem }
.adm table { width: 100%; border-collapse: collapse; margin-top: 1rem }
.adm th, .adm td { text-align: left; padding: .55rem .5rem; border-bottom: 1px solid var(--filet);
                   vertical-align: top }
.adm th { font-size: .8rem; text-transform: uppercase; letter-spacing: .06em; color: var(--sepia-texte) }
.adm .tuiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: .75rem }
.adm .tuile { background: var(--blanc-photo); border: 1px solid var(--filet);
              border-radius: .5rem; padding: 1rem; text-align: center; text-decoration: none;
              color: var(--encre) }
.adm .tuile .n { font-size: 2rem; font-weight: 600; color: var(--bic); display: block }
.adm .tuile .l { font-size: .85rem }
.adm .relire { display: grid; gap: 1rem; grid-template-columns: 1fr }
@media (min-width: 52rem) { .adm .relire { grid-template-columns: 1fr 1fr } }
.adm .brut { background: #EFEAE0; border: 1px solid var(--filet); border-radius: .4rem;
             padding: .9rem; font-size: .95rem; line-height: 1.55; white-space: pre-wrap;
             max-height: 26rem; overflow: auto }
.adm textarea { width: 100%; min-height: 26rem; font-size: 1rem; line-height: 1.6;
                font-family: "EB Garamond", Georgia, serif; padding: .9rem;
                border: 2px solid var(--filet); border-radius: .4rem; background: var(--blanc-photo) }
.adm audio { width: 100%; margin: .5rem 0 }
.adm .bouton { display: inline-block; background: var(--bic); color: var(--blanc-photo);
               border: none; border-radius: .4rem; padding: .6rem 1rem; font-size: .95rem;
               text-decoration: none; cursor: pointer; font-family: inherit }
.adm .bouton.gris { background: transparent; color: var(--bic); border: 1.5px solid var(--bic) }
.adm .rappel { background: #FFFDF8; border-left: 4px solid var(--bic); padding: .8rem 1rem;
               border-radius: .3rem; margin: 1rem 0; line-height: 1.5 }

/* --- Page /offrir --------------------------------------------------------
   La CSP du site est « style-src 'self' » : aucun attribut style= n'est
   appliqué par le navigateur. Ces classes remplacent ceux qui mettaient la
   page en forme — sans elles, la page de vente s'affichait déshabillée. */

.btn-hero { max-width: 22rem; margin: 1.5rem auto }
.titre-section { font-size: 1.6rem }
.liste-q.espacee { margin-bottom: 2rem }

.q-ligne { display: flex; gap: .9rem; padding: .7rem 1rem; background: var(--blanc-photo);
           border: 1.5px solid var(--filet); border-radius: .5rem; font-size: 1.05rem }
.q-ligne .num { font-family: "Caveat", cursive; font-size: 1.5rem; color: var(--bic) }

.choix-offre { font-weight: 400; display: flex; gap: .75rem; align-items: flex-start;
               background: var(--blanc-photo); border: 1.5px solid var(--filet);
               border-radius: .5rem; padding: 1rem; margin-bottom: .6rem }
.choix-offre input[type="radio"] { width: 1.5rem; height: 1.5rem; margin-top: .15rem }

/* L'offre de lancement. Volontairement PAS un prix barré : le tarif reste
   affiché en pleine valeur au-dessus, parce que c'est le prix réellement
   demandé sans le code. Barrer un prix qu'on pratique vraiment le ferait
   passer pour un prix de référence périmé, ce qu'il n'est pas. */
.choix-offre .lancement { display: inline-block; margin: .3rem 0 .1rem;
                          color: var(--bic); font-size: .95rem; line-height: 1.45 }

/* L'option se distingue des offres : ce n'est pas un quatrième choix parmi
   deux, c'est un ajout. Une case, pas un bouton radio. */
.choix-offre.option { border-style: dashed; margin-top: 1rem }
.choix-offre.option input[type="checkbox"] { width: 1.5rem; height: 1.5rem;
                                             margin-top: .15rem; flex-shrink: 0 }

.section-espacee { margin-top: 2rem }
.faq { margin-top: 1rem }
.faq h2 { font-size: 1.15rem }
.faq h2 + p + h2 { margin-top: 1.5rem }
.pied-espace { margin-top: 3rem }
.choix-offre.renonciation { align-items: flex-start; margin: 1.5rem 0 1rem;
                            border-color: var(--bic); font-size: .95rem; line-height: 1.5 }
.choix-offre.renonciation input[type="checkbox"] { width: 1.5rem; height: 1.5rem;
                                                   margin-top: .15rem; flex-shrink: 0 }

/* La fourche : pour qui, et quel type d'histoire. Deux rangées de boutons
   radio, avant les offres — c'est la première question qu'on se pose, pas la
   dernière. Les champs qui ne concernent que l'un des cas se replient en CSS
   pur (:has) : aucun script sur la page de vente, et sans :has tout reste
   visible, ce qui est le repli le moins dangereux. */
.fourche { display: flex; gap: .6rem; flex-wrap: wrap; margin: .3rem 0 1rem }
.fourche label { flex: 1 1 9rem; display: flex; gap: .55rem; align-items: flex-start;
                 background: var(--blanc-photo); border: 1.5px solid var(--filet);
                 border-radius: .5rem; padding: .75rem .85rem; font-weight: 400;
                 cursor: pointer }
.fourche label:has(input:checked) { border-color: var(--bic) }
.fourche input[type="radio"] { width: 1.3rem; height: 1.3rem; margin-top: .1rem; flex-shrink: 0 }
.fourche strong { display: block }
.fourche .aide { display: block; margin-top: .1rem }
.si-moi, .si-titre { display: none }
form:has(#pour-moi:checked) .si-quelquun { display: none }
form:has(#pour-moi:checked) .si-moi { display: block }
form:has(#type-moment:checked) .si-titre,
form:has(#type-personne:checked) .si-titre,
form:has(#type-autre:checked) .si-titre { display: block }

/* Le régime de rétractation dépend de l'offre : un bien nettement personnalisé
   (L221-28 3°) pour les livres imprimés, un contenu numérique (L221-28 13°)
   pour le PDF seul. Les deux cases sont dans la page ; celle qui ne concerne
   pas l'offre choisie disparaît, sans une ligne de JavaScript — la CSP du site
   n'en autorise aucun sur les pages publiques.
   Un navigateur sans « :has() » les affiche toutes les deux : on informe alors
   trop plutôt que pas assez, et le serveur refuse de toute façon la mauvaise. */
form:has(#offre-numerique:checked) .regime-bien,
form:has(#offre-signature:checked) .regime-numerique,
form:has(#offre-famille:checked)   .regime-numerique { display: none }

/* --- Suivi de commande -----------------------------------------------------
   Quatre étapes verticales. L'étape en cours est la seule mise en avant : on
   veut qu'un coup d'œil suffise à savoir qui doit agir. */
.suivi { list-style: none; margin: 1.5rem 0; padding: 0 }
.suivi li { position: relative; padding: 0 0 1.6rem 2.6rem;
            border-left: 2px solid var(--filet); margin-left: .6rem }
.suivi li:last-child { border-left-color: transparent; padding-bottom: 0 }
.suivi li::before {
  content: ""; position: absolute; left: -.62rem; top: .15rem;
  width: 1.1rem; height: 1.1rem; border-radius: 50%;
  background: var(--papier); border: 2px solid var(--filet);
}
.suivi li.faite { border-left-color: var(--bic) }
.suivi li.faite::before { content: "✓"; background: var(--bic); border-color: var(--bic);
  color: var(--blanc-photo); font-size: .72rem; line-height: 1.1rem;
  text-align: center; font-family: "Instrument Sans", system-ui, sans-serif }
.suivi li.encours::before { border-color: var(--bic); border-width: 3px }
.suivi li strong { display: block; font-size: 1.1rem; color: var(--encre) }
.suivi li:not(.faite):not(.encours) strong { color: var(--sepia-texte) }
.suivi li .aide { display: block; margin-top: .2rem }
.adm form.en-ligne { display: inline }
.adm .en-haut { margin-top: 1rem }
.adm .suivi-saisie { width: 11rem; padding: .35rem; margin-top: .4rem }
.adm .champ-large { width: 100%; padding: .6rem; font-size: 1rem }

/* Information du narrateur (écran du code). Lisible d'abord : ce bloc est lu
   par quelqu'un peu à l'aise avec le numérique, sur un téléphone, et c'est là que se recueille le
   consentement à l'enregistrement de son récit. Corps de texte plein, pas de
   gris pâle, et de l'air entre les paragraphes. */
.v2 .encadre-info {
  margin-top: 1.6rem; padding: 1.1rem 1.2rem;
  border-left: 3px solid var(--bic);
  background: rgba(0, 0, 0, .022);
  text-align: left;
}
.v2 .encadre-info p { margin: 0 0 .8rem; line-height: 1.6 }
.v2 .encadre-info p:last-child { margin-bottom: 0 }

/* La case du consentement aux données sensibles (art. 9.2.a).
   Elle doit se voir : c'est la seule décision de l'écran, et la case n'est
   jamais pré-cochée. Corps de texte plein, case large — on la coche avec un
   doigt peu précis, sur un téléphone tenu d'une main. */
.v2 .consentement-sensible {
  align-items: flex-start; margin: 1.6rem 0 1.2rem;
  border-color: var(--bic); font-size: 1.02rem; line-height: 1.55;
}
.v2 .consentement-sensible input[type="checkbox"] {
  width: 1.7rem; height: 1.7rem; margin-top: .1rem; flex-shrink: 0;
}

/* ---------------------------------------------------------------------------
   LA RELECTURE PAR LE NARRATEUR
   Elle a remplacé la relecture par un opérateur. C'est le dernier écran avant
   la fabrication du livre : il doit se lire sur un téléphone, sans
   loupe. Corps de texte plein, champs hauts, un seul bouton par souvenir.
--------------------------------------------------------------------------- */
.v2 .bloc-relire {
  margin: 1.6rem 0; padding: 1.2rem 1.3rem;
  border: 2px solid var(--bic); border-radius: 6px;
  background: rgba(45, 74, 138, .04); text-align: center;
}
.v2 .bloc-relire h2 { margin: 0 0 .6rem; font-size: 1.35rem }
.v2 .bloc-relire p { margin: 0 0 1rem; line-height: 1.6 }
.v2 .bloc-relire .btn-xl { margin: 0 }

.v2 .souvenir-relu {
  margin: 2rem 0; padding-top: 1.4rem;
  border-top: 1px solid rgba(0, 0, 0, .1);
}
.v2 .souvenir-relu:first-of-type { border-top: 0; padding-top: 0 }
.v2 .souvenir-relu h2 { margin: 0 0 .2rem; font-size: 1.3rem }
.v2 .souvenir-relu .aide { margin: 0 0 .8rem }
.v2 .souvenir-relu textarea {
  width: 100%; box-sizing: border-box; padding: .9rem 1rem;
  font: inherit; font-size: 1.05rem; line-height: 1.7;
  color: inherit; background: var(--blanc-photo, #fff);
  border: 1px solid rgba(0, 0, 0, .22); border-radius: 4px;
  resize: vertical;
}
.v2 .souvenir-relu textarea:focus { outline: 2px solid var(--bic); outline-offset: 1px }
.v2 .souvenir-relu .btn-xl { margin-top: .7rem }

.v2 .fin-relecture {
  margin-top: 2.6rem; padding: 1.4rem 1.3rem;
  border: 2px solid var(--bic); border-radius: 6px;
  background: rgba(45, 74, 138, .04);
}
.v2 .fin-relecture h2 { margin: 0 0 .6rem; font-size: 1.35rem }
.v2 .fin-relecture p { line-height: 1.6 }

/* Confirmation d'enregistrement. Verte, brève, jamais un pavé : elle dit que
   c'est pris, elle ne prend pas la place du texte. */
.v2 .succes {
  padding: .7rem 1rem; border-left: 3px solid #2E6B4A;
  background: rgba(46, 107, 74, .08); color: #23543A;
}

/* Étiquette lue par les lecteurs d'écran, invisible à l'œil. Sans elle, un
   textarea sans <label> visible n'est annoncé que « zone de texte ». */
.v2 .visuellement-cache {
  position: absolute; width: 1px; height: 1px;
  margin: -1px; padding: 0; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}

/* Le rachat de l'exemplaire imprimé, sur la page de suivi. Il n'apparaît
   qu'une fois le livre validé par le narrateur : c'est le seul moment où
   l'acheteur sait exactement ce qu'il achèterait. */
.v2 .bloc-rachat {
  margin: 1.6rem 0; padding: 1.3rem;
  border: 2px solid var(--bic); border-radius: 6px;
  background: rgba(45, 74, 138, .04); text-align: center;
}
.v2 .bloc-rachat h2 { margin: 0 0 .6rem; font-size: 1.4rem }
.v2 .bloc-rachat p { line-height: 1.6 }
.v2 .bloc-rachat .aide { margin-bottom: 0 }

/* Le lien qui échange une question. Discret par construction : la plupart des
   narrateurs répondront à celle qui est là, et une proposition trop visible
   ferait douter de la question elle-même. C'est un bouton — il poste un
   formulaire — mais il doit se lire comme un lien. */
.v2 .echange { margin: -.4rem 0 1.4rem; text-align: center }
.v2 .lien-discret {
  background: none; border: 0; padding: .3rem .2rem;
  font: inherit; font-size: .95rem; color: var(--bic);
  text-decoration: underline; text-underline-offset: 3px;
  cursor: pointer;
}
.v2 .lien-discret:focus-visible { outline: 2px solid var(--bic); outline-offset: 2px }

/* Le motif de refus d'un code promo, sous son champ. */
.v2 .erreur-champ { color: #8A2E23 }

/* Pages de commande uniquement : les écrans du narrateur gardent leur lisibilité. */
.v2.page-commande{max-width:1120px;padding-top:24px}
.page-commande .marque{margin-bottom:28px}
.page-commande .hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:42px;text-align:left;margin:20px 0 38px}
.page-commande h1{font-size:clamp(2.2rem,4vw,3.6rem);font-style:normal;text-align:left;line-height:1.1}
.page-commande .hero .sous-titre{font-family:"Instrument Sans",sans-serif;font-size:1rem;line-height:1.75;text-align:left}
.page-commande .hero .mention{text-align:left;font-size:.8rem}
.page-commande .btn-hero{max-width:none;font-size:1rem;margin:22px 0 14px}
.page-commande .commande-visuel{margin:0;min-width:0}
.page-commande .commande-visuel img{display:block;width:100%;height:auto}
.page-commande .commande-visuel figcaption{font:11px/1.6 "Instrument Sans",sans-serif;color:var(--sepia-texte);margin-top:8px}
.page-commande #commander{max-width:780px;margin:40px auto;padding:34px;background:var(--blanc-photo);border:1px solid var(--filet)}
.page-commande .choix-offre{background:var(--papier);border-radius:4px}
.page-commande .choix-offre:has(input:checked){border-color:var(--bic)}
.page-commande .btn-xl{border-radius:4px}
.page-commande .fourche label{border-radius:4px}
.page-commande .liste-q{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.page-commande .liste-q li{margin:0}
.page-commande .q-ligne{height:100%;border-radius:3px}
.page-commande .faq{max-width:780px;margin-inline:auto}
@media(max-width:760px){
 .page-commande .hero{grid-template-columns:1fr;gap:22px}
 .page-commande h1{font-size:2.5rem}
 .page-commande .commande-visuel{max-width:550px}
 .page-commande #commander{padding:22px 16px;margin-inline:-4px}
 .page-commande .liste-q{grid-template-columns:1fr}
}

/* Choix d’histoire lisibles dans le formulaire, y compris sur tablette. */
.page-commande .fourche label{flex-basis:calc(50% - 1rem);min-width:0;box-sizing:border-box}
@media(max-width:420px){.page-commande .fourche label{flex-basis:100%}}

/* Commande : détails à la demande, puis trois groupes et un total explicite. */
.page-commande .commande-details{max-width:780px;margin:0 auto;border-bottom:1px solid var(--filet)}
.page-commande .commande-details>summary,.page-commande .faq summary{cursor:pointer;min-height:56px;padding:16px 0;font:600 1rem/1.5 "Instrument Sans",sans-serif;color:var(--encre)}
.page-commande details>summary:focus-visible{outline:3px solid var(--bic);outline-offset:4px}
.page-commande .commande-details[open]{padding-bottom:20px}
.page-commande .commande-details .etapes{margin:16px 0}
.page-commande .faq details{border-bottom:1px solid var(--filet)}
.page-commande .faq details>p{margin:0 0 20px}
.page-commande .sous-section{font:600 1.1rem/1.5 "Instrument Sans",sans-serif;margin:1.7rem 0 .5rem}
.page-commande .recap-commande{border:1px solid var(--filet);padding:1.2rem;background:var(--papier);margin:1.5rem 0}
.page-commande .recap-commande dl{font:1rem/1.5 "Instrument Sans",sans-serif}
.page-commande .recap-commande dl>div{display:flex;justify-content:space-between;gap:1rem;padding:.4rem 0}
.page-commande .recap-commande dd{margin:0;white-space:nowrap}
.page-commande .recap-commande .recap-total{border-top:1px solid var(--filet);padding-top:.8rem;margin-top:.5rem;font-weight:600}
.page-commande .recap-commande .aide{font-size:.85rem;margin-top:.8rem}
.page-commande .recap-commande [hidden]{display:none}
.page-commande #commander{scroll-margin-top:24px}
@media(max-width:420px){.page-commande .recap-commande{padding:1rem}.page-commande .recap-commande dl{font-size:.9rem}}

/* Octobre 2026 : pages publiques, une offre physique et un cadeau personnel. */
.public-header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:6px 0 24px;border-bottom:1px solid #142c5715;margin-bottom:38px;font-family:"Instrument Sans",sans-serif}
.public-marque{font-size:1.2rem;font-weight:600;letter-spacing:.09em;color:#142c57;text-decoration:none;white-space:nowrap}.public-marque span{color:#80643e}.public-header nav{display:flex;gap:25px;align-items:center}.public-header nav a{display:inline-flex;align-items:center;min-height:44px;font-size:.8rem;color:#142c57;text-decoration:none}.public-header nav a:hover{text-decoration:underline}
.v2.page-commande{--encre:#202b3f;--bic:#2d4a8a;--sepia-texte:#59616c;max-width:1200px;padding:24px 30px 60px;font-family:"Instrument Sans",system-ui,sans-serif}
.page-commande .hero{gap:76px;margin:32px 0 44px}.page-commande h1{font-family:"EB Garamond",Georgia,serif;letter-spacing:-.04em;font-size:clamp(2.7rem,5vw,4.7rem);line-height:1.03;color:#142c57}.page-commande h1 em{font-weight:400;color:var(--bic)}
.page-commande h2,.page-commande h3{font-style:normal}.page-commande .sur-titre{font:600 .65rem/1.6 "Instrument Sans",sans-serif;letter-spacing:.13em;text-transform:uppercase;color:#80643e;margin:0 0 20px}.page-commande .hero .sous-titre{font-size:1rem;line-height:1.75;color:var(--sepia-texte);margin-top:23px}.page-commande .btn-xl{border-radius:100px;font-size:1rem;min-height:56px}.page-commande .btn-hero{max-width:100%;margin:26px 0 17px;display:flex;justify-content:center;gap:25px}.page-commande .mention{line-height:1.6;margin:.3rem 0}.page-commande .hero .prix-intro{color:#142c57;font-size:.9rem}.page-commande .commande-visuel figcaption{font-size:.66rem;margin-top:20px;line-height:1.6}
.carte-maquette{position:relative;background:#2d4a8a;color:#f5efe3;border:1px solid #1d386e;aspect-ratio:1.4;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:35px;box-shadow:12px 16px 0 #ebe3d5,0 20px 40px #142c5715;transform:rotate(2deg);overflow:hidden}.carte-maquette:before{content:"";position:absolute;inset:16px;border:1px solid #d8c5a650;pointer-events:none}.page-commande .carte-marque{font:.7rem/1.6 "Instrument Sans",sans-serif;letter-spacing:.24em;color:#d8c5a6;margin-bottom:auto}.carte-etoile{font:2rem/1 Georgia,serif;color:#d8c5a6;margin:10px 0}.page-commande .carte-titre{font:500 clamp(1.7rem,3vw,2.8rem)/1.08 "EB Garamond",serif;letter-spacing:-.025em;color:#f5efe3;margin:5px 0 20px}.page-commande .carte-bas{font:.62rem/1.6 "Instrument Sans",sans-serif;letter-spacing:.025em;margin-top:auto;color:#f5efe3}
.commande-reperes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:25px;margin:32px 0 48px;padding:25px 0;border-block:1px solid #dcd2bf}.page-commande .commande-reperes p{font-size:.84rem;color:#142c57;display:flex;align-items:center;gap:12px;margin:0}.commande-reperes span{font-size:.68rem;color:#2d4a8a;border:1px solid #2d4a8a45;border-radius:50%;height:32px;width:32px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.occasion-note{max-width:780px;margin:15px auto 35px;background:#eaf0f8;padding:24px 28px;border-radius:15px}.occasion-note strong{color:#142c57;font-size:1rem}.page-commande .occasion-note p{font-size:.86rem;margin:8px 0 0;color:var(--sepia-texte)}
.page-commande #commander{max-width:820px;padding:42px 48px;margin:30px auto 56px;border-radius:24px;border-color:#e0d8cb;box-shadow:0 12px 45px #142c5705;scroll-margin-top:20px}.entete-formulaire{padding-bottom:5px}.entete-formulaire h2{font-family:"EB Garamond",Georgia,serif;font-size:2.6rem;line-height:1.1;letter-spacing:-.035em;color:#142c57}.page-commande .entete-formulaire .aide{font-size:.9rem;margin-top:12px}.page-commande .formulaire-section{padding:23px 0 10px;border-bottom:1px solid #ebe5dc}.page-commande .sous-section{font-size:1rem;margin:0 0 20px;display:flex;align-items:center;gap:12px;color:#142c57}.sous-section>span{display:inline-flex;align-items:center;justify-content:center;background:#eaf0f8;border-radius:50%;width:32px;height:32px;font-size:.75rem;color:#2d4a8a}
.page-commande label,.page-commande legend{font-size:.86rem;font-weight:600;line-height:1.55}.page-commande .aide{font-family:"Instrument Sans",sans-serif;font-size:.78rem;line-height:1.65;font-weight:400}.page-commande input[type="text"],.page-commande input[type="email"],.page-commande input[type="tel"],.page-commande input[type="date"],.page-commande input[type="file"],.page-commande textarea,.page-commande select{font-family:"Instrument Sans",sans-serif;font-size:16px;line-height:1.5;background:#fff;border:1px solid #c8c9cf;border-radius:10px;padding:14px 15px;width:100%;min-width:0;color:#202b3f;min-height:52px}.page-commande textarea{resize:vertical;min-height:100px}.page-commande input:focus-visible,.page-commande select:focus-visible,.page-commande textarea:focus-visible,.page-commande button:focus-visible,.page-commande a:focus-visible{outline:3px solid #2d4a8a;outline-offset:3px}.page-commande input::placeholder,.page-commande textarea::placeholder{color:#717780}.page-commande input[type="radio"],.page-commande input[type="checkbox"]{accent-color:#2d4a8a}.page-commande .fourche{gap:12px;margin:10px 0 22px}.page-commande .fourche label{border-radius:12px;border:1px solid #d9dce1;background:#fff;margin:0;padding:16px;flex-basis:calc(50% - 12px)}.page-commande .fourche label:has(input:checked){border-color:#2d4a8a;background:#f0f4fb;box-shadow:inset 0 0 0 1px #2d4a8a}.page-commande .fourche input[type="radio"]{width:20px;height:20px;margin:2px 2px 0 0}.page-commande .fourche .aide{font-size:.74rem;margin-top:5px}.page-commande .fourche strong{font-size:.83rem}.page-commande .detail-formulaire{border:0;border-top:1px solid #e8e4dd;margin:20px 0 8px}.page-commande .detail-formulaire summary{cursor:pointer;padding:17px 0;font-size:.8rem;color:#2d4a8a;line-height:1.5;min-height:52px}.page-commande .detail-formulaire[open]{padding-bottom:12px}.page-commande .detail-formulaire summary:focus-visible{outline:3px solid #2d4a8a;outline-offset:3px}.page-commande .champ-groupe{border:0;margin:28px 0 16px;min-width:0;padding:0}.page-commande .champ-groupe legend{margin-bottom:3px}.page-commande .champs-deux{display:grid;grid-template-columns:1fr 1fr;gap:16px}.page-commande .champs-deux>div{min-width:0}.page-commande .bloc-promo{margin:25px 0}.champ-promo{display:flex;gap:10px}.page-commande .champ-promo input{min-width:0;flex:1}.champ-promo button{flex:0 0 auto;max-width:55%;font:600 .72rem/1.4 "Instrument Sans",sans-serif;cursor:pointer;background:#edf1f8;border:1px solid #c9d3e8;border-radius:10px;padding:12px;color:#2d4a8a}
.page-commande .recap-commande{border:0;border-radius:16px;background:#edf1f8;padding:24px 26px;margin:28px 0}.page-commande .recap-commande h3{font-size:1.05rem;font-family:"Instrument Sans",sans-serif;font-weight:600;color:#142c57}.page-commande .recap-commande .recap-inclus{margin:10px 0 15px}.page-commande .recap-commande dl{font-size:.9rem}.page-commande .recap-commande .recap-total{border-color:#ccd5e5}.page-commande .renonciation{font-size:.75rem;border:0;background:transparent;padding:0;gap:13px;line-height:1.7;margin:25px 0}.page-commande .renonciation input[type="checkbox"]{width:22px;height:22px;flex-shrink:0;margin-top:5px}.page-commande .renonciation span{font-weight:400}.page-commande .renonciation strong{font-weight:600}.page-commande .faq{max-width:820px;margin:0 auto}.page-commande .faq h2{font:500 2.1rem/1.1 "EB Garamond",serif;letter-spacing:-.03em;margin:0 0 23px;color:#142c57}.page-commande .faq summary{font-size:.87rem}.page-commande .faq details>p{font-size:.88rem;color:var(--sepia-texte);line-height:1.8}.page-commande .pied-espace{display:flex;justify-content:center;gap:24px;flex-wrap:wrap;margin-top:45px;font-size:.75rem}.page-commande .pied-espace a{min-height:44px;display:flex;align-items:center;color:#2d4a8a}.page-commande .erreur{font-size:.9rem}
.page-album .album-statut{display:inline-block;font-size:.8rem;color:#2d4a8a;padding:12px 16px;background:#eaf0f8;border-radius:12px;margin-top:18px}.album-composition{background:#e2e7ef;padding:50px 55px 25px;border-radius:120px 120px 18px 18px}.album-page{background:#2d4a8a;color:#f5efe3;aspect-ratio:.8;padding:45px 30px 24px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:7px 2px 0 #d5cbb9,12px 16px 30px #142c5730;transform:rotate(-5deg)}.album-page>span{font:500 2.6rem/1.05 "EB Garamond",serif;letter-spacing:-.035em}.album-page small{font-size:.6rem;letter-spacing:.2em;color:#dbc8a5}.album-etiquette{text-align:center;font-size:.66rem;color:#59616c;margin-top:28px}.page-commande .album-intentions h2{font:500 2.5rem/1.15 "EB Garamond",serif;color:#142c57;letter-spacing:-.03em}.album-intentions .commande-reperes{border:0}.album-intentions h3{font-size:1rem;margin:18px 0 10px;color:#142c57}.page-commande .album-intentions .commande-reperes p{display:block;font-size:.88rem;color:#59616c}
@media(max-width:900px){.page-commande .hero{gap:38px}.page-commande .carte-maquette{padding:28px 20px}.public-header nav{gap:17px}.album-composition{padding:40px 35px 25px}.album-page>span{font-size:2.1rem}}
@media(max-width:760px){.v2.page-commande{padding:16px 20px 40px}.public-header{margin-bottom:23px;padding-bottom:16px}.public-marque{font-size:1rem}.public-header nav a:not(:last-child){display:none}.public-header nav a{font-size:.77rem}.page-commande .hero{grid-template-columns:1fr;gap:30px;margin:22px 0 33px}.page-commande h1{font-size:3rem}.page-commande .sur-titre{font-size:.64rem;margin-bottom:18px}.page-commande .hero .sous-titre{font-size:.96rem;line-height:1.7}.page-commande .hero .mention{font-size:.74rem}.page-commande .hero .prix-intro{font-size:.83rem}.page-commande .commande-visuel{width:100%;max-width:470px;padding-right:10px}.page-commande .carte-maquette{aspect-ratio:1.4;padding:26px;transform:rotate(1deg);box-shadow:8px 10px 0 #ebe3d5,0 10px 25px #142c5710}.page-commande .carte-titre{font-size:2.25rem;margin:3px 0 16px}.page-commande .carte-marque{font-size:.62rem}.carte-etoile{font-size:1.6rem;margin:7px 0}.page-commande .carte-bas{font-size:.55rem}.commande-reperes{grid-template-columns:1fr;gap:15px;margin:28px 0;padding:22px 0}.page-commande .commande-reperes p{font-size:.84rem}.occasion-note{padding:20px;margin:0 auto 30px}.page-commande #commander{margin:30px -4px 40px;padding:26px 18px;border-radius:17px}.entete-formulaire h2{font-size:2.1rem}.page-commande .entete-formulaire .aide{font-size:.85rem}.page-commande .fourche{gap:10px}.page-commande .fourche label{padding:13px;flex-basis:calc(50% - 10px)}.page-commande .fourche strong{font-size:.8rem}.page-commande .fourche .aide{font-size:.73rem}.page-commande .champs-deux{grid-template-columns:1fr;gap:0}.page-commande .recap-commande{padding:22px 18px}.page-commande .recap-commande dl{font-size:.84rem}.page-commande .recap-commande .aide{font-size:.76rem}.champ-promo{flex-wrap:wrap}.champ-promo button{min-height:48px;max-width:100%;flex-grow:1}.page-commande .renonciation{font-size:.76rem}.page-commande .faq h2{font-size:2rem}.page-commande .faq summary{font-size:.85rem}.page-commande .pied-espace{gap:8px 20px}.album-composition{max-width:450px;width:100%;margin:auto;padding:45px 55px 25px}.album-page>span{font-size:2.5rem}.album-intentions .commande-reperes{gap:30px}.album-intentions h3{margin-top:12px}}
@media(max-width:390px){.page-commande .fourche label{flex-basis:100%}.page-commande h1{font-size:2.65rem}.page-commande .carte-titre{font-size:2rem}.page-commande .carte-bas{font-size:.5rem}.page-commande #commander{padding-inline:14px}.page-commande .recap-commande{padding-inline:15px}}

/* Narration libre : mêmes repères visuels, sans réduire les zones de saisie. */
.v2 .narration-choix{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:24px 0}.v2 .narration-choix form{min-width:0}.v2 .narration-choix .btn-xl{height:100%;margin:0;padding:16px 12px;line-height:1.45;font-size:1.02rem;border-radius:14px}.v2 .narration-choix .secondaire{border-width:1px}.v2 .narration-choix [aria-pressed="true"]{box-shadow:0 5px 16px #2d4a8a18}.v2 .souvenir-photos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:24px 0}.v2 .souvenir-photos figure{min-width:0;margin:0;padding:14px;border:1px solid var(--filet);border-radius:14px;background:var(--blanc-photo)}.v2 .souvenir-photos img{display:block;width:100%;max-width:100%;max-height:340px;object-fit:contain;border-radius:9px}.v2 .souvenir-photos figcaption{font-family:"Instrument Sans",sans-serif;font-size:.88rem;line-height:1.6;margin-top:12px;overflow-wrap:anywhere}.v2 .souvenir-photos label{font-size:.92rem;line-height:1.55;margin-top:14px}.v2 .souvenir-photos .btn-xl{font-size:.92rem;padding:12px;min-height:52px;line-height:1.45}.v2 input.champ-large{width:100%;min-width:0;font:1.1rem/1.5 "Instrument Sans",sans-serif;padding:14px 16px;border:2px solid var(--filet);border-radius:10px;background:var(--blanc-photo);color:var(--encre)}.v2 .souvenir-relu label:not(.visuellement-cache){line-height:1.55;margin-bottom:10px}.v2 .souvenir-relu textarea{margin-top:14px;border-radius:10px;line-height:1.8}.v2 .souvenir-relu audio{width:100%;margin:10px 0}.v2 .bloc-rappel{margin:22px 0}.v2 .bloc-rappel summary{cursor:pointer;min-height:52px;padding:14px 0;font-family:"Instrument Sans",sans-serif;line-height:1.5}.v2 .bloc-rappel summary:focus-visible{outline:3px solid var(--bic);outline-offset:4px}.v2 .eyebrow{font-family:"Instrument Sans",sans-serif;font-size:.8rem;letter-spacing:.08em;text-align:center;color:var(--bic);text-transform:uppercase;margin-bottom:12px}
@media(max-width:620px){.v2 .narration-choix,.v2 .souvenir-photos{grid-template-columns:1fr}.v2 .narration-choix{gap:10px}.v2 .souvenir-photos figure{padding:16px}.v2 .souvenir-photos label{font-size:1rem}.v2 .souvenir-photos .btn-xl{font-size:1rem}}
