/* Carnet Japon · le style des pages du carnet (écran et PDF).
   Le plugin écrit du HTML avec des classes cj-* ; tout ce qui se voit est ici.
   Base commune (page, en-tête, pied, note). Les gabarits ont chacun leur bloc plus bas. */

/* ---------- le document ---------- */
.cj-doc{margin:0;background:var(--cj-fond-visionneuse);font-family:var(--cj-police-texte);color:var(--cj-encre);-webkit-font-smoothing:antialiased}
.cj-doc__pages{display:flex;flex-wrap:wrap;gap:24px;justify-content:center;padding:24px}
.cj-doc__barre{flex:0 0 100%;position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:16px;margin:-24px -24px 0;padding:12px max(24px,calc((100% - 1180px) / 2 + 24px));background:var(--cj-fond-entete,#E4D8C2);border-bottom:1px solid var(--cj-filet)}
.cj-doc__marque{font-family:var(--cj-police-titre);font-size:max(var(--cj-plancher,0px),20px);color:var(--cj-encre);text-decoration:none}
.cj-doc__nom{flex:1;font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);color:var(--cj-vermillon)}
.cj-doc__bouton{display:inline-block;border:0;border-radius:999px;padding:12px 22px;background:var(--cj-vermillon);color:var(--cj-blanc);font:700 15px var(--cj-police-texte);text-decoration:none;cursor:pointer}
.cj-doc__bouton--discret{background:transparent;color:var(--cj-encre);box-shadow:inset 0 0 0 1.5px var(--cj-filet);padding:9px 18px;font-size:max(var(--cj-plancher,0px),15px)}
.cj-doc__message{max-width:520px;margin:12vh auto;padding:32px;background:var(--cj-creme);border-radius:var(--cj-rayon);text-align:center}
.cj-doc__message h1{font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),34px);margin:6px 0 12px}
.cj-doc__message p{font-size:max(var(--cj-plancher,0px),17px);line-height:1.5;color:var(--cj-encre-douce)}
.cj-doc__kicker{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),20px);color:var(--cj-vermillon)}
.cj-doc__petit{font-size:max(var(--cj-plancher,0px),13px) !important}
@media (max-width:640px){.cj-doc__pages{gap:14px;padding:12px}.cj-doc__barre{margin:-12px -12px 0;padding:10px 12px;gap:10px}.cj-doc__nom{font-size:max(var(--cj-plancher,0px),15px)}}

/* ---------- la page ---------- */
.cj-page{position:relative;width:var(--cj-page-l);height:var(--cj-page-h);box-sizing:border-box;overflow:hidden;
  padding:var(--cj-marge-haut) var(--cj-marge-x) var(--cj-marge-bas);background:var(--cj-fond);color:var(--cj-encre);
  font-family:var(--cj-police-texte);font-size:max(var(--cj-plancher,0px),var(--cj-t-corps));line-height:1.4;
  display:flex;flex-direction:column;gap:10px;justify-content:space-between;flex:0 0 auto}
.cj-page--pleine{padding:0;justify-content:flex-start}
.cj-page *{box-sizing:border-box}
.cj-page p{margin:0}

/* ---------- en-tête ---------- */
.cj-entete{display:flex;flex-direction:column;gap:0}
.cj-kicker{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),var(--cj-t-kicker));line-height:1;color:var(--cj-vermillon)}
.cj-entete__ligne{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.cj-titre{margin:0;font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),var(--cj-t-titre));line-height:1.05;color:var(--cj-encre);text-transform:uppercase}
.cj-kanji{font-family:var(--cj-police-jp);font-size:var(--cj-t-kanji);color:var(--cj-kanji);white-space:nowrap}
.cj-route{height:2px;margin-top:7px;background-image:radial-gradient(circle,var(--cj-route-points) .9px,transparent 1.2px);background-size:var(--cj-route-pas) 2px;background-repeat:repeat-x}

/* ---------- pied ---------- */
.cj-pied{display:flex;align-items:center;gap:10px;margin-top:auto}
.cj-pied__kei{width:24px;height:16px;flex-shrink:0}
.cj-route--pied{flex-grow:1;margin-top:0}
.cj-pied__num{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.2em;color:var(--cj-encre-douce)}

/* ---------- blocs communs ---------- */
.cj-corps{display:flex;flex-direction:column;gap:10px;flex-grow:1}
.cj-texte{font-size:max(var(--cj-plancher,0px),var(--cj-t-corps));line-height:1.45;color:var(--cj-encre)}
.cj-texte--petit{font-size:max(var(--cj-plancher,0px),var(--cj-t-petit));line-height:1.35;color:var(--cj-encre-douce)}
.cj-label{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),var(--cj-t-label));font-weight:600;letter-spacing:.18em;color:var(--cj-vermillon);text-transform:uppercase}
.cj-meta{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:600;letter-spacing:.14em;color:var(--cj-encre-douce);text-transform:uppercase}
.cj-carte{background:var(--cj-creme);border-radius:var(--cj-rayon);padding:12px 14px}
.cj-carte__titre{font-weight:700;font-size:max(var(--cj-plancher,0px),15px);line-height:1.1}
.cj-sous-titre{display:flex;align-items:center;gap:8px}
.cj-sous-titre .cj-kicker{font-size:max(var(--cj-plancher,0px),15px)}
.cj-sous-titre__titre{font-weight:700;font-size:max(var(--cj-plancher,0px),15px);line-height:1.1}
.cj-kana{font-family:var(--cj-police-jp);font-size:max(var(--cj-plancher,0px),11.5px);color:var(--cj-vermillon);font-weight:400}
.cj-case{display:inline-block;width:12px;height:12px;flex-shrink:0;border:1.5px solid var(--cj-encre-forte);border-radius:3px;vertical-align:middle}
.cj-pastille{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--cj-vermillon);color:var(--cj-creme);font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:600}
.cj-filet{border-bottom:1px solid var(--cj-filet-doux)}

/* ---------- la note manuscrite ---------- */
.cj-note{display:flex;flex-direction:column;gap:0;padding-top:2px}
.cj-note__titre{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),var(--cj-t-note));line-height:1;color:var(--cj-vermillon);transform:rotate(-2deg);transform-origin:left bottom;padding-left:6px}
.cj-note__courbe{width:384px;height:46px;display:block}
.cj-note__courbe text{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),var(--cj-t-note-texte));fill:var(--cj-encre)}
.cj-note__manuscrit{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);line-height:1.25;color:var(--cj-encre)}

/* ======================================================================
   JOUR, PAGE DROITE · le programme (maquette « Page 10 · jour 3, programme », passé à droite)
   ====================================================================== */
.cj-page--jour-droite{gap:14px;justify-content:flex-start}
/* l'en-tête réduit de la page programme (le titre du jour est à gauche, sous la photo) */
.cj-jour-rappel{display:flex;align-items:center;gap:10px}
.cj-jour-rappel__jour{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),24px);line-height:1;color:var(--cj-vermillon)}
.cj-jour-rappel__filet{flex-grow:1;height:1px;background:var(--cj-filet)}
.cj-jour-rappel__meta{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.16em;text-transform:uppercase;color:var(--cj-encre-douce)}
.cj-jour-entete{display:flex;gap:14px;align-items:center}
/* sous la photo : la légende manuscrite déborde de 14 px sur la page, on laisse la place */
.cj-page--jour-gauche .cj-jour-entete{margin-top:14px}
.cj-page--jour-gauche .cj-jour-accroche{font-size:max(var(--cj-plancher,0px),15px);margin-top:2px}
.cj-page--jour-gauche .cj-jour-titre{font-size:max(var(--cj-plancher,0px),28px)}
.cj-page--jour-gauche .cj-jour-titre--long{font-size:max(var(--cj-plancher,0px),24px)}
.cj-page--jour-gauche .cj-jour-badge{width:56px;height:56px}
.cj-page--jour-gauche .cj-jour-badge__num{font-size:max(var(--cj-plancher,0px),28px)}
.cj-jour-badge{width:64px;height:64px;flex-shrink:0;border-radius:50%;background:var(--cj-creme);display:flex;flex-direction:column;align-items:center;justify-content:center}
.cj-jour-badge__mot{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.2em;text-transform:uppercase;color:var(--cj-encre-douce)}
.cj-jour-badge__num{font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),34px);line-height:1;color:var(--cj-encre)}
.cj-jour-entete__texte{display:flex;flex-direction:column;gap:3px;min-width:0}
.cj-jour-entete__texte .cj-meta{font-weight:400;font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.18em}
.cj-jour-titre{margin:0;font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),28px);line-height:1;color:var(--cj-encre)}
.cj-jour-accroche{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);line-height:1.1;color:var(--cj-vermillon)}
.cj-page--jour-droite .cj-route{margin-top:0;flex-shrink:0}

.cj-jour-fil{flex-grow:1;display:flex;flex-direction:column;justify-content:space-between;gap:6px;min-height:0}
.cj-jour-moment{display:flex;align-items:center;gap:8px;padding-top:4px}
.cj-jour-moment__nom{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--cj-vermillon)}
.cj-jour-moment__filet{flex-grow:1;height:1px;background:var(--cj-filet)}
.cj-jour-moment__note{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.08em;color:var(--cj-encre-douce)}

.cj-etape{display:flex;gap:12px;align-items:flex-start}
/* la numérotation façon place de parking : un contour ouvert en bas, le chiffre peint dedans */
.cj-place{display:inline-flex;align-items:flex-start;justify-content:center;width:24px;height:21px;flex-shrink:0;padding-top:3px;
  border:1.5px solid var(--cj-encre);border-bottom:0;border-radius:2px 2px 0 0;font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),11.5px);font-weight:700;line-height:1;color:var(--cj-vermillon)}
.cj-etape .cj-place{margin-top:1px}
.cj-etape__texte{display:flex;flex-direction:column;gap:2px;flex-grow:1;min-width:0}
.cj-etape__nom{font-weight:700;font-size:max(var(--cj-plancher,0px),15px);line-height:1.2;color:var(--cj-encre);text-decoration:none}
a.cj-etape__nom:hover{color:var(--cj-vermillon)}
.cj-etape__tip{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.4;color:var(--cj-encre-douce)}

.cj-trajet{display:flex;align-items:center;gap:6px;padding-left:34px;font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.06em;text-transform:uppercase;color:var(--cj-vermillon)}
.cj-trajet__icone{width:13px;height:13px;flex-shrink:0;color:var(--cj-vermillon)}

.cj-repas{display:flex;gap:8px;align-items:flex-start;padding:8px 12px;border-radius:var(--cj-rayon);background:var(--cj-creme)}
.cj-repas__icone{width:16px;height:16px;flex-shrink:0;color:var(--cj-vermillon);margin-top:1px}
.cj-repas__texte{display:flex;flex-direction:column;gap:2px;min-width:0}
.cj-repas__label{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--cj-vermillon)}
.cj-repas__nom{color:inherit;text-decoration:none}
.cj-repas__detail{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.35;color:var(--cj-encre)}

/* journées chargées (7 ou 8 étapes) : tout se resserre un peu ; au-delà, encore un cran */
.cj-jour-fil--dense{gap:3px}
.cj-jour-fil--dense .cj-jour-moment{padding-top:2px}
.cj-jour-fil--dense .cj-etape__nom{font-size:max(var(--cj-plancher,0px),13px)}
.cj-jour-fil--dense .cj-etape__tip{font-size:max(var(--cj-plancher,0px),10px);line-height:1.3}
.cj-jour-fil--dense .cj-trajet{font-size:max(var(--cj-plancher,0px),10px)}
.cj-jour-fil--dense .cj-repas{padding:6px 10px}
.cj-jour-fil--dense .cj-repas__detail{font-size:max(var(--cj-plancher,0px),10px);line-height:1.3}
.cj-jour-fil--tres-dense{gap:2px}
.cj-jour-fil--tres-dense .cj-jour-moment{padding-top:0}
.cj-jour-fil--tres-dense .cj-etape{gap:10px}
.cj-jour-fil--tres-dense .cj-etape .cj-place{width:20px;height:18px;font-size:max(var(--cj-plancher,0px),10px)}
.cj-jour-fil--tres-dense .cj-etape__nom{font-size:max(var(--cj-plancher,0px),13px)}
.cj-jour-fil--tres-dense .cj-etape__tip{font-size:max(var(--cj-plancher,0px),10px);line-height:1.25}
.cj-jour-fil--tres-dense .cj-trajet{font-size:max(var(--cj-plancher,0px),10px);padding-left:28px}
.cj-jour-fil--tres-dense .cj-repas{padding:5px 10px}
.cj-jour-fil--tres-dense .cj-repas__detail{font-size:max(var(--cj-plancher,0px),10px);line-height:1.25}

/* ======================================================================
   JOUR, PAGE GAUCHE · photo, temps forts, carte (maquette « Page 11 », passée à gauche)
   ====================================================================== */
.cj-page--jour-gauche{padding-top:0;gap:14px;justify-content:flex-start}
.cj-photo{position:relative;margin:0 calc(-1 * var(--cj-marge-x));height:300px;flex-shrink:0;background:#D9CFBE;background-image:repeating-linear-gradient(135deg,rgba(38,33,28,.06) 0 1px,transparent 1px 14px)}
.cj-photo--courte{height:250px}
.cj-photo--mini{height:200px}
.cj-photo__img{display:block;width:100%;height:100%;object-fit:cover}
.cj-photo__vide{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.cj-photo__vide-texte{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.18em;text-transform:uppercase;color:var(--cj-vermillon);text-align:center;line-height:1.6}
.cj-photo__legende{position:absolute;left:24px;bottom:-14px;max-width:calc(100% - 48px);padding:6px 12px;background:var(--cj-creme);border-radius:var(--cj-rayon);font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);line-height:1.1;color:var(--cj-encre);transform:rotate(-2deg)}

.cj-encart{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:var(--cj-rayon);background:var(--cj-creme)}
.cj-encart__icone{width:20px;height:20px;flex-shrink:0;color:var(--cj-vermillon)}
.cj-encart__texte{display:flex;flex-direction:column;gap:3px;min-width:0}
.cj-encart__label{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--cj-vermillon)}
.cj-encart__corps{font-size:max(var(--cj-plancher,0px),13px);line-height:1.4;color:var(--cj-encre)}
.cj-encart__corps strong{font-weight:700}

.cj-pepite{display:flex;flex-direction:column;gap:2px;padding:0 4px}
.cj-pepite__titre{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);line-height:1;color:var(--cj-vermillon);transform:rotate(-2deg);transform-origin:left bottom}
.cj-pepite__texte{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),15px);line-height:1.22;color:var(--cj-encre)}

.cj-saviez{display:flex;flex-direction:column;gap:2px;padding:0 4px}
.cj-saviez .cj-label{font-size:max(var(--cj-plancher,0px),10px)}

/* la carte prend la place qui reste : 200 px quand la page est aérée, jamais moins de 150 px quand les textes sont longs */
.cj-carte-jour{margin-top:auto;display:flex;flex-direction:column;gap:6px;flex:0 1 190px;min-height:120px}
.cj-carte-jour__cadre{position:relative;flex:1 1 auto;min-height:120px;border-radius:var(--cj-rayon);overflow:hidden;background:var(--cj-creme);
  box-shadow:inset 0 0 0 1px rgba(139,107,78,.28),inset 0 0 0 5px var(--cj-creme),inset 0 0 0 6px rgba(139,107,78,.18)}
.cj-carte-jour__svg{position:absolute;left:3px;top:3px;width:calc(100% - 6px);height:calc(100% - 6px);overflow:visible}
.cj-carte-jour__trace{fill:none;stroke-linecap:round}
.cj-carte-jour__trace--transport{stroke:var(--cj-vermillon);stroke-width:3.5;stroke-dasharray:7 5}
.cj-carte-jour__trace--pied{stroke:var(--cj-encre);stroke-width:1.5;stroke-dasharray:3 4}
.cj-carte-jour__pin path{fill:var(--cj-creme);stroke:var(--cj-encre);stroke-width:1.5;stroke-linejoin:round}
.cj-carte-jour__num{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:700;fill:var(--cj-vermillon)}
.cj-carte-jour__point{fill:var(--cj-vermillon)}
.cj-carte-jour__hotel{color:var(--cj-encre)}
.cj-carte-jour__etiquette{font-family:var(--cj-police-mono);font-size:7.5px;letter-spacing:.1em;text-transform:uppercase;fill:var(--cj-encre)}
.cj-carte-jour__nord circle{fill:none;stroke:var(--cj-encre);stroke-width:.8;opacity:.6}
.cj-carte-jour__aiguille{fill:var(--cj-encre)}
.cj-carte-jour__aiguille-n{fill:var(--cj-vermillon)}
.cj-carte-jour__nord text{font-family:var(--cj-police-mono);font-size:8px;fill:var(--cj-encre)}
.cj-carte-jour__legende{position:absolute;right:10px;bottom:8px;display:flex;gap:10px;font-family:var(--cj-police-mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--cj-encre-douce);background:rgba(251,247,238,.92);padding:3px 6px}
.cj-carte-jour__legende span{display:flex;align-items:center;gap:4px}
.cj-carte-jour__legende i{display:inline-block}
.cj-carte-jour__l-transport{width:14px;height:0;border-top:3px dashed var(--cj-vermillon)}
.cj-carte-jour__l-pied{width:12px;height:0;border-top:1.5px dashed var(--cj-encre)}
.cj-carte-jour__l-hotel{width:16px;height:11px;color:var(--cj-encre)}

.cj-pied--carte{margin-top:0}
.cj-pied--carte__label{font-size:max(var(--cj-plancher,0px),10px);text-decoration:none}
a.cj-pied--carte__label:hover{color:var(--cj-vermillon)}

/* ---------- outils ---------- */
.cj-debug{font-family:var(--cj-police-mono);font-size:9px;line-height:1.3;white-space:pre-wrap;background:var(--cj-creme);border-radius:var(--cj-rayon);padding:10px;overflow:hidden;max-height:600px}
.cj-deborde{position:absolute;top:6px;right:6px;background:var(--cj-vermillon);color:#fff;font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);padding:3px 8px;border-radius:4px}

/* ====== GABARITS (assemblés depuis assets/css/parts/) ====== */

/* --- parts/adresses.css --- */
/* ======================================================================
   ADRESSES · les bonnes adresses shopping, par catégorie de couleur (maquette « Page 34 · bonnes adresses »)
   ====================================================================== */
.cj-page--adresses{gap:8px}
/* comme la maquette : en-tête, légende, grille, note et pied se répartissent la hauteur (le pied ne prend pas tout le vide) */
.cj-page--adresses .cj-pied{margin-top:0}
.cj-page--adresses .cj-titre{font-size:max(var(--cj-plancher,0px),34px)}

/* ---------- la légende ---------- */
.cj-adr-legende{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.cj-adr-legende__label{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.14em;text-transform:uppercase;color:var(--cj-vermillon)}
.cj-adr-legende__item{display:inline-flex;align-items:center;gap:4px;font-size:max(var(--cj-plancher,0px),10px);font-weight:700;line-height:1.2}
.cj-adr-pastille{display:inline-block;width:12px;height:12px;flex-shrink:0;border-radius:3px;border:1px solid var(--cj-filet);background:var(--cj-creme)}

/* ---------- la grille des adresses ---------- */
.cj-adr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;align-content:start}
.cj-adr-carte{display:flex;gap:8px;align-items:flex-start;padding:6px 9px;border-radius:var(--cj-rayon);background:var(--cj-creme);min-width:0}
.cj-adr-carte__case{width:13px;height:13px;margin-top:2px}
.cj-adr-carte__textes{display:flex;flex-direction:column;gap:2px;min-width:0}
.cj-adr-carte__tete{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.cj-adr-carte__nom{font-weight:700;font-size:max(var(--cj-plancher,0px),13px);line-height:1.15;color:var(--cj-encre)}
.cj-adr-carte__tete .cj-kana{font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-adr-carte__texte{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.38;color:var(--cj-encre)}

/* ---------- les fonds de catégorie (cartes et pastilles de la légende) ---------- */
.cj-adr-cat--souvenirs{background:var(--cj-cat-souvenirs)}
.cj-adr-cat--kawaii{background:var(--cj-cat-kawaii)}
.cj-adr-cat--geek{background:var(--cj-cat-geek)}
.cj-adr-cat--mode{background:var(--cj-cat-mode)}
.cj-adr-cat--vintage{background:var(--cj-cat-vintage)}

/* ---------- plus d'adresses que la maquette (Kansai, intérêts) : la grille se resserre, puis encore un cran ---------- */
.cj-adr--dense{gap:5px}
.cj-adr--dense .cj-adr-carte{padding:5px 8px;gap:7px}
.cj-adr--dense .cj-adr-carte__nom{font-size:max(var(--cj-plancher,0px),13px)}
.cj-adr--dense .cj-adr-carte__texte{font-size:max(var(--cj-plancher,0px),10px);line-height:1.3}
.cj-adr--tres-dense{gap:4px}
.cj-adr--tres-dense .cj-adr-carte{padding:4px 8px;gap:6px}
.cj-adr--tres-dense .cj-adr-carte__textes{gap:1px}
.cj-adr--tres-dense .cj-adr-carte__nom{font-size:max(var(--cj-plancher,0px),13px)}
.cj-adr--tres-dense .cj-adr-carte__tete .cj-kana{font-size:max(var(--cj-plancher,0px),10px)}
.cj-adr--tres-dense .cj-adr-carte__texte{font-size:max(var(--cj-plancher,0px),10px);line-height:1.25}

/* --- parts/bingo.css --- */
/* ======================================================================
   BINGO · le bingo du voyage : défis en grille, case offerte, tampon et score (maquette « Page 37 · défis & bingo »)
   ====================================================================== */
.cj-page--bingo{gap:14px}
/* comme la maquette : en-tête, grille, score et pied se répartissent la hauteur (le pied ne prend pas tout le vide) */
.cj-page--bingo .cj-pied{margin-top:0}
.cj-page--bingo .cj-titre{font-size:max(var(--cj-plancher,0px),34px)}

/* ---------- la grille ---------- */
.cj-bingo-grille{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px}
.cj-bingo-grille--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.cj-bingo-grille--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.cj-bingo-grille--6{grid-template-columns:repeat(6,minmax(0,1fr))}
.cj-bingo-case{aspect-ratio:1/1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:4px;
  border:1px solid var(--cj-filet);border-radius:var(--cj-rayon-petit);text-align:center}
.cj-bingo-case__icone{width:26px;height:26px;flex-shrink:0;color:var(--cj-encre)}
.cj-bingo-case__texte{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.02;color:var(--cj-encre);overflow-wrap:anywhere;hyphens:auto}
/* la case offerte, au centre : pleine de vermillon */
.cj-bingo-case--centre{gap:0;border:1.5px solid var(--cj-vermillon);background:var(--cj-vermillon)}
.cj-bingo-case__kanji{font-family:var(--cj-police-jp);font-size:22px;line-height:1;color:var(--cj-creme)}
.cj-bingo-case__offerte{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.1;color:var(--cj-creme)}
/* des intitulés plus longs que la maquette : icône plus petite, texte resserré */
.cj-bingo--dense .cj-bingo-case{gap:2px;padding:3px}
.cj-bingo--dense .cj-bingo-case__icone{width:20px;height:20px}
.cj-bingo--dense .cj-bingo-case__texte{font-size:max(var(--cj-plancher,0px),10px);line-height:1}

/* ---------- le bas : tampon, score, défi bonus ---------- */
.cj-bingo-bas{display:flex;gap:14px;align-items:center}
.cj-bingo-tampon{width:104px;height:104px;flex-shrink:0;border-radius:50%;border:3px solid var(--cj-bois);display:flex;align-items:center;justify-content:center;opacity:.9}
.cj-bingo-tampon__mot{font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),28px);line-height:1;color:var(--cj-vermillon);text-transform:uppercase;text-align:center}
.cj-bingo-bas__textes{flex-grow:1;display:flex;flex-direction:column;gap:6px;min-width:0}
.cj-bingo-score{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);line-height:1.2;color:var(--cj-encre)}
.cj-bingo-bonus{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.4;color:var(--cj-encre)}

/* --- parts/budget.css --- */
/* ======================================================================
   BUDGET · le budget du séjour : le total prévu, le par jour, les repères de prix, les astuces (maquette « Page 28 · budget »)
   ====================================================================== */
.cj-page--budget .cj-titre{font-size:max(var(--cj-plancher,0px),40px)}
.cj-budget{display:flex;flex-direction:column;justify-content:space-between;gap:10px;flex-grow:1;min-height:0}

/* ---------- les deux chiffres : le total dans un cadre, le par jour sur un filet ---------- */
.cj-budget-chiffres{display:flex;gap:10px;align-items:stretch}
.cj-budget-chiffre{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:2px;color:var(--cj-encre)}
.cj-budget-chiffre--cadre{padding:10px 12px;border:1px solid var(--cj-filet);border-radius:var(--cj-rayon-petit)}
.cj-budget-chiffre--filet{padding:10px 2px;border-bottom:1px solid var(--cj-filet)}
.cj-budget-chiffre__label{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),15px);line-height:1.1}
.cj-budget-chiffre__label--accent{color:var(--cj-vermillon)}
.cj-budget-chiffre__montant{font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),24px);line-height:1.1}
.cj-budget-chiffre__sous{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.3;color:var(--cj-encre-douce)}

/* ---------- les repères de prix : une liste à filets, le prix en mono à droite ---------- */
.cj-budget-reperes{display:flex;flex-direction:column;gap:10px}
.cj-budget-reperes__label{color:var(--cj-encre-douce)}
.cj-budget-reperes__liste{display:flex;flex-direction:column;border-bottom:1px solid var(--cj-filet)}
.cj-budget-repere{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:6px 12px;border-bottom:1px solid var(--cj-filet-doux)}
.cj-budget-repere:last-child{border-bottom:0}
.cj-budget-repere__nom{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.3}
.cj-budget-repere__prix{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),11.5px);font-weight:600;white-space:nowrap;color:var(--cj-vermillon)}

