/* ═══════════════════════════════════════════
   ACADEMETIA — REUSABLE COMPONENTS
   ═══════════════════════════════════════════ */

/* ── Table ── */
.table-wrap {
    overflow-x: auto; border-radius: var(--radius-md);
    border: 1px solid var(--border);
}
.data-table {
    width: 100%; border-collapse: collapse; font-size: 14px;
}
.data-table th {
    padding: 12px 16px; text-align: left;
    background: var(--bg-secondary); color: var(--text-secondary);
    font-weight: 600; font-size: 12px; text-transform: uppercase;
    letter-spacing: 0.04em; border-bottom: 1px solid var(--border);
    white-space: nowrap;
}
.data-table td {
    padding: 12px 16px; border-bottom: 1px solid var(--border);
    color: var(--text-primary);
}
.data-table tr:last-child td { border-bottom: none; }
.data-table tr:hover td { background: var(--bg-input); }

/* ── Badge ── */
.badge {
    display: inline-flex; align-items: center; padding: 2px 10px;
    border-radius: var(--radius-full); font-size: 12px; font-weight: 600;
}
.badge-success { background: var(--accent-muted); color: var(--accent); }
.badge-warning { background: rgba(255,184,0,0.12); color: var(--amber); }
.badge-danger { background: rgba(255,107,107,0.12); color: var(--red); }
.badge-info { background: rgba(59,130,246,0.12); color: var(--blue); }

/* ── Pagination ── */
.pagination { display: flex; gap: 4px; margin-top: 20px; justify-content: center; }
.page-link {
    width: 36px; height: 36px; display: flex; align-items: center; justify-content: center;
    border-radius: var(--radius-sm); border: 1px solid var(--border);
    background: var(--bg-card); color: var(--text-secondary);
    font-size: 14px; font-weight: 500; text-decoration: none;
    transition: all var(--transition-fast);
}
.page-link:hover { border-color: var(--accent); color: var(--accent); }
.page-link.active { background: var(--accent); color: #0A0A0F; border-color: var(--accent); }

/* ── Card (generic) ── */
.card {
    background: var(--bg-card); border: 1px solid var(--bg-glass-border);
    border-radius: var(--radius-lg); padding: 24px;
    backdrop-filter: blur(8px);
}

/* ── Tabs ── */
.tabs { display: flex; gap: 0; border-bottom: 1px solid var(--border); margin-bottom: 24px; }
.tab-link {
    padding: 10px 20px; font-size: 14px; font-weight: 500;
    color: var(--text-secondary); border-bottom: 2px solid transparent;
    transition: all var(--transition-fast); text-decoration: none;
}
.tab-link:hover { color: var(--text-primary); }
.tab-link.active { color: var(--accent); border-bottom-color: var(--accent); }

/* ── Modal ── */
.modal-overlay {
    position: fixed; inset: 0; z-index: 8000;
    background: var(--bg-overlay); backdrop-filter: blur(4px);
    display: flex; align-items: center; justify-content: center;
    padding: 24px; opacity: 0; visibility: hidden;
    transition: opacity var(--transition-base), visibility var(--transition-base);
}
.modal-overlay.open { opacity: 1; visibility: visible; }
.modal {
    background: var(--bg-card-solid); border: 1px solid var(--border);
    border-radius: var(--radius-xl); padding: 32px;
    max-width: 500px; width: 100%;
    box-shadow: var(--shadow-xl);
    transform: translateY(20px);
    transition: transform var(--transition-base);
}
.modal-overlay.open .modal { transform: translateY(0); }
.modal-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; }
.modal-header h2 { font-family: var(--font-display); font-size: 20px; font-weight: 600; }
.modal-close {
    width: 32px; height: 32px; border-radius: var(--radius-sm);
    background: var(--bg-input); border: none;
    color: var(--text-secondary); cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    transition: all var(--transition-fast);
}
.modal-close:hover { background: var(--bg-tertiary); color: var(--text-primary); }