/* Page transition / loader animations — kına salon themes */

.page-loader {
  position: fixed; inset: 0; z-index: 9999;
  background: #0a0406;
  display: grid; place-items: center;
  transition: opacity .75s ease, visibility .75s;
  color: var(--gold, #c9a227);
}
.page-loader.hide { opacity: 0; visibility: hidden; pointer-events: none; }
.loader-stage { text-align: center; position: relative; min-width: 220px; }
.loader-name {
  display: block;
  margin-top: 1.1rem;
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: clamp(1.6rem, 4vw, 2.4rem);
  color: var(--cream, #f4ebe1);
  letter-spacing: .16em;
}
.loader-caption,
.loader-caption.loader-domain,
.page-loader .loader-caption {
  display: block;
  margin-top: .45rem;
  font-family: Outfit, sans-serif;
  font-size: .72rem;
  letter-spacing: .06em;
  text-transform: lowercase !important;
  color: color-mix(in srgb, var(--gold, #c9a227) 70%, #fff);
  opacity: .78;
  font-variant: normal !important;
  font-variant-caps: normal !important;
}
.loader-bar {
  display: block;
  width: 120px; height: 1px;
  margin: 1.1rem auto 0;
  background: rgba(201,162,39,.2);
  overflow: hidden;
}
.loader-bar i {
  display: block; height: 100%; width: 40%;
  background: linear-gradient(90deg, transparent, var(--gold, #c9a227), transparent);
  animation: loaderSlide 1.15s ease infinite;
}
.loader-mark {
  display: grid; place-items: center;
  width: 64px; height: 64px; margin: 0 auto;
  border: 1px solid var(--gold, #c9a227);
  font-family: 'Cormorant Garamond', serif;
  color: var(--gold, #c9a227);
  font-size: 1.35rem;
  animation: loaderPulse 1.6s ease infinite;
}
img.loader-mark.loader-logo,
.loader-brand-logo {
  display: block;
  margin: 0 auto .65rem;
  width: auto;
  max-width: 96px;
  max-height: 72px;
  height: auto;
  object-fit: contain;
  border: 0;
  animation: loaderPulse 1.6s ease infinite;
}
img.loader-mark.loader-logo {
  margin-bottom: 0;
}
@keyframes loaderSlide {
  0% { transform: translateX(-120%); }
  100% { transform: translateX(320%); }
}
@keyframes loaderPulse {
  0%, 100% { transform: scale(1); opacity: .7; }
  50% { transform: scale(1.05); opacity: 1; }
}

/* ===== Realistic photo loaders (all themes) ===== */
.ld-photo {
  position: relative;
  height: 240px;
  margin: 0 auto;
  width: min(300px, 92vw);
}
.ld-photo-orbit {
  position: relative;
  z-index: 2;
  width: 210px;
  height: 260px;
  margin: 0 auto;
}
.ld-photo-frame {
  width: 100%;
  height: 100%;
  overflow: hidden;
  border-radius: 18px;
  border: 2px solid #c9a227;
  box-shadow:
    0 0 0 1px rgba(240, 224, 160, .35) inset,
    0 0 0 4px rgba(201, 162, 39, .18),
    0 0 28px rgba(201, 162, 39, .35),
    0 14px 32px rgba(0, 0, 0, .55);
  background:
    linear-gradient(145deg, rgba(201,162,39,.22), transparent 40%),
    #12080a;
  position: relative;
}
.ld-photo-frame::after {
  content: '';
  position: absolute;
  inset: 5px;
  border-radius: 13px;
  border: 1px solid rgba(240, 224, 160, .35);
  pointer-events: none;
  z-index: 2;
}
.ld-photo--goldframe .ld-photo-frame,
.ld-photo--soft .ld-photo-frame,
.ld-photo--round .ld-photo-frame {
  border-radius: 18px;
}
.ld-photo-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  display: block;
  filter: contrast(1.04) saturate(1.06);
  border-radius: 16px;
}
.ld-photo--couple .ld-photo-img { object-position: center 18%; }

/* ===== Full-screen cinematic couple dance (video-like) ===== */
.page-loader.is-couple-cinema {
  overflow: hidden;
  background: #050203;
}
.page-loader.is-couple-cinema .loader-stage--cinema {
  position: absolute;
  inset: 0;
  min-width: 0;
  display: block;
  text-align: center;
}
.page-loader.is-couple-cinema .ld-photo--cinema {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  overflow: visible;
}
.page-loader.is-couple-cinema .ld-cinema-bg {
  position: absolute;
  inset: -10%;
  background:
    radial-gradient(ellipse at 50% 40%, rgba(92, 24, 40, .55), transparent 55%),
    radial-gradient(ellipse at 50% 80%, rgba(201, 162, 39, .18), transparent 50%),
    #050203;
  animation: cinemaBgPulse 4s ease-in-out infinite;
  z-index: 0;
}
@keyframes cinemaBgPulse {
  0%, 100% { transform: scale(1); opacity: .9; }
  50% { transform: scale(1.06); opacity: 1; }
}
.page-loader.is-couple-cinema .ld-cinema-vignette {
  position: absolute;
  inset: 0;
  z-index: 4;
  pointer-events: none;
  background:
    radial-gradient(ellipse at center, transparent 35%, rgba(0,0,0,.55) 78%, rgba(0,0,0,.85) 100%);
}
.page-loader.is-couple-cinema .ld-photo-glow {
  width: min(58vw, 420px);
  height: min(72vw, 520px);
  top: 42%;
  opacity: .85;
  z-index: 1;
}
.page-loader.is-couple-cinema .ld-photo-orbit {
  position: absolute;
  left: 50%;
  top: 42%;
  width: min(42vw, 340px);
  height: min(56vw, 440px);
  margin: 0;
  transform: translate(-50%, -50%);
  z-index: 2;
}
.page-loader.is-couple-cinema .ld-photo-frame {
  width: 100%;
  height: 100%;
  border-radius: 22px;
  border: 2.5px solid #c9a227;
  background: #0c0608;
  box-shadow:
    0 0 0 1px rgba(240, 224, 160, .4) inset,
    0 0 0 5px rgba(201, 162, 39, .2),
    0 0 40px rgba(201, 162, 39, .4),
    0 20px 50px rgba(0, 0, 0, .65);
  overflow: hidden;
}
.page-loader.is-couple-cinema .ld-photo-frame::after {
  inset: 6px;
  border-radius: 16px;
  border-color: rgba(240, 224, 160, .45);
}
.page-loader.is-couple-cinema .ld-photo-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 20%;
  filter: contrast(1.06) saturate(1.08) brightness(1.02);
  border-radius: 20px;
  mix-blend-mode: normal;
}
.page-loader.is-couple-cinema .ld-photo-sparkles {
  position: absolute;
  inset: 0;
  z-index: 5;
  overflow: hidden;
}
.page-loader.is-couple-cinema .ld-photo-sparkles i {
  width: 6px;
  height: 6px;
}
.page-loader.is-couple-cinema .ld-cinema-petals {
  position: absolute;
  inset: 0;
  z-index: 5;
  pointer-events: none;
  overflow: hidden;
}
.page-loader.is-couple-cinema .ld-cinema-petals em {
  position: absolute;
  top: -8%;
  width: 14px;
  height: 16px;
  background: radial-gradient(circle at 30% 30%, #fff, #e8c8d0 60%, #c9a227);
  border-radius: 60% 40% 55% 45%;
  opacity: 0;
  animation: cinemaPetal 4.5s linear infinite;
}
.page-loader.is-couple-cinema .ld-cinema-petals em:nth-child(1) { left: 8%; animation-delay: 0s; }
.page-loader.is-couple-cinema .ld-cinema-petals em:nth-child(2) { left: 22%; animation-delay: .5s; width: 10px; height: 12px; }
.page-loader.is-couple-cinema .ld-cinema-petals em:nth-child(3) { left: 38%; animation-delay: 1.1s; }
.page-loader.is-couple-cinema .ld-cinema-petals em:nth-child(4) { left: 52%; animation-delay: .3s; width: 12px; height: 14px; }
.page-loader.is-couple-cinema .ld-cinema-petals em:nth-child(5) { left: 66%; animation-delay: 1.6s; }
.page-loader.is-couple-cinema .ld-cinema-petals em:nth-child(6) { left: 78%; animation-delay: .8s; width: 11px; height: 13px; }
.page-loader.is-couple-cinema .ld-cinema-petals em:nth-child(7) { left: 88%; animation-delay: 2s; }
.page-loader.is-couple-cinema .ld-cinema-petals em:nth-child(8) { left: 44%; animation-delay: 2.4s; width: 9px; height: 11px; }
@keyframes cinemaPetal {
  0% { opacity: 0; transform: translateY(0) rotate(0) scale(.8); }
  10% { opacity: .95; }
  100% { opacity: 0; transform: translateY(110vh) rotate(320deg) scale(1.2); }
}
.page-loader.is-couple-cinema .loader-titles--cinema {
  position: absolute;
  left: 0;
  right: 0;
  bottom: max(1.5rem, env(safe-area-inset-bottom));
  z-index: 6;
  padding: 0 1rem 1.25rem;
  text-align: center;
  pointer-events: none;
  text-shadow: 0 4px 24px rgba(0,0,0,.85);
}
.page-loader.is-couple-cinema .loader-titles--cinema .loader-name {
  margin-top: 0;
  font-size: clamp(2rem, 7vw, 3.4rem);
  letter-spacing: .14em;
}
.page-loader.is-couple-cinema .loader-titles--cinema .loader-bar {
  margin-left: auto;
  margin-right: auto;
}

/* Disable tiny-circle spins for cinema; use dance-video paths */
.page-loader.is-couple-cinema .ld-photo--spin-dance .ld-photo-orbit,
.page-loader.is-couple-cinema .ld-photo--spin-waltz .ld-photo-orbit,
.page-loader.is-couple-cinema .ld-photo--spin-dip .ld-photo-orbit,
.page-loader.is-couple-cinema .ld-photo--spin-spot .ld-photo-orbit,
.page-loader.is-couple-cinema .ld-photo--spin-fast .ld-photo-orbit,
.page-loader.is-couple-cinema .ld-photo--spin-celebrate .ld-photo-orbit {
  animation: cinemaDanceOrbit 8s ease-in-out infinite;
}
.page-loader.is-couple-cinema .ld-photo--spin-dance .ld-photo-frame,
.page-loader.is-couple-cinema .ld-photo--spin-waltz .ld-photo-frame,
.page-loader.is-couple-cinema .ld-photo--spin-dip .ld-photo-frame,
.page-loader.is-couple-cinema .ld-photo--spin-spot .ld-photo-frame,
.page-loader.is-couple-cinema .ld-photo--spin-fast .ld-photo-frame,
.page-loader.is-couple-cinema .ld-photo--spin-celebrate .ld-photo-frame {
  animation: none;
}
.page-loader.is-couple-cinema .ld-photo--spin-dance .ld-photo-img,
.page-loader.is-couple-cinema .ld-photo--spin-waltz .ld-photo-img,
.page-loader.is-couple-cinema .ld-photo--spin-dip .ld-photo-img,
.page-loader.is-couple-cinema .ld-photo--spin-spot .ld-photo-img,
.page-loader.is-couple-cinema .ld-photo--spin-fast .ld-photo-img,
.page-loader.is-couple-cinema .ld-photo--spin-celebrate .ld-photo-img {
  animation: cinemaDanceVideo 8s ease-in-out infinite;
}

.page-loader.is-couple-cinema .ld-photo--spin-waltz .ld-photo-orbit { animation-duration: 10s; }
.page-loader.is-couple-cinema .ld-photo--spin-waltz .ld-photo-img { animation: cinemaWaltzVideo 10s ease-in-out infinite; }
.page-loader.is-couple-cinema .ld-photo--spin-dip .ld-photo-orbit { animation-duration: 7s; }
.page-loader.is-couple-cinema .ld-photo--spin-dip .ld-photo-img { animation: cinemaDipVideo 7s ease-in-out infinite; }
.page-loader.is-couple-cinema .ld-photo--spin-fast .ld-photo-orbit { animation-duration: 5.5s; }
.page-loader.is-couple-cinema .ld-photo--spin-fast .ld-photo-img { animation: cinemaDanceVideo 5.5s ease-in-out infinite; }
.page-loader.is-couple-cinema .ld-photo--spin-celebrate .ld-photo-img { animation: cinemaCelebrateVideo 6.5s ease-in-out infinite; }
.page-loader.is-couple-cinema .ld-photo--spin-spot .ld-photo-img { animation: cinemaSpotVideo 9s ease-in-out infinite; }

@keyframes cinemaDanceOrbit {
  0%, 100% { transform: translate(-50%, -50%) scale(1) rotate(-2deg); }
  25% { transform: translate(-48%, -51%) scale(1.05) rotate(3deg); }
  50% { transform: translate(-50%, -49%) scale(1.08) rotate(-2deg); }
  75% { transform: translate(-52%, -51%) scale(1.04) rotate(3deg); }
}
@keyframes cinemaDanceVideo {
  0%, 100% { transform: scale(1) translate(0, 0) rotate(0deg); filter: contrast(1.08) saturate(1.1) brightness(1); }
  20% { transform: scale(1.04) translate(-1.5%, -1%) rotate(-3deg); filter: contrast(1.1) saturate(1.12) brightness(1.04); }
  45% { transform: scale(1.06) translate(1%, .5%) rotate(3deg); }
  70% { transform: scale(1.03) translate(-.5%, 1%) rotate(-2deg); }
  85% { transform: scale(1.05) translate(1.5%, -.5%) rotate(2deg); }
}
@keyframes cinemaWaltzVideo {
  0%, 100% { transform: scale(1) translate(-1%, 0) rotate(-4deg); }
  50% { transform: scale(1.06) translate(1.5%, -1.5%) rotate(4deg); }
}
@keyframes cinemaDipVideo {
  0%, 100% { transform: scale(1) rotate(0deg) translate(0, 0); }
  35% { transform: scale(1.04) rotate(-7deg) translate(-2%, 2%); }
  55% { transform: scale(1.05) rotate(6deg) translate(2%, -1%); }
}
@keyframes cinemaCelebrateVideo {
  0%, 100% { transform: scale(1) translate(0, 0) rotate(0); }
  25% { transform: scale(1.05) translate(-1%, -2%) rotate(-3deg); }
  50% { transform: scale(1.08) translate(0, -3%) rotate(0); }
  75% { transform: scale(1.04) translate(1.5%, -1.5%) rotate(4deg); }
}
@keyframes cinemaSpotVideo {
  0%, 100% { transform: scale(1); filter: brightness(1) contrast(1.08); }
  50% { transform: scale(1.06); filter: brightness(1.08) contrast(1.1) saturate(1.15); }
}

@media (max-width: 700px) {
  .page-loader.is-couple-cinema .ld-photo-orbit {
    width: min(68vw, 280px);
    height: min(88vw, 360px);
  }
  .page-loader.is-couple-cinema .loader-titles--cinema .loader-name {
    font-size: clamp(1.7rem, 9vw, 2.4rem);
  }
}

/* Admin picker: gold rounded rectangles */
.loader-preview .ld-cinema-bg,
.loader-preview .ld-cinema-vignette,
.loader-preview .ld-cinema-petals { display: none !important; }
.loader-preview .ld-photo {
  width: 118px !important;
  height: 140px !important;
}
.loader-preview .ld-photo-orbit {
  width: 100px !important;
  height: 122px !important;
}
.loader-preview .ld-photo.ld-photo--couple,
.loader-preview .ld-photo.ld-photo--cinema {
  position: relative !important;
  inset: auto !important;
  display: block !important;
  width: 118px !important;
  height: 140px !important;
  margin: 0 auto !important;
  overflow: visible !important;
}
.loader-preview .ld-photo.ld-photo--couple .ld-photo-glow {
  width: 90px;
  height: 110px;
  top: 50%;
  left: 50%;
}
.loader-preview .ld-photo.ld-photo--couple .ld-photo-orbit,
.loader-preview .ld-photo.ld-photo--cinema .ld-photo-orbit {
  position: relative !important;
  left: auto !important;
  top: auto !important;
  width: 100px !important;
  height: 122px !important;
  margin: 0 auto !important;
  transform: none !important;
  animation: photoSpin 4.5s linear infinite !important;
}
.loader-preview .ld-photo .ld-photo-frame,
.loader-preview .ld-photo.ld-photo--couple .ld-photo-frame,
.loader-preview .ld-photo.ld-photo--cinema .ld-photo-frame {
  border-radius: 18px !important;
  border: 2px solid #c9a227 !important;
  overflow: hidden !important;
  width: 100% !important;
  height: 100% !important;
  box-shadow:
    0 0 0 1px rgba(240, 224, 160, .35) inset,
    0 0 0 3px rgba(201, 162, 39, .2),
    0 0 16px rgba(201, 162, 39, .35) !important;
  background: #12080a !important;
}
.loader-preview .ld-photo .ld-photo-frame::after {
  inset: 4px;
  border-radius: 10px;
}
.loader-preview .ld-photo .ld-photo-img,
.loader-preview .ld-photo.ld-photo--couple .ld-photo-img,
.loader-preview .ld-photo.ld-photo--cinema .ld-photo-img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  object-position: center 18% !important;
  border-radius: 16px !important;
  animation: photoFace 4.5s linear infinite !important;
  filter: none !important;
}
.loader-preview .ld-photo.ld-photo--couple .ld-photo-sparkles i:nth-child(n+5) {
  display: none;
}

.ld-photo-glow {
  position: absolute;
  left: 50%; top: 46%;
  width: 230px; height: 190px;
  transform: translate(-50%, -50%);
  background: radial-gradient(ellipse, rgba(201,162,39,.42), transparent 68%);
  pointer-events: none;
  animation: coupleGlowPulse 2.4s ease-in-out infinite;
  z-index: 1;
}
@keyframes coupleGlowPulse {
  0%, 100% { opacity: .55; transform: translate(-50%, -50%) scale(.95); }
  50% { opacity: 1; transform: translate(-50%, -50%) scale(1.1); }
}
.ld-photo-sparkles {
  position: absolute; inset: 0;
  pointer-events: none;
  overflow: hidden;
  z-index: 3;
}
.ld-photo-sparkles i {
  position: absolute;
  width: 5px; height: 5px;
  border-radius: 50%;
  background: #f0e0a0;
  box-shadow: 0 0 10px #c9a227;
  animation: sparkFloat 2.6s ease-in-out infinite;
  opacity: 0;
}
.ld-photo-sparkles i:nth-child(1) { left: 8%; top: 28%; animation-delay: 0s; }
.ld-photo-sparkles i:nth-child(2) { left: 86%; top: 20%; animation-delay: .25s; }
.ld-photo-sparkles i:nth-child(3) { left: 18%; top: 62%; animation-delay: .5s; }
.ld-photo-sparkles i:nth-child(4) { left: 90%; top: 52%; animation-delay: .75s; }
.ld-photo-sparkles i:nth-child(5) { left: 48%; top: 8%; animation-delay: 1s; }
.ld-photo-sparkles i:nth-child(6) { left: 62%; top: 74%; animation-delay: .15s; }
.ld-photo-sparkles i:nth-child(7) { left: 4%; top: 78%; animation-delay: 1.25s; }
.ld-photo-sparkles i:nth-child(8) { left: 94%; top: 72%; animation-delay: .9s; }
@keyframes sparkFloat {
  0%, 100% { opacity: 0; transform: translateY(8px) scale(.4); }
  25% { opacity: 1; transform: translateY(0) scale(1); }
  70% { opacity: .55; transform: translateY(-20px) scale(.7); }
}
.couple-petals {
  position: absolute; inset: 0 4% auto; height: 100%;
  pointer-events: none; overflow: hidden; z-index: 3;
}
.couple-petals em {
  position: absolute;
  top: -10%;
  width: 9px; height: 11px;
  background: radial-gradient(circle at 30% 30%, #fff, #e8c8d0);
  border-radius: 60% 40% 60% 40%;
  opacity: 0;
  animation: petalFall 3.2s linear infinite;
}
.couple-petals em:nth-child(1) { left: 12%; animation-delay: 0s; }
.couple-petals em:nth-child(2) { left: 28%; animation-delay: .5s; width: 6px; height: 8px; }
.couple-petals em:nth-child(3) { left: 46%; animation-delay: 1s; }
.couple-petals em:nth-child(4) { left: 62%; animation-delay: .3s; width: 7px; height: 9px; }
.couple-petals em:nth-child(5) { left: 78%; animation-delay: 1.5s; }
@keyframes petalFall {
  0% { opacity: 0; transform: translateY(0) rotate(0deg); }
  12% { opacity: .9; }
  100% { opacity: 0; transform: translateY(210px) rotate(240deg); }
}
.dance-floor {
  width: 170px; height: 3px; margin: 6px auto 0;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
  opacity: .65;
  position: relative;
  z-index: 1;
}
.dance-floor i {
  position: absolute; inset: -12px 8%;
  background: radial-gradient(ellipse, rgba(201,162,39,.45), transparent 70%);
  animation: floorPulse 1.4s ease-in-out infinite;
}
.dance-floor b {
  position: absolute; left: 50%; top: -2px;
  width: 20px; height: 6px; margin-left: -10px;
  border-radius: 50%;
  background: #f0e0a0;
  box-shadow: 0 0 14px #c9a227;
  animation: floorPulse 1.4s ease-in-out infinite;
  opacity: .75;
}
@keyframes floorPulse {
  0%, 100% { opacity: .4; transform: scaleX(.9); }
  50% { opacity: .95; transform: scaleX(1.15); }
}

/* Motion: spin + counter-rotate so subject stays upright */
.ld-photo--spin-dance .ld-photo-orbit { animation: photoSpin 4.5s linear infinite; }
.ld-photo--spin-dance .ld-photo-frame { animation: photoBob 1.5s ease-in-out infinite; }
.ld-photo--spin-dance .ld-photo-img { animation: photoFace 4.5s linear infinite; }

.ld-photo--spin-waltz .ld-photo-orbit { animation: photoSpin 6.5s linear infinite; }
.ld-photo--spin-waltz .ld-photo-frame { animation: photoBob 2s ease-in-out infinite; }
.ld-photo--spin-waltz .ld-photo-img { animation: photoFace 6.5s linear infinite; }

.ld-photo--spin-dip .ld-photo-orbit { animation: photoSpin 5.2s linear infinite; }
.ld-photo--spin-dip .ld-photo-frame { animation: photoDip 2.6s ease-in-out infinite; }
.ld-photo--spin-dip .ld-photo-img { animation: photoFace 5.2s linear infinite; }

.ld-photo--spin-spot .ld-photo-orbit { animation: photoSpin 8s linear infinite; }
.ld-photo--spin-spot .ld-photo-frame { animation: photoSpot 2.8s ease-in-out infinite; }
.ld-photo--spin-spot .ld-photo-img { animation: photoFace 8s linear infinite; }

.ld-photo--spin-fast .ld-photo-orbit { animation: photoSpin 3.4s linear infinite; }
.ld-photo--spin-fast .ld-photo-frame { animation: photoBob 1.2s ease-in-out infinite; }
.ld-photo--spin-fast .ld-photo-img { animation: photoFace 3.4s linear infinite; }

.ld-photo--spin-celebrate .ld-photo-orbit { animation: photoSpin 4s linear infinite; }
.ld-photo--spin-celebrate .ld-photo-frame { animation: photoCelebrate 1.8s ease-in-out infinite; }
.ld-photo--spin-celebrate .ld-photo-img { animation: photoFace 4s linear infinite; }

.ld-photo--spin-slow .ld-photo-orbit { animation: photoSpin 9s linear infinite; }
.ld-photo--spin-slow .ld-photo-frame { animation: photoBob 2.2s ease-in-out infinite; }
.ld-photo--spin-slow .ld-photo-img { animation: photoFace 9s linear infinite; }

.ld-photo--pulse-glow .ld-photo-orbit { animation: photoPulse 2.2s ease-in-out infinite; }
.ld-photo--pulse-glow .ld-photo-frame { animation: photoSpot 2.2s ease-in-out infinite; }

.ld-photo--float-bob .ld-photo-orbit { animation: photoFloat 3.2s ease-in-out infinite; }
.ld-photo--float-bob .ld-photo-frame { animation: photoBob 1.8s ease-in-out infinite; }

.ld-photo--sway-soft .ld-photo-orbit { animation: photoSway 3.6s ease-in-out infinite; }
.ld-photo--sway-soft .ld-photo-img { animation: photoKenBurns 6s ease-in-out infinite; }

.ld-photo--zoom-breathe .ld-photo-orbit { animation: photoZoom 3.4s ease-in-out infinite; }
.ld-photo--zoom-breathe .ld-photo-frame { animation: photoSpot 3.4s ease-in-out infinite; }

.ld-photo--flicker .ld-photo-orbit { animation: photoFlicker 2.4s ease-in-out infinite; }
.ld-photo--flicker .ld-photo-glow { animation: coupleGlowPulse 1.2s ease-in-out infinite; }

.ld-photo--glow-orbit .ld-photo-orbit { animation: photoSpin 12s linear infinite; }
.ld-photo--glow-orbit .ld-photo-frame { animation: photoSpot 2.5s ease-in-out infinite; }
.ld-photo--glow-orbit .ld-photo-img { animation: photoFace 12s linear infinite; }

/* ===== 3D / 4D perspective stage ===== */
.ld-photo--fx3d {
  perspective: 920px;
  perspective-origin: 50% 42%;
  transform-style: preserve-3d;
}
.ld-photo--fx3d .ld-photo-orbit,
.ld-photo--fx3d .ld-photo-frame {
  transform-style: preserve-3d;
}
.ld-photo--fx3d .ld-photo-frame {
  backface-visibility: hidden;
}
.ld-photo-depth {
  position: absolute;
  left: 50%; top: 48%;
  width: 200px; height: 200px;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  background:
    radial-gradient(circle, rgba(201,162,39,.18), transparent 62%),
    radial-gradient(circle at 30% 30%, rgba(255,255,255,.06), transparent 55%);
  filter: blur(8px);
  pointer-events: none;
  z-index: 0;
  animation: depthPulse 3.2s ease-in-out infinite;
}
@keyframes depthPulse {
  0%, 100% { opacity: .45; transform: translate(-50%, -50%) scale(.9); }
  50% { opacity: .9; transform: translate(-50%, -50%) scale(1.15); }
}
.ld-photo-sweep {
  position: absolute;
  inset: -20%;
  background: linear-gradient(
    115deg,
    transparent 35%,
    rgba(255, 245, 200, .28) 48%,
    transparent 62%
  );
  transform: translateX(-120%) skewX(-18deg);
  pointer-events: none;
  z-index: 3;
  opacity: 0;
}
.ld-photo--light-sweep .ld-photo-sweep,
.ld-photo--hologram .ld-photo-sweep {
  animation: lightSweep 2.8s ease-in-out infinite;
  opacity: 1;
}
@keyframes lightSweep {
  0%, 15% { transform: translateX(-130%) skewX(-18deg); opacity: 0; }
  35% { opacity: .85; }
  55%, 100% { transform: translateX(130%) skewX(-18deg); opacity: 0; }
}

.ld-photo--orbit-y .ld-photo-orbit { animation: orbitY 5.5s linear infinite; }
.ld-photo--orbit-y .ld-photo-img { animation: orbitYFace 5.5s linear infinite; }
@keyframes orbitY {
  from { transform: rotateY(0deg) translateZ(18px); }
  to { transform: rotateY(360deg) translateZ(18px); }
}
@keyframes orbitYFace {
  from { transform: rotateY(0deg) scale(1.06); }
  to { transform: rotateY(-360deg) scale(1.06); }
}

.ld-photo--orbit-x .ld-photo-orbit { animation: orbitX 6.2s linear infinite; }
.ld-photo--orbit-x .ld-photo-frame { animation: photoBob 2s ease-in-out infinite; }
@keyframes orbitX {
  from { transform: rotateX(0deg) translateZ(14px); }
  to { transform: rotateX(360deg) translateZ(14px); }
}

.ld-photo--flip-3d .ld-photo-orbit { animation: flip3d 4.2s ease-in-out infinite; }
.ld-photo--flip-3d .ld-photo-frame { animation: photoSpot 2.1s ease-in-out infinite; }
@keyframes flip3d {
  0%, 12% { transform: rotateY(0deg) scale(1); }
  45%, 55% { transform: rotateY(180deg) scale(1.04); }
  88%, 100% { transform: rotateY(360deg) scale(1); }
}

.ld-photo--tumble-3d .ld-photo-orbit { animation: tumble3d 5.8s linear infinite; }
.ld-photo--tumble-3d .ld-photo-img { animation: tumbleFace 5.8s linear infinite; }
@keyframes tumble3d {
  0% { transform: rotateX(0deg) rotateY(0deg) translateZ(12px); }
  50% { transform: rotateX(180deg) rotateY(180deg) translateZ(22px); }
  100% { transform: rotateX(360deg) rotateY(360deg) translateZ(12px); }
}
@keyframes tumbleFace {
  0% { transform: rotateX(0deg) rotateY(0deg) scale(1.05); }
  50% { transform: rotateX(-180deg) rotateY(-180deg) scale(1.08); }
  100% { transform: rotateX(-360deg) rotateY(-360deg) scale(1.05); }
}

.ld-photo--tilt-parallax .ld-photo-orbit { animation: tiltParallax 4.6s ease-in-out infinite; }
.ld-photo--tilt-parallax .ld-photo-img { animation: photoKenBurns 6s ease-in-out infinite; }
@keyframes tiltParallax {
  0%, 100% { transform: rotateX(8deg) rotateY(-14deg) translateZ(10px); }
  50% { transform: rotateX(-6deg) rotateY(14deg) translateZ(24px); }
}

.ld-photo--hologram .ld-photo-orbit { animation: holoFloat 3.4s ease-in-out infinite; }
.ld-photo--hologram .ld-photo-img { animation: holoScan 2.2s linear infinite; }
.ld-photo--hologram .ld-photo-frame {
  box-shadow:
    0 0 0 1px rgba(240, 224, 160, .45) inset,
    0 0 0 4px rgba(201, 162, 39, .25),
    0 0 40px rgba(120, 200, 255, .25),
    0 14px 32px rgba(0, 0, 0, .55) !important;
}
@keyframes holoFloat {
  0%, 100% { transform: translateY(0) rotateY(-8deg) translateZ(8px); }
  50% { transform: translateY(-10px) rotateY(8deg) translateZ(20px); }
}
@keyframes holoScan {
  0%, 100% { filter: contrast(1.08) saturate(1.1) brightness(1); }
  33% { filter: contrast(1.18) saturate(1.25) brightness(1.12); }
  66% { filter: contrast(1.05) saturate(.95) brightness(.94); }
}

.ld-photo--depth-zoom .ld-photo-orbit { animation: depthZoom 3.8s ease-in-out infinite; }
.ld-photo--depth-zoom .ld-photo-frame { animation: photoSpot 3.8s ease-in-out infinite; }
@keyframes depthZoom {
  0%, 100% { transform: translateZ(0) scale(.92); }
  50% { transform: translateZ(48px) scale(1.08); }
}

.ld-photo--cube-spin .ld-photo-orbit { animation: cubeSpin 6s linear infinite; }
.ld-photo--cube-spin .ld-photo-img { animation: cubeFace 6s linear infinite; }
@keyframes cubeSpin {
  from { transform: rotateX(12deg) rotateY(0deg) translateZ(16px); }
  to { transform: rotateX(12deg) rotateY(360deg) translateZ(16px); }
}
@keyframes cubeFace {
  from { transform: rotateY(0deg) scale(1.05); }
  to { transform: rotateY(-360deg) scale(1.05); }
}

.ld-photo--light-sweep .ld-photo-orbit { animation: photoPulse 2.8s ease-in-out infinite; }
.ld-photo--light-sweep .ld-photo-frame { animation: photoSpot 2.8s ease-in-out infinite; }

.ld-photo--levitate .ld-photo-orbit { animation: levitate3d 3.6s ease-in-out infinite; }
.ld-photo--levitate .ld-photo-frame { animation: photoBob 1.8s ease-in-out infinite; }
@keyframes levitate3d {
  0%, 100% { transform: translateY(8px) rotateX(4deg) translateZ(0); }
  50% { transform: translateY(-16px) rotateX(-2deg) translateZ(28px); }
}

.ld-photo--pendulum .ld-photo-orbit {
  animation: pendulum3d 3.2s ease-in-out infinite;
  transform-origin: 50% 0%;
}
@keyframes pendulum3d {
  0%, 100% { transform: rotateZ(-12deg) rotateY(-6deg); }
  50% { transform: rotateZ(12deg) rotateY(6deg); }
}

.ld-photo--sphere-roll .ld-photo-orbit { animation: sphereRoll 4.8s linear infinite; }
.ld-photo--sphere-roll .ld-photo-frame {
  border-radius: 50% !important;
  animation: photoSpot 2.4s ease-in-out infinite;
}
.ld-photo--sphere-roll .ld-photo-frame::after { border-radius: 50% !important; }
.ld-photo--sphere-roll .ld-photo-img {
  border-radius: 50% !important;
  animation: photoFace 4.8s linear infinite;
}
@keyframes sphereRoll {
  from { transform: rotate(0deg) rotateY(0deg) translateZ(10px); }
  to { transform: rotate(360deg) rotateY(360deg) translateZ(10px); }
}

.ld-photo--wave-3d .ld-photo-orbit { animation: wave3d 3.4s ease-in-out infinite; }
.ld-photo--wave-3d .ld-photo-img { animation: photoKenBurns 5.5s ease-in-out infinite; }
@keyframes wave3d {
  0%, 100% { transform: rotateX(0deg) rotateY(-10deg) translateX(-8px) translateZ(6px); }
  25% { transform: rotateX(6deg) rotateY(0deg) translateX(0) translateZ(18px); }
  50% { transform: rotateX(0deg) rotateY(10deg) translateX(8px) translateZ(6px); }
  75% { transform: rotateX(-6deg) rotateY(0deg) translateX(0) translateZ(18px); }
}

.page-loader.is-couple-cinema .ld-photo--orbit-y .ld-photo-orbit,
.page-loader.is-couple-cinema .ld-photo--orbit-x .ld-photo-orbit,
.page-loader.is-couple-cinema .ld-photo--flip-3d .ld-photo-orbit,
.page-loader.is-couple-cinema .ld-photo--tumble-3d .ld-photo-orbit,
.page-loader.is-couple-cinema .ld-photo--tilt-parallax .ld-photo-orbit,
.page-loader.is-couple-cinema .ld-photo--cube-spin .ld-photo-orbit,
.page-loader.is-couple-cinema .ld-photo--sphere-roll .ld-photo-orbit,
.page-loader.is-couple-cinema .ld-photo--wave-3d .ld-photo-orbit,
.page-loader.is-couple-cinema .ld-photo--depth-zoom .ld-photo-orbit,
.page-loader.is-couple-cinema .ld-photo--levitate .ld-photo-orbit,
.page-loader.is-couple-cinema .ld-photo--pendulum .ld-photo-orbit,
.page-loader.is-couple-cinema .ld-photo--hologram .ld-photo-orbit,
.page-loader.is-couple-cinema .ld-photo--light-sweep .ld-photo-orbit {
  width: min(42vw, 280px);
  height: min(52vw, 340px);
}

.loader-preview .ld-photo-depth { width: 90px; height: 90px; filter: blur(4px); }
.loader-preview .ld-photo--sphere-roll .ld-photo-frame,
.loader-preview .ld-photo--sphere-roll .ld-photo-img { border-radius: 50% !important; }
.loader-preview .ld-photo--fx3d { perspective: 520px; }

@keyframes photoSpin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
@keyframes photoFace {
  from { transform: rotate(0deg) scale(1.05); }
  to { transform: rotate(-360deg) scale(1.05); }
}
@keyframes photoBob {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-8px) scale(1.03); }
}
@keyframes photoDip {
  0%, 100% { transform: rotate(0deg) translateY(0); }
  40% { transform: rotate(-8deg) translateY(4px); }
  55% { transform: rotate(6deg) translateY(-2px); }
}
@keyframes photoSpot {
  0%, 100% {
    transform: scale(1);
    box-shadow: 0 0 0 2px rgba(201,162,39,.4), 0 0 36px rgba(201,162,39,.25), 0 18px 36px rgba(0,0,0,.55);
  }
  50% {
    transform: scale(1.05);
    box-shadow: 0 0 0 3px rgba(240,224,160,.75), 0 0 55px rgba(201,162,39,.55), 0 18px 36px rgba(0,0,0,.55);
  }
}
@keyframes photoCelebrate {
  0%, 100% { transform: translateY(0) scale(1) rotate(0); }
  25% { transform: translateY(-6px) scale(1.04) rotate(-3deg); }
  50% { transform: translateY(-10px) scale(1.06) rotate(0); }
  75% { transform: translateY(-6px) scale(1.04) rotate(3deg); }
}
@keyframes photoPulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.06); }
}
@keyframes photoFloat {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-14px); }
}
@keyframes photoSway {
  0%, 100% { transform: rotate(-6deg) translateX(-6px); }
  50% { transform: rotate(6deg) translateX(6px); }
}
@keyframes photoKenBurns {
  0%, 100% { transform: scale(1.05) translate(0, 0); }
  50% { transform: scale(1.14) translate(-2%, -1%); }
}
@keyframes photoZoom {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.08); }
}
@keyframes photoFlicker {
  0%, 100% { transform: scale(1); filter: brightness(1); }
  40% { transform: scale(1.02); filter: brightness(1.12); }
  55% { transform: scale(1.01); filter: brightness(.92); }
  70% { transform: scale(1.03); filter: brightness(1.08); }
}

