/* =========================================================================
   CV - jean-charles.lantheaume.fr
   Corporate sobre, dark mode, impression A4 2 pages.
   ========================================================================= */

:root {
  --c-bg:          #ffffff;
  --c-bg-soft:     #eef3f9;
  --c-bg-card:     #ffffff;
  --c-ink:         #0b1220;
  --c-ink-soft:    #1f2a44;
  --c-ink-mute:    #475569;
  --c-accent:      #1e3a8a;   /* navy corporate */
  --c-accent-2:    #1d4ed8;   /* bleu vif - liens & CTA */
  --c-accent-soft: #dbeafe;   /* wash bleu pour aplats doux */
  --c-border:      #cbd5e1;
  --c-border-soft: #dbe3ec;
  --c-hover:       #dbeafe;
  --c-success:     #047857;
  --c-danger:      #b91c1c;

  --font-sans:  'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, system-ui, sans-serif;
  --font-serif: 'Source Serif 4', 'Georgia', serif;

  --r-sm: 4px;
  --r-md: 8px;
  --r-lg: 12px;

  --w-doc: 820px;

  color-scheme: light;
}

* { box-sizing: border-box; }

html, body {
  margin: 0; padding: 0;
  font-family: var(--font-sans);
  font-size: 16px; line-height: 1.55;
  color: var(--c-ink); background: var(--c-bg);
  -webkit-font-smoothing: antialiased;
}

a { color: var(--c-accent-2); text-decoration: none; }
a:hover { text-decoration: underline; }
a:focus-visible, button:focus-visible {
  outline: 2px solid var(--c-accent-2); outline-offset: 2px; border-radius: var(--r-sm);
}

.skip-link {
  position: absolute; top: -100px; left: 8px; padding: 10px 14px;
  background: var(--c-accent); color: #fff; border-radius: var(--r-md); z-index: 999;
}
.skip-link:focus { top: 8px; }

/* ──────────────────────────── TOPBAR ──────────────────────────── */
.cv-topbar {
  position: sticky; top: 0; z-index: 10;
  background: color-mix(in srgb, var(--c-bg) 92%, transparent);
  backdrop-filter: saturate(180%) blur(10px);
  border-bottom: 1px solid var(--c-border);
}
.cv-topbar__inner {
  max-width: var(--w-doc); margin: 0 auto;
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 20px;
}
.cv-topbar__brand {
  font-family: var(--font-serif); font-weight: 700;
  color: var(--c-ink); font-size: 17px;
}
.cv-topbar__nav {
  display: flex; align-items: center; gap: 6px;
}
.cv-topbar__link {
  padding: 8px 12px; border-radius: var(--r-md);
  color: var(--c-ink-soft); font-weight: 500; font-size: 14px;
}
.cv-topbar__link:hover { background: var(--c-hover); text-decoration: none; }
.cv-topbar__print {
  border: 1px solid var(--c-border); background: transparent;
  padding: 8px 12px; border-radius: var(--r-md);
  color: var(--c-ink-soft); font-weight: 600; font-size: 13px;
  cursor: pointer; font-family: inherit;
}
.cv-topbar__print:hover { background: var(--c-hover); }

/* ──────────────────────────── MAIN ──────────────────────────── */
.cv-main { max-width: var(--w-doc); margin: 0 auto; padding: 0 20px; }

