.rainbow-bg {
  position: fixed;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
  animation: hue-drift 50s linear infinite;
}

.rainbow {
  height: 100vh;
  width: 0;
  top: 0;
  right: 125vw;
  position: absolute;
  transform: translateX(0) rotate(10deg);
  transform-origin: top right;
  will-change: transform;
  mix-blend-mode: screen;
  filter: blur(1px);
}
.rainbow:nth-child(1) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #f5b65a, 0 0 50px 25px #45a694, 50px 0 50px 25px #ee7f42, 130px 0 80px 40px #f3ecdf;
  animation: 88.2s ease-in-out infinite slide, 6.24s ease-in-out infinite alternate glow-pulse, 18.56s linear infinite hue-shift;
  animation-delay: -3.6s, -0.16s, -0.48s;
  transform: translateX(0) rotate(6.32deg) scale(0.912);
  transform-origin: top right;
}
.rainbow:nth-child(2) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #ee7f42, 0 0 50px 25px #f5b65a, 50px 0 50px 25px #45a694, 130px 0 80px 40px #f3ecdf;
  animation: 86.4s ease-in-out infinite slide, 6.48s ease-in-out infinite alternate glow-pulse, 19.12s linear infinite hue-shift;
  animation-delay: -7.2s, -0.32s, -0.96s;
  transform: translateX(0) rotate(6.64deg) scale(0.924);
  transform-origin: top right;
}
.rainbow:nth-child(3) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #ee7f42, 0 0 50px 25px #f5b65a, 50px 0 50px 25px #45a694, 130px 0 80px 40px #f3ecdf;
  animation: 84.6s ease-in-out infinite slide, 6.72s ease-in-out infinite alternate glow-pulse, 19.68s linear infinite hue-shift;
  animation-delay: -10.8s, -0.48s, -1.44s;
  transform: translateX(0) rotate(6.96deg) scale(0.936);
  transform-origin: top right;
}
.rainbow:nth-child(4) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #45a694, 0 0 50px 25px #ee7f42, 50px 0 50px 25px #f5b65a, 130px 0 80px 40px #f3ecdf;
  animation: 82.8s ease-in-out infinite slide, 6.96s ease-in-out infinite alternate glow-pulse, 20.24s linear infinite hue-shift;
  animation-delay: -14.4s, -0.64s, -1.92s;
  transform: translateX(0) rotate(7.28deg) scale(0.948);
  transform-origin: top right;
}
.rainbow:nth-child(5) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #ee7f42, 0 0 50px 25px #f5b65a, 50px 0 50px 25px #45a694, 130px 0 80px 40px #f3ecdf;
  animation: 81s ease-in-out infinite slide, 7.2s ease-in-out infinite alternate glow-pulse, 20.8s linear infinite hue-shift;
  animation-delay: -18s, -0.8s, -2.4s;
  transform: translateX(0) rotate(7.6deg) scale(0.96);
  transform-origin: top right;
}
.rainbow:nth-child(6) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #45a694, 0 0 50px 25px #ee7f42, 50px 0 50px 25px #f5b65a, 130px 0 80px 40px #f3ecdf;
  animation: 79.2s ease-in-out infinite slide, 7.44s ease-in-out infinite alternate glow-pulse, 21.36s linear infinite hue-shift;
  animation-delay: -21.6s, -0.96s, -2.88s;
  transform: translateX(0) rotate(7.92deg) scale(0.972);
  transform-origin: top right;
}
.rainbow:nth-child(7) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #f5b65a, 0 0 50px 25px #45a694, 50px 0 50px 25px #ee7f42, 130px 0 80px 40px #f3ecdf;
  animation: 77.4s ease-in-out infinite slide, 7.68s ease-in-out infinite alternate glow-pulse, 21.92s linear infinite hue-shift;
  animation-delay: -25.2s, -1.12s, -3.36s;
  transform: translateX(0) rotate(8.24deg) scale(0.984);
  transform-origin: top right;
}
.rainbow:nth-child(8) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #f5b65a, 0 0 50px 25px #45a694, 50px 0 50px 25px #ee7f42, 130px 0 80px 40px #f3ecdf;
  animation: 75.6s ease-in-out infinite slide, 7.92s ease-in-out infinite alternate glow-pulse, 22.48s linear infinite hue-shift;
  animation-delay: -28.8s, -1.28s, -3.84s;
  transform: translateX(0) rotate(8.56deg) scale(0.996);
  transform-origin: top right;
}
.rainbow:nth-child(9) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #f5b65a, 0 0 50px 25px #45a694, 50px 0 50px 25px #ee7f42, 130px 0 80px 40px #f3ecdf;
  animation: 73.8s ease-in-out infinite slide, 8.16s ease-in-out infinite alternate glow-pulse, 23.04s linear infinite hue-shift;
  animation-delay: -32.4s, -1.44s, -4.32s;
  transform: translateX(0) rotate(8.88deg) scale(1.008);
  transform-origin: top right;
}
.rainbow:nth-child(10) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #45a694, 0 0 50px 25px #ee7f42, 50px 0 50px 25px #f5b65a, 130px 0 80px 40px #f3ecdf;
  animation: 72s ease-in-out infinite slide, 8.4s ease-in-out infinite alternate glow-pulse, 23.6s linear infinite hue-shift;
  animation-delay: -36s, -1.6s, -4.8s;
  transform: translateX(0) rotate(9.2deg) scale(1.02);
  transform-origin: top right;
}
.rainbow:nth-child(11) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #45a694, 0 0 50px 25px #f5b65a, 50px 0 50px 25px #ee7f42, 130px 0 80px 40px #f3ecdf;
  animation: 70.2s ease-in-out infinite slide, 8.64s ease-in-out infinite alternate glow-pulse, 24.16s linear infinite hue-shift;
  animation-delay: -39.6s, -1.76s, -5.28s;
  transform: translateX(0) rotate(9.52deg) scale(1.032);
  transform-origin: top right;
}
.rainbow:nth-child(12) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #f5b65a, 0 0 50px 25px #45a694, 50px 0 50px 25px #ee7f42, 130px 0 80px 40px #f3ecdf;
  animation: 68.4s ease-in-out infinite slide, 8.88s ease-in-out infinite alternate glow-pulse, 24.72s linear infinite hue-shift;
  animation-delay: -43.2s, -1.92s, -5.76s;
  transform: translateX(0) rotate(9.84deg) scale(1.044);
  transform-origin: top right;
}
.rainbow:nth-child(13) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #f5b65a, 0 0 50px 25px #45a694, 50px 0 50px 25px #ee7f42, 130px 0 80px 40px #f3ecdf;
  animation: 66.6s ease-in-out infinite slide, 9.12s ease-in-out infinite alternate glow-pulse, 25.28s linear infinite hue-shift;
  animation-delay: -46.8s, -2.08s, -6.24s;
  transform: translateX(0) rotate(10.16deg) scale(1.056);
  transform-origin: top right;
}
.rainbow:nth-child(14) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #f5b65a, 0 0 50px 25px #45a694, 50px 0 50px 25px #ee7f42, 130px 0 80px 40px #f3ecdf;
  animation: 64.8s ease-in-out infinite slide, 9.36s ease-in-out infinite alternate glow-pulse, 25.84s linear infinite hue-shift;
  animation-delay: -50.4s, -2.24s, -6.72s;
  transform: translateX(0) rotate(10.48deg) scale(1.068);
  transform-origin: top right;
}
.rainbow:nth-child(15) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #f5b65a, 0 0 50px 25px #ee7f42, 50px 0 50px 25px #45a694, 130px 0 80px 40px #f3ecdf;
  animation: 63s ease-in-out infinite slide, 9.6s ease-in-out infinite alternate glow-pulse, 26.4s linear infinite hue-shift;
  animation-delay: -54s, -2.4s, -7.2s;
  transform: translateX(0) rotate(10.8deg) scale(1.08);
  transform-origin: top right;
}
.rainbow:nth-child(16) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #45a694, 0 0 50px 25px #ee7f42, 50px 0 50px 25px #f5b65a, 130px 0 80px 40px #f3ecdf;
  animation: 61.2s ease-in-out infinite slide, 9.84s ease-in-out infinite alternate glow-pulse, 26.96s linear infinite hue-shift;
  animation-delay: -57.6s, -2.56s, -7.68s;
  transform: translateX(0) rotate(11.12deg) scale(1.092);
  transform-origin: top right;
}
.rainbow:nth-child(17) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #f5b65a, 0 0 50px 25px #ee7f42, 50px 0 50px 25px #45a694, 130px 0 80px 40px #f3ecdf;
  animation: 59.4s ease-in-out infinite slide, 10.08s ease-in-out infinite alternate glow-pulse, 27.52s linear infinite hue-shift;
  animation-delay: -61.2s, -2.72s, -8.16s;
  transform: translateX(0) rotate(11.44deg) scale(1.104);
  transform-origin: top right;
}
.rainbow:nth-child(18) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #45a694, 0 0 50px 25px #ee7f42, 50px 0 50px 25px #f5b65a, 130px 0 80px 40px #f3ecdf;
  animation: 57.6s ease-in-out infinite slide, 10.32s ease-in-out infinite alternate glow-pulse, 28.08s linear infinite hue-shift;
  animation-delay: -64.8s, -2.88s, -8.64s;
  transform: translateX(0) rotate(11.76deg) scale(1.116);
  transform-origin: top right;
}
.rainbow:nth-child(19) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #45a694, 0 0 50px 25px #ee7f42, 50px 0 50px 25px #f5b65a, 130px 0 80px 40px #f3ecdf;
  animation: 55.8s ease-in-out infinite slide, 10.56s ease-in-out infinite alternate glow-pulse, 28.64s linear infinite hue-shift;
  animation-delay: -68.4s, -3.04s, -9.12s;
  transform: translateX(0) rotate(12.08deg) scale(1.128);
  transform-origin: top right;
}
.rainbow:nth-child(20) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #f5b65a, 0 0 50px 25px #ee7f42, 50px 0 50px 25px #45a694, 130px 0 80px 40px #f3ecdf;
  animation: 54s ease-in-out infinite slide, 10.8s ease-in-out infinite alternate glow-pulse, 29.2s linear infinite hue-shift;
  animation-delay: -72s, -3.2s, -9.6s;
  transform: translateX(0) rotate(12.4deg) scale(1.14);
  transform-origin: top right;
}
.rainbow:nth-child(21) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #45a694, 0 0 50px 25px #ee7f42, 50px 0 50px 25px #f5b65a, 130px 0 80px 40px #f3ecdf;
  animation: 52.2s ease-in-out infinite slide, 11.04s ease-in-out infinite alternate glow-pulse, 29.76s linear infinite hue-shift;
  animation-delay: -75.6s, -3.36s, -10.08s;
  transform: translateX(0) rotate(12.72deg) scale(1.152);
  transform-origin: top right;
}
.rainbow:nth-child(22) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #ee7f42, 0 0 50px 25px #45a694, 50px 0 50px 25px #f5b65a, 130px 0 80px 40px #f3ecdf;
  animation: 50.4s ease-in-out infinite slide, 11.28s ease-in-out infinite alternate glow-pulse, 30.32s linear infinite hue-shift;
  animation-delay: -79.2s, -3.52s, -10.56s;
  transform: translateX(0) rotate(13.04deg) scale(1.164);
  transform-origin: top right;
}
.rainbow:nth-child(23) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #45a694, 0 0 50px 25px #f5b65a, 50px 0 50px 25px #ee7f42, 130px 0 80px 40px #f3ecdf;
  animation: 48.6s ease-in-out infinite slide, 11.52s ease-in-out infinite alternate glow-pulse, 30.88s linear infinite hue-shift;
  animation-delay: -82.8s, -3.68s, -11.04s;
  transform: translateX(0) rotate(13.36deg) scale(1.176);
  transform-origin: top right;
}
.rainbow:nth-child(24) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #f5b65a, 0 0 50px 25px #ee7f42, 50px 0 50px 25px #45a694, 130px 0 80px 40px #f3ecdf;
  animation: 46.8s ease-in-out infinite slide, 11.76s ease-in-out infinite alternate glow-pulse, 31.44s linear infinite hue-shift;
  animation-delay: -86.4s, -3.84s, -11.52s;
  transform: translateX(0) rotate(13.68deg) scale(1.188);
  transform-origin: top right;
}
.rainbow:nth-child(25) {
  box-shadow: -130px 0 80px 40px #f3ecdf, -50px 0 50px 25px #f5b65a, 0 0 50px 25px #45a694, 50px 0 50px 25px #ee7f42, 130px 0 80px 40px #f3ecdf;
  animation: 45s ease-in-out infinite slide, 12s ease-in-out infinite alternate glow-pulse, 32s linear infinite hue-shift;
  animation-delay: -90s, -4s, -12s;
  transform: translateX(0) rotate(14deg) scale(1.2);
  transform-origin: top right;
}

