/* ======================================================
   The Grand Holidays — Custom Additions
   Scroll Reveal + extra utilities not in compiled CSS
   ====================================================== */

/* Scroll Reveal */
.reveal {
  opacity: 0;
  transform: translateY(4rem);
  transition: opacity 1s cubic-bezier(0.16, 1, 0.3, 1),
              transform 1s cubic-bezier(0.16, 1, 0.3, 1);
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Testimonial fade */
.t-fade { transition: opacity 0.3s, transform 0.3s; }
.t-fade.out { opacity: 0; transform: translateY(8px); }

/* Active nav underline */
.nav-link.active span { width: 100% !important; }

/* Hero search tabs */
.hero-tab.active {
  background: var(--color-primary) !important;
  color: #fff !important;
  box-shadow: 0 0 15px rgba(107,31,168,0.5);
}

/* Experience filter buttons */
.exp-filter.active {
  background: var(--color-primary);
  color: #fff;
  border-color: var(--color-primary);
  box-shadow: 0 0 15px rgba(107,31,168,0.3);
}

/* Progress bar animation */
@keyframes progress { from { width: 0 } to { width: 100% } }
.progress-bar { animation: progress 5s linear forwards; }

/* Ken Burns on hero */
@keyframes kenBurns {
  0%   { transform: scale(1) translate(0,0); }
  50%  { transform: scale(1.08) translate(-1%,-0.5%); }
  100% { transform: scale(1) translate(0,0); }
}
.ken-burns { animation: kenBurns 20s ease-in-out infinite; }

/* Green pulse on WhatsApp button */
@keyframes greenPulse {
  0%   { box-shadow: 0 4px 20px rgba(37,211,102,0.4), 0 0 0 0 rgba(37,211,102,0.5); }
  70%  { box-shadow: 0 4px 20px rgba(37,211,102,0.4), 0 0 0 12px rgba(37,211,102,0); }
  100% { box-shadow: 0 4px 20px rgba(37,211,102,0.4), 0 0 0 0 rgba(37,211,102,0); }
}
.whatsapp-btn { animation: greenPulse 2s ease-in-out infinite; }

/* Float bob */
@keyframes floatBob {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(-4px); }
}
.float-bob { animation: floatBob 3s ease-in-out infinite; }

/* Cookie banner */
#cookie-banner {
  transform: translateY(100%);
  opacity: 0;
  transition: transform 0.5s cubic-bezier(0.32,0.72,0,1), opacity 0.5s;
}
#successs, #tanc {
	width:100%;
	position:fixed;
	height:100%;
	z-index:99999;
	color:red;
	top:0;
	left:0;
	background:rgba(0, 0, 0, .8)
}
.customalert {
	padding:30px;
	outline:transparent solid 10px;
	max-width:500px;
	margin:10% auto;
	font-size:26px;
	display:table
}
.customalert-success, .customalert-tanc {
	outline-color:rgba(36, 4, 96, .5);
	border:5px dashed rgba(255, 255, 255, .2);
	color:#fff;
	background-color:#34096d
}
.customalert-success {
	font-size:30px;
	text-align:center
}
.customalert-tanc {
	font-size:16px;
	line-height:1.6em;
	text-align:left
}
.customclose {
	font-size:36px;
	color:#fff;
	border:none;
	background-color:#34096d;
	position:absolute;
	right:0;
	top:0
}
.ale-success, .cclose {
	background-color:#fff;
	text-align:center
}
.ale-success {
	color:#111;
	outline-color:rgba(132, 130, 130, .17);
	border:2px dashed rgba(255, 154, 209, .54);
	font-size:15px
}
.cclose {
	font-size:16px;
	color:#232222;
	border:none;
	position:absolute;
	right:-15px;
	top:-15px;
	border-radius:50%;
	width:30px;
	height:30px
}
@media (max-width: 640px) {
  #cookie-banner > div > div {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 16px !important;
    padding: 20px !important;
  }
  #cookie-banner > div > div > div:last-child {
    width: 100%;
    justify-content: stretch;
  }
  #cookie-banner > div > div > div:last-child button {
    flex: 1;
  }
}

/* Search overlay */
#search-overlay {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.5s, visibility 0.5s;
}
#search-overlay.open {
  opacity: 1;
  visibility: visible;
}

/* Mobile menu */
#mobile-menu {
  opacity: 0;
  transform: translateY(-100%);
  pointer-events: none;
  transition: opacity 0.5s ease-in-out, transform 0.5s ease-in-out;
}
#mobile-menu.open {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
