/* ──────────────────────────────────────────────────────────────
   Dine Local — Layout
   Container, section spacing, grid utilities, responsive helpers.
   ────────────────────────────────────────────────────────────── */

/* ── Container ─────────────────────────────────────────────── */
.container {
    width: 100%;
    max-width: var(--container-max);
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--space-2);
    padding-right: var(--space-2);
}

@media (min-width: 768px) {
    .container {
        padding-left: var(--space-3);
        padding-right: var(--space-3);
    }
}

/* ── Reading width (blog posts, long text) ─────────────────── */
.reading-width {
    max-width: var(--reading-width);
    margin-left: auto;
    margin-right: auto;
}

/* ── Sections ──────────────────────────────────────────────── */
.section {
    padding-top: var(--space-5);
    padding-bottom: var(--space-5);
}

@media (min-width: 768px) {
    .section {
        padding-top: var(--space-7);
        padding-bottom: var(--space-7);
    }
}

.section--tight {
    padding-top: var(--space-4);
    padding-bottom: var(--space-4);
}

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

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

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

.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--2 { grid-template-columns: repeat(2, 1fr); }
    .grid--3 { grid-template-columns: repeat(3, 1fr); }
    .grid--4 { grid-template-columns: repeat(4, 1fr); }
}

/* ── Split layout (contact page) ──────────────────────────── */
.split {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-4);
}

@media (min-width: 768px) {
    .split {
        grid-template-columns: 1fr 1fr;
        gap: var(--space-6);
    }
}

/* ── Flexbox utilities ────────────────────────────────────── */
.flex {
    display: flex;
}

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

.items-center {
    align-items: center;
}

.justify-between {
    justify-content: space-between;
}

.justify-center {
    justify-content: center;
}

.gap-2 { gap: var(--space-2); }
.gap-3 { gap: var(--space-3); }

/* ── Text alignment ───────────────────────────────────────── */
.text-center { text-align: center; }
.text-left   { text-align: left; }

/* ── Spacing utilities ────────────────────────────────────── */
.mt-2 { margin-top: var(--space-2); }
.mt-3 { margin-top: var(--space-3); }
.mt-4 { margin-top: var(--space-4); }
.mb-2 { margin-bottom: var(--space-2); }
.mb-3 { margin-bottom: var(--space-3); }
.mb-4 { margin-bottom: var(--space-4); }

/* ── Visually hidden (screen reader only) ────────────────── */
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
