/**
 * Module: Moon 
 * Filename: ca__Moon.css
 */

.moonEclipseIn {
  animation: moonEclipseIn 1.6s ease-out both;
  transform-origin: center;
  will-change: transform, opacity;
}

@keyframes moonEclipseIn {
  0% {
    opacity: 0;
    transform: scale(1.3) rotate(10deg);
    filter: brightness(0) blur(12px);
    clip-path: circle(0% at 50% 50%);
  }

  100% {
    opacity: 1;
    transform: scale(1) rotate(0deg);
    filter: none;
    clip-path: circle(100% at 50% 50%);
  }
}

.moonEclipseOut {
  animation: moonEclipseOut 1.4s ease-in both;
  transform-origin: center;
  will-change: transform, opacity;
}

@keyframes moonEclipseOut {
  0% {
    opacity: 1;
    transform: scale(1);
    clip-path: circle(100% at 50% 50%);
    filter: none;
  }

  100% {
    opacity: 0;
    transform: scale(1.3) rotate(-10deg);
    clip-path: circle(0% at 50% 50%);
    filter: brightness(0) blur(10px);
  }
}

.moonSlideInCrescent {
  animation: moonSlideInCrescent 1.4s ease-out both;
  clip-path: ellipse(0% 100% at 0% 50%);
  will-change: transform, opacity;
}

@keyframes moonSlideInCrescent {
  0% {
    opacity: 0;
    transform: translateX(-30%);
    clip-path: ellipse(0% 100% at 0% 50%);
  }

  100% {
    opacity: 1;
    transform: translateX(0%);
    clip-path: ellipse(100% 100% at 50% 50%);
  }
}

.moonSliceReveal {
  animation: moonSliceReveal 1.2s ease-out both;
  clip-path: polygon(0 0, 0 0, 0 100%, 0% 100%);
  will-change: transform, opacity;
}

@keyframes moonSliceReveal {
  0% {
    clip-path: polygon(0 0, 0 0, 0 100%, 0 100%);
    opacity: 0;
    transform: scale(1.8);
    filter: blur(4px);
  }

  100% {
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0% 100%);
    opacity: 1;
    transform: scale(1);
    filter: none;
  }
}

.crescentOrbitRevealLeft {
  animation: crescentOrbitRevealLeft 1.6s ease-out both;
  transform-origin: center;
  will-change: transform, opacity;
}

@keyframes crescentOrbitRevealLeft {
  0% {
    transform: translateX(-100%) rotate(-45deg) scale(0.8);
    opacity: 0;
    clip-path: ellipse(0% 100% at 0% 50%);
  }

  60% {
    opacity: 1;
    clip-path: ellipse(60% 100% at 50% 50%);
  }

  100% {
    transform: translateX(0%) rotate(0deg) scale(1);
    clip-path: ellipse(100% 100% at 50% 50%);
  }
}

.crescentOrbitRevealRight {
  animation: crescentOrbitRevealRight 1.6s ease-out both;
  transform-origin: center;
  will-change: transform, opacity;
}

@keyframes crescentOrbitRevealRight {
  0% {
    transform: translateX(100%) rotate(45deg) scale(0.8);
    opacity: 0;
    clip-path: ellipse(0% 100% at 100% 50%);
  }

  60% {
    opacity: 1;
    clip-path: ellipse(60% 100% at 50% 50%);
  }

  100% {
    transform: translateX(0%) rotate(0deg) scale(1);
    clip-path: ellipse(100% 100% at 50% 50%);
  }
}

.moonSliceUp {
  animation: moonSliceUp 1.4s ease-out both;
  clip-path: inset(100% 0 0 0);
  will-change: transform, opacity;
}

@keyframes moonSliceUp {
  0% {
    clip-path: inset(100% 0 0 0);
    transform: translateY(20%);
    opacity: 0;
    filter: blur(5px);
  }

  100% {
    clip-path: inset(0% 0 0 0);
    transform: translateY(0%);
    opacity: 1;
    filter: none;
  }
}

.moonPhaseReveal {
  animation: moonPhaseReveal 1.6s ease-out both;
  clip-path: circle(0% at 50% 50%);
  will-change: transform, opacity;
}

@keyframes moonPhaseReveal {
  0% {
    clip-path: circle(0% at 50% 50%);
    opacity: 0;
    transform: scale(0.9);
    filter: brightness(0.2) blur(8px);
  }

  100% {
    clip-path: circle(100% at 50% 50%);
    opacity: 1;
    transform: scale(1);
    filter: none;
  }
}

.lunarVeilIn {
  animation: lunarVeilIn 1.5s ease-out both;
  clip-path: polygon(0 100%, 0 100%, 100% 100%, 100% 100%);
  will-change: transform, opacity;
}

@keyframes lunarVeilIn {
  0% {
    clip-path: polygon(0 100%, 0 100%, 100% 100%, 100% 100%);
    opacity: 0;
    transform: scale(1.05);
    filter: blur(5px);
  }

  100% {
    clip-path: polygon(0 0, 0 100%, 100% 100%, 100% 0);
    opacity: 1;
    transform: scale(1);
    filter: none;
  }
}

.moonRippleGlow {
  animation: moonRippleGlow 2.8s ease-in-out infinite;
  transform-origin: center;
  will-change: transform, opacity;
}

@keyframes moonRippleGlow {
  0%,
  100% {
    box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.1);
  }

  50% {
    box-shadow: 0 0 0 12px rgba(255, 255, 255, 0);
  }
}

.moonDustFloat {
  animation: moonDustFloat 2.2s ease-out both;
  will-change: transform, opacity;
}

@keyframes moonDustFloat {
  0% {
    opacity: 0;
    transform: translateY(20%) scale(1.1);
    filter: blur(8px) grayscale(1);
  }

  100% {
    opacity: 1;
    transform: translateY(0%) scale(1);
    filter: none;
  }
}

.moonTiltRise {
  animation: moonTiltRise 1.7s ease-out both;
  transform-origin: bottom left;
  will-change: transform, opacity;
}

@keyframes moonTiltRise {
  0% {
    transform: translateY(60%) rotate(-15deg);
    opacity: 0;
    filter: brightness(0.4) blur(5px);
  }

  100% {
    transform: translateY(0%) rotate(0deg);
    opacity: 1;
    filter: none;
  }
}

.moonCyclePulse {
  animation: moonCyclePulse 3.5s ease-in-out infinite;
  will-change: transform, opacity;
}

@keyframes moonCyclePulse {
  0%,
  100% {
    filter: brightness(1);
  }
  50% {
    filter: brightness(1.3);
  }
}
