/* 良辰与敬邀：装饰始终位于正文后方，循环只在当前可见章节播放。 */
#the-day.scene-enhanced .date-display { position: relative; }
.scene-date-number { display: inline-block; }
#the-day.scene-enhanced .date-display::before,
#the-day.scene-enhanced .date-display::after {
  content: "";
  position: absolute;
  left: 0;
  width: 100%;
  height: 1px;
  background: linear-gradient(90deg, transparent, #ae8745aa 28%, #d5b67a, #ae8745aa 72%, transparent);
  transform-origin: center;
  pointer-events: none;
}
#the-day.scene-enhanced .date-display::before { top: -1px; }
#the-day.scene-enhanced .date-display::after { bottom: -1px; }
#the-day.scene-enhanced .wedding-day > span { position: relative; isolation: isolate; }
#the-day.scene-enhanced .wedding-day > span::after {
  content: "";
  position: absolute;
  inset: -4px;
  border: 1px solid #a54e5a70;
  border-radius: 50%;
  pointer-events: none;
}
#the-day.scene-enhanced .calendar-heart { display: inline-block; transform-origin: 50% 60%; }

.scene-ornaments {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
  user-select: none;
  contain: layout paint;
}
.scene-petal {
  position: absolute;
  top: -26px;
  left: var(--petal-left);
  width: 9px;
  height: 15px;
  border-radius: 80% 15% 70% 30%;
  background: linear-gradient(140deg, #f9e5c6b3, #d1a2726b);
  opacity: 0;
}
.scene-gold-point {
  position: absolute;
  left: var(--point-left);
  top: var(--point-top);
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: #f6d59d;
  box-shadow: 0 0 6px #e9c79755;
  opacity: .22;
}
#join-us.scene-enhanced .closing-seal { position: relative; }
.scene-seal-stamp, .scene-seal-glyph { display: grid; place-items: center; }
.scene-seal-stamp { width: 100%; height: 100%; }
.scene-seal-glyph { line-height: 1; padding-bottom: 3px; }
#join-us.scene-enhanced .closing-seal::before,
#join-us.scene-enhanced .closing-seal::after {
  content: "";
  position: absolute;
  border: 1px solid #eddbb936;
  border-radius: 50%;
  pointer-events: none;
}
#join-us.scene-enhanced .closing-seal::before { inset: -7px; }
#join-us.scene-enhanced .closing-seal::after { inset: -14px; border-color: #eddbb91c; }

/* reveal 保留原有父层过渡，新增动作只作用于内部层和伪元素。 */
#the-day.scene-visible .scene-date-number {
  animation: scene-date-arrive 1.05s cubic-bezier(.2,.7,.25,1) calc(.45s + var(--number-order) * .18s) both;
}
#the-day.scene-visible .date-display > strong > i {
  display: inline-block;
  animation: scene-slash-arrive 1.1s ease .6s both;
}
#the-day.scene-visible .date-display::before,
#the-day.scene-visible .date-display::after { animation: scene-gold-line 1.65s cubic-bezier(.2,.7,.25,1) .25s both; }
#the-day.scene-visible .date-display::after { animation-delay: .5s; }
#the-day.scene-visible .wedding-day > span { animation: scene-day-heartbeat 3.8s ease-in-out 1.6s infinite; }
#the-day.scene-visible .wedding-day > span::after { animation: scene-day-halo 3.8s ease-out 1.6s infinite; }
#the-day.scene-visible .calendar-heart { animation: scene-heartbeat 3.8s ease-in-out 1.6s infinite; }
#join-us.scene-visible .scene-seal-stamp { animation: scene-seal-arrive 1.2s cubic-bezier(.2,.7,.25,1) .35s both; }
#join-us.scene-visible .scene-seal-glyph { animation: scene-seal-float 5.5s ease-in-out 1.55s infinite; }
#join-us.scene-visible .closing-seal::before { animation: scene-seal-halo 5.5s ease-in-out 1.55s infinite; }
#join-us.scene-visible .closing-seal::after { animation: scene-seal-halo 5.5s ease-in-out 1.85s infinite reverse; }
#join-us.scene-visible .fine-divider::before,
#join-us.scene-visible .fine-divider::after { animation: scene-gold-line 1.5s ease .7s both; }
#join-us.scene-visible .fine-divider::before { transform-origin: right center; }
#join-us.scene-visible .fine-divider::after { transform-origin: left center; }
#join-us.scene-visible .scene-petal { animation: scene-petal-drift var(--petal-duration) linear var(--petal-delay) infinite; }
#join-us.scene-visible .scene-gold-point { animation: scene-gold-twinkle var(--point-duration) ease-in-out var(--point-delay) infinite; }

