/* Identité visuelle de chaque modèle : couleurs, typographies, variantes de disposition.
   Polices libres embarquées (fonts.css, licence OFL) avec repli sur les polices système : aucune
   ressource externe. Les couleurs passent par des variables (--accent, --soft, --deep, --side-bg…)
   que les palettes remplacent via le CSSOM. Contrastes texte/fond ≥ 4,5:1. */

/* ——— Famille une colonne (ATS) ——— */

/* Sobre : sans empattement, titres soulignés, bleu nuit */
.tpl-sobre { --accent: #1f3a5f; --accent-2: #33475b; --font: Inter, "Segoe UI", Arial, sans-serif; }

/* Classique : Georgia, petites capitales, noir et gris */
.tpl-classique {
  --accent: #222; --accent-2: #444; --rule: #888;
  --font: "Source Serif 4", Georgia, Cambria, "Times New Roman", Times, serif;
}
.tpl-classique .cv-name { font-variant: small-caps; letter-spacing: 0.04em; font-weight: 400; font-size: 24pt; }
.tpl-classique .cv-h { font-variant: small-caps; text-transform: none; font-size: 13pt; letter-spacing: 0.05em; border-bottom: 0.25mm solid #888; font-weight: 400; }
.tpl-classique .cv-item-sub { font-style: italic; font-weight: 400; }

/* Moderne ATS : bleu pétrole, bandeau fin sous les titres */
.tpl-moderne-ats { --accent: #0b5563; --accent-2: #0b5563; --soft: #e3f0f2; --deep: #083f4a; --font: Lato, "Segoe UI", "Helvetica Neue", Arial, sans-serif; }
.tpl-moderne-ats .cv-name { color: #111; font-size: 24pt; font-weight: 800; }
.tpl-moderne-ats .cv-title { color: var(--accent); }
.tpl-moderne-ats .cv-h { border-bottom: none; background: var(--soft); color: var(--deep); padding: 1mm 2mm; letter-spacing: 0.08em; }

/* Compact : dense, pour tenir sur une page */
.tpl-compact { --fs: 9.2pt; --gap: 3mm; --accent: #2d3748; --accent-2: #2d3748; --font: Inter, Calibri, Carlito, "Segoe UI", Arial, sans-serif; line-height: 1.28; }
.tpl-compact .cv-name { font-size: 18pt; color: #111; }
.tpl-compact .cv-title { font-size: 11pt; }
.tpl-compact .cv-h { font-size: 10pt; margin-bottom: 1.4mm; border-bottom-width: 0.25mm; }
.tpl-compact .cv-item { margin-bottom: 1.8mm; }
.tpl-compact .cv-item-title { font-size: 9.6pt; }

/* Exécutif : nom en grand, filets bordeaux, Cambria */
.tpl-executif { --accent: #6d1a2a; --accent-2: #3a3a3a; --font: Merriweather, Cambria, "Book Antiqua", Georgia, serif; --font-head: Montserrat, "Franklin Gothic Medium", "Segoe UI", Arial, sans-serif; --fs: 9.6pt; }
.tpl-executif .cv-head { border-bottom: 1.2mm solid var(--accent); padding-bottom: 3mm; }
.tpl-executif .cv-name { font-size: 28pt; color: #1b1b1b; text-transform: uppercase; letter-spacing: 0.03em; }
.tpl-executif .cv-title { color: var(--accent); font-size: 13pt; }
.tpl-executif .cv-h { border-bottom: 0.25mm solid var(--accent); }

/* Élégant : centré, Palatino, filets fins */
.tpl-elegant { --accent: #3b3b58; --accent-2: #3b3b58; --rule: #b7b7c9; --font: "EB Garamond", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif; --fs: 10.8pt; }
.tpl-elegant .cv-head { flex-direction: column; text-align: center; }
.tpl-elegant .cv-name { font-weight: 400; font-size: 26pt; letter-spacing: 0.08em; }
.tpl-elegant .cv-title { font-style: italic; font-weight: 400; }
.tpl-elegant .cv-h { text-align: center; border-bottom: none; font-weight: 400; letter-spacing: 0.2em; font-size: 11pt; }
.tpl-elegant .cv-h::after { content: ""; display: block; width: 18mm; margin: 1.2mm auto 0; border-bottom: 0.3mm solid var(--rule); }

/* ——— Europass ——— */
.tpl-europass { --accent: #0e47cb; --accent-2: #0e47cb; --rule: #0e47cb; --font: Arial, "Helvetica Neue", Helvetica, sans-serif; }
.tpl-europass::before { content: "europass"; display: block; font-weight: 700; font-size: 13pt; color: var(--accent); letter-spacing: 0.02em; margin-bottom: 3mm; }
.tpl-europass .cv-name { color: #1b1b1b; font-size: 20pt; }
.tpl-europass .cv-head { align-items: flex-start; }
.tpl-europass .cv-photo { border-radius: 0; width: 28mm; height: 34mm; }
.tpl-europass .cv-contact-list { display: flex; flex-wrap: wrap; gap: 1mm 6mm; margin-top: 2mm; }
.tpl-europass .cv-c-label { display: inline; text-transform: none; letter-spacing: 0; color: #1b1b1b; }
.tpl-europass .cv-c-label::after { content: " :"; }
.tpl-europass .cv-h { text-transform: uppercase; font-size: 11pt; border-bottom: 0.3mm solid var(--accent); }
.tpl-europass .cv-date { order: -1; color: var(--accent); }
.tpl-europass .cv-item-head { justify-content: flex-start; flex-direction: column; gap: 0; }

/* ——— International ——— */
.tpl-us-resume { --accent: #111; --accent-2: #333; --rule: #111; --font: "Source Serif 4", "Times New Roman", Times, Georgia, serif; --fs: 10.5pt; }
.tpl-us-resume .cv-head { justify-content: center; text-align: center; }
.tpl-us-resume .cv-name { font-size: 20pt; text-transform: uppercase; letter-spacing: 0.06em; }
.tpl-us-resume .cv-title { font-weight: 400; }
.tpl-us-resume .cv-h { font-size: 11pt; border-bottom: 0.3mm solid var(--accent); letter-spacing: 0.08em; }
.tpl-us-resume .cv-item-sub { font-style: italic; font-weight: 400; color: #222; }

.tpl-uk-cv { --accent: #00386b; --accent-2: #00386b; --font: Arial, "Helvetica Neue", Helvetica, sans-serif; }
.tpl-uk-cv .cv-name { font-size: 22pt; }
.tpl-uk-cv .cv-h { text-transform: none; letter-spacing: 0; font-size: 13pt; border-bottom-width: 0.25mm; }

/* ——— Famille colonne latérale (créatifs) ——— */
.fam-sidebar .cv-side { background: var(--side-bg); padding: 5mm 4.5mm; border-radius: 1.5mm; }
.fam-sidebar .cv-side .cv-h { border-bottom-color: currentColor; color: inherit; font-size: 10pt; }
.fam-sidebar .cv-side .cv-tags li { border-color: currentColor; }
.fam-sidebar .cv-side .cv-c-label, .fam-sidebar .cv-side .cv-lang-level, .fam-sidebar .cv-side .cv-lang-cert { color: inherit; opacity: 0.9; }

/* Dakar : ocre / terre cuite */
.tpl-dakar { --accent: #8a3b12; --accent-2: #8a3b12; --side-bg: #fbeee4; --side-ink: #4a1f08; --font: "Trebuchet MS", "Segoe UI", sans-serif; }
.tpl-dakar .cv-head { border-bottom: 1mm solid var(--accent); padding-bottom: 3mm; }

/* Océan : colonne à droite, bleu */
.tpl-ocean { --accent: #0b4f8a; --accent-2: #0b4f8a; --side-bg: #e6f1fa; --side-ink: #0a2f52; --font: Verdana, "Segoe UI", sans-serif; --fs: 9.3pt; }
.tpl-ocean .cv-cols { grid-template-columns: 1fr 60mm; }
.tpl-ocean .cv-name { font-size: 24pt; }
.tpl-ocean .cv-h { border-bottom: none; border-left: 1.2mm solid var(--accent); padding-left: 2mm; }

/* Ardoise : colonne sombre pleine hauteur, nom dans la colonne */
.tpl-ardoise { --accent: #2f3e4e; --accent-2: #2f3e4e; --side-bg: #2f3e4e; --side-ink: #ffffff; --font: Inter, "Segoe UI", system-ui, sans-serif; }
.tpl-ardoise .cv-cols { min-height: 273mm; align-items: stretch; }
.tpl-ardoise .cv-side { border-radius: 0; }
.tpl-ardoise .cv-side .cv-name { color: #fff; font-size: 19pt; }
.tpl-ardoise .cv-side .cv-title { color: #fff; opacity: 0.92; font-size: 11pt; }
.tpl-ardoise .cv-side .cv-head { display: block; margin-bottom: var(--gap); }
.tpl-ardoise .cv-side a { color: #fff; }

/* Savane : vert, typographie humaniste */
.tpl-savane { --accent: #2f5d34; --accent-2: #2f5d34; --side-bg: #2f5d34; --side-ink: #ffffff; --font: Candara, "Gill Sans", "Gill Sans MT", Calibri, sans-serif; --fs: 10.2pt; }
.tpl-savane .cv-cols { grid-template-columns: 58mm 1fr; min-height: 273mm; align-items: stretch; }
.tpl-savane .cv-side { border-radius: 0 6mm 0 0; }
.tpl-savane .cv-side .cv-head { display: block; margin-bottom: var(--gap); }
.tpl-savane .cv-side .cv-name { color: #fff; font-size: 20pt; }
.tpl-savane .cv-side .cv-title { color: #fff; opacity: 0.92; }
.tpl-savane .cv-main .cv-h { border-bottom: 0.6mm dotted var(--accent); }

/* ——— Famille bandeau ——— */
.cv-banner { margin: -12mm -12mm var(--gap); padding: 9mm 12mm; background: var(--accent); color: #fff; }
.paper-letter .cv-banner { margin: -0.5in -0.5in var(--gap); padding: 9mm 0.5in; }
.cv-banner .cv-name, .cv-banner .cv-title, .cv-banner .cv-contact, .cv-banner a { color: #fff; }
.cv-banner .cv-sep { color: rgba(255, 255, 255, 0.7); }
.cv-banner .cv-photo { border: 0.8mm solid #fff; }
@media print {
  .cv-banner, .paper-letter .cv-banner { margin: 0 0 var(--gap); padding: 6mm; border-radius: 1.5mm; }
}

/* Frise : indigo, frise chronologique */
.tpl-frise { --accent: #3730a3; --accent-2: #3730a3; --rule: #c7c9f0; --font: Inter, "Segoe UI", system-ui, sans-serif; }
.tpl-frise .cv-s-experiences .cv-item, .tpl-frise .cv-s-education .cv-item, .tpl-frise .cv-s-volunteering .cv-item {
  position: relative; border-left: 0.6mm solid var(--rule); padding-left: 5mm; margin-left: 1.5mm; padding-bottom: 1.5mm; margin-bottom: 0;
}
.tpl-frise .cv-s-experiences .cv-item::before, .tpl-frise .cv-s-education .cv-item::before, .tpl-frise .cv-s-volunteering .cv-item::before {
  content: ""; position: absolute; left: -1.9mm; top: 1.2mm; width: 3.2mm; height: 3.2mm; border-radius: 50%; background: var(--accent);
}
.tpl-frise .cv-h { border-bottom: none; }

/* Horizon : corail, deux colonnes sous le bandeau */
.tpl-horizon { --accent: #a3341f; --accent-2: #a3341f; --side-bg: #fdf0ec; --side-ink: #1b1b1b; --font: Montserrat, "Century Gothic", "Segoe UI", sans-serif; --fs: 9.6pt; }
.tpl-horizon .cv-cols { grid-template-columns: 1fr 58mm; }
.tpl-horizon .cv-side { background: var(--side-bg); padding: 4mm; border-radius: 1.5mm; }
.tpl-horizon .cv-h { border-bottom-width: 0.25mm; }

/* Minimal : beaucoup de blanc, noir et or */
.tpl-minimal { --accent: #111; --accent-2: #7a5a12; --rule: #ddd; --font: "Helvetica Neue", Helvetica, Arial, sans-serif; --gap: 6mm; }
.tpl-minimal .cv-banner { background: #fff; color: #111; padding-top: 12mm; padding-bottom: 4mm; border-bottom: 0.6mm solid #b08a2e; }
.tpl-minimal .cv-banner .cv-name { color: var(--accent); font-size: 30pt; font-weight: 300; letter-spacing: 0.02em; }
.tpl-minimal .cv-banner .cv-title { color: var(--accent-2); font-weight: 400; text-transform: uppercase; letter-spacing: 0.18em; font-size: 10pt; }
.tpl-minimal .cv-banner .cv-contact, .tpl-minimal .cv-banner a { color: #444; }
.tpl-minimal .cv-banner .cv-sep { color: #b08a2e; }
.tpl-minimal .cv-h { border-bottom: none; font-weight: 400; letter-spacing: 0.25em; font-size: 10pt; color: var(--accent-2); }
.tpl-minimal .cv-tags li { border: none; padding: 0; }
.tpl-minimal .cv-tags li + li::before { content: "/"; margin-right: 1.2mm; color: #b08a2e; }

/* ——— Nouveaux modèles (cycle 2) ——— */

/* Teranga : Lato, pastille de couleur devant les titres */
.tpl-teranga { --accent: #0f6b5c; --accent-2: #0f6b5c; --soft: #e2f3ef; --font: Lato, "Segoe UI", Arial, sans-serif; --fs: 10.2pt; }
.tpl-teranga .cv-name { color: #1b1b1b; font-size: 24pt; }
.tpl-teranga .cv-title { color: var(--accent); }
.tpl-teranga .cv-h { border-bottom: 0.3mm solid var(--soft); display: flex; align-items: center; gap: 2mm; }
.tpl-teranga .cv-h::before { content: ""; flex: none; width: 3mm; height: 3mm; border-radius: 50%; background: var(--accent); }

/* Colonne de dates à gauche (Chronologique, Registre, Lebenslauf) : grille interne à chaque élément */
.dates-left .cv-item { display: grid; grid-template-columns: 30mm 1fr; column-gap: 5mm; }
.dates-left .cv-item-head { display: contents; }
.dates-left .cv-item-title { grid-column: 2; grid-row: 1; }
.dates-left .cv-item .cv-date { grid-column: 1; grid-row: 1 / span 2; white-space: normal; font-weight: 600; color: var(--accent); }
.dates-left .cv-item-sub, .dates-left .cv-item .cv-desc { grid-column: 2; }
.dates-left .cv-item:not(:has(.cv-date)) > * { grid-column: 2; }

/* Chronologique : Inter, titres en capitales fines */
.tpl-chronologique { --accent: #1f3a5f; --accent-2: #33475b; --font: Inter, "Segoe UI", Arial, sans-serif; }
.tpl-chronologique .cv-h { border-bottom-width: 0.25mm; }

/* Registre : empattements, filet double sous le nom */
.tpl-registre { --accent: #333333; --accent-2: #444; --font: "Source Serif 4", Georgia, "Times New Roman", serif; }
.tpl-registre .cv-head { border-bottom: 0.9mm double var(--accent); padding-bottom: 3mm; }
.tpl-registre .cv-name { font-weight: 400; font-size: 24pt; letter-spacing: 0.03em; }
.tpl-registre .cv-h { font-variant: small-caps; text-transform: none; font-weight: 400; font-size: 13pt; border-bottom-width: 0.2mm; }

/* Académique et Chercheur : CV long, publications numérotées */
.fam-academic .cv-pubs { list-style: decimal; padding-left: 6mm; }
.fam-academic .cv-pubs li { padding-left: 1mm; margin-bottom: 1.2mm; }
.tpl-academique { --accent: #00386b; --accent-2: #00386b; --font: "Source Serif 4", Georgia, serif; --font-head: Inter, "Segoe UI", Arial, sans-serif; }
.tpl-academique .cv-h { font-size: 11pt; border-bottom-width: 0.25mm; }
.tpl-chercheur { --accent: #333333; --accent-2: #333333; --rule: #999; --font: "EB Garamond", Garamond, Georgia, serif; --fs: 11pt; }
.tpl-chercheur .cv-head { flex-direction: column; text-align: center; }
.tpl-chercheur .cv-name { font-weight: 400; font-size: 24pt; letter-spacing: 0.06em; }
.tpl-chercheur .cv-title { font-style: italic; font-weight: 400; }
.tpl-chercheur .cv-h { font-variant: small-caps; text-transform: none; font-weight: 400; font-size: 13pt; letter-spacing: 0.08em; border-bottom: 0.2mm solid var(--rule); }

/* Fonctionnel et Reconversion : compétences en blocs, parcours condensé */
.fam-functional .cv-skill-block { margin-bottom: 2.4mm; }
.fam-functional .cv-skill-block .cv-skill-name { font-size: 10.4pt; color: var(--accent); margin-bottom: 0.6mm; }
.fam-functional .cv-skill-block .cv-desc { margin-top: 0; }
.cv-timeline-compact li { display: flex; flex-wrap: wrap; gap: 0 2mm; }
.cv-timeline-compact .cv-date { margin-left: auto; }
.tpl-fonctionnel { --accent: #0f6b5c; --accent-2: #0f6b5c; --font: Inter, "Segoe UI", Arial, sans-serif; }
.tpl-reconversion { --accent: #3730a3; --accent-2: #3730a3; --soft: #ecebfb; --font: Lato, "Segoe UI", Arial, sans-serif; }
.tpl-reconversion .cv-s-skills { background: var(--soft); padding: 3mm 4mm; border-radius: 1.5mm; }
.tpl-reconversion .cv-s-skills .cv-h { border-bottom-color: var(--accent); }

/* Étudiant et Premier emploi */
.tpl-etudiant { --accent: #0b4f8a; --accent-2: #0b4f8a; --font: Lato, "Segoe UI", Arial, sans-serif; --fs: 10.2pt; }
.tpl-etudiant .cv-h { border-bottom: 0.8mm solid var(--accent); display: inline-block; padding-right: 3mm; }
.tpl-premier-emploi { --accent: #3730a3; --accent-2: #3730a3; --soft: #ecebfb; --deep: #211c6b; --font: Montserrat, "Segoe UI", Arial, sans-serif; --fs: 9.6pt; }
.cv-head-soft { background: var(--soft); border-radius: 2mm; padding: 5mm 6mm; }
.tpl-premier-emploi .cv-name { color: var(--deep); }
.tpl-premier-emploi .cv-h { border-bottom-width: 0.25mm; }

/* Métiers et Technicien : texte plus grand, savoir-faire en tête */
.tpl-metiers { --accent: #8a3b12; --accent-2: #8a3b12; --font: Lato, "Segoe UI", Arial, sans-serif; --fs: 10.6pt; }
.tpl-metiers .cv-name { font-size: 25pt; color: #1b1b1b; }
.tpl-metiers .cv-title { color: var(--accent); font-size: 14pt; }
.tpl-metiers .cv-h { font-size: 12.5pt; }
.tpl-technicien { --accent: #0b5563; --accent-2: #0b5563; --font: Inter, "Segoe UI", Arial, sans-serif; }
.tpl-technicien .cv-h { border-bottom: none; border-left: 1.4mm solid var(--accent); padding-left: 2.4mm; }

/* Québec et Canada (anglais) : Letter, sans photo */
.tpl-quebec { --accent: #00386b; --accent-2: #00386b; --font: Lato, Arial, "Helvetica Neue", sans-serif; }
.tpl-quebec .cv-h { border-bottom-width: 0.25mm; }
.tpl-canada-en { --accent: #9b2c2c; --accent-2: #333; --font: Inter, Arial, "Helvetica Neue", sans-serif; }
.tpl-canada-en .cv-head { justify-content: center; text-align: center; }
.tpl-canada-en .cv-h { text-transform: none; letter-spacing: 0; font-size: 12.5pt; border-bottom-width: 0.25mm; }

/* Lebenslauf : photo à droite, coordonnées en liste, informations personnelles, lieu et date */
.tpl-lebenslauf, .tpl-lebenslauf-moderne { --font: Inter, Arial, "Helvetica Neue", sans-serif; }
.tpl-lebenslauf { --accent: #333333; --accent-2: #444; }
.tpl-lebenslauf-moderne { --accent: #0b5563; --accent-2: #0b5563; }
.fam-national.dates-left .cv-head { flex-direction: row-reverse; align-items: flex-start; }
.fam-national.dates-left .cv-photo { border-radius: 0; width: 32mm; height: 40mm; }
.fam-national.dates-left .cv-contact-list { margin-top: 2mm; }
.fam-national.dates-left .cv-contact-list li, .cv-personal li { display: grid; grid-template-columns: 30mm 1fr; column-gap: 5mm; }
.fam-national.dates-left .cv-c-label, .cv-personal .cv-c-label { font-size: 9.3pt; text-transform: none; letter-spacing: 0; }
.tpl-lebenslauf .cv-h { text-transform: none; letter-spacing: 0; font-size: 13pt; }
.tpl-lebenslauf-moderne .cv-head { border-left: 2mm solid var(--accent); padding-left: 4mm; }
.tpl-lebenslauf-moderne .cv-h { border-bottom: none; border-left: 1.2mm solid var(--accent); padding-left: 2mm; text-transform: none; letter-spacing: 0.02em; font-size: 12.5pt; }
.cv-place-date { margin-top: calc(var(--gap) * 2); break-inside: avoid; }
.cv-signature { display: block; margin-top: 8mm; font-weight: 700; }

/* Casamance : colonne droite teintée */
.tpl-casamance { --accent: #0f6b5c; --accent-2: #0f6b5c; --side-bg: #e2f3ef; --side-ink: #093f36; --font: Montserrat, "Segoe UI", sans-serif; --fs: 9.4pt; }
.tpl-casamance .cv-cols { grid-template-columns: 1fr 60mm; }
.tpl-casamance .cv-name { font-size: 24pt; }
.tpl-casamance .cv-head { border-bottom: 0.6mm solid var(--accent); padding-bottom: 3mm; }

/* Infographie : bandeau, colonne teintée, jauges de langue décoratives */
.tpl-infographie { --accent: #0b5563; --accent-2: #0b5563; --side-bg: #e3f0f2; --side-ink: #083f4a; --font: Montserrat, "Segoe UI", sans-serif; --fs: 9.4pt; }
.tpl-infographie .cv-side { background: var(--side-bg); padding: 4mm; border-radius: 1.5mm; }
.tpl-infographie .cv-side .cv-h { color: inherit; border-bottom-color: currentColor; font-size: 10pt; }
.cv-langs-bars li { margin-bottom: 1.6mm; }
.cv-gauge { display: block; height: 1.6mm; margin-top: 0.8mm; border-radius: 0.8mm; background: linear-gradient(to right, var(--accent) var(--lvl, 0%), rgba(0, 0, 0, 0.12) var(--lvl, 0%)); }
.cv-gauge.lvl-A1 { --lvl: 16%; } .cv-gauge.lvl-A2 { --lvl: 33%; } .cv-gauge.lvl-B1 { --lvl: 50%; }
.cv-gauge.lvl-B2 { --lvl: 66%; } .cv-gauge.lvl-C1 { --lvl: 83%; } .cv-gauge.lvl-C2, .cv-gauge.lvl-native { --lvl: 100%; }

/* ————————————————————— Famille « Raffinés » (cycle 7) —————————————————————
   Couleurs d'origine = première palette de chaque modèle (palettes.js). Décors en CSS uniquement
   (filets, dégradés, pseudo-éléments décoratifs) : aucun texte porteur d'information hors du HTML. */
.fam-refined .cv-photo { box-shadow: 0 0 0 0.6mm #fff, 0 0 0 1mm var(--accent); }

/* Prestige : Garamond, capitales espacées, photo centrée, filets or */
.tpl-prestige { --accent: #7a5a12; --accent-2: #45330a; --soft: #f7f0de; --deep: #45330a; --rule: #d8c89c; --font: "EB Garamond", Garamond, Georgia, serif; --fs: 10.6pt; --gap: 3.2mm; }
.tpl-prestige .cv-head { flex-direction: column; text-align: center; gap: 2mm; padding-bottom: 3mm; border-bottom: 0.3mm solid var(--rule); position: relative; }
.tpl-prestige .cv-head::after { content: ""; position: absolute; left: 50%; bottom: -1.1mm; width: 28mm; height: 2mm; transform: translateX(-50%); background: #fff; border-top: 0.3mm solid var(--accent); border-bottom: 0.3mm solid var(--accent); }
.tpl-prestige .cv-name { font-weight: 400; font-size: 23pt; letter-spacing: 0.16em; text-transform: uppercase; color: var(--deep); }
.tpl-prestige .cv-title { font-style: italic; font-weight: 400; color: var(--accent); font-size: 13pt; }
.tpl-prestige .cv-photo { width: 25mm; height: 25mm; }
.tpl-prestige .cv-h { text-align: center; border-bottom: none; font-weight: 400; letter-spacing: 0.22em; font-size: 11.5pt; display: flex; align-items: center; gap: 3mm; }
.tpl-prestige .cv-h::before, .tpl-prestige .cv-h::after { content: ""; flex: 1; height: 0.3mm; background: var(--rule); }
.tpl-prestige .cv-item-title { font-size: 11.5pt; }
.tpl-prestige .cv-item-sub { font-style: italic; font-weight: 400; color: var(--accent); }
.tpl-prestige .cv-summary { text-align: center; font-style: italic; }

/* Corporate : filet en haut de page, photo à droite, titres sobres */
.tpl-corporate { --accent: #00386b; --accent-2: #00386b; --soft: #e5eef7; --deep: #00213f; --font: Inter, "Segoe UI", Arial, sans-serif; }
.tpl-corporate::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4mm; background: var(--accent); }
.tpl-corporate .cv-head { flex-direction: row-reverse; align-items: flex-start; padding-top: 3mm; }
.tpl-corporate .cv-photo { border-radius: 2mm; width: 25mm; height: 30mm; }
.tpl-corporate .cv-name { color: var(--deep); font-size: 24pt; }
.tpl-corporate .cv-title { color: var(--accent); text-transform: uppercase; letter-spacing: 0.08em; font-size: 10.5pt; }
.tpl-corporate .cv-h { border-bottom: none; background: var(--soft); color: var(--deep); padding: 0.6mm 2.5mm; border-left: 1.2mm solid var(--accent); letter-spacing: 0.08em; }
@media print { .tpl-corporate::before { display: none; } .tpl-corporate .cv-head { border-top: 2.5mm solid var(--accent); } }

/* Nordique : titres dans la marge gauche, beaucoup d'air */
.tpl-nordique { --accent: #333333; --accent-2: #555555; --soft: #efefef; --deep: #1a1a1a; --rule: #d9d9d9; --font: Inter, "Segoe UI", Arial, sans-serif; --gap: 3.6mm; }
.tpl-nordique .cv-name { font-weight: 300; font-size: 27pt; color: var(--deep); letter-spacing: -0.01em; }
.tpl-nordique .cv-title { font-weight: 400; color: var(--accent); }
.tpl-nordique .cv-photo { border-radius: 0; width: 26mm; height: 26mm; filter: grayscale(0.15); }
.tpl-nordique .cv-section { display: flow-root; border-top: 0.25mm solid var(--rule); padding-top: 2.5mm; }
/* Titre dans la marge : flottant (flux normal, pagination et impression identiques), contenu en retrait. */
.tpl-nordique .cv-section > .cv-h { float: left; width: 38mm; border: none; padding: 0; margin: 0; font-size: 9pt; letter-spacing: 0.06em; color: var(--accent); overflow-wrap: normal; hyphens: manual; }
.tpl-nordique .cv-section > :not(.cv-h) { margin-left: 43mm; }
.tpl-nordique ul.cv-desc li::before { content: "–"; color: var(--accent); }

/* Santé : bandes claires, lecture nette */
.tpl-sante { --accent: #0f6b5c; --accent-2: #0f6b5c; --soft: #e2f3ef; --deep: #093f36; --font: Lato, "Segoe UI", Arial, sans-serif; --fs: 10.2pt; }
.tpl-sante .cv-head { background: var(--soft); border-radius: 3mm; padding: 3.5mm 5mm; }
.tpl-sante .cv-photo { width: 26mm; height: 26mm; }
.tpl-sante .cv-name { color: var(--deep); font-size: 23pt; }
.tpl-sante .cv-title { color: var(--accent); }
.tpl-sante .cv-h { border-bottom: none; border-radius: 1.5mm; background: var(--soft); color: var(--deep); padding: 0.7mm 3mm; font-size: 10.5pt; }
.tpl-sante .cv-item { padding-left: 3mm; border-left: 0.6mm solid var(--soft); }

/* Atelier : bande verticale en marge, Montserrat */
.tpl-atelier { --accent: #9a3b1b; --accent-2: #9a3b1b; --soft: #fbece4; --deep: #4f1c0b; --font: Lato, "Segoe UI", Arial, sans-serif; --font-head: Montserrat, "Segoe UI", sans-serif; padding-left: 18mm; }
.tpl-atelier::before { content: ""; position: absolute; top: 0; bottom: 0; left: 0; width: 7mm; background: repeating-linear-gradient(180deg, var(--accent) 0 18mm, var(--deep) 18mm 21mm); }
.tpl-atelier .cv-name { font-weight: 800; text-transform: uppercase; font-size: 22pt; letter-spacing: 0.02em; color: var(--deep); }
.tpl-atelier .cv-title { color: var(--accent); }
.tpl-atelier .cv-photo { border-radius: 4mm; width: 26mm; height: 26mm; }
.tpl-atelier .cv-h { border-bottom: 0.8mm solid var(--accent); display: inline-block; padding-right: 6mm; }
@media print { .tpl-atelier { padding-left: 0; } .tpl-atelier::before { display: none; } .tpl-atelier .cv-head { border-left: 3mm solid var(--accent); padding-left: 4mm; } }

/* Gorée : frise avec dates à gauche */
.tpl-goree { --accent: #0b5a73; --accent-2: #0b5a73; --soft: #e3f1f5; --deep: #063846; --rule: #bcd9e2; --font: Inter, "Segoe UI", Arial, sans-serif; --font-head: "Source Serif 4", Georgia, serif; }
.tpl-goree { --gap: 3.2mm; }
.tpl-goree .cv-photo { width: 26mm; height: 26mm; }
.tpl-goree .cv-name { font-weight: 700; font-size: 24pt; color: var(--deep); }
.tpl-goree .cv-title { color: var(--accent); font-weight: 600; }
.tpl-goree .cv-h { border-bottom-width: 0.25mm; text-transform: none; letter-spacing: 0.02em; font-size: 12.5pt; margin-bottom: 1.6mm; }
.tpl-goree.dates-left .cv-item { position: relative; padding-bottom: 1.5mm; margin-bottom: 0; }
.tpl-goree.dates-left .cv-item::before { content: ""; position: absolute; left: 32.3mm; top: 0; bottom: 0; width: 0.5mm; background: var(--rule); }
.tpl-goree.dates-left .cv-item::after { content: ""; position: absolute; left: 31.3mm; top: 1.2mm; width: 2.5mm; height: 2.5mm; border-radius: 50%; background: var(--accent); }
.tpl-goree.dates-left .cv-item > :not(.cv-item-head), .tpl-goree.dates-left .cv-item-title { padding-left: 2mm; }
.tpl-goree.dates-left .cv-item .cv-date { font-size: 9.3pt; }

/* Diplomate : bandeau marine, photo encadrée, empattements */
.tpl-diplomate { --accent: #00386b; --accent-2: #00386b; --soft: #e5eef7; --deep: #00213f; --font: "Source Serif 4", Georgia, serif; --font-head: "Source Serif 4", Georgia, serif; }
.tpl-diplomate .cv-banner { background: var(--deep); background: linear-gradient(90deg, var(--deep), var(--accent)); }
.tpl-diplomate .cv-banner .cv-photo { border-radius: 1mm; width: 25mm; height: 30mm; box-shadow: none; border: 0.8mm solid #fff; }
.tpl-diplomate .cv-name { font-weight: 400; font-size: 25pt; letter-spacing: 0.04em; }
.tpl-diplomate .cv-h { border-bottom: 0.25mm solid var(--accent); font-variant: small-caps; text-transform: none; font-size: 13pt; letter-spacing: 0.05em; }
.tpl-diplomate .cv-h::before { content: ""; display: inline-block; width: 2mm; height: 2mm; margin-right: 2mm; background: var(--accent); transform: rotate(45deg) translateY(-0.4mm); }

/* Sahel : bandeau dégradé terre cuite */
.tpl-sahel { --accent: #9a3b1b; --accent-2: #9a3b1b; --soft: #fbece4; --deep: #4f1c0b; --font: Lato, "Segoe UI", Arial, sans-serif; --font-head: Montserrat, "Segoe UI", sans-serif; }
.tpl-sahel .cv-banner { background: var(--accent); background: linear-gradient(120deg, var(--deep) 0%, var(--accent) 70%); border-bottom: 1.5mm solid var(--soft); }
.tpl-sahel .cv-banner .cv-photo { box-shadow: 0 0 0 1mm #fff; border: none; }
.tpl-sahel .cv-name { font-weight: 800; font-size: 24pt; }
.tpl-sahel .cv-h { border-bottom: none; background: var(--soft); color: var(--deep); padding: 0.7mm 3mm; border-radius: 0 3mm 3mm 0; border-left: 1.5mm solid var(--accent); }

/* Baobab : colonne sable avec motif discret */
.tpl-baobab { --accent: #7c5418; --accent-2: #7c5418; --soft: #f6eedf; --deep: #402a09; --side-bg: #f6eedf; --side-ink: #402a09; --font: Lato, "Segoe UI", Arial, sans-serif; --font-head: "Source Serif 4", Georgia, serif; }
.tpl-baobab .cv-cols { grid-template-columns: 62mm 1fr; min-height: 273mm; align-items: stretch; }
.tpl-baobab .cv-side { background: var(--side-bg); color: var(--side-ink); padding: 6mm 5mm; border-radius: 0 0 8mm 0; background-image: linear-gradient(135deg, color-mix(in srgb, var(--accent) 16%, transparent) 25%, transparent 25%), linear-gradient(225deg, color-mix(in srgb, var(--accent) 16%, transparent) 25%, transparent 25%); background-size: 6mm 6mm; background-repeat: repeat-x; background-position: 0 0, 3mm 0; }
.tpl-baobab .cv-side .cv-photo { display: block; margin: 4mm auto var(--gap); width: 36mm; height: 36mm; }
.tpl-baobab .cv-side .cv-head { display: block; text-align: center; margin-bottom: var(--gap); }
.tpl-baobab .cv-side .cv-name { color: var(--side-ink); font-size: 19pt; }
.tpl-baobab .cv-side .cv-title { color: var(--accent); }
.tpl-baobab .cv-side .cv-h { color: var(--accent); border-bottom: 0.3mm solid var(--accent); font-size: 10pt; }
.tpl-baobab .cv-main .cv-h { border-bottom: 0.3mm solid var(--rule); color: var(--deep); }
.tpl-baobab .cv-main .cv-h::first-letter { color: var(--accent); }
.tpl-baobab .cv-side .cv-tags li { border-color: var(--accent); }

/* Saint-Louis : colonne droite bleu pâle, petites capitales */
.tpl-saint-louis { --accent: #0b5a73; --accent-2: #0b5a73; --soft: #e3f1f5; --deep: #063846; --side-bg: #e3f1f5; --side-ink: #063846; --font: "Source Serif 4", Georgia, serif; --font-head: Inter, "Segoe UI", sans-serif; }
.tpl-saint-louis .cv-cols { grid-template-columns: 1fr 60mm; }
.tpl-saint-louis .cv-side { background: var(--side-bg); color: var(--side-ink); padding: 5mm; border-radius: 30mm 30mm 2mm 2mm; }
.tpl-saint-louis .cv-side .cv-photo { display: block; margin: 0 auto var(--gap); width: 38mm; height: 38mm; }
.tpl-saint-louis .cv-name { color: var(--deep); font-variant: small-caps; font-weight: 600; font-size: 26pt; letter-spacing: 0.04em; }
.tpl-saint-louis .cv-title { color: var(--accent); }
.tpl-saint-louis .cv-h { font-variant: small-caps; text-transform: none; letter-spacing: 0.08em; font-size: 12pt; border-bottom-width: 0.25mm; }
.tpl-saint-louis .cv-side .cv-h { color: var(--deep); border-bottom-color: var(--deep); }

/* Magazine : grand nom, photo portrait, filets épais */
.tpl-magazine { --accent: #111111; --accent-2: #111111; --soft: #f0f0f0; --deep: #000000; --font: Inter, "Segoe UI", Arial, sans-serif; --font-head: "EB Garamond", Georgia, serif; }
.tpl-magazine .cv-head { flex-direction: row-reverse; align-items: flex-end; border-bottom: 1.6mm solid var(--accent); padding-bottom: 4mm; }
.tpl-magazine .cv-photo { border-radius: 0; width: 30mm; height: 38mm; box-shadow: none; }
.tpl-magazine .cv-name { font-size: 34pt; line-height: 0.95; font-weight: 700; color: var(--accent); letter-spacing: -0.01em; }
.tpl-magazine .cv-title { font-family: var(--font); text-transform: uppercase; letter-spacing: 0.2em; font-size: 10pt; font-weight: 600; margin-top: 2mm; }
.tpl-magazine .cv-cols { grid-template-columns: 1fr 52mm; gap: 8mm; }
.tpl-magazine .cv-h { border-bottom: none; border-top: 0.8mm solid var(--accent); padding-top: 1.2mm; font-size: 12pt; }
.tpl-magazine .cv-side .cv-h { border-top-width: 0.3mm; font-size: 10.5pt; }
.tpl-magazine .cv-summary { font-family: var(--font-head); font-size: 12pt; font-style: italic; }

/* Ingénieur : colonne sombre, titres techniques */
.tpl-ingenieur { --accent: #2f3e4e; --accent-2: #2f3e4e; --soft: #eceff3; --deep: #1c2630; --side-bg: #2f3e4e; --side-ink: #ffffff; --font: Inter, "Segoe UI", Arial, sans-serif; --font-head: ui-monospace, "Cascadia Mono", Consolas, "Courier New", monospace; }
.tpl-ingenieur .cv-cols { grid-template-columns: 60mm 1fr; min-height: 273mm; align-items: stretch; }
.tpl-ingenieur .cv-side { background: var(--side-bg); color: var(--side-ink); padding: 6mm 5mm; }
.tpl-ingenieur .cv-side .cv-photo { display: block; margin: 0 auto var(--gap); width: 34mm; height: 34mm; box-shadow: 0 0 0 0.8mm #fff; }
.tpl-ingenieur .cv-side .cv-head { display: block; margin-bottom: var(--gap); }
.tpl-ingenieur .cv-side .cv-name { color: #fff; font-family: var(--font); font-size: 19pt; }
.tpl-ingenieur .cv-side .cv-title { color: #fff; opacity: 0.92; }
.tpl-ingenieur .cv-side a { color: #fff; }
.tpl-ingenieur .cv-side .cv-h { color: #fff; border-bottom-color: rgba(255, 255, 255, 0.6); font-size: 10pt; }
.tpl-ingenieur .cv-side .cv-tags li { border-color: rgba(255, 255, 255, 0.7); }
.tpl-ingenieur .cv-side .cv-c-label, .tpl-ingenieur .cv-side .cv-lang-level, .tpl-ingenieur .cv-side .cv-lang-cert { color: #fff; opacity: 0.9; }
.tpl-ingenieur .cv-main .cv-h { text-transform: none; letter-spacing: 0; font-size: 12pt; }
.tpl-ingenieur .cv-main .cv-h::before { content: "// "; color: #6b7b8c; }
