/* design-forge preset: cyber — animations
   未来系:ネオン明滅・走査線・控えめグリッチ */

@keyframes fadeUp{
  from{opacity:0;transform:translateY(24px)}
  to{opacity:1;transform:translateY(0)}
}
@keyframes fadeIn{
  from{opacity:0}
  to{opacity:1}
}
@keyframes float{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-10px)}
}
@keyframes pulse{
  0%,100%{transform:scale(1);opacity:1}
  50%{transform:scale(1.05);opacity:.85}
}

/* スクロール出現(JSで .is-visible 付与) */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .6s ease,transform .6s ease}
.reveal.is-visible{opacity:1;transform:translateY(0)}
.reveal:nth-child(2){transition-delay:.12s}
.reveal:nth-child(3){transition-delay:.24s}

/* ホバー(浮き+発光) */
.hover-lift{transition:transform var(--speed),box-shadow var(--speed),border-color var(--speed)}
.hover-lift:hover{transform:translateY(-6px);box-shadow:var(--shadow-m)}

/* cyber固有:ゆっくり漂うHUDパーツ */
.float-deco{animation:float 6s ease-in-out infinite}

/* cyber固有:ネオンスイープ(cleanのshineをネオン化) */
@keyframes shine{
  0%{transform:translateX(-120%) skewX(-18deg)}
  100%{transform:translateX(220%) skewX(-18deg)}
}
.shine{position:relative;overflow:hidden}
.shine::after{
  content:"";position:absolute;top:0;left:0;width:40%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);
  animation:shine 3.5s ease-in-out infinite;
}

/* cyber固有:移動スキャンライン(.hero::after 等で使用) */
@keyframes scanline{
  0%{top:-2%;opacity:0}
  8%{opacity:1}
  92%{opacity:1}
  100%{top:102%;opacity:0}
}

/* cyber固有:ネオンの明滅(控えめなちらつき) */
@keyframes neonFlicker{
  0%,100%{opacity:1}
  3%{opacity:.72}
  5%{opacity:1}
  42%{opacity:1}
  44%{opacity:.82}
  46%{opacity:1}
  71%{opacity:.9}
  73%{opacity:1}
}
.neon-flicker{animation:neonFlicker 5s linear infinite}

/* cyber固有:発光の呼吸 */
@keyframes glowPulse{
  0%,100%{box-shadow:0 0 6px rgba(34,224,232,.5),0 0 18px rgba(34,224,232,.25)}
  50%{box-shadow:0 0 10px rgba(34,224,232,.85),0 0 30px rgba(34,224,232,.45)}
}
.glow-pulse{animation:glowPulse 2.6s ease-in-out infinite}

/* cyber固有:グリッチ(控えめ・水平ズレのみ) */
@keyframes glitch{
  0%,94%,100%{transform:translateX(0)}
  95%{transform:translateX(2px)}
  96%{transform:translateX(-2px)}
  97%{transform:translateX(1px)}
  98%{transform:translateX(0)}
}
.glitch{animation:glitch 6s steps(1) infinite}