.loader-preview .ld-photo { height: 132px; width: 150px; }
.loader-preview .ld-photo-orbit { width: 110px; height: 110px; }
.loader-preview .ld-photo-glow { width: 100px; height: 80px; }
.loader-preview .couple-petals { display: none; }
.loader-preview .ld-photo-sparkles i:nth-child(n+5) { display: none; }
.loader-preview .ld-photo--soft .ld-photo-frame { border-radius: 14px; }

/* legacy css drawings (unused if photo assets present) */
/* Kına tepsisi */
.ld-tray { position: relative; width: 100px; height: 90px; margin: 0 auto; }
.ld-tray-bowl {
  display: block; width: 70px; height: 28px; margin: 40px auto 0;
  border: 2px solid currentColor; border-radius: 50%;
  box-shadow: inset 0 10px 0 rgba(201,162,39,.25);
  animation: traySpin 2.5s linear infinite;
  transform-origin: center;
}
.ld-tray-steam, .ld-tray-steam.s2 {
  position: absolute; left: 50%; bottom: 55px; width: 8px; height: 24px;
  border-radius: 50%;
  background: linear-gradient(transparent, currentColor);
  opacity: .35;
  animation: steam 1.8s ease-in-out infinite;
}
.ld-tray-steam.s2 { left: 42%; animation-delay: .4s; height: 30px; }
@keyframes traySpin {
  from { transform: rotateY(0); }
  to { transform: rotateY(360deg); }
}
@keyframes steam {
  0% { transform: translate(-50%, 6px) scaleX(.6); opacity: 0; }
  40% { opacity: .4; }
  100% { transform: translate(-50%, -28px) scaleX(1.2); opacity: 0; }
}

