/* =====================================================================
   CV STUDIO  DOCUMENT (rendu du CV & de la lettre)
   Le SEUL fichier embarqué dans le PDF (avec tokens.css). Contient les 4
   modèles, la lettre, la pagination A4 et la densité.
   ⚠ Périmètre studio-only : ce fichier est repris À L'IDENTIQUE de l'ancien
   style.css  le rendu des CV ne change pas. Toute évolution des modèles
   fera l'objet d'une passe dédiée.
   ===================================================================== */

/* ---------- Aperçu A4 ---------- */
.page{width:210mm;min-height:297mm;background:#fff;box-shadow:0 12px 40px rgba(28,24,49,.18);
  display:grid;grid-template-columns:67mm 1fr;color:var(--ink);position:relative;transform-origin:top left;
  font-family:var(--font,'Poppins',system-ui,sans-serif)}
.page.size-letter{width:215.9mm;min-height:279.4mm}
.cv-side{background:var(--accent);color:#fff}
.cv-main{padding:12mm 11mm 12mm 10mm}

/* En-tête latéral */
.side-head{padding:11mm 8mm 5mm;text-align:center}
.ph{width:36mm;height:36mm;border-radius:50%;margin:0 auto 5mm;background:rgba(255,255,255,.18) center/cover no-repeat;
  border:3px solid rgba(255,255,255,.55);display:grid;place-items:center;font-size:30px;font-weight:700;color:rgba(255,255,255,.85)}
.side-pad{padding:0 8mm}
.side-block{margin-bottom:5.5mm}
.side-block h4{font-size:11px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;
  margin:0 0 3mm;padding-bottom:1.5mm;border-bottom:1.5px solid rgba(255,255,255,.35)}
.contact-row{display:flex;align-items:center;gap:8px;font-size:11.5px;margin-bottom:3mm;line-height:1.3;word-break:break-word}
.contact-row .ci{width:16px;height:16px;flex:none;display:grid;place-items:center}
.contact-row .ci svg{width:14px;height:14px;fill:currentColor}
.tag{display:inline-block;background:rgba(255,255,255,.16);border-radius:20px;padding:2.6px 9px;font-size:10.5px;margin:0 4px 5px 0}
.lng{display:flex;justify-content:space-between;align-items:center;font-size:11.5px;margin-bottom:3mm}
.dots{display:flex;gap:3px}
.dot{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.3)}
.dot.on{background:#fff}
.li-item{font-size:11.5px;margin-bottom:2.4mm;line-height:1.35;display:flex;gap:7px;align-items:flex-start}
.li-item::before{content:"";width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,.85);flex:none;margin-top:5px}

/* Colonne principale */
.cv-name{font-size:30px;font-weight:800;line-height:1.05;letter-spacing:-.5px;margin:0}
.cv-role{font-size:14px;font-weight:600;color:var(--accent);letter-spacing:1px;text-transform:uppercase;margin:3mm 0 0}
.main-block{margin-top:9mm}
.main-block>h2{font-size:14px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--ink);
  margin:0 0 5mm;display:flex;align-items:center;gap:9px}
