/* =============================================
   utils.css — Loading, empty state e responsivo
   Power BI Modern Theme
   ============================================= */

/* Loading */
.loading-section {
    text-align: center;
    padding: 48px 20px;
    background: var(--pbi-card);
    border-radius: var(--pbi-radius-md);
    margin-bottom: 14px;
    box-shadow: var(--pbi-shadow-sm);
    border: 1px solid var(--pbi-border);
}

.loading-section p {
    color: var(--pbi-text-muted);
    font-size: 13px;
    margin-top: 12px;
    font-weight: 500;
}

.spinner {
    border: 3px solid var(--pbi-border);
    border-top: 3px solid var(--pbi-yellow);
    border-radius: 50%;
    width: 40px;
    height: 40px;
    animation: spin 0.8s linear infinite;
    margin: 0 auto;
}

@keyframes spin {
    0%   { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* Empty state */
.empty-state {
    text-align: center;
    padding: 80px 20px;
    background: var(--pbi-card);
    border-radius: var(--pbi-radius-md);
    margin: 24px auto;
    max-width: 560px;
    box-shadow: var(--pbi-shadow-sm);
    border: 1px solid var(--pbi-border);
}

.empty-icon {
    font-size: 3.5rem;
    margin-bottom: 16px;
    opacity: 0.45;
}

.empty-state h2 {
    font-size: 18px;
    color: var(--pbi-text);
    margin-bottom: 10px;
    font-weight: 700;
}

.empty-state p {
    font-size: 13px;
    color: var(--pbi-text-muted);
    line-height: 1.5;
}

/* ── Responsivo ── */
@media (max-width: 768px) {
    .container    { padding: 12px; }
    .nav-container { padding: 0 12px; }
    .nav-title    { font-size: 13px; }

    .dashboard-grid              { grid-template-columns: 1fr; }
    .chart-container.full-width  { grid-column: 1; }
    .filters-grid                { grid-template-columns: 1fr; }

    .table-header       { flex-direction: column; align-items: stretch; }
    .table-title-search { flex-direction: column; align-items: stretch; }
    .search-input       { max-width: 100%; }

    .pagination-container { flex-direction: column; align-items: flex-start; }
    .pagination-controls  { flex-wrap: wrap; justify-content: center; }
    .pagination-jump      { width: 100%; justify-content: center; }

    .modal-content { width: 95%; margin: 20px auto; }
}

@media (max-width: 480px) {
    .page-numbers { gap: 2px; }

    .page-number,
    .pagination-btn {
        min-width: 28px;
        height: 28px;
        padding: 4px 6px;
        font-size: 11px;
    }
}