/* Kına eli */
.ld-hand { color: var(--gold); animation: handGlow 2s ease-in-out infinite; }
@keyframes handGlow {
  0%, 100% { transform: scale(1); filter: drop-shadow(0 0 0 transparent); }
  50% { transform: scale(1.04); filter: drop-shadow(0 0 12px rgba(201,162,39,.45)); }
}

/* Hearts */
.ld-hearts { position: relative; height: 110px; width: 140px; margin: 0 auto; }
.ld-hearts i {
  position: absolute; width: 16px; height: 16px;
  background: var(--gold);
  transform: rotate(45deg);
  animation: heartFloat 2.4s ease-in-out infinite;
  opacity: .85;
}
.ld-hearts i::before, .ld-hearts i::after {
  content: ''; position: absolute; width: 16px; height: 16px;
  background: inherit; border-radius: 50%;
}
.ld-hearts i::before { left: -8px; top: 0; }
.ld-hearts i::after { left: 0; top: -8px; }
.ld-hearts i:nth-child(1) { left: 60px; bottom: 10px; animation-delay: 0s; }
.ld-hearts i:nth-child(2) { left: 30px; bottom: 20px; animation-delay: .3s; width: 12px; height: 12px; }
.ld-hearts i:nth-child(3) { left: 95px; bottom: 25px; animation-delay: .5s; }
.ld-hearts i:nth-child(4) { left: 50px; bottom: 40px; animation-delay: .7s; width: 10px; height: 10px; }
.ld-hearts i:nth-child(5) { left: 80px; bottom: 35px; animation-delay: .2s; width: 11px; height: 11px; }
@keyframes heartFloat {
  0% { transform: rotate(45deg) translateY(10px); opacity: 0; }
  30% { opacity: .9; }
  100% { transform: rotate(45deg) translateY(-70px); opacity: 0; }
}

