/* Eight emotion ripples — full-viewport canvas, centered labels */

.emotion-ripples {
  position: relative;
  z-index: 1;
  background: var(--color-bg);
  padding: 0;
  margin: 0;
  width: 100%;
  min-height: 100vh;
  min-height: 100dvh;
}

.emotion-ripples__field {
  position: relative;
  width: 100%;
  min-height: 100vh;
  min-height: 100dvh;
  margin: 0;
  overflow: visible;
  cursor: default;
}

.emotion-ripples__canvas {
  position: absolute;
  inset: 0;
  z-index: 0;
  display: block;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.emotion-ripples__mist {
  z-index: 3;
}

.emotion-ripples__mist .poem-sky__body strong {
  font-weight: 700;
  color: rgba(28, 28, 28, 0.96);
}

.emotion-ripples__labels {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
}

.emotion-ripple__label {
  position: absolute;
  left: 0;
  top: 0;
  margin: 0;
  opacity: 0;
  transform: translate(-50%, calc(-50% + var(--reading-fade-shift)));
  font-family: "Noto Serif SC", var(--font-serif);
  font-weight: 300;
  font-synthesis: none;
  font-size: clamp(0.92rem, 1.85vw, 1.14rem);
  letter-spacing: 0.14em;
  white-space: nowrap;
  color: rgba(30, 52, 72, 0.84);
  -webkit-font-smoothing: antialiased;
  transition: opacity 0.42s ease, color 0.42s ease;
}

.emotion-ripple__label.is-dimmed {
  opacity: 0.26;
  color: rgba(30, 52, 72, 0.38);
}

.emotion-ripples.is-visible .emotion-ripple__label.is-dimmed {
  opacity: 0.26;
}

.emotion-ripple__label.is-selected {
  opacity: 1;
  color: rgba(22, 46, 68, 0.94);
  font-weight: 400;
}

.emotion-ripples.is-visible .emotion-ripple__label.is-selected {
  opacity: 1;
}

.emotion-ripples.is-visible .emotion-ripple__label {
  animation: emotion-label-in var(--reading-fade-duration-body) ease 0.12s forwards;
}

@keyframes emotion-label-in {
  from {
    opacity: 0;
    transform: translate(-50%, calc(-50% + var(--reading-fade-shift)));
  }

  to {
    opacity: 1;
    transform: translate(-50%, -50%);
  }
}

@media (prefers-reduced-motion: reduce) {
  .emotion-ripples.is-visible .emotion-ripple__label {
    opacity: 1;
    transform: translate(-50%, -50%);
    animation: none;
  }

  .emotion-ripples.is-visible .emotion-ripples__caption {
    opacity: 1;
    transform: none;
    animation: none;
  }

  .emotion-ripples.is-visible .emotion-ripples__click-hint {
    opacity: 1;
    transform: none;
    animation: none;
  }
}

.emotion-ripples__footnotes {
  position: relative;
  z-index: 2;
  margin-top: -11vh;
  padding: 0 var(--space-md) 3.5vh;
  text-align: center;
  pointer-events: none;
}

.emotion-ripples__caption {
  margin: 0;
  padding: 0;
  text-align: center;
  opacity: 0;
  transform: translate3d(0, var(--reading-fade-shift), 0);
  font-family: "Noto Sans SC", "Source Han Sans SC", "PingFang SC", sans-serif;
  font-size: clamp(0.72rem, 1.6vw, 0.82rem);
  font-weight: 100;
  font-synthesis: none;
  letter-spacing: 0.32em;
  text-indent: 0.32em;
  color: rgba(58, 58, 58, 0.88);
  -webkit-font-smoothing: antialiased;
}

.emotion-ripples__click-hint {
  margin: 0.28rem 0 0;
  padding: 0;
  opacity: 0;
  transform: translate3d(0, var(--reading-fade-shift), 0);
  font-family: "Noto Sans SC", "Source Han Sans SC", "PingFang SC", sans-serif;
  font-size: clamp(0.68rem, 1.5vw, 0.78rem);
  font-weight: 100;
  font-synthesis: none;
  letter-spacing: 0.22em;
  text-indent: 0.22em;
  color: rgba(58, 58, 58, 0.55);
  -webkit-font-smoothing: antialiased;
}

.emotion-ripples.is-visible .emotion-ripples__caption {
  animation: reading-fade-in var(--reading-fade-duration-body) ease 0.12s forwards;
}

.emotion-ripples.is-visible .emotion-ripples__click-hint {
  animation: reading-fade-in var(--reading-fade-duration-body) ease 0.28s forwards;
}
