/* Elvyler launch campaign page — Grimoire Noctis */

.coming-soon-page {
    position: relative;
    overflow: hidden;
    background:
        radial-gradient(circle at 16% 14%, rgba(139, 0, 0, 0.18), transparent 28rem),
        radial-gradient(circle at 84% 38%, rgba(247, 189, 72, 0.07), transparent 25rem),
        linear-gradient(180deg, #0b0b0b, var(--grim-background) 32%, #0b0b0b 100%);
}

.coming-soon-page::before {
    position: fixed;
    z-index: 0;
    inset: 0;
    background-image:
        repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.012) 0, rgba(255, 255, 255, 0.012) 1px, transparent 1px, transparent 7px),
        repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.006) 0, rgba(255, 255, 255, 0.006) 1px, transparent 1px, transparent 9px);
    content: "";
    pointer-events: none;
}

.coming-soon-hero,
.coming-soon-section,
.coming-soon-foundation,
.coming-soon-final {
    position: relative;
    z-index: 1;
}

.coming-soon-hero {
    min-height: calc(100svh - var(--grim-header-height));
    display: flex;
    align-items: center;
    isolation: isolate;
    overflow: hidden;
    padding: clamp(3.5rem, 7vw, 6.5rem) 0 clamp(4rem, 8vw, 7rem);
    background:
        radial-gradient(circle at 50% 15%, rgba(139, 0, 0, 0.32), transparent 30rem),
        linear-gradient(180deg, rgba(7, 7, 7, 0.15), rgba(7, 7, 7, 0.78) 72%, #0b0b0b 100%);
    border-bottom: 3px solid var(--grim-outline-variant);
    box-shadow: inset 0 -90px 100px rgba(0, 0, 0, 0.82);
}

.coming-soon-hero::before,
.coming-soon-hero::after {
    position: absolute;
    z-index: -1;
    content: "";
    pointer-events: none;
}

.coming-soon-hero::before {
    top: 5%;
    left: 50%;
    width: min(72rem, 92vw);
    height: min(37rem, 60vw);
    border: 1px solid rgba(170, 137, 132, 0.22);
    box-shadow:
        inset 0 0 0 1px rgba(247, 189, 72, 0.06),
        inset 0 0 100px rgba(139, 0, 0, 0.14),
        0 0 80px rgba(0, 0, 0, 0.88);
    clip-path: polygon(3rem 0, calc(100% - 3rem) 0, 100% 3rem, 100% calc(100% - 3rem), calc(100% - 3rem) 100%, 3rem 100%, 0 calc(100% - 3rem), 0 3rem);
    transform: translateX(-50%);
}

.coming-soon-hero::after {
    right: 0;
    bottom: 0;
    left: 0;
    height: 3px;
    background: linear-gradient(90deg, transparent, var(--grim-primary-container), var(--grim-secondary-container), var(--grim-primary-container), transparent);
    opacity: 0.75;
}

.coming-soon-hero__texture {
    position: absolute;
    z-index: -2;
    inset: 0;
    background:
        linear-gradient(90deg, rgba(0, 0, 0, 0.86), rgba(0, 0, 0, 0.28) 48%, rgba(0, 0, 0, 0.86)),
        radial-gradient(circle at 50% 10%, rgba(247, 189, 72, 0.09), transparent 22rem),
        repeating-radial-gradient(circle at 20% 20%, rgba(255, 255, 255, 0.016) 0 1px, transparent 1px 8px),
        #0e0e0e;
    opacity: 0.96;
}

.coming-soon-hero__rune {
    position: absolute;
    z-index: -1;
    top: 34%;
    width: clamp(9rem, 14vw, 16rem);
    opacity: 0.08;
    filter: grayscale(1) sepia(0.5) drop-shadow(0 0 22px rgba(139, 0, 0, 0.65));
}

.coming-soon-hero__rune img {
    width: 100%;
}

.coming-soon-hero__rune--left {
    left: clamp(-6rem, -3vw, -2rem);
    transform: rotate(-12deg);
}

.coming-soon-hero__rune--right {
    right: clamp(-6rem, -3vw, -2rem);
    transform: rotate(12deg);
}

.coming-soon-logo-wrap {
    position: relative;
    display: grid;
    width: min(64rem, 98vw);
    min-height: clamp(23rem, 46vw, 38rem);
    align-items: end;
    justify-items: center;
    margin: clamp(-2rem, -2vw, -0.5rem) auto clamp(0.5rem, 2vw, 1.5rem);
    isolation: isolate;
}

.coming-soon-logo-wrap::before {
    position: absolute;
    z-index: -2;
    top: 46%;
    left: 50%;
    width: min(48rem, 82vw);
    height: min(27rem, 48vw);
    background: radial-gradient(ellipse, rgba(247, 189, 72, 0.12), rgba(139, 0, 0, 0.08) 38%, transparent 72%);
    content: "";
    filter: blur(18px);
    pointer-events: none;
    transform: translate(-50%, -50%);
}

.coming-soon-door {
    position: absolute;
    z-index: -1;
    top: 0;
    left: 50%;
    width: clamp(21rem, 45vw, 35rem);
    height: auto;
    object-fit: contain;
    filter:
        saturate(0.9)
        contrast(1.04)
        drop-shadow(0 22px 34px rgba(0, 0, 0, 0.96))
        drop-shadow(0 0 18px rgba(247, 189, 72, 0.08));
    transform: translateX(-50%);
    transition: opacity 0.22s ease, filter 0.35s ease, transform 0.35s ease;
}

.coming-soon-door.is-switching {
    opacity: 0.2;
    transform: translateX(-50%) scale(0.985);
}

.coming-soon-page.is-maintenance .coming-soon-door {
    filter:
        saturate(0.98)
        contrast(1.08)
        drop-shadow(0 22px 34px rgba(0, 0, 0, 0.96))
        drop-shadow(0 0 24px rgba(247, 189, 72, 0.16));
}

.coming-soon-logo {
    position: relative;
    z-index: 1;
    width: min(56rem, 96vw);
    margin-bottom: clamp(0.25rem, 1vw, 0.9rem);
    filter:
        drop-shadow(0 20px 28px rgba(0, 0, 0, 0.98))
        drop-shadow(0 0 10px rgba(139, 0, 0, 0.34));
}

.coming-soon-hero__copy {
    max-width: 58rem;
    margin: 0 auto;
    text-align: center;
}

.coming-soon-kicker,
.coming-soon-launch-date,
.coming-soon-time-block span,
.coming-soon-countdown-status,
.coming-soon-feature-card__label,
.coming-soon-foundation__list dt,
.coming-soon-secondary-action {
    font-family: "JetBrains Mono", monospace;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}

.coming-soon-kicker {
    margin: 0 0 0.85rem;
    color: var(--grim-secondary);
    font-size: 0.72rem;
}

.coming-soon-title {
    max-width: 56rem;
    margin: 0 auto;
    color: var(--grim-primary-fixed);
    font-family: "Noto Serif", serif;
    font-size: clamp(2.55rem, 6.5vw, 5.3rem);
    font-weight: 700;
    line-height: 0.98;
    letter-spacing: -0.045em;
    text-wrap: balance;
    text-shadow: 0 10px 30px rgba(0, 0, 0, 0.95);
}

.coming-soon-lead {
    max-width: 48rem;
    margin: 1.5rem auto 0;
    color: var(--grim-on-surface);
    font-size: clamp(1.12rem, 2vw, 1.38rem);
    line-height: 1.6;
}

.coming-soon-lead strong {
    color: var(--grim-secondary);
    font-weight: 600;
}

.coming-soon-summary {
    max-width: 45rem;
    margin: 0.8rem auto 0;
    color: var(--grim-on-surface-variant);
    font-size: clamp(1rem, 1.5vw, 1.12rem);
    line-height: 1.7;
}

.coming-soon-countdown-shell {
    position: relative;
    max-width: 62rem;
    margin: clamp(2rem, 5vw, 3.5rem) auto 0;
    padding: clamp(1.25rem, 3vw, 2rem);
    background:
        linear-gradient(145deg, rgba(139, 0, 0, 0.22), transparent 48%),
        rgba(14, 14, 14, 0.94);
    border: 2px solid var(--grim-outline-variant);
    box-shadow:
        inset 0 0 0 1px rgba(247, 189, 72, 0.09),
        inset 0 -24px 50px rgba(0, 0, 0, 0.45),
        0 22px 44px rgba(0, 0, 0, 0.7);
    clip-path: polygon(1.2rem 0, calc(100% - 1.2rem) 0, 100% 1.2rem, 100% calc(100% - 1.2rem), calc(100% - 1.2rem) 100%, 1.2rem 100%, 0 calc(100% - 1.2rem), 0 1.2rem);
}

.coming-soon-countdown-shell::before {
    position: absolute;
    top: 0;
    right: 12%;
    left: 12%;
    height: 2px;
    background: linear-gradient(90deg, transparent, var(--grim-secondary), transparent);
    content: "";
}

.coming-soon-countdown-heading {
    display: flex;
    flex-wrap: wrap;
    align-items: end;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.35rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--grim-outline-variant);
}