/* ---------- les astuces : une carte crème cadrée, un grand titre serif, deux colonnes ---------- */
.cj-budget-astuces{display:flex;flex-direction:column;gap:8px;padding:12px 14px;border:1px solid var(--cj-filet);border-radius:var(--cj-rayon);background:var(--cj-creme)}
.cj-budget-astuces__tete{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.cj-budget-astuces__titre{font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),24px);line-height:1.05;text-transform:uppercase;color:var(--cj-encre-douce)}
.cj-budget-astuces__accroche{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);line-height:1.1;text-align:right;color:var(--cj-encre-douce)}
.cj-budget-astuces__grille{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.cj-budget-astuce{display:flex;flex-direction:column;gap:3px;padding:10px 2px;border-bottom:1px solid var(--cj-filet)}
.cj-budget-astuce__titre{font-weight:700;font-size:max(var(--cj-plancher,0px),13px);line-height:1.15}
.cj-budget-astuce__texte{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.3;color:var(--cj-encre-douce)}

/* plus de repères ou d'astuces (enfants…) : tout se resserre, puis encore un cran */
.cj-budget--dense{gap:8px}
.cj-budget--dense .cj-budget-reperes{gap:6px}
.cj-budget--dense .cj-budget-repere{padding:4px 12px}
.cj-budget--dense .cj-budget-astuces{padding:9px 12px;gap:5px}
.cj-budget--dense .cj-budget-astuce{padding:6px 2px;gap:2px}
.cj-budget--dense .cj-budget-astuce__titre{font-size:max(var(--cj-plancher,0px),13px)}
.cj-budget--dense .cj-budget-astuce__texte{font-size:max(var(--cj-plancher,0px),10px);line-height:1.25}
.cj-budget--tres-dense{gap:6px}
.cj-budget--tres-dense .cj-budget-chiffre--cadre,.cj-budget--tres-dense .cj-budget-chiffre--filet{padding-top:7px;padding-bottom:7px}
.cj-budget--tres-dense .cj-budget-reperes{gap:4px}
.cj-budget--tres-dense .cj-budget-repere{padding:3px 10px}
.cj-budget--tres-dense .cj-budget-repere__nom{font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-budget--tres-dense .cj-budget-astuces{padding:7px 11px;gap:4px}
.cj-budget--tres-dense .cj-budget-astuces__titre{font-size:max(var(--cj-plancher,0px),24px)}
.cj-budget--tres-dense .cj-budget-astuces__grille{gap:4px}
.cj-budget--tres-dense .cj-budget-astuce{padding:4px 2px;gap:1px}
.cj-budget--tres-dense .cj-budget-astuce__titre{font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-budget--tres-dense .cj-budget-astuce__texte{font-size:max(var(--cj-plancher,0px),10px);line-height:1.2}

/* ---------- le montant choisi au quiz (curseur, par personne), avec notre calcul dessous ---------- */
.cj-budget-chiffre__ligne{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 6px}
.cj-budget-chiffre__pp{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.3;color:var(--cj-encre-douce)}
.cj-budget-chiffre__calcul{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.3;color:var(--cj-encre-douce)}

/* --- parts/carte-postale.css --- */
/* ======================================================================
   CARTE-POSTALE · l'étiquette, la lettre, la carte d'embarquement, le sticker (maquette « Première page, carte postale »)
   ====================================================================== */
/* la page est composée en absolu dans le cadre 440 × 840, comme la maquette */
.cj-cp{position:absolute;inset:0}

/* l'étiquette bois en haut à gauche */
.cj-cp-etiquette{position:absolute;left:25px;top:30px;width:251px;min-height:58px;padding:10px 16px 10px 30px;display:flex;flex-direction:column;justify-content:center;gap:2px;text-align:center;
  background:var(--cj-bois);border-radius:var(--cj-rayon-petit);clip-path:polygon(14px 0,100% 0,100% 100%,14px 100%,0 50%)}
.cj-cp-etiquette__point{position:absolute;left:16px;top:50%;width:8px;height:8px;margin-top:-4px;border-radius:50%;background:var(--cj-lin)}
.cj-cp-etiquette__accroche{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),13px);letter-spacing:.05em;text-transform:uppercase;color:var(--cj-fond)}
.cj-cp-etiquette__noms{font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),24px);line-height:1;color:var(--cj-encre)}
.cj-cp-trombone{position:absolute;left:363px;top:77px;width:24px;height:64px;color:var(--cj-lac)}

/* la lettre, légèrement penchée, bord déchiré */
.cj-cp-lettre{position:absolute;left:20px;top:118px;width:400px;height:380px;transform:rotate(-2.5deg);transform-origin:center center}
.cj-cp-lettre__papier{width:400px;height:380px;padding:26px 28px 22px;background:var(--cj-creme);border-radius:var(--cj-rayon);
  display:flex;flex-direction:column;justify-content:center;align-items:center;gap:10px;text-align:center;font-family:var(--cj-police-main);color:var(--cj-encre);
  clip-path:polygon(0px 2px, 9px 4px, 18px 3px, 29px 0px, 41px 0px, 52px 0px, 61px 3px, 76px 1px, 85px 4px, 101px 3px, 112px 6px, 120px 5px, 131px 1px, 140px 2px, 154px 1px, 167px 4px, 178px 3px, 186px 0px, 196px 4px, 207px 2px, 220px 3px, 231px 5px, 244px 1px, 257px 3px, 272px 4px, 282px 6px, 291px 3px, 305px 1px, 317px 0px, 330px 5px, 343px 5px, 353px 4px, 366px 3px, 378px 5px, 393px 3px, 400px 0px, 396px 14px, 395px 30px, 398px 40px, 400px 53px, 399px 65px, 400px 74px, 399px 88px, 398px 98px, 400px 113px, 397px 125px, 395px 140px, 398px 154px, 398px 166px, 394px 181px, 399px 190px, 399px 200px, 396px 212px, 400px 222px, 398px 233px, 394px 246px, 397px 259px, 396px 272px, 395px 281px, 395px 295px, 398px 309px, 399px 321px, 400px 334px, 399px 342px, 398px 351px, 400px 360px, 399px 369px, 400px 380px, 391px 378px, 380px 378px, 371px 375px, 355px 377px, 343px 379px, 334px 378px, 324px 375px, 315px 380px, 299px 377px, 290px 377px, 282px 377px, 266px 375px, 253px 378px, 242px 379px, 228px 377px, 213px 378px, 203px 375px, 188px 375px, 173px 375px, 159px 379px, 147px 378px, 139px 380px, 129px 378px, 115px 374px, 104px 374px, 88px 374px, 77px 379px, 67px 379px, 57px 376px, 42px 375px, 30px 376px, 16px 379px, 3px 375px, 1px 368px, 2px 354px, 6px 339px, 2px 328px, 4px 313px, 1px 303px, 5px 294px, 1px 280px, 6px 265px, 2px 252px, 1px 239px, 6px 231px, 3px 218px, 3px 203px, 5px 188px, 2px 178px, 1px 168px, 2px 155px, 1px 144px, 2px 128px, 4px 117px, 3px 101px, 3px 86px, 3px 74px, 3px 66px, 0px 56px, 1px 42px, 4px 30px, 2px 18px, 3px 5px)}
.cj-cp-lettre__salut{font-size:max(var(--cj-plancher,0px),28px);line-height:1}
.cj-cp-lettre__texte{font-size:max(var(--cj-plancher,0px),17px);line-height:1.28}
.cj-cp-lettre__fin{font-size:max(var(--cj-plancher,0px),17px);line-height:1.2}
.cj-cp-lettre__signature{font-size:max(var(--cj-plancher,0px),20px);line-height:1;color:var(--cj-vermillon)}

/* la carte d'embarquement : le corps et le talon détachable */
.cj-cp-billet{position:absolute;left:31px;bottom:161px;width:378px;min-height:146px;display:flex;border-radius:var(--cj-rayon);background:var(--cj-creme);font-family:var(--cj-police-mono)}
.cj-cp-billet__corps{flex-grow:1;min-width:0;padding:12px 14px 10px 16px;display:flex;flex-direction:column;justify-content:space-between;gap:6px}
.cj-cp-billet__entete{display:flex;justify-content:space-between;gap:8px;font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.16em;text-transform:uppercase;color:var(--cj-encre-douce)}
.cj-cp-billet__trajet{display:flex;align-items:center;gap:12px;font-family:var(--cj-police-texte);font-weight:800;font-size:max(var(--cj-plancher,0px),20px);letter-spacing:.02em;text-transform:uppercase;color:var(--cj-encre)}
.cj-cp-billet__avion{width:26px;height:20px;color:var(--cj-encre);flex-shrink:0}
.cj-cp-billet__avion--petit{width:16px;height:12px}
.cj-cp-billet__champs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.cj-cp-billet__champ{display:flex;flex-direction:column;gap:2px;min-width:0}
.cj-cp-billet__champ--large{grid-column:span 2}
.cj-cp-billet__label{font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.14em;text-transform:uppercase;color:var(--cj-encre-douce)}
.cj-cp-billet__valeur{font-size:max(var(--cj-plancher,0px),10px);font-weight:600;text-transform:uppercase;overflow-wrap:anywhere}
.cj-cp-billet__code{display:block;height:16px;width:150px;background:repeating-linear-gradient(90deg,var(--cj-encre) 0 2px,transparent 2px 4px,var(--cj-encre) 4px 5px,transparent 5px 8px,var(--cj-encre) 8px 11px,transparent 11px 13px)}
.cj-cp-billet__talon{width:92px;flex-shrink:0;border-left:2px dashed var(--cj-encre-pale);padding:12px 10px 10px 12px;display:flex;flex-direction:column;gap:6px}
.cj-cp-billet__talon .cj-cp-billet__valeur{font-size:max(var(--cj-plancher,0px),10px)}
.cj-cp-billet__code--talon{margin-top:auto;height:26px;width:auto;background:repeating-linear-gradient(90deg,var(--cj-encre) 0 2px,transparent 2px 4px,var(--cj-encre) 4px 6px,transparent 6px 7px)}

/* le sticker valise, posé sur le coin du billet */
.cj-cp-valise{position:absolute;left:290px;top:608px;width:118px;height:200px}

/* --- parts/carte-spots.css --- */
/* ======================================================================
   CARTE-SPOTS · la carte des spots otaku : boucle Yamanote, épingles, hors carte, « à réserver », deux fiches (maquette « Page 31 · otaku »)
   ====================================================================== */
.cj-page--carte-spots .cj-titre{font-size:max(var(--cj-plancher,0px),40px)}
.cj-spots{display:flex;flex-direction:column;gap:8px;flex-grow:1;min-height:0;justify-content:space-between}

/* ---------- la carte : un cadre crème à double filet, le fond du thème, les épingles par-dessus ---------- */
.cj-spots-carte{display:flex;justify-content:center;padding:8px 0 6px;border-radius:var(--cj-rayon);background:var(--cj-creme);
  box-shadow:inset 0 0 0 1px rgba(139,107,78,.28),inset 0 0 0 5px var(--cj-creme),inset 0 0 0 6px rgba(139,107,78,.18)}
.cj-spots-carte__cadre{position:relative;width:100%;aspect-ratio:384/310}
.cj-spots-carte__fond,.cj-spots-carte__epingles{position:absolute;inset:0;width:100%;height:100%;display:block;overflow:visible}
.cj-yamanote__nom{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),15px)}
.cj-spots-epingle path{fill:var(--cj-vermillon)}
.cj-spots-epingle circle{fill:var(--cj-creme)}
.cj-spots-epingle__nom,.cj-spots-epingle__ligne{font-family:var(--cj-police-texte);fill:var(--cj-encre);paint-order:stroke;stroke:var(--cj-creme);stroke-width:4px;stroke-linejoin:round}
.cj-spots-epingle__nom{font-weight:700;font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-spots-epingle__ligne{font-size:max(var(--cj-plancher,0px),10px);fill:var(--cj-encre-douce)}
.cj-spots-repere{fill:var(--cj-creme);stroke:var(--cj-encre);stroke-width:1.6}
.cj-spots-repere__nom{font-family:var(--cj-police-mono);font-size:8px;letter-spacing:.1em;text-transform:uppercase;fill:var(--cj-encre-douce)}
.cj-spots-hors{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),15px);fill:var(--cj-vermillon)}

/* ---------- le complément par ville ---------- */
.cj-spots-complement{font-size:max(var(--cj-plancher,0px),10px);line-height:1.35;color:var(--cj-encre-douce);padding:0 4px}
.cj-spots-complement strong{font-weight:700}
.cj-spots-complement__kicker{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),15px);color:var(--cj-vermillon)}

/* ---------- à réserver : un cadre pointillé rouge ---------- */
.cj-spots-resa{display:flex;gap:10px;align-items:center;padding:8px 12px;border-radius:var(--cj-rayon);border:1.5px dashed var(--cj-vermillon)}
.cj-spots-resa__label{flex-shrink:0;font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);line-height:1;color:var(--cj-vermillon);transform:rotate(-4deg)}
.cj-spots-resa__lignes{display:flex;flex-direction:column;gap:1px;min-width:0}
.cj-spots-resa__ligne{font-size:max(var(--cj-plancher,0px),10px);line-height:1.3}
.cj-spots-resa__ligne strong{font-weight:700}

/* ---------- les fiches : dessin + titre + lignes ---------- */
.cj-spots-cartes{display:flex;gap:10px}
.cj-spots-fiche{flex:1 1 0;min-width:0;display:flex;gap:8px;align-items:center;padding:10px}
.cj-spots-fiche__dessin{width:54px;height:62px;flex-shrink:0;display:block}
.cj-spots-fiche__textes{display:flex;flex-direction:column;gap:2px;min-width:0}
.cj-spots-fiche__titre{font-weight:700;font-size:max(var(--cj-plancher,0px),13px);line-height:1.1}
.cj-spots-fiche__titre .cj-kana{font-size:max(var(--cj-plancher,0px),10px);white-space:nowrap}
.cj-spots-fiche__ligne{font-size:max(var(--cj-plancher,0px),10px);line-height:1.3;color:var(--cj-encre)}
.cj-spots-fiche__ligne strong{font-weight:700}

/* ---------- dense : la carte se resserre pour laisser la place aux textes ---------- */
.cj-spots--dense{gap:6px}
.cj-spots--dense .cj-spots-carte{padding:6px 0 4px}
.cj-spots--dense .cj-spots-carte__cadre{width:86%}
.cj-spots--dense .cj-spots-resa{padding:6px 10px}
.cj-spots--dense .cj-spots-fiche{padding:8px}
.cj-spots--dense .cj-spots-fiche__ligne,.cj-spots--dense .cj-spots-resa__ligne,.cj-spots--dense .cj-spots-complement{font-size:max(var(--cj-plancher,0px),10px);line-height:1.25}

/* --- parts/checklist.css --- */
/* ======================================================================
   CHECKLIST · les préparatifs, par échéance, à cocher (maquette « Page 5 · les préparatifs »)
   ====================================================================== */
.cj-page--checklist{justify-content:flex-start}
.cj-page--checklist .cj-titre{font-size:max(var(--cj-plancher,0px),34px)}
/* les groupes et les encarts se répartissent sur la hauteur, comme la maquette */
.cj-checklist{display:flex;flex-direction:column;justify-content:space-between;gap:10px;flex-grow:1;min-height:0}
/* un groupe = une carte crème : l'échéance manuscrite, puis les lignes */
.cj-checklist__groupe{display:flex;flex-direction:column;gap:9px;padding:12px 14px}
.cj-checklist__quand{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),20px);line-height:1;color:var(--cj-vermillon)}
.cj-checklist__item{display:flex;gap:9px;align-items:flex-start}
.cj-checklist__item .cj-case{margin-top:3px}
.cj-checklist__icone{width:20px;height:20px;flex-shrink:0;color:var(--cj-encre)}
.cj-checklist__texte{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.4;color:var(--cj-encre);min-width:0}
.cj-checklist__titre{font-weight:700}
/* les encarts du bas : deux colonnes entre deux filets */
.cj-checklist__encarts{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.cj-checklist__encart{display:flex;flex-direction:column;gap:3px;padding:10px 2px;border-top:1px solid var(--cj-filet);border-bottom:1px solid var(--cj-filet)}
.cj-checklist__encart-texte{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.4;color:var(--cj-encre)}
.cj-checklist__encart-texte strong{font-family:var(--cj-police-mono);font-weight:600}
/* plus de lignes que la maquette (jetons, enfants, Kansai…) : tout se resserre, puis encore un cran */
.cj-checklist--dense{gap:7px}
.cj-checklist--dense .cj-checklist__groupe{gap:7px;padding:10px 13px}
.cj-checklist--dense .cj-checklist__quand{font-size:max(var(--cj-plancher,0px),17px)}
.cj-checklist--dense .cj-checklist__texte,.cj-checklist--dense .cj-checklist__encart-texte{font-size:max(var(--cj-plancher,0px),10px);line-height:1.35}
.cj-checklist--dense .cj-checklist__icone{width:18px;height:18px}
.cj-checklist--dense .cj-checklist__item .cj-case{margin-top:2px}
.cj-checklist--dense .cj-checklist__encart{padding:7px 2px}
.cj-checklist--tres-dense{gap:5px}
.cj-checklist--tres-dense .cj-checklist__groupe{gap:4px;padding:7px 11px}
.cj-checklist--tres-dense .cj-checklist__quand{font-size:max(var(--cj-plancher,0px),17px)}
.cj-checklist--tres-dense .cj-checklist__item{gap:7px}
.cj-checklist--tres-dense .cj-checklist__texte,.cj-checklist--tres-dense .cj-checklist__encart-texte{font-size:max(var(--cj-plancher,0px),10px);line-height:1.25}
.cj-checklist--tres-dense .cj-checklist__icone{width:15px;height:15px}
.cj-checklist--tres-dense .cj-checklist__item .cj-case{margin-top:1px;width:11px;height:11px}
.cj-checklist--tres-dense .cj-checklist__encarts{gap:8px}
.cj-checklist--tres-dense .cj-checklist__encart{padding:5px 2px;gap:2px}

/* --- parts/codes.css --- */
/* ======================================================================
   CODES · les codes à connaître : le sanctuaire en 5 gestes, la prière, le temple, les porte-bonheur, les encarts (maquette « Page 25 · les codes »)
   ====================================================================== */
.cj-page--codes .cj-titre{font-size:max(var(--cj-plancher,0px),28px)}
.cj-codes{display:flex;flex-direction:column;justify-content:space-between;gap:8px;flex-grow:1;min-height:0}
.cj-codes-titre{font-weight:700;font-size:max(var(--cj-plancher,0px),15px);line-height:1.1}
.cj-codes .cj-kana{font-size:max(var(--cj-plancher,0px),11.5px)}

/* ---------- la carte du sanctuaire ---------- */
.cj-codes-sanctuaire{display:flex;flex-direction:column;gap:3px;padding:8px 14px 4px}
.cj-codes-sanctuaire__tete{display:flex;align-items:center;gap:8px}
.cj-codes-sanctuaire__icone{width:22px;height:22px;flex-shrink:0;color:var(--cj-encre)}
.cj-codes-sanctuaire__titres{display:flex;flex-direction:column}
.cj-codes-sanctuaire__titres .cj-kicker{font-size:max(var(--cj-plancher,0px),15px)}
.cj-codes-intro{font-size:max(var(--cj-plancher,0px),10px);line-height:1.35;color:var(--cj-encre-douce)}
.cj-codes-intro strong{font-weight:700}
/* les cinq gestes : un dessin, un titre numéroté, une ligne */
.cj-codes-gestes{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;padding:4px 0 3px}
.cj-codes-geste{display:flex;flex-direction:column;align-items:center;text-align:center;gap:2px;min-width:0}
.cj-codes-geste__dessin{width:56px;height:54px;display:block}
.cj-codes-geste__titre{display:flex;align-items:center;gap:4px;font-weight:700;font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.1}
.cj-codes-geste__num{width:14px;height:14px;font-size:max(var(--cj-plancher,0px),10px)}
.cj-codes-geste__ligne{font-size:max(var(--cj-plancher,0px),10px);line-height:1.3;color:var(--cj-encre-douce)}
/* la prière en détail : une frise de petits bonshommes */
.cj-codes-priere{display:flex;flex-direction:column;gap:2px;padding:4px 0 3px;border-top:1px solid var(--cj-filet-doux)}
.cj-codes-priere__kicker{font-size:max(var(--cj-plancher,0px),15px)}
.cj-codes-priere__frise{display:flex;align-items:center;justify-content:center;gap:10px}
.cj-codes-priere__etape{display:flex;flex-direction:column;align-items:center;gap:2px}
.cj-codes-priere__dessin{width:44px;height:50px;display:block}
.cj-codes-priere__label{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.1em;text-transform:uppercase;color:var(--cj-vermillon)}
.cj-codes-priere__fleche{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1;color:var(--cj-kanji);padding-bottom:12px}
/* le temple bouddhiste */
.cj-codes-temple{display:flex;flex-direction:column;gap:2px;padding:5px 0 3px;border-top:1px solid var(--cj-filet-doux)}
.cj-codes-temple__titre{font-weight:700;font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.15}
.cj-codes-temple__titre .cj-kana{font-size:max(var(--cj-plancher,0px),10px)}
.cj-codes-temple__ligne{font-size:max(var(--cj-plancher,0px),10px);line-height:1.35;color:var(--cj-encre)}
.cj-codes-temple__ligne strong{font-weight:700}

/* ---------- les porte-bonheur : quatre colonnes ---------- */
.cj-codes-pb{display:flex;flex-direction:column;gap:5px;padding:8px 12px 7px}
.cj-codes-pb__grille{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.cj-codes-pb__item{display:flex;flex-direction:column;align-items:center;text-align:center;gap:2px;min-width:0}
.cj-codes-pb__dessin{width:44px;height:50px;display:block}
.cj-codes-pb__nom{font-weight:700;font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.1}
.cj-codes-pb__nom .cj-kana{font-size:max(var(--cj-plancher,0px),10px)}
.cj-codes-pb__prix{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),15px);line-height:1;color:var(--cj-vermillon)}
.cj-codes-pb__ligne{font-size:max(var(--cj-plancher,0px),10px);line-height:1.3;color:var(--cj-encre-douce)}

/* ---------- les encarts du bas : deux colonnes entre filets ---------- */
.cj-codes-autres{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}
.cj-codes-autre{display:flex;flex-direction:column;gap:2px;padding:5px 2px;border-bottom:1px solid var(--cj-filet)}
.cj-codes-autre__titre{font-weight:700;font-size:max(var(--cj-plancher,0px),13px);line-height:1.15}
.cj-codes-autre__texte{font-size:max(var(--cj-plancher,0px),10px);line-height:1.35;color:var(--cj-encre)}

/* des textes plus longs ou un encart de plus : tout se resserre, puis encore un cran */
.cj-codes--dense{gap:6px}
.cj-codes--dense .cj-codes-sanctuaire{gap:2px;padding:7px 12px 3px}
.cj-codes--dense .cj-codes-intro,.cj-codes--dense .cj-codes-autre__texte{font-size:max(var(--cj-plancher,0px),10px);line-height:1.3}
.cj-codes--dense .cj-codes-gestes{padding:3px 0 2px}
.cj-codes--dense .cj-codes-geste__dessin{width:50px;height:48px}
.cj-codes--dense .cj-codes-priere__dessin{width:38px;height:43px}
.cj-codes--dense .cj-codes-temple__ligne{font-size:max(var(--cj-plancher,0px),10px);line-height:1.3}
.cj-codes--dense .cj-codes-pb{padding:6px 10px 5px;gap:3px}
.cj-codes--dense .cj-codes-pb__dessin{width:40px;height:45px}
.cj-codes--dense .cj-codes-pb__ligne{font-size:max(var(--cj-plancher,0px),10px);line-height:1.25}
.cj-codes--dense .cj-codes-autre{padding:4px 2px}
.cj-codes--tres-dense{gap:4px}
.cj-codes--tres-dense .cj-codes-sanctuaire{gap:1px;padding:6px 11px 2px}
.cj-codes--tres-dense .cj-codes-intro,.cj-codes--tres-dense .cj-codes-autre__texte,.cj-codes--tres-dense .cj-codes-temple__ligne{font-size:max(var(--cj-plancher,0px),10px);line-height:1.25}
.cj-codes--tres-dense .cj-codes-gestes{padding:2px 0 1px}
.cj-codes--tres-dense .cj-codes-geste__dessin{width:44px;height:42px}
.cj-codes--tres-dense .cj-codes-geste__ligne{font-size:max(var(--cj-plancher,0px),10px);line-height:1.2}
.cj-codes--tres-dense .cj-codes-priere{padding:2px 0 1px}
.cj-codes--tres-dense .cj-codes-priere__dessin{width:32px;height:36px}
.cj-codes--tres-dense .cj-codes-temple{padding:3px 0 2px;gap:1px}
.cj-codes--tres-dense .cj-codes-pb{padding:5px 10px 4px;gap:2px}
.cj-codes--tres-dense .cj-codes-pb__dessin{width:34px;height:38px}
.cj-codes--tres-dense .cj-codes-pb__ligne{font-size:max(var(--cj-plancher,0px),10px);line-height:1.2}
.cj-codes--tres-dense .cj-codes-pb__prix{font-size:max(var(--cj-plancher,0px),13px)}
.cj-codes--tres-dense .cj-codes-autre{padding:3px 2px;gap:1px}
.cj-codes--tres-dense .cj-codes-autre__titre{font-size:max(var(--cj-plancher,0px),11.5px)}

/* --- parts/couverture.css --- */
/* ======================================================================
   COUVERTURE · la photo pleine page et le médaillon crème (maquette « Couverture »)
   ====================================================================== */
.cj-couverture{position:relative;width:100%;height:100%;overflow:hidden;background:var(--cj-fond)}
.cj-couverture__photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 50%}
/* le cadrage de la photo selon la saison (la photo change avec la variante, le point fort n'est pas au même endroit) */
.cj-couverture[data-saison="hiver"] .cj-couverture__photo{object-position:42% 50%}
.cj-couverture[data-saison="momiji"] .cj-couverture__photo{object-position:50% 40%}
.cj-couverture__medaillon{position:absolute;left:50%;top:50%;width:340px;height:340px;margin:-170px 0 0 -170px;border-radius:50%;background:var(--cj-creme);box-shadow:0 10px 30px rgba(20,30,60,.28)}
.cj-couverture__anneau{position:absolute;left:50%;top:50%;width:362px;height:362px;margin:-181px 0 0 -181px;border-radius:50%;border:1.6px dotted rgba(251,247,238,.9)}
.cj-couverture__contenu{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;text-align:center}
.cj-couverture__kei{width:76px;height:50px;color:var(--cj-encre)}
.cj-couverture__bloc{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;width:330px;font-weight:700}
.cj-couverture__accroche{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),11.5px);letter-spacing:.32em;text-transform:uppercase;color:var(--cj-vermillon)}
.cj-couverture__noms{font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),64px);line-height:1;letter-spacing:.04em;color:var(--cj-encre);overflow-wrap:anywhere}
/* plus la ligne la plus longue est longue, plus on resserre : 8, 11, 15, 19 caractères */
.cj-couverture__noms--assez-long{font-size:max(var(--cj-plancher,0px),64px)}
.cj-couverture__noms--moyen{font-size:max(var(--cj-plancher,0px),48px);line-height:1.05}
.cj-couverture__noms--long{font-size:max(var(--cj-plancher,0px),40px);line-height:1.05}
.cj-couverture__noms--tres-long{font-size:max(var(--cj-plancher,0px),28px);line-height:1.1}
.cj-couverture__mention{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),11.5px);letter-spacing:.32em;text-transform:uppercase;color:var(--cj-encre-douce);padding-top:4px}
.cj-couverture__kanji{font-family:var(--cj-police-jp);font-size:16px;letter-spacing:.3em;color:var(--cj-vermillon);padding-top:10px}

/* --- parts/dos.css --- */
/* ======================================================================
   DOS · la photo pleine page et la carte de fin (maquette « Dos de couverture »)
   ====================================================================== */
.cj-dos{position:relative;width:100%;height:100%;overflow:hidden;background:var(--cj-fond);font-family:var(--cj-police-titre)}
.cj-dos__photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:45% 50%}
.cj-dos__carte{position:absolute;left:34px;right:34px;bottom:44px;background:var(--cj-creme);border-radius:var(--cj-rayon);padding:20px 24px 16px;
  display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;box-shadow:0 10px 30px rgba(20,30,60,.28)}
