/* archetype: letterpress — an old shop with a printed menu. Centred, narrow, hairline
   rules above and below each section, small caps, and nothing rounded anywhere. */

h1 { font-size: clamp(2.4rem, 7.5vw, 4rem); line-height: 1.08; letter-spacing: 0.01em; }
h2 { font-size: clamp(1.7rem, 4.5vw, 2.4rem); letter-spacing: 0.01em; }
body { letter-spacing: 0.005em; }

.site-header { background: var(--color-bg); backdrop-filter: none; border-bottom: 1px solid var(--color-primary); }
.header-inner { min-height: 5.5rem; }
.brand-name { letter-spacing: 0.18em; text-transform: uppercase; font-size: 1.15rem; }
.nav-list a { text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.78rem; font-weight: 600; }

.btn, .card, .menu-note, .book-panel, .nav-toggle, .map-embed, .gallery img, .status-pill { border-radius: 0; }
.btn { background: transparent; border: 1px solid var(--color-primary); color: var(--color-primary); text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.8rem; font-weight: 600; padding: 0.9rem 1.6rem; }
.btn-primary { border-color: var(--color-accent); color: var(--color-accent); }
.btn:hover { transform: none; background: color-mix(in srgb, var(--color-primary) 8%, transparent); }
.hero .btn { border-color: rgba(255,255,255,0.8); color: #fff; }

/* Everything centred, on a narrow measure. */
.container { width: min(100% - 2.5rem, 56rem); }
.hero { min-height: min(72vh, 42rem); align-items: center; text-align: center; }
.hero::after { background: linear-gradient(180deg, rgba(0,0,0,0.5), rgba(0,0,0,0.55)); }
.hero h1, .hero .lead { max-width: none; margin-inline: auto; }
.hero-meta, .hero .btn-row { justify-content: center; }
.page-hero { text-align: center; }
.section-head { text-align: center; }
.section-head .lead, .lead { margin-inline: auto; }
.eyebrow { letter-spacing: 0.22em; font-size: 0.72rem; }

/* A hairline above and below every section. */
.section { border-top: 1px solid var(--color-border); }
.section + .section { border-top: 1px solid var(--color-border); }
.card { border: 0; box-shadow: none; text-align: center; }

/* Menu: centred, with leaders, like a printed card. */
.menu-sections { gap: 2.75rem; }
.menu-section h3 { text-align: center; text-transform: uppercase; letter-spacing: 0.18em; font-size: 0.95rem; border-bottom: 0; }
.menu-section h3::after { content: ""; display: block; width: 2.5rem; height: 1px; background: var(--color-primary); margin: 0.6rem auto 0; }
.menu-item { border-bottom: 1px dotted var(--color-border); padding: 0.65rem 0; }
.menu-item-desc { font-style: italic; }
.quote { margin-inline: auto; text-align: center; font-style: italic; }
.menu-item-price:empty { display: none; }

/* Tuned for White Rabbit: the note reads like a hand-chalked aside, not small print. */
.menu-note { font-style: italic; }

/* Motion: the gallery hang. Nothing slides or bounces; things come up to light. Every
   property here is one site.js leaves alone — it owns opacity and y on [data-reveal]. */
.section-head h2::after { content: ""; display: block; width: 2.5rem; height: 1px; background: var(--color-accent); margin: 0.7rem auto 0; }
@media (prefers-reduced-motion: no-preference) {
  .hero-media img { animation: wr-light 1.15s cubic-bezier(0.2, 0.7, 0.3, 1) both; }
  @keyframes wr-light { from { filter: brightness(0.76) saturate(0.72); } to { filter: brightness(1) saturate(1); } }
  .hours-table tr.is-today th, .hours-table tr.is-today td { animation: wr-hold 1.7s ease-out 0.3s both; }
  @keyframes wr-hold { from { background: transparent; } to { background: color-mix(in srgb, var(--color-accent) 9%, transparent); } }
  @supports (animation-timeline: view()) {
    .section-head h2::after, .menu-section h3::after { animation: wr-rule linear both; animation-timeline: view(); animation-range: entry 20% entry 90%; }
    @keyframes wr-rule { from { transform: scaleX(0); } to { transform: scaleX(1); } }
  }
}
