.victory-show[data-world="jardin"] {
  --vx-sky: #285e70;
  --vx-deep: #132d40;
  --vx-accent: #a9efb3;
}
.victory-show[data-world="dessin"] {
  --vx-sky: #714c91;
  --vx-deep: #30204d;
  --vx-accent: #ffd29e;
}
.victory-show[data-world="rythmes"] {
  --vx-sky: #543878;
  --vx-deep: #201944;
  --vx-accent: #e9a8ee;
}

.vx-garden-halo,
.vx-garden-sun,
.vx-garden-leaf,
.vx-garden-tip,
.vx-garden-bloom,
.vx-garden-can,
.vx-garden-friend,
.vx-garden-spark,
.vx-art-frame,
.vx-art-curtain,
.vx-art-friend,
.vx-art-spark,
.vx-concert-beam,
.vx-concert-drum,
.vx-concert-bell,
.vx-concert-friend,
.vx-concert-pad,
.vx-concert-hit,
.vx-concert-spark {
  transform-box: fill-box;
  transform-origin: center;
}

.vx-garden-halo { animation: vx-garden-glow 5s ease-in-out both; }
.vx-garden-sun { animation: vx-garden-rise 4.95s cubic-bezier(.2,.75,.24,1) both; }
.vx-garden-stem {
  stroke-dasharray: 205;
  stroke-dashoffset: 0;
  animation: vx-garden-stem 1.25s 1.07s ease-out both;
}
.vx-garden-leaf {
  transform-origin: center bottom;
  animation: vx-garden-open 3.72s 1.15s cubic-bezier(.2,.75,.24,1) both;
}
.vx-garden-tip {
  transform-origin: center bottom;
  animation: vx-garden-open 3.54s 1.29s cubic-bezier(.2,.75,.24,1) both;
}
.vx-garden-bloom { animation: vx-garden-flower 2.97s 1.91s cubic-bezier(.2,.75,.24,1) both; }
.vx-garden-can { animation: vx-garden-water 2.32s ease-in-out both; }
.vx-garden-drop {
  opacity: 0;
  animation: vx-garden-rain .72s var(--vx-at) ease-in both;
}
.vx-garden-friend,
.vx-art-friend,
.vx-concert-friend {
  transform-origin: center bottom;
  animation: vx-creative-bow 4.96s ease-in-out both;
}
.vx-garden-spark { fill: #ffeda4; }
.vx-art-spark { fill: #fff0a2; }
.vx-concert-spark { fill: #ffcde8; }
.vx-garden-spark,
.vx-art-spark,
.vx-concert-spark {
  opacity: .62;
  animation: vx-creative-spark .78s var(--vx-at) ease-out both;
}

.vx-art-frame { animation: vx-art-reveal 4.93s cubic-bezier(.2,.75,.24,1) both; }
.vx-art-curtain { transform: scaleX(.28); }
.vx-art-left {
  transform-origin: left center;
  animation: vx-art-curtain 2.3s .18s cubic-bezier(.26,.72,.2,1) both;
}
.vx-art-right {
  transform-origin: right center;
  animation: vx-art-curtain 2.3s .28s cubic-bezier(.26,.72,.2,1) both;
}
.vx-art-friend { animation-name: vx-art-guest; }

.vx-concert-beam {
  transform-origin: center top;
  opacity: .74;
  animation: vx-concert-spot 4.97s ease-in-out both;
}
.vx-concert-right { animation-direction: reverse; }
.vx-concert-drum {
  transform-origin: center bottom;
  animation: vx-concert-instrument 4.94s ease-in-out both;
}
.vx-concert-bell { animation: vx-concert-bell 4.94s ease-in-out both; }
.vx-concert-pad { animation: vx-concert-pad .56s var(--vx-at) ease-out both; }
.vx-concert-hit {
  opacity: 0;
  fill: #ffed9e;
  animation: vx-creative-spark .52s var(--vx-at) ease-out both;
}
.vx-concert-friend { animation-name: vx-concert-dance; }

@keyframes vx-creative-spark {
  0% { opacity: 0; transform: translateY(9px) rotate(-22deg) scale(.34); }
  40% { opacity: 1; transform: translateY(-5px) rotate(6deg) scale(1.27); }
  100% { opacity: .6; transform: translateY(-12px) rotate(17deg) scale(.79); }
}
@keyframes vx-creative-bow {
  0% { opacity: .78; transform: translate(-21px, 19px) rotate(-10deg) scale(.82); }
  17% { opacity: 1; transform: translate(0, 0) rotate(-3deg) scale(1); }
  41% { transform: translate(8px, -13px) rotate(5deg) scale(1.015); }
  58% { transform: translate(0, 0) rotate(-4deg) scale(1); }
  76% { transform: translate(10px, -24px) rotate(7deg) scale(1.055); }
  89% { transform: translate(2px, 2px) rotate(-5deg) scale(.98); }
  100% { transform: translate(0, 0) rotate(0) scale(1); }
}

@keyframes vx-garden-glow {
  0% { opacity: .3; transform: scale(.8); }
  40% { opacity: .75; transform: scale(1.02); }
  78% { opacity: 1; transform: scale(1.16); }
  100% { opacity: .92; transform: scale(1.06); }
}
@keyframes vx-garden-rise {
  0% { opacity: .42; transform: translateY(29px) rotate(-21deg) scale(.82); }
  49% { opacity: 1; transform: translateY(0) rotate(-3deg) scale(1); }
  82% { transform: rotate(8deg) scale(1.055); }
  100% { transform: rotate(12deg) scale(1); }
}
@keyframes vx-garden-stem {
  from { stroke-dashoffset: 205; }
  to { stroke-dashoffset: 0; }
}
@keyframes vx-garden-open {
  0% { opacity: 0; transform: scale(.05) rotate(-13deg); }
  31% { opacity: 1; transform: scale(1.035) rotate(5deg); }
  62% { transform: scale(.99) rotate(-3deg); }
  82% { transform: scale(1.04) rotate(3deg); }
  100% { transform: scale(1) rotate(0); }
}
@keyframes vx-garden-flower {
  0% { opacity: 0; transform: scale(.08) rotate(-32deg); }
  34% { opacity: 1; transform: scale(1.085) rotate(4deg); }
  52% { transform: scale(.99) rotate(-3deg); }
  78% { transform: scale(1.06) rotate(5deg); }
  100% { transform: scale(1) rotate(0); }
}
@keyframes vx-garden-water {
  0% { transform: translateX(-9px) rotate(0); }
  36%, 62% { transform: translateX(20px) rotate(21deg); }
  100% { transform: translateX(0) rotate(0); }
}
@keyframes vx-garden-rain {
  0% { opacity: 0; transform: translate(-13px, -11px) scale(.55); }
  29% { opacity: 1; }
  76% { opacity: .92; transform: translate(35px, 59px) scale(1); }
  100% { opacity: 0; transform: translate(45px, 78px) scale(.5); }
}

@keyframes vx-art-reveal {
  0% { opacity: .7; transform: translateY(16px) scale(.925); }
  43% { opacity: 1; transform: translateY(0) scale(1); }
  69% { transform: translateY(-2px) scale(1.006); }
  84% { transform: translateY(-4px) scale(1.025); }
  100% { transform: translateY(0) scale(1); }
}
@keyframes vx-art-curtain {
  0% { transform: scaleX(1.01); }
  32% { transform: scaleX(.87); }
  81% { transform: scaleX(.25); }
  100% { transform: scaleX(.28); }
}
@keyframes vx-art-guest {
  0% { opacity: 0; transform: translate(13px, 32px) rotate(14deg) scale(.69); }
  32% { opacity: .84; transform: translate(10px, 17px) rotate(11deg) scale(.85); }
  52% { opacity: 1; transform: translate(0, 0) rotate(-5deg) scale(1); }
  76% { transform: translate(-6px, -16px) rotate(-9deg) scale(1.05); }
  92% { transform: translate(2px, 3px) rotate(5deg) scale(.98); }
  100% { transform: translate(0, 0) rotate(0) scale(1); }
}

@keyframes vx-concert-spot {
  0% { opacity: .2; transform: rotate(-9deg) scaleX(.75); }
  20% { opacity: .62; transform: rotate(3deg) scaleX(1); }
  54% { opacity: .8; transform: rotate(-2deg) scaleX(.92); }
  78% { opacity: .89; transform: rotate(4deg) scaleX(1.08); }
  100% { opacity: .74; transform: rotate(0) scaleX(1); }
}
@keyframes vx-concert-dance {
  0% { opacity: .8; transform: translateY(22px) rotate(-6deg) scale(.86); }
  16% { opacity: 1; transform: translateY(1px) rotate(0) scale(1); }
  29%, 55% { transform: translate(-14px, -13px) rotate(-9deg) scale(1.035); }
  42%, 67% { transform: translate(11px, -12px) rotate(9deg) scale(1.04); }
  80% { transform: translate(0, -27px) rotate(-6deg) scale(1.07); }
  91% { transform: translate(0, 4px) rotate(6deg) scale(.99); }
  100% { transform: translate(0, 0) rotate(0) scale(1); }
}
@keyframes vx-concert-instrument {
  0%, 25%, 50%, 100% { transform: rotate(0) scale(1); }
  38%, 64% { transform: rotate(-4deg) scale(1.045); }
  82% { transform: rotate(5deg) scale(1.065); }
}
@keyframes vx-concert-bell {
  0%, 26%, 53%, 100% { transform: rotate(0); }
  38%, 68% { transform: rotate(8deg); }
  82% { transform: rotate(-7deg) scale(1.06); }
}
@keyframes vx-concert-pad {
  0% { transform: scale(1); filter: brightness(1); }
  35% { transform: translateY(-5px) scale(1.14); filter: brightness(1.46); }
  100% { transform: scale(1); filter: brightness(1.12); }
}

@media (prefers-reduced-motion: reduce) {
  .victory-show [class*="vx-garden-"],
  .victory-show [class*="vx-art-"],
  .victory-show [class*="vx-concert-"] { animation: none !important; }
}
