.intro-loader {
  position: fixed;
  inset: 0;
  min-height: 100dvh;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background: #000;
  z-index: 2147483647;
  opacity: 1;
  visibility: visible;
  transform: scale(1);
  transition: opacity 280ms ease, transform 280ms ease;
  will-change: opacity, transform;
}

/* Neutralize the retired Webflow loader on older exports. */
.intro-loader::before,
.intro-loader::after {
  content: none !important;
  display: none !important;
}

.intro-loader.is-hidden {
  opacity: 0;
  visibility: hidden;
  transform: scale(1.015);
}

.intro-loader__bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  opacity: 0;
  pointer-events: none;
  user-select: none;
}

.intro-loader__glow {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 50% 38%, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0) 24%),
    radial-gradient(circle at 50% 62%, rgba(80, 92, 120, 0.2), rgba(80, 92, 120, 0) 42%);
  opacity: 0.9;
  pointer-events: none;
}

.intro-loader__logo {
  position: relative;
  z-index: 2;
  width: min(76vw, 380px);
  max-width: 380px;
  aspect-ratio: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  perspective: 1400px;
  opacity: 1 !important;
  transform: none;
  transition: none;
  --splash-rotate-x: 0deg;
  --splash-rotate-y: 0deg;
  --splash-light-x: 0px;
  --splash-light-y: 0px;
}

.intro-loader__halo {
  position: absolute;
  width: min(34vw, 220px);
  height: min(34vw, 220px);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.085);
  box-shadow:
    0 0 34px 18px rgba(255, 255, 255, 0.09),
    0 0 74px 42px rgba(255, 255, 255, 0.06),
    0 0 132px 68px rgba(255, 255, 255, 0.03);
  opacity: 0;
  transform: scale(0.6);
  animation: splashHaloPulse 2s ease-out forwards;
}

.intro-loader__stage {
  position: relative;
  width: 100%;
  height: 100%;
  place-items: center;
  transform-style: preserve-3d;
  transform: rotateX(var(--splash-rotate-x)) rotateY(var(--splash-rotate-y));
  transition: transform 180ms cubic-bezier(0.16, 1, 0.3, 1);
}

.intro-loader__stage svg {
  width: 100%;
  height: 100%;
  display: block;
  overflow: visible;
  transform: rotate(-0.1deg);
}

.intro-loader__bloom {
  position: absolute;
  left: 50%;
  top: 50%;
  width: min(42vw, 280px);
  height: min(42vw, 280px);
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,255,255,0.095) 0%, rgba(255,255,255,0.06) 18%, rgba(255,255,255,0.03) 34%, rgba(255,255,255,0.012) 50%, rgba(255,255,255,0) 72%);
  filter: blur(18px);
  transform: translate(-50%, -50%);
  opacity: 0;
  animation: splashBloom 0.65s linear 1.48s forwards;
}

.intro-loader__light {
  transform: translate(var(--splash-light-x), var(--splash-light-y));
}

.intro-loader__outline {
  stroke-dasharray: 1800;
  stroke-dashoffset: 1800;
  opacity: 0;
}

