/* Shared punch CTAs + richer cursor — Classic + Immerse */
:root{
  --im-accent:var(--accent);
  --im-cursor-hot:var(--accent);
}

.magnetic{display:inline-flex;vertical-align:middle}

.im-punch{
  position:relative;
  display:inline-flex;
  vertical-align:middle;
  isolation:isolate;
}
.im-punch__glow,
.im-punch__sparks,
.im-punch__sparks i{
  pointer-events:none;
}
.im-punch__glow{
  position:absolute;
  inset:-18px -22px;
  z-index:0;
  border-radius:999px;
  background:radial-gradient(ellipse 70% 80% at 50% 50%,
    color-mix(in oklab,var(--im-accent) 70%,white),
    color-mix(in oklab,var(--im-accent) 28%,transparent) 42%,
    transparent 74%);
  filter:blur(16px);
  opacity:.7;
}
.im-punch > :not(.im-punch__glow):not(.im-punch__sparks){
  position:relative;
  z-index:1;
}
.im-punch__sparks{
  position:absolute;
  inset:0;
  z-index:2;
  overflow:visible;
}
.im-punch__sparks i{
  position:absolute;
  left:calc(50% + (var(--x) * var(--rx, 48%)));
  top:calc(50% + (var(--y) * var(--ry, 28px)));
  width:5px;height:5px;
  margin:-2.5px 0 0 -2.5px;
  border-radius:50%;
  background:color-mix(in oklab,var(--im-accent) 55%,white);
  box-shadow:0 0 8px color-mix(in oklab,var(--im-accent) 80%,white);
  font-style:normal;
  animation:im-spark-bob 1.7s ease-in-out infinite;
  animation-delay:calc(var(--i) * -.16s);
}
.im-punch__sparks i:nth-child(odd){
  width:3px;height:3px;margin:-1.5px 0 0 -1.5px;
  animation-duration:2.15s;
}
@keyframes im-spark-bob{
  0%,100%{opacity:.2;transform:scale(.4)}
  50%{opacity:1;transform:translate(calc(var(--x) * 5px), calc(var(--y) * 6px)) scale(1.25)}
}

.im-punch--hot{
  --rx:47%;
  --ry:32px;
  animation:im-punch-hot 2s cubic-bezier(.16,1.45,.3,1) infinite;
}
.im-punch--hot .im-punch__glow{animation:im-punch-glow 2s ease-in-out infinite}
@keyframes im-punch-hot{
  0%,68%,100%{transform:scale(1)}
  76%{transform:scale(1.065)}
  83%{transform:scale(.975)}
  90%{transform:scale(1.03)}
}
@keyframes im-punch-glow{
  0%,68%,100%{opacity:.55;transform:scale(.96)}
  76%{opacity:1;transform:scale(1.08)}
  90%{opacity:.8;transform:scale(1.02)}
}
.im-punch--hot:hover{animation:none;transform:scale(1.04)}
.im-punch--hot:hover .im-punch__glow{opacity:1;animation:none}
.im-punch--hot:active{transform:scale(.97)}

.im-punch--soft{
  --rx:56%;
  --ry:28px;
  animation:im-punch-soft 2.6s ease-in-out infinite;
}
.im-punch--soft .im-punch__glow{
  inset:-12px -16px;
  opacity:.38;
  filter:blur(14px);
  animation:im-punch-glow-soft 2.6s ease-in-out infinite;
}
.im-punch--soft .im-punch__sparks i{
  width:3px;height:3px;margin:-1.5px 0 0 -1.5px;
  opacity:.7;
  animation-duration:2.4s;
}
@keyframes im-punch-soft{
  0%,100%{transform:scale(1)}
  50%{transform:scale(1.028)}
}
@keyframes im-punch-glow-soft{
  0%,100%{opacity:.28;transform:scale(.98)}
  50%{opacity:.52;transform:scale(1.04)}
}
.im-punch--soft:hover{animation:none;transform:scale(1.03)}
.im-punch--soft:hover .im-punch__glow{opacity:.6;animation:none}
.im-punch--soft:active{transform:scale(.98)}

