/* The demo's loader page (/demo/). Colours from the site: matter (violet), anti (cyan). The banner in the app is the app's
   own announcement bar (mock/boot.js). */

/* The loader page. */
body.demo-loader {
    margin: 0;
    min-height: 100vh;
    display: grid;
    place-items: center;
    background: radial-gradient(ellipse at 50% 100%, #2b1f4a 0%, #1e1f22 60%);
    color: #e9e7f2;
    font: 400 17px/1.6 "Figtree", "Segoe UI", system-ui, sans-serif;
    text-align: center;
}

body.demo-loader main {
    padding: 24px;
    max-width: 520px;
}

body.demo-loader img {
    margin: 0 auto 12px;
}

body.demo-loader h1 {
    margin: 0 0 8px;
    font: 700 2rem/1.2 "Sora", "Figtree", sans-serif;
    color: #fff;
}

body.demo-loader a {
    color: #22d3ee;
}

.demo-loader-status::after {
    content: "";
    display: inline-block;
    width: 0.9em;
    height: 0.9em;
    margin-inline-start: 0.5em;
    vertical-align: -0.1em;
    border: 2px solid #8b5cf6;
    border-top-color: transparent;
    border-radius: 50%;
    animation: demo-spin 0.8s linear infinite;
}

.demo-loader-status.error {
    color: #fbbf24;
}

.demo-loader-status.error::after {
    display: none;
}

.demo-loader-note {
    color: #b9b5cc;
    font-size: 0.95rem;
}

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

@media (prefers-reduced-motion: reduce) {
    .demo-loader-status::after {
        animation: none;
    }
}
