*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }
body { margin: 0; min-height: 100svh; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; overflow-x: clip; }
main { overflow-x: clip; }
img, video, svg, iframe { display: block; max-width: 100%; }
a { color: inherit; }
button { font: inherit; color: inherit; cursor: pointer; }
h1, h2, h3, p, figure, blockquote, dl, dd, ul { margin: 0; }
ul { padding: 0; list-style: none; }
address { font-style: normal; }
:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }

.skip { position: absolute; left: 1rem; top: -4rem; z-index: 100; padding: .6rem 1rem; background: #fff; color: #000; border-radius: .5rem; }
.skip:focus { top: 1rem; }

:root { --page-pad: clamp(1.25rem, 5vw, 4rem); --page-max: 1240px; }
@media (min-width: 900px) { :root { --page-pad: max(3rem, calc((100vw - var(--page-max)) / 2)); } }

.section { padding: clamp(4.5rem, 12vw, 9rem) var(--page-pad); }

/* Reveal states: hidden only until GSAP takes over. */
.js:not(.no-motion) [data-reveal],
.js:not(.no-motion) [data-hero-in] { opacity: 0; }
.js:not(.no-motion) [data-split]:not(.is-split) { visibility: hidden; }
.js:not(.no-motion) [data-hero-frame] { clip-path: inset(100% 0 0 0); }
.split-line { padding-bottom: .06em; margin-bottom: -.06em; }

/* Buttons */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .65rem; min-height: 3.4rem; padding: .85rem 1.4rem; border-radius: 999px; text-decoration: none; font-weight: 600; line-height: 1.1; border: 1.5px solid transparent; transition: transform .25s ease, background-color .25s ease, color .25s ease, border-color .25s ease; -webkit-tap-highlight-color: transparent; }
.btn:active { transform: scale(.97); }
.btn__icon svg { width: 1.25rem; height: 1.25rem; }
.btn__label { display: flex; flex-direction: column; text-align: left; }
.btn__label small { font-size: .72em; font-weight: 500; opacity: .72; margin-top: .15rem; }

