/*
  Resume (home page): screen design plus a print stylesheet, so Ctrl+P / "Save as
  PDF" (and bin/cv-pdf) produce a one-page CV. Uses the tokens defined in
  custom-styles.css. Layout: each section is a row with its name in a narrow
  left column and its content on the right, like a well-kept engineering record.
*/

/* ---------- Screen ---------- */

.resume-page { padding-top: 6.5rem; }

.resume-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  padding-bottom: 1.25rem;
}
.resume-header h1 {
  margin: 0;
  font-size: 2.6rem;
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: -0.025em;
}
.resume-role {
  margin: .4rem 0 .9rem;
  font-family: var(--font-ui);
  font-size: 1.2rem;
  font-weight: 600;
  color: var(--forest);
}
.resume-contact {
  display: flex;
  flex-wrap: wrap;
  gap: .3rem 1.4rem;
  margin: 0;
  padding: 0;
  list-style: none;
  font-family: var(--font-ui);
  font-size: .92rem;
  color: var(--slate);
}
.resume-location {
  margin: .35rem 0 0;
  font-family: var(--font-ui);
  font-size: .92rem;
  color: var(--slate);
}
.resume-photo {
  flex: none;
  width: 112px;
  height: 112px;
  border-radius: 50%;
  object-fit: cover;
  border: 1px solid var(--rule);
}
.resume-print-only { display: none !important; }

.resume-lead {
  max-width: 42em;
  margin: 1.25rem 0 1.4rem;
  font-size: 1.28rem;
  line-height: 1.55;
}

.resume-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .6rem;
  margin: 0 0 2.75rem;
}