.cj-dos__anneau{width:98px;height:98px;margin-top:-72px;padding:5px;border-radius:50%;border:1.6px dotted var(--cj-route-points);display:flex;align-items:center;justify-content:center}
.cj-dos__medaillon{width:84px;height:84px;border-radius:50%;background:var(--cj-creme);display:flex;align-items:center;justify-content:center}
.cj-dos__kei{width:50px;height:33px;color:var(--cj-encre)}
.cj-dos__accroche{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),20px);line-height:1;color:var(--cj-vermillon)}
.cj-dos__titre{font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),28px);line-height:1.05;color:var(--cj-encre)}
.cj-dos__villes{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.28em;text-transform:uppercase;color:var(--cj-encre-douce)}
.cj-dos__mention{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.28em;text-transform:uppercase;color:var(--cj-vermillon)}
.cj-dos__kanji{font-family:var(--cj-police-jp);font-size:14px;letter-spacing:.3em;color:var(--cj-vermillon);padding-top:4px}

/* --- parts/grande-page.css --- */
/* ======================================================================
   GRANDE-PAGE · la grande page d'une ville : illustration pleine page, kanji vertical,
   carte crème en bas (maquettes « Grande page Tokyo », « Kyoto », « Osaka »)
   ====================================================================== */
.cj-grande{position:relative;width:100%;height:100%;overflow:hidden;background:var(--cj-lin)}
.cj-grande__illu{position:absolute;inset:0}
.cj-grande__svg{display:block;width:100%;height:100%}
/* le kanji vertical, en haut à gauche, dans le crème de la carte */
.cj-grande__kanji{position:absolute;left:26px;top:30px;font-family:var(--cj-police-jp);font-size:64px;line-height:1;writing-mode:vertical-rl;color:var(--cj-creme);opacity:.85}

/* la carte crème : accroche manuscrite, nom de la ville, ligne des jours, phrase, numéro de page */
.cj-grande__carte{position:absolute;left:34px;right:34px;bottom:44px;padding:22px 24px 18px;border-radius:var(--cj-rayon);background:var(--cj-creme);
  display:flex;flex-direction:column;gap:6px}
.cj-grande__accroche{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),20px);line-height:1;color:var(--cj-vermillon)}
.cj-grande__ville{margin:0;font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),64px);line-height:.95;color:var(--cj-encre)}
.cj-grande__dates{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.18em;text-transform:uppercase;color:var(--cj-encre-douce)}
.cj-grande__phrase{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);line-height:1.25;color:var(--cj-encre)}
.cj-grande__num{align-self:flex-end}
/* une phrase longue : un cran plus petit, la carte reste basse */
.cj-grande--dense .cj-grande__phrase{font-size:max(var(--cj-plancher,0px),15px);line-height:1.2}
.cj-grande--dense .cj-grande__ville{font-size:max(var(--cj-plancher,0px),64px)}

/* --- parts/grille-2col.css --- */
/* ======================================================================
   GRILLE-2COL · une grille de cartes illustrées sur deux colonnes : les quartiers (maquette « Page 29 · quartiers 1/2 » et « Page 30 · quartiers 2/2 »)
   ====================================================================== */
.cj-g2{display:flex;flex-direction:column;gap:10px;flex-grow:1;min-height:0;justify-content:flex-start}
.cj-g2-grille{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;align-content:start;padding-top:6px}
.cj-g2--carre .cj-g2-grille{gap:22px 16px;padding-top:10px}

/* ---------- une carte ---------- */
.cj-g2-carte{position:relative;display:flex;flex-direction:column;gap:8px;min-width:0}
.cj-g2-carte__visuel{position:relative;padding:6px;border-radius:var(--cj-rayon-petit);border-bottom:1px solid var(--cj-filet)}
.cj-g2-carte__cadre{aspect-ratio:16/10;overflow:hidden;border-radius:2px}
.cj-g2--carre .cj-g2-carte__cadre{aspect-ratio:1/1}
.cj-g2--serre .cj-g2-carte__cadre{aspect-ratio:16/9}
.cj-g2-carte__dessin{display:block;width:100%;height:100%}
.cj-g2-carte__photo{display:block;width:100%;height:100%;object-fit:cover}
/* l'étiquette du nom, posée sur le dessin */
.cj-g2-carte__etiquette{position:absolute;left:10px;bottom:12px;display:flex;align-items:baseline;gap:5px;flex-wrap:wrap;max-width:calc(100% - 20px);padding:3px 8px 2px;background:var(--cj-fond);border-radius:var(--cj-rayon-petit)}
.cj-g2-carte__nom{font-weight:700;font-size:max(var(--cj-plancher,0px),15px);line-height:1.2;color:var(--cj-encre)}
.cj-g2-carte__etiquette .cj-kana{font-size:max(var(--cj-plancher,0px),11.5px)}
/* « jour 3 » : le quartier est dans l'itinéraire */
.cj-g2-carte__jour{position:absolute;right:10px;top:10px;padding:2px 6px;background:var(--cj-fond);border-radius:var(--cj-rayon-petit);font-family:var(--cj-police-mono);font-size:8px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--cj-vermillon);white-space:nowrap}
.cj-g2-carte__textes{display:flex;flex-direction:column;gap:2px;padding:0 2px}
.cj-g2-carte__accroche{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),15px);line-height:1.1;color:var(--cj-vermillon)}
.cj-g2-carte__texte{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.4;color:var(--cj-encre)}

/* ---------- la carte de l'hôtel : pleine largeur, boucle rouge ---------- */
.cj-g2-carte--large{grid-column:span 2;gap:6px;padding:10px 22px 14px}
.cj-g2-carte--large .cj-g2-carte__visuel{padding:0;border-bottom:0}
.cj-g2-carte--large .cj-g2-carte__cadre{aspect-ratio:388/150}
.cj-g2-carte--large .cj-g2-carte__etiquette{left:8px;bottom:8px}
.cj-g2-carte--large .cj-g2-carte__jour{right:8px;top:8px}
/* la boucle manuscrite autour d'une carte (dessin du thème, étiré sur la carte) */
.cj-g2-boucle{position:absolute;left:-8px;top:-6px;width:calc(100% + 16px);height:calc(100% + 12px);overflow:visible;pointer-events:none;z-index:2;color:var(--cj-encre)}
.cj-g2-boucle--large{left:-6px;top:-4px;width:calc(100% + 12px);height:calc(100% + 8px);color:var(--cj-vermillon)}
/* la mention manuscrite posée sur la boucle */
.cj-g2-mention{position:absolute;right:-2px;top:-16px;z-index:3;padding:1px 6px;background:var(--cj-fond);font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),15px);line-height:1;white-space:nowrap;color:var(--cj-encre);transform:rotate(-3deg);transform-origin:right bottom}
.cj-g2-mention--hotel{right:14px;top:-14px;padding:2px 8px;font-size:max(var(--cj-plancher,0px),17px);color:var(--cj-vermillon)}
/* la mention court dans l'interligne au-dessus de la carte : vers la droite en colonne gauche, vers la gauche en colonne droite (jamais hors de la page) */
.cj-g2-carte:nth-child(2n+1) .cj-g2-mention{right:auto;left:-2px;transform:rotate(2deg);transform-origin:left bottom}
.cj-g2-carte--large ~ .cj-g2-carte:nth-child(2n+1) .cj-g2-mention{right:-2px;left:auto;transform:rotate(-3deg);transform-origin:right bottom}
.cj-g2-carte--large ~ .cj-g2-carte:nth-child(2n) .cj-g2-mention{right:auto;left:-2px;transform:rotate(2deg);transform-origin:left bottom}

/* ---------- catégories (fond pastel) et légende ---------- */
.cj-g2-carte--cat-souvenirs .cj-g2-carte__visuel{background:var(--cj-cat-souvenirs)}
.cj-g2-carte--cat-kawaii .cj-g2-carte__visuel{background:var(--cj-cat-kawaii)}
.cj-g2-carte--cat-geek .cj-g2-carte__visuel{background:var(--cj-cat-geek)}
.cj-g2-carte--cat-mode .cj-g2-carte__visuel{background:var(--cj-cat-mode)}
.cj-g2-carte--cat-vintage .cj-g2-carte__visuel{background:var(--cj-cat-vintage)}
.cj-g2-legende{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.cj-g2-legende__label{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.14em;text-transform:uppercase;color:var(--cj-vermillon)}
.cj-g2-legende__item{display:inline-flex;align-items:center;gap:4px;font-size:max(var(--cj-plancher,0px),10px);font-weight:700}
.cj-g2-legende__pastille{display:inline-block;width:12px;height:12px;border-radius:3px;border:1px solid var(--cj-filet);background:var(--cj-creme)}
.cj-g2-legende__pastille--souvenirs{background:var(--cj-cat-souvenirs)}
.cj-g2-legende__pastille--kawaii{background:var(--cj-cat-kawaii)}
.cj-g2-legende__pastille--geek{background:var(--cj-cat-geek)}
.cj-g2-legende__pastille--mode{background:var(--cj-cat-mode)}
.cj-g2-legende__pastille--vintage{background:var(--cj-cat-vintage)}

/* ---------- serré : plus de six cases, ou des textes longs ---------- */
.cj-g2--serre .cj-g2-grille{gap:10px 14px}
.cj-g2--serre .cj-g2-carte{gap:6px}
.cj-g2--serre .cj-g2-carte__accroche{font-size:max(var(--cj-plancher,0px),15px)}
.cj-g2--serre .cj-g2-carte__texte{font-size:max(var(--cj-plancher,0px),10px);line-height:1.32}
.cj-g2--serre .cj-g2-carte--large{padding:8px 22px 10px}
.cj-g2--serre .cj-g2-carte--large .cj-g2-carte__cadre{aspect-ratio:388/130}

/* --- parts/lexique.css --- */
/* ======================================================================
   LEXIQUE · le tableau des phrases : français, prononciation, kana et rōmaji (maquettes « Page 23 · mots qui sauvent », « Page 24 · mots à table »)
   ====================================================================== */
.cj-page--lexique{gap:12px}
.cj-page--lexique .cj-titre{font-size:max(var(--cj-plancher,0px),40px)}
.cj-lexique{display:flex;flex-direction:column;justify-content:space-between;gap:12px;flex-grow:1;min-height:0}
/* la carte crème : les en-têtes de colonnes, puis une ligne par phrase */
.cj-lexique-table{display:flex;flex-direction:column;padding:8px 0 2px}
.cj-lexique-entetes{display:flex;align-items:center;gap:10px;padding:0 12px 6px;font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--cj-vermillon)}
.cj-lexique-entetes__icone{width:20px;flex-shrink:0}
.cj-lexique-entetes__fr{flex-grow:1;min-width:0}
.cj-lexique-entetes__pron{width:112px;flex-shrink:0}
.cj-lexique-entetes__jp{width:104px;flex-shrink:0;text-align:right}
.cj-lexique-ligne{display:flex;align-items:center;gap:10px;padding:3px 12px;min-height:34px;border-bottom:1px solid var(--cj-filet-doux)}
.cj-lexique-ligne:last-child{border-bottom:0}
.cj-lexique-ligne__icone{width:20px;height:20px;flex-shrink:0;color:var(--cj-vermillon)}
.cj-lexique-ligne__icone svg{width:20px;height:20px;display:block;stroke-width:1.7}
.cj-lexique-ligne__fr{flex-grow:1;min-width:0;font-weight:700;font-size:max(var(--cj-plancher,0px),13px);line-height:1.2}
.cj-lexique-ligne__pron{width:112px;flex-shrink:0;font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),15px);line-height:1.1;color:var(--cj-vermillon)}
.cj-lexique-ligne__jp{width:104px;flex-shrink:0;display:flex;flex-direction:column;align-items:flex-end;text-align:right}
.cj-lexique-ligne__kana{font-family:var(--cj-police-jp);font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.3;color:var(--cj-encre)}
.cj-lexique-ligne__romaji{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);line-height:1.3;color:var(--cj-vermillon)}
/* la note manuscrite du bas */
.cj-lexique-note{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),15px);line-height:1.2;color:var(--cj-encre-douce)}
/* plus de lignes que la maquette (enfants, phrases longues) : tout se resserre, puis encore un cran */
.cj-lexique--dense .cj-lexique-ligne{min-height:30px;padding:2px 12px}
.cj-lexique--dense .cj-lexique-ligne__fr{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.15}
.cj-lexique--dense .cj-lexique-ligne__pron{font-size:max(var(--cj-plancher,0px),13px)}
.cj-lexique--dense .cj-lexique-ligne__kana{font-size:max(var(--cj-plancher,0px),10px);line-height:1.25}
.cj-lexique--dense .cj-lexique-ligne__romaji{line-height:1.2}
.cj-lexique--tres-dense{gap:8px}
.cj-lexique--tres-dense .cj-lexique-table{padding:6px 0 0}
.cj-lexique--tres-dense .cj-lexique-ligne{min-height:26px;padding:1px 10px;gap:8px}
.cj-lexique--tres-dense .cj-lexique-ligne__icone,.cj-lexique--tres-dense .cj-lexique-ligne__icone svg{width:17px;height:17px}
.cj-lexique--tres-dense .cj-lexique-ligne__fr{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.1}
.cj-lexique--tres-dense .cj-lexique-ligne__pron{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.05}
.cj-lexique--tres-dense .cj-lexique-ligne__kana{font-size:max(var(--cj-plancher,0px),10px);line-height:1.2}
.cj-lexique--tres-dense .cj-lexique-ligne__romaji{font-size:max(var(--cj-plancher,0px),10px);line-height:1.15}
.cj-lexique--tres-dense .cj-lexique-note{font-size:max(var(--cj-plancher,0px),13px)}

/* --- parts/memorable.css --- */
/* ======================================================================
   MEMORABLE · les petits riens d'un voyage inoubliable, à cocher (maquette « Page 36 · voyage inoubliable »)
   ====================================================================== */
.cj-page--memorable{gap:12px}
/* comme la maquette : en-tête, liste, note et pied se répartissent la hauteur (le pied ne prend pas tout le vide) */
.cj-page--memorable .cj-pied{margin-top:0}
.cj-page--memorable .cj-titre{font-size:max(var(--cj-plancher,0px),28px)}

/* ---------- la liste numérotée ---------- */
.cj-memo{display:flex;flex-direction:column;gap:12px;margin:0;padding:0;list-style:none}
.cj-memo-item{display:flex;gap:10px;align-items:flex-start;padding-bottom:12px;border-bottom:1px dotted var(--cj-route-points)}
.cj-memo-item__num{width:26px;flex-shrink:0;font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),24px);line-height:1;color:var(--cj-vermillon)}
.cj-memo-item__textes{display:flex;flex-direction:column;gap:1px;flex-grow:1;min-width:0}
.cj-memo-item__titre{font-weight:700;font-size:max(var(--cj-plancher,0px),13px);line-height:1.15;color:var(--cj-encre)}
.cj-memo-item__texte{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),15px);line-height:1.15;color:var(--cj-encre)}
.cj-memo-item__case{width:14px;height:14px;margin-top:3px}

/* ---------- plus de consignes ou des textes plus longs : la liste se resserre, puis encore un cran ---------- */
.cj-memo--dense{gap:9px}
.cj-memo--dense .cj-memo-item{padding-bottom:9px}
.cj-memo--dense .cj-memo-item__num{font-size:max(var(--cj-plancher,0px),24px)}
.cj-memo--dense .cj-memo-item__titre{font-size:max(var(--cj-plancher,0px),13px)}
.cj-memo--dense .cj-memo-item__texte{font-size:max(var(--cj-plancher,0px),15px)}
.cj-memo--tres-dense{gap:6px}
.cj-memo--tres-dense .cj-memo-item{padding-bottom:6px}
.cj-memo--tres-dense .cj-memo-item__num{font-size:max(var(--cj-plancher,0px),20px)}
.cj-memo--tres-dense .cj-memo-item__titre{font-size:max(var(--cj-plancher,0px),13px)}
.cj-memo--tres-dense .cj-memo-item__texte{font-size:max(var(--cj-plancher,0px),13px);line-height:1.1}

/* --- parts/ouverture.css --- */
/* ======================================================================
   OUVERTURE · la page d'ouverture d'une partie : illustration pleine page, kanji vertical,
   médaillon crème (maquettes « Partie survie », « Partie vie », « Partie fin »)
   ====================================================================== */
.cj-ouverture{position:relative;width:100%;height:100%;overflow:hidden;background:var(--cj-lin)}
.cj-ouverture__illu{position:absolute;inset:0}
.cj-ouverture__svg{display:block;width:100%;height:100%}
/* le kanji vertical, en haut à gauche ; sa couleur appartient à l'illustration (crème sur une scène sombre, bleu du ciel sur le Fuji) */
.cj-ouverture__kanji{position:absolute;left:26px;top:30px;font-family:var(--cj-police-jp);font-size:58px;line-height:1;writing-mode:vertical-rl;color:var(--cj-creme);opacity:.88}
.cj-ouverture--fuji .cj-ouverture__kanji{color:#466CAA;opacity:.75}

/* le médaillon : même construction que la couverture, posé en bas */
.cj-ouverture__medaillon{position:absolute;left:50%;bottom:44px;width:330px;height:330px;margin-left:-165px;border-radius:50%;background:var(--cj-creme)}
.cj-ouverture__anneau{position:absolute;left:50%;bottom:33px;width:352px;height:352px;margin-left:-176px;border-radius:50%;border:1.6px dotted var(--cj-route-points)}
.cj-ouverture__contenu{position:absolute;left:50%;bottom:44px;width:330px;height:330px;margin-left:-165px;padding:0 30px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px}
.cj-ouverture__kei{width:44px;height:29px;flex-shrink:0;color:var(--cj-encre)}
.cj-ouverture__numero{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),20px);line-height:1;color:var(--cj-vermillon)}
.cj-ouverture__titre{margin:0;font-family:var(--cj-police-titre);font-weight:500;font-size:max(var(--cj-plancher,0px),40px);line-height:.98;color:var(--cj-encre)}
.cj-ouverture__titre--long{font-size:max(var(--cj-plancher,0px),34px)}
.cj-ouverture__route{width:90px;margin-top:0;flex-shrink:0}
.cj-ouverture__lignes{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.14em;line-height:1.7;text-transform:uppercase;color:var(--cj-encre-douce)}
.cj-ouverture__num{padding-top:2px}
/* plus de quatre lignes de sommaire : tout se resserre un peu */
.cj-ouverture--dense .cj-ouverture__contenu{gap:5px}
.cj-ouverture--dense .cj-ouverture__kei{width:38px;height:25px}
.cj-ouverture--dense .cj-ouverture__lignes{line-height:1.55;font-size:max(var(--cj-plancher,0px),10px)}

/* --- parts/parcours.css --- */
/* ======================================================================
   PARCOURS · la carte du Japon et le mot d'envoi (maquette « Page de garde »)
   ====================================================================== */
.cj-page--parcours{gap:14px;justify-content:flex-start}
.cj-parcours-entete{gap:2px}
.cj-parcours-titre{font-weight:500;font-size:max(var(--cj-plancher,0px),40px);text-transform:none}
.cj-parcours-titre--long{font-size:max(var(--cj-plancher,0px),34px)}
.cj-parcours-titre--tres-long{font-size:max(var(--cj-plancher,0px),28px)}
.cj-parcours-dates{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--cj-encre-douce);padding-top:6px}
.cj-parcours-entete .cj-route{margin-top:8px}

/* le cadre de la carte : même double filet que la carte du jour */
.cj-parcours-carte{display:flex;flex-direction:column;gap:8px;padding:18px 18px 14px;border-radius:var(--cj-rayon);background:var(--cj-creme);
  box-shadow:inset 0 0 0 1px rgba(139,107,78,.28),inset 0 0 0 5px var(--cj-creme),inset 0 0 0 6px rgba(139,107,78,.18)}
.cj-parcours-carte__svg{width:348px;height:330px;display:block;overflow:visible}

/* le fond de carte (assets/svg/japon.svg) */
.cj-japon__terre{fill:var(--cj-filet-doux);stroke:var(--cj-bois)}
.cj-japon__mer{font-family:var(--cj-police-mono);font-size:7.5px;letter-spacing:2px}
.cj-japon__fuji{font-family:var(--cj-police-main);font-size:11px;fill:var(--cj-bois-fonce)}
.cj-japon__encart{stroke:var(--cj-bois)}
.cj-japon__cadre{fill:none;stroke:var(--cj-vermillon)}
.cj-japon__encart-nom{font-family:var(--cj-police-mono);font-size:7px;letter-spacing:1.5px;fill:var(--cj-bois)}
.cj-japon__nord circle{fill:none;stroke:var(--cj-encre)}
.cj-japon__aiguille{fill:var(--cj-encre)}
.cj-japon__aiguille-n{fill:var(--cj-vermillon)}
.cj-japon__nord text{font-family:var(--cj-police-mono);font-size:7px;fill:var(--cj-encre)}

/* le parcours : shinkansen en trait plein épais, train local en trait plein, excursion en pointillé */
.cj-parcours-trace{fill:none;stroke:var(--cj-encre);stroke-linecap:round}
.cj-parcours-trace--shinkansen,.cj-parcours-trace--local{stroke-width:2.2}
.cj-parcours-trace--excursion{stroke-width:1.4;stroke-dasharray:3 3}
.cj-parcours-legende{font-family:var(--cj-police-mono);font-size:8px;letter-spacing:1px;text-transform:uppercase;fill:var(--cj-bois)}
.cj-parcours-kei{color:var(--cj-encre)}
.cj-parcours-ville{fill:var(--cj-encre)}
.cj-parcours-ville--depart{fill:var(--cj-vermillon)}
.cj-parcours-ville--petite{fill:var(--cj-creme);stroke:var(--cj-encre);stroke-width:1.6}
.cj-parcours-nom{font-family:var(--cj-police-titre);font-weight:600;font-size:21px;fill:var(--cj-encre)}
.cj-parcours-nom--petit{font-size:16px}
.cj-parcours-jours{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:1px;fill:var(--cj-encre)}
.cj-parcours-jours--depart{fill:var(--cj-vermillon)}

/* les étapes : une colonne par ville (numéro, ville, dates, nuits), de une à quatre sur la largeur */
.cj-parcours-etapes{display:flex;gap:6px;align-items:stretch}
.cj-parcours-etape{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:1px;padding:6px 8px 6px 10px;border-left:1.5px solid var(--cj-vermillon)}
.cj-parcours-etape--excursion{border-left-style:dashed;border-left-color:var(--cj-bois)}
.cj-parcours-etape__num{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:600;letter-spacing:.14em;color:var(--cj-vermillon)}
.cj-parcours-etape--excursion .cj-parcours-etape__num{color:var(--cj-vermillon)}
.cj-parcours-etape__ville{font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),17px);line-height:1;color:var(--cj-encre)}
.cj-parcours-etape__dates{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.06em;text-transform:uppercase;color:var(--cj-encre-douce);padding-top:3px}
.cj-parcours-etape__nuits{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),13px);line-height:1.1;color:var(--cj-vermillon)}
.cj-parcours-etapes--1 .cj-parcours-etape{flex:0 1 50%}

/* le mot d'envoi */
.cj-parcours-envoi{display:flex;flex-direction:column;gap:8px;font-weight:700;font-style:italic}
.cj-parcours-envoi__texte{font-size:max(var(--cj-plancher,0px),13px);line-height:1.5;color:var(--cj-encre)}
.cj-parcours-envoi__mot{font-family:var(--cj-police-main);font-style:normal;font-weight:400;font-size:max(var(--cj-plancher,0px),24px);line-height:1;color:var(--cj-vermillon);padding-left:2px}

/* les excursions d'une journée (choisies au quiz) : un petit point, un nom plus petit, relié en pointillé à la ville de départ */
.cj-parcours-nom--excursion{font-family:var(--cj-police-main);font-size:13px;fill:var(--cj-encre-douce);paint-order:stroke;stroke:var(--cj-creme);stroke-width:3px;stroke-linejoin:round}

/* --- parts/plan.css --- */
/* ======================================================================
   PLAN · le plan simplifié de Tokyo, la kei car sur l'hôtel, les croix sur les quartiers (maquette « Page 22 · plan de Tokyo »)
   ====================================================================== */
.cj-page--plan .cj-titre{font-size:max(var(--cj-plancher,0px),34px)}
.cj-plan{display:flex;flex-direction:column;gap:10px;flex-grow:1;min-height:0}
/* le cadre crème à double filet bois, 384 × 560 */
.cj-plan__cadre{height:560px;overflow:hidden;border-radius:var(--cj-rayon);background:var(--cj-creme);
  box-shadow:inset 0 0 0 1px var(--cj-filet),inset 0 0 0 5px var(--cj-creme),inset 0 0 0 6px var(--cj-filet-doux)}
.cj-plan__svg{display:block;width:384px;height:560px}
/* les textes du fond de plan (plan-tokyo.svg) */
.cj-plan-svg__eau,.cj-plan-svg__palais,.cj-plan-svg__monument{font-family:var(--cj-police-main)}
.cj-plan-svg__riviere,.cj-plan-svg__gares,.cj-plan-svg__aeroport,.cj-plan-svg__nord{font-family:var(--cj-police-mono)}
.cj-plan-svg__gares{font-size:8.5px;letter-spacing:1px;fill:var(--cj-encre)}
.cj-plan-svg__aeroport,.cj-plan-svg__nord{fill:var(--cj-encre)}
.cj-plan-svg__monument{fill:var(--cj-encre)}
.cj-plan-svg__monument--bois{fill:var(--cj-bois-fonce)}
/* les croix des quartiers du voyage : trait vermillon, nom manuscrit bois foncé */
.cj-plan-croix__trait{stroke:var(--cj-vermillon);stroke-width:2.6;stroke-linecap:round;fill:none}
.cj-plan-croix__nom{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),13px);fill:var(--cj-bois-fonce)}
/* la kei car de l'hôtel */
.cj-plan-hotel{color:var(--cj-encre)}
/* la légende, sous le cadre */
.cj-plan-legende{display:flex;gap:12px;flex-wrap:wrap;font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.06em;text-transform:uppercase;color:var(--cj-encre)}
.cj-plan-legende__item{display:flex;align-items:center;gap:5px}
.cj-plan-legende__jr{width:16px;height:5px;background:var(--cj-riz)}
.cj-plan-legende__ginza{width:18px;height:0;border-top:3px dashed var(--cj-vermillon)}
.cj-plan-legende__croix{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),15px);line-height:1;color:var(--cj-vermillon);text-transform:none}
.cj-plan-legende__kei{width:20px;height:13px;flex-shrink:0;color:var(--cj-encre)}
.cj-plan-hotel{fill:none;stroke:currentColor;stroke-width:2.3;stroke-linejoin:round;stroke-linecap:round}

/* --- parts/programme.css --- */
/* ======================================================================
   PROGRAMME · le voyage jour par jour en un coup d'œil (maquette « Sommaire du programme »)
   ====================================================================== */
.cj-page--programme{padding:38px 32px 28px;gap:4px;justify-content:flex-start}
.cj-programme-entete{display:flex;flex-direction:column;gap:0;margin-bottom:10px;flex-shrink:0}
.cj-programme-titre{margin:0;font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),48px);line-height:1;text-transform:uppercase;color:var(--cj-vermillon)}
.cj-programme-sous-titre{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),24px);line-height:1.1;color:var(--cj-encre)}

