/* ================= Extra motion & hover layer ================= */
@property --a { syntax: "<angle>"; inherits: false; initial-value: 0deg; }
@keyframes spin-a { to { --a: 360deg; } }

/* letter-by-letter headings */
.split .c { display: inline-block; transform: translateY(105%) rotateX(-80deg); transform-origin: 50% 100%; opacity: 0;
  transition: transform 1s var(--ease), opacity .6s, color .3s; transition-delay: calc(var(--i) * 22ms); }
.split.in .c { transform: none; opacity: 1; }
.split .line { perspective: 600px; }
.split em { background: none; animation: none; color: inherit; }
.split em .c { background: var(--gold-grad); background-size: 400% auto; -webkit-background-clip: text; background-clip: text; color: transparent; animation: shine 5s linear infinite; }
.split.in .c:hover { transform: translateY(-14%) rotate(-6deg); color: var(--red-2); transition: transform .25s var(--ease), color .2s; transition-delay: 0s; }
.split .c.hop { animation: hop .6s var(--ease); }
.split em .c.hop { animation: hop .6s var(--ease), shine 5s linear infinite; }
@keyframes hop { 40% { transform: translateY(-18%) scale(1.06); } }

/* buttons: rolling text, lift */
.btn:hover { transform: translateY(-3px); }
.btn:active { transform: translateY(0) scale(.97); }
.btn__roll { position: relative; display: inline-block; overflow: hidden; height: 1.3em; line-height: 1.3em; z-index: 1; }
.btn__roll > span { display: block; transition: transform .55s var(--ease); }
.btn__roll > span + span { position: absolute; left: 0; top: 100%; }
.btn:hover .btn__roll > span { transform: translateY(-100%); }
.btn--ghost { z-index: 0; }
.btn--ghost::before { content: ""; position: absolute; left: 50%; top: 100%; width: 140%; aspect-ratio: 1; border-radius: 50%; z-index: -1;
  background: var(--red-grad); transform: translate(-50%, 0) scale(.2); transition: transform .7s var(--ease), top .7s var(--ease); }