@keyframes slide {
  0% {
    transform: translateX(150vw) translateY(0) rotate(10deg);
  }
  25% {
    transform: translateX(112vw) translateY(-3vh) rotate(10deg);
  }
  50% {
    transform: translateX(75vw) translateY(-6vh) rotate(10deg);
  }
  75% {
    transform: translateX(38vw) translateY(-2vh) rotate(10deg);
  }
  100% {
    transform: translateX(0) translateY(0) rotate(10deg);
  }
}
@keyframes glow-pulse {
  from {
    opacity: 0.7;
    filter: blur(1px) brightness(1);
  }
  to {
    opacity: 1;
    filter: blur(2.5px) brightness(1.2);
  }
}
@keyframes hue-shift {
  0% {
    filter: hue-rotate(0deg);
  }
  50% {
    filter: hue-rotate(45deg);
  }
  100% {
    filter: hue-rotate(0deg);
  }
}
@keyframes hue-drift {
  from {
    filter: hue-rotate(0deg);
  }
  to {
    filter: hue-rotate(360deg);
  }
}
@media (prefers-reduced-motion: reduce) {
  .rainbow-bg {
    animation-play-state: paused;
  }
  .rainbow {
    animation-play-state: paused;
  }
}
.h {
  box-shadow: 0 0 50vh 40vh #eadfce;
  width: 100vw;
  height: 0;
  bottom: 0;
  left: 0;
  position: absolute;
}

.v {
  box-shadow: 0 0 35vw 25vw #f3ecdf;
  width: 0;
  height: 100vh;
  bottom: 0;
  left: 0;
  position: absolute;
}