/* Neo Holdings — Animation System */

/* ═══ KEYFRAMES ════════════════════════════════════════════════ */
@keyframes neoFadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes neoFadeUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes neoFadeLeft {
  from { opacity: 0; transform: translateX(-20px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes neoSlideDown {
  from { opacity: 0; transform: translateY(-12px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes heroFloat {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-14px); }
}

/* ═══ HERO ENTRANCE (fires on page load via CSS) ══════════════ */

/* Chips and badges */
.hero-chip,
.page-chip,
.div-badge-dark {
  animation: neoSlideDown 0.5s cubic-bezier(0.25, 1, 0.5, 1) 0.1s both;
}

/* Homepage hero */
.hero h1       { animation: neoFadeUp 0.75s cubic-bezier(0.25, 1, 0.5, 1) 0.22s both; }
.hero-subtitle { animation: neoFadeUp 0.65s cubic-bezier(0.25, 1, 0.5, 1) 0.40s both; }
.hero p        { animation: neoFadeUp 0.65s cubic-bezier(0.25, 1, 0.5, 1) 0.52s both; }
.hero-btns     { animation: neoFadeUp 0.60s cubic-bezier(0.25, 1, 0.5, 1) 0.66s both; }
.hero-stats .stat-box:nth-child(1) { animation: neoFadeUp 0.55s cubic-bezier(0.25, 1, 0.5, 1) 0.82s both; }
.hero-stats .stat-box:nth-child(2) { animation: neoFadeUp 0.55s cubic-bezier(0.25, 1, 0.5, 1) 0.97s both; }
.hero-stats .stat-box:nth-child(3) { animation: neoFadeUp 0.55s cubic-bezier(0.25, 1, 0.5, 1) 1.12s both; }

/* Hero visual bars */
.hero-bar { animation: heroFloat 3s ease-in-out infinite; }

/* Page hero (inner pages) */
.page-hero h1 { animation: neoFadeUp 0.75s cubic-bezier(0.25, 1, 0.5, 1) 0.22s both; }
.page-hero p  { animation: neoFadeUp 0.65s cubic-bezier(0.25, 1, 0.5, 1) 0.42s both; }

/* Division hero headings */
.div-hero-neo-lab h1, .div-hero-neo-lab h2,
.div-hero-refr h1,    .div-hero-refr h2,
.div-hero-air h1,     .div-hero-air h2,
.div-hero-space h1,   .div-hero-space h2,
.div-hero-dev h1,     .div-hero-dev h2 {
  animation: neoFadeUp 0.75s cubic-bezier(0.25, 1, 0.5, 1) 0.22s both;
}
.div-hero-neo-lab p, .div-hero-refr p, .div-hero-air p, .div-hero-space p, .div-hero-dev p {
  animation: neoFadeUp 0.65s cubic-bezier(0.25, 1, 0.5, 1) 0.55s both;
}

/* Credential / auth / sidebar cards in division heroes */
.credential-card,
.auth-card,
.concept-card,
.div-sidebar-card {
  animation: neoFadeIn 0.7s cubic-bezier(0.25, 1, 0.5, 1) 0.5s both;
}

/* ═══ SCROLL REVEAL BASE ═══════════════════════════════════════ */
/* JS adds .reveal to elements, then .is-visible when in viewport */

.reveal {
  opacity: 0 !important;
  transform: translateY(20px) !important;
  transition:
    opacity  0.65s cubic-bezier(0.25, 1, 0.5, 1),
    transform 0.65s cubic-bezier(0.25, 1, 0.5, 1) !important;
  will-change: opacity, transform;
}
.reveal.is-visible {
  opacity: 1 !important;
  transform: translateY(0) !important;
}

/* Fade-only variant for tags, chips, small elements */
.reveal-fade {
  opacity: 0 !important;
  transition: opacity 0.5s cubic-bezier(0.25, 1, 0.5, 1) !important;
  will-change: opacity;
}
.reveal-fade.is-visible {
  opacity: 1 !important;
}

/* ═══ MID-PAGE DIVISION HERO REVEAL ═══════════════════════════ */
/* JS applies .dsect-anim to elements, then .dsect-visible when in view */
.dsect-anim {
  opacity: 0;
  transform: translateY(20px);
  transition:
    opacity   0.65s cubic-bezier(0.25, 1, 0.5, 1),
    transform 0.65s cubic-bezier(0.25, 1, 0.5, 1);
}
.dsect-anim.dsect-visible {
  opacity: 1;
  transform: translateY(0);
}

/* ═══ CARD HOVER TRANSITIONS ══════════════════════════════════ */
/* Snappy 0.15s press — all interactive card types */
.div-card:hover, .card:hover, .team-card:hover,
.partner-card:hover, .product-card:hover, .supply-card:hover,
.service-card:hover, .story-card:hover, .vm-card:hover,
.founder-card:hover, .how-step:hover, .flow-step:hover,
.workflow-step:hover, .featured-card:hover, .core-card:hover,
.sector-tag:hover, .proj-card:hover, .credential-card:hover,
.auth-card:hover, .concept-card:hover, .form-card:hover {
  transition:
    transform    0.15s cubic-bezier(0.25, 1, 0.5, 1),
    box-shadow   0.15s cubic-bezier(0.25, 1, 0.5, 1),
    border-color 0.15s cubic-bezier(0.25, 1, 0.5, 1) !important;
}

/* ── Fix: .reveal.is-visible uses transform !important which blocks
   the hover press. Override with higher specificity (3 classes). ── */
.div-card.is-visible:hover,
.card.is-visible:hover,
.team-card.is-visible:hover,
.partner-card.is-visible:hover,
.product-card.is-visible:hover,
.supply-card.is-visible:hover,
.service-card.is-visible:hover,
.story-card.is-visible:hover,
.vm-card.is-visible:hover,
.founder-card.is-visible:hover,
.how-step.is-visible:hover,
.flow-step.is-visible:hover,
.workflow-step.is-visible:hover,
.featured-card.is-visible:hover,
.core-card.is-visible:hover,
.sector-tag.is-visible:hover,
.proj-card.is-visible:hover,
.credential-card.is-visible:hover,
.auth-card.is-visible:hover,
.concept-card.is-visible:hover,
.form-card.is-visible:hover {
  transform: translate(2px, 2px) !important;
}

/* ═══ REDUCED MOTION ACCESSIBILITY ════════════════════════════ */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration:   0.001ms !important;
    animation-delay:      0.001ms !important;
    transition-duration:  0.001ms !important;
  }
  .reveal, .reveal-fade, .dsect-anim {
    opacity:   1 !important;
    transform: none !important;
    transition: none !important;
  }
}
