.page {
  min-height: 100svh;
  padding: clamp(0px, 2.5vw, 34px) clamp(0px, 2vw, 24px) clamp(16px, 4vw, 52px);
  overflow-x: hidden;
  background:
    radial-gradient(circle at 12% 8%, rgba(0, 181, 186, .15), transparent 30rem),
    radial-gradient(circle at 88% 86%, rgba(255, 40, 116, .1), transparent 28rem),
    #f2fbfb;
}

.stage {
  position: relative;
  width: min(100%, 980px);
  aspect-ratio: 863 / 1822;
  margin: 0 auto;
  overflow: hidden;
  border-radius: clamp(0px, 1.6vw, 20px);
  background: #fff;
  box-shadow: 0 28px 80px rgba(0, 77, 88, .16);
  isolation: isolate;
}

.baseImage,
.slice {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.baseImage {
  z-index: 1;
  opacity: 0;
}

.slice {
  z-index: 2;
  clip-path: inset(var(--top) 0 var(--bottom) 0);
  opacity: 0;
  filter: blur(7px);
  transform: translate3d(var(--x), 20px, 0) scale(1.018);
  transition:
    opacity 650ms ease var(--delay),
    filter 850ms ease var(--delay),
    transform 980ms cubic-bezier(.16, 1, .3, 1) var(--delay);
}

.ready .slice {
  opacity: 1;
  filter: blur(0);
  transform: none;
}

.complete .baseImage {
  opacity: 1;
}

.fullImageLink {
  position: absolute;
  z-index: 4;
  inset: 0;
  display: block;
  cursor: pointer;
}

.cta {
  position: absolute;
  z-index: 5;
  top: 94.15%;
  right: .9%;
  bottom: -2px;
  left: .9%;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(8px, 1.8vw, 20px);
  padding: clamp(7px, 1.15vw, 15px) clamp(46px, 7vw, 82px) clamp(7px, 1.15vw, 15px) clamp(52px, 8vw, 96px);
  border: 2px solid rgba(255, 255, 255, .92);
  border-radius: 999px;
  background: linear-gradient(135deg, #ff3d7f 0%, #ff1768 48%, #e9005b 100%);
  cursor: pointer;
  box-shadow: 0 8px 22px rgba(157, 0, 58, .28);
  text-decoration: none;
  animation: ctaGlow 2.4s ease-in-out infinite;
}

.cta:hover,
.cta:focus,
.cta:visited,
.cta * {
  text-decoration: none;
}

.ctaCopy {
  position: relative;
  z-index: 2;
  display: flex;
  min-width: 0;
  flex-direction: column;
  align-items: center;
  color: #fff;
  font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;
  line-height: 1.1;
  text-align: center;
  white-space: nowrap;
}

.ctaCopy strong {
  font-size: clamp(13px, 2vw, 22px);
  font-weight: 900;
  letter-spacing: .05em;
  text-shadow: 0 2px 5px rgba(105, 0, 37, .42);
}

.ctaCopy b {
  margin-top: .14em;
  color: #fff23e;
  font-size: clamp(14px, 2.3vw, 25px);
  font-weight: 900;
  letter-spacing: .01em;
  text-shadow: 0 2px 5px rgba(112, 0, 40, .5), 0 0 2px rgba(255,255,255,.4);
  text-decoration: none;
}

.ctaIcon {
  position: absolute;
  left: clamp(14px, 4.5%, 44px);
  z-index: 2;
  display: flex;
  width: clamp(29px, 5.2vw, 54px);
  aspect-ratio: 1.2;
  align-items: center;
  justify-content: center;
  gap: 3px;
  border-radius: 50%;
  background: #fff;
}

.ctaIcon::after {
  position: absolute;
  right: 2px;
  bottom: -4px;
  width: 11px;
  height: 11px;
  background: #fff;
  clip-path: polygon(0 0, 100% 0, 100% 100%);
  content: "";
}

.ctaIcon i {
  width: clamp(3px, .55vw, 6px);
  aspect-ratio: 1;
  border-radius: 50%;
  background: #ff1768;
}

.ctaArrow {
  position: absolute;
  top: 50%;
  right: clamp(8px, 2.4%, 24px);
  display: grid;
  width: clamp(22px, 4.8vw, 46px);
  height: clamp(22px, 4.8vw, 46px);
  place-items: center;
  color: #fff;
  font: 900 clamp(24px, 4.8vw, 48px)/1 Arial, sans-serif;
  text-shadow: 0 2px 9px rgba(130, 0, 54, .4);
  transform: translateY(-51%);
}

.cta::before {
  position: absolute;
  inset: -5px;
  border: 2px solid rgba(255, 45, 116, .72);
  border-radius: inherit;
  content: "";
  animation: ctaRing 2.35s ease-out infinite;
}

.cta::after {
  position: absolute;
  top: -35%;
  bottom: -35%;
  left: -24%;
  width: 16%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.95), transparent);
  content: "";
  transform: skewX(-16deg);
  animation: ctaShine 3s ease-in-out infinite .45s;
}

.cta:hover,
.cta:focus-visible {
  outline: none;
  box-shadow: 0 0 0 6px rgba(255, 45, 116, .18), 0 14px 34px rgba(175, 0, 65, .25);
}

.srOnly {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

@keyframes ctaGlow {
  0%, 100% { box-shadow: 0 8px 22px rgba(157,0,58,.28), 0 0 0 0 rgba(255,255,255,0); }
  50% { box-shadow: 0 10px 30px rgba(157,0,58,.38), 0 0 20px 7px rgba(255,255,255,.32); }
}

@keyframes ctaRing {
  0% { opacity: 0; transform: scale(.985); }
  30% { opacity: .9; }
  78%, 100% { opacity: 0; transform: scale(1.045); }
}

@keyframes ctaShine {
  0%, 28% { left: -24%; opacity: 0; }
  42% { opacity: 1; }
  72%, 100% { left: 112%; opacity: 0; }
}

@media (max-width: 700px) {
  .page { padding: 0; background: #fff; }
  .stage { width: 100%; border-radius: 0; box-shadow: none; }
  .cta {
    right: .65%;
    bottom: -2px;
    left: .65%;
    gap: 5px;
    padding-right: 34px;
    padding-left: 40px;
    border-width: 1.5px;
  }
  .ctaCopy strong { font-size: clamp(10px, 3.15vw, 14px); }
  .ctaCopy b { font-size: clamp(10px, 3.35vw, 15px); }
  .ctaArrow { right: 4px; width: 25px; height: 25px; font-size: 27px; }
  .ctaIcon { left: 9px; width: 28px; }
}

@media (prefers-reduced-motion: reduce) {
  .baseImage { opacity: 1; }
  .slice { display: none; }
  .cta, .cta::before, .cta::after { animation: none; }
}
