/* AFC 13 — the full CV (round 6), cv-afc-2026.html.
   Loaded after site/site.css + site/pages.css (the shared page shell: brand, dock, veil, footer, .pg-seg, reveals,
   line masks, speed masks). These rules are the CV's own layout; site/cv.js adds the behaviour (numbers that spring
   up once, the series filter, the dock's section marker, the print button). Motion law = apple-design (§ refers to
   it) + ~/afc-website/Motion.md. Print: A4 at the bottom of this file (no button needed; the browser's print works).

   Page map:  .cv-intro (name, facts, the honour) → .cv-next (2027: the two teams, a night plate in the site's own
   colours, no team colours) → #numeros (FE + FIA WEC verified numbers, one photo per championship) → #titulos →
   #carreira (year by year, filter by series) → .cv-notes (editorial notes + sources). */

/* ── intro: the name on the left, the facts on the right, both from the top (the name is read first) ── */
.cv-intro { grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr); column-gap: clamp(32px, 5vw, 96px); align-items: start; }
.cv-intro-main { display: grid; gap: clamp(18px, 2.4vw, 30px); justify-items: start; min-width: 0; }
.cv-intro-main h1 { max-width: none; }
.cv-intro-side { display: grid; gap: clamp(22px, 2.6vw, 32px); min-width: 0; }
.cv-intro-side .t-lede { max-width: 42ch; }
.cv-stamp { font-variant-numeric: tabular-nums; }
.cv-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 26px; }
.cv-actions .link-arrow { font-size: var(--t-subhead); }

.cv-facts {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(20px, 2.4vw, 36px);
  margin: 0; border-top: 1px solid var(--line-2);
}
.cv-fact { display: grid; gap: 5px; align-content: start; min-width: 0; padding: 13px 0 14px; border-bottom: 1px solid var(--line); }
.cv-fact.is-wide { grid-column: 1 / -1; }
.cv-fact dt { color: var(--mute); }
.cv-fact dd { margin: 0; font-size: var(--t-callout); line-height: 1.35; color: var(--ink); overflow-wrap: anywhere; }
.cv-fact dd a { position: relative; color: inherit; }
.cv-fact dd a::after { content: ''; position: absolute; left: 0; right: 0; top: 50%; height: 44px; translate: 0 -50%; }   /* 44px hit area */

/* the honour: an elegant line, not a banner (one Apex detail) */
.cv-honour { position: relative; display: grid; gap: 6px; padding-left: 22px; }
.cv-honour::before {
  content: ''; position: absolute; left: 3px; top: .2em; bottom: .2em; width: 3px; border-radius: 2px;
  background: var(--apex); transform: skewX(-12deg);
}
.cv-honour p { margin: 0; }
.cv-honour .t-label { color: var(--mute); }
.cv-honour-title { font-size: clamp(1.14rem, 1rem + .5vw, 1.42rem); color: var(--ink); }
.cv-honour-note { font-size: var(--t-subhead); line-height: var(--lh-subhead); color: var(--ink-2); max-width: 46ch; }

/* ── 2027: the two teams on one night plate, in the site's own colours (neither brand leans on the other) ── */
.cv-next {
  margin-top: clamp(52px, 6.4vw, 96px); border-radius: clamp(22px, 2.6vw, 34px);
  padding: clamp(26px, 3.6vw, 56px) clamp(22px, 3.6vw, 56px) clamp(28px, 3.8vw, 60px); overflow: clip;
}
.cv-next-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 24px; margin-bottom: clamp(26px, 3.4vw, 48px); }
.cv-next-head .t-label { margin: 0; color: var(--ink-2); }
.cv-next-head .cv-next-year { color: var(--apex); }
.cv-next-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.cv-team-col { display: grid; gap: 12px; align-content: start; min-width: 0; padding: 0 0 0 clamp(22px, 3.4vw, 56px); border-left: 1px solid var(--line); }
.cv-team-col:first-child { padding: 0 clamp(22px, 3.4vw, 56px) 0 0; border-left: 0; }
.cv-team-col p { margin: 0; }
.cv-team-col .t-label { color: var(--mute); }
.cv-team {
  margin: 0; font-family: var(--display); text-transform: uppercase; text-wrap: balance;
  font-size: clamp(1.8rem, 1.05rem + 2.1vw, 3.2rem); line-height: .92; font-weight: 790; font-stretch: 76%;
  letter-spacing: 0; font-synthesis: none; color: var(--ink);
}
.cv-team-spec { font-size: var(--t-subhead); line-height: 1.45; color: var(--ink); letter-spacing: .01em; }
.cv-team-spec b { font-weight: 600; font-family: var(--mono); font-variant-numeric: tabular-nums; letter-spacing: 0; }
.cv-team-note { font-size: var(--t-callout); line-height: 1.5; color: var(--ink-2); max-width: 46ch; }

