#bulb-preloader {
    position: fixed;
    inset: 0;
    z-index: 999999;
    background: #000;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 1;
    visibility: visible;
    pointer-events: all;
    overflow: hidden;
}

#bulb-preloader.is-exiting {
    pointer-events: none;
    background: transparent;
    transition: background-color 1.15s ease 0.18s;
}

html.bc-skip-preloader #bulb-preloader,
html.bc-preloader-done #bulb-preloader {
    display: none !important;
}

html.bc-preloader-active,
html.bc-preloader-active body {
    overflow: hidden;
}

.bulb-preloader__shine {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 140vmax;
    height: 140vmax;
    margin-top: calc(-70vmax - 2vh);
    margin-left: -70vmax;
    border-radius: 50%;
    pointer-events: none;
    opacity: 0;
    transform: scale(0.08);
    background: radial-gradient(
        circle,
        rgba(255, 238, 190, 0.98) 0%,
        rgba(255, 210, 120, 0.82) 18%,
        rgba(255, 180, 80, 0.52) 38%,
        rgba(255, 150, 50, 0.22) 58%,
        rgba(255, 130, 30, 0.08) 72%,
        rgba(255, 120, 20, 0) 88%
    );
    filter: blur(2px);
    will-change: transform, opacity;
}

.bulb-preloader__scene {
    position: relative;
    z-index: 2;
    width: min(220px, 52vw);
    aspect-ratio: 3 / 5;
    display: flex;
    align-items: center;
    justify-content: center;
}

.bulb-preloader__glow {
    position: absolute;
    width: 280%;
    height: 220%;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -54%) scale(0.82);
    border-radius: 50%;
    background: radial-gradient(
        circle,
        rgba(255, 196, 88, 0.72) 0%,
        rgba(255, 168, 52, 0.38) 28%,
        rgba(255, 140, 20, 0.12) 52%,
        rgba(255, 120, 0, 0) 72%
    );
    opacity: 0;
    filter: blur(18px);
    pointer-events: none;
}

.bulb-preloader__glow--inner {
    top: 50%;
    left: 50%;
    width: 165%;
    height: 130%;
    transform: translate(-50%, -54%);
    background: radial-gradient(
        circle,
        rgba(255, 230, 160, 0.85) 0%,
        rgba(255, 190, 80, 0.35) 42%,
        rgba(255, 160, 40, 0) 70%
    );
    filter: blur(8px);
}

.bulb-preloader__bulb {
    position: relative;
    z-index: 2;
    width: 100%;
    height: auto;
    object-fit: contain;
    opacity: 0;
    transform: translateY(8px) scale(0.96);
    filter: brightness(0.28) saturate(0.55);
    will-change: filter, opacity, transform;
}

#bulb-preloader.is-running .bulb-preloader__bulb {
    animation: bulbEnter 0.35s ease forwards, bulbFlicker 1.45s ease 0.35s forwards;
}

#bulb-preloader.is-running .bulb-preloader__glow {
    animation: glowPulse 1.8s ease 0.35s forwards;
}

#bulb-preloader.is-running .bulb-preloader__glow--inner {
    animation: glowPulseInner 1.8s ease 0.42s forwards;
}

/* Exit: light blooms outward and washes into the site */
#bulb-preloader.is-exiting .bulb-preloader__shine {
    animation: shineReveal 1.45s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

#bulb-preloader.is-exiting .bulb-preloader__glow {
    animation: glowExpand 1.45s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

#bulb-preloader.is-exiting .bulb-preloader__glow--inner {
    animation: glowExpandInner 1.45s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

#bulb-preloader.is-exiting .bulb-preloader__bulb {
    animation: bulbRevealFade 1.35s ease forwards;
}

#bulb-preloader.is-exiting .bulb-preloader__scene {
    animation: sceneLift 1.35s ease forwards;
}

