@charset "utf-8";
/* CSS Document */

.site-loading {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: #ffffff;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 1;
  visibility: visible;
  transition: opacity 0.5s ease, visibility 0.5s ease;
  /*opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto !important;*/
}

.site-loading.is-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.magic-loading {
  text-align: center;
}

.magic-loading__stage {
  position: relative;
  width: 240px;
  height: 210px;
  margin: 0 auto;
}

/* 前の濃い玉 */
.magic-loading__orb {
  position: absolute;
  left: 50%;
  bottom: 18px;
  width: 28px;
  height: 28px;
  margin-left: -14px;
  border-radius: 50%;
  background: #e50011;
  opacity: 0;
  z-index: 2;
  will-change: transform, opacity;
}

.magic-loading__orb--1 {
  animation: orb1 2.2s linear infinite;
}

.magic-loading__orb--2 {
  animation: orb2 2.2s linear infinite;
}

.magic-loading__orb--3 {
  animation: orb3 2.2s linear infinite;
}

/* 後ろの透過玉 */
.magic-loading__bubble {
  position: absolute;
  left: 50%;
  bottom: 8px;
  border-radius: 50%;
  background: rgba(229, 0, 17, 0.18);
  opacity: 0;
  z-index: 1;
  will-change: transform, opacity;
}

.magic-loading__bubble--1 {
  width: 30px;
  height: 30px;
  margin-left: -15px;
  animation: bubbleS1 4.4s cubic-bezier(0.33, 0, 0.18, 1) infinite;
}

.magic-loading__bubble--2 {
  width: 42px;
  height: 42px;
  margin-left: -21px;
  animation: bubbleS2 4.8s cubic-bezier(0.33, 0, 0.18, 1) infinite 0.9s;
}

.magic-loading__bubble--3 {
  width: 58px;
  height: 58px;
  margin-left: -29px;
  animation: bubbleS3 5.2s cubic-bezier(0.33, 0, 0.18, 1) infinite 1.8s;
}

.magic-loading__text {
  margin-top: 18px;
  font-size: 18px;
  color: #e50011;
  letter-spacing: 0.12em;
}

/* 前の濃い玉：最大値を大きく */
@keyframes orb1 {
  0% {
    transform: translate(0, 0) scale(0.35);
    opacity: 0;
  }
  18% {
    opacity: 1;
  }
  100% {
    transform: translate(-42px, -104px) scale(1.95);
    opacity: 0;
  }
}

@keyframes orb2 {
  0% {
    transform: translate(0, 0) scale(0.35);
    opacity: 0;
  }
  28% {
    opacity: 0;
  }
  42% {
    opacity: 1;
  }
  100% {
    transform: translate(0, -126px) scale(2.25);
    opacity: 0;
  }
}

@keyframes orb3 {
  0% {
    transform: translate(0, 0) scale(0.35);
    opacity: 0;
  }
  52% {
    opacity: 0;
  }
  68% {
    opacity: 1;
  }
  100% {
    transform: translate(42px, -104px) scale(1.95);
    opacity: 0;
  }
}

/* 後ろ玉：よりスルスル流れるS字 */
@keyframes bubbleS1 {
  0% {
    transform: translate(-50%, 0) scale(0.52);
    opacity: 0;
  }
  10% {
    opacity: 0.26;
  }
  20% {
    transform: translate(-62%, -18px) scale(0.68);
    opacity: 0.28;
  }
  35% {
    transform: translate(-72%, -42px) scale(0.86);
    opacity: 0.27;
  }
  50% {
    transform: translate(-54%, -70px) scale(1.02);
    opacity: 0.22;
  }
  65% {
    transform: translate(-34%, -102px) scale(1.14);
    opacity: 0.16;
  }
  82% {
    transform: translate(-52%, -132px) scale(1.24);
    opacity: 0.08;
  }
  100% {
    transform: translate(-66%, -158px) scale(1.32);
    opacity: 0;
  }
}

@keyframes bubbleS2 {
  0% {
    transform: translate(-50%, 0) scale(0.46);
    opacity: 0;
  }
  10% {
    opacity: 0.22;
  }
  22% {
    transform: translate(-40%, -20px) scale(0.64);
    opacity: 0.23;
  }
  38% {
    transform: translate(-26%, -48px) scale(0.84);
    opacity: 0.22;
  }
  54% {
    transform: translate(-44%, -82px) scale(1.02);
    opacity: 0.18;
  }
  70% {
    transform: translate(-70%, -118px) scale(1.16);
    opacity: 0.12;
  }
  86% {
    transform: translate(-52%, -148px) scale(1.26);
    opacity: 0.06;
  }
  100% {
    transform: translate(-34%, -176px) scale(1.34);
    opacity: 0;
  }
}

@keyframes bubbleS3 {
  0% {
    transform: translate(-50%, 0) scale(0.42);
    opacity: 0;
  }
  12% {
    opacity: 0.16;
  }
  24% {
    transform: translate(-64%, -22px) scale(0.60);
    opacity: 0.17;
  }
  40% {
    transform: translate(-76%, -56px) scale(0.78);
    opacity: 0.16;
  }
  58% {
    transform: translate(-52%, -96px) scale(0.96);
    opacity: 0.12;
  }
  76% {
    transform: translate(-28%, -136px) scale(1.12);
    opacity: 0.08;
  }
  90% {
    transform: translate(-46%, -166px) scale(1.22);
    opacity: 0.04;
  }
  100% {
    transform: translate(-68%, -192px) scale(1.28);
    opacity: 0;
  }
}

/* ... の演出 */
.loading-dots {
  display: inline-flex;
  gap: 0.05em;
  min-width: 2em;
}

.loading-dots span {
  display: inline-block;
  opacity: 0.2;
  transform: translateY(2px);
}

.loading-dots span:nth-child(1) {
  animation: dotsFlow 1.4s ease-in-out infinite;
}

.loading-dots span:nth-child(2) {
  animation: dotsFlow 1.4s ease-in-out infinite 0.2s;
}

.loading-dots span:nth-child(3) {
  animation: dotsFlow 1.4s ease-in-out infinite 0.4s;
}

@keyframes dotsFlow {
  0% {
    opacity: 0.2;
    transform: translateY(2px);
  }
  30% {
    opacity: 1;
    transform: translateY(-2px);
  }
  60% {
    opacity: 0.6;
    transform: translateY(0);
  }
  100% {
    opacity: 0.2;
    transform: translateY(2px);
  }
}