/* Global page loader — slow orange dotted ring */
.app-page-loader {
    position: fixed;
    inset: 0;
    z-index: 99999;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.94);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.35s ease, visibility 0.35s ease;
}

.dark .app-page-loader {
    background: rgba(17, 24, 39, 0.94);
}

.app-page-loader.is-active {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

.app-dot-spinner {
    position: relative;
    width: 72px;
    height: 72px;
}

.app-dot-spinner__ring {
    position: absolute;
    inset: 0;
    animation: app-ring-spin 3.2s linear infinite;
}

.app-dot-spinner__icon {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.4rem;
    color: #ea580c;
    z-index: 2;
    pointer-events: none;
}

.app-dot-spinner__ring span {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 9px;
    height: 9px;
    margin: -4.5px 0 0 -4.5px;
    border-radius: 50%;
    background: #ea580c;
    box-shadow: 0 0 6px rgba(234, 88, 12, 0.55);
    transform: rotate(calc(var(--i) * 36deg)) translateY(-30px);
    opacity: calc(0.45 + (var(--i) / 10) * 0.55);
}

.app-dot-spinner__ring span:nth-of-type(1)  { --i: 0; }
.app-dot-spinner__ring span:nth-of-type(2)  { --i: 1; }
.app-dot-spinner__ring span:nth-of-type(3)  { --i: 2; }
.app-dot-spinner__ring span:nth-of-type(4)  { --i: 3; }
.app-dot-spinner__ring span:nth-of-type(5)  { --i: 4; }
.app-dot-spinner__ring span:nth-of-type(6)  { --i: 5; }
.app-dot-spinner__ring span:nth-of-type(7)  { --i: 6; }
.app-dot-spinner__ring span:nth-of-type(8)  { --i: 7; }
.app-dot-spinner__ring span:nth-of-type(9)  { --i: 8; }
.app-dot-spinner__ring span:nth-of-type(10) { --i: 9; }

@keyframes app-ring-spin {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
    .app-dot-spinner__ring {
        animation-duration: 5s;
    }
    .app-page-loader {
        transition-duration: 0.01ms;
    }
}