/* One button system: same size, border and type; the primary differs only in colour */
.resume-button {
  display: inline-flex;
  align-items: center;
  min-height: 2.5rem;
  padding: 0 1.1rem;
  border: 1px solid var(--rule);
  border-radius: 6px;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-ui);
  font-size: .92rem;
  font-weight: 600;
  line-height: 1;
  text-decoration: none;
  cursor: pointer;
  transition: background-color .15s, border-color .15s, color .15s;
}
.resume-button:visited { color: var(--ink); }
.resume-button:hover, .resume-button:visited:hover { border-color: var(--forest); color: var(--forest); text-decoration: none; }
.resume-button-primary, .resume-button-primary:visited { background: var(--forest); border-color: var(--forest); color: #fff; }
.resume-button-primary:hover, .resume-button-primary:visited:hover { background: var(--forest-dark); border-color: var(--forest-dark); color: #fff; }

/* Sections: name on the left, content on the right */
.resume-section {
  display: grid;
  grid-template-columns: 11rem minmax(0, 1fr);
  gap: 0 2rem;
  padding: 1.6rem 0;
  border-top: 1px solid var(--rule);
}
.resume-section > h2 {
  margin: 0;
  padding-top: .2rem;
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0;
}
.resume-section-body p { max-width: 42em; margin: 0 0 .8rem; }
.resume-section-body p:last-child { margin-bottom: 0; }

/* Label / value pairs: at a glance, technologies */
.resume-pairs {
  display: grid;
  grid-template-columns: 9.5rem minmax(0, 1fr);
  gap: .45rem 1.25rem;
  margin: 0;
}
.resume-pairs dt {
  padding-top: .15rem;
  font-family: var(--font-ui);
  font-size: .92rem;
  font-weight: 600;
  color: var(--slate);
}
.resume-pairs dd { margin: 0; }
.resume-tech dt:first-of-type + dd { font-weight: 600; }

/* Projects: the portfolio, two columns of short entries */
.resume-projects {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.3rem 2.25rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.resume-project h3 { margin: 0 0 .2rem; font-size: 1.05rem; font-weight: 700; }
.resume-project h3 a { color: var(--ink); text-decoration: none; }
.resume-project h3 a:hover { color: var(--forest); text-decoration: underline; }
.resume-project p { margin: 0; }
.resume-project-meta {
  margin-top: .3rem !important;
  font-family: var(--font-ui);
  font-size: .85rem;
  color: var(--slate);
}

/* Experience: dates in their own column, like a history of releases */
.resume-jobs { margin: 0; padding: 0; list-style: none; }
.resume-job {
  display: grid;
  grid-template-columns: 9.5rem minmax(0, 1fr);
  gap: 0 1.25rem;
  padding: .55rem 0;
}
.resume-job:first-child { padding-top: 0; }
.resume-job-when {
  margin: 0;
  padding-top: .12rem;
  font-family: var(--font-ui);
  font-size: .88rem;
  font-variant-numeric: tabular-nums;
  color: var(--slate);
}
.resume-job-when span { display: block; }
.resume-job-what h3 { margin: 0; font-size: 1.02rem; font-weight: 600; }
.resume-company { font-weight: 500; color: var(--slate); }
.resume-job-what p { margin: .2rem 0 0; }

.resume-plain { margin: 0; padding: 0; list-style: none; }
.resume-plain li { margin-bottom: .35rem; }
.resume-plain-line { margin: 0; }

.resume-footnote {
  margin-top: 0;
  padding-top: 1rem;
  border-top: 1px solid var(--rule);
  font-family: var(--font-ui);
  font-size: .88rem;
  color: var(--slate);
}

@media (max-width: 767px) {
  .resume-page { padding-top: 5rem; }
  .resume-header { flex-direction: column-reverse; align-items: flex-start; gap: 1rem; }
  .resume-header h1 { font-size: 1.9rem; }
  .resume-photo { width: 76px; height: 76px; }
  .resume-lead { font-size: 1.12rem; }
  .resume-section { grid-template-columns: 1fr; padding: 1.25rem 0; }
  .resume-section > h2 { margin-bottom: .8rem; }
  .resume-pairs { grid-template-columns: 1fr; gap: 0; }
  .resume-pairs dd { margin-bottom: .6rem; }
  .resume-projects { grid-template-columns: 1fr; }
  .resume-job { grid-template-columns: 1fr; }
  .resume-job-when span { display: inline; }
  .resume-job-when .resume-job-length::before { content: ", "; }
}

/* ---------- Print: a one-page CV ---------- */

@media print {
  /*
    No page margin: browsers then have no room for their own header and footer
    (date, title, URL), so a manual Ctrl+P prints as clean as bin/cv-pdf.
    The margin moves to the body padding instead.
  */
  @page { margin: 0; }

  html, body { background: #fff !important; }
  body {
    padding: 12mm 13mm !important;
    font-size: 9.4pt;
    line-height: 1.36;
    color: #1E2A28;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  /* Site chrome, photo and web-only content have no place on the printed CV */
  nav.navbar, footer, .skip-link, .resume-actions, .resume-screen-only,
  .resume-web-only, .resume-photo { display: none !important; }
  .resume-print-only { display: block !important; }

  .resume-page { padding: 0 !important; max-width: 100% !important; }
  .container-md, .col-xl-10, .col-lg-12 { max-width: 100% !important; flex: 0 0 100% !important; margin: 0 !important; padding: 0 !important; }
  .row { margin: 0 !important; }

  a { color: inherit !important; text-decoration: none !important; }

  .resume-header { padding-bottom: 1.5mm; }
  .resume-header h1 { font-size: 21pt; }
  .resume-role { margin: .8mm 0 1.6mm; font-size: 11pt; }
  .resume-contact { gap: .6mm 4.5mm; font-size: 8.6pt; }
  .resume-location { margin-top: .6mm; font-size: 8.6pt; }

  .resume-lead { max-width: none; margin: 1.5mm 0 2.5mm; font-size: 9.8pt; line-height: 1.42; }

  .resume-section { grid-template-columns: 25mm minmax(0, 1fr); gap: 0 4mm; padding: 2.2mm 0; border-top-width: .5pt; }
  .resume-section > h2 { font-size: 9.6pt; padding-top: .2mm; }
  .resume-section-body p { max-width: none; margin-bottom: .8mm; }

  .resume-pairs { grid-template-columns: 30mm minmax(0, 1fr); gap: .5mm 3mm; }
  .resume-pairs dt { font-size: 8.5pt; padding-top: 0; }
  .resume-pairs dd { font-size: 9pt; }

  .resume-projects { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.6mm 6mm; }
  .resume-project { break-inside: avoid; }
  .resume-project h3 { font-size: 9.6pt; margin: 0; }
  .resume-project p { font-size: 8.9pt; }
  .resume-project-meta { margin-top: .2mm !important; font-size: 7.9pt; }

  .resume-job { grid-template-columns: 32mm minmax(0, 1fr); gap: 0 3mm; padding: .8mm 0; break-inside: avoid; }
  .resume-job-when span:first-child { white-space: nowrap; }
  .resume-job-when { font-size: 8.1pt; padding-top: .3mm; }
  .resume-job-when span { display: block; }
  .resume-job-when .resume-job-length::before { content: none; }
  .resume-job-what h3 { font-size: 9.4pt; }
  .resume-job-what p { font-size: 8.9pt; margin-top: .2mm; }

  .resume-plain li { margin-bottom: .6mm; font-size: 8.9pt; }
  .resume-plain-line { font-size: 8.9pt; }
}
