/* ——— Loader overlay (smoke + panel) ——— */
.rgef-loader {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--rgef-smoke);
    backdrop-filter: blur(4px);
    animation: rgef-fade-in 200ms var(--rgef-ease);
}

.rgef-loader__panel {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--rgef-space-4);
    padding: var(--rgef-space-8) var(--rgef-space-10);
    background: var(--rgef-card);
    border: var(--rgef-border-strong-style);
    border-radius: var(--rgef-radius);
    min-width: 200px;
}

.rgef-loader__ring {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: 2.5px solid var(--rgef-base-alt);
    border-top-color: var(--rgef-accent);
    animation: rgef-spin 0.85s linear infinite;
}

.rgef-loader__text {
    margin: 0;
    font-size: var(--rgef-font-size-sm);
    color: var(--rgef-text-secondary);
    font-weight: 600;
}

/* ——— Skeleton ——— */
.rgef-skeleton {
    background: linear-gradient(
        90deg,
        var(--rgef-base-alt) 0%,
        rgba(255, 255, 255, 0.55) 50%,
        var(--rgef-base-alt) 100%
    );
    background-size: 200% 100%;
    animation: rgef-shimmer 1.4s ease-in-out infinite;
    border-radius: var(--rgef-radius-sm);
}

.rgef-skeleton--title {
    height: 28px;
    width: 55%;
    margin: 0 auto var(--rgef-space-8);
    border-radius: var(--rgef-radius-sm);
}

.rgef-skeleton--kpi {
    height: 48px;
    width: 40%;
}

.rgef-skeleton--chart {
    flex: 1;
    min-height: 100px;
    margin-top: var(--rgef-space-3);
}

.rgef-skeleton--block {
    height: 88px;
}

.rgef-skeleton-dash__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--rgef-space-4);
}

.rgef-skeleton-dash__col {
    display: flex;
    flex-direction: column;
    gap: var(--rgef-space-4);
}

.rgef-skeleton-card {
    background: var(--rgef-card);
    border: var(--rgef-border);
    border-radius: var(--rgef-radius);
    padding: var(--rgef-space-4);
    min-height: 96px;
    display: flex;
    flex-direction: column;
}

.rgef-skeleton-card--chart {
    min-height: 160px;
}

.rgef-page-loader {
    padding: var(--rgef-space-8) 0;
}

@keyframes rgef-spin {
    to { transform: rotate(360deg); }
}

@keyframes rgef-shimmer {
    0% { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

@keyframes rgef-fade-in {
    from { opacity: 0; }
    to { opacity: 1; }
}

@media (max-width: 1024px) {
    .rgef-skeleton-dash__grid {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 768px) {
    .rgef-skeleton-dash__grid {
        grid-template-columns: 1fr;
    }
}