.coming-soon-countdown-heading h2 {
    margin: 0;
    color: var(--grim-primary);
    font-family: "Noto Serif", serif;
    font-size: clamp(1.45rem, 3vw, 2.15rem);
    font-weight: 700;
    text-transform: uppercase;
}

.coming-soon-launch-date {
    color: var(--grim-tertiary);
    font-size: 0.68rem;
    text-align: right;
}

.coming-soon-countdown {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto minmax(0, 1fr) auto minmax(0, 1fr);
    gap: clamp(0.35rem, 1vw, 0.8rem);
    align-items: center;
}

.coming-soon-time-block {
    position: relative;
    min-width: 0;
    padding: clamp(0.85rem, 2.4vw, 1.4rem) 0.5rem;
    text-align: center;
    background:
        linear-gradient(180deg, rgba(53, 53, 52, 0.56), rgba(14, 14, 14, 0.92));
    border: 1px solid var(--grim-outline-variant);
    box-shadow: inset 0 0 20px rgba(0, 0, 0, 0.62);
}

.coming-soon-time-block::after {
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    height: 3px;
    background: var(--grim-primary-container);
    content: "";
}

.coming-soon-time-block strong {
    display: block;
    color: var(--grim-primary-fixed);
    font-family: "Noto Serif", serif;
    font-size: clamp(2rem, 6vw, 4.2rem);
    font-variant-numeric: tabular-nums;
    line-height: 0.95;
    text-shadow: 0 0 18px rgba(255, 180, 168, 0.14);
}

