/* Page setup */
@page {
  size: Letter;
  margin: 1.219cm;
}

/* Print theme and layout tokens */
:root,
:root[data-theme="dark"],
:root[data-theme="system"] {
  color-scheme: light;
  --bg: #ffffff;
  --text: #15202b;
  --text-strong: #142033;
  --muted: #5b728b;
  --line: rgba(21, 32, 43, 0.12);
}

html {
  --print-section-gap: 0.711cm;
  --print-section-gap-compact: 0.559cm;
  --print-project-gap: 0.508cm;
  --print-experience-role-block-start: 0.254cm;
  --print-experience-role-block-end: 0.254cm;
  background: #ffffff;
  color: #15202b;
  font-size: 10pt;
  line-height: 1.32;
  overflow: visible;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

html[lang="en"] {
  --print-section-gap: 0.61cm;
  --print-section-gap-compact: 0.457cm;
  --print-project-gap: 0.254cm;
}

html[lang="fr"] {
  --print-section-gap: 0.406cm;
  --print-section-gap-compact: 0.406cm;
  --print-project-gap: 0.254cm;
  --print-experience-role-block-start: 0.102cm;
  --print-experience-role-block-end: 0.089cm;

  #resume {
    > .section {
      padding-block-end: 0.305cm;
    }

    > #metrics,
    > #languages {
      padding-block-end: 0.305cm;
    }
  }

  #projects {
    padding-block-end: 0.102cm;

    .project-card-grid {
      gap: 0.076cm;
    }

    .project-showcase-card {
      margin-block-start: 0.051cm;
      padding-block-start: 0.051cm;

      > p {
        margin-block-start: 0.038cm;
      }
    }
  }

  #education {
    .role {
      gap: 0.203cm;
      margin-block-start: 0.025cm;
      padding-block-start: 0.051cm;
    }
  }
}

/* Base print reset */
body,
.page,
main,
#resume {
  background: #ffffff;
  color: inherit;
  overflow: visible;
}

.page {
  .parallax,
  .parallax-soft,
  [data-reveal],
  [data-reveal].in-view,
  .project-showcase-card.parallax,
  .project-showcase-card.parallax.in-view {
    opacity: 1;
    transform: none;
    transition: none;
    animation: none;
    will-change: auto;
    --parallax-x: 0px;
    --parallax-y: 0px;
    --project-hover-y: 0px;
  }
}

body {
  .switcher-bar,
  .theme-switcher,
  .language-switcher,
  .welcome-screen {
    display: none;
  }

  .print-only {
    display: block;
  }
}

.page {
  > .print-resume-header {
    margin-block-end: 0.127cm;
    padding-block-end: 0.254cm;
    border-block-end: 1px solid #d7e0ec;
    break-after: avoid;
    page-break-after: avoid;

    .print-header-main {
      display: grid;
      grid-template-columns: 1.727cm minmax(0, 1fr);
      gap: 0.279cm;
      align-items: start;
    }

    .print-header-copy {
      grid-column: 2;
      grid-row: 1;
      min-width: 0;
    }

    .print-header-portrait-frame {
      grid-column: 1;
      grid-row: 1;
      justify-self: start;
      width: 1.727cm;
      aspect-ratio: 1;
      padding: 0.038cm;
      border: 1px solid rgba(183, 141, 89, 0.34);
      border-radius: 0.305cm;
      background:
        linear-gradient(
          160deg,
          rgba(255, 244, 230, 0.96),
          rgba(246, 232, 212, 0.9)
        );
    }

    .print-header-portrait {
      width: 100%;
      height: 100%;
      object-fit: cover;
      border-radius: 0.229cm;
    }

    h1 {
      margin: 0;
      font-size: 20pt;
      line-height: 1;
      letter-spacing: -0.04em;
      font-weight: 800;
      color: #142033;
    }

    .print-role {
      margin-block-start: 0.102cm;
      font-size: 9.8pt;
      font-weight: 650;
      color: #486581;
    }

    .print-contact-line {
      display: flex;
      flex-wrap: wrap;
      gap: 0.089cm 0.254cm;
      margin-block-start: 0.127cm;
      font-size: 8.55pt;
      line-height: 1.2;
      color: #46566c;

      span {
        &::after {
          content: "·";
          margin-inline-start: 0.254cm;
          color: #999999;
        }

        &:last-child::after {
          content: "";
          margin: 0;
        }
      }
    }

    .print-summary {
      margin-block-start: 0.152cm;
      max-width: none;
      font-size: 9.15pt;
      line-height: 1.34;
      color: #364659;
    }
  }
}

/* Shared printed resume structure */
#resume {
  display: flex;
  flex-direction: column;

  > .section {
    width: 100%;
    margin: 0;
    padding-block-end: var(--print-section-gap);
    break-inside: auto;
    page-break-inside: auto;
  }

  > #languages {
    order: 99;
  }

  > #about,
  > #contact {
    display: none;
  }

  .scribble-title::after,
  .scribble-title-inline::after,
  .section-header > p {
    display: none;
  }

  .section-header {
    display: block;
    margin-block-end: 0.127cm;

    > h2 {
      margin: 0;
      font-size: 13.1pt;
      line-height: 1.06;
      letter-spacing: -0.025em;
      font-weight: 800;
      color: #142033;
    }
  }
}

