/* Neutrino motion layer. Loaded only when the animations are on (see inc/motion.php).
   Nothing here changes text or layout; it only supports assets/js/motion.js. */

/* Until the animation script starts, keep the parts that animate in hidden so they don't flash.
   A small script in <head> removes .nt-m-wait after 2.5 s no matter what, so the page can never stay hidden. */
.nt-m-wait .hero-inner > *,
.nt-m-wait .page-head > *,
.nt-m-wait .pf-hero > *,
.nt-m-wait .pf-back,
.nt-m-wait .ptable > .el,
.nt-m-wait .people .person,
.nt-m-wait .tabs a,
.nt-m-wait .chips .chip,
.nt-m-wait .album-wall .shot,
.nt-m-wait .album-grid .album-item,
.nt-m-wait .ev-list > .ev,
.nt-m-wait .elementor-widget-nt-card .panel,
.nt-m-wait .elementor-widget-nt-events .panel,
.nt-m-wait .nt-steps,
.nt-m-wait .nt-faq { opacity: 0 }

/* Split heading words */
.nt-m .nt-w { display: inline-block; }

/* Sector table depth */
.nt-m .ptable.nt-3d { perspective: 1100px; }

/* Scroll progress line */
.nt-progress {
  position: fixed; left: 0; right: 0; top: var(--wp-admin--admin-bar--height, 0px); height: 3px; z-index: 9990;
  pointer-events: none; transform: scaleX(0); transform-origin: 0 50%;
  background: linear-gradient(90deg, var(--ice), #3aa0e6 55%, var(--yolk));
}

/* Header shadow once the page scrolls */
.nt-m header.top { transition: box-shadow .3s ease, background-color .3s ease; }
.nt-m header.top.nt-scrolled { box-shadow: 0 12px 30px -20px rgba(16, 42, 84, .45); }

/* "Why Neutrino?" card: neutrino streaks behind the text */
.nt-m .panel.nt-streaks { position: relative; overflow: hidden; isolation: isolate; }
.nt-streak-box { position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.nt-streak-box i {
  position: absolute; left: -30%; height: 1.5px; border-radius: 2px;
  background: linear-gradient(90deg, rgba(22, 115, 196, 0), rgba(22, 115, 196, .55));
}
.nt-streak-box i::after {
  content: ""; position: absolute; right: -2px; top: 50%; width: 4px; height: 4px; margin-top: -2px; border-radius: 50%;
  background: rgba(22, 115, 196, .85);
}
.nt-streak-box i.is-gold { background: linear-gradient(90deg, rgba(194, 134, 15, 0), rgba(194, 134, 15, .7)); }
.nt-streak-box i.is-gold::after { background: rgba(194, 134, 15, .95); }

/* Events: a faint timeline running behind the festival cards */
.nt-m .ev-list.nt-evline { position: relative; }
.nt-m .ev-list.nt-evline > .ev { z-index: 1; }
.nt-evline-bar {
  position: absolute; left: 75px; top: 30px; bottom: 30px; width: 2px; border-radius: 2px; z-index: 0;
  background: linear-gradient(var(--yolk), var(--ice)); opacity: .55; pointer-events: none;
  transform: scaleY(0); transform-origin: 50% 0;
}
@media (max-width: 560px) { .nt-evline-bar { display: none; } }

/* Events: "Upcoming" tag breathes */
.nt-m .tag.up { animation: nt-tag 2.6s ease-out infinite; }
@keyframes nt-tag {
  0% { box-shadow: 0 0 0 0 rgba(194, 134, 15, .45); }
  70%, 100% { box-shadow: 0 0 0 7px rgba(194, 134, 15, 0); }
}

/* Join: Register button glow */
.nt-m .btn.nt-glow { position: relative; }
.nt-m .btn.nt-glow::after {
  content: ""; position: absolute; inset: -2px; border-radius: inherit; pointer-events: none;
  animation: nt-glow 2.8s ease-out infinite;
}
@keyframes nt-glow {
  0% { box-shadow: 0 0 0 0 rgba(22, 115, 196, .45); }
  70%, 100% { box-shadow: 0 0 0 14px rgba(22, 115, 196, 0); }
}

/* Join: steps are joined by a line that draws itself, and the numbers pop in */
.nt-m ol.steps.nt-line { position: relative; }
.nt-m ol.steps.nt-line::after {
  content: ""; position: absolute; left: 19px; top: var(--nt-t, 16px); height: var(--nt-h, 0px); width: 2px; border-radius: 2px; z-index: 0;
  background: linear-gradient(var(--ice), var(--yolk));
  transform: scaleY(var(--nt-p, 0)); transform-origin: 50% 0;
}
.nt-m ol.steps.nt-line > li::before { background: #fff; z-index: 1; }
.nt-m ol.steps.nt-in > li::before {
  animation: nt-pop .6s cubic-bezier(.3, 1.6, .5, 1) both;
  animation-delay: calc(var(--nt-i, 0) * .14s + .1s);
}
@keyframes nt-pop { from { transform: scale(0); } to { transform: scale(1); } }

@media (prefers-reduced-motion: reduce) {
  .nt-progress, .nt-streak-box, .nt-evline-bar { display: none; }
}
@media print {
  .nt-progress, .nt-streak-box, .nt-evline-bar { display: none; }
  .nt-m *, .nt-m-wait * { opacity: 1 !important; transform: none !important; filter: none !important; }
}