/* ── sections ── */
.cv-sec { margin-top: clamp(104px, 13vw, 184px); }
.cv-sec-head { display: grid; gap: clamp(16px, 2.2vw, 28px); justify-items: start; margin-bottom: clamp(40px, 5.2vw, 76px); }
.cv-sec-head .sec-tag { margin: 0; }
.cv-sec-head .t-h2 { max-width: 15ch; }

/* ── the numbers: one column per championship, a photo of its title moment over its four counts ── */
.cv-progs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(44px, 5vw, 88px) clamp(28px, 4vw, 72px); }
.cv-prog { display: grid; gap: clamp(16px, 1.8vw, 24px); align-content: start; min-width: 0; }
.cv-photo { margin: 0 0 clamp(4px, .6vw, 10px); }
.cv-photo-frame { display: block; position: relative; overflow: hidden; border-radius: 12px; aspect-ratio: 16 / 10; background: var(--silver); }
.cv-photo-frame img { width: 100%; height: 100%; object-fit: cover; }
.cv-photo figcaption { margin-top: 10px; color: var(--mute); }
.cv-prog-head { display: grid; gap: 8px; }
.cv-prog-head .t-label { margin: 0; color: var(--mute); }
.cv-prog-name {
  margin: 0; font-family: var(--display); text-transform: uppercase; font-size: clamp(2.1rem, 1.2rem + 2.4vw, 3.6rem);
  line-height: .9; font-weight: 810; font-stretch: 68%; letter-spacing: -.002em; font-synthesis: none;
}
.cv-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0; border-block: 1px solid var(--line-2); }
.cv-stat { display: flex; flex-direction: column; gap: 9px; min-width: 0; padding: 16px 0 14px clamp(10px, 1.2vw, 20px); border-left: 1px solid var(--line); }
.cv-stat:first-child { padding-left: 0; border-left: 0; }
.cv-stat dt { order: 2; color: var(--mute); white-space: nowrap; }
.cv-stat dd { order: 1; margin: 0; }
.cv-num {
  display: block; font-family: var(--display); font-size: clamp(2.7rem, 1.3rem + 3vw, 5rem); line-height: .8;
  font-weight: 820; font-stretch: 64%; letter-spacing: -.004em; color: var(--ink);
  font-variant-numeric: tabular-nums; font-synthesis: none;
}
.cv-best { display: grid; gap: 6px; }
.cv-best p { margin: 0; }
.cv-best .t-label { color: var(--mute); }
.cv-best-title { font-size: clamp(1.2rem, 1rem + .7vw, 1.6rem); color: var(--ink); }
.cv-best-team { font-size: var(--t-subhead); color: var(--ink-2); }
.cv-extra { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.cv-extra li { position: relative; padding-left: 20px; font-size: var(--t-callout); line-height: 1.45; color: var(--ink-2); max-width: 54ch; }
.cv-extra li::before { content: ''; position: absolute; left: 0; top: .66em; width: 10px; height: 2px; background: var(--apex); }
.cv-footnote { margin: clamp(30px, 3.6vw, 48px) 0 0; max-width: 78ch; font-size: var(--t-footnote); line-height: var(--lh-footnote); letter-spacing: var(--tr-footnote); color: var(--mute); }

/* ── titles and honours: an editorial list on hairlines ── */
.cv-titles { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line-2); }
.cv-title {
  display: grid; grid-template-columns: clamp(84px, 8.6vw, 128px) minmax(0, 1.25fr) minmax(0, 1fr);
  gap: 6px clamp(16px, 2.4vw, 40px); align-items: baseline; padding: clamp(15px, 1.5vw, 21px) 0; border-bottom: 1px solid var(--line);
}
.cv-title-y { position: relative; font-family: var(--mono); font-size: var(--t-subhead); letter-spacing: 0; font-variant-numeric: tabular-nums; color: var(--ink-2); }
.cv-title-t { margin: 0; font-size: clamp(1.06rem, .94rem + .46vw, 1.36rem); color: var(--ink); }
.cv-title-c { margin: 0; font-size: var(--t-subhead); line-height: var(--lh-subhead); color: var(--mute); }
.cv-title.is-major .cv-title-y { color: var(--ink); font-weight: 500; }
.cv-title.is-major .cv-title-y::before {
  content: ''; position: absolute; left: calc(-1 * clamp(14px, 1.4vw, 20px)); top: 50%; width: 7px; height: 2px;
  background: var(--apex); transform: translateY(-50%) skewX(-24deg);
}
.cv-title.is-major .cv-title-t { font-weight: 680; }