/* Rings */
.ld-rings { position: relative; width: 100px; height: 80px; margin: 0 auto; }
.ld-rings span {
  position: absolute; top: 20px; width: 46px; height: 46px;
  border: 3px solid currentColor; border-radius: 50%;
}
.ld-rings span:first-child { left: 18px; animation: ringL 1.8s ease-in-out infinite; }
.ld-rings span:last-of-type { right: 18px; animation: ringR 1.8s ease-in-out infinite; }
.ld-rings em {
  position: absolute; left: 50%; top: 12px; width: 8px; height: 8px;
  margin-left: -4px; border-radius: 50%;
  background: var(--gold-light);
  animation: ringSpark 1.8s ease-in-out infinite;
}
@keyframes ringL {
  0%, 100% { transform: translateX(0) rotate(-10deg); }
  50% { transform: translateX(8px) rotate(8deg); }
}
@keyframes ringR {
  0%, 100% { transform: translateX(0) rotate(10deg); }
  50% { transform: translateX(-8px) rotate(-8deg); }
}
@keyframes ringSpark {
  0%, 100% { opacity: .2; transform: scale(.6); }
  50% { opacity: 1; transform: scale(1.4); }
}

/* Veil */
.ld-veil { height: 100px; position: relative; width: 160px; margin: 0 auto; }
.ld-veil i {
  position: absolute; top: 10px; left: 50%;
  width: 2px; height: 80px;
  background: linear-gradient(currentColor, transparent);
  transform-origin: top center;
  opacity: .55;
}
.ld-veil i:nth-child(1) { animation: veilWave 2s ease-in-out infinite; margin-left: -30px; }
.ld-veil i:nth-child(2) { animation: veilWave 2s ease-in-out infinite .2s; width: 3px; height: 90px; }
.ld-veil i:nth-child(3) { animation: veilWave 2s ease-in-out infinite .4s; margin-left: 28px; }
@keyframes veilWave {
  0%, 100% { transform: rotate(-18deg); }
  50% { transform: rotate(18deg); }
}

