/* ============================================================
   安信娱乐 ANXIN ENTERTAINMENT
   03 / motion.css — 入场 · 循环动画 · 无障碍降级
   ============================================================ */

@keyframes blink {
  0%, 55% { opacity: 1; }
  56%, 100% { opacity: .25; }
}

@keyframes slide {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

@keyframes beamSweep {
  0% { opacity: .35; transform: translateX(-6%); }
  50% { opacity: .6; transform: translateX(4%); }
  100% { opacity: .35; transform: translateX(-6%); }
}

.hero::before { animation: beamSweep 12s ease-in-out infinite; }

/* 入场：由 boot.js 给 [data-cue] 加 .is-up；无 JS 时内容照常显示 */
.js [data-cue] {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity .7s var(--ease), transform .7s var(--ease);
  will-change: opacity, transform;
}
[data-cue].is-up { opacity: 1; transform: none; }
.js [data-cue][data-cue="2"] { transition-delay: .08s; }
.js [data-cue][data-cue="3"] { transition-delay: .16s; }
.js [data-cue][data-cue="4"] { transition-delay: .24s; }
.js [data-cue][data-cue="5"] { transition-delay: .32s; }
.js [data-cue][data-cue="6"] { transition-delay: .4s; }

/* 首屏时间码外的细扫描线 */
.hero__in::after {
  content: "";
  position: absolute;
  left: 0; right: 0; top: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(242, 163, 60, .35), transparent);
  animation: scan 9s linear infinite;
}

@keyframes scan {
  0% { transform: translateY(0); opacity: 0; }
  8% { opacity: .8; }
  92% { opacity: .8; }
  100% { transform: translateY(560px); opacity: 0; }
}

/* 悬停微光：票根与片格 */
.stub:hover .stub__no { color: var(--beam-2); }
.frame__art { transition: transform .5s var(--ease), border-color .3s; }
.frame:hover .frame__art { transform: translateY(-3px); border-color: #3b3225; }

/* 尊重系统减弱动效设置 */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }
  [data-cue] { opacity: 1 !important; transform: none !important; }
  .hero__in::after { display: none; }
  .strip__in { animation: none; }
}
