/* ============================================================
   2TheBeat Travel — Additional Animations CSS
   ============================================================ */

/* ─── Page Transitions ─── */
body { animation: page-enter .5s ease; }
@keyframes page-enter {
  from { opacity:0; transform:translateY(10px); }
  to   { opacity:1; transform:translateY(0); }
}

/* ─── Gold Shimmer Text ─── */
.text-shimmer {
  background: linear-gradient(90deg, #FFD700 0%, #FFE566 30%, #B8860B 60%, #FFD700 100%);
  background-size: 300% 100%;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: text-shine 4s linear infinite;
}
@keyframes text-shine {
  0%   { background-position: 0% }
  100% { background-position: 300% }
}

/* ─── Typewriter Effect ─── */
.typewriter {
  overflow: hidden;
  border-right: 3px solid var(--gold);
  white-space: nowrap;
  animation: typing 3.5s steps(40,end) forwards, blink-caret .75s step-end infinite;
}
@keyframes typing { from{width:0} to{width:100%} }
@keyframes blink-caret { from,to{border-color:transparent} 50%{border-color:var(--gold);} }

/* ─── Particle Float ─── */
.particle {
  position: fixed;
  pointer-events: none;
  border-radius: 50%;
  z-index: 0;
  animation: particle-drift var(--dur, 20s) linear var(--delay, 0s) infinite;
  opacity: 0.06;
}
@keyframes particle-drift {
  0%   { transform: translateY(100vh) translateX(0) rotate(0deg); opacity:0; }
  10%  { opacity:0.06; }
  90%  { opacity:0.06; }
  100% { transform: translateY(-50px) translateX(var(--drift,30px)) rotate(360deg); opacity:0; }
}

/* ─── Neon Glow Buttons ─── */
.btn-neon {
  border: 2px solid var(--teal);
  color: var(--teal);
  background: transparent;
  box-shadow: 0 0 10px rgba(0,201,177,0.3), inset 0 0 10px rgba(0,201,177,0.05);
  animation: neon-pulse 2s ease-in-out infinite;
}
@keyframes neon-pulse {
  0%,100% { box-shadow: 0 0 10px rgba(0,201,177,0.3), inset 0 0 10px rgba(0,201,177,0.05); }
  50%      { box-shadow: 0 0 30px rgba(0,201,177,0.7), inset 0 0 20px rgba(0,201,177,0.15); }
}

/* ─── Card Hover Lift ─── */
.lift-hover { transition: transform .35s cubic-bezier(.175,.885,.32,1.275), box-shadow .35s ease; }
.lift-hover:hover { transform: translateY(-10px) scale(1.02); box-shadow: 0 25px 60px rgba(0,0,0,0.5); }

/* ─── Gradient Borders ─── */
.gradient-border {
  position: relative;
}
.gradient-border::after {
  content: '';
  position: absolute; inset: 0;
  border-radius: inherit;
  padding: 1px;
  background: linear-gradient(135deg, var(--gold), var(--teal), var(--gold));
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  pointer-events: none;
}

/* ─── Loading Spinner ─── */
.spinner {
  width: 40px; height: 40px;
  border: 3px solid rgba(255,215,0,0.2);
  border-top-color: var(--gold);
  border-radius: 50%;
  animation: spin .8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* ─── Progress Bar ─── */
#page-progress {
  position: fixed; top: 0; left: 0; height: 3px;
  background: linear-gradient(90deg, var(--gold), var(--teal));
  z-index: 9998;
  width: 0%;
  transition: width .1s linear;
}

/* ─── Smooth Image Reveal ─── */
.img-reveal {
  clip-path: inset(0 100% 0 0);
  transition: clip-path .8s cubic-bezier(.77,0,.175,1);
}
.img-reveal.revealed { clip-path: inset(0 0% 0 0); }

/* ─── Animated Underline ─── */
.animated-underline {
  position: relative;
  display: inline-block;
}
.animated-underline::after {
  content: '';
  position: absolute;
  bottom: -3px; left: 0;
  width: 0; height: 2px;
  background: linear-gradient(90deg, var(--gold), var(--teal));
  transition: width .4s ease;
}
.animated-underline:hover::after { width: 100%; }

/* ─── Staggered Grid Animation ─── */
.stagger-grid > * {
  opacity: 0;
  transform: translateY(30px);
  animation: stagger-in .5s ease forwards;
}
.stagger-grid > *:nth-child(1)  { animation-delay: .05s; }
.stagger-grid > *:nth-child(2)  { animation-delay: .10s; }
.stagger-grid > *:nth-child(3)  { animation-delay: .15s; }
.stagger-grid > *:nth-child(4)  { animation-delay: .20s; }
.stagger-grid > *:nth-child(5)  { animation-delay: .25s; }
.stagger-grid > *:nth-child(6)  { animation-delay: .30s; }
.stagger-grid > *:nth-child(7)  { animation-delay: .35s; }
.stagger-grid > *:nth-child(8)  { animation-delay: .40s; }
.stagger-grid > *:nth-child(9)  { animation-delay: .45s; }
.stagger-grid > *:nth-child(10) { animation-delay: .50s; }
@keyframes stagger-in { to{opacity:1;transform:translateY(0);} }

/* ─── Sub-page Hero ─── */
.dest-page-hero {
  height: 70vh; min-height: 500px;
  background-size: cover;
  background-position: center;
  position: relative;
  display: flex; align-items: flex-end;
  padding: 3rem 2rem;
}
.dest-page-hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(10,22,40,.95) 0%, rgba(10,22,40,.3) 60%);
}
.dest-page-hero-content {
  position: relative; z-index: 2;
  max-width: 1200px; margin: 0 auto; width: 100%;
}

