/* ==========================================================================
   responsive.css · breakpoints (desktop-down overrides)
   ========================================================================== */

/* ---------- ≤ 1200px: navigation collapses into a drop sheet ---------- */
@media (max-width: 1200px) {
  .menu-toggle { display: inline-flex; }

  .primary-nav {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    display: block;
    max-height: calc(100vh - var(--header-h));
    max-height: calc(100dvh - var(--header-h));
    overflow-y: auto;
    background: var(--almond-soft);
    color: var(--charcoal);
    border-top: 4px solid var(--sienna);
    box-shadow: 0 30px 50px -30px rgba(8, 20, 17, 0.55);
    visibility: hidden;
    opacity: 0;
    transform: translateY(-8px);
    transition: opacity 0.28s var(--ease), transform 0.28s var(--ease), visibility 0s linear 0.28s;
  }
  .primary-nav.is-open {
    visibility: visible;
    opacity: 1;
    transform: none;
    transition: opacity 0.28s var(--ease), transform 0.28s var(--ease), visibility 0s;
  }

  .primary-nav__list {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0;
    max-width: var(--max);
    margin-inline: auto;
    padding: 1.2rem var(--gutter) 2rem;
  }
  .primary-nav__list li { display: block; border-bottom: 1px solid var(--rule); }

  .primary-nav__link {
    display: block;
    padding: 1rem 1rem 1rem 0.9rem;
    color: var(--forest);
    white-space: normal;
    border-left: 3px solid transparent;
  }
  .primary-nav__link::before { display: none; }
  .primary-nav__link:hover { background: var(--almond); color: var(--forest); }
  .primary-nav__link[aria-current="page"] { color: var(--forest); border-left-color: var(--sienna); background: var(--almond); }
  .primary-nav__link:focus-visible { outline-color: var(--sienna); }
  .primary-nav__name { display: block; font-family: var(--font-display); font-size: 1.3rem; line-height: 1.2; }
  .primary-nav__desc { display: block; margin-top: 0.2rem; font-size: 0.82rem; font-weight: 400; color: var(--charcoal-soft); }

  .timeline::before { left: calc(8rem + 1.2rem); }
  .timeline__entry { grid-template-columns: 8rem minmax(0, 1fr); gap: 2.4rem; }
  .timeline__entry::before { left: calc(8rem + 1.2rem - 6px); }
}

