/* A finite four-beat sequence: anticipation, impact, release, recognition. */
.boss-victory .impact-star,
.boss-victory .sunburst,
.boss-victory .golden-trails,
.boss-victory .motes {
  position: absolute;
  pointer-events: none;
}
.boss-victory .impact-star {
  left: calc(50% - 85px);
  top: 72px;
  width: 170px;
  height: 170px;
  background: #ffe7a2;
  clip-path: polygon(
    50% 0,
    57% 39%,
    100% 50%,
    58% 57%,
    50% 100%,
    43% 58%,
    0 50%,
    42% 42%
  );
  opacity: 0;
}
.boss-victory .sunburst {
  width: 330px;
  height: 330px;
  left: calc(50% - 165px);
  top: -35px;
  background: repeating-conic-gradient(
    from 8deg,
    #f4ce741c 0deg 7deg,
    transparent 7deg 30deg
  );
  mask-image: radial-gradient(
    circle,
    transparent 14%,
    #000 24%,
    transparent 69%
  );
  border-radius: 50%;
  opacity: 0;
}
.boss-victory .golden-trails {
  inset: 0;
  width: 100%;
  height: 380px;
  overflow: visible;
}
.boss-victory .trail {
  stroke: #f6d57f;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-dasharray: 0.32 0.68;
  stroke-dashoffset: 0.32;
  opacity: 0;
}
.boss-victory .trail-fine {
  stroke-width: 1;
  stroke: #fff0b8;
}
.boss-victory .motes {
  left: 50%;
  top: 145px;
}
.boss-victory .motes i {
  position: absolute;
  width: var(--size);
  height: var(--size);
  border-radius: 50%;
  background: #ffe9a2;
  opacity: 0;
}
.boss-victory .motes i:nth-child(5n) {
  border-radius: 0;
  clip-path: polygon(
    50% 0,
    62% 38%,
    100% 50%,
    62% 62%,
    50% 100%,
    38% 62%,
    0 50%,
    38% 38%
  );
}
.boss-victory .scene-footer button {
  position: relative;
  overflow: hidden;
}
.boss-victory .scene-footer button::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    110deg,
    transparent 30%,
    #fff5c77a 48%,
    transparent 66%
  );
  transform: translateX(-120%);
  pointer-events: none;
}
/* Keep all effects behind readable, stationary interface controls. */
.boss-victory[data-state="playing"] .forest {
  animation: boss-victory-forest-breathe 5.4s cubic-bezier(0.2, 0.6, 0.25, 1)
    both;
}
.boss-victory[data-state="playing"] .boss {
  animation: boss-victory-boss-release 0.95s both;
}
.boss-victory[data-state="playing"] .ground {
  animation: boss-victory-disappear 1s 0.75s both;
}
.boss-victory[data-state="playing"] .last-hit {
  animation: boss-victory-disappear 0.35s 0.45s both;
}
.boss-victory[data-state="playing"] .health i {
  animation: boss-victory-health-empty 0.3s 0.25s both;
}
.boss-victory[data-state="playing"] .impact-star {
  animation: boss-victory-impact 0.65s 0.3s cubic-bezier(0.15, 0.7, 0.2, 1) both;
}
.boss-victory[data-state="playing"] .release-ring {
  animation: boss-victory-release-ring 1.7s 0.48s
    cubic-bezier(0.16, 0.7, 0.25, 1) both;
}
.boss-victory[data-state="playing"] .echo {
  animation-delay: 0.65s;
}
.boss-victory[data-state="playing"] .light {
  animation: boss-victory-light-return 2.5s 0.75s both;
}
.boss-victory[data-state="playing"] .light-halo {
  animation: boss-victory-halo-open 2.7s 0.8s both;
}
.boss-victory[data-state="playing"] .sunburst {
  animation: boss-victory-rays-open 3.5s 0.8s both;
}
.boss-victory[data-state="playing"] .trail {
  animation: boss-victory-thread-rise 1.9s 0.7s cubic-bezier(0.3, 0, 0.15, 1)
    both;
}
.boss-victory[data-state="playing"] .trail-fine {
  animation-delay: 0.94s;
}
.boss-victory[data-state="playing"] .leaves i {
  animation: boss-victory-leaf-release 2.9s 0.8s both;
}
.boss-victory[data-state="playing"] .motes i {
  animation: boss-victory-mote-release 3s var(--delay) both;
}
.boss-victory[data-state="playing"] .victory-copy {
  opacity: 1;
  transform: none;
}
.boss-victory[data-state="playing"] .victory-copy > * {
  animation: boss-victory-recognition-arrive 0.85s 2.05s
    cubic-bezier(0.18, 0.8, 0.25, 1) both;
}
.boss-victory[data-state="playing"] .victory-copy h2 {
  animation-delay: 2.4s;
}
.boss-victory[data-state="playing"] .meaning {
  animation-delay: 2.6s;
}
.boss-victory[data-state="playing"] .recognition {
  animation-delay: 2.78s;
}
.boss-victory[data-state="playing"] .victory-seal {
  animation-delay: 2.95s;
}
.boss-victory[data-state="playing"] .scene-footer {
  animation: boss-victory-footer-arrive 0.8s 3.1s both;
}
.boss-victory[data-state="playing"] .scene-footer button::after {
  animation: boss-victory-reward-sheen 1s 3.95s both;
}
@keyframes boss-victory-forest-breathe {
  0%,
  12% {
    transform: scale(1.025);
  }
  26% {
    transform: scale(1.055);
  }
  100% {
    transform: scale(1);
  }
}
@keyframes boss-victory-boss-release {
  0% {
    transform: none;
    opacity: 1;
  }
  27% {
    transform: translateY(3px) scale(0.98);
  }
  35% {
    transform: translate(-6px, -3px) rotate(-2deg);
  }
  40% {
    transform: translate(5px, 1px) rotate(1.5deg);
  }
  48% {
    transform: translate(-2px, 0);
    opacity: 1;
  }
  65% {
    transform: translateY(4px);
    opacity: 0.85;
  }
  100% {
    transform: translateY(22px) scale(0.92);
    opacity: 0;
  }
}
@keyframes boss-victory-impact {
  0% {
    transform: rotate(-24deg) scale(0.15);
    opacity: 0;
  }
  18% {
    opacity: 0.85;
  }
  100% {
    transform: rotate(12deg) scale(1.4);
    opacity: 0;
  }
}
@keyframes boss-victory-health-empty {
  to {
    transform: scaleX(0);
    transform-origin: left;
    opacity: 0;
  }
}
@keyframes boss-victory-light-return {
  0% {
    opacity: 0;
    transform: translate(-15px, 110px) scale(0.18) rotate(-28deg);
  }
  20% {
    opacity: 1;
    transform: translate(12px, 64px) scale(0.6) rotate(12deg);
  }
  55% {
    transform: translate(-4px, -14px) scale(1.12) rotate(-5deg);
  }
  76% {
    transform: translate(2px, 5px) scale(0.97) rotate(2deg);
  }
  100% {
    opacity: 1;
    transform: none;
  }
}
@keyframes boss-victory-halo-open {
  0% {
    opacity: 0;
    transform: scale(0.25);
  }
  50% {
    opacity: 1;
    transform: scale(1.4);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}
@keyframes boss-victory-rays-open {
  0% {
    opacity: 0;
    transform: scale(0.5) rotate(-18deg);
  }
  35% {
    opacity: 0.9;
  }
  100% {
    opacity: 0;
    transform: scale(1.12) rotate(20deg);
  }
}
@keyframes boss-victory-thread-rise {
  0% {
    stroke-dashoffset: 0.32;
    opacity: 0;
  }
  18%,
  65% {
    opacity: 0.85;
  }
  100% {
    stroke-dashoffset: -1;
    opacity: 0;
  }
}
@keyframes boss-victory-release-ring {
  0% {
    opacity: 0;
    transform: scale(0.25);
  }
  12% {
    opacity: 0.7;
  }
  100% {
    opacity: 0;
    transform: scale(2.25);
  }
}
@keyframes boss-victory-leaf-release {
  0% {
    opacity: 0;
    transform: scale(0.3);
  }
  12% {
    opacity: 0.9;
  }
  48% {
    opacity: 0.7;
    transform: translate(calc(var(--x) * 0.85), var(--y)) rotate(65deg);
  }
  100% {
    opacity: 0;
    transform: translate(var(--x), calc(var(--y) + 45px)) rotate(165deg)
      scale(0.6);
  }
}
@keyframes boss-victory-mote-release {
  0% {
    opacity: 0;
    transform: scale(0.2);
  }
  12% {
    opacity: 0.95;
  }
  40% {
    opacity: 0.8;
    transform: translate(calc(var(--x) * 0.83), var(--y)) scale(1);
  }
  100% {
    opacity: 0;
    transform: translate(var(--x), var(--drift)) scale(0.3);
  }
}
@keyframes boss-victory-disappear {
  to {
    opacity: 0;
  }
}
@keyframes boss-victory-recognition-arrive {
  from {
    opacity: 0;
    transform: translateY(20px) scale(0.97);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
@keyframes boss-victory-footer-arrive {
  from {
    opacity: 0;
    visibility: visible;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    visibility: visible;
    transform: none;
  }
}
@keyframes boss-victory-reward-sheen {
  to {
    transform: translateX(120%);
  }
}
/* The static composition contains no residual particles or looping animations. */
.boss-victory[data-reduced="true"] *,
.boss-victory[data-reduced="true"] *::after {
  animation: none !important;
}
@media (prefers-reduced-motion: reduce) {
  .boss-victory *,
  .boss-victory *::after {
    animation: none !important;
  }
}