@keyframes bulbEnter {
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

@keyframes bulbFlicker {
    0%,
    6% {
        filter: brightness(0.28) saturate(0.55);
    }
    7%,
    9% {
        filter: brightness(1.95) saturate(1.25) drop-shadow(0 0 22px rgba(255, 190, 80, 0.85));
    }
    10%,
    12% {
        filter: brightness(0.42) saturate(0.65);
    }
    13%,
    15% {
        filter: brightness(2.05) saturate(1.3) drop-shadow(0 0 28px rgba(255, 200, 100, 0.95));
    }
    16%,
    19% {
        filter: brightness(0.55) saturate(0.75);
    }
    20%,
    100% {
        filter: brightness(1.12) saturate(1.08) drop-shadow(0 0 18px rgba(255, 180, 70, 0.55));
    }
}

@keyframes glowPulse {
    0%,
    6% {
        opacity: 0;
        transform: translate(-50%, -54%) scale(0.82);
    }
    7% {
        opacity: 0.35;
    }
    10% {
        opacity: 0.08;
    }
    13% {
        opacity: 0.48;
    }
    16% {
        opacity: 0.18;
    }
    22%,
    100% {
        opacity: 0.72;
        transform: translate(-50%, -54%) scale(1);
    }
}

@keyframes glowPulseInner {
    0%,
    6% {
        opacity: 0;
    }
    13% {
        opacity: 0.25;
    }
    20%,
    100% {
        opacity: 0.82;
    }
}

@keyframes shineReveal {
    0% {
        opacity: 0;
        transform: scale(0.08);
    }
    18% {
        opacity: 0.55;
        transform: scale(0.45);
    }
    42% {
        opacity: 0.92;
        transform: scale(1.05);
    }
    68% {
        opacity: 0.72;
        transform: scale(1.55);
    }
    100% {
        opacity: 0;
        transform: scale(2.1);
    }
}

@keyframes glowExpand {
    0% {
        opacity: 0.72;
        transform: translate(-50%, -54%) scale(1);
        filter: blur(18px);
    }
    35% {
        opacity: 1;
        transform: translate(-50%, -54%) scale(3.2);
        filter: blur(28px);
    }
    100% {
        opacity: 0;
        transform: translate(-50%, -54%) scale(7.5);
        filter: blur(42px);
    }
}

@keyframes glowExpandInner {
    0% {
        opacity: 0.82;
        transform: translate(-50%, -54%) scale(1);
    }
    40% {
        opacity: 1;
        transform: translate(-50%, -54%) scale(2.8);
    }
    100% {
        opacity: 0;
        transform: translate(-50%, -54%) scale(5.5);
    }
}

@keyframes bulbRevealFade {
    0% {
        opacity: 1;
        filter: brightness(1.12) saturate(1.08) drop-shadow(0 0 18px rgba(255, 180, 70, 0.55));
    }
    35% {
        opacity: 1;
        filter: brightness(1.45) saturate(1.15) drop-shadow(0 0 32px rgba(255, 200, 100, 0.85));
    }
    100% {
        opacity: 0;
        filter: brightness(2) saturate(1.2) drop-shadow(0 0 48px rgba(255, 220, 140, 0.4));
        transform: translateY(-6px) scale(1.03);
    }
}

@keyframes sceneLift {
    0% {
        transform: translateY(0) scale(1);
    }
    100% {
        transform: translateY(-10px) scale(1.04);
        opacity: 0;
    }
}

@media (prefers-reduced-motion: reduce) {
    #bulb-preloader.is-running .bulb-preloader__bulb,
    #bulb-preloader.is-running .bulb-preloader__glow,
    #bulb-preloader.is-running .bulb-preloader__glow--inner {
        animation: none;
    }

    #bulb-preloader.is-running .bulb-preloader__bulb {
        opacity: 1;
        transform: none;
        filter: brightness(1.05) saturate(1.05);
    }

    #bulb-preloader.is-running .bulb-preloader__glow {
        opacity: 0.45;
    }

    #bulb-preloader.is-running .bulb-preloader__glow--inner {
        opacity: 0.55;
    }

    #bulb-preloader.is-exiting {
        opacity: 0;
        transition: opacity 0.45s ease;
    }
}