.intro-loader__outline--a {
  animation: splashDraw 1.35s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.intro-loader__outline--b {
  animation: splashDraw 1.35s cubic-bezier(0.16, 1, 0.3, 1) 0.12s forwards;
}

.intro-loader__thickness--a {
  opacity: 0;
  transform: translate(-260px, 90px);
  animation: splashPieceLeft 0.82s cubic-bezier(0.16, 1, 0.3, 1) 0.72s forwards;
}

.intro-loader__thickness--b {
  opacity: 0;
  transform: translate(260px, -90px);
  animation: splashPieceRight 0.82s cubic-bezier(0.16, 1, 0.3, 1) 0.82s forwards;
}

.intro-loader__piece--a {
  opacity: 0;
  transform: translate(-250px, 80px) rotate(4deg);
  transform-origin: 493px 625px;
  animation: splashPieceLeft 0.86s cubic-bezier(0.16, 1, 0.3, 1) 0.7s forwards;
}

.intro-loader__piece--b {
  opacity: 0;
  transform: translate(250px, -80px) rotate(-4deg);
  transform-origin: 659px 658px;
  animation: splashPieceRight 0.86s cubic-bezier(0.16, 1, 0.3, 1) 0.8s forwards;
}

.intro-loader__fold--top {
  opacity: 0;
  transform: scaleX(0.25) scaleY(0.5) rotate(-22deg);
  transform-origin: 493px 625px;
  animation: splashFoldTop 0.55s cubic-bezier(0.16, 1, 0.3, 1) 1.22s forwards;
}

.intro-loader__fold--bottom {
  opacity: 0;
  transform: scaleX(0.25) scaleY(0.5) rotate(22deg);
  transform-origin: 659px 658px;
  animation: splashFoldBottom 0.55s cubic-bezier(0.16, 1, 0.3, 1) 1.32s forwards;
}

.intro-loader__spark {
  opacity: 0;
  transform-origin: 625px 644px;
  animation: splashSpark 0.75s ease-out 1.55s forwards;
}

.intro-loader__flash {
  opacity: 0;
  transform: translateX(-550px);
  animation: splashFlash 0.85s cubic-bezier(0.4, 0, 0.2, 1) 1.55s forwards;
}

.intro-loader__shadow {
  opacity: 0;
  transform: scaleX(0.5);
  transform-origin: 624px 805px;
  animation: splashShadow 0.8s cubic-bezier(0.16, 1, 0.3, 1) 1.75s forwards;
}

@keyframes splashHaloPulse {
  0% { opacity: 0; transform: scale(0.6); }
  8% { opacity: 0.16; transform: scale(1.2); }
  100% { opacity: 0; transform: scale(1.45); }
}

@keyframes splashBloom {
  0% { opacity: 0; }
  35% { opacity: 0.4; }
  100% { opacity: 0; }
}

@keyframes splashDraw {
  0% { stroke-dashoffset: 1800; opacity: 0; }
  35% { opacity: 1; }
  72% { stroke-dashoffset: 0; opacity: 1; }
  100% { stroke-dashoffset: 0; opacity: 0; }
}

@keyframes splashPieceLeft {
  from { opacity: 0; transform: translate(-250px, 80px) rotate(4deg); }
  to { opacity: 1; transform: translate(0, 0) rotate(0deg); }
}

@keyframes splashPieceRight {
  from { opacity: 0; transform: translate(250px, -80px) rotate(-4deg); }
  to { opacity: 1; transform: translate(0, 0) rotate(0deg); }
}

@keyframes splashFoldTop {
  from { opacity: 0; transform: scaleX(0.25) scaleY(0.5) rotate(-22deg); }
  to { opacity: 1; transform: scaleX(1) scaleY(1) rotate(0deg); }
}

@keyframes splashFoldBottom {
  from { opacity: 0; transform: scaleX(0.25) scaleY(0.5) rotate(22deg); }
  to { opacity: 1; transform: scaleX(1) scaleY(1) rotate(0deg); }
}

@keyframes splashSpark {
  0% { opacity: 0; transform: scale(0); }
  40% { opacity: 1; transform: scale(5); }
  100% { opacity: 0; transform: scale(12); }
}

@keyframes splashFlash {
  0% { transform: translateX(-550px); opacity: 0; }
  45% { opacity: 0.9; }
  100% { transform: translateX(1700px); opacity: 0; }
}

@keyframes splashShadow {
  from { opacity: 0; transform: scaleX(0.5); }
  to { opacity: 0.22; transform: scaleX(1); }
}

@media screen and (max-width: 991px) {
  .intro-loader__logo { width: min(80vw, 340px); }
}

@media screen and (max-width: 767px) {
  .intro-loader__logo { width: min(82vw, 300px); }
}

@media (prefers-reduced-motion: reduce) {
  .intro-loader__stage,
  .intro-loader__outline,
  .intro-loader__thickness--a,
  .intro-loader__thickness--b,
  .intro-loader__piece--a,
  .intro-loader__piece--b,
  .intro-loader__fold--top,
  .intro-loader__fold--bottom,
  .intro-loader__spark,
  .intro-loader__flash,
  .intro-loader__shadow,
  .intro-loader__halo,
  .intro-loader__bloom {
    animation: none !important;
  }

  .intro-loader {
    transition: opacity 1ms linear, transform 1ms linear;
  }
}