.btn--ghost:hover::before { top: 50%; transform: translate(-50%, -50%) scale(1.2); }
.btn--ghost:hover { color: #fff; border-color: transparent; box-shadow: 0 16px 40px -14px rgba(200,32,47,.8); }
.btn--red { animation: btn-breathe 3.5s ease-in-out infinite; }
@keyframes btn-breathe { 50% { box-shadow: 0 10px 40px -4px rgba(226,58,58,.75), inset 0 1px 0 rgba(255,255,255,.3), inset 0 0 0 1px rgba(224,180,94,.5); } }

/* spinning gold border on boxes */
.glow { position: relative; }
.glow::before { content: ""; position: absolute; inset: 0; border-radius: inherit; padding: 1.5px; pointer-events: none; z-index: 4;
  background: conic-gradient(from var(--a), transparent 0 55%, rgba(200,32,47,.4) 65%, var(--gold) 78%, #fff3d0 82%, var(--gold) 86%, transparent 96%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude;
  opacity: 0; transition: opacity .5s; animation: spin-a 3s linear infinite; }
.glow:hover::before { opacity: 1; }
.glow { transition: transform .6s var(--ease), box-shadow .6s var(--ease), border-color .4s !important; }
.glow:hover { box-shadow: 0 40px 70px -30px rgba(200,32,47,.5), 0 0 0 1px rgba(224,180,94,.15); }
/* cursor spotlight inside cards */
.spot::after { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; z-index: 1; opacity: 0; transition: opacity .4s;
  background: radial-gradient(360px circle at var(--sx, 50%) var(--sy, 50%), rgba(224,180,94,.12), transparent 60%); }
.spot:hover::after { opacity: 1; }

/* shine sweep across photos */
.shine { position: absolute; inset: 0; z-index: 2; pointer-events: none; overflow: hidden; }
.shine::after { content: ""; position: absolute; top: -20%; bottom: -20%; width: 45%; left: -60%; transform: skewX(-20deg); background: linear-gradient(90deg, transparent, rgba(255,255,255,.3), transparent); }
.g-item:hover .shine::after, .fav:hover .shine::after { left: 130%; transition: left .9s var(--ease); }

/* gallery tiles unveil */
.g-item[data-reveal] { opacity: 1; filter: none; transform: none; clip-path: inset(100% 0 0 0 round 18px); transition: clip-path 1.2s var(--ease-io); transition-delay: var(--d, 0ms); }
.g-item[data-reveal].in { clip-path: inset(0 0 0 0 round 18px); }
.g-item[data-reveal] img { transform: scale(1.35); transition: transform 1.6s var(--ease), filter .6s; transition-delay: var(--d, 0ms); }
.g-item[data-reveal].in img { transform: scale(1); }
.g-item[data-reveal].in:hover img { transform: scale(1.1); transition-delay: 0s; }
.gallery:hover .g-item:not(:hover) img { filter: grayscale(.7) brightness(.5); }
.g-item figcaption::before { content: "+"; display: inline-grid; place-items: center; width: 22px; height: 22px; margin-right: 8px; border-radius: 50%; background: var(--red-2); color: #fff; font-size: 15px; }

/* menu rows */
.dish__name { transition: color .3s; }
.dish:hover .dish__name { color: var(--gold-2); }
.dish::after { content: ""; position: absolute; left: 10px; right: 10px; bottom: 0; height: 1px; background: var(--gold-grad); transform: scaleX(0); transform-origin: right; transition: transform .6s var(--ease); }
.dish:hover::after { transform: scaleX(1); transform-origin: left; }
.dish:hover .dish__price { color: var(--gold-2); }
.mcat__cn { transition: transform .6s var(--ease); display: inline-block; }
.mcat:hover .mcat__cn { transform: rotate(-8deg) scale(1.1); }

/* nav hover pill */
.nav__pill { position: absolute; top: 0; left: 0; height: 100%; border-radius: 999px; background: rgba(var(--hl-rgb),.07); border: 1px solid rgba(224,180,94,.25);
  opacity: 0; pointer-events: none; transition: transform .45s var(--ease), width .45s var(--ease), opacity .3s; }
.nav__links:hover .nav__pill { opacity: 1; }

/* hero extras */
.hero__spot { position: absolute; inset: 0; pointer-events: none; opacity: 0; transition: opacity .6s;
  background: radial-gradient(500px circle at var(--hx, 50%) var(--hy, 50%), rgba(226,58,58,.13), transparent 60%); }
.hero:hover .hero__spot { opacity: 1; }
.hero__bgword { position: absolute; left: 0; bottom: 3%; white-space: nowrap; pointer-events: none; font-family: var(--display); font-weight: 700;
  font-size: clamp(110px, 18vw, 300px); line-height: 1; letter-spacing: -.04em; color: transparent; -webkit-text-stroke: 1px rgba(224,180,94,.11); will-change: transform; }
.chip { transition: scale .4s var(--ease), border-color .3s; cursor: default; }
.chip:hover { scale: 1.08; border-color: rgba(224,180,94,.6); }
.hero__video { transition: transform 1.2s var(--ease); }
.hero__arch:hover .hero__video { transform: scale(1.06); }
.hero__stats li { padding: 10px 14px; margin: -10px -14px; border-radius: 16px; transition: background .3s, transform .5s var(--ease); }
.hero__stats li:hover { background: rgba(var(--hl-rgb),.04); transform: translateY(-4px); }

/* marquee hover */
.marquee span { transition: color .3s, -webkit-text-stroke-color .3s; }
.marquee:hover span { color: var(--gold); -webkit-text-stroke-color: var(--gold); }
.marquee i { display: inline-block; animation: spin 8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* pills */
.story__tags span, .rv-tags span, .cta__steps li, .visit__facts li { transition: background .3s, color .3s, transform .5s var(--ease), border-color .3s; cursor: default; }
.story__tags span:hover, .rv-tags span:hover { background: var(--red-grad); color: #fff; border-color: transparent; transform: translateY(-4px) rotate(-3deg); }
.rv-tags span:hover b { color: var(--gold-2); }
.cta__steps li:hover { transform: translateY(-6px) scale(1.04); border-color: rgba(224,180,94,.6); }

/* reviews */
.rv { transition: transform .6s var(--ease), border-color .4s, background .4s !important; }
.rv:hover { background: #211915; }
.rv__av { transition: transform .6s var(--ease); }
.rv:hover .rv__av { transform: rotate(360deg) scale(1.1); }
.rv:hover .rv__stars { animation: stars .6s var(--ease); }
@keyframes stars { 40% { letter-spacing: .3em; } }

/* visit */
.hours td { transition: padding .4s var(--ease), color .3s; }
.hours tr:hover td { color: var(--gold-2); }
.hours tr:hover td:first-child { padding-left: 10px; }
.row-link b::after { content: ""; position: absolute; left: 0; bottom: -2px; height: 1px; width: 100%; background: currentColor; transform: scaleX(0); transform-origin: right; transition: transform .5s var(--ease); }
.row-link:hover b::after { transform: scaleX(1); transform-origin: left; }
.row-link svg { transition: transform .4s var(--ease); }
.row-link:hover svg { transform: scale(1.15) rotate(-6deg); }
.map-load { position: relative; width: 100%; height: 100%; min-height: 420px; display: grid; place-content: center; justify-items: center; gap: 8px; overflow: hidden; text-align: center; }
.map-load img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: blur(3px) brightness(.35) saturate(1.2); transform: scale(1.1); transition: transform 1s var(--ease), filter .6s; }
.map-load:hover img { transform: scale(1.18); filter: blur(2px) brightness(.45) saturate(1.3); }
.map-load > *:not(img) { position: relative; }
.map-load__pin { width: 64px; height: 64px; border-radius: 50%; display: grid; place-items: center; background: var(--red-grad); color: #fff; margin-bottom: 6px; animation: pin-ping 2.2s infinite; transition: transform .5s var(--ease); }
.map-load:hover .map-load__pin { transform: translateY(-6px) scale(1.08); }
@keyframes pin-ping { 0% { box-shadow: 0 0 0 0 rgba(226,58,58,.5); } 100% { box-shadow: 0 0 0 26px rgba(226,58,58,0); } }
.map-load__pin svg { width: 28px; height: 28px; }
.map-load b { font-family: var(--display); font-size: 22px; font-weight: 600; }
.map-load small { color: var(--muted); font-size: 13px; }

/* reveal variants */
[data-reveal="left"] { transform: translateX(-80px) rotate(-2deg); }
[data-reveal="right"] { transform: translateX(80px) rotate(2deg); }
[data-reveal="zoom"] { transform: scale(.6) rotate(-20deg); }
[data-reveal].in { transform: none; }
.cta .seal.in { transform: rotate(-4deg); }

/* CTA grows from card to full-bleed */
.cta__bg { clip-path: inset(calc(var(--k, 1) * 8%) calc(var(--k, 1) * 6%) round calc(var(--k, 1) * 48px)); }

/* footer wordmark */
.foot__word { cursor: default; }
.foot p a { position: relative; }

/* gold notice bar */
.notice { position: fixed; top: 0; left: 0; right: 0; z-index: 85; padding: 8px 16px; text-align: center; font-size: 14px; font-weight: 600; color: #1a0d04; background: var(--gold-grad); }
body.has-notice .nav { top: 50px; }
body.has-notice .hero { padding-top: 170px; }

/* failsafe: intro never blocks the page */
html, body { overflow-x: clip; }
.loader { animation: loader-failsafe 0s 7s forwards; }
@keyframes loader-failsafe { to { visibility: hidden; opacity: 0; } }
body.is-loading { animation: unlock 0s 7s forwards; }
@keyframes unlock { to { overflow: auto; } }
body.fast-load .loader__door, body.fast-load .loader__in { transition-duration: .7s; }

@media (max-width: 860px) {
  .hero__bgword { bottom: auto; top: 38%; font-size: 32vw; }
  .gallery:hover .g-item:not(:hover) img { filter: none; }
  .sec-head h2 { translate: none !important; }
}
@media (prefers-reduced-motion: reduce) {
  .grain, .marquee__track, .rv-row, .lantern, .chip, .hero__steam i { animation: none !important; }
}
