/* Your CV Studio — page template. Everything here is measured in print units (mm / pt)
   so the preview, the pagination maths and the printed PDF agree exactly. */

.cv-page {
  --side-w: 38%;
  --pad-top: 18mm;
  --pad-bottom: 16mm;
  --side-pad-x: 10mm;
  --main-pad-l: 10.5mm;
  --main-pad-r: 16mm;
  --sec-gap: 7.2mm;
  --side-gap: 6.4mm;
  --role-gap: 4.6mm;
  --tl-pad: 6.2mm;
  --tl-x: 1.5mm;
  --node: 2.5mm;
  --date-lh: 12pt;
  --side-muted: color-mix(in srgb, var(--side-ink) 72%, var(--side));
  --rule-soft: color-mix(in srgb, var(--accent) 38%, #fff);

  width: var(--paper-w);
  height: var(--paper-h);
  display: grid;
  grid-template-columns: var(--side-w) 1fr;
  background: #fff;
  color: var(--ink);
  font-family: var(--f-body);
  font-size: var(--s-body);
  line-height: 1.45;
  overflow: hidden;
  position: relative;
  box-sizing: border-box;
  font-kerning: normal;
  font-variant-ligatures: common-ligatures;
  font-variant-numeric: lining-nums proportional-nums;
  text-rendering: optimizeLegibility;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}
.cv-page *, .cv-page *::before, .cv-page *::after { box-sizing: border-box; }
.cv-page p, .cv-page ul { margin: 0; padding: 0; }

.cv-side, .cv-main { display: flex; flex-direction: column; min-height: 0; min-width: 0; padding-top: var(--pad-top); padding-bottom: var(--pad-bottom); }
.cv-side { background: var(--side); color: var(--side-ink); padding-left: var(--side-pad-x); padding-right: var(--side-pad-x); }
.cv-main { padding-left: var(--main-pad-l); padding-right: var(--main-pad-r); }
.cv-page.pN .cv-side, .cv-page.pN .cv-main { padding-top: 13mm; }
.flow { flex: 1 1 auto; min-height: 0; }
.blk { display: flow-root; }

/* ---------- running head on page 2+ ---------- */
.runhead { display: flex; justify-content: space-between; align-items: baseline; gap: 4mm; padding-bottom: 2.2mm; margin-bottom: 1.6mm; border-bottom: 0.75pt solid var(--accent); flex: none; }
.rh-name { font-family: var(--f-display); font-weight: var(--w-display); font-size: 12.5pt; line-height: 1.1; color: var(--accent); white-space: nowrap; flex: none; }
.rh-meta { min-width: 0; font-family: var(--f-label); font-size: 6.6pt; letter-spacing: 0.22em; text-transform: uppercase; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rh-pg { margin-left: 3mm; color: var(--accent); }

/* ---------- name + title ---------- */
.b-name { padding-bottom: 7.5mm; }
.b-name .nm { font-family: var(--f-display); font-weight: var(--w-display); font-size: var(--s-name); line-height: 0.98; letter-spacing: var(--name-track); color: var(--name-ink); }
.b-name .nm span { display: block; white-space: nowrap; }
.b-name .nm .n2 { margin-top: 0.04em; }
.b-name.align-center { text-align: center; }
.b-name.case-upper .nm { text-transform: uppercase; }
.b-name.case-smallcaps .nm { font-variant-caps: small-caps; }
.b-name .ti { font-family: var(--f-label); font-weight: 500; font-size: 7.6pt; line-height: 1.55; letter-spacing: 0.3em; text-transform: uppercase; margin-top: 4.6mm; color: var(--side-ink); }
.b-name-main { padding-bottom: 1mm; }
.b-name-main .ti { color: var(--muted); margin-top: 3.4mm; }

/* ---------- photo ---------- */
.b-photo { padding-bottom: 7mm; }
.b-photo img { display: block; width: 56%; aspect-ratio: 1; object-fit: cover; border-radius: 50%; margin: 0 auto; }
.b-photo.align-left img { margin-left: 0; width: 50%; }

/* ---------- section headings ---------- */
.b-h { padding-top: var(--sec-gap); padding-bottom: 3.6mm; break-after: avoid; }
.b-h.first { padding-top: 0; }
.b-h .h { font-family: var(--f-label); font-weight: 600; font-size: 12pt; line-height: 1.2; letter-spacing: 0.2em; text-transform: uppercase; color: var(--accent); padding-bottom: 2mm; border-bottom: 0.75pt solid var(--accent); hyphens: auto; -webkit-hyphens: auto; overflow-wrap: break-word; }
.cv-side .b-h { padding-top: var(--side-gap); padding-bottom: 3mm; }
.cv-side .b-h.first { padding-top: 0; }
.cv-side .b-h .h { font-size: 9.2pt; letter-spacing: 0.22em; color: var(--side-head); border-bottom-color: var(--side-rule); padding-bottom: 1.6mm; }

/* technical: mono label with a square marker */
.h-mono .b-h .h { font-weight: 500; font-size: 10pt; letter-spacing: 0.1em; border-bottom-color: var(--rule-soft); }
.h-mono .b-h .h::before { content: ''; display: inline-block; width: 4.5pt; height: 4.5pt; background: var(--accent); margin-right: 6pt; vertical-align: 1pt; }
.h-mono .cv-side .b-h .h { font-size: 8.4pt; }
.h-mono .cv-side .b-h .h::before { background: var(--side-head); }
/* legal: small capitals over a double rule */
.h-smallcaps .b-h .h { font-weight: 600; text-transform: none; font-variant-caps: all-small-caps; font-size: 14.5pt; letter-spacing: 0.12em; border-bottom: 2.2pt double var(--accent); padding-bottom: 1.4mm; }
.h-smallcaps .cv-side .b-h .h { font-size: 12pt; border-bottom-width: 2pt; }
/* creative + trades: short accent bar instead of a full rule */
.h-bar .b-h .h { border-bottom: 0; padding-bottom: 0; }
.h-bar .b-h .h::after { content: ''; display: block; width: 10mm; height: 2.4pt; margin-top: 2mm; background: var(--accent); }
.h-bar .cv-side .b-h .h::after { background: var(--side-head); width: 8mm; height: 2pt; }

/* ---------- body text ---------- */
.b-text { padding-bottom: 0; }
.b-text.cont { padding-top: 2.4mm; }
.b-text p { text-wrap: pretty; }
.justify .cv-main .b-text p { text-align: justify; text-align-last: left; hyphens: auto; -webkit-hyphens: auto; hyphenate-limit-chars: 7 3 3; }
.cv-side .b-text { font-size: 0.93em; line-height: 1.4; }

/* ---------- bullets ---------- */
.bul { list-style: none; }
.bul li { position: relative; padding-left: 3.8mm; padding-top: 1.1pt; }
.bul li::before { content: ''; position: absolute; left: 0.5mm; top: calc(1.1pt + 0.725em - 1.4pt); width: 2.8pt; height: 2.8pt; border-radius: 50%; background: var(--accent); }
.b-bul { padding-bottom: 0.4mm; }
.b-cols .bul { columns: 2; column-gap: 7mm; }
.b-cols .bul li { break-inside: avoid; }
.num { font-weight: 700; color: var(--accent); }

/* ---------- experience timeline ---------- */
.tl { position: relative; padding-left: var(--tl-pad); }
.tl::before { content: ''; position: absolute; left: calc(var(--tl-x) - 0.375pt); width: 0.75pt; top: 0; bottom: 0; background: var(--accent); }
.tl-first::before, .tl-head.first::before { top: calc(var(--date-lh) / 2); }
.tl-end { padding-bottom: var(--role-gap); }
.tl-last::before { bottom: var(--role-gap); }
.tl-last.tl-head.first::before, .tl-first.tl-last::before { bottom: var(--role-gap); }
.r-date, .r-title, .r-org { position: relative; }
.node { position: absolute; left: calc(var(--tl-x) - var(--tl-pad) - var(--node) / 2); top: 50%; width: var(--node); height: var(--node); margin-top: calc(var(--node) / -2); border: 0.9pt solid var(--accent); border-radius: 50%; background: #fff; }
.r-date { font-family: var(--f-label); font-weight: 700; font-size: 7.8pt; line-height: var(--date-lh); letter-spacing: 0.12em; text-transform: uppercase; color: var(--accent); font-variant-numeric: lining-nums tabular-nums; }
.r-title { font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; line-height: 1.3; padding-top: 0.8mm; color: var(--ink); }
.r-date + .r-title { padding-top: 0.6mm; }
.r-org { color: var(--muted); line-height: 1.35; padding-top: 0.3mm; }
.sep { color: var(--accent); }
.r-desc { font-style: italic; color: var(--muted); font-size: 0.94em; line-height: 1.4; padding-top: 0.4mm; }
.tl-head .bul { padding-top: 1.1mm; }

/* ---------- plain entries (education, projects…) ---------- */
.b-entry { padding-bottom: 3.8mm; }
.e-top { display: flex; justify-content: space-between; align-items: baseline; gap: 4mm; }
.e-title { font-weight: 700; line-height: 1.3; }
.e-date { font-family: var(--f-label); font-weight: 600; font-size: 7.4pt; letter-spacing: 0.1em; text-transform: uppercase; color: var(--accent); white-space: nowrap; font-variant-numeric: tabular-nums; }
.e-org { color: var(--muted); line-height: 1.35; }
.e-link { font-family: var(--f-label); font-size: 7.6pt; letter-spacing: 0.04em; color: var(--accent); }
.e-desc { color: var(--muted); font-style: italic; font-size: 0.95em; padding-top: 0.3mm; }
.b-entry .bul { padding-top: 0.8mm; }

.b-cite p { padding-left: 6mm; text-indent: -6mm; padding-bottom: 2.2mm; line-height: 1.4; }
.b-cite b { font-weight: 700; }
.b-inline p { line-height: 1.5; }
.b-inline .dot { color: var(--accent); }

/* ---------- sidebar content ---------- */
.b-contact .ci { display: flex; align-items: center; gap: 2.6mm; padding-bottom: 2.2mm; line-height: 1.3; font-size: 0.93em; overflow-wrap: anywhere; }
.b-contact .ic { width: 3.5mm; height: 3.5mm; flex: none; fill: var(--side-head); }
.b-contact.inline { display: flex; flex-wrap: wrap; gap: 1.5mm 5mm; padding-bottom: 1mm; }
.b-contact.inline .ci { padding: 0; }
.b-contact.inline .ic { fill: var(--accent); }
.b-qr { padding-top: 2.4mm; display: flex; align-items: center; gap: 3mm; }
.b-qr .qr { width: 17mm; height: 17mm; flex: none; }
.b-qr .qr svg { width: 100%; height: 100%; display: block; }
.b-qr .qr-l { font-family: var(--f-label); font-size: 6.8pt; letter-spacing: 0.18em; text-transform: uppercase; color: var(--side-muted); line-height: 1.5; }

.b-li { padding-bottom: 1.5mm; line-height: 1.35; font-size: 0.97em; }
.b-grid { display: grid; grid-template-columns: 1fr 1fr; column-gap: 4mm; row-gap: 1.3mm; line-height: 1.3; font-size: 0.93em; padding-bottom: 0.6mm; }
.compact { --side-gap: 5.2mm; --sec-gap: 5.8mm; --role-gap: 3.8mm; }
.compact .cv-main { line-height: 1.4; }
.compact.t-creative { --sec-gap: 6.6mm; }
.compact .cv-side .b-name { padding-bottom: 6mm; }
.compact .b-photo { padding-bottom: 5.5mm; }
.compact .b-photo img { width: 46%; }
.compact .b-contact .ci { padding-bottom: 1.6mm; }
.compact .b-edu { padding-bottom: 2.8mm; }
.b-li .v { color: var(--side-muted); }
.cv-side .b-li .k { font-weight: 600; }
.b-edu { padding-bottom: 3.6mm; line-height: 1.35; }
.b-edu .t { font-weight: 700; color: var(--side-head); }
.b-edu .o, .b-edu .dt { color: var(--side-muted); font-size: 0.95em; }
.b-edu .ds { font-size: 0.93em; font-style: italic; color: var(--side-muted); padding-top: 0.3mm; }
.b-edu .sep { color: inherit; }
.b-chips { display: flex; flex-wrap: wrap; gap: 1.5mm 1.3mm; padding-bottom: 0.6mm; }
.chip { font-family: var(--f-label); font-weight: 500; font-size: 7.6pt; line-height: 1.25; padding: 1mm 1.9mm; border-radius: 1.1mm; background: var(--chip); color: var(--ink); }
.cv-side .chip { background: var(--side-chip); color: var(--side-ink); box-shadow: inset 0 0 0 0.6pt var(--side-chip-line); }

/* ---------- per-profession refinements ---------- */
/* Classic Editorial */
.t-marketing .cv-side .b-contact .ci, .t-marketing .cv-side .b-li, .t-marketing .b-edu { font-size: 10.2pt; }
.t-marketing .r-title { font-size: 10.6pt; letter-spacing: 0.06em; }

/* Corporate & Finance */
.t-corporate .b-name-main .ti { color: var(--accent2); letter-spacing: 0.26em; font-weight: 600; }
.t-corporate .b-h .h { font-size: 10.4pt; letter-spacing: 0.18em; }
.t-corporate .cv-main .b-name-main { padding-bottom: 0.6mm; }
.t-corporate .b-name-main .nm { letter-spacing: -0.01em; }
.t-corporate .r-title { text-transform: none; letter-spacing: 0; font-size: 1.08em; }
.t-corporate .r-date { color: var(--accent2); }

/* Tech & Engineering */
.t-tech .b-name .ti { color: var(--side-head); letter-spacing: 0.08em; text-transform: none; font-size: 8.6pt; font-weight: 500; }
.t-tech .r-title { text-transform: none; letter-spacing: -0.005em; font-size: 1.1em; }
.t-tech .r-date { font-weight: 500; letter-spacing: 0.04em; }
.t-tech .e-date { font-weight: 500; letter-spacing: 0.04em; }
.t-tech .b-contact .ci { font-size: 8.6pt; }
.t-tech .bul li::before { border-radius: 0; width: 3pt; height: 3pt; }

/* Legal */
.t-legal .b-name-main .ti { font-variant-caps: normal; letter-spacing: 0.24em; font-size: 7.8pt; }
.t-legal .r-title { font-variant-caps: all-small-caps; text-transform: none; letter-spacing: 0.08em; font-size: 1.12em; }
.t-legal .r-date, .t-legal .e-date { font-weight: 600; letter-spacing: 0.14em; }
.t-legal .bul li::before { width: 3.2pt; height: 0.8pt; border-radius: 0; top: calc(1.1pt + 0.7em - 0.4pt); }

/* Academic */
.t-academic .b-h .h { font-size: 10.6pt; }
.t-academic .r-title { text-transform: none; letter-spacing: 0; font-size: 1.08em; }
.t-academic .e-title { font-size: 1.04em; }

/* Healthcare */
.t-healthcare .r-title { text-transform: none; letter-spacing: 0; font-family: 'Source Serif 4', Georgia, serif; font-size: 1.08em; }
.t-healthcare .b-h .h { font-size: 10.6pt; letter-spacing: 0.16em; }
.t-healthcare .b-name .nm { font-size: var(--s-name); }

/* Creative */
.t-creative { --sec-gap: 8.4mm; }
.t-creative .b-name-main .nm { line-height: 0.92; }
.t-creative .b-name-main .ti { color: var(--accent); letter-spacing: 0.34em; margin-top: 4.6mm; }
.t-creative .b-name-main { padding-bottom: 2.4mm; }
.t-creative .cv-main .b-h .h { color: var(--accent2); font-size: 11pt; letter-spacing: 0.24em; }
.t-creative .r-title { text-transform: none; letter-spacing: 0; font-family: var(--f-display); font-weight: 400; font-size: 13.5pt; line-height: 1.2; }
.t-creative .e-title { font-family: var(--f-display); font-weight: 400; font-size: 12.5pt; }
.t-creative .bul li::before { border-radius: 0; width: 5pt; height: 1pt; top: calc(1.1pt + 0.72em - 0.5pt); }

/* Hospitality */
.t-hospitality .r-title { text-transform: none; letter-spacing: 0; font-weight: 800; font-size: 1.06em; }
.t-hospitality .b-h .h { font-weight: 800; font-size: 10.6pt; letter-spacing: 0.16em; }
.t-hospitality .num { color: var(--accent2); }
.t-hospitality .bul li::before { background: var(--accent2); }

/* Trades */
.t-trades .b-name .ti { color: var(--side-head); font-weight: 600; letter-spacing: 0.2em; }
.t-trades .b-h .h { font-weight: 700; font-size: 13pt; letter-spacing: 0.1em; }
.t-trades .h-bar .b-h .h::after, .t-trades.h-bar .b-h .h::after { background: var(--accent2); }
.t-trades .cv-side .b-h .h { font-size: 11pt; }
.t-trades .r-title { font-family: var(--f-label); font-size: 12.5pt; letter-spacing: 0.04em; line-height: 1.15; }
.t-trades .r-date { color: var(--ink); }
.t-trades .node { border-color: var(--accent2); border-width: 1.4pt; }
.t-trades .bul li::before { background: var(--accent2); border-radius: 0; }
.t-trades .b-edu .t { color: #fff; }

/* Services */
.t-services .r-title { text-transform: none; letter-spacing: 0; font-weight: 700; font-size: 1.1em; }
.t-services .b-h .h { font-size: 10.4pt; letter-spacing: 0.18em; }

/* Dark sidebars */
.dark-side .b-name .nm { color: var(--name-ink); }
.dark-side .b-edu .t { color: var(--side-ink); }

/* ---------- ATS document (single column) ---------- */
.ats-doc { width: 174mm; margin: 0 auto; font-family: Arial, Helvetica, sans-serif; font-size: 10.5pt; line-height: 1.4; color: #000; background: #fff; }
.ats-doc h1 { font-size: 18pt; margin: 0 0 1mm; }
.ats-doc h2 { font-size: 12pt; text-transform: uppercase; letter-spacing: 0.04em; margin: 6mm 0 2mm; border-bottom: 1px solid #000; padding-bottom: 1mm; break-after: avoid; }
.ats-doc h3 { font-size: 11pt; margin: 3mm 0 0.5mm; break-after: avoid; }
.ats-doc p { margin: 0 0 1.6mm; }
.ats-doc ul { margin: 0 0 1.6mm; padding-left: 6mm; }
.ats-doc li { margin: 0 0 0.8mm; }
.ats-doc .ats-meta { color: #333; }