/* Open-now pill */
.open-pill { display: inline-flex; align-items: center; gap: .5rem; padding: .45rem .8rem .45rem .65rem; border-radius: 999px; font-size: .8rem; font-weight: 600; text-decoration: none; white-space: nowrap; line-height: 1; }
.open-pill__dot { position: relative; width: .55rem; height: .55rem; border-radius: 50%; background: #9a9a9a; flex: none; }
.open-pill[data-state="open"] .open-pill__dot { background: #2fd27a; }
.open-pill[data-state="closing"] .open-pill__dot { background: #ffb020; }
.open-pill[data-state="closed"] .open-pill__dot { background: #ff5a4e; }
.open-pill[data-state="open"] .open-pill__dot::after,
.open-pill[data-state="closing"] .open-pill__dot::after { content: ""; position: absolute; inset: 0; border-radius: inherit; background: inherit; animation: pulse 1.8s ease-out infinite; }
@keyframes pulse { from { transform: scale(1); opacity: .7; } to { transform: scale(3); opacity: 0; } }

/* Stars */
.stars { letter-spacing: .08em; }
.stars__off { opacity: .25; }

/* Marquee */
.marquee { overflow: hidden; position: relative; }
.marquee__track { display: flex; width: max-content; will-change: transform; }
.marquee__group { display: flex; flex: none; align-items: center; }
.no-js .marquee, .no-motion .marquee { overflow-x: auto; scrollbar-width: none; }
@media (prefers-reduced-motion: reduce) { .marquee { overflow-x: auto; } }

/* Hero media */
.hero__media { position: absolute; inset: 0; overflow: hidden; transform-origin: 50% 30%; }
.hero__poster img, .hero__video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hero__video { opacity: 0; transition: opacity .8s ease; }
.hero__video.is-playing { opacity: 1; }

/* Price list */
.price-tabs { display: flex; gap: .5rem; overflow-x: auto; scrollbar-width: none; padding-bottom: .25rem; margin-bottom: 1.75rem; }
.price-tabs::-webkit-scrollbar { display: none; }
.price-panel[data-hidden] { display: none; }
.prices:not(.has-tabs) .price-panel[data-hidden] { display: block; }
.prices:not(.has-tabs) .price-panel + .price-panel { margin-top: 2.5rem; }
.has-tabs .price-panel__title { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.price-row { display: grid; grid-template-columns: auto 1fr auto; align-items: baseline; gap: .75rem; padding: 1.05rem 0; }
.price-row__name small { display: block; font-size: .78rem; opacity: .6; margin-top: .2rem; }
.price-row__dots { border-bottom: 1px dotted currentColor; opacity: .35; transform: translateY(-.3rem); }
.price-row__price { font-variant-numeric: tabular-nums; white-space: nowrap; }
.note { margin-top: 1.25rem; font-size: .8rem; opacity: .6; }

/* Hours */
.hours__row { display: flex; justify-content: space-between; gap: 1rem; padding: .85rem 0; }
.hours__day { text-transform: capitalize; }
.hours__time { font-variant-numeric: tabular-nums; text-align: right; }
.hours__row.is-closed .hours__time { opacity: .5; }

/* Map */
.map { position: relative; overflow: hidden; aspect-ratio: 4 / 3; }
.map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* Gallery buttons */
[data-lightbox] { padding: 0; border: 0; background: none; display: block; overflow: hidden; cursor: zoom-in; }
[data-lightbox] img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s cubic-bezier(.2,.7,.2,1); }
@media (hover: hover) { [data-lightbox]:hover img { transform: scale(1.06); } }

/* Lightbox */
.lightbox { padding: 0; border: 0; background: transparent; max-width: 100vw; max-height: 100svh; width: 100vw; height: 100svh; }
.lightbox::backdrop { background: rgba(8, 8, 8, .92); backdrop-filter: blur(6px); }
.lightbox[open] { display: grid; place-items: center; }
.lightbox img { max-width: min(92vw, 1100px); max-height: 82svh; object-fit: contain; border-radius: .5rem; }
.lightbox__close, .lightbox__nav { position: fixed; border: 0; background: rgba(255,255,255,.12); color: #fff; width: 3rem; height: 3rem; border-radius: 50%; font-size: 1.8rem; line-height: 1; display: grid; place-items: center; }
.lightbox__close { top: max(1rem, env(safe-area-inset-top)); right: 1rem; }
.lightbox__nav { bottom: max(1.5rem, env(safe-area-inset-bottom)); }
.lightbox__nav--prev { left: calc(50% - 3.75rem); }
.lightbox__nav--next { right: calc(50% - 3.75rem); }

/* Sticky mobile CTA */
.sticky-bar { position: fixed; z-index: 50; left: .75rem; right: .75rem; bottom: max(.75rem, env(safe-area-inset-bottom)); display: flex; gap: .5rem; padding: .45rem; border-radius: 999px; transform: translateY(140%); transition: transform .5s cubic-bezier(.2,.8,.2,1); }
.sticky-bar.is-visible { transform: none; }
.sticky-bar__book { flex: 1; display: flex; align-items: center; justify-content: center; gap: .55rem; min-height: 3.1rem; border-radius: 999px; text-decoration: none; font-weight: 700; }
.sticky-bar__book .btn__icon svg { width: 1.2rem; height: 1.2rem; }
.sticky-bar__icon { width: 3.1rem; height: 3.1rem; display: grid; place-items: center; border-radius: 50%; flex: none; }
.sticky-bar__icon svg { width: 1.3rem; height: 1.3rem; }
@media (min-width: 900px) { .sticky-bar { display: none; } }

.credit { font-size: .75rem; opacity: .55; margin-top: 1rem; }
