/* Énigmes & Trésors
   Ambiance : un après-midi d'aventure dans le jardin. Crème chaud, encre marine, orange vif, jaune soleil.
   Titres en Baloo 2 (ronde et franche), notes à la main en Patrick Hand,
   texte en Atkinson Hyperlegible (pensée pour les jeunes lecteurs), codes en Courier Prime. */

:root {
  --primary:       #f26b1d;  /* orange des boutons */
  --primary-light: #ff8a3d;
  --primary-pale:  #fff0e4;
  --dark:          #13213c;  /* encre marine */
  --jaune:         #f6b42c;
  --jaune-pale:    #fde7b0;
  --vert:          #6aa84f;
  --bleu:          #4a90d9;
  --text:          #26324a;
  --text-light:    #56627a;
  --bg:            #fdf6ec;
  --bg-alt:        #f8ead6;
  --papier:        #ffffff;
  --border:        rgba(19, 33, 60, 0.12);
  --shadow:        rgba(19, 33, 60, 0.10);
  --radius:        18px;
  --max-width:     1220px;
  --titre: 'Baloo 2', 'Trebuchet MS', sans-serif;
  --main:  'Patrick Hand', 'Comic Sans MS', cursive;
  --corps: 'Atkinson Hyperlegible', 'Segoe UI', Arial, sans-serif;
  --code:  'Courier Prime', 'Courier New', monospace;
}

