/* Styles du CV lui-même. Ce fichier est aussi embarqué dans l'export HTML et utilisé pour le PDF.
   Règle d'or : pas de position, transform, opacity ni float sur du texte, sinon l'ordre du texte dans le PDF se dégrade. */
.cv{--ac:#4f6bed;--ac2:#8a68ee;--t1:#ecefff;--t2:#c4cdf9;--paper:#fff;--dark:#1f2433;--ff:'Inter';--fh:'Inter';--d:1;--ns:1;--hs:1;
  --ink:#1f2333;--mut:#5c6378;--rule:#e3e5ee;
  width:794px;min-height:1123px;background:var(--deco,none) 0 0/794px 1123px no-repeat,var(--paper);color:var(--ink);
  font-family:var(--ff),Arial,Helvetica,sans-serif;font-size:calc(12.6px*var(--d));line-height:1.5;box-sizing:border-box;
  display:flex;flex-direction:column;overflow-wrap:anywhere;text-align:left;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv *{box-sizing:border-box}
.cv h1,.cv h2,.cv p,.cv ul{margin:0;padding:0}

/* papiers */
.cv.p-cream{--rule:#e6dccb;--mut:#6a6258}
.cv.p-blush{--rule:#ecd9d5;--mut:#6d5f62}
.cv.p-mint{--rule:#d3e3da;--mut:#56655e}
.cv.p-sky{--rule:#d5e0ee;--mut:#566277}
.cv.p-lilac{--rule:#dfd8ef;--mut:#5f5a78}
.cv.dk{--ink:#f3f1ff;--mut:#c3c0e2;--rule:rgba(255,255,255,.22)}
.cv.p-night{background:var(--deco,none) 0 0/794px 1123px no-repeat,linear-gradient(158deg,#15112e,#2b1c62)}

/* zones sur fond coloré (colonne pleine, bandeau) : tout passe en clair */
.cv .inv{--ink:#fff;--mut:rgba(255,255,255,.86);--rule:rgba(255,255,255,.34);--t1:rgba(255,255,255,.17);--t2:rgba(255,255,255,.42);
  --hc:#fff;--bc:rgba(255,255,255,.9);--pillc:var(--sidebg,var(--ac));--track:rgba(255,255,255,.3);--fill:#fff;--mk:rgba(255,255,255,.28);color:#fff}
/* ... et en sombre quand la couleur du fond est claire (jaune, citron, turquoise) */
.cv .inv.invd{--ink:#16161a;--mut:rgba(22,22,26,.8);--rule:rgba(22,22,26,.28);--t1:rgba(22,22,26,.1);--t2:rgba(22,22,26,.3);
  --hc:#16161a;--bc:rgba(22,22,26,.86);--track:rgba(22,22,26,.2);--fill:#16161a;--mk:rgba(22,22,26,.16);color:#16161a}
.cv.s-tint{--sidebg:var(--t1)}
.cv.s-solid{--sidebg:var(--ac)}
.cv.s-dark{--sidebg:var(--dark)}
.cv.s-grad{--sidebg:var(--ac)}
.cv.s-dark .inv{--fill:var(--ac2)}

/* ---------- en-tête ---------- */
.cv .cv-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 20px;padding:44px 54px 6px}
.cv .hd-id{flex:1;min-width:0}
.cv h1{font-family:var(--fh),var(--ff),sans-serif;font-size:calc(31px*var(--ns));line-height:1.12;letter-spacing:-.01em;font-weight:700}
.cv .role{font-size:15px;color:var(--bc,var(--act,var(--ac)));margin-top:4px;font-weight:500}
.cv .ct{flex-basis:100%;display:flex;flex-wrap:wrap;gap:3px 18px;font-size:11.6px;color:var(--mut);margin-top:6px}
.cv .cti{display:inline-flex;align-items:center;gap:6px;min-width:0}
.cv .ci{width:12px;height:12px;flex:none;color:var(--hc,var(--act,var(--ac)))}
.cv .ph{width:86px;height:86px;border-radius:50%;object-fit:cover;flex:none;display:block}
.cv .mono{width:78px;height:78px;border-radius:50%;background:var(--hc,var(--ac));color:var(--pillc,var(--onac));display:flex;align-items:center;justify-content:center;
  font-family:var(--fh),sans-serif;font-weight:700;font-size:30px;flex:none}
.cv.ph-soft .ph,.cv.ph-soft .mono{border-radius:20px}
.cv.ph-arch .ph,.cv.ph-arch .mono{border-radius:999px 999px 16px 16px;height:104px}

.cv.h-left .cv-head{margin:0 54px;padding:44px 0 16px;border-bottom:1px solid var(--rule)}
.cv.h-center .cv-head{flex-direction:column;flex-wrap:nowrap;text-align:center;gap:4px;padding-bottom:0}
.cv.h-center .hd-id{flex:none}
.cv.h-center .ct{flex-basis:auto;justify-content:center}
.cv.h-center .cv-head::after{content:"";width:54px;height:3px;border-radius:3px;background:var(--ac);margin-top:14px}
.cv.h-band .cv-head{background:var(--ac);--sidebg:var(--ac);padding:40px 54px 30px}
.cv.h-split .cv-head{flex-wrap:nowrap;align-items:flex-end;margin:0 54px;padding:44px 0 14px;border-bottom:3px solid var(--ac)}
.cv.h-split .ct{flex:none;flex-basis:auto;flex-direction:column;align-items:flex-end;gap:1px;margin:0;max-width:44%;text-align:right}
.cv.h-mono .cv-head{padding:40px 54px 26px;background:linear-gradient(135deg,var(--t1),var(--paper) 72%)}
.cv.h-mono .mono{border-radius:22px;height:78px;transform:rotate(-5deg)}
.cv.h-soft .cv-head{margin:28px 28px 0;padding:24px 26px;border-radius:14px;background:var(--t1);border-left:6px solid var(--ac)}

/* en-tête « affiche » : le nom en très grand */
.cv.h-poster .cv-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 26px;align-items:end;padding:46px 54px 0}
.cv.h-poster .hd-id{grid-column:1;grid-row:1}
.cv.h-poster .ph,.cv.h-poster .mono{grid-column:2;grid-row:1;width:112px;height:112px}
.cv.h-poster h1{font-size:calc(56px*var(--ns));line-height:.95;text-transform:uppercase;letter-spacing:0}
.cv.h-poster .role{display:inline-block;margin-top:12px;padding:4px 14px;background:var(--ac);color:var(--onac);font-size:14px;font-weight:600;letter-spacing:.03em}
.cv.h-poster .ct{grid-column:1/-1;margin-top:18px;padding:9px 0;border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);color:var(--ink)}

/* ---------- corps et colonnes ---------- */
.cv .cv-body{flex:1;padding:24px 54px 46px}
.cv .zone{display:flex;flex-direction:column;gap:calc(19px*var(--d));min-width:0}
.cv.l-left .cv-body,.cv.l-right .cv-body{display:grid;padding:0;margin-top:20px}
.cv.l-left .cv-body{grid-template-columns:238px minmax(0,1fr)}
.cv.l-right .cv-body{grid-template-columns:minmax(0,1fr) 238px}
.cv.l-left .zone-main{grid-column:2;grid-row:1;padding:6px 54px 46px 30px}
.cv.l-left .zone-side{grid-column:1;grid-row:1;padding:6px 20px 46px 54px}
.cv.l-right .zone-main{grid-column:1;grid-row:1;padding:6px 30px 46px 54px}
.cv.l-right .zone-side{grid-column:2;grid-row:1;padding:6px 54px 46px 20px}
.cv .zone-side{background:var(--sidebg,transparent)}
.cv.s-grad .zone-side{background:linear-gradient(172deg,var(--ac) 8%,var(--ac2))}
.cv.s-main .zone-main{background:var(--grey)}
.cv.s-main.l-left .zone-side{padding-left:44px}
.cv.s-main.l-right .zone-side{padding-right:44px}
.cv.s-main.l-left .zone-main{padding-left:34px}
.cv.s-main.l-right .zone-main{padding-right:34px}
.cv.s-plain.l-left .zone-side{border-right:1px solid var(--rule)}
.cv.s-plain.l-right .zone-side{border-left:1px solid var(--rule)}
.cv:not(.s-plain) .zone-side{padding-top:24px;padding-left:26px;padding-right:22px}
.cv:not(.s-plain) .zone-main{padding-top:24px}
.cv.h-band:not(.s-plain) .cv-body{margin-top:0}

/* en-tête dans la colonne : nom, photo et contacts rejoignent la colonne latérale */
.cv.h-side{display:grid;grid-template-columns:252px minmax(0,1fr);grid-template-rows:auto 1fr}
.cv.h-side.l-right{grid-template-columns:minmax(0,1fr) 252px}
.cv.h-side .cv-body{display:contents}
.cv.h-side .cv-head{grid-column:1;grid-row:1;flex-direction:column;flex-wrap:nowrap;align-items:flex-start;gap:14px;margin:0;padding:42px 24px 4px 30px;
  border:0;background:var(--sidebg,transparent)}
.cv.h-side .hd-id{flex:none;width:100%}
.cv.h-side h1{font-size:calc(25px*var(--ns))}
.cv.h-side .role{font-size:13.5px}
.cv.h-side .ph,.cv.h-side .mono{width:128px;height:128px;align-self:center;font-size:44px}
.cv.h-side .ph{box-shadow:0 0 0 4px var(--t2)}
.cv.h-side.ph-arch .ph,.cv.h-side.ph-arch .mono{height:156px}
.cv.h-side .ct{flex-basis:auto;flex-direction:column;gap:5px;margin:0;width:100%}
.cv.h-side .zone-side{grid-column:1;grid-row:2;padding:20px 24px 46px 30px}
.cv.h-side .zone-main{grid-column:2;grid-row:1/3;padding:46px 50px 46px 34px}
.cv.h-side.l-right .cv-head,.cv.h-side.l-right .zone-side{grid-column:2}
.cv.h-side.l-right .cv-head{padding:42px 30px 4px 24px}
.cv.h-side.l-right .zone-side{padding:20px 30px 46px 24px}
.cv.h-side.l-right .zone-main{grid-column:1;padding:46px 34px 46px 50px}
.cv.h-side.s-plain.l-left .cv-head{border-right:1px solid var(--rule)}
.cv.h-side.s-plain.l-right .cv-head{border-left:1px solid var(--rule)}

/* bannière : un motif en haut avec le nom ; en deux colonnes, les contacts descendent dans la colonne latérale */
.cv.h-banner .cv-head{display:grid;grid-template-columns:minmax(0,1fr);gap:0;padding:0}
.cv.h-banner .hd-id{grid-column:1/-1;grid-row:1;display:flex;flex-direction:column;justify-content:center;min-height:132px;padding:30px 150px 28px 44px;
  background:var(--banner,var(--ac)) center/cover no-repeat;--bc:#fff;color:#fff}
.cv.h-banner h1{text-transform:uppercase;font-weight:400;font-size:calc(24px*var(--ns));letter-spacing:.01em;text-shadow:0 1px 6px rgba(0,0,0,.35)}
.cv.h-banner .role{font-size:21px;font-weight:700;margin-top:6px;text-shadow:0 1px 6px rgba(0,0,0,.35);font-family:var(--fh),var(--ff),sans-serif}
.cv.h-banner .ph{grid-column:1/-1;grid-row:1;justify-self:end;align-self:center;margin-right:44px;width:96px;height:96px;border:3px solid #fff}
.cv.h-banner.ph-arch .ph{height:112px}
.cv.h-banner .ct{grid-column:1/-1;grid-row:2;margin:0;padding:16px 54px 0}
.cv.h-banner.l-left,.cv.h-banner.l-right{display:grid;grid-template-columns:238px minmax(0,1fr);grid-template-rows:auto auto 1fr}
.cv.h-banner.l-right{grid-template-columns:minmax(0,1fr) 238px}
.cv.h-banner:not(.l-one) .cv-head,.cv.h-banner:not(.l-one) .cv-body{display:contents}
.cv.h-banner:not(.l-one) .ct{grid-column:1;grid-row:2;flex-direction:column;flex-wrap:nowrap;gap:6px;padding:34px 18px 0 44px;font-size:12.2px;color:var(--ink);background:var(--sidebg,transparent)}
.cv.h-banner:not(.l-one) .zone-side{grid-column:1;grid-row:3;padding:28px 18px 46px 44px;border:0}
.cv.h-banner:not(.l-one) .zone-main{grid-column:2;grid-row:2/4;padding:36px 46px 46px 44px}
.cv.h-banner.l-right .ct,.cv.h-banner.l-right .zone-side{grid-column:2}
.cv.h-banner.l-right .ct{padding:34px 44px 0 22px}
.cv.h-banner.l-right .zone-side{padding:28px 44px 46px 22px}
.cv.h-banner.l-right .zone-main{grid-column:1;padding:36px 40px 46px 46px}
.cv.h-banner.s-grad:not(.l-one) .ct{background:var(--ac)}

/* ---------- titres de section ---------- */
/* Espacement des lettres volontairement modéré : au-delà, les logiciels lisent « P R O F I L » au lieu de « PROFIL ». */
.cv h2{font-family:var(--fh),var(--ff),sans-serif;font-size:calc(12px*var(--hs));line-height:1.3;letter-spacing:.12em;text-transform:uppercase;font-weight:700;
  color:var(--hc,var(--act,var(--ac)));margin-bottom:calc(8px*var(--d));break-after:avoid}
.cv.hd-line h2{border-bottom:1px solid var(--t2);padding-bottom:4px}
.cv.hd-bar h2{border-left:4px solid var(--hc,var(--ac));padding-left:9px}
.cv.hd-dot h2{display:flex;align-items:center;gap:8px;color:var(--mut);font-size:calc(11px*var(--hs))}
.cv.hd-dot h2::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--hc,var(--ac));flex:none}
.cv.hd-caps h2{color:var(--ink);font-size:calc(11.5px*var(--hs));font-weight:800}
.cv.hd-pill h2{width:fit-content;background:var(--hc,var(--ac));color:var(--pillc,var(--onac));padding:3px 13px;border-radius:99px;font-size:calc(11px*var(--hs))}
.cv.hd-box h2{background:var(--t1);padding:4px 9px;border-radius:4px;font-size:calc(11px*var(--hs))}
.cv.hd-band h2{background:var(--ink);color:var(--pillc,var(--paper));padding:4px 10px;font-size:calc(11px*var(--hs))}
.cv.hd-short h2{color:var(--ink);font-size:calc(12.5px*var(--hs))}
.cv.hd-short h2::after{content:"";display:block;width:32px;height:3px;border-radius:2px;background:var(--hc,var(--ac));margin-top:5px}
.cv.hd-center h2{display:flex;align-items:center;gap:12px;color:var(--ink)}
.cv.hd-center h2::before,.cv.hd-center h2::after{content:"";flex:1;height:1px;background:var(--t2)}
.cv.hd-big h2{text-transform:none;letter-spacing:0;font-size:calc(19px*var(--hs));line-height:1.2;margin-bottom:calc(10px*var(--d))}
.cv.hd-marker h2{text-transform:none;letter-spacing:0;font-size:calc(16px*var(--hs));color:var(--ink);width:fit-content;padding:0 5px;margin-left:-5px;
  background:linear-gradient(transparent 52%,var(--mk) 52%)}

/* ---------- texte ---------- */
.cv .txt{white-space:pre-wrap}

/* ---------- entrées (expériences, formations, projets) ---------- */
/* Grille sans flottants : l'ordre d'affichage suit l'ordre du document, donc le texte du PDF reste dans le bon ordre. */
.cv .it{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:14px;margin-bottom:calc(11px*var(--d));break-inside:avoid}
.cv .it:last-child{margin-bottom:0}
.cv .a{grid-column:1;grid-row:1;font-weight:700}
.cv .dt{grid-column:2;grid-row:1;text-align:right;color:var(--mut);font-size:.92em;white-space:nowrap;padding-top:1px}
.cv .b{grid-column:1/-1;color:var(--bc,var(--act,var(--ac)));font-weight:500}
.cv .it ul{grid-column:1/-1}
.cv ul{list-style:none;margin-top:3px}
.cv li{padding-left:13px;margin:1px 0}
.cv li::before{content:"•";display:inline-block;width:13px;margin-left:-13px;color:var(--mut)}
.cv .v-dated .it{grid-template-columns:104px minmax(0,1fr)}
.cv .v-dated .dt{grid-column:1;grid-row:1/span 3;text-align:left;white-space:normal}
.cv .v-dated .a,.cv .v-dated .b,.cv .v-dated .it ul{grid-column:2}
.cv .v-timeline .it{margin-bottom:0;padding:0 0 calc(11px*var(--d)) 24px;
  background:radial-gradient(circle at 6px 9px,var(--hc,var(--ac)) 0 4.5px,transparent 5px) no-repeat,linear-gradient(var(--t2),var(--t2)) 5px 0/2px 100% no-repeat}
.cv .v-timeline .it:last-child{padding-bottom:0}
.cv .v-story .it{display:block;margin-bottom:0;padding:0 0 calc(11px*var(--d)) 30px;
  background:radial-gradient(circle at 6px 9px,var(--ink) 0 4.5px,transparent 5px) no-repeat,linear-gradient(var(--ink),var(--ink)) 5.5px 0/1px 100% no-repeat}
.cv .v-story .it:last-child{padding-bottom:calc(4px*var(--d))}
.cv .v-story .a{display:block}
.cv .v-story .dt{display:inline;font-size:1em;white-space:normal;margin-right:5px;padding:0}
.cv .v-story .b{display:inline}
.cv .v-story .it ul{margin-top:2px;color:var(--mut)}
.cv .v-story li{padding-left:0}
.cv .v-story li::before{content:none}
.cv .zone-side .v-story .it,.cv .kn-details.v-story .it{padding-left:0;padding-bottom:calc(8px*var(--d));background:none}
.cv .kn-details.v-story .it:last-child{padding-bottom:0}
.cv .zone-side .it{display:block}
.cv .zone-side .a,.cv .zone-side .b,.cv .zone-side .dt{display:block;text-align:left;white-space:normal}

/* ---------- compétences, langues, intérêts ---------- */
.cv .tags{display:flex;flex-wrap:wrap;gap:5px 6px}
.cv .tag{display:inline-flex;align-items:center;gap:8px;break-inside:avoid}
.cv .v-tags .tag{padding:2px 10px;border-radius:99px;background:var(--t1)}
.cv.s-tint .zone-side .v-tags .tag{background:var(--paper)}
.cv .v-list .tags{display:block}
.cv .v-list .tag{display:inline}
.cv .v-list .tag:not(:last-child)::after{content:", "}
.cv .v-bars .tags,.cv .v-dots .tags{display:grid;grid-template-columns:1fr 1fr;gap:5px 26px}
.cv .zone-side .v-bars .tags,.cv .zone-side .v-dots .tags{grid-template-columns:1fr}
.cv .v-bars .tag,.cv .v-dots .tag{display:flex;justify-content:space-between}
.cv .lv{display:inline-flex;gap:3px;flex:none}
.cv .lv i{display:block;background:var(--t2)}
.cv .lv i.on{background:var(--hc,var(--ac))}
.cv .v-bars .lv i{width:13px;height:5px;border-radius:2px}
.cv .v-dots .lv i{width:7px;height:7px;border-radius:50%}

.cv .v-meter .tags{display:grid;grid-template-columns:1fr;gap:calc(10px*var(--d))}
.cv.l-one .v-meter .tags{grid-template-columns:1fr 1fr;column-gap:40px}
.cv .v-meter .tag{display:block}
.cv .v-meter .tn{display:block;font-weight:700;margin-bottom:5px}
.cv .v-meter .lv{display:flex;gap:0;width:100%;max-width:270px;height:5px;border-radius:5px;overflow:hidden;background:var(--track)}
.cv .v-meter .lv i{flex:1;height:5px;background:transparent}
.cv .v-meter .lv i.on{background:var(--fill,var(--ac2))}
.cv .v-stack .tags{display:block}
.cv .v-stack .tag{display:block;font-weight:700;margin:0 0 calc(8px*var(--d))}
.cv .v-stack .tag:last-child{margin-bottom:0}

/* ---------- blocs en cartes ---------- */
.cv.bk-card .zone-main>.blk{background:var(--paper);border:1px solid var(--rule);border-radius:12px;padding:14px 18px 16px}
.cv.bk-card.s-main .zone-main>.blk{border-color:transparent}
.cv.bk-card.dk .zone-main>.blk{background:rgba(255,255,255,.06)}

/* ---------- chiffres clés ---------- */
.cv .stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:10px 16px}
.cv .st{break-inside:avoid}
.cv .sn{display:block;font-family:var(--fh),var(--ff),sans-serif;font-size:calc(23px*var(--hs));line-height:1.15;color:var(--hc,var(--act,var(--ac)));font-weight:700}
.cv .sl{display:block;font-size:.92em;color:var(--mut)}