#metrics {
  margin-block-start: -0.508cm;
  padding-block-end: var(--print-section-gap-compact);

  .metrics {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.127cm;
    margin-block-start: 0;
    padding-block-start: 0;
    border-block-start: 0;
  }

  .metric {
    strong {
      font-size: 11.8pt;
      line-height: 0.94;
    }

    > span {
      margin-block-start: 0.025cm;
      max-width: none;
      color: #4f6278;
      font-size: 6.55pt;
      line-height: 1.08;
    }
  }

  .metric-mark {
    opacity: 0.75;
  }
}

#languages {
  --print-accent: #8a6237;
  --print-accent-soft: #b08f6b;
  display: grid;
  grid-template-columns: 2.667cm 1fr;
  gap: 0.305cm;
  align-items: start;
  padding-block-end: var(--print-section-gap-compact);

  .scribble-title,
  .scribble-title-inline {
    color: var(--print-accent);
  }

  .section-header {
    margin: 0;

    > h2 {
      font-size: 10.2pt;
      line-height: 1.05;
    }
  }

  .language-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.127cm 0.406cm;
    align-items: start;
  }

  .language-card {
    break-inside: avoid;
    page-break-inside: avoid;
    padding-block-start: 0.076cm;
    border-block-start: 1px solid #dde5f0;

    > header {
      display: flex;
      align-items: baseline;
      justify-content: space-between;
      gap: 0.203cm;

      > h3 {
        margin: 0;
        font-size: 10pt;
        line-height: 1.08;
        font-weight: 800;
        letter-spacing: -0.02em;
        color: #142033;
      }

      > p {
        color: var(--print-accent-soft);
        font-size: 7.2pt;
        line-height: 1.15;
        letter-spacing: 0.08em;
        text-transform: uppercase;
        font-weight: 800;
        white-space: nowrap;
      }
    }

    > p {
      display: block;
      margin-block-start: 0.051cm;
      color: #42536a;
      font-size: 7.55pt;
      line-height: 1.17;
    }
  }
}

#skills {
  --print-accent: #385d84;
  --print-accent-soft: #7790a9;

  .scribble-title,
  .scribble-title-inline {
    color: var(--print-accent);
  }

  .skills-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 0.61cm;
    row-gap: 0.305cm;
    align-items: start;
  }

  .skill-group {
    break-inside: avoid;
    page-break-inside: avoid;
    margin-block-end: 0;
    padding-block-start: 0.102cm;
    border-block-start: 1px solid #dde5f0;

    h3 {
      margin: 0;
      font-size: 9.6pt;
      line-height: 1.15;
      color: #111111;
    }

    > ul {
      display: flex;
      flex-wrap: wrap;
      gap: 0.076cm 0.203cm;
      margin-block-start: 0.076cm;
      padding: 0;
      list-style: none;

      > li {
        padding: 0;
        border: 0;
        color: #334155;
        font-size: 8pt;
        line-height: 1.22;
      }
    }
  }
}

#experience,
#education {
  .experience-list {
    display: grid;
    gap: 0.152cm;
  }

  .role {
    display: grid;
    grid-template-columns: 2.743cm 1fr;
    gap: 0.305cm;
    margin-block-start: 0.127cm;
    padding-block-start: 0.127cm;
    border-block-start: 1px solid #dde5f0;
    break-inside: avoid;
    page-break-inside: avoid;

    .role-meta {
      color: #54657d;
      font-size: 8pt;
      line-height: 1.2;
      font-weight: 650;
    }

    h3 {
      margin: 0;
      font-size: 10.8pt;
      line-height: 1.08;
      letter-spacing: -0.02em;
      font-weight: 800;
      color: #142033;
    }

    .role-subtitle {
      margin-block-start: 0.051cm;
      color: #42536a;
      font-size: 8.45pt;
      line-height: 1.22;
      font-weight: 650;
    }
  }
}