.coming-soon-time-block span {
    display: block;
    margin-top: 0.65rem;
    color: var(--grim-secondary);
    font-size: clamp(0.54rem, 1.1vw, 0.67rem);
}

.coming-soon-time-divider {
    color: var(--grim-outline);
    font-family: "Noto Serif", serif;
    font-size: clamp(1.8rem, 4vw, 3.4rem);
    line-height: 1;
}

.coming-soon-countdown-status {
    margin: 1.2rem 0 0;
    color: var(--grim-tertiary);
    font-size: 0.65rem;
    line-height: 1.55;
    text-align: center;
}

.coming-soon-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.8rem;
    margin-top: 1.75rem;
}

.coming-soon-actions .btn-subscribe,
.coming-soon-final .btn-subscribe {
    min-height: 3.2rem;
    padding-inline: 1.25rem;
}

.coming-soon-secondary-action {
    display: inline-flex;
    min-height: 3.2rem;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    padding: 0.8rem 1.1rem;
    color: var(--grim-on-surface-variant);
    background: rgba(14, 14, 14, 0.75);
    border: 1px solid var(--grim-outline-variant);
    font-size: 0.68rem;
    text-decoration: none;
    transition: color 0.2s ease, background 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}

.coming-soon-secondary-action:hover,
.coming-soon-secondary-action:focus-visible {
    color: var(--grim-on-surface);
    background: var(--grim-primary-container);
    border-color: var(--grim-primary);
    box-shadow: 0 0 14px rgba(255, 180, 168, 0.25);
}

