/* Evulgare liquid-layout layer v2.0.0-rc.28-WIP
   Presentation geometry only. Domain state, proof, authority, and event
   history remain server-derived. This sheet is loaded by the base template,
   so the contract applies to every public page. */
:root {
  --container: 88rem;
  --container-wide: 118rem;
  --container-ultra: 132rem;
  --page-inline-gap: clamp(1.75rem, 4.6vw, 5.5rem);
  --section-block-gap: clamp(3.5rem, 6vw, 7.75rem);
  --fluid-card-min: 20rem;
}

html { min-width: 20rem; }
body { min-width: 20rem; overflow-x: clip; }
main { width: 100%; min-width: 0; overflow-x: clip; }
:where(section, article, aside, nav, header, footer, form, fieldset, figure, table, .container, .container-wide, .container-fluid) { min-width: 0; }
:where(img, svg, canvas, video, iframe) { max-width: 100%; height: auto; }

.container,
.container-wide,
.container-fluid {
  width: min(calc(100% - var(--page-inline-gap)), var(--container));
  margin-inline: auto;
  min-width: 0;
}
.container-wide { width: min(calc(100% - var(--page-inline-gap)), var(--container-wide)); }
.container-fluid { width: min(calc(100% - var(--page-inline-gap)), var(--container-ultra)); }
:where(.container, .container-wide, .container-fluid) > * { min-width: 0; }
.section { padding-block: var(--section-block-gap); }

/* Reusable grids continuously add or remove columns at the width where their
   own content requires it; they are not tied to a narrow set of devices. */
:where(
  .card-grid,
  .platform-grid,
  .simulation-card-grid,
  .result-card-grid,
  .metric-grid,
  .assurance-graph,
  .docs-pillar-grid,
  .memory-file-grid,
  .proof-grid,
  .product-grid
) { grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--fluid-card-min)), 1fr)); }
.failure-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); }
.ecosystem-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 21rem), 1fr)); }
.labs-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 27rem), 1fr)); }
.compact-link-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr)); }
.footer-grid { grid-template-columns: minmax(min(100%, 27rem), 1.45fr) repeat(3, minmax(11rem, 1fr)); gap: clamp(1.5rem, 3vw, 3.5rem); }

:where(
  .card-grid,
  .platform-grid,
  .simulation-card-grid,
  .result-card-grid,
  .metric-grid,
  .assurance-graph,
  .docs-pillar-grid,
  .memory-file-grid,
  .proof-grid,
  .product-grid,
  .failure-grid,
  .ecosystem-grid,
  .labs-grid,
  .compact-link-grid,
  .footer-grid
) > * { min-width: 0; }

.hero-grid,
.page-hero-grid,
.statement-grid,
.split-heading,
.two-column,
.contact-layout {
  column-gap: clamp(2rem, 5vw, 7rem);
  row-gap: clamp(2rem, 4vw, 4rem);
}
.hero-grid,
.page-hero-grid { grid-template-columns: minmax(0, 1.12fr) minmax(min(100%, 24rem), .88fr); }
.split-heading { grid-template-columns: minmax(0, 1.2fr) minmax(min(100%, 20rem), .8fr); }
.button-row { flex-wrap: wrap; }
.button-row > * { min-width: 0; }

/* Long machine identifiers remain inside the component that owns them. */
:where(.mono, code, pre, td, th, dd, [data-digest], [data-run-id]) { overflow-wrap: anywhere; word-break: break-word; }
:where(.table-scroll, .table-wrap) { max-width: 100%; overflow-x: auto; overscroll-behavior-inline: contain; }

@media (min-width: 120rem) {
  :root { --container-wide: 126rem; --container: 94rem; }
}

@media (max-width: 86rem) {
  .primary-nav { gap: clamp(.4rem, .8vw, .8rem); font-size: .78rem; }
}

@media (max-width: 72rem) {
  .footer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .hero-grid,
  .page-hero-grid,
  .statement-grid,
  .split-heading,
  .two-column,
  .contact-layout { grid-template-columns: 1fr; }
}

@media (max-width: 46rem) {
  :root {
    --page-inline-gap: 1.5rem;
    --section-block-gap: clamp(3rem, 10vw, 4.5rem);
    --fluid-card-min: 17rem;
  }
  .footer-grid { grid-template-columns: 1fr; }
  .button-row > :is(.button, button, a.button) { width: 100%; justify-content: center; }
}

/* RC42: dense defense-workbench navigation remains within the viewport. */
@media (min-width: 64.01rem) and (max-width: 94rem) {
  .header-rail { gap: clamp(.75rem, 1.2vw, 1.25rem); }
  .primary-nav {
    gap: clamp(.28rem, .45vw, .5rem);
    font-size: clamp(.78rem, .71rem + .08vw, .81rem);
    letter-spacing: .008em;
  }
  .primary-nav a { padding-block: .55rem; }
  .primary-nav .nav-contact { padding: .5rem .65rem; }
}
