/* print.css — the downloadable one-pager. Linked media="print"; also used by the
   headless-Chrome PDF export. Reuses tokens.css so it never diverges from the site.
   Content is injected by assets/js/onepager.js from the live site sections (website
   is the single source of truth). Layout: Experience (wide, left) / Education
   (narrow, right), then a Competences band of Skills (tag chips) + Languages
   (proficiency dots) + Interests (icon list). Dates are uppercase eyebrows above
   each entry so nothing "jumps". Grade-free, headshot top-right, no page furniture.

   TYPE SCALE — deliberately only FIVE sizes on the whole sheet, so it never looks
   like a ransom note. Two are one-offs in the header (name 26pt, role 11pt); the
   rest of the sheet maps to three vars:
     --ps-title : entry titles (experience roles + education degrees) AND the intro
     --ps-body  : all running text — bullets, thesis, extras, subtitles (org +
                  institution), section headings, chips, languages, interests
     --ps-meta  : the small uppercase labels — dates, contact bar, skill categories
   (No @media print wrapper: the <link media="print"> already scopes this file.) */

@page { size: A4; margin: 8mm 13mm; }

body > *:not(.print-sheet) { display: none !important; }
html, body { background: #fff !important; }
.print-sheet {
  --ps-title: 9.4pt;
  --ps-body: 8.4pt;
  --ps-meta: 7.6pt;
  display: block !important;
  font-family: var(--font-body); color: var(--ink);
  font-size: var(--ps-body); line-height: 1.3;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.print-sheet p { margin: 0; }

/* ---- Header ---- */
/* Photo is top-aligned with the name and sized (diameter ≈ headline height) so its
   bottom lands on the contact line; it sits above the accent rule, no overlap. */
.ps-header { display: flex; justify-content: space-between; align-items: flex-start;
  gap: 9mm; padding-bottom: 2.6mm; margin-bottom: 3mm;
  border-bottom: 1.5pt solid var(--accent); }
.ps-headline { min-width: 0; }
.ps-name { font-family: var(--font-head); font-weight: 400; font-size: 26pt; line-height: 1;
  margin: 0; color: var(--accent); letter-spacing: 0.005em; }
.ps-role { font-size: 11pt; letter-spacing: 0.02em; color: var(--ink); margin: 2.1mm 0 0 !important; }
.ps-contact { display: flex; flex-wrap: nowrap; white-space: nowrap; gap: 0; font-size: 7.2pt;
  letter-spacing: 0.01em; color: var(--muted); margin: 2.4mm 0 0 !important; }
.ps-contact span { position: relative; padding: 0 2.1mm; }
.ps-contact span:first-child { padding-left: 0; }
.ps-contact span:not(:last-child)::after { content: ""; position: absolute; right: 0; top: 50%;
  width: 0.5pt; height: 2.6mm; background: var(--line); transform: translateY(-50%); }
.ps-photo { flex: none; transform: translate(-2px, 2px); }
.ps-photo img { width: 22mm; height: 22mm; display: block; border-radius: 50%;
  object-fit: cover; object-position: center 22%; box-shadow: 0 0 0 1pt var(--accent); }

.ps-positioning { font-size: var(--ps-title); line-height: 1.38; color: var(--ink-soft);
  margin: 0 0 4.5mm !important; max-width: 172mm; }

/* ---- Two columns: Experience (wide) | Education (narrow) ---- */
.ps-cols { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 10mm; align-items: start; }

/* Section heading */
.ps-h { font-family: var(--font-body); font-weight: 600; font-size: var(--ps-body);
  text-transform: uppercase; letter-spacing: 0.1em; color: var(--accent);
  border-bottom: 0.6pt solid var(--line); padding-bottom: 1.1mm; margin: 0 0 2.4mm; }
.ps-h--gap { margin-top: 3.4mm; }

/* Shared date eyebrow */
.ps-entry__date, .ps-edu__date { font-size: var(--ps-meta); font-weight: 600;
  text-transform: uppercase; letter-spacing: 0.09em; color: var(--muted); margin: 0 0 0.6mm !important; }

/* Titles (experience roles + education degrees) share one size */
.ps-entry__role, .ps-edu__title { font-weight: 600; font-size: var(--ps-title);
  color: var(--ink); line-height: 1.2; }

/* Green subtitles (org + institution) share one size */
.ps-entry__org, .ps-edu__place { font-size: var(--ps-body); color: var(--accent); }

/* Experience (no left rail). Hairline divider above each entry's date as a
   visual break; not on the first (the section-heading rule already sits above it). */
.ps-entry { margin-bottom: 0; }
.ps-entry + .ps-entry { border-top: 0.5pt solid var(--line); margin-top: 1.1mm; padding-top: 1.1mm; }
.ps-entry__org { margin: 0.4mm 0 0.8mm !important; }
.print-sheet ul { list-style: none; margin: 0; padding: 0; }
.ps-entry li { position: relative; padding-left: 3.4mm; font-size: var(--ps-body);
  color: var(--ink-soft); line-height: 1.22; margin-bottom: 0.5mm; }
.ps-entry li:last-child { margin-bottom: 0; }
.ps-entry li::before { content: ""; position: absolute; left: 0; top: 1.15mm;
  width: 1.4mm; height: 1.4mm; border-radius: 50%; background: var(--accent); }

/* Education — hairline divider above each entry's year as a visual break. */
.ps-edu { margin-bottom: 0; }
.ps-edu + .ps-edu { border-top: 0.5pt solid var(--line); margin-top: 1.1mm; padding-top: 1.1mm; }
.ps-edu__place { margin: 0.4mm 0 0 !important; line-height: 1.22; }
/* Thesis line + extracurricular line, split and styled like the site records. */
.ps-edu__detail { font-size: var(--ps-body); color: var(--ink-soft); line-height: 1.2; margin: 0.5mm 0 0 !important; }
.ps-edu__detail strong { color: var(--ink); font-weight: 700; }
.ps-edu__extra { font-size: var(--ps-body); color: var(--ink-soft); line-height: 1.2; margin: 0.4mm 0 0 !important; }
.ps-edu__extra strong { color: var(--accent); font-weight: 600; }

/* ---- Competences band ---- */
.ps-comp { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 10mm; margin-top: 1.3mm; align-items: start; }
.ps-cat { font-size: var(--ps-meta); text-transform: uppercase; letter-spacing: 0.07em;
  color: var(--muted); margin: 1.2mm 0 0.8mm !important; }
.ps-cat:first-of-type { margin-top: 0 !important; }

/* Skill chips */
.ps-tags { list-style: none; display: flex; flex-wrap: wrap; gap: 1.1mm; margin: 0 !important; padding: 0; }
.ps-tags li { font-size: var(--ps-body); color: var(--ink-soft); letter-spacing: 0.01em;
  padding: 0.55mm 1.8mm; border: 0.6pt solid var(--line); border-radius: 1.5pt;
  background: var(--paper-alt); }

/* Languages with proficiency dots */
.ps-langs { list-style: none; margin: 0 !important; padding: 0; }
.ps-langs li { display: grid; grid-template-columns: 17mm auto 1fr; align-items: center;
  column-gap: 2.5mm; margin-bottom: 1.3mm; }
.ps-langs li:last-child { margin-bottom: 0; }
.ps-langs__name { font-size: var(--ps-body); font-weight: 500; color: var(--ink); }
.ps-langs__cefr { font-size: var(--ps-body); color: var(--muted); }
.ps-dots { display: inline-flex; gap: 1mm; }
.ps-dots i { width: 1.6mm; height: 1.6mm; border-radius: 50%;
  box-shadow: inset 0 0 0 0.6pt var(--muted); background: transparent; }
.ps-dots i.on { background: var(--accent); box-shadow: inset 0 0 0 0.6pt var(--accent); }

/* Interests as an icon list (labels sourced from the site's gallery). */
.ps-interests { list-style: none; margin: 0 !important; padding: 0;
  display: grid; grid-template-columns: 1fr 1fr; gap: 1.4mm 4mm; }
.ps-interests li { display: flex; align-items: center; gap: 2mm;
  font-size: var(--ps-body); color: var(--ink-soft); }
.ps-interests svg { flex: none; width: 4.2mm; height: 4.2mm; color: var(--accent); }

.print-sheet a { color: inherit; text-decoration: none; }
