/* ──────────────────────────────────────────────────────────────
   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;
}

/* ── Section intro (lede under a section heading) ──────────── */
.section-intro {
    max-width: 800px;
    margin-inline: auto;
    margin-bottom: var(--space-4);
    font-size: var(--text-lg);
    text-align: center;
}

/* ── Legal content (privacy, terms) ────────────────────────── */
.legal-content {
    max-width: 960px;
    margin-inline: auto;
}

.legal-content p,
.legal-content li {
    max-width: 78ch;
}

.legal-content h2 {
    margin-top: 2rem;
    margin-bottom: 0.75rem;
}

/* ── Long-form content (article bodies) ────────────────────── */
.article-body {
    overflow-wrap: anywhere;
}

.article-body h2,
.article-body h3,
.article-body h4 {
    margin-top: var(--space-4);
    margin-bottom: var(--space-2);
}

.article-body p,
.article-body ul,
.article-body ol,
.article-body blockquote {
    margin-bottom: var(--space-3);
}

.article-body ul,
.article-body ol {
    padding-left: var(--space-4);
}

.article-body li {
    margin-bottom: var(--space-1);
}

.article-body figure {
    margin: 2rem 0;
}

.article-body picture {
    display: block;
}

.article-body table {
    display: block;
    max-width: 100%;
    overflow-x: auto;
    margin: var(--space-4) 0;
}

.article-body img {
    max-width: 100%;
    height: auto;
    border-radius: var(--border-radius-lg);
}

/* ── Pricing grid ──────────────────────────────────────────── */
.pricing-grid {
    display: grid;
    gap: var(--space-3);
    grid-template-columns: 1fr;
    padding-top: 14px;
}

@media (min-width: 1024px) {
    .pricing-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

/* ── 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;
}
