.revLaunchLock {overflow: hidden;}

.revLaunchCelebration {position: fixed; z-index: 10050; inset: 0; display: none; align-items: center; justify-content: center; padding: 20px;}
.revLaunchCelebration.is-visible {display: flex;}

.revLaunchBackdrop {position: absolute; inset: 0; background:
    radial-gradient(circle at 20% 20%, rgba(59, 130, 246, 0.22), transparent 45%),
    radial-gradient(circle at 80% 15%, rgba(14, 165, 233, 0.18), transparent 50%),
    rgba(15, 23, 42, 0.52); backdrop-filter: blur(4px); opacity: 0; transition: opacity 0.35s ease; z-index: 1;}

.revLaunchCelebration.is-visible .revLaunchBackdrop {opacity: 1;}

.revLaunchFireworks {position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; opacity: 0; transition: opacity 0.3s ease; z-index: 8;}
.revLaunchCelebration.is-visible .revLaunchFireworks {opacity: 1;}

.revLaunchSprinkles {position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: 3;}
.revSprinkle {position: absolute; left: 0; top: 0; border-radius: 2px; opacity: 0; width: var(--size, 6px); height: var(--size, 6px); background: hsl(var(--hue, 200), 95%, 62%); box-shadow: 0 0 10px hsla(var(--hue, 200), 96%, 68%, 0.85); transform: translate(-50%, -50%) scale(0.2) rotate(0deg); animation: revSprinklePop var(--dur, 980ms) cubic-bezier(0.15, 0.75, 0.22, 1) forwards; animation-delay: var(--delay, 0ms);}

@keyframes revSprinklePop {
    0% {opacity: 0; transform: translate(-50%, -50%) scale(0.2) rotate(0deg);}
    12% {opacity: 1;}
    100% {opacity: 0; transform: translate(calc(-50% + var(--dx, 0px)), calc(-50% + var(--dy, 0px))) scale(1) rotate(var(--rot, 120deg));}
}

.revLaunchCard {position: relative; z-index: 6; width: min(92vw, 430px); border-radius: 28px; border: 1px solid rgba(148, 163, 184, 0.22); background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%); box-shadow: 0 20px 56px rgba(15, 23, 42, 0.28); padding: 30px 24px 22px; text-align: center; transform: translateY(16px) scale(0.96); opacity: 0; transition: opacity 0.4s ease, transform 0.4s cubic-bezier(0.2, 0.9, 0.2, 1);}
.revLaunchCard * {box-sizing: border-box;}

.revLaunchCelebration.is-visible .revLaunchCard {opacity: 1; transform: translateY(0) scale(1);}

.revLaunchCelebration.is-leaving .revLaunchBackdrop,
.revLaunchCelebration.is-leaving .revLaunchFireworks,
.revLaunchCelebration.is-leaving .revLaunchCard {opacity: 0;}

.revLaunchCelebration.is-leaving .revLaunchCard {transform: translateY(10px) scale(0.98);}