.cj-programme{display:flex;flex-direction:column;gap:4px;flex-grow:1;min-height:0}
/* la rangée d'une ville : point, nom manuscrit, filet ; une couleur par étape du voyage */
.cj-programme-ville{display:flex;align-items:center;gap:8px;margin-top:4px;min-height:22px;color:var(--cj-vermillon)}
.cj-programme-ville__point{width:10px;height:10px;border-radius:50%;background:currentColor;flex-shrink:0}
.cj-programme-ville__nom{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);letter-spacing:.08em;text-transform:uppercase}
.cj-programme-ville__filet{flex-grow:1;height:1.5px;background:currentColor;opacity:.5}
.cj-programme-ville--1{color:var(--cj-vermillon)}
.cj-programme-ville--1 .cj-programme-ville__point{background:none;border:1px solid var(--cj-filet)}
.cj-programme-ville--1 .cj-programme-ville__filet{background:none;border:1px solid var(--cj-filet);border-radius:4px}
.cj-programme-ville--2{color:var(--cj-riz)}
.cj-programme-ville--3{color:var(--cj-encre-douce)}
.cj-programme-ville--4{color:var(--cj-vermillon)}

/* la ligne d'un jour : numéro façon place de parking (.cj-place, le même que sur les pages de journée), titre et détail, pointillé, page */
.cj-programme-jour{display:flex;align-items:center;gap:12px;min-height:44px;padding:2px 0}
.cj-programme-jour .cj-place{width:30px;height:26px;font-size:max(var(--cj-plancher,0px),13px);padding-top:4px;align-self:center}
.cj-programme-jour__texte{display:flex;flex-direction:column;gap:1px;min-width:0}
.cj-programme-jour__titre{font-weight:700;font-size:max(var(--cj-plancher,0px),15px);line-height:1.1;color:var(--cj-encre)}
.cj-programme-jour__detail{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),15px);line-height:1.1;color:var(--cj-encre-douce)}
.cj-programme-jour__date{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.1em;text-transform:uppercase}
.cj-programme-jour__points{flex-grow:1;min-width:14px;align-self:flex-end;margin-bottom:14px;border-bottom:1.5px dotted var(--cj-bois);opacity:.75}
.cj-programme-jour__page{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),11.5px);font-weight:600;color:var(--cj-vermillon);flex-shrink:0;white-space:nowrap}

/* peu de jours (7 ou 8) : les lignes respirent un peu plus */
.cj-programme--aere{gap:8px}
.cj-programme--aere .cj-programme-ville{margin-top:8px}
.cj-programme--aere .cj-programme-jour{min-height:50px}

/* beaucoup de jours (11 ou 12) : tout se resserre ; 13 ou 14, encore un cran */
.cj-programme--dense{gap:2px}
.cj-programme--dense .cj-programme-ville{margin-top:2px;min-height:20px}
.cj-programme--dense .cj-programme-ville__nom{font-size:max(var(--cj-plancher,0px),15px)}
.cj-programme--dense .cj-programme-jour{min-height:36px;gap:10px;padding:1px 0}
.cj-programme--dense .cj-programme-jour .cj-place{width:26px;height:22px;font-size:max(var(--cj-plancher,0px),11.5px);padding-top:3px}
.cj-programme--dense .cj-programme-jour__titre{font-size:max(var(--cj-plancher,0px),13px)}
.cj-programme--dense .cj-programme-jour__detail{font-size:max(var(--cj-plancher,0px),13px)}
.cj-programme--dense .cj-programme-jour__points{margin-bottom:11px}
.cj-programme--tres-dense{gap:0}
.cj-programme--tres-dense .cj-programme-ville{margin-top:0;min-height:18px}
.cj-programme--tres-dense .cj-programme-ville__nom{font-size:max(var(--cj-plancher,0px),15px)}
.cj-programme--tres-dense .cj-programme-jour{min-height:31px;gap:10px;padding:0}
.cj-programme--tres-dense .cj-programme-jour .cj-place{width:24px;height:20px;font-size:max(var(--cj-plancher,0px),10px);padding-top:3px}
.cj-programme--tres-dense .cj-programme-jour__titre{font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-programme--tres-dense .cj-programme-jour__detail{font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-programme--tres-dense .cj-programme-jour__date{font-size:max(var(--cj-plancher,0px),10px)}
.cj-programme--tres-dense .cj-programme-jour__points{margin-bottom:9px}
.cj-programme--tres-dense .cj-programme-jour__page{font-size:max(var(--cj-plancher,0px),10px)}

.cj-programme-pied{margin-top:auto;padding-top:6px;display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-shrink:0}
.cj-programme-pied__mot{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);color:var(--cj-vermillon)}

/* --- parts/saison.css --- */
/* ======================================================================
   SAISON · « Votre novembre » : la frise des couleurs, les rendez-vous, les repères, les valises (maquette « Page 4 · votre novembre »)
   ====================================================================== */
.cj-page--saison .cj-route{margin-top:4px}
.cj-saison{display:flex;flex-direction:column;justify-content:space-between;gap:10px;flex-grow:1;min-height:0}
.cj-saison-bloc{display:flex;flex-direction:column;gap:6px}

/* ---------- la frise : un SVG de 384 × 176 sur une carte crème ---------- */
.cj-saison-frise{display:flex;justify-content:center;padding:10px 0 4px;border-radius:var(--cj-rayon);background:var(--cj-creme)}
.cj-saison-frise__svg{width:384px;height:176px;display:block;overflow:visible}
.cj-saison-frise__courbe{fill:none;stroke:var(--cj-vermillon);stroke-width:1.3;stroke-dasharray:3 4;opacity:.6}
.cj-saison-frise__mot{font-family:var(--cj-police-main);font-size:15px;fill:var(--cj-vermillon)}
.cj-saison-frise__ville{font-family:var(--cj-police-mono);font-size:9.5px;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;fill:var(--cj-encre)}
.cj-saison-frise__label{font-family:var(--cj-police-main);font-size:14px}
.cj-saison-frise__jour{font-family:var(--cj-police-mono);font-size:8px;fill:var(--cj-bois)}
.cj-saison-frise__note{font-family:var(--cj-police-texte);font-size:9px;fill:var(--cj-bois)}
/* les couleurs des motifs, des barres et des mots manuscrits : les jetons d'illustration ; le mot d'un motif doré passe en or foncé pour rester lisible */
.cj-saison-frise__motif{color:var(--cj-vermillon)}
.cj-saison-frise__barre{fill:var(--cj-vermillon)}
.cj-saison-frise__label{fill:var(--cj-vermillon)}
.cj-saison-frise__motif--or{color:var(--cj-or)} .cj-saison-frise__barre--or{fill:var(--cj-or)} .cj-saison-frise__label--or{fill:var(--cj-or-fonce)}
.cj-saison-frise__motif--vermillon{color:var(--cj-vermillon)} .cj-saison-frise__barre--vermillon{fill:var(--cj-vermillon)} .cj-saison-frise__label--vermillon{fill:var(--cj-vermillon)}
.cj-saison-frise__motif--erable{color:var(--cj-vermillon)} .cj-saison-frise__barre--erable{fill:var(--cj-erable)} .cj-saison-frise__label--erable{fill:var(--cj-erable)}
.cj-saison-frise__motif--erable-orange{color:var(--cj-erable-orange)} .cj-saison-frise__barre--erable-orange{fill:var(--cj-erable-orange)} .cj-saison-frise__label--erable-orange{fill:var(--cj-erable-orange)}
.cj-saison-frise__motif--sakura{color:var(--cj-sakura)} .cj-saison-frise__barre--sakura{fill:var(--cj-sakura)} .cj-saison-frise__label--sakura{fill:var(--cj-vermillon)}
.cj-saison-frise__motif--riz{color:var(--cj-riz)} .cj-saison-frise__barre--riz{fill:var(--cj-riz)} .cj-saison-frise__label--riz{fill:var(--cj-riz)}
.cj-saison-frise__motif--lac{color:var(--cj-lac)} .cj-saison-frise__barre--lac{fill:var(--cj-lac)} .cj-saison-frise__label--lac{fill:var(--cj-bois-fonce)}
.cj-saison-frise__motif--bois{color:var(--cj-vermillon)} .cj-saison-frise__barre--bois{fill:var(--cj-bois)} .cj-saison-frise__label--bois{fill:var(--cj-bois-fonce)}
.cj-saison-frise__motif--terre{color:var(--cj-encre-douce)} .cj-saison-frise__barre--terre{fill:var(--cj-terre)} .cj-saison-frise__label--terre{fill:var(--cj-bois-fonce)}

/* ---------- les rendez-vous : trois cartes crème ---------- */
.cj-saison-rdv{display:flex;gap:8px}
.cj-saison-rdv__carte{flex:1 1 0;min-width:0;padding:12px 8px 10px;border-radius:var(--cj-rayon);background:var(--cj-creme);display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px}
.cj-saison-rdv__icone{width:30px;height:30px;color:var(--cj-vermillon);stroke-width:1.7}
.cj-saison-rdv__date{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--cj-vermillon)}
.cj-saison-rdv__nom{font-weight:700;font-size:max(var(--cj-plancher,0px),13px);line-height:1.1;color:var(--cj-encre)}
.cj-saison-rdv__ligne{font-size:max(var(--cj-plancher,0px),10px);line-height:1.3;color:var(--cj-encre)}

/* ---------- les repères : trois colonnes, grand mot manuscrit ---------- */
.cj-saison-bloc--reperes{gap:8px}
.cj-saison-reperes{display:flex;gap:10px}
.cj-saison-repere{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;text-align:center;gap:3px}
.cj-saison-repere__icone{width:28px;height:28px;color:var(--cj-encre);stroke-width:1.7}
.cj-saison-repere__gros{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);line-height:1;color:var(--cj-encre)}
.cj-saison-repere__petit{font-size:max(var(--cj-plancher,0px),10px);line-height:1.3;color:var(--cj-encre)}

/* ---------- les valises : une carte crème, deux colonnes à cocher ---------- */
.cj-saison-valises{display:flex;flex-direction:column;gap:8px;padding:12px 14px}
.cj-saison-valises__grille{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px}
.cj-saison-valise{display:flex;gap:7px;align-items:center;font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.25;color:var(--cj-encre)}
.cj-saison-valise__icone{width:20px;height:20px;flex-shrink:0;color:var(--cj-encre)}
.cj-saison-valise__texte{min-width:0}

/* beaucoup de valises ou des rendez-vous bavards : tout se resserre, puis encore un cran */
.cj-saison--dense{gap:7px}
.cj-saison--dense .cj-saison-bloc{gap:4px}
.cj-saison--dense .cj-saison-frise{padding:6px 0 2px}
.cj-saison--dense .cj-saison-frise__svg{height:168px}
.cj-saison--dense .cj-saison-rdv__carte{padding:9px 7px 8px;gap:3px}
.cj-saison--dense .cj-saison-rdv__icone{width:26px;height:26px}
.cj-saison--dense .cj-saison-rdv__ligne{font-size:max(var(--cj-plancher,0px),10px);line-height:1.25}
.cj-saison--dense .cj-saison-repere__petit{font-size:max(var(--cj-plancher,0px),10px);line-height:1.25}
.cj-saison--dense .cj-saison-valises{padding:9px 12px;gap:6px}
.cj-saison--dense .cj-saison-valises__grille{gap:4px 10px}
.cj-saison--dense .cj-saison-valise{font-size:max(var(--cj-plancher,0px),10px);line-height:1.2}
.cj-saison--dense .cj-saison-valise__icone{width:17px;height:17px}
.cj-saison--tres-dense{gap:5px}
.cj-saison--tres-dense .cj-saison-bloc{gap:3px}
.cj-saison--tres-dense .cj-saison-frise{padding:4px 0 0}
.cj-saison--tres-dense .cj-saison-frise__svg{height:160px}
.cj-saison--tres-dense .cj-saison-rdv__carte{padding:7px 6px 6px;gap:2px}
.cj-saison--tres-dense .cj-saison-rdv__icone{width:22px;height:22px}
.cj-saison--tres-dense .cj-saison-rdv__nom{font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-saison--tres-dense .cj-saison-rdv__ligne{font-size:max(var(--cj-plancher,0px),10px);line-height:1.2}
.cj-saison--tres-dense .cj-saison-repere__icone{width:24px;height:24px}
.cj-saison--tres-dense .cj-saison-repere__gros{font-size:max(var(--cj-plancher,0px),15px)}
.cj-saison--tres-dense .cj-saison-repere__petit{font-size:max(var(--cj-plancher,0px),10px);line-height:1.2}
.cj-saison--tres-dense .cj-saison-valises{padding:7px 11px;gap:4px}
.cj-saison--tres-dense .cj-saison-valises__grille{gap:3px 8px}
.cj-saison--tres-dense .cj-saison-valise{font-size:max(var(--cj-plancher,0px),10px);line-height:1.15;gap:5px}
.cj-saison--tres-dense .cj-saison-valise__icone{width:15px;height:15px}
.cj-saison--tres-dense .cj-saison-valise .cj-case{width:11px;height:11px}

/* --- parts/securite.css --- */
/* ======================================================================
   SECURITE · sécurité et pépins : numéros d'urgence, ambassade, assurance, que faire si…, les phrases qui aident (maquette « Page 26 · sécurité & pépins »)
   ====================================================================== */
.cj-securite{display:flex;flex-direction:column;justify-content:space-between;gap:10px;flex-grow:1;min-height:0}
.cj-securite-bloc__titre{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),15px);letter-spacing:.05em;text-transform:uppercase;color:var(--cj-vermillon)}

/* ---------- les numéros d'urgence : trois cases à filet ---------- */
.cj-securite-urgences{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
.cj-securite-urgence{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:9px 6px;border:1px solid var(--cj-filet);border-radius:var(--cj-rayon-petit);color:var(--cj-encre);text-align:center}
.cj-securite-urgence--accent{color:var(--cj-vermillon)}
.cj-securite-urgence__numero{font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),28px);line-height:1}
.cj-securite-urgence__numero-long{font-family:var(--cj-police-mono);font-weight:600;font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.2}
.cj-securite-urgence__label{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),15px);line-height:1.1}

/* ---------- ambassade et assurance : deux colonnes entre filets ---------- */
.cj-securite-duo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.cj-securite-bloc{display:flex;flex-direction:column;gap:4px;padding:8px 2px;border-bottom:1px solid var(--cj-filet);min-width:0}
.cj-securite-bloc__ligne{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.4}
.cj-securite-bloc__ligne strong{font-family:var(--cj-police-mono);font-weight:600}
.cj-securite-champ{display:flex;align-items:flex-end;gap:6px;font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-securite-champ strong{font-weight:700;white-space:nowrap}
.cj-securite-champ__ligne{flex-grow:1;height:14px;border-bottom:1px dotted var(--cj-bois)}

/* ---------- que faire si… : une carte crème, deux colonnes d'icônes ---------- */
.cj-securite-pepins{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:0 10px;border-radius:var(--cj-rayon);background:var(--cj-creme)}
.cj-securite-pepin{display:flex;gap:7px;align-items:flex-start;padding:8px 2px;border-bottom:1px solid var(--cj-filet)}
.cj-securite-pepin__icone{width:22px;height:22px;flex-shrink:0;color:var(--cj-encre)}
.cj-securite-pepin__texte{display:flex;flex-direction:column;gap:1px;min-width:0}
.cj-securite-pepin__titre{font-weight:700;font-size:max(var(--cj-plancher,0px),13px);line-height:1.15}
.cj-securite-pepin__ligne{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.38;color:var(--cj-encre-douce)}

/* ---------- les phrases qui aident ---------- */
.cj-securite-phrases{display:flex;flex-direction:column;gap:2px;padding:7px 12px 5px;border-radius:var(--cj-rayon);background:var(--cj-creme);border-bottom:1px solid var(--cj-filet)}
.cj-securite-phrases__grille{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}
.cj-securite-phrase{display:flex;flex-direction:column;padding:4px 0;border-bottom:1px dotted var(--cj-filet-doux)}
.cj-securite-phrase__romaji{font-weight:700;font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.15}
.cj-securite-phrase__kana{font-family:var(--cj-police-jp);font-size:max(var(--cj-plancher,0px),10px);color:var(--cj-vermillon)}
.cj-securite-phrase__sens{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),13px);line-height:1.1;color:var(--cj-encre-douce)}

/* plus de pépins (enfants, été…) : tout se resserre, puis encore un cran */
.cj-securite--dense{gap:7px}
.cj-securite--dense .cj-securite-urgence{padding:6px 5px}
.cj-securite--dense .cj-securite-urgence__numero{font-size:max(var(--cj-plancher,0px),28px)}
.cj-securite--dense .cj-securite-bloc{padding:6px 2px;gap:3px}
.cj-securite--dense .cj-securite-pepin{padding:5px 2px}
.cj-securite--dense .cj-securite-pepin__icone{width:19px;height:19px}
.cj-securite--dense .cj-securite-pepin__titre{font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-securite--dense .cj-securite-pepin__ligne{font-size:max(var(--cj-plancher,0px),10px);line-height:1.3}
.cj-securite--dense .cj-securite-phrases{padding:5px 12px 4px}
.cj-securite--dense .cj-securite-phrase{padding:3px 0}
.cj-securite--tres-dense{gap:5px}
.cj-securite--tres-dense .cj-securite-urgence{padding:4px 4px}
.cj-securite--tres-dense .cj-securite-urgence__numero{font-size:max(var(--cj-plancher,0px),24px)}
.cj-securite--tres-dense .cj-securite-urgence__label{font-size:max(var(--cj-plancher,0px),13px)}
.cj-securite--tres-dense .cj-securite-bloc{padding:4px 2px;gap:2px}
.cj-securite--tres-dense .cj-securite-bloc__ligne{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.3}
.cj-securite--tres-dense .cj-securite-pepins{gap:4px}
.cj-securite--tres-dense .cj-securite-pepin{padding:4px 2px;gap:6px}
.cj-securite--tres-dense .cj-securite-pepin__icone{width:17px;height:17px}
.cj-securite--tres-dense .cj-securite-pepin__titre{font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-securite--tres-dense .cj-securite-pepin__ligne{font-size:max(var(--cj-plancher,0px),10px);line-height:1.25}
.cj-securite--tres-dense .cj-securite-phrases{padding:4px 12px 3px;gap:1px}
.cj-securite--tres-dense .cj-securite-phrase{padding:2px 0}
.cj-securite--tres-dense .cj-securite-phrase__romaji{font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-securite--tres-dense .cj-securite-phrase__sens{font-size:max(var(--cj-plancher,0px),11.5px)}

/* --- parts/sommaire.css --- */
/* ======================================================================
   SOMMAIRE · la table des pages par section (maquette « Sommaire du carnet »)
   ====================================================================== */
.cj-page--sommaire{gap:9px;justify-content:flex-start}
.cj-sommaire-entete{display:flex;flex-direction:column;align-items:center;gap:6px;flex-shrink:0}
.cj-sommaire-entete__kei{width:40px;height:26px;color:var(--cj-encre)}
.cj-sommaire-entete__route{width:90px;margin-top:0}
.cj-sommaire-titre{margin:0;font-family:var(--cj-police-titre);font-weight:500;font-size:max(var(--cj-plancher,0px),48px);line-height:1;letter-spacing:.06em;color:var(--cj-encre)}
.cj-sommaire-sous-titre{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.3em;text-transform:uppercase;color:var(--cj-vermillon)}

/* les sections, réparties sur la hauteur qui reste ; les journées et la vie au Japon sont sur une carte crème */
.cj-sommaire{flex-grow:1;min-height:0;display:flex;flex-direction:column;justify-content:flex-start;gap:10px}
.cj-sommaire-partie{display:flex;flex-direction:column;gap:4px}
.cj-sommaire-partie--journees,.cj-sommaire-partie--vie{background:var(--cj-creme);border-radius:var(--cj-rayon);padding:8px 12px}
.cj-sommaire-partie__titre{display:flex;align-items:center;gap:8px}
.cj-sommaire-partie__nom{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),15px);line-height:1.1;color:var(--cj-vermillon)}
.cj-sommaire-partie__filet{flex-grow:1;height:1.5px;border:1px solid var(--cj-filet);opacity:.4;border-radius:4px}
.cj-sommaire-lignes{display:flex;flex-direction:column;gap:4px}
.cj-sommaire-lignes--deux{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}
.cj-sommaire-ligne{display:flex;align-items:center;gap:8px;padding:0 2px;min-height:27px;border-bottom:1px dotted var(--cj-route-points);color:var(--cj-encre)}
.cj-sommaire-ligne--large{grid-column:span 2}
.cj-sommaire-ligne__titre{flex-grow:1;font-size:max(var(--cj-plancher,0px),11.5px);font-weight:600;letter-spacing:.04em;line-height:1.2;text-transform:uppercase}
.cj-sommaire-ligne__num{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:600;flex-shrink:0}

/* beaucoup de pages (16 lignes et plus) : les lignes se resserrent ; au-delà de 19, encore un cran */
.cj-sommaire--dense{gap:6px}
.cj-sommaire--dense .cj-sommaire-partie{gap:3px}
.cj-sommaire--dense .cj-sommaire-partie--journees,.cj-sommaire--dense .cj-sommaire-partie--vie{padding:6px 12px}
.cj-sommaire--dense .cj-sommaire-partie__nom{font-size:max(var(--cj-plancher,0px),15px)}
.cj-sommaire--dense .cj-sommaire-ligne{min-height:23px}
.cj-sommaire--dense .cj-sommaire-ligne__titre{font-size:max(var(--cj-plancher,0px),10px)}
.cj-sommaire--tres-dense{gap:4px}
.cj-sommaire--tres-dense .cj-sommaire-partie{gap:2px}
.cj-sommaire--tres-dense .cj-sommaire-partie--journees,.cj-sommaire--tres-dense .cj-sommaire-partie--vie{padding:5px 10px}
.cj-sommaire--tres-dense .cj-sommaire-partie__nom{font-size:max(var(--cj-plancher,0px),13px)}
.cj-sommaire--tres-dense .cj-sommaire-lignes,.cj-sommaire--tres-dense .cj-sommaire-lignes--deux{gap:2px}
.cj-sommaire--tres-dense .cj-sommaire-ligne{min-height:20px}
.cj-sommaire--tres-dense .cj-sommaire-ligne__titre{font-size:max(var(--cj-plancher,0px),10px)}
.cj-sommaire--tres-dense .cj-sommaire-ligne__num{font-size:max(var(--cj-plancher,0px),10px)}

/* --- parts/tablette.css --- */
/* ======================================================================
   TABLETTE · la food : la tablette de commande (tuiles plats et prix), puis « à table, comme eux » (maquette « Page 32 · food »)
   ====================================================================== */
.cj-page--tablette .cj-titre{font-size:max(var(--cj-plancher,0px),34px)}
.cj-tablette{display:flex;flex-direction:column;gap:6px;flex-grow:1;min-height:0;justify-content:space-between}
.cj-tablette-intro{font-size:max(var(--cj-plancher,0px),10px);line-height:1.4;color:var(--cj-encre);padding:0 2px}
.cj-tablette-intro strong{font-weight:700}

/* ---------- la tablette : coque sombre, écran clair, bandeau rouge ---------- */
.cj-tablette-coque{background:var(--cj-encre-forte);border-radius:18px;padding:8px;box-shadow:0 2px 0 var(--cj-filet)}
.cj-tablette-ecran{background:var(--cj-creme);border-radius:var(--cj-rayon);overflow:hidden;display:flex;flex-direction:column}
.cj-tablette-bandeau{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 10px;background:var(--cj-vermillon);color:var(--cj-blanc)}
.cj-tablette-bandeau__titre{font-weight:800;font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.2}
.cj-tablette-bandeau__kana{font-family:var(--cj-police-jp);font-weight:400;font-size:max(var(--cj-plancher,0px),10px)}
.cj-tablette-bandeau__bouton{flex-shrink:0;padding:3px 10px;border-radius:12px;background:var(--cj-blanc);color:var(--cj-vermillon);font-weight:800;font-size:max(var(--cj-plancher,0px),10px);white-space:nowrap}
/* les tuiles : trois colonnes */
.cj-tablette-tuiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:7px 8px 8px}
.cj-tablette-tuile{display:flex;flex-direction:column;gap:2px;min-width:0;padding:5px 7px;background:var(--cj-blanc);border-radius:8px;box-shadow:0 1px 0 var(--cj-filet-doux)}
.cj-tablette-tuile__tete{display:flex;align-items:center;gap:6px}
.cj-tablette-tuile__icone{width:26px;height:26px;flex-shrink:0;border-radius:7px;display:flex;align-items:center;justify-content:center;color:var(--cj-encre);background:var(--cj-cat-souvenirs)}
.cj-tablette-tuile__icone svg{width:20px;height:20px}
.cj-tablette-tuile__icone--ble{background:var(--cj-cat-souvenirs)}
.cj-tablette-tuile__icone--rose{background:var(--cj-cat-kawaii)}
.cj-tablette-tuile__icone--sakura{background:var(--cj-sakura)}
.cj-tablette-tuile__icone--lin{background:var(--cj-lin)}
.cj-tablette-tuile__icone--filet{background:var(--cj-filet-doux)}
.cj-tablette-tuile__icone--vert{background:var(--cj-cat-vintage)}
.cj-tablette-tuile__icone--bleu{background:var(--cj-cat-geek)}
.cj-tablette-tuile__icone--mauve{background:var(--cj-cat-mode)}
.cj-tablette-tuile__noms{display:flex;flex-direction:column;min-width:0}
.cj-tablette-tuile__nom{font-weight:700;font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.1}
.cj-tablette-tuile__kana{font-family:var(--cj-police-jp);font-size:max(var(--cj-plancher,0px),10px);line-height:1.2;color:var(--cj-vermillon)}
.cj-tablette-tuile__texte{font-size:max(var(--cj-plancher,0px),10px);line-height:1.25;color:var(--cj-encre);flex-grow:1}
.cj-tablette-tuile__pied{display:flex;align-items:center;justify-content:space-between;margin-top:3px}
.cj-tablette-tuile__prix{font-weight:800;font-size:max(var(--cj-plancher,0px),10px);color:var(--cj-vermillon)}
.cj-tablette-tuile__plus{width:16px;height:16px;flex-shrink:0;border-radius:50%;background:var(--cj-vermillon);color:var(--cj-blanc);font-weight:800;font-size:max(var(--cj-plancher,0px),11.5px);line-height:16px;text-align:center}