/* ──────────────────────────── HERO ──────────────────────────── */
.hero { padding: 56px 0 40px; }
.hero__inner {
  display: grid; grid-template-columns: 140px 1fr; gap: 32px; align-items: center;
}
.hero__photo {
  width: 140px; height: 140px; border-radius: 50%;
  background: var(--c-bg-soft); overflow: hidden;
  border: 1px solid var(--c-border);
  display: flex; align-items: center; justify-content: center;
}
.hero__photo img { width: 100%; height: 100%; object-fit: cover; }
.hero__photo-fallback {
  font-family: var(--font-serif); font-weight: 700; font-size: 46px;
  color: var(--c-ink-mute);
}
.hero__eyebrow {
  color: var(--c-ink-mute); font-size: 13px; letter-spacing: 0.05em;
  text-transform: uppercase; margin: 0 0 8px;
}
.hero__name {
  font-family: var(--font-serif); font-weight: 700;
  font-size: clamp(28px, 4vw, 40px); margin: 0 0 6px; line-height: 1.15;
}
.hero__title {
  font-size: 18px; font-weight: 600; color: var(--c-ink-soft); margin: 0 0 8px;
}
.hero__tagline {
  color: var(--c-ink-soft); font-size: 16px; margin: 0 0 20px; max-width: 60ch;
}
.hero__actions { display: flex; gap: 10px; flex-wrap: wrap; }

