/* ==========================================
   CSS VARIABLES — owner palette
   Three brand colors drive everything:
     beige/cream  #F5EBDC   (primary background)
     mahogany     #603913   (primary "dark" / chrome)
     crimson      #970B33   (primary accent — THE red, 2026-09-17 owner: no other red shades)
   No pure black. No fine-dining midnight. Every "dark" surface is a warm
   shade of brown, every accent is a shade of crimson, every page reads
   trattoria-daytime.
   ========================================== */
:root {
    /* ---- Brand palette (fixed by owner) ---- */
    --beige:        #F5EBDC;
    --mahogany:     #603913;
    --crimson:      #970B33;

    /* ---- Cream family (backgrounds) ---- */
    --cream-bright: #FBF5E9;  /* brightest, for input/card surfaces on cream */
    --cream:        #F5EBDC;  /* owner beige — main body */
    --cream-soft:   #EFE0C8;  /* slightly deeper cream, alt sections */
    --cream-warm:   #F2E2D0;  /* warm-leaning cream with red undertone */
    --cream-deep:   #E8D6B8;  /* deepest cream, borders + ornament */

    /* ---- Mahogany family (dark moments / chrome) ---- */
    --mahogany-light: #7A4717;  /* softened mahogany for gradient lifts */
    --mahogany-dark:  #4B2D10;  /* deeper tone for contrast on mahogany */
    --mahogany-rich:  #7A4717;  /* alias retained */

    /* ---- Crimson family (accents, titles, CTAs) ---- */
    --crimson-light: #970B33;  /* was #B11A42; owner 2026-09-17: one red only */
    --crimson-dark:  #970B33;  /* was #72092A; #970B33 is 7.4:1 on cream */
    --chianti:       #970B33;  /* was #722F37 */
    --chianti-dark:  #970B33;  /* was #5C252C (headings) */

    /* ---- Supporting ---- */
    --walnut:        #4A3728;                /* used for body copy on cream */
    --walnut-dark:   #3a2918;                /* used for headings on cream */
    --burnished-gold: #8A6A44;               /* deepened from #C4956A so gold
                                                passes AA on cream for small text */
    --burnished-gold-light: #C4956A;         /* lighter gold reserved for
                                                large display + on-dark use */
    --olive:         #5C6B4A;
    --dark-gold:     #B8860B;

    /* ---- Legacy aliases so existing CSS continues to compile. All now
           resolve to warm colors; none resolve to black. ---- */
    --midnight:      #603913;                /* was black — now mahogany */
    --dark-wood:     #603913;                /* was near-black — now mahogany */
    --base:          #F5EBDC;                /* body bg */
    --base-soft:     #EFE0C8;
    --base-deep:     #4B2D10;                /* was near-black — now deep mahogany */
    --warm-cream:    #F5EBDC;

    /* ---- Semantic text tokens (on cream by default) ---- */
    --text-primary:   #3a2918;               /* walnut-dark; 13.5:1 AAA on cream */
    --text-secondary: rgba(74, 55, 40, 0.82);/* walnut @ 82% on cream ≈ 7.1:1 AA */
    --text-muted:     rgba(74, 55, 40, 0.64);/* walnut @ 64% on cream ≈ 5.2:1 AA */

    /* On mahogany chrome (header, footer, .section--mahogany) */
    --text-on-dark:           #F5EBDC;
    --text-on-dark-secondary: rgba(245, 235, 220, 0.86);
    --text-on-dark-muted:     rgba(245, 235, 220, 0.7);
    --gold-on-dark:           #D9B486;       /* lighter gold for contrast on mahogany */

    /* ---- "Gradient" tokens: SOLID since 2026-09-17 (owner: no gradients on
           buttons or backgrounds). Names kept so existing rules still resolve;
           every use is the `background:` shorthand, which takes a color. ---- */
    --gradient-cream:    #FBF5E9;
    --gradient-paper:    #F5EBDC;
    --gradient-dark:     #603913;
    --gradient-mahogany: #603913;
    --gradient-crimson:  #970B33;
    --gradient-chianti:  #970B33;
    --gradient-gold:     #D9B486;  /* crimson text on it = 4.5:1 */
    --gradient-gold-rich: #D9B486;
    --gradient-hero:     rgba(75, 45, 16, 0.6);

    /* ---- Fonts ---- */
    --font-display:    'Playfair Display', Georgia, serif;
    --font-subheading: 'Cormorant Garamond', Georgia, serif;
    --font-body:       'Lora', Georgia, serif;
    --font-ui:         system-ui, -apple-system, sans-serif;
    --font-numeric:    'Fraunces', 'Playfair Display', Georgia, serif;

    /* ---- Layout + motion ---- */
    --section-padding: clamp(80px, 10vw, 140px) 0;
    --container-width: 1200px;
    --transition-fast:   0.2s ease;
    --transition-medium: 0.4s ease;
    --transition-slow:   0.6s ease;
    --ease-out-expo:     cubic-bezier(0.23, 1, 0.32, 1);
    --ease-out-smooth:   cubic-bezier(0.25, 0.46, 0.45, 0.94);
    --grain-opacity:     0.08;
}
/* ==========================================
   RESET & BASE
   ========================================== */
*, *::before, *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}
html {
    scroll-behavior: smooth;
    font-size: 16px;
    -webkit-text-size-adjust: 100%;
}
body {
    font-family: var(--font-body);
    /* Warm cream base with a subtle mahogany/crimson wash so the page reads
       trattoria-daytime, not fine-dining. Dark sections (kept on hero, kitchen,
       happenings, story, press, events banner) provide contrast moments. */
    background-color: var(--base);
    background-image:
        none;
    background-attachment: fixed;
    color: var(--text-primary);
    line-height: 1.7;
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
/* Paper texture overlay — subtle, matches the cream base */
body::after {
    content: '';
    position: fixed;
    inset: 0;
    z-index: 9998;
    pointer-events: none;
    opacity: 0.08;
    mix-blend-mode: multiply;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
img {
    max-width: 100%;
    height: auto;
    display: block;
}
a {
    text-decoration: none;
    color: inherit;
    transition: color var(--transition-fast);
}
ul {
    list-style: none;
}
p {
    margin-bottom: 1rem;
}
p:last-child {
    margin-bottom: 0;
}
button {
    font: inherit;
    cursor: pointer;
    border: none;
    background: none;
}
/* ==========================================
   ACCESSIBILITY
   ========================================== */
.skip-link {
    position: fixed;
    top: -80px;
    left: 50%;
    transform: translateX(-50%);
    background: var(--mahogany-dark, #4B2D10);
    color: var(--cream, #F5EBDC);
    padding: 12px 24px;
    z-index: 100000;
    border-radius: 0 0 8px 8px;
    font-weight: 600;
    text-decoration: none;
    transition: top 0.3s ease;
}
.skip-link:focus-visible {
    top: 0;
    outline: 3px solid var(--warm-cream);
    outline-offset: 2px;
}
/* Global focus-visible for keyboard navigation (ADA) */
:focus-visible {
    outline: 2px solid var(--burnished-gold);
    outline-offset: 2px;
}
:focus:not(:focus-visible) {
    outline: none;
}
/* 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;
}
/* Typography
   Font declarations and global text styles.
   Note: typography rules are integrated within component/page files.
   Reserved for @font-face and global h1-h6 overrides. */
/* Numerics — Fraunces display font for prices, ratings, hours, counts.
   The SOFT axis gives characters gentle curves; the opsz axis lets headlines
   use optical-size-tuned glyphs that read better at large sizes. */
.num,
.chefspick__price,
.menu-card__price,
.reviews-aggregate__rating,
.reviews-aggregate__count,
.press-card__date,
.happening-live-card__schedule,
.site-header__location-hours,
.drawer__location-address,
.loc-card__address,
.loc-glance__value {
    font-family: var(--font-numeric);
    font-variant-numeric: lining-nums tabular-nums;
    font-feature-settings: "ss01" on, "ss02" on;
    letter-spacing: -0.01em;
}
/* Large-display numerics — prices, aggregate rating, large counts */
.chefspick__price,
.reviews-aggregate__rating {
    font-variation-settings: "opsz" 144, "SOFT" 80;
    font-weight: 900;
}
.menu-card__price {
    font-variation-settings: "opsz" 72, "SOFT" 50;
    font-weight: 800;
}
/* Rating + review count beside the stars */
.reviews-aggregate__count {
    font-variation-settings: "opsz" 24, "SOFT" 40;
    font-weight: 400;
    font-style: italic;
}
/* Compact numerics in the location bar / drawer */
.site-header__location-hours,
.loc-glance__value {
    font-variation-settings: "opsz" 14, "SOFT" 30;
    font-weight: 400;
    font-style: italic;
}
/* Addresses + phones read well with Fraunces' text-size opsz */
.drawer__location-address,
.loc-card__address {
    font-variation-settings: "opsz" 14, "SOFT" 20;
    font-weight: 400;
    font-style: italic;
}
/* Press dates + happening schedules — small caps feel */
.press-card__date,
.happening-live-card__schedule {
    font-variation-settings: "opsz" 14, "SOFT" 10;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
}
/* ==========================================
   CONTAINER & LAYOUT
   ========================================== */
.container {
    max-width: var(--container-width);
    margin: 0 auto;
    padding: 0 1rem;
}
@media (min-width: 640px) { .container { padding: 0 1.5rem; } }
@media (min-width: 960px) { .container { padding: 0 2rem; } }
.container--narrow {
    max-width: 800px;
}
.container--wide {
    max-width: 1400px;
}
/* ==========================================
   STICKY MOBILE RESERVE CTA
   ========================================== */
.sticky-mobile-cta {
    display: none;
}
@media (max-width: 768px) {
    .sticky-mobile-cta {
        display: flex;
        position: fixed;
        left: 1rem;
        right: 1rem;
        bottom: 1rem;
        z-index: 999;
        justify-content: center;
        align-items: center;
        gap: 0.5rem;
        padding: 1rem 1.5rem;
        background: var(--gradient-crimson);
        color: var(--warm-cream);
        border: 2px solid var(--crimson);
        border-radius: 999px;
        font-family: var(--font-ui);
        text-transform: uppercase;
        letter-spacing: 2px;
        font-size: 0.9rem;
        font-weight: 700;
        box-shadow: 0 8px 28px rgba(0, 0, 0, 0.5), 0 0 0 4px rgba(151, 11, 51, 0.12);
        text-decoration: none;
        transition: transform var(--transition-fast), box-shadow var(--transition-fast);
    }

    .sticky-mobile-cta:hover,
    .sticky-mobile-cta:focus-visible {
        transform: translateY(-2px);
        box-shadow: 0 12px 36px rgba(0, 0, 0, 0.65), 0 0 0 4px rgba(151, 11, 51, 0.2);
    }

    .sticky-mobile-cta__arrow {
        font-size: 1.1rem;
    }

    body.has-sticky-cta {
        padding-bottom: 5.5rem;
    }
}
/* ==========================================
   SUBPAGE LAYOUTS
   ========================================== */
/* Full-width image hero with overlay */
.subpage-hero {
    position: relative;
    min-height: 50vh;
    display: flex;
    align-items: center;
    overflow: hidden;
    padding: 120px 0 60px;
}
.subpage-hero__bg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center;
    z-index: 0;
}
.subpage-hero__overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(26, 20, 16, 0.7);
    z-index: 1;
}
.subpage-hero > .container {
    position: relative;
    z-index: 2;
}
/* Content page layout */
.content-section {
    padding: var(--section-padding);
}
.content-section h2 {
    font-family: var(--font-display);
    font-size: clamp(1.5rem, 3vw, 2rem);
    color: var(--burnished-gold);
    margin-bottom: 1.25rem;
}
.content-section p {
    font-size: 1.05rem;
    line-height: 1.8;
    color: var(--text-secondary);
    margin-bottom: 1.25rem;
}
.content-section p:last-child {
    margin-bottom: 0;
}
.content-section strong {
    color: var(--text-primary);
}
.content-section em {
    color: var(--burnished-gold);
    font-style: italic;
}
.content-section a {
    color: var(--crimson);
    transition: color var(--transition-fast);
}
.content-section a:hover {
    color: var(--burnished-gold);
}
.content-section ul,
.content-section ol {
    margin-bottom: 1.25rem;
    padding-left: 1.5rem;
}
.content-section ul li,
.content-section ol li {
    font-size: 1rem;
    color: var(--text-secondary);
    line-height: 1.8;
    margin-bottom: 0.5rem;
}
.content-section ul li {
    list-style-type: disc;
    list-style-position: outside;
}
.content-section ul li::marker {
    color: var(--crimson);
}
/* Alternating 50/50 split sections */
.split-section {
    display: grid;
    grid-template-columns: 1fr 1fr;
}
.split-section--reversed .split-section__image {
    order: 2;
}
.split-section--reversed .split-section__content {
    order: 1;
}
.split-section__image {
    position: relative;
    overflow: hidden;
    min-height: 350px;
}
.split-section__image picture {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}
.split-section__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.split-section__content {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 4rem;
    background: var(--midnight);
}
.split-section__content h2 {
    font-family: var(--font-display);
    font-size: clamp(1.75rem, 3.5vw, 2.25rem);
    color: var(--burnished-gold);
    margin-bottom: 1.25rem;
    line-height: 1.2;
}
.split-section__content p {
    font-size: 1.05rem;
    line-height: 1.8;
    color: var(--text-secondary);
    margin-bottom: 1rem;
    max-width: 520px;
}
.split-section__content p:last-child {
    margin-bottom: 0;
}
.split-section__content strong {
    color: var(--text-primary);
}
.split-section__content em {
    color: var(--burnished-gold);
    font-style: italic;
}
.split-section__content a {
    color: var(--crimson);
}
/* Full-width image break */
.image-break {
    position: relative;
    height: 350px;
    overflow: hidden;
}
.image-break picture {
    display: block;
    width: 100%;
    height: 100%;
}
.image-break img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.image-break::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(26, 20, 16, 0.4);
}
/* ==========================================
   ANIMATIONS
   ========================================== */
@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
.animate-fade-in {
    opacity: 0;
    animation: fadeIn 1s var(--ease-out-expo) forwards;
}
.animate-fade-in-delay {
    opacity: 0;
    animation: fadeIn 1s var(--ease-out-expo) 0.3s forwards;
}
.animate-fade-in-delay-2 {
    opacity: 0;
    animation: fadeIn 1s var(--ease-out-expo) 0.6s forwards;
}
.animate-fade-in-delay-3 {
    opacity: 0;
    animation: fadeIn 1s var(--ease-out-expo) 0.9s forwards;
}
.animate-fade-in-delay-4 {
    opacity: 0;
    animation: fadeIn 1s var(--ease-out-expo) 1.2s forwards;
}
@keyframes fadeInLeft {
    from {
        opacity: 0;
        transform: translateX(-30px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}
@keyframes fadeInRight {
    from {
        opacity: 0;
        transform: translateX(30px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}
@keyframes scaleIn {
    from {
        opacity: 0;
        transform: scale(0.95);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}
/* Gold shimmer for decorative elements */
@keyframes goldShimmer {
    0% { background-position: -200% center; }
    100% { background-position: 200% center; }
}
/* Hero float animation */
@keyframes heroFloat {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-10px); }
}
/* Character reveal animation */
@keyframes charReveal {
    from {
        opacity: 0;
        transform: translateY(20px) rotateX(-30deg);
    }
    to {
        opacity: 1;
        transform: translateY(0) rotateX(0);
    }
}
.char-reveal {
    display: inline-block;
    animation: charReveal 0.6s var(--ease-out-expo) forwards;
    opacity: 0;
}
/* ==========================================
   RESPONSIVE - 1200px
   ========================================== */
@media (max-width: 1200px) {
    .location-grid {
        grid-template-columns: repeat(2, 1fr);
    }

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

    .lightbox-prev {
        left: -50px;
    }

    .lightbox-next {
        right: -50px;
    }
}
/* ==========================================
   RESPONSIVE - 1024px (tablet landscape)
   ========================================== */
@media (max-width: 1024px) {
    /* Mobile navigation */
    .nav-menu {
        position: fixed;
        top: 0;
        right: -100%;
        width: 100%;
        height: 100vh;
        background: rgba(26, 20, 16, 0.98);
        backdrop-filter: blur(20px);
        -webkit-backdrop-filter: blur(20px);
        flex-direction: column;
        justify-content: center;
        align-items: center;
        gap: 1.5rem;
        transition: right var(--transition-medium);
        padding: 2rem;
    }

    .nav-menu.active {
        right: 0;
    }

    .nav-toggle {
        display: flex;
    }

    .nav-links {
        flex-direction: column;
        gap: 1rem;
        width: 100%;
        align-items: center;
    }

    .nav-link {
        font-size: 1.1rem;
        letter-spacing: 2px;
    }

    .nav-cta {
        margin-top: 1rem;
    }

    /* Dropdown in mobile: show inline */
    .nav-dropdown {
        text-align: center;
    }

    .dropdown-menu {
        position: static;
        transform: none;
        background: transparent;
        backdrop-filter: none;
        border: none;
        box-shadow: none;
        opacity: 1;
        visibility: visible;
        min-width: auto;
        padding: 0.5rem 0;
        max-height: 0;
        overflow: hidden;
        transition: max-height var(--transition-medium);
    }

    .dropdown-menu::before {
        display: none;
    }

    .nav-dropdown:hover .dropdown-menu,
    .nav-dropdown.open .dropdown-menu {
        max-height: 300px;
    }

    .dropdown-menu a {
        font-size: 0.9rem;
        padding: 0.4rem 0;
        text-align: center;
    }

    .dropdown-menu a:hover {
        padding-left: 0;
    }

    .nav-dropdown > .nav-link .dropdown-arrow {
        display: none;
    }

    /* Grids */
    .happenings-grid,
    .press-grid,
    .article-grid {
        grid-template-columns: repeat(2, 1fr);
    }

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

    .about-grid {
        grid-template-columns: 1fr;
        gap: 3rem;
    }

    .about-grid.reverse {
        direction: ltr;
    }

    .story-grid {
        grid-template-columns: 1fr;
        gap: 3rem;
    }

    .split-section {
        grid-template-columns: 1fr;
    }

    .split-section--reversed .split-section__image,
    .split-section--reversed .split-section__content {
        order: unset;
    }

    .split-section__content {
        padding: 3rem 2rem;
    }

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

    /* Bento responsive: location bento 2-col */
    .location-grid.bento {
        grid-template-columns: repeat(2, 1fr);
    }

    .location-grid.bento .location-card--featured {
        grid-column: span 2;
        grid-row: span 1;
    }

    .location-grid.bento .location-card:nth-child(2) {
        grid-column: span 1;
    }

    /* Dish bento becomes 1-col */
    .dish-grid.bento {
        grid-template-columns: 1fr;
        grid-template-rows: auto;
    }

    .dish-card--hero {
        grid-row: span 1;
    }

    /* Story split stacks */
    .story-split {
        grid-template-columns: 1fr;
        min-height: auto;
    }

    .story-split__content {
        margin-left: 0;
        background: var(--midnight);
    }

    /* Happenings stagger removed */
    .happening-card {
        transform: none;
    }

    .happening-card:hover {
        transform: translateY(-4px);
    }
}
/* ==========================================
   RESPONSIVE - 768px (tablet portrait)
   ========================================== */
@media (max-width: 768px) {
    /* Reduce film grain on mobile */
    body::after {
        opacity: 0.015;
    }

    .hero {
        padding-top: 100px;
        min-height: auto;
    }

    .hero-logo {
        max-width: 250px;
        margin-bottom: 1.5rem;
    }

    .hero-title {
        font-size: 1.8rem;
    }

    .hero-title--dramatic {
        font-size: clamp(2rem, 6vw, 3.5rem);
    }

    .hero-description {
        font-size: 1rem;
    }

    .hero-cta {
        flex-direction: column;
        align-items: center;
    }

    .btn {
        width: 100%;
        max-width: 280px;
    }

    /* Fully opaque mobile navbar */
    .navbar.scrolled {
        background-color: var(--midnight);
        backdrop-filter: none;
    }

    /* Location grid - single col */
    .location-grid {
        grid-template-columns: 1fr;
        max-width: 500px;
        margin-left: auto;
        margin-right: auto;
    }

    .location-grid.bento {
        grid-template-columns: 1fr;
    }

    .location-grid.bento .location-card--featured {
        grid-column: span 1;
        grid-row: span 1;
    }

    .location-grid.bento .location-card:nth-child(2) {
        grid-column: span 1;
    }

    /* Other grids */
    .happenings-grid,
    .press-grid,
    .dishes-grid,
    .article-grid {
        grid-template-columns: 1fr;
    }

    .reservations-grid {
        grid-template-columns: 1fr;
    }

    .contact-grid {
        grid-template-columns: 1fr;
    }

    .footer-grid {
        grid-template-columns: 1fr;
        gap: 2rem;
        text-align: center;
    }

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

    .footer-bottom {
        flex-direction: column;
        text-align: center;
    }

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

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

    .gallery-item--wide {
        grid-column: span 2;
    }

    .gallery-item--tall {
        grid-row: span 1;
        aspect-ratio: 1;
    }

    .gallery-marquee .gallery-item {
        width: 280px;
        height: 360px;
    }

    .gallery-track {
        animation-duration: 30s;
    }

    /* Lightbox */
    .lightbox-prev {
        left: 10px;
    }

    .lightbox-next {
        right: 10px;
    }

    .lightbox-prev,
    .lightbox-next {
        width: 40px;
        height: 40px;
        font-size: 1rem;
    }

    /* Form */
    .form-row {
        grid-template-columns: 1fr;
    }

    .signup-form__row {
        grid-template-columns: 1fr;
    }

    .inquiry-form {
        padding: 2rem 1.5rem;
    }

    /* Reservation card */
    .reservation-card {
        padding: 2rem 1.5rem;
    }

    /* Press */
    .press-logos {
        gap: 2rem;
    }

    .press-logo {
        height: 30px;
    }

    .press-quote__text {
        font-size: 1.15rem;
    }

    /* Press marquee */
    .press-marquee__track {
        animation-duration: 15s;
    }

    /* Brand quote */
    .brand-quote {
        font-size: 1.2rem;
    }

    .brand-quote::before {
        font-size: 3.5rem;
        left: 0;
    }

    /* Split section */
    .split-section__image {
        height: 300px;
    }

    .split-section__content {
        padding: 2.5rem 1.5rem;
    }

    .image-break {
        height: 220px;
    }

    /* Subpage hero */
    .subpage-hero {
        min-height: 40vh;
    }

    /* Parallax banner - disable fixed on mobile */
    .parallax-banner__bg {
        background-attachment: scroll;
    }

    /* Section spacious reduce */
    .section--spacious {
        padding: clamp(60px, 10vw, 100px) 0;
    }
}
/* ==========================================
   RESPONSIVE - 480px (mobile)
   ========================================== */
@media (max-width: 480px) {
    :root {
        --section-padding: 50px 0;
    }

    .container {
        padding: 0 1.25rem;
    }

    .section-title {
        font-size: 1.7rem;
    }

    .section-title--xl {
        font-size: clamp(2rem, 6vw, 3rem);
    }

    .hero {
        min-height: 100vh;
        min-height: 100svh;
    }

    .hero-logo {
        max-width: 200px;
    }

    .hero-title {
        font-size: 1.5rem;
    }

    .hero-title--dramatic {
        font-size: clamp(1.8rem, 6vw, 2.5rem);
    }

    .hero-subtitle {
        font-size: 0.85rem;
        letter-spacing: 2px;
    }

    /* Location cards */
    .location-card {
        padding: 1.5rem 1.25rem;
    }

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

    .location-card__actions .btn {
        flex: none;
        width: 100%;
    }

    /* Gallery */
    .gallery-grid {
        grid-template-columns: 1fr 1fr;
        gap: 0.5rem;
    }

    .gallery-item--wide {
        grid-column: span 1;
        aspect-ratio: 1;
    }

    .gallery-marquee .gallery-item {
        width: 240px;
        height: 300px;
    }

    /* Buttons */
    .btn-xl {
        padding: 1rem 2rem;
        font-size: 0.9rem;
    }

    /* Events banner */
    .events-banner {
        padding: 60px 0;
    }

    /* Menu tabs */
    .menu-tabs {
        flex-direction: column;
        align-items: stretch;
    }

    .menu-tab {
        width: 100%;
    }

    /* Capacity grid */
    .capacity-grid {
        grid-template-columns: 1fr;
    }

    /* Inquiry form */
    .inquiry-form {
        padding: 1.5rem 1.25rem;
    }

    /* Happenings filter */
    .happenings-filter {
        flex-direction: column;
        align-items: stretch;
    }

    .filter-btn {
        width: 100%;
    }

    /* Team grid */
    .team-grid {
        grid-template-columns: 1fr;
    }

    .team-card__image {
        width: 150px;
        height: 150px;
    }

    /* Press logo grid */
    .press-logo-grid {
        grid-template-columns: repeat(2, 1fr);
    }

    /* Section label smaller on mobile */
    .section-label::before {
        width: 20px;
        margin-right: 8px;
    }

    /* Full-bleed override */
    .section--full-bleed {
        padding-left: 0;
        padding-right: 0;
    }
}
/* ==========================================
   REDUCED MOTION
   ========================================== */
@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }

    .animate-fade-in,
    .animate-fade-in-delay,
    .animate-fade-in-delay-2,
    .animate-fade-in-delay-3,
    .animate-fade-in-delay-4 {
        animation: none;
        opacity: 1;
        transform: none;
    }

    .reveal {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .reveal-stagger > * {
        opacity: 1;
        transform: none;
        transition: none;
        transition-delay: 0s !important;
    }

    .gallery-track {
        animation: none;
    }

    .press-marquee__track {
        animation: none;
    }

    .scroll-indicator {
        animation: none;
    }

    .status-dot--open::before {
        animation: none;
    }

    .sticky-mobile-cta {
        transition: none;
    }

    .sticky-mobile-cta:hover,
    .sticky-mobile-cta:focus-visible {
        transform: none;
    }

    .image-lift {
        transition: none;
    }

    .image-lift:hover {
        transform: none;
    }

    .char-reveal {
        animation: none;
        opacity: 1;
        transform: none;
    }

    /* Kill hero float if JS adds it */
    [style*="heroFloat"] {
        animation: none !important;
    }
}
/* ==========================================
   HTML CLASS NAME BRIDGE
   Maps simplified HTML class names to styles
   ========================================== */
/* --- Layout --- */
.container-narrow { max-width: 800px; margin: 0 auto; padding: 0 2rem; }
/* --- Hero --- */
.hero-bg-img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; }
.hero-ctas { display: flex; gap: 1.5rem; justify-content: center; flex-wrap: wrap; margin-top: 2rem; }
.hero-label { font-family: var(--font-ui); font-size: 0.8rem; letter-spacing: 4px; text-transform: uppercase; color: var(--burnished-gold); margin-top: 1rem; }
.hero-tagline { font-family: var(--font-subheading); font-size: clamp(1.1rem, 2.5vw, 1.4rem); font-style: italic; color: var(--text-secondary); max-width: 600px; margin: 0 auto; text-shadow: 0 2px 10px rgba(0,0,0,0.8); }
/* --- Brand Statement --- */
.brand-text { font-family: var(--font-body); font-size: 1.1rem; line-height: 1.8; color: var(--text-secondary); max-width: 700px; margin: 0 auto 1.5rem; text-align: center; }
.section-brand { text-align: center; }
/* --- Location Cards (simplified names) --- */
.location-card-inner { padding: 1.75rem; }
.location-name { font-family: var(--font-display); font-size: 1.25rem; font-weight: 400; color: var(--text-primary); margin-bottom: 0.75rem; }
.location-address { font-size: 0.9rem; color: var(--text-secondary); line-height: 1.6; margin-bottom: 0.5rem; }
.location-phone { font-size: 0.9rem; margin-bottom: 0.75rem; }
.location-phone a { color: var(--burnished-gold); text-decoration: none; }
.location-phone a:hover { color: var(--text-primary); }
.location-status { font-size: 0.85rem; margin-bottom: 1rem; min-height: 1.5em; }
.location-actions { display: flex; gap: 0.75rem; flex-wrap: wrap; margin-top: auto; }
.location-actions .btn-outline-gold,
.location-actions .btn-sm,
.location-actions a { font-size: 0.75rem; padding: 0.5rem 1rem; letter-spacing: 1.5px; }
/* --- Dish Cards (simplified names) --- */
.dish-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; }
.dish-image { aspect-ratio: 4/3; overflow: hidden; border-radius: 8px; }
.dish-image img { width: 100%; height: 100%; object-fit: cover; transition: all 0.6s var(--ease-out-expo); filter: saturate(0.85); }
.dish-card:hover .dish-image img { transform: scale(1.05); filter: saturate(1.1); }
.dish-body { padding: 1.25rem 0; }
.dish-name { font-family: var(--font-display); font-size: 1.2rem; font-weight: 400; color: var(--text-primary); margin-bottom: 0.5rem; }
.dish-description { font-family: var(--font-body); font-size: 0.95rem; color: var(--text-secondary); line-height: 1.7; }
/* --- Happenings Cards (simplified names) --- */
.happening-header { margin-bottom: 0.75rem; }
.happening-schedule { font-family: var(--font-ui); font-size: 0.75rem; letter-spacing: 2px; text-transform: uppercase; color: var(--burnished-gold); margin-bottom: 0.5rem; }
.happening-name { font-family: var(--font-display); font-size: 1.3rem; font-weight: 400; color: var(--text-primary); margin-bottom: 0; }
.happening-description { font-size: 0.9rem; color: var(--text-secondary); line-height: 1.6; margin-bottom: 1rem; }
.happening-link { font-family: var(--font-ui); font-size: 0.8rem; letter-spacing: 1.5px; text-transform: uppercase; color: var(--crimson); transition: color var(--transition-fast); }
.happening-link:hover { color: var(--burnished-gold); }
/* --- Events Subtitle --- */
.events-subtitle { font-family: var(--font-subheading); font-size: 1.1rem; font-style: italic; color: var(--text-secondary); margin-bottom: 2.5rem; }
/* --- Press Section (simplified names) --- */
.press-logos { display: flex; justify-content: center; gap: 2rem; flex-wrap: wrap; margin-bottom: 3rem; }
.press-logo-item { display: flex; align-items: center; justify-content: center; padding: 1rem 1.5rem; border: 1px solid rgba(151,11,51,0.15); border-radius: 4px; background: rgba(151,11,51,0.03); min-width: 150px; transition: all var(--transition-fast); }
.press-logo-item:hover { border-color: rgba(151,11,51,0.3); background: rgba(151,11,51,0.06); }
.press-logo-text { font-family: var(--font-ui); font-size: 0.8rem; letter-spacing: 1.5px; text-transform: uppercase; color: var(--text-muted); text-align: center; }
.press-quote { font-family: var(--font-subheading); font-size: clamp(1.2rem, 3vw, 1.6rem); font-style: italic; color: var(--text-secondary); text-align: center; max-width: 700px; margin: 0 auto 2rem; }
/* --- Link Arrow --- */
.link-arrow { font-family: var(--font-ui); font-size: 0.85rem; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; color: var(--crimson); transition: color var(--transition-fast); display: inline-block; margin-top: 1rem; }
.link-arrow:hover { color: var(--burnished-gold); }
/* --- Section modifiers --- */
.section-cta { text-align: center; padding-top: 2rem; }
.section-title--left { text-align: left; }
/* --- Scroll Indicator (simplified names) --- */
.scroll-indicator-text { display: block; font-family: var(--font-ui); font-size: 0.7rem; text-transform: uppercase; letter-spacing: 3px; margin-bottom: 0.75rem; color: var(--text-muted); }
.scroll-indicator-line { width: 1px; height: 40px; background: var(--burnished-gold); margin: 0 auto; opacity: 0.5; }
/* --- Footer (simplified names) --- */
.footer-heading { font-family: var(--font-display); font-size: 1rem; color: var(--crimson); margin-bottom: 1rem; letter-spacing: 1px; }
.footer-list { list-style: none; padding: 0; margin: 0; }
.footer-list li { margin-bottom: 0.5rem; }
.footer-list a { color: var(--text-secondary); font-size: 0.9rem; transition: color var(--transition-fast); }
.footer-list a:hover { color: var(--burnished-gold); }
.footer-address { font-size: 0.8rem; color: var(--text-muted); display: block; }
.footer-newsletter { margin-top: 1rem; }
.footer-newsletter-row { display: flex; gap: 0.5rem; }
/* --- Signup Section --- */
.signup-subtitle { font-family: var(--font-subheading); font-size: 1.1rem; font-style: italic; color: var(--text-secondary); margin-bottom: 2rem; text-align: center; }
/* --- Forms (simplified names) --- */
.form-group { margin-bottom: 1rem; }
.form-row { display: flex; gap: 1rem; }
.form-input,
.form-select {
    width: 100%;
    padding: 0.75rem 1rem;
    font-family: var(--font-body);
    font-size: 0.9rem;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(196,149,106,0.2);
    color: var(--text-primary);
    border-radius: 3px;
    transition: border-color var(--transition-fast);
}
.form-input:focus,
.form-select:focus { outline: none; border-color: var(--crimson); }
.form-input::placeholder { color: var(--text-muted); }
.form-input--sm { padding: 0.5rem 0.75rem; font-size: 0.85rem; }
.form-submit {
    display: inline-block;
    padding: 0.75rem 2rem;
    font-family: var(--font-ui);
    font-size: 0.85rem;
    font-weight: 600;
    letter-spacing: 2px;
    text-transform: uppercase;
    background: var(--gradient-crimson);
    color: var(--warm-cream);
    border: 1px solid var(--crimson);
    border-radius: 3px;
    cursor: pointer;
    transition: all var(--transition-fast);
}
.form-submit:hover { background: transparent; color: var(--crimson); }
.form-message { font-size: 0.85rem; margin-top: 0.5rem; }
/* --- Button variants --- */
.btn-outline { display: inline-block; padding: 0.5rem 1.2rem; font-family: var(--font-ui); font-size: 0.75rem; font-weight: 600; letter-spacing: 1.5px; text-transform: uppercase; border: 1px solid rgba(196,149,106,0.3); color: var(--burnished-gold); background: transparent; border-radius: 2px; transition: all var(--transition-fast); text-decoration: none; }
.btn-outline:hover { background: rgba(151,11,51,0.1); border-color: var(--crimson); color: var(--crimson); }
.btn-gold--sm {
    padding: 0.4rem 1rem;
    font-size: 0.75rem;
    /* Re-declare bg + color so pa11y / automated contrast tools see a full pair */
    background: var(--gradient-gold);
    color: var(--midnight);
}
.btn-sm { padding: 0.5rem 1.2rem; font-size: 0.75rem; letter-spacing: 1.5px; }
/* --- Section wrappers from HTML --- */
.section-dishes,
.section-happenings,
.section-locations,
.section-story,
.section-press,
.section-events-banner,
.section-signup { /* Inherit .section via HTML */ }
/* --- Story Grid --- */
.story-grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 4rem;
    align-items: center;
}
.story-image { border-radius: 4px; overflow: hidden; }
.story-image img { width: 100%; height: auto; border-radius: 4px; }
.story-text .section-title { margin-bottom: 1.5rem; }
/* --- Events Banner Section --- */
.section-events-banner {
    position: relative;
    text-align: center;
    padding: var(--section-padding);
    /* Warm dark moment — crimson into deep mahogany, no black (owner palette) */
    background: var(--crimson);
}
/* --- Responsive overrides for new classes --- */
@media (max-width: 1024px) {
    .hero-ctas { flex-direction: column; align-items: center; gap: 1rem; }
    .hero-ctas .btn-primary,
    .hero-ctas .btn-secondary { width: 250px; }
}
@media (max-width: 768px) {
    .dish-grid { grid-template-columns: 1fr; gap: 2rem; }
    .story-grid { grid-template-columns: 1fr; gap: 2rem; }
    .press-logos { gap: 1rem; }
    .press-logo-item { min-width: 120px; padding: 0.75rem 1rem; }
    .location-actions { flex-direction: column; }
    .form-row { flex-direction: column; }
    .footer-newsletter-row { flex-direction: column; }
}
@media (max-width: 480px) {
    .hero-ctas .btn-primary,
    .hero-ctas .btn-secondary { width: 100%; }
    .press-logos { flex-direction: column; align-items: center; }
}
/* ==========================================
   PRINT STYLES
   ========================================== */
@media print {
    .navbar,
    .scroll-progress,
    .scroll-indicator,
    .hero-canvas,
    .hero-overlay,
    .hero-fog,
    .lightbox-overlay,
    .sticky-mobile-cta,
    .social-section,
    .email-signup,
    .press-marquee {
        display: none !important;
    }

    /* Hide film grain overlay */
    body::after {
        display: none !important;
    }

    /* Hide vignettes/textured overlays */
    .section--textured::after {
        display: none !important;
    }

    .parallax-banner__overlay {
        display: none !important;
    }

    /* Stop marquee animation */
    .press-marquee__track,
    .gallery-track {
        animation: none !important;
    }

    body {
        background: #fff;
        color: #000;
    }

    .section {
        padding: 1rem 0;
    }

    a[href]::after {
        content: ' (' attr(href) ')';
        font-size: 0.8em;
    }
}
/* ==========================================
   MISSING CLASS BRIDGE (inner pages)
   ========================================== */
/* --- Subpage Hero --- */
.subpage-hero-title {
    font-family: var(--font-display);
    font-size: clamp(2.5rem, 6vw, 4.5rem);
    font-weight: 400;
    color: var(--text-on-dark);
    margin-bottom: 0.75rem;
    text-shadow: 0 2px 20px rgba(26, 14, 6, 0.6);
}
.subpage-hero-subtitle {
    font-family: var(--font-subheading);
    font-size: clamp(1rem, 2.5vw, 1.3rem);
    font-style: italic;
    color: var(--text-on-dark-secondary);
    max-width: 600px;
    margin: 0 auto;
}
/* --- Hero Location Variant --- */
.hero--location {
    min-height: 60vh;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}
/* --- Breadcrumbs --- */
.breadcrumb {
    padding: 1rem 0;
    padding-top: 100px; /* Clear the fixed navbar */
    margin-bottom: 1rem;
}
.breadcrumb-list {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    list-style: none;
    padding: 0;
    margin: 0;
    font-family: var(--font-ui);
    font-size: 0.8rem;
    letter-spacing: 1px;
    text-transform: uppercase;
    color: var(--text-muted);
}
.breadcrumb-list a {
    color: var(--burnished-gold);
    transition: color var(--transition-fast);
}
.breadcrumb-list a:hover { color: var(--crimson); }
.breadcrumb-list li + li::before {
    content: '/';
    margin-right: 0.5rem;
    color: var(--text-muted);
}
/* --- Location Detail Pages --- */
.section-location-details {
    position: relative;
}
.location-detail-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 3rem;
    align-items: start;
}
.location-info {
    display: flex;
    flex-direction: column;
    gap: 2rem;
}
.location-info-block {
    padding-bottom: 1.5rem;
    border-bottom: 1px solid rgba(196, 149, 106, 0.1);
}
.location-info-heading {
    font-family: var(--font-display);
    font-size: 1.2rem;
    color: var(--burnished-gold);
    margin-bottom: 1rem;
}
.location-detail-address {
    font-family: var(--font-body);
    font-size: 1rem;
    color: var(--text-secondary);
    line-height: 1.7;
    font-style: normal;
}
.location-detail-phone {
    margin-top: 0.75rem;
}
.location-detail-phone a {
    color: var(--burnished-gold);
    font-size: 1.1rem;
    font-weight: 600;
    transition: color var(--transition-fast);
}
.location-detail-phone a:hover { color: var(--crimson); }
.location-map {
    border-radius: 8px;
    overflow: hidden;
    border: 1px solid rgba(196, 149, 106, 0.1);
}
.location-map iframe {
    width: 100%;
    height: 400px;
    border: 0;
    filter: brightness(0.85) contrast(1.1) saturate(0.8);
}
.location-ctas {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
    margin-top: 1.5rem;
}
/* --- Hours Table --- */
.hours-table {
    width: 100%;
    border-collapse: collapse;
    font-family: var(--font-body);
    font-size: 0.95rem;
}
.hours-table tr {
    border-bottom: 1px solid rgba(196, 149, 106, 0.06);
}
.hours-table td {
    padding: 0.6rem 0;
    color: var(--text-secondary);
}
.hours-table td:first-child {
    color: var(--text-primary);
    font-weight: 600;
    padding-right: 2rem;
}
.location-hours {
    font-size: 0.85rem;
    color: var(--text-muted);
    line-height: 1.6;
}
/* --- Section Gallery --- */
.section-gallery {
    padding: var(--section-padding);
}
/* --- About Content --- */
.about-content {
    max-width: 800px;
    margin: 0 auto;
}
/* --- Section Alt (alternate bg) — slightly deeper cream on bright base --- */
.section-alt {
    background: var(--base-soft);
}
/* --- Section Press --- */
.section--press {
    position: relative;
    overflow: hidden;
}
/* --- Content Block (menus, legal pages) --- */
.content-block {
    max-width: 800px;
    margin: 0 auto;
    padding: 2rem 0;
}
.content-block h2 {
    font-family: var(--font-display);
    font-size: 1.5rem;
    color: var(--burnished-gold);
    margin: 2.5rem 0 1rem;
}
.content-block h3 {
    font-family: var(--font-display);
    font-size: 1.2rem;
    color: var(--text-primary);
    margin: 2rem 0 0.75rem;
}
.content-block p {
    color: var(--text-secondary);
    line-height: 1.8;
    margin-bottom: 1rem;
}
.content-block ul, .content-list {
    list-style: none;
    padding: 0;
}
.content-block li, .content-list li {
    position: relative;
    padding: 0.4rem 0 0.4rem 1.5rem;
    color: var(--text-secondary);
    line-height: 1.6;
}
.content-block li::before, .content-list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0.9rem;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--crimson);
}
/* --- Happening Locations Badges --- */
.happening-locations {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-top: 0.75rem;
}
/* --- Inquiry Form Container --- */
.inquiry-form-container {
    max-width: 700px;
    margin: 0 auto;
    padding: 2rem 0;
}
/* --- Location Fallback --- */
.location-fallback {
    font-size: 0.85rem;
    color: var(--text-muted);
    margin-top: 0.5rem;
}
/* --- Message (form alerts, notices) --- */
.message {
    font-size: 0.9rem;
    color: var(--text-secondary);
    margin-top: 0.5rem;
}
/* --- Error Pages --- */
.error-code {
    font-family: var(--font-display);
    font-size: clamp(6rem, 20vw, 12rem);
    font-weight: 700;
    color: rgba(151, 11, 51, 0.15);
    line-height: 1;
    margin-bottom: 1rem;
}
.error-label {
    font-family: var(--font-display);
    font-size: clamp(4rem, 15vw, 8rem);
    font-weight: 700;
    color: rgba(151, 11, 51, 0.15);
    line-height: 1;
    margin-bottom: 1rem;
}
/* --- Nav Links (footer) --- */
.footer-social .links,
.nav-links.links,
.links {
    list-style: none;
    padding: 0;
    margin: 0;
}
/* --- Branding --- */
.branding {
    text-align: center;
    margin-top: 2rem;
    font-family: var(--font-display);
    color: var(--text-muted);
    font-size: 0.9rem;
}
/* --- Responsive for new bridge classes --- */
@media (max-width: 768px) {
    .location-detail-grid {
        grid-template-columns: 1fr;
        gap: 2rem;
    }
    .location-map iframe {
        height: 300px;
    }
    .breadcrumb-list {
        flex-wrap: wrap;
    }
    .location-ctas {
        flex-direction: column;
    }
}
@media (max-width: 480px) {
    .location-map iframe {
        height: 250px;
    }
}
/* ==========================================
   SECTION MODIFIERS — visual rhythm between sections
   ==========================================
   Default section background is body (--midnight). Apply a modifier
   class to any .section element to shift its backdrop. Adjacent
   sections should feel distinct, not uniform.
   ========================================== */
/* ---- Cream inversion (warm, breathable, text goes dark) ---- */
.section--cream {
    background: var(--warm-cream);
    color: var(--walnut);
    position: relative;
}
.section--cream .section-title,
.section--cream .section-label,
.section--cream .brand-quote,
.section--cream .brand-text,
.section--cream p,
.section--cream h2,
.section--cream h3 {
    color: var(--walnut);
}
.section--cream .section-label {
    color: var(--chianti);
}
.section--cream a,
.section--cream .link-arrow {
    color: var(--chianti);
}
.section--cream a:hover,
.section--cream .link-arrow:hover {
    color: var(--crimson);
}
.section--cream .brand-quote::before,
.section--cream .brand-quote::after {
    color: var(--burnished-gold);
}
/* ---- Textured paper (cream + subtle noise overlay) ---- */
.section--textured-paper {
    background: var(--warm-cream);
    color: var(--walnut);
    position: relative;
}
.section--textured-paper::before {
    content: '';
    position: absolute;
    inset: 0;
    opacity: 0.12;
    mix-blend-mode: multiply;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    pointer-events: none;
    z-index: 0;
}
.section--textured-paper > * {
    position: relative;
    z-index: 1;
}
.section--textured-paper .section-title,
.section--textured-paper .brand-quote,
.section--textured-paper p,
.section--textured-paper h2,
.section--textured-paper h3 {
    color: var(--walnut);
}
.section--textured-paper .section-label {
    color: var(--chianti);
}
.section--textured-paper a,
.section--textured-paper .link-arrow {
    color: var(--chianti);
}
.section--textured-paper a:hover {
    color: var(--crimson);
}
/* ---- Dark wood (subtle warmer-than-midnight shift) ---- */
.section--dark-wood {
    background: var(--dark-wood);
    position: relative;
}
.section--dark-wood::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
        none;
    pointer-events: none;
    z-index: 0;
}
.section--dark-wood > * {
    position: relative;
    z-index: 1;
}
/* ---- Chianti gradient (warm deep red → dark) ---- */
.section--chianti-gradient {
    background:
        var(--crimson);
    position: relative;
}
.section--chianti-gradient::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image: none;
    pointer-events: none;
    z-index: 0;
}
.section--chianti-gradient > * {
    position: relative;
    z-index: 1;
}
/* ---- Mahogany gradient (warm brown, cozy) ---- */
.section--mahogany-gradient {
    background:
        var(--mahogany);
}
/* ---- Olive (fresh/herbaceous accent, for aperitivo/happenings) ---- */
.section--olive-duotone {
    background:
        var(--olive);
    position: relative;
}
/* ---- Image-backed with overlay ---- */
.section--imagebg {
    position: relative;
    overflow: hidden;
    isolation: isolate;
}
.section--imagebg > .section-bg {
    position: absolute;
    inset: 0;
    z-index: 0;
    overflow: hidden;
}
.section--imagebg > .section-bg img,
.section--imagebg > .section-bg picture {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.section--imagebg > .section-bg::after {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(26, 20, 16, 0.72);
    pointer-events: none;
}
.section--imagebg > .container {
    position: relative;
    z-index: 1;
}
/* ---- Image-backed with side-fade (food card style) ---- */
.section--imagebg--side > .section-bg::after {
    background: rgba(26, 20, 16, 0.7);
}
/* ---- Smooth transition fades between adjacent sections ---- */
.section--fade-top-midnight-to-cream {
    background: var(--warm-cream);
}
.section--fade-top-cream-to-midnight {
    background: var(--midnight);
}
.section--fade-top-midnight-to-chianti {
    background: var(--crimson);
}
/* ---- Decorative section divider shapes (optional) ---- */
.section-divider {
    display: block;
    width: 100%;
    height: 60px;
    line-height: 0;
    position: relative;
    z-index: 2;
}
.section-divider svg {
    width: 100%;
    height: 100%;
    display: block;
}
.section-divider--wave-down svg { transform: scaleY(1); }
.section-divider--wave-up svg { transform: scaleY(-1); }
/* ---- Ornamental inline mark (thin gold rule with crest) ---- */
.section-ornament {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1.5rem;
    margin: 0 auto 3rem;
    max-width: 600px;
    color: var(--burnished-gold);
}
.section-ornament::before,
.section-ornament::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--burnished-gold);
}
.section-ornament__glyph {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 1.5rem;
    letter-spacing: 0.2em;
    opacity: 0.9;
}
/* Responsive: don't lose visual rhythm on mobile */
@media (max-width: 768px) {
    .section-ornament {
        gap: 1rem;
        margin-bottom: 2rem;
    }
    .section-ornament__glyph {
        font-size: 1.15rem;
    }
}
/* Aperitivo mood — daytime, lighter, warmer.
   Opt-in via <body class="mood-aperitivo"> on happy-hour / aperol-spritz /
   pranzetto pages. Inverts the body background to cream and retints
   secondary chrome so daytime happenings feel sunny and inviting. */
body.mood-aperitivo {
    background: var(--cream);
    color: var(--walnut);
}
body.mood-aperitivo::after {
    /* Reduce grain on cream so it doesn't look dirty */
    opacity: 0.05;
    mix-blend-mode: multiply;
}
/* Scope heading/text recolor to main content only — footer + site header
   keep their dark chrome so contrast there is unaffected. */
body.mood-aperitivo main h1,
body.mood-aperitivo main h2,
body.mood-aperitivo main h3,
body.mood-aperitivo main h4,
body.mood-aperitivo main p,
body.mood-aperitivo main li {
    color: var(--walnut);
}
body.mood-aperitivo main .section-label { color: var(--crimson); }
body.mood-aperitivo main .section-title { color: var(--chianti); }
body.mood-aperitivo main .link-arrow { color: var(--crimson); }
body.mood-aperitivo main .link-arrow:hover { color: var(--chianti); }
/* Links on body copy — scoped to main (footer links stay untouched) */
body.mood-aperitivo main a:not(.btn-gold):not(.btn-primary):not(.btn-secondary):not(.loc-card__btn):not(.menu-card__name):not(.site-header__reserve):not(.site-header__nav-link):not(.drawer__action):not(.drawer__action--primary) {
    color: var(--chianti);
}
/* Navbar still dark — header is always the darker brand chrome */
/* (site-header.css remains unchanged; only <main> and below-header chrome goes light) */
/* Sections that were dark now play cream — scoped to main */
body.mood-aperitivo main section.section:not(.section--imagebg):not(.section--parallax-banner):not(.section--chianti-gradient):not(.section--mahogany-gradient) {
    background: transparent;
    color: var(--walnut);
}
/* Cards and containers: lighter tones */
body.mood-aperitivo .menu-card,
body.mood-aperitivo .happening-live-card,
body.mood-aperitivo .review-card,
body.mood-aperitivo .press-card,
body.mood-aperitivo .loc-card {
    background: rgba(255, 255, 255, 0.85);
    border-color: rgba(151, 11, 51, 0.15);
    color: var(--walnut);
}
body.mood-aperitivo .menu-card__name,
body.mood-aperitivo .happening-live-card__name,
body.mood-aperitivo .loc-card__name,
body.mood-aperitivo .press-card__publication {
    color: var(--chianti);
}
body.mood-aperitivo .menu-card__desc,
body.mood-aperitivo .happening-live-card__desc,
body.mood-aperitivo .loc-card__address {
    color: var(--walnut);
}
body.mood-aperitivo .menu-card__origin,
body.mood-aperitivo .press-card__author {
    color: var(--crimson);
}
body.mood-aperitivo .menu-card__price,
body.mood-aperitivo .chefspick__price {
    color: var(--chianti);
}
/* Footer stays dark regardless */
/* ==========================================
   SCROLL PROGRESS BAR
   ========================================== */
.scroll-progress {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 3px;
    background: var(--crimson);
    box-shadow: 0 0 10px rgba(151, 11, 51, 0.5);
    z-index: 10000;
    transform: scaleX(0);
    transform-origin: left;
    will-change: transform;
}
/* Unified site header + drawers — MOBILE-FIRST.
   Single sticky bar with logo, menu trigger, location picker, Reserve CTA.
   Two drawers share mechanics; content differs. */
/* ============ Bar ============ */
.site-header {
    position: sticky;
    top: 0;
    z-index: 1000;
    /* Warm wood tone to match the lifted body background. */
    background: rgba(26, 20, 16, 0.94);
    background-image: none;
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-bottom: 1px solid rgba(196, 149, 106, 0.2);
    box-shadow: 0 2px 20px rgba(0, 0, 0, 0.35);
    transition: background var(--transition-fast);
}
.site-header__bar {
    display: grid;
    grid-template-columns: auto 1fr auto auto;
    grid-template-areas: "menu logo location reserve";
    align-items: center;
    gap: 0.5rem;
    padding: 0.6rem 0.75rem;
    max-width: var(--container-width);
    margin: 0 auto;
    min-height: 56px;
}
.site-header__menu {
    grid-area: menu;
    display: inline-flex;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    background: transparent;
    border: none;
    width: 44px;
    height: 44px;
    padding: 10px;
    cursor: pointer;
    border-radius: 4px;
    transition: background var(--transition-fast);
}
.site-header__menu:hover { background: rgba(196, 149, 106, 0.08); }
.site-header__menu span {
    display: block;
    width: 22px;
    height: 2px;
    background: var(--burnished-gold);
    border-radius: 2px;
    transition: transform var(--transition-fast), opacity var(--transition-fast);
}
.site-header__menu[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.site-header__menu[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.site-header__menu[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
/* Horizontal lockup: the pig badge is nearly square (600x508), so alone in a
   56-72px bar it reads tiny. Badge + text wordmark gives the brand real
   width without needing a horizontal asset. */
.site-header__logo {
    grid-area: logo;
    display: inline-flex;
    justify-content: center;
    align-items: center;
    gap: 0.55rem;
    min-width: 0;
}
/* The badge wraps ONLY the pig img so palette overlays (the gold ::after
   mask in palette-bright) stay scoped to the mark, never the wordmark. */
.site-header__badge {
    position: relative;
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
}
.site-header__logo img {
    height: 38px;
    width: auto;
    /* max-width: 100% here collapses the grid's logo track to ~0 (intrinsic
       sizing feedback loop with min-width: 0), which squeezed the Reserve
       button into a clipped sliver. The mark is ~45px wide at this height —
       it can never overflow. */
    max-width: none;
    filter: drop-shadow(0 2px 10px rgba(196, 149, 106, 0.3));
}
.site-header__wordmark {
    font-family: var(--font-display, "Playfair Display", serif);
    font-size: 1.15rem;
    letter-spacing: 0.02em;
    color: var(--warm-cream, #F5EBDC);
    white-space: nowrap;
    line-height: 1;
}
.site-header__nav {
    display: none; /* inline nav on desktop only */
}
.site-header__location {
    grid-area: location;
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.4rem 0.7rem;
    background: rgba(196, 149, 106, 0.08);
    border: 1px solid rgba(196, 149, 106, 0.3);
    border-radius: 99px;
    color: var(--text-primary);
    font-family: var(--font-ui);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    cursor: pointer;
    transition: all var(--transition-fast);
    white-space: nowrap;
    min-height: 36px;
}
.site-header__location:hover,
.site-header__location[aria-expanded="true"] {
    background: rgba(196, 149, 106, 0.15);
    border-color: var(--burnished-gold);
}
.site-header__location-pin {
    color: var(--burnished-gold);
    flex-shrink: 0;
}
.site-header__location-name {
    color: var(--warm-cream);
    letter-spacing: 0.03em;
}
.site-header__location-hours {
    display: none; /* only show on wider screens */
    color: var(--text-secondary);
    font-style: italic;
    font-weight: 400;
    font-size: 0.72rem;
}
.site-header__dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}
.site-header__dot--open {
    background: #4ade80;
    box-shadow: 0 0 8px rgba(74, 222, 128, 0.6);
    animation: sh-pulse 2s ease-in-out infinite;
}
.site-header__dot--closed {
    background: #f87171;
    box-shadow: 0 0 6px rgba(248, 113, 113, 0.4);
}
.site-header__dot--unknown {
    background: rgba(245, 235, 220, 0.25);
}
@keyframes sh-pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.55; }
}
/* "Host Your Event" — the second header CTA (outlined, so gold Reserve stays
   the loud one). Desktop only; on mobile it lives in the nav drawer. */
.site-header__host {
    grid-area: host;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 0.5rem 1.1rem;
    min-height: 36px;
    min-width: max-content;
    background: transparent;
    border: 1px solid rgba(196, 149, 106, 0.55);
    color: var(--gold-on-dark, #D9B486);
    border-radius: 99px;
    font-family: var(--font-ui);
    font-size: 0.74rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    transition: all var(--transition-fast);
    white-space: nowrap;
}
.site-header__host:hover {
    background: rgba(196, 149, 106, 0.12);
    border-color: var(--burnished-gold);
    color: var(--warm-cream);
}
.site-header__reserve {
    grid-area: reserve;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.45rem 0.95rem;
    min-height: 36px;
    min-width: max-content; /* the CTA must never shrink below its label */
    background: var(--gradient-gold);
    color: var(--midnight);
    border-radius: 99px;
    font-family: var(--font-ui);
    font-size: 0.74rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    transition: all var(--transition-fast);
    white-space: nowrap;
}
.site-header__reserve:hover {
    filter: brightness(1.1);
    box-shadow: 0 4px 16px rgba(196, 149, 106, 0.4);
}
/* ============ Desktop — ≥1200px ============
   Below 1200px the inline nav can NEVER fit next to the lockup + three
   right-side controls (the content demands ~1350px), so tablets keep the
   mobile bar + drawer. The bar also gets a wider cap than the 1200px page
   container — header chrome may use more canvas than article content. */
@media (min-width: 1200px) {
    .site-header__bar {
        grid-template-columns: auto 1fr auto auto auto;
        grid-template-areas: "logo nav location host reserve";
        padding: 0.85rem 2rem;
        gap: 1.25rem;
        min-height: 72px;
        max-width: 1400px;
    }

    .site-header__menu { display: none; }

    .site-header__logo { justify-content: flex-start; }
    .site-header__logo img { height: 46px; }
    .site-header__wordmark { font-size: 1.35rem; }
    .site-header__host { display: inline-flex; }

    .site-header__nav {
        grid-area: nav;
        display: block;
    }

    .site-header__nav-list {
        list-style: none;
        margin: 0;
        padding: 0;
        display: flex;
        gap: 1.75rem;
        justify-content: center;
    }

    .site-header__nav-item { position: relative; }

    .site-header__nav-link {
        font-family: var(--font-ui);
        font-size: 0.82rem;
        font-weight: 500;
        letter-spacing: 0.12em;
        text-transform: uppercase;
        color: var(--text-primary);
        padding: 0.5rem 0;
        position: relative;
        display: inline-block;
    }

    .site-header__nav-link::after {
        content: '';
        position: absolute;
        bottom: 0;
        left: 0;
        width: 0;
        height: 2px;
        background: var(--gradient-crimson);
        transition: width var(--transition-fast);
    }

    .site-header__nav-link:hover { color: var(--burnished-gold); }
    .site-header__nav-link:hover::after { width: 100%; }

    .site-header__submenu {
        position: absolute;
        top: 100%;
        left: 50%;
        transform: translateX(-50%) translateY(4px);
        background: rgba(26, 20, 16, 0.98);
        backdrop-filter: blur(10px);
        border: 1px solid rgba(196, 149, 106, 0.15);
        border-radius: 4px;
        min-width: 220px;
        padding: 0.5rem 0;
        margin: 0;
        list-style: none;
        opacity: 0;
        visibility: hidden;
        transition: opacity var(--transition-fast), visibility var(--transition-fast), transform var(--transition-fast);
        box-shadow: 0 12px 40px rgba(0, 0, 0, 0.5);
    }

    .site-header__nav-item.has-sub:hover .site-header__submenu,
    .site-header__nav-item.has-sub:focus-within .site-header__submenu {
        opacity: 1;
        visibility: visible;
        transform: translateX(-50%) translateY(0);
    }

    .site-header__submenu li a {
        display: block;
        padding: 0.55rem 1.25rem;
        font-size: 0.82rem;
        color: var(--text-secondary);
        transition: all var(--transition-fast);
        white-space: nowrap;
    }

    .site-header__submenu li a:hover {
        color: var(--burnished-gold);
        background: rgba(196, 149, 106, 0.08);
        padding-left: 1.5rem;
    }

    .site-header__location {
        padding: 0.5rem 1rem;
        font-size: 0.82rem;
    }

    /* Hours stay OUT of the top bar at every width: with the longest status
       string ("Closed · Opens tomorrow at 12 PM") the 1200px bar can never
       fit logo + nav + location + Reserve, and the grid resolved the
       overflow by crushing the logo and clipping Reserve. The open/closed
       dot remains here; full hours live in the drawer. */

    .site-header__reserve {
        padding: 0.55rem 1.3rem;
        font-size: 0.78rem;
    }
}
/* ============ Drawers ============ */
.drawer {
    position: fixed;
    inset: 0;
    z-index: 1100;
}
.drawer[hidden] { display: none; }
.drawer__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.6);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    animation: drawer-fadein 0.25s ease;
}
@keyframes drawer-fadein {
    from { opacity: 0; }
    to { opacity: 1; }
}
.drawer__panel {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    width: min(420px, 92vw);
    background: var(--dark-wood);
    border-left: 1px solid rgba(196, 149, 106, 0.25);
    box-shadow: -20px 0 40px rgba(0, 0, 0, 0.5);
    display: flex;
    flex-direction: column;
    animation: drawer-slidein 0.3s var(--ease-out-expo);
    overflow-y: auto;
}
@keyframes drawer-slidein {
    from { transform: translateX(100%); }
    to { transform: translateX(0); }
}
.drawer__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid rgba(196, 149, 106, 0.15);
    position: sticky;
    top: 0;
    background: var(--dark-wood);
    z-index: 1;
}
.drawer__title {
    font-family: var(--font-ui);
    font-size: 0.75rem;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--burnished-gold);
    font-weight: 700;
}
.drawer__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    background: transparent;
    border: 1px solid rgba(196, 149, 106, 0.3);
    border-radius: 50%;
    color: var(--burnished-gold);
    cursor: pointer;
    transition: all var(--transition-fast);
}
.drawer__close:hover {
    background: rgba(196, 149, 106, 0.1);
    border-color: var(--burnished-gold);
}
/* Nav drawer content */
.drawer__nav {
    padding: 1.5rem 1.25rem 2rem;
}
.drawer__nav > ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}
.drawer__nav-group {
    list-style: none;
    padding: 0;
    margin: 0;
}
.drawer__nav-label {
    display: block;
    font-family: var(--font-ui);
    font-size: 0.68rem;
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: var(--crimson);
    font-weight: 700;
    margin-bottom: 0.5rem;
}
.drawer__nav-group ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}
.drawer__nav-group ul li a {
    display: block;
    padding: 0.55rem 0.25rem;
    font-family: var(--font-display);
    font-size: 1.1rem;
    color: var(--text-primary);
    transition: color var(--transition-fast), padding var(--transition-fast);
    border-bottom: 1px solid rgba(196, 149, 106, 0.08);
    line-height: 1.2;
}
.drawer__nav-group ul li a:hover,
.drawer__nav-group ul li a:focus-visible {
    color: var(--burnished-gold);
    padding-left: 0.5rem;
}
.drawer__nav-sub {
    display: block;
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 0.78rem;
    color: var(--text-muted);
    letter-spacing: 0.02em;
    margin-top: 0.1rem;
}
/* Location drawer */
.drawer__location-body {
    padding: 1.5rem 1.25rem 2rem;
    display: flex;
    flex-direction: column;
    gap: 2rem;
}
.drawer__location-current {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}
.drawer__location-header {
    display: flex;
    gap: 0.85rem;
    align-items: flex-start;
}
.drawer__location-pin {
    display: inline-flex;
    color: var(--burnished-gold);
    flex-shrink: 0;
    margin-top: 0.2rem;
}
.drawer__location-name {
    font-family: var(--font-display);
    font-size: 1.6rem;
    margin: 0;
    color: var(--warm-cream);
    letter-spacing: -0.01em;
    line-height: 1.1;
}
.drawer__location-status {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    margin-top: 0.35rem;
    font-size: 0.85rem;
    color: var(--text-secondary);
    font-style: italic;
}
.drawer__location-address {
    font-family: var(--font-subheading);
    font-style: normal;
    font-size: 0.95rem;
    color: var(--text-primary);
    margin-top: 0.65rem;
    line-height: 1.45;
}
.drawer__location-actions {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 0.6rem;
}
.drawer__action {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    padding: 0.85rem 0.9rem;
    background: rgba(26, 20, 16, 0.5);
    border: 1px solid rgba(196, 149, 106, 0.2);
    border-radius: 4px;
    color: var(--text-primary);
    transition: all var(--transition-fast);
    gap: 0.1rem;
    min-height: 72px;
}
.drawer__action svg {
    color: var(--burnished-gold);
    margin-bottom: 0.2rem;
}
.drawer__action span {
    font-family: var(--font-ui);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--warm-cream);
}
.drawer__action small {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 0.72rem;
    color: var(--text-secondary);
    font-weight: 400;
}
.drawer__action:hover,
.drawer__action:focus-visible {
    border-color: var(--burnished-gold);
    background: rgba(196, 149, 106, 0.08);
    transform: translateY(-2px);
}
.drawer__action--primary {
    background: var(--gradient-gold);
    border-color: var(--burnished-gold);
    grid-column: span 2;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    color: var(--midnight);
}
.drawer__action--primary svg,
.drawer__action--primary span,
.drawer__action--primary small {
    color: var(--midnight);
    margin: 0;
}
.drawer__action--primary small { opacity: 0.75; font-size: 0.7rem; }
.drawer__action--primary:hover {
    filter: brightness(1.08);
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(196, 149, 106, 0.45);
}
/* Switcher chips */
.drawer__location-switch-title {
    font-family: var(--font-ui);
    font-size: 0.68rem;
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: var(--crimson);
    font-weight: 700;
    margin: 0 0 0.75rem;
}
.drawer__location-chips {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 0.5rem;
}
.drawer__location-chip {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    padding: 0.65rem 0.85rem;
    background: rgba(26, 20, 16, 0.5);
    border: 1px solid rgba(196, 149, 106, 0.25);
    border-radius: 4px;
    cursor: pointer;
    transition: all var(--transition-fast);
    text-align: left;
    min-height: 56px;
}
.drawer__location-chip:hover,
.drawer__location-chip:focus-visible {
    border-color: var(--burnished-gold);
    background: rgba(196, 149, 106, 0.08);
}
.drawer__location-chip.is-active {
    background: var(--burnished-gold);
    border-color: var(--burnished-gold);
    color: var(--midnight);
}
.drawer__location-chip-name {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 1rem;
    color: var(--warm-cream);
    letter-spacing: -0.01em;
}
.drawer__location-chip.is-active .drawer__location-chip-name,
.drawer__location-chip.is-active .drawer__location-chip-city { color: var(--midnight); }
.drawer__location-chip-city {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 0.75rem;
    color: var(--text-secondary);
    margin-top: 0.1rem;
}
/* Desktop drawer: more spacious */
@media (min-width: 768px) {
    .drawer__panel { width: min(460px, 88vw); }
    .drawer__location-actions { gap: 0.75rem; }
    .drawer__location-chips { gap: 0.6rem; }
}
/* Inline "Change" affordance inside the location button — discrete dark pill
   (deep mahogany, not black, per owner palette) */
.site-header__location-cta {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    margin-left: 0.75rem;
    padding: 0.35rem 0.7rem;
    background: var(--mahogany-dark, #4B2D10);
    color: var(--gold-on-dark, #D9B486);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    border-radius: 999px;
    transition: background-color 0.2s ease, color 0.2s ease;
}
.site-header__location-cta svg {
    display: block;
    color: inherit;
}
.site-header__location:hover .site-header__location-cta,
.site-header__location:focus-visible .site-header__location-cta {
    background: var(--gold-on-dark, #D9B486);
    color: var(--mahogany-dark, #4B2D10);
}
/* Mobile: hide live hours text; keep name + dot + CTA pill visible */
@media (max-width: 768px) {
    .site-header__location-hours {
        display: none;
    }
    .site-header__location-cta {
        margin-left: 0.5rem;
        padding: 0.3rem 0.6rem;
    }
}
/* 1200-1439px: the bar is capped by the viewport, so run compact — pig-only
   logo, CHANGE collapses to its icon, tighter nav. Everything returns ≥1440. */
@media (min-width: 1200px) and (max-width: 1439px) {
    .site-header__wordmark { display: none; }
    .site-header__location-cta-text { display: none; }
    .site-header__location-cta { padding: 0.35rem 0.5rem; }
    .site-header__nav-list { gap: 1.4rem; }
    .site-header__nav-link { letter-spacing: 0.09em; }
    .site-header__host { padding: 0.5rem 0.95rem; }
}
@media (min-width: 1440px) {
    .site-header__nav-list { gap: 1.6rem; }
}
/* Narrow phones: collapse CHANGE pill to icon-only and drop the text
   wordmark — the pig badge alone marks home. */
@media (max-width: 640px) {
    .site-header__location-cta-text {
        display: none;
    }
    .site-header__location-cta {
        margin-left: 0.4rem;
        padding: 0.3rem 0.45rem;
    }
    .site-header__location {
        padding: 0.35rem 0.55rem;
        font-size: 0.74rem;
    }
    .site-header__bar {
        gap: 0.35rem;
        padding: 0.55rem 0.6rem;
    }
    .site-header__wordmark {
        display: none;
    }
    .site-header__logo img {
        height: 34px;
    }
}
/* Footer — MOBILE-FIRST. Stacked columns on small; 4-column grid on desktop. */
.footer {
    /* Warm deep wood instead of near-black — matches the body tone. */
    background:
        var(--mahogany-dark);
    padding: 3rem 0 0;
    position: relative;
}
.footer::before {
    content: '';
    display: block;
    height: 2px;
    background: var(--burnished-gold);
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
}
.footer .container { padding: 0 1rem; }
.footer-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2.25rem;
    padding-bottom: 2rem;
    border-bottom: 1px solid rgba(196, 149, 106, 0.1);
}
.footer-col { min-width: 0; }
.footer-heading,
.footer-col__title {
    font-family: var(--font-ui);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    /* burnished-gold (≈6.3:1 vs footer #060504) passes WCAG AA for normal text */
    color: var(--burnished-gold);
    margin: 0 0 1rem;
}
.footer-list,
.footer-col ul {
    list-style: none;
    margin: 0;
    padding: 0;
}
.footer-list li,
.footer-col ul li {
    margin-bottom: 0.6rem;
    line-height: 1.4;
}
.footer-list li a,
.footer-col ul li a {
    font-size: 0.92rem;
    color: var(--text-secondary);
    transition: color var(--transition-fast);
    display: inline-block;
    padding: 0.1rem 0;
}
.footer-list li a:hover,
.footer-col ul li a:hover {
    color: var(--burnished-gold);
}
.footer-address {
    display: block;
    font-size: 0.78rem;
    color: var(--text-muted);
    font-style: italic;
    margin-top: 0.1rem;
}
/* Social icons */
.footer-social {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 0.25rem;
}
.footer-social li { margin-bottom: 0; }
/* .footer-list.footer-social beats the generic .footer-list li a link rules
   (0,2,1 vs 0,1,2) — without the double class these pills fell back to
   inline-block baseline layout and misaligned. */
.footer-list.footer-social a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    padding: 0.5rem 0.85rem;
    min-height: 44px;
    border-radius: 99px;
    background: rgba(151, 11, 51, 0.1);
    border: 1px solid rgba(151, 11, 51, 0.2);
    color: var(--text-secondary);
    transition: all var(--transition-fast);
    font-size: 0.82rem;
    letter-spacing: 0.03em;
}
.footer-list.footer-social a:hover {
    color: var(--burnished-gold);
    background: rgba(151, 11, 51, 0.2);
    border-color: var(--crimson);
}
.footer-list.footer-social a svg { flex-shrink: 0; }
/* Newsletter form in footer */
.footer-newsletter {
    margin-top: 1rem;
}
.footer-newsletter-row {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
.footer-newsletter-row .form-input--sm {
    width: 100%;
}
/* Footer bottom bar */
.footer-bottom {
    padding: 1.25rem 0;
    text-align: center;
}
.footer-bottom p {
    font-size: 0.8rem;
    color: var(--text-muted);
    margin: 0;
    line-height: 1.7;
}
.footer-bottom p a {
    color: var(--text-secondary);
    transition: color var(--transition-fast);
}
.footer-bottom p a:hover { color: var(--burnished-gold); }
/* Tablet */
@media (min-width: 640px) {
    .footer-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 2rem 2.5rem;
    }
    .footer-newsletter-row {
        flex-direction: row;
        align-items: stretch;
    }
}
/* Desktop */
@media (min-width: 960px) {
    .footer { padding: 4rem 0 0; }
    .footer .container { padding: 0 2rem; }
    .footer-grid {
        grid-template-columns: repeat(4, 1fr);
        gap: 3rem;
        padding-bottom: 3rem;
    }
    .footer-bottom {
        display: flex;
        justify-content: space-between;
        align-items: center;
        text-align: left;
        flex-wrap: wrap;
        gap: 1rem;
        padding: 1.5rem 0;
    }
    .footer-bottom p { text-align: left; }
}
/* ==========================================
   HERO SECTION
   ========================================== */
.hero {
    position: relative;
    /* Fill exactly the viewport below the sticky header (js/site-header.js
       publishes --header-height from the real measured bar). min-height, not
       height: on short viewports the hero grows to fit its content instead
       of clipping the bottom of the stack (overflow is hidden for the video). */
    min-height: max(540px, calc(100svh - var(--header-height, 64px)));
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--midnight);
    overflow: hidden;
    padding: 2.5rem 1rem;
}
@media (min-width: 768px) { .hero { min-height: max(640px, calc(100svh - var(--header-height, 64px))); padding: 2.5rem 0; } }
@media (min-width: 1024px) { .hero { min-height: max(720px, calc(100svh - var(--header-height, 64px))); } }
.hero-bg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center;
    z-index: 0;
}
.hero-canvas {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
    pointer-events: none;
}
.hero-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background:
        rgba(26, 20, 16, 0.55);
    z-index: 2;
}
.hero-fog {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 25%;
    background: none;
    z-index: 3;
}
.hero-content {
    position: relative;
    z-index: 4;
    text-align: center;
    color: var(--text-on-dark);
    padding: 2rem;
    max-width: 700px;
}
.hero-logo {
    /* Ties the mark to viewport height so the whole stack shrinks on short
       screens instead of pushing the status line out of the hero */
    max-width: clamp(180px, 30vh, 340px);
    width: 100%;
    margin: 0 auto 2rem;
    /* Dark edge shadows separate the cream mark from bright video moments */
    filter: drop-shadow(0 2px 6px rgba(26, 14, 6, 0.75)) drop-shadow(0 8px 32px rgba(26, 14, 6, 0.45));
}
.hero-title {
    font-family: var(--font-display);
    font-size: clamp(2rem, 6vw, 5rem);
    font-weight: 400;
    font-style: italic;
    margin-bottom: 1rem;
    letter-spacing: 1px;
    text-shadow:
        0 2px 4px rgba(26, 14, 6, 0.9),
        0 4px 30px rgba(26, 14, 6, 0.7);
    color: var(--text-on-dark);
    line-height: 1.2;
}
.hero-title--dramatic {
    font-size: clamp(2rem, 5vw, 3.5rem);
    line-height: 1.15;
}
.hero-tagline {
    font-family: var(--font-subheading);
    font-size: clamp(1rem, 2.5vw, 1.3rem);
    letter-spacing: 4px;
    text-transform: uppercase;
    margin-bottom: 0.5rem;
    color: var(--gold-on-dark);
    text-shadow: 0 2px 20px rgba(196, 149, 106, 0.4);
}
.hero-subtitle {
    font-family: var(--font-subheading);
    font-size: clamp(1rem, 2vw, 1.2rem);
    letter-spacing: 3px;
    text-transform: uppercase;
    margin-bottom: 2.5rem;
    color: var(--gold-on-dark);
    text-shadow: 0 2px 15px rgba(196, 149, 106, 0.3);
}
.hero-description {
    font-family: var(--font-body);
    font-size: 1.15rem;
    line-height: 1.8;
    color: var(--text-on-dark-secondary);
    max-width: 550px;
    margin: 0 auto 2.5rem;
    text-shadow: 0 2px 10px rgba(26, 14, 6, 0.8);
}
.hero-cta {
    display: flex;
    gap: 1.5rem;
    justify-content: center;
    flex-wrap: wrap;
}
/* Live open/closed line under the hero CTAs (js/site-header.js tickStatus
   fills [data-location-hours] with the selected location's status) */
.hero-status {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 1.4rem;
    font-family: var(--font-ui);
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    color: var(--text-on-dark-secondary);
    text-shadow: 0 1px 8px rgba(26, 14, 6, 0.7);
}
/* Scroll Indicator */
.scroll-indicator {
    position: absolute;
    bottom: 3rem;
    left: 50%;
    transform: translateX(-50%);
    z-index: 4;
    color: var(--text-on-dark-secondary);
    text-align: center;
    animation: bounce 2s infinite;
}
.scroll-indicator span {
    display: block;
    font-family: var(--font-ui);
    font-size: 0.65rem;
    text-transform: uppercase;
    letter-spacing: 3px;
    margin-bottom: 0.75rem;
}
.scroll-arrow {
    width: 20px;
    height: 20px;
    margin: 0 auto;
    border-right: 2px solid var(--burnished-gold);
    border-bottom: 2px solid var(--burnished-gold);
    transform: rotate(45deg);
}
@keyframes bounce {
    0%, 20%, 50%, 80%, 100% { transform: translateX(-50%) translateY(0); }
    40% { transform: translateX(-50%) translateY(-10px); }
    60% { transform: translateX(-50%) translateY(-5px); }
}
/* Hero video — full-bleed behind hero-overlay and hero-content */
.hero-video-wrap {
    position: absolute;
    inset: 0;
    overflow: hidden;
    z-index: 0;
    background: url('/assets/video/hero-poster.jpg?v=2') center/cover no-repeat;
}
.hero-video {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
/* Reduced motion: hide the video; poster background on .hero-video-wrap stays visible */
@media (prefers-reduced-motion: reduce) {
    .hero-video { display: none; }
}
/* ==========================================
   BUTTONS
   ========================================== */
.btn {
    display: inline-block;
    padding: 1rem 2.5rem;
    font-family: var(--font-ui);
    font-size: 0.85rem;
    font-weight: 600;
    letter-spacing: 2px;
    text-transform: uppercase;
    border-radius: 2px;
    border: 2px solid transparent;
    cursor: pointer;
    transition: all var(--transition-fast);
    text-align: center;
}
/* Apply base button styles to all button variants */
.btn,
.btn-primary,
.btn-secondary,
.btn-outline-gold,
.btn-chianti {
    display: inline-block;
    padding: 1rem 2.5rem;
    font-family: var(--font-ui);
    font-size: 0.85rem;
    font-weight: 600;
    letter-spacing: 2px;
    text-transform: uppercase;
    border-radius: 2px;
    border: 2px solid transparent;
    cursor: pointer;
    transition: all var(--transition-fast);
    text-align: center;
    text-decoration: none;
    line-height: 1.2;
}
.btn-primary {
    background: var(--gradient-gold);
    color: var(--midnight);
    border-color: var(--burnished-gold);
}
.btn-primary:hover {
    background: transparent;
    color: var(--burnished-gold);
    transform: translateY(-2px);
    box-shadow: 0 4px 20px rgba(196, 149, 106, 0.4);
}
.btn-secondary {
    background: transparent;
    color: var(--text-primary);
    border-color: var(--text-primary);
}
.btn-secondary:hover {
    background: var(--text-primary);
    color: var(--midnight);
    transform: translateY(-2px);
}
.btn-outline-gold {
    background: transparent;
    color: var(--burnished-gold);
    border-color: var(--burnished-gold);
}
.btn-outline-gold:hover {
    background: var(--burnished-gold);
    color: var(--midnight);
    transform: translateY(-2px);
    box-shadow: 0 4px 20px rgba(196, 149, 106, 0.3);
}
.btn-chianti {
    background: var(--gradient-chianti);
    color: var(--warm-cream);
    border-color: var(--chianti);
}
.btn-chianti:hover {
    background: transparent;
    color: var(--chianti);
    border-color: var(--chianti);
    transform: translateY(-2px);
}
.btn-full {
    width: 100%;
}
.btn-xl {
    padding: 1.25rem 3.5rem;
    font-size: 1rem;
    letter-spacing: 3px;
}
.btn-sm {
    padding: 0.6rem 1.5rem;
    font-size: 0.75rem;
    letter-spacing: 1.5px;
}
/* ==========================================
   LOCATION CARDS
   ========================================== */
.location-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1.5rem;
}
/* Bento location grid */
.location-grid.bento {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: auto auto;
    gap: 1.25rem;
}
.location-grid.bento .location-card--featured {
    grid-column: span 2;
    grid-row: span 2;
}
.location-grid.bento .location-card:nth-child(2) {
    grid-column: span 2;
}
/* Featured card with image */
.location-card--featured {
    position: relative;
    overflow: hidden;
}
.location-card__image {
    position: relative;
    height: 200px;
    overflow: hidden;
}
.location-card__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: saturate(0.85) brightness(0.9);
    transition: all 0.6s var(--ease-out-expo);
}
.location-card--featured:hover .location-card__image img {
    filter: saturate(1) brightness(1);
    transform: scale(1.05);
}
.location-card {
    /* Cream paper card (owner bright palette) — children already use the
       dark walnut/crimson text tokens */
    background: var(--cream-bright, #FBF5E9);
    border: 1px solid rgba(96, 57, 19, 0.22);
    border-radius: 4px;
    padding: 2rem 1.75rem;
    text-align: center;
    transition: all var(--transition-medium);
    position: relative;
    overflow: hidden;
}
.location-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: var(--gradient-crimson);
    transform: scaleX(0);
    transition: transform var(--transition-medium);
}
.location-card:hover {
    border-color: rgba(151, 11, 51, 0.3);
    transform: translateY(-4px);
    box-shadow: 0 20px 60px rgba(75, 45, 16, 0.22), 0 0 0 1px rgba(151, 11, 51, 0.15);
}
.location-card:hover::before {
    transform: scaleX(1);
}
.location-card__name {
    font-family: var(--font-display);
    font-size: 1.3rem;
    font-weight: 400;
    color: var(--text-primary);
    margin-bottom: 0.5rem;
}
.location-card__address {
    font-family: var(--font-body);
    font-size: 0.9rem;
    color: var(--text-secondary);
    margin-bottom: 0.75rem;
    line-height: 1.5;
}
.location-card__phone {
    font-family: var(--font-body);
    font-size: 0.9rem;
    color: var(--text-secondary);
    margin-bottom: 1rem;
}
.location-card__phone a {
    color: var(--crimson);
    transition: color var(--transition-fast);
}
.location-card__phone a:hover {
    color: var(--chianti-dark);
}
/* Google rating proof (renders only when review data exists for the location) */
.location-card__proof {
    font-family: var(--font-ui);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    color: var(--chianti-dark, #970B33);
    margin-bottom: 0.75rem;
}
/* Status indicator */
.status-dot {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-family: var(--font-ui);
    font-size: 0.75rem;
    font-weight: 500;
    letter-spacing: 1px;
    text-transform: uppercase;
    margin-bottom: 1.25rem;
}
.status-dot::before {
    content: '';
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
}
.status-dot--open {
    color: var(--olive);
}
.status-dot--open::before {
    background: var(--olive);
    box-shadow: 0 0 8px rgba(92, 107, 74, 0.6);
    animation: statusPulse 2s ease-in-out infinite;
}
.status-dot--closed {
    color: var(--chianti);
}
.status-dot--closed::before {
    background: var(--chianti);
}
@keyframes statusPulse {
    0%, 100% { box-shadow: 0 0 4px rgba(92, 107, 74, 0.4); }
    50% { box-shadow: 0 0 12px rgba(92, 107, 74, 0.8); }
}
.location-card__actions {
    display: flex;
    gap: 0.75rem;
    justify-content: center;
    flex-wrap: wrap;
    margin-top: 0.5rem;
}
.location-card__actions .btn {
    padding: 0.5rem 1.25rem;
    font-size: 0.7rem;
    letter-spacing: 1.5px;
    flex: 1;
    min-width: 0;
}
/* Location card on reservations page - larger variant */
.location-card--large {
    padding: 3rem 2.5rem;
}
.location-card--large .location-card__name {
    font-size: 1.6rem;
    margin-bottom: 0.75rem;
}
.location-card--large .location-card__actions .btn {
    padding: 0.85rem 2rem;
    font-size: 0.8rem;
}
/* ==========================================
   FEATURED DISHES
   ========================================== */
.featured-dishes {
    background: var(--midnight);
}
.dishes-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 2rem;
}
.dish-card {
    position: relative;
    border-radius: 8px;
    overflow: hidden;
    cursor: pointer;
    transition: all var(--transition-medium);
}
.dish-card__image {
    aspect-ratio: 4/3;
    overflow: hidden;
}
.dish-card__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: all 0.6s var(--ease-out-expo);
    filter: saturate(0.85);
}
.dish-card:hover .dish-card__image img {
    transform: scale(1.05);
    filter: saturate(1.1);
}
.dish-card__overlay {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 2rem 1.5rem;
    background: rgba(26, 20, 16, 0.75);
}
.dish-card__name {
    font-family: var(--font-display);
    font-size: 1.2rem;
    font-weight: 400;
    color: var(--text-primary);
    margin-bottom: 0.25rem;
}
.dish-card__desc {
    font-family: var(--font-subheading);
    font-size: 0.95rem;
    font-style: italic;
    color: var(--text-secondary);
}
/* Bento dish grid */
.dish-grid.bento {
    display: grid;
    grid-template-columns: 2fr 1fr;
    grid-template-rows: 1fr 1fr;
    gap: 1.25rem;
}
.dish-card--hero {
    grid-row: span 2;
}
.dish-card img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: saturate(0.85);
    transition: all 0.6s var(--ease-out-expo);
}
.dish-card:hover img {
    filter: saturate(1.1);
    transform: scale(1.05);
}
/* Homepage locations grid — MOBILE-FIRST
   1 column (phone) → 2 columns (≥640px) → 4 columns (≥1100px) */
.loc-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
    margin-top: 2rem;
}
.loc-card {
    display: flex;
    flex-direction: column;
    background: rgba(26, 20, 16, 0.5);
    border: 1px solid rgba(196, 149, 106, 0.2);
    border-radius: 6px;
    overflow: hidden;
    transition: transform var(--transition-medium), border-color var(--transition-medium), box-shadow var(--transition-medium);
}
.loc-card:hover {
    transform: translateY(-4px);
    border-color: var(--burnished-gold);
    box-shadow: 0 20px 40px -15px rgba(0, 0, 0, 0.55);
}
.loc-card__image {
    aspect-ratio: 16 / 9;
    overflow: hidden;
    background: var(--dark-wood);
}
.loc-card__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.8s var(--ease-out-expo);
}
.loc-card:hover .loc-card__image img { transform: scale(1.04); }
.loc-card__body {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding: 1.25rem;
    flex: 1;
}
.loc-card__header { display: flex; flex-direction: column; gap: 0.3rem; }
.loc-card__name {
    font-family: var(--font-display);
    font-size: 1.5rem;
    margin: 0;
    line-height: 1.1;
    color: var(--warm-cream);
    letter-spacing: -0.01em;
}
.loc-card__address {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 0.92rem;
    line-height: 1.5;
    color: var(--text-secondary);
}
.loc-card__status {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    font-size: 0.85rem;
    color: var(--text-primary);
    font-family: var(--font-ui);
    letter-spacing: 0.02em;
}
.loc-card__dot {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    flex-shrink: 0;
}
.loc-card__dot.site-header__dot--open {
    background: #4ade80;
    box-shadow: 0 0 8px rgba(74, 222, 128, 0.55);
    animation: sh-pulse 2s ease-in-out infinite;
}
.loc-card__dot.site-header__dot--closed {
    background: #f87171;
    box-shadow: 0 0 6px rgba(248, 113, 113, 0.35);
}
.loc-card__dot.site-header__dot--unknown {
    background: rgba(245, 235, 220, 0.3);
}
.loc-card__actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem;
    margin-top: auto;
    padding-top: 0.75rem;
    border-top: 1px solid rgba(196, 149, 106, 0.12);
}
.loc-card__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.6rem 0.9rem;
    min-height: 40px;
    border: 1px solid rgba(196, 149, 106, 0.4);
    border-radius: 4px;
    color: var(--text-primary);
    font-family: var(--font-ui);
    font-size: 0.76rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    text-align: center;
    transition: all var(--transition-fast);
}
.loc-card__btn:hover,
.loc-card__btn:focus-visible {
    border-color: var(--burnished-gold);
    background: rgba(196, 149, 106, 0.08);
    color: var(--burnished-gold);
}
.loc-card__btn--primary {
    background: var(--gradient-gold);
    color: var(--midnight);
    border-color: var(--burnished-gold);
}
.loc-card__btn--primary:hover {
    filter: brightness(1.08);
    color: var(--midnight);
    box-shadow: 0 4px 12px rgba(196, 149, 106, 0.4);
}
/* Small text links below action buttons */
.loc-card__link {
    grid-column: span 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.4rem 0.5rem;
    min-height: 32px;
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 0.82rem;
    color: var(--text-secondary);
    transition: color var(--transition-fast);
}
.loc-card__link:hover { color: var(--burnished-gold); }
/* Tablet */
@media (min-width: 640px) {
    .loc-grid { grid-template-columns: repeat(2, 1fr); gap: 1.25rem; }
    .loc-card__name { font-size: 1.65rem; }
}
/* Large tablet / small laptop */
@media (min-width: 900px) {
    .loc-card__body { padding: 1.4rem; }
}
/* Desktop */
@media (min-width: 1100px) {
    .loc-grid { grid-template-columns: repeat(4, 1fr); gap: 1.5rem; }
    .loc-card__name { font-size: 1.55rem; }
    .loc-card__body { padding: 1.25rem; gap: 0.85rem; }
}
/* The Kitchen — location-aware menu invitation. MOBILE-FIRST. */
.kitchen {
    position: relative;
    overflow: hidden;
    padding: 0 !important; /* full-bleed; panel handles its own spacing */
    background: var(--midnight);
}
.kitchen__inner {
    position: relative;
    min-height: 560px;
}
/* Panels stack in place; CSS shows only the selected one */
.kitchen__panel {
    display: none;
    grid-template-columns: 1fr;
    min-height: 560px;
}
body[data-location-key="midtown"]        .kitchen__panel[data-location-view="midtown"],
body[data-location-key="coral-gables"]   .kitchen__panel[data-location-view="coral-gables"],
body[data-location-key="weston"]         .kitchen__panel[data-location-view="weston"],
body[data-location-key="atlantic-beach"] .kitchen__panel[data-location-view="atlantic-beach"] {
    display: grid;
}
.kitchen__image {
    position: relative;
    min-height: 320px;
    overflow: hidden;
    isolation: isolate;
}
.kitchen__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 1.2s var(--ease-out-expo);
    animation: kitchen-ken-burns 18s ease-in-out infinite alternate;
}
@keyframes kitchen-ken-burns {
    0%   { transform: scale(1.0) translate(0, 0); }
    100% { transform: scale(1.08) translate(-2%, -1%); }
}
.kitchen__image::after {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(26, 20, 16, 0.4);
    pointer-events: none;
}
.kitchen__content {
    position: relative;
    padding: 3rem 1.25rem 3.5rem;
    display: flex;
    flex-direction: column;
    gap: 1.1rem;
    justify-content: center;
    background: var(--dark-wood);
}
.kitchen__content::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
        none;
    pointer-events: none;
}
.kitchen__content > * { position: relative; }
.kitchen__headline {
    font-family: var(--font-display);
    font-size: clamp(2.25rem, 8vw, 4.25rem);
    line-height: 0.98;
    margin: 0;
    letter-spacing: -0.02em;
    color: var(--warm-cream);
    display: flex;
    flex-direction: column;
    gap: 0.05em;
}
.kitchen__line { display: block; }
.kitchen__line--italic {
    font-family: var(--font-subheading);
    font-style: italic;
    font-weight: 400;
    color: var(--burnished-gold);
}
.kitchen__tagline {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: clamp(1rem, 2.5vw, 1.25rem);
    color: var(--text-primary);
    max-width: 36ch;
    line-height: 1.5;
    margin: 0;
}
/* Kinetic course list — marches in with staggered reveal */
.kitchen__courses {
    list-style: none;
    margin: 1rem 0 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem 0.85rem;
    max-width: 520px;
}
.kitchen__course {
    font-family: var(--font-numeric);
    font-variation-settings: "opsz" 24, "SOFT" 40;
    font-weight: 500;
    font-style: italic;
    font-size: 1rem;
    color: var(--burnished-gold);
    padding: 0.2rem 0.6rem;
    border: 1px solid rgba(196, 149, 106, 0.25);
    border-radius: 99px;
    background: rgba(196, 149, 106, 0.05);
    opacity: 0;
    transform: translateY(8px);
    animation: kitchen-course-in 0.6s var(--ease-out-expo) forwards;
    animation-delay: calc(0.12s * var(--i));
}
@keyframes kitchen-course-in {
    to { opacity: 1; transform: translateY(0); }
}
.kitchen__cta-wrap {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    margin-top: 0.75rem;
    align-items: flex-start;
}
.kitchen__cta {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.85rem 1.5rem;
    font-size: 0.82rem;
    letter-spacing: 0.14em;
    min-height: 52px;
}
.kitchen__cta span {
    transition: transform var(--transition-fast);
    display: inline-block;
}
.kitchen__cta:hover span { transform: translateX(4px); }
.kitchen__cta-sub {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 0.82rem;
    color: var(--text-muted);
    letter-spacing: 0.02em;
}
/* Tablet */
@media (min-width: 768px) {
    .kitchen__panel,
    body[data-location-key="midtown"]        .kitchen__panel[data-location-view="midtown"],
    body[data-location-key="coral-gables"]   .kitchen__panel[data-location-view="coral-gables"],
    body[data-location-key="weston"]         .kitchen__panel[data-location-view="weston"],
    body[data-location-key="atlantic-beach"] .kitchen__panel[data-location-view="atlantic-beach"] {
        display: none;
        grid-template-columns: 1fr 1fr;
        min-height: 640px;
    }
    body[data-location-key="midtown"]        .kitchen__panel[data-location-view="midtown"],
    body[data-location-key="coral-gables"]   .kitchen__panel[data-location-view="coral-gables"],
    body[data-location-key="weston"]         .kitchen__panel[data-location-view="weston"],
    body[data-location-key="atlantic-beach"] .kitchen__panel[data-location-view="atlantic-beach"] {
        display: grid;
    }
    .kitchen__image { min-height: 100%; }
    .kitchen__content { padding: 4rem 3rem; gap: 1.3rem; }
    .kitchen__courses { margin-top: 1.25rem; }
}
/* Desktop */
@media (min-width: 1100px) {
    .kitchen__inner { min-height: 720px; }
    .kitchen__panel { min-height: 720px; }
    .kitchen__content { padding: 5rem 4.5rem; }
    .kitchen__course { font-size: 1.1rem; padding: 0.25rem 0.75rem; }
}
/* Careers application form — MOBILE-FIRST */
.careers-form {
    display: flex;
    flex-direction: column;
    gap: 2rem;
    margin-top: 2rem;
    padding: 1.5rem;
    background: rgba(26, 20, 16, 0.5);
    border: 1px solid rgba(196, 149, 106, 0.2);
    border-radius: 6px;
}
.section-lede {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 1.1rem;
    line-height: 1.55;
    color: var(--text-secondary);
    margin: 0.5rem 0 0;
}
.careers-form__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
}
.careers-form__grid .form-group {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}
.careers-form__label {
    font-family: var(--font-ui);
    font-size: 0.72rem;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--burnished-gold);
    font-weight: 700;
}
.careers-form__optional {
    font-family: var(--font-subheading);
    font-style: italic;
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0.02em;
    color: var(--text-muted);
    margin-left: 0.35rem;
}
.careers-form__grid input[type="text"],
.careers-form__grid input[type="email"],
.careers-form__grid input[type="tel"],
.careers-form__grid select,
.careers-form__grid textarea {
    width: 100%;
    padding: 0.75rem 0.9rem;
    background: rgba(26, 20, 16, 0.5);
    border: 1px solid rgba(196, 149, 106, 0.3);
    border-radius: 4px;
    color: var(--warm-cream);
    font-family: var(--font-body);
    font-size: 16px;
    transition: border-color var(--transition-fast), background var(--transition-fast);
    resize: vertical;
}
.careers-form__grid select {
    appearance: none;
    -webkit-appearance: none;
    background-image:
        linear-gradient(45deg, transparent 50%, var(--burnished-gold) 50%),
        linear-gradient(135deg, var(--burnished-gold) 50%, transparent 50%);
    background-position: right 1rem top 50%, right 0.5rem top 50%;
    background-size: 6px 6px, 6px 6px;
    background-repeat: no-repeat;
    padding-right: 2rem;
    cursor: pointer;
}
.careers-form__grid input:focus,
.careers-form__grid select:focus,
.careers-form__grid textarea:focus {
    border-color: var(--burnished-gold);
    background: rgba(26, 20, 16, 0.7);
    outline: none;
}
.careers-form__grid input[type="file"] {
    padding: 0.5rem;
    cursor: pointer;
    color: var(--text-secondary);
    background: rgba(26, 20, 16, 0.5);
    border: 1px dashed rgba(196, 149, 106, 0.4);
    border-radius: 4px;
    font-family: var(--font-body);
    font-size: 0.9rem;
    width: 100%;
}
.careers-form__grid input[type="file"]::file-selector-button {
    margin-right: 0.75rem;
    padding: 0.5rem 0.85rem;
    background: var(--gradient-gold);
    color: var(--midnight);
    border: none;
    border-radius: 4px;
    font-family: var(--font-ui);
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    cursor: pointer;
    transition: filter var(--transition-fast);
}
.careers-form__grid input[type="file"]::file-selector-button:hover {
    filter: brightness(1.1);
}
.careers-form__actions {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    align-items: center;
    padding-top: 1rem;
    border-top: 1px solid rgba(196, 149, 106, 0.15);
}
.careers-form__submit {
    width: 100%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 1rem 1.5rem;
    font-size: 0.85rem;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    font-weight: 700;
    min-height: 56px;
    cursor: pointer;
}
.careers-form__note {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 0.82rem;
    color: var(--text-muted);
    text-align: center;
    margin: 0;
    line-height: 1.5;
}
.careers-form__note a { color: var(--burnished-gold); text-decoration: underline; }
.careers-form__status {
    text-align: center;
    font-family: var(--font-subheading);
    font-style: italic;
    color: var(--text-secondary);
    min-height: 1.5em;
}
.careers-form__status.is-error { color: var(--crimson-dark, #970B33); }
.careers-form__status.is-success { color: var(--olive, #5C6B4A); }
/* Field-level validation highlight (toggled by js/careers.js on a 400 response) */
.careers-form__grid .form-group.has-error input,
.careers-form__grid .form-group.has-error select,
.careers-form__grid .form-group.has-error textarea {
    border-color: var(--crimson, #970B33);
    background: rgba(151, 11, 51, 0.06);
}
@media (min-width: 640px) {
    .careers-form { padding: 2rem; }
    .careers-form__grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 1.25rem;
    }
    .careers-form__grid .form-group--full { grid-column: span 2; }
    .careers-form__submit { width: auto; min-width: 280px; }
}
/* ==========================================
   EMAIL SIGNUP
   ========================================== */
.email-signup {
    background: var(--dark-wood);
    padding: var(--section-padding);
}
.signup-content {
    text-align: center;
    max-width: 600px;
    margin: 0 auto;
}
.signup-form {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin-top: 2rem;
}
.signup-form__row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}
.signup-form input[type="email"],
.signup-form input[type="text"],
.signup-form select {
    width: 100%;
    padding: 1rem;
    font-family: var(--font-body);
    font-size: 0.95rem;
    background: var(--midnight);
    border: 1px solid rgba(196, 149, 106, 0.2);
    border-radius: 2px;
    color: var(--text-primary);
    transition: border-color var(--transition-fast);
    appearance: none;
    -webkit-appearance: none;
}
.signup-form input:focus,
.signup-form select:focus {
    outline: none;
    border-color: var(--crimson);
}
.signup-form input::placeholder {
    color: var(--text-muted);
}
.signup-form select {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23C4956A' stroke-width='1.5'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 1rem center;
    padding-right: 2.5rem;
    cursor: pointer;
}
.signup-form select option {
    background: var(--midnight);
    color: var(--text-primary);
}
.signup-disclaimer {
    font-size: 0.8rem;
    color: var(--text-muted);
    font-style: italic;
    margin-top: 0.75rem;
}
/* ==========================================
   INQUIRY FORM
   ========================================== */
.inquiry-form {
    max-width: 700px;
    margin: 0 auto;
    padding: 3rem;
    background: #FFF7E8;
    border: 1px solid rgba(96, 57, 19, 0.22);
    border-radius: 6px;
    box-shadow: 0 8px 32px -18px rgba(96, 57, 19, 0.3);
    color: var(--walnut);
}
.inquiry-form .form-group label { color: var(--chianti); }
.inquiry-form .form-group input,
.inquiry-form .form-group select,
.inquiry-form .form-group textarea {
    background: #FFFDF7;
    color: var(--walnut);
    border-color: rgba(96, 57, 19, 0.3);
}
.inquiry-form .form-group input:focus,
.inquiry-form .form-group select:focus,
.inquiry-form .form-group textarea:focus {
    border-color: var(--chianti);
    box-shadow: 0 0 0 3px rgba(151, 11, 51, 0.12);
}
.inquiry-form .form-group input::placeholder,
.inquiry-form .form-group textarea::placeholder {
    color: rgba(74, 55, 40, 0.5);
}
.inquiry-form__title {
    font-family: var(--font-display);
    font-size: 1.5rem;
    color: var(--chianti);
    margin-bottom: 0.5rem;
    text-align: center;
}
.inquiry-form__subtitle {
    font-family: var(--font-subheading);
    font-size: 1rem;
    font-style: italic;
    color: var(--walnut);
    margin-bottom: 2rem;
    text-align: center;
}
.form-group {
    margin-bottom: 1.25rem;
}
.form-group label {
    display: block;
    font-family: var(--font-ui);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--text-secondary);
    margin-bottom: 0.5rem;
}
.form-group label .required {
    color: var(--crimson);
}
.form-group input,
.form-group select,
.form-group textarea {
    width: 100%;
    padding: 0.85rem 1rem;
    font-family: var(--font-body);
    font-size: 0.95rem;
    background: var(--midnight);
    border: 1px solid rgba(196, 149, 106, 0.2);
    border-radius: 2px;
    color: var(--text-primary);
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
    appearance: none;
    -webkit-appearance: none;
}
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
    outline: none;
    border-color: var(--crimson);
    box-shadow: 0 0 0 3px rgba(151, 11, 51, 0.15);
}
.form-group input::placeholder,
.form-group textarea::placeholder {
    color: var(--text-muted);
}
.form-group textarea {
    resize: vertical;
    min-height: 120px;
    line-height: 1.6;
}
.form-group select {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23C4956A' stroke-width='1.5'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 1rem center;
    padding-right: 2.5rem;
    cursor: pointer;
}
.form-group select option {
    background: var(--midnight);
    color: var(--text-primary);
}
.form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}
.form-row .form-group {
    margin-bottom: 0;
}
/* Form validation states */
.form-group.error input,
.form-group.error select,
.form-group.error textarea {
    border-color: var(--crimson);
    box-shadow: 0 0 0 3px rgba(151, 11, 51, 0.15);
}
.form-group .error-message {
    display: none;
    font-size: 0.8rem;
    color: var(--crimson);
    margin-top: 0.35rem;
}
.form-group.error .error-message {
    display: block;
}
.form-group.success input,
.form-group.success select,
.form-group.success textarea {
    border-color: var(--olive);
}
/* Form success/error messages */
.form-message {
    text-align: center;
    padding: 1.25rem;
    margin-top: 1.5rem;
    border-radius: 2px;
    font-size: 0.95rem;
    display: none;
}
.form-message.visible {
    display: block;
}
.form-message--success {
    background: rgba(92, 107, 74, 0.15);
    border: 1px solid rgba(92, 107, 74, 0.3);
    color: #8FA674;
}
.form-message--error {
    background: rgba(151, 11, 51, 0.15);
    border: 1px solid rgba(151, 11, 51, 0.3);
    color: #C4636D;
}
/* ==========================================
   PRESS / NEWSROOM
   ========================================== */
/* Press logo strip */
.press-logos {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 3rem;
    flex-wrap: wrap;
    margin-bottom: 3rem;
    padding: 2rem 0;
}
.press-logo {
    height: 40px;
    width: auto;
    filter: grayscale(100%) brightness(0.6) invert(0.8);
    opacity: 0.5;
    transition: all var(--transition-fast);
}
.press-logo:hover {
    filter: grayscale(0%) brightness(1) invert(0);
    opacity: 1;
}
/* Press Marquee */
.press-marquee {
    overflow: hidden;
    padding: 2rem 0;
    border-top: 1px solid rgba(151, 11, 51, 0.2);
    border-bottom: 1px solid rgba(151, 11, 51, 0.2);
}
.press-marquee__track {
    display: flex;
    gap: 2rem;
    animation: marquee 20s linear infinite;
    white-space: nowrap;
}
.press-marquee__item {
    font-family: var(--font-display);
    font-size: clamp(1.2rem, 3vw, 2rem);
    color: var(--text-muted);
    letter-spacing: 3px;
}
.press-marquee__sep {
    color: var(--crimson);
    font-size: 1.5rem;
}
/* Press Pullquote */
.press-pullquote {
    text-align: center;
    padding: 3rem 0;
}
.press-pullquote p {
    font-family: var(--font-subheading);
    font-size: clamp(1.8rem, 4vw, 3.5rem);
    font-style: italic;
    color: var(--text-secondary);
}
.press-pullquote cite {
    font-family: var(--font-ui);
    font-size: 0.85rem;
    color: var(--crimson);
    letter-spacing: 2px;
    text-transform: uppercase;
    display: block;
    margin-top: 1rem;
    font-style: normal;
}
/* Quote rotator */
.press-quote-rotator {
    text-align: center;
    margin-bottom: 4rem;
    padding: 2rem 0;
    position: relative;
    min-height: 120px;
}
.press-quote {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 100%;
    max-width: 700px;
    opacity: 0;
    transition: opacity var(--transition-slow);
}
.press-quote.active {
    opacity: 1;
}
.press-quote__text {
    font-family: var(--font-subheading);
    font-size: 1.4rem;
    font-style: italic;
    color: var(--text-primary);
    line-height: 1.8;
    margin-bottom: 1rem;
}
.press-quote__source {
    font-family: var(--font-ui);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--crimson);
}
/* Press article cards */
.press-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 2rem;
}
.press-card {
    background: rgba(26, 20, 16, 0.95);
    border: 1px solid rgba(196, 149, 106, 0.1);
    border-radius: 4px;
    padding: 2rem;
    transition: all var(--transition-medium);
    display: flex;
    flex-direction: column;
}
.press-card:hover {
    border-color: rgba(151, 11, 51, 0.3);
    transform: translateY(-3px);
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(151, 11, 51, 0.15);
}
.press-card__date {
    font-family: var(--font-ui);
    font-size: 0.7rem;
    font-weight: 500;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--text-muted);
    margin-bottom: 0.75rem;
}
.press-card__source {
    font-family: var(--font-ui);
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--crimson);
    margin-bottom: 0.75rem;
}
.press-card__title {
    font-family: var(--font-display);
    font-size: 1.2rem;
    font-weight: 400;
    color: var(--text-primary);
    margin-bottom: 0.75rem;
    line-height: 1.4;
}
.press-card__excerpt {
    font-size: 0.9rem;
    color: var(--text-secondary);
    line-height: 1.7;
    margin-bottom: 1.25rem;
    flex-grow: 1;
}
.press-card__link {
    font-family: var(--font-ui);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--crimson);
    transition: color var(--transition-fast);
    margin-top: auto;
}
.press-card__link:hover {
    color: var(--burnished-gold);
}
/* Reviews showcase — aggregate band + rotating review card */
.reviews-showcase {
    max-width: 900px;
    margin: 0 auto;
    text-align: center;
}
/* Aggregate band */
.reviews-aggregate {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.85rem;
    margin-bottom: 3rem;
}
.reviews-aggregate__stars {
    display: inline-flex;
    gap: 0.25rem;
    color: var(--burnished-gold);
    filter: drop-shadow(0 2px 8px rgba(196, 149, 106, 0.4));
}
.reviews-aggregate__copy {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.75rem;
    justify-content: center;
    font-family: var(--font-subheading);
}
.reviews-aggregate__rating {
    font-size: clamp(2.5rem, 5vw, 3.5rem);
    font-weight: 700;
    color: var(--burnished-gold);
    line-height: 1;
    letter-spacing: -0.02em;
}
.reviews-aggregate__count {
    font-size: 1.15rem;
    color: var(--text-primary);
    opacity: 0.85;
    letter-spacing: 0.02em;
}
.reviews-aggregate__location {
    font-size: 1rem;
    color: var(--text-secondary);
    font-style: italic;
    flex-basis: 100%;
    margin-top: -0.25rem;
}
/* Carousel */
.reviews-carousel {
    position: relative;
    min-height: 280px;
}
.review-card {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.25rem;
    padding: 2.5rem 2rem;
    background: rgba(26, 20, 16, 0.55);
    backdrop-filter: blur(6px);
    border: 1px solid rgba(196, 149, 106, 0.15);
    border-radius: 8px;
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.6s var(--ease-out-expo), transform 0.6s var(--ease-out-expo);
    pointer-events: none;
    margin: 0;
}
.review-card.is-active {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
    position: relative;
}
.review-card__stars {
    display: inline-flex;
    gap: 0.2rem;
    color: var(--burnished-gold);
}
.review-card__text {
    margin: 0;
    font-family: var(--font-subheading);
    font-size: clamp(1.05rem, 1.6vw, 1.25rem);
    font-style: italic;
    line-height: 1.65;
    color: var(--text-primary);
    max-width: 680px;
    position: relative;
}
.review-card__text::before {
    content: '\201C';
    position: absolute;
    top: -1.5rem;
    left: -1.5rem;
    font-size: 5rem;
    font-family: var(--font-display);
    color: var(--burnished-gold);
    opacity: 0.3;
    line-height: 1;
}
.review-card__byline {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    font-size: 0.9rem;
    color: var(--text-secondary);
    margin-top: auto;
}
.review-card__photo {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    object-fit: cover;
    border: 1px solid rgba(196, 149, 106, 0.3);
}
.review-card__author {
    color: var(--text-primary);
    font-weight: 600;
    letter-spacing: 0.02em;
}
.review-card__when {
    opacity: 0.7;
}
.review-card__when::before {
    content: '\00B7';
    margin-right: 0.5rem;
    opacity: 0.5;
}
.review-card__source {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    margin-left: 0.5rem;
    color: var(--burnished-gold);
    font-size: 0.85rem;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    transition: color var(--transition-fast);
}
.review-card__source::before {
    content: '\00B7';
    margin-right: 0.5rem;
    opacity: 0.5;
}
.review-card__source:hover {
    color: var(--warm-cream);
}
/* Dots */
.reviews-carousel__controls {
    display: flex;
    gap: 0.5rem;
    justify-content: center;
    margin-top: 2rem;
}
.reviews-carousel__dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: rgba(245, 235, 220, 0.25);
    border: none;
    padding: 0;
    cursor: pointer;
    transition: background var(--transition-fast), transform var(--transition-fast);
}
.reviews-carousel__dot:hover {
    background: rgba(245, 235, 220, 0.6);
}
.reviews-carousel__dot.is-active {
    background: var(--burnished-gold);
    transform: scale(1.3);
}
/* Mobile */
@media (max-width: 768px) {
    .review-card {
        padding: 2rem 1.25rem;
    }
    .review-card__text::before {
        top: -1rem;
        left: -0.5rem;
        font-size: 3.5rem;
    }
    .review-card__byline {
        font-size: 0.8rem;
        gap: 0.4rem;
    }
    .reviews-carousel {
        min-height: 360px;
    }
}
/* Press cards — grid of critic pull quotes with per-card accent color */
.press-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1.5rem;
    margin-top: 2.5rem;
}
.press-card {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    padding: 2rem 1.75rem;
    background: rgba(26, 20, 16, 0.45);
    backdrop-filter: blur(6px);
    border: 1px solid rgba(196, 149, 106, 0.2);
    border-radius: 4px;
    position: relative;
    overflow: hidden;
    transition: transform var(--transition-medium), border-color var(--transition-medium), background var(--transition-medium);
}
.press-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: var(--accent-color, var(--burnished-gold));
    transition: height var(--transition-medium);
}
.press-card:hover {
    transform: translateY(-4px);
    border-color: var(--accent-color, var(--burnished-gold));
    background: rgba(26, 20, 16, 0.6);
}
.press-card:hover::before {
    height: 5px;
}
/* Accent variants — each card gets a different highlight */
.press-card--gold     { --accent-color: var(--burnished-gold); }
.press-card--crimson  { --accent-color: var(--crimson); }
.press-card--chianti  { --accent-color: var(--chianti); }
.press-card--mahogany { --accent-color: var(--mahogany); }
.press-card--placeholder {
    opacity: 0.55;
    background: rgba(26, 20, 16, 0.25);
}
/* Header */
.press-card__header {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.75rem;
    justify-content: space-between;
}
.press-card__publication {
    font-family: var(--font-display);
    font-size: 1.3rem;
    font-weight: 700;
    color: var(--warm-cream);
    letter-spacing: -0.01em;
    line-height: 1.15;
}
.press-card__date {
    font-family: var(--font-ui);
    font-size: 0.75rem;
    color: var(--text-muted);
    letter-spacing: 0.15em;
    text-transform: uppercase;
}
.press-card__rating {
    display: inline-block;
    padding: 0.1rem 0.6rem;
    font-family: var(--font-ui);
    font-size: 0.7rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--midnight);
    background: var(--accent-color, var(--burnished-gold));
    border-radius: 2px;
    font-weight: 700;
}
/* Quote */
.press-card__quote {
    margin: 0;
    flex: 1;
    font-family: var(--font-subheading);
    font-size: 1.1rem;
    font-style: italic;
    line-height: 1.55;
    color: var(--text-primary);
    position: relative;
}
.press-card__quote-mark {
    color: var(--accent-color, var(--burnished-gold));
    font-weight: 700;
    font-size: 1.15em;
    margin: 0 0.1em;
    opacity: 0.85;
}
.press-card__quote--placeholder {
    font-style: italic;
    color: var(--text-muted);
    font-size: 0.95rem;
}
/* Footer */
.press-card__footer {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    padding-top: 1rem;
    border-top: 1px solid rgba(196, 149, 106, 0.15);
}
.press-card__author {
    font-family: var(--font-subheading);
    font-size: 0.95rem;
    color: var(--text-secondary);
    font-style: italic;
}
.press-card__link {
    font-family: var(--font-ui);
    font-size: 0.8rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-weight: 600;
    color: var(--accent-color, var(--burnished-gold));
    transition: color var(--transition-fast), transform var(--transition-fast);
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}
.press-card__link:hover {
    color: var(--warm-cream);
}
.press-card__link:hover span {
    transform: translateX(3px);
}
@media (max-width: 640px) {
    .press-card {
        padding: 1.5rem 1.25rem;
    }
    .press-card__publication {
        font-size: 1.15rem;
    }
    .press-card__quote {
        font-size: 1rem;
    }
}
/* Instagram grid — MOBILE-FIRST 3×3 responsive tiles */
.ig-grid {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}
.ig-grid__header {
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
}
.ig-grid__follow {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.25rem;
    padding: 0.55rem 1.1rem;
    font-family: var(--font-ui);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--warm-cream);
    border: 1px solid var(--burnished-gold);
    border-radius: 99px;
    transition: all var(--transition-fast);
}
.ig-grid__follow:hover {
    background: var(--burnished-gold);
    color: var(--midnight);
}
.ig-grid__tiles {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 2px;
    max-width: 900px;
    width: 100%;
    margin: 0 auto;
}
.ig-tile {
    position: relative;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    display: block;
    background: var(--dark-wood);
}
.ig-tile img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.6s var(--ease-out-expo), filter var(--transition-medium);
}
.ig-tile__overlay {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(26, 20, 16, 0.0);
    color: var(--warm-cream);
    transition: background var(--transition-medium), opacity var(--transition-medium);
    opacity: 0;
}
.ig-tile:hover img,
.ig-tile:focus-visible img {
    transform: scale(1.08);
    filter: brightness(0.75);
}
.ig-tile:hover .ig-tile__overlay,
.ig-tile:focus-visible .ig-tile__overlay {
    background: rgba(26, 20, 16, 0.35);
    opacity: 1;
}
@media (min-width: 640px) {
    .ig-grid__tiles { gap: 4px; }
}
@media (min-width: 960px) {
    .ig-grid { gap: 2rem; }
    .ig-grid__tiles { gap: 6px; }
}
/* Shared full-bleed hero for subpages (happenings, newsroom, about, etc.). */
.subpage-hero {
    position: relative;
    min-height: clamp(280px, 50vh, 520px);
    display: grid;
    place-items: center;
    overflow: hidden;
    background: var(--mahogany-dark, #4B2D10);
}
.subpage-hero__bg {
    position: absolute;
    inset: 0;
    z-index: 0;
}
.subpage-hero__bg picture,
.subpage-hero__bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
/* About hero: the founders portrait is a tall shot with their faces in the
   top third. In this short, wide band the default centered crop lands on
   their torsos, so bias the focal point upward to keep the faces in frame. */
.subpage-hero--about .subpage-hero__bg img { object-position: center 18%; }
.subpage-hero__scrim {
    position: absolute;
    inset: 0;
    /* Mahogany scrim (matches .subpage-hero__overlay in palette-bright) — not black */
    background: rgba(75, 45, 16, 0.68);
    z-index: 1;
}
.subpage-hero__content {
    position: relative;
    z-index: 2;
    text-align: center;
    padding: 4rem 1rem;
    color: var(--cream, #f5ebdc);
    max-width: 800px;
}
.subpage-hero__title {
    font-family: var(--font-display);
    font-size: clamp(2.5rem, 6vw, 4.5rem);
    line-height: 1.05;
    margin: 0.5rem 0 1rem;
    color: inherit;
}
.subpage-hero__lede {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: clamp(1rem, 1.6vw, 1.25rem);
    max-width: 50ch;
    margin: 0 auto;
    opacity: 0.92;
    line-height: 1.5;
}
/* Compact variant — tight title band for utility pages (reservations, gift
   cards) so the actionable content lands above the fold. Doubled class +
   !important so it also beats mobile-reset's blanket hero padding. */
.subpage-hero.subpage-hero--compact {
    min-height: 0 !important;
    padding: 3rem 0 2.5rem !important;
}
.subpage-hero.subpage-hero--compact > .container { text-align: center; }
/* ==========================================
   SECTIONS - GENERAL
   ========================================== */
.section {
    padding: var(--section-padding);
    position: relative;
}
.section--dark {
    background: var(--midnight);
}
.section--wood {
    background: var(--dark-wood);
}
.section--walnut {
    background: var(--walnut);
}
.section--spacious {
    padding: clamp(100px, 14vw, 180px) 0;
}
.section--tight {
    padding-top: clamp(2rem, 4vw, 3rem);
}
/* Slim full band — for one-line sections (proof lines, short intros) that
   would otherwise float in a full --section-padding cathedral. */
.section--band {
    padding: clamp(2.25rem, 4vw, 3rem) 0;
}
.section--full-bleed {
    max-width: none;
    padding-left: 0;
    padding-right: 0;
    overflow: hidden;
}
.section--warm {
    background: var(--mahogany);
}
.section--warm .section-title {
    color: var(--warm-cream);
}
.section--textured {
    position: relative;
}
.section--textured::after {
    content: '';
    position: absolute;
    inset: 0;
    background: none;
    pointer-events: none;
}
.section-label {
    display: block;
    font-family: var(--font-ui);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    /* burnished-gold on midnight: 6.3:1 (WCAG AA for normal text). */
    color: var(--burnished-gold);
    margin-bottom: 1rem;
}
.section-label::before {
    content: '';
    display: inline-block;
    width: 30px;
    height: 1px;
    background: var(--burnished-gold);
    margin-right: 12px;
    vertical-align: middle;
}
.section-title {
    font-family: var(--font-display);
    font-size: clamp(2rem, 4vw, 3rem);
    font-weight: 400;
    margin-bottom: 1.5rem;
    color: var(--text-primary);
    line-height: 1.2;
}
.section-title.light {
    color: var(--text-primary);
    text-shadow: 0 2px 20px rgba(0, 0, 0, 0.5);
}
.section-title--xl {
    font-size: clamp(3rem, 7vw, 6rem);
}
.section-subtitle {
    display: block;
    margin-top: 0.75rem;
    font-family: var(--font-subheading);
    font-size: 1.15rem;
    color: var(--text-secondary);
    font-style: italic;
}
.section-header {
    text-align: center;
    margin-bottom: 3rem;
}
.section-header .section-title {
    margin-bottom: 0.5rem;
}
.display-quote {
    font-family: var(--font-subheading);
    font-size: clamp(1.5rem, 4vw, 3rem);
    font-style: italic;
    color: var(--text-secondary);
    line-height: 1.6;
}
/* Gold line divider */
.section-divider {
    width: 60px;
    height: 2px;
    background: var(--gradient-gold);
    margin: 1.5rem auto;
    border: none;
}
/* ==========================================
   SCROLL REVEAL
   ========================================== */
.reveal {
    opacity: 0;
    transform: translateY(30px);
    transition: all 0.8s var(--ease-out-expo);
}
.reveal.active {
    opacity: 1;
    transform: translateY(0);
}
/* ==========================================
   STAGGER REVEAL SYSTEM
   ========================================== */
.reveal-stagger > * {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.6s var(--ease-out-expo), transform 0.6s var(--ease-out-expo);
}
.reveal-stagger.active > * {
    opacity: 1;
    transform: translateY(0);
}
.reveal-stagger > *:nth-child(1) { transition-delay: 0s; }
.reveal-stagger > *:nth-child(2) { transition-delay: 0.1s; }
.reveal-stagger > *:nth-child(3) { transition-delay: 0.15s; }
.reveal-stagger > *:nth-child(4) { transition-delay: 0.2s; }
.reveal-stagger > *:nth-child(5) { transition-delay: 0.25s; }
.reveal-stagger > *:nth-child(6) { transition-delay: 0.3s; }
.reveal-stagger > *:nth-child(7) { transition-delay: 0.35s; }
.reveal-stagger > *:nth-child(8) { transition-delay: 0.4s; }
/* ==========================================
   IMAGE LIFT EFFECT
   ========================================== */
.image-lift {
    transition: transform 0.6s var(--ease-out-expo), box-shadow 0.6s var(--ease-out-expo);
}
.image-lift:hover {
    transform: translateY(-8px) scale(1.02);
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
}
/* ==========================================
   BRAND STATEMENT
   ========================================== */
.brand-statement {
    padding: var(--section-padding);
    text-align: center;
    background: var(--dark-wood);
    position: relative;
    overflow: hidden;
}
.brand-statement::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 1px;
    background: var(--crimson);
}
.brand-statement::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 1px;
    background: var(--crimson);
}
.brand-quote {
    font-family: var(--font-subheading);
    font-size: clamp(1.3rem, 3vw, 2rem);
    font-style: italic;
    color: var(--text-primary);
    max-width: 800px;
    margin: 0 auto;
    line-height: 1.8;
    position: relative;
    padding: 2rem 0;
}
.brand-quote::before {
    content: '\201C';
    position: absolute;
    top: -0.5rem;
    left: -1rem;
    font-family: var(--font-display);
    font-size: 5rem;
    color: rgba(151, 11, 51, 0.3);
    line-height: 1;
}
.brand-attribution {
    display: block;
    margin-top: 1.5rem;
    font-family: var(--font-ui);
    font-size: 0.82rem;
    font-style: normal;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--burnished-gold);
}
/* ==========================================
   STORY PREVIEW
   ========================================== */
.story-preview {
    background: var(--dark-wood);
}
.story-grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 4rem;
    align-items: center;
}
.story-image {
    position: relative;
}
.story-image .image-frame {
    position: relative;
    border: 2px solid var(--gold-dim);
    padding: 1rem;
}
.story-image .image-frame::before {
    content: '';
    position: absolute;
    top: -10px;
    right: -10px;
    bottom: 10px;
    left: 10px;
    border: 1px solid var(--gold-dim);
    pointer-events: none;
}
.story-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.story-content .section-title {
    font-size: clamp(2rem, 3.5vw, 2.5rem);
}
.story-text {
    font-size: 1.05rem;
    line-height: 1.8;
    color: var(--text-secondary);
    margin-bottom: 1.25rem;
}
.story-text em {
    color: var(--burnished-gold);
    font-style: italic;
}
.story-text strong {
    color: var(--text-primary);
}
.story-highlight {
    font-family: var(--font-subheading);
    font-size: 1.25rem;
    font-style: italic;
    color: var(--burnished-gold);
    margin-top: 1.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid rgba(151, 11, 51, 0.3);
}
/* Story Split (Full-bleed) */
.story-split {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    min-height: 600px;
}
.story-split__image {
    overflow: hidden;
}
.story-split__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: saturate(0.9);
}
.story-split__content {
    padding: clamp(3rem, 6vw, 6rem);
    display: flex;
    flex-direction: column;
    justify-content: center;
    margin-left: -4rem;
    position: relative;
    z-index: 1;
    background: rgba(26, 20, 16, 0.9);
}
/* ==========================================
   PARALLAX BANNER
   ========================================== */
.section--parallax-banner {
    position: relative;
    min-height: 500px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    overflow: hidden;
}
.parallax-banner__bg {
    position: absolute;
    inset: -20%;
    background-size: cover;
    background-position: center;
    background-attachment: fixed;
}
.parallax-banner__overlay {
    position: absolute;
    inset: 0;
    background: rgba(26, 20, 16, 0.65);
}
.parallax-banner__content {
    position: relative;
    z-index: 1;
    padding: 2rem;
}
.parallax-banner__img,
.parallax-banner__bg picture,
.parallax-banner__bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
/* ==========================================
   PRIVATE EVENTS BANNER
   ========================================== */
.events-banner {
    position: relative;
    padding: 100px 0;
    overflow: hidden;
}
.events-banner__bg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center;
    z-index: 0;
}
.events-banner__overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background:
        rgba(26, 20, 16, 0.8);
    z-index: 1;
}
.events-banner__content {
    position: relative;
    z-index: 2;
    text-align: center;
    max-width: 700px;
    margin: 0 auto;
}
.events-banner__content .section-title {
    font-size: clamp(2rem, 4vw, 3rem);
    margin-bottom: 1rem;
}
.events-banner__text {
    font-family: var(--font-subheading);
    font-size: 1.15rem;
    font-style: italic;
    color: var(--text-secondary);
    margin-bottom: 2rem;
    line-height: 1.7;
}
/* ==========================================
   ABOUT PAGE
   ========================================== */
.about-lead {
    font-family: var(--font-subheading);
    font-size: 1.3rem;
    font-style: italic;
    color: var(--burnished-gold);
    margin-bottom: 1.5rem;
    line-height: 1.8;
}
.about-text {
    font-size: 1.05rem;
    line-height: 1.8;
    margin-bottom: 1.25rem;
    color: var(--text-secondary);
}
.about-text em {
    color: var(--burnished-gold);
    font-style: italic;
}
.about-text strong {
    color: var(--text-primary);
}
/* About content sections */
.about-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4rem;
    align-items: center;
}
.about-grid.reverse {
    direction: rtl;
}
.about-grid.reverse > * {
    direction: ltr;
}
.about-image .image-frame {
    position: relative;
    border: 2px solid var(--gold-dim);
    padding: 1rem;
}
.about-image .image-frame::before {
    content: '';
    position: absolute;
    top: -10px;
    right: -10px;
    bottom: 10px;
    left: 10px;
    border: 1px solid var(--gold-dim);
    pointer-events: none;
}
.about-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.about-highlight {
    font-family: var(--font-subheading);
    font-size: 1.2rem;
    font-style: italic;
    color: var(--burnished-gold);
    margin-top: 1.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid rgba(151, 11, 51, 0.3);
}
/* Team grid */
.team-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
    gap: 2rem;
}
.team-card {
    text-align: center;
}
.team-card__image {
    width: 180px;
    height: 180px;
    border-radius: 50%;
    overflow: hidden;
    margin: 0 auto 1.25rem;
    border: 2px solid var(--gold-dim);
}
.team-card__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: saturate(0.85);
    transition: filter var(--transition-medium);
}
.team-card:hover .team-card__image img {
    filter: saturate(1);
}
.team-card__name {
    font-family: var(--font-display);
    font-size: 1.15rem;
    font-weight: 400;
    color: var(--text-primary);
    margin-bottom: 0.25rem;
}
.team-card__role {
    font-family: var(--font-subheading);
    font-size: 0.95rem;
    font-style: italic;
    color: var(--crimson);
    margin-bottom: 0.75rem;
}
.team-card__bio {
    font-size: 0.9rem;
    color: var(--text-secondary);
    line-height: 1.6;
}
/* ==========================================
   GALLERY
   ========================================== */
.gallery-section {
    background: var(--midnight);
}
.gallery-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.75rem;
}
.gallery-item {
    position: relative;
    overflow: hidden;
    cursor: pointer;
    border-radius: 2px;
    aspect-ratio: 1;
}
.gallery-item--wide {
    grid-column: span 2;
    aspect-ratio: 2/1;
}
.gallery-item--tall {
    grid-row: span 2;
    aspect-ratio: auto;
}
.gallery-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--transition-slow), filter var(--transition-medium);
    filter: saturate(0.85);
}
.gallery-item::after {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(26, 20, 16, 0);
    transition: background var(--transition-medium);
}
.gallery-item:hover img {
    transform: scale(1.06);
    filter: saturate(1.1);
}
.gallery-item:hover::after {
    background: rgba(26, 20, 16, 0.3);
}
.gallery-item__caption {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 1rem;
    background: rgba(26, 20, 16, 0.75);
    font-family: var(--font-subheading);
    font-size: 0.95rem;
    font-style: italic;
    color: var(--text-primary);
    z-index: 1;
    opacity: 0;
    transform: translateY(10px);
    transition: all var(--transition-medium);
}
.gallery-item:hover .gallery-item__caption {
    opacity: 1;
    transform: translateY(0);
}
/* Lightbox overlay */
.lightbox-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(26, 20, 16, 0.95);
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    visibility: hidden;
    transition: all var(--transition-medium);
}
.lightbox-overlay.active {
    opacity: 1;
    visibility: visible;
}
.lightbox-content {
    position: relative;
    max-width: 90vw;
    max-height: 90vh;
}
.lightbox-content img {
    max-width: 100%;
    max-height: 85vh;
    object-fit: contain;
    display: block;
    margin: 0 auto;
}
.lightbox-caption {
    text-align: center;
    margin-top: 1rem;
    font-family: var(--font-subheading);
    font-size: 1.1rem;
    font-style: italic;
    color: var(--text-secondary);
}
.lightbox-close {
    position: absolute;
    top: -40px;
    right: 0;
    background: none;
    border: none;
    color: var(--text-primary);
    font-size: 2rem;
    cursor: pointer;
    padding: 0.5rem;
    transition: color var(--transition-fast);
    line-height: 1;
}
.lightbox-close:hover {
    color: var(--crimson);
}
.lightbox-prev,
.lightbox-next {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(151, 11, 51, 0.15);
    border: 1px solid rgba(151, 11, 51, 0.3);
    color: var(--text-primary);
    width: 48px;
    height: 48px;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.2rem;
    transition: all var(--transition-fast);
}
.lightbox-prev {
    left: -70px;
}
.lightbox-next {
    right: -70px;
}
.lightbox-prev:hover,
.lightbox-next:hover {
    background: rgba(151, 11, 51, 0.3);
    border-color: var(--crimson);
    color: var(--burnished-gold);
}
/* Gallery full-width marquee (homepage) */
.gallery-marquee-section {
    position: relative;
    background: var(--midnight);
    padding: 80px 0;
    overflow: hidden;
}
.gallery-marquee {
    width: 100%;
    overflow: hidden;
    position: relative;
}
.gallery-marquee::before,
.gallery-marquee::after {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    width: 100px;
    z-index: 10;
    pointer-events: none;
}
.gallery-marquee::before {
    left: 0;
    background: none;
}
.gallery-marquee::after {
    right: 0;
    background: none;
}
.gallery-track {
    display: flex;
    gap: 20px;
    animation: marquee 45s linear infinite;
    width: max-content;
}
.gallery-track:hover {
    animation-play-state: paused;
}
@keyframes marquee {
    0% { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}
.gallery-marquee .gallery-item {
    flex-shrink: 0;
    width: 350px;
    height: 450px;
    border-radius: 4px;
    aspect-ratio: auto;
}
.gallery-marquee .gallery-item img {
    border-radius: 4px;
}
/* ==========================================
   UTILITY PAGES (404, 50x)
   ========================================== */
.error-page {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 2rem;
    background: var(--gradient-dark);
}
.error-page__code {
    font-family: var(--font-display);
    font-size: clamp(6rem, 15vw, 12rem);
    font-weight: 700;
    color: rgba(151, 11, 51, 0.2);
    line-height: 1;
    margin-bottom: 1rem;
}
.error-page__title {
    font-family: var(--font-display);
    font-size: clamp(1.5rem, 3vw, 2.5rem);
    font-weight: 400;
    color: var(--text-primary);
    margin-bottom: 1rem;
}
.error-page__message {
    font-family: var(--font-subheading);
    font-size: 1.1rem;
    font-style: italic;
    color: var(--text-secondary);
    max-width: 500px;
    margin: 0 auto 2rem;
    line-height: 1.7;
}
/* ==========================================
   SOCIAL SECTION
   ========================================== */
.social-section {
    background: var(--dark-wood);
    padding: 80px 0;
    position: relative;
    overflow: hidden;
}
.social-section::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 1px;
    background: var(--burnished-gold);
}
.social-content {
    text-align: center;
}
.social-hashtag {
    font-family: var(--font-display);
    font-size: clamp(2rem, 5vw, 3.5rem);
    font-style: italic;
    letter-spacing: 2px;
    background: var(--gradient-gold);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    margin-bottom: 0.5rem;
}
.social-cta {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 1.1rem;
    color: var(--text-secondary);
    margin-bottom: 2rem;
}
.social-links {
    display: flex;
    justify-content: center;
    gap: 1.5rem;
}
.social-link {
    color: var(--text-primary);
    transition: all var(--transition-fast);
    padding: 1rem;
    border-radius: 50%;
    background: rgba(151, 11, 51, 0.08);
    border: 1px solid rgba(151, 11, 51, 0.2);
}
.social-link:hover {
    color: var(--burnished-gold);
    transform: translateY(-4px);
    background: rgba(151, 11, 51, 0.15);
    border-color: var(--crimson);
    box-shadow: 0 8px 24px rgba(151, 11, 51, 0.2);
}
/* ==========================================
   CONTACT PAGE
   ========================================== */
.contact-hero {
    padding: 120px 0 60px;
    background: var(--dark-wood);
    text-align: center;
}
.contact-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 3rem;
}
.contact-location-card {
    /* Cream paper card (owner bright palette) — children already use the
       dark walnut/crimson text tokens */
    background: var(--cream-bright, #FBF5E9);
    border: 1px solid rgba(96, 57, 19, 0.18);
    border-radius: 4px;
    overflow: hidden;
    transition: all var(--transition-medium);
}
.contact-location-card:hover {
    border-color: rgba(151, 11, 51, 0.3);
    box-shadow: 0 20px 60px rgba(75, 45, 16, 0.22), 0 0 0 1px rgba(151, 11, 51, 0.15);
}
.contact-location-card__map {
    position: relative;
    height: 250px;
}
.contact-location-card__map iframe {
    width: 100%;
    height: 100%;
    display: block;
    filter: grayscale(30%) sepia(12%) contrast(96%);
    border: none;
}
.contact-location-card__info {
    padding: 2rem;
}
.contact-location-card__name {
    font-family: var(--font-display);
    font-size: 1.3rem;
    font-weight: 400;
    color: var(--text-primary);
    margin-bottom: 1rem;
}
.contact-location-card__detail {
    margin-bottom: 0.75rem;
}
.contact-location-card__detail-label {
    font-family: var(--font-ui);
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--crimson);
    margin-bottom: 0.25rem;
}
.contact-location-card__detail p {
    font-size: 0.9rem;
    color: var(--text-secondary);
    line-height: 1.5;
}
.contact-location-card__detail a {
    color: var(--crimson);
    transition: color var(--transition-fast);
}
.contact-location-card__detail a:hover {
    color: var(--chianti-dark);
}
/* Hours grid inside contact card */
.hours-grid {
    margin-top: 0.5rem;
}
.hours-row {
    display: flex;
    justify-content: space-between;
    padding: 0.35rem 0;
    border-bottom: 1px solid rgba(96, 57, 19, 0.12);
}
.hours-row:last-child {
    border-bottom: none;
}
.hours-row .day {
    color: var(--text-secondary);
    font-size: 0.9rem;
}
.hours-row .time {
    color: var(--chianti-dark);
    font-family: var(--font-ui);
    font-size: 0.85rem;
    font-weight: 500;
}
/* ==========================================
   RESERVATIONS PAGE
   ========================================== */
.reservations-hero {
    padding: 120px 0 60px;
    background: var(--dark-wood);
    text-align: center;
}
.reservations-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 2rem;
}
.reservation-card {
    background: rgba(26, 20, 16, 0.95);
    border: 1px solid rgba(196, 149, 106, 0.2);
    border-radius: 4px;
    padding: 3rem 2.5rem;
    text-align: center;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.3);
    position: relative;
    overflow: hidden;
    transition: all var(--transition-medium);
}
.reservation-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: var(--gradient-crimson);
}
.reservation-card:hover {
    border-color: rgba(151, 11, 51, 0.3);
    transform: translateY(-4px);
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(151, 11, 51, 0.15);
}
.reservation-card__heading {
    font-family: var(--font-display);
    font-size: clamp(1.3rem, 2.5vw, 1.8rem);
    color: var(--burnished-gold);
    margin-bottom: 0.75rem;
}
.reservation-card__address {
    font-size: 0.9rem;
    color: var(--text-secondary);
    margin-bottom: 0.5rem;
}
.reservation-card__phone {
    margin-bottom: 1.5rem;
}
.reservation-card__phone a {
    color: var(--text-secondary);
    font-size: 0.9rem;
    transition: color var(--transition-fast);
}
.reservation-card__phone a:hover {
    color: var(--burnished-gold);
}
.reservation-card .btn {
    margin-top: 0.5rem;
}
/* Reserve CTA attention pulse */
.reserve-cta {
    position: relative;
    box-shadow: 0 6px 24px rgba(151, 11, 51, 0.2);
}
@media (prefers-reduced-motion: no-preference) {
    .reservation-card .reserve-cta {
        animation: reservePulse 2.8s ease-in-out infinite;
    }
}
@keyframes reservePulse {
    0%, 100% { box-shadow: 0 6px 24px rgba(151, 11, 51, 0.2); }
    50% { box-shadow: 0 8px 32px rgba(151, 11, 51, 0.5); }
}
/* Reservation fallback */
.reservation-fallback {
    margin-top: 1.25rem;
    text-align: center;
    font-size: 0.9rem;
    color: var(--text-secondary);
}
.reservation-fallback a {
    color: var(--crimson);
    font-weight: 600;
    transition: color var(--transition-fast);
}
.reservation-fallback a:hover {
    color: var(--burnished-gold);
}
/* ==========================================
   FAQ SECTION
   ========================================== */
.faq-section {
    background: var(--dark-wood);
}
.faq-list {
    max-width: 800px;
    margin: 0 auto;
}
.faq-item {
    border-bottom: 1px solid rgba(151, 11, 51, 0.15);
}
.faq-item:last-child {
    border-bottom: none;
}
.faq-question {
    display: block;
    width: 100%;
    padding: 1.5rem 2.5rem 1.5rem 0;
    font-family: var(--font-display);
    font-size: 1.1rem;
    color: var(--text-primary);
    cursor: pointer;
    position: relative;
    list-style: none;
}
.faq-question::-webkit-details-marker {
    display: none;
}
.faq-question::after {
    content: '+';
    position: absolute;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    font-family: var(--font-ui);
    font-size: 1.3rem;
    font-weight: 300;
    color: var(--crimson);
    transition: transform var(--transition-fast);
}
details[open] .faq-question::after {
    content: '\2212';
}
.faq-question:hover {
    color: var(--crimson);
}
.faq-answer {
    padding: 0 0 1.5rem;
}
.faq-answer p {
    font-size: 1rem;
    line-height: 1.8;
    color: var(--text-secondary);
}
.faq-answer a {
    color: var(--crimson);
}
.faq-answer a:hover {
    color: var(--burnished-gold);
}
/* ==========================================
   LOCATION DESTINATION PAGE (Phase 2 scaffold)
   ========================================== */
.loc-hero {
    position: relative;
    min-height: 480px;
    display: flex;
    align-items: center;
    padding: 6rem 0 4rem;
    overflow: hidden;
}
.loc-hero .section-bg { position: absolute; inset: 0; z-index: 0; }
.loc-hero .section-bg img { width: 100%; height: 100%; object-fit: cover; }
.loc-hero .section-bg::after {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(26, 20, 16, 0.7);
}
.loc-hero__content {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    max-width: 720px;
}
.loc-hero__title {
    font-family: var(--font-display);
    font-size: clamp(2.5rem, 9vw, 5.5rem);
    line-height: 1;
    color: var(--warm-cream);
    margin: 0;
    letter-spacing: -0.02em;
}
.loc-hero__tagline {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: clamp(1rem, 2.5vw, 1.25rem);
    color: var(--text-primary);
    line-height: 1.55;
    margin: 0;
    max-width: 540px;
}
.loc-hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 0.75rem;
}
.loc-glance {
    background: var(--dark-wood);
    border-bottom: 1px solid rgba(196, 149, 106, 0.15);
}
.loc-glance__inner {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
    padding: 1.5rem 1rem;
    max-width: var(--container-width);
    margin: 0 auto;
}
.loc-glance__block { display: flex; flex-direction: column; gap: 0.25rem; }
.loc-glance__label {
    font-family: var(--font-ui);
    font-size: 0.72rem;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--burnished-gold);
    font-weight: 700;
}
.loc-glance__value {
    font-size: 0.95rem;
    color: var(--text-primary);
    font-style: normal;
    line-height: 1.45;
}
.loc-glance__value[href] { transition: color var(--transition-fast); }
.loc-glance__value[href]:hover { color: var(--burnished-gold); }
.loc-story p { margin: 0 0 1rem; line-height: 1.7; font-size: 1.05rem; }
.loc-story--placeholder {
    padding: 1.25rem;
    border: 1px dashed rgba(151, 11, 51, 0.5);
    border-radius: 4px;
    background: rgba(151, 11, 51, 0.05);
}
.loc-gallery {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 4px;
    margin-top: 1.5rem;
}
.loc-gallery__item {
    margin: 0;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    background: var(--dark-wood);
}
.loc-gallery__item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.6s var(--ease-out-expo);
}
.loc-gallery__item:hover img { transform: scale(1.06); }
.loc-gallery__note {
    margin-top: 1rem;
    font-size: 0.85rem;
    color: var(--text-muted);
    text-align: center;
}
.loc-gallery__note code {
    font-family: ui-monospace, SFMono-Regular, monospace;
    background: rgba(245, 235, 220, 0.05);
    padding: 0.1rem 0.4rem;
    border-radius: 2px;
    color: var(--burnished-gold);
}
.loc-events { text-align: center; }
.loc-events p {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 1.1rem;
    line-height: 1.6;
    margin: 1rem 0 1.5rem;
    color: var(--text-primary);
}
/* Rating proof line in the location hero (renders only when review data exists) */
.loc-hero__proof {
    font-family: var(--font-ui);
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    color: var(--gold-on-dark, #D9B486);
    text-shadow: 0 1px 8px rgba(26, 14, 6, 0.75);
    margin: 0.6rem 0 0;
}
.loc-map { margin-top: 1.5rem; }
.loc-map__embed {
    display: block;
    width: 100%;
    border: 1px solid rgba(96, 57, 19, 0.2);
    border-radius: 4px;
}
.loc-map__caption {
    margin-top: 0.75rem;
    font-family: var(--font-body);
    font-size: 0.9rem;
    color: var(--text-secondary);
}
.loc-map__caption a { color: var(--crimson); }
.loc-map__caption a:hover { color: var(--chianti-dark); }
.loc-map__link {
    display: block;
    background: rgba(26, 20, 16, 0.6);
    border: 1px solid rgba(196, 149, 106, 0.2);
    border-radius: 4px;
    padding: 2rem 1.5rem;
    transition: all var(--transition-medium);
    text-align: center;
}
.loc-map__link:hover {
    border-color: var(--burnished-gold);
    background: rgba(26, 20, 16, 0.8);
}
.loc-map__preview {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.35rem;
    color: var(--text-primary);
}
.loc-map__preview svg { color: var(--burnished-gold); }
.loc-map__preview strong {
    font-family: var(--font-display);
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--warm-cream);
    margin-top: 0.25rem;
    letter-spacing: -0.01em;
}
.loc-map__preview span { color: var(--text-secondary); font-size: 0.95rem; }
.loc-map__cta {
    color: var(--burnished-gold);
    margin-top: 0.5rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    font-size: 0.8rem;
}
@media (min-width: 640px) {
    .loc-hero { min-height: 560px; padding: 8rem 0 5rem; }
    .loc-glance__inner {
        grid-template-columns: repeat(2, 1fr);
        gap: 1.5rem;
        padding: 1.5rem;
    }
    .loc-gallery { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 960px) {
    .loc-hero { min-height: 640px; padding: 10rem 0 6rem; }
    .loc-glance__inner {
        grid-template-columns: auto 1fr auto auto;
        align-items: center;
        gap: 2rem;
        padding: 1.75rem 2rem;
    }
    .loc-gallery { grid-template-columns: repeat(3, 1fr); gap: 6px; }
}
/* ==========================================
   MARQII CONTAINER — cream paper panel (owner bright palette)
   ========================================== */
.marqii-container {
    background: var(--cream-bright, #FBF5E9);
    border: 1px solid rgba(96, 57, 19, 0.18);
    padding: 2rem;
    border-radius: 4px;
    min-height: 400px;
}
.marqii-container [data-marqii],
.marqii-container iframe {
    background: transparent !important;
    border: none !important;
    max-width: 100%;
}
/* The widget renders inline DOM with generated class names and gray text
   tuned for a white page — force everything readable on the cream panel. */
.marqii-container [data-marqii],
.marqii-container [data-marqii] * {
    color: var(--walnut, #4A3728) !important;
}
/* The widget draws its section rules in its own pink-red; the site has one red. */
.marqii-container [class*="section__header"] {
    border-color: var(--crimson, #970B33) !important;
}
/* If the widget renders inline DOM (not iframe), keep it on-palette */
.marqii-container .marqii-menu,
.marqii-container .marqii-section,
.marqii-container .marqii-item {
    background: transparent !important;
    color: var(--walnut) !important;
}
.marqii-container .marqii-menu-title,
.marqii-container .marqii-section-title {
    font-family: var(--font-display) !important;
    color: var(--chianti-dark) !important;
}
.marqii-container .marqii-item-name {
    font-family: var(--font-display) !important;
    color: var(--walnut-dark, #3a2918) !important;
}
.marqii-container .marqii-item-description {
    font-family: var(--font-body) !important;
    color: var(--text-secondary) !important;
}
.marqii-container .marqii-item-price {
    font-family: var(--font-display) !important;
    color: var(--crimson-dark, #970B33) !important;
}
/* Menu section page using Marqii */
.menu-page-header {
    text-align: center;
    padding: 120px 0 40px;
    background: var(--dark-wood);
}
.menu-page-header .section-title {
    font-size: clamp(2.5rem, 5vw, 3.5rem);
}
.menu-tabs {
    display: flex;
    justify-content: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-top: 2rem;
}
.menu-tab {
    padding: 0.75rem 1.5rem;
    font-family: var(--font-ui);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 2px;
    text-transform: uppercase;
    background: transparent;
    color: var(--text-secondary);
    border: 1px solid rgba(96, 57, 19, 0.25);
    border-radius: 2px;
    cursor: pointer;
    transition: all var(--transition-fast);
}
.menu-tab:hover,
.menu-tab.active {
    background: rgba(151, 11, 51, 0.08);
    color: var(--crimson);
    border-color: var(--crimson);
}
/* ==========================================
   MENU SEARCH — instant dish search on /menus
   ========================================== */
.menu-search {
    margin-top: 1.5rem;
}
.menu-search__input {
    width: 100%;
    padding: 0.9rem 1.1rem;
    background: #FFFDF7;
    border: 1px solid rgba(96, 57, 19, 0.3);
    border-radius: 6px;
    color: var(--walnut, #4A3728);
    font-family: var(--font-body);
    font-size: 1.05rem;
}
.menu-search__input:focus {
    outline: 2px solid var(--crimson, #970B33);
    outline-offset: 1px;
    border-color: var(--crimson, #970B33);
}
.menu-search__count {
    margin: 0.75rem 0 0;
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 0.95rem;
    color: var(--text-secondary);
    min-height: 1.4em;
}
.menu-search__results {
    list-style: none;
    margin: 0.75rem 0 0;
    padding: 0;
}
.menu-search__hit {
    background: var(--cream-bright, #FBF5E9);
    border: 1px solid rgba(96, 57, 19, 0.16);
    border-radius: 6px;
    padding: 0.85rem 1.1rem;
    margin-bottom: 0.6rem;
}
.menu-search__where {
    margin: 0.35rem 0 0;
    font-family: var(--font-ui);
    font-size: 0.75rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--text-muted);
}
.menu-search__where a {
    color: var(--crimson, #970B33);
    text-decoration: none;
}
.menu-search__where a:hover {
    color: var(--chianti-dark, #970B33);
    text-decoration: underline;
}
/* ==========================================
   STATIC MENU — baked from Marqii at build time (SEO)
   Hidden automatically once the live widget mounts.
   ========================================== */
.static-menu {
    margin-top: 2rem;
}
.static-menu__menu {
    background: var(--cream-bright, #FBF5E9);
    border: 1px solid rgba(96, 57, 19, 0.18);
    border-radius: 4px;
    margin-bottom: 1rem;
    padding: 0;
}
.static-menu__title {
    font-family: var(--font-display);
    font-size: clamp(1.4rem, 2.5vw, 1.8rem);
    color: var(--chianti-dark, #970B33);
    padding: 1.1rem 1.5rem;
    cursor: pointer;
    list-style-position: inside;
}
.static-menu__title::marker { color: var(--crimson); }
.static-menu__menu[open] .static-menu__title {
    border-bottom: 1px solid rgba(96, 57, 19, 0.15);
}
.static-menu__section {
    padding: 1.25rem 1.5rem 0.5rem;
}
.static-menu__section-name {
    font-family: var(--font-ui);
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--crimson, #970B33);
    margin: 0 0 0.9rem;
}
.static-menu__items {
    list-style: none;
    margin: 0;
    padding: 0;
}
.static-menu__item {
    padding: 0.45rem 0;
}
.static-menu__item-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 1rem;
}
.static-menu__item-name {
    font-family: var(--font-display);
    font-size: 1.02rem;
    color: var(--text-primary);
}
.static-menu__item-price {
    font-family: var(--font-numeric, var(--font-display));
    color: var(--crimson-dark, #970B33);
    font-weight: 600;
    white-space: nowrap;
}
.static-menu__item-desc {
    font-family: var(--font-body);
    font-size: 0.9rem;
    line-height: 1.55;
    color: var(--text-secondary);
    margin: 0.15rem 0 0;
    max-width: 62ch;
}
/* ==========================================
   PRIVATE EVENTS — landing page (pe- namespace)
   Redesigned 2026-04-21. Separate from /private-events/<loc>.html pages.
   ========================================== */
/* ----- HERO ----- */
.pe-hero {
    position: relative;
    min-height: min(84vh, 820px);
    display: flex;
    align-items: flex-end;
    padding: 7rem 0 3.5rem;
    overflow: hidden;
    isolation: isolate;
    color: var(--cream);
}
.pe-hero__bg {
    position: absolute;
    inset: 0;
    z-index: -2;
}
.pe-hero__bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: saturate(0.95) contrast(1.02);
}
.pe-hero__scrim {
    position: absolute;
    inset: 0;
    z-index: -1;
    background:
        rgba(26, 14, 6, 0.62);
}
.pe-hero__inner {
    max-width: 920px;
    position: relative;
    z-index: 1;
}
.pe-hero__eyebrow {
    display: inline-block;
    font-family: var(--font-ui);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.32em;
    text-transform: uppercase;
    color: var(--gold-on-dark);
    padding-bottom: 0.55rem;
    border-bottom: 1px solid rgba(217, 180, 134, 0.5);
    margin-bottom: 1.75rem;
}
.pe-hero__title {
    font-family: var(--font-display);
    font-size: clamp(2.75rem, 9vw, 6rem);
    font-weight: 400;
    line-height: 0.98;
    letter-spacing: -0.02em;
    margin: 0 0 1.25rem;
    color: var(--cream);
    text-shadow: 0 2px 28px rgba(26, 14, 6, 0.7);
}
.pe-hero__lede {
    font-family: var(--font-subheading);
    font-size: clamp(1.05rem, 1.8vw, 1.3rem);
    font-style: italic;
    line-height: 1.55;
    max-width: 680px;
    color: rgba(245, 235, 220, 0.94);
    margin: 0 0 2rem;
    text-shadow: 0 1px 10px rgba(26, 14, 6, 0.6);
}
.pe-hero__lede strong {
    font-style: normal;
    font-family: var(--font-numeric);
    color: var(--gold-on-dark);
    font-weight: 700;
    font-feature-settings: "ss01" on;
}
.pe-hero__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 2.25rem;
}
.pe-hero__chip {
    display: inline-flex;
    align-items: baseline;
    gap: 0.4rem;
    padding: 0.5rem 0.9rem;
    border: 1px solid rgba(217, 180, 134, 0.45);
    border-radius: 99px;
    background: rgba(26, 14, 6, 0.35);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    font-family: var(--font-ui);
    font-size: 0.78rem;
    letter-spacing: 0.08em;
    color: rgba(245, 235, 220, 0.9);
}
.pe-hero__chip strong {
    font-family: var(--font-numeric);
    color: var(--gold-on-dark);
    font-weight: 700;
    letter-spacing: 0;
}
.pe-hero__ctas {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    flex-wrap: wrap;
}
.pe-hero__cta { min-width: 220px; }
.pe-hero__tel {
    display: inline-flex;
    flex-direction: column;
    gap: 0.1rem;
    padding-left: 1.25rem;
    border-left: 1px solid rgba(217, 180, 134, 0.45);
    color: var(--cream);
    line-height: 1.1;
    transition: color var(--transition-fast);
}
.pe-hero__tel-label {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 0.85rem;
    color: rgba(245, 235, 220, 0.82);
}
.pe-hero__tel strong {
    font-family: var(--font-numeric);
    font-size: 1.3rem;
    letter-spacing: 0.02em;
    color: var(--gold-on-dark);
    font-feature-settings: "ss01" on;
}
.pe-hero__tel:hover strong { color: var(--cream); }
@media (max-width: 768px) {
    .pe-hero { padding-top: 6rem; min-height: 72vh; }
    .pe-hero__ctas { flex-direction: column; align-items: stretch; gap: 1rem; }
    .pe-hero__tel { padding-left: 0; border-left: none; border-top: 1px solid rgba(217, 180, 134, 0.3); padding-top: 1rem; }
}
/* ----- INTRO ----- */
.pe-intro .container-narrow { max-width: 780px; }
.pe-intro__copy {
    font-family: var(--font-body);
    font-size: clamp(1.05rem, 1.5vw, 1.2rem);
    line-height: 1.75;
    color: var(--walnut);
    margin: 0;
}
.pe-intro__copy em {
    font-family: var(--font-subheading);
    font-style: italic;
    color: var(--crimson);
}
/* ----- VENUES (alternating left/right rhythm) ----- */
.pe-venues { background: var(--cream); }
.pe-venues__header {
    max-width: 720px;
    margin: 0 auto 3.5rem;
    text-align: center;
}
.pe-venues__header .section-label { display: inline-block; }
.pe-venues__header .section-title { margin-top: 0.75rem; }
.pe-venues__lede {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 1.1rem;
    color: var(--walnut);
    max-width: 560px;
    margin: 1rem auto 0;
    line-height: 1.6;
}
.pe-venue-list {
    display: flex;
    flex-direction: column;
    gap: clamp(3.5rem, 7vw, 6rem);
}
.pe-venue {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2rem;
    align-items: center;
}
.pe-venue__media {
    position: relative;
    overflow: hidden;
    border-radius: 6px;
    aspect-ratio: 4 / 3;
    box-shadow: 0 18px 40px -20px rgba(96, 57, 19, 0.4);
    isolation: isolate;
}
.pe-venue__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 1s var(--ease-out-expo);
}
.pe-venue:hover .pe-venue__media img { transform: scale(1.04); }
.pe-venue__media::after {
    content: '';
    position: absolute;
    inset: 0;
    background: none;
    pointer-events: none;
}
.pe-venue__tag {
    position: absolute;
    top: 1rem;
    left: 1rem;
    z-index: 1;
    padding: 0.35rem 0.75rem;
    background: var(--crimson);
    color: var(--cream);
    font-family: var(--font-ui);
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    border-radius: 99px;
    box-shadow: 0 4px 14px -4px rgba(151, 11, 51, 0.5);
}
.pe-venue__body { padding: 0 0.5rem; }
.pe-venue__city {
    display: inline-block;
    font-family: var(--font-ui);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.28em;
    text-transform: uppercase;
    color: var(--crimson);
    margin-bottom: 0.6rem;
}
.pe-venue__city::before {
    content: '';
    display: inline-block;
    width: 24px;
    height: 1px;
    background: var(--crimson);
    vertical-align: middle;
    margin-right: 0.6rem;
}
.pe-venue__name {
    font-family: var(--font-display);
    font-size: clamp(1.9rem, 4vw, 2.7rem);
    font-weight: 400;
    line-height: 1.02;
    letter-spacing: -0.015em;
    color: var(--chianti-dark);
    margin: 0 0 0.9rem;
}
.pe-venue__tagline {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 1.08rem;
    line-height: 1.55;
    color: var(--walnut);
    max-width: 520px;
    margin: 0 0 1.5rem;
}
.pe-venue__specs {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin: 0 0 1.75rem;
    padding: 1rem 1.15rem;
    background: var(--cream-bright);
    border-left: 3px solid var(--crimson);
    border-radius: 0 4px 4px 0;
}
.pe-venue__specs > div {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 1rem;
    padding: 0.35rem 0;
    border-bottom: 1px dashed rgba(96, 57, 19, 0.18);
}
.pe-venue__specs > div:last-child { border-bottom: none; }
.pe-venue__specs dt {
    font-family: var(--font-ui);
    font-size: 0.74rem;
    font-weight: 700;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--chianti-dark);
    margin: 0;
}
.pe-venue__specs dd {
    font-family: var(--font-body);
    font-size: 0.95rem;
    color: var(--walnut);
    margin: 0;
    text-align: right;
}
.pe-venue__specs dd strong {
    font-family: var(--font-numeric);
    color: var(--crimson);
    font-weight: 700;
    font-feature-settings: "ss01" on;
}
.pe-venue__actions {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    flex-wrap: wrap;
}
.pe-venue__link {
    font-family: var(--font-ui);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--crimson);
    transition: color var(--transition-fast);
}
.pe-venue__link:hover { color: var(--chianti-dark); }
@media (min-width: 840px) {
    .pe-venue {
        grid-template-columns: 1.15fr 1fr;
        gap: clamp(2rem, 5vw, 4.5rem);
    }
    .pe-venue--reverse { direction: rtl; }
    .pe-venue--reverse > * { direction: ltr; }
    .pe-venue__body { padding: 1rem 0; }
}
/* ----- INCLUDED ----- */
.pe-included { color: var(--cream); }
.pe-included__header {
    max-width: 720px;
    margin: 0 auto 3rem;
    text-align: center;
}
.pe-included__header .section-title,
.pe-included__header h2 { color: var(--cream) !important; }
.pe-included__lede {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 1.1rem;
    color: rgba(245, 235, 220, 0.9);
    margin: 1rem auto 0;
    max-width: 520px;
    line-height: 1.6;
}
.pe-feature-grid {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
}
@media (min-width: 640px) { .pe-feature-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 960px) { .pe-feature-grid { grid-template-columns: repeat(3, 1fr); gap: 1.25rem; } }
.pe-feature {
    padding: 1.6rem 1.5rem 1.75rem;
    background: rgba(245, 235, 220, 0.06);
    border: 1px solid rgba(217, 180, 134, 0.25);
    border-radius: 8px;
    transition: all var(--transition-fast);
}
.pe-feature:hover {
    background: rgba(245, 235, 220, 0.09);
    border-color: rgba(217, 180, 134, 0.55);
    transform: translateY(-2px);
}
.pe-feature__icon {
    color: var(--gold-on-dark);
    margin-bottom: 0.85rem;
}
.pe-feature__name {
    font-family: var(--font-display);
    font-size: 1.25rem;
    font-weight: 400;
    color: var(--cream);
    margin: 0 0 0.5rem;
    letter-spacing: -0.01em;
}
.pe-feature__copy {
    font-family: var(--font-body);
    font-size: 0.96rem;
    line-height: 1.6;
    color: rgba(245, 235, 220, 0.86);
    margin: 0;
}
/* ----- OCCASIONS (prose block) ----- */
.pe-occasions { background: var(--cream-soft); }
.pe-occasions .container-narrow { max-width: 820px; }
.pe-occasions__copy {
    font-family: var(--font-body);
    font-size: clamp(1.08rem, 1.6vw, 1.25rem);
    line-height: 1.85;
    color: var(--walnut);
    margin: 0;
}
.pe-occasions__copy strong {
    color: var(--chianti-dark);
    font-weight: 700;
    font-family: var(--font-display);
    font-size: 1.08em;
    font-style: normal;
}
/* ----- CONCIERGE (Julie) ----- */
.pe-concierge {
    background: var(--crimson) !important;
    color: var(--cream);
}
.pe-concierge__card {
    max-width: 720px;
    margin: 0 auto;
    padding: 2.5rem clamp(1.5rem, 4vw, 3.5rem);
    background: rgba(245, 235, 220, 0.06);
    border: 1px solid rgba(245, 235, 220, 0.2);
    border-radius: 10px;
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    box-shadow: 0 20px 60px -30px rgba(0, 0, 0, 0.6);
    position: relative;
}
.pe-concierge__card::before {
    content: '';
    position: absolute;
    top: 0; left: 2rem; right: 2rem;
    height: 2px;
    background: var(--gold-on-dark);
    border-radius: 2px;
}
.pe-concierge__eyebrow {
    display: block;
    font-family: var(--font-ui);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.28em;
    text-transform: uppercase;
    color: var(--gold-on-dark);
    margin-bottom: 0.85rem;
}
.pe-concierge__name {
    font-family: var(--font-display);
    font-size: clamp(2.2rem, 5vw, 3rem);
    font-weight: 400;
    color: var(--cream) !important;
    line-height: 1;
    letter-spacing: -0.015em;
    margin: 0 0 0.4rem;
}
.pe-concierge__role {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 1rem;
    color: rgba(245, 235, 220, 0.82);
    margin: 0 0 1.25rem;
}
.pe-concierge__pitch {
    font-family: var(--font-body);
    font-size: 1.02rem;
    line-height: 1.72;
    color: rgba(245, 235, 220, 0.92) !important;
    margin: 0 0 2rem;
}
.pe-concierge__contacts {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.75rem;
}
@media (min-width: 560px) { .pe-concierge__contacts { grid-template-columns: repeat(2, 1fr); gap: 1rem; } }
.pe-concierge__contact {
    display: flex;
    align-items: center;
    gap: 0.9rem;
    padding: 1rem 1.15rem;
    background: rgba(245, 235, 220, 0.08);
    border: 1px solid rgba(245, 235, 220, 0.25);
    border-radius: 8px;
    color: var(--cream);
    transition: all var(--transition-fast);
    min-height: 72px;
}
.pe-concierge__contact:hover {
    background: rgba(245, 235, 220, 0.16);
    border-color: var(--gold-on-dark);
    transform: translateY(-1px);
}
.pe-concierge__contact svg {
    flex-shrink: 0;
    color: var(--gold-on-dark);
}
.pe-concierge__contact span {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    line-height: 1.1;
}
.pe-concierge__contact small {
    font-family: var(--font-ui);
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: rgba(245, 235, 220, 0.78);
}
.pe-concierge__contact strong {
    font-family: var(--font-numeric);
    font-size: 1.02rem;
    font-weight: 700;
    color: var(--cream);
    font-feature-settings: "ss01" on;
    word-break: break-word;
}
/* ----- CTA / LOCATION PICKER ----- */
.pe-cta { background: var(--cream); text-align: center; }
.pe-cta .section-label {
    display: inline-block;
    text-align: left;
}
.pe-cta__lede {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 1.1rem;
    color: var(--walnut);
    max-width: 520px;
    margin: 1rem auto 2.5rem;
    line-height: 1.6;
}
.pe-cta__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 0.85rem;
    max-width: 960px;
    margin: 0 auto;
}
.pe-cta__pick {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    padding: 1.35rem 1.25rem;
    background: var(--cream-bright);
    border: 1px solid rgba(96, 57, 19, 0.22);
    border-radius: 8px;
    color: var(--walnut);
    text-align: left;
    transition: all var(--transition-fast);
    position: relative;
    overflow: hidden;
}
.pe-cta__pick::before {
    content: '';
    position: absolute;
    inset: 0;
    background: var(--gradient-crimson);
    opacity: 0;
    transition: opacity var(--transition-fast);
    z-index: 0;
}
.pe-cta__pick > * { position: relative; z-index: 1; transition: color var(--transition-fast); }
.pe-cta__pick:hover {
    border-color: var(--crimson);
    transform: translateY(-3px);
    box-shadow: 0 12px 28px -14px rgba(151, 11, 51, 0.45);
}
.pe-cta__pick:hover::before { opacity: 1; }
.pe-cta__pick:hover > * { color: var(--cream) !important; }
.pe-cta__pick:hover .pe-cta__pick-label { color: var(--gold-on-dark) !important; }
.pe-cta__pick-label {
    font-family: var(--font-ui);
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--crimson);
}
.pe-cta__pick-name {
    font-family: var(--font-display);
    font-size: 1.5rem;
    font-weight: 400;
    color: var(--chianti-dark);
    line-height: 1.1;
    letter-spacing: -0.01em;
}
.pe-cta__pick-cap {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 0.88rem;
    color: rgba(74, 55, 40, 0.72);
}
/* ==========================================
   Legacy per-location private-events pages still reference older hooks.
   Keep these for back-compat so the existing /private-events/<loc>.html
   pages render. The new .pe-* hooks above power the landing only.
   ========================================== */
.events-hero {
    position: relative;
    min-height: 50vh;
    display: flex;
    align-items: center;
    overflow: hidden;
    padding: 120px 0 60px;
}
.events-hero__bg {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    z-index: 0;
}
.events-hero__overlay {
    position: absolute;
    inset: 0;
    background: rgba(26, 14, 6, 0.75);
    z-index: 1;
}
.events-hero > .container {
    position: relative;
    z-index: 2;
}
/* ---- Custom event menus page (/private-events/menu-personalization) ----
   Sample menus are portrait print pieces with small type, so they sit whole
   on white paper cards (never cropped). The one landscape set spans two. */
.pem-note { text-align: center; max-width: 680px; margin: 2.2rem auto 0; }
.pem-grid {
    list-style: none; margin: 1.6rem 0 0; padding: 0;
    display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; align-items: start;
}
.pem-grid__item {
    margin: 0; padding: .5rem; background: #fff;
    border: 1px solid rgba(74, 55, 40, .14); border-radius: 4px;
    box-shadow: 0 12px 26px -20px rgba(74, 55, 40, .55);
}
.pem-grid__item--wide { grid-column: span 2; }
.pem-grid__item img { display: block; width: 100%; height: auto; }
@media (min-width: 640px) { .pem-grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1100px) { .pem-grid { grid-template-columns: repeat(5, 1fr); } }
/* Private-events funnel — hero + multi-step inquiry. Owner bright palette:
   cream base, mahogany/espresso dark moments, crimson accents (no black). */
.pef-hero { position: relative; min-height: 58vh; display: flex; align-items: flex-end; color: var(--cream, #F5EBDC); overflow: hidden; background: var(--mahogany-dark, #4B2D10); }
.pef-hero__bg { position: absolute; inset: 0; }
.pef-hero__bg :is(img, picture, source) { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.pef-hero__scrim {
  position: absolute; inset: 0;
  /* Same warm espresso + crimson scrim as the private-events overview hero */
  background:
    rgba(26, 14, 6, 0.62);
}
.pef-hero__inner { position: relative; padding-block: clamp(2rem, 6vw, 5rem); }
.pef-hero__eyebrow { letter-spacing: .2em; text-transform: uppercase; font-size: .8rem; color: var(--gold-on-dark, #D9B486); }
.pef-hero__title { font-family: var(--font-display, "Playfair Display", serif); font-size: clamp(2rem, 5vw, 3.4rem); line-height: 1.05; margin: .4em 0; }
.pef-hero__lede { max-width: 46ch; font-size: 1.05rem; line-height: 1.6; color: rgba(245, 235, 220, 0.94); }
.pef-hero__ctas { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; margin-top: 1.4rem; }
.pef-hero__tel { color: var(--cream, #F5EBDC); text-decoration: none; }
.pef-hero__tel-label { display: block; font-size: .72rem; opacity: .8; }
.pef-hero__brochure-row { margin: 1rem 0 0; }
.pef-hero__brochure { color: rgba(245, 235, 220, 0.92); font-size: .88rem; text-decoration: underline; text-underline-offset: 3px; }
.pef-hero__brochure:hover { color: var(--gold-on-dark, #D9B486); }
.pef { background: transparent; color: var(--walnut, #4A3728); }
.pef__lede { max-width: 54ch; color: var(--text-secondary); margin-bottom: 2rem; }
.pef-form { max-width: 640px; position: relative; }
.pef-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.pef-step { border: 0; padding: 0; margin: 0; display: none; min-inline-size: 0; }
.pef-step.is-active { display: block; animation: pef-fade .25s ease; }
@keyframes pef-fade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
.pef-step__title { font-family: var(--font-display, "Playfair Display", serif); font-size: 1.3rem; margin-bottom: 1rem; color: var(--chianti-dark, #970B33); }
.pef-field { display: block; margin-bottom: 1rem; font-size: .9rem; color: var(--walnut, #4A3728); }
.pef-field input, .pef-field select, .pef-field textarea {
  display: block; width: 100%; margin-top: .35rem; padding: .7rem .8rem;
  background: #FFFDF7; border: 1px solid rgba(96, 57, 19, 0.3); border-radius: 6px;
  color: var(--walnut, #4A3728); font: inherit;
}
.pef-field input:focus, .pef-field select:focus, .pef-field textarea:focus { outline: 2px solid var(--crimson, #970B33); outline-offset: 1px; border-color: var(--crimson, #970B33); }
.pef-field.is-invalid input, .pef-field.is-invalid select, .pef-field.is-invalid textarea { border-color: var(--crimson, #970B33); background: rgba(151, 11, 51, 0.05); }
.pef-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.pef-opt { color: var(--text-muted); font-size: .8em; }
.pef-radio { border: 0; padding: 0; margin: 0 0 1rem; display: flex; gap: 1.2rem; flex-wrap: wrap; }
.pef-radio legend { font-size: .9rem; margin-bottom: .4rem; }
.pef-radio input { accent-color: var(--crimson, #970B33); }
.pef-nav { display: flex; gap: .8rem; margin-top: 1.4rem; }
.pef-back { background: transparent; border: 1px solid rgba(96, 57, 19, 0.45); color: var(--walnut, #4A3728); border-radius: 6px; padding: .6rem 1.2rem; cursor: pointer; font: inherit; }
.pef-back:hover { border-color: var(--crimson, #970B33); color: var(--chianti-dark, #970B33); }
.pef-status { margin-top: 1rem; min-height: 1.2em; color: var(--text-secondary); }
.pef-status.is-error { color: var(--crimson-dark, #970B33); }
.pef-thanks { max-width: 54ch; }
.pef-thanks h3 { font-family: var(--font-display, "Playfair Display", serif); color: var(--chianti-dark, #970B33); font-size: 1.6rem; }
@media (max-width: 540px) { .pef-row { grid-template-columns: 1fr; } }
/* ---- v3 Lovable skin (matches the quote wizard: parchment field, sage
   primary, Market Deco headings, Palatino body). Midtown's lead form gets
   the same look as the three wizard venues. ---- */
.pef, .pef-hero {
  --qw-bg: hsl(36 33% 95%); --qw-card: hsl(36 33% 97%); --qw-ink: hsl(0 0% 17%);
  --qw-muted-ink: hsl(0 0% 30%); --qw-faint-ink: hsl(30 8% 36%);
  --qw-sage: hsl(140 15% 40%); --qw-sage-dark: hsl(140 15% 32%);
  --qw-sage-wash: hsl(140 15% 40% / .08); --qw-border: hsl(36 15% 82%);
  --qw-rust: hsl(16 45% 50%); --qw-radius: 2px;
  --qw-font-heading: "Market Deco", Georgia, serif;
  --qw-font-body: "Palatino Linotype", Palatino, "Book Antiqua", P052, Georgia, serif;
}
.pef-hero__eyebrow { letter-spacing: .3em; color: hsl(36 33% 90%); }
.pef-hero__title { font-family: var(--qw-font-heading); text-transform: uppercase; letter-spacing: .04em; font-weight: 500; }
section.pef { background: var(--qw-bg); color: var(--qw-ink); font-family: var(--qw-font-body); }
.pef .section-label { color: var(--qw-faint-ink); letter-spacing: .3em; }
.pef .section-title { font-family: var(--qw-font-heading); text-transform: uppercase; letter-spacing: .04em; font-weight: 500; color: var(--qw-ink); }
.pef__lede { color: var(--qw-muted-ink); }
.pef-step__title { font-family: var(--qw-font-heading); text-transform: uppercase; letter-spacing: .05em; font-weight: 500; color: var(--qw-ink); }
.pef-field { font-size: .72rem; letter-spacing: .2em; text-transform: uppercase; color: var(--qw-muted-ink); }
.pef-field input, .pef-field select, .pef-field textarea {
  background: var(--qw-card); border: 1px solid var(--qw-border); border-radius: var(--qw-radius);
  color: var(--qw-ink); font-family: var(--qw-font-body); font-size: .9rem;
  letter-spacing: normal; text-transform: none; margin-top: .5rem; padding: .8rem .9rem;
}
.pef-field input:hover, .pef-field select:hover, .pef-field textarea:hover { border-color: hsl(0 0% 17% / .5); }
.pef-field input:focus, .pef-field select:focus, .pef-field textarea:focus { outline: none; border-color: var(--qw-sage); box-shadow: 0 0 0 1px var(--qw-sage); }
.pef-field.is-invalid input, .pef-field.is-invalid select, .pef-field.is-invalid textarea { border-color: var(--qw-rust); background: hsl(16 45% 50% / .05); }
.pef-opt { text-transform: none; letter-spacing: normal; color: var(--qw-faint-ink); }
.pef-radio legend { font-size: .72rem; letter-spacing: .2em; text-transform: uppercase; color: var(--qw-muted-ink); }
.pef-radio label { font-size: .9rem; letter-spacing: normal; text-transform: none; }
.pef-radio input { accent-color: var(--qw-sage); }
.pef-nav { justify-content: center; }
.pef-back {
  border: 1px solid var(--qw-border); border-radius: var(--qw-radius); color: var(--qw-ink);
  font-family: var(--qw-font-body); font-size: .78rem; letter-spacing: .2em; text-transform: uppercase; padding: .85rem 1.9rem;
}
.pef-back:hover { border-color: var(--qw-ink); color: var(--qw-ink); }
.pef .btn-primary { background: var(--qw-sage); border: 1px solid var(--qw-sage); color: #fff; border-radius: var(--qw-radius); font-family: var(--qw-font-body); font-size: .78rem; letter-spacing: .2em; text-transform: uppercase; padding: .85rem 1.9rem; }
.pef .btn-primary:hover { background: var(--qw-sage-dark); border-color: var(--qw-sage-dark); }
.pef-status { color: var(--qw-muted-ink); }
.pef-status.is-error { color: hsl(16 60% 34%); }
.pef-thanks h3 { font-family: var(--qw-font-heading); text-transform: uppercase; letter-spacing: .04em; color: var(--qw-ink); }
/* Private-events instant-quote wizard — v3 Lovable replica.
   Tokens lifted verbatim from the client's app (:root hsl values, 2px radius):
   parchment field, charcoal ink, sage primary. Headings in Market Deco
   (client-supplied file, 2026-08-18), body in Palatino per Julie's spec.
   Scoped: site-wide fonts untouched. */
/* Single-weight deco titling face: the 100-900 range serves every requested
   weight from this one file so browsers never fake-bold the geometry. */
@font-face {
  font-family: "Market Deco";
  src: url("/assets/fonts/market-deco.ttf") format("truetype");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}
.qw-section {
  --qw-bg: hsl(36 33% 95%);
  --qw-card: hsl(36 33% 97%);
  --qw-ink: hsl(0 0% 17%);
  --qw-muted-ink: hsl(0 0% 30%);
  --qw-faint-ink: hsl(30 8% 36%);
  --qw-sage: hsl(140 15% 40%);
  --qw-sage-dark: hsl(140 15% 32%);
  --qw-sage-wash: hsl(140 15% 40% / .08);
  --qw-muted: hsl(36 20% 90%);
  --qw-border: hsl(36 15% 82%);
  --qw-rust: hsl(16 45% 50%);
  --qw-rust-dark: hsl(16 60% 34%);
  --qw-radius: 2px;
  --qw-font-heading: "Market Deco", Georgia, serif;
  --qw-font-body: "Palatino Linotype", Palatino, "Book Antiqua", P052, Georgia, serif;
  background: var(--qw-bg);
  color: var(--qw-ink);
  font-family: var(--qw-font-body);
}
.qw { max-width: 720px; margin: 0 auto; padding-bottom: 4.5rem; }
.qw-noscript { color: var(--qw-ink); }
/* ---- numbered progress rail ---- */
.qw-rail { display: flex; list-style: none; padding: 0; margin: 0 0 2.5rem; }
.qw-rail li { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; gap: .45rem; position: relative; text-align: center; }
.qw-rail li::before { content: ""; position: absolute; top: 14px; right: 50%; width: 100%; height: 1px; background: var(--qw-border); z-index: 0; }
.qw-rail li:first-child::before { display: none; }
.qw-rail-num {
  position: relative; z-index: 1; width: 28px; height: 28px; display: grid; place-items: center;
  border: 1px solid var(--qw-border); border-radius: 50%; background: var(--qw-bg);
  font-size: .72rem; color: var(--qw-muted-ink);
}
.qw-rail li.is-done .qw-rail-num { border-color: var(--qw-sage); color: var(--qw-sage); }
.qw-rail li.is-done::before, .qw-rail li.is-active::before { background: var(--qw-sage); }
.qw-rail li.is-active .qw-rail-num { background: var(--qw-sage); border-color: var(--qw-sage); color: #fff; }
.qw-rail-label { font-size: .58rem; letter-spacing: .18em; text-transform: uppercase; color: var(--qw-faint-ink); }
.qw-rail li.is-active .qw-rail-label { color: var(--qw-ink); }
/* ---- step header ---- */
.qw-head { text-align: center; margin-bottom: 2.2rem; }
.qw-eyebrow { font-size: .8rem; letter-spacing: .3em; text-transform: uppercase; color: var(--qw-faint-ink); margin: 0 0 .7rem; }
.qw-title { font-family: var(--qw-font-heading); font-weight: 500; text-transform: uppercase; letter-spacing: .04em; font-size: clamp(1.7rem, 4vw, 2.4rem); color: var(--qw-ink); margin: 0; }
.qw-sub { margin: .8rem 0 0; font-size: .9rem; color: var(--qw-muted-ink); }
/* ---- fields ---- */
.qw-field { display: block; margin-bottom: 1.4rem; font-size: .72rem; letter-spacing: .2em; text-transform: uppercase; color: var(--qw-muted-ink); }
.qw-field-label { display: block; font-size: .72rem; letter-spacing: .2em; text-transform: uppercase; color: var(--qw-muted-ink); margin-bottom: .6rem; }
.qw-normalcase { text-transform: none; letter-spacing: normal; }
.qw-req { color: var(--qw-rust-dark); }
.qw-field input, .qw-field select, .qw-field textarea {
  display: block; width: 100%; margin-top: .5rem; padding: .8rem .9rem;
  background: var(--qw-card); border: 1px solid var(--qw-border); border-radius: var(--qw-radius);
  color: var(--qw-ink); font-family: var(--qw-font-body); font-size: .9rem;
  letter-spacing: normal; text-transform: none; transition: border-color .2s;
}
.qw-field input:hover, .qw-field select:hover, .qw-field textarea:hover { border-color: hsl(0 0% 17% / .5); }
.qw-field input:focus, .qw-field select:focus, .qw-field textarea:focus { outline: none; border-color: var(--qw-sage); box-shadow: 0 0 0 1px var(--qw-sage); }
.qw-field small { display: block; font-size: .74rem; letter-spacing: normal; text-transform: none; color: var(--qw-faint-ink); margin-top: .4rem; }
.qw-opt { text-transform: none; letter-spacing: normal; color: var(--qw-faint-ink); }
.qw-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.qw-check { display: flex; align-items: flex-start; gap: .6rem; margin: .7rem 0; font-size: .9rem; color: var(--qw-ink); cursor: pointer; }
.qw-check input { accent-color: var(--qw-sage); margin-top: .2rem; }
.qw-privacy { margin: 1.6rem 0 0; text-align: center; font-size: .74rem; font-style: italic; color: var(--qw-faint-ink); }
/* ---- guest stepper ---- */
.qw-stepper { display: flex; align-items: center; gap: 1rem; margin-top: .5rem; }
.qw-step-minus, .qw-step-plus {
  width: 42px; height: 42px; display: grid; place-items: center; cursor: pointer;
  background: var(--qw-card); border: 1px solid var(--qw-border); border-radius: var(--qw-radius);
  color: var(--qw-ink); font-size: 1.1rem; font-family: var(--qw-font-body); transition: border-color .2s;
}
.qw-step-minus:hover, .qw-step-plus:hover { border-color: var(--qw-sage); }
.qw-step-minus:disabled { opacity: .4; cursor: default; }
.qw-guests-num {
  width: 4.5ch; text-align: center; border: 0; background: transparent; color: var(--qw-ink);
  font-family: var(--qw-font-heading); font-size: 2rem; -moz-appearance: textfield; appearance: textfield;
}
.qw-guests-num::-webkit-outer-spin-button, .qw-guests-num::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.qw-guests-num:focus { outline: 1px solid var(--qw-sage); outline-offset: 2px; }
/* ---- notes & hints ---- */
.qw-hint { font-size: .72rem; letter-spacing: .2em; text-transform: uppercase; color: var(--qw-muted-ink); margin: 1.8rem 0 .7rem; }
.qw-note { background: var(--qw-sage-wash); border-left: 2px solid var(--qw-sage); padding: .7rem .9rem; font-size: .85rem; color: var(--qw-ink); border-radius: 0 var(--qw-radius) var(--qw-radius) 0; margin: .8rem 0; }
.qw-blocked { border-left-color: var(--qw-rust); background: hsl(16 45% 50% / .08); font-weight: 600; }
.qw-redirect { background: var(--qw-card); border-left-color: var(--qw-sage); }
.qw-redirect p { margin: 0 0 .7rem; }
.qw-redirect p:last-child { margin-bottom: 0; }
.qw-redirect .qw-resv { display: inline-block; }
.qw-hint-plain { font-size: .8rem; color: var(--qw-faint-ink); margin-top: .8rem; }
.qw-hint-plain a, .qw-note a { color: var(--qw-sage-dark); }
.qw-center { text-align: center; font-style: italic; }
.qw-media { background: var(--qw-sage-wash); border-left-color: var(--qw-sage); }
.qw-media .qw-check { margin: 0; }
.qw-status { min-height: 1.2em; margin-top: .9rem; color: var(--qw-rust-dark); font-size: .88rem; text-align: center; }
/* ---- option cards ---- */
.qw-options { display: grid; gap: .8rem; margin-bottom: 1.2rem; }
.qw-options--spaces { grid-template-columns: repeat(3, 1fr); align-items: stretch; }
.qw-option {
  display: flex; align-items: center; gap: .8rem; position: relative; padding: 1rem 1.1rem; cursor: pointer;
  background: var(--qw-card); border: 1px solid var(--qw-border); border-radius: var(--qw-radius);
  color: var(--qw-ink); transition: border-color .25s, background .25s, transform .25s;
}
.qw-option:hover { border-color: var(--qw-sage); transform: translateY(-2px); }
.qw-option.is-sel { border-color: var(--qw-sage); background: var(--qw-sage-wash); }
.qw-option input[type=radio] { position: absolute; opacity: 0; pointer-events: none; }
.qw-option:focus-within { outline: 2px solid var(--qw-sage); outline-offset: 2px; }
.qw-option span { display: flex; flex-direction: column; gap: .3rem; width: 100%; }
.qw-option strong { font-family: var(--qw-font-heading); font-weight: 500; text-transform: uppercase; letter-spacing: .05em; font-size: .95rem; }
.qw-option small { color: var(--qw-muted-ink); font-size: .8rem; }
.qw-option em { color: var(--qw-faint-ink); font-style: normal; font-size: .8rem; }
.qw-space-card { text-align: center; padding: 1.5rem 1rem; }
.qw-space-card span { align-items: center; }
.qw-pkg em { color: var(--qw-sage-dark); font-weight: 600; font-size: .85rem; }
.qw-divider { grid-column: 1 / -1; font-size: .68rem; letter-spacing: .25em; text-transform: uppercase; color: var(--qw-faint-ink); margin-top: .6rem; text-align: center; }
/* ---- menu courses ---- */
.qw-courses { margin-top: 1.4rem; }
.qw-course { border: 0; padding: 0; margin: 0 0 1.5rem; }
.qw-course legend { font-family: var(--qw-font-heading); text-transform: uppercase; letter-spacing: .06em; color: var(--qw-ink); font-size: 1rem; margin-bottom: .6rem; }
.qw-course legend small { color: var(--qw-faint-ink); font-family: var(--qw-font-body); text-transform: none; letter-spacing: normal; }
.qw-item { display: flex; gap: .7rem; padding: .6rem .7rem; border-radius: var(--qw-radius); cursor: pointer; color: var(--qw-ink); }
.qw-item input { accent-color: var(--qw-sage); }
.qw-item:hover { background: var(--qw-muted); }
.qw-item.is-sel { background: var(--qw-sage-wash); }
.qw-item small { display: block; color: var(--qw-muted-ink); font-size: .8em; }
.qw-supp { color: var(--qw-sage-dark); font-style: normal; font-size: .85em; }
.qw-eitheror { margin-bottom: 1rem; }
.qw-eitheror .qw-option { display: inline-flex; margin: 0 .6rem .4rem 0; }
/* ---- children card (menu step) ---- */
.qw-kids-card { background: var(--qw-card); border: 1px solid var(--qw-border); border-radius: var(--qw-radius); padding: 1.2rem 1.3rem; margin: 1.4rem 0; }
.qw-yesno { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; }
.qw-yesno button {
  padding: .8rem; cursor: pointer; background: var(--qw-bg); border: 1px solid var(--qw-border);
  border-radius: var(--qw-radius); color: var(--qw-ink); font-family: var(--qw-font-body); font-size: .9rem; transition: border-color .2s, background .2s;
}
.qw-yesno button:hover { border-color: var(--qw-sage); }
.qw-yesno button.is-sel { border-color: var(--qw-sage); background: var(--qw-sage-wash); }
.qw-kids-card .qw-field { margin: 1rem 0 0; }
/* ---- open-bar explainer ---- */
.qw-bar-explainer { margin: 1rem 0 1.4rem; padding: 1rem 1.1rem; background: var(--qw-card); border: 1px solid var(--qw-border); border-radius: var(--qw-radius); font-size: .9rem; color: var(--qw-ink); }
.qw-bar-explainer > p { margin: 0 0 .8rem; line-height: 1.55; }
.qw-bar-table { width: 100%; border-collapse: collapse; margin: 0 0 1rem; font-size: .88rem; }
.qw-bar-table th { text-align: left; font-size: .68rem; letter-spacing: .15em; text-transform: uppercase; color: var(--qw-muted-ink); border-bottom: 1px solid var(--qw-border); padding: .35rem .4rem; }
.qw-bar-table td { padding: .4rem; border-bottom: 1px solid var(--qw-muted); color: var(--qw-ink); }
.qw-bar-table td + td { font-weight: 600; color: var(--qw-sage-dark); }
.qw-bev-group { display: block; margin: .45rem 0; line-height: 1.5; }
.qw-bev-group strong { display: block; font-size: .68rem; letter-spacing: .15em; text-transform: uppercase; color: var(--qw-muted-ink); }
.qw-bev-group span { color: var(--qw-muted-ink); font-size: .86rem; }
/* ---- add-on rows ---- */
.qw-addons { display: grid; gap: .8rem; margin-bottom: 1.2rem; }
.qw-addon {
  display: flex; align-items: center; gap: .9rem; padding: 1.1rem 1.2rem; cursor: pointer;
  background: var(--qw-card); border: 1px solid var(--qw-border); border-radius: var(--qw-radius);
  color: var(--qw-ink); font-size: .92rem; transition: border-color .25s, background .25s;
}
.qw-addon:hover { border-color: var(--qw-sage); }
.qw-addon.is-sel { border-color: var(--qw-sage); background: var(--qw-sage-wash); }
.qw-addon input { accent-color: var(--qw-sage); }
.qw-addon-label { flex: 1; }
.qw-addon-price { color: var(--qw-faint-ink); font-size: .85rem; white-space: nowrap; }
.qw-addon-link {
  display: inline-block; margin: .5rem 0 0 1.2rem; font-size: .85rem;
  color: var(--qw-sage-dark); text-decoration: underline; text-underline-offset: 3px;
}
.qw-addon-link:hover, .qw-addon-link:focus-visible { color: var(--qw-ink); }
/* ---- expandable estimated total (above the FAQ) ---- */
.qw-esttotal { margin-top: 2.2rem; background: var(--qw-card); border: 1px solid var(--qw-border); border-radius: var(--qw-radius); }
.qw-esttotal summary { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 1rem 1.2rem; cursor: pointer; list-style: none; }
.qw-esttotal summary::-webkit-details-marker { display: none; }
.qw-esttotal summary span { font-size: .72rem; letter-spacing: .2em; text-transform: uppercase; color: var(--qw-muted-ink); }
.qw-esttotal summary strong { font-family: var(--qw-font-heading); font-size: 1.35rem; color: var(--qw-ink); }
.qw-esttotal summary::after { content: "\2304"; margin-left: .2rem; color: var(--qw-faint-ink); transition: transform .2s; line-height: 0; }
.qw-esttotal[open] summary::after { transform: rotate(180deg); }
.qw-esttotal summary:hover span { color: var(--qw-ink); }
.qw-est-lines { padding: .4rem 1.2rem 1.1rem; border-top: 1px solid var(--qw-muted); }
/* ---- FAQ (step 5, under the estimated total) ---- */
.qw-faq { margin-top: 2.6rem; border-top: 1px solid var(--qw-border); padding-top: 1.6rem; }
.qw-faq-head { font-size: .72rem; letter-spacing: .3em; text-transform: uppercase; color: var(--qw-muted-ink); margin: 0 0 .6rem; }
.qw-faq-item { border-bottom: 1px solid var(--qw-border); }
.qw-faq-item summary { display: flex; justify-content: space-between; align-items: center; gap: 1rem; cursor: pointer; padding: .9rem .1rem; font-size: .92rem; color: var(--qw-ink); list-style: none; }
.qw-faq-item summary::-webkit-details-marker { display: none; }
.qw-faq-item summary::after { content: "\2304"; color: var(--qw-faint-ink); transition: transform .2s; line-height: 0; flex-shrink: 0; }
.qw-faq-item[open] summary::after { transform: rotate(180deg); }
.qw-faq-item summary:hover { color: var(--qw-sage-dark); }
.qw-faq-body { padding: 0 .1rem 1rem; }
.qw-faq-body p { margin: 0; color: var(--qw-muted-ink); font-size: .88rem; line-height: 1.6; }
.qw-faq-body .qw-check { margin-top: .7rem; }
/* ---- nav buttons ---- */
.qw-nav { display: flex; justify-content: center; gap: 1rem; margin-top: 2.2rem; }
.qw-back, .qw-nav .btn-primary {
  font-family: var(--qw-font-body); font-size: .78rem; letter-spacing: .2em; text-transform: uppercase;
  padding: .85rem 1.9rem; border-radius: var(--qw-radius); cursor: pointer; transition: background .2s, border-color .2s, color .2s;
}
.qw-back { background: transparent; border: 1px solid var(--qw-border); color: var(--qw-ink); }
.qw-back:hover { border-color: var(--qw-ink); }
.qw-nav .btn-primary { background: var(--qw-sage); border: 1px solid var(--qw-sage); color: #fff; }
.qw-nav .btn-primary:hover { background: var(--qw-sage-dark); border-color: var(--qw-sage-dark); }
.qw-nav .btn-primary:disabled { opacity: .55; cursor: default; }
/* ---- proposal (step 6) ---- */
.qw-proposal { border: 1px solid var(--qw-border); border-radius: var(--qw-radius); padding: 1.5rem; background: hsl(36 20% 90% / .3); color: var(--qw-ink); }
.qw-quote-label { font-size: .72rem; letter-spacing: .2em; text-transform: uppercase; color: var(--qw-muted-ink); margin: 0 0 1rem; }
.qw-line { display: flex; justify-content: space-between; gap: 1rem; padding: .3rem 0; font-size: .9rem; }
.qw-line > span:last-child { font-weight: 600; text-align: right; }
.qw-line-note { font-size: .78rem; color: var(--qw-faint-ink); margin-top: -.2rem; padding-bottom: .3rem; }
.qw-rule { border-top: 1px solid var(--qw-border); margin: .7rem 0; }
.qw-total { font-size: 1.15rem; }
.qw-total span:last-child { color: var(--qw-ink); }
.qw-selections { font-size: .85rem; color: var(--qw-muted-ink); margin-top: 1rem; line-height: 1.5; }
.qw-proposal-note { text-align: center; font-style: italic; font-size: .88rem; color: var(--qw-ink); margin: 1.6rem 0; }
.qw-contact-card { border: 1px solid var(--qw-border); border-radius: var(--qw-radius); padding: 1.1rem 1.3rem; background: hsl(36 33% 97% / .4); margin-bottom: 1.6rem; }
.qw-contact-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: .6rem; }
.qw-contact-head .qw-field-label { margin: 0; }
.qw-edit-contact { background: none; border: 0; cursor: pointer; font-size: .7rem; letter-spacing: .2em; text-transform: uppercase; color: var(--qw-sage-dark); padding: .2rem; }
.qw-edit-contact:hover { text-decoration: underline; }
.qw-contact-card p { margin: .15rem 0; font-size: .9rem; color: var(--qw-muted-ink); }
/* ---- confirmation ---- */
.qw-thanks { text-align: center; padding: 2.5rem 1rem; color: var(--qw-ink); }
.qw-thanks h2 { font-family: var(--qw-font-heading); text-transform: uppercase; letter-spacing: .04em; font-weight: 500; color: var(--qw-ink); }
.qw-thanks a { color: var(--qw-sage-dark); }
.qw-conf-total { font-size: 1.1rem; }
.qw-conf-total strong { color: var(--qw-sage-dark); }
.qw-conf-email { background: var(--qw-sage-wash); border: 1px solid var(--qw-border); border-radius: var(--qw-radius); padding: .8rem 1rem; font-size: .95rem; }
.qw-conf-next { color: var(--qw-muted-ink); font-size: .92rem; }
.qw-photos { display: grid; grid-template-columns: repeat(3, 1fr); gap: .6rem; margin: 1.6rem 0; }
.qw-photos img, .qw-photos picture { width: 100%; height: 180px; object-fit: cover; border-radius: var(--qw-radius); display: block; }
.qw-photos picture img { height: 180px; }
.qw-conf-rating { font-size: .95rem; color: var(--qw-ink); }
.qw-conf-rating strong { color: var(--qw-sage-dark); font-size: 1.15rem; }
.qw-conf-review { margin: .8rem auto; max-width: 520px; background: var(--qw-card); border: 1px solid var(--qw-border); border-left: 2px solid var(--qw-sage); border-radius: var(--qw-radius); padding: .9rem 1.1rem; text-align: left; }
.qw-conf-review p { margin: 0 0 .4rem; font-size: .9rem; line-height: 1.55; color: var(--qw-ink); }
.qw-conf-review cite { font-style: normal; font-size: .78rem; letter-spacing: .06em; text-transform: uppercase; color: var(--qw-faint-ink); }
.qw-conf-brochure { color: var(--qw-sage-dark); font-weight: 600; }
/* ---- responsive ---- */
@media (max-width: 700px) {
  .qw-options--spaces { grid-template-columns: 1fr; }
  .qw-rail-label { display: none; }
  .qw-rail { margin-bottom: 1.8rem; }
}
@media (max-width: 560px) {
  .qw-row { grid-template-columns: 1fr; }
  .qw-photos { grid-template-columns: 1fr; }
  .qw-photos img { height: 200px; }
}
/* Happenings — individual ad-landing pages + index gallery. MOBILE-FIRST. */
/* ========== Individual happening page ========== */
.happening-hero {
    position: relative;
    min-height: 540px;
    display: flex;
    align-items: flex-end;
    overflow: hidden;
    padding: 4rem 0 3rem;
    isolation: isolate;
}
.happening-hero__bg {
    position: absolute;
    inset: 0;
    z-index: 0;
}
.happening-hero__bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    animation: happening-ken-burns 20s ease-in-out infinite alternate;
}
@keyframes happening-ken-burns {
    0%   { transform: scale(1.0) translate(0, 0); }
    100% { transform: scale(1.08) translate(-3%, -2%); }
}
.happening-hero__overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    background: rgba(26, 20, 16, 0.7);
}
.happening-hero__content {
    position: relative;
    z-index: 2;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
.happening-hero__label { color: var(--burnished-gold); }
.happening-hero__title {
    font-family: var(--font-display);
    font-size: clamp(2.5rem, 10vw, 5.5rem);
    line-height: 0.98;
    margin: 0;
    color: var(--warm-cream);
    letter-spacing: -0.02em;
}
.happening-hero__tagline {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: clamp(1.1rem, 2.5vw, 1.5rem);
    color: var(--text-primary);
    max-width: 520px;
    margin: 0;
    line-height: 1.5;
}
.happening-hero__status {
    display: none;
    align-items: center;
    gap: 0.5rem;
    padding: 0.35rem 0.85rem;
    background: rgba(74, 222, 128, 0.12);
    border: 1px solid rgba(74, 222, 128, 0.4);
    border-radius: 99px;
    font-family: var(--font-ui);
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: #bef264;
    align-self: flex-start;
    margin-top: 0.25rem;
}
.happening-hero.is-active .happening-hero__status { display: inline-flex; }
.happening-hero__status [data-happening-status-dot] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #4ade80;
    box-shadow: 0 0 8px rgba(74, 222, 128, 0.6);
    animation: sh-pulse 2s ease-in-out infinite;
}
.happening-hero__ctas {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1rem;
}
.happening-hero__cta { min-width: 180px; }
.happening-detail { padding: 2.5rem 0; }
.happening-detail__copy {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: clamp(1.1rem, 2.2vw, 1.4rem);
    line-height: 1.65;
    color: var(--text-primary);
    margin: 0;
    text-align: center;
}
.happening-loc-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
    margin-top: 2rem;
}
.happening-loc-card {
    /* Cream paper card (owner bright palette) */
    background: var(--cream-bright, #FBF5E9);
    border: 1px solid rgba(96, 57, 19, 0.22);
    border-radius: 6px;
    padding: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
}
.happening-loc-card--off {
    opacity: 0.55;
    border-style: dashed;
}
.happening-loc-card__header { display: flex; flex-direction: column; gap: 0.2rem; }
.happening-loc-card__name {
    font-family: var(--font-display);
    font-size: 1.4rem;
    margin: 0;
    color: var(--chianti-dark);
    line-height: 1.1;
}
.happening-loc-card__city {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 0.88rem;
    color: var(--text-muted);
    margin: 0;
}
.happening-loc-card__hours {
    font-family: var(--font-numeric);
    font-variation-settings: "opsz" 48, "SOFT" 40;
    font-weight: 800;
    font-size: 1.2rem;
    color: var(--burnished-gold);
}
.happening-loc-card__price {
    font-family: var(--font-numeric);
    font-variation-settings: "opsz" 24, "SOFT" 30;
    font-style: italic;
    color: var(--chianti);
    font-weight: 500;
    font-size: 0.95rem;
}
.happening-loc-card__highlights {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}
.happening-loc-card__highlights li {
    font-family: var(--font-body);
    font-size: 0.92rem;
    color: var(--text-secondary);
    padding-left: 1rem;
    position: relative;
}
.happening-loc-card__highlights li::before {
    content: '·';
    position: absolute;
    left: 0;
    color: var(--burnished-gold);
    font-weight: 700;
    font-size: 1.2em;
}
.happening-loc-card__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.85rem;
    margin-top: auto;
    padding-top: 0.75rem;
    border-top: 1px solid rgba(196, 149, 106, 0.12);
}
.happening-loc-card__unavailable {
    font-family: var(--font-subheading);
    font-style: italic;
    color: var(--text-muted);
    font-size: 0.92rem;
}
.happening-reserve { padding: 3rem 0; }
.happening-reserve__chips {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.6rem;
    max-width: 520px;
    margin: 1.5rem auto 0;
}
.happening-reserve__chip {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    padding: 0.9rem 1.1rem;
    background: rgba(245, 235, 220, 0.08);
    border: 1px solid rgba(245, 235, 220, 0.2);
    border-radius: 4px;
    transition: all var(--transition-fast);
    min-height: 56px;
    justify-content: center;
}
.happening-reserve__chip:hover {
    background: rgba(245, 235, 220, 0.15);
    border-color: var(--warm-cream);
    transform: translateY(-2px);
}
.happening-reserve__chip-name {
    font-family: var(--font-display);
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--warm-cream);
}
.happening-reserve__chip-city {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 0.8rem;
    color: rgba(245, 235, 220, 0.75);
}
.happening-more { padding: 3rem 0 4rem; background: var(--midnight); }
.happening-more-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
    margin-top: 1.5rem;
}
.happening-more-card {
    display: flex;
    flex-direction: column;
    background: rgba(26, 20, 16, 0.6);
    border: 1px solid rgba(196, 149, 106, 0.2);
    border-radius: 4px;
    overflow: hidden;
    transition: all var(--transition-medium);
}
.happening-more-card:hover {
    transform: translateY(-3px);
    border-color: var(--burnished-gold);
    box-shadow: 0 16px 32px -12px rgba(0, 0, 0, 0.6);
}
.happening-more-card__image { aspect-ratio: 4 / 3; overflow: hidden; }
.happening-more-card__image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s var(--ease-out-expo); }
.happening-more-card:hover .happening-more-card__image img { transform: scale(1.05); }
.happening-more-card__body { padding: 1rem 1.15rem 1.25rem; }
.happening-more-card__label {
    display: block;
    font-family: var(--font-ui);
    font-size: 0.7rem;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--burnished-gold);
    font-weight: 700;
    margin-bottom: 0.35rem;
}
.happening-more-card__name {
    font-family: var(--font-display);
    font-size: 1.25rem;
    color: var(--warm-cream);
    margin: 0;
    line-height: 1.15;
}
/* ========== Happenings index page ========== */
.happenings-gallery { padding: 2rem 0 4rem; }
.happenings-gallery__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.25rem;
    margin-top: 2rem;
}
.happening-tile {
    position: relative;
    display: block;
    overflow: hidden;
    border-radius: 4px;
    aspect-ratio: 3 / 4;
    isolation: isolate;
    transition: transform var(--transition-medium);
}
.happening-tile:hover { transform: translateY(-4px); }
.happening-tile__image {
    position: absolute;
    inset: 0;
}
.happening-tile__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 1s var(--ease-out-expo);
}
.happening-tile:hover .happening-tile__image img { transform: scale(1.08); }
.happening-tile__image::after {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(26, 20, 16, 0.6);
}
.happening-tile__body {
    position: absolute;
    inset: auto 0 0 0;
    z-index: 1;
    padding: 1.25rem;
    color: var(--warm-cream);
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}
.happening-tile__label {
    font-family: var(--font-ui);
    font-size: 0.72rem;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--burnished-gold);
    font-weight: 700;
}
.happening-tile__name {
    font-family: var(--font-display);
    font-size: clamp(1.5rem, 5vw, 2rem);
    margin: 0;
    line-height: 1.05;
    letter-spacing: -0.02em;
}
.happening-tile__tagline {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 0.95rem;
    color: rgba(245, 235, 220, 0.85);
    margin: 0;
    line-height: 1.4;
}
.happening-tile__cta {
    font-family: var(--font-ui);
    font-size: 0.75rem;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--burnished-gold);
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    margin-top: 0.3rem;
}
.happening-tile__cta span { transition: transform var(--transition-fast); display: inline-block; }
.happening-tile:hover .happening-tile__cta span { transform: translateX(4px); }
@media (min-width: 640px) {
    .happening-loc-grid { grid-template-columns: repeat(2, 1fr); gap: 1.25rem; }
    .happening-reserve__chips { grid-template-columns: repeat(2, 1fr); }
    .happening-more-grid { grid-template-columns: repeat(2, 1fr); gap: 1.5rem; }
    .happenings-gallery__grid { grid-template-columns: repeat(2, 1fr); gap: 1.5rem; }
}
@media (min-width: 960px) {
    .happening-hero { padding: 6rem 0 4rem; min-height: 620px; }
    .happening-detail { padding: 4rem 0; }
    .happening-loc-grid { grid-template-columns: repeat(4, 1fr); gap: 1.5rem; }
    .happening-loc-card { padding: 1.5rem; }
    .happening-reserve { padding: 4rem 0; }
    .happening-reserve__chips { grid-template-columns: repeat(4, 1fr); max-width: 900px; }
    .happening-more-grid { grid-template-columns: repeat(4, 1fr); }
    .happenings-gallery__grid { grid-template-columns: repeat(3, 1fr); }
}
/* ========== Happenings index — BY LOCATION ========== */
.happenings-by-loc { padding: 2rem 0 4rem; }
.happening-loc-block {
    margin-bottom: 3rem;
    padding: 2rem 0;
    border-bottom: 1px solid rgba(196, 149, 106, 0.15);
}
.happening-loc-block:last-child { border-bottom: none; }
.happening-loc-block__header {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    margin-bottom: 1.5rem;
}
.happening-loc-block__kicker {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-family: var(--font-ui);
    font-size: 0.7rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--crimson-soft, var(--burnished-gold));
    font-weight: 700;
}
.happening-loc-block__kicker svg { color: var(--burnished-gold); }
.happening-loc-block__name {
    font-family: var(--font-display);
    font-size: clamp(1.75rem, 5vw, 2.5rem);
    margin: 0;
    color: var(--warm-cream);
    letter-spacing: -0.01em;
    line-height: 1.05;
}
.happening-loc-block__meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 0.92rem;
    color: var(--text-secondary);
    margin-top: 0.25rem;
}
.happening-loc-block__meta a { color: var(--burnished-gold); }
.happening-loc-block__meta a:hover { color: var(--warm-cream); }
/* These rows center their items — cancel link-arrow's global 1rem top margin
   (layout.css) that dropped "Location details" below its line. */
.happening-loc-block__meta .link-arrow,
.happening-loc-card__actions .link-arrow { margin-top: 0; }
.happening-loc-block__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
}
.happening-loc-block__empty {
    font-family: var(--font-subheading);
    font-style: italic;
    color: var(--text-muted);
    padding: 1rem 0;
}
/* Compact tile variant — stacked card: photo on top, text on the solid card
   body below. (Replaces the old overlay where text sat on a photo fading to
   cream — owner flagged it as hard to read.) */
.happening-tile--compact {
    aspect-ratio: auto;
    display: flex;
    flex-direction: column;
    border-radius: 6px;
    isolation: isolate;
}
.happening-tile--compact .happening-tile__image {
    position: relative;
    inset: auto;
    flex: none;
    aspect-ratio: 16 / 10;
    overflow: hidden;
}
.happening-tile--compact .happening-tile__image::after { content: none; }
.happening-tile--compact .happening-tile__body {
    position: static;
    flex: 1;
    padding: 1.1rem 1.2rem 1.3rem;
    gap: 0.35rem;
}
.happening-tile--compact .happening-tile__cta {
    margin-top: auto;
    padding-top: 0.6rem;
}
.happening-tile--compact .happening-tile__name {
    font-size: clamp(1.35rem, 3.5vw, 1.6rem);
}
.happening-tile--compact .happening-tile__tagline {
    font-size: 0.88rem;
}
.happening-tile__price {
    display: inline-block;
    margin-top: 0.15rem;
    font-family: var(--font-numeric);
    font-variation-settings: "opsz" 24, "SOFT" 40;
    font-style: italic;
    color: var(--warm-cream);
    font-weight: 600;
    font-size: 0.92rem;
}
/* Accent stripe on the tile per happening.accent */
.happening-tile--compact::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    background: var(--burnished-gold);
    z-index: 2;
}
.happening-tile--gold::before     { background: var(--burnished-gold); }
.happening-tile--crimson::before  { background: var(--crimson); }
.happening-tile--chianti::before  { background: var(--chianti); }
.happening-tile--mahogany::before { background: var(--mahogany-rich, var(--mahogany)); }
/* Selected location floats to the very top of the list (via JS hoist).
   Falls back gracefully if JS is disabled — original doc order. */
.happening-loc-block.is-current {
    background: rgba(151, 11, 51, 0.05);
    border-radius: 8px;
    padding: 2rem 1.25rem;
}
.happening-loc-block.is-current .happening-loc-block__kicker {
    color: var(--burnished-gold);
}
.happening-loc-block.is-current .happening-loc-block__kicker::after {
    content: ' · You are here';
    opacity: 0.75;
    font-style: italic;
    text-transform: none;
    letter-spacing: 0.02em;
}
@media (min-width: 640px) {
    .happening-loc-block__grid { grid-template-columns: repeat(2, 1fr); gap: 1.25rem; }
    .happening-loc-block { padding: 2.5rem 0; }
}
@media (min-width: 960px) {
    .happening-loc-block__grid { grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
    .happening-loc-block { padding: 3rem 0; }
    .happening-loc-block.is-current { padding: 3rem 2rem; }
}
/* ========== Happening gallery ("A closer look") ==========
   No styles existed, so the figures stacked at full container width (huge).
   Constrain to a tidy, smaller grid of cover-cropped thumbnails. */
.happening-gallery { padding: 2.5rem 0; }
.happening-gallery__grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 0.75rem;
    margin-top: 1.5rem;
}
.happening-gallery__item {
    margin: 0;
    overflow: hidden;
    border-radius: 4px;
    aspect-ratio: 4 / 3;
}
.happening-gallery__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.6s var(--ease-out-expo);
}
.happening-gallery__item:hover .happening-gallery__img { transform: scale(1.04); }
@media (min-width: 640px) {
    .happening-gallery__grid { grid-template-columns: repeat(3, 1fr); gap: 1rem; }
}
@media (min-width: 960px) {
    .happening-gallery__grid {
        max-width: 880px;
        margin-left: auto;
        margin-right: auto;
        gap: 1rem;
    }
}
/* Events page (rendered by eventbrite-sync into /events.html; markup in web/eventbrite-sync/templates/salumeria-104) */
.events-section { padding: var(--section-padding, 4rem 0); }
.events-section--alt { background: var(--base-soft, transparent); }
.events-how { max-width: 720px; }
.events-how h2 { font-family: var(--font-display); font-size: clamp(1.6rem, 4vw, 2.25rem); margin: 0.5rem 0 1rem; color: var(--text-primary); }
.events-how p { color: var(--text-secondary); line-height: 1.75; }
.events-list { max-width: 900px; margin: 0 auto; }
.events-day { margin: 0 0 2.5rem; }
.events-day__title { font-family: var(--font-display); font-size: clamp(1.4rem, 3.5vw, 1.9rem); color: var(--text-primary); margin: 0 0 1rem; padding-bottom: 0.5rem; border-bottom: 1px solid rgba(196, 149, 106, 0.25); }
.events-day__dow { color: var(--burnished-gold); }
.event-card { display: grid; grid-template-columns: 96px 1fr auto; gap: 1.25rem; align-items: center; padding: 1.25rem 1.5rem; margin-bottom: 0.9rem; background: var(--base-soft, rgba(0,0,0,0.03)); border: 1px solid rgba(196, 149, 106, 0.25); border-radius: 12px; transition: border-color var(--transition-medium, .3s); }
.event-card:hover { border-color: var(--burnished-gold); }
.event-card__time span { font-family: var(--font-numeric, var(--font-ui)); font-size: 1.1rem; color: var(--burnished-gold); white-space: nowrap; }
.event-card__series { font-family: var(--font-ui); font-size: 0.7rem; letter-spacing: 0.2em; text-transform: uppercase; color: var(--crimson-soft, var(--burnished-gold)); margin: 0 0 0.3rem; font-weight: 700; }
.event-card__title { font-family: var(--font-display); font-size: 1.2rem; margin: 0 0 0.35rem; line-height: 1.3; color: var(--text-primary); }
.event-card__summary { color: var(--text-secondary); font-size: 0.95rem; margin: 0; max-width: 60ch; }
.event-card__full { color: var(--burnished-gold); font-size: 0.9rem; margin: 0.4rem 0 0; }
.event-card__cta .btn { white-space: nowrap; }
.events-empty, .events-updated { color: var(--text-secondary); }
.events-updated { margin-top: 1.5rem; text-align: center; }
@media (max-width: 768px) {
    .event-card { grid-template-columns: 1fr; gap: 0.6rem; padding: 1.1rem 1.15rem; }
    .event-card__cta .btn { width: 100%; text-align: center; }
}
/* Newsroom page — editorial press grid with auto-enriched OG images. MOBILE-FIRST. */
/* Featured article */
.newsroom-featured {
    padding: 2rem 1rem;
    max-width: 1100px;
    margin: 0 auto;
}
.newsroom-feature-card {
    position: relative;
    overflow: hidden;
    border-radius: 6px;
    background: var(--dark-wood);
    border: 1px solid rgba(196, 149, 106, 0.2);
    transition: transform var(--transition-medium), border-color var(--transition-medium), box-shadow var(--transition-medium);
}
.newsroom-feature-card--gold     { --accent-color: var(--burnished-gold); }
.newsroom-feature-card--crimson  { --accent-color: var(--crimson); }
.newsroom-feature-card--chianti  { --accent-color: var(--chianti); }
.newsroom-feature-card--mahogany { --accent-color: var(--mahogany); }
.newsroom-feature-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 4px;
    background: var(--accent-color, var(--burnished-gold));
    z-index: 2;
}
.newsroom-feature-card:hover {
    transform: translateY(-4px);
    border-color: var(--accent-color, var(--burnished-gold));
    box-shadow: 0 24px 48px -18px rgba(0, 0, 0, 0.6);
}
.newsroom-feature-card__link {
    display: grid;
    grid-template-columns: 1fr;
    color: inherit;
}
.newsroom-feature-card__media {
    aspect-ratio: 16 / 9;
    overflow: hidden;
    background: var(--midnight);
    position: relative;
}
.newsroom-feature-card__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.8s var(--ease-out-expo);
}
.newsroom-feature-card:hover .newsroom-feature-card__media img { transform: scale(1.04); }
.newsroom-feature-card__placeholder {
    width: 100%;
    height: 100%;
    background:
        var(--dark-wood);
}
.newsroom-feature-card__body {
    padding: 1.5rem 1.25rem 1.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}
.newsroom-feature-card__badge {
    display: inline-block;
    padding: 0.25rem 0.8rem;
    font-family: var(--font-ui);
    font-size: 0.72rem;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    font-weight: 700;
    /* Always burnished-gold bg + midnight text for consistent AA contrast
       regardless of the card's accent color. Accent lives on the top stripe. */
    color: var(--midnight);
    background: var(--burnished-gold);
    border-radius: 99px;
    align-self: flex-start;
}
.newsroom-feature-card__publication {
    font-family: var(--font-display);
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--warm-cream);
    letter-spacing: -0.01em;
    line-height: 1.1;
}
.newsroom-feature-card__date {
    font-family: var(--font-numeric);
    font-variation-settings: "opsz" 14, "SOFT" 20;
    font-style: italic;
    font-size: 0.85rem;
    color: var(--text-muted);
    letter-spacing: 0.04em;
}
.newsroom-feature-card__quote {
    margin: 0;
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: clamp(1.1rem, 2.2vw, 1.35rem);
    line-height: 1.55;
    color: var(--text-primary);
}
.newsroom-feature-card__quote-mark {
    /* burnished-gold only (not accent-dependent) so the quote marks always
       meet contrast; accent shows via the top stripe. */
    color: var(--burnished-gold);
    font-weight: 700;
    font-size: 1.15em;
    margin: 0 0.05em;
}
.newsroom-feature-card__author {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 0.95rem;
    color: var(--text-secondary);
    font-weight: 400;
}
.newsroom-feature-card__cta {
    margin-top: 0.5rem;
    font-family: var(--font-ui);
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--burnished-gold);
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}
.newsroom-feature-card__cta span { transition: transform var(--transition-fast); display: inline-block; }
.newsroom-feature-card:hover .newsroom-feature-card__cta span { transform: translateX(4px); }
/* Grid of the rest */
.newsroom-grid-section {
    padding: 3rem 0 4rem;
    background: var(--midnight);
}
.newsroom-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
    margin-top: 2rem;
}
.newsroom-card {
    position: relative;
    background: rgba(26, 20, 16, 0.6);
    border: 1px solid rgba(196, 149, 106, 0.2);
    border-radius: 4px;
    overflow: hidden;
    transition: transform var(--transition-medium), border-color var(--transition-medium), box-shadow var(--transition-medium);
}
.newsroom-card--gold     { --accent-color: var(--burnished-gold); }
.newsroom-card--crimson  { --accent-color: var(--crimson); }
.newsroom-card--chianti  { --accent-color: var(--chianti); }
.newsroom-card--mahogany { --accent-color: var(--mahogany); }
.newsroom-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: var(--accent-color, var(--burnished-gold));
    z-index: 2;
}
.newsroom-card:hover {
    transform: translateY(-3px);
    border-color: var(--accent-color, var(--burnished-gold));
    box-shadow: 0 16px 32px -12px rgba(0, 0, 0, 0.6);
}
.newsroom-card__link {
    display: flex;
    flex-direction: column;
    height: 100%;
    color: inherit;
}
.newsroom-card__media {
    aspect-ratio: 16 / 10;
    overflow: hidden;
    background: var(--dark-wood);
}
.newsroom-card__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.6s var(--ease-out-expo);
}
.newsroom-card:hover .newsroom-card__media img { transform: scale(1.05); }
.newsroom-card__placeholder {
    width: 100%;
    height: 100%;
    background: var(--dark-wood);
}
.newsroom-card__body {
    padding: 1.15rem 1.2rem 1.35rem;
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
    flex: 1;
}
.newsroom-card__header {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
}
.newsroom-card__publication {
    font-family: var(--font-display);
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--warm-cream);
    letter-spacing: -0.01em;
    line-height: 1.1;
}
.newsroom-card__date {
    font-family: var(--font-numeric);
    font-variation-settings: "opsz" 14, "SOFT" 20;
    font-style: italic;
    font-size: 0.78rem;
    color: var(--text-muted);
}
.newsroom-card__rating {
    padding: 0.1rem 0.55rem;
    font-family: var(--font-ui);
    font-size: 0.65rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    font-weight: 700;
    color: var(--midnight);
    background: var(--accent-color);
    border-radius: 2px;
}
.newsroom-card__quote {
    margin: 0;
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 1rem;
    line-height: 1.5;
    color: var(--text-primary);
}
.newsroom-card__title {
    margin: 0;
    font-family: var(--font-subheading);
    font-size: 0.95rem;
    color: var(--text-primary);
    line-height: 1.45;
}
.newsroom-card__author {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: 0.85rem;
    color: var(--text-secondary);
    font-weight: 400;
}
.newsroom-card__cta {
    margin-top: auto;
    padding-top: 0.6rem;
    font-family: var(--font-ui);
    font-size: 0.74rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    font-weight: 700;
    color: var(--burnished-gold);
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    border-top: 1px solid rgba(196, 149, 106, 0.12);
}
.newsroom-card__cta span { transition: transform var(--transition-fast); display: inline-block; }
.newsroom-card:hover .newsroom-card__cta span { transform: translateX(3px); }
/* Awaiting content note */
.newsroom-awaiting {
    margin-top: 2.5rem;
    padding: 1rem 1.25rem;
    background: rgba(196, 149, 106, 0.04);
    border: 1px dashed rgba(196, 149, 106, 0.25);
    border-radius: 4px;
    text-align: center;
}
.newsroom-awaiting__label {
    display: block;
    font-family: var(--font-ui);
    font-size: 0.7rem;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--burnished-gold);
    font-weight: 700;
    margin-bottom: 0.35rem;
}
.newsroom-awaiting p {
    margin: 0;
    font-family: var(--font-subheading);
    font-style: italic;
    color: var(--text-secondary);
    font-size: 0.95rem;
}
/* Press inquiry section */
.newsroom-inquiry { padding: 3rem 0; }
/* Tablet */
@media (min-width: 640px) {
    .newsroom-grid { grid-template-columns: repeat(2, 1fr); gap: 1.25rem; }
    .newsroom-feature-card__body { padding: 2rem 1.75rem 2.25rem; }
    .newsroom-featured { padding: 3rem 1.5rem; }
}
/* Desktop */
@media (min-width: 960px) {
    .newsroom-feature-card__link { grid-template-columns: 1.1fr 1fr; }
    .newsroom-feature-card__media { aspect-ratio: auto; }
    .newsroom-feature-card__body { padding: 2.5rem 2.5rem 3rem; justify-content: center; }
    .newsroom-grid { grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
    .newsroom-grid-section { padding: 4rem 0 6rem; }
    .newsroom-inquiry { padding: 4rem 0; }
}
/* Picker landing pages — /locations.html and /menus.html. MOBILE-FIRST. */
.picker-hero {
    padding: 5rem 0 2rem;
    text-align: center;
    background: var(--dark-wood);
    position: relative;
    overflow: hidden;
}
.picker-hero::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
        none;
    pointer-events: none;
}
.picker-hero > * { position: relative; }
.picker-hero__title {
    font-family: var(--font-display);
    font-size: clamp(2.25rem, 8vw, 4.5rem);
    line-height: 1;
    margin: 1rem 0 1.25rem;
    color: var(--warm-cream);
    letter-spacing: -0.02em;
}
.picker-hero__lede {
    font-family: var(--font-subheading);
    font-style: italic;
    font-size: clamp(1rem, 2vw, 1.2rem);
    line-height: 1.6;
    color: var(--text-primary);
    max-width: 620px;
    margin: 0 auto;
}
.picker-grid-section { padding: 3rem 0 4rem; }
.picker-map-section { padding: 3rem 0; }
@media (min-width: 960px) {
    .picker-hero { padding: 7rem 0 3rem; }
    .picker-grid-section { padding: 4rem 0 6rem; }
    .picker-map-section { padding: 5rem 0; }
}
/* Micro-interactions — tight, consistent hover/focus polish across the site.
   Designed to be additive: safe to delete if the site is too busy. */
/* ===== Link arrow — animated chianti underline draws left-to-right ===== */
.link-arrow {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-family: var(--font-ui);
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--burnished-gold);
    transition: color var(--transition-fast);
    padding-bottom: 0.15rem;
}
.link-arrow::after {
    content: '';
    position: absolute;
    left: 0;
    bottom: 0;
    right: 0;
    height: 1px;
    background: currentColor;
    transform: scaleX(0);
    transform-origin: right center;
    transition: transform 0.45s var(--ease-out-expo);
}
.link-arrow:hover,
.link-arrow:focus-visible {
    color: var(--warm-cream);
}
.link-arrow:hover::after,
.link-arrow:focus-visible::after {
    transform: scaleX(1);
    transform-origin: left center;
}
.link-arrow span {
    transition: transform var(--transition-fast);
    display: inline-block;
}
.link-arrow:hover span,
.link-arrow:focus-visible span {
    transform: translateX(3px);
}
/* Cream sections: link-arrow switches to chianti */
.section--cream .link-arrow,
.section--textured-paper .link-arrow,
body.mood-aperitivo .link-arrow {
    color: var(--chianti);
}
.section--cream .link-arrow:hover,
.section--textured-paper .link-arrow:hover,
body.mood-aperitivo .link-arrow:hover { color: var(--crimson); }
/* ===== Gold buttons — gradient shift + subtle lift ===== */
.btn-gold,
.site-header__reserve,
.btn-primary,
.loc-card__btn--primary {
    position: relative;
    overflow: hidden;
    isolation: isolate;
}
.btn-gold::before,
.site-header__reserve::before,
.btn-primary::before,
.loc-card__btn--primary::before {
    content: '';
    position: absolute;
    inset: 0;
    background: var(--mahogany);
    opacity: 0;
    transition: opacity var(--transition-medium);
    z-index: -1;
}
.btn-gold:hover::before,
.btn-gold:focus-visible::before,
.site-header__reserve:hover::before,
.btn-primary:hover::before,
.loc-card__btn--primary:hover::before {
    opacity: 1;
}
.btn-gold:hover,
.site-header__reserve:hover,
.btn-primary:hover,
.loc-card__btn--primary:hover {
    color: var(--warm-cream);
    transform: translateY(-1px);
}
/* ===== Menu-card price reveal — price scales up on card hover ===== */
.menu-card__price,
.chefspick__price {
    display: inline-block;
    transition: transform 0.3s var(--ease-out-expo), color var(--transition-fast);
    transform-origin: left bottom;
}
.menu-card:hover .menu-card__price,
.chefspick:hover .chefspick__price {
    transform: scale(1.08);
    color: var(--warm-cream);
}
/* ===== Press-card image / lift — add subtle shadow on hover ===== */
.press-card { transition: transform var(--transition-medium), border-color var(--transition-medium), background var(--transition-medium), box-shadow var(--transition-medium); }
.press-card:hover { box-shadow: 0 20px 40px -15px rgba(151, 11, 51, 0.3); }
/* ===== Section title — gold underline flash on section-reveal ===== */
.section-title {
    position: relative;
}
/* ===== Focus-visible: consistent gold ring site-wide ===== */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[role="button"]:focus-visible {
    outline: 2px solid var(--burnished-gold);
    outline-offset: 3px;
    border-radius: 2px;
}
/* Location chip active — soft glow pulse on select */
@keyframes chip-flash {
    0%   { box-shadow: 0 0 0 0 rgba(196, 149, 106, 0.6); }
    100% { box-shadow: 0 0 0 12px rgba(196, 149, 106, 0); }
}
.drawer__location-chip.is-active,
.loc-card__btn--primary:active {
    animation: chip-flash 0.7s ease-out;
}
/* ===== Section-label — chianti dot bullet ===== */
.section-label {
    position: relative;
    padding-left: 1.2rem;
}
.section-label::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--crimson);
    opacity: 0.8;
}
.section--cream .section-label::before,
.section--textured-paper .section-label::before,
body.mood-aperitivo .section-label::before { background: var(--crimson); }
/* Respect reduced motion — disable transforms + gradients on hover */
@media (prefers-reduced-motion: reduce) {
    .link-arrow::after,
    .btn-gold::before,
    .site-header__reserve::before,
    .btn-primary::before,
    .loc-card__btn--primary::before,
    .menu-card__price,
    .chefspick__price {
        transition: none !important;
    }

    .link-arrow:hover,
    .btn-gold:hover,
    .site-header__reserve:hover,
    .btn-primary:hover {
        transform: none !important;
    }

    .menu-card:hover .menu-card__price,
    .chefspick:hover .chefspick__price {
        transform: none !important;
    }

    .drawer__location-chip.is-active,
    .loc-card__btn--primary:active { animation: none !important; }
}
/* ==========================================
   MOBILE RESET — OVERRIDES LEGACY DESKTOP-FIRST GRIDS
   Imported LAST so these rules cascade over earlier component CSS.
   Target: make every content block usable on a 375px phone by default,
   then progressively enhance for larger screens.
   ========================================== */
/* --- Legacy grid rows (location cards, dish bento, happenings, galleries) --- */
.location-grid,
.location-grid.bento,
.dish-grid,
.dish-grid.bento,
.happenings-grid,
.gallery-grid,
.grid,
.card-grid,
.events-grid,
.team-grid,
.content-grid,
.features-grid,
.info-grid,
.newsroom-grid,
.press-grid {
    display: grid !important;
    grid-template-columns: 1fr !important;
    grid-template-rows: auto !important;
    gap: 1rem !important;
}
.location-grid.bento .location-card--featured,
.location-grid.bento .location-card:nth-child(2) {
    grid-column: auto !important;
    grid-row: auto !important;
}
.dish-grid.bento .dish-card,
.dish-grid.bento .dish-card--hero {
    grid-column: auto !important;
    grid-row: auto !important;
}
/* --- Action button rows: stack on mobile --- */
.location-actions,
.location-card__actions,
.dish-card__actions,
.happening-actions,
.happening-card__actions,
.cta-row,
.btn-row,
.action-row,
.hero-ctas {
    display: flex !important;
    flex-wrap: wrap;
    gap: 0.5rem;
}
.location-actions > *,
.location-card__actions > *,
.hero-ctas > * {
    flex: 1 1 auto;
    min-width: fit-content;
    text-align: center;
}
/* --- Form rows stack on mobile --- */
.form-row {
    display: flex !important;
    flex-direction: column !important;
    gap: 0.75rem !important;
}
/* --- Small buttons get sensible sizing on tiny screens --- */
.btn-sm {
    padding: 0.55rem 0.9rem;
    font-size: 0.75rem;
    min-height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
/* --- Generic media queries progressively enhance --- */
@media (min-width: 640px) {
    .location-grid,
    .dish-grid,
    .happenings-grid,
    .gallery-grid,
    .card-grid,
    .team-grid,
    .newsroom-grid,
    .press-grid {
        grid-template-columns: repeat(2, 1fr) !important;
        gap: 1.25rem !important;
    }
}
@media (min-width: 960px) {
    .location-grid,
    .location-grid.bento {
        grid-template-columns: repeat(4, 1fr) !important;
        gap: 1.5rem !important;
    }
    .dish-grid,
    .dish-grid.bento {
        grid-template-columns: repeat(3, 1fr) !important;
        gap: 1.5rem !important;
    }
    .happenings-grid,
    .press-grid,
    .events-grid,
    .team-grid,
    .newsroom-grid {
        grid-template-columns: repeat(3, 1fr) !important;
        gap: 1.5rem !important;
    }
    .gallery-grid,
    .card-grid {
        grid-template-columns: repeat(3, 1fr) !important;
        gap: 1rem !important;
    }

    .form-row {
        flex-direction: row !important;
        align-items: stretch !important;
    }
    .form-row .form-group { flex: 1; }
}
/* --- Reduce aggressive fixed heights on image cards so mobile doesn't crush them --- */
@media (max-width: 767px) {
    .location-card__image,
    .dish-card__image,
    .happening-card__image,
    .gallery-item img,
    .event-card__image,
    .press-card__image {
        height: auto !important;
        aspect-ratio: 16 / 9;
    }

    /* Hero titles — clamp down on tiny screens (some legacy uses fixed sizes) */
    .hero-title,
    .page-hero__title,
    .section-title--xl {
        font-size: clamp(2rem, 9vw, 3.5rem) !important;
        line-height: 1.05 !important;
    }

    /* Prevent images from forcing horizontal scroll */
    img, video, picture { max-width: 100%; height: auto; }

    /* Section padding: reduce vertical padding on phones for breathing room */
    .section { padding: 2.5rem 0 !important; }
    .section--spacious { padding: 3rem 0 !important; }

    /* Tables, pre, code — keep from overflowing */
    pre, table { overflow-x: auto; max-width: 100%; }
}
/* --- Kill the orphaned legacy .open-badge + .status-text that main.js USED to inject --- */
.location-status:empty { display: none; }
.location-status .open-badge,
.location-status .status-text { display: none; }
/* stale */
/* --- Subpage heroes (about, contact, etc.) — ensure they breathe on mobile --- */
@media (max-width: 767px) {
    .subpage-hero,
    .page-hero {
        padding: 5rem 0 2.5rem !important;
        min-height: unset !important;
    }
}
/* --- Inquiry/contact pages often have 2-column form layouts that don't reflow --- */
@media (max-width: 767px) {
    .contact-grid,
    .inquiry-grid,
    .two-col,
    .split-layout {
        display: flex !important;
        flex-direction: column !important;
        gap: 1.5rem !important;
    }
}
/* --- Typography safeguard: ensure body text doesn't shrink below readability --- */
@media (max-width: 767px) {
    body { font-size: 16px; } /* prevent iOS zoom-on-focus for form inputs */
    input, select, textarea { font-size: 16px !important; }
}
/* ==========================================
   PALETTE — owner direction, round 3 (2026-04-21)
   ==========================================
   • Default base: cream (#F5EBDC) everywhere.
   • Dark moments use MAHOGANY (#603913), not black, not midnight.
   • Accents use CRIMSON (#970B33).
   • Zero pure black, zero midnight anywhere visible.

   This file is imported LAST in css/main.css and wins over legacy rules.
   ========================================== */
/* ========== 1. BODY + PAGE FOUNDATION ========== */
html { background: var(--cream); }
body {
    background-color: var(--cream) !important;
    background-image:
        none !important;
    color: var(--text-primary) !important;
}
body::after {
    /* Paper texture overlay — subtle, warms the cream */
    opacity: 0.09 !important;
    mix-blend-mode: multiply !important;
}
/* ========== 2. HEADER / NAV CHROME — warm mahogany, not black ========== */
.site-header {
    background: var(--mahogany-dark) !important;
    background-image: none !important;
    border-bottom: 1px solid rgba(196, 149, 106, 0.3) !important;
    box-shadow: 0 4px 20px rgba(75, 45, 16, 0.25) !important;
}
.site-header__location {
    background: rgba(245, 235, 220, 0.12) !important;
    border-color: rgba(245, 235, 220, 0.3) !important;
    color: var(--cream) !important;
}
.site-header__location:hover,
.site-header__location[aria-expanded="true"] {
    background: rgba(245, 235, 220, 0.22) !important;
    border-color: var(--cream) !important;
}
.site-header__location-pin { color: var(--gold-on-dark) !important; }
.site-header__location-name { color: var(--cream) !important; }
.site-header__location-hours { color: rgba(245, 235, 220, 0.8) !important; }
.site-header__reserve {
    background: var(--gradient-gold-rich) !important;
    color: var(--mahogany-dark) !important;
}
.site-header__reserve:hover {
    filter: brightness(1.08);
    box-shadow: 0 4px 16px rgba(217, 180, 134, 0.45);
}
.site-header__nav-link { color: var(--cream) !important; }
.site-header__nav-link:hover { color: var(--gold-on-dark) !important; }
.site-header__nav-link::after { background: var(--gradient-crimson); }
.site-header__submenu {
    background: var(--mahogany-dark) !important;
    border-color: rgba(196, 149, 106, 0.3) !important;
}
.site-header__submenu li a { color: rgba(245, 235, 220, 0.85) !important; }
.site-header__submenu li a:hover { color: var(--gold-on-dark) !important; background: rgba(245, 235, 220, 0.08) !important; }
.site-header__menu span { background: var(--gold-on-dark) !important; }
/* Drawer chrome */
.drawer__panel {
    background: var(--mahogany-dark) !important;
    border-left: 1px solid rgba(196, 149, 106, 0.25);
}
.drawer__title { color: var(--gold-on-dark) !important; }
.drawer__close { color: var(--gold-on-dark) !important; border-color: rgba(217, 180, 134, 0.35) !important; }
.drawer__nav-group ul li a { color: var(--cream) !important; border-bottom-color: rgba(245, 235, 220, 0.12) !important; }
.drawer__nav-group ul li a:hover { color: var(--gold-on-dark) !important; }
.drawer__nav-label { color: var(--crimson-light) !important; }
.drawer__location-name { color: var(--cream) !important; }
.drawer__location-address { color: rgba(245, 235, 220, 0.85) !important; }
.drawer__location-chip-name { color: var(--cream) !important; }
.drawer__location-chip.is-active .drawer__location-chip-name,
.drawer__location-chip.is-active .drawer__location-chip-city { color: var(--mahogany-dark) !important; }
.drawer__action span { color: var(--cream) !important; }
.drawer__action small { color: rgba(245, 235, 220, 0.7) !important; }
.drawer__action svg { color: var(--gold-on-dark) !important; }
.drawer__action--primary span,
.drawer__action--primary small,
.drawer__action--primary svg { color: var(--mahogany-dark) !important; }
/* ========== 3. FOOTER — mahogany, same language as header ========== */
.footer {
    background: var(--mahogany-dark) !important;
    color: var(--cream) !important;
}
.footer::before {
    background: var(--gold-on-dark) !important;
}
.footer-heading,
.footer-col__title { color: var(--gold-on-dark) !important; }
.footer-list li a,
.footer-col ul li a { color: rgba(245, 235, 220, 0.88) !important; }
.footer-list li a:hover { color: var(--gold-on-dark) !important; }
.footer-address { color: rgba(245, 235, 220, 0.6) !important; }
.footer-bottom p { color: rgba(245, 235, 220, 0.7) !important; }
.footer-bottom p a { color: var(--gold-on-dark) !important; }
.footer-social a {
    background: rgba(245, 235, 220, 0.08) !important;
    border-color: rgba(245, 235, 220, 0.2) !important;
    color: var(--cream) !important;
}
.footer-social a:hover {
    background: rgba(151, 11, 51, 0.35) !important;
    border-color: var(--crimson-light) !important;
    color: var(--gold-on-dark) !important;
}
/* ========== 4. HERO — video overlay uses mahogany + crimson, not black ========== */
.hero {
    background: var(--mahogany-dark) !important;
}
.hero-overlay {
    background:
        rgba(75, 45, 16, 0.55) !important;
}
.hero-fog {
    background: none !important;
}
.hero-video-wrap {
    background: var(--mahogany-dark) !important;
}
.hero .hero-title,
.hero .hero-title span { color: var(--cream) !important; }
.hero .hero-label { color: var(--gold-on-dark) !important; }
.hero .scroll-indicator-text { color: var(--gold-on-dark) !important; }
.hero .scroll-indicator-line { background: var(--gold-on-dark) !important; }
/* Hero buttons */
.hero .btn-primary {
    background: var(--gradient-gold-rich) !important;
    color: var(--mahogany-dark) !important;
    border-color: var(--gold-on-dark) !important;
}
.hero .btn-secondary {
    background: transparent !important;
    border-color: var(--cream) !important;
    color: var(--cream) !important;
}
.hero .btn-secondary:hover {
    background: var(--cream) !important;
    color: var(--mahogany-dark) !important;
}
/* ========== 5. SECTION MODIFIERS — all rebuilt around the 3-color palette ========== */
/* Default (no modifier): cream body, already handled. */
/* Cream + paper textured (kept, slight deepening) */
.section--cream,
.section--textured-paper {
    background: var(--cream-soft) !important;
    color: var(--walnut) !important;
}
/* Legacy "dark" / "dark-wood" / "wood" / "walnut" / "warm" now all map to
   mahogany variants. Owner wanted these warmer + browner. */
.section--dark,
.section--dark-wood,
.section--wood,
.section--walnut,
.section--warm {
    background: var(--gradient-mahogany) !important;
    color: var(--cream) !important;
}
/* Crimson gradient — warm red (already close to right) */
.section--chianti-gradient {
    background: var(--crimson) !important;
    color: var(--cream) !important;
}
/* Mahogany gradient — core warm brown */
.section--mahogany-gradient {
    background: var(--mahogany) !important;
    color: var(--cream) !important;
}
/* Image-backed section overlay — replace the black gradient with mahogany */
.section--imagebg > .section-bg::after {
    background: rgba(75, 45, 16, 0.76) !important;
}
.section--imagebg--side > .section-bg::after {
    background: rgba(75, 45, 16, 0.75) !important;
}
.section--imagebg { color: var(--cream) !important; }
/* Parallax banner (events) */
.section--parallax-banner { background: var(--mahogany) !important; }
.parallax-banner__overlay {
    background: rgba(75, 45, 16, 0.7) !important;
}
/* Anything with .section--dark/etc. gets dark-text treatment */
.section--dark *, .section--dark-wood *, .section--wood *, .section--walnut *, .section--warm *,
.section--chianti-gradient *, .section--mahogany-gradient *,
.section--parallax-banner * {
    color: var(--cream);
}
.section--dark h1, .section--dark h2, .section--dark h3, .section--dark h4,
.section--dark-wood h1, .section--dark-wood h2, .section--dark-wood h3, .section--dark-wood h4,
.section--wood h1, .section--wood h2, .section--wood h3, .section--wood h4,
.section--walnut h1, .section--walnut h2, .section--walnut h3, .section--walnut h4,
.section--warm h1, .section--warm h2, .section--warm h3, .section--warm h4,
.section--chianti-gradient h1, .section--chianti-gradient h2, .section--chianti-gradient h3, .section--chianti-gradient h4,
.section--mahogany-gradient h1, .section--mahogany-gradient h2, .section--mahogany-gradient h3, .section--mahogany-gradient h4,
.section--imagebg h1, .section--imagebg h2, .section--imagebg h3, .section--imagebg h4,
.section--parallax-banner h1, .section--parallax-banner h2, .section--parallax-banner h3, .section--parallax-banner h4 {
    color: var(--cream) !important;
}
.section--dark .section-title, .section--dark-wood .section-title, .section--wood .section-title,
.section--walnut .section-title, .section--warm .section-title,
.section--chianti-gradient .section-title, .section--mahogany-gradient .section-title,
.section--imagebg .section-title, .section--parallax-banner .section-title {
    color: var(--cream) !important;
}
.section--dark .section-label, .section--dark-wood .section-label, .section--wood .section-label,
.section--walnut .section-label, .section--warm .section-label,
.section--chianti-gradient .section-label, .section--mahogany-gradient .section-label,
.section--imagebg .section-label, .section--parallax-banner .section-label {
    color: var(--gold-on-dark) !important;
}
.section--dark .section-label::before, .section--dark-wood .section-label::before, .section--wood .section-label::before,
.section--walnut .section-label::before, .section--warm .section-label::before,
.section--chianti-gradient .section-label::before, .section--mahogany-gradient .section-label::before,
.section--imagebg .section-label::before, .section--parallax-banner .section-label::before {
    background: var(--gold-on-dark) !important;
}
.section--dark strong, .section--dark-wood strong, .section--wood strong,
.section--walnut strong, .section--warm strong,
.section--chianti-gradient strong, .section--mahogany-gradient strong,
.section--imagebg strong, .section--parallax-banner strong,
.section--dark em, .section--dark-wood em, .section--wood em,
.section--walnut em, .section--warm em,
.section--chianti-gradient em, .section--mahogany-gradient em,
.section--imagebg em, .section--parallax-banner em {
    color: var(--gold-on-dark) !important;
}
/* ========== 6. HEADINGS + TYPE on cream body ========== */
/* Scope chianti-dark h1/h2 to cream-bg sections only. Previously the bare
   `h2:not(...)` rule matched 7 :not classes (specificity 0,7,1), beating
   every `.section--dark-wood .section-title` override (0,2,0) and forcing
   wine-red titles onto brown backdrops. :where() on the ancestor chain keeps
   specificity at (0,7,1) on cream sections and makes the rule simply not
   match on dark sections, so the on-dark cream overrides take effect. */
.section-title,
:where(main > section:not([class*="--dark"]):not([class*="--wood"]):not([class*="--walnut"]):not([class*="--warm"]):not([class*="--mahogany"]):not([class*="--parallax"]):not([class*="--imagebg"]):not([class*="--chianti"]):not(.hero):not(.kitchen):not(.section-events-banner):not(.section-happenings):not(.section-instagram):not(.subpage-hero):not(.about-hero):not(.contact-hero):not(.newsroom-hero):not(.happening-hero):not(.happenings-index-hero):not(.picker-hero):not(.loc-hero):not(.pef-hero):not(.pe-hero):not(.loc-glance):not(.happening-reserve)) h1:not(.hero-title):not(.loc-hero__title):not(.picker-hero__title):not(.newsroom-hero__title):not(.happening-hero__title):not(.happenings-index-hero__title):not(.drawer__location-name),
:where(main > section:not([class*="--dark"]):not([class*="--wood"]):not([class*="--walnut"]):not([class*="--warm"]):not([class*="--mahogany"]):not([class*="--parallax"]):not([class*="--imagebg"]):not([class*="--chianti"]):not(.hero):not(.kitchen):not(.section-events-banner):not(.subpage-hero):not(.about-hero):not(.contact-hero):not(.newsroom-hero):not(.happening-hero):not(.happenings-index-hero):not(.picker-hero):not(.loc-hero):not(.pef-hero):not(.pe-hero):not(.loc-glance):not(.happening-reserve)) h2:not([class*="hero__"]):not([class*="card__"]):not([class*="chip__"]):not([class*="footer-"]):not([class*="feature-card__"]):not(.happening-tile__name):not(.happening-loc-block__name) {
    color: var(--chianti-dark) !important;
}
.section-label { color: var(--crimson) !important; }
.section-label::before { background: var(--crimson) !important; }
.link-arrow { color: var(--crimson) !important; }
.link-arrow:hover { color: var(--chianti-dark) !important; }
/* link-arrow inside dark contexts flips to gold-on-dark */
.section--dark .link-arrow,
.section--dark-wood .link-arrow,
.section--wood .link-arrow,
.section--walnut .link-arrow,
.section--warm .link-arrow,
.section--mahogany-gradient .link-arrow,
.section--chianti-gradient .link-arrow,
.section--imagebg .link-arrow,
.section--parallax-banner .link-arrow,
.subpage-hero .link-arrow,
.contact-hero .link-arrow,
.about-hero .link-arrow,
.newsroom-hero .link-arrow,
.happening-hero .link-arrow,
.happenings-index-hero .link-arrow,
.picker-hero .link-arrow,
.loc-hero .link-arrow,
.hero .link-arrow,
.footer .link-arrow,
.kitchen .link-arrow {
    color: var(--gold-on-dark) !important;
}
.section--dark .link-arrow:hover,
.section--dark-wood .link-arrow:hover,
.section--wood .link-arrow:hover,
.section--walnut .link-arrow:hover,
.section--warm .link-arrow:hover,
.section--mahogany-gradient .link-arrow:hover,
.section--chianti-gradient .link-arrow:hover,
.section--imagebg .link-arrow:hover,
.section--parallax-banner .link-arrow:hover,
.subpage-hero .link-arrow:hover,
.contact-hero .link-arrow:hover,
.about-hero .link-arrow:hover,
.newsroom-hero .link-arrow:hover,
.happening-hero .link-arrow:hover,
.happenings-index-hero .link-arrow:hover,
.picker-hero .link-arrow:hover,
.loc-hero .link-arrow:hover,
.hero .link-arrow:hover,
.footer .link-arrow:hover,
.kitchen .link-arrow:hover { color: var(--cream) !important; }
/* Body paragraphs + lists on cream — excludes known dark-bg custom sections
   (.kitchen, .section-events-banner) so their text doesn't get walnut'd into
   invisibility on a dark backdrop. */
main > section:not([class*="--dark"]):not([class*="--wood"]):not([class*="--walnut"]):not([class*="--warm"]):not([class*="--chianti"]):not([class*="--mahogany"]):not([class*="--imagebg"]):not([class*="--parallax"]):not(.hero):not(.kitchen):not(.section-events-banner):not(.subpage-hero):not(.about-hero):not(.contact-hero):not(.newsroom-hero):not(.happening-hero):not(.happenings-index-hero):not(.picker-hero):not(.loc-hero):not(.pef-hero):not(.pe-hero):not(.loc-glance):not(.happening-reserve) p,
main > section:not([class*="--dark"]):not([class*="--wood"]):not([class*="--walnut"]):not([class*="--warm"]):not([class*="--chianti"]):not([class*="--mahogany"]):not([class*="--imagebg"]):not([class*="--parallax"]):not(.hero):not(.kitchen):not(.section-events-banner):not(.subpage-hero):not(.about-hero):not(.contact-hero):not(.newsroom-hero):not(.happening-hero):not(.happenings-index-hero):not(.picker-hero):not(.loc-hero):not(.pef-hero):not(.pe-hero):not(.loc-glance):not(.happening-reserve) li,
main > section:not([class*="--dark"]):not([class*="--wood"]):not([class*="--walnut"]):not([class*="--warm"]):not([class*="--chianti"]):not([class*="--mahogany"]):not([class*="--imagebg"]):not([class*="--parallax"]):not(.hero):not(.kitchen):not(.section-events-banner):not(.subpage-hero):not(.about-hero):not(.contact-hero):not(.newsroom-hero):not(.happening-hero):not(.happenings-index-hero):not(.picker-hero):not(.loc-hero):not(.pef-hero):not(.pe-hero):not(.loc-glance):not(.happening-reserve) address,
.content-section p,
.content-section li {
    color: var(--walnut) !important;
}
.content-section strong { color: var(--chianti-dark) !important; }
.content-section em { color: var(--crimson) !important; }
/* Subpage heroes that used to be dark are now gradient-mahogany by design.
   Force cream text on them. */
.subpage-hero,
.contact-hero,
.about-hero,
.newsroom-hero,
.happening-hero,
.happenings-index-hero,
.picker-hero {
    background: var(--gradient-mahogany) !important;
    color: var(--cream) !important;
}
.subpage-hero *, .contact-hero *, .about-hero *, .newsroom-hero *,
.happening-hero *, .happenings-index-hero *, .picker-hero * {
    color: var(--cream);
}
.subpage-hero h1, .subpage-hero h2, .subpage-hero .section-title,
.contact-hero h1, .contact-hero .section-title,
.about-hero h1, .about-hero .section-title,
.newsroom-hero h1, .newsroom-hero__title, .newsroom-hero .section-title,
.happening-hero h1, .happening-hero__title,
.happenings-index-hero h1, .happenings-index-hero__title,
.picker-hero h1, .picker-hero__title {
    color: var(--cream) !important;
}
.subpage-hero .section-label,
.contact-hero .section-label,
.about-hero .section-label,
.newsroom-hero .section-label,
.happening-hero .section-label,
.happenings-index-hero .section-label,
.picker-hero .section-label,
.happening-hero__label {
    color: var(--gold-on-dark) !important;
}
.subpage-hero .section-label::before,
.contact-hero .section-label::before,
.about-hero .section-label::before,
.newsroom-hero .section-label::before,
.happening-hero .section-label::before,
.happenings-index-hero .section-label::before,
.picker-hero .section-label::before {
    background: var(--gold-on-dark) !important;
}
.subpage-hero__overlay,
.happening-hero__overlay {
    background: rgba(75, 45, 16, 0.68) !important;
}
.subpage-hero strong, .subpage-hero em,
.about-hero strong, .about-hero em,
.contact-hero strong, .contact-hero em,
.newsroom-hero strong, .newsroom-hero em,
.happening-hero strong, .happening-hero em,
.picker-hero strong, .picker-hero em { color: var(--gold-on-dark) !important; }
/* Brand-statement + story-preview legacy sections — paper cream */
.brand-statement,
.story-preview {
    background: var(--cream-soft) !important;
    color: var(--walnut) !important;
}
.brand-statement *, .story-preview * { color: inherit; }
.brand-statement h1, .brand-statement h2, .brand-statement h3, .brand-statement h4,
.story-preview h1, .story-preview h2, .story-preview h3, .story-preview h4 {
    color: var(--chianti-dark) !important;
}
.brand-statement p, .story-preview p,
.brand-statement .story-text, .story-preview .story-text { color: var(--walnut) !important; }
.brand-statement strong, .story-preview strong { color: var(--chianti-dark) !important; }
.brand-statement em, .story-preview em { color: var(--crimson) !important; }
.brand-statement .section-label,
.story-preview .section-label { color: var(--crimson) !important; }
.brand-statement .section-label::before,
.story-preview .section-label::before { background: var(--crimson) !important; }
.brand-statement::before,
.brand-statement::after,
.story-highlight {
    background: var(--crimson) !important;
}
.brand-quote {
    color: var(--walnut) !important;
    font-family: var(--font-subheading);
}
.brand-quote::before {
    color: rgba(151, 11, 51, 0.35) !important;
}
.brand-attribution { color: var(--crimson) !important; }
/* Story split (legacy content splits): left image + right content */
.split-section__content,
.story-split__content {
    background: var(--cream-soft) !important;
    color: var(--walnut) !important;
}
.split-section__content h2,
.story-split__content h2 { color: var(--chianti-dark) !important; }
.split-section__content p,
.story-split__content p { color: var(--walnut) !important; }
.split-section__content strong,
.story-split__content strong { color: var(--chianti-dark) !important; }
.split-section__content em,
.story-split__content em { color: var(--crimson) !important; }
.split-section__content a,
.story-split__content a { color: var(--crimson) !important; }
/* ========== 7. CARD COMPONENTS — cream paper with warm accents ========== */
/* Location cards — stay cream paper even inside dark sections.
   Overrides the `.section--dark *` universal text rule that would otherwise
   inherit cream into these cards. */
.section--dark .loc-card *,
.section--dark-wood .loc-card *,
.section--wood .loc-card *,
.section--walnut .loc-card *,
.section--warm .loc-card *,
.section--mahogany-gradient .loc-card *,
.section--chianti-gradient .loc-card *,
.section--imagebg .loc-card * {
    color: inherit;
}
.section--dark .loc-card__name,
.section--dark-wood .loc-card__name,
.section--wood .loc-card__name,
.section--walnut .loc-card__name,
.section--warm .loc-card__name,
.section--mahogany-gradient .loc-card__name,
.section--chianti-gradient .loc-card__name,
.section--imagebg .loc-card__name { color: var(--chianti-dark) !important; }
.section--dark .loc-card__address,
.section--dark-wood .loc-card__address,
.section--wood .loc-card__address,
.section--walnut .loc-card__address,
.section--warm .loc-card__address,
.section--mahogany-gradient .loc-card__address,
.section--chianti-gradient .loc-card__address,
.section--imagebg .loc-card__address,
.section--dark .loc-card__status,
.section--dark-wood .loc-card__status,
.section--wood .loc-card__status,
.section--walnut .loc-card__status,
.section--warm .loc-card__status,
.section--mahogany-gradient .loc-card__status,
.section--chianti-gradient .loc-card__status,
.section--imagebg .loc-card__status,
.section--dark .loc-card__status *,
.section--dark-wood .loc-card__status *,
.section--wood .loc-card__status *,
.section--walnut .loc-card__status *,
.section--warm .loc-card__status *,
.section--mahogany-gradient .loc-card__status *,
.section--chianti-gradient .loc-card__status *,
.section--imagebg .loc-card__status * { color: var(--walnut) !important; }
/* Location cards */
.loc-card {
    background: var(--cream-bright) !important;
    border: 1px solid rgba(96, 57, 19, 0.22) !important;
    color: var(--walnut) !important;
    box-shadow: 0 6px 20px -10px rgba(96, 57, 19, 0.25);
}
.loc-card:hover {
    border-color: var(--crimson) !important;
    box-shadow: 0 14px 32px -12px rgba(151, 11, 51, 0.25) !important;
}
.loc-card__image { background: var(--cream-soft) !important; }
.loc-card__name { color: var(--chianti-dark) !important; }
.loc-card__address { color: var(--walnut) !important; }
.loc-card__status { color: var(--walnut) !important; }
.loc-card__btn {
    border: 1px solid rgba(96, 57, 19, 0.45) !important;
    color: var(--chianti-dark) !important;
    background: transparent !important;
}
.loc-card__btn:hover,
.loc-card__btn:focus-visible {
    border-color: var(--crimson) !important;
    background: rgba(151, 11, 51, 0.08) !important;
    color: var(--crimson) !important;
}
.loc-card__btn--primary {
    background: var(--gradient-crimson) !important;
    color: var(--cream) !important;
    border-color: var(--crimson) !important;
}
.loc-card__btn--primary:hover {
    filter: brightness(1.06);
    color: var(--cream) !important;
    box-shadow: 0 4px 14px rgba(151, 11, 51, 0.35);
}
.loc-card__link { color: var(--chianti-dark) !important; }
.loc-card__link:hover { color: var(--crimson) !important; }
/* Menu cards (carousel) */
.menu-card {
    background: var(--cream-bright) !important;
    border: 1px solid rgba(96, 57, 19, 0.22) !important;
    color: var(--walnut) !important;
}
.menu-card:hover { border-color: var(--crimson) !important; }
.menu-card__name { color: var(--chianti-dark) !important; }
.menu-card__origin { color: var(--crimson) !important; }
.menu-card__desc { color: var(--walnut) !important; }
.menu-card__price { color: var(--chianti-dark) !important; }
.menu-card__footer { border-top-color: rgba(96, 57, 19, 0.2) !important; }
.menu-card__allergens li {
    color: var(--chianti-dark) !important;
    border-color: rgba(151, 11, 51, 0.35) !important;
}
/* Press cards (on cream by default) */
.press-card {
    background: var(--cream-bright) !important;
    border: 1px solid rgba(96, 57, 19, 0.22) !important;
    color: var(--walnut) !important;
    backdrop-filter: none !important;
}
.press-card:hover { border-color: var(--crimson) !important; }
.press-card__publication { color: var(--chianti-dark) !important; }
.press-card__quote { color: var(--walnut) !important; }
.press-card__author { color: var(--crimson) !important; }
.press-card__date { color: rgba(74, 55, 40, 0.6) !important; }
.press-card__quote-mark { color: var(--crimson) !important; }
.press-card__link,
.press-card__link span { color: var(--crimson) !important; }
.press-card__link:hover,
.press-card__link:hover span { color: var(--chianti-dark) !important; }
/* Happening tiles (compact, on index page) */
.happening-tile--compact {
    background: var(--cream-bright) !important;
    border: 1px solid rgba(96, 57, 19, 0.22) !important;
}
.happening-tile--compact .happening-tile__image::after {
    background: none !important;
}
.happening-tile--compact .happening-tile__body { background: transparent; }
.happening-tile--compact .happening-tile__name { color: var(--chianti-dark) !important; }
.happening-tile--compact .happening-tile__label { color: var(--crimson) !important; }
.happening-tile--compact .happening-tile__tagline { color: var(--walnut) !important; }
.happening-tile--compact .happening-tile__price { color: var(--chianti-dark) !important; }
.happening-tile--compact .happening-tile__cta { color: var(--crimson) !important; }
/* Happening live cards on homepage (sit on .section--chianti-gradient — dark) */
.section--chianti-gradient .happening-live-card {
    background: rgba(255, 245, 225, 0.95) !important;
    border-color: var(--gold-on-dark) !important;
    color: var(--walnut) !important;
}
.section--chianti-gradient .happening-live-card__name { color: var(--chianti-dark) !important; }
.section--chianti-gradient .happening-live-card__desc { color: var(--walnut) !important; }
.section--chianti-gradient .happening-live-card__schedule { color: var(--crimson) !important; }
.section--chianti-gradient .happening-live-card::before { background: var(--crimson) !important; }
.section--chianti-gradient .happening-live-card__link { color: var(--crimson) !important; }
/* Reviews aggregate/carousel on homepage (sits in a dark section currently) */
.reviews-showcase { color: var(--cream); }
.reviews-aggregate__rating { color: var(--gold-on-dark) !important; }
.reviews-aggregate__count,
.reviews-aggregate__location { color: rgba(245, 235, 220, 0.9) !important; }
.review-card {
    background: rgba(245, 235, 220, 0.08) !important;
    border-color: rgba(245, 235, 220, 0.18) !important;
    color: var(--cream) !important;
}
.review-card__text { color: var(--cream) !important; }
.review-card__author { color: var(--gold-on-dark) !important; }
.review-card__when { color: rgba(245, 235, 220, 0.7) !important; }
.review-card__source { color: var(--gold-on-dark) !important; }
/* Instagram grid (transparent) */
.ig-grid__follow { color: var(--chianti-dark) !important; border-color: var(--crimson) !important; }
.ig-grid__follow:hover { background: var(--crimson) !important; color: var(--cream) !important; }
/* Newsroom card (cream grid) */
.newsroom-grid-section { background: transparent !important; }
.newsroom-card {
    background: var(--cream-bright) !important;
    border-color: rgba(96, 57, 19, 0.22) !important;
}
.newsroom-card__publication { color: var(--chianti-dark) !important; }
.newsroom-card__quote,
.newsroom-card__title { color: var(--walnut) !important; }
.newsroom-card__author { color: var(--crimson) !important; }
.newsroom-card__date { color: rgba(74, 55, 40, 0.6) !important; }
.newsroom-card__cta {
    color: var(--crimson) !important;
    border-top-color: rgba(96, 57, 19, 0.2) !important;
}
/* Newsroom featured — stays on mahogany */
.newsroom-feature-card {
    background: var(--gradient-mahogany) !important;
    color: var(--cream) !important;
}
.newsroom-feature-card__publication { color: var(--cream) !important; }
.newsroom-feature-card__quote { color: var(--cream) !important; }
.newsroom-feature-card__author { color: var(--gold-on-dark) !important; }
.newsroom-feature-card__badge { background: var(--gold-on-dark) !important; color: var(--mahogany-dark) !important; }
.newsroom-feature-card__cta { color: var(--gold-on-dark) !important; }
.newsroom-feature-card__quote-mark { color: var(--gold-on-dark) !important; }
.newsroom-feature-card__date { color: rgba(245, 235, 220, 0.6) !important; }
/* Happening loc block (grouped happenings index) on cream */
.happenings-index-hero { background: var(--gradient-mahogany) !important; color: var(--cream) !important; }
.happenings-index-hero__title,
.happenings-index-hero .section-title { color: var(--cream) !important; }
.happenings-index-hero__lede { color: rgba(245, 235, 220, 0.9) !important; }
.happening-loc-block { border-bottom-color: rgba(96, 57, 19, 0.22) !important; }
.happening-loc-block__name { color: var(--chianti-dark) !important; }
.happening-loc-block__kicker { color: var(--crimson) !important; }
.happening-loc-block__kicker svg { color: var(--mahogany) !important; }
.happening-loc-block__meta { color: var(--walnut) !important; }
.happening-loc-block__meta a { color: var(--crimson) !important; }
.happening-loc-block__meta a:hover { color: var(--chianti-dark) !important; }
.happening-loc-block.is-current {
    background: rgba(151, 11, 51, 0.05) !important;
}
/* Happening hero specifics on individual happening page */
.happening-hero__tagline { color: var(--cream) !important; }
/* Happening-more grid (bottom of happening pages) */
.happening-more { background: var(--cream-soft) !important; }
.happening-more .section-title { color: var(--chianti-dark) !important; }
.happening-more-card {
    background: var(--cream-bright) !important;
    border-color: rgba(96, 57, 19, 0.22) !important;
}
.happening-more-card:hover { border-color: var(--crimson) !important; }
.happening-more-card__name { color: var(--chianti-dark) !important; }
.happening-more-card__label { color: var(--crimson) !important; }
/* Happening reserve section (chianti gradient) */
.happening-reserve { background: var(--gradient-crimson) !important; color: var(--cream) !important; }
.happening-reserve .section-title,
.happening-reserve h2 { color: var(--cream) !important; }
.happening-reserve .section-label { color: var(--gold-on-dark) !important; }
.happening-reserve__chip {
    background: rgba(245, 235, 220, 0.12) !important;
    border-color: rgba(245, 235, 220, 0.3) !important;
}
.happening-reserve__chip:hover {
    background: rgba(245, 235, 220, 0.22) !important;
    border-color: var(--cream) !important;
}
.happening-reserve__chip-name { color: var(--cream) !important; }
.happening-reserve__chip-city { color: rgba(245, 235, 220, 0.8) !important; }
/* Location page blocks */
.loc-glance { background: var(--gradient-mahogany) !important; border-bottom: 1px solid rgba(196, 149, 106, 0.3) !important; }
.loc-glance *,
.loc-glance__value { color: var(--cream) !important; }
.loc-glance__label { color: var(--gold-on-dark) !important; }
.loc-glance__value[href],
.loc-glance__value a { color: var(--gold-on-dark) !important; }
.loc-glance__value[href]:hover { color: var(--cream) !important; }
.loc-hero {
    background: var(--mahogany-dark) !important;
}
.loc-hero .section-bg::after {
    background: rgba(75, 45, 16, 0.72) !important;
}
/* Map card on location page */
.loc-map__link {
    background: var(--cream-bright) !important;
    border-color: rgba(96, 57, 19, 0.22) !important;
    color: var(--walnut) !important;
}
.loc-map__link:hover { border-color: var(--crimson) !important; }
.loc-map__preview { color: var(--walnut) !important; }
.loc-map__preview svg { color: var(--crimson) !important; }
.loc-map__preview strong { color: var(--chianti-dark) !important; }
.loc-map__cta { color: var(--crimson) !important; }
/* ========== 8. FORMS ========== */
.inquiry-form {
    background: var(--cream-bright) !important;
    border: 1px solid rgba(96, 57, 19, 0.22) !important;
    color: var(--walnut) !important;
    box-shadow: 0 8px 32px -18px rgba(96, 57, 19, 0.35);
}
.inquiry-form,
.inquiry-form h1, .inquiry-form h2, .inquiry-form h3,
.inquiry-form p, .inquiry-form li, .inquiry-form label,
.inquiry-form strong, .inquiry-form em { color: var(--walnut); }
.inquiry-form h2,
.inquiry-form__title { color: var(--chianti-dark) !important; }
.inquiry-form__subtitle { color: var(--walnut) !important; }
.inquiry-form strong { color: var(--chianti-dark) !important; }
.inquiry-form em { color: var(--crimson) !important; }
.inquiry-form .form-group label { color: var(--chianti-dark) !important; }
.inquiry-form .form-group input,
.inquiry-form .form-group select,
.inquiry-form .form-group textarea {
    background: #FFFDF7 !important;
    color: var(--walnut) !important;
    border-color: rgba(96, 57, 19, 0.3) !important;
}
.inquiry-form .form-group input:focus,
.inquiry-form .form-group select:focus,
.inquiry-form .form-group textarea:focus {
    border-color: var(--crimson) !important;
    box-shadow: 0 0 0 3px rgba(151, 11, 51, 0.12);
}
.inquiry-form .form-group input::placeholder,
.inquiry-form .form-group textarea::placeholder { color: rgba(74, 55, 40, 0.5) !important; }
/* Careers form (jobs.html) */
.careers-form {
    background: var(--cream-bright) !important;
    border-color: rgba(96, 57, 19, 0.22) !important;
    color: var(--walnut) !important;
}
.careers-form__label { color: var(--chianti-dark) !important; }
.careers-form__optional { color: rgba(74, 55, 40, 0.6) !important; }
.careers-form__grid input[type="text"],
.careers-form__grid input[type="email"],
.careers-form__grid input[type="tel"],
.careers-form__grid select,
.careers-form__grid textarea {
    background: #FFFDF7 !important;
    color: var(--walnut) !important;
    border-color: rgba(96, 57, 19, 0.3) !important;
}
.careers-form__grid input[type="file"] {
    background: #FFFDF7 !important;
    color: var(--walnut) !important;
    border-color: rgba(96, 57, 19, 0.3) !important;
}
.careers-form__note { color: rgba(74, 55, 40, 0.7) !important; }
.careers-form__note a { color: var(--crimson) !important; }
.careers-form__actions { border-top-color: rgba(96, 57, 19, 0.2) !important; }
/* Generic inputs/selects outside forms, on cream body */
select,
option {
    color: var(--walnut) !important;
    background-color: var(--cream-bright) !important;
}
/* Dark contexts flip back */
.section--dark select, .section--dark option,
.section--wood select, .section--wood option,
.section--walnut select, .section--walnut option,
.section--warm select, .section--warm option,
.section--mahogany-gradient select, .section--mahogany-gradient option,
.section--imagebg select, .section--imagebg option {
    color: var(--cream) !important;
    background-color: rgba(75, 45, 16, 0.95) !important;
}
.footer select, .footer option { color: var(--cream) !important; background-color: var(--mahogany-dark) !important; }
/* Body inputs + textareas defaults */
input:not([type="submit"]):not([type="button"]):not([type="checkbox"]):not([type="radio"]):not([type="reset"]),
textarea {
    background-color: var(--cream-bright);
    color: var(--walnut);
    border-color: rgba(96, 57, 19, 0.3);
}
input::placeholder, textarea::placeholder { color: rgba(74, 55, 40, 0.5); }
/* Inside dark sections, inputs flip */
.section--dark input, .section--dark textarea,
.section--wood input, .section--wood textarea,
.section--walnut input, .section--walnut textarea,
.section--warm input, .section--warm textarea,
.section--mahogany-gradient input, .section--mahogany-gradient textarea,
.section--imagebg input, .section--imagebg textarea,
.footer input, .footer textarea {
    background-color: rgba(245, 235, 220, 0.1);
    color: var(--cream);
    border-color: rgba(245, 235, 220, 0.25);
}
/* ========== 9. BUTTONS — crimson primary, mahogany secondary ========== */
.btn-primary {
    background: var(--gradient-crimson) !important;
    color: var(--cream) !important;
    border-color: var(--crimson) !important;
}
.btn-primary:hover { filter: brightness(1.08); color: var(--cream) !important; }
.btn-secondary {
    background: transparent !important;
    border-color: var(--chianti-dark) !important;
    color: var(--chianti-dark) !important;
}
.btn-secondary:hover {
    background: var(--chianti-dark) !important;
    color: var(--cream) !important;
}
/* btn-secondary on dark backgrounds: switch to cream outline */
.section--dark .btn-secondary,
.section--dark-wood .btn-secondary,
.section--wood .btn-secondary,
.section--walnut .btn-secondary,
.section--warm .btn-secondary,
.section--mahogany-gradient .btn-secondary,
.section--chianti-gradient .btn-secondary,
.section--imagebg .btn-secondary,
.section--parallax-banner .btn-secondary,
.subpage-hero .btn-secondary,
.contact-hero .btn-secondary,
.about-hero .btn-secondary,
.newsroom-hero .btn-secondary,
.happening-hero .btn-secondary,
.happenings-index-hero .btn-secondary,
.picker-hero .btn-secondary,
.loc-hero .btn-secondary,
.hero .btn-secondary {
    border-color: var(--cream) !important;
    color: var(--cream) !important;
}
.section--dark .btn-secondary:hover,
.section--dark-wood .btn-secondary:hover,
.section--wood .btn-secondary:hover,
.section--walnut .btn-secondary:hover,
.section--warm .btn-secondary:hover,
.section--mahogany-gradient .btn-secondary:hover,
.section--chianti-gradient .btn-secondary:hover,
.section--imagebg .btn-secondary:hover,
.section--parallax-banner .btn-secondary:hover,
.subpage-hero .btn-secondary:hover,
.contact-hero .btn-secondary:hover,
.about-hero .btn-secondary:hover,
.newsroom-hero .btn-secondary:hover,
.happening-hero .btn-secondary:hover,
.happenings-index-hero .btn-secondary:hover,
.picker-hero .btn-secondary:hover,
.loc-hero .btn-secondary:hover,
.hero .btn-secondary:hover {
    background: var(--cream) !important;
    color: var(--mahogany-dark) !important;
}
/* Location hero tagline uses --text-primary; ensure cream on its mahogany bg */
.loc-hero__title { color: var(--cream) !important; }
.loc-hero__tagline { color: rgba(245, 235, 220, 0.92) !important; }
/* Press-card rating badge — make background a known cream, text chianti-dark */
.press-card__rating {
    background: var(--chianti-dark) !important;
    color: var(--cream) !important;
}
.newsroom-card__rating {
    background: var(--chianti-dark) !important;
    color: var(--cream) !important;
}
/* Happening tile CTA arrows inside cream tiles */
.happening-tile--compact .happening-tile__cta,
.happening-tile--compact .happening-tile__cta * { color: var(--crimson) !important; }
/* Parallax events banner title — deeper overlay for legibility over bg image */
.section--parallax-banner,
.section--parallax-banner .section-title,
.section--parallax-banner .section-title--xl,
.section--parallax-banner h2,
.section--parallax-banner p {
    color: var(--cream) !important;
    text-shadow: 0 2px 20px rgba(75, 45, 16, 0.9);
}
.parallax-banner__overlay {
    background: rgba(75, 45, 16, 0.72) !important;
}
.btn-gold,
.btn-gold--sm {
    background: var(--gradient-gold-rich) !important;
    color: var(--mahogany-dark) !important;
    border-color: var(--gold-on-dark) !important;
}
.btn-outline-gold {
    background: transparent !important;
    border-color: var(--gold-on-dark) !important;
    color: var(--chianti-dark) !important;
}
.btn-chianti {
    background: var(--gradient-chianti) !important;
    color: var(--cream) !important;
}
/* ========== 10. SCROLL + AMBIENT ========== */
.scroll-progress {
    background: var(--crimson) !important;
}
/* Kill stale .open-badge legacy indicator */
.location-status .open-badge,
.location-status .status-text { display: none !important; }
/* Location bar partial (legacy, rarely rendered) */
.location-bar {
    background: var(--mahogany-dark) !important;
}
/* ========== 11. KITCHEN TEASER — sits on mahogany dark, already OK ========== */
.kitchen { background: var(--mahogany-dark) !important; }
.kitchen__content {
    background: var(--mahogany) !important;
}
.kitchen__headline { color: var(--cream) !important; }
.kitchen__line--italic { color: var(--gold-on-dark) !important; }
.kitchen__tagline { color: rgba(245, 235, 220, 0.92) !important; }
.kitchen__course {
    color: var(--gold-on-dark) !important;
    border-color: rgba(217, 180, 134, 0.4) !important;
    background: rgba(217, 180, 134, 0.08) !important;
}
.kitchen__cta-sub { color: rgba(245, 235, 220, 0.7) !important; }
/* ========== 12. PICKER LANDING PAGES ========== */
.picker-hero__title { color: var(--cream) !important; }
.picker-hero__lede { color: rgba(245, 235, 220, 0.9) !important; }
/* ========== 13. AWAITING STATES + MISC ========== */
.newsroom-awaiting {
    background: rgba(96, 57, 19, 0.04) !important;
    border-color: rgba(96, 57, 19, 0.25) !important;
}
.newsroom-awaiting__label { color: var(--crimson) !important; }
.newsroom-awaiting p { color: var(--walnut) !important; }
.loc-gallery__item { background: var(--cream-soft) !important; }
.loc-gallery__note { color: rgba(74, 55, 40, 0.6) !important; }
.loc-gallery__note code {
    background: rgba(96, 57, 19, 0.08) !important;
    color: var(--crimson) !important;
}
.section-lede { color: var(--walnut) !important; }
/* Utility: reduce-motion respect for the ambient body gradients */
@media (prefers-reduced-motion: reduce) {
    body { background-image: none !important; }
}
/* ==========================================
   PALETTE — ROUND 4 (2026-04-21, PM)
   Owner feedback pass:
   • Crimson has no contrast on brown — pull crimson off all brown backdrops
     and replace with cream / gold-on-dark.
   • Happenings section must read as ONE thing, not a cream card floating in
     red. Convert it to a single cream paper section, keep crimson accents
     as type only.
   • Kill the vertical spacer bands above/below Our Story (story-split).
   • Remove hero scroll indicator (overlaps logo + CTAs on short viewports).
   • Stop the brown stack: Events → Instagram → Signup → Footer. Vary them.
   ========================================== */
/* ----- 4.1 Hero scroll indicator: off ----- */
.scroll-indicator,
.hero .scroll-indicator { display: none !important; }
/* ----- 4.2 Story split: no vertical padding on the wrapping section.
   `.section--full-bleed` only killed horizontal padding; the
   `.section { padding: var(--section-padding) }` rule was still adding
   80–140px of brown/cream band above and below. The split is already
   edge-to-edge with its own internal padding. ----- */
.section--full-bleed.story-split,
.story-split,
section.section.story-split {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}
/* mobile stack: story split content used to flip to midnight — keep it cream
   so it matches the body and the section above/below. */
@media (max-width: 1024px) {
    .story-split__content {
        background: var(--cream-soft) !important;
        color: var(--walnut) !important;
        margin-left: 0 !important;
    }
}
/* ----- 4.3 Happenings section: unify as one cream-paper moment -----
   Was: crimson→mahogany gradient with cream cards floating on top (reads as
   two stacked layers). Now: cream paper section, crimson is reserved for
   the schedule / name / link accents only. Matches the textured-paper
   rhythm used elsewhere. */
.section-happenings,
.section.section-happenings.section--chianti-gradient {
    background: var(--cream-soft) !important;
    color: var(--walnut) !important;
}
.section-happenings::before {
    /* kill the chianti radial highlight layered on top */
    display: none !important;
}
.section-happenings .section-title,
.section-happenings h2,
.section-happenings h3 { color: var(--chianti-dark) !important; }
.section-happenings .section-label { color: var(--crimson) !important; }
.section-happenings .section-label::before { background: var(--crimson) !important; }
.section-happenings p,
.section-happenings li,
.section-happenings address { color: var(--walnut) !important; }
.section-happenings .link-arrow { color: var(--crimson) !important; }
.section-happenings .link-arrow:hover { color: var(--chianti-dark) !important; }
/* Happenings cards: shed the cream-inside-cream look. Sit flat on the paper
   with a fine warm border + crimson top rule so they read as sections of the
   same surface, not floating cards. */
.section-happenings .happenings-live {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 1.5rem;
    margin-top: 2rem;
}
.section-happenings .happening-live-card,
.section--chianti-gradient .happening-live-card {
    background: transparent !important;
    border: none !important;
    border-top: 2px solid rgba(151, 11, 51, 0.35) !important;
    padding: 1.5rem 0.25rem 0 !important;
    color: var(--walnut) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
}
.section-happenings .happening-live-card__header,
.section--chianti-gradient .happening-live-card__header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-bottom: 0.75rem;
}
.section-happenings .happening-live-card__schedule,
.section--chianti-gradient .happening-live-card__schedule { color: var(--crimson) !important; }
.section-happenings .happening-live-card__name,
.section--chianti-gradient .happening-live-card__name {
    font-family: var(--font-display);
    font-size: clamp(1.3rem, 2.2vw, 1.65rem);
    font-weight: 400;
    color: var(--chianti-dark) !important;
    margin: 0 0 0.5rem;
    line-height: 1.25;
}
.section-happenings .happening-live-card__desc,
.section--chianti-gradient .happening-live-card__desc {
    color: var(--walnut) !important;
    font-family: var(--font-body);
    line-height: 1.6;
    margin-bottom: 1rem;
}
.section-happenings .happening-live-card__link,
.section--chianti-gradient .happening-live-card__link {
    color: var(--crimson) !important;
    font-family: var(--font-ui);
    font-size: 0.85rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}
.section-happenings .happening-live-card__link:hover,
.section--chianti-gradient .happening-live-card__link:hover { color: var(--chianti-dark) !important; }
/* ----- 4.4 Crimson on brown: replace with cream + gold -----
   Any time the crimson accent is laid on a mahogany / image-brown surface
   it disappears. Kill those uses and flip to cream/gold which DO contrast. */
/* Parallax banner (Host Your Next Event) — stop the crimson half-overlay.
   Use a deep mahogany scrim with a thin gold top rule for separation. */
.section--parallax-banner {
    position: relative;
    isolation: isolate;
}
.section--parallax-banner .parallax-banner__overlay {
    background:
        rgba(75, 45, 16, 0.8) !important;
}
.section--parallax-banner::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background: var(--gold-on-dark);
    z-index: 2;
}
.section--parallax-banner .btn-primary {
    background: var(--gradient-gold-rich) !important;
    color: var(--mahogany-dark) !important;
    border-color: var(--gold-on-dark) !important;
}
.section--parallax-banner .btn-primary:hover {
    /* Hover lays solid mahogany over the gold (interactions.css), so the label
       flips to cream like every other gold button. It used to stay dark brown,
       brown on brown ("Plan Your Event", Silvia 2026-09-17). */
    color: var(--cream) !important;
}
/* Reviews / press / instagram: crimson title lines on brown → gold */
.section-reviews .section-label,
.section--press .section-label,
.section-instagram .section-label { color: var(--gold-on-dark) !important; }
.section-reviews .section-label::before,
.section--press .section-label::before,
.section-instagram .section-label::before { background: var(--gold-on-dark) !important; }
/* Footer: gold-on-brown for top rule (crimson disappears there). */
.footer::before {
    background: var(--gold-on-dark) !important;
    opacity: 0.7;
}
/* Footer social chips: cream outline, drop the invisible crimson tint */
.footer-social a {
    background: rgba(245, 235, 220, 0.06) !important;
    border-color: rgba(245, 235, 220, 0.25) !important;
    color: var(--cream) !important;
}
.footer-social a:hover {
    background: rgba(245, 235, 220, 0.14) !important;
    border-color: var(--gold-on-dark) !important;
    color: var(--gold-on-dark) !important;
}
/* ----- 4.5 Bottom stack: break the brown monotony -----
   Stack was: events(brown) → instagram(brown) → signup(brown) → footer(brown).
   Now: events(brown image) → instagram(CREAM) → signup(CREAM) → footer(dark).
   The cream pair gives breathing room and the footer reads as a clear end
   cap instead of one more brown band. */
.section.section-instagram,
.section.section-instagram.section--dark-wood {
    background: var(--cream) !important;
    color: var(--walnut) !important;
}
.section-instagram::before { display: none !important; }
.section-instagram .section-label { color: var(--crimson) !important; }
.section-instagram .section-label::before { background: var(--crimson) !important; }
.section-instagram .section-title,
.section-instagram h2 { color: var(--chianti-dark) !important; }
.section-instagram p { color: var(--walnut) !important; }
.section-instagram .ig-grid__follow {
    color: var(--chianti-dark) !important;
    border-color: var(--crimson) !important;
}
.section-instagram .ig-grid__follow:hover {
    background: var(--crimson) !important;
    color: var(--cream) !important;
}
/* Signup on homepage: force the textured-paper cream through; earlier round
   let `.section--warm` win the cascade and it rendered brown. Home signup
   has BOTH classes — textured-paper must win. */
.section#signup,
section.section.section--warm.section--textured-paper {
    background: var(--cream-soft) !important;
    color: var(--walnut) !important;
}
.section#signup .section-title,
section.section.section--warm.section--textured-paper .section-title { color: var(--chianti-dark) !important; }
.section#signup p,
.section#signup .signup-subtitle,
section.section.section--warm.section--textured-paper p,
section.section.section--warm.section--textured-paper .signup-subtitle { color: var(--walnut) !important; }
.section#signup .form-input,
.section#signup .form-select,
section.section.section--warm.section--textured-paper .form-input,
section.section.section--warm.section--textured-paper .form-select {
    background-color: #FFFDF7 !important;
    color: var(--walnut) !important;
    border-color: rgba(96, 57, 19, 0.3) !important;
}
.section#signup .form-input::placeholder,
section.section.section--warm.section--textured-paper .form-input::placeholder { color: rgba(74, 55, 40, 0.5) !important; }
/* `section--warm` on its OWN (signup.njk, private-events inquiry) stays
   mahogany — those pages don't have the brown stack problem. */
/* ----- 4.6 Separation: give each dark section a crisp gold hairline so even
   when two dark sections sit next to each other, the seam reads. ----- */
.section--dark-wood + .section--dark-wood,
.section--mahogany-gradient + .section--dark-wood,
.section--dark-wood + .section--mahogany-gradient,
.section--mahogany-gradient + .section--mahogany-gradient,
.section--parallax-banner + .section--dark-wood,
.section--dark-wood + .section--parallax-banner {
    border-top: 1px solid rgba(217, 180, 134, 0.22);
}
/* ==========================================
   PALETTE — ROUND 5 (2026-04-21, late PM)
   Owner: "word of mouth, as featured in, host your next event all brown —
   where's the separation?"
   • Flip Press to CREAM paper (press cards were already cream-designed —
     floating them on mahogany was the same bug we fixed on happenings).
   • Hard-separate adjacent dark sections with a gold seam line + subtle
     tone shift.
   • Events banner title/copy: force cream with enough specificity to beat
     the global h2 chianti rule (bug: wine-red on brown).
   ========================================== */
/* ----- 5.1 Press section: cream paper, crimson accents on type only ----- */
.section.section--press,
.section.section--press.section--mahogany-gradient {
    background: var(--cream) !important;
    color: var(--walnut) !important;
}
.section--press::before,
.section--press::after { display: none !important; }
.section--press .section-label { color: var(--crimson) !important; }
.section--press .section-label::before { background: var(--crimson) !important; }
.section--press .section-title,
.section--press h2 { color: var(--chianti-dark) !important; }
.section--press p { color: var(--walnut) !important; }
.section--press .link-arrow { color: var(--crimson) !important; }
.section--press .link-arrow:hover { color: var(--chianti-dark) !important; }
/* Press card chrome already assumes cream — re-assert in case the dark-on
   rules above tried to flip the * text color. */
.section--press .press-card,
.section--press .press-card * { color: inherit; }
.section--press .press-card { color: var(--walnut) !important; }
.section--press .press-card__publication { color: var(--chianti-dark) !important; }
.section--press .press-card__quote { color: var(--walnut) !important; }
.section--press .press-card__author { color: var(--crimson) !important; }
.section--press .press-card__link { color: var(--crimson) !important; }
/* ----- 5.2 Reviews section: stays mahogany, but make title + label truly
   cream/gold so they don't get undercut by the global h2:not rule. Uses
   high-specificity double-class + :not chain to beat (0,7,1). ----- */
.section-reviews.section-reviews h2.section-title:not(.__a):not(.__b):not(.__c):not(.__d):not(.__e):not(.__f):not(.__g):not(.__h),
.section-reviews.section-reviews h2:not(.__a):not(.__b):not(.__c):not(.__d):not(.__e):not(.__f):not(.__g):not(.__h),
.section-reviews.section-reviews .section-title {
    color: var(--cream) !important;
}
.section-reviews.section-reviews .section-label { color: var(--gold-on-dark) !important; }
.section-reviews.section-reviews .section-label::before { background: var(--gold-on-dark) !important; }
/* ----- 5.3 Events parallax: force cream title + cream body copy.
   Same specificity trick — the stock h2:not rule was overriding our overlay
   text to wine red on the brown image. ----- */
.section--parallax-banner.section--parallax-banner h2.section-title:not(.__a):not(.__b):not(.__c):not(.__d):not(.__e):not(.__f):not(.__g):not(.__h),
.section--parallax-banner.section--parallax-banner h2:not(.__a):not(.__b):not(.__c):not(.__d):not(.__e):not(.__f):not(.__g):not(.__h),
.section--parallax-banner.section--parallax-banner .section-title,
.section--parallax-banner.section--parallax-banner .section-title--xl {
    color: var(--cream) !important;
    text-shadow: 0 2px 24px rgba(26, 14, 6, 0.92);
}
.section--parallax-banner.section--parallax-banner p,
.section--parallax-banner.section--parallax-banner .events-subtitle {
    color: rgba(245, 235, 220, 0.94) !important;
    text-shadow: 0 1px 12px rgba(26, 14, 6, 0.8);
}
/* ----- 5.4 Visible seams between remaining dark neighbors ----- */
.section--dark-wood + .section--parallax-banner,
.section--parallax-banner + .section--dark-wood,
.section--dark-wood + .section--dark-wood,
.section--mahogany-gradient + .section--dark-wood,
.section--dark-wood + .section--mahogany-gradient {
    box-shadow: inset 0 1px 0 rgba(217, 180, 134, 0.35);
}
/* ==========================================
   PALETTE — ROUND 6 (2026-04-21, night)
   Owner asks for crimson to carry more weight:
   • Header / nav → crimson gradient (was mahogany).
   • Pick two prominent sections for crimson moments so the palette reads as
     three colors, not one: Reviews on homepage + picker-hero on the
     /locations and /menus landings.
   • Fix blending copy on picker-hero ("Two in Miami-Dade..."). The lede
     was walnut-colored from picker.css winning over our cream override —
     re-assert cream with higher specificity, and on crimson it reads clean.
   ========================================== */
/* ----- 6.1 Header / nav: dark brown, solid (owner 2026-09-17; was a crimson gradient) ----- */
.site-header {
    background: var(--mahogany-dark) !important;
    background-image: none !important;
    border-bottom: 1px solid rgba(217, 180, 134, 0.35) !important;
    box-shadow: 0 4px 20px rgba(40, 24, 8, 0.35) !important;
}
.site-header__location {
    background: rgba(245, 235, 220, 0.14) !important;
    border-color: rgba(245, 235, 220, 0.35) !important;
}
.site-header__location:hover,
.site-header__location[aria-expanded="true"] {
    background: rgba(245, 235, 220, 0.22) !important;
    border-color: var(--cream) !important;
}
.site-header__reserve {
    background: var(--gradient-gold-rich) !important;
    /* Dark brown on solid gold (6.4:1). Red on this gold measured 4.49:1,
       just under AA, once the gold stopped being a gradient. */
    color: var(--mahogany-dark) !important;
    border-color: var(--gold-on-dark) !important;
}
.site-header__reserve:hover {
    filter: brightness(1.08);
    box-shadow: 0 4px 16px rgba(217, 180, 134, 0.5);
}
/* Hover lays solid mahogany over gold buttons (interactions.css ::before),
   so their text flips to cream instead of staying dark on dark. */
.site-header__reserve:hover,
.site-header__reserve:focus-visible,
.btn-gold:hover,
.btn-gold:focus-visible,
.btn-gold--sm:hover,
.btn-gold--sm:focus-visible {
    color: var(--cream) !important;
}
.site-header__nav-link { color: var(--cream) !important; }
.site-header__nav-link:hover { color: var(--gold-on-dark) !important; }
.site-header__nav-link::after { background: var(--gradient-gold-rich) !important; }
.site-header__submenu {
    background: var(--mahogany-dark) !important;
    border-color: rgba(217, 180, 134, 0.3) !important;
}
.site-header__submenu li a { color: rgba(245, 235, 220, 0.9) !important; }
.site-header__submenu li a:hover {
    color: var(--gold-on-dark) !important;
    background: rgba(245, 235, 220, 0.1) !important;
}
/* Mobile drawer flips to match */
.drawer__panel {
    background: var(--mahogany-dark) !important;
    border-left: 1px solid rgba(217, 180, 134, 0.3) !important;
}
.drawer__title { color: var(--gold-on-dark) !important; }
.drawer__close { color: var(--gold-on-dark) !important; border-color: rgba(217, 180, 134, 0.4) !important; }
.drawer__nav-group ul li a { color: var(--cream) !important; border-bottom-color: rgba(245, 235, 220, 0.14) !important; }
.drawer__nav-group ul li a:hover { color: var(--gold-on-dark) !important; }
.drawer__nav-label { color: var(--gold-on-dark) !important; }
.drawer__location-chip.is-active .drawer__location-chip-name,
.drawer__location-chip.is-active .drawer__location-chip-city { color: var(--crimson-dark) !important; }
.drawer__action--primary span,
.drawer__action--primary small,
.drawer__action--primary svg { color: var(--crimson-dark) !important; }
/* Location bar (legacy) also gets the crimson language if it renders */
.location-bar {
    background: var(--mahogany-dark) !important;
}
/* ----- 6.2 Reviews section on homepage: flip to deep crimson -----
   Breaks up the cream-heavy midsection and gives the testimonials a warm
   red moment. Cards pivot from glass-on-mahogany to cream-paper-on-crimson.
   */
.section.section-reviews,
.section.section-reviews.section--dark-wood {
    background: var(--crimson) !important;
    color: var(--cream) !important;
}
.section-reviews::before { display: none !important; }
.section-reviews .section-label { color: var(--gold-on-dark) !important; }
.section-reviews .section-label::before { background: var(--gold-on-dark) !important; }
.section-reviews .section-title,
.section-reviews h2 { color: var(--cream) !important; }
.section-reviews p { color: rgba(245, 235, 220, 0.92) !important; }
.section-reviews .reviews-aggregate__rating { color: var(--gold-on-dark) !important; }
.section-reviews .reviews-aggregate__count,
.section-reviews .reviews-aggregate__location { color: rgba(245, 235, 220, 0.9) !important; }
.section-reviews .review-card {
    background: rgba(245, 235, 220, 0.1) !important;
    border-color: rgba(245, 235, 220, 0.22) !important;
    color: var(--cream) !important;
    backdrop-filter: blur(2px);
}
.section-reviews .review-card__text { color: var(--cream) !important; }
.section-reviews .review-card__author { color: var(--gold-on-dark) !important; }
.section-reviews .review-card__when { color: rgba(245, 235, 220, 0.72) !important; }
.section-reviews .review-card__source { color: var(--gold-on-dark) !important; }
/* ----- 6.3 Picker hero: crimson gradient + high-contrast lede -----
   The subhead copy ("Two in Miami-Dade, one in Broward...") was walnut
   because picker.css hard-coded `color: var(--text-primary)` and was
   beating our earlier cream override in specificity order. Re-assert with
   higher specificity and flip the hero bg to crimson for diversity. */
.picker-hero {
    background: var(--crimson) !important;
}
.picker-hero::before {
    background:
        none !important;
}
.picker-hero .section-label { color: var(--gold-on-dark) !important; }
.picker-hero .section-label::before { background: var(--gold-on-dark) !important; }
.picker-hero__title,
.picker-hero h1.picker-hero__title { color: var(--cream) !important; }
.picker-hero .picker-hero__lede,
section.picker-hero .picker-hero__lede,
.picker-hero p.picker-hero__lede {
    color: rgba(245, 235, 220, 0.94) !important;
    text-shadow: 0 1px 10px rgba(75, 6, 22, 0.55);
}
/* Same treatment for any other picker-style hero (menus landing) */
.picker-grid-section { background: var(--cream) !important; }
/* ----- 6.4 Other warm-dark sections: soften the "every brown is mahogany"
   feeling by letting section--chianti-gradient stay crimson-dominant where
   it's used on subpages (already is; just make sure text holds up). ----- */
.happening-reserve { background: var(--crimson) !important; }
/* ----- 6.5 Generic: any dark lede on subpage heroes ----- */
.subpage-hero .picker-hero__lede,
.contact-hero p,
.about-hero__content p.about-text,
.newsroom-hero p { color: rgba(245, 235, 220, 0.92) !important; }
/* ==========================================
   PALETTE — ROUND 7 (2026-04-21, emergency fix)
   The Kitchen teaser section (.kitchen) and the events-banner sections use
   dark backgrounds but DON'T carry a `--dark`/`--wood`/`--mahogany` class.
   Two earlier rules (h2:where-scope for titles, main>section:not(...) p/li
   for body copy) treated those sections as cream body. Result:
     • "Pasta fresca. / Salumi curato. / Buon appetito."  →  chianti-dark
       wine-red on mahogany (the "wine on brown" invisibility the owner
       has been flagging all evening)
     • "Pizza, pasta, and a Tuscan steakhouse"            →  walnut on
       mahogany (dark on dark)
     • "Dalla Salumeria / Panini / Pizza / Antipasti / Pasta Fresca /
        Carne & Pesce / Pranzetto / Dolci"                →  walnut on
       mahogany inside gold-border pills (dark on dark inside a ring)
   The :not exclusions above fix the generic rules. These rules below
   hard-pin every piece of kitchen + events-banner text to cream or gold
   so they can't regress again, using double-class specificity to beat any
   future pathological selectors. ----- */
/* ----- 7.1 Kitchen headline + tagline: cream / gold, never wine-red ----- */
.kitchen.kitchen .kitchen__headline,
.kitchen.kitchen h2.kitchen__headline,
.kitchen.kitchen .kitchen__line {
    color: var(--cream) !important;
    text-shadow: 0 1px 12px rgba(26, 14, 6, 0.55);
}
.kitchen.kitchen .kitchen__line--italic {
    color: var(--gold-on-dark) !important;
    text-shadow: 0 1px 12px rgba(26, 14, 6, 0.55);
}
.kitchen.kitchen .kitchen__tagline,
.kitchen.kitchen p.kitchen__tagline {
    color: rgba(245, 235, 220, 0.95) !important;
    text-shadow: 0 1px 8px rgba(26, 14, 6, 0.5);
}
.kitchen.kitchen .kitchen__cta-sub { color: rgba(245, 235, 220, 0.78) !important; }
/* ----- 7.2 Kitchen course pills: gold text inside gold-border rings, on
   a faint gold wash. Readable on mahogany. ----- */
.kitchen.kitchen .kitchen__courses,
.kitchen.kitchen ul.kitchen__courses { color: var(--gold-on-dark) !important; }
.kitchen.kitchen .kitchen__course,
.kitchen.kitchen li.kitchen__course {
    color: var(--gold-on-dark) !important;
    background: rgba(217, 180, 134, 0.12) !important;
    border: 1px solid rgba(217, 180, 134, 0.5) !important;
}
/* ----- 7.3 Kitchen section label: already gold via section-label rules,
   but the on-cream override could beat it. Re-assert. ----- */
.kitchen.kitchen .section-label { color: var(--gold-on-dark) !important; }
.kitchen.kitchen .section-label::before { background: var(--gold-on-dark) !important; }
/* ----- 7.4 Events-banner (catering / gift-cards / private-events / reservations
   page CTA banners). Dark crimson-tinted bg — same trap. ----- */
.section-events-banner.section-events-banner,
.section-events-banner.section-events-banner * { color: var(--cream); }
.section-events-banner.section-events-banner h1,
.section-events-banner.section-events-banner h2,
.section-events-banner.section-events-banner h3,
.section-events-banner.section-events-banner .section-title {
    color: var(--cream) !important;
}
.section-events-banner.section-events-banner p,
.section-events-banner.section-events-banner li,
.section-events-banner.section-events-banner .section-subtitle { color: rgba(245, 235, 220, 0.92) !important; }
.section-events-banner.section-events-banner .section-label { color: var(--gold-on-dark) !important; }
.section-events-banner.section-events-banner .section-label::before { background: var(--gold-on-dark) !important; }
/* ----- 7.5 Menu page category headers — same Italian words the owner
   called out ("Dalla Salumeria / Panini / Pizza / Antipasti / ..."). They
   also render on menu-page cards. Make sure the category section headers
   have cream-on-dark treatment wherever they appear. ----- */
.menu-category-title,
.menu-section-title,
.menu-category-header,
.menu-category__name {
    color: var(--cream) !important;
}
.section--dark-wood .menu-category-title,
.section--mahogany-gradient .menu-category-title,
.kitchen .menu-category-title { color: var(--cream) !important; }
/* ==========================================
   PALETTE — ROUND 8 (2026-04-21)
   Nav logo is a brown PNG. On the new crimson header it disappears. Tint
   it gold with a CSS mask so the original asset doesn't need to change.
   The img stays in DOM for alt-text accessibility; a ::after pseudo paints
   the gold-gradient shape using the PNG's alpha as a mask.
   ========================================== */
.site-header__badge {
    position: relative;
}
.site-header__logo img {
    visibility: hidden !important;
    filter: none !important;
}
.site-header__badge::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, #E8C897 0%, #D9B486 40%, #C4956A 75%, #B8860B 100%);
    -webkit-mask: url(/assets/images/logo.png) center / contain no-repeat;
            mask: url(/assets/images/logo.png) center / contain no-repeat;
    pointer-events: none;
    filter: drop-shadow(0 2px 10px rgba(217, 180, 134, 0.45));
    transition: filter var(--transition-fast);
}
.site-header__logo:hover .site-header__badge::after {
    filter: drop-shadow(0 2px 14px rgba(217, 180, 134, 0.7)) brightness(1.08);
}
/* ==========================================
   PALETTE — ROUND 9 (2026-04-21)
   Two owner asks:
     1. Reimagine the location drawer (and nav drawer) as a clean, beautiful
        concierge panel. Current look: muddy dark-brown card with dark-brown
        chips, tiny crimson label and burnished-gold-on-brown active chip —
        reads as a basement dropdown, not hospitality.
     2. Fix Our Story on mobile. Stack order + default image sizing left it
        feeling poor: image hogged the viewport, content sat in a cramped
        cream slab with no visual hinge between them.
   ========================================== */
/* ----- 9.1 DRAWER — cream-paper concierge panel with crimson header -----
   Override the entire drawer treatment from site-header.css. Panel becomes
   warm cream paper, the header strip carries the crimson language used by
   the site nav, actions become cream cards with crimson accents, and the
   active location chip is a crimson-filled pill. ----- */
.drawer__backdrop {
    background: rgba(26, 14, 6, 0.55) !important;
    backdrop-filter: blur(6px) !important;
    -webkit-backdrop-filter: blur(6px) !important;
}
.drawer__panel,
.drawer__panel--nav,
.drawer__panel--location {
    background: var(--cream-bright) !important;
    background-image:
        none !important;
    border-left: 1px solid rgba(96, 57, 19, 0.15) !important;
    box-shadow: -24px 0 48px rgba(26, 14, 6, 0.35) !important;
    color: var(--walnut) !important;
}
/* Header strip — dark brown, matching the site-header */
.drawer__header {
    background: var(--mahogany-dark) !important;
    border-bottom: 1px solid rgba(217, 180, 134, 0.35) !important;
    padding: 1.15rem 1.5rem !important;
    box-shadow: 0 6px 18px rgba(40, 24, 8, 0.2);
}
.drawer__header::after {
    content: '';
    position: absolute;
    left: 0; right: 0; bottom: -1px; height: 1px;
    background: var(--gold-on-dark);
    opacity: 0.7;
    pointer-events: none;
}
.drawer__header { position: relative; }
.drawer__title {
    color: var(--gold-on-dark) !important;
    font-family: var(--font-ui) !important;
    font-size: 0.72rem !important;
    font-weight: 700 !important;
    letter-spacing: 0.28em !important;
    text-transform: uppercase !important;
}
.drawer__close {
    background: rgba(245, 235, 220, 0.14) !important;
    border: 1px solid rgba(245, 235, 220, 0.35) !important;
    color: var(--cream) !important;
    width: 40px !important;
    height: 40px !important;
    border-radius: 50% !important;
    transition: all var(--transition-fast) !important;
}
.drawer__close:hover {
    background: rgba(245, 235, 220, 0.22) !important;
    border-color: var(--cream) !important;
    transform: rotate(90deg);
}
/* ---- Nav drawer body ---- */
.drawer__nav { padding: 2rem 1.75rem 2.5rem !important; }
.drawer__nav > ul { gap: 2rem !important; }
.drawer__nav-label {
    color: var(--crimson) !important;
    font-family: var(--font-ui) !important;
    font-size: 0.68rem !important;
    font-weight: 700 !important;
    letter-spacing: 0.28em !important;
    text-transform: uppercase !important;
    margin-bottom: 0.85rem !important;
    display: flex !important;
    align-items: center !important;
    gap: 0.6rem !important;
}
.drawer__nav-label::after {
    content: '';
    flex: 1;
    height: 1px;
    background: rgba(151, 11, 51, 0.35);
}
.drawer__nav-group ul li a {
    color: var(--walnut-dark) !important;
    font-family: var(--font-display) !important;
    font-size: 1.15rem !important;
    padding: 0.7rem 0.25rem !important;
    border-bottom: 1px solid rgba(96, 57, 19, 0.1) !important;
    transition: color var(--transition-fast), padding-left var(--transition-fast), background var(--transition-fast) !important;
    border-radius: 2px;
}
.drawer__nav-group ul li a em {
    font-style: italic;
    color: var(--crimson) !important;
    font-family: var(--font-subheading) !important;
    font-weight: 500;
}
.drawer__nav-group ul li a:hover,
.drawer__nav-group ul li a:focus-visible {
    color: var(--crimson) !important;
    padding-left: 0.65rem !important;
    background: rgba(151, 11, 51, 0.05) !important;
}
.drawer__nav-sub {
    color: rgba(74, 55, 40, 0.82) !important;
    font-family: var(--font-subheading) !important;
    font-style: italic !important;
    font-size: 0.8rem !important;
    margin-top: 0.15rem !important;
}
/* ---- Location drawer body ---- */
.drawer__location-body {
    padding: 2rem 1.75rem 2.5rem !important;
    gap: 2rem !important;
}
/* Current location card — warm cream "concierge card" */
.drawer__location-current {
    background: var(--cream) !important;
    border: 1px solid rgba(96, 57, 19, 0.18) !important;
    border-radius: 10px;
    padding: 1.35rem 1.35rem 1.5rem !important;
    box-shadow: 0 2px 14px -8px rgba(96, 57, 19, 0.25);
    position: relative;
}
.drawer__location-current::before {
    content: '';
    position: absolute;
    top: 0; left: 1.35rem; right: 1.35rem;
    height: 3px;
    background: var(--crimson);
    border-radius: 3px;
}
.drawer__location-pin {
    color: var(--crimson) !important;
    background: rgba(151, 11, 51, 0.08);
    border-radius: 8px;
    padding: 0.5rem;
    margin-top: 0 !important;
}
.drawer__location-name {
    color: var(--chianti-dark) !important;
    font-family: var(--font-display) !important;
    font-size: clamp(1.5rem, 5vw, 1.8rem) !important;
    line-height: 1.1 !important;
    margin: 0 !important;
}
.drawer__location-status {
    color: var(--walnut) !important;
    font-family: var(--font-subheading) !important;
    font-style: italic !important;
    font-size: 0.88rem !important;
    gap: 0.5rem !important;
    margin-top: 0.5rem !important;
}
.drawer__location-address {
    color: var(--walnut) !important;
    font-family: var(--font-body) !important;
    font-style: normal !important;
    font-size: 0.95rem !important;
    line-height: 1.5 !important;
    margin-top: 0.75rem !important;
}
/* Quick-action tiles — cream cards with crimson accents */
.drawer__location-actions {
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 0.55rem !important;
    margin-top: 1.25rem !important;
}
.drawer__action {
    background: var(--cream-bright) !important;
    border: 1px solid rgba(96, 57, 19, 0.2) !important;
    border-radius: 8px !important;
    color: var(--walnut) !important;
    padding: 0.9rem 0.65rem !important;
    min-height: 86px !important;
    align-items: center !important;
    text-align: center !important;
    gap: 0.35rem !important;
    transition: all var(--transition-fast) !important;
}
.drawer__action svg {
    color: var(--crimson) !important;
    margin-bottom: 0 !important;
}
.drawer__action span {
    color: var(--chianti-dark) !important;
    font-family: var(--font-ui) !important;
    font-size: 0.72rem !important;
    font-weight: 700 !important;
    letter-spacing: 0.12em !important;
    text-transform: uppercase !important;
}
.drawer__action small {
    color: rgba(74, 55, 40, 0.82) !important;
    font-family: var(--font-subheading) !important;
    font-style: italic !important;
    font-size: 0.72rem !important;
    margin-top: 0.1rem;
}
.drawer__action:hover,
.drawer__action:focus-visible {
    border-color: var(--crimson) !important;
    background: rgba(151, 11, 51, 0.06) !important;
    transform: translateY(-2px);
    box-shadow: 0 6px 16px -8px rgba(151, 11, 51, 0.35);
}
.drawer__action--primary {
    grid-column: span 3 !important;
    flex-direction: row !important;
    background: var(--gradient-crimson) !important;
    border-color: var(--crimson) !important;
    color: var(--cream) !important;
    padding: 1rem 1.25rem !important;
    min-height: 56px !important;
    gap: 0.65rem !important;
    box-shadow: 0 8px 22px -10px rgba(151, 11, 51, 0.55);
}
.drawer__action--primary svg,
.drawer__action--primary span,
.drawer__action--primary small {
    color: var(--cream) !important;
    margin: 0 !important;
}
.drawer__action--primary small {
    opacity: 0.82;
    font-size: 0.74rem !important;
    letter-spacing: 0;
}
.drawer__action--primary:hover {
    filter: brightness(1.06);
    transform: translateY(-2px);
    box-shadow: 0 12px 28px -10px rgba(151, 11, 51, 0.65);
}
/* ---- Location switcher chips ---- */
.drawer__location-switch-title {
    color: var(--crimson) !important;
    font-family: var(--font-ui) !important;
    font-size: 0.68rem !important;
    font-weight: 700 !important;
    letter-spacing: 0.28em !important;
    text-transform: uppercase !important;
    display: flex;
    align-items: center;
    gap: 0.6rem;
    margin-bottom: 0.9rem !important;
}
.drawer__location-switch-title::after {
    content: '';
    flex: 1;
    height: 1px;
    background: rgba(151, 11, 51, 0.35);
}
.drawer__location-chips {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 0.6rem !important;
}
.drawer__location-chip {
    background: var(--cream-bright) !important;
    border: 1px solid rgba(96, 57, 19, 0.2) !important;
    border-radius: 8px !important;
    padding: 0.8rem 0.95rem !important;
    min-height: 64px !important;
    transition: all var(--transition-fast) !important;
    position: relative;
    cursor: pointer;
}
.drawer__location-chip:hover,
.drawer__location-chip:focus-visible {
    border-color: var(--crimson) !important;
    background: rgba(151, 11, 51, 0.06) !important;
    transform: translateY(-1px);
}
.drawer__location-chip-name {
    color: var(--chianti-dark) !important;
    font-family: var(--font-display) !important;
    font-weight: 400 !important;
    font-size: 1.05rem !important;
    letter-spacing: -0.01em !important;
}
.drawer__location-chip-city {
    color: var(--walnut) !important;
    font-family: var(--font-subheading) !important;
    font-style: italic !important;
    font-size: 0.78rem !important;
    opacity: 0.82;
    margin-top: 0.15rem !important;
}
.drawer__location-chip.is-active {
    background: var(--gradient-crimson) !important;
    border-color: var(--crimson) !important;
    box-shadow: 0 6px 18px -8px rgba(151, 11, 51, 0.55);
}
.drawer__location-chip.is-active .drawer__location-chip-name,
.drawer__location-chip.is-active .drawer__location-chip-city {
    color: var(--cream) !important;
}
.drawer__location-chip.is-active::after {
    content: '✓';
    position: absolute;
    top: 0.5rem;
    right: 0.65rem;
    font-size: 0.85rem;
    color: var(--gold-on-dark);
    font-weight: 700;
}
/* Status dot on the drawer — use a brighter green on cream */
.drawer .site-header__dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    display: inline-block;
}
.drawer .site-header__dot--open { background: #4a8a3b; box-shadow: 0 0 0 3px rgba(74, 138, 59, 0.18); }
.drawer .site-header__dot--closed { background: rgba(74, 55, 40, 0.35); }
.drawer .site-header__dot--unknown { background: rgba(74, 55, 40, 0.3); }
/* ----- 9.2 OUR STORY on mobile — proper composition -----
   Problems on <= 1024px stack: photo filled 100vw with no height cap and
   pushed the title far below the fold; content sat in a flat cream slab
   with no hinge to the photo and the h2 was too small. Fix: cap the photo
   height, introduce a gold divider, breathing room + a proper display h2. */
@media (max-width: 1024px) {
    .story-split {
        grid-template-columns: 1fr !important;
        min-height: auto !important;
        position: relative;
    }
    .story-split__image {
        position: relative;
        width: 100%;
        height: clamp(320px, 55vw, 520px) !important;
    }
    .story-split__image img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        object-position: center 35%;
        filter: saturate(0.92);
    }
    .story-split__image::after {
        /* soft cream fade into the content below — visual hinge */
        content: '';
        position: absolute;
        left: 0; right: 0; bottom: -1px;
        height: 32px;
        background: none;
        pointer-events: none;
    }
    .story-split__content {
        background: var(--cream-soft) !important;
        color: var(--walnut) !important;
        margin-left: 0 !important;
        padding: 2.5rem 1.5rem 3rem !important;
        gap: 0.9rem;
        position: relative;
    }
    .story-split__content::before {
        /* thin gold rule under the section label to echo the rest of the
           brand language */
        content: '';
        display: block;
        width: 48px;
        height: 2px;
        background: var(--gradient-gold);
        margin: 0 0 0.25rem;
        border-radius: 2px;
    }
    .story-split__content .section-label {
        margin-bottom: 0 !important;
    }
    .story-split__content .section-title,
    .story-split__content h2 {
        font-size: clamp(2.1rem, 7vw, 2.9rem) !important;
        line-height: 1.05 !important;
        margin: 0.25rem 0 0.5rem !important;
        color: var(--chianti-dark) !important;
    }
    .story-split__content p {
        font-size: 1.02rem !important;
        line-height: 1.72 !important;
        margin: 0 !important;
        color: var(--walnut) !important;
    }
    .story-split__content .link-arrow {
        margin-top: 0.75rem;
        font-size: 0.82rem;
        letter-spacing: 0.1em;
    }
}
/* Very small phones: a bit tighter */
@media (max-width: 480px) {
    .story-split__image { height: clamp(280px, 62vw, 380px) !important; }
    .story-split__content { padding: 2rem 1.25rem 2.5rem !important; }
}
/* ==========================================
   PALETTE — ROUND 10 (2026-07-03, pre-launch visual pass)
   • Homepage happenings + instagram sections: their legacy dark modifier
     classes are removed in index.njk, so the `.section--chianti-gradient *`
     / `.section--dark-wood *` cream-text rules no longer paint cream glyphs
     onto the (round-4/4.5) cream backgrounds there.
   • Arrow glyph spans inside link-arrows always match their link's color;
     the universal on-dark `*` cream rules were leaving cream arrows on
     cream sections (and cream arrows next to gold links on dark ones).
   • Private-events funnel + instant-quote wizard (Lovable port) rebuilt on
     the bright palette in their own stylesheets — no black anywhere.
   ========================================== */
.link-arrow span,
.happening-live-card__link span {
    color: inherit !important;
}
/* Funnel hero (.pef-hero) + private-events overview hero (.pe-hero) are dark
   image heroes like loc-hero — excluded from the cream-page h1/p chains
   above, and hard-pinned here per house habit. */
.pef-hero.pef-hero .pef-hero__title,
.pef-hero.pef-hero h1 { color: var(--cream) !important; }
.pef-hero.pef-hero .pef-hero__lede,
.pef-hero.pef-hero p { color: rgba(245, 235, 220, 0.94) !important; }
.pef-hero.pef-hero .pef-hero__eyebrow { color: var(--gold-on-dark) !important; }
.pef-hero.pef-hero .pef-hero__tel { color: var(--cream) !important; }
.pe-hero.pe-hero .pe-hero__title,
.pe-hero.pe-hero h1 { color: var(--cream) !important; }
.pe-hero.pe-hero .pe-hero__lede,
.pe-hero.pe-hero p { color: rgba(245, 235, 220, 0.94) !important; }
.pe-hero.pe-hero .pe-hero__lede strong { color: var(--gold-on-dark) !important; }
.pe-hero.pe-hero .pe-hero__eyebrow { color: var(--gold-on-dark) !important; }
.pe-hero.pe-hero .pe-hero__tel { color: var(--cream) !important; }
/* Custom dark bands the global cream-page rules used to steamroll (probe
   findings, 2026-07-03): pin their text to the on-dark family. */
.loc-glance .btn-outline-gold { color: var(--gold-on-dark) !important; }
.loc-glance .btn-outline-gold:hover { color: var(--mahogany-dark) !important; background: var(--gold-on-dark) !important; }
.happening-reserve p { color: rgba(245, 235, 220, 0.94) !important; }
.section--chianti-gradient .loc-events p { color: rgba(245, 235, 220, 0.94) !important; }
.section--dark .content-block p,
.section--dark .content-block li { color: rgba(245, 235, 220, 0.9) !important; }
.subpage-hero .section-lede,
.contact-hero .section-lede,
.about-hero .section-lede,
.section--warm .section-lede,
.section--dark .section-lede,
.section--dark-wood .section-lede,
.section--wood .section-lede,
.section--walnut .section-lede { color: rgba(245, 235, 220, 0.92) !important; }
section.section--warm:not(.section--textured-paper) label { color: var(--cream) !important; }
/* Cream paper cards keep their own text even inside dark sections — the same
   protection .loc-card already has in section 7. Without this, the
   `.section--dark * / .section--dark-wood *` cream rules paint cream text
   onto the (now cream-bright) card surfaces. */
.location-card, .contact-location-card, .happening-loc-card { color: var(--walnut) !important; }
.location-card *, .contact-location-card *, .happening-loc-card * { color: inherit; }
.location-card h2, .location-card h3, .location-card .location-name,
.contact-location-card h2, .contact-location-card .contact-location-card__name,
.happening-loc-card h3, .happening-loc-card .happening-loc-card__name { color: var(--chianti-dark) !important; }
.location-card strong, .contact-location-card strong, .happening-loc-card strong { color: var(--chianti-dark) !important; }
.location-card a:not([class]), .location-card .location-phone a,
.contact-location-card a:not([class]),
.contact-location-card .contact-location-card__detail a:not([class*="btn"]),
.happening-loc-card a:not([class]) { color: var(--crimson) !important; }
.contact-location-card .contact-location-card__detail-label { color: var(--crimson) !important; }
.happening-loc-card .link-arrow { color: var(--crimson) !important; }
.happening-loc-card .link-arrow:hover { color: var(--chianti-dark) !important; }
.happening-loc-card .happening-loc-card__hours { color: var(--chianti-dark) !important; }
.happening-loc-card .happening-loc-card__price { color: var(--crimson-dark) !important; }
.happening-loc-card .happening-loc-card__city,
.happening-loc-card .happening-loc-card__unavailable { color: var(--text-muted) !important; }
.contact-location-card .hours-row .day { color: var(--text-secondary) !important; }
.contact-location-card .hours-row .time { color: var(--chianti-dark) !important; }
/* ==========================================
   PALETTE — ROUND 11 (2026-07-07, owner feedback batch)
   • Section-label eyebrow mark removed. The decorative ::before dash/dot is
     absolutely positioned at left:0, so on centered headings it detached to
     the far-left edge and read as misaligned. Owner asked to drop it, so the
     eyebrow is now plain uppercase text (color + tracking still intact).
   ========================================== */
.section-label { padding-left: 0 !important; }
.section-label::before { display: none !important; }
/* ==========================================
   ROUND 12 (2026-09-17) — SOLID COLORS
   Owner: no gradients on buttons or backgrounds, one red (#970B33), top menu
   bar dark brown. The gradients themselves were replaced in place across the
   sheets (tokens.css "gradient" tokens are solid colors now). Two follow-ons
   that only exist because the surfaces went solid:
   ========================================== */
/* Gold eyebrows on the solid crimson bands: #D9B486 on #970B33 is 4.49:1,
   a hair under AA (the gradients used to hide this from the checker).
   The lightest gold from the old gradient reads 5.5:1. */
.section-reviews.section-reviews .section-label,
.section--chianti-gradient .section-label,
.happening-reserve .section-label,
.section-events-banner .section-label,
.picker-hero .section-label,
.pe-concierge .section-label {
    color: #E8C897 !important;
}
/* Photo sections get a dark fallback under the photo, like .pef-hero already
   has: cream text stays readable if the image is slow or fails, and the
   accessibility checker (which cannot see photos) measures the right pair. */
.pe-hero,
.section--imagebg {
    background-color: var(--mahogany-dark);
}
/* No glow on hover (Silvia 2026-09-17). Buttons keep their color change and
   small lift; the gold halo shadows and brightness boosts are gone. :hover
   only, so keyboard focus styles are untouched. */
a[class*="btn"]:hover,
button[class*="btn"]:hover,
.site-header__reserve:hover,
.site-header__host:hover,
.loc-card__btn:hover,
.drawer__action:hover,
.pe-cta__pick:hover,
.qw-next:hover,
.qw-back:hover {
    box-shadow: none !important;
    filter: none !important;
}
