/* CV page; builds on site.css tokens, header, footer and buttons */

.cv { display: grid; grid-template-columns: 4fr 8fr; gap: 48px clamp(32px, 5vw, 80px); align-items: start; padding-top: clamp(40px, 6vw, 88px); padding-bottom: clamp(80px, 10vw, 140px); }
.cv-side { position: sticky; top: 96px; }
.cv-kicker { font-size: 13px; color: var(--muted); margin-bottom: 14px; }
.cv-side h1 { font-size: clamp(40px, 4.4vw, 64px); line-height: 1.02; }
.cv-role { margin-top: 12px; font-family: var(--serif); font-style: italic; font-weight: 500; font-size: 22px; line-height: 1.25; }
.cv-contact { list-style: none; margin: 24px 0 0; padding: 16px 0 0; border-top: 1px solid var(--line); font-size: 14px; color: var(--muted); display: grid; gap: 4px; }
.cv-contact a { transition: color .2s; }
.cv-contact a:hover { color: var(--accent); }
.cv-actions { margin-top: 24px; }

.cv-sec { border-top: 1px solid var(--ink); padding-top: 18px; margin-bottom: clamp(40px, 5vw, 64px); }
.cv-sec h2 { font-size: 13px; font-weight: 500; color: var(--muted); margin-bottom: 18px; }
.cv-summary { font-family: var(--serif); font-size: clamp(20px, 1.9vw, 24px); line-height: 1.4; letter-spacing: -0.005em; }

.job + .job { margin-top: 36px; padding-top: 28px; border-top: 1px solid var(--line); }
.job-head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.job h3 { font-family: var(--serif); font-weight: 500; font-size: clamp(24px, 2.2vw, 30px); line-height: 1.15; letter-spacing: -0.01em; }
.job-date { font-size: 13px; color: var(--muted); white-space: nowrap; }
.job-role { margin-top: 2px; font-weight: 500; font-size: 15px; }
.job ul { margin: 12px 0 0; padding-left: 18px; display: grid; gap: 8px; color: var(--muted); font-size: 15px; }
.job li strong { color: var(--ink); font-weight: 500; }

.cv-skills, .cv-list { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2.4fr); gap: 12px 24px; margin: 0; font-size: 15px; }
.cv-skills dt, .cv-list dt { font-weight: 500; }
.cv-skills dd, .cv-list dd { margin: 0; color: var(--muted); }
.cv-list dd strong { display: block; color: var(--ink); font-weight: 500; }
.cv-two { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; }
.cv-two .cv-list { grid-template-columns: minmax(0, 1fr) minmax(0, 1.8fr); }

@media (max-width: 960px) {
  .cv { grid-template-columns: minmax(0, 1fr); }
  .cv-side { position: static; }
}
@media (max-width: 720px) {
  .cv-skills, .cv-list, .cv-two .cv-list { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .cv-skills dd, .cv-list dd { margin-bottom: 12px; }
  .cv-two { grid-template-columns: minmax(0, 1fr); }
}

/* A4 print: same content, no chrome; also the source of the downloadable PDF */
@page { size: A4; margin: 14mm 15mm; }
@media print {
  :root { --muted: #4A4946; }
  body { background: #fff; font-size: 10pt; line-height: 1.45; }
  .site-header, .site-footer, .cv-actions, .cv-kicker { display: none; }
  .cv { display: block; padding: 0; max-width: none; }
  .cv-side { position: static; margin-bottom: 14pt; }
  .cv-side h1 { font-size: 26pt; }
  .cv-role { font-size: 13pt; margin-top: 4pt; }
  .cv-contact { display: flex; flex-wrap: wrap; gap: 2pt 14pt; margin-top: 10pt; padding-top: 8pt; font-size: 9pt; }
  .cv-sec { margin-bottom: 14pt; padding-top: 8pt; }
  .cv-sec h2 { font-size: 9pt; margin-bottom: 8pt; break-after: avoid; }
  .cv-summary { font-size: 11pt; }
  .job { break-inside: avoid; }
  .job + .job { margin-top: 12pt; padding-top: 10pt; }
  .job h3 { font-size: 14pt; }
  .job-date, .job-role { font-size: 9.5pt; }
  .job ul { margin-top: 6pt; gap: 3pt; font-size: 9.5pt; }
  .cv-skills, .cv-list { gap: 4pt 14pt; font-size: 9.5pt; }
  .cv-two { break-inside: avoid; }
}