/* ── career, year by year ── */
.cv-career-intro { margin: calc(-1 * clamp(14px, 2vw, 32px)) 0 clamp(28px, 3.4vw, 44px); max-width: 60ch; font-size: var(--t-callout); line-height: var(--lh-callout); color: var(--ink-2); }
/* the filter rides with the reader through the long list: a small material capsule, sticky under the floating chrome
   (content passes under it, §12); on a narrow phone it scrolls sideways inside itself, never the page.
   .cv-filter-dock is the sticky piece (full column width); its ::before is a scroll-edge band that carries the page's
   veil down past the capsule, so a career line never runs unfaded beside it and nothing ghosts under the brand. The band
   follows --cv-stuck (cv.js, 0 → 1 over the last 40px before the capsule sticks, 1:1 with the scroll, no timers).
   The bar keeps its own overflow-x for the phone scroll; the band lives outside it so it is not clipped. */
.cv-filter-dock {
  --cv-stick: calc(var(--pg-head-h) - 6px);
  --cv-band-fade: 30px;
  position: sticky; z-index: 6; top: var(--cv-stick); margin: 0 0 12px;
}
.cv-filter-dock::before {
  content: ''; position: absolute; z-index: -1; pointer-events: none;
  top: calc(-1 * var(--cv-stick)); bottom: calc(-1 * var(--cv-band-fade)); left: calc(50% - 50vw); width: 100vw;
  background-color: rgba(236, 239, 245, .96);   /* a touch denser than the veil: the big year numbers never ghost through */
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  -webkit-mask-image: linear-gradient(to bottom, #000, #000 calc(100% - var(--cv-band-fade)), rgba(0, 0, 0, .55) calc(100% - var(--cv-band-fade) * .6), transparent);
  mask-image: linear-gradient(to bottom, #000, #000 calc(100% - var(--cv-band-fade)), rgba(0, 0, 0, .55) calc(100% - var(--cv-band-fade) * .6), transparent);
  opacity: var(--cv-stuck, 0);
}
.cv-filter-bar {
  position: relative;
  width: fit-content; max-width: 100%; margin: 0; padding: 4px; border-radius: 999px;
  overflow-x: auto; overscroll-behavior-x: contain; scrollbar-width: none; -webkit-overflow-scrolling: touch;
  background-color: var(--mat-thick);
  -webkit-backdrop-filter: var(--mat-thick-filter); backdrop-filter: var(--mat-thick-filter);
  box-shadow: var(--mat-edge), inset 0 0 0 .5px rgba(16, 19, 28, .08), var(--shadow-s);
}
.cv-filter-bar::-webkit-scrollbar { display: none; }
.cv-filter-bar .pg-seg { --c-fill: transparent; max-width: none; padding: 0; height: 40px; }
@media (pointer: coarse) { .cv-filter-bar .pg-seg { height: 44px; } }
.cv-filter-bar .pg-seg-thumb { top: 0; bottom: 0; }
.cv-count { margin: 0 0 clamp(22px, 2.6vw, 34px); font-size: var(--t-footnote); color: var(--ink-2); }

.cv-years { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line-2); }
.cv-year {
  display: grid; grid-template-columns: clamp(108px, 13vw, 210px) minmax(0, 1fr); gap: 10px clamp(20px, 3vw, 56px);
  align-items: start; padding: clamp(18px, 2vw, 28px) 0; border-bottom: 1px solid var(--line-2);
}
.cv-year-n {
  margin: 0; font-family: var(--display); font-size: clamp(2.3rem, 1.3rem + 2.5vw, 4.2rem); line-height: .86;
  font-weight: 800; font-stretch: 66%; letter-spacing: -.004em; font-variant-numeric: tabular-nums; color: var(--ink);
  font-synthesis: none; white-space: nowrap;
}
.cv-year-n.is-range { font-size: clamp(1.7rem, 1rem + 1.8vw, 3rem); }
.cv-year.is-next .cv-year-n { color: var(--apex-deep); }
.cv-es { list-style: none; margin: 0; padding: 0; display: grid; min-width: 0; }
.cv-e {
  display: grid; grid-template-columns: clamp(112px, 10.4vw, 158px) minmax(0, 1fr); gap: 4px clamp(14px, 1.6vw, 26px);
  align-items: baseline; padding: 11px 0; border-top: 1px solid var(--line);
}
.cv-e:first-child { border-top: 0; padding-top: 6px; }
.cv-tag { color: var(--mute); }
.cv-e p { margin: 0; max-width: 70ch; font-size: clamp(.96rem, .92rem + .14vw, 1.04rem); line-height: 1.5; color: var(--ink-2); text-wrap: pretty; }
.cv-e.is-key p { color: var(--ink); font-weight: 560; }
/* the filter: what does not match goes at once (§1); what stays materializes again (cv.js .cv-pop) */
.cv-e.is-out, .cv-year.is-out { display: none; }
.cv-year.cv-pop { opacity: 0; translate: 0 10px; }
.cv-year.cv-pop.cv-pop-in {
  opacity: 1; translate: none;
  transition: opacity .45s var(--ease-reveal), translate .6s var(--ease-reveal); transition-delay: var(--k, 0s);
}

/* ── notes and sources ── */
.cv-notes {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); gap: clamp(28px, 4vw, 72px);
  margin-top: clamp(88px, 11vw, 150px); padding-top: clamp(24px, 3vw, 36px); border-top: 1px solid var(--line-2);
}
.cv-note { display: grid; gap: 14px; align-content: start; min-width: 0; }
.cv-note h2 { margin: 0; color: var(--mute); }
.cv-note p { margin: 0; max-width: 62ch; font-size: var(--t-footnote); line-height: 1.5; color: var(--ink-2); }
.cv-sources { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.cv-sources a {
  position: relative; display: inline-flex; align-items: center; gap: 8px; min-height: 32px; padding: 4px 0;
  font-size: var(--t-footnote); line-height: 1.35; color: var(--ink-2); text-decoration: none;
  transition: color .4s var(--ease-out), scale var(--press-t) ease-out;
}
.cv-sources a::after { content: ''; position: absolute; left: 0; right: 0; top: 50%; height: 44px; translate: 0 -50%; }   /* 44px hit area */
.cv-sources a svg { width: 11px; height: 11px; flex: none; color: var(--mute); transition: transform .45s var(--ease-out), color .4s var(--ease-out); }
@media (hover: hover) {
  .cv-sources a:hover { color: var(--apex-deep); }
  .cv-sources a:hover svg { color: var(--apex-deep); transform: translate(2px, -2px); }
}
.cv-sources a:active { color: var(--apex-deep); }
.cv-print-only { display: none; }

/* ── tablet / phone ── */
@media (max-width: 960px) {
  /* one column: the name, then who he is and the facts, the honour, and the two links last */
  .cv-intro { grid-template-columns: minmax(0, 1fr); row-gap: clamp(22px, 4vw, 36px); }
  .cv-intro-main, .cv-intro-side { display: contents; }
  .cv-stamp { order: 1; } .cv-intro h1 { order: 2; } .cv-intro-side .t-lede { order: 3; }
  .cv-facts { order: 4; } .cv-honour { order: 5; } .cv-actions { order: 6; }
  .cv-progs { grid-template-columns: minmax(0, 1fr); }
  .cv-title { grid-template-columns: clamp(76px, 12vw, 104px) minmax(0, 1fr); }
  .cv-title-c { grid-column: 2; }
  .cv-notes { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 720px) {
  .cv-next-grid { grid-template-columns: minmax(0, 1fr); }
  .cv-team-col, .cv-team-col:first-child { padding: 0; border-left: 0; }
  .cv-team-col + .cv-team-col { margin-top: 26px; padding-top: 26px; border-top: 1px solid var(--line); }
}
@media (max-width: 600px) {
  .cv-facts { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .cv-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cv-stat:nth-child(3) { padding-left: 0; border-left: 0; }
  .cv-stat:nth-child(n + 3) { border-top: 1px solid var(--line); }
  .cv-num { font-size: clamp(2.9rem, 1.6rem + 7vw, 3.8rem); }
  .cv-title { grid-template-columns: minmax(0, 1fr); gap: 4px; }
  .cv-title-c { grid-column: auto; }
  .cv-title.is-major .cv-title-y::before { display: none; }
  .cv-year { grid-template-columns: minmax(0, 1fr); gap: 8px; padding: 18px 0 12px; }
  .cv-year-n, .cv-year-n.is-range { font-size: 2.3rem; }
  .cv-e { grid-template-columns: minmax(0, 1fr); gap: 3px; padding: 10px 0; }
  .cv-e:first-child { padding-top: 2px; }
  .cv-filter-bar { max-width: calc(100% + var(--gutter)); margin-right: calc(-1 * var(--gutter)); border-radius: 999px 0 0 999px; }
}
@media (max-width: 380px) {
  .cv-stat dt { white-space: normal; }
  .cv-fact dt { font-stretch: 100%; letter-spacing: .08em; }   /* "Nacionalidade" fits its half column at 320 */
}

/* ── accessibility (§14) ── */
@media (prefers-reduced-motion: reduce) {
  .cv-year.cv-pop { translate: none; }
  .cv-year.cv-pop.cv-pop-in { transition: opacity .25s ease; }
  .cv-sources a svg { transition: none; }
}
@media (prefers-reduced-transparency: reduce) {
  .cv-filter-bar { background-color: var(--mat-thick); }
  .cv-filter-dock::before { background-color: var(--pearl); -webkit-backdrop-filter: none; backdrop-filter: none; }
}
@media (prefers-contrast: more) {
  .cv-filter-dock::before { background-color: var(--pearl); -webkit-backdrop-filter: none; backdrop-filter: none; }
  .cv-filter-bar { outline: 1px solid var(--line-2); outline-offset: -1px; }
  .cv-filter-bar .pg-seg { outline: none; }   /* one ring: the bar's */
  .cv-honour::before, .cv-extra li::before { background: var(--apex-deep); }
}

/* ── print: a clean A4 document from any browser (the shell already hides its chrome) ── */
@media print {
  @page { size: A4; margin: 13mm 14mm 14mm; }
  html { font-size: 9.4pt !important; scroll-padding: 0; }
  :root {
    --ink: #111; --ink-2: #242933; --mute: #4e5462; --line: rgba(0, 0, 0, .16); --line-2: rgba(0, 0, 0, .34);
    --apex-deep: #c02a10; --pg-top: 0px;
  }
  body, .pg-main, .ground { background: #fff !important; background-image: none !important; }
  body { color: #111; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .pg-main { padding: 0 !important; min-height: 0; }
  .wrap { max-width: none; }
  a { text-decoration: none; color: inherit; }
  .cv-actions, .cv-filter-dock, .cv-count, .cv-photo, .cv-career-intro { display: none !important; }
  .cv-e.is-out, .cv-year.is-out { display: grid !important; }
  .cv-year.cv-pop { opacity: 1 !important; translate: none !important; }

  /* head: name left, facts right, on the first lines of page 1 (the page is ~182mm wide, so the narrow-screen
     rules above apply in print too: undo the ones that matter) */
  .cv-intro { grid-template-columns: minmax(0, .95fr) minmax(0, 1fr); column-gap: 9mm; align-items: start; }
  .cv-intro-main, .cv-intro-side { display: grid; }
  .cv-intro-main { gap: 3mm; align-content: start; }
  .cv-intro-main h1 { font-size: 30pt; line-height: .88; max-width: none; }
  .cv-intro-side { gap: 3.5mm; padding: 0; }
  .cv-intro-side .t-lede { font-size: 10pt; line-height: 1.4; max-width: none; }
  .cv-fact { padding: 1.6mm 0 1.8mm; gap: .6mm; }
  .cv-fact dd { font-size: 9pt; }
  .t-label, .sec-tag { font-size: 6.6pt; letter-spacing: .12em; }
  .cv-honour { padding-left: 4mm; gap: .8mm; }
  .cv-honour-title { font-size: 10.5pt; }
  .cv-honour-note { font-size: 8.4pt; }

  /* 2027: the night plate becomes a light ruled box */
  .cv-next[data-theme="dark"] {
    --ink: #111; --ink-2: #242933; --mute: #4e5462; --line: rgba(0, 0, 0, .16); --line-2: rgba(0, 0, 0, .34); --apex: #c02a10;
    color-scheme: light; background: #fff !important; background-image: none !important; color: #111;
    margin-top: 6mm; padding: 4mm 5mm; border: .6pt solid rgba(0, 0, 0, .4); border-radius: 3mm; break-inside: avoid;
  }
  .cv-next-head { margin-bottom: 3mm; }
  .cv-next-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .cv-team-col + .cv-team-col { margin-top: 0; padding-top: 0; border-top: 0; border-left: 1px solid var(--line); }
  .cv-team { font-size: 15pt; }
  .cv-team-col { gap: 1.4mm; padding-left: 5mm; }
  .cv-team-col:first-child { padding-right: 5mm; }
  .cv-team-spec { font-size: 8.4pt; }
  .cv-team-note { font-size: 8.4pt; max-width: none; }

  .cv-sec { margin-top: 8mm; }
  .cv-sec-head { margin-bottom: 3.5mm; gap: 1.5mm; }
  .cv-sec-head .t-h2 { font-size: 17pt; max-width: none; }
  .cv-sec-head h2 .t-accent { font-size: 1em; }

  /* numbers: two columns side by side, counts in one row each */
  .cv-progs { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 7mm; }
  .cv-prog { gap: 2.6mm; break-inside: avoid; }
  .cv-prog-name { font-size: 16pt; }
  .cv-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .cv-stat { padding: 2mm 0 1.8mm 2.4mm; gap: 1.2mm; }
  .cv-stat:nth-child(3) { padding-left: 2.4mm; border-left: 1px solid var(--line); }
  .cv-stat:nth-child(n + 3) { border-top: 0; }
  .cv-stat:first-child { padding-left: 0; }
  .cv-stat dt { white-space: nowrap; }
  .cv-num { font-size: 22pt; }
  .cv-best-title { font-size: 10.5pt; }
  .cv-best-team, .cv-extra li { font-size: 8.4pt; }
  .cv-extra { gap: 1mm; }
  .cv-footnote { margin-top: 3mm; font-size: 7.4pt; }

  /* titles: compact rows; a section's heading never sits alone at the foot of a page */
  .cv-sec-head { break-after: avoid; break-inside: avoid; }
  .cv-sec#titulos { break-before: page; }   /* page 1 = who he is, 2027 and the numbers; the record starts on page 2 */
  .cv-prog-head .t-label, .cv-tag { font-stretch: 108%; letter-spacing: .08em; }
  .cv-title { grid-template-columns: 17mm minmax(0, 1.25fr) minmax(0, 1fr); gap: 1mm 5mm; padding: 1.7mm 0; break-inside: avoid; }
  .cv-title-c { grid-column: auto; }
  .cv-title-y { font-size: 8.4pt; }
  .cv-title-t { font-size: 9.6pt; }
  .cv-title-c { font-size: 8.2pt; }
  .cv-title.is-major .cv-title-y::before { left: -3.4mm; }

  /* career: year | series | line, every year kept whole */
  .cv-year { grid-template-columns: 19mm minmax(0, 1fr); gap: 1mm 5mm; padding: 2mm 0 1.6mm; break-inside: avoid; }
  .cv-year-n, .cv-year-n.is-range { font-size: 14pt; line-height: .95; }
  .cv-year-n.is-range { font-size: 10.5pt; }
  .cv-e { grid-template-columns: 27mm minmax(0, 1fr); gap: .6mm 4mm; padding: .9mm 0; }
  .cv-e:first-child { padding-top: .4mm; }
  .cv-e p { font-size: 8.8pt; line-height: 1.38; max-width: none; }

  .cv-notes { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 7mm; margin-top: 7mm; padding-top: 3mm; break-inside: avoid; }
  .cv-note { gap: 1.6mm; }
  .cv-note p { font-size: 7.6pt; }
  .cv-sources a { min-height: 0; padding: .3mm 0; font-size: 7.4pt; }
  .cv-sources a svg { display: none; }
  .cv-print-only { display: block; }
  .cv-print-foot { margin: 6mm 0 0; padding-top: 2.4mm; border-top: .6pt solid rgba(0, 0, 0, .34); font-size: 7.6pt; color: #4e5462; }
}
