/* ====================================================================
   Feuille du CV — format A4, commune aux quatre modèles
   ==================================================================== */
.page{width:210mm;min-height:297mm}
.cv{
  --acc:#4338CA;
  --ech:1;          /* échelle de police */
  --esp:1;          /* échelle des espacements */
  --enc:#111827; --gr:#4B5563; --fin:#D7DBE2;
  width:210mm; min-height:297mm; box-sizing:border-box;
  font-family:'Inter',Helvetica,Arial,sans-serif;
  font-size:calc(10.3pt * var(--ech));
  line-height:1.45; color:var(--enc); background:#fff;
  padding:14mm 15mm;
}
.cv.est-serif h1,.cv.est-serif h2,.cv.est-serif .cv-titre{font-family:'Source Serif 4',Georgia,serif}
.cv p{margin:0}
.cv ul{margin:0;padding:0;list-style:none}

/* --- en-tête --- */
.cv-tete{display:flex;gap:6mm;align-items:center}
.cv-photo{width:26mm;height:32mm;object-fit:cover;flex:0 0 auto;border-radius:2mm;background:#EEF0F4}
.cv.photo-ronde .cv-photo{width:28mm;height:28mm;border-radius:50%}
.cv-nom{font-family:'Poppins',Helvetica,Arial,sans-serif;font-size:calc(22pt * var(--ech));font-weight:800;letter-spacing:-.01em;margin:0;line-height:1.1}
.cv-nom b{font-weight:800}
.cv-titre{font-size:calc(11.5pt * var(--ech));color:var(--acc);font-weight:600;margin-top:1.2mm}
.cv-contact{display:flex;flex-wrap:wrap;gap:1.2mm 5mm;margin-top:2.5mm;font-size:calc(9.3pt * var(--ech));color:var(--gr)}
.cv-contact li{display:flex;align-items:center;gap:1.6mm}
.cv-contact svg{width:1em;height:1em;flex:0 0 auto;fill:none;stroke:var(--acc);stroke-width:1.8}

/* --- sections --- */
.cv-sec{margin-top:calc(6mm * var(--esp));break-inside:avoid}
.cv-sec__t{font-family:'Poppins',Helvetica,Arial,sans-serif;font-size:calc(10.5pt * var(--ech));font-weight:700;text-transform:uppercase;letter-spacing:.09em;
  color:var(--acc);margin:0 0 2.6mm;padding-bottom:1.4mm;border-bottom:.4mm solid var(--fin)}
.cv-e{margin-bottom:calc(3.6mm * var(--esp));break-inside:avoid}
.cv-e:last-child{margin-bottom:0}
.cv-e__h{display:flex;justify-content:space-between;gap:4mm;align-items:baseline}
.cv-e__t{font-weight:700;font-size:calc(10.8pt * var(--ech))}
.cv-e__d{font-size:calc(9pt * var(--ech));color:var(--gr);white-space:nowrap;font-weight:500}
.cv-e__s{font-size:calc(9.8pt * var(--ech));color:var(--acc);font-weight:600}
.cv-e__x{font-size:calc(9.7pt * var(--ech));color:var(--gr);margin-top:.8mm;white-space:pre-line}
.cv-e__x ul li{position:relative;padding-left:3.6mm}
.cv-e__x ul li::before{content:"";position:absolute;left:.8mm;top:.45em;width:1.3mm;height:1.3mm;
  border-radius:50%;background:var(--acc)}

/* --- listes en puces (compétences, intérêts) --- */
.cv-tags{display:flex;flex-wrap:wrap;gap:1.6mm}
.cv-tags li{font-size:calc(9.4pt * var(--ech));padding:.9mm 2.6mm;border-radius:99px;
  background:color-mix(in srgb,var(--acc) 9%,#fff);color:var(--enc);border:.25mm solid color-mix(in srgb,var(--acc) 22%,#fff)}
.cv-duo{display:grid;grid-template-columns:1fr 1fr;gap:1mm 6mm}
.cv-ligne{display:flex;justify-content:space-between;gap:3mm;font-size:calc(9.8pt * var(--ech));
  padding:.7mm 0;border-bottom:.2mm dotted var(--fin)}
.cv-ligne b{font-weight:600}
.cv-ligne span{color:var(--gr)}
.cv-niv{display:inline-flex;gap:.8mm;align-items:center}
.cv-niv i{width:2mm;height:2mm;border-radius:50%;background:var(--fin)}
.cv-niv i.on{background:var(--acc)}

/* ====================== MODÈLE : CLASSIQUE ====================== */
.cv--classique .cv-tete{padding-bottom:4mm;border-bottom:.6mm solid var(--enc);align-items:flex-end}
.cv--classique .cv-tete__txt{flex:1}

/* ====================== MODÈLE : MODERNE ======================== */
.cv--moderne{padding:0;display:flex}
.cv--moderne .cv-aside{width:62mm;flex:0 0 auto;background:var(--acc);color:#fff;padding:12mm 7mm;
  display:flex;flex-direction:column;gap:calc(6mm * var(--esp))}
.cv--moderne .cv-corps{flex:1;padding:12mm 10mm 12mm 8mm;min-width:0}
.cv--moderne .cv-aside .cv-sec__t{color:#fff;border-bottom-color:rgba(255,255,255,.35)}
.cv--moderne .cv-aside .cv-sec{margin-top:0}
.cv--moderne .cv-aside .cv-contact{flex-direction:column;gap:1.8mm;color:rgba(255,255,255,.93)}
.cv--moderne .cv-aside .cv-contact svg{stroke:#fff}
.cv--moderne .cv-aside .cv-tags li{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.28);color:#fff}
.cv--moderne .cv-aside .cv-ligne{color:#fff;border-bottom-color:rgba(255,255,255,.25)}
.cv--moderne .cv-aside .cv-ligne span{color:rgba(255,255,255,.8)}
.cv--moderne .cv-aside .cv-niv i{background:rgba(255,255,255,.3)}
.cv--moderne .cv-aside .cv-niv i.on{background:#fff}
.cv--moderne .cv-photo{width:100%;height:52mm;border-radius:2mm}
.cv--moderne.photo-ronde .cv-photo{width:38mm;height:38mm;margin:0 auto;border-radius:50%;border:1mm solid rgba(255,255,255,.3)}
.cv--moderne .cv-nom{font-family:'Poppins',Helvetica,Arial,sans-serif;font-size:calc(20pt * var(--ech))}
.cv--moderne .cv-corps .cv-sec:first-child{margin-top:0}

/* ====================== MODÈLE : COMPACT ======================== */
.cv--compact{padding:11mm 12mm;font-size:calc(9.6pt * var(--ech));line-height:1.38}
.cv--compact .cv-tete{align-items:center;gap:4mm;padding-bottom:2.5mm}
.cv--compact .cv-nom{font-family:'Poppins',Helvetica,Arial,sans-serif;font-size:calc(18pt * var(--ech))}
.cv--compact .cv-sec{margin-top:calc(4mm * var(--esp))}
.cv--compact .cv-sec__t{font-family:'Poppins',Helvetica,Arial,sans-serif;font-size:calc(9.4pt * var(--ech));border-bottom:none;background:color-mix(in srgb,var(--acc) 10%,#fff);
  padding:1.1mm 2.4mm;border-radius:1mm;margin-bottom:2mm}
.cv--compact .cv-e{margin-bottom:calc(2.4mm * var(--esp))}
.cv--compact .cv-photo{width:22mm;height:26mm}

/* ====================== MODÈLE : ÉLÉGANT ======================== */
.cv--elegant{padding:16mm 18mm}
.cv--elegant .cv-tete{flex-direction:column;text-align:center;gap:3mm;padding-bottom:5mm;
  border-bottom:.3mm solid var(--fin)}
.cv--elegant .cv-nom{font-family:'Source Serif 4',Georgia,serif;font-weight:600;letter-spacing:.02em;
  font-size:calc(24pt * var(--ech))}
.cv--elegant .cv-titre{color:var(--gr);font-weight:400;font-style:italic;letter-spacing:.04em}
.cv--elegant .cv-contact{justify-content:center}
.cv--elegant .cv-sec__t{font-family:'Source Serif 4',Georgia,serif;text-align:center;border-bottom:none;
  color:var(--enc);font-weight:600;letter-spacing:.14em;position:relative;padding-bottom:0;margin-bottom:3.4mm}
.cv--elegant .cv-sec__t::after{content:"";display:block;width:14mm;height:.4mm;background:var(--acc);margin:1.8mm auto 0}
.cv--elegant .cv-tags li{border-radius:1mm}

/* ====================== impression ============================== */
/* Deux gabarits de page : « pleine » pour les modèles dont un aplat de couleur
   touche le bord (Moderne), « marges » pour les autres — la marge se répète
   alors sur chaque page, ce qu'un padding ne sait pas faire. */
@page{size:A4;margin:0}
@page pleine{size:A4;margin:0}
@page marges{size:A4;margin:14mm 0}

@media print{
  .page{min-height:0 !important}
  .cv{box-shadow:none;min-height:296mm}   /* 1 mm de garde : évite une page blanche */
  .cv--moderne{page:pleine}
  .cv--classique,.cv--compact,.cv--elegant{page:marges;padding-top:0;padding-bottom:0;min-height:268mm}
  .cv--moderne .cv-aside{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .cv,.cv *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
