/* Royal Ball (Signature Collection): the invite, the Royal decree pass, the gilded photo oval and Party TV.
   The opening film's styles live in film.css (loaded only when it plays). */
[data-theme="royal"] { --ry-rose: #9a3a59; --ry-gilt: #c9963b; --ry-gilt-hi: #efd9a6; }
[data-theme="royal"] .title, [data-theme="royal"] .card h2, [data-theme="royal"] .divider, [data-theme="royal"] .age-badge b { font-family: "Cinzel Decorative", "Cinzel", Georgia, serif; font-weight: 700; font-synthesis: none; }
[data-theme="royal"] .title { font-size: clamp(1.9rem, 8.2vw, 2.8rem); letter-spacing: .01em; text-shadow: 0 2px 0 rgba(255, 255, 255, .6); }
[data-theme="royal"] .eyebrow { color: var(--ry-rose); font-family: "Lato", sans-serif; font-weight: 900; letter-spacing: .14em; text-transform: uppercase; font-size: .78rem; }
[data-theme="royal"] .card { border-radius: 18px; box-shadow: var(--shadow), inset 0 0 0 1px var(--ry-gilt-hi), inset 0 0 0 5px var(--card), inset 0 0 0 6px #ead2a1; }
[data-theme="royal"] .card h2 { font-size: 1.2rem; }
[data-theme="royal"] .divider::before, [data-theme="royal"] .divider::after { height: 1px; opacity: 1; background: linear-gradient(90deg, transparent, var(--ry-gilt)); }
[data-theme="royal"] .divider::after { background: linear-gradient(90deg, var(--ry-gilt), transparent); }
[data-theme="royal"] .age-badge { background: radial-gradient(circle at 35% 30%, #fff4cf, #ebbc63 55%, #b8862f); box-shadow: 0 0 0 3px #fffaf0, 0 0 0 5px var(--ry-gilt), 0 8px 16px rgba(74, 26, 51, .2); }

/* the hero: candles flicker, crystals twinkle */
[data-theme="royal"] .hero-art .ry-flame { transform-box: fill-box; transform-origin: 50% 100%; animation: ryi-flick 1.8s ease-in-out infinite; animation-delay: calc(var(--i) * -.37s); }
[data-theme="royal"] .hero-art .ry-drop { animation: ryi-tw 2.6s ease-in-out infinite; animation-delay: calc(var(--i) * -.41s); }
@keyframes ryi-flick { 0%, 100% { transform: scale(1); } 40% { transform: scale(.85, 1.12); } 70% { transform: scale(1.05, .95); } }
@keyframes ryi-tw { 50% { opacity: .4; } }

/* the kid's photo: the Kid Photo hook's gold oval (theme.photo.frame "oval", public/static/shared/photo.css),
   crowned and ringed in gilt here. Sizing, crop and the host's own frame pick stay with the hook. */
[data-theme="royal"] .kp-oval { box-shadow: 0 0 0 2px #fffaf0, 0 0 0 3.5px var(--ry-gilt), 0 calc(var(--kp-w) * .05) calc(var(--kp-w) * .14) rgba(74, 26, 51, .25); }
[data-theme="royal"] .kp-oval::before { content: ""; position: absolute; left: 50%; top: calc(var(--kp-w) * -.2); width: calc(var(--kp-w) * .4); aspect-ratio: 80 / 56; translate: -50% 0; z-index: 1; pointer-events: none;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 56'%3E%3Cpath d='M6 46 L2 12 L22 30 L40 4 L58 30 L78 12 L74 46Z' fill='%23e2b858'/%3E%3Crect x='6' y='44' width='68' height='10' rx='3' fill='%23c9963b'/%3E%3Ccircle cx='40' cy='30' r='6' fill='%23e2627d'/%3E%3C/svg%3E") center / contain no-repeat; }

/* the pass: a Royal decree on parchment, sealed in rose wax */
[data-theme="royal"] .ticket { background: linear-gradient(180deg, #fffaf1, #f6e6d4); color: #3b192a; border-radius: 6px;
  box-shadow: 0 10px 22px rgba(74, 26, 51, .18), inset 0 0 0 2px #fffaf1, inset 0 0 0 3px var(--ry-gilt), inset 0 0 0 6px #fffaf1, inset 0 0 0 7px #ead2a1; }
[data-theme="royal"] .ticket .t-main { border-right: 1px solid #e3c79a; }
[data-theme="royal"] .ticket small { color: var(--ry-rose); font-family: "Cinzel", Georgia, serif; font-weight: 700; letter-spacing: .2em; }
[data-theme="royal"] .ticket b { font-family: "Cinzel Decorative", "Cinzel", Georgia, serif; font-weight: 700; color: #4a1a33; }
[data-theme="royal"] .ticket .t-stub { position: relative; }
[data-theme="royal"] .ticket .t-stub::after { content: ""; position: absolute; right: 10px; bottom: 10px; width: 30px; height: 30px; border-radius: 50%;
  background: radial-gradient(circle at 38% 34%, #f08aa2, #c8435f 55%, #8f2240); box-shadow: 0 2px 4px rgba(74, 26, 51, .3); }

/* Party TV: the ballroom, the name in Cinzel, a gilt rule */
[data-theme="royal"].tv-slide h1, [data-theme="royal"].tv-slide h2 { font-family: "Cinzel Decorative", "Cinzel", Georgia, serif; font-weight: 700; }
[data-theme="royal"].tv-slide h1::after { content: ""; display: block; width: min(420px, 50%); height: 2px; margin: 14px auto 0; background: linear-gradient(90deg, transparent, var(--ry-gilt, #c9963b), transparent); }
[data-theme="royal"].tv-slide .tv-big { font-family: "Cinzel", Georgia, serif; }

@media (prefers-reduced-motion: reduce) { [data-theme="royal"] .hero-art * { animation: none !important; } }
[data-theme="royal"] .sent h3 { font-family: "Lato", sans-serif; font-weight: 900; }