/* ---------- à table, comme eux : deux colonnes de petits blocs ---------- */
.cj-tablette-blocs{display:flex;flex-direction:column;gap:5px;padding:0 2px}
.cj-tablette-blocs__colonnes{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.cj-tablette-blocs__colonne{display:flex;flex-direction:column;gap:5px;min-width:0}
.cj-tablette-bloc{font-size:max(var(--cj-plancher,0px),10px);line-height:1.3}
.cj-tablette-bloc strong{font-weight:700}
.cj-tablette-bloc .cj-kana{font-size:max(var(--cj-plancher,0px),10px)}
.cj-tablette-alerte{color:var(--cj-vermillon)}

/* ---------- dense : plus de tuiles ou des blocs plus longs ---------- */
.cj-tablette--dense{gap:5px}
.cj-tablette--dense .cj-tablette-coque{padding:6px;border-radius:14px}
.cj-tablette--dense .cj-tablette-tuiles{gap:5px;padding:6px}
.cj-tablette--dense .cj-tablette-tuile{padding:4px 6px}
.cj-tablette--dense .cj-tablette-tuile__texte{font-size:max(var(--cj-plancher,0px),10px);line-height:1.2}
.cj-tablette--dense .cj-tablette-bloc{font-size:max(var(--cj-plancher,0px),10px);line-height:1.25}
.cj-tablette--tres-dense{gap:4px}
.cj-tablette--tres-dense .cj-tablette-intro{font-size:max(var(--cj-plancher,0px),10px);line-height:1.3}
.cj-tablette--tres-dense .cj-tablette-coque{padding:5px;border-radius:12px}
.cj-tablette--tres-dense .cj-tablette-bandeau{padding:5px 10px}
.cj-tablette--tres-dense .cj-tablette-tuiles{gap:4px;padding:5px}
.cj-tablette--tres-dense .cj-tablette-tuile{padding:3px 5px;gap:1px}
.cj-tablette--tres-dense .cj-tablette-tuile__icone{width:22px;height:22px}
.cj-tablette--tres-dense .cj-tablette-tuile__icone svg{width:17px;height:17px}
.cj-tablette--tres-dense .cj-tablette-tuile__nom{font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-tablette--tres-dense .cj-tablette-tuile__texte{font-size:max(var(--cj-plancher,0px),10px);line-height:1.2}
.cj-tablette--tres-dense .cj-tablette-tuile__pied{margin-top:2px}
.cj-tablette--tres-dense .cj-tablette-blocs{gap:3px}
.cj-tablette--tres-dense .cj-tablette-blocs__colonne{gap:3px}
.cj-tablette--tres-dense .cj-tablette-bloc{font-size:max(var(--cj-plancher,0px),10px);line-height:1.22}

/* --- parts/transports.css --- */
/* ======================================================================
   TRANSPORTS · le guide des transports de Tokyo : les lignes gare par gare, la Suica, l'aéroport, le numéro de sortie (maquette « Page 21 · guide des transports »)
   ====================================================================== */
.cj-page--transports{gap:10px;justify-content:flex-start}
/* l'en-tête centré : accroche manuscrite, titre sur une ou deux lignes, sous-titre manuscrit avec un kanji */
.cj-transports-entete{align-items:center;text-align:center;gap:2px}
.cj-transports-entete .cj-kicker{font-size:max(var(--cj-plancher,0px),28px)}
.cj-transports-entete .cj-titre{font-size:max(var(--cj-plancher,0px),34px);text-align:center}
.cj-transports-entete__accroche{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);line-height:1.2;color:var(--cj-vermillon)}
.cj-transports-entete__kanji{font-family:var(--cj-police-jp);font-size:13px;color:var(--cj-encre-douce)}
.cj-transports{display:flex;flex-direction:column;justify-content:space-between;gap:10px;flex-grow:1;min-height:0}

/* ---------- les gares : une ligne par gare, les lignes en puces JR (vert riz), métro (lin), privé (filet) ---------- */
.cj-transports-gares{display:flex;flex-direction:column;border-bottom:1px solid var(--cj-filet)}
.cj-transports-gares__tete{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:0 2px 5px}
.cj-transports-gares__titre{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);letter-spacing:.02em;color:var(--cj-encre)}
.cj-transports-legende{display:flex;gap:8px;font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.08em;text-transform:uppercase;color:var(--cj-encre-douce)}
.cj-transports-legende__item{display:flex;align-items:center;gap:4px}
.cj-transports-legende__carre{width:9px;height:9px;border-radius:2px}
.cj-transports-legende__carre--jr{background:var(--cj-riz)}
.cj-transports-legende__carre--metro{background:var(--cj-filet-doux)}
.cj-transports-legende__carre--prive{border:1px solid var(--cj-filet)}
.cj-transports-gare{display:flex;align-items:center;gap:10px;padding:4px 4px;border-bottom:1px solid var(--cj-filet-doux)}
.cj-transports-gare__point{width:8px;height:8px;flex-shrink:0;border-radius:50%;border:1.5px solid var(--cj-bois)}
.cj-transports-gare__nom{width:70px;flex-shrink:0;font-weight:700;font-size:max(var(--cj-plancher,0px),13px);line-height:1.15}
.cj-transports-gare__puces{display:flex;flex-wrap:wrap;gap:3px 4px;min-width:0}
.cj-transports-puce{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:2px 6px;border-radius:var(--cj-rayon-petit);white-space:nowrap;color:var(--cj-encre)}
.cj-transports-puce--jr{background:var(--cj-riz)}
.cj-transports-puce--metro{background:var(--cj-filet-doux)}
.cj-transports-puce--prive{border:1px solid var(--cj-filet);color:var(--cj-encre-douce)}
.cj-transports-gares__note{padding:6px 4px 6px;font-size:max(var(--cj-plancher,0px),10px);line-height:1.35;color:var(--cj-encre-douce)}
.cj-transports-gares__note strong{font-weight:700;color:var(--cj-encre)}

/* ---------- deux colonnes : la Suica, l'aéroport ---------- */
.cj-transports-duo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.cj-transports-bloc{display:flex;flex-direction:column;gap:6px;padding:8px 6px;border-bottom:1px solid var(--cj-filet);min-width:0}
.cj-transports-bloc__titre{font-weight:700;font-size:max(var(--cj-plancher,0px),15px);line-height:1;text-transform:uppercase}
.cj-transports-suica__ligne{display:flex;gap:8px;align-items:flex-start}
.cj-transports-suica__carte{width:50px;height:34px;flex-shrink:0}
.cj-transports-suica__accroche{font-weight:700;font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.4;color:var(--cj-encre)}
.cj-transports-suica__ou{display:flex;flex-direction:column;gap:3px}
.cj-transports-suica__ou .cj-label{font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.08em}
.cj-transports-suica__texte{font-size:max(var(--cj-plancher,0px),10px);line-height:1.35}
.cj-transports-suica__texte strong{font-weight:700}
.cj-transports-aero__ligne{display:flex;flex-direction:column;gap:1px}
.cj-transports-aero__nom{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--cj-vermillon)}
.cj-transports-aero__texte{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.35}

/* ---------- l'astuce : deux lignes manuscrites, puis l'encart crème avec le badge de ligne ---------- */
.cj-transports-astuce{display:flex;flex-direction:column;gap:1px;padding:2px 2px 0}
.cj-transports-astuce__titre{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);line-height:1.1;color:var(--cj-vermillon)}
.cj-transports-astuce__phrase{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);line-height:1.25;color:var(--cj-encre)}
.cj-transports-astuce__encart{display:flex;gap:8px;align-items:center;margin-top:5px;padding:7px 10px;background:var(--cj-creme);border-radius:var(--cj-rayon)}
.cj-transports-astuce__badge{width:22px;height:22px;flex-shrink:0}
.cj-transports-astuce__texte{font-size:max(var(--cj-plancher,0px),10px);line-height:1.35}
.cj-transports-astuce__texte strong{font-weight:700}

/* plus de gares ou des textes plus longs : tout se resserre, puis encore un cran */
.cj-transports--dense{gap:7px}
.cj-transports--dense .cj-transports-gare{padding:3px 4px;gap:8px}
.cj-transports--dense .cj-transports-gare__nom{font-size:max(var(--cj-plancher,0px),11.5px);width:64px}
.cj-transports--dense .cj-transports-puce{font-size:max(var(--cj-plancher,0px),10px);padding:1px 5px}
.cj-transports--dense .cj-transports-gares__note,.cj-transports--dense .cj-transports-suica__texte,.cj-transports--dense .cj-transports-astuce__texte{font-size:max(var(--cj-plancher,0px),10px);line-height:1.3}
.cj-transports--dense .cj-transports-bloc{padding:6px 4px;gap:4px}
.cj-transports--dense .cj-transports-astuce__encart{padding:5px 8px;margin-top:3px}
.cj-transports--tres-dense{gap:5px}
.cj-transports--tres-dense .cj-transports-gare{padding:2px 4px;gap:7px}
.cj-transports--tres-dense .cj-transports-gare__nom{font-size:max(var(--cj-plancher,0px),11.5px);width:60px}
.cj-transports--tres-dense .cj-transports-puce{font-size:max(var(--cj-plancher,0px),10px);padding:1px 4px}
.cj-transports--tres-dense .cj-transports-gares__note,.cj-transports--tres-dense .cj-transports-suica__texte,.cj-transports--tres-dense .cj-transports-astuce__texte,.cj-transports--tres-dense .cj-transports-aero__texte{font-size:max(var(--cj-plancher,0px),10px);line-height:1.25}
.cj-transports--tres-dense .cj-transports-bloc{padding:4px 4px;gap:3px}
.cj-transports--tres-dense .cj-transports-bloc__titre{font-size:max(var(--cj-plancher,0px),13px)}
.cj-transports--tres-dense .cj-transports-suica__accroche{font-size:max(var(--cj-plancher,0px),10px)}
.cj-transports--tres-dense .cj-transports-astuce__titre,.cj-transports--tres-dense .cj-transports-astuce__phrase{font-size:max(var(--cj-plancher,0px),15px)}
.cj-transports--tres-dense .cj-transports-astuce__encart{padding:4px 8px;margin-top:2px}

/* --- parts/vitrine.css --- */
/* ======================================================================
   VITRINE · le konbini : le comptoir de snacks chauds, les services, le dialogue de caisse, la note (maquette « Page 33 · konbini »)
   ====================================================================== */
.cj-page--vitrine .cj-titre{font-size:max(var(--cj-plancher,0px),34px)}
.cj-vitrine{display:flex;flex-direction:column;gap:10px;flex-grow:1;min-height:0;justify-content:space-between}
.cj-vitrine-intro{font-size:max(var(--cj-plancher,0px),10px);line-height:1.42;color:var(--cj-encre);padding:0 2px}
.cj-vitrine-intro strong{font-weight:700}

/* ---------- le comptoir : kicker manuscrit, meuble sombre, vitre éclairée ---------- */
.cj-vitrine-comptoir{display:flex;flex-direction:column;gap:4px}
.cj-vitrine-comptoir__tete{display:flex;align-items:baseline;justify-content:space-between;padding:0 2px}
.cj-vitrine-comptoir__kicker{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);line-height:1;color:var(--cj-vermillon)}
.cj-vitrine-comptoir__prix{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.12em;text-transform:uppercase;color:var(--cj-encre-douce)}
.cj-vitrine-meuble{background:var(--cj-encre-forte);border-radius:12px;padding:6px;box-shadow:0 3px 0 var(--cj-filet)}
.cj-vitrine-enseigne{display:flex;align-items:center;justify-content:center;gap:8px;padding:3px 0 6px;color:var(--cj-cat-souvenirs)}
.cj-vitrine-enseigne__lampe{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--cj-or);box-shadow:0 0 6px var(--cj-or)}
.cj-vitrine-enseigne__kana{font-family:var(--cj-police-jp);font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-vitrine-enseigne__texte{font-weight:800;font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.18em;text-transform:uppercase}
/* la vitre : un fond chaud qui s'intensifie vers le bas, deux reflets obliques */
.cj-vitrine-vitre{position:relative;overflow:hidden;border-radius:6px;background:var(--cj-cat-souvenirs);box-shadow:inset 0 0 0 2px rgba(255,255,255,.35)}
.cj-vitrine-vitre::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent,var(--cj-or));opacity:.45;pointer-events:none}
.cj-vitrine-vitre__reflet{position:absolute;top:-20px;left:55%;width:26px;height:260px;background:var(--cj-blanc);opacity:.28;transform:rotate(24deg);pointer-events:none}
.cj-vitrine-vitre__reflet--fin{left:64%;width:8px;opacity:.22}
.cj-vitrine-rangee{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:9px 8px 8px}
.cj-vitrine-etagere{position:relative;z-index:1;height:4px;margin:0 4px;background:linear-gradient(var(--cj-kanji),var(--cj-encre-pale))}
.cj-vitrine-produit{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:3px;min-width:0;padding:6px 4px 5px;background:var(--cj-blanc);border-radius:6px;box-shadow:0 2px 0 var(--cj-filet)}
.cj-vitrine-produit__badge{position:absolute;top:-5px;right:-3px;padding:1px 3px;border-radius:2px;background:var(--cj-vermillon);color:var(--cj-blanc);font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:600;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}
.cj-vitrine-produit__nom{font-weight:700;font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.1}
.cj-vitrine-produit__ligne{font-size:max(var(--cj-plancher,0px),10px);line-height:1.2;color:var(--cj-encre-douce)}
.cj-vitrine-produit__prix{margin-top:1px;padding:1px 6px;background:var(--cj-or);border:1px solid var(--cj-or-fonce);font-weight:800;font-size:max(var(--cj-plancher,0px),10px);color:var(--cj-encre);transform:rotate(-2deg)}

/* ---------- les services : carte crème, deux colonnes ---------- */
.cj-vitrine-services{display:flex;flex-direction:column;gap:5px;padding:9px 14px}
.cj-vitrine-services__grille{display:grid;grid-template-columns:1fr 1fr;gap:5px 14px}
.cj-vitrine-service{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.35}
.cj-vitrine-service strong{font-weight:700}

/* ---------- à la caisse : question à gauche, réponse manuscrite à droite ---------- */
.cj-vitrine-caisse{display:flex;flex-direction:column;gap:2px}
.cj-vitrine-echange{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:4px 0;border-bottom:1px solid var(--cj-filet-doux)}
.cj-vitrine-echange__question{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.3}
.cj-vitrine-echange__question strong{font-weight:700}
.cj-vitrine-echange__sens{color:var(--cj-encre-douce)}
.cj-vitrine-echange__reponse{flex-shrink:0;max-width:55%;text-align:right;font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),13px);line-height:1.1;color:var(--cj-vermillon)}

/* ---------- la note manuscrite ---------- */
.cj-vitrine-note{display:flex;flex-direction:column;gap:0;padding:2px 4px 0}

/* ---------- dense : une étagère de plus, des listes plus longues ---------- */
.cj-vitrine--dense{gap:7px}
.cj-vitrine--dense .cj-vitrine-intro{font-size:max(var(--cj-plancher,0px),10px);line-height:1.35}
.cj-vitrine--dense .cj-vitrine-rangee{gap:5px;padding:7px 7px 6px}
.cj-vitrine--dense .cj-vitrine-produit{padding:5px 3px 4px;gap:2px}
.cj-vitrine--dense .cj-vitrine-services{padding:7px 12px;gap:4px}
.cj-vitrine--dense .cj-vitrine-service,.cj-vitrine--dense .cj-vitrine-echange__question{font-size:max(var(--cj-plancher,0px),10px);line-height:1.3}
.cj-vitrine--dense .cj-vitrine-echange{padding:3px 0}
.cj-vitrine--dense .cj-note__manuscrit{font-size:max(var(--cj-plancher,0px),15px)}
.cj-vitrine--tres-dense{gap:5px}
.cj-vitrine--tres-dense .cj-vitrine-intro{font-size:max(var(--cj-plancher,0px),10px);line-height:1.3}
.cj-vitrine--tres-dense .cj-vitrine-enseigne{padding:2px 0 4px}
.cj-vitrine--tres-dense .cj-vitrine-rangee{gap:4px;padding:6px 6px 5px}
.cj-vitrine--tres-dense .cj-vitrine-produit{padding:4px 3px 3px;gap:1px}
.cj-vitrine--tres-dense .cj-vitrine-produit__nom{font-size:max(var(--cj-plancher,0px),10px)}
.cj-vitrine--tres-dense .cj-vitrine-services{padding:6px 12px;gap:3px}
.cj-vitrine--tres-dense .cj-vitrine-services__grille{gap:3px 12px}
.cj-vitrine--tres-dense .cj-vitrine-service,.cj-vitrine--tres-dense .cj-vitrine-echange__question{font-size:max(var(--cj-plancher,0px),10px);line-height:1.25}
.cj-vitrine--tres-dense .cj-vitrine-echange{padding:2px 0}
.cj-vitrine--tres-dense .cj-vitrine-echange__reponse{font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-vitrine--tres-dense .cj-note__manuscrit{font-size:max(var(--cj-plancher,0px),15px);line-height:1.2}
.cj-vitrine--tres-dense .cj-note__titre{font-size:max(var(--cj-plancher,0px),15px)}

/* ====== FIN DES GABARITS ====== */

/* ---------- impression ---------- */
@media print{
  .cj-doc{background:#fff}
  .cj-doc__barre{display:none}
  .cj-doc__pages{display:block;padding:0}
  .cj-page{page-break-after:always;margin:0}
  .cj-deborde{display:none}
}
@page{size:148mm 210mm;margin:0} /* la mise à l'échelle px → A5 se règle à l'étape PDF */

/* ---------- sur place, par jour : le budget ramené à la journée, poste par poste, et ce qu'il permet (oct. 2026) ---------- */
.cj-budget-vie{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:10px 18px;padding:12px 14px;border:1px solid var(--cj-filet);border-radius:var(--cj-rayon)}
.cj-budget-vie__tete{display:flex;flex-direction:column;gap:3px;min-width:0}
.cj-budget-vie__label{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);line-height:1.1;color:var(--cj-encre)}
.cj-budget-vie__tete .cj-budget-vie__label{color:var(--cj-vermillon)}
.cj-budget-vie__ligne{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 6px}
.cj-budget-vie__montant{font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),40px);line-height:1}
.cj-budget-vie__pp{font-size:max(var(--cj-plancher,0px),11.5px);color:var(--cj-encre-douce)}
.cj-budget-vie__total{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.3;color:var(--cj-encre);margin-top:4px}
.cj-budget-vie__fixes{font-size:max(var(--cj-plancher,0px),10px);line-height:1.3;color:var(--cj-encre-douce)}
.cj-budget-vie__barres{display:flex;flex-direction:column;justify-content:center;gap:6px;min-width:0}
.cj-budget-barre{display:grid;grid-template-columns:62px minmax(0,1fr) 46px;align-items:center;gap:6px}
.cj-budget-barre__nom{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.2}
.cj-budget-barre__piste{height:7px;border-radius:4px;background:var(--cj-filet-doux);overflow:hidden}
.cj-budget-barre__plein{display:block;height:100%;border-radius:4px;background:var(--cj-vermillon);transition:width .25s ease}
.cj-budget-barre__prix{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:600;text-align:right;white-space:nowrap;color:var(--cj-vermillon)}
.cj-budget-vie__exemples{grid-column:1/-1;display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;padding-top:9px;border-top:1px dashed var(--cj-filet)}
.cj-budget-vie__liste{display:flex;flex-wrap:wrap;gap:5px;margin:0;padding:0;list-style:none}
.cj-budget-vie__liste[hidden]{display:none}
.cj-budget-vie__liste li{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.2;padding:4px 9px;border:1px solid var(--cj-filet);border-radius:999px;background:var(--cj-creme)}
@media (prefers-reduced-motion:reduce){.cj-budget-barre__plein{transition:none}}

/* ---------- oct. 2026 : les numéros d'étape deviennent des pastilles vermillon (liste du jour, programme, carte du jour) ---------- */
.cj-place{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;flex-shrink:0;
  border:0;border-radius:50%;background:var(--cj-vermillon);font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:700;line-height:1;color:var(--cj-creme)}
.cj-jour-fil--tres-dense .cj-etape .cj-place{width:18px;height:18px;font-size:max(var(--cj-plancher,0px),10px)}
/* la carte du jour : un papier quadrillé très léger, des pastilles centrées sur le lieu, les noms sur un halo crème */
.cj-carte-jour__cadre{background-color:var(--cj-creme);background-image:linear-gradient(rgba(38,33,28,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(38,33,28,.045) 1px,transparent 1px);background-size:18px 18px}
.cj-carte-jour__trace--transport{stroke-width:2.6;stroke-dasharray:6 5}
.cj-carte-jour__trace--pied{stroke-width:1.4;stroke-dasharray:2.5 3.5;opacity:.75}
.cj-carte-jour__pin circle{fill:var(--cj-vermillon);stroke:var(--cj-creme);stroke-width:2.2}
.cj-carte-jour__pin path,.cj-carte-jour__point{display:none}
.cj-carte-jour__num{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:700;fill:var(--cj-creme)}
.cj-carte-jour__hotel-fond{fill:var(--cj-creme);stroke:var(--cj-encre);stroke-width:1.2}
.cj-carte-jour__etiquette{font-size:7.5px;font-weight:600;fill:var(--cj-encre);paint-order:stroke;stroke:var(--cj-creme);stroke-width:3px;stroke-linejoin:round}
.cj-programme-jour .cj-place{width:28px;height:28px;padding:0;font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-programme--dense .cj-programme-jour .cj-place{width:24px;height:24px;padding:0;font-size:max(var(--cj-plancher,0px),10px)}
.cj-programme--tres-dense .cj-programme-jour .cj-place{width:22px;height:22px;padding:0;font-size:max(var(--cj-plancher,0px),10px)}
/* le sommaire et le programme renvoient à leurs pages : des liens qui gardent l'allure d'une ligne imprimée */
a.cj-programme-jour,a.cj-sommaire-ligne{color:inherit;text-decoration:none}
a.cj-programme-jour:hover .cj-programme-jour__titre,a.cj-sommaire-ligne:hover .cj-sommaire-ligne__titre{color:var(--cj-vermillon)}
a.cj-programme-jour:hover .cj-programme-jour__page,a.cj-sommaire-ligne:hover .cj-sommaire-ligne__num{color:var(--cj-vermillon)}
html{scroll-behavior:smooth}
.cj-page{scroll-margin-top:72px}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* le bouton Google Maps de la journée : bien visible, en bas du programme */
.cj-jour-maps{display:flex;align-items:center;gap:10px;margin-top:8px;padding:9px 14px;border-radius:var(--cj-rayon);background:var(--cj-vermillon);color:var(--cj-creme);text-decoration:none;flex-shrink:0}
.cj-jour-maps:hover{background:var(--cj-vermillon-fonce,#a8361f)}
.cj-jour-maps__icone{width:20px;height:20px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:2;stroke-linejoin:round}
.cj-jour-maps__texte{display:flex;flex-direction:column;gap:1px;flex-grow:1;min-width:0}
.cj-jour-maps__titre{font-weight:700;font-size:max(var(--cj-plancher,0px),13px);line-height:1.2}
.cj-jour-maps__sous{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.08em;text-transform:uppercase;opacity:.85}
.cj-jour-maps__fleche{font-size:max(var(--cj-plancher,0px),17px);line-height:1}

/* ---------- la visionneuse comme un vrai livre (ordinateur) : des doubles pages, une pliure au milieu ---------- */
.cj-doc__double{display:contents}
.cj-doc__vide{display:none}
@media (min-width:1200px){
  .cj-doc__pages{flex-direction:column;flex-wrap:nowrap;align-items:center;gap:36px;padding-bottom:64px}
  .cj-doc__barre{flex:none;align-self:stretch}
  .cj-doc__double{display:flex;position:relative;box-shadow:0 2px 0 rgba(38,33,28,.10),0 18px 40px -24px rgba(38,33,28,.45)}
  .cj-doc__double .cj-page{box-shadow:none}
  /* la pliure : une ombre douce de part et d'autre du milieu */
  .cj-doc__double:not(.cj-doc__double--gauche):not(.cj-doc__double--droite)::after{content:"";position:absolute;top:0;bottom:0;left:50%;width:36px;transform:translateX(-50%);pointer-events:none;
    background:linear-gradient(90deg,transparent,rgba(38,33,28,.10) 45%,rgba(38,33,28,.16) 50%,rgba(38,33,28,.10) 55%,transparent)}
  .cj-doc__double--droite,.cj-doc__double--gauche{box-shadow:none}
  .cj-doc__double--droite .cj-page,.cj-doc__double--gauche .cj-page{box-shadow:0 2px 0 rgba(38,33,28,.10),0 18px 40px -24px rgba(38,33,28,.45)}
  .cj-doc__vide{display:block;width:var(--cj-page-l)}
}
@media print{.cj-doc__double{display:contents}.cj-doc__vide{display:none}.cj-doc__reglages,.cj-reglages{display:none}}

/* ---------- le panneau Réglages : il glisse depuis la droite ---------- */
.cj-doc__reglages{display:inline-flex;align-items:center;gap:7px}
.cj-doc__reglages svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.cj-doc__toast{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);color:var(--cj-vermillon);transition:opacity .6s}
.cj-doc__toast--parti{opacity:0}
.cj-reglages{position:fixed;inset:0 0 0 auto;margin:0;width:min(440px,100%);max-width:100%;height:100%;max-height:100%;box-sizing:border-box;padding:0;border:0;
  border-left:1px solid var(--cj-filet);background:var(--cj-fond);color:var(--cj-encre);font-family:var(--cj-police-texte)}
.cj-reglages[open]{animation:cj-reglages-entre .28s ease-out}
@keyframes cj-reglages-entre{from{transform:translateX(40px);opacity:0}to{transform:none;opacity:1}}
.cj-reglages::backdrop{background:rgba(38,33,28,.35)}
.cj-reglages__form{display:flex;flex-direction:column;gap:18px;min-height:100%;box-sizing:border-box;padding:24px 26px}
.cj-reglages__tete{position:relative;display:flex;flex-direction:column;gap:2px}
.cj-reglages__kicker{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),20px);color:var(--cj-vermillon)}
.cj-reglages__tete h2{margin:0;font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),34px);line-height:1}
.cj-reglages__fermer{position:absolute;right:-8px;top:-6px;width:40px;height:40px;border:0;border-radius:50%;background:transparent;font-size:max(var(--cj-plancher,0px),28px);line-height:1;color:var(--cj-encre);cursor:pointer}
.cj-reglages__fermer:hover{background:var(--cj-creme)}
.cj-reglages__intro{margin:0;font-size:max(var(--cj-plancher,0px),15px);line-height:1.5;color:var(--cj-encre-douce)}
.cj-reglages__erreur{margin:0;padding:10px 12px;border-radius:var(--cj-rayon);background:var(--cj-creme);border-left:3px solid var(--cj-vermillon);font-size:max(var(--cj-plancher,0px),15px)}
.cj-reglages__groupe{margin:0;padding:16px;border:0;border-radius:var(--cj-rayon);background:var(--cj-creme);display:flex;flex-direction:column;gap:12px}
.cj-reglages__groupe legend{float:left;width:100%;padding:0;margin-bottom:2px;font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--cj-encre-douce)}
.cj-reglages__ligne{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.cj-reglages__si[hidden]{display:none}
.cj-reglages__champ{display:flex;flex-direction:column;gap:5px;min-width:0}
.cj-reglages__label{font-size:max(var(--cj-plancher,0px),13px);font-weight:600}
.cj-reglages__saisie{box-sizing:border-box;width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--cj-filet);border-radius:var(--cj-rayon-petit,6px);background:#fff;font:16px var(--cj-police-texte);color:var(--cj-encre)}
.cj-reglages__saisie:focus{outline:2px solid var(--cj-vermillon);outline-offset:1px}
.cj-reglages__pastilles{display:flex;flex-wrap:wrap;gap:8px}
.cj-reglages__pastille{position:relative}
.cj-reglages__pastille input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.cj-reglages__pastille span{display:inline-block;padding:9px 14px;border-radius:999px;border:1px solid var(--cj-filet);background:#fff;font-size:max(var(--cj-plancher,0px),15px);font-weight:600}
.cj-reglages__pastille input:checked+span{background:var(--cj-encre);border-color:var(--cj-encre);color:var(--cj-creme)}
.cj-reglages__pastille input:focus-visible+span{outline:2px solid var(--cj-vermillon);outline-offset:2px}
.cj-reglages__pied{margin-top:auto;display:flex;align-items:center;gap:16px}
.cj-reglages__annuler{border:0;background:none;font:600 14px var(--cj-police-texte);color:var(--cj-encre-douce);cursor:pointer;text-decoration:underline}
.cj-reglages__attente{margin:0;font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);color:var(--cj-vermillon)}
@media (prefers-reduced-motion:reduce){.cj-reglages[open]{animation:none}}
@media (max-width:640px){.cj-doc__reglages{padding:8px 12px}.cj-doc__toast{display:none}.cj-reglages__form{padding:20px 18px}}
.cj-doc__toast{position:absolute;left:50%;top:calc(100% + 10px);transform:translateX(-50%);padding:6px 16px;border-radius:999px;background:var(--cj-encre);color:var(--cj-creme);font-size:max(var(--cj-plancher,0px),17px);white-space:nowrap;pointer-events:none}
@media (max-width:640px){.cj-doc__toast{display:block;font-size:max(var(--cj-plancher,0px),15px)}}
/* téléphone : la barre garde la marque et les deux boutons, le titre du carnet est déjà sur la couverture */
@media (max-width:640px){.cj-doc__nom{display:none}.cj-doc__marque{font-size:max(var(--cj-plancher,0px),17px);margin-right:auto;white-space:nowrap}.cj-doc__barre .cj-doc__bouton--discret{padding:8px 12px;font-size:max(var(--cj-plancher,0px),13px)}}
/* le bouton Google Maps posé juste au-dessus de la carte du jour */
.cj-carte-jour .cj-jour-maps{margin-top:0;padding:8px 12px}
.cj-carte-jour{flex-basis:236px}
/* réglages : hôtels et vols */
.cj-reglages__aide{margin:0;font-size:max(var(--cj-plancher,0px),13px);line-height:1.45;color:var(--cj-encre-douce)}
.cj-reglages__hotel,.cj-reglages__vol{display:flex;flex-direction:column;gap:6px;padding-top:10px;border-top:1px solid var(--cj-filet-doux)}
.cj-reglages__hotel:first-of-type{border-top:0;padding-top:0}
.cj-reglages__sous-label{font-size:max(var(--cj-plancher,0px),11.5px);color:var(--cj-encre-douce)}
.cj-reglages__choix{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--cj-rayon-petit,6px);background:#fff;border:1px solid var(--cj-filet)}
.cj-reglages__choix[hidden],.cj-reglages__recherche[hidden],.cj-reglages__resultats[hidden],.cj-reglages__chercher[hidden]{display:none}
.cj-reglages__choix-texte{display:flex;flex-direction:column;gap:2px;flex-grow:1;min-width:0}
.cj-reglages__choix-nom{font-weight:700;font-size:max(var(--cj-plancher,0px),15px)}
.cj-reglages__choix-adr{font-size:max(var(--cj-plancher,0px),11.5px);color:var(--cj-encre-douce)}
.cj-reglages__lien{border:0;background:none;padding:4px;font:600 13px var(--cj-police-texte);color:var(--cj-vermillon);text-decoration:underline;cursor:pointer}
.cj-reglages__recherche{display:flex;flex-direction:column;gap:6px}
.cj-reglages__petit{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.4;color:var(--cj-encre-douce)}
.cj-reglages__case{display:flex;align-items:center;gap:6px}
.cj-reglages__resultats{list-style:none;margin:0;padding:4px;border:1px solid var(--cj-filet);border-radius:var(--cj-rayon-petit,6px);background:#fff;display:flex;flex-direction:column;gap:2px}
.cj-reglages__resultat{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:8px 10px;border:0;border-radius:4px;background:none;text-align:left;cursor:pointer;font-family:var(--cj-police-texte);color:var(--cj-encre)}
.cj-reglages__resultat:hover,.cj-reglages__resultat:focus-visible{background:var(--cj-creme)}
.cj-reglages__resultat strong{font-size:max(var(--cj-plancher,0px),15px)}
.cj-reglages__resultat span{font-size:max(var(--cj-plancher,0px),11.5px);color:var(--cj-encre-douce)}
.cj-reglages__attente-li{padding:8px 10px;font-size:max(var(--cj-plancher,0px),13px);color:var(--cj-encre-douce)}
.cj-reglages__ligne--vol{grid-template-columns:1fr auto;align-items:end}
.cj-reglages__chercher{min-height:44px;padding:0 16px;border:1.5px solid var(--cj-encre);border-radius:999px;background:none;font:700 14px var(--cj-police-texte);color:var(--cj-encre);cursor:pointer}
.cj-reglages__chercher:disabled{opacity:.5}

/* ---------- le livre (ordinateur) : une double page à la fois, on tourne les pages ---------- */
.cj-livre__nav{display:none}
@media (min-width:1200px){
  body.cj-livre{overflow:hidden;height:100vh}
  .cj-livre .cj-doc__pages{height:100vh;box-sizing:border-box;justify-content:center;gap:18px;padding:0 24px 18px;perspective:2600px}
  .cj-livre .cj-doc__barre{margin:0 -24px auto}
  .cj-livre .cj-doc__double{display:none}
  .cj-livre .cj-doc__double.cj-livre__ouverte{display:flex}
  .cj-livre .cj-doc__double--gauche{box-shadow:none}
  .cj-livre .cj-livre__nav{display:flex;align-items:center;gap:14px;margin-bottom:auto;font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),11.5px);letter-spacing:.14em;text-transform:uppercase;color:var(--cj-encre-douce)}
  .cj-livre__fleche{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--cj-filet);background:var(--cj-creme);font:400 26px/1 var(--cj-police-titre);color:var(--cj-encre);cursor:pointer}
  .cj-livre__fleche:hover:not(:disabled){border-color:var(--cj-encre)}
  .cj-livre__fleche:disabled{opacity:.35;cursor:default}
  .cj-livre__som{border:0;background:none;padding:8px 6px;font:700 12px var(--cj-police-texte);letter-spacing:.06em;text-transform:uppercase;color:var(--cj-vermillon);cursor:pointer}
  .cj-livre__compteur{min-width:170px;text-align:center}
  /* le feuilletage : le dessous (deux moitiés), et la feuille qui pivote autour de la reliure */
  .cj-livre__scene{position:relative;display:flex;flex-shrink:0;transform-style:preserve-3d}
  .cj-livre__scene>.cj-page,.cj-livre__scene>.cj-doc__vide{flex-shrink:0}
  .cj-livre__feuille{position:absolute;top:0;transform-style:preserve-3d;transition:transform .7s cubic-bezier(.45,.05,.25,1);z-index:3}
  .cj-livre__feuille--avant{left:50%;transform-origin:left center}
  .cj-livre__feuille--arriere{left:0;transform-origin:right center}
  .cj-livre__feuille--avant.cj-livre__feuille--tourne{transform:rotateY(-180deg)}
  .cj-livre__feuille--arriere.cj-livre__feuille--tourne{transform:rotateY(180deg)}
  .cj-livre__recto,.cj-livre__verso{position:absolute!important;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden}
  .cj-livre__verso{transform:rotateY(180deg)}
  .cj-livre__feuille .cj-page{box-shadow:0 0 30px rgba(38,33,28,.18)}
}
@media print{body.cj-livre{overflow:visible;height:auto}.cj-livre .cj-doc__double{display:contents!important}.cj-livre__nav,.cj-livre__scene{display:none!important}}
/* moins d'ombre sur le livre : un trait, une pliure à peine marquée */
@media (min-width:1200px){
  .cj-doc__double,.cj-doc__double--droite .cj-page,.cj-doc__double--gauche .cj-page{box-shadow:0 0 0 1px rgba(38,33,28,.12)}
  .cj-livre .cj-doc__double--gauche,.cj-livre .cj-doc__double--droite{box-shadow:none}
  .cj-doc__double:not(.cj-doc__double--gauche):not(.cj-doc__double--droite)::after{width:18px;background:linear-gradient(90deg,transparent,rgba(38,33,28,.07) 50%,transparent)}
  .cj-livre__feuille .cj-page{box-shadow:0 0 0 1px rgba(38,33,28,.12)}
}

