/* ==========================================================================
   Bossa — Modèles de CV (format A4, imprimable en PDF)
   ========================================================================== */

.cv-page {
	box-sizing: border-box;
	font-optical-sizing: none;
	--cv-accent: #0f1012;
	--cv-soft: color-mix(in srgb, var(--cv-accent) 10%, #fff);
	--cv-ink: #17181b;
	--cv-muted: #6a6c72;
	position: relative; width: 210mm; min-height: 296mm; overflow: hidden;
	background: #fff; color: var(--cv-ink);
	font: 400 9.4pt/1.45 "DM Sans", ui-sans-serif, system-ui, sans-serif;
	-webkit-print-color-adjust: exact; print-color-adjust: exact;
	text-align: left;
}
.cv-page *, .cv-page *::before, .cv-page *::after { box-sizing: border-box; }
.cv-page h1, .cv-page h2, .cv-page h3, .cv-page p, .cv-page ul { margin: 0; padding: 0; }
.cv-page h1, .cv-page h2, .cv-page h3 { color: inherit; }
.cv-name { font: 700 26pt/1.02 "Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif; letter-spacing: -.025em; }
.cv-title { margin-top: 4px; font-size: 11pt; font-weight: 600; color: var(--cv-accent); }
.cv-contacts { display: flex; flex-wrap: wrap; gap: 3px 10px; margin-top: 8px; font-size: 8.7pt; color: var(--cv-muted); }
.cv-contacts i { font-style: normal; opacity: .45; }
.cv-contacts--stack { flex-direction: column; gap: 5px; margin-top: 0; }
.cv-contact { overflow-wrap: anywhere; }
.cv-section { margin-top: 15px; break-inside: avoid-page; }
.cv-h { margin-bottom: 8px; font: 700 8.6pt/1.2 "DM Sans", sans-serif; text-transform: uppercase; letter-spacing: .14em; color: var(--cv-accent); }
.cv-summary { color: #33353a; }
.cv-items { display: flex; flex-direction: column; gap: 10px; }
.cv-item { break-inside: avoid; }
.cv-item__top { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.cv-item__title { font: 700 10.2pt/1.3 "DM Sans", sans-serif; }
.cv-item__date { flex: none; font-size: 8.4pt; color: var(--cv-muted); white-space: nowrap; }
.cv-item__org { margin-top: 1px; font-size: 9pt; color: #4d4f55; }
.cv-desc { margin-top: 3px; color: #33353a; }
.cv-bullets { margin: 4px 0 0 !important; padding-left: 13px !important; color: #33353a; }
.cv-bullets li { margin: 1.5px 0; }
.cv-bullets li::marker { color: var(--cv-accent); }
.cv-items--aside .cv-item { display: grid; grid-template-columns: 28mm 1fr; gap: 10px; }
.cv-items--aside .cv-item__date { padding-top: 2px; white-space: normal; }
.cv-items--timeline { gap: 0; }
.cv-items--timeline .cv-item { position: relative; padding: 0 0 12px 16px; border-left: 1.5px solid color-mix(in srgb, var(--cv-accent) 30%, #fff); }
.cv-items--timeline .cv-item:last-child { padding-bottom: 0; }
.cv-items--timeline .cv-item__dot { display: block; position: absolute; left: -5px; top: 3px; width: 9px; height: 9px; border-radius: 50%; background: #fff; border: 2px solid var(--cv-accent); }
.cv-items--card .cv-item { padding: 9px 11px; border-radius: 3mm; background: #f6f5f1; }
.cv-skills { list-style: none; }
.cv-skills--chips { display: flex; flex-wrap: wrap; gap: 5px; }
.cv-skills--chips li { padding: 3px 9px; border-radius: 99px; background: var(--cv-soft); font-size: 8.7pt; }
.cv-skills--list li { padding: 3px 0; border-bottom: 1px dotted #d9d8d3; }
.cv-skills--list li:last-child { border-bottom: 0; }
.cv-skills--dots li { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 2.5px 0; }
.cv-dots { display: inline-flex; gap: 3px; }
.cv-dots i { width: 6px; height: 6px; border-radius: 50%; background: rgba(255, 255, 255, .28); }
.cv-dots i.on { background: #fff; }
.cv-langs { list-style: none; display: flex; flex-direction: column; gap: 4px; }
.cv-langs li { display: flex; justify-content: space-between; gap: 8px; }
.cv-langs span { color: var(--cv-muted); font-size: 8.6pt; text-align: right; }
.cv-inline { color: #33353a; }
.cv-row { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
.cv-photo { display: block; flex: none; width: 32mm; height: 32mm; border-radius: 50%; object-fit: cover; }
.cv-photo--initials { display: grid; place-items: center; background: var(--cv-accent); color: #fff; font: 700 22pt "Bricolage Grotesque", sans-serif; }
.cv-split { display: grid; }
.cv-h__mark, .cv-h__rule, .cv-item__dot, .cv-dash { display: none; }
.cv-h { display: flex; align-items: center; gap: 8px; }
.cv-h__kicker { color: var(--cv-muted); font-weight: 600; }
.cv-item { position: relative; }

/* Filigrane des aperçus Premium */
.cv-watermark { position: absolute; inset: 0; z-index: 20; display: flex; flex-direction: column; justify-content: space-around; align-items: center; pointer-events: none; }
.cv-watermark span { transform: rotate(-28deg); font: 800 46pt "Bricolage Grotesque", sans-serif; letter-spacing: -.02em; color: rgba(15, 16, 18, .09); white-space: nowrap; }

/* ----------------------------------------------------------- Classique */
.cv-t-classique { padding: 15mm 18mm; }
.cv-t-classique .cv-head { text-align: center; padding-bottom: 12px; border-bottom: 2px solid var(--cv-accent); }
.cv-t-classique .cv-contacts { justify-content: center; }
.cv-t-classique .cv-h { gap: 10px; }
.cv-t-classique .cv-h__rule { display: block; flex: 1; height: 1px; background: #e2e1dc; }
.cv-t-classique .cv-title { color: #4d4f55; }

/* ---------------------------------------------------------------- Épuré */
.cv-t-epure { padding: 18mm 18mm 16mm; }
.cv-t-epure .cv-name { font-weight: 300; font-size: 32pt; letter-spacing: -.035em; }
.cv-t-epure .cv-head { padding-bottom: 14px; margin-bottom: 4px; }
.cv-t-epure .cv-rail .cv-section { display: grid; grid-template-columns: 34mm 1fr; gap: 10px; margin-top: 0; padding: 12px 0; border-top: 1px solid #ecebe6; }
.cv-t-epure .cv-rail .cv-h { color: var(--cv-muted); letter-spacing: .1em; padding-top: 2px; }
.cv-t-epure .cv-skills--list { columns: 2; column-gap: 18px; }
.cv-t-epure .cv-skills--list li { border-bottom: 0; padding: 1.5px 0; }
.cv-t-epure .cv-dash { display: inline; color: var(--cv-accent); }

/* -------------------------------------------------------------- Compact */
.cv-t-compact .cv-split { grid-template-columns: 68mm 1fr; min-height: 296mm; }
.cv-t-compact .cv-side { padding: 15mm 8mm 14mm 12mm; background: #f3f2ee; }
.cv-t-compact .cv-main { padding: 15mm 14mm 14mm 11mm; }
.cv-t-compact .cv-main .cv-section:first-child { margin-top: 0; }
.cv-t-compact .cv-name { font-size: 20pt; color: var(--cv-accent); }
.cv-t-compact .cv-title { color: var(--cv-ink); font-size: 10pt; }
.cv-t-compact .cv-main .cv-h__rule { display: block; flex: 1; height: 1px; background: #e2e1dc; }

/* ------------------------------------------------------------ Éditorial */
.cv-t-editorial { padding: 15mm 18mm 14mm; }
.cv-t-editorial .cv-kicker { font-size: 8pt; letter-spacing: .3em; text-transform: uppercase; color: var(--cv-accent); font-weight: 700; margin-bottom: 6px; }
.cv-t-editorial .cv-name { font: 400 46pt/.95 "Instrument Serif", Georgia, serif; letter-spacing: -.02em; }
.cv-t-editorial .cv-title { font: italic 400 15pt/1.2 "Instrument Serif", Georgia, serif; color: #44464b; margin-top: 6px; }
.cv-t-editorial .cv-contacts { margin-top: 12px; padding: 7px 0; border-top: 1px solid var(--cv-ink); border-bottom: 1px solid var(--cv-ink); color: var(--cv-ink); }
.cv-t-editorial .cv-lede { margin-top: 14px; font: 400 13.5pt/1.35 "Instrument Serif", Georgia, serif; color: #2b2c30; }
.cv-t-editorial .cv-drop { float: left; font-size: 40pt; line-height: .8; padding: 4px 6px 0 0; color: var(--cv-accent); }
.cv-t-editorial .cv-split { grid-template-columns: 1fr 54mm; gap: 11mm; margin-top: 6px; }
.cv-t-editorial .cv-h { font: italic 400 15pt/1.2 "Instrument Serif", Georgia, serif; text-transform: none; letter-spacing: 0; padding-bottom: 4px; border-bottom: 1px solid #dddcd6; }
.cv-t-editorial .cv-side .cv-section { padding-left: 10px; border-left: 2px solid var(--cv-accent); }
.cv-t-editorial .cv-side .cv-h { border-bottom: 0; padding-bottom: 0; }

/* -------------------------------------------------------------- Sidebar */
.cv-t-sidebar .cv-split { grid-template-columns: 70mm 1fr; min-height: 296mm; }
.cv-t-sidebar .cv-side { padding: 15mm 9mm 14mm; background: var(--cv-accent); color: #fff; }
.cv-t-sidebar .cv-side .cv-photo { width: 40mm; height: 40mm; margin: 0 auto 6px; border: 3px solid rgba(255, 255, 255, .35); }
.cv-t-sidebar .cv-side .cv-photo--initials { background: rgba(255, 255, 255, .14); }
.cv-t-sidebar .cv-side .cv-h { color: #fff; opacity: .9; border-bottom: 1px solid rgba(255, 255, 255, .25); padding-bottom: 5px; }
.cv-t-sidebar .cv-side .cv-contacts, .cv-t-sidebar .cv-side .cv-langs span, .cv-t-sidebar .cv-side .cv-summary { color: rgba(255, 255, 255, .82); }
.cv-t-sidebar .cv-main { padding: 17mm 13mm 14mm 12mm; }
.cv-t-sidebar .cv-name { font-size: 29pt; }
.cv-t-sidebar .cv-head { padding-bottom: 6px; }

/* -------------------------------------------------------------- Moderne */
.cv-t-moderne .cv-band { display: flex; align-items: center; gap: 8mm; padding: 13mm 16mm; background: var(--cv-accent); color: #fff; }
.cv-t-moderne .cv-band .cv-photo { width: 30mm; height: 30mm; border: 3px solid rgba(255, 255, 255, .5); }
.cv-t-moderne .cv-band .cv-photo--initials { background: rgba(255, 255, 255, .16); }
.cv-t-moderne .cv-band .cv-name { font-size: 28pt; }
.cv-t-moderne .cv-band .cv-title { color: rgba(255, 255, 255, .88); }
.cv-t-moderne .cv-band .cv-contacts { color: rgba(255, 255, 255, .85); }
.cv-t-moderne .cv-body { padding: 4mm 16mm 14mm; }
.cv-t-moderne .cv-split { grid-template-columns: 1fr 56mm; gap: 10mm; }
.cv-t-moderne .cv-side .cv-section { padding: 10px 12px; border-radius: 3mm; background: var(--cv-soft); }

/* ------------------------------------------------------------ Executive */
.cv-t-executive { border-top: 7px solid var(--cv-accent); }
.cv-t-executive .cv-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 10mm; padding: 13mm 16mm 9mm; }
.cv-t-executive .cv-name { font-size: 27pt; }
.cv-t-executive .cv-head .cv-contacts { text-align: right; align-items: flex-end; }
.cv-t-executive .cv-section--boxed { margin: 0 16mm; padding: 5mm 6mm; background: var(--cv-soft); border-left: 3px solid var(--cv-accent); }
.cv-t-executive .cv-section--boxed .cv-h { margin-bottom: 4px; }
.cv-t-executive .cv-split { grid-template-columns: 1fr 58mm; gap: 10mm; padding: 2mm 16mm 14mm; }
.cv-t-executive .cv-h { font-size: 8.3pt; letter-spacing: .18em; padding-bottom: 4px; border-bottom: 1.5px solid var(--cv-accent); color: var(--cv-ink); }
.cv-t-executive .cv-item__title { font-size: 10.4pt; }
.cv-t-executive .cv-item__org { color: var(--cv-accent); font-weight: 600; }

/* -------------------------------------------------------------- Créatif */
.cv-t-creatif { padding: 15mm 16mm 14mm; }
.cv-t-creatif .cv-shape { position: absolute; z-index: 0; pointer-events: none; }
.cv-t-creatif .cv-shape--a { top: -34mm; right: -26mm; width: 92mm; height: 92mm; border-radius: 50%; background: var(--cv-accent); }
.cv-t-creatif .cv-shape--b { bottom: -22mm; left: -18mm; width: 70mm; height: 56mm; border-radius: 48% 52% 40% 60%; background: var(--cv-soft); }
.cv-t-creatif > *:not(.cv-shape):not(.cv-watermark) { position: relative; z-index: 1; }
.cv-t-creatif .cv-head { display: flex; align-items: center; gap: 7mm; max-width: 140mm; }
.cv-t-creatif .cv-head .cv-photo { width: 30mm; height: 30mm; border-radius: 30%; }
.cv-t-creatif .cv-hello { font: italic 400 14pt "Instrument Serif", Georgia, serif; color: var(--cv-muted); }
.cv-t-creatif .cv-name { font-size: 32pt; font-weight: 800; }
.cv-t-creatif .cv-title { display: inline-block; margin-top: 7px; padding: 3px 10px; border-radius: 99px; background: var(--cv-accent); color: #fff; font-size: 9.5pt; }
.cv-t-creatif > .cv-contacts { margin-top: 12px; }
.cv-t-creatif .cv-split { grid-template-columns: 1fr 56mm; gap: 9mm; }
.cv-t-creatif .cv-h { gap: 7px; color: var(--cv-ink); }
.cv-t-creatif .cv-h__mark { display: block; width: 9px; height: 9px; border-radius: 2.5px; background: var(--cv-accent); }

/* ------------------------------------------------------------ Essentiel */
.cv-t-essentiel { padding: 16mm 17mm 14mm; }
.cv-t-essentiel .cv-head { padding-bottom: 6px; }
.cv-t-essentiel .cv-name { font-size: 27pt; }
.cv-t-essentiel .cv-h { padding-left: 8px; border-left: 3px solid var(--cv-accent); color: var(--cv-ink); letter-spacing: .1em; }
.cv-t-essentiel .cv-skills--chips li { background: #f3f2ef; }

/* -------------------------------------------------------------- Horizon */
.cv-t-horizon { padding: 14mm 17mm 14mm; border-top: 5px solid var(--cv-accent); }
.cv-t-horizon .cv-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 10mm; padding-bottom: 10px; border-bottom: 1px solid #e3e2dd; }
.cv-t-horizon .cv-name { font-size: 26pt; }
.cv-t-horizon .cv-head .cv-contacts { text-align: right; align-items: flex-end; }
.cv-t-horizon .cv-h { color: var(--cv-ink); }
.cv-t-horizon .cv-h__mark { display: block; width: 14px; height: 3px; border-radius: 2px; background: var(--cv-accent); }
.cv-t-horizon .cv-items--aside .cv-item__date { color: var(--cv-accent); font-weight: 600; }
.cv-row--3 { grid-template-columns: 1fr 1fr 1fr; }

/* --------------------------------------------------------------- Suisse */
.cv-t-suisse { padding: 15mm 16mm 14mm; }
.cv-t-suisse .cv-head { display: grid; grid-template-columns: 1fr 62mm; gap: 8mm; align-items: end; }
.cv-t-suisse .cv-name { font-size: 36pt; line-height: .92; letter-spacing: -.045em; }
.cv-t-suisse .cv-title { color: var(--cv-ink); margin: 0 0 6px; font-size: 10pt; }
.cv-t-suisse .cv-head__meta .cv-contacts { margin: 0; }
.cv-t-suisse .cv-bar { display: block; height: 3px; margin: 9mm 0 2mm; background: var(--cv-accent); }
.cv-t-suisse .cv-row2 { display: grid; grid-template-columns: 38mm 1fr; gap: 8mm; margin-top: 0; padding: 9px 0; border-bottom: 1px solid #e4e4e4; }
.cv-t-suisse .cv-row2:last-child { border-bottom: 0; }
.cv-t-suisse .cv-h { flex-direction: column; align-items: flex-start; gap: 2px; color: var(--cv-ink); letter-spacing: .08em; }
.cv-t-suisse .cv-h__kicker { color: var(--cv-accent); font: 700 13pt/1 "Bricolage Grotesque", sans-serif; letter-spacing: 0; }
.cv-t-suisse .cv-skills--chips li { background: #f1f1f1; border-radius: 2px; }

/* -------------------------------------------------------------- Élégant */
.cv-t-elegant { padding: 17mm 20mm 15mm; }
.cv-t-elegant .cv-head { text-align: center; }
.cv-t-elegant .cv-name { font: 400 34pt/1 "Instrument Serif", Georgia, serif; letter-spacing: .06em; text-transform: uppercase; }
.cv-t-elegant .cv-title { margin-top: 8px; font-size: 8.4pt; letter-spacing: .28em; text-transform: uppercase; color: var(--cv-accent); }
.cv-t-elegant .cv-orn { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 10px auto 8px; width: 60mm; }
.cv-t-elegant .cv-orn__line { display: block; flex: 1; height: 1px; background: var(--cv-accent); }
.cv-t-elegant .cv-orn__dot { display: block; width: 6px; height: 6px; border-radius: 50%; background: var(--cv-accent); }
.cv-t-elegant .cv-contacts { justify-content: center; }
.cv-t-elegant .cv-h { justify-content: center; gap: 12px; font: italic 400 14pt/1.2 "Instrument Serif", Georgia, serif; text-transform: none; letter-spacing: .01em; color: var(--cv-ink); margin-bottom: 10px; }
.cv-t-elegant .cv-h__mark, .cv-t-elegant .cv-h__rule { display: block; flex: 1; height: 1px; background: color-mix(in srgb, var(--cv-accent) 55%, #fff); }
.cv-t-elegant .cv-center .cv-summary { text-align: center; }
.cv-t-elegant .cv-item__title { font-weight: 600; }
.cv-t-elegant .cv-item__org { color: var(--cv-accent); }

/* ----------------------------------------------------------------- Tech */
.cv-t-tech .cv-band { display: flex; justify-content: space-between; align-items: flex-end; gap: 10mm; padding: 13mm 15mm 11mm; background: #0b1220; color: #e6edf5; }
.cv-t-tech .cv-kicker { font-size: 8.4pt; color: var(--cv-accent); font-weight: 600; letter-spacing: .04em; }
.cv-t-tech .cv-name { font-size: 27pt; color: #fff; margin-top: 3px; }
.cv-t-tech .cv-title { color: var(--cv-accent); }
.cv-t-tech .cv-band .cv-contacts { color: #aab6c5; text-align: right; align-items: flex-end; }
.cv-t-tech .cv-split { grid-template-columns: 1fr 60mm; min-height: 250mm; }
.cv-t-tech .cv-main { padding: 6mm 9mm 12mm 15mm; }
.cv-t-tech .cv-side { padding: 6mm 13mm 12mm 8mm; background: #f3f5f8; }
.cv-t-tech .cv-h { text-transform: none; letter-spacing: .01em; font-size: 10.5pt; color: var(--cv-ink); gap: 6px; }
.cv-t-tech .cv-h__kicker { color: var(--cv-accent); font-weight: 700; }
.cv-t-tech .cv-skills--chips li { background: #fff; border: 1px solid #d5dde7; border-radius: 4px; font-size: 8.4pt; }

/* --------------------------------------------------------------- Impact */
.cv-t-impact { padding: 0 0 14mm; }
.cv-t-impact .cv-head { display: grid; grid-template-columns: 1fr 64mm; }
.cv-t-impact .cv-block { padding: 16mm 12mm 12mm 16mm; background: var(--cv-accent); color: #fff; }
.cv-t-impact .cv-name { font-size: 40pt; font-weight: 800; line-height: .9; letter-spacing: -.04em; }
.cv-t-impact .cv-title { display: inline-block; margin-top: 10px; padding: 4px 10px; background: #111; color: #fff; border-radius: 3px; font-size: 9.5pt; }
.cv-t-impact .cv-head__aside { display: flex; flex-direction: column; justify-content: flex-end; gap: 10px; padding: 12mm 14mm 10mm 9mm; background: #f4f2ee; }
.cv-t-impact .cv-head__aside .cv-photo { width: 28mm; height: 28mm; }
.cv-t-impact > .cv-section, .cv-t-impact .cv-split { margin-left: 16mm; margin-right: 14mm; }
.cv-t-impact .cv-split { grid-template-columns: 1fr 52mm; gap: 10mm; }
.cv-t-impact .cv-h { font: 700 12.5pt/1.2 "Bricolage Grotesque", sans-serif; text-transform: none; letter-spacing: -.01em; color: var(--cv-ink); width: fit-content; padding-bottom: 3px; border-bottom: 3px solid var(--cv-accent); }

/* --------------------------------------------------------------- Pastel */
.cv-t-pastel { padding: 14mm 14mm 12mm; background: #fbfaf7; }
.cv-t-pastel .cv-head { display: flex; align-items: center; gap: 7mm; margin-bottom: 4mm; }
.cv-t-pastel .cv-head .cv-photo { width: 27mm; height: 27mm; border: 3px solid #fff; box-shadow: 0 0 0 2px color-mix(in srgb, var(--cv-accent) 35%, #fff); }
.cv-t-pastel .cv-photo--initials { background: color-mix(in srgb, var(--cv-accent) 22%, #fff); color: var(--cv-accent); }
.cv-t-pastel .cv-name { font-size: 28pt; }
.cv-t-pastel .cv-split { grid-template-columns: 1fr 58mm; gap: 5mm; }
.cv-t-pastel .cv-card { margin-top: 5mm; padding: 5mm 5.5mm; border-radius: 4mm; }
.cv-t-pastel .cv-card--a { background: #e9e4ff; }
.cv-t-pastel .cv-card--b { background: #ffe8db; }
.cv-t-pastel .cv-card--c { background: #dcf3e8; }
.cv-t-pastel .cv-card--d { background: #dcecfd; }
.cv-t-pastel .cv-h { color: var(--cv-ink); }
.cv-t-pastel .cv-skills--chips li { background: #fff; }

/* ----------------------------------------------------------- Académique */
.cv-t-academique { padding: 15mm 18mm 14mm; font-size: 9.3pt; }
.cv-t-academique .cv-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 10mm; padding-bottom: 10px; border-bottom: 1.5px solid var(--cv-accent); }
.cv-t-academique .cv-name { font: 400 30pt/1 "Instrument Serif", Georgia, serif; letter-spacing: -.005em; color: var(--cv-accent); }
.cv-t-academique .cv-title { color: var(--cv-ink); font-weight: 500; }
.cv-t-academique .cv-head .cv-contacts { text-align: right; align-items: flex-end; }
.cv-t-academique .cv-h { font: 600 8.6pt/1.2 "DM Sans", sans-serif; letter-spacing: .2em; color: var(--cv-accent); gap: 10px; }
.cv-t-academique .cv-h__rule { display: block; flex: 1; height: 1px; background: color-mix(in srgb, var(--cv-accent) 25%, #fff); }
.cv-t-academique .cv-item__title { font-weight: 600; }
.cv-t-academique .cv-items--aside .cv-item { grid-template-columns: 30mm 1fr; }

@media print {
	.cv-page { box-shadow: none !important; }
}
