/* ========================================================
   ALCONT — Animations & Intersection Observer
   Только fade-in при скролле, без избыточных эффектов
   ======================================================== */

/* ── Reveal on scroll ── */
.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.6s cubic-bezier(0.4, 0, 0.2, 1),
              transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Delay variants for staggered entrance */
.reveal--delay-1 { transition-delay: 0.1s; }
.reveal--delay-2 { transition-delay: 0.2s; }
.reveal--delay-3 { transition-delay: 0.3s; }
.reveal--delay-4 { transition-delay: 0.4s; }
.reveal--delay-5 { transition-delay: 0.5s; }

/* Scale reveal for cards */
.reveal-scale {
  opacity: 0;
  transform: scale(0.96) translateY(16px);
  transition: opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1),
              transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.reveal-scale.visible {
  opacity: 1;
  transform: scale(1) translateY(0);
}

/* Slide from left */
.reveal-left {
  opacity: 0;
  transform: translateX(-24px);
  transition: opacity 0.6s cubic-bezier(0.4, 0, 0.2, 1),
              transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

.reveal-left.visible {
  opacity: 1;
  transform: translateX(0);
}

/* ── Hero entrance (plays once on load) ── */
@keyframes heroFadeIn {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.hero-eyebrow  { animation: heroFadeIn 0.7s 0.1s both ease-out; }
.hero h1       { animation: heroFadeIn 0.7s 0.25s both ease-out; }
.hero-subtitle { animation: heroFadeIn 0.7s 0.4s both ease-out; }
.hero-cta      { animation: heroFadeIn 0.7s 0.55s both ease-out; }
.hero-stats    { animation: heroFadeIn 0.7s 0.7s both ease-out; }
.hero-visual   { animation: heroFadeIn 0.9s 0.5s both ease-out; }

/* ── Counter animation ── */
.count-up {
  display: inline-block;
}

/* ── Stat number pulse ── */
@keyframes statPulse {
  0% { transform: scale(1); }
  50% { transform: scale(1.04); }
  100% { transform: scale(1); }
}

.hero-stat-value.animated {
  animation: statPulse 0.4s ease-out;
}

/* ── Smooth scroll progress indicator ── */
.scroll-progress {
  position: fixed;
  top: 68px;
  left: 0;
  height: 2px;
  background: var(--alcont-red);
  z-index: 101;
  transform-origin: left;
  transform: scaleX(0);
  transition: transform 0.1s linear;
}

/* ── Page loader ── */
.page-loader {
  position: fixed;
  inset: 0;
  background: var(--alcont-deep);
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: opacity 0.4s ease-out, visibility 0.4s ease-out;
}

.page-loader.loaded {
  opacity: 0;
  visibility: hidden;
}

.loader-logo {
  font-family: 'PT Serif', Georgia, serif;
  font-size: 2rem;
  font-weight: 700;
  color: white;
  letter-spacing: 0.06em;
  position: relative;
}

.loader-logo::after {
  content: '';
  position: absolute;
  bottom: -8px;
  left: 0;
  width: 0;
  height: 2px;
  background: var(--alcont-red);
  animation: loaderLine 0.6s 0.2s ease-out forwards;
}

@keyframes loaderLine {
  to { width: 100%; }
}

/* ── Subtle hover lift for interactive elements ── */
.lift {
  transition: transform var(--transition), box-shadow var(--transition);
}

.lift:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}
