/* /resume — now wearing the tube.

   It used to load base.css + home.css, the design language from before JET/OS,
   which is exactly why it read as a different site. The reason given for
   keeping it plain was that ATS software parses it — that was wrong. ATS
   parsing applies to the file you UPLOAD, and the guidance there is DOCX or a
   text-based PDF. Nobody feeds a URL into an ATS. So the page is free to look
   like the rest of the site, and the ATS-safe artifact is /resume.pdf, which is
   the thing that actually gets attached to an application. */

.doc--cv .doc__head { min-height: auto; padding-block: 12vh 7vh; }

/* the résumé is a document, not a set of panels — it should scroll normally */
.doc--cv { scroll-snap-type: none; }

.cv__name {
  margin: 0 0 6px;
  font-size: clamp(15px, 1.6vw, 18px); font-weight: 700; letter-spacing: -.01em;
  color: var(--fg);
}

.facts {
  list-style: none; margin: 26px 0 30px; padding: 0;
  display: flex; flex-wrap: wrap; gap: clamp(18px, 3vw, 38px);
}
.facts li { display: flex; flex-direction: column; gap: 4px; }
.facts b {
  font-size: clamp(13px, 1.3vw, 15px); font-weight: 600; color: var(--fg);
  letter-spacing: -.005em;
}
.facts span {
  font-family: var(--mono); font-size: 9.5px; letter-spacing: .2em;
  text-transform: uppercase; color: var(--fg-dim); opacity: .75;
}

.cv {
  max-width: 66ch;
  padding-block: clamp(34px, 5vh, 56px);
  border-top: 1px solid rgba(220, 230, 221, .09);
}
.cv__h {
  margin: 4px 0 20px;
  font-size: clamp(21px, 2.6vw, 30px); line-height: 1.12;
  letter-spacing: -.014em; font-weight: 800; color: var(--fg);
}
.cv__note {
  margin: -10px 0 24px;
  font-family: var(--mono); font-size: 10.5px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--fg-dim);
}
.cv__note a { color: var(--amber); }

.cv p {
  margin: 0 0 12px;
  font-size: clamp(14.5px, 1.45vw, 16px); line-height: 1.68; color: var(--fg-dim);
}

/* --------------------------------------------------------- strengths --- */
.strengths { list-style: none; margin: 0; padding: 0; counter-reset: s; }
.strengths li { margin-bottom: 26px; counter-increment: s; }
.strengths h3 {
  margin: 0 0 8px;
  font-size: clamp(16px, 1.7vw, 19px); font-weight: 700; color: var(--fg);
  letter-spacing: -.008em;
}
.strengths h3::before {
  content: "0" counter(s);
  font-family: var(--mono); font-size: 10px; font-weight: 400;
  letter-spacing: .2em; color: var(--amber);
  margin-right: 12px; vertical-align: 2px;
}

/* -------------------------------------------------------------- roles --- */
.cv__role { margin-bottom: 30px; }
.cv__role h3 {
  margin: 0 0 8px;
  font-size: clamp(16px, 1.7vw, 19px); font-weight: 700; color: var(--fg);
}
.cv__role h3 span {
  display: block; margin-top: 3px;
  font-family: var(--mono); font-size: 10px; font-weight: 400;
  letter-spacing: .18em; text-transform: uppercase; color: var(--amber);
}

/* ----------------------------------------------------------- timeline --- */
.tl { list-style: none; margin: 0; padding: 0; }
.tl li {
  display: grid; grid-template-columns: 108px 1fr; gap: 18px;
  padding: 13px 0;
  border-top: 1px solid rgba(220, 230, 221, .06);
}
.tl li:first-child { border-top: none; }
.tl b {
  font-family: var(--mono); font-size: 10px; font-weight: 400;
  letter-spacing: .16em; color: var(--amber); padding-top: 4px;
}
.tl div {
  font-size: clamp(14px, 1.4vw, 15.5px); line-height: 1.62; color: var(--fg-dim);
}
.tl strong { color: var(--fg); font-weight: 600; }

@media (max-width: 620px) {
  .tl li { grid-template-columns: 1fr; gap: 4px; }
  .tl b { padding-top: 0; }
  .facts { gap: 14px 24px; }
}

/* =========================================================== PRINT / PDF ===
   THIS is the ATS-safe artifact, and it is where "ATS-safe" actually belongs:
   a text-based file you attach to an application. Parsers want real selectable
   text in a single column, not a screenshot and not a CRT.

   One source, two presentations — the page can wear the tube because the PDF
   does not. Everything decorative is removed, the palette inverts to black on
   white, and the layout collapses to one column. */