/* ---------- le jour d'arrivée : de l'avion à l'hôtel, une frise d'heures ---------- */
.cj-arrivee{display:flex;flex-direction:column;gap:0;padding:12px 14px 12px;border:1px solid var(--cj-filet);border-radius:var(--cj-rayon);background:var(--cj-creme)}
.cj-arrivee__ligne{display:grid;grid-template-columns:44px 14px minmax(0,1fr);column-gap:8px;position:relative;padding-bottom:10px}
.cj-arrivee__ligne:not(:last-of-type)::after{content:"";position:absolute;left:58px;top:14px;bottom:-2px;border-left:1.5px dashed var(--cj-filet)}
.cj-arrivee__heure{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:700;letter-spacing:.04em;color:var(--cj-vermillon);text-align:right;padding-top:2px;white-space:nowrap}
.cj-arrivee__point{width:10px;height:10px;margin:3px 0 0 2px;border-radius:50%;background:var(--cj-creme);border:2px solid var(--cj-vermillon);box-sizing:border-box;position:relative;z-index:1}
.cj-arrivee__point--avion,.cj-arrivee__point--cle{background:var(--cj-vermillon)}
.cj-arrivee__texte{display:flex;flex-direction:column;gap:2px;min-width:0}
.cj-arrivee__titre{font-weight:700;font-size:max(var(--cj-plancher,0px),13px);line-height:1.2;color:var(--cj-encre)}
.cj-arrivee__detail{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.35;color:var(--cj-encre-douce)}
.cj-arrivee__maps{align-self:flex-start;margin:2px 0 0 66px;font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--cj-vermillon);text-decoration:none;border-bottom:1px solid currentColor}
.cj-jour-fil--arrivee{justify-content:flex-start;gap:12px}
/* réglages : tes journées (lieux retirés, remplacés, ajoutés) */
.cj-reglages__jour[hidden],.cj-reglages__cherche-lieu[hidden]{display:none}
.cj-reglages__etapes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.cj-reglages__etape{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px solid var(--cj-filet-doux)}
.cj-reglages__etape-nom{font-size:max(var(--cj-plancher,0px),15px);font-weight:600;min-width:0}
.cj-reglages__etape-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}
.cj-reglages__mini{border:1px solid var(--cj-filet);border-radius:999px;background:#fff;padding:3px 6px;font:600 12px var(--cj-police-texte);color:var(--cj-encre)}
.cj-reglages__ajouter{align-self:flex-start;margin-top:6px}
.cj-reglages__echange{display:flex;align-items:center;gap:6px;margin-top:4px}
.cj-reglages__cherche-lieu{display:flex;flex-direction:column;gap:6px;padding:8px 0}
.cj-reglages__changements{display:flex;flex-direction:column;gap:6px;padding-top:10px;border-top:1px solid var(--cj-filet)}
.cj-reglages__changements ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.cj-reglages__changement{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:max(var(--cj-plancher,0px),13px)}
.cj-reglages__changement em{display:block;font-style:normal;font-size:max(var(--cj-plancher,0px),11.5px);color:var(--cj-vermillon)}
.cj-reglages__changement--off>span{color:var(--cj-encre-douce)}

/* retrouver son carnet : le formulaire e-mail */
.cj-doc__form{display:flex;flex-direction:column;gap:10px;margin-top:18px;text-align:left}
.cj-doc__label{font-size:max(var(--cj-plancher,0px),15px);font-weight:600}
.cj-doc__saisie{box-sizing:border-box;width:100%;min-height:48px;padding:12px 14px;border:1px solid var(--cj-filet);border-radius:var(--cj-rayon);background:#fff;font:16px var(--cj-police-texte)}
.cj-doc__form .cj-doc__bouton{align-self:flex-start}
.cj-doc__erreur{color:var(--cj-vermillon)!important;font-size:max(var(--cj-plancher,0px),15px)!important}
.cj-doc__message a{color:var(--cj-vermillon)}

/* ---------- Kei : le panneau de discussion (comme Réglages, il glisse depuis la droite) ---------- */
.cj-doc__kei-bouton{display:inline-flex;align-items:center;gap:8px;padding:9px 18px;font-size:max(var(--cj-plancher,0px),15px)}
.cj-doc__kei-bouton svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round}
.cj-kei{position:fixed;inset:0 0 0 auto;margin:0;width:min(460px,100%);max-width:100%;height:100%;max-height:100%;box-sizing:border-box;padding:0;border:0;border-left:1px solid var(--cj-filet);background:var(--cj-fond);color:var(--cj-encre);font-family:var(--cj-police-texte)}
.cj-kei[open]{animation:cj-reglages-entre .28s ease-out}
.cj-kei::backdrop{background:rgba(38,33,28,.35)}
.cj-kei__in{display:flex;flex-direction:column;height:100%;box-sizing:border-box;padding:22px 22px 14px;gap:12px}
.cj-kei__tete{position:relative;display:flex;flex-direction:column;gap:2px}
.cj-kei__tete h2{margin:0;font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),34px);line-height:1}
.cj-kei__fil{flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:4px 2px}
.cj-kei__msg{max-width:88%;padding:10px 14px;border-radius:16px;font-size:max(var(--cj-plancher,0px),15px);line-height:1.5}
.cj-kei__msg p{margin:0}.cj-kei__msg p+p{margin-top:8px}
.cj-kei__msg--kei{align-self:flex-start;background:var(--cj-creme);border-bottom-left-radius:4px}
.cj-kei__msg--cliente{align-self:flex-end;background:var(--cj-encre);color:var(--cj-creme);border-bottom-right-radius:4px}
.cj-kei__msg--info{align-self:stretch;max-width:none;background:none;border:1px dashed var(--cj-filet);color:var(--cj-encre-douce);font-size:max(var(--cj-plancher,0px),13px)}
.cj-kei__msg--attente{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);color:var(--cj-vermillon);background:none}
.cj-kei__prop{align-self:flex-start;max-width:92%;display:flex;flex-direction:column;gap:4px;padding:12px 14px;border:1.5px solid var(--cj-vermillon);border-radius:var(--cj-rayon);background:#fff}
.cj-kei__prop-phrase{font-weight:700;font-size:max(var(--cj-plancher,0px),15px)}
.cj-kei__prop-pourquoi{font-size:max(var(--cj-plancher,0px),13px);color:var(--cj-encre-douce)}
.cj-kei__prop-pourquoi:empty{display:none}
.cj-kei__prop-actions{display:flex;align-items:center;gap:14px;margin-top:4px;font-size:max(var(--cj-plancher,0px),13px);color:var(--cj-encre-douce)}
.cj-kei__appliquer{padding:8px 16px;font-size:max(var(--cj-plancher,0px),13px)}
.cj-kei__prop--appliquee{border-color:var(--cj-filet)}.cj-kei__prop--refusee{border-color:var(--cj-filet);opacity:.6}
.cj-kei__idees{display:flex;flex-wrap:wrap;gap:6px}
.cj-kei__idees[hidden]{display:none}
.cj-kei__idee{padding:7px 12px;border:1px solid var(--cj-filet);border-radius:999px;background:var(--cj-creme);font:13px var(--cj-police-texte);color:var(--cj-encre);cursor:pointer;text-align:left}
.cj-kei__idee:hover{border-color:var(--cj-encre)}
.cj-kei__form{display:flex;align-items:flex-end;gap:8px}
.cj-kei__saisie{flex:1;box-sizing:border-box;min-height:48px;max-height:140px;padding:12px 14px;border:1px solid var(--cj-filet);border-radius:var(--cj-rayon);background:#fff;font:16px/1.4 var(--cj-police-texte);color:var(--cj-encre);resize:vertical}
.cj-kei__saisie:focus{outline:2px solid var(--cj-vermillon);outline-offset:1px}
.cj-kei__envoyer{width:48px;height:48px;padding:0;font-size:max(var(--cj-plancher,0px),20px);flex-shrink:0}
.cj-kei__mention{margin:0;font-size:max(var(--cj-plancher,0px),11.5px);color:var(--cj-encre-douce)}
@media (prefers-reduced-motion:reduce){.cj-kei[open]{animation:none}}
@media (max-width:640px){.cj-doc__kei-bouton{padding:8px 12px;font-size:max(var(--cj-plancher,0px),13px)}.cj-kei__in{padding:18px 14px 10px}}
@media print{.cj-doc__kei-bouton,.cj-kei{display:none}}
.cj-kei__effacer{border:0;background:none;padding:0;font:inherit;color:var(--cj-encre-douce);text-decoration:underline;cursor:pointer}

/* ---------- lisibilité (oct. 2026) : on ne réduit plus les pages pour les faire tenir ---------- */
/* ordinateur : la double page s'affiche grand (largeur de l'écran), on fait défiler pour lire le bas, la navigation reste collée en bas */
@media (min-width:1200px){
  body.cj-livre{overflow:visible;height:auto}
  .cj-livre .cj-doc__pages{height:auto;min-height:100vh;justify-content:flex-start;padding-top:0}
  .cj-livre .cj-doc__barre{margin:0 -24px 8px}
  .cj-livre .cj-livre__nav{position:sticky;bottom:14px;z-index:6;margin:0 auto;padding:6px 12px;border-radius:999px;background:var(--cj-fond-visionneuse);box-shadow:0 0 0 1px rgba(38,33,28,.12)}
}
/* téléphone : la page prend toute la largeur à sa vraie taille et s'allonge au besoin ; les petits textes grossissent */
@media (max-width:1199px){
  /* les proportions du carnet sont gardées (aspect-ratio) ; si le texte, plus gros, déborde, la page s'allonge au lieu de couper */
  .cj-doc .cj-page{width:100%;max-width:520px;height:auto;aspect-ratio:440/840;overflow:visible;zoom:1!important}
  .cj-doc .cj-page--pleine,.cj-doc .cj-page--couverture,.cj-doc .cj-page--dos,.cj-doc .cj-page--grande-page,.cj-doc .cj-page--ouverture{overflow:hidden}
  /* la barre : la marque, Kei et Réglages ; imprimer depuis un téléphone est rare */
  .cj-doc__barre{gap:8px}
  .cj-doc__barre>.cj-doc__bouton--discret[onclick]{display:none}
  .cj-doc__marque{font-size:max(var(--cj-plancher,0px),17px)}
  .cj-doc__kei-bouton{padding:8px 12px;white-space:nowrap}
  .cj-doc .cj-etape__nom{font-size:max(var(--cj-plancher,0px),17px)}
  .cj-doc .cj-etape__tip,.cj-doc .cj-repas__detail,.cj-doc .cj-arrivee__detail,.cj-doc .cj-texte--petit,.cj-doc .cj-encart__corps,.cj-doc .cj-pepite__texte{font-size:max(var(--cj-plancher,0px),15px);line-height:1.45}
  .cj-doc .cj-arrivee__titre{font-size:max(var(--cj-plancher,0px),15px)}
  .cj-doc .cj-trajet,.cj-doc .cj-jour-moment__nom,.cj-doc .cj-repas__label,.cj-doc .cj-arrivee__heure{font-size:max(var(--cj-plancher,0px),11.5px)}
  .cj-doc .cj-jour-maps__titre{font-size:max(var(--cj-plancher,0px),15px)}.cj-doc .cj-jour-maps__sous{font-size:max(var(--cj-plancher,0px),10px)}
  .cj-doc .cj-arrivee__ligne{grid-template-columns:52px 14px minmax(0,1fr)}
  .cj-doc .cj-arrivee__ligne:not(:last-of-type)::after{left:66px}
  .cj-doc .cj-arrivee__maps{margin-left:74px;font-size:max(var(--cj-plancher,0px),11.5px)}
  .cj-doc .cj-jour-fil{justify-content:flex-start;gap:12px}
  /* les dessins à taille fixe suivent la largeur de l'écran */
  .cj-doc .cj-parcours-carte__svg{width:100%;height:auto;aspect-ratio:348/330;overflow:hidden}
  .cj-doc .cj-parcours-carte{overflow:hidden}
}

/* l'arrivée sans heure de vol : pas de colonne d'heures vide */
.cj-arrivee--sans-heure .cj-arrivee__ligne,.cj-doc .cj-arrivee--sans-heure .cj-arrivee__ligne{grid-template-columns:14px minmax(0,1fr)}
.cj-arrivee--sans-heure .cj-arrivee__heure{display:none}
.cj-arrivee--sans-heure .cj-arrivee__ligne:not(:last-of-type)::after,.cj-doc .cj-arrivee--sans-heure .cj-arrivee__ligne:not(:last-of-type)::after{left:6px}
.cj-arrivee--sans-heure .cj-arrivee__maps,.cj-doc .cj-arrivee--sans-heure .cj-arrivee__maps{margin-left:22px}

/* parcours : les étapes sous la carte, lisibles (oct. 2026) */
.cj-parcours-etapes{gap:10px}
.cj-parcours-etape{gap:3px;padding:8px 8px 8px 12px}
.cj-parcours-etape__num{font-size:max(var(--cj-plancher,0px),10px)}
.cj-parcours-etape__ville{font-size:max(var(--cj-plancher,0px),20px)}
.cj-parcours-etape__dates{font-family:var(--cj-police-texte);font-size:max(var(--cj-plancher,0px),13px);letter-spacing:0;text-transform:none;color:var(--cj-encre);padding-top:4px}
.cj-parcours-etape__nuits{font-size:max(var(--cj-plancher,0px),17px)}
.cj-parcours-nom{paint-order:stroke;stroke:var(--cj-creme);stroke-width:5px;stroke-linejoin:round} /* le nom reste lisible quand la kei car passe dessous */

/* ---------- la vraie carte du jour (OpenStreetMap aux couleurs du carnet) ---------- */
.cj-carte-jour__cadre--fond{background-image:none;background-color:#F4EEE2}
.cj-fond__parc{fill:#DDE3C9;stroke:none}
.cj-fond__eau{fill:#CFE0E4;stroke:none}
.cj-fond__riviere{fill:none;stroke:#BCD3DA;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.cj-fond__cote{fill:none;stroke:#A9C3CB;stroke-width:1.2}
.cj-fond__route{fill:none;stroke:#FFFFFF;stroke-linecap:round;stroke-linejoin:round}
.cj-fond__route--1{stroke-width:3.2}
.cj-fond__route--2{stroke-width:2}
.cj-fond__route--3{stroke-width:1.1}
.cj-fond__rail{fill:none;stroke:#9C8B78;stroke-width:1;stroke-dasharray:4 2}
.cj-carte-jour__osm{opacity:.75;text-transform:none;letter-spacing:0}
/* la page de gauche d'une journée : la carte d'abord, puis les points forts, puis le saviez-vous (oct. 2026) */
.cj-page--jour-gauche .cj-carte-jour{margin-top:10px}
.cj-forts{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.cj-forts__titre{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);line-height:1;color:var(--cj-vermillon)}
.cj-forts__liste{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.cj-forts__liste li{display:flex;gap:8px;align-items:flex-start;font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.4;color:var(--cj-encre)}
.cj-forts__liste strong{color:var(--cj-encre)}
.cj-forts__num{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;flex-shrink:0;border-radius:50%;background:var(--cj-vermillon);color:var(--cj-creme);font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:700}
.cj-forts__pepite{font-family:var(--cj-police-main);font-style:normal;font-size:max(var(--cj-plancher,0px),13px);color:var(--cj-vermillon);white-space:nowrap}
.cj-encart--saviez{margin-top:10px}
.cj-encart__ce-jour{display:block;margin-top:4px;font-size:max(var(--cj-plancher,0px),10px);line-height:1.35;color:var(--cj-encre-douce)}
@media (max-width:1199px){.cj-doc .cj-forts__liste li{font-size:max(var(--cj-plancher,0px),15px)}.cj-doc .cj-encart__ce-jour{font-size:max(var(--cj-plancher,0px),13px)}.cj-doc .cj-forts__num{width:20px;height:20px;font-size:max(var(--cj-plancher,0px),10px)}}

/* les cases à cocher, cochables à l'écran */
.cj-doc .cj-ligne--cochable{cursor:pointer}
.cj-case--cochee{background:var(--cj-vermillon);border-color:var(--cj-vermillon);position:relative}
.cj-case--cochee::after{content:"";position:absolute;left:3px;top:0;width:3px;height:7px;border:solid var(--cj-creme);border-width:0 1.6px 1.6px 0;transform:rotate(45deg)}
.cj-ligne--cochee{opacity:.55}
.cj-doc .cj-case:focus-visible{outline:2px solid var(--cj-vermillon);outline-offset:2px}
@media (max-width:1199px){.cj-doc .cj-case{width:18px;height:18px}.cj-doc .cj-case--cochee::after{left:5px;top:1px;width:5px;height:10px;border-width:0 2px 2px 0}}
/* le fond brun : la navigation du livre garde un fond clair */
@media (min-width:1200px){.cj-livre .cj-livre__nav{background:var(--cj-creme)}}

/* le livre : les flèches au milieu de l'écran, de chaque côté ; en bas, « Aller à » une page par son nom */
@media (min-width:1200px){
  .cj-livre .cj-livre__nav{gap:12px;padding:6px 16px}
  .cj-livre__fleche--gauche,.cj-livre__fleche--droite{position:fixed;top:50%;transform:translateY(-50%);width:52px;height:52px;font-size:max(var(--cj-plancher,0px),28px);z-index:7;background:var(--cj-creme);border-color:transparent;box-shadow:0 2px 10px rgba(0,0,0,.25)}
  .cj-livre__fleche--gauche{left:24px}
  .cj-livre__fleche--droite{right:24px}
  .cj-livre__aller{display:flex;align-items:center;gap:8px}
  .cj-livre__aller-label{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.14em;text-transform:uppercase;color:var(--cj-encre-douce)}
  .cj-livre__choix{max-width:360px;padding:7px 10px;border:1px solid var(--cj-filet);border-radius:999px;background:#fff;font:600 13px var(--cj-police-texte);color:var(--cj-encre);cursor:pointer}
  .cj-livre__compteur{min-width:0;font-size:max(var(--cj-plancher,0px),10px)}
}

/* ---------- téléphone : une page par écran, on glisse ; une barre d'onglets en bas (oct. 2026) ---------- */
@media (max-width:1199px){
  body.cj-mobile{overflow:hidden;height:100dvh}
  .cj-mobile .cj-doc__pages{display:flex;flex-wrap:nowrap;gap:0;padding:0;height:calc(100dvh - 52px - 62px);overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .cj-mobile .cj-doc__pages::-webkit-scrollbar{display:none}
  .cj-mobile .cj-doc__barre{position:fixed;top:0;left:0;right:0;margin:0;height:52px;box-sizing:border-box;padding:0 14px}
  .cj-mobile .cj-doc__pages{margin-top:52px}
  .cj-mobile .cj-doc__barre .cj-doc__bouton{display:none}
  .cj-mobile__compteur{margin-left:auto;font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),11.5px);letter-spacing:.08em;color:var(--cj-encre-douce)}
  .cj-mobile .cj-doc .cj-page,.cj-mobile.cj-doc .cj-page{flex:0 0 100vw;width:100vw;max-width:none;height:100%;aspect-ratio:auto;overflow-x:hidden;overflow-y:auto;scroll-snap-align:start;scroll-snap-stop:always;border-radius:0;box-shadow:none;overscroll-behavior-y:contain}
  .cj-mobile.cj-doc .cj-page--pleine,.cj-mobile.cj-doc .cj-page--couverture,.cj-mobile.cj-doc .cj-page--dos{overflow:hidden}
  .cj-mobile__barre{position:fixed;left:0;right:0;bottom:0;height:62px;padding-bottom:env(safe-area-inset-bottom);display:flex;background:var(--cj-creme);border-top:1px solid var(--cj-filet);z-index:20}
  .cj-mobile__barre button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:0;background:none;font:600 11px var(--cj-police-texte);color:var(--cj-encre);cursor:pointer}
  .cj-mobile__barre svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
  .cj-mobile__barre button[data-m="kei"]{color:var(--cj-vermillon)}
  .cj-mobile__feuille{position:fixed;inset:auto 0 0 0;margin:0;width:100%;max-width:100%;max-height:78dvh;box-sizing:border-box;padding:0;border:0;border-radius:18px 18px 0 0;background:var(--cj-fond);color:var(--cj-encre)}
  .cj-mobile__feuille::backdrop{background:rgba(38,33,28,.45)}
  .cj-mobile__feuille-tete{position:sticky;top:0;display:flex;justify-content:space-between;align-items:center;padding:16px 18px;background:var(--cj-fond);border-bottom:1px solid var(--cj-filet);font-family:var(--cj-police-titre);font-size:max(var(--cj-plancher,0px),24px)}
  .cj-mobile__feuille-tete button{width:40px;height:40px;border:0;background:none;font-size:max(var(--cj-plancher,0px),28px);color:var(--cj-encre)}
  .cj-mobile__liste{list-style:none;margin:0;padding:6px 0 24px}
  .cj-mobile__liste button{display:flex;gap:12px;align-items:baseline;width:100%;padding:12px 18px;border:0;background:none;text-align:left;font:15px/1.3 var(--cj-police-texte);color:var(--cj-encre)}
  .cj-mobile__num{flex:0 0 26px;font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),11.5px);color:var(--cj-vermillon)}
}
@media print{.cj-mobile__barre,.cj-mobile__feuille,.cj-mobile__compteur{display:none!important}body.cj-mobile{overflow:visible;height:auto}.cj-mobile .cj-doc__pages{display:block;height:auto;overflow:visible}}
@media (max-width:1199px){.cj-mobile .cj-doc__pages{justify-content:flex-start;align-items:stretch}}

/* le livre : flèches contre les pages, en clair sur le brun ; le compteur ouvre la liste des pages */
@media (min-width:1200px){
  .cj-livre__fleche--gauche,.cj-livre__fleche--droite{right:auto!important;background:transparent;border:1.5px solid rgba(251,247,238,.55);color:var(--cj-creme);box-shadow:none;font-size:max(var(--cj-plancher,0px),28px)}
  .cj-livre__fleche--gauche:hover:not(:disabled),.cj-livre__fleche--droite:hover:not(:disabled){background:var(--cj-creme);color:var(--cj-encre);border-color:var(--cj-creme)}
  .cj-livre__fleche:disabled{opacity:.25}
  .cj-livre .cj-livre__nav{position:sticky;padding:4px}
  .cj-livre__compteur{border:0;background:none;padding:8px 16px;border-radius:999px;font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),11.5px);letter-spacing:.14em;text-transform:uppercase;color:var(--cj-encre);cursor:pointer}
  .cj-livre__compteur::after{content:" ▾";color:var(--cj-vermillon)}
  .cj-livre__compteur:hover{background:#fff}
  .cj-livre__liste{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);width:360px;max-height:60vh;overflow-y:auto;margin:0;padding:6px;list-style:none;border-radius:14px;background:var(--cj-creme);box-shadow:0 10px 30px rgba(0,0,0,.35)}
  .cj-livre__liste[hidden]{display:none}
  .cj-livre__liste button{display:flex;gap:12px;align-items:baseline;width:100%;padding:9px 12px;border:0;border-radius:8px;background:none;text-align:left;font:14px/1.3 var(--cj-police-texte);color:var(--cj-encre);cursor:pointer}
  .cj-livre__liste button:hover,.cj-livre__liste--ici{background:#fff!important}
  .cj-livre__liste-num{flex:0 0 42px;font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),11.5px);color:var(--cj-vermillon)}
}

/* ---------- la page « programme de la ville », en face de la grande page (oct. 2026) ---------- */
.cj-page--ville-programme{display:flex;flex-direction:column;gap:14px}
.cj-vprog-resume{margin:0;font-size:max(var(--cj-plancher,0px),15px);line-height:1.55;color:var(--cj-encre)}
.cj-vprog-base{display:flex;flex-direction:column;gap:2px;padding:10px 14px;border-radius:var(--cj-rayon);background:var(--cj-creme)}
.cj-vprog-base__label{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--cj-vermillon)}
.cj-vprog-base__nom{font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),20px);line-height:1.15}
.cj-vprog-jours{display:flex;flex-direction:column;gap:2px;flex-grow:1}
.cj-vprog-jours__titre{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),20px);color:var(--cj-vermillon);margin-bottom:4px}
.cj-vprog-jour{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px dashed var(--cj-filet);color:inherit;text-decoration:none}
.cj-vprog-jour .cj-place{width:26px;height:26px;font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-vprog-jour__texte{display:flex;flex-direction:column;gap:2px;flex-grow:1;min-width:0}
.cj-vprog-jour__titre{font-weight:700;font-size:max(var(--cj-plancher,0px),15px);line-height:1.2}
.cj-vprog-jour__detail{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.35;color:var(--cj-encre-douce)}
.cj-vprog-jour__page{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);color:var(--cj-encre-douce);white-space:nowrap}
a.cj-vprog-jour:hover .cj-vprog-jour__titre{color:var(--cj-vermillon)}
@media (max-width:1199px){.cj-doc .cj-vprog-resume{font-size:max(var(--cj-plancher,0px),15px)}.cj-doc .cj-vprog-jour__titre{font-size:max(var(--cj-plancher,0px),15px)}.cj-doc .cj-vprog-jour__detail{font-size:max(var(--cj-plancher,0px),13px)}}