.coming-soon-secondary-action .material-symbols-outlined {
    font-size: 1rem;
}

.coming-soon-section {
    padding: clamp(4rem, 8vw, 7rem) 0;
}

.coming-soon-section-heading {
    display: grid;
    grid-template-columns: minmax(0, 0.9fr) minmax(20rem, 0.7fr);
    gap: clamp(2rem, 7vw, 6rem);
    align-items: end;
    margin-bottom: clamp(2rem, 5vw, 3.5rem);
    padding-bottom: 1.25rem;
    border-bottom: 1px solid var(--grim-outline-variant);
}

.coming-soon-section-heading h2,
.coming-soon-foundation h2,
.coming-soon-final h2 {
    margin: 0;
    color: var(--grim-primary);
    font-family: "Noto Serif", serif;
    font-size: clamp(2rem, 4.5vw, 3.5rem);
    font-weight: 700;
    line-height: 1.04;
    letter-spacing: -0.03em;
    text-wrap: balance;
}

.coming-soon-section-heading > p {
    margin: 0;
    color: var(--grim-on-surface-variant);
    font-size: 1.05rem;
    line-height: 1.7;
}

.coming-soon-feature-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.5rem;
}

.coming-soon-feature-card {
    position: relative;
    min-height: 21rem;
    overflow: hidden;
    padding: clamp(1.4rem, 3vw, 2.2rem);
    background:
        linear-gradient(145deg, rgba(139, 0, 0, 0.19), transparent 54%),
        var(--grim-surface-low);
    border: 1px solid var(--grim-outline-variant);
    box-shadow:
        inset 0 0 0 1px rgba(247, 189, 72, 0.05),
        0 0 30px rgba(0, 0, 0, 0.54);
    transition: border-color 0.25s ease, box-shadow 0.25s ease, transform 0.25s ease;
}

.coming-soon-feature-card::before {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 4px;
    background: linear-gradient(180deg, var(--grim-secondary), var(--grim-primary-container));
    content: "";
}

.coming-soon-feature-card:hover {
    border-color: var(--grim-secondary-container);
    box-shadow:
        inset 0 0 0 1px rgba(247, 189, 72, 0.12),
        0 16px 36px rgba(0, 0, 0, 0.68);
    transform: translateY(-3px);
}

.coming-soon-feature-card__number {
    position: absolute;
    right: 0.8rem;
    bottom: -2.2rem;
    color: var(--grim-primary);
    font-family: "Noto Serif", serif;
    font-size: clamp(7rem, 16vw, 11rem);
    font-weight: 700;
    line-height: 1;
    opacity: 0.035;
}

.coming-soon-feature-card__icon {
    display: grid;
    width: 3.25rem;
    height: 3.25rem;
    margin-bottom: 1.5rem;
    color: var(--grim-secondary);
    background: var(--grim-surface-lowest);
    border: 1px solid var(--grim-outline-variant);
    font-size: 1.75rem;
    place-items: center;
}

.coming-soon-feature-card__label {
    margin: 0 0 0.75rem;
    color: var(--grim-tertiary);
    font-size: 0.65rem;
}