.main-block>h2::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent);flex:none}
.main-block>h2::after{content:"";flex:1;height:1.5px;background:var(--line)}
.profile-txt{font-size:12px;line-height:1.6;color:#3a3650;margin:0;white-space:pre-wrap}

.entry{position:relative;padding-left:8mm;margin-bottom:6mm}
.entry::before{content:"";position:absolute;left:0;top:2px;width:9px;height:9px;border-radius:50%;background:#fff;border:2.5px solid var(--accent)}
.entry::after{content:"";position:absolute;left:4px;top:13px;bottom:-6mm;width:1.5px;background:var(--line)}
.entry:last-child::after{display:none}
/* Solution B : masque le trait de frise sur la DERNIÈRE entrée d'une section (main aplati) */
.entry--last::after{display:none}
.entry .et-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap}
.entry .et-title{font-size:13px;font-weight:700;margin:0}
.entry .et-date{font-size:10.5px;font-weight:600;color:#fff;background:var(--accent);border-radius:20px;padding:2px 9px;white-space:nowrap}
.entry .et-org{font-size:11.5px;font-weight:600;color:var(--accent);margin:1mm 0 0}
.entry .et-desc{font-size:11.5px;line-height:1.5;color:#403c55;margin:2mm 0 0;white-space:pre-wrap}
.entry .et-loc{font-size:10.5px;color:var(--muted)}

.proj{margin-bottom:4.5mm}
.proj .pj-top{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.proj .pj-name{font-size:12.5px;font-weight:700;margin:0}
.proj .pj-link{font-size:10.5px;color:var(--accent);font-weight:600}
.proj .pj-desc{font-size:11.5px;line-height:1.5;color:#403c55;margin:1.5mm 0 0;white-space:pre-wrap}

/* ============================================================
   MODÈLE 2  « Éclat » (créatif)
   ============================================================ */
.page.tpl-creative{display:block;grid-template-columns:none}
.tpl-creative .cre-band{position:relative;overflow:hidden;color:#fff;padding:11mm 12mm 9mm;display:flex;
  align-items:center;justify-content:space-between;gap:9mm;
  background:linear-gradient(120deg, var(--accent), color-mix(in srgb, var(--accent) 55%, #100c2e 45%))}
.tpl-creative .cre-band::before{content:"";position:absolute;right:-22mm;top:-30mm;width:78mm;height:78mm;border-radius:50%;background:rgba(255,255,255,.10)}
.tpl-creative .cre-band::after{content:"";position:absolute;left:-18mm;bottom:-28mm;width:54mm;height:54mm;border-radius:50%;background:rgba(255,255,255,.07)}
.tpl-creative .cre-band-l{position:relative;z-index:1;min-width:0}
.tpl-creative .cre-name{font-size:33px;font-weight:800;letter-spacing:-.5px;line-height:1.02;margin:0}
.tpl-creative .cre-role{font-size:12.5px;font-weight:600;letter-spacing:2.5px;text-transform:uppercase;opacity:.93;margin:3.5mm 0 0}
.tpl-creative .cre-contacts{display:flex;flex-wrap:wrap;gap:4mm 6mm;margin-top:7mm}
.tpl-creative .cre-contacts .cc{display:flex;align-items:center;gap:6px;font-size:10.8px}
.tpl-creative .cre-contacts .ci{width:15px;height:15px;display:grid;place-items:center}
.tpl-creative .cre-contacts .ci svg{width:14px;height:14px;fill:currentColor}
.tpl-creative .cre-photo{position:relative;z-index:1;flex:none}
.tpl-creative .ph2{width:33mm;height:33mm;border-radius:20px;background:rgba(255,255,255,.16) center/cover no-repeat;
  border:3px solid rgba(255,255,255,.65);display:grid;place-items:center;font-size:30px;font-weight:700;color:#fff;
  box-shadow:0 8px 22px rgba(0,0,0,.18)}

.tpl-creative .cre-body{display:grid;grid-template-columns:1.55fr 1fr;gap:9mm;padding:8mm 12mm 10mm}
.tpl-creative .blk{margin-bottom:6mm}
.tpl-creative .blk>h2{font-size:12.5px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--accent);
  margin:0 0 4.5mm;display:flex;align-items:center;gap:8px}
.tpl-creative .blk>h2::before{content:"";width:14px;height:14px;border-radius:5px;background:var(--accent);flex:none}
.tpl-creative .blk>h2::after{content:"";flex:1;height:1.5px;background:var(--line)}
/* Entrées en cartes à liseré, pas en frise */
.tpl-creative .entry{padding:0 0 0 7mm;margin-bottom:5.5mm;border-left:2.5px solid color-mix(in srgb,var(--accent) 35%,#fff)}
.tpl-creative .entry::before,.tpl-creative .entry::after{display:none}
.tpl-creative .tag{background:color-mix(in srgb,var(--accent) 12%,#fff);color:var(--accent);font-weight:600}
.tpl-creative .lng{color:var(--ink)}
.tpl-creative .dot{background:#e3e0f1}
.tpl-creative .dot.on{background:var(--accent)}
.tpl-creative .cre-col-side .blk>h2{font-size:11.5px}
/* Solution B — Éclat paginé : 2 colonnes sur TOUTES les pages ; bandeau vert en page 1,
   bandeau de continuation (pleine largeur) en pages 2+. La colonne latérale COULE aussi. */
.sheet.cre-p1,.sheet.cre-pN{display:block}                     /* annule la grille 67mm/1fr des feuilles */
.tpl-creative .cre-body-p1,.tpl-creative .cre-body-pN{display:grid;grid-template-columns:1.55fr 1fr;gap:9mm;padding:8mm 12mm 10mm}
.tpl-creative .cre-body-pN .cre-cont{grid-column:1 / -1}       /* le bandeau de continuation s'étale sur les 2 colonnes */

/* Solution B — Classique paginé : 2 colonnes sur TOUTES les pages (grille 67mm/1fr des feuilles),
   la bande latérale (accent) COULE aussi → plus de rognage au-delà de la page 1. */
.tpl-classic .sheet-side{padding:11mm 9mm}                     /* largeur utile 67-18 = 49mm = sideColW */
.tpl-classic .sheet-main{padding:14mm 12mm}
.tpl-classic .cla-photo{text-align:center;margin-bottom:6mm}
.tpl-classic .cla-head{margin-bottom:1mm}

/* ============================================================
   MODÈLE 3  « Onyx » (clair premium, éditorial  façon magazine)
   Fond ivoire teinté d'accent, sections numérotées 01/02/03,
   nom surdimensionné, accent appuyé pour le contraste.
   ============================================================ */
/* Variables Onyx sur la classe NUE → héritées par la page legacy, les feuilles (#pageStack) ET la sonde de mesure. */
.tpl-onyx{
  --paper:color-mix(in srgb,var(--accent) 5%,#faf9f6);     /* fond ivoire teinté */
  --acc:color-mix(in srgb,var(--accent) 90%,#15111f);      /* accent légèrement appuyé */
  --pt:#1b1730;                                            /* texte foncé */
  --pm:#6c7088;                                            /* texte atténué */
  --pl:rgba(27,23,48,.12)}                                 /* filets */
.page.tpl-onyx{display:grid;grid-template-columns:1.65fr 1fr;padding:0;background:var(--paper);color:var(--pt)}
/* Solution B — Onyx paginé : 2 colonnes partout, fond ivoire sur les feuilles, hero en tête de col. 1 */
.page-stack.tpl-onyx{counter-reset:onx}
.tpl-onyx .sheet{background:var(--paper);color:var(--pt)}
.sheet.onx-p1,.sheet.onx-pN{display:block}                 /* annule la grille 67mm/1fr des feuilles */
.tpl-onyx .onx-body-p1,.tpl-onyx .onx-body-pN{display:grid;grid-template-columns:1.65fr 1fr;padding:11mm 12mm 10mm}
.tpl-onyx .onx-col-main{padding-right:10mm}
.tpl-onyx .onx-col-rail{border-left:1px solid var(--pl);padding-left:10mm}
.tpl-onyx .onx-body-pN .onx-cont{grid-column:1 / -1}       /* bandeau de continuation sur les 2 colonnes */
.tpl-onyx .onx-body-p1 .onx-hero{padding-top:0}            /* aligne le haut du hero avec la colonne latérale */

/* ----- Hero : nom géant + halo géométrique d'accent ----- */
.tpl-onyx .onx-hero{position:relative;overflow:hidden;padding:11mm 0 8mm;margin-bottom:2mm;
  display:flex;align-items:flex-start;justify-content:space-between;gap:9mm;
  background:linear-gradient(165deg,color-mix(in srgb,var(--accent) 13%,#fff),var(--paper) 62%)}
.tpl-onyx .onx-hero::before{content:"";position:absolute;top:-30mm;right:-26mm;width:86mm;height:86mm;border-radius:50%;
  border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);opacity:.6}
.tpl-onyx .onx-hero::after{content:"";position:absolute;top:-16mm;right:4mm;width:46mm;height:46mm;border-radius:50%;
  background:radial-gradient(circle,color-mix(in srgb,var(--accent) 22%,transparent),transparent 70%)}
.tpl-onyx .onx-hero-txt{position:relative;z-index:1;min-width:0}
.tpl-onyx .onx-kicker{margin:0 0 4mm;font-size:9.5px;font-weight:700;letter-spacing:5px;text-transform:uppercase;color:var(--acc)}
.tpl-onyx .onx-name{margin:0;font-size:42px;font-weight:800;letter-spacing:-1px;line-height:.98;color:#15111f}
.tpl-onyx .onx-role{display:inline-block;margin:5mm 0 0;font-size:12px;font-weight:600;letter-spacing:3px;
  text-transform:uppercase;color:var(--acc);padding-bottom:3mm;border-bottom:2px solid color-mix(in srgb,var(--accent) 50%,#fff)}
.tpl-onyx .onx-contacts{display:flex;flex-wrap:wrap;gap:3mm 6mm;margin-top:7mm}
.tpl-onyx .onx-contacts .cc{display:flex;align-items:center;gap:6px;font-size:10.3px;color:var(--pm)}
.tpl-onyx .onx-contacts .ci{width:14px;height:14px;display:grid;place-items:center;color:var(--acc)}
.tpl-onyx .onx-contacts .ci svg{width:13px;height:13px;fill:currentColor}
.tpl-onyx .onx-photo{position:relative;z-index:1;flex:none;width:32mm;height:32mm;border-radius:14px;
  background:color-mix(in srgb,var(--accent) 14%,#fff) center/cover no-repeat;
  display:grid;place-items:center;font-size:30px;font-weight:700;color:var(--acc);
  border:1px solid color-mix(in srgb,var(--accent) 40%,#fff);box-shadow:0 10px 26px rgba(27,23,48,.12)}
.tpl-onyx .onx-photo::after{content:"";position:absolute;left:-3mm;top:-3mm;width:9mm;height:9mm;
  border-top:2px solid var(--acc);border-left:2px solid var(--acc)}

/* ----- Corps : grille asymétrique, filet central ----- */
/* Grid au niveau de la page (comme le Classique) : l'en-tête est DANS la colonne
   principale → une seule rangée 2 colonnes, qui se fragmente proprement en PDF
   (le grid imbriqué / les floats poussaient le corps ou le rail sur la page 2). */
.tpl-onyx .onx-main{counter-reset:onx;padding:0 10mm 10mm 12mm}
.tpl-onyx .onx-rail{padding:11mm 12mm 10mm 10mm;border-left:1px solid var(--pl)}

/* Sections principales numérotées (01, 02, 03…) */
.tpl-onyx .onx-block{counter-increment:onx;margin-top:7mm}
.tpl-onyx .onx-block:first-child{margin-top:3mm}
.tpl-onyx .onx-block>h2{display:flex;align-items:baseline;gap:9px;margin:0 0 5mm;
  font-size:13px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--pt)}
.tpl-onyx .onx-block>h2::before{content:counter(onx,decimal-leading-zero);
  font-size:13px;font-weight:800;letter-spacing:0;color:var(--acc)}
.tpl-onyx .onx-block>h2::after{content:"";flex:1;height:1px;background:var(--pl)}
.tpl-onyx .profile-txt{color:#3a3650}

/* Entrées : tige verticale + point d'accent */
.tpl-onyx .entry{position:relative;padding:0 0 0 7mm;margin-bottom:6mm;border-left:1px solid var(--pl)}
.tpl-onyx .entry::before{content:"";position:absolute;left:-4px;top:3px;width:7px;height:7px;border-radius:50%;
  background:var(--acc);border:none}
.tpl-onyx .entry::after{display:none}
.tpl-onyx .entry .et-title{color:#15111f;font-size:13px;font-weight:700}
.tpl-onyx .entry .et-date{background:transparent;color:var(--acc);padding:1.5px 8px;
  border:1px solid color-mix(in srgb,var(--accent) 40%,#fff)}
.tpl-onyx .entry .et-org{color:var(--acc)}
.tpl-onyx .entry .et-desc{color:#403c55}
.tpl-onyx .entry .et-loc{color:var(--pm)}

/* Projets & certifications */
.tpl-onyx .proj .pj-name{color:#15111f}
.tpl-onyx .proj .pj-link{color:var(--acc)}
.tpl-onyx .proj .pj-desc{color:#403c55}
.tpl-onyx .proj .et-org{color:var(--pm);font-weight:600}

/* Colonne latérale : titres à tiret d'accent */
.tpl-onyx .onx-sblock{margin-bottom:7mm}
.tpl-onyx .onx-sblock>h3{display:flex;align-items:center;gap:7px;margin:0 0 4mm;
  font-size:10px;font-weight:700;letter-spacing:2.5px;text-transform:uppercase;color:var(--pt)}
.tpl-onyx .onx-sblock>h3::before{content:"";width:10px;height:2px;background:var(--acc);flex:none}

/* Chips d'accent teintés, langues à pastilles d'accent */
.tpl-onyx .tag{background:color-mix(in srgb,var(--accent) 9%,#fff);
  border:1px solid color-mix(in srgb,var(--accent) 26%,#fff);color:var(--acc);font-weight:600;padding:3px 9px}
.tpl-onyx .lng{color:var(--pt)}
.tpl-onyx .dot{background:rgba(27,23,48,.14)}
.tpl-onyx .dot.on{background:var(--acc)}

/* ============================================================
   MODÈLE 4  « Compact » (1 colonne stricte, optimisé ATS)
   Une seule colonne, pas de barre latérale ni de colonnes flottantes
   (les robots de recrutement lisent mal le multi-colonnes). Accent
   réservé au nom et aux filets ; listes en texte séparé par « · ».
   ============================================================ */
.page.tpl-ats{display:block;grid-template-columns:none;padding:10mm 13mm;background:#fff;color:var(--ink)}
.tpl-ats .ats-head{padding-bottom:4mm;border-bottom:2px solid var(--accent);margin-bottom:4.5mm}
.tpl-ats .ats-name{margin:0;font-size:27px;font-weight:800;letter-spacing:-.3px;line-height:1.05;color:var(--ink)}
.tpl-ats .ats-role{margin:2mm 0 0;font-size:12.5px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--accent)}
.tpl-ats .ats-contacts{margin:3.5mm 0 0;font-size:10.8px;color:var(--muted);line-height:1.5}
.tpl-ats .ats-sec{margin-bottom:4mm}
.tpl-ats .ats-sec>h2{margin:0 0 3mm;padding-bottom:1.5mm;font-size:11.5px;font-weight:700;letter-spacing:1.2px;
  text-transform:uppercase;color:var(--ink);border-bottom:1px solid var(--line)}
.tpl-ats .ats-line{margin:0;font-size:11.5px;line-height:1.55;color:#33304a}
.tpl-ats .profile-txt{font-size:11.5px}
/* Entrées : sobres, sans frise ni puces décoratives */
.tpl-ats .entry{padding:0;margin-bottom:4mm}
.tpl-ats .entry::before,.tpl-ats .entry::after{display:none}
.tpl-ats .entry .et-title{font-size:12.5px;font-weight:700}
.tpl-ats .entry .et-date{background:transparent;color:var(--muted);padding:0;font-size:10.5px;font-weight:600}
.tpl-ats .entry .et-org{color:var(--accent);font-weight:600}
.tpl-ats .entry .et-desc{font-size:11px;color:#3a3650}
.tpl-ats .proj{margin-bottom:3mm}
.tpl-ats .proj .pj-name{font-size:12px}
/* Solution B : titre de section « aplati » (paginé) — même look que .ats-sec>h2 */
.tpl-ats .ats-h{margin:0 0 3mm}
.tpl-ats .ats-h:not(:first-child){margin-top:1mm}
.tpl-ats .ats-h>h2{margin:0;padding-bottom:1.5mm;font-size:11.5px;font-weight:700;letter-spacing:1.2px;
  text-transform:uppercase;color:var(--ink);border-bottom:1px solid var(--line)}

/* ============================================================
   MODÈLE 5  « Sobre » (monochrome, imprimable N&B, libellé suspendu)
   Colonne unique, aucun fond perdu → pagine sur les feuilles.
   Accent seulement sur le nom + un filet ; tout le reste survit au N&B.
   NB : padding de .sheet-main inchangé (14 mm) pour que la mesure reste juste.
   ============================================================ */
.tpl-sobre{--rule:#c9c6d6;color:#161320}
.tpl-sobre .sob-head{display:flex;align-items:flex-end;justify-content:space-between;gap:8mm;
  padding-bottom:5mm;margin-bottom:2mm;border-bottom:2.5px solid var(--accent)}
.tpl-sobre .sob-name{margin:0;font-size:29px;font-weight:700;letter-spacing:-.4px;line-height:1.05;color:#0f0d18}
.tpl-sobre .sob-role{margin:2.5mm 0 0;font-size:11.5px;font-weight:600;letter-spacing:3.5px;
  text-transform:uppercase;color:#4a465c}
.tpl-sobre .sob-photo{width:26mm;height:26mm;flex:none;border-radius:2px;
  background:#efeef5 center/cover no-repeat;border:1px solid var(--rule);
  display:grid;place-items:center;font-size:22px;font-weight:700;color:#8b8799}
.tpl-sobre .sob-contacts{margin:4mm 0 2mm;font-size:11px;color:#3b3750;line-height:1.6}
.tpl-sobre .sob-sep{margin:0 2.5mm;color:var(--rule)}

/* Section : filet + libellé en gouttière gauche, contenu indenté (colonne droite). */
.tpl-sobre .sob-h{border-top:1px solid var(--rule);padding-top:4.5mm;margin-top:5mm}
.tpl-sobre .sob-h>h2{margin:0;font-size:10px;font-weight:700;letter-spacing:2px;
  text-transform:uppercase;color:#6a6580}
.tpl-sobre .sob-line,.tpl-sobre .profile-txt,
.tpl-sobre .entry,.tpl-sobre .proj{padding-left:32mm}
.tpl-sobre .sob-line{margin:2mm 0 0;font-size:11.5px;line-height:1.65;color:#2c2840}
.tpl-sobre .sob-lvl{letter-spacing:1px;font-size:9px;color:#6a6580}
.tpl-sobre .profile-txt{margin:2mm 0 0;font-size:11.5px;line-height:1.7;color:#2c2840}

/* Entrées : sans frise ni pastille colorée, date suspendue muette à droite. */
.tpl-sobre .entry{margin:3mm 0 5mm;border:none}
.tpl-sobre .entry::before,.tpl-sobre .entry::after{display:none}
.tpl-sobre .entry .et-title{font-size:12.5px;font-weight:700;color:#161320}
.tpl-sobre .entry .et-date{background:none;color:#6a6580;padding:0;font-size:10.5px;font-weight:600;
  font-variant-numeric:tabular-nums}
.tpl-sobre .entry .et-org{color:#3b3750;font-weight:600;font-size:11.5px}
.tpl-sobre .entry .et-desc{font-size:11px;line-height:1.6;color:#33304a}
.tpl-sobre .proj{margin:3mm 0 3.5mm}
.tpl-sobre .proj .pj-name{font-size:12px;font-weight:700}
.tpl-sobre .proj .pj-link{color:#6a6580;font-weight:500}

/* ============================================================
   MODÈLE 6  « Horizon » (conçu pour 2 pages, dates en gouttière)
   Aucune colonne latérale ; bande de synthèse = 1er bloc (page 1).
   Colonne unique qui coule → 2+ pages sans dégradation.
   NB : padding de .sheet-main inchangé (14 mm) pour la mesure.
   ============================================================ */
.tpl-horizon{color:#1c1831}
.tpl-horizon .hz-head{display:flex;align-items:center;gap:8mm;padding-bottom:6mm;border-bottom:3px solid var(--accent)}
.tpl-horizon .hz-id{flex:1;min-width:0}
.tpl-horizon .hz-name{margin:0;font-size:31px;font-weight:800;letter-spacing:-.6px;line-height:1.02}
.tpl-horizon .hz-role{margin:3mm 0 0;font-size:12.5px;font-weight:600;letter-spacing:2.5px;
  text-transform:uppercase;color:var(--accent)}
.tpl-horizon .hz-contacts{flex:none;max-width:62mm;font-size:10.5px;color:#4a465c}
.tpl-horizon .hz-contacts .contact-row{margin-bottom:2.2mm;color:#4a465c}
.tpl-horizon .hz-contacts .ci svg{fill:var(--accent)}
.tpl-horizon .hz-photo{width:24mm;height:24mm;flex:none;border-radius:12px;
  background:#f1effb center/cover no-repeat;border:2px solid var(--accent);
  display:grid;place-items:center;font-size:20px;font-weight:700;color:var(--accent)}

/* Bande de synthèse — 1er bloc → page 1, 3 cellules (compétences / outils / langues). */
.tpl-horizon .hz-band{display:grid;grid-template-columns:repeat(3,1fr);gap:6mm;
  padding:5mm 0 6mm;margin-bottom:2mm;border-bottom:1px solid var(--line)}
.tpl-horizon .hz-cell h3{margin:0 0 2.5mm;font-size:9.5px;font-weight:700;letter-spacing:1.6px;
  text-transform:uppercase;color:#8b8799}
.tpl-horizon .hz-cell .tag{background:#eef0f4;                          /* repli anciens navigateurs */
  background:color-mix(in srgb,var(--accent) 10%,#fff);color:var(--accent);font-weight:600;font-size:10px}
.tpl-horizon .hz-lang{display:inline-flex;align-items:baseline;gap:4px;font-size:10.5px;
  margin:0 4mm 1.5mm 0;color:#33304a}
.tpl-horizon .hz-lang b{color:var(--accent);font-size:9.5px}

/* Sections du flux : titre pleine largeur, entrées en gouttière de dates. */
.tpl-horizon .hz-h{margin-top:7mm}
.tpl-horizon .hz-h>h2{margin:0 0 4mm;font-size:11.5px;font-weight:800;letter-spacing:1.8px;
  text-transform:uppercase;color:var(--accent);display:flex;align-items:center;gap:8px}
.tpl-horizon .hz-h>h2::after{content:"";flex:1;height:1.5px;background:var(--line)}

/* Gouttière de dates (identité du modèle) : date à gauche, contenu à droite. */
.tpl-horizon .entry{display:grid;grid-template-columns:26mm 1fr;gap:0 6mm;padding:0;margin-bottom:5.5mm}
.tpl-horizon .entry::before,.tpl-horizon .entry::after{display:none}
.tpl-horizon .entry .et-top{display:contents}
.tpl-horizon .entry .et-date{grid-column:1;grid-row:1;align-self:start;background:none;color:#6a6580;
  padding:0;font-size:10.5px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.5;white-space:normal}
.tpl-horizon .entry .et-title{grid-column:2;grid-row:1;font-size:13px;font-weight:700;margin:0}
.tpl-horizon .entry .et-org{grid-column:2;font-size:11.5px;font-weight:600;color:var(--accent);margin:1mm 0 0}
.tpl-horizon .entry .et-desc{grid-column:2;font-size:11px;line-height:1.58;color:#33304a;margin:2mm 0 0}
.tpl-horizon .proj{display:grid;grid-template-columns:26mm 1fr;gap:0 6mm;margin-bottom:3.5mm}
.tpl-horizon .proj .pj-top{display:contents}
.tpl-horizon .proj .pj-link{grid-column:1;font-size:10px;color:#6a6580;word-break:break-all}
.tpl-horizon .proj .pj-name{grid-column:2;font-size:12px;font-weight:700;margin:0}
.tpl-horizon .proj .pj-desc{grid-column:2;font-size:11px;line-height:1.55;margin:1.5mm 0 0}

/* ============================================================
   MODÈLE 7  « Terre » (conventions Afrique centrale)
   Paginateur sur-mesure : entête pleine largeur (fond chaud) page 1,
   corps mono-colonne (Situation, Références, sections) qui coule ensuite.
   Le padding est porté par .tr-body (mesuré à p.w-28), pas .sheet-main.
   ============================================================ */
.tpl-terre .sheet{background:#fdfcfa;color:#1e1a16}
.sheet.tr-p1,.sheet.tr-pN{display:block}            /* annule la grille 67mm/1fr des feuilles */
.tpl-terre .tr-head{display:flex;align-items:center;gap:8mm;padding:14mm 14mm 11mm;
  background:#f6f1ec;                                /* repli anciens navigateurs */
  background:linear-gradient(100deg,color-mix(in srgb,var(--accent) 14%,#fdfcfa),#fdfcfa 70%);
  border-bottom:3px solid var(--accent)}
.tpl-terre .tr-photo{width:32mm;height:38mm;flex:none;border-radius:4px;
  background:#efeae3 center/cover no-repeat;border:3px solid #fff;box-shadow:0 4px 14px rgba(30,26,22,.16);
  display:grid;place-items:center;font-size:28px;font-weight:700;color:var(--accent)}
.tpl-terre .tr-id{flex:1;min-width:0}
.tpl-terre .tr-name{margin:0;font-size:30px;font-weight:800;letter-spacing:-.5px;line-height:1.05;color:#161210}
.tpl-terre .tr-role{margin:3mm 0 0;font-size:12px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--accent)}
.tpl-terre .tr-contacts{display:grid;grid-template-columns:1fr 1fr;gap:1.5mm 6mm;margin-top:5mm}
.tpl-terre .tr-contacts .contact-row{margin:0;font-size:10.5px;color:#3a332c}
.tpl-terre .tr-contacts .ci svg{fill:var(--accent)}

.tpl-terre .tr-body{padding:6mm 14mm 12mm}

/* Titres de section aplatis (soulignés d'un filet d'accent). */
.tpl-terre .tr-h{margin-top:7mm}
.tpl-terre .tr-h>h2{display:inline-block;margin:0 0 4mm;padding-bottom:2mm;font-size:11px;font-weight:800;
  letter-spacing:2px;text-transform:uppercase;color:#161210;border-bottom:2.5px solid var(--accent)}

/* Bloc Situation : liste de définitions en 2 colonnes, filet d'accent. */
.tpl-terre .tr-sitgrid{display:grid;grid-template-columns:1fr 1fr;gap:2.5mm 8mm;
  background:#f6f3ee;border-left:3px solid var(--accent);padding:4mm 5mm;border-radius:0 6px 6px 0}
.tpl-terre .tr-sit{display:flex;gap:3mm;font-size:11px;line-height:1.4}
.tpl-terre .tr-sit dt{margin:0;font-weight:700;color:#6b6256;min-width:26mm}
.tpl-terre .tr-sit dd{margin:0;color:#2a251f}

/* Bloc Références. */
.tpl-terre .tr-refgrid{display:grid;grid-template-columns:1fr 1fr;gap:4mm 8mm}
.tpl-terre .tr-ref-n{margin:0;font-size:11.5px;font-weight:700}
.tpl-terre .tr-ref-m{margin:.8mm 0 0;font-size:10.5px;color:#6b6256}
.tpl-terre .tr-ref-c{margin:.8mm 0 0;font-size:10.5px;color:var(--accent);font-weight:600}

/* Entrées : frise à pastille d'accent, date en badge plein. */
.tpl-terre .entry{padding:0 0 0 6mm;margin:3mm 0 5mm;border-left:2px solid #e4ded4;position:relative}
.tpl-terre .entry::before{content:"";position:absolute;left:-5px;top:3px;width:8px;height:8px;
  border-radius:50%;background:var(--accent);border:none}
.tpl-terre .entry::after{display:none}
.tpl-terre .entry .et-date{background:var(--accent);color:#fff;border-radius:3px;padding:1.5px 7px;font-size:10px}
.tpl-terre .tag{background:#f0ebe3;color:#4a4238;font-weight:600;border-radius:4px;font-size:10.5px}
.tpl-terre .dot{background:#e0d8cc}
.tpl-terre .dot.on{background:var(--accent)}
.tpl-terre .profile-txt{font-size:11.5px;line-height:1.65;color:#2a251f}
.tpl-terre .proj{margin:3mm 0 3.5mm}

/* ============================================================
   LETTRE DE MOTIVATION  assortie au CV (accent + police partagés)
   ============================================================ */
.page.letter-doc{display:block;grid-template-columns:none;padding:20mm;background:#fff;color:var(--ink);
  font-size:12px;line-height:1.65}
.letter-doc .lt-head{display:flex;justify-content:space-between;align-items:flex-end;gap:10mm;
  border-bottom:2px solid var(--accent);padding-bottom:5mm;margin-bottom:9mm}
.letter-doc .lt-name{margin:0;font-size:20px;font-weight:800;letter-spacing:-.2px}
.letter-doc .lt-role{margin:1.5mm 0 0;font-size:11px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--accent)}
.letter-doc .lt-contacts{margin:0;font-size:10px;color:var(--muted);text-align:right;max-width:82mm}
.letter-doc .lt-meta{display:flex;justify-content:space-between;align-items:flex-start;gap:10mm;margin-bottom:8mm;font-size:11.5px}
.letter-doc .lt-to{font-weight:600;white-space:pre-line}
.letter-doc .lt-place{color:var(--muted);white-space:nowrap}
.letter-doc .lt-subject{font-weight:700;margin:0 0 6mm}
.letter-doc .lt-body p{margin:0 0 4mm;text-align:justify}
.letter-doc .lt-empty{color:var(--muted);font-style:italic;text-align:left}
.letter-doc .lt-closing{margin:6mm 0 0}
.letter-doc .lt-sign{margin:9mm 0 0;font-weight:700;text-align:right}

/* ============================================================
   PAGINATION A4  évite de couper un bloc entre deux pages (PDF)
   + repères visuels de coupure dans l'aperçu écran (masqués à l'impression).
   ============================================================ */
/* Insécables : uniquement les ÉLÉMENTS atomiques (une expérience, un projet, une
   ligne). Les SECTIONS, elles, peuvent se poursuivre sur la page suivante → la
   page 1 se remplit vraiment (plus de demi-page vide quand une section saute). */
.entry,.proj,.lng,.li-item{break-inside:avoid;page-break-inside:avoid}
/* Un titre de section ne reste jamais seul en bas de page : il colle à son 1er bloc. */
.main-block>h2,.tpl-creative .blk>h2,.tpl-onyx .onx-block>h2,.tpl-onyx .onx-sblock>h3,
.tpl-ats .ats-sec>h2,.side-block>h4{break-after:avoid;page-break-after:avoid}
/* Le repère de coupure de l'aperçu est désormais dessiné hors de #page (voir
   drawPageBreaks dans main.js) : compteur de pages fiable + lignes numérotées. */

/* Densité  ajuste l'espacement (et un peu la taille) pour tenir sur 1 page ou aérer */
.dens-compact .main-block,.dens-compact .onx-block{margin-top:6mm}
.dens-compact .side-block,.dens-compact .onx-sblock,.dens-compact .blk{margin-bottom:5mm}
.dens-compact .ats-sec{margin-bottom:3.5mm}
.dens-compact .entry{margin-bottom:4mm}
.dens-compact .proj{margin-bottom:3mm}
.dens-compact .et-desc,.dens-compact .profile-txt,.dens-compact .pj-desc{font-size:11px;line-height:1.42}
.dens-compact .li-item,.dens-compact .contact-row{margin-bottom:2.4mm}
.dens-airy .main-block,.dens-airy .onx-block{margin-top:12mm}
.dens-airy .side-block,.dens-airy .onx-sblock,.dens-airy .blk{margin-bottom:10mm}
.dens-airy .ats-sec{margin-bottom:7mm}
.dens-airy .entry{margin-bottom:8.5mm}
.dens-airy .proj{margin-bottom:6mm}
.dens-airy .et-desc,.dens-airy .profile-txt,.dens-airy .pj-desc{line-height:1.72}
.dens-airy .li-item,.dens-airy .contact-row{margin-bottom:4.5mm}

/* ---------- Impression (repli navigateur) ---------- */
@page{size:A4;margin:0}
@media print{
  .rail,.panel,.topbar,.stagebar{display:none!important}
  .app{display:block;height:auto;overflow:visible}
  .stage{padding:0;background:#fff;display:block;overflow:visible}
  .zoomwrap{display:block}
  .page{box-shadow:none;width:210mm;min-height:297mm;transform:none!important;margin:0}
  *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
}

/* ============================================================
   Solution B — Feuilles paginées (.sheet)   [DORMANT au Lot 2]
   Ces règles ne ciblent que des éléments .sheet, ABSENTS du DOM tant que
   render() n'appelle pas paginateInto() (Lot 3+). #pageHost n'est
   volontairement PAS restylé ici (ferait bouger la page unique actuelle).
   ============================================================ */
.sheet{
  width:var(--sw,210mm);
  height:var(--sh,297mm);              /* height, PAS min-height : feuille de hauteur fixe */
  background:#fff;overflow:hidden;position:relative;
  display:grid;grid-template-columns:67mm 1fr;
  color:var(--ink);
  box-shadow:0 12px 40px rgba(28,24,49,.18);
  font-family:var(--font,'Poppins',system-ui,sans-serif);
  break-after:page;page-break-after:always;
}
.sheet:last-child{break-after:auto;page-break-after:auto}

/* Pleine largeur : pages de continuation ET feuilles sans colonne latérale (ex. ATS). */
.sheet--cont,.sheet--full{grid-template-columns:1fr}

/* Colonne latérale (page 1). Base « classique » ; affinée par modèle aux Lots 5–7. */
.sheet-side{background:var(--accent);color:#fff}

/* padding = MARGIN du moteur (14 mm haut/bas) pour que aperçu et découpe coïncident. */
.sheet-main{padding:14mm 12mm}
.sheet-main--full{padding:14mm 14mm}

/* Bandeau de continuation (pages 2+). */
.sheet-cont{
  display:flex;align-items:baseline;gap:8px;
  border-bottom:1.5px solid var(--accent);
  padding-bottom:3mm;margin-bottom:7mm;
  font-size:10.5px;color:var(--muted)}
.sheet-cont span:first-child{font-weight:700;color:var(--ink)}
.sheet-num{margin-left:auto;font-weight:600;color:var(--accent)}

/* Pile de feuilles : conteneur mis à l'échelle par le zoom (comme #page en legacy). */
.page-stack{display:flex;flex-direction:column;gap:14px;width:max-content;transform-origin:top left}

/* Impression : les feuilles sont de VRAIES pages (padding répété par feuille).
   La pile passe en block pour que break-after:page fragmente correctement.
   @page{size:A4;margin:0} est déjà défini plus haut (repli navigateur). */
@media print{
  .page-stack{display:block;gap:0;width:auto}
  .sheet{box-shadow:none;margin:0;transform:none!important}
}