.revLaunchBadge {display: inline-flex; align-items: center; justify-content: center; min-height: 28px; padding: 0 14px; border-radius: 999px; background: rgba(37, 99, 235, 0.1); color: #2563eb; font-size: 11px; font-weight: 700; letter-spacing: 0.08em;}

.revLaunchTitle {margin: 14px 0 0; color: #0f172a; font-size: clamp(24px, 4vw, 30px); font-weight: 800; line-height: 1.24; letter-spacing: -0.03em; word-break: keep-all; text-align: center;}

.revLaunchDesc {margin: 10px 0 0; color: #475569; font-size: 14px; line-height: 1.58; word-break: keep-all; text-align: center; text-wrap: balance;}

.revLaunchQuiz {margin-top: 12px; padding: 12px 12px 10px; border: 1px solid #dbeafe; border-radius: 16px; background: linear-gradient(180deg, #f8fbff 0%, #eef6ff 100%); text-align: center;}
.revLaunchQuizTitle {margin: 0 0 2px; color: #0f172a; font-size: 13px; font-weight: 700; text-align: center; line-height: 1.38;}
.revLaunchQuizQuestion {margin: 0; color: #334155; font-size: 13px; font-weight: 700; text-align: center; line-height: 1.42;}
.revLaunchQuizOptions {display: flex; flex-direction: column; gap: 6px; margin: 9px auto 0; width: 100%; max-width: 300px;}
.revLaunchQuizOption {position: relative; display: flex; align-items: center; column-gap: 0; min-height: 34px; padding: 7px 10px; border: 1px solid #dbeafe; border-radius: 10px; background: #fff; color: #1e293b; font-size: 13px; font-weight: 600; cursor: pointer; transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.12s ease; text-align: left;}
.revLaunchQuizOption:hover {border-color: #60a5fa; transform: translateY(-1px); box-shadow: 0 6px 14px rgba(59, 130, 246, 0.13);}
.revLaunchCelebration .revLaunchQuizOption > input[type="radio"] {position: absolute !important; left: -9999px !important; top: auto !important; display: none !important; width: 1px !important; height: 1px !important; min-width: 1px !important; min-height: 1px !important; margin: 0 !important; padding: 0 !important; opacity: 0 !important; pointer-events: none !important;}
.revLaunchQuizOption span {position: relative; display: block; width: 100%; padding-left: 22px; line-height: 1.34; color: #0f172a; font-weight: 700;}
.revLaunchQuizOption span::before {content: ''; position: absolute; left: 0; top: 50%; width: 14px; height: 14px; margin-top: -7px; border-radius: 50%; border: 2px solid #94a3b8; background: #fff; box-sizing: border-box;}
.revLaunchQuizOption span::after {content: ''; position: absolute; left: 4px; top: 50%; width: 6px; height: 6px; margin-top: -3px; border-radius: 50%; background: #2563eb; transform: scale(0); transition: transform 0.15s ease;}
.revLaunchQuizOption > input[type="radio"]:checked + span::before {border-color: #2563eb;}
.revLaunchQuizOption > input[type="radio"]:checked + span::after {transform: scale(1);}
.revLaunchQuizOption > input[type="radio"]:focus + span::before {box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.18);}
.revLaunchQuizSubmit {width: 100%; margin-top: 10px; min-height: 40px; font-size: 13px;}
.revLaunchQuizMessage {margin: 8px 0 0; font-size: 12px; line-height: 1.52; color: #64748b; min-height: 18px;}
.revLaunchQuizMessage a {color: #1d4ed8; text-decoration: underline;}
.revLaunchQuizMessage.is-success {color: #166534;}
.revLaunchQuizMessage.is-error {color: #b91c1c;}
.revLaunchQuizMessage.is-muted {color: #64748b;}
.revLaunchQuiz.is-complete .revLaunchQuizOption {opacity: 0.65; cursor: not-allowed;}

.revLaunchActions {display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 12px;}

.revLaunchBtn {display: inline-flex; align-items: center; justify-content: center; min-height: 46px; border-radius: 14px; border: 0; font-size: 14px; font-weight: 700; cursor: pointer; transition: transform 0.14s ease, box-shadow 0.2s ease, background-color 0.2s ease;}

.revLaunchBtn:active {transform: translateY(1px);}

.revLaunchBtnPrimary {background: linear-gradient(135deg, #2563eb, #3b82f6); color: #fff; box-shadow: 0 8px 20px rgba(37, 99, 235, 0.34);}
.revLaunchBtnPrimary:hover {background: linear-gradient(135deg, #1d4ed8, #2563eb);}

.revLaunchBtnGhost {background: #fff; border: 1px solid #dbe7ff; color: #2563eb;}
.revLaunchBtnGhost:hover {background: #f3f7ff;}

@media (max-width: 520px) {
    .revLaunchCelebration {padding: 16px;}
    .revLaunchCard {padding: 26px 18px 18px; border-radius: 22px;}
    .revLaunchActions {grid-template-columns: 1fr;}
    .revLaunchQuizOption {font-size: 12px; min-height: 32px; padding: 6px 9px;}
    .revLaunchQuizOption span {padding-left: 20px;}
    .revLaunchQuizOption span::before {width: 13px; height: 13px; margin-top: -6.5px;}
}

@media (prefers-reduced-motion: reduce) {
    .revLaunchBackdrop,
    .revLaunchFireworks,
    .revLaunchCard,
    .revLaunchBtn {transition: none !important;}
}