.coming-soon-feature-card h3 {
    max-width: 29rem;
    margin: 0 0 0.9rem;
    color: var(--grim-primary-fixed);
    font-family: "Noto Serif", serif;
    font-size: clamp(1.45rem, 3vw, 2.15rem);
    font-weight: 700;
    line-height: 1.08;
}

.coming-soon-feature-card p:last-child {
    position: relative;
    z-index: 1;
    max-width: 35rem;
    margin: 0;
    color: var(--grim-on-surface-variant);
    line-height: 1.72;
}

.coming-soon-foundation {
    padding: clamp(3rem, 7vw, 6rem) 0;
    background:
        linear-gradient(90deg, rgba(14, 14, 14, 0.94), rgba(32, 31, 31, 0.85), rgba(14, 14, 14, 0.94));
    border-top: 1px solid var(--grim-outline-variant);
    border-bottom: 1px solid var(--grim-outline-variant);
}

.coming-soon-foundation__panel {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 0.85fr) minmax(24rem, 1fr);
    gap: clamp(2rem, 6vw, 5rem);
    overflow: hidden;
    padding: clamp(1.5rem, 5vw, 3.5rem);
    background:
        radial-gradient(circle at 10% 100%, rgba(139, 0, 0, 0.25), transparent 24rem),
        var(--grim-surface-lowest);
    border: 2px solid var(--grim-primary-container);
    box-shadow:
        inset 0 0 0 1px rgba(247, 189, 72, 0.1),
        0 0 44px rgba(0, 0, 0, 0.7);
}

.coming-soon-foundation__seal {
    position: absolute;
    right: -4rem;
    bottom: -4rem;
    width: clamp(13rem, 25vw, 22rem);
    opacity: 0.055;
    filter: grayscale(1);
    transform: rotate(9deg);
}

.coming-soon-foundation__copy,
.coming-soon-foundation__list {
    position: relative;
    z-index: 1;
}

.coming-soon-foundation__copy > p:last-child {
    margin: 1.15rem 0 0;
    color: var(--grim-on-surface-variant);
    font-size: 1.05rem;
    line-height: 1.72;
}

.coming-soon-foundation__list {
    display: grid;
    gap: 0;
    margin: 0;
}

.coming-soon-foundation__list > div {
    padding: 1.1rem 1.2rem;
    background: rgba(32, 31, 31, 0.72);
    border: 1px solid var(--grim-outline-variant);
}

.coming-soon-foundation__list > div + div {
    border-top: 0;
}

.coming-soon-foundation__list dt {
    margin-bottom: 0.35rem;
    color: var(--grim-secondary);
    font-size: 0.67rem;
}

.coming-soon-foundation__list dd {
    margin: 0;
    color: var(--grim-on-surface-variant);
    line-height: 1.55;
}

