/* ---------------------------------------------------------------
   Adeia — the Proof page

   Layout for proof.html only. Every selector is scoped under
   .page-proof, which sits on the page's <body>, so nothing here can
   reach another page's markup. Colour, type, spacing and easing come
   from tokens.css; .display, .h2, .h3, .lead, .body, .label, .mono,
   .quiet, .plus-link and .visually-hidden come from base.css and are
   not restated.

   The masthead and the footer are the exceptions. Their rules live in
   styles/hero.css and styles/closing.css, which this page does not
   load, so the parts of them this page needs are restated here under
   the page scope rather than pulled in wholesale.

   Contrast, measured against the ground each element sits on:
     hero        --orchid on --ink        6.40:1   display heading, figures
                 --mist on --ink         11.90:1   lead copy
                 --on-ink-quiet on --ink  5.77:1   10px labels
     suite       --on-bone on --bone     11.79:1   table text
                 --on-bone-quiet          6.04:1   secondary copy
     real        --on-paper on --paper   15.35:1   headings and copy
                 --on-paper-quiet         6.69:1   secondary copy
     hard        --mist on --ink         11.90:1   headings
                 --on-ink-quiet           5.77:1   note copy
     unproven    --on-paper on --paper   15.35:1   headings and copy
   Every one clears WCAG AA at the size it is used.

   The four headline figures include a zero — payments settled — and it
   is set in exactly the same type as the others rather than shrunk or
   greyed. A page of evidence that visually de-emphasises its worst
   number is advertising.
   --------------------------------------------------------------- */

/* =====================================================================
   Masthead — restated, scoped. See the note at the top of this file.
   ===================================================================== */

.page-proof .masthead {
  --rule: var(--rule-on-ink);

  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gap);
  padding: 1.375rem var(--pad-x);
  color: var(--mist);
}

/* An ink scrim under the bar. Invisible over the hero; over the pale
   grounds further down it is what keeps the wordmark above 4.5:1. */
.page-proof .masthead::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(
    to bottom,
    rgba(34, 34, 34, 0.92),
    rgba(34, 34, 34, 0.62) 55%,
    rgba(34, 34, 34, 0)
  );
  pointer-events: none;
}

.page-proof .masthead__mark {
  font-size: var(--t-body);
  font-weight: 600;
  letter-spacing: -0.01em;
  line-height: 1;
  text-decoration: none;
  color: var(--mist);
}

/* A <button> needs its own reset before .plus-link's flexbox applies. */
.page-proof .masthead__menu {
  appearance: none;
  -webkit-appearance: none;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  font-family: var(--sans);
  color: var(--mist);
  cursor: pointer;
}

.page-proof .masthead__menu-label {
  font-size: var(--t-small);
  font-weight: 600;
  letter-spacing: 0.08em;
  line-height: 1;
  text-transform: uppercase;
}

/* =====================================================================
   Shared marks
   ===================================================================== */

.page-proof .pf-code {
  font-family: var(--mono);
  font-size: 0.875em;
  letter-spacing: -0.01em;
  word-break: break-word;
  padding: 0.1em 0.32em;
  border: 1px solid var(--rule);
  border-radius: 2px;
  background: rgba(34, 34, 34, 0.04);
}

.page-proof .ground--ink .pf-code,
.page-proof .ground--forest .pf-code {
  background: rgba(237, 223, 238, 0.08);
}

/* =====================================================================
   Hero — ink
   ===================================================================== */

.page-proof .pf-hero {
  display: flex;
  align-items: flex-end;
  min-height: min(84svh, 46rem);
  padding-block: clamp(8rem, 18vh, 12rem) clamp(3rem, 7vw, 5.5rem);
}

.page-proof .pf-hero__inner {
  display: grid;
  gap: clamp(1.25rem, 2.5vw, 2rem);
}

.page-proof .pf-hero__eyebrow {
  margin: 0;
}

.page-proof .pf-hero__title {
  margin: 0;
  max-width: 16ch;
  color: var(--orchid);
}

.page-proof .pf-hero__body {
  margin: 0;
  max-width: 58ch;
}

/* ---------- the four figures ----------
   Including the zero, at the same size as the rest. */

.page-proof .pf-figures {
  margin: clamp(1.5rem, 3vw, 2.5rem) 0 0;
  padding-top: clamp(1.25rem, 2.5vw, 2rem);
  border-top: 1px solid var(--rule-on-ink);
  display: grid;
  gap: clamp(1.25rem, 3vw, 2.5rem);
}

@media (min-width: 42rem) {
  .page-proof .pf-figures {
    grid-template-columns: repeat(4, minmax(0, auto));
    justify-content: start;
    column-gap: clamp(2rem, 6vw, 5rem);
  }
}

.page-proof .pf-figure {
  display: grid;
  gap: 0.375rem;
}

.page-proof .pf-figure__label {
  margin: 0;
  max-width: 18ch;
}

.page-proof .pf-figure__value {
  margin: 0;
  font-size: clamp(2rem, 1.4rem + 2.4vw, 3.25rem);
  font-weight: 500;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  color: var(--orchid);
}

/* =====================================================================
   Section scaffold
   ===================================================================== */

