/* V1.71 · Target-anchored stage light; full-screen flashes remain disabled. */
.target-stage-light {
  --stage-light-size: 118px;
  --stage-light-primary: rgba(255, 202, 92, .5);
  --stage-light-secondary: rgba(255, 241, 184, .28);
  position: fixed;
  z-index: 108;
  width: var(--stage-light-size);
  height: calc(var(--stage-light-size) * .74);
  display: block;
  border-radius: 50%;
  pointer-events: none;
  overflow: visible;
  contain: layout style paint;
  mix-blend-mode: screen;
  transform: translate3d(-50%, -50%, 0);
  animation: target-stage-light-bloom 560ms cubic-bezier(.08,.78,.18,1) both;
}

.target-stage-light::before,
.target-stage-light::after,
.target-stage-light-core {
  content: "";
  position: absolute;
  display: block;
  pointer-events: none;
}

.target-stage-light::before {
  inset: 0;
  border-radius: inherit;
  background: radial-gradient(ellipse at center, var(--stage-light-secondary) 0 12%, var(--stage-light-primary) 24%, transparent 68%);
  filter: blur(3px);
}

.target-stage-light::after {
  left: 15%;
  right: 15%;
  bottom: 5%;
  height: 16%;
  border-radius: 50%;
  border: 1px solid var(--stage-light-primary);
  opacity: .52;
  transform: perspective(120px) rotateX(68deg);
}

.target-stage-light-core {
  left: 22%;
  right: 22%;
  top: 8%;
  height: 72%;
  border-radius: 50%;
  background: linear-gradient(112deg, transparent 8%, var(--stage-light-secondary) 44%, rgba(255,255,255,.22) 50%, transparent 58%);
  filter: blur(1px);
  transform: skewX(-9deg);
  animation: target-stage-light-sweep 460ms ease-out both;
}

.target-stage-light[data-stage-strength="hero"] {
  animation-duration: 720ms;
}

.target-stage-light[data-stage-strength="hero"]::after {
  opacity: .72;
  box-shadow: 0 0 12px var(--stage-light-primary);
}

.target-stage-light[data-stage-tone="ember"] {
  --stage-light-primary: rgba(255, 89, 56, .54);
  --stage-light-secondary: rgba(255, 207, 96, .32);
}

.target-stage-light[data-stage-tone="frost"] {
  --stage-light-primary: rgba(82, 211, 255, .52);
  --stage-light-secondary: rgba(218, 248, 255, .3);
}

.target-stage-light[data-stage-tone="shadow"] {
  --stage-light-primary: rgba(155, 82, 255, .5);
  --stage-light-secondary: rgba(255, 90, 144, .25);
}

.target-stage-light[data-stage-tone="restorative"] {
  --stage-light-primary: rgba(83, 232, 190, .46);
  --stage-light-secondary: rgba(211, 255, 241, .28);
}

@keyframes target-stage-light-bloom {
  0% { opacity: 0; transform: translate3d(-50%, -50%, 0) scale(.62); }
  18% { opacity: .92; transform: translate3d(-50%, -50%, 0) scale(1.04); }
  52% { opacity: .66; transform: translate3d(-50%, -50%, 0) scale(1); }
  100% { opacity: 0; transform: translate3d(-50%, -50%, 0) scale(1.12); }
}

@keyframes target-stage-light-sweep {
  0% { opacity: 0; transform: translateX(-18%) skewX(-9deg) scaleX(.5); }
  26% { opacity: .8; transform: translateX(0) skewX(-9deg) scaleX(1); }
  100% { opacity: 0; transform: translateX(16%) skewX(-9deg) scaleX(.82); }
}

body[data-vfx-quality="low"] .target-stage-light {
  mix-blend-mode: normal;
}

body[data-vfx-quality="low"] .target-stage-light-core {
  display: none;
}

body[data-vfx-quality="low"] .target-stage-light::before {
  filter: none;
  opacity: .56;
}

@media (max-width: 720px) {
  .target-stage-light {
    width: min(var(--stage-light-size), 132px);
    height: min(calc(var(--stage-light-size) * .74), 98px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .target-stage-light,
  .target-stage-light-core {
    animation-duration: 140ms !important;
    animation-iteration-count: 1 !important;
  }

  .target-stage-light-core {
    display: none;
  }
}