/* ---------- parcours : les étapes sous la carte, en cartes reliées (oct. 2026) ---------- */
.cj-parcours-etapes{gap:22px;position:relative}
.cj-parcours-etape{position:relative;gap:4px;padding:10px 12px 11px;border-left:0;border-radius:var(--cj-rayon);background:var(--cj-creme)}
.cj-parcours-etape:not(:last-child)::after{content:"→";position:absolute;right:-17px;top:50%;transform:translateY(-50%);font-size:max(var(--cj-plancher,0px),15px);color:var(--cj-vermillon)}
.cj-parcours-etape--excursion{border:1.5px dashed var(--cj-bois);background:transparent}
.cj-parcours-etape__num{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--cj-vermillon);color:var(--cj-creme);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:0}
.cj-parcours-etape--excursion .cj-parcours-etape__num{background:var(--cj-bois);color:var(--cj-creme)}
.cj-parcours-etape__ville{font-size:max(var(--cj-plancher,0px),20px)}
.cj-parcours-etape__dates{padding-top:0;font-size:max(var(--cj-plancher,0px),11.5px);color:var(--cj-encre-douce)}
.cj-parcours-etape__nuits{align-self:flex-start;margin-top:2px;padding:2px 9px;border-radius:999px;background:var(--cj-fond);font-family:var(--cj-police-texte);font-size:max(var(--cj-plancher,0px),11.5px);font-weight:700;color:var(--cj-encre)}

/* la carte du jour plus grande ; les points forts sur une ligne */
.cj-page--jour-gauche .cj-carte-jour{flex:0 0 auto;min-height:0}
.cj-page--jour-gauche .cj-carte-jour__cadre{flex:0 0 auto;aspect-ratio:378/262;min-height:0;height:auto}
.cj-forts{display:block;margin:10px 0 0;font-size:max(var(--cj-plancher,0px),13px);line-height:1.45;color:var(--cj-encre)}
.cj-forts .cj-forts__titre{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);color:var(--cj-vermillon)}
@media (max-width:1199px){.cj-doc .cj-forts{font-size:max(var(--cj-plancher,0px),15px)}}
/* la photo du jour prend toute la hauteur qui reste (jamais moins de 240 px) */
.cj-page--jour-gauche .cj-photo,.cj-page--jour-gauche .cj-photo--courte,.cj-page--jour-gauche .cj-photo--mini{flex:1 1 auto;height:auto;min-height:240px}
.cj-page--jour-gauche .cj-photo__img{position:absolute;inset:0}
.cj-page--jour-gauche .cj-carte-jour{margin-top:10px}
.cj-page--jour-gauche .cj-pied{margin-top:10px}
@media (max-width:1199px){.cj-mobile.cj-doc .cj-page--jour-gauche .cj-photo{min-height:42dvh;flex:0 0 auto}}
.cj-page--jour-gauche .cj-carte-jour__cadre{aspect-ratio:378/232}
.cj-page--jour-gauche .cj-photo,.cj-page--jour-gauche .cj-photo--courte,.cj-page--jour-gauche .cj-photo--mini{min-height:215px}
.cj-page--jour-gauche .cj-encart--saviez{padding-top:9px;padding-bottom:9px}
.cj-page--jour-gauche .cj-carte-jour__cadre{aspect-ratio:378/222}

