/* =========================================================
   Vira Preloader — Base Overlay & Layout
   ========================================================= */

.vira-preloader-overlay {
    position: fixed;
    inset: 0;
    z-index: 999999;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: #0a0a0f;
    transition: opacity 0.4s ease, visibility 0.4s ease;
}

.vira-preloader-overlay.loaded {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.vira-preloader-stage {
    --preloader-accent1: #ff3c6f;
    --preloader-accent2: #00d9ff;
    --preloader-accent3: #7c3aed;
    --preloader-accent4: #f59e0b;
    --preloader-accent5: #10b981;
}

.vira-preloader-stage *,
.vira-preloader-stage *::before,
.vira-preloader-stage *::after {
    box-sizing: border-box;
}

/* Shared keyframes */
@keyframes vira-spin { to { transform: rotate(360deg); } }
@keyframes vira-pulse-core {
    0%,100% { transform: translate(-50%,-50%) scale(1); }
    50% { transform: translate(-50%,-50%) scale(1.4); }
}