/* A single, optional opening moment: satin, brass and a door in perspective. */
body.has-ceremony > .auth-shell, body.has-ceremony > .skip-link { visibility: hidden; }
.ceremony-overlay {
  --ceremony-wine: var(--color-cherry-strong);
  --ceremony-rose: var(--color-pastel-rose);
  --ceremony-dusty-rose: #c694a7;
  --ceremony-gold: #d5b777;
  background: var(--color-canvas);
  padding: clamp(1rem, 3vw, 2.5rem);
  overflow-x: hidden;
  overflow-y: auto;
  touch-action: auto;
  isolation: isolate;
  transition: opacity 400ms ease;
}
.ceremony-overlay[hidden], .ceremony-reveal[hidden] { display: none; }
.ceremony-overlay::before, .ceremony-overlay::after {
  content: ""; position: fixed; z-index: -1; pointer-events: none;
  width: 76vw; height: 140vh; left: 12vw; top: 12vh;
  border: 1px solid var(--color-line-strong); border-radius: 50% 50% 0 0;
}
.ceremony-overlay::after { width: 84vw; left: 8vw; top: 8vh; opacity: .45; }
.ceremony-stage { width: min(100%, 920px); margin: auto; perspective: 1200px; }
.ceremony-intro { transition: opacity 400ms ease, transform 600ms cubic-bezier(.22,1,.36,1); }
.ceremony-kicker { padding: 0; background: transparent; box-shadow: none; border-radius: 0; color: var(--color-cherry-deep); font-size: .7rem; margin-bottom: 1rem; letter-spacing: .16em; }
.auth-body .ceremony-title { font-size: clamp(2rem, 4.4vw, 3.8rem); color: var(--color-plum-ink); letter-spacing: -.055em; font-weight: 600; line-height: 1.08; margin-bottom: 1rem; text-wrap: balance; }
.ceremony-subtitle { font-size: clamp(.9rem, 1.6vw, 1.05rem); color: var(--color-ink-muted); margin-bottom: .8rem; }
.ceremony-subtitle strong { color: var(--color-cherry-deep); }
.ceremony-hint { font-size: .75rem; margin-bottom: .6rem; color: var(--color-ink-muted); }
.ribbon-wrap { width: min(100%, 660px); height: clamp(180px, 27vh, 260px); perspective: 1000px; cursor: pointer; touch-action: pan-y; }
.ceremony-portal { position: absolute; inset: 0; width: min(55%, 280px); margin-inline: auto; perspective: 850px; transform-style: preserve-3d; }
.portal-light { position: absolute; inset: 0; border-radius: 140px 140px 0 0; background: linear-gradient(180deg,#fffafc,var(--ceremony-rose)); box-shadow: 0 12px 40px #6e294420; display: grid; place-items: center; }
.portal-light i { color: #8a6a36; font-size: 2.6rem; }
.portal-door { position: absolute; top: 0; width: 50%; height: 100%; border: 1px solid var(--ceremony-gold); background: linear-gradient(110deg,#9a4a68,var(--ceremony-wine) 80%); backface-visibility: hidden; transition: transform 1200ms cubic-bezier(.22,1,.36,1); }
.portal-door::before { content: ""; position: absolute; inset: 16px 10px; border: 1px solid #f2dfe655; border-radius: inherit; }
.portal-door::after { content: ""; position: absolute; width: 4px; height: 25px; top: 57%; background: var(--ceremony-gold); border-radius: 2px; }
.portal-door-left { left: 0; border-radius: 140px 0 0 0; transform-origin: left center; }
.portal-door-right { right: 0; border-radius: 0 140px 0 0; transform-origin: right center; }
.portal-door-left::after { right: 9px; }
.portal-door-right::after { left: 9px; }
.ribbon-half { top: 62%; height: clamp(42px, 7vw, 62px); z-index: 2; border-block: 1px solid #f1d9b2; background: linear-gradient(176deg,#6e2944 0%,#8f3f5b 22%,#c694a7 45%,#9a4a68 64%,#8f3f5b 84%,#6e2944); box-shadow: inset 0 2px 2px #fff8, inset 0 -2px 3px #45202c66, 0 12px 18px #3b293338; transition: transform 1000ms cubic-bezier(.22,1,.36,1), opacity 900ms ease; }
.ribbon-half::before { animation: satinShine 3s ease-in-out 2; }
.ribbon-wrap.is-armed .ribbon-half { animation: none; }
.ribbon-left { clip-path: polygon(0 0,100% 0,100% 100%,0 100%,4% 50%); border-radius: 2px; transform: translateY(-50%) rotateY(8deg) translateX(calc(var(--tear,0px) * -1)); transform-origin: right center; }
.ribbon-right { clip-path: polygon(0 0,100% 0,96% 50%,100% 100%,0 100%); border-radius: 2px; transform: translateY(-50%) rotateY(-8deg) translateX(var(--tear,0px)); transform-origin: left center; }
.ribbon-wrap.is-cut .ribbon-left { transform: translate3d(-65%,100px,120px) rotateY(-45deg) rotateZ(-24deg); opacity: 0; }
.ribbon-wrap.is-cut .ribbon-right { transform: translate3d(65%,110px,120px) rotateY(45deg) rotateZ(24deg); opacity: 0; }
.ribbon-wrap.is-cut .portal-door-left { transform: rotateY(-105deg); }
.ribbon-wrap.is-cut .portal-door-right { transform: rotateY(105deg); }
.ribbon-bow { top: 62%; width: 85px; height: 85px; z-index: 3; filter: drop-shadow(0 6px 5px #3b293366); }
.ribbon-bow svg path { fill: #8f3f5b; }
.ribbon-bow svg ellipse { fill: #e8c8d3; stroke: #6e2944; }
.ribbon-bow svg ellipse[fill="none"] { fill: none; }
.ribbon-bow svg circle { fill: #c694a7; stroke: #f5dfaa; }
.scissors { filter: drop-shadow(0 5px 6px #3b293340); width: 70px; height: 70px; }
.scissors svg > path, .scissors svg > circle:not(:first-of-type) { stroke: #8f3f5b; }
.ceremony-actions { margin-top: 1.4rem; gap: .7rem; }
.ceremony-cta { border-radius: 8px; color: #fffdfb; background: var(--color-cherry-deep); min-height: 50px; box-shadow: 0 5px 12px #6e294422; text-decoration: none; justify-content: center; transition: transform 200ms ease, background-color 200ms ease; }
.ceremony-cta:hover { background: var(--ceremony-wine); color: white; transform: translateY(-2px); }
.ceremony-cta:focus-visible, .ceremony-skip:focus-visible { outline: 3px solid var(--ceremony-gold); outline-offset: 5px; }
.ceremony-skip { min-height: 40px; color: var(--color-ink-muted); }
.ceremony-stage.is-revealed .ceremony-intro { opacity: 0; visibility: hidden; pointer-events: none; transform: translateY(-20px); }
.ceremony-reveal { transition: opacity 600ms ease, transform 600ms cubic-bezier(.22,1,.36,1); transform: translateY(24px); }
.ceremony-stage.is-revealed .ceremony-reveal { transform: translateY(0); }
.ceremony-reveal-card { width: min(100%,660px); background: transparent; backdrop-filter: none; box-shadow: none; padding: 1rem; }
.auth-body .ceremony-reveal-card h2 { font-size: clamp(2rem,4.5vw,3.7rem); letter-spacing: -.05em; line-height: 1.1; color: var(--color-plum-ink); margin: .6rem 0 1.2rem; }
.ceremony-reveal-card p { max-width: 440px; margin: 0 auto 1.6rem; font-size: 1rem; }
.ceremony-reveal-card .registration-success-icon { color: var(--color-cherry-deep); background: var(--color-pastel-rose); border: 1px solid var(--color-line-strong); border-radius: 50%; box-shadow: 0 8px 24px #6e294414; }
.ceremony-reveal-card .ceremony-cta { width: auto; }
@media (max-height: 660px) {
  .ceremony-overlay { place-items: start center; }
  .ribbon-wrap { height: 145px; }
  .ceremony-actions { margin-top: .8rem; }
  .auth-body .ceremony-title { font-size: 1.8rem; }
  .ceremony-kicker { margin-bottom: .5rem; }
}
@media (prefers-reduced-motion: reduce) {
  .ceremony-overlay *, .ceremony-overlay { animation: none !important; transition: none !important; }
  .ceremony-reveal, .ceremony-stage.is-revealed .ceremony-intro { transform: none; }
  .scissors, .confetti-canvas { display: none; }
}