/* ---------- les pages de phrases (lexique) : le tableau d'un bord à l'autre de la page, sans carte ni contour (oct. 2026) ---------- */
.cj-lexique-table.cj-carte{margin:0 calc(-1 * var(--cj-marge-x));padding:6px 0 0;background:none;border:0;border-radius:0;box-shadow:none}
.cj-lexique-entetes{padding:0 var(--cj-marge-x) 6px;border-bottom:1.5px solid var(--cj-encre)}
.cj-lexique-ligne{padding:5px var(--cj-marge-x);min-height:38px}
.cj-lexique-ligne:nth-child(even){background:rgba(251,247,238,.6)}
.cj-lexique-ligne__fr{font-size:max(var(--cj-plancher,0px),13px)}
.cj-lexique-ligne__pron,.cj-lexique-entetes__pron{width:128px}
.cj-lexique-ligne__pron{font-size:max(var(--cj-plancher,0px),15px)}
.cj-lexique-ligne__jp,.cj-lexique-entetes__jp{width:118px}
.cj-lexique-ligne__kana{font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-lexique-ligne__romaji{font-size:max(var(--cj-plancher,0px),10px)}
@media (max-width:1199px){.cj-doc .cj-lexique-ligne__fr{font-size:max(var(--cj-plancher,0px),15px)}.cj-doc .cj-lexique-ligne__pron{font-size:max(var(--cj-plancher,0px),17px)}.cj-doc .cj-lexique-ligne__kana{font-size:max(var(--cj-plancher,0px),13px)}.cj-doc .cj-lexique-ligne__romaji{font-size:max(var(--cj-plancher,0px),10px)}}

/* « Votre parcours » : la carte sans cadre, à fond perdu sur toute la largeur de la page (même échelle), le titre posé dessus */
.cj-parcours-carte{position:relative;display:block;margin:0 calc(-1 * var(--cj-marge-x));padding:0;border-radius:0;background:none;box-shadow:none}
.cj-parcours-carte > .cj-label{position:absolute;left:var(--cj-marge-x);top:10px;z-index:1;background:var(--cj-fond);padding:3px 8px;border-radius:999px}
.cj-parcours-carte__svg{width:440px;height:352px;overflow:hidden}
.cj-parcours-carte .cj-japon__bord{display:none}
@media (max-width:1199px){
  .cj-doc .cj-parcours-carte__svg{width:100%;height:auto;aspect-ratio:440/352}
}
/* la mer teintée, la terre claire : la carte se lit d'un coup d'œil, de bord à bord */
.cj-parcours-carte__svg{background:#DDE4E0}
.cj-parcours-carte .cj-japon__terre{fill:#F6F0E4}

/* la couleur du carnet : le marron terre partout (titres manuscrits, pastilles, filets d'accent) ;
   l'orange vermillon est gardé pour quelques endroits rares : le bouton Google Maps du jour, la ville de départ du parcours, les petites illustrations */
.cj-page{--cj-orange-rare:#C2402D;--cj-vermillon:#8A4F2E;--cj-vermillon-fonce:#6E3E24}
.cj-page .cj-jour-maps{background:var(--cj-orange-rare)}
.cj-page .cj-jour-maps:hover{background:#A33225}
.cj-page .cj-parcours-ville--depart{fill:var(--cj-orange-rare)}
.cj-doc__nom{color:#8A4F2E}

/* essai : l'accent rare passe de l'orange à l'indigo japonais (aizome) ; tout le reste du carnet et de sa barre reste en marron terre */
.cj-doc,.cj-page{--cj-orange-rare:#2F4A6D;--cj-vermillon:#8A4F2E;--cj-vermillon-fonce:#6E3E24}
.cj-page .cj-jour-maps:hover,.cj-doc__kei-bouton:hover{background:#22374F}
.cj-doc__kei-bouton{background:var(--cj-orange-rare)}

/* l'accent rare, un cran plus clair */
.cj-doc,.cj-page{--cj-orange-rare:#3E5F8A}
.cj-page .cj-jour-maps:hover,.cj-doc__kei-bouton:hover{background:#2F4A6D}

/* le programme du jour, façon carnet : un fil pointillé relie les étapes de haut en bas ; les numéros sont des tampons ronds,
   les noms en Cormorant comme les titres, les moments et les trajets écrits à la main */
.cj-jour-fil{position:relative}
.cj-jour-fil:not(.cj-jour-fil--arrivee)::before{content:"";position:absolute;left:13px;top:34px;bottom:14px;border-left:1.5px dotted rgba(138,79,46,.45);z-index:0}
.cj-jour-fil > *{position:relative;z-index:1}
.cj-jour-moment{gap:10px}
.cj-jour-moment__nom{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),20px);font-weight:400;letter-spacing:0;text-transform:none;line-height:1;color:var(--cj-vermillon);background:var(--cj-fond);padding:2px 4px 2px 0}
.cj-jour-moment__note{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),13px);letter-spacing:0;color:var(--cj-vermillon)}
.cj-jour-fil .cj-etape{gap:14px;align-items:flex-start}
.cj-jour-fil .cj-etape .cj-place{width:28px;height:28px;margin-top:0;border:1.5px solid var(--cj-vermillon);border-radius:50%;background:var(--cj-fond);
  box-shadow:0 0 0 3px var(--cj-fond);font-family:var(--cj-police-titre);font-size:max(var(--cj-plancher,0px),17px);font-weight:700;color:var(--cj-vermillon)}
.cj-jour-fil .cj-etape__nom{font-family:var(--cj-police-titre);font-size:max(var(--cj-plancher,0px),20px);font-weight:600;line-height:1.1;color:var(--cj-encre);padding-top:2px}
.cj-jour-fil .cj-etape__tip{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.45}
.cj-jour-fil .cj-trajet{padding-left:0;gap:14px;font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),15px);letter-spacing:0;text-transform:none;color:var(--cj-vermillon)}
.cj-jour-fil .cj-trajet__icone{box-sizing:border-box;width:28px;height:20px;padding:3px 7px;background:var(--cj-fond);color:var(--cj-vermillon)}
.cj-jour-fil .cj-repas{margin-left:42px}
.cj-jour-fil .cj-repas__label{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),15px);font-weight:400;letter-spacing:0;text-transform:none;color:var(--cj-vermillon)}
/* les journées chargées se resserrent */
.cj-jour-fil--dense .cj-etape__nom{font-size:max(var(--cj-plancher,0px),17px)}
.cj-jour-fil--dense .cj-trajet{font-size:max(var(--cj-plancher,0px),13px)}
.cj-jour-fil--tres-dense .cj-etape__nom{font-size:max(var(--cj-plancher,0px),17px)}
.cj-jour-fil--tres-dense .cj-etape .cj-place{width:24px;height:24px;font-size:max(var(--cj-plancher,0px),15px)}
.cj-jour-fil--tres-dense .cj-trajet{font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-jour-fil--tres-dense .cj-trajet__icone{width:24px;padding:3px 5px}
.cj-jour-fil--tres-dense .cj-repas{margin-left:38px}
.cj-jour-fil--tres-dense::before{left:11px}
.cj-jour-fil .cj-etape .cj-place{font-variant-numeric:lining-nums;font-size:max(var(--cj-plancher,0px),15px)}
.cj-jour-fil .cj-arrivee__titre{font-family:var(--cj-police-titre);font-size:max(var(--cj-plancher,0px),17px);font-weight:600;line-height:1.15}
.cj-jour-fil--arrivee{gap:6px}
.cj-jour-fil--arrivee .cj-etape__tip{line-height:1.35}
.cj-jour-fil--dense .cj-etape__tip{line-height:1.35}
.cj-jour-fil--dense .cj-etape__nom{font-size:max(var(--cj-plancher,0px),17px)}
.cj-jour-fil--arrivee .cj-arrivee{padding:10px 12px}
.cj-jour-fil--arrivee .cj-arrivee__detail{line-height:1.3}
.cj-jour-fil--arrivee .cj-etape__nom{font-size:max(var(--cj-plancher,0px),17px)}
.cj-jour-fil--arrivee{gap:4px}
.cj-jour-fil--arrivee .cj-trajet{font-size:max(var(--cj-plancher,0px),13px)}
.cj-jour-fil--arrivee .cj-etape__tip{font-size:max(var(--cj-plancher,0px),11.5px)}

/* l'accent rare : un vert sapin-céladon (teinte ~165°), complémentaire décalé du marron terre (~20°) sur le cercle chromatique */
.cj-doc,.cj-page{--cj-orange-rare:#2F6B5B}
.cj-page .cj-jour-maps:hover,.cj-doc__kei-bouton:hover{background:#24564A}
/* les noms des lieux en Cormorant gras : plus de présence ; les trajets reviennent en petit mono discret, le manuscrit reste aux moments et aux repas */
.cj-jour-fil .cj-etape__nom{font-weight:700}
.cj-jour-fil .cj-trajet,.cj-jour-fil--dense .cj-trajet,.cj-jour-fil--tres-dense .cj-trajet,.cj-jour-fil--arrivee .cj-trajet{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.08em;text-transform:uppercase;color:var(--cj-encre-douce)}
.cj-jour-fil .cj-trajet__icone{color:var(--cj-encre-douce)}
@media (max-width:1199px){.cj-doc .cj-jour-fil .cj-trajet{font-size:max(var(--cj-plancher,0px),11.5px)}}
/* téléphone : le programme du jour garde ses proportions (moments manuscrits lisibles, descriptions à 14 px) */
@media (max-width:1199px){
  .cj-doc .cj-jour-fil .cj-jour-moment__nom{font-size:max(var(--cj-plancher,0px),20px)}
  .cj-doc .cj-jour-fil .cj-etape__nom{font-size:max(var(--cj-plancher,0px),20px)}
  .cj-doc .cj-jour-fil .cj-etape__tip,.cj-doc .cj-jour-fil .cj-repas__detail{font-size:max(var(--cj-plancher,0px),15px);line-height:1.45}
  .cj-doc .cj-jour-fil .cj-repas__label{font-size:max(var(--cj-plancher,0px),17px)}
  .cj-doc .cj-jour-rappel__jour{white-space:nowrap}
}
@media (max-width:1199px){.cj-doc .cj-parcours-carte{flex-shrink:0}}
.cj-doc,.cj-page{--cj-orange-rare:var(--cj-accent)}
.cj-page .cj-jour-maps:hover,.cj-doc__kei-bouton:hover{background:var(--cj-accent-fonce)}

/* téléphone : on lit le carnet en faisant défiler vers le bas, page après page (plus de glissé sur le côté).
   La barre du haut et la barre d'onglets restent fixes ; chaque page commence sous la barre du haut. */
@media (max-width:1199px){
  html:has(body.cj-mobile){scroll-padding-top:52px}
  body.cj-mobile{overflow:visible;height:auto;padding-top:52px;padding-bottom:calc(62px + env(safe-area-inset-bottom))}
  .cj-mobile .cj-doc__pages{display:flex;flex-direction:column;flex-wrap:nowrap;gap:10px;margin-top:0;padding:0;height:auto;overflow:visible;scroll-snap-type:none;background:var(--cj-fond-entete)}
  .cj-mobile .cj-doc .cj-page,.cj-mobile.cj-doc .cj-page{flex:0 0 auto;width:100%;max-width:none;height:auto;aspect-ratio:auto;overflow:visible;scroll-snap-align:none;scroll-margin-top:52px}
  .cj-mobile.cj-doc .cj-page--pleine,.cj-mobile.cj-doc .cj-page--couverture,.cj-mobile.cj-doc .cj-page--dos{overflow:hidden;min-height:calc(100dvh - 114px)}
  .cj-mobile.cj-doc .cj-page--grande-page,.cj-mobile.cj-doc .cj-page--ouverture{overflow:hidden;aspect-ratio:440/840}
}
@media (max-width:1199px){
  .cj-mobile .cj-doc .cj-page,.cj-mobile.cj-doc .cj-page{overflow-x:clip;overflow-y:visible}
  .cj-mobile.cj-doc .cj-page--pleine,.cj-mobile.cj-doc .cj-page--couverture,.cj-mobile.cj-doc .cj-page--dos{height:calc(100dvh - 114px);min-height:560px;overflow:hidden}
  .cj-mobile .cj-doc__pages{overflow-x:clip}
}
@media (max-width:1199px){.cj-mobile.cj-doc .cj-page--carte-postale{height:calc(100dvh - 114px);min-height:560px;overflow:hidden}}
/* téléphone : l'invitation à défiler, posée au-dessus des onglets, avec une flèche qui rebondit doucement ;
   la couverture laisse dépasser le haut de la page suivante, pour qu'on devine qu'il y a une suite */
.cj-mobile__aide{display:none}
@media (max-width:1199px){
  .cj-mobile__aide{position:fixed;left:50%;bottom:calc(76px + env(safe-area-inset-bottom));z-index:19;display:flex;flex-direction:column;align-items:center;gap:2px;transform:translateX(-50%);
    padding:8px 16px 6px;border:0;border-radius:999px;background:var(--cj-creme);box-shadow:0 4px 18px rgba(38,33,28,.25);font:600 13px var(--cj-police-texte);color:var(--cj-encre);cursor:pointer;transition:opacity .3s,transform .3s}
  .cj-mobile__aide svg{width:20px;height:20px;fill:none;stroke:var(--cj-vermillon);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;animation:cj-rebond 1.4s ease-in-out infinite}
  .cj-mobile__aide--cache{opacity:0;transform:translate(-50%,12px);pointer-events:none}
  .cj-mobile.cj-doc .cj-page--couverture{height:calc(100dvh - 114px - 36px)}
}
@keyframes cj-rebond{0%,100%{transform:translateY(0)}50%{transform:translateY(4px)}}
@media (prefers-reduced-motion:reduce){.cj-mobile__aide svg{animation:none}}
@media print{.cj-mobile__aide{display:none!important}}
/* le programme du jour : plus de pointillés sous l'en-tête (le fil des étapes suffit) ; les moments et les repas, écrits à la main, un peu plus appuyés */
.cj-page--jour-droite .cj-jour-rappel + .cj-route{display:none}
.cj-page--jour-droite .cj-jour-rappel{margin-bottom:4px}
.cj-jour-fil .cj-jour-moment__nom,.cj-jour-fil .cj-repas__label{-webkit-text-stroke:.5px currentColor;paint-order:stroke fill}
.cj-mobile__aide span{white-space:nowrap}
/* lisibilité du programme du jour : pas de faux gras sur l'écriture manuscrite (il empâte les lettres) ; les moments plus grands et plus foncés,
   les trajets et l'en-tête en gris encre (contraste AA, au moins 4,5:1 sur le papier), les descriptions en encre forte */
.cj-jour-fil .cj-jour-moment__nom,.cj-jour-fil .cj-repas__label{-webkit-text-stroke:0}
.cj-jour-fil .cj-jour-moment__nom{font-size:max(var(--cj-plancher,0px),24px);color:var(--cj-vermillon)}
.cj-jour-fil .cj-repas__label{color:var(--cj-vermillon)}
.cj-jour-fil .cj-trajet,.cj-jour-fil--dense .cj-trajet,.cj-jour-fil--tres-dense .cj-trajet,.cj-jour-fil--arrivee .cj-trajet{font-size:max(var(--cj-plancher,0px),10px);color:var(--cj-encre-douce)}
.cj-jour-fil .cj-trajet__icone{color:var(--cj-encre-douce)}
.cj-jour-fil .cj-etape__tip{color:var(--cj-encre)}
.cj-jour-rappel__meta{font-size:max(var(--cj-plancher,0px),10px);color:var(--cj-encre)}
@media (max-width:1199px){.cj-doc .cj-jour-fil .cj-jour-moment__nom{font-size:max(var(--cj-plancher,0px),24px)}.cj-doc .cj-jour-fil .cj-trajet{font-size:max(var(--cj-plancher,0px),11.5px)}.cj-doc .cj-jour-rappel__meta{font-size:max(var(--cj-plancher,0px),11.5px)}}

/* la page programme d'une ville : la frise des journées. Un chemin pointillé serpente de haut en bas, une photo ronde par journée
   de part et d'autre du milieu, le texte du côté extérieur ; la frise occupe toute la hauteur restante de la page */
.cj-vprog-jours{display:flex;flex-direction:column;flex-grow:1;min-height:0;gap:0}
.cj-vprog-frise{position:relative;flex-grow:1;min-height:calc(var(--n) * 74px);--r:34px}
.cj-vprog-frise--moyenne{--r:31px}
.cj-vprog-frise--serree{--r:27px;min-height:calc(var(--n) * 66px)}
.cj-vprog-frise__chemin{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.cj-vprog-frise__chemin path{fill:none;stroke:var(--cj-vermillon);stroke-opacity:.55;stroke-width:2;stroke-dasharray:1 6;stroke-linecap:round}
.cj-vprog-etape{position:absolute;left:0;right:0;transform:translateY(-50%);display:flex;align-items:center;color:inherit;text-decoration:none}
.cj-vprog-etape__rond{position:absolute;top:50%;width:calc(var(--r) * 2);height:calc(var(--r) * 2);transform:translate(-50%,-50%);border-radius:50%;
  background:var(--cj-creme) center/cover no-repeat;box-shadow:0 0 0 3px var(--cj-fond),0 0 0 4.5px var(--cj-vermillon),0 6px 14px -6px rgba(38,33,28,.5)}
.cj-vprog-etape--gauche .cj-vprog-etape__rond{left:43%}
.cj-vprog-etape--droite .cj-vprog-etape__rond{left:57%}
.cj-vprog-etape__num{position:absolute;right:-6px;bottom:-4px;min-width:22px;height:22px;padding:0 4px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;
  border-radius:999px;background:var(--cj-vermillon);color:var(--cj-creme);font:700 10.5px var(--cj-police-mono);box-shadow:0 0 0 2px var(--cj-fond)}
.cj-vprog-etape__texte{display:flex;flex-direction:column;gap:2px;width:calc(43% - var(--r) - 14px)}
.cj-vprog-etape--gauche .cj-vprog-etape__texte{text-align:right;align-items:flex-end}
.cj-vprog-etape--droite .cj-vprog-etape__texte{margin-left:auto;text-align:left}
.cj-vprog-etape__date{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.06em;text-transform:uppercase;color:var(--cj-encre-douce)}
.cj-vprog-etape__titre{font-family:var(--cj-police-titre);font-weight:700;font-size:max(var(--cj-plancher,0px),17px);line-height:1.1;color:var(--cj-encre)}
.cj-vprog-etape__lieux{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.35;color:var(--cj-encre)}
a.cj-vprog-etape:hover .cj-vprog-etape__titre{color:var(--cj-vermillon)}
.cj-vprog-frise--serree .cj-vprog-etape__titre{font-size:max(var(--cj-plancher,0px),15px)}
.cj-vprog-frise--serree .cj-vprog-etape__lieux{font-size:max(var(--cj-plancher,0px),11.5px)}
@media (max-width:1199px){
  .cj-doc .cj-vprog-frise{min-height:calc(var(--n) * 104px)}
  .cj-doc .cj-vprog-etape__titre{font-size:max(var(--cj-plancher,0px),17px)}
  .cj-doc .cj-vprog-etape__lieux{font-size:max(var(--cj-plancher,0px),13px)}
  .cj-doc .cj-vprog-etape__date{font-size:max(var(--cj-plancher,0px),11.5px)}
}
.cj-vprog-etape--gauche .cj-vprog-etape__rond{left:46%}
.cj-vprog-etape--droite .cj-vprog-etape__rond{left:54%}
.cj-vprog-etape__texte{width:calc(46% - var(--r) - 12px)}
.cj-vprog-frise--serree{min-height:calc(var(--n) * 58px)}
.cj-vprog-frise--serree .cj-vprog-etape__lieux{display:none}
.cj-vprog-frise--ample{--r:58px}
.cj-vprog-frise--ample .cj-vprog-etape__titre{font-size:max(var(--cj-plancher,0px),20px)}
.cj-vprog-frise--ample .cj-vprog-etape__lieux{font-size:max(var(--cj-plancher,0px),13px)}
.cj-vprog-frise--ample .cj-vprog-etape__num{min-width:28px;height:28px;font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-vprog-frise--large{--r:42px}
/* peu de journées (4 au plus) : le chemin serpente large, la photo est côté extérieur et le texte prend toute la largeur restante */
.cj-vprog-frise--ample .cj-vprog-etape--gauche .cj-vprog-etape__rond,.cj-vprog-frise--large .cj-vprog-etape--gauche .cj-vprog-etape__rond{left:26%}
.cj-vprog-frise--ample .cj-vprog-etape--droite .cj-vprog-etape__rond,.cj-vprog-frise--large .cj-vprog-etape--droite .cj-vprog-etape__rond{left:74%}
.cj-vprog-frise--ample .cj-vprog-etape--gauche .cj-vprog-etape__texte,.cj-vprog-frise--large .cj-vprog-etape--gauche .cj-vprog-etape__texte{width:auto;margin-left:calc(26% + var(--r) + 16px);text-align:left;align-items:flex-start}
.cj-vprog-frise--ample .cj-vprog-etape--droite .cj-vprog-etape__texte,.cj-vprog-frise--large .cj-vprog-etape--droite .cj-vprog-etape__texte{width:calc(74% - var(--r) - 16px);margin-left:0;margin-right:auto;text-align:right;align-items:flex-end}

/* ===== Normes de lecture (oct. 2026) =====
   Le livre (double page) seulement à partir de 1200 px de large : la page y est agrandie d'au moins 1,25, donc 10 px deviennent 12,5 px réels.
   En dessous (téléphone, tablette, petit portable) : lecture verticale, et aucun texte sous 12 px (--cj-plancher). */
@media (max-width:1199px){
  .cj-mobile{--cj-plancher:12px}
  .cj-mobile .cj-doc__pages{max-width:620px;margin-left:auto;margin-right:auto}
}
@media print{:root,.cj-mobile{--cj-plancher:0px}}

/* ===== Accessibilité et lisibilité (oct. 2026) ===== */
/* le titre du document, pour les lecteurs d'écran seulement */
.cj-invisible{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* les titres de page sont des h2 (un seul h1 par document) : mêmes marges qu'avant */
:where(.cj-page) h2{margin-block:.67em}
/* le focus clavier, visible partout */
.cj-doc a:focus-visible,.cj-doc button:focus-visible,.cj-doc input:focus-visible,.cj-doc select:focus-visible,.cj-doc textarea:focus-visible,.cj-doc [tabindex]:focus-visible{outline:2px solid var(--cj-accent);outline-offset:3px;border-radius:4px}
/* les liens se voient sans survol : un soulignement discret */
a.cj-etape__nom,a.cj-repas__nom,.cj-forts a{text-decoration:underline;text-decoration-color:rgba(138,79,46,.4);text-decoration-thickness:1.5px;text-underline-offset:3px}
/* les villes du programme : le nom en marron (le vert riz ne se lisait pas) */
.cj-programme-ville .cj-programme-ville__nom{color:var(--cj-vermillon)}
/* téléphone : zones à toucher d'au moins 44 px, sans bouger la mise en page */
@media (max-width:1199px){
  .cj-mobile a.cj-sommaire-ligne,.cj-mobile a.cj-programme-jour,.cj-mobile a.cj-vprog-etape{min-height:44px}
  .cj-mobile a.cj-etape__nom,.cj-mobile a.cj-repas__nom{display:inline-block;padding:10px 0;margin:-10px 0}
  .cj-mobile .cj-coche,.cj-mobile .cj-coches input{min-width:24px;min-height:24px}
}
@media (prefers-reduced-motion:reduce){.cj-doc *,.cj-doc *::before,.cj-doc *::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* la carte postale : l'étiquette aux couleurs de la marque (marron terre, écriture crème), le trombone posé SUR la lettre */
.cj-cp-etiquette{background:var(--cj-vermillon)}
.cj-cp-etiquette__point{background:var(--cj-fond)}
.cj-cp-etiquette__accroche{color:var(--cj-creme);opacity:.9}
.cj-cp-etiquette__noms{color:var(--cj-creme)}
.cj-cp-lettre{z-index:1}
.cj-cp-trombone{z-index:3}
/* les préparatifs : les valises en bas, en texte confortable (13 px) */
.cj-checklist__valises .cj-saison-valise{font-size:max(var(--cj-plancher,0px),13px);line-height:1.3}
.cj-checklist__valises .cj-saison-valises__grille{gap:8px 14px}
/* les préparatifs allégés : des lignes courtes, donc un texte plus confortable */
.cj-checklist__texte{font-size:max(var(--cj-plancher,0px),13px);line-height:1.3}
/* le budget : l'encart des astuces tient sur sa page (titre sur une ligne) */
.cj-budget .cj-budget-astuces__titre{font-size:max(var(--cj-plancher,0px),20px);white-space:nowrap}
.cj-budget .cj-budget-astuces__accroche{font-size:max(var(--cj-plancher,0px),15px)}
.cj-budget--dense .cj-budget-astuce__titre,.cj-budget--tres-dense .cj-budget-astuce__titre{font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-budget--dense .cj-budget-astuce__texte,.cj-budget--tres-dense .cj-budget-astuce__texte{line-height:1.25}
.cj-budget--dense .cj-budget-astuce,.cj-budget--tres-dense .cj-budget-astuce{padding-top:5px;padding-bottom:5px}
.cj-budget--dense,.cj-budget--tres-dense{gap:6px}
.cj-budget--dense .cj-budget-repere,.cj-budget--tres-dense .cj-budget-repere{padding:2px 12px}
.cj-budget--dense .cj-budget-reperes,.cj-budget--tres-dense .cj-budget-reperes{gap:4px}
.cj-budget--dense .cj-budget-astuces__grille{row-gap:2px}
/* plancher 12 px aussi pour les petites étiquettes posées sur les cartes et les photos (téléphone) */
.cj-vprog-etape__num{font-size:max(var(--cj-plancher,0px),10.5px)}
.cj-vprog-base__label,.cj-carte-jour__legende,.cj-carte-jour__osm,.cj-g2-carte__jour{font-size:max(var(--cj-plancher,0px),10px)}
@media (max-width:1199px){
  /* la carte postale est réduite (zoom) sur téléphone : ses petits textes partent plus gros pour rester à 12 px réels */
  .cj-mobile .cj-cp-billet__label,.cj-mobile .cj-cp-billet__valeur{font-size:13.5px}
  .cj-mobile .cj-cp-billet__entete,.cj-mobile .cj-cp-billet__entete span{font-size:13.5px;letter-spacing:.04em;white-space:nowrap}
  .cj-mobile .cj-cp-billet__entete span:first-child{display:none}
  .cj-mobile .cj-cp-etiquette__accroche{font-size:14px}
}

/* le programme du jour : une petite photo ronde à droite des lieux qui en ont une (cerclée de marron, comme la frise des villes) */
.cj-jour-fil .cj-etape__vignette{flex-shrink:0;width:52px;height:52px;margin-top:2px;border-radius:50%;background:var(--cj-lin) center/cover no-repeat;box-shadow:0 0 0 2px var(--cj-fond),0 0 0 3.5px var(--cj-vermillon)}
.cj-jour-fil--dense .cj-etape__vignette{width:44px;height:44px}
.cj-jour-fil--tres-dense .cj-etape__vignette{width:38px;height:38px}
@media (max-width:1199px){.cj-mobile .cj-jour-fil .cj-etape__vignette{width:64px;height:64px}}
.cj-jour-fil--arrivee .cj-etape__vignette{display:none}

/* ===== le sommaire, version table des matières de livre (oct. 2026) =====
   plus de cartes ni de capitales grasses : des parties numérotées en Cormorant, des lignes fines en minuscules,
   des points de conduite légers jusqu'au numéro de page */
.cj-page--sommaire .cj-sommaire-titre{font-size:max(var(--cj-plancher,0px),48px);letter-spacing:.02em}
.cj-page--sommaire .cj-sommaire-sous-titre{color:var(--cj-encre-douce);letter-spacing:.24em}
.cj-page--sommaire .cj-sommaire{gap:16px;margin-top:6px}
.cj-page--sommaire .cj-sommaire-partie,.cj-page--sommaire .cj-sommaire-partie--journees,.cj-page--sommaire .cj-sommaire-partie--vie{background:none;padding:0;border-radius:0;gap:4px}
.cj-page--sommaire .cj-sommaire-partie__titre{align-items:baseline;gap:10px;padding-bottom:4px;border-bottom:1px solid var(--cj-filet)}
.cj-page--sommaire .cj-sommaire-partie__num{font-family:var(--cj-police-titre);font-style:italic;font-weight:500;font-size:max(var(--cj-plancher,0px),20px);line-height:1;color:var(--cj-vermillon);font-variant-numeric:lining-nums}
.cj-page--sommaire .cj-sommaire-partie__nom{font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),20px);line-height:1;color:var(--cj-encre)}
.cj-page--sommaire .cj-sommaire-partie__filet{display:none}
.cj-page--sommaire .cj-sommaire-lignes,.cj-page--sommaire .cj-sommaire-lignes--deux{gap:0 22px}
.cj-page--sommaire .cj-sommaire-ligne{gap:6px;min-height:24px;padding:0;border-bottom:0;align-items:baseline}
.cj-page--sommaire .cj-sommaire-ligne__titre{flex:0 1 auto;font-size:max(var(--cj-plancher,0px),13px);font-weight:400;letter-spacing:0;text-transform:none;line-height:1.3;color:var(--cj-encre)}
.cj-page--sommaire .cj-sommaire-ligne__points{flex:1 1 12px;min-width:12px;border-bottom:1.5px dotted rgba(138,79,46,.35);transform:translateY(-3px)}
.cj-page--sommaire .cj-sommaire-ligne__num{font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),15px);font-variant-numeric:lining-nums;color:var(--cj-vermillon)}
.cj-page--sommaire .cj-sommaire--dense{gap:12px}
.cj-page--sommaire .cj-sommaire--dense .cj-sommaire-ligne{min-height:21px}
.cj-page--sommaire .cj-sommaire--tres-dense{gap:9px}
.cj-page--sommaire .cj-sommaire--tres-dense .cj-sommaire-ligne{min-height:19px}
.cj-page--sommaire .cj-sommaire--tres-dense .cj-sommaire-ligne__titre{font-size:max(var(--cj-plancher,0px),11.5px)}
.cj-page--sommaire .cj-sommaire--tres-dense .cj-sommaire-partie__nom,.cj-page--sommaire .cj-sommaire--tres-dense .cj-sommaire-partie__num{font-size:max(var(--cj-plancher,0px),17px)}
a.cj-sommaire-ligne:hover .cj-sommaire-ligne__titre{text-decoration:underline;text-decoration-color:rgba(138,79,46,.4);text-underline-offset:3px}

/* la barre du carnet = l'en-tête du site : 64 px, verre dépoli, logo kei car + Carnet Japon, boutons aux angles du site */
.cj-doc .cj-doc__barre{min-height:64px;box-sizing:border-box;padding-top:10px;padding-bottom:10px;padding-left:max(32px,calc((100% - 1240px) / 2 + 32px));padding-right:max(32px,calc((100% - 1240px) / 2 + 32px));
  background:rgba(239,231,216,.86);-webkit-backdrop-filter:blur(16px) saturate(1.4);backdrop-filter:blur(16px) saturate(1.4);border-bottom:0}
.cj-doc__marque{display:inline-flex;align-items:center;gap:10px;font-weight:600;font-size:max(var(--cj-plancher,0px),24px);letter-spacing:.02em;white-space:nowrap}
.cj-doc__marque-kei{width:40px;height:26px;flex-shrink:0}
.cj-doc .cj-doc__barre .cj-doc__bouton{border-radius:var(--cj-rayon);min-height:44px;box-sizing:border-box;display:inline-flex;align-items:center;padding:0 18px;font-size:max(var(--cj-plancher,0px),15px)}
.cj-doc .cj-doc__barre .cj-doc__bouton--discret{box-shadow:inset 0 0 0 1.5px rgba(38,33,28,.18);background:transparent}
.cj-doc .cj-doc__barre .cj-doc__bouton--discret:hover{background:rgba(38,33,28,.05)}
@media (max-width:1199px){
  .cj-mobile .cj-doc__barre{min-height:0;height:56px;padding:0 20px}
  .cj-mobile .cj-doc__marque{font-size:max(var(--cj-plancher,0px),20px)}
  .cj-mobile .cj-doc__marque-kei{width:32px;height:21px}
}
/* la carte du parcours : les épingles photo des villes */
.cj-parcours-pin__fil{stroke:var(--cj-vermillon);stroke-width:.9;stroke-dasharray:1.5 2.5;stroke-linecap:round}
.cj-parcours-pin__anneau{fill:var(--cj-creme);stroke:var(--cj-vermillon);stroke-width:1.2}
.cj-parcours-pin__nom{font-family:var(--cj-police-main);font-size:9.5px;fill:var(--cj-encre);paint-order:stroke;stroke:#F6F0E4;stroke-width:3px;stroke-linejoin:round}
/* « Votre mois » sans les valises (parties dans les préparatifs) : les blocs se répartissent la page au lieu de laisser un trou */
.cj-page--saison .cj-saison{justify-content:space-around}

/* ===== les préparatifs, en compte à rebours (oct. 2026) =====
   une route en pointillés qui descend jusqu'au départ, un tampon rond par étape (4 / mois, 1 / sem., J), les cases en lignes simples,
   puis la valise à cocher. Plus de cartes empilées ni de texte minuscule. */
.cj-page--checklist .cj-checklist{justify-content:flex-start;gap:16px}
.cj-page--checklist .cj-checklist__groupe{position:relative;display:grid;grid-template-columns:52px minmax(0,1fr);column-gap:14px;row-gap:7px;padding:0;background:none;border-radius:0;box-shadow:none}
.cj-page--checklist .cj-checklist__groupe::before{content:"";position:absolute;left:25px;top:52px;bottom:-16px;border-left:2px dotted rgba(138,79,46,.45)}
.cj-page--checklist .cj-checklist__groupe:has(+ .cj-checklist__valises)::before,.cj-page--checklist .cj-checklist__groupe:last-child::before{display:none}
.cj-checklist__tampon{grid-column:1;grid-row:1 / span 20;align-self:start;width:52px;height:52px;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  border-radius:50%;border:1.5px solid var(--cj-vermillon);background:var(--cj-fond);box-shadow:0 0 0 4px var(--cj-fond);color:var(--cj-vermillon)}
.cj-checklist__tampon-n{font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),24px);line-height:.9;font-variant-numeric:lining-nums}
.cj-checklist__tampon-u{font-family:var(--cj-police-mono);font-size:max(var(--cj-plancher,0px),10px);letter-spacing:.06em;text-transform:uppercase;line-height:1}
.cj-page--checklist .cj-checklist__quand{grid-column:2;font-size:max(var(--cj-plancher,0px),20px);padding-top:4px}
.cj-page--checklist .cj-checklist__item{grid-column:2;gap:10px;align-items:baseline}
.cj-page--checklist .cj-checklist__item .cj-case{width:14px;height:14px;margin-top:0;transform:translateY(2px);border-radius:4px}
.cj-page--checklist .cj-checklist__icone{display:none}
.cj-page--checklist .cj-checklist__texte,.cj-page--checklist .cj-checklist--dense .cj-checklist__texte,.cj-page--checklist .cj-checklist--tres-dense .cj-checklist__texte{font-size:max(var(--cj-plancher,0px),13px);line-height:1.35;color:var(--cj-encre-douce)}
.cj-page--checklist .cj-checklist__titre{font-weight:600;color:var(--cj-encre)}
/* la valise : une carte crème, le titre avec un petit dessin de valise, deux colonnes de cases */
.cj-page--checklist .cj-checklist__valises{margin-top:auto;padding:14px 16px;border-radius:var(--cj-rayon);background:var(--cj-creme)}
.cj-page--checklist .cj-checklist__valises .cj-saison-valise{font-size:max(var(--cj-plancher,0px),13px);gap:9px}
.cj-page--checklist .cj-checklist__valises .cj-saison-valise .cj-case{width:14px;height:14px;border-radius:4px}
.cj-page--checklist .cj-checklist__valises .cj-sous-titre__titre{font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),20px)}
/* (correctif) le tampon est posé à gauche en absolu ; la colonne de droite garde un rythme serré */
.cj-page--checklist .cj-checklist__groupe{display:flex;flex-direction:column;gap:7px;padding:0 0 0 66px;min-height:52px}
.cj-page--checklist .cj-checklist__tampon{position:absolute;left:0;top:0}
.cj-page--checklist .cj-checklist,.cj-page--checklist .cj-checklist--dense,.cj-page--checklist .cj-checklist--tres-dense{gap:0}
.cj-page--checklist .cj-checklist__groupe{margin-bottom:18px}
.cj-page--checklist .cj-checklist__groupe::before{bottom:-18px}
.cj-page--checklist .cj-checklist__valises{margin-top:auto;margin-bottom:0}
.cj-page--checklist .cj-checklist__groupe,.cj-page--checklist .cj-checklist__valises{flex-shrink:0}
.cj-page--checklist .cj-checklist__groupe{gap:5px;margin-bottom:14px;min-height:46px;padding-left:60px}
.cj-page--checklist .cj-checklist__groupe::before{left:22px;top:46px;bottom:-14px}
.cj-checklist__tampon{width:46px;height:46px}
.cj-checklist__tampon-n{font-size:max(var(--cj-plancher,0px),20px)}
.cj-page--checklist .cj-checklist__quand{font-size:max(var(--cj-plancher,0px),17px);padding-top:2px}
.cj-page--checklist .cj-checklist__texte{line-height:1.3}
.cj-page--checklist .cj-checklist__valises{padding:12px 14px}
.cj-page--checklist .cj-checklist__valises .cj-saison-valises__grille{gap:5px 14px}
.cj-page--checklist .cj-checklist__valises .cj-saison-valise{font-size:max(var(--cj-plancher,0px),11.5px);line-height:1.25}
/* téléphone : les premières pages (couverture, carte postale, pleines pages) bloquaient le défilement au doigt.
   En « overflow:hidden » elles devenaient des zones de défilement, et « overscroll-behavior:contain » empêchait le geste de passer à la page.
   On coupe sans créer de zone de défilement (clip) et on laisse le geste filer. */
@media (max-width:1199px){
  .cj-mobile .cj-doc .cj-page,.cj-mobile.cj-doc .cj-page{overscroll-behavior:auto}
  .cj-mobile.cj-doc .cj-page--pleine,.cj-mobile.cj-doc .cj-page--couverture,.cj-mobile.cj-doc .cj-page--dos,.cj-mobile.cj-doc .cj-page--carte-postale,
  .cj-mobile.cj-doc .cj-page--grande-page,.cj-mobile.cj-doc .cj-page--ouverture{overflow:clip}
  .cj-mobile .cj-doc .cj-page *{overscroll-behavior:auto}
}
@media (max-width:1199px){.cj-mobile.cj-doc .cj-doc__barre .cj-doc__bouton,.cj-mobile.cj-doc .cj-doc__barre .cj-doc__nom{display:none}}

/* ===== échange (oct. 2026) : la carte du parcours sur la carte postale, le billet et la valise sur la page parcours ===== */
/* la carte postale : la carte du Japon en bas, à fond perdu, la lettre posée dessus comme dans un collage */
.cj-cp-carte{position:absolute;left:0;right:0;bottom:0;height:352px;z-index:0}
.cj-cp-carte .cj-parcours-carte{margin:0}
.cj-cp-carte .cj-parcours-carte > .cj-label{top:auto;bottom:12px}
.cj-cp-lettre{z-index:1}
/* la page parcours : le billet en haut, puis la valise et la liste « Dans vos valises » côte à côte */
.cj-parcours-depart{display:flex;flex-direction:column;gap:14px;flex-shrink:0}
.cj-parcours-depart .cj-cp-billet{position:relative;left:auto;right:auto;top:auto;bottom:auto;width:auto}
.cj-parcours-depart__bas{display:flex;gap:16px;align-items:center}
.cj-parcours-depart .cj-cp-valise{position:relative;left:auto;top:auto;width:92px;height:156px;flex-shrink:0}
.cj-parcours-depart .cj-checklist__valises{flex:1 1 auto;min-width:0;margin:0;padding:12px 14px;border-radius:var(--cj-rayon);background:var(--cj-creme)}
.cj-parcours-depart .cj-saison-valises__grille{grid-template-columns:1fr;gap:6px}
.cj-parcours-depart .cj-saison-valise{font-size:max(var(--cj-plancher,0px),13px);line-height:1.25;gap:9px}
.cj-parcours-depart .cj-saison-valise .cj-case{width:14px;height:14px;border-radius:4px}
.cj-parcours-depart .cj-sous-titre__titre{font-family:var(--cj-police-titre);font-weight:600;font-size:max(var(--cj-plancher,0px),20px)}
@media (max-width:1199px){
  .cj-mobile .cj-parcours-depart .cj-cp-billet__label,.cj-mobile .cj-parcours-depart .cj-cp-billet__valeur,.cj-mobile .cj-parcours-depart .cj-cp-billet__entete,.cj-mobile .cj-parcours-depart .cj-cp-billet__entete span{font-size:12px}
  .cj-mobile .cj-parcours-depart .cj-cp-billet__entete span:first-child{display:inline}
  .cj-mobile .cj-parcours-depart .cj-cp-valise{width:72px;height:122px}
}
/* la page parcours tient sur sa page : la liste des valises sur deux colonnes, la valise plus petite */
.cj-parcours-depart{gap:12px}
.cj-parcours-depart .cj-cp-valise{width:64px;height:110px}
.cj-parcours-depart .cj-saison-valises__grille{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px}
.cj-parcours-depart .cj-saison-valise{font-size:max(var(--cj-plancher,0px),11.5px);gap:7px}
.cj-parcours-depart .cj-saison-valise__icone{display:none}
.cj-page--parcours{gap:9px}
.cj-parcours-depart .cj-cp-billet{min-height:0}.cj-parcours-depart .cj-checklist__valises{padding:10px 14px}
/* la carte postale, version 2 : plus d'étiquette, la lettre remonte et rapetisse, la carte prend la moitié basse de la page */
.cj-page--carte-postale .cj-cp-etiquette{display:none}
.cj-page--carte-postale .cj-cp-lettre{top:12px;transform:rotate(-2.5deg) scale(.8);transform-origin:50% 0}
.cj-page--carte-postale .cj-cp-trombone{left:330px;top:4px}
.cj-page--carte-postale .cj-cp-carte{height:470px}
.cj-page--carte-postale .cj-cp-carte .cj-parcours-carte__svg{height:470px}
@media (max-width:1199px){.cj-mobile .cj-page--carte-postale .cj-cp-carte .cj-parcours-carte__svg{width:440px;height:470px;aspect-ratio:auto}}
.cj-page--carte-postale .cj-cp-lettre{top:54px}
.cj-page--carte-postale .cj-cp-trombone{top:46px}

/* carte postale v3 : la carte du parcours en fond de toute la page, la lettre posée dessus */
.cj-page--carte-postale .cj-cp-carte{top:0;bottom:0;height:auto}
.cj-page--carte-postale .cj-cp-carte .cj-parcours-carte,.cj-page--carte-postale .cj-cp-carte .cj-parcours-carte__svg{height:840px}
@media (max-width:1199px){.cj-mobile .cj-page--carte-postale .cj-cp-carte .cj-parcours-carte__svg{width:440px;height:840px}}
.cj-page--carte-postale .cj-cp-lettre__papier{box-shadow:0 14px 30px -14px rgba(38,33,28,.45)}

/* parcours : le mot d'envoi en haut ; « Votre mois » : la route entre la météo et la frise, les excursions à réserver */
.cj-page--parcours .cj-parcours-envoi{margin-top:2px}
.cj-saison-route .cj-parcours-etapes{margin-top:6px}
.cj-saison-exc{flex-wrap:wrap}
.cj-saison-exc .cj-saison-exc__carte{flex:1 1 30%;gap:3px}
.cj-saison-exc__resa{font-family:var(--cj-police-main);font-size:max(var(--cj-plancher,0px),17px);line-height:1;color:var(--cj-vermillon)}
.cj-saison-exc__bouton{display:inline-flex;align-items:center;justify-content:center;min-height:28px;margin-top:4px;padding:4px 14px;border-radius:999px;background:var(--cj-accent);color:var(--cj-creme);font-family:var(--cj-police-texte);font-size:max(var(--cj-plancher,0px),11.5px);font-weight:700;letter-spacing:.04em;text-decoration:none}
.cj-saison-exc__bouton:hover{background:var(--cj-accent-fonce)}
.cj-saison-exc__bouton:focus-visible{outline:2px solid var(--cj-accent);outline-offset:2px}
@media (max-width:1199px){.cj-mobile .cj-saison-exc__bouton{min-height:44px;padding:8px 18px}}
@media print{.cj-saison-exc__bouton{display:none}}
/* la terre du fond de carte s'arrête net au nord : un fondu vers la mer sous la lettre */
.cj-page--carte-postale .cj-cp-carte::after{content:"";position:absolute;left:0;right:0;top:330px;height:110px;background:linear-gradient(#DDE4E0 35%,rgba(221,228,224,0));pointer-events:none;z-index:1}
.cj-page--carte-postale .cj-cp-carte .cj-parcours-pin,.cj-page--carte-postale .cj-cp-carte .cj-label{position:relative;z-index:2}

/* Kei a un visage : la kei car de face, dans l'en-tête du panneau */
.cj-kei__tete{padding-left:66px;min-height:54px}
.cj-kei__avatar{position:absolute;left:0;top:0;width:54px;height:54px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--cj-creme);color:var(--cj-encre)}
.cj-kei__avatar svg{width:40px;height:38px}

/* la pliure du carnet : vraiment visible, par-dessus le contenu (les cartes pleine page la cachaient) */
@media (min-width:1200px){
  .cj-doc__double:not(.cj-doc__double--gauche):not(.cj-doc__double--droite)::after{width:56px;z-index:4;background:linear-gradient(90deg,rgba(38,33,28,0) 0%,rgba(38,33,28,.05) 30%,rgba(38,33,28,.20) 48%,rgba(255,255,255,.10) 50%,rgba(38,33,28,.14) 53%,rgba(38,33,28,.04) 72%,rgba(38,33,28,0) 100%)}
}
/* un lieu à quelques pas, dans la même étape (oct. 2026) */
.cj-etape__avec{display:block;margin-top:7px;font-family:var(--cj-police-texte);font-size:11px;color:var(--cj-encre-douce)}
.cj-etape__avec .cj-etape__nom--avec{display:inline;font-size:1.35em}