/* Curtains */
.ld-curtains { position: relative; width: 200px; height: 100px; margin: 0 auto; overflow: hidden; }
.ld-c {
  position: absolute; top: 0; bottom: 0; width: 52%;
  background: linear-gradient(90deg, var(--burgundy, #5c1828), color-mix(in srgb, var(--burgundy, #5c1828) 70%, #000));
}
.ld-c.left { left: 0; animation: curtainL 2.2s ease-in-out infinite; transform-origin: left; }
.ld-c.right { right: 0; animation: curtainR 2.2s ease-in-out infinite; transform-origin: right; }
.ld-spotlight {
  position: absolute; left: 50%; top: 20%; width: 40px; height: 40px; margin-left: -20px;
  border-radius: 50%;
  background: radial-gradient(circle, var(--gold-light), transparent 70%);
  animation: spotPulse 2.2s ease-in-out infinite;
}
@keyframes curtainL {
  0%, 100% { transform: scaleX(1); }
  50% { transform: scaleX(.35); }
}
@keyframes curtainR {
  0%, 100% { transform: scaleX(1); }
  50% { transform: scaleX(.35); }
}
@keyframes spotPulse {
  0%, 100% { opacity: .3; transform: scale(.8); }
  50% { opacity: 1; transform: scale(1.3); }
}

/* Candles */
.ld-candles { display: flex; gap: 18px; justify-content: center; align-items: flex-end; height: 90px; }
.ld-candles span {
  width: 10px; height: 42px;
  background: linear-gradient(#f4ebe1, #c9a227);
  border-radius: 2px 2px 0 0;
  position: relative;
}
.ld-candles span::after {
  content: '';
  position: absolute; left: 50%; bottom: 100%;
  width: 10px; height: 16px; margin-left: -5px;
  background: radial-gradient(ellipse, #ffe9a0, #e8a020 50%, transparent 70%);
  border-radius: 50% 50% 40% 40%;
  animation: candleFlicker 0.8s ease-in-out infinite alternate;
}
.ld-candles span:nth-child(2) { height: 54px; }
.ld-candles span:nth-child(2)::after { animation-delay: .2s; }
.ld-candles span:nth-child(3)::after { animation-delay: .35s; }
@keyframes candleFlicker {
  from { transform: scaleY(1) scaleX(.9); opacity: .85; }
  to { transform: scaleY(1.2) scaleX(1.1); opacity: 1; }
}

/* Confetti */
.ld-confetti { position: relative; width: 180px; height: 110px; margin: 0 auto; overflow: hidden; }
.ld-confetti i {
  position: absolute; top: -10px; width: 6px; height: 10px;
  background: var(--gold);
  animation: confettiFall 2s linear infinite;
  opacity: .85;
}
.ld-confetti i:nth-child(odd) { background: var(--gold-light); width: 5px; height: 5px; border-radius: 50%; }
.ld-confetti i:nth-child(1) { left: 8%; animation-delay: 0s; }
.ld-confetti i:nth-child(2) { left: 18%; animation-delay: .2s; }
.ld-confetti i:nth-child(3) { left: 28%; animation-delay: .1s; }
.ld-confetti i:nth-child(4) { left: 38%; animation-delay: .4s; }
.ld-confetti i:nth-child(5) { left: 48%; animation-delay: .15s; }
.ld-confetti i:nth-child(6) { left: 58%; animation-delay: .35s; }
.ld-confetti i:nth-child(7) { left: 68%; animation-delay: .05s; }
.ld-confetti i:nth-child(8) { left: 78%; animation-delay: .25s; }
.ld-confetti i:nth-child(9) { left: 88%; animation-delay: .45s; }
.ld-confetti i:nth-child(10) { left: 12%; animation-delay: .55s; }
.ld-confetti i:nth-child(11) { left: 32%; animation-delay: .65s; }
.ld-confetti i:nth-child(12) { left: 52%; animation-delay: .3s; }
.ld-confetti i:nth-child(13) { left: 72%; animation-delay: .5s; }
.ld-confetti i:nth-child(14) { left: 22%; animation-delay: .7s; }
.ld-confetti i:nth-child(15) { left: 42%; animation-delay: .18s; }
.ld-confetti i:nth-child(16) { left: 62%; animation-delay: .42s; }
.ld-confetti i:nth-child(17) { left: 82%; animation-delay: .28s; }
.ld-confetti i:nth-child(18) { left: 55%; animation-delay: .6s; }
@keyframes confettiFall {
  0% { transform: translateY(0) rotate(0); opacity: 0; }
  10% { opacity: 1; }
  100% { transform: translateY(120px) rotate(280deg); opacity: 0; }
}

/* Mandala */
.ld-mandala { position: relative; width: 100px; height: 100px; margin: 0 auto; }
.ld-mandala span {
  position: absolute; inset: 0;
  border: 1.5px solid currentColor;
  border-radius: 50%;
  animation: mandalaSpin 6s linear infinite;
}
.ld-mandala span:nth-child(2) { inset: 14px; animation-duration: 4s; animation-direction: reverse; border-style: dashed; }
.ld-mandala span:nth-child(3) { inset: 28px; animation-duration: 3s; }
@keyframes mandalaSpin {
  from { transform: rotate(0); }
  to { transform: rotate(360deg); }
}

/* Notes */
.ld-notes { display: flex; gap: 14px; justify-content: center; height: 80px; align-items: flex-end; color: var(--gold-light); font-size: 1.8rem; }
.ld-notes i { display: block; animation: noteBounce 1.2s ease-in-out infinite; font-style: normal; }
.ld-notes i:nth-child(2) { animation-delay: .15s; }
.ld-notes i:nth-child(3) { animation-delay: .3s; }
.ld-notes i:nth-child(4) { animation-delay: .45s; }
@keyframes noteBounce {
  0%, 100% { transform: translateY(0) scale(1); opacity: .5; }
  50% { transform: translateY(-18px) scale(1.15); opacity: 1; }
}

/* Sparkle champagne */
.ld-sparkle { position: relative; width: 120px; height: 100px; margin: 0 auto; }
.ld-sparkle em {
  position: absolute; left: 50%; bottom: 10px; width: 18px; height: 50px; margin-left: -9px;
  background: linear-gradient(var(--gold-light), var(--gold));
  border-radius: 4px 4px 2px 2px;
  clip-path: polygon(20% 0, 80% 0, 100% 100%, 0 100%);
}
.ld-sparkle i {
  position: absolute; bottom: 55px; left: 50%; width: 4px; height: 4px;
  background: var(--gold-light); border-radius: 50%;
  animation: bubbleUp 1.6s ease-in-out infinite;
}
.ld-sparkle i:nth-child(2) { margin-left: -12px; animation-delay: .2s; }
.ld-sparkle i:nth-child(3) { margin-left: 8px; animation-delay: .35s; }
.ld-sparkle i:nth-child(4) { margin-left: -4px; animation-delay: .5s; }
.ld-sparkle i:nth-child(5) { margin-left: 14px; animation-delay: .15s; }
.ld-sparkle i:nth-child(n+6) { animation-delay: calc((var(--i, 1)) * .1s); }
.ld-sparkle i:nth-child(6) { margin-left: -18px; }
.ld-sparkle i:nth-child(7) { margin-left: 2px; }
.ld-sparkle i:nth-child(8) { margin-left: -8px; }
.ld-sparkle i:nth-child(9) { margin-left: 18px; }
.ld-sparkle i:nth-child(10) { margin-left: -2px; }
.ld-sparkle i:nth-child(11) { margin-left: 10px; }
.ld-sparkle i:nth-child(12) { margin-left: -14px; }
.ld-sparkle i:nth-child(13) { margin-left: 6px; }
@keyframes bubbleUp {
  0% { transform: translate(-50%, 0); opacity: 0; }
  30% { opacity: 1; }
  100% { transform: translate(-50%, -50px); opacity: 0; }
}

/* Moon */
.ld-moon { position: relative; width: 120px; height: 100px; margin: 0 auto; }
.ld-moon .moon {
  display: block; width: 48px; height: 48px; margin: 20px auto 0;
  border-radius: 50%;
  box-shadow: 12px -4px 0 0 var(--gold-light);
  animation: moonGlow 2.5s ease-in-out infinite;
}
.ld-moon i {
  position: absolute; width: 3px; height: 3px; background: var(--gold);
  border-radius: 50%;
  animation: starTwinkle 1.5s ease-in-out infinite;
}
.ld-moon i:nth-child(2) { top: 18px; left: 20px; }
.ld-moon i:nth-child(3) { top: 30px; right: 22px; animation-delay: .3s; }
.ld-moon i:nth-child(4) { bottom: 20px; left: 28px; animation-delay: .5s; }
.ld-moon i:nth-child(5) { top: 22px; left: 55%; animation-delay: .7s; }
@keyframes moonGlow {
  0%, 100% { filter: drop-shadow(0 0 4px rgba(232,212,139,.3)); }
  50% { filter: drop-shadow(0 0 14px rgba(232,212,139,.7)); }
}
@keyframes starTwinkle {
  0%, 100% { opacity: .2; transform: scale(.6); }
  50% { opacity: 1; transform: scale(1.4); }
}

/* Roses */
.ld-roses { display: flex; gap: 10px; justify-content: center; height: 90px; align-items: center; color: var(--gold); font-size: 1.6rem; }
.ld-roses i { animation: roseSpin 2.5s ease-in-out infinite; font-style: normal; display: inline-block; }
.ld-roses i:nth-child(2) { animation-delay: .2s; font-size: 2rem; }
.ld-roses i:nth-child(3) { animation-delay: .4s; }
.ld-roses i:nth-child(4) { animation-delay: .1s; }
.ld-roses i:nth-child(5) { animation-delay: .35s; }
@keyframes roseSpin {
  0%, 100% { transform: translateY(8px) rotate(-12deg); opacity: .5; }
  50% { transform: translateY(-10px) rotate(12deg); opacity: 1; }
}

/* Mirror ball */
.ld-ball { height: 100px; display: grid; place-items: center; }
.ld-ball span {
  width: 56px; height: 56px; border-radius: 50%;
  background:
    repeating-conic-gradient(from 0deg, var(--gold) 0 12deg, transparent 12deg 24deg),
    radial-gradient(circle at 30% 30%, #fff8, transparent 50%),
    #3a2a10;
  animation: ballSpin 2s linear infinite, ballBob 1.5s ease-in-out infinite;
  box-shadow: 0 0 24px rgba(201,162,39,.35);
}
@keyframes ballSpin { to { transform: rotate(360deg); } }
@keyframes ballBob {
  0%, 100% { margin-top: 0; }
  50% { margin-top: -8px; }
}

/* Script */
.ld-script {
  font-family: 'Great Vibes', cursive;
  font-size: clamp(1.8rem, 5vw, 2.6rem);
  color: var(--gold-light);
  animation: scriptWrite 2.2s ease-in-out infinite;
  letter-spacing: .04em;
}
@keyframes scriptWrite {
  0%, 100% { opacity: .35; letter-spacing: .02em; }
  50% { opacity: 1; letter-spacing: .08em; }
}

/* Stage lights */
.ld-spots { position: relative; width: 180px; height: 90px; margin: 0 auto; }
.ld-spots i {
  position: absolute; top: 0; width: 2px; height: 70px;
  background: linear-gradient(var(--gold-light), transparent);
  transform-origin: top center;
  opacity: .55;
  animation: spotSweep 2s ease-in-out infinite;
}
.ld-spots i:nth-child(1) { left: 20%; animation-delay: 0s; }
.ld-spots i:nth-child(2) { left: 35%; animation-delay: .15s; }
.ld-spots i:nth-child(3) { left: 50%; animation-delay: .3s; }
.ld-spots i:nth-child(4) { left: 65%; animation-delay: .45s; }
.ld-spots i:nth-child(5) { left: 80%; animation-delay: .6s; }
@keyframes spotSweep {
  0%, 100% { transform: rotate(-12deg); opacity: .3; }
  50% { transform: rotate(12deg); opacity: .9; }
}

/* Admin live preview tiles (not full-screen) */
.page-loader.is-preview,
.loader-preview {
  position: relative !important;
  inset: auto !important;
  z-index: 1 !important;
  width: 100%;
  height: 148px;
  display: grid;
  place-items: center;
  overflow: hidden;
  background: #0a0406;
  color: var(--gold, #c9a227);
  pointer-events: none;
  transition: none;
  opacity: 1 !important;
  visibility: visible !important;
}
.loader-preview .loader-stage {
  transform: scale(.68);
  transform-origin: center center;
  min-width: 0;
}
.loader-preview .ld-couple { height: 130px; }
.loader-preview .ld-script { font-size: 1.35rem; white-space: nowrap; }
.loader-preview .ld-curtains { width: 160px; height: 80px; }
.loader-preview .ld-confetti { width: 150px; height: 90px; }
.loader-preview .ld-spots { width: 150px; height: 70px; }