.coming-soon-final {
    padding: clamp(5rem, 10vw, 9rem) 0;
    text-align: center;
    background:
        radial-gradient(circle at 50% 50%, rgba(139, 0, 0, 0.22), transparent 30rem),
        linear-gradient(180deg, #0d0d0d, #080808);
}

.coming-soon-final__inner {
    max-width: 52rem;
    margin: 0 auto;
    padding: clamp(2rem, 5vw, 3.5rem);
    background: rgba(14, 14, 14, 0.84);
    border-top: 2px solid var(--grim-secondary-container);
    border-bottom: 2px solid var(--grim-primary-container);
    box-shadow: 0 0 46px rgba(0, 0, 0, 0.72);
}

.coming-soon-final p:not(.coming-soon-kicker) {
    max-width: 44rem;
    margin: 1.2rem auto 1.75rem;
    color: var(--grim-on-surface-variant);
    font-size: 1.05rem;
    line-height: 1.72;
}

.coming-soon-page.is-launching .coming-soon-countdown-shell {
    border-color: var(--grim-secondary-container);
    box-shadow:
        inset 0 0 0 1px rgba(247, 189, 72, 0.18),
        0 0 38px rgba(247, 189, 72, 0.12),
        0 22px 44px rgba(0, 0, 0, 0.7);
}

.coming-soon-page.is-launching .coming-soon-time-block::after {
    background: var(--grim-secondary);
}

@media (max-width: 991.98px) {
    .coming-soon-section-heading,
    .coming-soon-foundation__panel {
        grid-template-columns: 1fr;
    }

    .coming-soon-section-heading {
        gap: 1rem;
    }

    .coming-soon-feature-card {
        min-height: 19rem;
    }
}

@media (max-width: 767.98px) {
    .coming-soon-hero {
        min-height: auto;
        padding-top: 2.5rem;
    }

    .coming-soon-hero::before {
        top: 3rem;
        width: calc(100% - 1.5rem);
        height: 38rem;
        clip-path: polygon(1.25rem 0, calc(100% - 1.25rem) 0, 100% 1.25rem, 100% calc(100% - 1.25rem), calc(100% - 1.25rem) 100%, 1.25rem 100%, 0 calc(100% - 1.25rem), 0 1.25rem);
    }

    .coming-soon-logo-wrap {
        width: 100%;
        min-height: clamp(20rem, 92vw, 31rem);
        margin-top: -1rem;
        margin-bottom: 0.5rem;
    }

    .coming-soon-door {
        width: clamp(18rem, 76vw, 29rem);
    }

    .coming-soon-logo {
        width: min(39rem, 100%);
        margin-bottom: 0;
    }

    .coming-soon-title {
        font-size: clamp(2.35rem, 11vw, 3.5rem);
    }

    .coming-soon-countdown-heading {
        align-items: flex-start;
        flex-direction: column;
    }

    .coming-soon-launch-date {
        text-align: left;
    }

    .coming-soon-countdown {
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 0.5rem;
    }

    .coming-soon-time-divider {
        display: none;
    }

    .coming-soon-time-block strong {
        font-size: clamp(1.7rem, 9vw, 2.9rem);
    }

    .coming-soon-feature-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 575.98px) {
    .coming-soon-hero__rune {
        display: none;
    }

    .coming-soon-logo-wrap {
        min-height: clamp(17.5rem, 91vw, 24rem);
        margin-top: -0.5rem;
    }

    .coming-soon-door {
        width: min(21rem, 82vw);
    }

    .coming-soon-logo {
        width: calc(100% + 1rem);
        max-width: none;
    }

    .coming-soon-countdown-shell {
        padding: 1rem;
        clip-path: polygon(0.75rem 0, calc(100% - 0.75rem) 0, 100% 0.75rem, 100% calc(100% - 0.75rem), calc(100% - 0.75rem) 100%, 0.75rem 100%, 0 calc(100% - 0.75rem), 0 0.75rem);
    }

    .coming-soon-time-block {
        padding: 0.8rem 0.2rem;
    }

    .coming-soon-time-block span {
        letter-spacing: 0.04em;
    }

    .coming-soon-actions {
        align-items: stretch;
        flex-direction: column;
    }

    .coming-soon-actions .btn-subscribe,
    .coming-soon-secondary-action {
        width: 100%;
    }

    .coming-soon-feature-card {
        min-height: 0;
    }
}

/* Launch reveal: fade to black, reveal the open door, then burst to white. */
.coming-soon-launch-sequence {
    position: fixed;
    z-index: 10000;
    inset: 0;
    display: grid;
    overflow: hidden;
    background:
        radial-gradient(circle at 50% 48%, rgba(247, 189, 72, 0.035), transparent 35rem),
        #000;
    opacity: 0;
    pointer-events: none;
    visibility: hidden;
    place-items: center;
}

.coming-soon-launch-sequence::before {
    position: absolute;
    z-index: 0;
    inset: 0;
    background:
        radial-gradient(circle at 50% 48%, rgba(139, 0, 0, 0.08), transparent 40rem),
        #000;
    content: "";
    opacity: 0;
    pointer-events: none;
}

.coming-soon-launch-sequence__door {
    position: relative;
    z-index: 1;
    display: block;
    width: 100vw;
    height: 100dvh;
    max-width: 100vw;
    max-height: 100dvh;
    padding: clamp(0rem, 1vw, 0.9rem);
    object-fit: contain;
    object-position: center;
    filter:
        saturate(0.94)
        contrast(1.04)
        drop-shadow(0 0 34px rgba(247, 189, 72, 0.08));
    opacity: 0;
    transform: scale(1.035);
    will-change: opacity, transform, filter;
}

.coming-soon-launch-sequence.is-active {
    visibility: visible;
    animation: coming-soon-fade-to-black 0.75s ease-out forwards;
}

.coming-soon-launch-sequence.is-active::before {
    animation: coming-soon-black-depth 1.25s ease-out forwards;
}

.coming-soon-launch-sequence.is-door-visible .coming-soon-launch-sequence__door {
    animation: coming-soon-open-door-reveal 1.05s cubic-bezier(0.18, 0.72, 0.2, 1) forwards;
}

.coming-soon-launch-flash {
    position: absolute;
    z-index: 2;
    inset: 0;
    overflow: hidden;
    background: rgba(255, 255, 255, 0);
    opacity: 0;
    pointer-events: none;
    visibility: hidden;
}

.coming-soon-launch-flash__core,
.coming-soon-launch-flash__rays {
    position: absolute;
    top: 50%;
    left: 50%;
    display: block;
    pointer-events: none;
}

.coming-soon-launch-flash__core {
    width: 22vmax;
    height: 22vmax;
    background: radial-gradient(circle, #fff 0 24%, #fffde9 35%, rgba(255, 255, 255, 0.95) 48%, rgba(255, 255, 255, 0) 72%);
    filter: blur(1px);
    opacity: 0;
    transform: translate(-50%, -50%) scale(0.04);
}

.coming-soon-launch-flash__rays {
    width: 190vmax;
    height: 190vmax;
    background:
        repeating-conic-gradient(
            from -2deg,
            transparent 0deg 4deg,
            rgba(255, 255, 255, 0.92) 4deg 5deg,
            transparent 5deg 12deg
        );
    -webkit-mask-image: radial-gradient(circle, #000 0 13%, rgba(0, 0, 0, 0.95) 26%, rgba(0, 0, 0, 0.42) 50%, transparent 74%);
    mask-image: radial-gradient(circle, #000 0 13%, rgba(0, 0, 0, 0.95) 26%, rgba(0, 0, 0, 0.42) 50%, transparent 74%);
    opacity: 0;
    transform: translate(-50%, -50%) scale(0.06) rotate(0deg);
}

.coming-soon-launch-sequence.is-bursting .coming-soon-launch-flash {
    visibility: visible;
    animation: coming-soon-whiteout 1.65s cubic-bezier(0.18, 0.72, 0.2, 1) forwards;
}

.coming-soon-launch-sequence.is-bursting .coming-soon-launch-flash__core {
    animation: coming-soon-star-core 1.35s cubic-bezier(0.12, 0.8, 0.18, 1) forwards;
}

.coming-soon-launch-sequence.is-bursting .coming-soon-launch-flash__rays {
    animation: coming-soon-star-rays 1.35s cubic-bezier(0.12, 0.8, 0.18, 1) forwards;
}

.coming-soon-page.is-launching {
    overflow: hidden;
}

body:has(.coming-soon-page.is-launching) {
    overflow: hidden;
}

@keyframes coming-soon-fade-to-black {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@keyframes coming-soon-black-depth {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@keyframes coming-soon-open-door-reveal {
    0% {
        opacity: 0;
        transform: scale(1.035);
        filter:
            saturate(0.74)
            contrast(0.9)
            brightness(0.5)
            drop-shadow(0 0 0 rgba(247, 189, 72, 0));
    }
    42% {
        opacity: 1;
    }
    100% {
        opacity: 1;
        transform: scale(1);
        filter:
            saturate(1)
            contrast(1.05)
            brightness(1)
            drop-shadow(0 0 38px rgba(247, 189, 72, 0.1));
    }
}

@keyframes coming-soon-star-core {
    0% {
        opacity: 0;
        transform: translate(-50%, -50%) scale(0.04);
    }
    16% {
        opacity: 1;
    }
    72% {
        opacity: 1;
        transform: translate(-50%, -50%) scale(5.8);
    }
    100% {
        opacity: 1;
        transform: translate(-50%, -50%) scale(8.5);
    }
}

@keyframes coming-soon-star-rays {
    0% {
        opacity: 0;
        transform: translate(-50%, -50%) scale(0.06) rotate(0deg);
    }
    18% {
        opacity: 0.95;
    }
    78% {
        opacity: 0.88;
        transform: translate(-50%, -50%) scale(1) rotate(7deg);
    }
    100% {
        opacity: 0.35;
        transform: translate(-50%, -50%) scale(1.24) rotate(10deg);
    }
}

@keyframes coming-soon-whiteout {
    0% {
        opacity: 0;
        background: rgba(255, 255, 255, 0);
    }
    12% {
        opacity: 1;
    }
    58% {
        opacity: 1;
        background: rgba(255, 255, 255, 0.18);
    }
    100% {
        opacity: 1;
        background: #fff;
    }
}

/* Dual-purpose campaign / maintenance states */
.coming-soon-page.is-waiting .coming-soon-countdown-shell {
    border-color: var(--grim-secondary-container);
    box-shadow:
        inset 0 0 0 1px rgba(247, 189, 72, 0.14),
        inset 0 -24px 50px rgba(0, 0, 0, 0.45),
        0 0 28px rgba(247, 189, 72, 0.12),
        0 22px 44px rgba(0, 0, 0, 0.7);
}

.coming-soon-page.is-open .coming-soon-countdown-shell {
    border-color: var(--grim-secondary);
}

.coming-soon-page.is-waiting .coming-soon-time-block strong,
.coming-soon-page.is-open .coming-soon-time-block strong {
    color: var(--grim-secondary);
}

.coming-soon-page.is-maintenance [data-current-site-link],
.coming-soon-page.is-waiting [data-current-site-link] {
    display: none !important;
}

.coming-soon-page.is-loading [data-countdown-value] {
    opacity: 0.45;
}

.coming-soon-noscript {
    margin: 0;
    padding: 1rem;
    color: var(--grim-primary-fixed);
    background: var(--grim-primary-container);
    font-family: "JetBrains Mono", monospace;
    font-size: 0.72rem;
    letter-spacing: 0.06em;
    text-align: center;
    text-transform: uppercase;
}

@media (prefers-reduced-motion: reduce) {
    .coming-soon-feature-card,
    .coming-soon-secondary-action,
    .coming-soon-door {
        transition: none !important;
    }

    .coming-soon-launch-sequence.is-active {
        animation-duration: 0.3s;
    }

    .coming-soon-launch-sequence.is-door-visible .coming-soon-launch-sequence__door {
        animation: coming-soon-open-door-reveal-reduced 0.25s linear forwards;
    }

    .coming-soon-launch-sequence.is-bursting .coming-soon-launch-flash {
        animation: coming-soon-whiteout-reduced 0.35s linear forwards;
    }

    .coming-soon-launch-sequence.is-bursting .coming-soon-launch-flash__core,
    .coming-soon-launch-sequence.is-bursting .coming-soon-launch-flash__rays {
        animation: none;
    }
}

@keyframes coming-soon-open-door-reveal-reduced {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

@keyframes coming-soon-whiteout-reduced {
    from {
        opacity: 0;
        background: rgba(255, 255, 255, 0);
    }
    to {
        opacity: 1;
        background: #fff;
    }
}
