@layer layout {
  .legal-page {
    margin: 0;
    min-height: 100vh;
    background: var(--bg-body);
    color: var(--text-main);
    font-family: var(--font-body);
    font-size: var(--text-body);
    line-height: var(--leading-normal);
  }

  .legal-header,
  .legal-page-footer {
    box-sizing: border-box;
    width: min(100% - 2 * 1.25rem, 62rem);
    margin-inline: auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.25rem;
  }

  .legal-header {
    padding-block: 1.25rem;
    border-bottom: 3px solid var(--border-chunky);
  }

  .legal-header nav,
  .legal-page-footer {
    display: flex;
    flex-wrap: wrap;
    gap: 1.25rem;
  }

  .legal-header a,
  .legal-page-footer a {
    min-height: var(--btn-height-secondary);
    display: inline-flex;
    align-items: center;
  }

  .legal-header .legal-brand {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    color: var(--text-main);
    font-size: 1.25rem;
    font-weight: var(--weight-bold);
  }

  .legal-brand-icon {
    width: var(--icon-md, 1.5rem);
    height: var(--icon-md, 1.5rem);
    fill: var(--primary);
    flex-shrink: 0;
  }

  .legal-header [aria-current="page"] {
    color: var(--text-main);
    font-weight: var(--weight-bold);
    text-decoration: underline;
    text-underline-offset: .25rem;
  }

  .legal-main {
    box-sizing: border-box;
    width: min(100% - 2 * 1.25rem, 54rem);
    margin-inline: auto;
    padding-block: 2rem 3rem;
  }

  .page-intro {
    margin-bottom: 2rem;

    & h1 {
      margin-block: .5rem 1rem;
      font-size: var(--text-display-fluid);
    }

    & p:last-child {
      max-width: 46rem;
      color: var(--text-muted);
      font-size: 1.1rem;
    }
  }

  .eyebrow {
    margin: 0;
    color: var(--primary);
    font-size: .75rem;
    font-weight: var(--weight-bold);
    letter-spacing: .050em;
    text-transform: uppercase;
  }

  .legal-main section {
    margin-top: 2rem;
    padding: 1.5rem;
    border: 3px solid var(--border-chunky);
    border-radius: 1rem;
    background: var(--bg-surface);
  }

  .legal-main h2 {
    margin-block: 0 1rem;
  }

  .legal-main p,
  .legal-main li,
  .legal-main dd,
  .legal-main td,
  .legal-main th {
    overflow-wrap: anywhere;
  }

  .legal-main a {
    text-decoration: underline;
    text-underline-offset: .25rem;
  }

  .particulars {
    margin: 0 0 1.25rem;

    & div {
      display: grid;
      grid-template-columns: minmax(10rem, 1fr) 2fr;
      gap: 1rem;
      padding-block: .5rem;
      border-bottom: 1px solid var(--border-soft);
    }

    & dt {
      color: var(--text-muted);
      font-weight: var(--weight-semibold);
    }

    & dd {
      margin: 0;
    }
  }

  .table-wrap {
    overflow-x: auto;
  }

  table {
    width: 100%;
    border-collapse: collapse;
  }

  th,
  td {
    padding: 1rem;
    border: 1px solid var(--border);
    text-align: start;
    vertical-align: top;
  }

  th {
    background: var(--bg-surface-alt);
  }

  .legal-page-footer {
    padding-block: 1.25rem 1.75rem;
    border-top: 1px solid var(--border);
    color: var(--text-muted);
    font-size: .75rem;
  }

  @media (max-width: 38rem) {
    .legal-main section {
      padding: 1.25rem;
    }

    .particulars div {
      grid-template-columns: 1fr;
      gap: .25rem;
    }

    /* B.4: below this width the 3-column processing table compresses each column to
       roughly word-width — overflow-wrap:anywhere then stops page overflow but breaks nearly
       every word, which is unreadable rather than just cramped. Reflow each <tr> into a
       labelled stacked card instead (Data / Why / Legal basis), keeping the table/region
       semantics and the existing tabindex="0" region intact — no parallel mobile-only markup. */
    .table-wrap table,
    .table-wrap tbody,
    .table-wrap tr,
    .table-wrap td {
      display: block;
      width: 100%;
    }

    .table-wrap thead {
      /* Kept in the DOM for the accessibility tree (column headers still announce via the
         data-label content below); hidden visually the same way base.css's .sr-only does. */
      position: absolute;
      width: 1px;
      height: 1px;
      padding: 0;
      margin: -1px;
      overflow: hidden;
      clip: rect(0, 0, 0, 0);
      white-space: nowrap;
      border: 0;
    }

    .table-wrap tr {
      margin-block-end: 1rem;
      border: 1px solid var(--border);
      border-radius: 5px;
      overflow: hidden;
    }

    .table-wrap tr:last-child {
      margin-block-end: 0;
    }

    .table-wrap td {
      border: none;
      border-block-end: 1px solid var(--border-soft);
    }

    .table-wrap td:last-child {
      border-block-end: none;
    }

    .table-wrap td::before {
      content: attr(data-label);
      display: block;
      margin-block-end: .25rem;
      color: var(--text-muted);
      font-size: .75rem;
      font-weight: var(--weight-semibold);
    }
  }
}