.im-punch--ghost{
  --rx:70%;
  --ry:14px;
  animation:im-punch-ghost 3s ease-in-out infinite;
}
.im-punch--ghost .im-punch__glow{
  inset:-8px -18px;
  opacity:.22;
  filter:blur(10px);
}
.im-punch--ghost .im-punch__sparks i{
  width:2px;height:2px;margin:-1px 0 0 -1px;
  animation-duration:2.8s;
  box-shadow:0 0 5px var(--im-accent);
}
@keyframes im-punch-ghost{
  0%,100%{transform:scale(1)}
  50%{transform:scale(1.04)}
}
.im-punch--ghost:hover{animation:none;transform:scale(1.05)}

.im-punch--arcade-btn{
  display:inline-flex;
  margin-top:6px;
  width:100%;
  max-width:100%;
  justify-content:center;
}
.im-punch--arcade-btn .scroll-strike-arcade-cta__btn{margin-top:0}
@media (max-width:720px), (pointer:coarse){
  .im-punch--arcade-btn{width:100%}
}

.im-punch:has(:disabled),
.im-punch.is-off{
  animation:none;
  transform:none;
}
.im-punch:has(:disabled) .im-punch__sparks,
.im-punch:has(:disabled) .im-punch__glow,
.im-punch.is-off .im-punch__sparks,
.im-punch.is-off .im-punch__glow{
  display:none;
}

.hero__cta .im-punch,
.nav__actions .im-punch,
.cform__submit-wrap .im-punch{
  display:inline-flex;
}
.cform__submit-wrap{display:inline-flex;margin-top:4px}
@media (max-width:720px){
  .hero__cta .im-punch{
    width:100%;
    display:flex;
  }
  .hero__cta .im-punch .btn{
    width:100%;
    justify-content:center;
  }
}

/* Richer cursor hover (shared) */
.cursor{
  --im-cursor-hot:var(--accent);
  z-index:400;
}
.cursor.is-hover:not(.is-down) .cursor__ring{
  width:56px;
  height:56px;
  border-width:2.5px;
  border-color:color-mix(in oklab,var(--im-cursor-hot) 70%,white);
  background:color-mix(in oklab,var(--im-cursor-hot) 28%,transparent);
  box-shadow:
    0 0 0 1px color-mix(in oklab,var(--im-cursor-hot) 80%,white),
    0 0 10px var(--im-cursor-hot),
    0 0 28px var(--im-cursor-hot);
  filter:drop-shadow(0 0 8px color-mix(in oklab,var(--im-cursor-hot) 75%,white));
}
.cursor.is-hover:not(.is-down) .cursor__ring::after{
  opacity:1;
  transform:scale(1.22);
  border-color:color-mix(in oklab,var(--im-cursor-hot) 55%,white);
}
.cursor.is-hover:not(.is-down) .cursor__dot{
  width:8px;
  height:8px;
  background:color-mix(in oklab,var(--im-cursor-hot) 55%,white);
  box-shadow:0 0 18px var(--im-cursor-hot),0 0 6px white;
}
.cursor__spark{
  position:fixed;
  z-index:301;
  width:4px;height:4px;
  margin:-2px 0 0 -2px;
  border-radius:50%;
  background:color-mix(in oklab,var(--im-accent,var(--accent)) 55%,white);
  box-shadow:0 0 8px color-mix(in oklab,var(--im-accent,var(--accent)) 80%,white);
  pointer-events:none;
  font-style:normal;
  animation:im-cursor-spark .38s ease-out forwards;
}
.cursor__spark:nth-child(odd){
  width:3px;height:3px;margin:-1.5px 0 0 -1.5px;
}
@keyframes im-cursor-spark{
  0%{opacity:1;transform:translate(0,0) scale(1)}
  100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.15)}
}

@media (prefers-reduced-motion:reduce){
  .im-punch,
  .im-punch--hot,
  .im-punch--soft,
  .im-punch--ghost,
  .im-punch__glow,
  .im-punch__sparks i{
    animation:none !important;
  }
}