*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { font-size: 18px; -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body { margin: 0; background: var(--bg); color: var(--text); font-family: var(--corps); line-height: 1.75; overflow-x: hidden; }
img { max-width: 100%; height: auto; }
a { color: var(--primary); text-underline-offset: 3px; }
a:hover { color: var(--dark); }
:focus-visible { outline: 3px solid var(--jaune); outline-offset: 2px; }
[id] { scroll-margin-top: 90px; }

.container { max-width: var(--max-width); margin: 0 auto; padding: 0 16px; }
h1, h2, h3 { font-family: var(--titre); font-weight: 800; line-height: 1.1; color: var(--dark); letter-spacing: -0.01em; }

/* Mots mis en valeur : surligné jaune (titre principal), souligné au feutre (titres de section) */
.surligne { background: linear-gradient(transparent 58%, var(--jaune-pale) 58%, var(--jaune-pale) 92%, transparent 92%); padding: 0 0.08em; }
.souligne { background: linear-gradient(transparent 78%, var(--jaune) 78%, var(--jaune) 94%, transparent 94%); }

/* ---------- Boutons ---------- */

.bouton-orange, .bouton-contour {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.5em;
  font-family: var(--titre); font-weight: 700; font-size: 1rem; line-height: 1.2;
  border-radius: 999px; padding: 0.75em 1.4em; cursor: pointer; text-decoration: none;
  transition: transform 0.12s, box-shadow 0.12s, background 0.12s;
}
.bouton-orange { background: var(--primary); color: #fff; border: 0; box-shadow: 0 6px 16px rgba(242, 107, 29, 0.32); }
.bouton-orange:hover { background: var(--primary-light); color: #fff; transform: translateY(-1px); }
.bouton-orange--grand { font-size: 1.2rem; padding: 0.8em 1.6em; }
.bouton-orange--petit { padding: 0.55em 1.2em; font-size: 0.95rem; white-space: nowrap; box-shadow: 0 4px 10px rgba(242, 107, 29, 0.25); }
.bouton-contour { background: #fff; color: var(--dark); border: 2px solid var(--dark); }
.bouton-contour:hover { background: var(--dark); color: #fff; }

/* ---------- En-tête ---------- */

.entete { background: rgba(253, 246, 236, 0.94); backdrop-filter: blur(6px); position: sticky; top: 0; z-index: 20; border-bottom: 1px solid var(--border); }
.entete__ligne { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 72px; }
.logo { display: inline-flex; line-height: 0; }
.logo img { height: 52px; width: auto; }
.entete__nav { display: flex; align-items: center; gap: 22px; }
.entete__lien { color: var(--dark); text-decoration: none; font-size: 0.92rem; padding: 4px 0; border-bottom: 2px solid transparent; }
.entete__lien:hover { color: var(--primary); }
.entete__lien[aria-current="page"] { border-bottom-color: var(--primary); }
.menu-deroulant { position: relative; }
.menu-deroulant summary { list-style: none; cursor: pointer; font-size: 0.92rem; color: var(--dark); padding: 4px 0; display: inline-flex; align-items: center; gap: 6px; }
.menu-deroulant summary::-webkit-details-marker { display: none; }
.menu-deroulant summary::after { content: ''; width: 7px; height: 7px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg) translateY(-2px); transition: transform 0.15s; }
.menu-deroulant[open] summary::after { transform: rotate(225deg) translateY(-1px); }
.menu-deroulant summary:hover { color: var(--primary); }
.menu-deroulant__court { display: none; }
.menu-deroulant__panneau { position: absolute; right: -110px; top: calc(100% + 14px); z-index: 30; width: 600px; display: grid; grid-template-columns: 1fr 1fr; gap: 6px 22px; background: #fff; border-radius: 20px; padding: 18px 20px; box-shadow: 0 24px 50px -18px rgba(19, 33, 60, 0.35); }
.menu-deroulant__titre { margin: 0 0 6px; font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--primary); font-weight: 700; }
.menu-deroulant__titre--suite { margin-top: 14px; }
.menu-deroulant__panneau a { display: block; padding: 8px 10px; border-radius: 12px; text-decoration: none; color: var(--dark); line-height: 1.3; }
.menu-deroulant__panneau a:hover, .menu-deroulant__panneau a[aria-current="page"] { background: var(--primary-pale); }
.menu-deroulant__panneau strong { display: block; font-family: var(--titre); font-weight: 700; font-size: 1rem; }
.menu-deroulant__panneau span { font-size: 0.8rem; color: var(--text-light); }
/* « Coloriages » : son propre petit menu dans l'en-tête ; dans « Tous les jeux », la liste n'apparaît que sur mobile. */
.menu-deroulant summary.est-actif { border-bottom: 2px solid var(--primary); }
.entete__lien, .menu-deroulant summary { white-space: nowrap; }
.menu-deroulant__panneau--simple { right: auto; left: -20px; width: 320px; grid-template-columns: 1fr; }
.menu-deroulant__mobile { display: none; }

/* ---------- Décors (autocollants) ---------- */

.deco { position: absolute; pointer-events: none; user-select: none; }

/* ---------- Ouverture ---------- */

.ouverture { position: relative; padding: 2.6rem 0 3.4rem; }
.deco--feuille-gauche { left: -38px; top: 34%; width: 110px; transform: rotate(18deg); opacity: 0.95; }
.ouverture__grille { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 36px; align-items: center; }
.ouverture h1 { font-size: clamp(2.2rem, 3.9vw, 3.25rem); margin: 0 0 1.1rem; }
.ouverture__intro { font-size: 1.08rem; color: var(--text-light); margin: 0 0 1.6rem; }
.ouverture__atouts { list-style: none; margin: 1.4rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px 22px; font-size: 0.86rem; color: var(--text-light); }
.ouverture__atouts li { white-space: nowrap; display: inline-flex; align-items: center; gap: 7px; }
.ouverture__atouts svg { width: 20px; height: 20px; flex: none; }
.ouverture__visuel { position: relative; }
.ouverture__photo {
  display: block; width: 100%; height: auto; aspect-ratio: 1400 / 916; object-fit: cover;
  border-radius: 64px 64px 64px 180px;
  box-shadow: 0 24px 48px -18px rgba(19, 33, 60, 0.35);
}
.note-epinglee {
  position: absolute; right: 4%; bottom: -34px; width: 240px;
  background: #fffdf5; padding: 16px 18px 14px; transform: rotate(-4deg);
  box-shadow: 0 10px 24px -8px rgba(19, 33, 60, 0.35);
  font-family: var(--main); font-size: 1.15rem; line-height: 1.35; color: var(--dark);
  background-image: repeating-linear-gradient(transparent 0 25px, rgba(74, 144, 217, 0.18) 25px 26px);
  background-position: 0 12px;
}
.note-epinglee p { margin: 0 0 1px; }
.note-epinglee::before { content: ''; position: absolute; top: -9px; left: 50%; width: 70px; height: 20px; margin-left: -35px; background: rgba(246, 180, 44, 0.55); transform: rotate(3deg); }
.note-epinglee__etoile { position: absolute; right: -12px; bottom: -14px; font-size: 2rem; color: var(--jaune); transform: rotate(12deg); text-shadow: 0 2px 0 #d8901a; }

/* ---------- Titres de section ---------- */

.titre-section { font-size: clamp(1.8rem, 3.2vw, 2.5rem); text-align: center; margin: 0 0 0.4rem; position: relative; }
.titre-section__eclat { width: 18px; height: auto; vertical-align: middle; margin-right: 0.5em; transform: rotate(-12deg) scaleX(-1); }
.titre-section__eclat--droite { margin: 0 0 0 0.5em; transform: rotate(12deg); }
.sous-titre-section { text-align: center; color: var(--text-light); margin: 0 auto 2rem; }

/* ---------- Thèmes ---------- */

.themes-aventure { padding: 3.2rem 16px 2.4rem; }
.tuiles-themes { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.tuile-theme--halloween { --c: #d4570f; --fond: #fde1c8; }
.tuile-theme {
  --c: var(--primary); --fond: var(--primary-pale);
  display: grid; grid-template-columns: 1fr auto; grid-template-rows: auto auto auto; align-items: center;
  text-align: left; font: inherit; cursor: pointer; border: 0; padding: 0; overflow: hidden;
  background: #fff; border-radius: var(--radius); box-shadow: 0 8px 22px -12px var(--shadow), 0 1px 0 var(--border);
  transition: transform 0.15s, box-shadow 0.15s;
}
.tuile-theme { text-decoration: none; color: inherit; }
.tuile-theme:hover { transform: translateY(-3px); box-shadow: 0 14px 28px -12px rgba(19, 33, 60, 0.25); }
.tuile-theme__picto { grid-column: 1 / -1; display: grid; place-items: center; height: 120px; font-size: 3.6rem; background: var(--fond); }
.tuile-theme__nom { padding: 12px 0 0 16px; font-family: var(--titre); font-weight: 800; font-size: 1.12rem; color: var(--c); line-height: 1.1; }
.tuile-theme__histoire { grid-row: 3; padding: 2px 0 14px 16px; font-size: 0.78rem; color: var(--text-light); line-height: 1.35; }
.tuile-theme__fleche { grid-row: 2 / span 2; grid-column: 2; margin: 0 14px 0 8px; width: 32px; height: 32px; display: grid; place-items: center; border-radius: 50%; background: var(--c); color: #fff; font-weight: 700; }
.tuile-theme--pirates { --c: #e07a10; --fond: #fdebd0; }
.tuile-theme--espions { --c: #3567c4; --fond: #e2ebfb; }
.tuile-theme--sorciers { --c: #8a4fd0; --fond: #efe4fb; }
.tuile-theme--dinosaures { --c: #3f9a4f; --fond: #e1f2df; }
.tuile-theme--espace { --c: #148a9c; --fond: #dbf2f5; }
.tuile-theme--princesses { --c: #b0306a; --fond: #fde3ee; }
.tuile-theme--ninjas { --c: #1f2333; --fond: #e6e8ee; }
.tuile-theme.est-choisi { box-shadow: 0 0 0 3px var(--c), 0 14px 28px -12px rgba(19, 33, 60, 0.25); }

/* ---------- L'atelier : réglages à gauche, feuilles à droite ---------- */

.atelier-zone { background: var(--bg-alt); padding: 3.4rem 0 3rem; border-radius: 48px 48px 0 0; }
.atelier { display: grid; grid-template-columns: 370px minmax(0, 1fr); gap: 30px; align-items: start; }
.atelier__reglages {
  position: sticky; top: 88px;
  background: var(--papier); border-radius: 24px; padding: 20px 20px 22px;
  box-shadow: 0 16px 36px -18px rgba(19, 33, 60, 0.3);
  max-height: calc(100vh - 100px); overflow-y: auto;
}
.atelier__reglages h2 { font-size: 1.5rem; margin: 0 0 0.7rem; }
.reglage { margin: 0 0 1.1rem; border: 0; padding: 0; min-width: 0; }
.reglage > legend, .reglage__label { font-family: var(--titre); font-weight: 700; font-size: 1rem; color: var(--dark); display: block; margin-bottom: 0.35rem; padding: 0; }
.reglage__aide { font-size: 0.8rem; color: var(--text-light); margin: 0.3rem 0 0; line-height: 1.5; }

.choix-tuiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(98px, 1fr)); gap: 7px; }
.choix-tuiles--age { grid-template-columns: repeat(3, 1fr); }
.choix-tuiles label { position: relative; cursor: pointer; }
.choix-tuiles input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.choix-tuiles span { display: block; text-align: center; font-size: 0.85rem; line-height: 1.3; border: 2px solid var(--border); background: var(--bg); padding: 8px 4px; border-radius: 14px; transition: border-color 0.12s, background 0.12s; }
.choix-tuiles span i { display: block; font-style: normal; font-size: 1.45rem; line-height: 1.3; }
.choix-tuiles small { display: block; color: var(--text-light); font-size: 0.74rem; }
.choix-tuiles label:hover span { border-color: var(--primary-light); }
.choix-tuiles input:checked + span { border-color: var(--primary); background: var(--primary-pale); font-weight: 700; }
.choix-tuiles input:focus-visible + span { outline: 3px solid var(--jaune); outline-offset: 1px; }

.champ-texte, .champ-liste { width: 100%; font: inherit; font-size: 0.95rem; color: var(--text); border: 2px solid var(--border); border-radius: 12px; background: #fff; padding: 8px 12px; }
.champ-texte:focus, .champ-liste:focus { border-color: var(--primary); outline: none; }
textarea.champ-texte { min-height: 64px; resize: vertical; line-height: 1.5; }
.deux-champs { display: grid; grid-template-columns: 1fr 96px; gap: 8px; }

.curseur-cartes { display: flex; align-items: center; gap: 12px; }
.curseur-cartes input { flex: 1; accent-color: var(--primary); }
.curseur-cartes output { font-family: var(--titre); font-weight: 800; font-size: 1.7rem; min-width: 1.4em; text-align: center; color: var(--primary); }

.cachettes-repli { border-top: 2px dashed var(--border); padding-top: 0.8rem; }
.cachettes-repli summary { cursor: pointer; font-family: var(--titre); font-weight: 700; color: var(--dark); }
.cachettes-repli summary span { font-family: var(--corps); font-weight: 400; font-size: 0.85rem; color: var(--text-light); }
.piece-a-fouiller { border: 0; padding: 0; margin: 0.7rem 0 0; }
.piece-a-fouiller legend { font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--primary); font-weight: 700; padding: 0; }
.cachette-a-cocher { display: flex; align-items: center; gap: 6px; font-size: 0.86rem; line-height: 1.4; padding: 2px 0; cursor: pointer; }
.cachette-a-cocher input { accent-color: var(--primary); margin: 0; }
.cachette-a-cocher__picto { width: 1.4em; text-align: center; }
.lien-discret { background: none; border: 0; padding: 0; font: inherit; font-size: 0.8rem; color: var(--primary); text-decoration: underline; cursor: pointer; }
.alerte-cachettes { background: var(--jaune-pale); border-radius: 12px; padding: 8px 12px; font-size: 0.85rem; line-height: 1.5; margin: 0 0 1rem; }
.atelier__actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 0.4rem; }
.atelier__actions .bouton-orange, .atelier__actions .bouton-contour { padding: 0.7em 0.8em; font-size: 0.95rem; }

.atelier__table { min-width: 0; }
.atelier__barre { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 14px; }
.atelier__barre p { margin: 0; font-size: 0.9rem; color: var(--text-light); }
.atelier__barre strong { color: var(--dark); }

/* ---------- Les feuilles A4 (écran et impression) ----------
   Toutes les tailles internes sont en cqi : 1cqi = 1 % de la largeur de la feuille,
   soit 2,1 mm à l'impression. L'aperçu est donc une réduction exacte du papier. */

#apercu { container-type: inline-size; display: grid; gap: 22px; }
.feuille {
  container-type: inline-size;
  width: 100%; aspect-ratio: 210 / 297;
  background: #fff; color: #1b1b1b;
  padding: 4.8cqi;
  border-radius: 6px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 12px 28px -10px rgba(19,33,60,0.25);
  overflow: hidden;
  font-family: var(--corps);
  line-height: 1.4;
}

/* Feuille de l'organisateur */
.orga-bandeau { margin: 0 0 1.6cqi; font-size: 1.3cqi; text-transform: uppercase; letter-spacing: 0.12em; color: var(--primary); font-weight: 700; border-bottom: 0.2cqi solid var(--primary); padding-bottom: 0.8cqi; }
.orga-titre { font-family: var(--titre); font-weight: 800; font-size: 4.2cqi; margin: 0; color: var(--dark); }
.orga-resume { font-size: 1.6cqi; margin: 0.4cqi 0 1.6cqi; color: #555; }
.orga-etape { font-family: var(--titre); font-weight: 700; font-size: 2.2cqi; margin: 2.2cqi 0 0.8cqi; display: flex; align-items: center; gap: 1cqi; color: var(--dark); }
.orga-etape span { display: inline-grid; place-items: center; width: 3.2cqi; height: 3.2cqi; border-radius: 50%; background: var(--primary); color: #fff; font-size: 1.7cqi; }
.orga-note { font-size: 1.55cqi; margin: 0 0 1cqi; }
.orga-parcours { width: 100%; border-collapse: collapse; font-size: 1.45cqi; }
.orga-parcours th { text-align: left; font-size: 1.25cqi; text-transform: uppercase; letter-spacing: 0.06em; color: #666; border-bottom: 0.2cqi solid #1b1b1b; padding: 0.5cqi 0.8cqi; }
.orga-parcours td { border-bottom: 0.1cqi solid #ccc; padding: 0.65cqi 0.8cqi; vertical-align: top; }
.orga-parcours td small { display: block; color: #777; font-size: 1.2cqi; }
.orga-parcours .orga-num { font-weight: 700; white-space: nowrap; color: var(--primary); }
.orga-histoire { margin: 0; font-size: 1.6cqi; line-height: 1.55; padding: 1.4cqi 2cqi; background: #fdf3e3; border-left: 0.6cqi solid var(--jaune); border-radius: 0 1cqi 1cqi 0; font-style: italic; }
/* Plus de 10 cartes : la feuille de l'organisateur se resserre pour tenir sur une page A4 (jusqu'à 15 cartes) */
.feuille--orga-serree .orga-parcours { font-size: 1.35cqi; }
.feuille--orga-serree .orga-parcours td { padding: 0.4cqi 0.8cqi; }
.feuille--orga-serree .orga-parcours td small { font-size: 1.1cqi; }
.feuille--orga-serree .orga-etape { margin: 1.5cqi 0 0.6cqi; }
.feuille--orga-serree .orga-histoire { font-size: 1.5cqi; line-height: 1.45; padding: 1.1cqi 1.8cqi; }

/* Cartes à découper : 4 par feuille, traits de coupe en pointillés */
.feuille--cartes { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 2.4cqi; }
.carte-enigme { border: 0.25cqi dashed #9a9a9a; border-radius: 1.6cqi; padding: 2.6cqi 2.8cqi; display: flex; flex-direction: column; position: relative; min-height: 0; }
.carte-enigme__entete { font-family: var(--titre); font-weight: 800; font-size: 2.6cqi; color: var(--dark); border-bottom: 0.3cqi solid var(--jaune); padding-bottom: 0.8cqi; margin-bottom: 1.6cqi; display: flex; align-items: center; gap: 1cqi; }
.carte-enigme__sur { margin-left: auto; font-family: var(--corps); font-weight: 400; font-size: 1.4cqi; color: #777; }
.carte-enigme__depart { margin: -0.6cqi 0 1.2cqi; font-size: 1.3cqi; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: var(--primary); }
.carte-enigme__picto { font-size: 15cqi; line-height: 1.15; text-align: center; margin: 1cqi 0 2cqi; }
.carte-enigme__phrase { font-size: 2.5cqi; line-height: 1.35; text-align: center; margin: 0; font-weight: 700; }
.carte-enigme__rimes { font-size: 2.35cqi; line-height: 1.55; margin: auto 0; }
.carte-enigme__texte { font-size: 2.2cqi; line-height: 1.5; margin: 0; }
.carte-enigme__question { font-size: 2cqi; font-weight: 700; margin: 1.2cqi 0 0; }
.carte-enigme__aide { margin: auto 0 0; padding-top: 1.2cqi; font-size: 1.3cqi; color: #777; text-align: center; font-style: italic; }
.code-a-percer { margin-top: auto; border: 0.25cqi solid #1b1b1b; border-radius: 1cqi; padding: 1.2cqi 1.4cqi; }
.code-a-percer__titre { margin: 0; font-size: 1.4cqi; font-weight: 700; }
.code-a-percer__mot { margin: 0.6cqi 0; font-family: var(--code); font-weight: 700; font-size: 3.2cqi; letter-spacing: 0.25em; line-height: 1.2; word-break: break-all; }
.code-a-percer__mot--nombres { font-size: 2.3cqi; letter-spacing: 0.04em; word-break: normal; line-height: 1.45; }
.code-a-percer__consigne { margin: 0; font-size: 1.3cqi; color: #555; line-height: 1.35; }
.carte-enigme--fin .carte-enigme__phrase { font-weight: 400; font-size: 2.2cqi; }
.decodeur-titre { font-weight: 700; font-size: 1.6cqi; margin: 0.6cqi 0; }
.decodeur-grille { width: 100%; border-collapse: collapse; table-layout: fixed; margin-bottom: 1.2cqi; }
.decodeur-grille td { border: 0.12cqi solid #999; text-align: center; font-family: var(--code); font-size: 1.35cqi; padding: 0.3cqi 0; line-height: 1.25; }
.decodeur-grille td b { display: block; font-size: 1.7cqi; }

/* Diplômes : 2 par feuille */
.feuille--diplomes { display: grid; grid-template-rows: 1fr 1fr; gap: 3cqi; }
.diplome { border: 0.6cqi double var(--jaune); border-radius: 2cqi; outline: 0.15cqi solid var(--jaune); outline-offset: -1.6cqi; padding: 3cqi 6cqi; text-align: center; display: flex; flex-direction: column; justify-content: center; }
.diplome__picto { font-size: 5cqi; margin: 0; line-height: 1.2; }
.diplome__titre { font-family: var(--titre); font-weight: 800; font-size: 4.6cqi; margin: 0.6cqi 0 1.6cqi; color: var(--dark); }
.diplome__decerne { margin: 0; font-size: 1.8cqi; font-style: italic; color: #555; }
.diplome__nom { font-family: var(--main); font-size: 6cqi; margin: 0.4cqi 0 1.2cqi; color: var(--primary); min-height: 6cqi; line-height: 1.1; }
.diplome__exploit { margin: 0 auto; font-size: 1.9cqi; max-width: 70cqi; line-height: 1.5; }
.diplome__pied { display: flex; justify-content: space-between; align-items: flex-end; margin-top: 3cqi; font-size: 1.6cqi; }
.diplome__signature { font-family: var(--main); font-size: 2.6cqi; border-top: 0.15cqi solid #1b1b1b; padding-top: 0.4cqi; }
.diplome__blanc { display: inline-block; width: 50cqi; border-bottom: 0.2cqi dotted #888; height: 4cqi; vertical-align: bottom; }
.diplome__blanc--court { width: 18cqi; height: 2cqi; }

/* ---------- Comment ça marche ---------- */

.comment-ca-marche { position: relative; padding: 4rem 0 3.4rem; background: var(--bg); }
.deco--avion { left: 4%; top: 2.4rem; width: 96px; }
.deco--carte { right: 5%; top: 2rem; width: 96px; transform: rotate(10deg); }
.trois-etapes { list-style: none; margin: 1rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 34px; }
.trois-etapes__item { position: relative; }
.trois-etapes__item img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: contain; mix-blend-mode: multiply; }
.trois-etapes__item:not(:last-child)::after {
  content: ''; position: absolute; right: -32px; top: 28%; width: 34px; height: 14px;
  background: no-repeat center / contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 16'%3E%3Cpath d='M2 10 Q18 2 34 8' fill='none' stroke='%23f26b1d' stroke-width='2' stroke-dasharray='4 4'/%3E%3Cpath d='M29 3 L36 8 L29 13' fill='none' stroke='%23f26b1d' stroke-width='2'/%3E%3C/svg%3E");
}
.trois-etapes__texte { display: grid; grid-template-columns: auto 1fr; column-gap: 14px; align-items: start; margin-top: 0.6rem; }
.trois-etapes__texte h3 { margin: 0.15rem 0 0.2rem; font-size: 1.25rem; }
.trois-etapes__texte p { grid-column: 2; margin: 0; font-size: 0.92rem; color: var(--text-light); line-height: 1.55; }
.pastille { grid-row: span 2; width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; font-family: var(--titre); font-weight: 800; font-size: 1.4rem; color: #fff; }
.pastille--jaune { background: var(--jaune); }
.pastille--vert { background: var(--vert); }
.pastille--bleu { background: var(--bleu); }

/* ---------- Texte autour de l'outil ---------- */

.carnet { padding-top: 1rem; padding-bottom: 3rem; }
.carnet h2 { font-size: 1.85rem; margin: 2.6rem 0 0.7rem; }
.carnet p, .carnet li { font-size: 1rem; line-height: 1.85; }
.trois-niveaux { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin: 1.2rem 0; }
.trois-niveaux__carte { background: #fff; border-radius: var(--radius); padding: 16px 18px; box-shadow: 0 8px 20px -14px var(--shadow); border-top: 6px solid var(--jaune); }
.trois-niveaux__carte--moyens { border-top-color: var(--vert); }
.trois-niveaux__carte--grands { border-top-color: var(--bleu); }
.trois-niveaux h3 { margin: 0 0 0.3rem; font-size: 1.25rem; }
.trois-niveaux p { font-size: 0.9rem; line-height: 1.6; margin: 0 0 0.6rem; }
.trois-niveaux blockquote { margin: 0; font-family: var(--main); font-size: 1.12rem; line-height: 1.4; color: var(--dark); }
.chemin-etapes { list-style: none; counter-reset: etape; padding: 0; margin: 1rem 0; }
.chemin-etapes li { counter-increment: etape; position: relative; padding: 0 0 1rem 3rem; border-left: 2px dashed var(--primary); margin-left: 1rem; }
.chemin-etapes li:last-child { border-left-color: transparent; }
.chemin-etapes li::before { content: counter(etape); position: absolute; left: -1rem; top: 0; width: 2rem; height: 2rem; display: grid; place-items: center; background: var(--dark); color: #fff; font-family: var(--titre); font-weight: 800; border-radius: 50%; }
.chemin-etapes li:last-child::before { content: '✕'; background: var(--primary); }
.chemin-etapes strong { display: block; font-family: var(--titre); font-size: 1.08rem; color: var(--dark); }
.questions-parents details { background: #fff; border-radius: 14px; padding: 0.8rem 1.1rem; margin-bottom: 10px; box-shadow: 0 4px 14px -10px var(--shadow); }
.questions-parents summary { cursor: pointer; font-family: var(--titre); font-weight: 700; font-size: 1.05rem; color: var(--dark); list-style: none; position: relative; padding-right: 2rem; }
.questions-parents summary::-webkit-details-marker { display: none; }
.questions-parents summary::after { content: '+'; position: absolute; right: 0; top: -0.1rem; width: 1.6rem; height: 1.6rem; border-radius: 50%; background: var(--primary-pale); color: var(--primary); display: grid; place-items: center; font-weight: 800; }
.questions-parents details[open] summary::after { content: '−'; }
.questions-parents details p { margin: 0.5rem 0 0.2rem; }

/* ---------- Bandeau final ---------- */

.bandeau-promesses { position: relative; background: #e4efe9; padding: 3.4rem 0; border-radius: 48px 48px 0 0; }
.deco--coeur { left: 3%; bottom: 2.2rem; width: 56px; transform: rotate(-12deg); }
.bandeau-promesses__grille { display: grid; grid-template-columns: 1.2fr 1fr; gap: 40px; align-items: center; }
.bandeau-promesses h2 { font-size: 2.2rem; margin: 0 0 0.5rem; }
.bandeau-promesses__appel p { margin: 0 0 1.4rem; color: var(--text-light); }
.bandeau-promesses__liste { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; }
.bandeau-promesses__liste li { display: flex; align-items: center; gap: 14px; font-family: var(--main); font-size: 1.25rem; color: var(--dark); }
.bandeau-promesses__liste span { width: 44px; height: 44px; flex: none; display: grid; place-items: center; background: #fff; border-radius: 50%; font-size: 1.3rem; box-shadow: 0 4px 10px -6px var(--shadow); }

/* ---------- Pied de page ---------- */

.pied { background: var(--dark); color: #d9deea; padding: 2.4rem 0 2rem; font-size: 0.9rem; }
.pied__grille { display: grid; grid-template-columns: 1.3fr 1fr 1fr; gap: 28px; }
.pied p { margin: 0; }
.pied__marque p { margin-top: 10px; line-height: 1.6; }
.pied__colonne { display: flex; flex-direction: column; gap: 6px; }
.pied__titre { font-family: var(--titre); font-weight: 700; color: #fff; margin-bottom: 4px !important; }
.pied__titre--suite { margin-top: 14px !important; }
.pied a { color: #ffd18a; }
.pied__colonne a { text-decoration: none; }
.pied__colonne a:hover { text-decoration: underline; }
.pied__credit { margin-top: 1.8rem !important; padding-top: 1rem; border-top: 1px solid rgba(255,255,255,0.12); font-size: 0.82rem; color: #aab3c5; }

/* ---------- Pages simples (mentions, 404) ---------- */

.page-simple { padding: 2rem 16px 3rem; }
.page-simple h1 { font-size: 2.4rem; }
.page-simple h2 { font-size: 1.5rem; margin: 2rem 0 0.5rem; }
.fil-ariane { font-size: 0.8rem; color: var(--text-light); padding-top: 1rem; }
.fil-ariane ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.fil-ariane li + li::before { content: '›'; margin-right: 6px; color: var(--primary); }
.fil-ariane a { color: var(--text-light); }
.page-perdue { text-align: center; padding: 4rem 16px; margin: 0 auto; }
.page-perdue__code { font-family: var(--titre); font-weight: 800; font-size: 6rem; line-height: 1; color: var(--primary); display: block; }

/* ---------- Écrans moyens et petits ---------- */

@media (max-width: 1100px) {
  .entete__lien:nth-of-type(3) { display: none; }
}
@media (max-width: 980px) {
  .entete__lien:nth-of-type(1) { display: none; }
  .atelier { grid-template-columns: minmax(0, 1fr); }
  .atelier__reglages { position: static; max-height: none; }
  .ouverture__grille { grid-template-columns: minmax(0, 1fr); gap: 28px; }
  .note-epinglee { right: 12px; bottom: -26px; width: 200px; font-size: 1.05rem; }
  .trois-etapes { grid-template-columns: minmax(0, 1fr); max-width: 520px; margin: 0 auto; }
  .trois-etapes__item:not(:last-child)::after { display: none; }
  .bandeau-promesses__grille { grid-template-columns: minmax(0, 1fr); }
  .deco--feuille-gauche { display: none; }
}
@media (max-width: 820px) {
  .entete__lien:nth-of-type(2) { display: none; }
}
@media (max-width: 700px) {
  html { font-size: 17px; }
  .entete__lien { display: none; }
  .menu-deroulant--coloriages { display: none; }
  .menu-deroulant__mobile { display: block; }
  .menu-deroulant__large { display: none; }
  .menu-deroulant__court { display: inline; }
  .menu-deroulant { position: static; }
  .menu-deroulant__panneau { position: absolute; left: 12px; right: 12px; width: auto; top: 64px; grid-template-columns: 1fr; max-height: calc(100vh - 90px); overflow-y: auto; }
  .pied__grille { grid-template-columns: 1fr; }
  .entete__nav { gap: 12px; }
  .bouton-orange--petit { padding: 0.5em 0.9em; font-size: 0.85rem; }
  .logo img { height: 44px; }
  .tuiles-themes { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .tuile-theme__picto { height: 90px; font-size: 2.8rem; }
  .trois-niveaux { grid-template-columns: minmax(0, 1fr); }
  .deco--avion, .deco--carte { width: 60px; top: 1rem; }
  .ouverture__photo { border-radius: 36px 36px 36px 110px; }
  .note-epinglee { position: relative; right: auto; bottom: auto; margin: -30px 6px 0 auto; width: 210px; }
  .note-epinglee__etoile { right: -6px; }
  #apercu { gap: 14px; }
  .atelier-zone, .bandeau-promesses { border-radius: 28px 28px 0 0; }
}

/* ---------- Page du générateur : tête ---------- */

.tete-outil { padding-bottom: 1.6rem; }
.tete-outil h1 { font-size: clamp(2rem, 3.6vw, 3rem); margin: 0.8rem 0 0.8rem; }
.tete-outil__intro { font-size: 1.05rem; color: var(--text-light); margin: 0; }
.atelier-zone .sous-titre-section { text-align: left; margin: 0 0 1.4rem; }

/* ---------- Accueil : ce qui sort de l'imprimante (vraies feuilles du générateur) ---------- */

.ce-qui-sort { padding: 3.4rem 16px 4rem; }
.ce-qui-sort__grille { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 48px; align-items: center; }
.ce-qui-sort__feuilles { position: relative; height: 520px; }
.ce-qui-sort__feuille { position: absolute; width: 300px; pointer-events: none; container-type: inline-size; }
.ce-qui-sort__feuille .feuille { box-shadow: 0 18px 36px -14px rgba(19, 33, 60, 0.4); }
.ce-qui-sort__feuille--1 { left: 0; top: 40px; transform: rotate(-7deg); }
.ce-qui-sort__feuille--2 { left: 50%; margin-left: -150px; top: 0; z-index: 2; }
.ce-qui-sort__feuille--3 { right: 0; top: 50px; transform: rotate(7deg); }
.ce-qui-sort__texte h2 { font-size: clamp(1.8rem, 3vw, 2.4rem); margin: 0 0 0.6rem; }
.ce-qui-sort__texte p { color: var(--text-light); }
.ce-qui-sort__texte ul { padding-left: 1.2rem; margin: 0 0 1.6rem; }
.ce-qui-sort__texte li { margin-bottom: 0.5rem; }
.ce-qui-sort__texte li::marker { color: var(--primary); }
@media (max-width: 980px) {
  .ce-qui-sort__grille { grid-template-columns: minmax(0, 1fr); }
  .ce-qui-sort__feuilles { height: 420px; max-width: 560px; width: 100%; margin: 0 auto; }
  .ce-qui-sort__feuille { width: 240px; }
  .ce-qui-sort__feuille--2 { margin-left: -120px; }
}
@media (max-width: 560px) {
  .ce-qui-sort__feuilles { height: 300px; }
  .ce-qui-sort__feuille { width: 170px; }
  .ce-qui-sort__feuille--2 { margin-left: -85px; }
}

/* ---------- Banque d'énigmes ---------- */

.banque-zone { background: var(--bg-alt); padding: 2.4rem 0 3rem; border-radius: 48px 48px 0 0; }
.banque-filtres { position: sticky; top: 72px; z-index: 5; background: var(--bg-alt); padding: 12px 0 14px; margin-bottom: 0.6rem; display: grid; gap: 10px; border-bottom: 1px solid var(--border); }
.banque-filtres__ages { display: flex; gap: 8px; flex-wrap: wrap; }
.banque-onglet { font-family: var(--titre); font-weight: 700; font-size: 1.05rem; border: 2px solid var(--dark); background: #fff; color: var(--dark); border-radius: 999px; padding: 0.35em 1.1em; cursor: pointer; }
.banque-onglet[aria-selected="true"] { background: var(--dark); color: #fff; }
.banque-filtres__pieces { display: flex; gap: 6px; flex-wrap: wrap; }
.banque-puce { font: inherit; font-size: 0.82rem; border: 1.5px solid var(--border); background: #fff; color: var(--text); border-radius: 999px; padding: 0.25em 0.9em; cursor: pointer; }
.banque-puce.est-choisie { border-color: var(--primary); background: var(--primary-pale); color: var(--dark); font-weight: 700; }
.banque-filtres__selection { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; font-size: 0.9rem; color: var(--text-light); }
.banque-filtres__selection .bouton-orange { margin-left: auto; padding: 0.55em 1.2em; font-size: 0.95rem; }
.banque-filtres__selection .bouton-orange:disabled { opacity: 0.45; cursor: not-allowed; box-shadow: none; transform: none; }
.banque-niveau h2 { font-size: clamp(1.6rem, 2.8vw, 2.1rem); margin: 1.4rem 0 0.3rem; }
.banque-niveau__intro { color: var(--text-light); margin: 0 0 1.2rem; }
.banque-grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 14px; }
.enigme-fiche { background: #fff; border-radius: 16px; padding: 14px 16px 12px; box-shadow: 0 6px 16px -12px var(--shadow); display: flex; flex-direction: column; border: 2px solid transparent; }
.enigme-fiche.est-choisie { border-color: var(--primary); }
.enigme-fiche__piece { margin: 0 0 0.4rem; font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--primary); font-weight: 700; }
.enigme-fiche__picto { margin: 0; font-size: 2.6rem; line-height: 1.2; text-align: center; }
.enigme-fiche__texte { margin: 0 0 0.6rem; font-size: 0.95rem; line-height: 1.55; }
.enigme-fiche__texte--petits { font-weight: 700; text-align: center; }
.enigme-fiche__texte--rimes { font-family: var(--main); font-size: 1.15rem; line-height: 1.4; color: var(--dark); }
.enigme-fiche__diff { margin: 0.2rem 0 0.2rem; font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-light); font-weight: 700; }
.banque-active .enigme-fiche__diff { display: none; }
.enigme-fiche__code { margin: 0 0 0.6rem; font-size: 0.8rem; color: var(--text-light); }
.enigme-fiche__code span { font-family: var(--code); font-weight: 700; color: var(--dark); }
.enigme-fiche__reponse { margin-top: auto; font-size: 0.85rem; border-top: 1px dashed var(--border); padding-top: 0.5rem; }
.enigme-fiche__reponse summary { cursor: pointer; color: var(--primary); font-weight: 700; }
.enigme-fiche__reponse p { margin: 0.3rem 0 0; line-height: 1.5; }
.enigme-fiche__choix { display: flex; align-items: center; gap: 6px; font-size: 0.85rem; margin-top: 0.5rem; cursor: pointer; font-weight: 700; color: var(--dark); }
.enigme-fiche__choix input { accent-color: var(--primary); width: 18px; height: 18px; }
.zone-impression { display: none; container-type: inline-size; width: 210mm; }
.renvoi-outil { text-align: center; margin-top: 2.4rem; }
@media (max-width: 700px) {
  .banque-filtres { top: 60px; }
  .banque-filtres__selection .bouton-orange { margin-left: 0; }
}

/* ---------- Accueil : catalogue des jeux ---------- */

.ouverture__boutons { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.jeux-catalogue { padding: 3.4rem 16px 1rem; }
.jeux-grille { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.jeu-carte {
  position: relative; display: flex; flex-direction: column; gap: 4px;
  background: #fff; border-radius: var(--radius); padding: 20px 20px 18px; text-decoration: none; color: inherit;
  box-shadow: 0 8px 22px -14px var(--shadow), 0 1px 0 var(--border); transition: transform 0.15s, box-shadow 0.15s;
}
a.jeu-carte:hover { transform: translateY(-3px); box-shadow: 0 14px 28px -12px rgba(19, 33, 60, 0.25); color: inherit; }
.jeu-carte__picto { font-size: 2.2rem; line-height: 1.2; width: 60px; height: 60px; display: grid; place-items: center; border-radius: 16px; background: var(--primary-pale); margin-bottom: 6px; }
.jeu-carte--codes .jeu-carte__picto { background: #efe4fb; }
.jeu-carte--enigmes .jeu-carte__picto { background: #e2ebfb; }
.jeu-carte--labyrinthe .jeu-carte__picto { background: #def4e8; }
.jeu-carte--mots .jeu-carte__picto { background: #e6e4fb; }
.jeu-carte--croises .jeu-carte__picto { background: #fde2e4; }
.jeu-carte--bingo .jeu-carte__picto { background: #e0f0ff; }
.jeu-carte--anniv .jeu-carte__picto { background: #fde3ee; }
.jeu-carte__nom { font-family: var(--titre); font-weight: 800; font-size: 1.25rem; color: var(--dark); line-height: 1.15; }
.jeu-carte__texte { font-size: 0.88rem; color: var(--text-light); line-height: 1.5; }
.jeu-carte__lien { margin-top: auto; padding-top: 8px; font-family: var(--titre); font-weight: 700; color: var(--primary); }
.jeu-carte--bientot { background: rgba(255, 255, 255, 0.55); box-shadow: none; border: 2px dashed var(--border); }
.jeu-carte--bientot .jeu-carte__picto { background: var(--bg-alt); }
.jeu-carte__badge { position: absolute; top: 16px; right: 16px; font-family: var(--main); font-size: 1rem; color: var(--dark); background: var(--jaune-pale); padding: 0 10px; border-radius: 999px; transform: rotate(4deg); }
@media (max-width: 1100px) { .jeux-grille { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .jeux-grille { grid-template-columns: minmax(0, 1fr); } }

/* ---------- Générateur d'énigmes ---------- */

.enigmes-atelier { background: var(--bg-alt); padding: 2.2rem 0 2.6rem; border-radius: 48px 48px 0 0; }
.enigmes-reglages { background: #fff; border-radius: 24px; padding: 18px 22px; box-shadow: 0 16px 36px -22px rgba(19, 33, 60, 0.3); display: grid; gap: 12px; }
.enigmes-reglages__groupe { border: 0; padding: 0; margin: 0; min-width: 0; }
.enigmes-reglages__groupe legend { font-family: var(--titre); font-weight: 700; color: var(--dark); padding: 0; margin-bottom: 6px; }
.pastilles-choix { display: flex; flex-wrap: wrap; gap: 8px; }
.pastilles-choix label { position: relative; cursor: pointer; }
.pastilles-choix input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.pastilles-choix span { display: inline-block; border: 2px solid var(--border); background: var(--bg); border-radius: 999px; padding: 0.3em 1em; font-size: 0.92rem; }
.pastilles-choix label:hover span { border-color: var(--primary-light); }
.pastilles-choix input:checked + span { border-color: var(--primary); background: var(--primary-pale); font-weight: 700; color: var(--dark); }
.pastilles-choix input:focus-visible + span { outline: 3px solid var(--jaune); outline-offset: 2px; }
.enigmes-reglages__ligne { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.enigmes-reglages__nb { display: inline-flex; align-items: center; gap: 10px; font-family: var(--titre); font-weight: 700; color: var(--dark); }
.enigmes-reglages__nb select { width: auto; }
.enigmes-barre { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin: 1.4rem 0 1rem; }
.enigmes-barre p { margin: 0; color: var(--text-light); font-size: 0.92rem; }
.enigmes-barre__boutons { display: flex; flex-wrap: wrap; gap: 10px; }

.devinettes { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.devinette { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 14px; align-items: start; background: #fff; border-radius: 18px; padding: 16px 18px; box-shadow: 0 6px 16px -12px var(--shadow); }
.devinette__num { width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center; background: var(--jaune); color: var(--dark); font-family: var(--titre); font-weight: 800; font-size: 1.1rem; }
.devinette__texte { margin: 0.2rem 0 0.5rem; font-size: 1.08rem; line-height: 1.55; color: var(--dark); }
.devinette__aides { display: flex; flex-wrap: wrap; gap: 8px 18px; }
.devinette__aides details { font-size: 0.92rem; }
.devinette__aides summary { cursor: pointer; font-weight: 700; color: var(--primary); }
.devinette__indice summary { color: var(--bleu); }
.devinette__aides details p { margin: 0.3rem 0 0; }
.devinette__reponse p { font-family: var(--main); font-size: 1.25rem; color: var(--dark); line-height: 1.3; }
.devinette__theme { font-size: 1.5rem; line-height: 1; opacity: 0.85; }
.carnet .devinettes { margin: 0.6rem 0 1.4rem; }
.tranche-titre { font-size: 1.3rem; margin: 1.8rem 0 0.2rem; }

.themes-enigmes { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; margin: 1rem 0; }
.theme-enigmes { display: flex; flex-direction: column; gap: 2px; background: #fff; border-radius: 16px; padding: 14px 16px; text-decoration: none; color: inherit; box-shadow: 0 6px 16px -12px var(--shadow); }
.theme-enigmes:hover { color: inherit; transform: translateY(-2px); }
.theme-enigmes__picto { font-size: 2rem; }
.theme-enigmes__nom { font-family: var(--titre); font-weight: 800; font-size: 1.15rem; color: var(--dark); }
.theme-enigmes__texte { font-size: 0.85rem; color: var(--text-light); }

/* ---------- Labyrinthes ---------- */

.lab-picto { font-style: normal; }
.lab-reglages__note { margin: 6px 0 0; font-size: 0.85rem; color: var(--text-light); }
.pastilles-choix .pastille--off span { opacity: 0.4; text-decoration: line-through; }
.pastilles-choix .pastille--off, .pastilles-choix .pastille--off input { cursor: not-allowed; }
#lab-reglages .enigmes-reglages__nb { max-width: 100%; min-width: 0; flex-wrap: wrap; }
#lab-reglages .champ-liste, #lab-reglages .champ-texte { max-width: 100%; min-width: 0; }
.lab-reglages__prenom { width: 14em; }
.lab-reglages__numero { width: 8em; }
.lab-reglages__case { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; color: var(--dark); cursor: pointer; }
.lab-apercu { background: #fff; border-radius: 24px; padding: 22px; box-shadow: 0 16px 36px -22px rgba(19, 33, 60, 0.3); text-align: center; }
.lab-apercu__titre { font-family: var(--titre); font-weight: 800; font-size: clamp(1.4rem, 3vw, 1.9rem); color: var(--dark); margin: 0; }
.lab-apercu__consigne { margin: 0.2rem 0 1rem; color: var(--text); }
.lab-apercu__dessin svg { display: block; width: 100%; height: auto; max-height: 78vh; margin: 0 auto; }
.lab-apercu__solution { margin-top: 1rem; }
.lab-apercu__solution summary { cursor: pointer; font-weight: 700; color: var(--primary); }
.lab-apercu__solution .lab-apercu__dessin { margin-top: 0.8rem; }

/* Feuilles : un labyrinthe par page, puis les solutions quatre par page */
.feuille--lab { display: flex; flex-direction: column; }
.lab-feuille__titre { font-family: var(--titre); font-weight: 800; font-size: 5cqi; color: var(--dark); text-align: center; margin: 0; line-height: 1.15; }
.lab-feuille__titre span { font-size: 2.4cqi; color: #888; font-weight: 700; }
.lab-feuille__consigne { font-size: 2.5cqi; text-align: center; margin: 0.8cqi 0 2.4cqi; }
.lab-feuille__dessin { flex: 1; min-height: 0; display: flex; }
.lab-feuille__dessin svg { width: 100%; height: 100%; }
.lab-feuille__pied { margin: 1.6cqi 0 0; font-size: 1.4cqi; color: #888; text-align: center; }
.feuille--lab-solutions { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 3cqi; }
.lab-solution { display: flex; flex-direction: column; min-height: 0; border: 0.2cqi solid #ddd; border-radius: 1.6cqi; padding: 1.6cqi; }
.lab-solution p { margin: 0 0 1cqi; font-size: 1.6cqi; font-weight: 700; text-align: center; }
.lab-solution svg { flex: 1; min-height: 0; width: 100%; }

/* ---------- Mots mêlés ---------- */

#mm-reglages .enigmes-reglages__nb { max-width: 100%; min-width: 0; flex-wrap: wrap; }
#mm-reglages .champ-liste, #mm-reglages .champ-texte { max-width: 100%; min-width: 0; }
.mm-perso { margin-top: 12px; display: grid; gap: 6px; }
.mm-perso label { font-size: 0.9rem; color: var(--text); }
.mm-perso__mots { width: 100%; max-width: 30em; font-family: var(--corps); }
.mm-manques { margin: 0 0 14px; padding: 10px 14px; border-radius: 12px; background: #fdf3e3; color: var(--dark); font-size: 0.95rem; }
.mm-grille { display: block; width: 100%; height: auto; }
.mm-grille text { font: 700 6.2px 'Atkinson Hyperlegible', Arial, sans-serif; text-anchor: middle; dominant-baseline: central; fill: #1b1b1b; }
.mm-apercu { background: #fff; border-radius: 24px; padding: 22px; box-shadow: 0 16px 36px -22px rgba(19, 33, 60, 0.3); text-align: center; }
.mm-apercu__jeu { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: 24px; align-items: start; text-align: left; }
.mm-apercu__grille { width: 100%; max-width: 620px; margin: 0 auto; }
.mm-apercu__grille .mm-grille { max-height: 78vh; }
.mm-liste { list-style: none; margin: 0; padding: 0; columns: 2; column-gap: 18px; font-weight: 700; color: var(--dark); letter-spacing: 0.04em; }
.mm-liste li { break-inside: avoid; padding: 3px 0 3px 22px; position: relative; }
.mm-liste li::before { content: ''; position: absolute; left: 0; top: 0.55em; width: 12px; height: 12px; border: 2px solid #1b1b1b; border-radius: 3px; }
.mm-mystere { margin: 16px 0 6px; font-size: 0.95rem; }
.mm-mystere__cases { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; margin: 0; }
.mm-mystere__case { display: inline-block; width: 1.6em; height: 1.9em; border: 2px solid #1b1b1b; border-radius: 4px; background: #fff; }
.mm-mystere__sep { margin: 0 6px; font-weight: 700; color: var(--text-light); }
.mm-solution__mystere { margin: 0.8rem 0 0; font-weight: 700; color: var(--dark); }
@media (max-width: 760px) {
  .mm-apercu { padding: 14px; }
  .mm-apercu__jeu { grid-template-columns: 1fr; }
}

/* Feuilles : une grille par page, puis les solutions quatre par page */
.feuille--mm { display: flex; flex-direction: column; align-items: center; }
.mm-feuille__titre { font-family: var(--titre); font-weight: 800; font-size: 5cqi; color: var(--dark); text-align: center; margin: 0; line-height: 1.15; }
.mm-feuille__titre span { font-size: 2.4cqi; color: #888; font-weight: 700; }
.mm-feuille__consigne { font-size: 2.3cqi; text-align: center; margin: 0.8cqi 0 2.4cqi; }
.mm-feuille__grille { width: 84cqi; }
.feuille--mm-8 .mm-feuille__grille, .feuille--mm-10 .mm-feuille__grille, .feuille--mm-12 .mm-feuille__grille { width: 76cqi; }
.mm-feuille__mots { width: 100%; margin-top: 2.6cqi; flex: 1; min-height: 0; }
.mm-feuille__mots .mm-liste { columns: 4; column-gap: 2cqi; font-size: 2.2cqi; }
.feuille--mm-8 .mm-liste, .feuille--mm-10 .mm-liste, .feuille--mm-12 .mm-liste { columns: 3; font-size: 2.8cqi; }
.mm-feuille__mots .mm-liste li { padding: 0.5cqi 0 0.5cqi 3.2cqi; }
.mm-feuille__mots .mm-liste li::before { top: 0.9cqi; width: 1.8cqi; height: 1.8cqi; border-width: 0.25cqi; border-radius: 0.4cqi; }
.mm-feuille__mots .mm-mystere { font-size: 2cqi; margin: 2.4cqi 0 1cqi; }
.mm-feuille__mots .mm-mystere__cases { gap: 0.6cqi; }
.mm-feuille__mots .mm-mystere__case { width: 4.2cqi; height: 5cqi; border-width: 0.25cqi; border-radius: 0.6cqi; }
.mm-feuille__mots .mm-mystere__sep { font-size: 2cqi; margin: 0 1cqi; }
.mm-feuille__pied { margin: 1.6cqi 0 0; font-size: 1.4cqi; color: #888; text-align: center; }
.feuille--mm-solutions { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 3cqi; }
.mm-solution { display: flex; flex-direction: column; align-items: center; min-height: 0; border: 0.2cqi solid #ddd; border-radius: 1.6cqi; padding: 1.6cqi; }
.mm-solution p { margin: 0 0 1cqi; font-size: 1.6cqi; font-weight: 700; text-align: center; }
.mm-solution .mm-grille { width: 100%; }
.mm-solution .mm-solution__mystere { margin: 1cqi 0 0; font-size: 1.6cqi; }

/* ---------- Mots croisés ---------- */

#mc-reglages .enigmes-reglages__nb { max-width: 100%; min-width: 0; flex-wrap: wrap; }
#mc-reglages .champ-liste, #mc-reglages .champ-texte { max-width: 100%; min-width: 0; }
.mc-perso__mots { width: 100%; max-width: 40em; font-family: var(--corps); }
.mc-grille { display: block; width: 100%; height: auto; }
.mc-grille .mc-num { font: 700 2.6px 'Atkinson Hyperlegible', Arial, sans-serif; fill: #444; }
.mc-grille .mc-lettre { font: 700 6px 'Atkinson Hyperlegible', Arial, sans-serif; text-anchor: middle; dominant-baseline: central; fill: #1b1b1b; }
.mc-grille .mc-lettre--donnee { fill: #9a9a9a; }
.mc-apercu { background: #fff; border-radius: 24px; padding: 22px; box-shadow: 0 16px 36px -22px rgba(19, 33, 60, 0.3); text-align: center; }
.mc-apercu__jeu { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 28px; align-items: start; text-align: left; }
.mc-apercu__grille { width: 100%; max-width: 560px; margin: 0 auto; }
.mc-apercu__grille .mc-grille { max-height: 70vh; }
.mc-defs { display: grid; gap: 16px; }
.mc-defs__titre { margin: 0 0 6px; font-family: var(--titre); font-weight: 800; color: var(--dark); }
.mc-defs__liste { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.mc-defs__liste li { position: relative; padding-left: 1.9em; }
.mc-defs__liste b { position: absolute; left: 0; color: var(--primary); }
.mc-defs__liste small { color: var(--text-light); white-space: nowrap; }
@media (max-width: 760px) {
  .mc-apercu { padding: 14px; }
  .mc-apercu__jeu { grid-template-columns: 1fr; }
}

/* Feuilles : une grille par page, puis les solutions quatre par page */
.feuille--mc { display: flex; flex-direction: column; }
.mc-feuille__titre { font-family: var(--titre); font-weight: 800; font-size: 5cqi; color: var(--dark); text-align: center; margin: 0; line-height: 1.15; }
.mc-feuille__titre span { font-size: 2.4cqi; color: #888; font-weight: 700; }
.mc-feuille__consigne { font-size: 2.2cqi; text-align: center; margin: 0.8cqi 0 2cqi; }
.mc-feuille__grille { height: 74cqi; display: flex; justify-content: center; flex-shrink: 0; }
.feuille--mc-haute .mc-feuille__grille { height: 80cqi; }
.mc-feuille__grille .mc-grille { width: auto; height: 100%; max-width: 100%; }
.feuille--mc .mc-defs { grid-template-columns: 1fr 1fr; gap: 3cqi; margin-top: 2.4cqi; flex: 1; min-height: 0; font-size: 1.85cqi; line-height: 1.35; }
.feuille--mc .mc-defs__titre { font-size: 2.2cqi; margin-bottom: 0.8cqi; }
.feuille--mc .mc-defs__liste { gap: 0.7cqi; }
.mc-feuille__pied { margin: 1.4cqi 0 0; font-size: 1.4cqi; color: #888; text-align: center; }
.feuille--mc-solutions { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 3cqi; }
.mc-solution { display: flex; flex-direction: column; align-items: center; min-height: 0; border: 0.2cqi solid #ddd; border-radius: 1.6cqi; padding: 1.6cqi; }
.mc-solution p { margin: 0 0 1cqi; font-size: 1.6cqi; font-weight: 700; text-align: center; }
.mc-solution .mc-grille { flex: 1; min-height: 0; width: 100%; }

/* ---------- Bingo ----------
   Les tailles de texte suivent la largeur de la carte (cqi) : la même carte se lit à l'écran, sur mobile et sur papier. */

.bingo-apercu { max-width: 640px; margin: 0 auto; background: #fff; border-radius: 24px; padding: 22px; box-shadow: 0 16px 36px -22px rgba(19, 33, 60, 0.3); container-type: inline-size; }
.bingo-carte { display: flex; flex-direction: column; align-items: center; text-align: center; color: #1b1b1b; }
.bingo-carte__titre { font-family: var(--titre); font-weight: 800; font-size: clamp(1.2rem, 6cqi, 2rem); color: var(--dark); margin: 0; line-height: 1.15; }
.bingo-carte__prenom { margin: 0.3em 0 0; font-weight: 700; font-size: 0.95rem; }
.bingo-carte__prenom span { display: inline-block; width: 10em; border-bottom: 2px dotted #888; }
.bingo-carte__consigne { margin: 0.3em 0 0.8em; font-size: 0.95rem; color: var(--text); }
.bingo-grille { display: grid; width: 100%; border: 2.5px solid #1b1b1b; border-radius: 10px; overflow: hidden; }
.bingo-grille--3 { grid-template-columns: repeat(3, 1fr); font-size: 4.2cqi; }
.bingo-grille--4 { grid-template-columns: repeat(4, 1fr); font-size: 3.2cqi; }
.bingo-grille--5 { grid-template-columns: repeat(5, 1fr); font-size: 2.6cqi; }
.bingo-case { aspect-ratio: 1; min-width: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.2em; padding: 0.3em; border-right: 1.5px solid #1b1b1b; border-bottom: 1.5px solid #1b1b1b; background: #fff; cursor: pointer; position: relative; overflow: hidden; }
.bingo-grille--3 .bingo-case:nth-child(3n), .bingo-grille--4 .bingo-case:nth-child(4n), .bingo-grille--5 .bingo-case:nth-child(5n) { border-right: 0; }
.bingo-grille--3 .bingo-case:nth-last-child(-n+3), .bingo-grille--4 .bingo-case:nth-last-child(-n+4), .bingo-grille--5 .bingo-case:nth-last-child(-n+5) { border-bottom: 0; }
.bingo-case__picto { font-size: 2.3em; line-height: 1; }
.bingo-case__nom { font-weight: 700; font-size: 0.82em; line-height: 1.12; overflow-wrap: anywhere; hyphens: auto; }
.bingo-case--libre { background: #fff4d6; cursor: default; }
.bingo-case--cochee::after { content: ''; position: absolute; inset: 10%; border: 4px solid var(--primary); border-radius: 50%; opacity: 0.8; }
.bingo-carte--anniversaire .bingo-case { justify-content: flex-start; }
.bingo-carte--anniversaire .bingo-case__picto { font-size: 1.4em; }
.bingo-carte--anniversaire .bingo-grille--3 .bingo-case:not(.bingo-case--libre)::before,
.bingo-carte--anniversaire .bingo-grille--4 .bingo-case:not(.bingo-case--libre)::before { content: ''; position: absolute; left: 12%; right: 12%; bottom: 16%; border-bottom: 1.5px dotted #999; }
.bingo-carte__pied { margin: 0.6em 0 0; font-size: 0.75rem; color: #888; }
@media (max-width: 760px) { .bingo-apercu { padding: 12px; } }

/* Feuille : deux cartes par A4, à découper au pointillé */
.feuille--bingo { display: grid; grid-template-rows: 1fr 1fr; padding: 0; }
.feuille--bingo .bingo-carte { padding: 2.4cqi 4cqi 1.4cqi; min-height: 0; }
.feuille--bingo .bingo-carte + .bingo-carte { border-top: 0.3cqi dashed #999; }
.feuille--bingo .bingo-carte__titre { font-size: 4cqi; }
.feuille--bingo .bingo-carte__prenom { font-size: 2cqi; margin-top: 0.5cqi; }
.feuille--bingo .bingo-carte__consigne { font-size: 1.8cqi; margin: 0.5cqi 0 1.2cqi; }
.feuille--bingo .bingo-grille { flex: 1; min-height: 0; width: auto; aspect-ratio: 1; border-width: 0.45cqi; border-radius: 1.4cqi; }
.feuille--bingo .bingo-grille--3 { font-size: 2.7cqi; grid-template-rows: repeat(3, 1fr); }
.feuille--bingo .bingo-grille--4 { font-size: 2.05cqi; grid-template-rows: repeat(4, 1fr); }
.feuille--bingo .bingo-grille--5 { font-size: 1.62cqi; grid-template-rows: repeat(5, 1fr); }
.feuille--bingo .bingo-case { aspect-ratio: auto; min-height: 0; border-right-width: 0.25cqi; border-bottom-width: 0.25cqi; }
.feuille--bingo .bingo-carte__pied { font-size: 1.3cqi; margin-top: 0.8cqi; }

/* Jeu à l'écran */
.mode-jeu { position: fixed; inset: 0; z-index: 50; background: rgba(19, 33, 60, 0.72); display: grid; place-items: center; padding: 16px; }
.mode-jeu__carte { position: relative; width: min(640px, 100%); background: var(--bg); border-radius: 28px; padding: 34px 30px 28px; text-align: center; box-shadow: 0 30px 60px -20px rgba(0, 0, 0, 0.5); }
.mode-jeu__fermer { position: absolute; top: 12px; right: 14px; width: 40px; height: 40px; border-radius: 50%; border: 0; background: #fff; font-size: 1.6rem; line-height: 1; cursor: pointer; color: var(--dark); }
.mode-jeu__compteur { margin: 0 0 0.8rem; font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--primary); font-weight: 700; }
.mode-jeu__texte { margin: 0 0 1rem; font-family: var(--titre); font-weight: 700; font-size: clamp(1.3rem, 3.4vw, 1.8rem); line-height: 1.3; color: var(--dark); }
.mode-jeu__indice { margin: 0 0 0.8rem; color: var(--bleu); font-weight: 700; }
.mode-jeu__reponse { margin: 0 0 1rem; font-family: var(--main); font-size: 2rem; color: var(--primary); line-height: 1.2; }
.mode-jeu__boutons { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin-top: 0.6rem; }
body.jeu-ouvert { overflow: hidden; }

/* Feuilles imprimées : 8 cartes, ou une fiche */
.feuille--devinettes { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: repeat(4, 1fr); gap: 2cqi; }
.carte-devinette { border: 0.25cqi dashed #9a9a9a; border-radius: 1.6cqi; padding: 2cqi 2.4cqi; display: flex; flex-direction: column; min-height: 0; }
.carte-devinette__tete { margin: 0 0 1cqi; font-family: var(--titre); font-weight: 800; font-size: 1.9cqi; color: var(--dark); border-bottom: 0.25cqi solid var(--jaune); padding-bottom: 0.5cqi; }
.carte-devinette__texte { margin: 0; font-size: 2cqi; line-height: 1.45; }
.carte-devinette__reponse { margin: auto 0 0; padding-top: 1cqi; font-size: 1.4cqi; color: #777; transform: rotate(180deg); text-align: center; font-style: italic; }
.feuille--fiche { display: flex; flex-direction: column; }
.fiche__bandeau { margin: 0 0 1cqi; font-size: 1.2cqi; text-transform: uppercase; letter-spacing: 0.12em; color: var(--primary); font-weight: 700; }
.fiche__titre { font-family: var(--titre); font-weight: 800; font-size: 4cqi; margin: 0 0 1cqi; color: var(--dark); }
.fiche__nom { margin: 0 0 2cqi; font-size: 1.8cqi; }
.fiche__nom span, .fiche__ligne span { display: inline-block; width: 50cqi; border-bottom: 0.15cqi dotted #888; }
.fiche__liste { margin: 0; padding-left: 4cqi; font-size: 2cqi; line-height: 1.5; }
.fiche__liste li { margin-bottom: 3cqi; }
.fiche__liste p { margin: 0; }
.fiche__ligne { margin-top: 1.4cqi !important; color: #555; font-size: 1.7cqi; }
.fiche__reponses { margin: 0; padding-left: 4cqi; font-size: 1.8cqi; line-height: 1.6; }
.fiche__reponses span { color: #777; font-size: 1.5cqi; }
@media (max-width: 700px) {
  .devinette { grid-template-columns: auto minmax(0, 1fr); }
  .devinette__theme { display: none; }
  .enigmes-reglages { padding: 16px; }
}

/* ---------- Codes secrets ---------- */

.codes-atelier { background: var(--bg-alt); padding: 2.2rem 0 2.6rem; border-radius: 48px 48px 0 0; }
.codes-atelier__grille { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 24px; align-items: stretch; }
.codes-reglages { background: #fff; border-radius: 24px; padding: 20px 22px; box-shadow: 0 16px 36px -22px rgba(19, 33, 60, 0.3); display: grid; gap: 14px; align-content: start; }
.codes-reglages__label { font-family: var(--titre); font-weight: 700; color: var(--dark); }
.codes-message { font-size: 1.1rem; min-height: 90px; }
.codes-reglages__decalage { display: inline-flex; align-items: center; gap: 10px; font-family: var(--titre); font-weight: 700; color: var(--dark); }
.codes-reglages__decalage select { width: auto; }
.codes-mode span { font-family: var(--titre); font-weight: 700; font-size: 1rem; }
.pastilles-choix input:disabled + span { opacity: 0.35; cursor: not-allowed; }
.codes-sortie { background: var(--dark); color: #fff; border-radius: 24px; padding: 20px 22px; display: flex; flex-direction: column; gap: 14px; box-shadow: 0 16px 36px -22px rgba(19, 33, 60, 0.5); }
.codes-sortie__titre { margin: 0; font-family: var(--titre); font-weight: 700; color: var(--jaune); }
.codes-resultat { flex: 1; min-height: 120px; font-family: var(--code); font-weight: 700; font-size: 1.45rem; line-height: 1.5; letter-spacing: 0.06em; word-break: break-word; color: #fff; }
.codes-resultat__vide { font-family: var(--corps); font-weight: 400; font-size: 1rem; color: #aab3c5; letter-spacing: 0; }
.codes-sortie__boutons { display: flex; flex-wrap: wrap; gap: 10px; }
.codes-sortie .bouton-contour { background: transparent; color: #fff; border-color: #fff; }
.codes-sortie .bouton-contour:hover { background: #fff; color: var(--dark); }
.ecriture-miroir { display: inline-block; transform: scaleX(-1); }
.mot-code { white-space: nowrap; }
.message-imprime .message-templier { justify-content: center; }
.message-templier { display: inline-flex; flex-wrap: wrap; gap: 0.2em 1.1em; vertical-align: middle; }
.message-templier__mot { display: inline-flex; gap: 0.2em; }
.templier { display: inline-block; vertical-align: middle; }
.code-exemple { font-family: var(--code); letter-spacing: 0.05em; color: var(--dark); background: var(--jaune-pale); padding: 0 0.3em; border-radius: 4px; }
.code-exemple-dessin { font-size: 1rem; color: var(--dark); }
.table-code { width: 100%; border-collapse: collapse; table-layout: fixed; margin: 0.4rem 0 1.4rem; background: #fff; border-radius: 12px; overflow: hidden; }
.table-code td { border: 1px solid var(--border); text-align: center; padding: 4px 0; font-family: var(--code); font-size: 0.85rem; line-height: 1.3; color: var(--text); word-break: break-all; }
.table-code td b { display: block; font-family: var(--titre); font-size: 1rem; color: var(--primary); }
@media (max-width: 860px) {
  .codes-atelier__grille { grid-template-columns: minmax(0, 1fr); }
  .table-code td { font-size: 0.7rem; padding: 3px 0; }
  .table-code td b { font-size: 0.85rem; }
  .table-code .templier { width: 16px; height: 16px; }
}

/* Feuilles imprimées : carnet d'espion et message secret */
.feuille--carnet .table-code { margin: 0.4cqi 0 1.6cqi; border-radius: 0; }
.feuille--carnet .table-code td { font-size: 1.35cqi; padding: 0.35cqi 0; border-color: #999; }
.feuille--carnet .table-code td b { font-size: 1.6cqi; }
.feuille--carnet .templier { width: 2.4cqi; height: 2.4cqi; }
.carnet-espion__nom { margin: 0 0 1.4cqi; font-size: 1.8cqi; }
.carnet-espion__nom span { display: inline-block; width: 50cqi; border-bottom: 0.15cqi dotted #888; }
.carnet-espion__code { margin: 1cqi 0 0.4cqi; font-family: var(--titre); font-weight: 800; font-size: 2.1cqi; color: var(--dark); }
.carnet-espion__note { margin: 0; font-size: 1.4cqi; color: #666; font-style: italic; }
.feuille--message { display: flex; flex-direction: column; }
.message-imprime { flex: 1; display: flex; align-items: center; justify-content: center; text-align: center; font-family: var(--code); font-weight: 700; font-size: 5cqi; line-height: 1.6; letter-spacing: 0.08em; word-break: break-word; border: 0.4cqi dashed #999; border-radius: 2cqi; padding: 4cqi; margin: 2cqi 0; }
.message-imprime .templier { width: 6cqi; height: 6cqi; }
.message-imprime__indice { margin: 0; font-size: 1.8cqi; color: #555; text-align: center; }

/* ---------- Rallye photo ---------- */

.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.rallye-equipes input { width: 260px; }
.defis-photo { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; counter-reset: defi; }
.defi-photo { counter-increment: defi; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 12px; align-items: center; background: #fff; border-radius: 16px; padding: 12px 16px; box-shadow: 0 6px 16px -12px var(--shadow); }
.defi-photo__case { width: 26px; height: 26px; border: 2.5px solid var(--dark); border-radius: 7px; position: relative; }
.defi-photo__case::after { content: counter(defi); position: absolute; inset: 0; display: grid; place-items: center; font-family: var(--titre); font-weight: 800; font-size: 0.8rem; color: var(--dark); }
.defi-photo__texte { font-size: 1rem; line-height: 1.45; color: var(--dark); }
.defi-photo__points { color: var(--jaune); font-size: 1.05rem; letter-spacing: 0.05em; white-space: nowrap; }
@media (max-width: 760px) { .defis-photo { grid-template-columns: minmax(0, 1fr); } .rallye-equipes input { width: 100%; } }

.feuille--rallye { display: flex; flex-direction: column; }
.rallye-feuille__equipe { margin: 0 0 1cqi; font-size: 2.2cqi; }
.rallye-feuille__regles { margin: 0 0 2cqi; font-size: 1.5cqi; color: #555; line-height: 1.5; }
.rallye-feuille__blanc { display: inline-block; width: 40cqi; border-bottom: 0.15cqi dotted #888; }
.rallye-feuille__blanc--court { width: 12cqi; }
.rallye-feuille__liste { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.2cqi; counter-reset: defi; }
.rallye-feuille__liste--deux { grid-template-columns: 1fr 1fr; column-gap: 3cqi; }
.rallye-feuille__liste li { counter-increment: defi; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 1.4cqi; align-items: center; border-bottom: 0.1cqi solid #ddd; padding-bottom: 1cqi; font-size: 1.75cqi; line-height: 1.4; }
.rallye-feuille__liste--deux li { font-size: 1.5cqi; }
.rallye-feuille__case { width: 3cqi; height: 3cqi; border: 0.3cqi solid #1b1b1b; border-radius: 0.6cqi; position: relative; }
.rallye-feuille__case::after { content: counter(defi); position: absolute; inset: 0; display: grid; place-items: center; font-size: 1.3cqi; font-weight: 700; color: #999; }
.rallye-feuille__points { color: #c98a00; white-space: nowrap; }
.rallye-feuille__total { margin: auto 0 0; padding-top: 2cqi; font-family: var(--titre); font-weight: 800; font-size: 2.4cqi; text-align: right; color: var(--dark); }

/* ---------- Olympiades d'anniversaire ---------- */

.olymp-liste { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; counter-reset: epreuve; }
.olymp-epreuve { counter-increment: epreuve; background: #fff; border-radius: 16px; padding: 16px 18px; box-shadow: 0 6px 16px -12px var(--shadow); color: var(--dark); min-width: 0; }
.olymp-epreuve__titre { margin: 0 0 8px; font-family: var(--titre); font-weight: 800; font-size: 1.1rem; display: flex; align-items: center; gap: 8px; }
.olymp-epreuve__titre::before { content: counter(epreuve); display: inline-grid; place-items: center; width: 26px; height: 26px; flex: none; border-radius: 50%; background: var(--primary); color: #fff; font-size: 0.8rem; }
.olymp-epreuve__regle { margin: 0 0 8px; font-size: 0.97rem; line-height: 1.5; }
.olymp-epreuve__gagne { margin: 0 0 10px; font-size: 0.92rem; line-height: 1.45; color: var(--text-light); }
.olymp-epreuve__materiel { list-style: none; margin: 0; padding: 8px 0 0; border-top: 1px dashed var(--border); display: flex; flex-wrap: wrap; gap: 6px; }
.olymp-epreuve__materiel li { font-size: 0.82rem; background: #fdf3e3; border-radius: 999px; padding: 3px 10px; }
@media (max-width: 760px) { .olymp-liste { grid-template-columns: minmax(0, 1fr); } }

.olymp-feuille__note { margin: 0 0 2cqi; font-size: 1.55cqi; color: #555; line-height: 1.5; }
.olymp-feuille__materiel { columns: 2; column-gap: 4cqi; }
.olymp-feuille__bloc { break-inside: avoid; margin: 0 0 2cqi; }
.olymp-feuille__epreuve { margin: 0 0 0.6cqi; font-family: var(--titre); font-weight: 800; font-size: 1.9cqi; color: var(--dark); }
.olymp-feuille__bloc ul { list-style: none; margin: 0; padding: 0; font-size: 1.6cqi; line-height: 1.45; }
.olymp-feuille__bloc li { display: flex; align-items: flex-start; gap: 1cqi; margin-bottom: 0.4cqi; }
.olymp-feuille__case { width: 1.8cqi; height: 1.8cqi; flex: none; margin-top: 0.2cqi; border: 0.25cqi solid #1b1b1b; border-radius: 0.4cqi; }
.olymp-carte .carte-enigme__texte { font-size: 2.5cqi; line-height: 1.5; }
.olymp-carte__materiel { margin: 2cqi 0 0; font-size: 1.9cqi; line-height: 1.45; color: #444; background: #fdf3e3; border-radius: 1cqi; padding: 1.2cqi 1.6cqi; }
.olymp-diplome__score { display: flex; justify-content: center; gap: 5cqi; margin: 1.6cqi 0 0; font-size: 1.9cqi; }
.olymp-carte__gagne { margin: auto 0 0; padding-top: 1.2cqi; font-size: 2.1cqi; line-height: 1.45; border-top: 0.15cqi dashed #bbb; }
.olymp-scores { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: 1.7cqi; }
.olymp-scores th { font-size: 1.5cqi; text-align: center; border-bottom: 0.25cqi solid #1b1b1b; padding: 0.8cqi; overflow-wrap: anywhere; }
.olymp-scores th:first-child { width: 36%; text-align: left; }
.olymp-scores td { border: 0.12cqi solid #bbb; height: 5.6cqi; padding: 0 1cqi; }
.olymp-scores tr td:first-child { border-left: 0; }
.olymp-scores__total td { border-top: 0.3cqi solid #1b1b1b; font-family: var(--titre); font-weight: 800; font-size: 2.2cqi; height: 7cqi; }

/* ---------- Anniversaire espion ---------- */

.espion-champ input { width: 230px; }
.espion-champ--large input { width: 340px; }
@media (max-width: 760px) {
  .espion-champ { flex-wrap: wrap; width: 100%; }
  .espion-champ input, .espion-champ--large input { width: 100%; }
}
.espion-agents { list-style: none; margin: 16px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.espion-agents:empty { display: none; }
.espion-agents li { background: var(--dark); color: #fff; border-radius: 999px; padding: 5px 14px; font-size: 0.9rem; }
.espion-agent__nom { font-family: var(--titre); font-weight: 800; color: var(--jaune); }
.espion-agents li.espion-agents__vide { background: none; color: var(--text-light); padding: 0; }
.espion-apercu { margin: 18px 0 0; background: #fff; border-radius: 16px; padding: 16px 20px; box-shadow: 0 6px 16px -12px var(--shadow); border-left: 6px solid var(--dark); }
.espion-apercu__titre { margin: 0 0 6px; font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.1em; font-weight: 700; color: var(--primary); }
.espion-message { margin: 0; font-family: var(--code); font-weight: 700; font-size: 1.35rem; line-height: 1.6; color: var(--dark); overflow-wrap: anywhere; }
.espion-message__mot { display: inline-block; }
.espion-message--morse { font-size: 1.15rem; letter-spacing: 0.06em; }

.espion-ordre { position: relative; }
.espion-ordre__tampon { position: absolute; top: 5cqi; right: 5cqi; margin: 0; transform: rotate(-8deg); border: 0.5cqi solid #c62828; color: #c62828; border-radius: 1cqi; padding: 0.6cqi 2cqi; font-family: var(--titre); font-weight: 800; font-size: 2.6cqi; text-transform: uppercase; letter-spacing: 0.12em; opacity: 0.85; }
.espion-ordre__texte { margin: 0 0 2.4cqi; font-size: 2.6cqi; line-height: 1.6; }
.espion-ordre__sous-titre { margin: 3.4cqi 0 1.2cqi; font-family: var(--titre); font-weight: 800; font-size: 3cqi; color: var(--dark); }
.espion-ordre__liste { margin: 0; padding-left: 4cqi; font-size: 2.5cqi; line-height: 1.8; columns: 2; column-gap: 4cqi; }
.espion-ordre__serment { margin: 0; padding: 2cqi 2.6cqi 2cqi 6cqi; font-size: 2.3cqi; line-height: 1.7; background: #f3f5fa; border-left: 0.6cqi solid var(--dark); border-radius: 0 1cqi 1cqi 0; }
.espion-ordre__agents { margin: 0; font-size: 2.4cqi; line-height: 1.7; }
.espion-ordre__signature { margin: auto 0 0; text-align: right; font-family: var(--main); font-size: 3cqi; }
.espion-ordre__note { margin: 1.4cqi 0 0; font-size: 1.4cqi; color: #777; font-style: italic; text-align: right; }

.feuille--agents { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: repeat(4, 1fr); gap: 2.2cqi; }
.carte-agent { border: 0.3cqi solid #1b1b1b; border-radius: 1.6cqi; overflow: hidden; display: flex; flex-direction: column; min-height: 0; }
.carte-agent__entete { margin: 0; background: var(--dark); color: #fff; display: flex; justify-content: space-between; align-items: center; padding: 1cqi 2cqi; font-family: var(--titre); font-weight: 800; font-size: 1.8cqi; text-transform: uppercase; letter-spacing: 0.1em; }
.carte-agent__corps { flex: 1; display: grid; grid-template-columns: 12.5cqi minmax(0, 1fr) 8.5cqi; gap: 1.8cqi; padding: 1.8cqi 2cqi; align-items: center; }
.carte-agent__photo, .carte-agent__empreinte { border: 0.2cqi dashed #999; border-radius: 1cqi; display: grid; place-items: center; text-align: center; font-size: 1.3cqi; color: #999; line-height: 1.3; }
.carte-agent__photo { height: 17cqi; }
.carte-agent__empreinte { height: 11.5cqi; border-radius: 50% / 40%; }
.carte-agent__nom { margin: 0 0 1.2cqi; font-family: var(--titre); font-weight: 800; font-size: 3cqi; line-height: 1.15; color: var(--primary); }
.carte-agent__ligne { margin: 0 0 0.6cqi; font-size: 1.75cqi; color: #555; }
.carte-agent__ligne b { color: #1b1b1b; }
.carte-agent__blanc { display: inline-block; width: 12cqi; border-bottom: 0.15cqi dotted #888; height: 1.6cqi; vertical-align: bottom; }
.carte-agent__blanc--court { width: 6cqi; }
.carte-agent__nom .carte-agent__blanc { width: 9cqi; }

.espion-pieces { display: grid; grid-template-columns: 1fr 1fr; gap: 2.4cqi; margin-top: 1cqi; }
.espion-piece { border: 0.25cqi dashed #9a9a9a; border-radius: 1.2cqi; padding: 1.8cqi; }
.espion-piece__num { margin: 0 0 1cqi; font-family: var(--titre); font-weight: 800; font-size: 1.7cqi; color: var(--dark); }
.espion-piece__table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.espion-piece__table td { border: 0.15cqi solid #1b1b1b; text-align: center; padding: 1cqi 0.2cqi; vertical-align: top; }
.espion-piece__table b { display: block; font-family: var(--titre); font-size: 3.2cqi; border-bottom: 0.12cqi solid #ccc; padding-bottom: 0.4cqi; margin-bottom: 0.4cqi; }
.espion-piece__table span { display: block; font-family: var(--code); font-weight: 700; font-size: 2.6cqi; line-height: 1.2; overflow-wrap: anywhere; }

.espion-feuille-message { position: relative; }
.espion-message-imprime { flex: 1; display: flex; align-items: center; justify-content: center; text-align: center; border: 0.4cqi dashed #999; border-radius: 2cqi; padding: 4cqi; margin: 2cqi 0; }
.espion-message-imprime .espion-message { font-size: 5.4cqi; line-height: 1.7; letter-spacing: 0.08em; }
.espion-message-imprime .espion-message--nombres { font-size: 4.4cqi; }
.espion-message-imprime .espion-message--morse { font-size: 3.6cqi; letter-spacing: 0.12em; }
.espion-message-imprime .espion-message__mot { margin: 0 1.2cqi; }
.espion-message-imprime .espion-message__sep { color: #bbb; }

/* ---------- Murder party ---------- */

.murder-noscript, .murder-aide { margin: 0 0 10px; font-size: 0.92rem; color: var(--text-light); line-height: 1.5; }
.murder-numero { width: 90px; }
.murder-distribution { width: 100%; border-collapse: collapse; }
.murder-distribution td { padding: 6px 8px; border-bottom: 1px solid var(--border); vertical-align: middle; }
.murder-distribution td:first-child { width: 50%; }
.murder-distribution b { font-family: var(--titre); color: var(--dark); }
.murder-distribution small { display: block; font-size: 0.8rem; color: var(--text-light); }
.murder-distribution select { width: auto; }
@media (max-width: 760px) {
  .murder-distribution tr { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 6px; padding: 8px 0; border-bottom: 1px solid var(--border); }
  .murder-distribution td { border: 0; padding: 0; }
  .murder-distribution td:first-child { grid-column: 1 / -1; width: auto; }
}

.murder-galerie { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin: 1rem 0 1.6rem; }
.murder-perso { background: #fff; border-radius: 16px; padding: 16px 18px; box-shadow: 0 6px 16px -12px var(--shadow); color: var(--dark); min-width: 0; }
.murder-perso__picto { margin: 0; font-size: 2rem; line-height: 1.2; }
.murder-perso__nom { margin: 4px 0 2px; font-family: var(--titre); font-size: 1.1rem; line-height: 1.25; }
.murder-perso__nom span { display: block; font-weight: 600; font-size: 0.85rem; color: var(--text-light); }
.murder-perso__des { margin: 0 0 8px; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 700; color: var(--primary); }
.murder-perso__fiche, .murder-perso__costume { margin: 0 0 8px; font-size: 0.92rem; line-height: 1.5; }
.murder-perso__signes { list-style: none; margin: 0; padding: 8px 0 0; border-top: 1px dashed var(--border); display: flex; flex-wrap: wrap; gap: 5px; }
.murder-perso__signes li { font-size: 0.78rem; background: #f3f5fa; border-radius: 999px; padding: 2px 9px; }
@media (max-width: 1000px) { .murder-galerie { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .murder-galerie { grid-template-columns: minmax(0, 1fr); } }

/* Invitations, 4 par feuille */
.feuille--invitations { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 2.4cqi; }
.invitation-murder { border: 0.25cqi dashed #9a9a9a; border-radius: 1.6cqi; padding: 2.6cqi; display: flex; flex-direction: column; min-height: 0; background: #fbf8f1; }
.invitation-murder__bandeau { margin: 0; font-size: 1.25cqi; text-transform: uppercase; letter-spacing: 0.12em; font-weight: 700; color: var(--primary); }
.invitation-murder__titre { margin: 0.6cqi 0 1.2cqi; font-family: var(--titre); font-weight: 800; font-size: 2.9cqi; line-height: 1.15; color: var(--dark); }
.invitation-murder__texte { margin: 0 0 1.4cqi; font-size: 1.9cqi; line-height: 1.45; }
.invitation-murder__ligne { margin: 0 0 0.8cqi; font-size: 1.85cqi; display: flex; gap: 1cqi; align-items: baseline; }
.invitation-murder__ligne span { font-weight: 700; min-width: 6cqi; }
.invitation-murder__ligne i { flex: 1; border-bottom: 0.15cqi dotted #888; height: 2cqi; }
.invitation-murder__role { margin: 1.4cqi 0 0; font-size: 1.2cqi; text-transform: uppercase; letter-spacing: 0.12em; font-weight: 700; color: #777; }
.invitation-murder__nom { margin: 0.2cqi 0 0.8cqi; font-family: var(--titre); font-weight: 800; font-size: 2.8cqi; color: var(--primary); line-height: 1.15; }
.invitation-murder__qui, .invitation-murder__costume { margin: 0 0 1cqi; font-size: 1.68cqi; line-height: 1.5; }
.invitation-murder__pied { margin: auto 0 0; font-family: var(--main); font-size: 1.9cqi; color: var(--dark); }

/* Guide de l'organisateur */
.murder-guide__coupable { margin: 0 0 1.8cqi; padding: 1.6cqi 2.2cqi; background: #fde8e4; border-left: 0.6cqi solid #c62828; border-radius: 0 1cqi 1cqi 0; font-size: 2.1cqi; }
.murder-guide__liste, .murder-guide__deroule, .murder-guide__regles { margin: 0; padding-left: 3.6cqi; font-size: 1.85cqi; line-height: 1.55; }
.murder-guide__liste li, .murder-guide__deroule li, .murder-guide__regles li { margin-bottom: 0.8cqi; }
.murder-guide .orga-histoire { margin: 0 0 1.4cqi; font-size: 2cqi; line-height: 1.6; }
.murder-guide .orga-note { font-size: 1.9cqi; line-height: 1.55; }
.murder-guide__sans { background: #eee; }
.murder-guide__points td small { display: block; color: #777; font-size: 1.3cqi; }
.murder-guide__solution { background: #fde8e4; border-left-color: #c62828; font-style: normal; }
.murder-guide .orga-parcours { font-size: 1.35cqi; margin-bottom: 0.6cqi; }
.murder-guide .orga-parcours td { padding: 0.45cqi 0.8cqi; }
.murder-guide__emplois small { display: block; color: #c62828; font-size: 1.15cqi; }
.murder-guide__voleur td { background: #fde8e4; font-weight: 700; }
.murder-guide .murder-guide__points { font-size: 1.8cqi; }
.murder-guide .murder-guide__points td { height: 7.5cqi; padding: 0.6cqi 1cqi; border-right: 0.1cqi solid #ccc; }

/* Livret secret, une page par joueur */
.livret { display: flex; flex-direction: column; }
.livret__nom { margin: 0.4cqi 0 0; font-family: var(--titre); font-weight: 800; font-size: 4.8cqi; line-height: 1.1; color: var(--dark); }
.livret__role { margin: 0.4cqi 0 2cqi; font-size: 2.2cqi; color: var(--primary); font-weight: 700; }
.livret__grille { display: grid; grid-template-columns: 1fr 1fr; gap: 3cqi; }
.livret__titre { margin: 2.2cqi 0 0.8cqi; font-family: var(--titre); font-weight: 800; font-size: 2.4cqi; color: var(--dark); border-bottom: 0.25cqi solid var(--jaune); padding-bottom: 0.3cqi; }
.livret__grille > div > .livret__titre:first-child { margin-top: 0; }
.livret__texte { margin: 0; font-size: 1.95cqi; line-height: 1.55; }
.livret__liste { margin: 0; padding-left: 2.8cqi; font-size: 1.85cqi; line-height: 1.5; }
.livret__liste li { margin-bottom: 0.9cqi; }
.livret__emploi { margin: 0; font-size: 1.85cqi; line-height: 1.5; display: grid; grid-template-columns: auto 1fr; gap: 0.6cqi 1.4cqi; }
.livret__emploi dt { font-weight: 800; color: var(--primary); white-space: nowrap; }
.livret__emploi dd { margin: 0; }
.livret__signes { list-style: none; margin: 0; padding: 0; font-size: 1.8cqi; line-height: 1.6; columns: 2; }
.livret__signes span, .badge-murder__signes span { color: #777; }
.livret__notes { flex: 1; min-height: 6cqi; margin: 2.4cqi 0; border: 0.2cqi dashed #bbb; border-radius: 1cqi; padding: 1cqi 1.6cqi; }
.livret__notes p { margin: 0; font-size: 1.3cqi; color: #999; text-transform: uppercase; letter-spacing: 0.1em; }
.livret__verite { margin-top: 0; padding: 2cqi 2.6cqi; background: #f3f5fa; border-left: 0.6cqi solid var(--dark); border-radius: 0 1cqi 1cqi 0; font-size: 1.85cqi; line-height: 1.55; }
.livret__verite p { margin: 0 0 0.6cqi; }
.livret__verite p:last-child { margin-bottom: 0; }
.livret__verite-titre { font-family: var(--titre); font-weight: 800; font-size: 2.8cqi; color: var(--dark); }
.livret__verite--voleur { background: #fde8e4; border-left-color: #c62828; }
.livret__verite--voleur .livret__verite-titre { color: #c62828; }

/* Badges, 8 par feuille */
.feuille--badges { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: repeat(4, 1fr); gap: 2.2cqi; }
.badge-murder { border: 0.3cqi solid #1b1b1b; border-radius: 1.6cqi; padding: 1.8cqi 2.2cqi; display: flex; flex-direction: column; min-height: 0; }
.badge-murder__entete { margin: 0; font-size: 1.4cqi; text-transform: uppercase; letter-spacing: 0.12em; font-weight: 700; color: #777; }
.badge-murder__nom { margin: auto 0 0.4cqi; font-family: var(--titre); font-weight: 800; font-size: 3.4cqi; line-height: 1.15; color: var(--dark); }
.badge-murder__role { margin: 0 0 1.4cqi; font-size: 1.8cqi; color: var(--primary); font-weight: 700; }
.badge-murder__signes { list-style: none; margin: auto 0 0; padding: 1.2cqi 0 0; border-top: 0.15cqi dashed #bbb; font-size: 1.8cqi; line-height: 1.55; columns: 2; column-gap: 2cqi; }

/* Cartes d'indices */
.murder-indice .carte-indice__texte { font-size: 2.6cqi; line-height: 1.55; font-weight: 400; }

/* Carnet d'enquête */
.carnet-murder { display: flex; flex-direction: column; }
.carnet-murder__consigne { margin: 0 0 1.6cqi; font-size: 1.55cqi; color: #555; line-height: 1.5; }
.carnet-murder__table { width: 100%; border-collapse: collapse; font-size: 1.5cqi; }
.carnet-murder__table th { text-align: left; font-size: 1.15cqi; text-transform: uppercase; letter-spacing: 0.05em; color: #666; border-bottom: 0.25cqi solid #1b1b1b; padding: 0.5cqi 0.6cqi; }
.carnet-murder__table td { border-bottom: 0.1cqi solid #ccc; padding: 1cqi 0.6cqi; vertical-align: middle; }
.carnet-murder__table td:first-child { font-weight: 700; }
.carnet-murder__table td:last-child { width: 18%; border-left: 0.1cqi solid #ccc; }
.carnet-murder__notes { flex: 1; margin: 2cqi 0; border: 0.2cqi dashed #bbb; border-radius: 1cqi; padding: 1cqi 1.6cqi; min-height: 10cqi; }
.carnet-murder__notes p { margin: 0; font-size: 1.3cqi; color: #999; text-transform: uppercase; letter-spacing: 0.1em; }
.carnet-murder__accusation { border: 0.3cqi solid #c62828; border-radius: 1.2cqi; padding: 1.6cqi 2cqi; font-size: 1.7cqi; }
.carnet-murder__accusation p { margin: 0 0 1.2cqi; display: flex; gap: 1cqi; align-items: baseline; }
.carnet-murder__accusation p:last-child { margin: 0; }
.carnet-murder__blanc { display: inline-block; flex: 1; border-bottom: 0.15cqi dotted #888; height: 2.2cqi; }

/* ---------- Chasse aux œufs de Pâques ---------- */

.paques-enfants { list-style: none; margin: 0 0 10px; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 16px; }
.paques-enfant { display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto; gap: 8px; align-items: center; }
.paques-enfant__pastille { width: 22px; height: 22px; border-radius: 50%; border: 2px solid rgba(0, 0, 0, 0.15); }
.paques-enfant select { width: auto; }
.paques-enfant__retirer { border: 0; background: none; font-size: 1rem; color: var(--text-light); cursor: pointer; padding: 6px; border-radius: 8px; }
.paques-enfant__retirer:hover:not(:disabled) { background: var(--bg-alt); color: var(--dark); }
.paques-enfant__retirer:disabled { opacity: 0.3; cursor: default; }
.paques-ajouter:disabled { opacity: 0.5; cursor: default; }
@media (max-width: 760px) { .paques-enfants { grid-template-columns: minmax(0, 1fr); } }

.paques-plan { margin-top: 16px; }
.paques-plan__aide { margin: 0 0 10px; font-size: 0.9rem; color: var(--text-light); }
.paques-plan .paques-blocs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.paques-plan .paques-bloc { background: #fff; border-radius: 16px; padding: 14px 16px; box-shadow: 0 6px 16px -12px var(--shadow); min-width: 0; }
.paques-plan .paques-bloc__titre { margin: 0 0 8px; font-family: var(--titre); font-weight: 800; color: var(--dark); display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; }
.paques-plan .paques-bloc__titre small { width: 100%; font-family: var(--corps); font-weight: 400; font-size: 0.8rem; color: var(--text-light); }
.paques-bloc__couleur { display: inline-block; width: 16px; height: 16px; border-radius: 50%; vertical-align: middle; margin-right: 4px; border: 1px solid rgba(0, 0, 0, 0.15); }
.paques-plan .paques-bloc ul { list-style: none; margin: 0; padding: 0; font-size: 0.9rem; line-height: 1.45; }
.paques-plan .paques-bloc li { display: flex; gap: 6px; align-items: baseline; margin-bottom: 4px; }
.paques-plan .paques-case { display: none; }
.paques-plan .paques-bloc li b { color: var(--primary); min-width: 1.2em; }
@media (max-width: 1000px) { .paques-plan .paques-blocs { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .paques-plan .paques-blocs { grid-template-columns: minmax(0, 1fr); } }

.defile { overflow-x: auto; max-width: 100%; }
.paques-dates { border-collapse: collapse; background: #fff; border-radius: 14px; overflow: hidden; box-shadow: 0 6px 16px -12px var(--shadow); margin: 0.4rem 0 1.4rem; min-width: 100%; }
.paques-dates th, .paques-dates td { padding: 9px 16px; text-align: left; border-bottom: 1px solid var(--border); font-size: 0.95rem; }
.paques-dates thead th { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--text-light); }
.paques-dates tbody th { font-family: var(--titre); color: var(--primary); }
.paques-dates tbody tr:first-child td { font-weight: 700; color: var(--dark); }
.paques-idees { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin: 0.6rem 0 1.4rem; }
.paques-idees__niveau { background: #fff; border-radius: 16px; padding: 14px 18px; box-shadow: 0 6px 16px -12px var(--shadow); }
.paques-idees__titre { margin: 0 0 6px; font-family: var(--titre); font-weight: 800; color: var(--dark); }
.paques-idees__titre span { display: block; font-family: var(--corps); font-weight: 700; font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--primary); }
.paques-idees ul { margin: 0; padding-left: 1.1rem; font-size: 0.92rem; line-height: 1.55; }
@media (max-width: 860px) { .paques-idees { grid-template-columns: minmax(0, 1fr); } }

/* Plan et liste de contrôle imprimés */
.paques-orga__liste { margin: 0; padding-left: 3.6cqi; font-size: 1.7cqi; line-height: 1.55; }
.paques-orga__liste li { margin-bottom: 0.6cqi; }
.paques-orga .orga-parcours { font-size: 1.6cqi; }
.paques-orga .orga-note { font-size: 1.7cqi; line-height: 1.55; }
.feuille .paques-blocs { display: grid; grid-template-columns: 1fr 1fr; gap: 2.4cqi 3cqi; margin-top: 1.4cqi; }
.feuille .paques-bloc { break-inside: avoid; border: 0.2cqi solid #ddd; border-radius: 1.2cqi; padding: 1.6cqi 2cqi; }
.feuille .paques-bloc__titre { margin: 0 0 1cqi; font-family: var(--titre); font-weight: 800; font-size: 2.2cqi; color: var(--dark); }
.feuille .paques-bloc__titre small { display: block; font-family: var(--corps); font-weight: 400; font-size: 1.4cqi; color: #777; }
.feuille .paques-bloc__couleur { width: 2.2cqi; height: 2.2cqi; }
.feuille .paques-bloc ul { list-style: none; margin: 0; padding: 0; font-size: 1.6cqi; line-height: 1.4; }
.feuille .paques-bloc li { display: flex; gap: 1cqi; align-items: flex-start; margin-bottom: 0.9cqi; }
.feuille .paques-bloc li b { min-width: 2cqi; color: var(--primary); }
.paques-case { flex: none; width: 2cqi; height: 2cqi; border: 0.25cqi solid #1b1b1b; border-radius: 0.4cqi; }

/* Pastilles à coller, 48 par feuille */
.feuille--pastilles { display: flex; flex-direction: column; }
.pastilles-oeufs { display: grid; grid-template-columns: repeat(6, 1fr); grid-template-rows: repeat(8, 1fr); gap: 1.6cqi; flex: 1; margin-top: 1cqi; }
.pastille-oeuf { aspect-ratio: 1; max-height: 100%; margin: auto; width: 100%; border-radius: 50%; display: grid; place-items: center; border: 0.3cqi dashed rgba(0, 0, 0, 0.35); }
.pastille-oeuf b { background: #fff; border-radius: 1cqi; padding: 0.2cqi 0.8cqi; font-size: 1.5cqi; max-width: 90%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Feuilles de récolte, 2 par feuille */
.feuille--recolte { display: grid; grid-template-rows: 1fr 1fr; gap: 3cqi; }
.recolte { border: 0.4cqi dashed #c9b37e; border-radius: 2cqi; padding: 3cqi 4cqi; display: flex; flex-direction: column; min-height: 0; background: #fffaf0; }
.recolte__titre { margin: 0 0 1cqi; font-family: var(--main); font-size: 5.5cqi; color: var(--dark); line-height: 1.1; }
.recolte__consigne { margin: 0 0 2cqi; font-size: 2.2cqi; line-height: 1.5; display: flex; align-items: center; gap: 2cqi; }
.recolte__mien { flex: none; }
.recolte__mien .oeuf { width: 7cqi; height: 8.75cqi; fill: currentColor; stroke: #1b1b1b; stroke-width: 1.5; }
.recolte__oeufs { flex: 1; display: flex; flex-wrap: wrap; align-content: center; justify-content: center; gap: 2cqi 3cqi; }
.recolte__oeufs .oeuf { width: 9cqi; height: 11.25cqi; fill: #fff; stroke: #1b1b1b; stroke-width: 1.4; }
.paques-carte .carte-enigme__texte { font-size: 2.6cqi; }
.paques-carte .carte-enigme__rimes { font-size: 2.6cqi; }
.recolte__fin { margin: 1.4cqi 0 0; font-family: var(--main); font-size: 2.6cqi; text-align: center; color: var(--dark); }

/* ---------- Jeu de piste ---------- */

.orga-parcours .piste-ou { width: 22%; border-bottom: 0.15cqi dotted #888; }
.orga-parcours .piste-lettre { font-family: var(--code); font-weight: 700; font-size: 2.6cqi; text-align: center; color: var(--primary); }
.carte-piste .carte-enigme__texte { margin-bottom: 1.4cqi; }
.carte-piste__lettre { margin: auto 0 0; font-size: 1.6cqi; font-weight: 700; display: flex; align-items: center; gap: 1.2cqi; }
.carte-piste__lettre span { display: inline-block; width: 6cqi; height: 6cqi; border: 0.3cqi solid #1b1b1b; border-radius: 1cqi; flex: none; }
.carte-piste__suite { margin: 1.6cqi 0 0; font-size: 1.4cqi; color: #555; }
.carte-piste__suite span { display: block; border-bottom: 0.15cqi dotted #888; height: 3cqi; }
.carte-piste__cases { display: flex; flex-wrap: wrap; gap: 1cqi; margin: 1.2cqi 0; }
.carte-piste__cases span { width: 3.8cqi; height: 4.6cqi; border: 0.3cqi solid #1b1b1b; border-radius: 0.8cqi; }
.carte-piste__cases--brouillon span { border-style: dashed; border-color: #999; }
.signes-piste { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin: 1rem 0; }
.signe-piste { margin: 0; background: #fff; border-radius: 16px; padding: 14px; text-align: center; box-shadow: 0 6px 16px -12px var(--shadow); color: var(--dark); }
.signe-piste figcaption { font-size: 0.9rem; line-height: 1.4; margin-top: 6px; }
@media (max-width: 700px) { .signes-piste { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---------- Enquête policière ---------- */

.feuille--galerie { display: flex; flex-direction: column; }
.galerie__consigne { margin: 0 0 2cqi; font-size: 1.6cqi; color: #555; }
.galerie { flex: 1; display: grid; grid-template-columns: repeat(3, 1fr); grid-auto-rows: 1fr; gap: 1.8cqi; }
.galerie--12 { grid-template-columns: repeat(4, 1fr); gap: 1.4cqi; }
.suspect { border: 0.3cqi solid #1b1b1b; border-radius: 1.6cqi; padding: 1.4cqi 1.6cqi; text-align: center; display: flex; flex-direction: column; justify-content: center; }
.suspect__picto { margin: 0; font-size: 13cqi; line-height: 1.15; }
.galerie--12 .suspect__picto { font-size: 10.5cqi; }
.suspect__nom { margin: 0.6cqi 0 1.4cqi; font-family: var(--titre); font-weight: 800; font-size: 2.4cqi; color: var(--dark); line-height: 1.2; }
.galerie--12 .suspect__nom { font-size: 2.1cqi; }
.suspect__signes { list-style: none; margin: 0 auto; padding: 0; text-align: left; font-size: 2.05cqi; line-height: 1.6; }
.galerie--12 .suspect__signes { font-size: 1.75cqi; }
.suspect__signes li { display: flex; align-items: center; gap: 0.7cqi; }
.suspect__signes li.suspect__sans { color: #888; }
.suspect__couleur { display: inline-block; width: 1.5cqi; height: 1.5cqi; border-radius: 50%; border: 0.12cqi solid #1b1b1b; flex: none; }
.carte-indice__texte { margin: auto 0; font-size: 2.4cqi; line-height: 1.5; font-weight: 700; color: #1b1b1b; }
.carte-indice--accusation .carte-indice__texte { margin: 2cqi 0 1cqi; }
.carte-indice__ligne { margin: 1.4cqi 0 0; border-bottom: 0.15cqi dotted #888; height: 3.4cqi; }

/* ---------- Escape game ---------- */

.escape-code { font-family: var(--code); letter-spacing: 0.2em; color: var(--primary); }
.carte-escape__texte { margin: 0 0 1.4cqi; font-size: 2.1cqi; line-height: 1.45; font-weight: 700; color: #1b1b1b; }
.grille-escape { display: grid; gap: 0.5cqi; margin: 0 auto; width: 92%; }
.grille-escape span { aspect-ratio: 1; display: grid; place-items: center; font-size: 2.6cqi; border: 0.12cqi solid #ddd; border-radius: 0.6cqi; }
.suite-escape { margin: 1cqi 0; text-align: center; font-family: var(--code); font-weight: 700; font-size: 3.6cqi; letter-spacing: 0.04em; }
.suite-escape span { display: inline-block; min-width: 4cqi; border-bottom: 0.3cqi solid #1b1b1b; color: #999; }
.carte-escape__chiffre { margin: auto 0 0; padding-top: 1.2cqi; font-size: 1.6cqi; font-weight: 700; display: flex; align-items: center; gap: 1.2cqi; }
.carte-escape__chiffre span { width: 6cqi; height: 6cqi; flex: none; border: 0.3cqi solid #1b1b1b; border-radius: 1cqi; }
.carte-escape--code .carte-piste__cases span { width: 7cqi; height: 8.5cqi; }

/* ---------- Coloriages ---------- */

.coloriages-filtres { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 18px; }
.coloriages-filtres button { font: 700 0.95rem var(--titre); color: var(--dark); background: #fff; border: 2px solid var(--border); border-radius: 999px; padding: 0.45em 1.1em; cursor: pointer; }
.coloriages-filtres button span { display: inline-block; min-width: 1.6em; margin-left: 4px; padding: 0 0.4em; border-radius: 999px; background: var(--bg); font-size: 0.85em; }
.coloriages-filtres button:hover { border-color: var(--primary); }
.coloriages-filtres button[aria-pressed="true"] { background: var(--dark); border-color: var(--dark); color: #fff; }
.coloriages-filtres button[aria-pressed="true"] span { background: rgba(255, 255, 255, 0.18); }
.coloriages-grille { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 18px; }
.coloriage-carte { background: #fff; border-radius: 16px; overflow: hidden; box-shadow: 0 8px 22px -14px var(--shadow); display: flex; flex-direction: column; }
.coloriage-carte__image { display: block; aspect-ratio: 210 / 297; background: #fff; border-bottom: 1px solid var(--border); cursor: zoom-in; }
.coloriage-carte__image img { display: block; width: 100%; height: 100%; object-fit: contain; transition: transform 0.2s; }
.coloriage-carte__image:hover img { transform: scale(1.03); }
.coloriage-carte__bas { padding: 10px 12px 12px; display: flex; flex-direction: column; gap: 4px; flex: 1; }
.coloriage-carte__titre { margin: 0; font-family: var(--titre); font-weight: 700; font-size: 1rem; line-height: 1.25; color: var(--dark); }
.coloriage-carte__infos { margin: auto 0 0; display: flex; align-items: center; gap: 10px; font-size: 0.85rem; }
.coloriage-carte__infos a { font-weight: 700; text-decoration: none; }
.coloriage-carte__infos a:hover { text-decoration: underline; }
.niveau { margin-right: auto; font-size: 0.75rem; font-weight: 700; padding: 0.1em 0.7em; border-radius: 999px; }
.niveau--facile { background: #e1f2df; color: #2f7a3b; }
.niveau--moyen { background: #fdebd0; color: #a8560a; }
.niveau--detaille { background: #e2ebfb; color: #2a54a8; }
.coloriages-tout { text-align: center; margin: 28px 0 8px; }
.coloriages-tout small { font-weight: 400; opacity: 0.85; }
@media (max-width: 1100px) { .coloriages-grille { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 860px) { .coloriages-grille { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 600px) {
  .coloriages-grille { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .coloriages-filtres button { font-size: 0.85rem; padding: 0.4em 0.8em; }
  .coloriages-tout .bouton-orange { flex-direction: column; gap: 0; }
}

.themes-coloriages { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; padding-bottom: 1rem; }
.theme-coloriage { display: flex; flex-direction: column; background: #fff; border-radius: 22px; overflow: hidden; text-decoration: none; color: inherit; box-shadow: 0 10px 26px -16px var(--shadow); transition: transform 0.15s; }
.theme-coloriage:hover { color: inherit; transform: translateY(-3px); }
.theme-coloriage__images { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; padding: 16px 16px 0; background: var(--primary-pale); }
.theme-coloriage__images img { display: block; width: 100%; aspect-ratio: 210 / 297; object-fit: contain; background: #fff; border-radius: 8px 8px 0 0; box-shadow: 0 -2px 10px -6px var(--shadow); }
.theme-coloriage__corps { display: flex; flex-direction: column; gap: 6px; padding: 18px 20px 20px; }
.theme-coloriage__nom { font-family: var(--titre); font-weight: 800; font-size: 1.5rem; line-height: 1.15; color: var(--dark); }
.theme-coloriage__texte { color: var(--text-light); }
.theme-coloriage__infos { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 4px; font-size: 0.9rem; }
.theme-coloriage__infos strong { margin-right: 4px; color: var(--primary); }
.theme-coloriage__infos .niveau { margin-right: 0; }
@media (max-width: 760px) { .themes-coloriages { grid-template-columns: minmax(0, 1fr); } }

.visionneuse { border: 0; padding: 0; background: transparent; max-width: none; max-height: none; width: 100vw; height: 100vh; height: 100dvh; margin: 0; }
.visionneuse::backdrop { background: rgba(19, 33, 60, 0.82); }
.visionneuse__corps { position: relative; height: 100%; display: flex; align-items: center; justify-content: center; gap: 28px; padding: 24px 70px; }
.visionneuse__feuille { margin: 0; height: 100%; max-height: calc(100dvh - 48px); aspect-ratio: 210 / 297; background: #fff; border-radius: 6px; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4); }
.visionneuse__feuille img { display: block; width: 100%; height: 100%; object-fit: contain; }
.visionneuse__feuille--large { height: auto; width: min(calc(100vw - 460px), calc((100dvh - 48px) * 297 / 210)); aspect-ratio: 297 / 210; }
.visionneuse__panneau { width: 290px; flex: none; background: #fff; border-radius: 20px; padding: 22px; display: flex; flex-direction: column; gap: 10px; }
.visionneuse__panneau h2 { margin: 0; font-size: 1.5rem; }
.visionneuse__compte { margin: 0; font-size: 0.8rem; color: var(--text-light); }
.visionneuse__niveau { margin: 0 0 6px; font-size: 0.9rem; color: var(--text-light); }
.visionneuse__note { margin: 4px 0 0; font-size: 0.8rem; color: var(--text-light); line-height: 1.5; }
.visionneuse__fermer, .visionneuse__fleche { position: absolute; border: 0; cursor: pointer; background: #fff; color: var(--dark); font: 800 1.8rem/1 var(--titre); border-radius: 50%; width: 48px; height: 48px; display: grid; place-items: center; box-shadow: 0 6px 18px rgba(0, 0, 0, 0.25); }
.visionneuse__fermer { top: 16px; right: 16px; }
.visionneuse__fleche { top: 50%; transform: translateY(-50%); font-size: 2.2rem; padding-bottom: 4px; }
.visionneuse__fleche--prec { left: 12px; }
.visionneuse__fleche--suiv { right: 12px; }
.visionneuse__fermer:hover, .visionneuse__fleche:hover { background: var(--jaune); }
@media (max-width: 860px) {
  .visionneuse__corps { flex-direction: column; gap: 10px; padding: 64px 12px 12px; }
  .visionneuse__feuille { height: auto; width: 100%; max-height: none; flex: 1; min-height: 0; aspect-ratio: auto; background: none; box-shadow: none; }
  .visionneuse__feuille img { border-radius: 6px; }
  .visionneuse__panneau { width: 100%; padding: 14px; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
  .visionneuse__panneau h2 { font-size: 1.15rem; grid-column: 1 / -1; }
  .visionneuse__compte, .visionneuse__niveau, .visionneuse__note { display: none; }
  .visionneuse__panneau .bouton-orange { grid-column: 1 / -1; }
  .visionneuse__panneau .bouton-contour { font-size: 0.85rem; padding: 0.6em 0.6em; }
  .visionneuse__fleche { top: 16px; transform: none; width: 44px; height: 44px; }
  .visionneuse__fleche--prec { left: 12px; }
  .visionneuse__fleche--suiv { left: 66px; right: auto; }
}

/* ---------- Impression ----------
   Sur la page du générateur de chasse (#apercu), seules les feuilles sortent.
   Les autres outils posent la classe imprime-zone sur body le temps d'imprimer leur #zone-impression.
   Sans l'une ou l'autre, la page s'imprime normalement. */

/* ---------- Anniversaires à thème ---------- */

.anniv-sommaire { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 1.1rem; }
.anniv-sommaire a { background: #fff; color: var(--dark); text-decoration: none; border-radius: 999px; padding: 5px 14px; font-size: 0.88rem; box-shadow: 0 4px 12px -8px var(--shadow), 0 1px 0 var(--border); }
.anniv-sommaire a:hover { color: var(--primary); }
.anniv-atelier { background: var(--bg-alt); padding: 2.2rem 0 2.6rem; border-radius: 48px 48px 0 0; }
.anniv-atelier__titre { font-size: 1.85rem; margin: 0 0 1rem; }
.anniv-atelier__grille { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 28px; align-items: start; }
.anniv-reglages { background: #fff; border-radius: 24px; padding: 18px 22px; box-shadow: 0 16px 36px -22px rgba(19, 33, 60, 0.3); display: grid; gap: 14px; }
.anniv-reglages__groupe { border: 0; padding: 0; margin: 0; min-width: 0; }
.anniv-reglages__groupe legend { font-family: var(--titre); font-weight: 700; color: var(--dark); padding: 0; margin-bottom: 6px; }
.pastilles-choix--colonne { flex-direction: column; align-items: flex-start; }
.anniv-reglages__champs { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px 12px; }
.anniv-champ { grid-column: span 2; display: flex; flex-direction: column; gap: 4px; font-family: var(--titre); font-weight: 700; color: var(--dark); font-size: 0.92rem; line-height: 1.3; }
.anniv-champ--large { grid-column: span 3; }
.anniv-champ--prenom { grid-column: span 4; }
.anniv-champ--tout { grid-column: 1 / -1; }
.anniv-champ .champ-texte { font-family: var(--corps); font-weight: 400; }
.anniv-apercu { position: sticky; top: 92px; }
.anniv-apercu__carte { width: min(100%, 400px); margin: 0 auto; border-radius: 6px; overflow: hidden; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1), 0 20px 40px -16px rgba(19, 33, 60, 0.45); }
.anniv-apercu__note { font-size: 0.85rem; color: var(--text-light); text-align: center; margin: 14px 0 0; line-height: 1.5; }
.anniv-kit { margin-top: 2rem; background: #fff; border-radius: 24px; padding: 18px 22px 8px; box-shadow: 0 16px 36px -22px rgba(19, 33, 60, 0.3); }
.anniv-kit__titre { margin: 0 0 0.8rem; font-size: 1.35rem; }
.anniv-kit__grille { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.anniv-kit__choix { display: flex; gap: 10px; align-items: flex-start; border: 2px solid var(--border); border-radius: 14px; padding: 10px 12px; cursor: pointer; font-size: 0.88rem; line-height: 1.4; background: var(--bg); color: var(--text-light); }
.anniv-kit__choix:has(input:checked) { border-color: var(--primary); background: var(--primary-pale); }
.anniv-kit__choix input { accent-color: var(--primary); width: 18px; height: 18px; margin: 2px 0 0; flex: none; }
.anniv-kit__choix strong { display: block; font-family: var(--titre); font-size: 1rem; color: var(--dark); }
.anniv-kit__choix select { width: auto; padding: 2px 8px; margin-top: 4px; font-size: 0.85rem; }
.anniv-kit__invites { margin-top: 12px; }
.anniv-kit__sansjs { font-size: 0.9rem; color: var(--text-light); }

.anniv-deroule { list-style: none; padding: 0; margin: 1.2rem 0; }
.anniv-deroule li { position: relative; padding: 0 0 1.1rem 6.6rem; }
.anniv-deroule li::before { content: ''; position: absolute; left: 2.7rem; top: 1.8rem; bottom: 0.2rem; border-left: 2px dashed var(--primary); }
.anniv-deroule li:last-child::before { display: none; }
.anniv-deroule__temps { position: absolute; left: 0; top: 0.15rem; width: 5.6rem; text-align: center; background: var(--dark); color: #fff; border-radius: 999px; font-size: 0.8rem; font-weight: 700; padding: 2px 0; }
.anniv-deroule strong { display: block; font-family: var(--titre); font-size: 1.12rem; color: var(--dark); }
.anniv-grands-jeux { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin: 1rem 0; }
.anniv-grand-jeu { display: flex; flex-direction: column; gap: 4px; background: #fff; border-radius: var(--radius); padding: 16px 18px; text-decoration: none; color: inherit; box-shadow: 0 8px 22px -14px var(--shadow), 0 1px 0 var(--border); transition: transform 0.15s; }
.anniv-grand-jeu:hover { transform: translateY(-3px); color: inherit; }
.anniv-grand-jeu__picto { font-size: 2rem; line-height: 1.2; }
.anniv-grand-jeu strong { font-family: var(--titre); font-size: 1.08rem; color: var(--dark); line-height: 1.2; }
.anniv-grand-jeu span:last-child { font-size: 0.86rem; color: var(--text-light); line-height: 1.45; }
.anniv-jeux { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin: 1rem 0; }
.anniv-jeu { background: #fff; border-radius: var(--radius); padding: 16px 20px; box-shadow: 0 8px 22px -14px var(--shadow), 0 1px 0 var(--border); }
.anniv-jeu h3 { margin: 0 0 0.3rem; font-size: 1.25rem; }
.anniv-jeu__meta { display: flex; gap: 6px; margin: 0 0 0.5rem; }
.anniv-jeu__meta span { font-size: 0.78rem; font-weight: 700; background: var(--primary-pale); color: var(--primary); border-radius: 999px; padding: 1px 10px; }
.carnet .anniv-jeu__regle { margin: 0 0 0.5rem; font-size: 0.95rem; line-height: 1.7; }
.carnet .anniv-jeu__materiel { margin: 0; font-size: 0.86rem; line-height: 1.55; color: var(--text-light); }
.anniv-blagues { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 1rem 0; align-items: start; }
.anniv-blague { background: #fff; border-radius: 14px; padding: 0.7rem 1rem; box-shadow: 0 4px 14px -10px var(--shadow); }
.anniv-blague summary { cursor: pointer; font-weight: 700; color: var(--dark); line-height: 1.45; }
.carnet .anniv-blague p { margin: 0.4rem 0 0.1rem; font-family: var(--main); font-size: 1.2rem; line-height: 1.4; color: var(--primary); }
.anniv-enigmes { list-style: none; padding: 0; margin: 1rem 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.anniv-enigmes li { background: #fff; border-radius: 14px; padding: 0.8rem 1.1rem; box-shadow: 0 4px 14px -10px var(--shadow); }
.anniv-enigmes__age { display: inline-block; font-size: 0.75rem; font-weight: 700; background: var(--jaune-pale); color: #7a5200; border-radius: 999px; padding: 0 10px; }
.carnet .anniv-enigmes p { margin: 0.3rem 0; font-size: 0.95rem; line-height: 1.6; }
.anniv-enigmes summary { cursor: pointer; color: var(--primary); font-weight: 700; font-size: 0.88rem; }
.carnet .anniv-enigmes details p { font-family: var(--main); font-size: 1.12rem; color: var(--dark); }
.anniv-deco { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin: 1rem 0; }
.anniv-deco section { background: #fff; border-radius: var(--radius); padding: 14px 20px; box-shadow: 0 8px 22px -14px var(--shadow); }
.anniv-deco h3 { margin: 0 0 0.3rem; font-size: 1.2rem; }
.carnet .anniv-deco p { margin: 0; font-size: 0.95rem; line-height: 1.7; }
.anniv-gouter { list-style: none; padding: 0; margin: 1rem 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.carnet .anniv-gouter li { background: #fff; border-radius: 14px; padding: 10px 14px; font-size: 0.88rem; line-height: 1.4; color: var(--text-light); display: grid; grid-template-columns: auto 1fr; column-gap: 10px; align-items: center; }
.anniv-gouter li span { grid-row: span 2; font-size: 1.8rem; }
.anniv-gouter li strong { font-family: var(--titre); font-size: 1.02rem; color: var(--dark); }
.anniv-autres { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin: 1rem 0; }
.anniv-autre { display: grid; grid-template-columns: auto 1fr; column-gap: 12px; align-items: center; background: #fff; border-radius: var(--radius); padding: 14px 18px; text-decoration: none; color: inherit; box-shadow: 0 8px 22px -14px var(--shadow), 0 1px 0 var(--border); }
.anniv-autre:hover { color: inherit; transform: translateY(-2px); }
.anniv-autre span { grid-row: span 2; font-size: 2.2rem; }
.anniv-autre strong { font-family: var(--titre); font-size: 1.1rem; color: var(--dark); }
.anniv-autre small { font-size: 0.84rem; color: var(--text-light); line-height: 1.4; }
@media (max-width: 1000px) {
  .anniv-atelier__grille { grid-template-columns: minmax(0, 1fr); }
  .anniv-apercu { position: static; }
  .anniv-kit__grille, .anniv-grands-jeux, .anniv-gouter { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 680px) {
  .anniv-atelier { border-radius: 28px 28px 0 0; }
  .anniv-reglages, .anniv-kit { padding: 16px; }
  .anniv-reglages__champs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .anniv-champ { grid-column: span 1; }
  .anniv-champ--large, .anniv-champ--prenom, .anniv-champ--tout { grid-column: 1 / -1; }
  .anniv-kit__grille, .anniv-grands-jeux, .anniv-jeux, .anniv-blagues, .anniv-enigmes, .anniv-deco, .anniv-gouter, .anniv-autres { grid-template-columns: minmax(0, 1fr); }
  .anniv-deroule li { padding-left: 0; padding-top: 1.7rem; }
  .anniv-deroule li::before { display: none; }
}

.anniv-hub { padding-bottom: 1rem; }
.anniv-hub__grille { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.anniv-hub__theme { --c: var(--primary); --fond: var(--primary-pale); display: grid; grid-template-columns: 1fr auto; overflow: hidden; background: #fff; border-radius: var(--radius); text-decoration: none; color: inherit; box-shadow: 0 8px 22px -12px var(--shadow), 0 1px 0 var(--border); transition: transform 0.15s, box-shadow 0.15s; }
.anniv-hub__theme:hover { transform: translateY(-3px); color: inherit; box-shadow: 0 14px 28px -12px rgba(19, 33, 60, 0.25); }
.anniv-hub__picto { grid-column: 1 / -1; display: grid; place-items: center; height: 130px; font-size: 4rem; background: var(--fond); }
.anniv-hub__theme strong { padding: 14px 0 0 18px; font-family: var(--titre); font-size: 1.25rem; color: var(--c); line-height: 1.15; }
.anniv-hub__texte { grid-row: 3; padding: 4px 0 16px 18px; font-size: 0.88rem; color: var(--text-light); line-height: 1.45; }
.anniv-hub__fleche { grid-row: 2 / span 2; grid-column: 2; align-self: center; margin: 0 16px 0 10px; width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; background: var(--c); color: #fff; font-weight: 700; }
.anniv-hub__theme--pirate { --c: #8a2c12; --fond: #f6e6c4; }
.anniv-hub__theme--princesse { --c: #b0306a; --fond: #fde3ee; }
.anniv-hub__theme--ninja { --c: #1f2333; --fond: #e6e8ee; }
.anniv-hub__theme--espion { --c: #3567c4; --fond: #e2ebfb; }
@media (max-width: 1000px) { .anniv-hub__grille { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .anniv-hub__grille { grid-template-columns: minmax(0, 1fr); } }

/* ---------- Les invitations (tailles en cqi : 1 % de la largeur de la carte) ---------- */

.invit {
  container-type: inline-size; position: relative; overflow: hidden; aspect-ratio: 105 / 148;
  background: #fff; color: #2b2b2b; font-family: var(--corps); line-height: 1.3; --trou: #fff;
}
.invit__deco { position: absolute; display: block; line-height: 0; }
.invit__deco svg { display: block; width: 100%; height: 100%; }
.invit__corps { position: absolute; z-index: 1; inset: 9cqi 8cqi 8cqi; display: flex; flex-direction: column; }
.invit__titre { margin: 0; text-align: center; font-family: var(--titre); font-weight: 800; font-size: 6cqi; line-height: 1.1; }
.invit__prenom { --max: 16cqi; --k: 130cqi; margin: 2.5cqi 0 0; text-align: center; font-size: min(var(--max), calc(var(--k) / var(--n, 4))); line-height: 1.2; white-space: nowrap; }
.invit__texte { margin: 2.5cqi 0 0; text-align: center; font-size: 4.2cqi; line-height: 1.38; }
.invit__infos { list-style: none; margin: auto 0 0; padding: 3cqi 0 0; font-size: 3.8cqi; line-height: 1.3; display: grid; gap: 1.6cqi; }
.invit__infos li { display: flex; gap: 2cqi; align-items: baseline; }
.invit__infos b { flex: none; width: 16cqi; font-size: 2.7cqi; text-transform: uppercase; letter-spacing: 0.08em; }
.invit__infos span { flex: 1; min-width: 0; }
.invit__blanc { display: inline-block; width: 100%; height: 1em; border-bottom: 0.35cqi dotted currentColor; opacity: 0.55; vertical-align: baseline; }
.invit__prenom .invit__blanc { width: 70%; height: 0.75em; }
.invit__texte .invit__blanc { width: 40%; }
.invit__mention { margin: 3cqi 0 0; text-align: center; font-family: var(--main); font-size: 4.3cqi; line-height: 1.25; }
.invit__age { position: absolute; z-index: 2; margin: 0; display: grid; place-content: center; text-align: center; font-family: var(--titre); font-weight: 800; font-size: 8.5cqi; line-height: 0.85; }
.invit__age small { display: block; font-size: 3cqi; font-weight: 700; letter-spacing: 0.06em; }

/* Pirate : le parchemin */
.invit--parchemin { background: radial-gradient(130% 95% at 50% 42%, #fbf2dc 40%, #f1dcad 74%, #d9b676 100%); color: #3b2a1a; }
.invit--parchemin::before, .invit--parchemin::after { content: ''; position: absolute; border-radius: 2cqi; pointer-events: none; }
.invit--parchemin::before { inset: 3.4cqi; border: 0.55cqi solid rgba(122, 74, 34, 0.55); }
.invit--parchemin::after { inset: 4.8cqi; border: 0.22cqi solid rgba(122, 74, 34, 0.45); }
.invit--parchemin .invit__deco--crane { top: 6cqi; left: 39cqi; width: 22cqi; height: 22cqi; color: #2b1a0e; --trou: #f8ead0; }
.invit--parchemin .invit__deco--boussole { right: -9cqi; bottom: -9cqi; width: 44cqi; height: 44cqi; color: #8a5528; opacity: 0.16; }
.invit--parchemin .invit__deco--vagues { left: 8cqi; bottom: 5.6cqi; width: 30cqi; height: 4cqi; color: #8a5528; opacity: 0.3; }
.invit--parchemin .invit__corps { top: 28cqi; }
.invit--pirate .invit__titre { font-family: 'Pirata One', var(--titre); font-weight: 400; font-size: 7.4cqi; color: #8a2c12; letter-spacing: 0.02em; }
.invit--pirate .invit__prenom { font-family: 'Pirata One', var(--titre); color: #2b1a0e; --max: 18cqi; --k: 150cqi; line-height: 1.3; }
.invit--pirate .invit__infos b { color: #8a2c12; }
.invit--pirate .invit__mention { color: #8a2c12; }
.invit--pirate .invit__age { top: 6.5cqi; right: 7cqi; width: 18cqi; height: 18cqi; border-radius: 50%; color: #5a3517; background: radial-gradient(circle at 35% 30%, #ffe9a3, #f2c12e 55%, #c99410); box-shadow: inset 0 0 0 0.7cqi #b8860b, inset 0 0 0 1.5cqi rgba(255, 255, 255, 0.35); transform: rotate(8deg); }
/* Pirate : la carte au trésor */
.invit--carte { background-color: #f7ecd3; background-image: linear-gradient(rgba(122, 74, 34, 0.09) 1px, transparent 1px), linear-gradient(90deg, rgba(122, 74, 34, 0.09) 1px, transparent 1px); background-size: 7cqi 7cqi; color: #3b2a1a; }
.invit--carte::before { content: ''; position: absolute; inset: 2.6cqi; border: 1.3cqi double #8a5528; pointer-events: none; }
.invit--carte .invit__deco--navire { top: 6cqi; left: 6cqi; width: 21cqi; height: 19cqi; }
.invit--carte .invit__deco--ile { left: 5cqi; bottom: 4.5cqi; width: 27cqi; height: 19cqi; }
.invit--carte .invit__deco--boussole { right: 6cqi; bottom: 6cqi; width: 15cqi; height: 15cqi; color: #8a5528; }
.invit--carte .invit__corps { top: 8cqi; bottom: 22cqi; }
.invit--carte .invit__titre { padding: 0 19cqi; min-height: 16cqi; display: grid; place-items: center; }
.invit--carte .invit__prenom { --max: 15.5cqi; margin-top: 1.5cqi; }
.invit--carte::after { content: ''; position: absolute; left: 31cqi; right: 23cqi; bottom: 11cqi; border-top: 0.7cqi dashed #c62828; transform: rotate(-4deg); }

/* Princesse : le château */
.invit--chateau { background: linear-gradient(180deg, #fff 0%, #fff6fa 45%, #fde3ee 100%); color: #4a2a4a; --trou: #fde3ee; }
.invit--chateau .invit__deco--chateau { left: 0; right: 0; bottom: 0; height: 27cqi; color: #f5b9d2; --drapeau: #c9a7f0; }
.invit--chateau .invit__deco--e1 { top: 7cqi; left: 8cqi; width: 7cqi; height: 7cqi; color: #f2c12e; }
.invit--chateau .invit__deco--e2 { top: 17cqi; left: 15cqi; width: 4cqi; height: 4cqi; color: #f2c12e; }
.invit--chateau .invit__deco--e3 { top: 50cqi; right: 6cqi; width: 5cqi; height: 5cqi; color: #e7a6f0; }
.invit--chateau .invit__deco--e4 { top: 60cqi; left: 5cqi; width: 4.5cqi; height: 4.5cqi; color: #f2c12e; }
.invit--chateau .invit__deco--c1 { top: 36cqi; left: 6cqi; width: 4.5cqi; height: 4cqi; color: #f39ac0; }
.invit--chateau .invit__corps { top: 9cqi; bottom: 27cqi; }
.invit--princesse .invit__titre { font-size: 4.6cqi; text-transform: uppercase; letter-spacing: 0.12em; color: #8a4fd0; padding: 0 17cqi; min-height: 13cqi; display: grid; place-items: center; }
.invit--princesse .invit__prenom { font-family: 'Dancing Script', var(--main); font-weight: 700; --max: 19cqi; --k: 150cqi; color: #b0306a; }
.invit--princesse .invit__infos b { color: #8a4fd0; }
.invit--princesse .invit__mention { color: #b0306a; }
.invit--princesse .invit__age { top: 5cqi; right: 5cqi; width: 21cqi; height: 21cqi; color: #6b4a00; padding-top: 2cqi; background: linear-gradient(160deg, #ffe58a, #f2c12e 60%, #d9a514); clip-path: polygon(50% 0, 61.5% 34%, 98% 35%, 68.5% 57%, 79.5% 92%, 50% 71%, 20.5% 92%, 31.5% 57%, 2% 35%, 38.5% 34%); font-size: 7cqi; }
.invit--princesse .invit__age small { font-size: 2.6cqi; }
/* Princesse : la couronne d'or */
.invit--couronne { background: #fffaf0; color: #4a3a1a; }
.invit--couronne::before, .invit--couronne::after { content: ''; position: absolute; pointer-events: none; border-radius: 3cqi; }
.invit--couronne::before { inset: 3.5cqi; border: 1.1cqi double #d4a017; }
.invit--couronne::after { inset: 6.6cqi; border: 0.25cqi solid #ebcd6e; }
.invit--couronne .invit__deco--couronne { top: 8cqi; left: 35cqi; width: 30cqi; height: 21cqi; }
.invit--couronne .invit__deco--e1 { top: 12cqi; left: 22cqi; width: 5cqi; height: 5cqi; color: #f2c12e; }
.invit--couronne .invit__deco--e2 { top: 24cqi; left: 12cqi; width: 4cqi; height: 4cqi; color: #f2c12e; }
.invit--couronne .invit__deco--e3 { bottom: 10cqi; right: 10cqi; width: 5cqi; height: 5cqi; color: #f2c12e; }
.invit--couronne .invit__corps { top: 31cqi; bottom: 10cqi; left: 11cqi; right: 11cqi; }
.invit--couronne .invit__titre { padding: 0; min-height: 0; color: #a87b00; }
.invit--couronne .invit__infos b, .invit--couronne .invit__mention { color: #a87b00; }
.invit--couronne .invit__age { top: 10cqi; right: 10cqi; width: 15cqi; height: 15cqi; clip-path: none; border-radius: 50%; padding: 0; font-size: 6.5cqi; box-shadow: inset 0 0 0 0.6cqi #d4a017; }

/* Ninja : le rouleau */
.invit--rouleau { background: #f7f1e4; color: #1f2333; }
.invit--rouleau::before, .invit--rouleau::after { content: ''; position: absolute; left: 1.5cqi; right: 1.5cqi; height: 5.5cqi; border-radius: 3cqi; background: linear-gradient(180deg, #3a3f52, #1f2333 60%, #11131c); box-shadow: inset 0 0 0 0.5cqi #c62828; }
.invit--rouleau::before { top: 1.5cqi; }
.invit--rouleau::after { bottom: 1.5cqi; }
.invit--rouleau .invit__deco--soleil { top: 32cqi; left: 20cqi; width: 60cqi; height: 60cqi; color: #d93a32; opacity: 0.11; }
.invit--rouleau .invit__deco--ninja { top: 9cqi; left: 6cqi; width: 21cqi; height: 19cqi; }
.invit--rouleau .invit__deco--s1 { top: 33cqi; left: 6cqi; width: 9cqi; height: 9cqi; color: #6b7183; transform: rotate(20deg); --trou: #f7f1e4; }
.invit--rouleau .invit__deco--s2 { top: 30cqi; right: 6cqi; width: 6cqi; height: 6cqi; color: #6b7183; transform: rotate(-10deg); --trou: #f7f1e4; }
.invit--rouleau .invit__corps { top: 11cqi; bottom: 10cqi; }
.invit--ninja .invit__titre { font-family: 'Shojumaru', var(--titre); font-weight: 400; font-size: 5.2cqi; color: #c62828; padding: 0 21cqi; min-height: 17cqi; display: grid; place-items: center; line-height: 1.2; }
.invit--ninja .invit__prenom { font-family: 'Shojumaru', var(--titre); --max: 15cqi; --k: 100cqi; color: #1f2333; margin-top: 3cqi; line-height: 1.35; }
.invit--ninja .invit__infos b { color: #c62828; }
.invit--ninja .invit__mention { color: #c62828; }
.invit--ninja .invit__age { top: 9cqi; right: 6cqi; width: 18cqi; height: 18cqi; border-radius: 50%; color: #fff; background: #d93a32; font-family: 'Shojumaru', var(--titre); font-weight: 400; font-size: 7.5cqi; }
/* Ninja : la forêt de bambous */
.invit--bambou { background: #fff; color: #1f2333; }
.invit--bambou .invit__deco--b1 { top: -4cqi; bottom: -4cqi; left: -1cqi; width: 12cqi; }
.invit--bambou .invit__deco--b2 { top: -10cqi; bottom: -2cqi; right: -1cqi; width: 12cqi; }
.invit--bambou .invit__deco--b3 { top: 40cqi; bottom: -6cqi; right: 7cqi; width: 8cqi; opacity: 0.7; }
.invit--bambou .invit__deco--soleil { top: 30cqi; left: 22cqi; width: 56cqi; height: 56cqi; color: #d93a32; opacity: 0.1; }
.invit--bambou .invit__deco--ninja { bottom: 4cqi; left: 9cqi; width: 15cqi; height: 13.5cqi; }
.invit--bambou .invit__deco--s1 { top: 8cqi; left: 12cqi; width: 8cqi; height: 8cqi; color: #1f2333; transform: rotate(15deg); }
.invit--bambou .invit__corps { top: 9cqi; bottom: 7cqi; left: 14cqi; right: 14cqi; }
.invit--bambou .invit__titre { padding: 0 12cqi; }
.invit--bambou .invit__prenom { --k: 86cqi; }
.invit--bambou .invit__age { top: 7cqi; right: 12cqi; width: 16cqi; height: 16cqi; font-size: 6.6cqi; }
.invit--bambou .invit__mention { padding-left: 10cqi; }

/* ---------- Les feuilles du kit (tailles en cqi : 1 % de la largeur de la feuille A4) ---------- */

.kit--pirate { --k1: #8a2c12; --k2: #2b1a0e; --k-fond: radial-gradient(130% 95% at 50% 42%, #fbf2dc 40%, #f1dcad 78%, #ddbb7d 100%); --k-police: 'Pirata One'; --f0: #1f2333; --f0t: #fff; --f1: #b23a2a; --f1t: #fff; --f2: #f1dcad; --f2t: #2b1a0e; }
.kit--princesse { --k1: #b0306a; --k2: #8a4fd0; --k-fond: linear-gradient(180deg, #fff 0%, #fde6f0 100%); --k-police: 'Dancing Script'; --f0: #f7a8c9; --f0t: #6e1d45; --f1: #d9c2f5; --f1t: #4a2a7a; --f2: #f6d36b; --f2t: #6b4a00; }
.kit--ninja { --k1: #c62828; --k2: #1f2333; --k-fond: #f7f1e4; --k-police: 'Shojumaru'; --f0: #1f2333; --f0t: #fff; --f1: #c62828; --f1t: #fff; --f2: #f7f1e4; --f2t: #1f2333; }
.kit-feuille { position: relative; padding: 4cqi; }
.kit-pied { position: absolute; left: 0; right: 0; bottom: 1.2cqi; margin: 0; text-align: center; font-size: 1.2cqi; color: #999; }
.kit-consigne { margin: 0 0 2.4cqi; font-size: 1.75cqi; line-height: 1.5; color: #444; }
.kit-agrafe { position: absolute; font-size: 1.1cqi; color: #999; text-transform: uppercase; letter-spacing: 0.1em; }

.kit-invitations { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; padding: 3cqi; }
.kit-coupe { border: 0.15cqi dashed #9a9a9a; padding: 1.2cqi; min-height: 0; min-width: 0; }
.kit-coupe .invit { height: 100%; aspect-ratio: auto; }

.kit-affiche__cadre { height: 100%; border: 1.4cqi double var(--k1); border-radius: 3cqi; background: var(--k-fond); display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 4cqi; color: var(--k2); --trou: #fbf2dc; }
.kit-affiche__haut { width: 24cqi; height: 24cqi; color: var(--k2); }
.kit-affiche__haut svg, .kit-affiche__bas svg { width: 100%; height: 100%; display: block; }
.kit-affiche__titre { margin: 3cqi 0 0; font-family: var(--k-police), var(--titre); font-size: 10cqi; line-height: 1.05; color: var(--k1); }
.kit-affiche__sous { margin: 2cqi 0 0; font-size: 4cqi; font-family: var(--titre); font-weight: 700; }
.kit-affiche__prenom { margin: 1cqi 0 0; font-family: var(--k-police), var(--titre); font-size: 20cqi; line-height: 1.05; overflow-wrap: anywhere; width: 100%; }
.kit-affiche__prenom .invit__blanc { width: 60%; height: 16cqi; }
.kit-affiche__age { margin: 0; font-family: var(--titre); font-weight: 800; font-size: 6cqi; color: var(--k1); }
.kit-affiche__bas { width: 62cqi; height: 34cqi; margin-top: 4cqi; color: #f5b9d2; --drapeau: #c9a7f0; --trou: #fde6f0; }
.kit--princesse .kit-affiche__haut { width: 32cqi; height: 22cqi; }
.kit--ninja .kit-affiche__haut { color: #1f2333; --trou: #f7f1e4; }
.kit--ninja .kit-affiche__bas { width: 40cqi; height: 36cqi; }

.kit-guirlande { display: grid; grid-template-rows: 1fr 1fr; gap: 4cqi; padding: 5cqi 6cqi; }
.kit-fanion { position: relative; min-height: 0; }
.kit-fanion__forme { position: absolute; inset: 0; width: 100%; height: 100%; }
.kit-fanion__forme path { stroke: #888; stroke-width: 0.6; stroke-dasharray: 3 2; vector-effect: non-scaling-stroke; }
.kit-fanion--0 .kit-fanion__forme path { fill: var(--f0); } .kit-fanion--0 { color: var(--f0t); --trou: var(--f0); }
.kit-fanion--1 .kit-fanion__forme path { fill: var(--f1); } .kit-fanion--1 { color: var(--f1t); --trou: var(--f1); }
.kit-fanion--2 .kit-fanion__forme path { fill: var(--f2); } .kit-fanion--2 { color: var(--f2t); --trou: var(--f2); }
.kit-fanion__trou { position: absolute; top: 4cqi; width: 2.2cqi; height: 2.2cqi; border-radius: 50%; border: 0.2cqi dashed currentColor; opacity: 0.7; }
.kit-fanion__trou--g { left: 8%; } .kit-fanion__trou--d { right: 8%; }
.kit-fanion__lettre { position: absolute; left: 0; right: 0; top: 7cqi; text-align: center; font-family: var(--k-police), var(--titre); font-size: 30cqi; line-height: 1; }
.kit--princesse .kit-fanion__lettre { font-size: 27cqi; top: 4cqi; }
.kit-fanion__picto { position: absolute; top: 9cqi; left: 50%; width: 20cqi; height: 20cqi; transform: translateX(-50%); }
.kit-fanion__picto svg { width: 100%; height: 100%; display: block; }
.kit--princesse .kit-fanion__picto { width: 26cqi; height: 18cqi; }

.kit-etiquettes { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: repeat(3, 1fr); gap: 3cqi; padding: 5cqi 5cqi 6cqi; }
.kit-chevalet { border: 0.15cqi dashed #9a9a9a; display: grid; grid-template-rows: 1fr 1fr; min-height: 0; background: var(--k-fond); }
.kit-chevalet__face { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 1.5cqi 3cqi; min-height: 0; }
.kit-chevalet__face--dos { transform: rotate(180deg); border-top: 0.15cqi dotted #888; }
.kit-chevalet__picto { font-size: 5cqi; line-height: 1.1; }
.kit-chevalet__nom { margin: 0.6cqi 0 0; font-family: var(--k-police), var(--titre); font-size: 4.4cqi; line-height: 1.1; color: var(--k1); }
.kit--ninja .kit-chevalet__nom { font-size: 3.3cqi; line-height: 1.2; }
.kit-chevalet__quoi { margin: 0.6cqi 0 0; font-size: 1.85cqi; color: #555; }

.kit-cartes { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: repeat(4, 1fr); padding: 4cqi; }
.kit-carte { border: 0.15cqi dashed #9a9a9a; display: grid; grid-template-rows: 1fr 1fr; min-height: 0; }
.kit-carte__q, .kit-carte__r { padding: 1.6cqi 2.6cqi; display: flex; flex-direction: column; justify-content: center; min-height: 0; }
.kit-carte__r { transform: rotate(180deg); border-bottom: 0.15cqi dotted #888; background: #f7f7f7; }
.kit-carte p { margin: 0; font-size: 1.95cqi; line-height: 1.35; }
.kit-carte .kit-carte__type { font-size: 1.15cqi; text-transform: uppercase; letter-spacing: 0.1em; font-weight: 700; color: var(--k1); margin-bottom: 0.6cqi; }
.kit-carte__r p:last-child { font-family: var(--main); font-size: 2.3cqi; color: var(--k2); }

.kit-accessoires { display: flex; flex-direction: column; }
.kit-accessoires__grille { flex: 1; min-height: 0; display: grid; gap: 2cqi; }
.kit-acc { position: relative; min-height: 0; display: grid; place-items: center; }
.kit-acc svg { display: block; width: 100%; height: 100%; }
.kit-accessoires--cacheoeil .kit-accessoires__grille { grid-template-columns: 1fr 1fr; grid-template-rows: repeat(3, 1fr); }
.kit-cacheoeil__crane { position: absolute; left: 50%; top: 44%; width: 14cqi; height: 14cqi; transform: translate(-50%, -50%); color: #c9c9c9; }
.kit-accessoires--doublons .kit-accessoires__grille { grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(5, 1fr); }
.kit-doublon { width: 20cqi; height: 20cqi; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #ffe9a3, #f2c12e 55%, #d9a514); box-shadow: inset 0 0 0 0.5cqi #b8860b, inset 0 0 0 1.6cqi rgba(255, 255, 255, 0.3); outline: 0.15cqi dashed #888; outline-offset: 0.6cqi; }
.kit-doublon span { width: 11cqi; height: 11cqi; color: #a5770a; --trou: #f2c12e; }
.kit-accessoires--couronne .kit-accessoires__grille { grid-template-rows: repeat(3, 1fr); }
.kit-couronne .kit-agrafe--g { left: 0; bottom: 1cqi; } .kit-couronne .kit-agrafe--d { right: 0; bottom: 1cqi; }
.kit-accessoires--bandeau .kit-accessoires__grille { grid-template-rows: repeat(5, 1fr); gap: 3cqi; }
.kit-bandeau { display: flex; align-items: center; justify-content: space-between; gap: 2cqi; border: 0.3cqi solid #1b1b1b; border-radius: 2cqi; padding: 0 5cqi; }
.kit-bandeau .kit-agrafe--g { left: 0.8cqi; top: 50%; transform: rotate(-90deg) translateX(50%); transform-origin: left top; }
.kit-bandeau .kit-agrafe--d { right: 0.8cqi; top: 50%; transform: rotate(90deg) translateX(-50%); transform-origin: right top; }
.kit-bandeau__embleme { width: 11cqi; height: 11cqi; color: #c62828; flex: none; }
.kit-bandeau__nom { flex: 1; display: flex; align-items: baseline; gap: 1.5cqi; font-family: 'Shojumaru', var(--titre); font-size: 2.6cqi; color: #1f2333; }
.kit-bandeau__nom i { flex: 1; border-bottom: 0.25cqi dotted #888; height: 3cqi; }
.kit-accessoires--shurikens .kit-accessoires__grille { grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(4, 1fr); }
.kit-shuriken svg { width: 26cqi; height: 26cqi; color: #dfe3ea; }
.kit-shuriken svg path { stroke: #1b1b1b; stroke-width: 1.2; }
.kit-shuriken svg circle { stroke: #1b1b1b; stroke-width: 1.2; stroke-dasharray: 2 2; }

.kit-diplomes { display: grid; grid-template-rows: 1fr 1fr; gap: 3cqi; }
.kit-diplome { border: 1.1cqi double var(--k1); border-radius: 2cqi; background: var(--k-fond); padding: 3cqi 7cqi; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; min-height: 0; color: #2b2b2b; --trou: #fbf2dc; }
.kit-diplome__picto { width: 10cqi; height: 10cqi; color: var(--k2); }
.kit--princesse .kit-diplome__picto { width: 14cqi; height: 10cqi; }
.kit--ninja .kit-diplome__picto { color: var(--k1); --trou: #f7f1e4; }
.kit-diplome__picto svg { width: 100%; height: 100%; display: block; }
.kit-diplome__titre { margin: 1cqi 0 1.4cqi; font-family: var(--k-police), var(--titre); font-size: 6cqi; line-height: 1.1; color: var(--k1); }
.kit-diplome__decerne { margin: 0; font-size: 1.8cqi; font-style: italic; color: #666; }
.kit-diplome__nom { margin: 0.4cqi 0 1cqi; font-family: var(--main); font-size: 6.5cqi; line-height: 1.1; color: var(--k2); width: 100%; min-height: 7cqi; }
.kit-diplome__nom .invit__blanc { width: 60%; height: 6cqi; }
.kit-diplome__texte { margin: 0; font-size: 2cqi; line-height: 1.5; }
.kit-diplome__pied { width: 100%; display: flex; justify-content: space-between; align-items: flex-end; margin-top: 3cqi; font-size: 1.7cqi; }
.kit-diplome__signature { font-family: var(--main); font-size: 2.5cqi; border-top: 0.15cqi solid #1b1b1b; padding-top: 0.4cqi; min-width: 26cqi; }

@page { size: A4; margin: 0; }
@media print {
  html, body { background: #fff; font-size: 12pt; }
  body:has(#apercu):not(.imprime-zone) > *:not(main),
  body:has(#apercu):not(.imprime-zone) main > *:not(.atelier-zone),
  .atelier-zone > .container:not(.atelier), .atelier__reglages, .atelier__barre { display: none !important; }
  main, .atelier-zone, .atelier, .atelier__table { padding: 0 !important; margin: 0 !important; max-width: none !important; background: none !important; border-radius: 0 !important; }
  .atelier-zone, .atelier, .atelier__table { display: block !important; }
  body.imprime-zone > *:not(main), body.imprime-zone main > *:not(.zone-impression) { display: none !important; }
  body.imprime-zone .zone-impression { display: block !important; }
  #apercu { display: block; width: 210mm; gap: 0; }
  .feuille { width: 210mm; height: 297mm; aspect-ratio: auto; box-shadow: none; border-radius: 0; break-after: page; page-break-after: always; }
  .feuille:last-child { break-after: auto; page-break-after: auto; }
  .entete { position: static; }
  * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}