@media print {
  :root { --fg: #111; --fg-dim: #333; --amber: #222; --void: #fff; }

  .field, .field__bloom, .field__hi, .stars,
  .crt-glow, .crt-glass, .crt-bulge, .svg-defs,
  .hud, .back, .index, .gate, .power, .boot, .skip { display: none !important; }

  html, body, .tube, .phosphor {
    background: #fff !important;
    color: #111 !important;
    filter: none !important;          /* the chroma filter would smear the text */
    min-height: 0 !important;
  }

  /* text-shadow DUPLICATES the text in the PDF. Chrome's export paints a
     shadowed run twice — once for the shadow, once for the fill — so every
     element carrying one appears TWICE in the extracted text layer. The
     correlation was exact: the only two `.eyebrow` elements on this page were
     the only two duplicated lines, while their `.item__k` siblings (same size,
     same mono, no shadow) printed clean. A résumé that states its own subtitle
     twice reads as a copy-paste error to a human and as a doubled keyword to a
     parser. `filter` was already reset here for the same class of reason;
     `text-shadow` was the one that got missed.

     ⚠️ And a trap worth keeping: PDFKit's `.string()` ALSO reported every
     `ct`/`ch` word broken mid-token — `produ` + `ct`, `tou` + `ch` — which
     looks exactly like a font-ligature bug splitting the keywords this document
     is searched for. It is not. `font-variant-ligatures: none` changed nothing,
     and pypdf — far closer to what an ATS actually runs — reads `product`,
     `production`, `destructive` and `structure` contiguously. That was PDFKit's
     own line reconstruction, not the file. The README already warns that a
     hand-rolled regex lies about this file and to reach for PDFKit; the fuller
     rule is that BOTH extractors lie, in different places, so a defect only
     counts once a second one agrees.

     box-shadow is the same bug with a visible face. `.lk--go` carries a 26px
     amber glow; `background` was already reset here but the glow was not, so it
     printed as a tan block bleeding out from behind the email address — a
     highlighter smear across the contact line, on page one, where a human looks
     first. Invisible to every text-layer probe, which is why this needed a
     rendered page and not another extraction. */
  * { text-shadow: none !important; box-shadow: none !important; }
  .wrap { max-width: 100% !important; padding: 0 !important; }
  .doc--cv .doc__head { padding: 0 0 14pt !important; min-height: 0 !important; }
  .doc__foot { border-top: 1px solid #ccc !important; padding: 12pt 0 0 !important; }

  .doc__h1 { font-size: 20pt !important; color: #111 !important; margin: 0 0 6pt !important; max-width: 100% !important; }
  .doc__lede, .cv p, .tl div { font-size: 10pt !important; color: #222 !important; line-height: 1.45 !important; }
  .cv { max-width: 100% !important; padding: 10pt 0 !important; border-top: 1px solid #ddd !important;
        break-inside: avoid; }
  .cv__h { font-size: 13pt !important; color: #111 !important; margin: 2pt 0 8pt !important; }
  .item__k, .eyebrow { font-size: 8pt !important; color: #555 !important; letter-spacing: .12em !important; }
  .strengths h3, .cv__role h3 { font-size: 11pt !important; color: #111 !important; }
  .cv__role h3 span, .tags { color: #555 !important; font-size: 8.5pt !important; }
  .tl b { color: #555 !important; font-size: 8.5pt !important; }
  .tl strong { color: #111 !important; }
  .facts { gap: 10pt 22pt !important; margin: 10pt 0 12pt !important; }
  .facts b { font-size: 9.5pt !important; color: #111 !important; }
  .facts span { font-size: 7.5pt !important; color: #666 !important; }
  .cv__note { display: none !important; }
  .cv__name { font-size: 15pt !important; color: #111 !important; margin: 0 0 3pt !important; }

  /* links print as text plus their target, so a printed copy is still usable */
  .links { gap: 8pt !important; margin-top: 8pt !important; }
  .lk { border: none !important; background: none !important; padding: 0 !important;
        color: #111 !important; font-size: 9pt !important; text-decoration: underline;
        /* os.css uppercases .lk; an address is easier to parse and to read as
           it was actually written */
        text-transform: none !important; letter-spacing: 0 !important;
        font-family: inherit !important; }
  .lk[href^="/"], .lk[download] { display: none !important; }
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 7.5pt; color: #666; }

  @page { margin: 14mm 15mm; }
}
