/* Small custom styles that go beyond Tailwind utility classes */
html { scroll-behavior: smooth; }
.line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.line-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.line-clamp-4 { display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.prose img { border-radius: 0.75rem; }
[data-faq-item].is-open [data-faq-q] svg { transform: rotate(180deg); }
[data-faq-q] svg { transition: transform .2s ease; }

/* Scroll-reveal animation: elements fade + slide up once when they enter the viewport */
.reveal { opacity: 0; transform: translateY(18px); transition: opacity .6s ease, transform .6s ease; }
.reveal.is-visible { opacity: 1; transform: translateY(0); }
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; transition: none; }
}

/* Hide scrollbar on the horizontal tour carousel while keeping it scrollable */
.scrollbar-hide { scrollbar-width: none; -ms-overflow-style: none; }
.scrollbar-hide::-webkit-scrollbar { display: none; }

/* Slow-drifting decorative hero blobs */
.animate-float-slow { animation: float-a 8s ease-in-out infinite; }
.animate-float-slower { animation: float-b 10s ease-in-out infinite; }
@keyframes float-a {
  0%, 100% { transform: translate(0, 0) scale(1); opacity: 1; }
  50% { transform: translate(-60px, 50px) scale(1.25); opacity: 0.7; }
}
@keyframes float-b {
  0%, 100% { transform: translate(0, 0) scale(1); opacity: 1; }
  50% { transform: translate(55px, -45px) scale(1.2); opacity: 0.65; }
}
@media (prefers-reduced-motion: reduce) {
  .animate-float-slow, .animate-float-slower { animation: none; }
}

/* Floating WhatsApp button: pulsing attention ring + gentle entrance bounce */
.animate-wa-ping { animation: wa-ping 2.2s cubic-bezier(0, 0, 0.2, 1) infinite; }
@keyframes wa-ping {
  0% { transform: scale(1); opacity: 0.55; }
  75%, 100% { transform: scale(1.7); opacity: 0; }
}
.animate-wa-intro { animation: wa-intro 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) both; animation-delay: 0.3s; }
@keyframes wa-intro {
  0% { transform: scale(0); opacity: 0; }
  100% { transform: scale(1); opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  .animate-wa-ping { display: none; }
  .animate-wa-intro { animation: none; }
}

/* 3D tilt cards: smooth the transform back to neutral on mouse-leave */
[data-tilt] { transition: transform 0.3s ease-out; will-change: transform; }
@media (prefers-reduced-motion: reduce) {
  [data-tilt] { transition: none !important; transform: none !important; }
}

/* Sticky header shrink-on-scroll */
#siteHeader { --header-scale: 1; }
#siteHeader .h-16.md\:h-20 { height: calc(4rem * var(--header-scale, 1)); transition: height 0.25s ease; }
@media (min-width: 768px) {
  #siteHeader .h-16.md\:h-20 { height: calc(5rem * var(--header-scale, 1)); }
}

/* Hero scroll-down hint */
.animate-scroll-hint { animation: scroll-hint 2s ease-in-out infinite; }
@keyframes scroll-hint {
  0%, 100% { transform: translate(-50%, 0); opacity: 0.5; }
  50% { transform: translate(-50%, 8px); opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  .animate-scroll-hint { animation: none; }
}

/* Animated flowing gradient on hero heading text */
.animate-gradient-text { animation: gradient-flow 6s ease-in-out infinite; }
@keyframes gradient-flow {
  0%, 100% { background-position: 0% center; }
  50% { background-position: 100% center; }
}
@media (prefers-reduced-motion: reduce) {
  .animate-gradient-text { animation: none; }
}
