/* effects */

/* Ken Burns drift on the hero photo */
.hero-media img { animation: kenburns 16s ease-in-out infinite alternate; }
@keyframes kenburns {
  from { transform: scale(1) translate3d(0,0,0); }
  to { transform: scale(1.08) translate3d(-1%, -1%, 0); }
}

/* Scroll-reveal: elements fade/rise into view as the page is scrolled */
[data-reveal] { opacity: 0; transform: translateY(22px); transition: opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1); }
[data-reveal].is-in { opacity: 1; transform: none; }
[data-reveal="stagger"] > * { opacity: 0; transform: translateY(18px); transition: opacity .6s cubic-bezier(.2,.7,.2,1), transform .6s cubic-bezier(.2,.7,.2,1); }
[data-reveal="stagger"].is-in > * { opacity: 1; transform: none; }
[data-reveal="stagger"].is-in > *:nth-child(1) { transition-delay: 0s; }
[data-reveal="stagger"].is-in > *:nth-child(2) { transition-delay: .08s; }
[data-reveal="stagger"].is-in > *:nth-child(3) { transition-delay: .16s; }
[data-reveal="stagger"].is-in > *:nth-child(4) { transition-delay: .24s; }
[data-reveal="stagger"].is-in > *:nth-child(5) { transition-delay: .32s; }

/* Gallery: lift + zoom on hover, gentle tilt via JS-set custom properties */
.mosaic figure { transition: transform .35s cubic-bezier(.2,.7,.2,1), box-shadow .35s ease; will-change: transform; }
.mosaic figure:hover, .mosaic figure:focus-within { transform: translateY(-6px) rotate(var(--tilt, 0deg)); box-shadow: 0 18px 34px -14px rgba(8, 42, 32, .45); }
.mosaic img { transition: transform .6s cubic-bezier(.2,.7,.2,1), filter .6s ease; }
.mosaic figure:hover img { transform: scale(1.09); filter: saturate(1.12); }

/* Menu rows: soft highlight sweep on hover */
.list > li { border-radius: 10px; transition: background-color .25s ease, transform .25s ease; }
.list > li:hover { background: rgba(217, 165, 54, .08); transform: translateX(2px); }

/* Buttons: shimmer sweep + lift */
.btn { position: relative; overflow: hidden; transition: transform .18s ease, background-color .18s ease, box-shadow .18s ease; }
.btn:hover { transform: translateY(-2px); box-shadow: 0 10px 22px -10px rgba(8, 42, 32, .55); }
.btn::after {
  content: ""; position: absolute; top: 0; left: -60%; width: 40%; height: 100%;
  background: linear-gradient(115deg, transparent, rgba(255,255,255,.35), transparent);
  transform: skewX(-18deg); transition: left .55s ease;
}
.btn:hover::after { left: 130%; }

/* Review cards: lift on hover, staggered reveal already via [data-reveal] */
.rv-card { transition: transform .3s cubic-bezier(.2,.7,.2,1), box-shadow .3s ease; }
.rv-card:hover { transform: translateY(-4px); box-shadow: 0 16px 30px -16px rgba(8, 42, 32, .4); }

/* Star rating: pop animation when picked */
.st.on { animation: pop .3s cubic-bezier(.34,1.56,.64,1); }
@keyframes pop { 0% { transform: scale(1); } 45% { transform: scale(1.35); } 100% { transform: scale(1); } }

/* Tabs: underline slide */
.tab { position: relative; }
.tab[aria-selected="true"] { animation: tabpop .25s ease; }
@keyframes tabpop { from { transform: scale(.94); } to { transform: scale(1); } }

/* Logo mark: gentle sheen on hover */
.brand { position: relative; transition: color .2s ease; }
.brand:hover { color: var(--mango); }

/* Visit card border glow */
.bcard { transition: box-shadow .3s ease; }
.bcard:hover { box-shadow: 0 0 0 1px var(--star), 0 20px 40px -20px rgba(8,42,32,.5); }

@media (prefers-reduced-motion: reduce) {
  .hero-media img { animation: none; }
  [data-reveal], [data-reveal="stagger"] > * { opacity: 1; transform: none; transition: none; }
  .mosaic figure, .mosaic img, .btn, .rv-card, .bcard { transition: none; }
  .btn::after { display: none; }
}
