/* ============================================
   PRELOADER
   ============================================ */
.preloader {
  position: fixed;
  inset: 0;
  background: #05120d;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  z-index: 9999;
  transition: opacity 0.6s ease, visibility 0.6s ease;
}
.preloader.hidden { opacity: 0; visibility: hidden; pointer-events: none; }
.preloader-logo {
  width: 100px; height: 100px; border-radius: 50%;
  border: 3px solid var(--text-gold);
  animation: preloaderPulse 1.5s ease-in-out infinite;
  margin-bottom: 30px; object-fit: cover;
}
.preloader-spinner {
  width: 50px; height: 50px;
  border: 3px solid rgba(94,207,138,0.2);
  border-top-color: var(--accent-green);
  border-radius: 50%; animation: spin 0.8s linear infinite;
}
.preloader-text {
  margin-top: 20px; color: var(--text-gold);
  font-family: 'Cinzel', serif; font-size: 1.1rem;
  letter-spacing: 3px; animation: fadeInOut 2s ease-in-out infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes preloaderPulse {
  0%,100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(94,207,138,0.4); }
  50% { transform: scale(1.05); box-shadow: 0 0 30px 10px rgba(94,207,138,0.2); }
}
@keyframes fadeInOut { 0%,100% { opacity: 0.5; } 50% { opacity: 1; } }

/* ============================================
   SCROLL REVEAL
   ============================================ */
.reveal {
  opacity: 0; transform: translateY(40px);
  transition: opacity 0.8s cubic-bezier(0.25,0.46,0.45,0.94), transform 0.8s cubic-bezier(0.25,0.46,0.45,0.94);
}
.reveal.revealed { opacity: 1; transform: translateY(0); }
.reveal-left { opacity: 0; transform: translateX(-60px); transition: opacity 0.8s ease, transform 0.8s ease; }
.reveal-left.revealed { opacity: 1; transform: translateX(0); }
.reveal-right { opacity: 0; transform: translateX(60px); transition: opacity 0.8s ease, transform 0.8s ease; }
.reveal-right.revealed { opacity: 1; transform: translateX(0); }
.reveal-scale { opacity: 0; transform: scale(0.85); transition: opacity 0.7s ease, transform 0.7s ease; }
.reveal-scale.revealed { opacity: 1; transform: scale(1); }
.stagger-children > * { opacity: 0; transform: translateY(25px); transition: opacity 0.5s ease, transform 0.5s ease; }
.stagger-children.revealed > * { opacity: 1; transform: translateY(0); }

/* ============================================
   PARTICLES
   ============================================ */
.particles-container { position: fixed; inset: 0; pointer-events: none; z-index: 0; overflow: hidden; }
.particle {
  position: absolute; width: 4px; height: 4px;
  background: rgba(94,207,138,0.3); border-radius: 50%;
  animation: floatParticle linear infinite;
}
.particle:nth-child(odd) { background: rgba(201,160,80,0.2); }
@keyframes floatParticle {
  0% { transform: translateY(100vh) rotate(0deg); opacity: 0; }
  10% { opacity: 1; } 90% { opacity: 1; }
  100% { transform: translateY(-10vh) rotate(720deg); opacity: 0; }
}

/* ============================================
   NAVBAR SCROLL
   ============================================ */
header.scrolled { padding: 0.8rem 8%; background: rgba(5,18,13,0.95); box-shadow: 0 5px 30px rgba(0,0,0,0.6); }
header.nav-hidden { transform: translateY(-100%); }
header { 
    transition: transform 0.35s ease, padding 0.35s ease, background 0.35s ease, box-shadow 0.35s ease;
    animation: headerSlideDown 0.8s cubic-bezier(0.25, 1, 0.5, 1) forwards;
}

@keyframes headerSlideDown {
    0% { transform: translateY(-100%); opacity: 0; }
    100% { transform: translateY(0); opacity: 1; }
}

/* ============================================
   CAROUSEL DOTS
   ============================================ */
.carrusel-dots { display: flex; justify-content: center; gap: 10px; margin-top: 20px; }
.carrusel-dot {
  width: 12px; height: 12px; border-radius: 50%;
  background: rgba(94,207,138,0.3); border: 2px solid var(--text-gold);
  cursor: pointer; transition: all 0.3s ease; padding: 0;
}
.carrusel-dot.active { background: var(--accent-green); box-shadow: 0 0 10px rgba(94,207,138,0.5); transform: scale(1.2); }
.carrusel-dot:hover { background: var(--text-gold); }

/* ============================================
   SCROLL PROGRESS + BACK TO TOP
   ============================================ */
.scroll-progress {
  position: fixed; top: 0; left: 0; height: 3px;
  background: linear-gradient(90deg, var(--accent-green), var(--text-gold));
  z-index: 10000; transition: width 0.1s linear;
  box-shadow: 0 0 10px rgba(94,207,138,0.5);
}
.back-to-top {
  position: fixed; bottom: 110px; right: 40px; width: 50px; height: 50px;
  background: var(--card-glass); border: 2px solid var(--text-gold);
  border-radius: 50%; color: var(--text-gold); font-size: 22px;
  cursor: pointer; z-index: 1999; display: flex; align-items: center;
  justify-content: center; opacity: 0; transform: translateY(20px);
  transition: all 0.35s ease; pointer-events: none; text-decoration: none;
}
.back-to-top.visible { opacity: 1; transform: translateY(0); pointer-events: all; }
.back-to-top:hover { background: var(--text-gold); color: #05120d; box-shadow: 0 0 20px rgba(94,207,138,0.4); }

/* COUNTERS */
.counter-number { font-family:'Cinzel',serif; font-size:3.5rem; font-weight:700; color:var(--accent-green); display:block; margin-bottom:5px; }
.counter-label { font-size:1rem; color:var(--text-light); opacity:0.8; text-transform:uppercase; letter-spacing:2px; }
.counters-row { display:flex; justify-content:center; gap:60px; flex-wrap:wrap; margin-top:40px; padding:40px 0; border-top:1px solid rgba(94,207,138,0.15); border-bottom:1px solid rgba(94,207,138,0.15); }
.counter-item { text-align:center; min-width:120px; }

@media (max-width:768px) {
  .back-to-top { bottom:80px; right:20px; width:44px; height:44px; font-size:18px; }
  .counters-row { gap:30px; }
  .counter-number { font-size:2.5rem; }
}
