/* Responsive and accessibility repairs layered after the source styles. */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 5rem; }
body { min-width: 0; }
.site-main { display: block; width: 100%; min-width: 0; }
.site-main > *, .site-main section, .site-main article { min-width: 0; }
img, picture, video, canvas { max-width: 100%; }
img { height: auto; }
/* Existing photographic frames control their own height; preserve object-fit. */
.navigation-mosaic-img, .qv-hero-img, .story-hero-img,
.menu-hero-img, .menu-showcase-img, .qv-strip-img,
.experience-hero-img, .menu-hero-image, [class$="-media-img"],
[class*="-portrait-img"], [class$="-image"], [class$="-img"] {
  height: 100%;
}
:where(h1,h2,h3,h4,h5,h6) { overflow-wrap: break-word; }
:where(a,button,input,select,textarea,summary,[tabindex="0"]):focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 3px;
}
a[href], button, summary { -webkit-tap-highlight-color: transparent; }
a[href], button, summary { cursor: pointer; }
/* The original desktop design is retained; only the fake contact items become links. */
.navigation-contact-link {
  color: var(--color-on-surface-secondary);
  font-weight: var(--font-weight-medium);
  letter-spacing: 0.05em;
  text-transform: uppercase;
  text-decoration: none;
}
.navigation-contact-link:hover, .navigation-contact-link:focus-visible { color: var(--color-primary); }
.navigation-pill-action { cursor: pointer; }
.navigation-pill-action:hover, .navigation-pill-action:focus-visible { color: var(--color-primary); }
/* Do not make preserved phone/email labels look clickable after removing tel/mailto. */
span.qv-footer-contact-link, span.navigation-overlay-contact { cursor: text; }
span.qv-footer-contact-link::after { display: none; }
.qv-footer-address-full {
  color: var(--color-on-surface-secondary);
  font: inherit;
  font-size: var(--font-size-xs);
  flex-basis: 100%;
  overflow-wrap: anywhere;
}
.qv-footer-contact-cluster { column-gap: var(--spacing-md); row-gap: var(--spacing-xs); }
.qv-footer-copyright-text { overflow-wrap: anywhere; }
.qv-footer-legal-nav { gap: var(--spacing-md); }
/* Fix menu positions independently of scroll, sticky header or content dimensions. */
.navigation-mobile-overlay[hidden] { display: none !important; }
.navigation-mobile-overlay {
  position: fixed !important;
  inset: 0 !important;
  top: 0 !important;
  left: 0 !important;
  width: 100%;
  width: 100vw;
  height: 100vh;
  height: 100dvh;
  min-height: 0;
  max-height: 100dvh;
  z-index: 100000;
  display: flex;
  flex-direction: column;
  margin: 0;
  padding: clamp(16px, 4vw, 36px);
  background: var(--color-surface);
  overflow-x: clip;
  overflow-y: auto;
  overscroll-behavior: contain;
  isolation: isolate;
}
.navigation-overlay-header {
  gap: 12px;
  flex: 0 0 auto;
  min-height: 44px;
  margin: 0 0 clamp(16px, 4vh, 44px);
}
.navigation-overlay-header .navigation-logo-link { min-width: 0; max-width: calc(100% - 56px); }
.navigation-overlay-header .logo-brand-name { white-space: normal; overflow-wrap: anywhere; }
.navigation-close-btn { position: relative; z-index: 1; flex: 0 0 44px; width: 44px; height: 44px; display: grid; place-items: center; }
.navigation-overlay-content {
  display: flex;
  flex: 1 0 auto;
  flex-direction: column;
  min-width: 0;
  max-width: 100%;
  overflow: visible;
}
.navigation-mobile-nav { gap: 50px; padding: 0; }
.navigation-mobile-link { display: block; width: fit-content; max-width: 100%; line-height: 1.25; overflow-wrap: anywhere; }
.navigation-mobile-link:hover, .navigation-mobile-link:focus-visible { color: var(--color-primary); }
.navigation-overlay-footer { margin-top: auto; padding-top: clamp(20px, 5vh, 44px); gap: 10px; }
.navigation-overlay-contact { display: block; width: fit-content; max-width: 100%; overflow-wrap: anywhere; }
body.menu-open { overflow: hidden; }
/* Keep intended galleries scrolling within their own viewport, not the document. */
.qv-strip-viewport, .menu-showcase-strip-container { max-width: 100%; -webkit-overflow-scrolling: touch; touch-action: pan-x pan-y; }
.qv-strip-viewport:focus-visible, .menu-showcase-strip-container:focus-visible { outline-offset: -3px; }
.qv-gallery-strip, .menu-showcase-rail { flex-wrap: nowrap; }
.private-dining-form, .form-field, .private-dining-form-col, .private-dining-wrapper { min-width: 0; max-width: 100%; }
.form-input, .form-select, .form-textarea { max-width: 100%; }
/* Legal pages share the restaurant's typography, palette, header and footer. */
.legal-content { width: 100%; max-width: 860px; margin-inline: auto; display: flex; flex-direction: column; gap: 16px; padding: 64px 32px 76px; }
.legal-content h1 { color: var(--color-on-surface); font: 600 clamp(2rem, 4vw, 3rem)/1.2 var(--font-family-heading); margin: 0; }
.legal-content h2 { color: var(--color-on-surface); font: 600 clamp(1.2rem, 2.4vw, 1.6rem)/1.35 var(--font-family-heading); margin: 24px 0 0; }
.legal-content h3 { color: var(--color-on-surface); font-size: 1.05rem; margin: 14px 0 0; }
.legal-content p, .legal-content li { color: var(--color-on-surface-secondary); font: 400 15px/1.8 var(--font-family-body); }
.legal-content ul { padding-left: 1.5rem; display: grid; gap: 8px; }
.legal-content p a, .legal-content li a { color: var(--color-primary); text-decoration: underline; text-underline-offset: 3px; }
.legal-content address { font: inherit; display: grid; gap: 4px; }
.legal-content .legal-updated { color: var(--color-on-surface-secondary); font-size: .9rem; }
.legal-content .legal-contacts { padding: 20px 24px; background: var(--color-surface-tint); border: 1px solid var(--color-outline); border-radius: var(--border-radius-card); }
@media (max-width: 767px) {
  .navigation-mobile-overlay { padding: 20px clamp(16px, 5vw, 28px); }
  .navigation-overlay-header { margin-bottom: clamp(16px, 4vh, 36px); }
  .navigation-mobile-nav { gap: 40px; }
  .qv-footer-lower-grid { grid-template-columns: 1fr; justify-items: center; gap: 14px; }
  .qv-footer-legal-zone { justify-content: center; }
  .qv-footer-upper-content { justify-content: center; }
  .qv-footer-contact-cluster { justify-content: center; text-align: center; }
  .qv-footer-address-full { text-align: center; }
  .legal-content { padding: 36px 20px 52px; }
  .menu-showcase-tile { width: min(18rem, 76vw); height: clamp(18rem, 68vw, 26rem); }
  .qv-strip-item { width: min(17rem, 72vw); }
}
@media (max-width: 479px) {
  .navigation-bar { min-width: 0; }
  .navigation-bar .navigation-zone-center, .navigation-bar .navigation-logo-link { min-width: 0; }
  .logo-brand-name { font-size: clamp(.92rem, 4.2vw, 1.1rem); white-space: normal; }
  .navigation-overlay-contact { font-size: .875rem; }
  .navigation-overlay-header .logo-brand-name { font-size: 1rem; }
  .navigation-mobile-overlay { padding-top: max(14px, env(safe-area-inset-top)); padding-bottom: max(14px, env(safe-area-inset-bottom)); }
  .menu-showcase-strip-container { padding: 0 16px; }
  .legal-content { padding-inline: 16px; }
  .legal-content .legal-contacts { padding: 16px; }
  .qv-footer-contact-divider { display: none; }
  .qv-footer-contact-cluster { flex-direction: column; }
  .qv-footer-address-full { flex-basis: auto; }
}
@media (max-height: 560px) {
  .navigation-mobile-overlay { padding-top: 12px; padding-bottom: 12px; }
  .navigation-overlay-header { margin-bottom: 12px; }
  .navigation-mobile-nav { gap: 30px; }
  .navigation-overlay-footer { padding-top: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .navigation-mobile-overlay *, .site-main * { animation-duration: .01ms !important; }
}
/* Header grid: the hidden desktop zones must not reserve grid tracks. */
@media (max-width: 767px) {
  .navigation-bar {
    grid-template-columns: minmax(0, 1fr) 44px;
    gap: 10px;
  }
  .navigation-zone-center {
    grid-column: 1;
    justify-self: start;
    width: 100%;
    min-width: 0;
  }
  .navigation-zone-center .navigation-logo-link { max-width: 100%; }
  .navigation-zone-center .logo-lockup { max-width: 100%; min-width: 0; }
  .navigation-zone-center .logo-text-stack { min-width: 0; }
  .navigation-hamburger {
    grid-column: 2;
    justify-self: end;
    justify-content: center;
    align-items: center;
    width: 44px;
    height: 44px;
    padding: 0;
  }
}
/* Improve subdued footer text contrast without changing the source palette. */
.qv-footer-copyright-text { opacity: .85; }
.qv-footer-legal-link, .qv-footer-top-btn { opacity: .88; }