/* ---------- ≤ 1024px ---------- */
@media (max-width: 1024px) {
  .footer-top { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .footer-sig { grid-column: 1 / -1; }

  .milestone-rail { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 1rem; }
  .phase-track { grid-template-columns: repeat(3, minmax(0, 1fr)); }

  .sources__grid { grid-template-columns: 1fr; gap: 1.5rem; }

  .chapters { grid-template-columns: 1fr; }
  .contents { position: static; padding: 1.3rem 1.4rem; background: var(--almond-soft); }
  .contents ol { columns: 2; column-gap: 2rem; border-left: 0; }
  .contents li { break-inside: avoid; }
  .contents a { padding-left: 0; border-left: 0; }

  .institutions { grid-template-columns: 1fr; }
  .institutions__link { height: 3.5rem; }
  .institutions__link::before { left: 50%; right: auto; top: 0; bottom: 0; width: 1px; height: auto; }

  .glossary { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  .catalogue__item { grid-template-columns: 8rem minmax(0, 1fr); }
  .catalogue__type { grid-column: 2; justify-self: start; grid-row: 2; }

  .milestone-ledger li { grid-template-columns: 3rem 8.5rem minmax(0, 1fr); }
  .milestone-ledger .tag-row { grid-column: 3; }

  .correspondence { grid-template-columns: 1fr; min-height: 0; }
  .correspondence__side,
  .correspondence__form { padding-inline: var(--gutter); }
}

/* ---------- ≤ 860px: single-column compositions ---------- */
@media (max-width: 860px) {
  :root { --header-h: 64px; }

  .primary-nav__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  .home-hero::after { top: auto; left: 0; width: 100%; height: 34%; }
  .home-hero__grid { grid-template-columns: 1fr; }
  .mount { max-width: 340px; }

  .record-strip__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .record-strip__item { border-left: 0; padding-left: 0; border-top: 1px solid var(--rule-light); }
  .record-strip__item:nth-child(even) { padding-left: 1.2rem; border-left: 1px solid var(--rule-light); }
  .record-strip__item:nth-child(-n + 2) { border-top: 0; }

  .intro-split,
  .ledger,
  .voice,
  .closing,
  .dossier__grid,
  .track-intro__head,
  .voices,
  .mandate-intro__grid,
  .roster-layout,
  .figures-intro__head,
  .recognition,
  .catalogue-intro__grid,
  .wall__head,
  .plate { grid-template-columns: 1fr; }

  .intro-split__thesis { position: static; }

  .directory { grid-template-columns: 1fr; }

  .matrix { grid-template-columns: 1fr; }

  .transitions { grid-template-columns: 1fr; }
  .transitions article,
  .transitions article + article { padding: 1.6rem 0; border-left: 0; border-bottom: 1px solid var(--rule); }

  .figures { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .figure-item:not(:nth-child(3n + 1)) { padding-left: 0; border-left: 0; }
  .figure-item:nth-child(even) { padding-left: 1.2rem; border-left: 1px solid var(--rule); }

  .statement-index { grid-template-columns: 1fr; }

  /* Register table becomes stacked records */
  .register thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .register tr { display: block; padding: 1.2rem 0; border-bottom: 1px solid var(--rule); }
  .register tbody th,
  .register td { display: block; width: auto; padding: 0.2rem 0; border: 0; white-space: normal; }
  .register tbody th { margin-bottom: 0.4rem; }
  .register td::before {
    content: attr(data-label) " — ";
    font-family: var(--font-mono);
    font-size: 0.7rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--mineral-ink);
  }
  .register td:last-child { white-space: normal; margin-top: 0.4rem; }
}

/* ---------- ≤ 640px ---------- */
@media (max-width: 640px) {
  .home-hero__role { flex-direction: column; align-items: flex-start; }
  .home-hero__role span + span::before { display: none; }

  .wordmark__name { font-size: 1.08rem; }
  .wordmark__tag { font-size: 0.58rem; letter-spacing: 0.12em; }
  .menu-toggle__text { display: none; }
  .menu-toggle { padding: 0.5rem 0.8rem; min-width: 44px; justify-content: center; }

  .primary-nav__list { grid-template-columns: 1fr; padding-top: 0.5rem; }
  .primary-nav__link { padding-block: 0.8rem; }

  .footer-top { grid-template-columns: 1fr; }
  .footer-links { columns: 2; }
  .footer-bottom { flex-direction: column; align-items: flex-start; }

  .record-strip__list { grid-template-columns: 1fr; }
  .record-strip__item,
  .record-strip__item:nth-child(even) { padding-left: 0; border-left: 0; border-top: 1px solid var(--rule-light); }
  .record-strip__item:first-child { border-top: 0; }
  .record-strip__item:nth-child(2) { border-top: 1px solid var(--rule-light); }

  .milestone-rail { grid-template-columns: 1fr; }
  .milestone-rail li { padding: 1.4rem 0 0 1.4rem; border-left: 1px solid var(--rule-light); }
  .milestone-rail li::before { top: 1.8rem; left: -5px; }
  .milestone-rail { border-top: 0; }

  .ledger__row { grid-template-columns: 1fr; gap: 0.25rem; }

  .record-card dl div,
  .institution dl div,
  .catalogue-card dl div { grid-template-columns: 1fr; gap: 0.2rem; }

  .contents ol { columns: 1; }

  .name-forms { grid-template-columns: 1fr; }
  .discipline-list li { grid-template-columns: 1fr; gap: 0.3rem; }

  .phase-track { grid-template-columns: 1fr; }
  .phase-track li { padding-bottom: 1.2rem; }

  /* Timeline: date sits above entry, line on the left edge */
  .timeline::before { left: 5px; }
  .timeline__entry { grid-template-columns: 1fr; gap: 0.6rem; padding-left: 2rem; }
  .timeline__entry::before { left: 0; top: 0.3rem; }
  .timeline__date { text-align: left; }
  .timeline__date time,
  .timeline__date .timeline__year { font-size: var(--step-2); }

  .glossary { grid-template-columns: 1fr; }

  .roster li { grid-template-columns: 1fr; gap: 0.2rem; }

  .figures { grid-template-columns: 1fr; }
  .figure-item:nth-child(even) { padding-left: 0; border-left: 0; }

  .milestone-ledger li { grid-template-columns: 2.4rem minmax(0, 1fr); gap: 0.4rem 1rem; }
  .milestone-ledger li > time,
  .milestone-ledger li > div,
  .milestone-ledger .tag-row { grid-column: 2; }

  .catalogue-intro .catalogue-count { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.8rem; }
  .catalogue__item { grid-template-columns: 1fr; gap: 0.5rem; }
  .catalogue__type { grid-column: 1; grid-row: auto; }

  .form__row { grid-template-columns: 1fr; }
  .form__footer .btn { width: 100%; }

  .continue__arrow { width: 52px; height: 52px; }

  .statement { padding-left: 2.2rem; }
  .statement::before { font-size: 3.6rem; }

  .scope-note { grid-template-columns: 1fr; }

  .chapter__head { grid-template-columns: 1fr; }
}

/* ---------- ≤ 380px ---------- */
@media (max-width: 380px) {
  .wordmark__tag { display: none; }
  .home-hero__title { font-size: 2.45rem; }
  .catalogue-intro .catalogue-count { grid-template-columns: 1fr; }
  .contact-lines strong,
  .contact-lines a { font-size: 1.2rem; }
}

/* ---------- Landscape phones: keep the menu scrollable ---------- */
@media (max-height: 500px) and (orientation: landscape) {
  .intro-split__thesis,
  .contents { position: static; }
}

@media print {
  .site-header, .site-footer, .btn-row, .filters { display: none; }
  body { background: #fff; }
}