.page-proof .pf-part__head {
  display: grid;
  gap: clamp(0.75rem, 1.5vw, 1.25rem);
  margin-bottom: clamp(1.75rem, 3.5vw, 2.5rem);
}

.page-proof .pf-part__head > * {
  margin: 0;
}

.page-proof .pf-part__title {
  max-width: 20ch;
}

.page-proof .pf-part__intro {
  max-width: 62ch;
  color: var(--quiet);
}

.page-proof .pf-part__lead {
  margin: 0 0 clamp(1.25rem, 2.5vw, 1.75rem);
  max-width: 54ch;
}

.page-proof .pf-part__copy {
  margin: 0 0 clamp(1rem, 2vw, 1.5rem);
  max-width: 64ch;
}

.page-proof .pf-part__copy:last-child {
  margin-bottom: 0;
}

.page-proof .pf-part__more {
  margin: clamp(2rem, 4vw, 3rem) 0 0;
}

/* =====================================================================
   The suite table
   ===================================================================== */

.page-proof .pf-table-scroll {
  overflow-x: auto;
  border-top: 1px solid var(--rule);
}

.page-proof .pf-table-scroll:focus-visible {
  outline: 2px solid var(--ink);
  outline-offset: 2px;
}

.page-proof .pf-table {
  width: 100%;
  min-width: 44rem;
  border-collapse: collapse;
  text-align: left;
}

.page-proof .pf-table th,
.page-proof .pf-table td {
  vertical-align: baseline;
  padding: clamp(0.75rem, 1.4vw, 1rem) 1.25rem clamp(0.75rem, 1.4vw, 1rem) 0;
  border-bottom: 1px solid var(--rule);
}

.page-proof .pf-table thead th {
  font-family: var(--mono);
  font-size: var(--t-label);
  font-weight: 600;
  letter-spacing: 0.1em;
  line-height: 1;
  text-transform: uppercase;
  color: var(--quiet);
  padding-top: 0;
}

.page-proof .pf-table tbody th {
  font-weight: 400;
  white-space: nowrap;
}

.page-proof .pf-table tbody td {
  font-size: var(--t-body);
  line-height: var(--lh-body);
  color: var(--quiet);
}

.page-proof .pf-table__n {
  font-family: var(--mono);
  font-variant-numeric: tabular-nums;
  color: var(--on-bone);
  width: 4rem;
}

/* =====================================================================
   Note grid — the hard cases
   ===================================================================== */

.page-proof .pf-notes {
  display: grid;
  gap: clamp(1.5rem, 3vw, 2.5rem);
}

@media (min-width: 54rem) {
  .page-proof .pf-notes {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: clamp(2rem, 4vw, 4rem);
  }
}

.page-proof .pf-note {
  padding-top: clamp(1rem, 2vw, 1.25rem);
  border-top: 1px solid var(--rule);
}

.page-proof .pf-note__title {
  margin: 0 0 0.625rem;
  max-width: 26ch;
}

.page-proof .pf-note__copy {
  margin: 0;
  max-width: 54ch;
}

/* =====================================================================
   The gaps — marked with the accent rule, the same weight the page
   gives its strongest claims. These are not fine print.
   ===================================================================== */

.page-proof .pf-gaps {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: clamp(1.5rem, 3vw, 2.25rem);
}

@media (min-width: 54rem) {
  .page-proof .pf-gaps {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: clamp(2rem, 4vw, 4rem);
  }
}

.page-proof .pf-gap {
  border-left: 1px solid var(--orchid);
  padding-left: clamp(0.875rem, 2vw, 1.375rem);
}

.page-proof .pf-gap__title {
  margin: 0 0 0.5rem;
  max-width: 24ch;
}

.page-proof .pf-gap__copy {
  margin: 0;
  max-width: 48ch;
}

/* =====================================================================
   Footer — restated, scoped
   ===================================================================== */

.page-proof .site-footer__inner {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(1.25rem, 2.5vw, 2rem);
  padding-block: clamp(2rem, 4vw, 3.5rem);
  border-top: 1px solid var(--rule);
}

.page-proof .site-footer__nav {
  display: flex;
  flex-wrap: wrap;
  gap: clamp(1.25rem, 3vw, 2.5rem);
}

.page-proof .site-footer__link {
  text-decoration: none;
  font-size: var(--t-body);
  line-height: 1.4;
  padding-block: 0.25rem;
  border-bottom: 1px solid transparent;
  transition:
    color var(--d-hover) var(--ease-out),
    border-color var(--d-hover) var(--ease-out);
}

.page-proof .site-footer__link:hover,
.page-proof .site-footer__link:focus-visible {
  color: var(--orchid);
  border-bottom-color: var(--orchid);
}

.page-proof .site-footer__meta {
  margin: 0;
  color: var(--quiet);
}

.page-proof .site-footer__note {
  margin: 0;
  max-width: 62ch;
  font-size: var(--t-body);
  line-height: var(--lh-body);
  border-left: 1px solid var(--orchid);
  padding-left: clamp(0.75rem, 1.5vw, 1.25rem);
}

/* =====================================================================
   Motion off
   ===================================================================== */

@media (prefers-reduced-motion: reduce) {
  .page-proof .site-footer__link {
    transition: none;
  }
}