/* 仅暂停本文件的动画，也暂停这两页原有的下翻提示动画。 */
.scene-enhanced:not(.scene-running) .scene-date-number,
.scene-enhanced:not(.scene-running) .date-display > strong > i,
.scene-enhanced:not(.scene-running) .date-display::before,
.scene-enhanced:not(.scene-running) .date-display::after,
.scene-enhanced:not(.scene-running) .wedding-day > span,
.scene-enhanced:not(.scene-running) .wedding-day > span::after,
.scene-enhanced:not(.scene-running) .calendar-heart,
.scene-enhanced:not(.scene-running) .scene-seal-stamp,
.scene-enhanced:not(.scene-running) .scene-seal-glyph,
.scene-enhanced:not(.scene-running) .closing-seal::before,
.scene-enhanced:not(.scene-running) .closing-seal::after,
.scene-enhanced:not(.scene-running) .fine-divider::before,
.scene-enhanced:not(.scene-running) .fine-divider::after,
.scene-enhanced:not(.scene-running) .scene-petal,
.scene-enhanced:not(.scene-running) .scene-gold-point,
.scene-enhanced:not(.scene-running) .text-next span { animation-play-state: paused !important; }

@keyframes scene-date-arrive {
  from { opacity: 0; transform: translateY(18px) rotateX(30deg); }
  to { opacity: 1; transform: translateY(0) rotateX(0); }
}
@keyframes scene-slash-arrive {
  from { opacity: 0; transform: scaleY(.5); }
  to { opacity: 1; transform: scaleY(1); }
}
@keyframes scene-gold-line {
  from { opacity: 0; transform: scaleX(.08); }
  to { opacity: 1; transform: scaleX(1); }
}
@keyframes scene-day-heartbeat {
  0%, 36%, 100% { transform: scale(1); }
  12% { transform: scale(1.09); }
  23% { transform: scale(1.025); }
}
@keyframes scene-day-halo {
  0% { opacity: .6; transform: scale(.95); }
  32%, 100% { opacity: 0; transform: scale(1.45); }
}
@keyframes scene-heartbeat {
  0%, 36%, 100% { transform: scale(1); }
  12% { transform: scale(1.22); }
  23% { transform: scale(1.04); }
}
@keyframes scene-seal-arrive {
  0% { opacity: 0; transform: translateY(-16px) scale(1.22) rotate(-9deg); }
  65% { opacity: 1; transform: translateY(1px) scale(.97) rotate(1deg); }
  100% { opacity: 1; transform: translateY(0) scale(1) rotate(0); }
}
@keyframes scene-seal-float {
  0%, 100% { transform: translateY(1px) rotate(-1deg); }
  50% { transform: translateY(-3px) rotate(1deg); }
}
@keyframes scene-seal-halo {
  0%, 100% { opacity: .4; transform: scale(.98); }
  50% { opacity: .85; transform: scale(1.04); }
}
@keyframes scene-petal-drift {
  0% { opacity: 0; transform: translate3d(0, 0, 0) rotate(0deg); }
  9% { opacity: .42; }
  44% { transform: translate3d(var(--petal-sway), calc(var(--scene-height, 100vh) * .44), 0) rotate(100deg); }
  83% { opacity: .34; }
  100% { opacity: 0; transform: translate3d(0, var(--scene-height, 100vh), 0) rotate(220deg); }
}
@keyframes scene-gold-twinkle {
  0%, 100% { opacity: .15; transform: scale(.75); }
  50% { opacity: .65; transform: scale(1.25); }
}

@media (max-width: 360px) {
  .scene-petal { width: 7px; height: 12px; }
  #join-us.scene-enhanced .closing-seal::after { inset: -12px; }
}
@media (prefers-reduced-motion: reduce) {
  .scene-enhanced .scene-ornaments { display: none; }
  .scene-enhanced .scene-date-number,
  .scene-enhanced .date-display > strong > i,
  .scene-enhanced .scene-seal-stamp,
  .scene-enhanced .scene-seal-glyph { animation: none !important; opacity: 1 !important; transform: none !important; }
  .scene-enhanced .wedding-day > span::after { opacity: .4; transform: none; }
}
