/* ══════════════════════════════════════════════════════════════
   LAYOUT — Grid, containers, sections
   ══════════════════════════════════════════════════════════════ */

.container {
    width: 100%;
    max-width: var(--max-width);
    margin: 0 auto;
    padding: 0 var(--space-4);
}
.container--sm { max-width: var(--max-width-sm); }
.container--xs { max-width: var(--max-width-xs); }
@media (min-width: 768px) { .container { padding: 0 var(--space-8); } }

.grid { display: grid; gap: var(--space-6); }
.grid--2 { grid-template-columns: 1fr; }
.grid--3 { grid-template-columns: 1fr; }
.grid--4 { grid-template-columns: 1fr; }
@media (min-width: 640px) {
    .grid--2 { grid-template-columns: repeat(2, 1fr); }
    .grid--3 { grid-template-columns: repeat(2, 1fr); }
    .grid--4 { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
    .grid--3 { grid-template-columns: repeat(3, 1fr); }
    .grid--4 { grid-template-columns: repeat(4, 1fr); }
    .grid { gap: var(--space-8); }
}

.flex { display: flex; }
.flex-wrap { flex-wrap: wrap; }
.flex-col { flex-direction: column; }
.items-center { align-items: center; }
.justify-center { justify-content: center; }
.justify-between { justify-content: space-between; }
.gap-2 { gap: var(--space-2); }
.gap-4 { gap: var(--space-4); }
.gap-6 { gap: var(--space-6); }
.gap-8 { gap: var(--space-8); }

.section { padding: var(--space-16) 0; position: relative; overflow: hidden; }
.section--dark { background: var(--gradient-hero); color: var(--color-white); }
.section--alt { background-color: var(--color-off-white); }
.section--navy { background-color: var(--color-navy); color: var(--color-white); }
@media (min-width: 768px) { .section { padding: var(--space-20) 0; } }
@media (min-width: 1024px) { .section { padding: var(--space-24) 0; } }

.page-header {
    background: var(--gradient-hero);
    padding: calc(var(--navbar-height) + var(--topbar-height) + var(--space-12)) 0 var(--space-12);
    text-align: center; color: var(--color-white); position: relative;
}
.page-header::after {
    content: ''; position: absolute; bottom: 0; left: 0; right: 0;
    height: 4px; background: var(--gradient-gold);
}
.page-header h1 { font-family: var(--font-display); font-size: var(--fs-2xl); margin-bottom: var(--space-2); }
@media (min-width: 768px) {
    .page-header { padding: calc(var(--navbar-height) + var(--topbar-height) + var(--space-16)) 0 var(--space-16); }
    .page-header h1 { font-size: var(--fs-3xl); }
}

.page-header p {
    font-size: var(--fs-lg);
    color: rgba(255, 255, 255, 0.7);
    max-width: 800px;
    margin: 0 auto;
    font-weight: 500;
}

.layout-2col { display: grid; grid-template-columns: 1fr; gap: var(--space-8); }
@media (min-width: 768px) { .layout-2col { grid-template-columns: 1fr 1fr; } }

.layout-sidebar { display: grid; grid-template-columns: 1fr; gap: var(--space-8); }
@media (min-width: 1024px) { .layout-sidebar { grid-template-columns: 280px 1fr; } }

.hide-mobile { display: none; }
.hide-desktop { display: block; }
@media (min-width: 768px) { .hide-mobile { display: block; } .hide-desktop { display: none; } }
