/* ==========================================================================
   LAYOUT — Grid, Containers, Structure
   ========================================================================== */

/* ── Container ── */
.container {
    width: 100%;
    max-width: var(--container);
    margin-inline: auto;
    padding-inline: var(--gutter);
}

.container--narrow {
    max-width: var(--container-narrow);
}

.container--wide {
    max-width: var(--container-wide);
}

/* ── Section ── */
.section {
    padding-block: var(--section-padding);
}

.section--sm {
    padding-block: var(--section-padding-sm);
}

.section--navy {
    background-color: var(--color-navy);
    color: var(--color-white);
}

.section--navy .section-header__title {
    color: var(--color-white);
}

.section--navy .section-header__desc {
    color: rgba(255, 255, 255, 0.7);
}

.section--offwhite {
    background-color: var(--color-offwhite);
}

.section--gray {
    background-color: var(--color-gray);
}

.section--border-top {
    border-top: 1px solid var(--color-border);
}

/* ── Grid System ── */
.grid {
    display: grid;
    gap: var(--gutter);
}

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

.grid--3 {
    grid-template-columns: repeat(3, 1fr);
}

.grid--4 {
    grid-template-columns: repeat(4, 1fr);
}

.grid--6 {
    grid-template-columns: repeat(6, 1fr);
}

/* ── Asymmetric Grids ── */
.grid--8-4 {
    grid-template-columns: 2fr 1fr;
}

.grid--4-8 {
    grid-template-columns: 1fr 2fr;
}

.grid--7-5 {
    grid-template-columns: 7fr 5fr;
}

.grid--5-7 {
    grid-template-columns: 5fr 7fr;
}

/* ── Flex ── */
.flex {
    display: flex;
}

.flex--center {
    align-items: center;
    justify-content: center;
}

.flex--between {
    align-items: center;
    justify-content: space-between;
}

.flex--column {
    flex-direction: column;
}

.flex--wrap {
    flex-wrap: wrap;
}

.flex--gap-sm {
    gap: var(--space-sm);
}

.flex--gap-md {
    gap: var(--space-md);
}

.flex--gap-lg {
    gap: var(--space-lg);
}

.flex--gap-xl {
    gap: var(--space-xl);
}

/* ── Page Layout ── */
.page-header {
    padding-top: calc(var(--header-height) + var(--space-3xl));
    padding-bottom: var(--space-3xl);
    border-bottom: 1px solid var(--color-border);
}

.page-header .eyebrow {
    margin-bottom: var(--space-md);
}

.page-header__title {
    font-size: var(--text-h1);
    color: var(--color-navy);
    margin-bottom: var(--space-md);
}

.page-header__desc {
    max-width: 720px;
    color: var(--color-muted);
    font-size: clamp(1rem, 0.5vw + 0.9rem, 1.125rem);
    line-height: var(--leading-relaxed);
}

/* ── Content + Sidebar ── */
.content-layout {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-3xl);
}

.content-layout--sidebar {
    grid-template-columns: 1fr 320px;
}

/* ── Aspect Ratios ── */
.aspect-16-9  { aspect-ratio: 16 / 9; }
.aspect-16-10 { aspect-ratio: 16 / 10; }
.aspect-4-3   { aspect-ratio: 4 / 3; }
.aspect-3-4   { aspect-ratio: 3 / 4; }
.aspect-1-1   { aspect-ratio: 1 / 1; }

/* ── Object Fit ── */
.cover {
    object-fit: cover;
    width: 100%;
    height: 100%;
}

/* ── Main Content Area ── */
.site-main {
    min-height: 60vh;
}

.content-area {
    max-width: var(--container-narrow);
}

.content-area > * + * {
    margin-top: var(--space-lg);
}

.content-area h2 {
    margin-top: var(--space-3xl);
}

.content-area h3 {
    margin-top: var(--space-2xl);
}

.content-area img {
    border-radius: var(--radius-md);
    margin-block: var(--space-xl);
}

/* ── Table (content area) ── */
.content-area table,
.dim-table {
    width: 100%;
    border-collapse: collapse;
    margin-block: var(--space-xl);
    font-size: var(--text-small);
}

.content-area th,
.dim-table th {
    text-align: left;
    padding: var(--space-sm) var(--space-md);
    font-weight: var(--weight-semibold);
    font-size: var(--text-xs);
    letter-spacing: var(--tracking-wide);
    text-transform: uppercase;
    color: var(--color-muted);
    background: var(--color-gray);
    border-bottom: 2px solid var(--color-border);
}

.content-area td,
.dim-table td {
    padding: var(--space-sm) var(--space-md);
    border-bottom: 1px solid var(--color-border-light);
    vertical-align: top;
}

.content-area tr:last-child td,
.dim-table tr:last-child td {
    border-bottom: none;
}