/* ─── Info Cards on Dest Pages ─── */
.info-card {
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,215,0,.15);
  border-radius: var(--radius);
  padding: 2rem;
  transition: var(--transition);
}
.info-card:hover {
  border-color: rgba(255,215,0,.35);
  background: rgba(255,215,0,.04);
  transform: translateY(-3px);
}
.info-card-title {
  font-family: var(--font-main);
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--gold);
  margin-bottom: 1rem;
}
.info-list { display: flex; flex-direction: column; gap: .5rem; }
.info-list-item {
  display: flex; align-items: flex-start; gap: .5rem;
  font-size: .85rem; color: rgba(255,255,255,.75);
  line-height: 1.5;
}
.info-list-item::before { content: '→'; color: var(--teal); flex-shrink: 0; }

/* ─── Timeline on Dest Pages ─── */
.timeline { position: relative; padding-left: 2rem; }
.timeline::before {
  content: '';
  position: absolute; left: .5rem; top: 0; bottom: 0; width: 2px;
  background: linear-gradient(to bottom, var(--gold), var(--teal));
}
.timeline-item {
  position: relative;
  padding-bottom: 2rem;
}
.timeline-item::before {
  content: '';
  position: absolute; left: -1.75rem; top: .3rem;
  width: 10px; height: 10px;
  background: var(--gold); border-radius: 50%;
  box-shadow: 0 0 10px rgba(255,215,0,.5);
}
.timeline-day {
  font-size: .75rem; font-weight: 700;
  color: var(--teal); letter-spacing: 1px;
  text-transform: uppercase; margin-bottom: .25rem;
}
.timeline-title { font-weight: 700; margin-bottom: .5rem; }
.timeline-desc { font-size: .85rem; color: rgba(255,255,255,.65); line-height: 1.6; }

/* ─── Tabs ─── */
.tabs { display: flex; gap: 0; border-bottom: 1px solid rgba(255,215,0,.2); margin-bottom: 2rem; }
.tab-btn {
  padding: .75rem 1.5rem;
  font-size: .85rem; font-weight: 600;
  color: rgba(255,255,255,.55);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: var(--transition);
  background: none;
}
.tab-btn:hover { color: var(--white); }
.tab-btn.active { color: var(--gold); border-bottom-color: var(--gold); }
.tab-content { display: none; animation: fadeIn .3s ease; }
.tab-content.active { display: block; }
