/* Splash screen — shown on every full page load until the Vue app mounts.
   Hidden by removing the `page-loading` body class (see App.vue onMounted). */

body.page-loading {
    margin: 0;
    height: 100%;
    overflow: hidden;
}

.splash-screen {
    display: none;
}

.page-loading .splash-screen {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: #ffffff;
    font-family: Inter, Helvetica, "sans-serif";
    -webkit-font-smoothing: antialiased;
}

html[data-bs-theme="dark"] .page-loading .splash-screen {
    background-color: #151521;
}

/* Centered vertical stack: logo → spinner → text */
.page-loading .splash-screen .splash-screen__content {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 28px;
    animation: splash-fade-in 0.4s ease both;
}

/* Logo */
.page-loading .splash-screen .splash-screen__logo {
    height: 44px;
    width: auto;
    animation: splash-logo-pulse 1.8s ease-in-out infinite;
}

.splash-screen .dark-logo {
    display: none;
}

.splash-screen .light-logo {
    display: block;
}

html[data-bs-theme="dark"] .splash-screen .light-logo {
    display: none;
}

html[data-bs-theme="dark"] .splash-screen .dark-logo {
    display: block;
}

/* Branded ring spinner */
.page-loading .splash-screen .splash-screen__spinner {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: 3px solid rgba(0, 158, 247, 0.18);
    border-top-color: #009ef7;
    animation: splash-spin 0.8s linear infinite;
}

html[data-bs-theme="dark"] .page-loading .splash-screen .splash-screen__spinner {
    border-color: rgba(0, 158, 247, 0.28);
    border-top-color: #009ef7;
}

/* Text */
.page-loading .splash-screen .splash-screen__text {
    font-size: 15px;
    font-weight: 600;
    letter-spacing: 0.2px;
    line-height: 1;
    color: #5e6278;
    transition: none !important;
}

html[data-bs-theme="dark"] .page-loading .splash-screen .splash-screen__text {
    color: #9d9da6;
}

@keyframes splash-spin {
    to {
        transform: rotate(360deg);
    }
}

@keyframes splash-logo-pulse {
    0%,
    100% {
        opacity: 1;
    }
    50% {
        opacity: 0.55;
    }
}

@keyframes splash-fade-in {
    from {
        opacity: 0;
        transform: translateY(6px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Respect users who prefer reduced motion */
@media (prefers-reduced-motion: reduce) {
    .page-loading .splash-screen .splash-screen__spinner {
        animation-duration: 1.6s;
    }
    .page-loading .splash-screen .splash-screen__logo,
    .page-loading .splash-screen .splash-screen__content {
        animation: none;
    }
}