/* Buttons */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 10px 16px; border-radius: var(--r-md); font-weight: 600; font-size: 14px;
  border: 1px solid transparent; cursor: pointer; font-family: inherit;
  text-decoration: none;
}
.btn--primary { background: var(--c-accent); color: #fff; }
.btn--primary:hover { background: color-mix(in srgb, var(--c-accent) 88%, #000); text-decoration: none; }
.btn--ghost {
  background: transparent; color: var(--c-ink);
  border-color: var(--c-border);
}
.btn--ghost:hover { background: var(--c-hover); text-decoration: none; }

/* ──────────────────────────── CV DOC ──────────────────────────── */
.cv-doc {
  background: var(--c-bg-card);
  border: 1px solid var(--c-border);
  border-radius: var(--r-lg);
  padding: 40px 48px;
  margin: 20px 0 48px;
  box-shadow: 0 1px 2px rgba(0,0,0,0.03), 0 1px 20px rgba(15,23,42,0.04);
}
.cv-doc__head {
  display: grid; grid-template-columns: 1fr auto; gap: 24px;
  margin-bottom: 16px;
}
.cv-doc__name {
  font-family: var(--font-serif); font-weight: 700;
  font-size: 26px; margin: 0 0 4px;
}
.cv-doc__role { font-weight: 600; color: var(--c-ink-soft); margin: 0 0 4px; }
.cv-doc__loc  { color: var(--c-ink-mute); margin: 0; font-size: 14px; }

.cv-doc__contact {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: auto 1fr; gap: 4px 10px;
  font-size: 13px;
}
.cv-doc__contact li {
  display: contents;
}
.cv-doc__label {
  color: var(--c-ink-mute); text-transform: uppercase; font-size: 11px;
  letter-spacing: 0.05em; align-self: center;
}
.cv-doc__contact a { color: var(--c-ink); font-weight: 500; }
.cv-doc__contact a:hover { color: var(--c-accent-2); }

.cv-doc__section { margin-bottom: 22px; }
.cv-doc__section--split {
  display: grid; grid-template-columns: 1fr 1fr; gap: 28px;
}
.cv-doc__h {
  font-family: var(--font-serif); font-weight: 700;
  font-size: 16px; color: var(--c-accent);
  margin: 0 0 10px; padding-bottom: 4px;
  border-bottom: 2px solid var(--c-accent);
  text-transform: uppercase; letter-spacing: 0.04em;
}
.cv-doc__pitch { margin: 0 0 10px; color: var(--c-ink-soft); }
.cv-doc__highlights {
  margin: 0; padding-left: 18px;
}
.cv-doc__highlights li { margin-bottom: 4px; }

/* Experience jobs */
.cv-job { margin-bottom: 16px; break-inside: avoid; page-break-inside: avoid; }
.cv-job__head {
  display: flex; justify-content: space-between; align-items: baseline; gap: 10px;
  margin-bottom: 2px;
}
.cv-job__role { font-weight: 700; font-size: 15px; margin: 0; }
.cv-job__period {
  color: var(--c-ink-mute); font-size: 13px; font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.cv-job__company { margin: 0 0 2px; color: var(--c-ink-soft); font-size: 14px; font-weight: 500; }
.cv-job__loc { color: var(--c-ink-mute); font-weight: 400; }
.cv-job__context { margin: 0 0 6px; color: var(--c-ink-mute); font-size: 13px; }
.cv-job__bullets { margin: 0; padding-left: 18px; }
.cv-job__bullets li { margin-bottom: 3px; }

/* Expertise tags */
.cv-expertise {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-wrap: wrap; gap: 6px 8px;
}
.cv-expertise__tag {
  background: var(--c-accent-soft);
  border: 1px solid color-mix(in srgb, var(--c-accent) 40%, transparent);
  padding: 4px 10px; border-radius: var(--r-sm);
  font-size: 12.5px; color: var(--c-accent); font-weight: 500;
}

/* Education + languages */
.cv-edu { margin: 0 0 8px; font-size: 14px; }
.cv-edu__meta { color: var(--c-ink-mute); font-size: 13px; }
.cv-langs { list-style: none; margin: 0; padding: 0; font-size: 14px; }
.cv-langs li { margin-bottom: 3px; }

/* Interests */
.cv-interests { list-style: none; margin: 0; padding: 0; font-size: 14px; }
.cv-interests li { margin-bottom: 3px; }

/* Footer doc */
.cv-doc__foot {
  margin-top: 20px; padding-top: 12px; border-top: 1px solid var(--c-border);
  display: flex; justify-content: space-between; gap: 12px;
  color: var(--c-ink-mute); font-size: 12px;
}

/* ──────────────────────────── CONTACT ──────────────────────────── */
.contact { padding: 12px 0 48px; scroll-margin-top: 70px; }
.contact__inner {
  max-width: 620px; margin: 0 auto;
  background: var(--c-bg-card); border: 1px solid var(--c-border);
  border-radius: var(--r-lg); padding: 28px 28px;
}
.form-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 620px) {
  .form-pair { grid-template-columns: 1fr; }
}
.contact__title {
  font-family: var(--font-serif); font-weight: 700;
  font-size: 24px; margin: 0 0 8px;
}
.contact__intro { color: var(--c-ink-soft); margin: 0 0 20px; }
.contact__form { display: grid; gap: 12px; }
.form-row { display: flex; flex-direction: column; gap: 6px; }
.form-row label {
  font-weight: 600; font-size: 13px; color: var(--c-ink-soft);
}
.form-row input, .form-row textarea {
  padding: 10px 12px; border: 1px solid var(--c-border);
  border-radius: var(--r-md); font-size: 14px; font-family: inherit;
  background: var(--c-bg); color: var(--c-ink); resize: vertical;
}
.form-row input:focus, .form-row textarea:focus {
  outline: none; border-color: var(--c-accent-2);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--c-accent-2) 20%, transparent);
}
.form-row--submit {
  flex-direction: row; align-items: center; gap: 12px; margin-top: 8px;
}
.form-feedback { font-size: 13px; color: var(--c-ink-mute); }
.form-feedback[data-type="success"] { color: var(--c-success); }
.form-feedback[data-type="error"]   { color: var(--c-danger); }

/* ──────────────────────────── FOOTER ──────────────────────────── */
.cv-footer {
  border-top: 1px solid var(--c-border); padding: 24px 20px;
  color: var(--c-ink-mute); font-size: 13px;
}
.cv-footer__inner {
  max-width: var(--w-doc); margin: 0 auto;
  display: flex; justify-content: space-between; flex-wrap: wrap; gap: 10px;
}
.cv-footer__inner p { margin: 0; }
.cv-footer__links a { color: var(--c-ink-soft); }
.cv-footer__links a:hover { color: var(--c-accent-2); }

/* ──────────────────────────── RESPONSIVE ──────────────────────────── */
@media (max-width: 720px) {
  .cv-doc { padding: 28px 24px; }
  .hero__inner { grid-template-columns: 1fr; text-align: center; }
  .hero__photo { margin: 0 auto; }
  .hero__actions { justify-content: center; }
  .cv-doc__head { grid-template-columns: 1fr; }
  .cv-doc__contact { grid-template-columns: auto 1fr; font-size: 12px; }
  .cv-doc__section--split { grid-template-columns: 1fr; gap: 16px; }
  .cv-topbar__link { display: none; }
}

/* ──────────────────────────── PRINT / PDF 2 pages A4 ──────────────────────────── */
@page {
  size: A4; margin: 14mm 14mm 14mm 14mm;
  @bottom-right {
    content: counter(page) " / " counter(pages);
    font-family: 'Inter', system-ui, sans-serif; font-size: 9pt; color: #94a3b8;
  }
}

@media print {
  html, body { background: #fff !important; color: #0f172a !important; font-size: 10.5pt; }
  .no-print, .cv-topbar, .cv-footer, .hero, .contact, .skip-link { display: none !important; }

  .cv-main { max-width: none; padding: 0; margin: 0; }

  .cv-doc {
    background: #fff !important;
    border: none !important; border-radius: 0 !important;
    padding: 0 !important; margin: 0 !important; box-shadow: none !important;
  }

  .cv-doc__head { margin-bottom: 8pt; }
  .cv-doc__name { font-size: 22pt; }
  .cv-doc__role { font-size: 11pt; }
  .cv-doc__loc  { font-size: 9.5pt; }
  .cv-doc__contact { font-size: 9pt; grid-template-columns: auto 1fr auto 1fr; gap: 3pt 10pt; }

  .cv-doc__section { margin-bottom: 8pt; }
  .cv-doc__h { font-size: 10.5pt; padding-bottom: 1pt; margin-bottom: 4pt; border-bottom-width: 1pt; }
  .cv-doc__pitch { margin-bottom: 3pt; }
  .cv-doc__highlights li, .cv-job__bullets li, .cv-interests li { margin-bottom: 1pt; }

  .cv-job { margin-bottom: 6pt; }
  .cv-job__role { font-size: 10.5pt; }
  .cv-job__period { font-size: 9pt; }
  .cv-job__company { font-size: 10pt; margin-bottom: 1pt; }
  .cv-job__context { font-size: 9pt; margin-bottom: 2pt; }

  .cv-expertise { gap: 3pt 4pt; }
  .cv-expertise__tag {
    background: transparent; border: none; padding: 0;
    font-size: 9.5pt; color: #0f172a;
  }
  .cv-expertise__tag:not(:last-child)::after { content: " ·"; color: #64748b; margin-left: 3pt; }

  .cv-edu, .cv-langs li, .cv-interests li { font-size: 9.5pt; }
  .cv-doc__foot { display: none; }

  /* Hide reveal buttons in print, show actual value via data */
  .cv-reveal { text-decoration: none !important; color: #0f172a !important; }

  a { color: #0f172a !important; text-decoration: none; }
  a[href^="http"]::after { content: ""; }

  /* Page break rules - viser 2 pages */
  .cv-doc__head { break-inside: avoid; page-break-inside: avoid; }
  .cv-job       { break-inside: avoid; page-break-inside: avoid; }
  .cv-doc__h    { break-after:  avoid; page-break-after:  avoid; }
}

/* ══════════════════════════════════════════════════════════════════
   V3 — Layout 2 colonnes, timeline, chips
   ══════════════════════════════════════════════════════════════════ */

/* Hero v3 : identique au v2 mais sans border-bottom + tagline plus courte */
.v3-hero {
  padding: 48px 24px 32px;
  background: linear-gradient(180deg, var(--c-bg-soft) 0%, var(--c-bg) 100%);
}
.v3-hero__inner {
  max-width: 900px; margin: 0 auto;
  display: grid; grid-template-columns: auto 1fr; gap: 28px; align-items: center;
}
.v3-hero__photo {
  width: 200px; height: 200px; border-radius: 50%; overflow: hidden;
  background: var(--c-accent-soft);
  display: flex; align-items: center; justify-content: center;
  border: 3px solid #fff; box-shadow: 0 4px 12px rgba(15,23,42,0.12);
}
.v3-hero__photo img { width: 100%; height: 100%; object-fit: cover; }
.v3-hero__photo-fallback {
  font-size: 38px; font-weight: 700; color: var(--c-accent);
  font-family: var(--font-serif);
}
.v3-hero__eyebrow { margin: 0 0 6px; color: var(--c-ink-mute); font-size: 13px; text-transform: uppercase; letter-spacing: 0.08em; }
.v3-hero__name { margin: 0 0 4px; font-family: var(--font-serif); font-size: 32px; font-weight: 700; color: var(--c-ink); }
.v3-hero__title { margin: 0 0 10px; font-size: 17px; color: var(--c-accent); font-weight: 600; }
.v3-hero__tagline { margin: 0 0 18px; color: var(--c-ink-soft); font-size: 15px; line-height: 1.55; max-width: 58ch; }
.v3-hero__actions { display: flex; gap: 10px; flex-wrap: wrap; }

/* Boutons (hero, contact form, reveal) — style cohérent */
.btn-filled, .btn-tonal {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 10px 18px; border-radius: var(--r-md);
  font-weight: 600; font-size: 14px; font-family: inherit;
  cursor: pointer; border: 1px solid transparent;
  text-decoration: none; transition: background 0.15s ease, border-color 0.15s ease;
}
.btn-filled {
  background: var(--c-accent); color: #fff;
}
.btn-filled:hover {
  background: color-mix(in srgb, var(--c-accent) 88%, #000);
  color: #fff; text-decoration: none;
}
.btn-tonal {
  background: var(--c-accent-soft); color: var(--c-accent);
  border-color: transparent;
}
.btn-tonal:hover {
  background: color-mix(in srgb, var(--c-accent-soft) 75%, var(--c-accent));
  color: var(--c-accent); text-decoration: none;
}

/* Reveal buttons (email / phone) — discret, inline */
.cv-reveal {
  display: inline-block;
  padding: 2px 10px; border-radius: 999px;
  border: 1px solid var(--c-border); background: transparent;
  color: var(--c-accent); font: inherit; font-size: 12.5px; font-weight: 600;
  cursor: pointer; transition: background 0.15s ease, border-color 0.15s ease;
}
.cv-reveal:hover {
  background: var(--c-accent-soft); border-color: var(--c-accent-soft);
}
.cv-reveal--revealed { padding: 0; border: none; background: transparent; font-weight: 500; }

/* Document v3 */
.v3-doc {
  max-width: 900px; margin: 24px auto 8px; padding: 40px;
  scroll-margin-top: 70px;
  background: #fff; border: 1px solid var(--c-border); border-radius: var(--r-lg);
  box-shadow: 0 1px 2px rgba(0,0,0,0.03), 0 1px 20px rgba(15,23,42,0.04);
  color: var(--c-ink);
}

/* En-tête bandeau */
.v3-doc__head {
  display: grid; grid-template-columns: 1fr auto; gap: 20px;
  padding-bottom: 18px; margin-bottom: 22px;
  border-bottom: 3px solid var(--c-accent);
}
.v3-doc__photo { display: none; }
.v3-doc__name { font-family: var(--font-serif); font-size: 28px; font-weight: 700; margin: 0 0 2px; color: var(--c-ink); }
.v3-doc__role { margin: 0 0 6px; font-size: 15px; color: var(--c-accent); font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; }
.v3-doc__tag  { margin: 0; color: var(--c-ink-soft); font-size: 14px; line-height: 1.5; max-width: 52ch; }
.v3-doc__contact { list-style: none; margin: 0; padding: 0; font-size: 12.5px; display: flex; flex-direction: column; gap: 4px; color: var(--c-ink-soft); }
.v3-doc__contact li { display: block; }
.v3-doc__contact a { color: var(--c-ink-soft); }
.v3-doc__contact a:hover { color: var(--c-accent); }

/* Grille deux colonnes */
.v3-doc__grid {
  display: grid; grid-template-columns: 2fr 1fr; gap: 32px;
}
.v3-doc__side { display: flex; flex-direction: column; gap: 18px; }

/* Sections */
.v3-section { margin-bottom: 22px; }
.v3-h {
  font-family: var(--font-serif); font-weight: 700;
  font-size: 15px; color: var(--c-accent);
  margin: 0 0 10px; padding: 0;
  text-transform: uppercase; letter-spacing: 0.08em;
  border-left: 3px solid var(--c-accent); padding-left: 10px;
}
.v3-h--side {
  font-size: 12.5px;
  border-left: none; padding-left: 0;
  border-bottom: 1px solid var(--c-border); padding-bottom: 4px;
}

/* Pitch + highlights */
.v3-pitch { margin: 0 0 10px; color: var(--c-ink-soft); font-size: 14px; line-height: 1.6; }
.v3-highlights { margin: 0; padding-left: 18px; font-size: 14px; }
.v3-highlights li { margin-bottom: 4px; line-height: 1.5; }

/* Timeline */
.v3-timeline { position: relative; padding-left: 22px; }
.v3-timeline::before {
  content: ""; position: absolute; left: 6px; top: 6px; bottom: 6px;
  width: 2px; background: var(--c-border);
}
.v3-job { position: relative; margin-bottom: 16px; }
.v3-job:last-child { margin-bottom: 0; }
.v3-job__dot {
  position: absolute; left: -22px; top: 6px;
  width: 13px; height: 13px; border-radius: 50%;
  background: var(--c-accent); border: 2px solid #fff;
  box-shadow: 0 0 0 2px var(--c-accent);
}
.v3-job__head {
  display: flex; justify-content: space-between; align-items: baseline; gap: 10px;
  margin-bottom: 2px;
}
.v3-job__role { margin: 0; font-size: 15px; font-weight: 700; color: var(--c-ink); }
.v3-job__period { font-size: 12px; color: var(--c-ink-mute); white-space: nowrap; font-variant-numeric: tabular-nums; }
.v3-job__company { margin: 0 0 3px; font-size: 13.5px; color: var(--c-ink-soft); }
.v3-job__loc { color: var(--c-ink-mute); }
.v3-job__context { margin: 0 0 6px; font-size: 13px; color: var(--c-ink-mute); font-style: italic; }
.v3-job__bullets { margin: 4px 0 0; padding-left: 18px; font-size: 13.5px; }
.v3-job__bullets li { margin-bottom: 2px; line-height: 1.45; }

/* Education */
.v3-edu { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px 18px; }
.v3-edu__item { font-size: 14px; }
.v3-edu__year { display: block; font-size: 12px; color: var(--c-ink-mute); font-variant-numeric: tabular-nums; margin-bottom: 2px; }
.v3-edu__degree { display: block; line-height: 1.3; }
.v3-edu__meta { display: block; color: var(--c-ink-mute); font-size: 12.5px; margin-top: 2px; line-height: 1.35; }

/* Sidebar : chips / certs / langs / interests */
.v3-chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 5px; }
.v3-chips li {
  font-size: 12px; padding: 3px 8px;
  background: var(--c-accent-soft); color: var(--c-accent);
  border: 1px solid var(--c-accent); border-radius: 999px;
  font-weight: 500;
}
.v3-certs, .v3-langs, .v3-interests, .v3-strengths { list-style: none; margin: 0; padding: 0; font-size: 13px; display: flex; flex-direction: column; gap: 5px; }
.v3-strengths { counter-reset: strength; gap: 6px; }
.v3-strengths li {
  counter-increment: strength;
  position: relative;
  padding-left: 20px;
  line-height: 1.35;
}
.v3-strengths li::before {
  content: counter(strength) ".";
  position: absolute; left: 0; top: 0;
  color: var(--c-accent); font-weight: 700;
}
.v3-strengths__desc {
  display: block;
  color: var(--c-ink-mute);
  font-size: 12px;
  line-height: 1.3;
  margin-top: 1px;
}
.v3-strengths__source { margin: 0 0 6px; font-size: 11.5px; color: var(--c-ink-mute); line-height: 1.35; }
.v3-certs li { display: flex; gap: 6px; }
.v3-certs li strong { color: var(--c-accent); min-width: 56px; flex-shrink: 0; }
.v3-langs li strong { display: inline-block; min-width: 68px; }
.v3-langs li span { color: var(--c-ink-mute); }
.v3-verticals { margin: 0; font-size: 13px; color: var(--c-ink-soft); line-height: 1.55; }

/* Footer doc */
.v3-doc__foot {
  margin-top: 24px; padding-top: 12px; border-top: 1px solid var(--c-border);
  color: var(--c-ink-mute); font-size: 12px; text-align: center;
}

/* Responsive */
@media (max-width: 860px) {
  .v3-doc { padding: 24px; }
  .v3-doc__head { grid-template-columns: 1fr; }
  .v3-doc__grid { grid-template-columns: 1fr; gap: 20px; }
  .v3-hero__inner { grid-template-columns: 1fr; text-align: center; }
  .v3-hero__photo { margin: 0 auto; }
  .v3-hero__actions { justify-content: center; }
}

/* Print v3 */
@media print {
  .v3-hero, .contact { display: none !important; }
  .v3-doc {
    max-width: none; margin: 0; padding: 0;
    border: none; box-shadow: none; border-radius: 0;
  }
  .v3-doc__head {
    padding-bottom: 8pt; margin-bottom: 10pt; border-bottom: 2pt solid #1f2937;
    grid-template-columns: 1fr auto;
    grid-template-areas:
      "ident photo"
      "contact contact";
    gap: 10pt 16pt;
  }
  .v3-doc__ident   { grid-area: ident; }
  .v3-doc__photo   {
    grid-area: photo;
    display: block;
    width: 70pt; height: 70pt;
    border-radius: 50%;
    object-fit: cover;
  }
  .v3-doc__contact {
    grid-area: contact;
    display: block;
    font-size: 9pt;
    line-height: 1.45;
  }
  .v3-doc__contact li { display: inline; }
  .v3-doc__contact li::after { content: ' · '; color: #94a3b8; margin: 0 2pt; }
  /* Force un retour ligne avant linkedin : line 1 = email/phone/website,
     line 2 = linkedin/location. Évite le wrap moche avec "· Barcelona" en
     tête de ligne 2. */
  .v3-doc__contact li:nth-child(3)::after { content: none; }
  .v3-doc__contact li:nth-child(4)::before { content: '\A'; white-space: pre; }
  .v3-doc__contact li:last-child::after { content: none; }
  .v3-doc__name { font-size: 20pt; }
  .v3-doc__role { font-size: 10.5pt; }
  .v3-doc__tag  { font-size: 9.5pt; }
  .v3-doc__contact { font-size: 9pt; gap: 3pt; }
  /* CSS Grid pagine mal en print (Chrome/Safari poussent tout le grid si une
     colonne déborde). On stack main + side verticalement, et la sidebar
     passe en flex horizontal pour économiser de la place verticale. */
  .v3-doc__grid { display: block; }
  .v3-doc__main { width: 100%; }
  .v3-doc__side {
    width: 100%;
    display: grid; grid-template-columns: 1fr 1fr 1fr;
    gap: 6pt 14pt;
    margin-top: 6pt; padding-top: 4pt;
    border-top: 1pt solid #cbd5e1;
  }
  .v3-doc__side .v3-section { margin: 0; break-inside: avoid; page-break-inside: avoid; }
  .v3-doc__side .v3-h--side { margin-bottom: 2pt; font-size: 8.5pt; }
  .v3-doc__side .v3-chips { gap: 3pt; }
  .v3-doc__side .v3-chips li { font-size: 7.5pt; padding: 0.5pt 4pt; }
  /* Strengths: inline name + desc en print pour économiser la hauteur */
  .v3-doc__side .v3-strengths { gap: 0; font-size: 8pt; }
  .v3-doc__side .v3-strengths li { padding-left: 11pt; line-height: 1.25; }
  .v3-doc__side .v3-strengths__source { font-size: 7.5pt; margin-bottom: 2pt; }
  .v3-doc__side .v3-strengths__desc { display: inline; font-size: 8pt; }
  .v3-doc__side .v3-strengths__desc::before { content: " — "; }
  /* Other Exp + Certs + Langs : compactés */
  .v3-doc__side .v3-certs, .v3-doc__side .v3-langs, .v3-doc__side .v3-interests { font-size: 8pt; gap: 2pt; line-height: 1.3; }
  .v3-doc__side .v3-interests li { font-size: 8pt; line-height: 1.3; }
  /* Empilement par colonne pour ne plus laisser de vide sous Verticals/Certifs.
     col1 = Expertise (haut bloc) ;
     col2 = Verticals + Other Exp + Languages ;
     col3 = Certifications + Strengths (étendu). */
  .v3-doc__side {
    grid-template-areas:
      "exp ver cert"
      "exp other strn"
      "exp lang strn";
  }
  .v3-doc__side .v3-section:nth-of-type(1) { grid-area: exp; }   /* Expertise */
  .v3-doc__side .v3-section:nth-of-type(2) { grid-area: ver; }   /* Verticals */
  .v3-doc__side .v3-section:nth-of-type(3) { grid-area: cert; }  /* Certifications */
  .v3-doc__side .v3-section:nth-of-type(4) { grid-area: strn; }  /* Strengths */
  .v3-doc__side .v3-section:nth-of-type(5) { grid-area: lang; }  /* Languages */
  .v3-doc__side .v3-section:nth-of-type(6) { grid-area: other; }/* Other Exp */
  .v3-section { margin-bottom: 10pt; }
  .v3-h { font-size: 10pt; margin-bottom: 5pt; }
  .v3-h--side { font-size: 9pt; margin-bottom: 3pt; }
  .v3-pitch, .v3-highlights, .v3-highlights li { font-size: 9.5pt; line-height: 1.45; }
  .v3-pitch { margin-bottom: 6pt; }
  .v3-highlights li { margin-bottom: 2pt; }

  .v3-timeline { padding-left: 14pt; }
  .v3-timeline::before { left: 3pt; }
  .v3-job__dot { left: -14pt; width: 7pt; height: 7pt; box-shadow: 0 0 0 1pt var(--c-accent); }
  .v3-job { margin-bottom: 7pt; break-inside: avoid; page-break-inside: avoid; }
  .v3-job__head { margin-bottom: 2pt; }
  .v3-job__role { font-size: 10pt; line-height: 1.3; }
  .v3-job__period { font-size: 8.5pt; }
  .v3-job__company { font-size: 9pt; margin: 0 0 2pt; }
  .v3-job__context { font-size: 8.5pt; margin: 0 0 3pt; line-height: 1.4; }
  .v3-job__bullets { font-size: 9pt; line-height: 1.4; margin: 0; }
  .v3-job__bullets li { margin-bottom: 1pt; }

  .v3-edu { gap: 6pt 12pt; }
  .v3-edu__item { font-size: 9pt; }
  .v3-edu__year { font-size: 8pt; margin-bottom: 1pt; }
  .v3-edu__degree { font-size: 9pt; line-height: 1.25; }
  .v3-edu__meta { font-size: 8.5pt; margin-top: 1pt; line-height: 1.25; }

  .v3-chips li { font-size: 8pt; padding: 1pt 5pt; background: transparent; color: #1f2937; border-color: #94a3b8; }
  .v3-certs, .v3-langs, .v3-interests { font-size: 9pt; }

  .v3-doc__head { break-inside: avoid; page-break-inside: avoid; }
  .v3-h         { break-after:  avoid; page-break-after:  avoid; }
  .v3-doc__foot { display: none; }

  .cv-reveal { display: none !important; }
  .cv-reveal-print { display: inline !important; color: #0f172a; }
  a { color: #0f172a !important; text-decoration: none; }
}
.cv-reveal-print { display: none; }
.u-hidden { display: none !important; }