#experience {
  --print-accent: #2f6b67;
  --print-accent-soft: #7aa09b;

  .scribble-title,
  .scribble-title-inline {
    color: var(--print-accent);
  }

  .role {
    grid-template-columns: minmax(0, 1fr) auto;
    column-gap: 0.305cm;
    row-gap: 0.152cm;
    margin-block-start: 0.102cm;
    padding-block-start: var(--print-experience-role-block-start);

    &:not(:last-of-type) {
      padding-block-end: var(--print-experience-role-block-end);
    }

    &.role--single {
      ul {
        margin-block-start: 0.318cm;
      }
    }
  }

  .role-meta {
    grid-column: 2;
    grid-row: 1;
    justify-self: end;
    text-align: end;
    white-space: nowrap;
    font-size: 7.9pt;
    line-height: 1.15;
  }

  .role-meta-lines {
    display: none;
  }

  .role-meta-inline {
    display: block;
  }

  .role-body,
  .role-summary {
    display: contents;
  }

  .role-heading {
    grid-column: 1;
    grid-row: 1;
  }

  .role-subtitle {
    margin-block-start: 0.038cm;
    font-size: 8.25pt;
    line-height: 1.18;
  }

  .role .role-summary > p {
    grid-column: 1 / -1;
    grid-row: 2;
    margin-block-start: 0;
    font-size: 8.35pt;
    line-height: 1.22;
    max-width: none;
  }

  .position-list {
    display: grid;
    gap: 0.089cm;
    margin: 0;
    grid-column: 1 / -1;
    grid-row: 3;
  }

  .position-item {
    padding-inline-start: 0.203cm;
    padding-block-end: 0;
    margin-block: 0.127cm;
    border-inline-start: 1px solid #dde5f0;

    > header {
      display: flex;
      justify-content: space-between;
      align-items: baseline;
      gap: 0.203cm;

      > h4 {
        color: #172554;
        font-size: 9.15pt;
        line-height: 1.2;
        font-weight: 760;
      }

      > .position-dates {
        color: #64748b;
        font-size: 8pt;
        line-height: 1.18;
        white-space: nowrap;
      }
    }

    > p {
      display: none;
    }
  }

  :is(.role, .position-item) {
    ul {
      margin-block-start: 0.076cm;
      gap: 0.051cm;
    }

    li {
      padding-inline-start: 0.279cm;
      color: #243446;
      font-size: 8.5pt;
      line-height: 1.24;

      &::before {
        color: var(--print-accent-soft);
      }
    }
  }

  .role > .role-body > ul {
    grid-column: 1 / -1;
    grid-row: 3;
  }
}

#projects {
  --print-accent: #8a6237;
  --print-accent-soft: #b08f6b;
  padding-block-start: 0;
  padding-block-end: var(--print-project-gap);

  .scribble-title,
  .scribble-title-inline {
    color: var(--print-accent);
  }

  .project-card-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.102cm;
    counter-reset: project;
  }

  .project-showcase-card {
    counter-increment: project;
    display: grid;
    grid-template-columns: 2.743cm 1fr;
    column-gap: 0.279cm;
    row-gap: 0.076cm;
    margin-block-start: 0.076cm;
    padding: 0;
    padding-block-start: 0.076cm;
    border: 0;
    border-block-start: 1px solid #dde5f0;
    border-radius: 0;
    background: none;
    box-shadow: none;
    overflow: visible;
    isolation: auto;
    transform: none;
    grid-column: auto;
    break-inside: avoid;
    page-break-inside: avoid;

    > header {
      display: contents;
    }

    &::after {
      content: none;
      display: none;
      background: none;
    }

    > .project-showcase-logo {
      position: absolute;
      inset-block-start: 0.127cm;
      inset-inline-start: 1.778cm;
      z-index: 0;
      width: 1.575cm;
      aspect-ratio: 1;
      object-fit: contain;
      opacity: 0.08;
      filter: grayscale(0.08) saturate(0.78);
      transform: rotate(5deg);
      pointer-events: none;
    }

    > header > p:first-child {
      grid-column: 1;
      grid-row: 1 / span 3;
      max-width: none;
      color: #54657d;
      font-size: 7.85pt;
      line-height: 1.16;
      font-weight: 650;
      letter-spacing: 0;
      text-transform: none;

      &::before {
        content: counter(project, decimal-leading-zero) "\A";
        display: block;
        white-space: pre;
      }
    }

    > header > h3 {
      grid-column: 2;
      display: flex;
      align-items: baseline;
      gap: 0.076cm;
      flex-wrap: wrap;
      margin: 0;
      max-width: none;
      padding-inline-end: 0.025cm;
      color: #142033;
      font-size: 10.3pt;
      line-height: 1.08;
      letter-spacing: -0.02em;
      font-weight: 800;

      &[data-print-url]::after {
        content: " · " attr(data-print-url);
        color: var(--print-accent-soft);
        font-size: 7.9pt;
        font-weight: 500;
      }
    }

    > header > p:last-child {
      grid-column: 2;
      margin-block: 0 !important;
      color: #42536a;
      font-size: 8.15pt;
      line-height: 1.18;
      font-weight: 650;
    }

    > p {
      grid-column: 2;
      margin-block-start: 0.036cm;
      max-width: none;
      color: #243446;
      font-size: 8.4pt;
      line-height: 1.24;
    }

    > ul {
      display: none;
    }
  }
}

#education {
  --print-accent: #5a6591;
  --print-accent-soft: #8a92b4;
  padding-block-end: 0;

  .scribble-title,
  .scribble-title-inline {
    color: var(--print-accent);
  }

  .experience-list {
    gap: 0.102cm;
  }

  .role {
    column-gap: 0.279cm;
    row-gap: 0.102cm;
    margin-block-start: 0.051cm;
    padding-block-start: 0.076cm;
  }

  .role-subtitle {
    margin-block-start: 0.015cm;
  }
}
