/**
 * Oxford Teachers — Main Stylesheet
 * Area do Professor
 */

/* ==========================================
   CSS Variables
   ========================================== */
:root {
    --ox-primary: #1e3a5f;
    --ox-primary-light: #2c5282;
    --ox-secondary: #4a5568;
    --ox-success: #28a745;
    --ox-warning: #ffc107;
    --ox-danger: #dc3545;
    --ox-info: #17a2b8;
    --ox-light: #f8f9fa;
    --ox-dark: #343a40;
    --ox-white: #ffffff;
    --ox-border: #e2e8f0;
    --ox-shadow: 0 2px 4px rgba(0,0,0,0.1);
    --ox-shadow-lg: 0 4px 12px rgba(0,0,0,0.15);
    --ox-radius: 8px;
    --ox-radius-sm: 4px;
    --ox-transition: all 0.2s ease;
}

/* ==========================================
   Dark Mode — Color Palette
   ========================================== */
[data-ox-theme="dark"] {
    /* -- Surfaces -- */
    --ox-bg-body: #111827;
    --ox-bg-card: #1e293b;
    --ox-bg-elevated: #273548;
    --ox-bg-inset: #0f172a;

    /* -- Semantic variables remapped -- */
    --ox-primary: #60a5fa;
    --ox-primary-light: #93c5fd;
    --ox-secondary: #64748b;
    --ox-success: #4ade80;
    --ox-warning: #fbbf24;
    --ox-danger: #f87171;
    --ox-info: #38bdf8;
    --ox-light: #1e293b;
    --ox-dark: #e2e8f0;
    --ox-white: #1e293b;
    --ox-border: #334155;
    --ox-shadow: 0 2px 4px rgba(0,0,0,0.4);
    --ox-shadow-lg: 0 4px 12px rgba(0,0,0,0.5);
    color-scheme: dark;
}

/* -- Base containers -- */
[data-ox-theme="dark"] body,
[data-ox-theme="dark"] .ox-teachers-dashboard,
[data-ox-theme="dark"] .ox-teachers-turma,
[data-ox-theme="dark"] .ox-teachers-presencas,
[data-ox-theme="dark"] .ox-teachers-aulas,
[data-ox-theme="dark"] .ox-coordinator-dashboard,
[data-ox-theme="dark"] .ox-reception-dashboard,
[data-ox-theme="dark"] .ox-tutor-dashboard {
    background-color: var(--ox-bg-body);
    color: #e2e8f0;
}

/* -- Cards & panels (anything that was white or #fff) -- */
[data-ox-theme="dark"] .ox-dashboard-sidebar,
[data-ox-theme="dark"] .ox-dashboard-section,
[data-ox-theme="dark"] .ox-turma-card,
[data-ox-theme="dark"] .ox-counter-card,
[data-ox-theme="dark"] .ox-modal-content,
[data-ox-theme="dark"] .ox-modal-header,
[data-ox-theme="dark"] .ox-modal-body,
[data-ox-theme="dark"] .ox-modal-footer,
[data-ox-theme="dark"] .ox-aula-card,
[data-ox-theme="dark"] .ox-aluno-card,
[data-ox-theme="dark"] .ox-section-content,
[data-ox-theme="dark"] .ox-report-overlay-container,
[data-ox-theme="dark"] .ox-form-card,
[data-ox-theme="dark"] .ox-document-card,
[data-ox-theme="dark"] .ox-quiz-card,
[data-ox-theme="dark"] .ox-fup-card,
[data-ox-theme="dark"] .ox-cal-student-results,
[data-ox-theme="dark"] .ox-career-card,
[data-ox-theme="dark"] .ox-coord-section,
[data-ox-theme="dark"] .ox-reception-section,
[data-ox-theme="dark"] .ox-tutor-section,
[data-ox-theme="dark"] .ox-presenca-card,
[data-ox-theme="dark"] .ox-handbook-card,
[data-ox-theme="dark"] .ox-cpd-card,
[data-ox-theme="dark"] .ox-culture-card,
[data-ox-theme="dark"] .ox-tshirt-card,
[data-ox-theme="dark"] .ox-niv-card,
[data-ox-theme="dark"] .ox-monitoria-card,
[data-ox-theme="dark"] .ox-tutoring-card,
[data-ox-theme="dark"] .ox-feedback-card,
[data-ox-theme="dark"] .ox-reportcard-card,
[data-ox-theme="dark"] .ox-materiais-card,
[data-ox-theme="dark"] .ox-stock-card {
    background-color: var(--ox-bg-card) !important;
    color: #e2e8f0;
}

/* -- Inset / alternate backgrounds (were #f8f9fa, #f5f5f5, #fafafa) -- */
[data-ox-theme="dark"] .ox-dashboard-filter,
[data-ox-theme="dark"] .ox-turma-filters,
[data-ox-theme="dark"] .ox-turma-stats,
[data-ox-theme="dark"] .ox-turma-meta,
[data-ox-theme="dark"] .ox-aluno-header,
[data-ox-theme="dark"] .ox-info-grid,
[data-ox-theme="dark"] .ox-info-card,
[data-ox-theme="dark"] .ox-stats-row,
[data-ox-theme="dark"] .ox-stat-card,
[data-ox-theme="dark"] .ox-niv-stat,
[data-ox-theme="dark"] .ox-fup-tabs,
[data-ox-theme="dark"] .ox-fup-turma-header,
[data-ox-theme="dark"] .ox-fup-student-table th,
[data-ox-theme="dark"] .ox-fup-schedule,
[data-ox-theme="dark"] .ox-btn-group,
[data-ox-theme="dark"] .ox-tab-content,
[data-ox-theme="dark"] .ox-tabs,
[data-ox-theme="dark"] .ox-filter-bar,
[data-ox-theme="dark"] .ox-log-item,
[data-ox-theme="dark"] .ox-empty-state,
[data-ox-theme="dark"] .ox-summary-row,
[data-ox-theme="dark"] .ox-accordion-header,
[data-ox-theme="dark"] .ox-legend,
[data-ox-theme="dark"] .ox-progress-container {
    background-color: var(--ox-bg-inset) !important;
    color: #cbd5e1;
}

/* Section headers should be subtle, not darker than the card behind them */
[data-ox-theme="dark"] .ox-section-header {
    background-color: transparent !important;
    color: #f1f5f9;
    border-color: var(--ox-border);
}

/* All buttons using color: var(--ox-white) — force white text in dark mode */
[data-ox-theme="dark"] .ox-btn-primary,
[data-ox-theme="dark"] .ox-btn-info,
[data-ox-theme="dark"] .ox-btn-success,
[data-ox-theme="dark"] .ox-btn-danger,
[data-ox-theme="dark"] .ox-btn-warning,
[data-ox-theme="dark"] .ox-btn-late,
[data-ox-theme="dark"] .ox-turma-actions .ox-btn-primary,
[data-ox-theme="dark"] .ox-turma-actions .ox-btn-secondary {
    color: #fff !important;
}

/* -- Elevated surfaces (dropdowns, tooltips, popovers) -- */
[data-ox-theme="dark"] .ox-dropdown-menu,
[data-ox-theme="dark"] .ox-tooltip,
[data-ox-theme="dark"] .ox-popover {
    background-color: var(--ox-bg-elevated) !important;
    color: #e2e8f0;
    border-color: var(--ox-border) !important;
}

/* -- Error block -- */
[data-ox-theme="dark"] .ox-teachers-error {
    background: #450a0a;
    border-color: #991b1b;
    color: #fecaca;
}

/* -- Form controls -- */
[data-ox-theme="dark"] input,
[data-ox-theme="dark"] select,
[data-ox-theme="dark"] textarea {
    background-color: var(--ox-bg-inset) !important;
    color: #e2e8f0 !important;
    border-color: var(--ox-border) !important;
}

[data-ox-theme="dark"] input::placeholder,
[data-ox-theme="dark"] textarea::placeholder {
    color: #64748b !important;
}

[data-ox-theme="dark"] input:focus,
[data-ox-theme="dark"] select:focus,
[data-ox-theme="dark"] textarea:focus {
    border-color: var(--ox-primary) !important;
    box-shadow: 0 0 0 3px rgba(96,165,250,0.15) !important;
}

[data-ox-theme="dark"] label {
    color: #cbd5e1;
}

/* -- Tables -- */
[data-ox-theme="dark"] table {
    border-color: var(--ox-border);
}

[data-ox-theme="dark"] table th {
    background-color: var(--ox-bg-inset) !important;
    color: #94a3b8 !important;
    border-color: var(--ox-border) !important;
}

[data-ox-theme="dark"] table td {
    border-color: var(--ox-border) !important;
    color: #cbd5e1;
}

[data-ox-theme="dark"] table tr:hover td {
    background-color: rgba(96,165,250,0.05);
}

[data-ox-theme="dark"] .ox-cal-table th {
    background-color: var(--ox-bg-inset) !important;
}

/* -- Buttons -- */
[data-ox-theme="dark"] .ox-btn-primary {
    background-color: #2563eb;
    border-color: #2563eb;
    color: #fff;
}

[data-ox-theme="dark"] .ox-btn-primary:hover {
    background-color: #1d4ed8;
    border-color: #1d4ed8;
}

/* Force all secondary buttons to readable text in dark mode —
   .ox-btn-secondary uses color: var(--ox-white) which is dark in dark mode */
[data-ox-theme="dark"] .ox-btn-secondary {
    background-color: #475569 !important;
    color: #f1f5f9 !important;
    border-color: #64748b !important;
}

[data-ox-theme="dark"] .ox-btn-secondary:hover {
    background-color: #546478 !important;
}

[data-ox-theme="dark"] .ox-btn-success {
    background-color: #16a34a;
    color: #fff;
}

[data-ox-theme="dark"] .ox-btn-danger {
    background-color: #dc2626;
    color: #fff;
}

/* -- Links -- */
[data-ox-theme="dark"] a {
    color: #60a5fa;
}

[data-ox-theme="dark"] a:hover {
    color: #93c5fd;
}

/* -- Badges (softened dark-mode palettes) -- */
[data-ox-theme="dark"] .ox-badge-success {
    background: #052e16 !important;
    color: #86efac !important;
}

[data-ox-theme="dark"] .ox-badge-warning {
    background: #422006 !important;
    color: #fde68a !important;
}

[data-ox-theme="dark"] .ox-badge-danger {
    background: #450a0a !important;
    color: #fca5a5 !important;
}

[data-ox-theme="dark"] .ox-badge-info {
    background: #0c2d48 !important;
    color: #7dd3fc !important;
}

[data-ox-theme="dark"] .ox-badge-primary {
    background: #172554 !important;
    color: #93c5fd !important;
}

[data-ox-theme="dark"] .ox-badge-secondary {
    background: #1e293b !important;
    color: #94a3b8 !important;
}

[data-ox-theme="dark"] .ox-badge-dark {
    background: #334155 !important;
    color: #cbd5e1 !important;
}

[data-ox-theme="dark"] .ox-badge-late {
    background: #431407 !important;
    color: #fdba74 !important;
}

[data-ox-theme="dark"] .ox-badge {
    opacity: 1;
}

/* -- Alerts & status backgrounds -- */
[data-ox-theme="dark"] .ox-turma-alert-danger,
[data-ox-theme="dark"] .ox-alert-danger {
    background: #450a0a !important;
    color: #fca5a5 !important;
    border-color: #7f1d1d !important;
}

[data-ox-theme="dark"] .ox-alert-warning {
    background: #422006 !important;
    color: #fde68a !important;
    border-color: #78350f !important;
}

[data-ox-theme="dark"] .ox-alert-success {
    background: #052e16 !important;
    color: #86efac !important;
    border-color: #14532d !important;
}

[data-ox-theme="dark"] .ox-alert-info {
    background: #0c2d48 !important;
    color: #7dd3fc !important;
    border-color: #0e4166 !important;
}

/* -- Calendar component -- */
[data-ox-theme="dark"] .ox-cal-holiday {
    background: #422006 !important;
    color: #fde68a !important;
}

[data-ox-theme="dark"] .ox-cal-block-active {
    background: #991b1b !important;
    color: #fecaca !important;
}

/* -- Log actions -- */
[data-ox-theme="dark"] .ox-log-action-status_change {
    background: #422006 !important;
    color: #fde68a !important;
}

/* -- Follow-up dashboard -- */
[data-ox-theme="dark"] .ox-fup-card {
    border-color: var(--ox-border) !important;
}

[data-ox-theme="dark"] .ox-fup-tabs {
    border-color: var(--ox-border) !important;
}

[data-ox-theme="dark"] .ox-fup-risk-badge {
    background: #991b1b !important;
    color: #fecaca !important;
}

[data-ox-theme="dark"] .ox-fup-schedule {
    background: #172554 !important;
    border-color: #1e3a5f !important;
}

[data-ox-theme="dark"] .ox-fup-metric-danger {
    background: #450a0a !important;
    color: #fca5a5 !important;
}

[data-ox-theme="dark"] .ox-fup-metric-warning {
    background: #422006 !important;
    color: #fde68a !important;
}

[data-ox-theme="dark"] .ox-fup-assigned-section {
    background: var(--ox-bg-inset) !important;
    border-color: var(--ox-border) !important;
}

/* -- Career badges -- */
[data-ox-theme="dark"] .ox-career-badge-pre_expert {
    background: #431407 !important;
    color: #fdba74 !important;
}

[data-ox-theme="dark"] .ox-career-badge-master {
    background: linear-gradient(135deg, #92400e, #b45309) !important;
    color: #fde68a !important;
}

/* -- Gradients -- */
[data-ox-theme="dark"] .ox-tipo-conteudo-btn.active[data-tipo="class"] {
    background: linear-gradient(135deg, #1e3a5f 0%, #1e40af 100%) !important;
}

[data-ox-theme="dark"] .ox-tipo-conteudo-btn.active[data-tipo="tutoring"] {
    background: linear-gradient(135deg, #14532d 0%, #166534 100%) !important;
}

/* -- Hardcoded text colors → readable on dark -- */
[data-ox-theme="dark"] [style*="color:#333"],
[data-ox-theme="dark"] [style*="color: #333"] {
    color: #e2e8f0 !important;
}

[data-ox-theme="dark"] [style*="color:#666"],
[data-ox-theme="dark"] [style*="color: #666"] {
    color: #94a3b8 !important;
}

[data-ox-theme="dark"] [style*="color:#999"],
[data-ox-theme="dark"] [style*="color: #999"] {
    color: #64748b !important;
}

[data-ox-theme="dark"] [style*="color:#888"],
[data-ox-theme="dark"] [style*="color: #888"] {
    color: #64748b !important;
}

/* -- Hardcoded light backgrounds in inline styles -- */
[data-ox-theme="dark"] [style*="background:#fff"],
[data-ox-theme="dark"] [style*="background: #fff"],
[data-ox-theme="dark"] [style*="background-color:#fff"],
[data-ox-theme="dark"] [style*="background-color: #fff"],
[data-ox-theme="dark"] [style*="background: white"],
[data-ox-theme="dark"] [style*="background-color: white"] {
    background-color: var(--ox-bg-card) !important;
}

[data-ox-theme="dark"] [style*="background:#f8f9fa"],
[data-ox-theme="dark"] [style*="background: #f8f9fa"],
[data-ox-theme="dark"] [style*="background-color:#f8f9fa"],
[data-ox-theme="dark"] [style*="background:#f5f5f5"],
[data-ox-theme="dark"] [style*="background: #f5f5f5"],
[data-ox-theme="dark"] [style*="background:#fafafa"],
[data-ox-theme="dark"] [style*="background: #fafafa"] {
    background-color: var(--ox-bg-inset) !important;
}

/* -- Hardcoded border colors in inline styles -- */
[data-ox-theme="dark"] [style*="border-color:#ddd"],
[data-ox-theme="dark"] [style*="border-color: #ddd"],
[data-ox-theme="dark"] [style*="border: 1px solid #ddd"],
[data-ox-theme="dark"] [style*="border: 1px solid #eee"],
[data-ox-theme="dark"] [style*="border: 1px solid #e0e0e0"],
[data-ox-theme="dark"] [style*="border-top:1px solid #eee"],
[data-ox-theme="dark"] [style*="border-bottom:1px solid #eee"] {
    border-color: var(--ox-border) !important;
}

/* -- Hardcoded borders in CSS classes -- */
[data-ox-theme="dark"] .ox-turma-card,
[data-ox-theme="dark"] .ox-aula-card,
[data-ox-theme="dark"] .ox-aluno-card,
[data-ox-theme="dark"] .ox-presenca-card,
[data-ox-theme="dark"] .ox-counter-card,
[data-ox-theme="dark"] .ox-dashboard-section {
    border-color: var(--ox-border) !important;
}

/* -- Scrollbar dark mode -- */
[data-ox-theme="dark"] .ox-dashboard-sidebar::-webkit-scrollbar-track,
[data-ox-theme="dark"] .ox-teachers-dashboard::-webkit-scrollbar-track,
[data-ox-theme="dark"] .ox-coordinator-dashboard::-webkit-scrollbar-track,
[data-ox-theme="dark"] .ox-modal-content::-webkit-scrollbar-track {
    background: var(--ox-bg-inset);
}

[data-ox-theme="dark"] .ox-dashboard-sidebar::-webkit-scrollbar-thumb,
[data-ox-theme="dark"] .ox-teachers-dashboard::-webkit-scrollbar-thumb,
[data-ox-theme="dark"] .ox-coordinator-dashboard::-webkit-scrollbar-thumb,
[data-ox-theme="dark"] .ox-modal-content::-webkit-scrollbar-thumb {
    background: #475569;
}

[data-ox-theme="dark"] .ox-dashboard-sidebar,
[data-ox-theme="dark"] .ox-teachers-dashboard,
[data-ox-theme="dark"] .ox-coordinator-dashboard,
[data-ox-theme="dark"] .ox-modal-content {
    scrollbar-color: #475569 var(--ox-bg-inset);
}

/* -- Modal overlay -- */
[data-ox-theme="dark"] .ox-modal-overlay {
    background: rgba(0,0,0,0.6);
}

/* -- Progress bars -- */
[data-ox-theme="dark"] .ox-progress-bar {
    background-color: var(--ox-bg-inset);
}

/* -- Radio / checkbox labels -- */
[data-ox-theme="dark"] .ox-radio-label,
[data-ox-theme="dark"] .ox-checkbox-label {
    color: #cbd5e1;
    border-color: var(--ox-border);
}

[data-ox-theme="dark"] .ox-radio-label:hover,
[data-ox-theme="dark"] .ox-checkbox-label:hover {
    background-color: var(--ox-bg-elevated);
}

/* -- Tabs -- */
[data-ox-theme="dark"] .ox-tab.active,
[data-ox-theme="dark"] .ox-tab-btn.active {
    background-color: var(--ox-bg-card) !important;
    color: #e2e8f0;
    border-color: var(--ox-border);
}

[data-ox-theme="dark"] .ox-tab,
[data-ox-theme="dark"] .ox-tab-btn {
    color: #94a3b8;
}

[data-ox-theme="dark"] .ox-tab:hover,
[data-ox-theme="dark"] .ox-tab-btn:hover {
    color: #e2e8f0;
    background-color: var(--ox-bg-elevated);
}

/* -- Dashboard header border -- */
[data-ox-theme="dark"] .ox-dashboard-header {
    border-color: var(--ox-border);
}

/* -- Misc text overrides -- */
[data-ox-theme="dark"] .ox-turma-card h3,
[data-ox-theme="dark"] .ox-dashboard-section h2,
[data-ox-theme="dark"] .ox-dashboard-section h3,
[data-ox-theme="dark"] .ox-modal-header h3 {
    color: #f1f5f9;
}

[data-ox-theme="dark"] .ox-turma-meta span,
[data-ox-theme="dark"] .ox-turma-stats span,
[data-ox-theme="dark"] small,
[data-ox-theme="dark"] .ox-text-muted {
    color: #64748b;
}

/* -- Counter loading shimmer -- */
[data-ox-theme="dark"] .ox-counter-loading {
    background: linear-gradient(90deg, var(--ox-bg-inset) 25%, var(--ox-bg-elevated) 50%, var(--ox-bg-inset) 75%) !important;
}

/* -- Calendar table (monitor/tutor) -- */
[data-ox-theme="dark"] .ox-cal-table {
    border-color: var(--ox-border);
}

[data-ox-theme="dark"] .ox-cal-table th {
    background: var(--ox-bg-inset) !important;
    border-color: var(--ox-border) !important;
    color: #94a3b8 !important;
}

[data-ox-theme="dark"] .ox-cal-table td {
    border-color: var(--ox-border) !important;
    color: #cbd5e1;
}

[data-ox-theme="dark"] .ox-cal-table td:first-child {
    background: var(--ox-bg-inset) !important;
    color: #cbd5e1;
}

/* -- Coordinator / Reception actions bar -- */
[data-ox-theme="dark"] .ox-coordinator-actions {
    background: var(--ox-bg-elevated) !important;
    border: 1px solid var(--ox-border);
    box-shadow: 0 2px 4px rgba(0,0,0,0.3);
}

/* -- Collapsible sections (Calendario de Monitores etc.) -- */
[data-ox-theme="dark"] .ox-collapsible-header,
[data-ox-theme="dark"] .ox-mobile-collapsible-toggle {
    background: var(--ox-bg-card) !important;
    color: #e2e8f0;
    border-color: var(--ox-border) !important;
}

/* -- Calendar navigation (Anterior / Esta Semana / Próxima) -- */
[data-ox-theme="dark"] .ox-cal-nav button,
[data-ox-theme="dark"] .ox-cal-nav .ox-btn {
    background: var(--ox-bg-elevated) !important;
    color: #cbd5e1 !important;
    border-color: var(--ox-border) !important;
}

[data-ox-theme="dark"] .ox-cal-nav .ox-btn-primary,
[data-ox-theme="dark"] .ox-cal-nav button.active {
    background: var(--ox-primary) !important;
    color: #fff !important;
}

/* -- Calendar legend -- */
[data-ox-theme="dark"] .ox-cal-legend {
    color: #94a3b8;
}

/* -- Section wrappers that use var(--ox-white) -- */
[data-ox-theme="dark"] .ox-coordinator-section,
[data-ox-theme="dark"] .ox-reception-section {
    background: var(--ox-bg-card) !important;
    border-color: var(--ox-border) !important;
}

/* -- Sticky headers / top bars -- */
[data-ox-theme="dark"] .ox-sticky-header,
[data-ox-theme="dark"] .ox-page-header {
    background-color: var(--ox-bg-card) !important;
    border-color: var(--ox-border) !important;
}

/* -- Notification / toast -- */
[data-ox-theme="dark"] .ox-notification {
    background-color: var(--ox-bg-elevated) !important;
    color: #e2e8f0;
    border-color: var(--ox-border);
}

/* -- Awards section (Teacher of the Month) -- */
[data-ox-theme="dark"] .ox-awards-section {
    background: var(--ox-bg-card) !important;
    box-shadow: 0 1px 3px rgba(0,0,0,0.3);
}

[data-ox-theme="dark"] .ox-award-card {
    background: var(--ox-bg-inset) !important;
    border-color: var(--ox-border) !important;
}

[data-ox-theme="dark"] .ox-award-card-title {
    color: var(--ox-primary);
}

[data-ox-theme="dark"] .ox-award-name {
    color: #cbd5e1;
}

[data-ox-theme="dark"] .ox-award-score {
    color: #64748b;
}

[data-ox-theme="dark"] .ox-award-highlight {
    background: rgba(251, 191, 36, 0.1);
}

/* -- Counter cards (Pending, Ongoing, etc.) -- */
[data-ox-theme="dark"] .ox-counter-card {
    background: var(--ox-bg-elevated) !important;
    border: 1px solid var(--ox-border);
    box-shadow: 0 2px 4px rgba(0,0,0,0.3);
}

[data-ox-theme="dark"] .ox-counter-card:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,0.4);
    background: #2f4054 !important;
}

[data-ox-theme="dark"] .ox-counter-value {
    color: var(--ox-primary);
}

[data-ox-theme="dark"] .ox-counter-label {
    color: #94a3b8;
}

[data-ox-theme="dark"] .ox-counter-clickable.ox-counter-active {
    box-shadow: 0 2px 8px rgba(96,165,250,0.2);
}

/* -- Nivelamento / Placement cards -- */
[data-ox-theme="dark"] .ox-nivelamento-card {
    background: var(--ox-bg-card) !important;
    border-color: var(--ox-border) !important;
}

[data-ox-theme="dark"] .ox-nivelamento-card:hover {
    box-shadow: 0 2px 8px rgba(0,0,0,0.3);
}

[data-ox-theme="dark"] .ox-niv-card-header strong {
    color: #e2e8f0;
}

[data-ox-theme="dark"] .ox-niv-card-meta {
    color: #64748b;
}

[data-ox-theme="dark"] .ox-nivelamento-coordinator-section {
    background: var(--ox-bg-card) !important;
    border-color: var(--ox-border) !important;
}

/* -- Message request items -- */
[data-ox-theme="dark"] .ox-mensagem-request-item {
    background: var(--ox-bg-card) !important;
    box-shadow: 0 1px 3px rgba(0,0,0,0.3);
    color: #e2e8f0;
}

/* -- Scoring info (How is my score calculated) -- */
[data-ox-theme="dark"] .ox-scoring-info button {
    background: var(--ox-bg-card) !important;
    border-color: var(--ox-border) !important;
    color: #94a3b8 !important;
}

[data-ox-theme="dark"] #ox-scoring-info-body {
    background: var(--ox-bg-inset) !important;
    border-color: var(--ox-border) !important;
    color: #cbd5e1 !important;
}

[data-ox-theme="dark"] #ox-scoring-info-body h4 {
    color: #e2e8f0 !important;
}

[data-ox-theme="dark"] #ox-scoring-info-body table tr {
    border-color: var(--ox-border) !important;
}

[data-ox-theme="dark"] #ox-scoring-info-body table th {
    background: var(--ox-bg-elevated) !important;
}

/* -- Notification dropdown -- */
[data-ox-theme="dark"] #ox-notification-dropdown {
    background: var(--ox-bg-card) !important;
    border-color: var(--ox-border) !important;
    box-shadow: 0 4px 16px rgba(0,0,0,0.4) !important;
    color: #e2e8f0;
}

[data-ox-theme="dark"] #ox-notification-dropdown div[style*="border-bottom"] {
    border-color: var(--ox-border) !important;
}

/* -- Google Calendar status card -- */
[data-ox-theme="dark"] .ox-gcal-connection-status {
    background: var(--ox-bg-card) !important;
    border-color: var(--ox-border) !important;
    color: #e2e8f0;
}

/* -- Professor info / welcome header -- */
[data-ox-theme="dark"] .ox-professor-details h2 {
    color: #f1f5f9;
}

[data-ox-theme="dark"] .ox-dashboard-date {
    color: #94a3b8;
}

[data-ox-theme="dark"] .ox-units-list {
    color: #94a3b8;
}

/* -- Notification bell -- */
[data-ox-theme="dark"] #ox-notification-bell .dashicons {
    color: #94a3b8 !important;
}

/* -- Mobile collapsible sections -- */
[data-ox-theme="dark"] .ox-mobile-collapsible-toggle {
    color: #e2e8f0;
}

/* -- Sidebar sections -- */
[data-ox-theme="dark"] .ox-dashboard-sidebar h3,
[data-ox-theme="dark"] .ox-dashboard-sidebar h4 {
    color: #f1f5f9;
}

/* -- Empty state text -- */
[data-ox-theme="dark"] .ox-empty-state {
    color: #64748b !important;
}

/* -- Follow-up items (Pending Follow-ups) -- */
[data-ox-theme="dark"] .ox-fup-dashboard-followups {
    border-color: var(--ox-border) !important;
}

[data-ox-theme="dark"] .ox-fup-followup-item {
    background: var(--ox-bg-card) !important;
    border-color: var(--ox-border) !important;
    color: #e2e8f0;
}

[data-ox-theme="dark"] .ox-fup-followup-plan {
    background: var(--ox-bg-inset) !important;
    color: #cbd5e1 !important;
}

[data-ox-theme="dark"] .ox-fup-followup-info strong {
    color: #f1f5f9;
}

/* -- Tutoring / monitoria cards (inline styled) -- */
[data-ox-theme="dark"] .ox-monitoria-card,
[data-ox-theme="dark"] .ox-tutoring-request-card {
    background: var(--ox-bg-card) !important;
    border-color: var(--ox-border) !important;
    color: #cbd5e1 !important;
}

[data-ox-theme="dark"] .ox-monitoria-card strong,
[data-ox-theme="dark"] .ox-tutoring-request-card strong {
    color: #e2e8f0 !important;
}

/* -- Coordination request cards -- */
[data-ox-theme="dark"] .ox-coord-request-card {
    background: var(--ox-bg-card) !important;
    border-color: var(--ox-border) !important;
    color: #cbd5e1 !important;
}

/* ==========================================
   Dark Mode — Global Catch-All for Inline Styles
   Covers PHP-rendered elements with hardcoded colors
   ========================================== */

/* Light backgrounds → dark card */
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background:#fff"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background: #fff"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background:white"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background: white"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background-color:#fff"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background-color: #fff"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#fff"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #fff"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:white"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: white"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background-color:#fff"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background-color: #fff"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background:#fff"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background: #fff"],
[data-ox-theme="dark"] .ox-tutor-dashboard [style*="background:#fff"],
[data-ox-theme="dark"] .ox-tutor-dashboard [style*="background: #fff"] {
    background: var(--ox-bg-card) !important;
    color: #e2e8f0;
}

/* Pale backgrounds → dark inset */
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background:#f8f9fa"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background: #f8f9fa"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background:#f9f9f9"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background: #f9f9f9"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background:#f5f5f5"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background: #f5f5f5"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background:#fafafa"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background: #fafafa"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#f8f9fa"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #f8f9fa"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#f9f9f9"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #f9f9f9"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#f5f5f5"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #f5f5f5"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#fafafa"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #fafafa"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background:#f8f9fa"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background: #f8f9fa"],
[data-ox-theme="dark"] .ox-tutor-dashboard [style*="background:#f8f9fa"],
[data-ox-theme="dark"] .ox-tutor-dashboard [style*="background: #f8f9fa"] {
    background: var(--ox-bg-inset) !important;
    color: #cbd5e1;
}

/* Alert gradients (quiz pending, overdue banners) */
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="linear-gradient(135deg,#fff5f5"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="linear-gradient(135deg, #fff5f5"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="linear-gradient(135deg,#fff5f5"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="linear-gradient(135deg, #fff5f5"] {
    background: linear-gradient(135deg, #450a0a, #5c1616) !important;
    border-color: #7f1d1d !important;
    color: #fecaca;
}

[data-ox-theme="dark"] .ox-teachers-dashboard [style*="linear-gradient(135deg,#fffaf0"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="linear-gradient(135deg, #fffaf0"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="linear-gradient(135deg,#fffaf0"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="linear-gradient(135deg, #fffaf0"] {
    background: linear-gradient(135deg, #431407, #5c2a0e) !important;
    border-color: #78350f !important;
    color: #fed7aa;
}

[data-ox-theme="dark"] .ox-teachers-dashboard [style*="linear-gradient(135deg,#fffff0"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="linear-gradient(135deg, #fffff0"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="linear-gradient(135deg,#fffff0"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="linear-gradient(135deg, #fffff0"] {
    background: linear-gradient(135deg, #422006, #5c3a14) !important;
    border-color: #78350f !important;
    color: #fde68a;
}

/* Light green / success backgrounds */
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background: #f0f9f0"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background:#f0f9f0"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #f0f9f0"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#f0f9f0"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background: #f0f9f0"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background:#f0f9f0"] {
    background: #052e16 !important;
    border-color: #14532d !important;
    color: #86efac;
}

/* Light yellow / warning backgrounds */
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background: #fff3cd"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background:#fff3cd"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #fff3cd"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#fff3cd"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background: #fff3cd"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background:#fff3cd"] {
    background: #422006 !important;
    border-color: #78350f !important;
    color: #fde68a;
}

/* Light pink / danger backgrounds */
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background:#fee2e2"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background: #fee2e2"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#fee2e2"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #fee2e2"] {
    background: #450a0a !important;
    border-color: #7f1d1d !important;
    color: #fecaca;
}

/* Light blue backgrounds */
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background:#e3f2fd"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background: #e3f2fd"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#e3f2fd"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #e3f2fd"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="linear-gradient(135deg, #e3f2fd"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="linear-gradient(135deg,#e3f2fd"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="linear-gradient(135deg, #e3f2fd"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="linear-gradient(135deg,#e3f2fd"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="linear-gradient(135deg, #f0f7ff"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="linear-gradient(135deg,#f0f7ff"] {
    background: #172554 !important;
    border-color: #1e3a5f !important;
    color: #93c5fd;
}

/* Light purple backgrounds */
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background:#fff8e1"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background: #fff8e1"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#fff8e1"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #fff8e1"] {
    background: rgba(251, 191, 36, 0.1) !important;
    color: #fde68a;
}

/* Inline dark text colors → light */
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="color:#2d3748"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="color: #2d3748"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color:#2d3748"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color: #2d3748"] {
    color: #e2e8f0 !important;
}

[data-ox-theme="dark"] .ox-teachers-dashboard [style*="color:#333"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="color: #333"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color:#333"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color: #333"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="color:#333"],
[data-ox-theme="dark"] .ox-tutor-dashboard [style*="color:#333"] {
    color: #e2e8f0 !important;
}

[data-ox-theme="dark"] .ox-teachers-dashboard [style*="color:#444"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="color: #444"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color:#444"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color: #444"] {
    color: #cbd5e1 !important;
}

[data-ox-theme="dark"] .ox-teachers-dashboard [style*="color:#555"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="color: #555"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color:#555"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color: #555"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="color:#555"],
[data-ox-theme="dark"] .ox-tutor-dashboard [style*="color:#555"] {
    color: #94a3b8 !important;
}

[data-ox-theme="dark"] .ox-teachers-dashboard [style*="color:#666"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="color: #666"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color:#666"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color: #666"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="color:#666"],
[data-ox-theme="dark"] .ox-tutor-dashboard [style*="color:#666"] {
    color: #94a3b8 !important;
}

[data-ox-theme="dark"] .ox-teachers-dashboard [style*="color:#888"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="color: #888"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color:#888"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color: #888"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="color:#888"],
[data-ox-theme="dark"] .ox-tutor-dashboard [style*="color:#888"] {
    color: #64748b !important;
}

[data-ox-theme="dark"] .ox-teachers-dashboard [style*="color:#999"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="color: #999"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color:#999"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color: #999"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="color:#999"],
[data-ox-theme="dark"] .ox-tutor-dashboard [style*="color:#999"] {
    color: #64748b !important;
}

[data-ox-theme="dark"] .ox-teachers-dashboard [style*="color:#718096"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="color: #718096"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color:#718096"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color: #718096"] {
    color: #94a3b8 !important;
}

/* Inline border colors → dark border */
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="border:1px solid #ddd"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="border: 1px solid #ddd"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="border:1px solid #eee"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="border: 1px solid #eee"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="border:1px solid #e0e0e0"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="border: 1px solid #e0e0e0"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="border:1px solid #e9ecef"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="border: 1px solid #e9ecef"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="border: 1px solid #dee2e6"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border:1px solid #ddd"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border: 1px solid #ddd"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border:1px solid #eee"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border: 1px solid #eee"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border:1px solid #e0e0e0"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border: 1px solid #e0e0e0"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border:1px solid #e9ecef"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border: 1px solid #e9ecef"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border: 1px solid #dee2e6"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border:1px solid #ddd"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border: 1px solid #ddd"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border:1px solid #e0e0e0"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border: 1px solid #e0e0e0"],
[data-ox-theme="dark"] .ox-tutor-dashboard [style*="border:1px solid #ddd"],
[data-ox-theme="dark"] .ox-tutor-dashboard [style*="border: 1px solid #ddd"],
[data-ox-theme="dark"] .ox-tutor-dashboard [style*="border:1px solid #e0e0e0"],
[data-ox-theme="dark"] .ox-tutor-dashboard [style*="border: 1px solid #e0e0e0"] {
    border-color: var(--ox-border) !important;
}

/* Inline border-bottom / border-top */
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="border-bottom:1px solid #eee"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="border-bottom: 1px solid #eee"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="border-bottom:1px solid #dee2e6"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="border-bottom: 1px solid #dee2e6"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="border-top:1px solid #eee"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="border-top: 1px solid #eee"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border-bottom:1px solid #eee"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border-bottom: 1px solid #eee"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border-bottom:1px solid #dee2e6"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border-bottom: 1px solid #dee2e6"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border-top:1px solid #eee"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border-top: 1px solid #eee"] {
    border-color: var(--ox-border) !important;
}

/* Table rows with inline borders */
[data-ox-theme="dark"] .ox-teachers-dashboard tr[style*="border-bottom"],
[data-ox-theme="dark"] .ox-coordinator-dashboard tr[style*="border-bottom"] {
    border-color: var(--ox-border) !important;
}

[data-ox-theme="dark"] .ox-teachers-dashboard tr[style*="background:#e9ecef"],
[data-ox-theme="dark"] .ox-teachers-dashboard tr[style*="background: #e9ecef"],
[data-ox-theme="dark"] .ox-coordinator-dashboard tr[style*="background:#e9ecef"],
[data-ox-theme="dark"] .ox-coordinator-dashboard tr[style*="background: #e9ecef"],
[data-ox-theme="dark"] .ox-teachers-dashboard [style*="background:#e9ecef"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#e9ecef"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #e9ecef"] {
    background: var(--ox-bg-inset) !important;
    color: #94a3b8;
}

/* ==========================================
   Dark Mode — Coordinator Dashboard Specifics
   ========================================== */

/* Lesson plan toggle */
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#f8fbff"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #f8fbff"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#f7f9fc"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #f7f9fc"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#f0f4f8"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #f0f4f8"] {
    background: var(--ox-bg-card) !important;
    border-color: var(--ox-border) !important;
    color: #cbd5e1;
}

/* CPD session form wrapper */
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#f8f9fa"][style*="border:1px solid #e9ecef"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #f8f9fa"][style*="border: 1px solid #e9ecef"] {
    background: var(--ox-bg-inset) !important;
    border-color: var(--ox-border) !important;
}

/* CPD checkin panel */
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#fff"][style*="border-radius"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #fff"][style*="border-radius"] {
    background: var(--ox-bg-card) !important;
    color: #e2e8f0;
}

/* CPD idea cards */
[data-ox-theme="dark"] .ox-cpd-idea-card {
    background: var(--ox-bg-card) !important;
    border-color: var(--ox-border) !important;
    color: #cbd5e1;
}

[data-ox-theme="dark"] .ox-cpd-idea-card small {
    color: #64748b !important;
}

[data-ox-theme="dark"] .ox-cpd-idea-card button {
    background: var(--ox-bg-elevated) !important;
    border-color: var(--ox-border) !important;
    color: #cbd5e1 !important;
}

[data-ox-theme="dark"] .ox-cpd-idea-card button:hover {
    background: #334155 !important;
}

[data-ox-theme="dark"] .ox-cpd-idea-card button.primary {
    background: var(--ox-primary) !important;
    color: #fff !important;
}

[data-ox-theme="dark"] .ox-cpd-idea-card button.danger {
    color: #f87171 !important;
    border-color: #f87171 !important;
}

/* CPD tab */
[data-ox-theme="dark"] .ox-cpd-tab {
    color: #94a3b8;
}

[data-ox-theme="dark"] .ox-cpd-tab.active {
    color: var(--ox-primary);
}

/* Coordinator text fix — inline #1a1a1a, #6c757d */
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color:#1a1a1a"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color: #1a1a1a"] {
    color: #e2e8f0 !important;
}

[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color:#6c757d"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color: #6c757d"] {
    color: #94a3b8 !important;
}

[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color:#607d8b"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color: #607d8b"] {
    color: #94a3b8 !important;
}

[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color:#1976d2"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color: #1976d2"] {
    color: #60a5fa !important;
}

[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color:#1e3a5f"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="color: #1e3a5f"] {
    color: #93c5fd !important;
}

/* Informed absences cards */
[data-ox-theme="dark"] .ox-fi-coord-card,
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#e3f2fd"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #e3f2fd"] {
    background: #172554 !important;
    border-color: #1e3a5f !important;
    color: #93c5fd;
}

/* Past absence cards */
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#f5f5f5"][style*="border:1px solid #e0e0e0"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #f5f5f5"][style*="border: 1px solid #e0e0e0"] {
    background: var(--ox-bg-inset) !important;
    border-color: var(--ox-border) !important;
    color: #cbd5e1;
}

/* Coordinator specific borders */
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border:1.5px solid #dee2e6"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border: 1.5px solid #dee2e6"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border:1px solid #ccc"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border: 1px solid #ccc"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border:1px solid #90caf9"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="border: 1px solid #90caf9"] {
    border-color: var(--ox-border) !important;
}

/* Coord request items */
[data-ox-theme="dark"] .ox-coord-request-item,
[data-ox-theme="dark"] .ox-coord-request-card {
    background: var(--ox-bg-card) !important;
    border-color: var(--ox-border) !important;
    color: #cbd5e1;
}

[data-ox-theme="dark"] .ox-coord-request-item textarea,
[data-ox-theme="dark"] .ox-coord-request-card textarea {
    background: var(--ox-bg-inset) !important;
    border-color: var(--ox-border) !important;
    color: #e2e8f0 !important;
}

/* Permissions section badges */
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#e0e7ff"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #e0e7ff"] {
    background: #1e1b4b !important;
    color: #a5b4fc !important;
}

[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#fce7f3"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #fce7f3"] {
    background: #500724 !important;
    color: #f9a8d4 !important;
}

/* Status badges in coordinator */
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#e2e8f0"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #e2e8f0"] {
    background: var(--ox-bg-elevated) !important;
    color: #94a3b8 !important;
}

/* Toggle switch in coordinator */
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background:#ccc"],
[data-ox-theme="dark"] .ox-coordinator-dashboard [style*="background: #ccc"] {
    background: #475569 !important;
}

/* Form builder modal */
[data-ox-theme="dark"] .ox-form-builder-container {
    background: var(--ox-bg-card) !important;
    color: #e2e8f0;
}

/* ==========================================
   Dark Mode — Reception Dashboard Specifics
   ========================================== */

/* Calendar slot badges */
[data-ox-theme="dark"] .ox-cal-available {
    background: #052e16 !important;
    color: #86efac !important;
}

[data-ox-theme="dark"] .ox-cal-booked {
    background: #172554 !important;
    color: #93c5fd !important;
}

[data-ox-theme="dark"] .ox-cal-blocked {
    background: #450a0a !important;
    color: #fca5a5 !important;
}

[data-ox-theme="dark"] .ox-cal-holiday {
    background: #422006 !important;
    color: #fde68a !important;
}

[data-ox-theme="dark"] .ox-cal-empty {
    color: #475569 !important;
}

[data-ox-theme="dark"] .ox-cal-today-col {
    background: rgba(251, 191, 36, 0.08) !important;
}

/* Recording cards (SectionPendingItems) */
[data-ox-theme="dark"] .ox-recording-card {
    background: var(--ox-bg-card) !important;
    border-color: var(--ox-border) !important;
    color: #cbd5e1;
}

[data-ox-theme="dark"] .ox-recording-class {
    color: #e2e8f0 !important;
}

[data-ox-theme="dark"] .ox-recording-meta {
    color: #94a3b8 !important;
}

[data-ox-theme="dark"] .ox-recording-meta .dashicons {
    color: #64748b !important;
}

[data-ox-theme="dark"] .ox-recording-content {
    color: #94a3b8 !important;
}

[data-ox-theme="dark"] .ox-recording-footer {
    border-color: var(--ox-border) !important;
}

[data-ox-theme="dark"] .ox-recording-unit {
    color: #64748b !important;
}

[data-ox-theme="dark"] .ox-show-more-btn {
    background: var(--ox-bg-elevated) !important;
    border-color: var(--ox-border) !important;
    color: #94a3b8 !important;
}

[data-ox-theme="dark"] .ox-show-more-btn:hover {
    background: var(--ox-bg-card) !important;
    color: #e2e8f0 !important;
}

/* Sidebar cards */
[data-ox-theme="dark"] .ox-waitlist-notified-card,
[data-ox-theme="dark"] .ox-reception-lembrete-card,
[data-ox-theme="dark"] .ox-confirm-card,
[data-ox-theme="dark"] .ox-mensagem-card,
[data-ox-theme="dark"] .ox-homework-card {
    background: var(--ox-bg-card) !important;
    border-color: var(--ox-border) !important;
    color: #cbd5e1;
}

[data-ox-theme="dark"] .ox-waitlist-notified-card strong,
[data-ox-theme="dark"] .ox-reception-lembrete-card strong,
[data-ox-theme="dark"] .ox-confirm-card strong,
[data-ox-theme="dark"] .ox-mensagem-card strong,
[data-ox-theme="dark"] .ox-homework-card strong {
    color: #e2e8f0 !important;
}

/* Edit student search panel */
[data-ox-theme="dark"] #ox-edit-student-panel {
    background: var(--ox-bg-card) !important;
    border-color: var(--ox-border) !important;
}

[data-ox-theme="dark"] #ox-edit-student-panel input {
    border-color: var(--ox-border) !important;
}

/* Monitoria pending warning */
[data-ox-theme="dark"] #create-monitoria-pending-warning {
    background: #422006 !important;
    border-color: #78350f !important;
    color: #fde68a !important;
}

/* Monitoria aluno search results dropdown */
[data-ox-theme="dark"] #create-monitoria-aluno-results,
[data-ox-theme="dark"] #waitlist-aluno-results,
[data-ox-theme="dark"] #fi-aluno-results {
    background: var(--ox-bg-card) !important;
    border-color: var(--ox-border) !important;
    color: #e2e8f0;
}

/* Empty state messages */
[data-ox-theme="dark"] .ox-empty-small,
[data-ox-theme="dark"] .ox-empty-message {
    color: #64748b !important;
}

/* Reception specific stat cards (faltas, informadas, etc.) */
[data-ox-theme="dark"] .ox-reception-dashboard .ox-turma-card {
    background: var(--ox-bg-card) !important;
    border-color: var(--ox-border) !important;
}

[data-ox-theme="dark"] .ox-reception-dashboard .ox-turma-card h4 {
    color: #e2e8f0 !important;
}

/* Section headers within reception */
[data-ox-theme="dark"] .ox-reception-dashboard .ox-section-header {
    color: #f1f5f9;
}

[data-ox-theme="dark"] .ox-reception-dashboard .ox-section-header h3 {
    color: #f1f5f9;
}

/* Catch-all for any remaining light backgrounds inside reception */
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background:#f9f9f9"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background: #f9f9f9"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background:#fffdf0"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background: #fffdf0"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background:#fff8e1"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background: #fff8e1"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background:#fff3e0"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background: #fff3e0"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background:#fff5f5"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background: #fff5f5"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background:#e8f5e9"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background: #e8f5e9"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background:#e3f2fd"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background: #e3f2fd"] {
    background: var(--ox-bg-card) !important;
    color: #cbd5e1;
}

[data-ox-theme="dark"] .ox-reception-dashboard [style*="background:#f5f5f5"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background: #f5f5f5"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background:#fafafa"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="background: #fafafa"] {
    background: var(--ox-bg-inset) !important;
    color: #cbd5e1;
}

/* Reception inline border catch-all */
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border:1px solid #e9ecef"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border: 1px solid #e9ecef"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border:1px solid #ccc"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border: 1px solid #ccc"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border:1px solid #dee2e6"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border: 1px solid #dee2e6"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border:1.5px solid #dee2e6"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border: 1.5px solid #dee2e6"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border:1px solid #a5d6a7"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border: 1px solid #a5d6a7"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border:1px solid #c3e6cb"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border: 1px solid #c3e6cb"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border:1px solid #90caf9"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border: 1px solid #90caf9"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border:1px solid #ffc107"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border: 1px solid #ffc107"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border:1px solid #ffe082"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border: 1px solid #ffe082"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border:1px solid #ffeeba"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border: 1px solid #ffeeba"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border:1px solid #ffe0b2"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border: 1px solid #ffe0b2"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border:1px solid #f5c6cb"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border: 1px solid #f5c6cb"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border:1px solid #e8e8e8"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border: 1px solid #e8e8e8"] {
    border-color: var(--ox-border) !important;
}

/* Reception inline text color catch-all */
[data-ox-theme="dark"] .ox-reception-dashboard [style*="color:#333"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="color: #333"] {
    color: #e2e8f0 !important;
}

[data-ox-theme="dark"] .ox-reception-dashboard [style*="color:#444"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="color: #444"] {
    color: #cbd5e1 !important;
}

[data-ox-theme="dark"] .ox-reception-dashboard [style*="color:#495057"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="color: #495057"] {
    color: #94a3b8 !important;
}

[data-ox-theme="dark"] .ox-reception-dashboard [style*="color:#555"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="color: #555"] {
    color: #94a3b8 !important;
}

[data-ox-theme="dark"] .ox-reception-dashboard [style*="color:#666"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="color: #666"] {
    color: #94a3b8 !important;
}

[data-ox-theme="dark"] .ox-reception-dashboard [style*="color:#777"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="color: #777"] {
    color: #64748b !important;
}

[data-ox-theme="dark"] .ox-reception-dashboard [style*="color:#856404"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="color: #856404"] {
    color: #fde68a !important;
}

/* Reception table rows with inline backgrounds */
[data-ox-theme="dark"] .ox-reception-dashboard tr[style*="background:#f8f9fa"],
[data-ox-theme="dark"] .ox-reception-dashboard tr[style*="background: #f8f9fa"] {
    background: var(--ox-bg-inset) !important;
}

/* Modal footer borders */
[data-ox-theme="dark"] .ox-reception-dashboard .ox-modal-footer[style*="border-top"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border-top:1px solid #e9ecef"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border-top: 1px solid #e9ecef"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border-top:1px solid #eee"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border-top: 1px solid #eee"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border-top:1px solid #e0e0e0"],
[data-ox-theme="dark"] .ox-reception-dashboard [style*="border-top: 1px solid #e0e0e0"] {
    border-color: var(--ox-border) !important;
}

/* ==========================================
   Dark Mode Toggle Switch
   ========================================== */
.ox-dark-toggle {
    position: fixed;
    bottom: 90px;
    right: 28px;
    z-index: 9999;
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--ox-white);
    border: 1px solid var(--ox-border);
    border-radius: 30px;
    padding: 6px 14px;
    box-shadow: var(--ox-shadow-lg);
    cursor: pointer;
    transition: var(--ox-transition);
    font-size: 13px;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    color: var(--ox-dark);
    user-select: none;
}

.ox-dark-toggle:hover {
    transform: scale(1.03);
    box-shadow: 0 6px 20px rgba(0,0,0,0.2);
}

.ox-dark-toggle__track {
    position: relative;
    width: 40px;
    height: 22px;
    background: #cbd5e0;
    border-radius: 11px;
    transition: background 0.3s ease;
    flex-shrink: 0;
}

[data-ox-theme="dark"] .ox-dark-toggle__track {
    background: var(--ox-primary);
}

.ox-dark-toggle__thumb {
    position: absolute;
    top: 2px;
    left: 2px;
    width: 18px;
    height: 18px;
    background: #fff;
    border-radius: 50%;
    transition: transform 0.3s ease;
    box-shadow: 0 1px 3px rgba(0,0,0,0.2);
}

[data-ox-theme="dark"] .ox-dark-toggle__thumb {
    transform: translateX(18px);
}

.ox-dark-toggle__icon {
    font-size: 16px;
    line-height: 1;
}

/* ==========================================
   Custom Scrollbar
   ========================================== */
.ox-dashboard-sidebar::-webkit-scrollbar,
.ox-teachers-dashboard::-webkit-scrollbar,
.ox-coordinator-dashboard::-webkit-scrollbar,
.ox-modal-content::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}

.ox-dashboard-sidebar::-webkit-scrollbar-track,
.ox-teachers-dashboard::-webkit-scrollbar-track,
.ox-coordinator-dashboard::-webkit-scrollbar-track,
.ox-modal-content::-webkit-scrollbar-track {
    background: var(--ox-light);
    border-radius: 4px;
}

.ox-dashboard-sidebar::-webkit-scrollbar-thumb,
.ox-teachers-dashboard::-webkit-scrollbar-thumb,
.ox-coordinator-dashboard::-webkit-scrollbar-thumb,
.ox-modal-content::-webkit-scrollbar-thumb {
    background: var(--ox-secondary);
    border-radius: 4px;
}

.ox-dashboard-sidebar::-webkit-scrollbar-thumb:hover,
.ox-teachers-dashboard::-webkit-scrollbar-thumb:hover,
.ox-coordinator-dashboard::-webkit-scrollbar-thumb:hover,
.ox-modal-content::-webkit-scrollbar-thumb:hover {
    background: var(--ox-primary);
}

/* Firefox scrollbar */
.ox-dashboard-sidebar,
.ox-teachers-dashboard,
.ox-coordinator-dashboard,
.ox-modal-content {
    scrollbar-width: thin;
    scrollbar-color: var(--ox-secondary) var(--ox-light);
}

/* ==========================================
   Base Styles
   ========================================== */
.ox-teachers-dashboard,
.ox-teachers-turma,
.ox-teachers-presencas,
.ox-teachers-aulas {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    color: var(--ox-dark);
    line-height: 1.5;
    padding: 20px;
}

.ox-teachers-error {
    background: #fee2e2;
    border: 1px solid var(--ox-danger);
    color: #991b1b;
    padding: 15px 20px;
    border-radius: var(--ox-radius);
    margin: 20px 0;
}

/* ==========================================
   Dashboard Layout - Two Columns
   ========================================== */
.ox-dashboard-layout {
    display: grid;
    grid-template-columns: 1fr 380px;
    gap: 25px;
    align-items: start;
}

.ox-dashboard-main {
    min-width: 0;
}

.ox-dashboard-sidebar {
}

@media (max-width: 1100px) {
    .ox-dashboard-layout {
        grid-template-columns: 1fr;
    }
}

/* ==========================================
   Scrollable List Containers (sidebar + main)
   ========================================== */
.ox-dashboard-sidebar .ox-aulas-hoje-list,
.ox-dashboard-sidebar .ox-aulas-pendentes-list,
.ox-dashboard-sidebar .ox-monitoria-list,
.ox-dashboard-sidebar .ox-mensagem-list,
.ox-dashboard-sidebar .ox-observacoes-list,
.ox-dashboard-sidebar .ox-faltas-alerts-list,
.ox-dashboard-sidebar .ox-recordings-pending-list {
    max-height: 350px;
    overflow-y: auto;
    overflow-x: hidden;
}

.ox-dashboard-main .ox-registros-pendentes,
.ox-dashboard-main .ox-presencas-pendentes,
.ox-dashboard-main .ox-fup-dashboard-followups {
    max-height: 500px;
    overflow-y: auto;
}

/* ==========================================
   Mobile Collapsible Sections
   ========================================== */
/* Toggle button: hidden on desktop */
.ox-mobile-collapsible-toggle {
    display: none;
}

@media (max-width: 768px) {
    .ox-mobile-collapsible-toggle {
        display: flex;
        align-items: center;
        gap: 8px;
        width: 100%;
        padding: 12px 16px;
        margin-bottom: 10px;
        background: var(--ox-white);
        border: 1px solid var(--ox-border);
        border-radius: var(--ox-radius);
        box-shadow: var(--ox-shadow);
        font-size: 0.95rem;
        font-weight: 600;
        color: var(--ox-primary);
        cursor: pointer;
    }

    .ox-mobile-collapsible-toggle .dashicons:first-child {
        font-size: 18px;
        width: 18px;
        height: 18px;
    }

    .ox-mobile-collapsible-arrow {
        margin-left: auto;
        font-size: 16px;
        width: 16px;
        height: 16px;
        transition: transform 0.2s;
    }

    .ox-mobile-expanded .ox-mobile-collapsible-arrow {
        transform: rotate(180deg);
    }

    .ox-mobile-collapsible-content {
        display: none;
    }

    .ox-mobile-expanded .ox-mobile-collapsible-content {
        display: block;
    }

    /* Compact counter cards on mobile */
    .ox-dashboard-counters {
        grid-template-columns: repeat(3, 1fr);
        gap: 8px;
        margin-bottom: 15px;
    }

    .ox-counter-card {
        padding: 8px 6px;
    }

    .ox-counter-value {
        font-size: 1.3rem;
    }

    .ox-counter-label {
        font-size: 0.65rem;
    }

    .ox-dashboard-resources {
        grid-template-columns: repeat(4, 1fr);
        gap: 8px;
    }

    .ox-dashboard-resources .ox-counter-card {
        padding: 8px 4px;
    }

    .ox-dashboard-resources .ox-counter-value .dashicons {
        font-size: 1.5rem !important;
        width: 1.5rem !important;
        height: 1.5rem !important;
    }

    .ox-dashboard-resources .ox-counter-label {
        font-size: 0.65rem;
    }
}

@media (max-width: 400px) {
    .ox-dashboard-counters {
        grid-template-columns: repeat(2, 1fr);
    }

    .ox-dashboard-resources {
        grid-template-columns: repeat(3, 1fr);
    }
}

/* ==========================================
   Dashboard Header
   ========================================== */
.ox-dashboard-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
    padding-bottom: 20px;
    border-bottom: 2px solid var(--ox-border);
}

/* Unit Filter */
.ox-dashboard-filter {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 20px;
    padding: 12px 15px;
    background: var(--ox-light);
    border-radius: var(--ox-radius);
    border: 1px solid var(--ox-border);
}

.ox-dashboard-filter label {
    font-weight: 600;
    color: var(--ox-secondary);
    white-space: nowrap;
}

.ox-dashboard-filter select {
    padding: 8px 12px;
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius-sm);
    background: var(--ox-white);
    font-size: 0.9rem;
    min-width: 150px;
    cursor: pointer;
}

.ox-dashboard-filter select:focus {
    outline: none;
    border-color: var(--ox-primary);
    box-shadow: 0 0 0 2px rgba(30, 58, 95, 0.1);
}

/* Filter empty states */
.ox-filter-empty {
    padding: 20px;
    text-align: center;
    color: var(--ox-secondary);
    font-style: italic;
}

.ox-filter-empty-row td {
    padding: 20px !important;
    text-align: center;
    color: var(--ox-secondary);
    font-style: italic;
}

/* Turma professor name in meta */
.ox-turma-professor {
    font-weight: 500;
    color: var(--ox-primary);
}

.ox-professor-info {
    display: flex;
    align-items: center;
    gap: 15px;
}

.ox-professor-avatar {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    object-fit: cover;
    border: 3px solid var(--ox-primary);
}

.ox-professor-details h2 {
    margin: 0 0 5px 0;
    font-size: 1.5rem;
    color: var(--ox-primary);
}

.ox-professor-score {
    color: var(--ox-secondary);
    font-size: 0.9rem;
}

.ox-professor-role {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.ox-dashboard-date {
    font-size: 1.1rem;
    color: var(--ox-secondary);
}

/* ==========================================
   Counters
   ========================================== */
.ox-dashboard-counters {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 20px;
    margin-bottom: 30px;
}

.ox-dashboard-resources {
    margin-top: -15px;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
}

.ox-teacher-compact .ox-counter-card {
    padding: 12px 8px;
}

.ox-teacher-compact .ox-counter-value {
    font-size: 1.5rem;
}

.ox-teacher-compact .ox-counter-label {
    font-size: 0.75rem;
}

/* Quick Links Bar (Usage Guide, Culture Manual) */
.ox-dashboard-quick-links {
    display: flex;
    flex-wrap: nowrap;
    gap: 10px;
    margin-bottom: 20px;
}
.ox-dashboard-quick-links .ox-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    text-decoration: none;
    font-size: 0.9rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
    flex-shrink: 1;
}
.ox-dashboard-quick-links .dashicons {
    font-size: 16px;
    width: 16px;
    height: 16px;
}

.ox-counter-card {
    background: var(--ox-white);
    border-radius: var(--ox-radius);
    padding: 20px;
    text-align: center;
    box-shadow: var(--ox-shadow);
    border-left: 4px solid var(--ox-primary);
    transition: transform 0.15s ease, box-shadow 0.15s ease, border-left-color 0.15s ease;
}
.ox-counter-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0,0,0,0.12);
}

.ox-counter-card.ox-counter-warning {
    border-left-color: var(--ox-warning);
}

.ox-counter-card.ox-counter-success {
    border-left-color: var(--ox-success, #28a745);
}

.ox-counter-card.ox-counter-info {
    border-left-color: var(--ox-info, #17a2b8);
}

.ox-counter-card.ox-counter-secondary {
    border-left-color: var(--ox-secondary, #6c757d);
}

.ox-counter-card.ox-counter-primary {
    border-left-color: var(--ox-primary, #0066cc);
}

.ox-counter-card.ox-counter-danger {
    border-left-color: var(--ox-danger, #dc3545);
}

.ox-student-status-counters {
    margin-top: 10px;
}

.ox-counter-value {
    display: block;
    font-size: 2.5rem;
    font-weight: 700;
    color: var(--ox-primary);
}

.ox-counter-label {
    display: block;
    font-size: 0.85rem;
    color: var(--ox-secondary);
    margin-top: 5px;
}

/* Clickable counter cards */
.ox-counter-clickable {
    cursor: pointer;
    user-select: none;
}
.ox-counter-clickable:active {
    transform: translateY(0);
}
.ox-counter-clickable.ox-counter-active {
    border-left-color: var(--ox-primary);
    box-shadow: 0 2px 8px rgba(0,102,204,0.2);
}

/* Counter loading state */
.ox-counter-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 2.5rem;
}

/* Lazy section placeholder */
.ox-section-placeholder {
    text-align: center;
    padding: 30px 20px;
    color: #888;
    font-size: 0.9em;
}
.ox-section-placeholder .dashicons {
    font-size: 20px;
    width: 20px;
    height: 20px;
    margin-right: 6px;
    vertical-align: middle;
}

/* Lazy section fade-in */
.ox-section-lazy.ox-section-loaded .ox-section-content {
    animation: oxFadeIn 0.3s ease;
}

@keyframes oxFadeIn {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ==========================================
   Sections
   ========================================== */
.ox-dashboard-section,
.ox-aulas-section {
    background: var(--ox-white);
    border-radius: var(--ox-radius);
    padding: 25px;
    margin-bottom: 25px;
    box-shadow: var(--ox-shadow);
}

.ox-dashboard-section h3,
.ox-aulas-section h3 {
    margin: 0 0 20px 0;
    font-size: 1.2rem;
    color: var(--ox-primary);
    padding-bottom: 10px;
    border-bottom: 1px solid var(--ox-border);
}

.ox-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}

.ox-section-header h2 {
    margin: 0;
    font-size: 1.3rem;
    color: var(--ox-primary);
}

/* ==========================================
   Lembretes
   ========================================== */
.ox-lembretes-urgentes {
    background: #fff5f5;
    border-left: 4px solid var(--ox-danger);
}

.ox-lembrete-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.ox-lembrete-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 12px;
    border-radius: var(--ox-radius-sm);
    margin-bottom: 10px;
    background: var(--ox-white);
}

.ox-lembrete-item.ox-priority-1 {
    border-left: 3px solid var(--ox-danger);
}

.ox-lembrete-item.ox-priority-2 {
    border-left: 3px solid var(--ox-warning);
}

.ox-lembrete-content strong {
    display: block;
    margin-bottom: 3px;
}

.ox-lembrete-content p {
    margin: 0;
    font-size: 0.85rem;
    color: var(--ox-secondary);
}

/* ==========================================
   Turmas Grid
   ========================================== */
.ox-turmas-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 20px;
}

.ox-turma-card {
    background: var(--ox-light);
    border-radius: var(--ox-radius);
    padding: 20px;
    border: 1px solid var(--ox-border);
    transition: var(--ox-transition);
}

.ox-turma-card:hover {
    box-shadow: var(--ox-shadow-lg);
    transform: translateY(-2px);
}

.ox-turma-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 15px;
}

.ox-turma-header h4 {
    margin: 0;
    font-size: 1.1rem;
    color: var(--ox-primary);
}

.ox-turma-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    font-size: 0.85rem;
    color: var(--ox-secondary);
    margin-bottom: 15px;
}

.ox-turma-progress {
    margin-bottom: 15px;
}

.ox-progress-bar {
    height: 8px;
    background: var(--ox-border);
    border-radius: 4px;
    overflow: hidden;
    margin-bottom: 5px;
}

.ox-progress-fill {
    height: 100%;
    background: var(--ox-primary);
    border-radius: 4px;
    transition: width 0.3s ease;
}

.ox-progress-label {
    font-size: 0.8rem;
    color: var(--ox-secondary);
}

.ox-turma-stats {
    display: flex;
    gap: 15px;
    margin-bottom: 15px;
    font-size: 0.85rem;
}

.ox-turma-stats .dashicons {
    font-size: 16px;
    width: 16px;
    height: 16px;
    margin-right: 3px;
}

.ox-turma-actions {
    display: flex;
    gap: 8px;
    justify-content: flex-end;
    margin-top: 10px;
}

.ox-turma-actions .ox-btn {
    padding: 6px 14px;
    font-size: 0.85rem;
    min-width: 70px;
}

.ox-turma-actions .ox-btn-primary {
    background: var(--ox-primary);
    color: var(--ox-white);
}

.ox-turma-actions .ox-btn-primary:hover {
    background: var(--ox-primary-light);
}

.ox-turma-actions .ox-btn-secondary {
    background: var(--ox-info);
    color: var(--ox-white);
}

.ox-turma-actions .ox-btn-secondary:hover {
    background: #138496;
}

.ox-turma-actions .ox-btn-secondary:focus {
    box-shadow: 0 0 0 3px rgba(23, 162, 184, 0.3);
}

.ox-turma-actions .ox-btn-secondary:active {
    background: #117a8b;
}

.ox-turma-actions .ox-btn-outline {
    background: transparent;
    border: 1px solid var(--ox-border);
    color: var(--ox-secondary);
    min-width: auto;
    padding: 6px 10px;
}

.ox-turma-actions .ox-btn-outline:hover {
    background: var(--ox-light);
    color: var(--ox-primary);
    border-color: var(--ox-primary);
}

.ox-turma-actions .ox-btn-outline .dashicons {
    font-size: 16px;
    width: 16px;
    height: 16px;
    line-height: 1;
}

/* ==========================================
   Badges
   ========================================== */
.ox-badge,
.ox-turma-badge {
    display: inline-block;
    padding: 4px 10px;
    font-size: 0.75rem;
    font-weight: 600;
    border-radius: 20px;
    text-transform: uppercase;
}

.ox-badge-success, .ox-badge-em_curso {
    background: #d4edda;
    color: #155724;
}

.ox-badge-warning, .ox-badge-aberta {
    background: #fff3cd;
    color: #856404;
}

.ox-badge-danger, .ox-badge-fechada {
    background: #f8d7da;
    color: #721c24;
}

.ox-badge-late {
    background: #ffe0b2;
    color: #e65100;
}

.ox-badge-info {
    background: #d1ecf1;
    color: #0c5460;
}

.ox-badge-primary {
    background: #cce5ff;
    color: #004085;
}

.ox-badge-secondary {
    background: #e2e3e5;
    color: #383d41;
}

.ox-badge-dark {
    background: #d6d8db;
    color: #1b1e21;
}

/* ==========================================
   Buttons
   ========================================== */
.ox-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 10px 18px;
    font-size: 0.9rem;
    font-weight: 500;
    border: none;
    border-radius: var(--ox-radius-sm);
    cursor: pointer;
    transition: var(--ox-transition);
    text-decoration: none;
}

.ox-btn:focus {
    outline: none;
}

.ox-btn:active {
    transform: translateY(1px);
}

.ox-btn:disabled,
.ox-btn.ox-disabled {
    opacity: 0.6;
    cursor: not-allowed;
    transform: none;
    pointer-events: none;
}

.ox-btn-primary {
    background: var(--ox-primary);
    color: var(--ox-white);
}

.ox-btn-primary:hover {
    background: var(--ox-primary-light);
}

.ox-btn-primary:focus {
    outline: none;
    box-shadow: 0 0 0 3px rgba(30, 58, 95, 0.3);
}

.ox-btn-primary:active {
    background: #152a45;
    transform: translateY(1px);
}

.ox-btn-secondary {
    background: var(--ox-secondary);
    color: var(--ox-white);
}

.ox-btn-secondary:hover {
    background: #5a6a7a;
}

.ox-btn-secondary:focus {
    outline: none;
    box-shadow: 0 0 0 3px rgba(108, 117, 125, 0.3);
}

.ox-btn-secondary:active {
    background: #495057;
    transform: translateY(1px);
}

.ox-btn-success {
    background: var(--ox-success);
    color: var(--ox-white);
}

.ox-btn-success:hover {
    background: #218838;
}

.ox-btn-success:focus {
    outline: none;
    box-shadow: 0 0 0 3px rgba(40, 167, 69, 0.3);
}

.ox-btn-success:active {
    background: #1e7e34;
    transform: translateY(1px);
}

/* ── Content Type Toggle ─────────────────────────── */
.ox-tipo-conteudo-toggle {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0;
    border-radius: 10px;
    overflow: hidden;
    border: 1.5px solid #dee2e6;
    background: #f8f9fa;
}
.ox-tipo-conteudo-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 12px 10px;
    cursor: pointer;
    font-size: 0.9rem;
    font-weight: 600;
    color: #6c757d;
    background: #f8f9fa;
    transition: all 0.2s ease;
    user-select: none;
    text-align: center;
    margin: 0;
    border: none;
    position: relative;
}
.ox-tipo-conteudo-btn:first-child {
    border-right: 1.5px solid #dee2e6;
}
.ox-tipo-conteudo-btn input[type="radio"] {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
    pointer-events: none;
}
.ox-tipo-conteudo-btn .dashicons {
    font-size: 18px;
    width: 18px;
    height: 18px;
    line-height: 18px;
}
.ox-tipo-conteudo-btn:hover {
    background: #e9ecef;
    color: #495057;
}
.ox-tipo-conteudo-btn.active[data-value="oxford"],
.ox-tipo-conteudo-btn:has(input:checked)[data-value="oxford"] {
    background: linear-gradient(135deg, #1e3a5f 0%, #2d5a8e 100%);
    color: #fff;
    border-color: transparent;
}
.ox-tipo-conteudo-btn.active[data-value="school"],
.ox-tipo-conteudo-btn:has(input:checked)[data-value="school"] {
    background: linear-gradient(135deg, #1e7e34 0%, #28a745 100%);
    color: #fff;
    border-color: transparent;
}
/* Fallback for browsers without :has() — JS adds .active */
.ox-tipo-conteudo-btn.active {
    color: #fff;
}

.ox-btn-danger {
    background: var(--ox-danger);
    color: var(--ox-white);
}

.ox-btn-danger:hover {
    background: #c82333;
}

.ox-btn-danger:focus {
    outline: none;
    box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.3);
}

.ox-btn-danger:active {
    background: #bd2130;
    transform: translateY(1px);
}

.ox-btn-dark {
    background: #64748b;
    color: #fff;
}

.ox-btn-dark:hover {
    background: #475569;
}

.ox-btn-dark:focus {
    outline: none;
    box-shadow: 0 0 0 3px rgba(100, 116, 139, 0.3);
}

.ox-btn-dark:active {
    background: #334155;
    transform: translateY(1px);
}

.ox-btn-warning {
    background: var(--ox-warning);
    color: var(--ox-dark);
}

.ox-btn-warning:hover {
    background: #e0a800;
}

.ox-btn-warning:focus {
    outline: none;
    box-shadow: 0 0 0 3px rgba(255, 193, 7, 0.3);
}

.ox-btn-warning:active {
    background: #d39e00;
    transform: translateY(1px);
}

.ox-btn-late {
    background: #ff9800;
    color: var(--ox-white);
}

.ox-btn-late:hover {
    background: #f57c00;
}

.ox-btn-late:focus {
    outline: none;
    box-shadow: 0 0 0 3px rgba(255, 152, 0, 0.3);
}

.ox-btn-late:active {
    background: #ef6c00;
    transform: translateY(1px);
}

.ox-btn-info {
    background: var(--ox-info);
    color: var(--ox-white);
}

.ox-btn-info:hover {
    background: #138496;
}

.ox-btn-info:focus {
    outline: none;
    box-shadow: 0 0 0 3px rgba(23, 162, 184, 0.3);
}

.ox-btn-info:active {
    background: #117a8b;
    transform: translateY(1px);
}

.ox-btn-sm {
    padding: 6px 12px;
    font-size: 0.8rem;
}

.ox-btn-icon {
    width: 36px;
    height: 36px;
    padding: 0;
    border-radius: 50%;
}

.ox-page-back {
    margin-bottom: 12px;
}

.ox-btn-link {
    background: none;
    color: var(--ox-primary);
    padding: 4px 8px;
}

.ox-btn-link:hover {
    text-decoration: underline;
    background: rgba(30, 58, 95, 0.05);
}

.ox-btn-link:focus {
    outline: none;
    box-shadow: 0 0 0 2px rgba(30, 58, 95, 0.2);
    border-radius: var(--ox-radius-sm);
}

.ox-btn-link:active {
    background: rgba(30, 58, 95, 0.1);
}

/* ==========================================
   Tables
   ========================================== */
.ox-table-container {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.ox-table {
    width: 100%;
    border-collapse: collapse;
}

.ox-table th,
.ox-table td {
    padding: 12px 15px;
    text-align: left;
    border-bottom: 1px solid var(--ox-border);
}

.ox-table th {
    background: var(--ox-light);
    font-weight: 600;
    color: var(--ox-primary);
    font-size: 0.85rem;
    text-transform: uppercase;
}

.ox-table tr:hover {
    background: #f7fafc;
}

.ox-row-warning {
    background: #fffbeb !important;
}

.ox-row-danger {
    background: #fef2f2 !important;
}

/* Table Action Buttons */
.ox-table .ox-btn {
    padding: 5px 12px;
    font-size: 0.8rem;
}

.ox-table .ox-btn-secondary {
    background: var(--ox-info);
    color: var(--ox-white);
}

.ox-table .ox-btn-secondary:hover {
    background: #138496;
}

.ox-table .ox-btn-secondary:focus {
    outline: none;
    box-shadow: 0 0 0 3px rgba(23, 162, 184, 0.3);
}

.ox-table .ox-btn-secondary:active {
    background: #117a8b;
}

/* ==========================================
   Tabs
   ========================================== */
.ox-turma-tabs {
    display: flex;
    gap: 5px;
    margin-bottom: 25px;
    border-bottom: 2px solid var(--ox-border);
    padding-bottom: 0;
}

.ox-tab {
    padding: 12px 20px;
    text-decoration: none;
    color: var(--ox-secondary);
    font-weight: 500;
    border-bottom: 3px solid transparent;
    margin-bottom: -2px;
    transition: var(--ox-transition);
}

.ox-tab:hover {
    color: var(--ox-primary);
}

.ox-tab.active {
    color: var(--ox-primary);
    border-bottom-color: var(--ox-primary);
}

/* ==========================================
   Presencas
   ========================================== */
.ox-presenca-turma-section {
    margin-bottom: 30px;
}

.ox-presenca-turma-section h3 {
    color: var(--ox-primary);
    margin-bottom: 15px;
}

.ox-presenca-date-section {
    background: var(--ox-white);
    border-radius: var(--ox-radius);
    margin-bottom: 15px;
    border: 1px solid var(--ox-border);
    overflow: hidden;
}

.ox-presenca-date-section.ox-presenca-late {
    border-color: var(--ox-danger);
}

.ox-presenca-date-header {
    display: flex;
    align-items: center;
    gap: 15px;
    padding: 12px 15px;
    background: var(--ox-light);
    border-bottom: 1px solid var(--ox-border);
}

.ox-presenca-date-section.ox-presenca-late .ox-presenca-date-header {
    background: #fef2f2;
}

.ox-presenca-date-header .ox-date {
    font-weight: 600;
}

.ox-presenca-list {
    padding: 10px 15px;
}

.ox-presenca-item,
.ox-presenca-aluno {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 0;
    border-bottom: 1px solid var(--ox-border);
}

.ox-presenca-item:last-child,
.ox-presenca-aluno:last-child {
    border-bottom: none;
}

.ox-aluno-nome {
    font-weight: 500;
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ox-presenca-actions,
.ox-presenca-buttons {
    display: flex;
    gap: 8px;
    flex-shrink: 0;
}

.ox-presenca-status {
    padding: 4px 10px;
    border-radius: var(--ox-radius-sm);
    font-size: 0.8rem;
    font-weight: 500;
    flex-shrink: 0;
    min-width: 65px;
    text-align: center;
}

.ox-status-pendente {
    background: #e2e3e5;
    color: #383d41;
}

.ox-status-presente {
    background: #d4edda;
    color: #155724;
}

.ox-status-ausente {
    background: #f8d7da;
    color: #721c24;
}

.ox-status-justificado {
    background: #fff3cd;
    color: #856404;
}

.ox-status-atrasado {
    background: #ffe0b2;
    color: #e65100;
}

/* ==========================================
   Aulas
   ========================================== */
.ox-aulas-hoje-list,
.ox-aulas-hoje-grid {
    display: grid;
    gap: 15px;
}

.ox-aula-card,
.ox-aula-card-large {
    display: flex;
    align-items: center;
    gap: 15px;
    padding: 15px;
    background: var(--ox-light);
    border-radius: var(--ox-radius);
    border-left: 4px solid var(--ox-primary);
}

.ox-dashboard-sidebar .ox-aula-card {
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
    padding: 12px 14px;
}

.ox-dashboard-sidebar .ox-aula-card .ox-aula-time {
    min-width: auto;
    font-size: 0.85rem;
}

.ox-dashboard-sidebar .ox-aula-card .ox-aula-info {
    min-width: 0;
}

.ox-dashboard-sidebar .ox-aula-card .ox-aula-info strong {
    font-size: 0.9rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ox-dashboard-sidebar .ox-aula-card .ox-aula-nivel {
    font-size: 0.8rem;
}

.ox-dashboard-sidebar .ox-aula-card .ox-aula-actions {
    display: flex;
    gap: 6px;
    align-self: flex-end;
}

.ox-dashboard-sidebar .ox-aula-card .ox-aula-actions .ox-btn {
    font-size: 0.78rem;
    padding: 3px 10px;
}

.ox-aula-card-large {
    flex-direction: column;
    align-items: stretch;
    padding: 20px;
}

.ox-aula-card.ox-status-nao_planejada {
    border-left-color: var(--ox-danger);
}

.ox-aula-card.ox-status-realizada {
    border-left-color: var(--ox-success);
}

.ox-aula-time {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--ox-primary);
    min-width: 60px;
}

.ox-aula-time-large {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--ox-primary);
}

.ox-aula-info {
    flex: 1;
}

.ox-aula-info strong {
    display: block;
}

.ox-aula-nivel {
    font-size: 0.85rem;
    color: var(--ox-secondary);
}

.ox-aula-preview {
    background: var(--ox-white);
    padding: 12px;
    border-radius: var(--ox-radius-sm);
    font-size: 0.85rem;
    margin: 10px 0;
}

.ox-aula-preview p {
    margin: 5px 0;
}

.ox-aula-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

/* ==========================================
   Forms
   ========================================== */
.ox-form {
    padding: 20px 0;
}

.ox-form-group {
    margin-bottom: 20px;
}

.ox-form-row {
    display: flex;
    gap: 20px;
}

.ox-form-half {
    flex: 1;
}

.ox-form-full {
    width: 100%;
}

.ox-form-hint {
    display: block;
    font-size: 12px;
    color: var(--ox-muted, #6c757d);
    margin-top: 4px;
}

.ox-login-data {
    white-space: pre-wrap;
    background: var(--ox-bg-light, #f8f9fa);
    padding: 8px 12px;
    border-radius: 4px;
    font-family: monospace;
    font-size: 13px;
}

.ox-text-muted {
    color: var(--ox-muted, #6c757d);
}

.ox-form-group label {
    display: block;
    margin-bottom: 6px;
    font-weight: 500;
    color: var(--ox-dark);
}

.ox-msg-text.ox-msg-collapsed {
    max-height: 3.6em;
    overflow: hidden;
    position: relative;
}

.ox-msg-text.ox-msg-expanded {
    max-height: none;
}

label.ox-check-label {
    display: flex !important;
    align-items: center;
    gap: 6px;
    cursor: pointer;
    padding: 3px 0;
    margin-bottom: 0;
    font-weight: 400;
}

label.ox-check-label input[type="checkbox"] {
    width: 16px;
    height: 16px;
    margin: 0;
    flex-shrink: 0;
}

.ox-radio-row {
    display: flex !important;
    gap: 0;
    margin-top: 5px;
}

label.ox-radio-label {
    display: flex !important;
    align-items: center;
    gap: 6px;
    cursor: pointer;
    flex: 1;
    padding: 10px 12px;
    margin-bottom: 0;
    font-weight: 500;
    border: 1px solid #ddd;
    border-radius: 0;
    text-align: center;
    justify-content: center;
    transition: background 0.15s, border-color 0.15s;
}

label.ox-radio-label:first-child {
    border-radius: 6px 0 0 6px;
}

label.ox-radio-label:last-child {
    border-radius: 0 6px 6px 0;
    border-left: 0;
}

label.ox-radio-label:has(input:checked) {
    background: var(--ox-primary, #0073aa);
    color: #fff;
    border-color: var(--ox-primary, #0073aa);
}

label.ox-radio-label input[type="radio"] {
    display: none;
}

.ox-form-group input,
.ox-form-group textarea,
.ox-form-group select {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius-sm);
    font-size: 0.95rem;
    transition: var(--ox-transition);
}

.ox-form-group input:focus,
.ox-form-group textarea:focus,
.ox-form-group select:focus {
    outline: none;
    border-color: var(--ox-primary);
    box-shadow: 0 0 0 3px rgba(30, 58, 95, 0.1);
}

.ox-form-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 20px;
    padding-top: 20px;
    border-top: 1px solid var(--ox-border);
}

/* ==========================================
   Modal
   ========================================== */
.ox-modal {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.5);
    display: none; /* Hidden by default */
    align-items: center;
    justify-content: center;
    z-index: 9999;
}

.ox-modal.active,
.ox-modal.show {
    display: flex; /* Show when active */
}

.ox-modal-content {
    background: var(--ox-white);
    border-radius: var(--ox-radius);
    width: 90%;
    max-width: 600px;
    max-height: 90vh;
    overflow-y: auto;
    box-shadow: var(--ox-shadow-lg);
}

.ox-modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px;
    border-bottom: 1px solid var(--ox-border);
}

.ox-modal-header h3 {
    margin: 0;
    color: var(--ox-primary);
}

.ox-lesson-draft-notice {
    font-size: 11px;
    color: #888;
    margin-left: 8px;
    flex: 1;
}

.ox-modal-close {
    background: none;
    border: none;
    font-size: 1.5rem;
    cursor: pointer;
    color: var(--ox-secondary);
    line-height: 1;
    padding: 5px;
    border-radius: var(--ox-radius-sm);
    transition: var(--ox-transition);
}

.ox-modal-close:hover {
    background: var(--ox-light);
    color: var(--ox-danger);
}

.ox-modal-close:active {
    transform: scale(0.95);
}

/* Modal Cancel Button */
.ox-modal-cancel {
    transition: var(--ox-transition);
}

.ox-modal-cancel:hover {
    background: #5a6a7a;
    color: var(--ox-white);
}

.ox-modal-cancel:active {
    transform: scale(0.98);
}

.ox-modal-content .ox-form {
    padding: 20px;
}

/* ==========================================
   Empty States
   ========================================== */
.ox-empty-state {
    text-align: center;
    padding: 40px 20px;
    color: var(--ox-secondary);
}

.ox-empty-state .dashicons {
    font-size: 48px;
    width: 48px;
    height: 48px;
    margin-bottom: 15px;
    color: var(--ox-success);
}

.ox-empty-state p {
    margin: 0;
    font-size: 1.1rem;
}

.ox-empty-small {
    padding: 20px;
}

.ox-empty-message {
    color: var(--ox-secondary);
    font-style: italic;
    padding: 20px;
    text-align: center;
}

/* ==========================================
   Stats Cards
   ========================================== */
.ox-turma-stats-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 15px;
    margin-bottom: 25px;
}

.ox-stat-card {
    background: var(--ox-white);
    border-radius: var(--ox-radius);
    padding: 15px;
    text-align: center;
    box-shadow: var(--ox-shadow);
}

.ox-stat-value {
    display: block;
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--ox-primary);
}

.ox-stat-label {
    display: block;
    font-size: 0.8rem;
    color: var(--ox-secondary);
    margin-top: 3px;
}

/* ==========================================
   Turma Full Header
   ========================================== */
.ox-turma-header-full {
    margin-bottom: 25px;
}

.ox-turma-title {
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 10px;
}

.ox-turma-title h2 {
    margin: 0;
    font-size: 1.5rem;
    color: var(--ox-primary);
}

.ox-turma-meta-full {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    font-size: 0.9rem;
    color: var(--ox-secondary);
}

/* ==========================================
   Notas Header
   ========================================== */
.ox-notas-header,
.ox-reportcard-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}

.ox-etapa-select {
    display: flex;
    align-items: center;
    gap: 10px;
}

.ox-etapa-select select {
    padding: 8px 12px;
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius-sm);
}

/* ==========================================
   Sidebar Sections
   ========================================== */
.ox-section-warning {
    border-left: 4px solid var(--ox-warning);
}

.ox-aula-status-badge {
    font-size: 0.75rem;
    padding: 3px 8px;
    border-radius: 12px;
    font-weight: 500;
}

.ox-aula-status-badge.ox-status-planejada {
    background: #d4edda;
    color: #155724;
}

.ox-aula-status-badge.ox-status-nao_planejada {
    background: #f8d7da;
    color: #721c24;
}

.ox-aula-status-badge.ox-status-realizada {
    background: #cce5ff;
    color: #004085;
}

.ox-aulas-pendentes-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.ox-aula-pendente-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px;
    background: var(--ox-light);
    border-radius: var(--ox-radius-sm);
    border-left: 3px solid var(--ox-warning);
}

.ox-aula-pendente-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.ox-aula-pendente-info strong {
    font-size: 0.9rem;
}

.ox-aula-pendente-date {
    font-size: 0.8rem;
    color: var(--ox-secondary);
}

.ox-aula-pendente-actions {
    display: flex;
    gap: 5px;
    flex-shrink: 0;
}

.ox-aula-actions {
    flex-shrink: 0;
    margin-left: auto;
}

.ox-ver-mais {
    text-align: center;
    padding-top: 10px;
    border-top: 1px solid var(--ox-border);
    margin-top: 5px;
}

.ox-presenca-group {
    background: var(--ox-light);
    border-radius: var(--ox-radius);
    margin-bottom: 15px;
    overflow: hidden;
    border: 1px solid var(--ox-border);
}

.ox-presenca-group.ox-presenca-late {
    border-color: var(--ox-danger);
}

.ox-presenca-group-header {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 15px;
    background: var(--ox-white);
    border-bottom: 1px solid var(--ox-border);
}

.ox-presenca-group.ox-presenca-late .ox-presenca-group-header {
    background: #fef2f2;
}

.ox-presenca-alunos {
    padding: 10px 15px;
}

/* ==========================================
   Responsive
   ========================================== */
@media (max-width: 768px) {
    .ox-dashboard-header {
        flex-direction: column;
        text-align: center;
        gap: 15px;
    }

    .ox-professor-info {
        flex-direction: column;
    }

    .ox-dashboard-quick-links {
        gap: 6px;
    }
    .ox-dashboard-quick-links .ox-btn {
        padding: 6px 10px;
        font-size: 0.8rem;
    }

    .ox-turma-tabs {
        flex-wrap: wrap;
    }

    .ox-tab {
        padding: 10px 15px;
    }

    .ox-form-row {
        flex-direction: column;
    }

    .ox-presenca-item,
    .ox-presenca-aluno {
        flex-direction: column;
        align-items: flex-start;
        gap: 10px;
    }

    .ox-table {
        font-size: 0.85rem;
    }

    .ox-table th,
    .ox-table td {
        padding: 8px 10px;
    }
}

/* ==========================================
   Loading State
   ========================================== */
.ox-loading {
    opacity: 0.6;
    pointer-events: none;
}

.ox-spinner {
    display: inline-block;
    width: 20px;
    height: 20px;
    border: 2px solid var(--ox-border);
    border-top-color: var(--ox-primary);
    border-radius: 50%;
    animation: ox-spin 0.8s linear infinite;
}

@keyframes ox-spin {
    to { transform: rotate(360deg); }
}

/* ==========================================
   Animations
   ========================================== */
.ox-fade-in {
    animation: ox-fadeIn 0.3s ease;
}

@keyframes ox-fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.ox-presenca-item.ox-marked {
    animation: ox-marked 0.5s ease;
}

@keyframes ox-marked {
    0% { background: transparent; }
    50% { background: #d4edda; }
    100% { background: transparent; }
}

/* ==========================================
   COORDINATOR AREA STYLES
   ========================================== */

/* Coordinator Dashboard Base */
.ox-coordinator-dashboard {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    color: var(--ox-dark);
    line-height: 1.5;
    padding: 20px;
}

/* Coordinator Actions Bar */
.ox-coordinator-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 25px;
    padding: 15px 20px;
    background: var(--ox-white);
    border-radius: var(--ox-radius);
    box-shadow: var(--ox-shadow);
}

.ox-coordinator-actions .ox-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 18px;
    border: none;
    cursor: pointer;
    text-decoration: none;
    white-space: nowrap;
    flex-shrink: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ox-coordinator-actions .ox-btn:hover {
    transform: translateY(-1px);
    box-shadow: 0 2px 8px rgba(0,0,0,0.15);
}

.ox-coordinator-actions .ox-btn:active {
    transform: translateY(0);
    box-shadow: none;
}

.ox-coordinator-actions .ox-btn-primary:hover {
    background: var(--ox-primary-light);
}

.ox-coordinator-actions .ox-btn-secondary:hover {
    background: #5a6a7a;
}

.ox-coordinator-actions .dashicons {
    font-size: 18px;
    width: 18px;
    height: 18px;
}

/* Units List */
.ox-units-list {
    display: inline-block;
    margin-left: 10px;
    font-size: 0.9rem;
    color: var(--ox-secondary);
}

/* Students Search */
.ox-students-search {
    margin-bottom: 12px;
}

.ox-students-search.ox-filter-row {
    display: flex;
    gap: 10px;
    align-items: center;
}

.ox-students-search.ox-filter-row .ox-input-search {
    flex: 1;
    min-width: 200px;
}

.ox-students-search.ox-filter-row .ox-input-select {
    width: auto;
    max-width: 150px;
    flex-shrink: 0;
}

.ox-students-search .ox-input-search {
    width: 100%;
    padding: 8px 12px;
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius-sm);
    font-size: 0.9rem;
    transition: var(--ox-transition);
}

.ox-students-search .ox-input-search:focus {
    outline: none;
    border-color: var(--ox-primary);
    box-shadow: 0 0 0 2px rgba(30, 58, 95, 0.1);
}

.ox-students-search .ox-input-search::placeholder {
    color: var(--ox-secondary);
}

.ox-students-search .ox-input-select {
    padding: 8px 12px;
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius-sm);
    font-size: 0.9rem;
    background-color: #fff;
    transition: var(--ox-transition);
    cursor: pointer;
}

.ox-students-search .ox-input-select:focus {
    outline: none;
    border-color: var(--ox-primary);
    box-shadow: 0 0 0 2px rgba(30, 58, 95, 0.1);
}

/* Students List (Sidebar) */
.ox-students-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.ox-student-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px;
    background: var(--ox-light);
    border-radius: var(--ox-radius-sm);
    transition: var(--ox-transition);
}

.ox-student-item:hover {
    background: #e2e8f0;
}

.ox-student-item .ox-btn-link {
    padding: 4px 10px;
    font-size: 0.85rem;
    background: var(--ox-info);
    color: var(--ox-white);
    border-radius: var(--ox-radius-sm);
    text-decoration: none;
}

.ox-student-item .ox-btn-link:hover {
    background: #138496;
    text-decoration: none;
}

.ox-student-item .ox-btn-link:focus {
    box-shadow: 0 0 0 3px rgba(23, 162, 184, 0.3);
}

.ox-student-item .ox-btn-link:active {
    background: #117a8b;
}

.ox-student-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.ox-student-info strong {
    font-size: 0.9rem;
}

.ox-student-class {
    font-size: 0.8rem;
    color: var(--ox-secondary);
}

.ox-student-actions {
    display: flex;
    align-items: center;
    gap: 6px;
}

.ox-student-actions .dashicons-external {
    font-size: 14px;
    width: 14px;
    height: 14px;
    line-height: 1;
}

/* Students Load More Button */
.ox-students-load-more {
    width: 100%;
    margin-top: 12px;
    padding: 10px 15px;
    font-size: 0.85rem;
    text-align: center;
    border: 1px solid var(--ox-primary);
    background: transparent;
    color: var(--ox-primary);
    border-radius: var(--ox-radius-sm);
    cursor: pointer;
    transition: var(--ox-transition);
}

.ox-students-load-more:hover {
    background: var(--ox-primary);
    color: var(--ox-white);
}

.ox-students-load-more:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.ox-students-load-more.ox-loading {
    pointer-events: none;
    opacity: 0.7;
}

/* Load More Container */
.ox-load-more-container {
    margin-top: 16px;
    text-align: center;
}

/* Turmas Load More Button */
.ox-turmas-load-more {
    width: 100%;
    padding: 12px 20px;
    font-size: 0.9rem;
    text-align: center;
    border: 1px solid var(--ox-primary);
    background: transparent;
    color: var(--ox-primary);
    border-radius: var(--ox-radius-sm);
    cursor: pointer;
    transition: var(--ox-transition);
}

.ox-turmas-load-more:hover {
    background: var(--ox-primary);
    color: var(--ox-white);
}

.ox-turmas-load-more:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.ox-turmas-load-more.ox-loading {
    pointer-events: none;
    opacity: 0.7;
}

/* Quick Links */
.ox-quick-links {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.ox-quick-link {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 15px;
    background: var(--ox-white);
    border: 2px solid var(--ox-primary);
    border-radius: var(--ox-radius-sm);
    cursor: pointer;
    transition: var(--ox-transition);
    font-size: 0.9rem;
    font-weight: 500;
    color: var(--ox-primary);
    text-align: left;
    width: 100%;
}

.ox-quick-link:hover {
    background: var(--ox-primary);
    color: var(--ox-white);
    border-color: var(--ox-primary);
}

.ox-quick-link:active {
    transform: scale(0.98);
}

.ox-quick-link .dashicons {
    font-size: 20px;
    width: 20px;
    height: 20px;
    color: inherit;
}

/* ==========================================
   MODAL ENHANCEMENTS
   ========================================== */

/* Large Modal */
.ox-modal-lg {
    max-width: 800px;
}

/* Full-screen Modal (lesson planning) */
.ox-modal-fullscreen {
    width: 96%;
    max-width: 960px;
    max-height: 95vh;
    height: auto;
}

/* Form Checkbox Group */
.ox-checkbox-group {
    display: flex;
    flex-wrap: wrap;
    gap: 15px;
}

.ox-checkbox-label {
    display: flex;
    align-items: center;
    gap: 6px;
    cursor: pointer;
    font-weight: normal;
}

.ox-checkbox-label input[type="checkbox"] {
    width: auto;
    margin: 0;
}

/* Image Upload */
.ox-image-upload {
    display: flex;
    align-items: center;
    gap: 15px;
}

.ox-image-preview {
    width: 80px;
    height: 80px;
    border-radius: var(--ox-radius);
    background: var(--ox-light);
    border: 2px dashed var(--ox-border);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

.ox-image-preview img {
    max-width: 100%;
    max-height: 100%;
    object-fit: cover;
}

.ox-image-preview:empty::before {
    content: 'No image';
    font-size: 0.75rem;
    color: var(--ox-secondary);
}

/* Modal Scrollable Body */
.ox-modal-content {
    max-height: 90vh;
    overflow-y: auto;
}

.ox-modal-content .ox-form {
    padding: 20px;
}

/* Toast Notifications */
.ox-toast-container {
    position: fixed;
    top: 20px;
    right: 20px;
    z-index: 10000;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.ox-toast {
    padding: 15px 20px;
    border-radius: var(--ox-radius);
    box-shadow: var(--ox-shadow-lg);
    animation: ox-slideIn 0.3s ease;
    min-width: 280px;
    max-width: 400px;
}

.ox-toast-success {
    background: var(--ox-success);
    color: var(--ox-white);
}

.ox-toast-error {
    background: var(--ox-danger);
    color: var(--ox-white);
}

.ox-toast-warning {
    background: var(--ox-warning);
    color: var(--ox-dark);
}

.ox-toast-info {
    background: var(--ox-info);
    color: var(--ox-white);
}

@keyframes ox-slideIn {
    from {
        opacity: 0;
        transform: translateX(50px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

/* Form Loading State */
.ox-form.ox-loading {
    opacity: 0.6;
    pointer-events: none;
}

.ox-form.ox-loading::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 40px;
    height: 40px;
    margin: -20px 0 0 -20px;
    border: 3px solid var(--ox-border);
    border-top-color: var(--ox-primary);
    border-radius: 50%;
    animation: ox-spin 0.8s linear infinite;
}

/* Button with loading */
.ox-btn.ox-loading {
    position: relative;
    color: transparent !important;
    pointer-events: none;
}

.ox-btn.ox-loading::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 16px;
    height: 16px;
    margin: -8px 0 0 -8px;
    border: 2px solid currentColor;
    border-top-color: transparent;
    border-radius: 50%;
    animation: ox-spin 0.6s linear infinite;
}

/* Disabled State */
.ox-btn:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

/* Select Enhanced */
select.ox-select-enhanced {
    appearance: none;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");
    background-position: right 10px center;
    background-repeat: no-repeat;
    background-size: 16px;
    padding-right: 35px;
}

/* Section Header Enhancement */
.ox-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--ox-border);
}

.ox-section-header h3 {
    margin: 0;
    border: none;
    padding: 0;
}

/* Table Enhancements */
.ox-table tbody tr {
    transition: var(--ox-transition);
}

.ox-table tbody tr:hover {
    background: #f7fafc;
}

.ox-table td small {
    color: var(--ox-secondary);
}

/* Responsive Coordinator */
@media (max-width: 768px) {
    .ox-coordinator-actions {
        gap: 6px;
        padding: 10px 12px;
    }

    .ox-coordinator-actions .ox-btn {
        padding: 7px 10px;
        font-size: 0.8rem;
    }

    .ox-coordinator-actions .dashicons {
        font-size: 14px;
        width: 14px;
        height: 14px;
    }

    .ox-modal-lg {
        max-width: 95%;
    }

    .ox-checkbox-group {
        flex-direction: column;
    }
}

/* ==========================================
   FORM VALIDATION STYLES
   ========================================== */

.ox-form-group input:invalid:not(:placeholder-shown),
.ox-form-group select:invalid:not([value=""]),
.ox-form-group textarea:invalid:not(:placeholder-shown) {
    border-color: var(--ox-danger);
}

.ox-form-group input:valid:not(:placeholder-shown),
.ox-form-group select:valid:not([value=""]) {
    border-color: var(--ox-success);
}

.ox-form-error {
    color: var(--ox-danger);
    font-size: 0.85rem;
    margin-top: 5px;
}

/* Required Field Indicator */
.ox-form-group label[for]::after {
    content: '';
}

.ox-form-group label:has(+ input[required])::after,
.ox-form-group label:has(+ select[required])::after,
.ox-form-group label:has(+ textarea[required])::after {
    content: ' *';
    color: var(--ox-danger);
}

/* ==========================================
   CONFIRMATION DIALOG
   ========================================== */

.ox-confirm-dialog {
    text-align: center;
    padding: 30px;
}

.ox-confirm-dialog h3 {
    margin-bottom: 15px;
}

.ox-confirm-dialog p {
    color: var(--ox-secondary);
    margin-bottom: 25px;
}

.ox-confirm-actions {
    display: flex;
    justify-content: center;
    gap: 15px;
}

/* ==========================================
   CLASS MANAGEMENT MODAL
   ========================================== */

.ox-turma-manage-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
}

.ox-manage-section {
    padding: 20px;
    background: var(--ox-light);
    border-radius: var(--ox-radius);
}

.ox-manage-section h4 {
    margin-bottom: 15px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--ox-border);
    color: var(--ox-primary);
}

/* Teacher Card */
.ox-turma-teacher-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 15px;
    background: var(--ox-white);
    border-radius: var(--ox-radius);
    border: 1px solid var(--ox-border);
}

.ox-teacher-info {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.ox-teacher-info strong {
    color: var(--ox-text);
}

.ox-teacher-email {
    font-size: 0.85rem;
    color: var(--ox-secondary);
}

.ox-no-teacher {
    text-align: center;
    padding: 20px;
}

.ox-no-teacher p {
    color: var(--ox-secondary);
    margin-bottom: 15px;
}

.ox-no-teacher select {
    width: 100%;
    margin-bottom: 10px;
}

/* Students List */
.ox-students-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
    max-height: 300px;
    overflow-y: auto;
}

.ox-student-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 15px;
    background: var(--ox-white);
    border-radius: var(--ox-radius);
    border: 1px solid var(--ox-border);
}

.ox-student-item .ox-student-name {
    font-weight: 500;
    flex: 1;
}

.ox-student-item .ox-student-status {
    font-size: 0.75rem;
    padding: 2px 8px;
    border-radius: 10px;
    margin: 0 10px;
}

.ox-student-item .ox-status-active,
.ox-student-item .ox-status-ativo {
    background: rgba(40, 167, 69, 0.15);
    color: var(--ox-success);
}

.ox-student-item .ox-status-inactive,
.ox-student-item .ox-status-inativo {
    background: rgba(108, 117, 125, 0.15);
    color: var(--ox-secondary);
}

.ox-no-students {
    text-align: center;
    padding: 20px;
    color: var(--ox-secondary);
}

/* Add Student Form */
.ox-add-student-form {
    margin-top: 20px;
    padding-top: 15px;
    border-top: 1px dashed var(--ox-border);
}

.ox-add-student-form h4 {
    font-size: 0.9rem;
    margin-bottom: 10px;
    border-bottom: none;
    padding-bottom: 0;
}

.ox-add-student-form select {
    width: 100%;
    margin-bottom: 10px;
}

/* Button Sizes */
.ox-btn-xs {
    padding: 4px 8px;
    font-size: 0.75rem;
}

/* Modal Body and Footer */
.ox-modal-body {
    padding: 20px;
}

.ox-modal-footer {
    padding: 15px 20px;
    border-top: 1px solid var(--ox-border);
    display: flex;
    justify-content: flex-end;
    gap: 10px;
}

/* Loading State */
.ox-loading {
    text-align: center;
    padding: 20px;
    color: var(--ox-secondary);
}

.ox-loading::before {
    content: '';
    display: inline-block;
    width: 20px;
    height: 20px;
    border: 2px solid var(--ox-border);
    border-top-color: var(--ox-primary);
    border-radius: 50%;
    animation: ox-spin 0.8s linear infinite;
    margin-right: 10px;
    vertical-align: middle;
}

@keyframes ox-spin {
    to { transform: rotate(360deg); }
}

/* ==========================================
   Student Search Component
   ========================================== */
.ox-student-search-container {
    position: relative;
    margin-bottom: 10px;
}

.ox-student-search-input {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius-sm);
    font-size: 0.9rem;
    transition: var(--ox-transition);
}

.ox-student-search-input:focus {
    outline: none;
    border-color: var(--ox-primary);
    box-shadow: 0 0 0 3px rgba(30, 58, 95, 0.1);
}

.ox-student-search-results {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: var(--ox-white);
    border: 1px solid var(--ox-border);
    border-top: none;
    border-radius: 0 0 var(--ox-radius-sm) var(--ox-radius-sm);
    box-shadow: var(--ox-shadow-lg);
    max-height: 250px;
    overflow-y: auto;
    z-index: 100;
    display: none;
}

.ox-search-results-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.ox-search-result-item {
    padding: 10px 12px;
    cursor: pointer;
    display: flex;
    flex-direction: column;
    gap: 2px;
    border-bottom: 1px solid var(--ox-border);
    transition: var(--ox-transition);
}

.ox-search-result-item:last-child {
    border-bottom: none;
}

.ox-search-result-item:hover {
    background: var(--ox-light);
}

.ox-result-name {
    font-weight: 500;
    color: var(--ox-dark);
}

.ox-result-phone {
    font-size: 0.85rem;
    color: var(--ox-secondary);
}

.ox-result-class {
    font-size: 0.8rem;
    color: var(--ox-info);
}

.ox-search-loading,
.ox-search-no-results,
.ox-search-error {
    padding: 15px;
    text-align: center;
    color: var(--ox-secondary);
    font-size: 0.9rem;
}

.ox-search-error {
    color: var(--ox-danger);
}

/* Selected Student Display */
.ox-selected-student {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    background: var(--ox-light);
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius-sm);
    margin-top: 8px;
}

.ox-selected-name {
    font-weight: 500;
    color: var(--ox-dark);
}

.ox-selected-phone {
    font-size: 0.85rem;
    color: var(--ox-secondary);
}

.ox-clear-selection {
    margin-left: auto;
    background: none;
    border: none;
    color: var(--ox-danger);
    font-size: 1.2rem;
    cursor: pointer;
    padding: 0 5px;
    line-height: 1;
    transition: var(--ox-transition);
}

.ox-clear-selection:hover {
    color: #a71d2a;
}

/* Responsive */
@media (max-width: 768px) {
    .ox-turma-manage-grid {
        grid-template-columns: 1fr;
    }
}

/* ==========================================
   MANAGE LIST MODALS
   ========================================== */

/* Modal Header with Buttons */
.ox-modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 15px;
    flex-wrap: wrap;
}

.ox-modal-header h3 {
    flex: 1;
    min-width: 200px;
}

.ox-header-buttons {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.ox-create-new-item {
    order: 1;
}

.ox-modal-header .ox-modal-close {
    order: 2;
}

/* Modal Header Actions (for PDF button etc) */
.ox-modal-header-actions {
    display: flex;
    align-items: center;
    gap: 10px;
}

.ox-modal-header-actions .ox-modal-close {
    background: none;
    border: none;
    font-size: 24px;
    cursor: pointer;
    color: var(--ox-text-muted);
    padding: 0;
    line-height: 1;
}

.ox-modal-header-actions .ox-modal-close:hover {
    color: var(--ox-danger);
}

.ox-btn-download-report-pdf {
    display: inline-flex;
    align-items: center;
    gap: 5px;
}

.ox-btn-download-report-pdf .dashicons {
    font-size: 16px;
    width: 16px;
    height: 16px;
}

/* List Filters */
.ox-list-filters {
    display: flex;
    gap: 10px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}

.ox-filter-select {
    padding: 8px 12px;
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius-sm);
    background: var(--ox-white);
    font-size: 0.9rem;
    min-width: 140px;
    cursor: pointer;
}

.ox-filter-select:focus {
    outline: none;
    border-color: var(--ox-primary);
    box-shadow: 0 0 0 2px rgba(30, 58, 95, 0.1);
}

/* Manage List Container */
.ox-manage-list {
    max-height: 400px;
    overflow-y: auto;
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius);
    background: var(--ox-light);
}

.ox-manage-list:empty::after {
    content: 'No items found';
    display: block;
    padding: 40px;
    text-align: center;
    color: var(--ox-secondary);
    font-style: italic;
}

/* List Item */
.ox-list-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 15px;
    background: var(--ox-white);
    border-bottom: 1px solid var(--ox-border);
    transition: var(--ox-transition);
}

.ox-list-item:last-child {
    border-bottom: none;
}

.ox-list-item:hover {
    background: #f7fafc;
}

.ox-list-item-info {
    display: flex;
    flex-direction: column;
    gap: 4px;
    flex: 1;
}

.ox-list-item-title {
    font-weight: 600;
    color: var(--ox-dark);
    display: flex;
    align-items: center;
    gap: 8px;
}

.ox-list-item-meta {
    display: flex;
    gap: 15px;
    font-size: 0.85rem;
    color: var(--ox-secondary);
    flex-wrap: wrap;
}

.ox-list-item-meta span {
    display: flex;
    align-items: center;
    gap: 4px;
}

.ox-list-item-meta .dashicons {
    font-size: 14px;
    width: 14px;
    height: 14px;
}

.ox-list-item-actions {
    display: flex;
    gap: 8px;
    flex-shrink: 0;
}

/* Type Badge */
.ox-type-badge {
    display: inline-block;
    padding: 2px 8px;
    font-size: 0.7rem;
    font-weight: 600;
    border-radius: 10px;
    text-transform: uppercase;
}

.ox-type-reportcard {
    background: #dbeafe;
    color: #1e40af;
}

.ox-type-feedback {
    background: #dcfce7;
    color: #166534;
}

.ox-type-planejamento {
    background: #fef3c7;
    color: #92400e;
}

.ox-type-course_schedule {
    background: #f3e8ff;
    color: #6b21a8;
}

.ox-type-schedule_execucao {
    background: #dcfce7;
    color: #166534;
}

/* Schedule Execucao Mini Header (for list items) */
.ox-schedule-header-mini {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.ox-schedule-header-mini .ox-schedule-title {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.ox-schedule-header-mini .ox-schedule-title h4 {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
    color: var(--ox-text);
}

.ox-schedule-header-mini .ox-schedule-badges {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.ox-schedule-header-mini .ox-schedule-meta {
    display: flex;
    gap: 16px;
    font-size: 0.85rem;
    color: var(--ox-secondary);
}

.ox-schedule-header-mini .ox-schedule-meta span {
    display: flex;
    align-items: center;
    gap: 4px;
}

.ox-schedule-header-mini .ox-schedule-meta .dashicons {
    font-size: 14px;
    width: 14px;
    height: 14px;
}

.ox-list-item-schedule_execucao {
    border-left: 3px solid var(--ox-success);
}

/* Term Badge */
.ox-term-badge {
    display: inline-block;
    padding: 2px 6px;
    font-size: 0.7rem;
    font-weight: 500;
    border-radius: 4px;
    background: var(--ox-light);
    color: var(--ox-secondary);
}

/* Date styling for Planning items */
.ox-planning-date {
    font-weight: 600;
    color: var(--ox-primary);
}

.ox-planning-date.ox-date-past {
    color: var(--ox-secondary);
}

.ox-planning-date.ox-date-upcoming {
    color: var(--ox-success);
}

.ox-planning-date.ox-date-today {
    color: var(--ox-danger);
}

/* Empty State */
.ox-manage-list .ox-empty-state {
    padding: 40px 20px;
}

.ox-manage-list .ox-loading {
    padding: 40px 20px;
    text-align: center;
}

/* Responsive */
@media (max-width: 768px) {
    .ox-list-filters {
        flex-direction: column;
    }

    .ox-filter-select {
        width: 100%;
    }

    .ox-list-item {
        flex-direction: column;
        align-items: flex-start;
        gap: 12px;
    }

    .ox-list-item-actions {
        width: 100%;
        justify-content: flex-end;
    }

    .ox-header-buttons {
        width: 100%;
        justify-content: flex-end;
    }
}

/* ==========================================
   ALUNO PAGE (Student Public Page)
   ========================================== */

.ox-teachers-aluno-page,
.ox-teachers-turma-page {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
    padding: 20px;
}

/* Aluno Header */
.ox-aluno-header {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 25px;
    background: var(--ox-white);
    border-radius: var(--ox-radius);
    box-shadow: var(--ox-shadow);
    margin-bottom: 25px;
}

.ox-aluno-avatar {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    background: var(--ox-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.ox-avatar-initials {
    font-size: 1.8rem;
    font-weight: 600;
    color: var(--ox-white);
}

.ox-aluno-info {
    flex: 1;
}

.ox-aluno-info h2 {
    margin: 0 0 10px 0;
    font-size: 1.5rem;
    color: var(--ox-primary);
}

.ox-aluno-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 15px;
    align-items: center;
}

.ox-meta-item {
    display: flex;
    align-items: center;
    gap: 5px;
    font-size: 0.9rem;
    color: var(--ox-secondary);
}

.ox-meta-item .dashicons {
    font-size: 16px;
    width: 16px;
    height: 16px;
}

/* Stats Cards for Aluno/Turma pages */
.ox-aluno-stats-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 15px;
    margin-bottom: 25px;
}

/* Info Grid */
.ox-info-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 20px;
}

.ox-info-section {
    background: var(--ox-white);
    padding: 20px;
    border-radius: var(--ox-radius);
    box-shadow: var(--ox-shadow);
}

.ox-info-section-full {
    grid-column: 1 / -1;
}

.ox-info-section h3 {
    margin: 0 0 15px 0;
    font-size: 1.1rem;
    color: var(--ox-primary);
    padding-bottom: 10px;
    border-bottom: 1px solid var(--ox-border);
}

.ox-info-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.ox-info-item {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 15px;
}

.ox-info-label {
    font-size: 0.85rem;
    color: var(--ox-secondary);
    flex-shrink: 0;
}

.ox-info-row {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 0;
    border-bottom: 1px solid var(--ox-border);
}

.ox-info-row:last-child {
    border-bottom: none;
}

.ox-info-row .ox-info-label {
    min-width: 100px;
    font-weight: 500;
}

.ox-info-row .ox-info-value {
    color: var(--ox-text);
    font-weight: 600;
}

.ox-info-value {
    font-size: 0.9rem;
    color: var(--ox-dark);
    text-align: right;
    word-break: break-word;
}

/* Notas Etapa Section */
.ox-notas-etapa-section {
    background: var(--ox-white);
    padding: 20px;
    border-radius: var(--ox-radius);
    box-shadow: var(--ox-shadow);
    margin-bottom: 20px;
}

.ox-notas-etapa-section h3 {
    margin: 0 0 15px 0;
    font-size: 1.1rem;
    color: var(--ox-primary);
}

/* Report Card Styles */
.ox-report-card {
    background: var(--ox-white);
    border-radius: var(--ox-radius);
    box-shadow: var(--ox-shadow);
    margin-bottom: 20px;
    overflow: hidden;
}

.ox-report-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 15px 20px;
    background: var(--ox-light);
    border-bottom: 1px solid var(--ox-border);
}

.ox-report-header h3 {
    margin: 0;
    font-size: 1.1rem;
    color: var(--ox-primary);
}

.ox-report-content {
    padding: 20px;
}

.ox-report-section {
    margin-bottom: 20px;
}

.ox-report-section:last-child {
    margin-bottom: 0;
}

.ox-report-section h4 {
    margin: 0 0 10px 0;
    font-size: 0.95rem;
    color: var(--ox-secondary);
    font-weight: 600;
}

.ox-report-section p {
    margin: 0;
    color: var(--ox-dark);
    line-height: 1.6;
}

.ox-report-grades {
    margin-bottom: 20px;
}

/* Schedule Card */
.ox-schedule-card {
    background: var(--ox-white);
    border-radius: var(--ox-radius);
    box-shadow: var(--ox-shadow);
    margin-bottom: 20px;
    overflow: hidden;
}

.ox-schedule-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 15px 20px;
    background: var(--ox-light);
    border-bottom: 1px solid var(--ox-border);
}

.ox-schedule-header h3 {
    margin: 0;
    font-size: 1.1rem;
    color: var(--ox-primary);
}

.ox-schedule-content {
    padding: 20px;
}

.ox-schedule-item {
    display: flex;
    gap: 10px;
    margin-bottom: 10px;
}

.ox-schedule-label {
    font-weight: 600;
    color: var(--ox-secondary);
}

.ox-schedule-value {
    color: var(--ox-dark);
}

.ox-schedule-description {
    margin-top: 15px;
    padding-top: 15px;
    border-top: 1px solid var(--ox-border);
    color: var(--ox-dark);
    line-height: 1.6;
}

/* Responsive for Aluno/Turma Pages */
@media (max-width: 768px) {
    .ox-aluno-header {
        flex-direction: column;
        text-align: center;
    }

    .ox-aluno-meta {
        justify-content: center;
    }

    .ox-aluno-stats-cards {
        grid-template-columns: repeat(2, 1fr);
    }

    .ox-info-grid {
        grid-template-columns: 1fr;
    }

    .ox-info-item {
        flex-direction: column;
        gap: 5px;
    }

    .ox-info-value {
        text-align: left;
    }
}

/* ==========================================
   Calendar Widget
   ========================================== */
.ox-calendar-widget {
    background: var(--ox-white);
    border-radius: var(--ox-radius);
    overflow: hidden;
}

.ox-calendar-nav {
    display: flex;
    gap: 5px;
}

.ox-calendar-view-toggle {
    padding: 4px 8px;
    font-size: 12px;
    border-radius: var(--ox-radius-sm);
}

.ox-calendar-view-toggle.active {
    background: var(--ox-primary);
    color: var(--ox-white);
}

.ox-calendar-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 15px;
    background: var(--ox-light);
    border-bottom: 1px solid var(--ox-border);
}

.ox-calendar-title {
    font-weight: 600;
    color: var(--ox-primary);
}

.ox-calendar-prev,
.ox-calendar-next {
    padding: 5px;
    line-height: 1;
}

.ox-calendar-body {
    padding: 10px;
}

.ox-calendar-weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    text-align: center;
    font-size: 11px;
    font-weight: 600;
    color: var(--ox-secondary);
    margin-bottom: 5px;
    padding-bottom: 5px;
    border-bottom: 1px solid var(--ox-border);
}

.ox-calendar-days {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
}

.ox-calendar-day {
    aspect-ratio: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    border-radius: var(--ox-radius-sm);
    cursor: pointer;
    transition: var(--ox-transition);
    position: relative;
}

.ox-calendar-day:hover {
    background: var(--ox-light);
}

.ox-calendar-day.other-month {
    color: #ccc;
}

.ox-calendar-day.today {
    background: var(--ox-primary);
    color: var(--ox-white);
    font-weight: 600;
}

.ox-calendar-day.has-event {
    font-weight: 600;
}

.ox-calendar-day.has-event::after {
    content: '';
    position: absolute;
    bottom: 2px;
    left: 50%;
    transform: translateX(-50%);
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: var(--ox-danger);
}

.ox-calendar-day.today.has-event::after {
    background: var(--ox-white);
}

.ox-calendar-day.event-afeta {
    background: rgba(220, 53, 69, 0.1);
    color: var(--ox-danger);
}

.ox-calendar-day.event-nao-afeta {
    background: rgba(40, 167, 69, 0.1);
    color: var(--ox-success);
}

.ox-calendar-day.event-fup {
    background: rgba(0, 123, 255, 0.12);
    color: var(--ox-primary);
    font-weight: 700;
}

.ox-calendar-events-list {
    border-top: 1px solid var(--ox-border);
    padding: 10px;
    max-height: 200px;
    overflow-y: auto;
}

.ox-calendar-event-item {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 8px;
    background: var(--ox-light);
    border-radius: var(--ox-radius-sm);
    margin-bottom: 5px;
    font-size: 12px;
}

.ox-calendar-event-item:last-child {
    margin-bottom: 0;
}

.ox-calendar-event-date {
    min-width: 60px;
    font-weight: 600;
    color: var(--ox-primary);
}

.ox-calendar-event-info {
    flex: 1;
}

.ox-calendar-event-desc {
    font-weight: 500;
    margin-bottom: 2px;
}

.ox-calendar-event-meta {
    color: var(--ox-secondary);
    font-size: 11px;
}

.ox-calendar-event-type {
    display: inline-block;
    padding: 2px 6px;
    border-radius: var(--ox-radius-sm);
    font-size: 10px;
    font-weight: 600;
}

.ox-calendar-event-type.afeta_aula {
    background: rgba(220, 53, 69, 0.15);
    color: var(--ox-danger);
}

.ox-calendar-event-type.nao_afeta_aula {
    background: rgba(40, 167, 69, 0.15);
    color: var(--ox-success);
}

.ox-calendar-empty {
    text-align: center;
    padding: 20px;
    color: var(--ox-secondary);
    font-size: 12px;
}

.ox-calendar-event-type.fup {
    background: rgba(0, 123, 255, 0.15);
    color: var(--ox-primary);
}

.ox-calendar-event-actions {
    display: flex;
    gap: 2px;
    align-items: center;
    flex-shrink: 0;
    opacity: 0.4;
    transition: opacity 0.2s;
}

.ox-calendar-event-item:hover .ox-calendar-event-actions {
    opacity: 1;
}

.ox-calendar-event-actions .ox-btn {
    padding: 2px 4px;
    min-width: auto;
    line-height: 1;
}

.ox-calendar-event-actions .dashicons {
    font-size: 14px;
    width: 14px;
    height: 14px;
}

.ox-calendar-add-event {
    margin-right: 8px;
}

/* Week view */
.ox-calendar-widget.week-view .ox-calendar-days {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.ox-calendar-week-row {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
}

.ox-calendar-widget.week-view .ox-calendar-day {
    aspect-ratio: auto;
    padding: 8px 4px;
}

/* ==========================================
   Tab Actions (Aulas, etc.)
   ========================================== */
.ox-tab-actions {
    display: flex;
    gap: 10px;
    margin-bottom: 20px;
    padding: 15px;
    background: var(--ox-light);
    border-radius: var(--ox-radius);
}

.ox-btn-generate-aulas,
.ox-btn-generate-execucoes {
    padding: 10px 20px;
}

/* Edit button in tables */
.ox-btn-edit-aula,
.ox-btn-edit-presencas {
    padding: 6px 12px;
    font-size: 0.85rem;
}

.ox-btn-edit-aula .dashicons,
.ox-btn-edit-presencas .dashicons {
    font-size: 14px;
    width: 14px;
    height: 14px;
}

/* Presença modal table */
.ox-table-presencas {
    margin-top: 15px;
}

.ox-table-presencas .ox-presenca-buttons {
    display: flex;
    gap: 5px;
}

.ox-btn-xs {
    padding: 4px 8px;
    font-size: 0.75rem;
    min-width: 28px;
}

.ox-aula-info-header {
    padding: 10px 15px;
    background: var(--ox-light);
    border-radius: var(--ox-radius-sm);
    margin-bottom: 15px;
}

/* Fieldsets for grouped form sections */
.ox-fieldset {
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius);
    padding: 15px;
    margin-bottom: 20px;
}

.ox-fieldset legend {
    font-weight: 600;
    padding: 0 10px;
    font-size: 0.9rem;
    color: var(--ox-primary);
}

/* Alert boxes */
.ox-alert {
    padding: 10px 15px;
    border-radius: var(--ox-radius-sm);
    margin-bottom: 15px;
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.9rem;
}

.ox-alert .dashicons {
    font-size: 18px;
    width: 18px;
    height: 18px;
}

.ox-alert-info {
    background: #e7f3ff;
    border: 1px solid #b3d7ff;
    color: #0056b3;
}

.ox-alert-success {
    background: #d4edda;
    border: 1px solid #c3e6cb;
    color: #155724;
}

.ox-alert-warning {
    background: #fff3cd;
    border: 1px solid #ffeeba;
    color: #856404;
}

/* Form hints */
.ox-form-hint {
    display: block;
    margin-top: 4px;
    font-size: 0.8rem;
    color: var(--ox-muted);
}

/* Readonly field display */
.ox-readonly-field {
    padding: 10px 12px;
    background: var(--ox-light);
    border-radius: var(--ox-radius-sm);
    font-size: 0.9rem;
    line-height: 1.6;
    color: var(--ox-text);
}

.ox-readonly-field strong {
    color: var(--ox-dark);
}

/* Plan sections — structured display for lesson plan in post-lesson view */
.ox-plan-sections {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.ox-plan-section {
    background: var(--ox-light);
    border: 1px solid #e9ecef;
    border-radius: var(--ox-radius-sm);
    padding: 10px 12px;
}

.ox-plan-section-label {
    font-weight: 600;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--ox-muted);
    margin-bottom: 4px;
}

.ox-plan-section-text {
    font-size: 0.9rem;
    line-height: 1.7;
    color: var(--ox-text);
    white-space: pre-wrap;
    word-break: break-word;
}

.ox-plan-section-text a {
    color: var(--ox-primary);
    text-decoration: underline;
}

/* Spin animation for loading icons */
.ox-spin {
    animation: ox-spin 1s linear infinite;
}

/* ==========================================
   Schedule Execution Styles
   ========================================== */

/* Schedule card with execution */
.ox-schedule-card.has-execucao {
    border-left: 3px solid var(--ox-primary);
}

/* Execution info section in schedule cards */
.ox-schedule-execucao-info {
    margin-top: 15px;
    padding-top: 15px;
    border-top: 1px dashed var(--ox-border);
}

.ox-schedule-actions {
    margin-top: 15px;
    padding-top: 10px;
    border-top: 1px solid var(--ox-border);
    display: flex;
    justify-content: flex-end;
}

/* Execution info header in modal */
.ox-execucao-info-header {
    padding: 12px 15px;
    background: var(--ox-light);
    border-radius: var(--ox-radius-sm);
    margin-bottom: 15px;
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.ox-execucao-info-header strong {
    font-size: 1.1rem;
}

.ox-execucao-description {
    padding: 10px 15px;
    background: var(--ox-white);
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius-sm);
    margin-bottom: 15px;
    font-size: 0.9rem;
    color: var(--ox-muted);
    line-height: 1.5;
}

/* Aula schedule cell - see consolidated styles below */

/* Outline button style */
.ox-btn-outline {
    background: transparent;
    border: 1px solid var(--ox-primary);
    color: var(--ox-primary);
}

.ox-btn-outline:hover {
    background: var(--ox-primary);
    color: var(--ox-white);
}

/* Text color utilities */
.ox-text-success {
    color: var(--ox-success) !important;
}

.ox-text-danger {
    color: var(--ox-danger) !important;
}

.ox-text-warning {
    color: var(--ox-warning) !important;
}

.ox-text-muted {
    color: var(--ox-muted) !important;
}

/* Student actions cell */
.ox-student-actions {
    display: flex;
    gap: 5px;
    white-space: nowrap;
}

.ox-student-actions .ox-btn {
    padding: 4px 8px;
}

.ox-student-actions .dashicons {
    font-size: 16px;
    width: 16px;
    height: 16px;
}

/* ==========================================
   Report Card / Feedback Styles
   ========================================== */

/* Report info header */
.ox-report-info-header {
    padding: 12px 15px;
    background: var(--ox-light);
    border-radius: var(--ox-radius-sm);
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.ox-report-info-header strong {
    font-size: 1.1rem;
}

/* Grades grid */
.ox-grades-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 10px;
    margin-bottom: 15px;
}

.ox-grade-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 12px;
    background: var(--ox-white);
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius-sm);
}

.ox-grade-label {
    color: var(--ox-muted);
    font-size: 0.9rem;
}

.ox-grade-value {
    font-weight: 600;
    color: var(--ox-dark);
}

/* Grades summary */
.ox-grades-summary {
    display: flex;
    gap: 20px;
    padding: 15px;
    background: linear-gradient(135deg, var(--ox-primary-light), var(--ox-light));
    border-radius: var(--ox-radius);
    margin-top: 15px;
}

.ox-grades-summary .ox-grade-item {
    background: var(--ox-white);
    flex: 1;
}

.ox-grades-summary .ox-grade-value {
    font-size: 1.2rem;
    color: var(--ox-primary);
}

/* Reports table */
.ox-table-reports {
    margin: 0;
}

.ox-table-reports th,
.ox-table-reports td {
    padding: 12px 15px;
}

/* Large modal */
.ox-modal-lg {
    max-width: 800px;
}

/* Empty message with button */
.ox-empty-message {
    text-align: center;
    padding: 30px;
}

.ox-empty-message p {
    margin-bottom: 15px;
    color: var(--ox-muted);
}

/* ==========================================
   Notas (Grades) Modal Styles
   ========================================== */

/* Notas list content */
.ox-notas-list-content {
    max-height: 60vh;
    overflow-y: auto;
}

/* Notas etapa section */
.ox-notas-etapa {
    margin-bottom: 25px;
    padding-bottom: 15px;
    border-bottom: 1px solid var(--ox-border);
}

.ox-notas-etapa:last-child {
    margin-bottom: 0;
    padding-bottom: 0;
    border-bottom: none;
}

.ox-notas-etapa-title {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 15px;
    font-size: 1rem;
    color: var(--ox-primary);
}

/* Notas table */
.ox-table-notas {
    margin: 0;
}

.ox-table-notas th,
.ox-table-notas td {
    padding: 10px 12px;
    font-size: 0.9rem;
}

.ox-table-notas td:last-child {
    white-space: nowrap;
}

/* Form row for side-by-side inputs */
.ox-form-row {
    display: flex;
    gap: 15px;
    margin-bottom: 0;
}

.ox-form-group-half {
    flex: 1;
}

/* Danger button style */
.ox-btn-danger {
    background: var(--ox-danger);
    color: var(--ox-white);
    border: none;
}

.ox-btn-danger:hover {
    background: #c0392b;
}

/* ==========================================
   DASHBOARD PENDENTES STYLES
   ========================================== */

/* Presenca Today (amarelo) */
.ox-presenca-date-section.ox-presenca-today {
    border-color: var(--ox-warning);
}

.ox-presenca-date-section.ox-presenca-today .ox-presenca-date-header {
    background: #fffbeb;
}

/* Presenca Turma Section in Dashboard */
.ox-presenca-turma-section h4 {
    margin: 0 0 15px 0;
    font-size: 1rem;
    color: var(--ox-primary);
    padding-bottom: 8px;
    border-bottom: 1px solid var(--ox-border);
}

/* Schedule Pendentes Section */
.ox-schedules-pendentes {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.ox-schedule-turma-section {
    margin-bottom: 20px;
}

.ox-schedule-turma-section h4 {
    margin: 0 0 12px 0;
    font-size: 1rem;
    color: var(--ox-primary);
    padding-bottom: 8px;
    border-bottom: 1px solid var(--ox-border);
}

.ox-schedule-pending-item {
    background: var(--ox-white);
    border-radius: var(--ox-radius);
    padding: 15px;
    border: 1px solid var(--ox-border);
    border-left: 4px solid var(--ox-primary);
    margin-bottom: 10px;
}

.ox-schedule-pending-item:last-child {
    margin-bottom: 0;
}

/* Schedule Late (vermelho) */
.ox-schedule-pending-item.ox-schedule-late {
    border-left-color: var(--ox-danger);
    background: #fef2f2;
}

/* Schedule Today (amarelo) */
.ox-schedule-pending-item.ox-schedule-today {
    border-left-color: var(--ox-warning);
    background: #fffbeb;
}

.ox-schedule-pending-header {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 10px;
}

.ox-schedule-pending-header strong {
    font-size: 0.95rem;
    color: var(--ox-dark);
}

.ox-schedule-pending-info {
    display: flex;
    align-items: center;
    gap: 15px;
    font-size: 0.85rem;
    color: var(--ox-secondary);
    margin-bottom: 12px;
}

.ox-schedule-dates {
    display: flex;
    align-items: center;
    gap: 5px;
}

.ox-schedule-dates .dashicons {
    font-size: 16px;
    width: 16px;
    height: 16px;
}

.ox-schedule-pending-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

/* Registros Pós-Aula Pendentes Section */
.ox-registros-pendentes {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.ox-registro-turma-section {
    margin-bottom: 15px;
}

.ox-registro-turma-section h4 {
    font-size: 0.95rem;
    font-weight: 600;
    margin: 0 0 10px 0;
    padding-bottom: 5px;
    border-bottom: 1px solid var(--ox-border);
}

.ox-registro-items {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.ox-registro-pending-item {
    background: var(--ox-white);
    border-radius: var(--ox-radius);
    padding: 12px 15px;
    border: 1px solid var(--ox-border);
    border-left: 4px solid var(--ox-warning);
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
}

.ox-registro-pending-info {
    display: flex;
    align-items: center;
    gap: 15px;
    font-size: 0.85rem;
    color: var(--ox-secondary);
}

.ox-registro-date,
.ox-registro-time {
    display: flex;
    align-items: center;
    gap: 5px;
}

.ox-registro-date .dashicons,
.ox-registro-time .dashicons {
    font-size: 14px;
    width: 14px;
    height: 14px;
}

.ox-registro-pending-actions {
    display: flex;
    gap: 8px;
}

/* Section header with badge */
.ox-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--ox-border);
}

.ox-section-header h3 {
    margin: 0;
    border: none;
    padding: 0;
}

/* Presenca turma section styling in dashboard */
.ox-presencas-pendentes .ox-presenca-turma-section:last-child {
    margin-bottom: 0;
}

/* ==========================================
   Schedule Quiz and Platform Styles
   ========================================== */

/* Schedule item with Quiz - highlighted with warning color */
.ox-schedule-quiz {
    background-color: var(--ox-warning) !important;
    border-color: var(--ox-warning) !important;
    color: #000 !important;
}

.ox-schedule-quiz:hover {
    background-color: #e0a800 !important;
    border-color: #e0a800 !important;
}

/* Schedule item with Platform - highlighted with info color */
.ox-schedule-platform {
    background-color: var(--ox-info) !important;
    border-color: var(--ox-info) !important;
    color: #fff !important;
}

.ox-schedule-platform:hover {
    background-color: #138496 !important;
    border-color: #138496 !important;
}

/* Schedule item with both Quiz AND Platform - special highlight */
.ox-schedule-quiz.ox-schedule-platform {
    background: linear-gradient(135deg, var(--ox-warning) 50%, var(--ox-info) 50%) !important;
    border-color: var(--ox-warning) !important;
    color: #000 !important;
}

.ox-schedule-quiz.ox-schedule-platform:hover {
    opacity: 0.9;
}

/* Aula schedule cell styling */
.ox-aula-schedule-cell {
    vertical-align: top;
}

.ox-aula-schedule-cell .ox-btn {
    display: block;
    font-size: 11px;
    padding: 4px 8px;
    text-align: left;
    white-space: normal;
    width: 100%;
    margin-bottom: 4px;
}

.ox-aula-schedule-cell .ox-btn:last-child {
    margin-bottom: 0;
}

/* Aula atividade cell styling */
.ox-aula-atividade-cell {
    vertical-align: top;
}

.ox-aula-atividade-cell .ox-btn {
    display: inline-block;
    font-size: 10px;
    padding: 3px 6px;
    text-align: left;
    white-space: normal;
    margin-bottom: 4px;
    cursor: default;
}

.ox-aula-atividade-cell .ox-btn:last-child {
    margin-bottom: 0;
}

/* Schedule item Fixed Events (Welcome, Project, Tests) - red color */
.ox-schedule-fixed {
    background-color: var(--ox-danger) !important;
    border-color: var(--ox-danger) !important;
    color: #fff !important;
}

.ox-schedule-fixed:hover {
    background-color: #c82333 !important;
    border-color: #c82333 !important;
}

.ox-schedule-extra {
    background-color: #008f6b !important;
    border-color: #008f6b !important;
    color: #fff !important;
}

.ox-schedule-extra:hover {
    background-color: #007a5c !important;
    border-color: #007a5c !important;
}

/* Schedule Legend */
.ox-schedule-legend {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 15px;
    padding: 10px 15px;
    background-color: var(--ox-light);
    border-radius: 4px;
    margin-bottom: 15px;
    font-size: 12px;
}

.ox-schedule-legend .ox-legend-title {
    font-weight: 600;
    color: var(--ox-dark);
}

.ox-schedule-legend .ox-legend-item {
    display: flex;
    align-items: center;
    gap: 5px;
}

.ox-schedule-legend .ox-legend-color {
    display: inline-block;
    width: 16px;
    height: 16px;
    border-radius: 3px;
}

.ox-schedule-legend .ox-legend-color.ox-schedule-quiz {
    background-color: var(--ox-warning);
}

.ox-schedule-legend .ox-legend-color.ox-schedule-platform {
    background-color: var(--ox-info);
}

.ox-schedule-legend .ox-legend-color.ox-schedule-fixed {
    background-color: var(--ox-danger);
}

.ox-schedule-legend .ox-legend-color.ox-schedule-extra {
    background-color: #008f6b;
}

/* Table wrapper */
.ox-table-scroll-wrapper {
    width: 100%;
    max-width: 100%;
}

/* Lessons table - fit to container with text wrapping */
.ox-table-aulas {
    width: 100%;
    table-layout: fixed;
}

.ox-table-aulas th,
.ox-table-aulas td {
    word-wrap: break-word;
    overflow-wrap: break-word;
    vertical-align: top;
    white-space: normal;
    overflow: hidden;
}

/* Column widths for lessons table (7 columns) */
.ox-table-aulas th:nth-child(1),
.ox-table-aulas td:nth-child(1) { width: 10%; } /* Date */

.ox-table-aulas th:nth-child(2),
.ox-table-aulas td:nth-child(2) { width: 25%; } /* Schedule */

.ox-table-aulas th:nth-child(3),
.ox-table-aulas td:nth-child(3) { width: 10%; text-align: center; } /* Homework */

.ox-table-aulas th:nth-child(4),
.ox-table-aulas td:nth-child(4) { width: 15%; overflow: hidden; text-align: center; } /* Content Taught */

.ox-table-aulas th:nth-child(5),
.ox-table-aulas td:nth-child(5) { width: 10%; } /* Status */

.ox-table-aulas th:nth-child(6),
.ox-table-aulas td:nth-child(6) { width: 22%; } /* Lesson Plan */

.ox-table-aulas th:nth-child(7),
.ox-table-aulas td:nth-child(7) { width: 8%; } /* Actions */

/* Content Taught column - clamp to 3 lines in table */
.ox-aula-content-clamp {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    line-height: 1.5em;
    max-height: 4.5em;
}

/* Lesson Plan column - show preview only (2-3 lines) */
.ox-table-aulas td:nth-child(6) {
    max-height: 4.5em;
    overflow: hidden;
    line-height: 1.5em;
}

/* Ensure buttons in cells don't break awkwardly */
.ox-table-aulas td .ox-btn {
    white-space: nowrap;
    margin: 2px 0;
    display: inline-block;
}

/* Schedule column buttons - allow text wrapping */
.ox-table-aulas td:nth-child(2) .ox-btn {
    white-space: normal;
}

/* Homework column buttons - center properly */
.ox-table-aulas td:nth-child(3) .ox-btn {
    display: block;
    margin-left: auto;
    margin-right: auto;
    width: fit-content;
    white-space: normal;
}

/* ==========================================
   Responsive: Lessons Table
   ========================================== */
@media (max-width: 768px) {
    .ox-table-scroll-wrapper {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    .ox-table-aulas {
        table-layout: auto;
        min-width: 700px;
    }

    .ox-table-aulas th:nth-child(1),
    .ox-table-aulas td:nth-child(1) { width: auto; min-width: 75px; } /* Date */

    .ox-table-aulas th:nth-child(2),
    .ox-table-aulas td:nth-child(2) { width: auto; min-width: 120px; } /* Schedule */

    .ox-table-aulas th:nth-child(3),
    .ox-table-aulas td:nth-child(3) { width: auto; min-width: 80px; } /* Homework */

    .ox-table-aulas th:nth-child(4),
    .ox-table-aulas td:nth-child(4) { width: auto; min-width: 100px; } /* Content Taught */

    .ox-table-aulas th:nth-child(5),
    .ox-table-aulas td:nth-child(5) { width: auto; min-width: 80px; } /* Status */

    .ox-table-aulas th:nth-child(6),
    .ox-table-aulas td:nth-child(6) { width: auto; min-width: 140px; } /* Lesson Plan */

    .ox-table-aulas th:nth-child(7),
    .ox-table-aulas td:nth-child(7) { width: auto; min-width: 50px; } /* Actions */

    .ox-table-aulas th,
    .ox-table-aulas td {
        padding: 8px 10px;
        font-size: 0.82rem;
    }

    .ox-schedule-legend {
        flex-wrap: wrap;
        gap: 6px;
        font-size: 0.8rem;
    }
}

/* ==========================================
   Extra Large Modal (Aluno Form)
   ========================================== */
.ox-modal-xl {
    max-width: 900px;
    width: 95%;
}

/* ==========================================
   Form Tabs Navigation
   ========================================== */
.ox-form-tabs {
    display: flex;
    gap: 5px;
    border-bottom: 2px solid var(--ox-border);
    margin-bottom: 20px;
    padding-bottom: 0;
    flex-wrap: wrap;
}

.ox-form-tab {
    padding: 10px 20px;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    margin-bottom: -2px;
    cursor: pointer;
    font-size: 14px;
    font-weight: 500;
    color: var(--ox-secondary);
    transition: var(--ox-transition);
    white-space: nowrap;
}

.ox-form-tab:hover {
    color: var(--ox-primary);
    background: var(--ox-light);
}

.ox-form-tab.active {
    color: var(--ox-primary);
    border-bottom-color: var(--ox-primary);
    background: transparent;
}

.ox-form-tab-content {
    display: none;
}

.ox-form-tab-content.active {
    display: block;
}

/* ==========================================
   Form Column Widths
   ========================================== */
.ox-form-quarter {
    flex: 0 0 calc(25% - 10px);
    min-width: 120px;
}

.ox-form-third {
    flex: 0 0 calc(33.333% - 10px);
    min-width: 150px;
}

@media (max-width: 768px) {
    .ox-form-tabs {
        gap: 0;
    }

    .ox-form-tab {
        padding: 8px 12px;
        font-size: 12px;
        flex: 1;
        text-align: center;
    }

    .ox-form-quarter,
    .ox-form-third {
        flex: 0 0 calc(50% - 10px);
    }
}

@media (max-width: 480px) {
    .ox-form-quarter,
    .ox-form-third {
        flex: 0 0 100%;
    }
}

/* ==========================================
   Input Validation States
   ========================================== */
.ox-input-invalid {
    border-color: var(--ox-danger) !important;
    box-shadow: 0 0 0 2px rgba(220, 53, 69, 0.2);
}

/* ==========================================
   Materiais (Materials) Styles
   ========================================== */
.ox-materiais-dashboard {
    padding: 20px;
}

.ox-materiais-tabs {
    display: flex;
    gap: 10px;
    margin-bottom: 20px;
    border-bottom: 2px solid var(--ox-border);
    padding-bottom: 10px;
}

.ox-tab-btn {
    padding: 10px 20px;
    border: none;
    background: transparent;
    color: var(--ox-secondary);
    cursor: pointer;
    font-size: 14px;
    font-weight: 500;
    border-radius: var(--ox-radius-sm) var(--ox-radius-sm) 0 0;
    transition: var(--ox-transition);
}

.ox-tab-btn:hover {
    background: var(--ox-light);
    color: var(--ox-primary);
}

.ox-tab-btn.active {
    background: var(--ox-primary);
    color: #fff;
}

.ox-tab-content {
    display: none;
}

.ox-tab-content.active {
    display: block;
}

.ox-materiais-nivel-group {
    margin-bottom: 25px;
}

.ox-nivel-header {
    font-size: 16px;
    font-weight: 600;
    color: var(--ox-primary);
    margin-bottom: 10px;
    padding-bottom: 5px;
    border-bottom: 2px solid var(--ox-primary);
}

/* Dashboard homeworks section */
.ox-homeworks-section {
    margin-bottom: 20px;
}

.ox-homeworks-summary {
    padding: 10px 15px;
    background: linear-gradient(135deg, #e3f2fd 0%, #bbdefb 100%);
    border-radius: var(--ox-radius-sm);
    margin-bottom: 15px;
}

.ox-homework-count {
    font-weight: 600;
    color: #1565c0;
}

.ox-homeworks-list {
    max-height: 400px;
    overflow-y: auto;
}

.ox-homework-unit-group {
    margin-bottom: 15px;
}

.ox-homework-unit-title {
    font-size: 14px;
    font-weight: 600;
    color: var(--ox-dark);
    margin: 0 0 10px 0;
    padding-bottom: 5px;
    border-bottom: 1px solid var(--ox-border);
    text-transform: capitalize;
}

.ox-homework-desc {
    max-width: 250px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ox-homeworks-section .ox-table-compact {
    font-size: 12px;
}

.ox-homeworks-section .ox-table-compact th {
    background: #f5f5f5;
    font-weight: 600;
}

/* Dashboard sidebar materials section */
.ox-materiais-section {
    margin-bottom: 20px;
}

.ox-materiais-open-items {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.ox-material-open-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 12px;
    background: var(--ox-light);
    border-radius: var(--ox-radius-sm);
    border-left: 3px solid var(--ox-warning);
}

.ox-material-open-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.ox-material-open-info strong {
    font-size: 13px;
    color: var(--ox-dark);
}

.ox-material-open-info span {
    font-size: 12px;
    color: var(--ox-text);
}

.ox-material-open-info small {
    font-size: 11px;
    color: var(--ox-muted);
}

.ox-material-open-actions {
    display: flex;
    gap: 5px;
}

.ox-materiais-more {
    margin-top: 10px;
    text-align: center;
}

.ox-materiais-more a {
    color: var(--ox-primary);
    font-size: 13px;
    text-decoration: none;
}

.ox-materiais-more a:hover {
    text-decoration: underline;
}

/* Student page materials list */
.ox-materiais-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.ox-material-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 16px;
    background: var(--ox-light);
    border-radius: var(--ox-radius);
    border-left: 3px solid var(--ox-primary);
}

.ox-material-info {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.ox-material-info strong {
    color: var(--ox-dark);
}

.ox-material-isbn {
    font-size: 12px;
    color: var(--ox-muted);
}

.ox-toggle-material .dashicons {
    font-size: 16px;
    width: 16px;
    height: 16px;
}

/* Button states for materials */
.ox-btn-warning {
    background-color: var(--ox-warning);
    border-color: var(--ox-warning);
    color: #212529;
}

.ox-btn-warning:hover {
    background-color: #e0a800;
    border-color: #d39e00;
}

/* Table compact variant */
.ox-table-compact th,
.ox-table-compact td {
    padding: 8px 12px;
    font-size: 13px;
}

/* ==========================================
   Class Observations
   ========================================== */

/* Section header actions */
.ox-section-actions {
    display: flex;
    gap: 5px;
    align-items: center;
    flex-shrink: 0;
}

/* Observations dashboard content (main column layout) */
.ox-obs-dashboard-content {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.ox-obs-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    align-items: start;
}

.ox-obs-dashboard-recent:only-child {
    grid-column: 1 / -1;
}

.ox-obs-dashboard-recent:only-child .ox-observacoes-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
}

.ox-obs-dashboard-schedule .ox-schedule-this-week {
    margin-bottom: 0;
}

.ox-obs-dashboard-recent .ox-observacoes-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

@media (max-width: 768px) {
    .ox-obs-dashboard-columns {
        grid-template-columns: 1fr;
    }
}

/* Dashboard mini-stats */
.ox-obs-mini-stats {
    display: flex;
    gap: 10px;
    margin-bottom: 0;
}

.ox-mini-stat {
    display: flex;
    flex-direction: column;
    align-items: center;
    background: var(--ox-light);
    border-radius: var(--ox-radius-sm);
    padding: 10px 15px;
    flex: 1;
    min-width: 0;
}

.ox-mini-stat-value {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--ox-primary);
    line-height: 1;
}

.ox-mini-stat-label {
    font-size: 0.75rem;
    color: var(--ox-secondary);
    margin-top: 3px;
}

/* Dashboard observation cards */
.ox-observacoes-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.ox-observacao-card {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 12px 15px;
    background: var(--ox-light);
    border-radius: var(--ox-radius-sm);
    border-left: 3px solid var(--ox-primary);
    cursor: pointer;
    transition: var(--ox-transition);
}

.ox-observacao-card:hover {
    background: #edf2f7;
    box-shadow: var(--ox-shadow);
}

.ox-observacao-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.ox-observacao-header strong {
    font-size: 0.9rem;
    color: var(--ox-dark);
}

.ox-observacao-meta {
    display: flex;
    gap: 12px;
    font-size: 0.8rem;
    color: var(--ox-secondary);
}

.ox-observacao-actions {
    display: flex;
    gap: 5px;
    margin-top: 2px;
}

/* Grade scale reference legend */
.ox-obs-grade-scale {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    padding: 8px 12px;
    background: #f8f9fa;
    border: 1px solid #e9ecef;
    border-radius: 8px;
    margin-bottom: 12px;
    font-size: 0.75rem;
}
.ox-obs-grade-scale-label {
    font-weight: 600;
    color: var(--ox-secondary);
    margin-right: 2px;
}
.ox-obs-grade-scale .ox-badge {
    font-size: 0.7rem;
    padding: 2px 8px;
}
.ox-obs-grade-scale-note {
    color: #999;
    font-style: italic;
}

/* Teacher — Next Observation banner */
.ox-next-obs-banner {
    background: var(--ox-light);
    border: 1px solid #e2e8f0;
    border-radius: var(--ox-radius-sm);
    padding: 12px 15px;
    margin-bottom: 12px;
    text-align: center;
}

.ox-next-obs-banner.ox-next-obs-this-week {
    background: #f0fff4;
    border-color: #c6f6d5;
}

.ox-next-obs-label {
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    color: var(--ox-secondary);
    text-transform: uppercase;
    margin-bottom: 4px;
}

.ox-next-obs-this-week .ox-next-obs-label {
    color: #28a745;
}

.ox-next-obs-date {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--ox-dark);
}

.ox-next-obs-class {
    font-size: 0.85rem;
    font-weight: 500;
    color: var(--ox-primary);
    margin-top: 2px;
}

.ox-next-obs-num {
    font-size: 0.78rem;
    color: var(--ox-secondary);
    margin-top: 2px;
}

/* Observation form — Score bar */
.ox-obs-score-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 15px;
    background: var(--ox-light);
    border-radius: var(--ox-radius-sm);
    margin-bottom: 15px;
    font-size: 0.95rem;
    font-weight: 500;
}

.ox-obs-score-bar .ox-badge {
    font-size: 0.8rem;
    padding: 4px 12px;
}

/* Observation form — Sections */
.ox-obs-section {
    margin-bottom: 10px;
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius-sm);
    overflow: hidden;
}

.ox-obs-section-header {
    padding: 10px 15px;
    background: var(--ox-primary);
    color: var(--ox-white);
    font-size: 0.85rem;
    font-weight: 600;
}

.ox-obs-section-body {
    padding: 5px 0;
}

/* Rating header row (FULLY / MOSTLY / etc. labels) */
.ox-obs-rating-header-row {
    display: flex;
    align-items: center;
    padding: 4px 15px;
    border-bottom: 1px solid var(--ox-border);
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--ox-secondary);
    text-transform: uppercase;
}

.ox-obs-item-label-header {
    flex: 1;
}

.ox-obs-rating-options-header {
    display: flex;
    gap: 2px;
    min-width: 220px;
    justify-content: center;
}

.ox-obs-rating-options-header span {
    width: 52px;
    text-align: center;
}

/* Observation items */
.ox-obs-item {
    display: flex;
    align-items: center;
    padding: 6px 15px;
    border-bottom: 1px solid #f0f0f0;
    transition: background 0.15s;
}

.ox-obs-item:last-child {
    border-bottom: none;
}

.ox-obs-item:hover {
    background: #fafbfd;
}

.ox-obs-item-label {
    flex: 1;
    font-size: 0.85rem;
    color: var(--ox-dark);
    line-height: 1.35;
    padding-right: 10px;
}

/* Rating button group */
.ox-obs-rating-group {
    display: flex;
    gap: 2px;
    min-width: 220px;
    justify-content: center;
}

.ox-obs-rating-label {
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    margin: 0;
}

.ox-obs-rating-label input[type="radio"] {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.ox-obs-rating-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 30px;
    border-radius: 15px;
    font-size: 0.72rem;
    font-weight: 600;
    border: 2px solid #ddd;
    background: var(--ox-white);
    color: #999;
    transition: all 0.15s ease;
    user-select: none;
}

.ox-obs-rating-btn:hover {
    border-color: #aaa;
    color: #666;
}

/* Selected states for rating buttons */
.ox-obs-rating-btn.ox-obs-selected.ox-obs-fully {
    background: #28a745;
    border-color: #28a745;
    color: white;
}

.ox-obs-rating-btn.ox-obs-selected.ox-obs-mostly {
    background: #ffc107;
    border-color: #ffc107;
    color: #333;
}

.ox-obs-rating-btn.ox-obs-selected.ox-obs-partially {
    background: #6c757d;
    border-color: #6c757d;
    color: white;
}

.ox-obs-rating-btn.ox-obs-selected.ox-obs-na {
    background: #e9ecef;
    border-color: #ced4da;
    color: #666;
}

/* Observation form layout helpers */
.ox-form-sixth {
    flex: 0 0 calc(16.66% - 15px);
}

.ox-form-third {
    flex: 0 0 calc(33.33% - 14px);
}

/* Observation list table */
.ox-table-observacoes {
    margin: 0;
}

.ox-table-observacoes th,
.ox-table-observacoes td {
    padding: 10px 12px;
    font-size: 0.9rem;
}

.ox-obs-actions-cell {
    white-space: nowrap;
}

.ox-btn-danger-text {
    color: var(--ox-danger) !important;
}

.ox-btn-danger-text:hover {
    background: rgba(220, 53, 69, 0.1);
}

/* Observation detail view */
.ox-obs-detail-header {
    padding: 15px;
    background: var(--ox-light);
    border-radius: var(--ox-radius-sm);
    margin-bottom: 15px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
}

.ox-obs-detail-row {
    font-size: 0.9rem;
    color: var(--ox-dark);
}

.ox-obs-detail-row strong {
    color: var(--ox-secondary);
    font-weight: 600;
}

.ox-obs-detail-section {
    margin-bottom: 10px;
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius-sm);
    overflow: hidden;
}

.ox-obs-detail-items {
    padding: 0;
}

.ox-obs-detail-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 15px;
    border-bottom: 1px solid #f0f0f0;
    font-size: 0.85rem;
}

.ox-obs-detail-item:last-child {
    border-bottom: none;
}

.ox-obs-detail-item-label {
    flex: 1;
    color: var(--ox-dark);
    padding-right: 15px;
}

/* Rating pills in detail view */
.ox-obs-rating-pill {
    display: inline-block;
    padding: 3px 12px;
    border-radius: 12px;
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    min-width: 70px;
    text-align: center;
}

.ox-obs-rating-pill.ox-obs-fully {
    background: #d4edda;
    color: #155724;
}

.ox-obs-rating-pill.ox-obs-mostly {
    background: #fff3cd;
    color: #856404;
}

.ox-obs-rating-pill.ox-obs-partially {
    background: #e2e3e5;
    color: #383d41;
}

.ox-obs-rating-pill.ox-obs-na {
    background: #f0f0f0;
    color: #999;
}

/* Responsive: Observations */
@media (max-width: 768px) {
    .ox-obs-item {
        flex-direction: column;
        align-items: flex-start;
        gap: 6px;
    }

    .ox-obs-item-label {
        padding-right: 0;
    }

    .ox-obs-rating-group {
        min-width: auto;
        width: 100%;
        justify-content: flex-start;
    }

    .ox-obs-rating-header-row {
        display: none;
    }

    .ox-obs-rating-btn {
        width: 44px;
        height: 28px;
        font-size: 0.65rem;
    }

    .ox-obs-detail-header {
        grid-template-columns: 1fr;
    }

    .ox-obs-detail-item {
        flex-direction: column;
        align-items: flex-start;
        gap: 4px;
    }

    .ox-form-sixth,
    .ox-form-third {
        flex: 1 1 100%;
    }

    .ox-obs-mini-stats {
        flex-wrap: wrap;
    }

    .ox-obs-score-bar {
        flex-direction: column;
        gap: 5px;
        text-align: center;
    }

    .ox-observacao-meta {
        flex-wrap: wrap;
        gap: 8px;
    }

    .ox-table-observacoes {
        font-size: 0.8rem;
    }

    .ox-table-observacoes th:nth-child(3),
    .ox-table-observacoes td:nth-child(3) {
        display: none;
    }

    .ox-schedule-entry {
        flex-direction: column;
        align-items: flex-start;
        gap: 6px;
        padding: 8px 10px;
    }

    .ox-schedule-entry-info {
        flex: 0 0 auto;
        width: 100%;
    }

    .ox-schedule-entry-controls {
        width: 100%;
        flex-wrap: wrap;
    }

    .ox-schedule-date-input {
        flex: 1;
        min-width: 120px;
    }

    .ox-schedule-turma-select {
        flex: 1;
        max-width: none;
        min-width: 100px;
    }

    .ox-schedule-move-select {
        flex: 1;
        min-width: 80px;
    }
}

/* ==========================================
   Observation Schedule
   ========================================== */

/* Dashboard "This Week" block */
.ox-schedule-this-week {
    background: #f7f9fc;
    border-radius: var(--ox-radius-sm);
    padding: 10px 0;
    margin-bottom: 15px;
    border-left: 3px solid var(--ox-info);
}

.ox-schedule-this-week .ox-schedule-entry {
    border-bottom: 1px solid #e8ecf1;
    font-size: 0.82rem;
}

.ox-schedule-this-week .ox-schedule-entry:last-child {
    border-bottom: none;
}

.ox-schedule-this-week-header {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--ox-secondary);
    margin-bottom: 4px;
    padding: 0 15px;
    letter-spacing: 0.5px;
}

.ox-schedule-entry-compact {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 4px 0;
    font-size: 0.85rem;
}

.ox-schedule-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #ccc;
    flex-shrink: 0;
}

.ox-schedule-dot-done {
    background: var(--ox-success);
}

.ox-schedule-entry-name {
    color: var(--ox-dark);
    font-weight: 500;
}

.ox-schedule-entry-num {
    color: #999;
    font-size: 0.8rem;
}

/* Schedule modal — week groups */
.ox-schedule-week {
    margin-bottom: 8px;
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius-sm);
    overflow: hidden;
}

.ox-schedule-current-week {
    border-color: var(--ox-info);
    box-shadow: 0 0 0 1px var(--ox-info);
}

.ox-schedule-unscheduled-week {
    border-color: #e67e22;
    border-style: dashed;
}

.ox-schedule-unscheduled-week .ox-schedule-week-header {
    background: #fdf2e9;
    color: #b35900;
}

[data-ox-theme="dark"] .ox-schedule-unscheduled-week .ox-schedule-week-header {
    background: #3a2a15;
    color: #f0ad4e;
}

.ox-schedule-week-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 15px;
    background: var(--ox-light);
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--ox-primary);
    cursor: default;
}

.ox-schedule-current-week .ox-schedule-week-header {
    background: #e8f4fd;
}

.ox-schedule-week-count {
    font-size: 0.75rem;
    color: var(--ox-secondary);
    font-weight: 400;
}

.ox-schedule-week-body {
    padding: 0;
}

/* Individual schedule entry */
.ox-schedule-entry {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 15px;
    border-bottom: 1px solid #f0f0f0;
    font-size: 0.85rem;
    gap: 8px;
}

.ox-schedule-entry:last-child {
    border-bottom: none;
}

.ox-schedule-entry:hover {
    background: #fafbfd;
}

.ox-schedule-entry-info {
    flex: 0 0 auto;
    min-width: 160px;
    max-width: 340px;
    word-wrap: break-word;
    overflow-wrap: break-word;
}

.ox-schedule-entry-info strong {
    color: var(--ox-dark);
}

.ox-schedule-entry-controls {
    display: flex;
    align-items: center;
    gap: 6px;
    flex: 1;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.ox-schedule-date-input {
    padding: 3px 6px;
    border: 1px solid #ddd;
    border-radius: 3px;
    font-size: 0.78rem;
    width: 130px;
}

.ox-schedule-turma-select {
    padding: 3px 6px;
    border: 1px solid #ddd;
    border-radius: 3px;
    font-size: 0.75rem;
    max-width: 150px;
    color: var(--ox-dark);
}

.ox-schedule-move-select {
    padding: 3px 6px;
    border: 1px solid #ddd;
    border-radius: 3px;
    font-size: 0.75rem;
    width: 110px;
    color: var(--ox-secondary);
}

/* Done state */
.ox-schedule-done {
    background: #f0fdf4;
}

.ox-schedule-done-label {
    color: var(--ox-success);
    font-weight: 600;
    font-size: 0.8rem;
    white-space: nowrap;
}

/* Unlinked state (teacher not matched to account) */
.ox-schedule-unlinked {
    background: #fff5f5;
    border-left: 3px solid #dc3545;
}

.ox-schedule-professor-select {
    font-size: 0.75rem;
    padding: 1px 4px;
    border: 1px solid #dc3545;
    border-radius: 3px;
    max-width: 140px;
    background: #fff;
    cursor: pointer;
}

/* ============================
   NIVELAMENTO (Placement)
   ============================ */

/* Public Form */
.ox-nivelamento-form-wrapper {
    max-width: 720px;
    margin: 0 auto;
    padding: 20px;
}

.ox-niv-logo {
    display: block;
    width: 120px;
    height: auto;
    margin: 0 auto 24px;
}

.ox-niv-form-header {
    margin-bottom: 30px;
}

.ox-niv-form-header h2 {
    color: var(--ox-primary, #1e3a5f);
    margin-bottom: 10px;
}

.ox-niv-form-header p {
    color: #666;
    line-height: 1.5;
}

.ox-nivelamento-form .ox-niv-field {
    margin-bottom: 20px;
}

.ox-nivelamento-form label {
    display: block;
    font-weight: 600;
    margin-bottom: 6px;
    color: #333;
    line-height: 1.4;
}

.ox-nivelamento-form input[type="text"],
.ox-nivelamento-form input[type="tel"],
.ox-nivelamento-form input[type="date"],
.ox-nivelamento-form select,
.ox-nivelamento-form textarea {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--ox-border, #e2e8f0);
    border-radius: var(--ox-radius, 8px);
    font-size: 0.95rem;
    font-family: inherit;
    transition: border-color 0.2s;
}

.ox-nivelamento-form input:focus,
.ox-nivelamento-form select:focus,
.ox-nivelamento-form textarea:focus {
    outline: none;
    border-color: var(--ox-primary, #1e3a5f);
    box-shadow: 0 0 0 3px rgba(30, 58, 95, 0.1);
}

.ox-required {
    color: var(--ox-danger, #dc3545);
}

.ox-niv-help {
    display: block;
    font-size: 0.85em;
    color: #888;
    margin-top: 4px;
}

/* Availability Grid */
.ox-availability-grid {
    border: 1px solid var(--ox-border, #e2e8f0);
    border-radius: var(--ox-radius, 8px);
    overflow: hidden;
}

.ox-avail-header {
    display: grid;
    grid-template-columns: 140px repeat(3, 1fr);
    background: #f8f9fa;
    font-weight: 600;
    font-size: 0.85em;
    border-bottom: 1px solid var(--ox-border, #e2e8f0);
}

.ox-avail-header span {
    padding: 10px 8px;
    display: flex;
    justify-content: center;
    align-items: center;
}

.ox-avail-row {
    display: grid;
    grid-template-columns: 140px repeat(3, 1fr);
    align-items: center;
    border-bottom: 1px solid #f0f0f0;
}

.ox-avail-row:last-child {
    border-bottom: none;
}

.ox-avail-day {
    padding: 10px 12px;
    font-weight: 500;
    font-size: 0.9em;
}

.ox-avail-check {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 8px;
    margin: 0;
    cursor: pointer;
}

.ox-avail-check input[type="checkbox"] {
    width: 20px;
    height: 20px;
    cursor: pointer;
    accent-color: var(--ox-primary, #1e3a5f);
}

.ox-avail-check .ox-checkmark {
    display: none;
}

/* Submit */
.ox-niv-submit {
    margin-top: 30px;
    text-align: center;
}

.ox-btn-lg {
    padding: 14px 40px;
    font-size: 1.1rem;
}

/* Messages */
.ox-niv-message {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px 20px;
    border-radius: var(--ox-radius, 8px);
    margin-top: 20px;
}

.ox-niv-error-msg {
    background: #f8d7da;
    border: 1px solid #f5c6cb;
    color: #721c24;
}

.ox-niv-message .dashicons {
    font-size: 24px;
    width: 24px;
    height: 24px;
}

/* Success Page */
.ox-niv-success-page {
    text-align: center;
    padding: 60px 20px;
}

.ox-niv-success-icon {
    width: 80px;
    height: 80px;
    margin: 0 auto 24px;
    background: #d4edda;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
}

.ox-niv-success-icon svg {
    width: 40px;
    height: 40px;
    color: #28a745;
}

.ox-niv-success-title {
    font-size: 1.5rem;
    color: var(--ox-primary, #1e3a5f);
    margin: 0 0 16px;
}

.ox-niv-success-text {
    font-size: 1.05rem;
    color: #444;
    line-height: 1.6;
    max-width: 500px;
    margin: 0 auto 12px;
}

.ox-niv-success-sub {
    font-size: 0.95rem;
    color: #888;
    margin: 0;
}

/* Teacher Dashboard — Nivelamento Queue */
.ox-niv-tabs {
    display: flex;
    gap: 4px;
    margin-bottom: 15px;
    border-bottom: 2px solid #eee;
}

.ox-niv-tab {
    padding: 8px 16px;
    border: none;
    background: transparent;
    cursor: pointer;
    font-weight: 500;
    color: #888;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    transition: all 0.2s;
}

.ox-niv-tab.active {
    color: var(--ox-primary, #1e3a5f);
    border-bottom-color: var(--ox-primary, #1e3a5f);
}

.ox-niv-tab .ox-niv-count {
    display: inline-block;
    background: #eee;
    padding: 1px 7px;
    border-radius: 10px;
    font-size: 0.8em;
    margin-left: 4px;
}

.ox-niv-tab.active .ox-niv-count {
    background: var(--ox-primary, #1e3a5f);
    color: #fff;
}

.ox-nivelamento-card {
    background: #fff;
    border: 1px solid var(--ox-border, #e2e8f0);
    border-radius: var(--ox-radius, 8px);
    padding: 14px;
    margin-bottom: 10px;
    transition: box-shadow 0.2s;
}

.ox-nivelamento-card:hover {
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

.ox-niv-card-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 8px;
}

.ox-niv-card-header strong {
    font-size: 1em;
}

.ox-niv-card-meta {
    display: flex;
    gap: 12px;
    font-size: 0.85em;
    color: #666;
    margin-bottom: 10px;
    flex-wrap: wrap;
}

.ox-niv-card-meta span {
    display: flex;
    align-items: center;
    gap: 4px;
}

.ox-niv-card-actions {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

/* Status badges */
.ox-niv-status {
    display: inline-block;
    padding: 2px 10px;
    border-radius: 12px;
    font-size: 0.78em;
    font-weight: 600;
}

.ox-niv-pendente {
    background: #fff3cd;
    color: #856404;
}

.ox-niv-reivindicado {
    background: #cce5ff;
    color: #004085;
}

.ox-niv-concluido {
    background: #d4edda;
    color: #155724;
}

.ox-niv-cancelado {
    background: #f8d7da;
    color: #721c24;
}

.ox-niv-auto-badge {
    display: inline-block;
    padding: 2px 8px;
    font-size: 0.7em;
    font-weight: 700;
    border-radius: 10px;
    background: #fff3cd;
    color: #856404;
    border: 1px solid #ffc107;
    white-space: nowrap;
}

.ox-niv-child-badge {
    display: inline-block;
    padding: 2px 8px;
    font-size: 0.7em;
    font-weight: 700;
    border-radius: 10px;
    background: #f3e5f5;
    color: #6a1b9a;
    border: 1px solid #ce93d8;
    white-space: nowrap;
}

.ox-niv-child-pending {
    display: inline-block;
    padding: 4px 10px;
    font-size: 0.8em;
    font-weight: 600;
    color: #6a1b9a;
    font-style: italic;
}

/* Detail panel */
.ox-niv-detail {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid #eee;
    display: none;
}

.ox-niv-detail.open {
    display: block;
}

.ox-niv-detail-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-bottom: 12px;
}

.ox-niv-detail-item label {
    display: block;
    font-size: 0.78em;
    color: #888;
    font-weight: 600;
    text-transform: uppercase;
    margin-bottom: 2px;
}

.ox-niv-detail-item span {
    font-size: 0.9em;
    color: #333;
}

.ox-niv-detail-full {
    margin-bottom: 10px;
}

.ox-niv-detail-full label {
    display: block;
    font-size: 0.78em;
    color: #888;
    font-weight: 600;
    text-transform: uppercase;
    margin-bottom: 2px;
}

.ox-niv-detail-full p {
    font-size: 0.9em;
    color: #333;
    margin: 0;
    white-space: pre-line;
}

/* Availability display */
.ox-niv-avail-display {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}

.ox-niv-avail-tag {
    display: inline-block;
    padding: 2px 8px;
    background: #e8f4fd;
    color: #0066cc;
    border-radius: 4px;
    font-size: 0.78em;
}

/* Complete modal */
.ox-niv-complete-form .ox-form-group {
    margin-bottom: 14px;
}

.ox-niv-complete-form label {
    display: block;
    font-weight: 600;
    margin-bottom: 4px;
    font-size: 0.9em;
}

/* Video call */
.ox-niv-video-section {
    margin-top: 12px;
    padding: 12px;
    background: #f0f7ff;
    border-radius: var(--ox-radius, 8px);
    border: 1px solid #b3d4fc;
}

.ox-niv-video-section h4 {
    margin: 0 0 10px;
    font-size: 0.9em;
    color: var(--ox-primary, #1e3a5f);
}

.ox-niv-video-actions {
    display: flex;
    gap: 8px;
    margin-bottom: 10px;
}

.ox-niv-jitsi-container {
    position: relative;
    width: 100%;
    height: 500px;
    border-radius: var(--ox-radius, 8px);
    overflow: hidden;
    border: 1px solid #ccc;
}

.ox-niv-jitsi-container iframe {
    width: 100%;
    height: 100%;
    border: none;
}

.ox-niv-jitsi-expand {
    position: absolute;
    top: 8px;
    right: 8px;
    z-index: 10;
    width: 36px;
    height: 36px;
    border: none;
    border-radius: 6px;
    background: rgba(0, 0, 0, 0.6);
    color: #fff;
    font-size: 18px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.2s;
}

.ox-niv-jitsi-expand:hover {
    background: rgba(0, 0, 0, 0.8);
}

.ox-niv-jitsi-expanded {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    z-index: 99999;
    border-radius: 0;
    border: none;
}

/* Coordinator — Nivelamento Section */
.ox-nivelamento-coordinator-section {
    margin-bottom: 20px;
}

.ox-niv-coord-summary {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
    margin-bottom: 15px;
}

.ox-niv-coord-stat {
    text-align: center;
    padding: 12px 8px;
    border-radius: var(--ox-radius, 8px);
    background: #f8f9fa;
    border: 1px solid #e2e8f0;
}

.ox-niv-stat-num {
    display: block;
    font-size: 1.5em;
    font-weight: 700;
    line-height: 1.2;
}

.ox-niv-stat-label {
    display: block;
    font-size: 0.75em;
    color: #666;
    margin-top: 2px;
}

.ox-niv-stat-pendente .ox-niv-stat-num { color: #e67e22; }
.ox-niv-stat-reivindicado .ox-niv-stat-num { color: var(--ox-primary, #1e3a5f); }
.ox-niv-stat-concluido .ox-niv-stat-num { color: var(--ox-success, #28a745); }
.ox-niv-stat-cancelado .ox-niv-stat-num { color: #999; }

.ox-niv-coord-cards-scroll {
    max-height: 260px;
    overflow-y: auto;
    padding-right: 4px;
}

.ox-niv-coord-cards-scroll::-webkit-scrollbar {
    width: 5px;
}

.ox-niv-coord-cards-scroll::-webkit-scrollbar-thumb {
    background: #ccc;
    border-radius: 3px;
}

/* Follow-up action dropdown on completed placements */
.ox-niv-followup-wrapper {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-left: auto;
}

.ox-niv-followup-select {
    padding: 4px 8px;
    font-size: 0.82em;
    border: 1px solid #ddd;
    border-radius: 4px;
    background: #fff;
    color: #333;
    cursor: pointer;
    min-width: 170px;
}

.ox-niv-followup-select:focus {
    border-color: var(--ox-primary, #1e3a5f);
    outline: none;
    box-shadow: 0 0 0 2px rgba(30, 58, 95, 0.15);
}

.ox-niv-followup-select:disabled {
    opacity: 0.6;
    cursor: wait;
}

.ox-niv-followup-done {
    color: var(--ox-success, #28a745);
    font-size: 1.1em;
    font-weight: 700;
    line-height: 1;
}

.ox-nivelamento-card[data-followup-done="1"] {
    opacity: 0.7;
}

.ox-nivelamento-card[data-followup-done="1"]:hover {
    opacity: 1;
}

.ox-niv-filters {
    display: flex;
    gap: 10px;
    margin-bottom: 15px;
    flex-wrap: wrap;
    align-items: center;
}

.ox-niv-filters select,
.ox-niv-filters input {
    padding: 6px 10px;
    border: 1px solid var(--ox-border, #e2e8f0);
    border-radius: var(--ox-radius, 8px);
    font-size: 0.85em;
}

/* Monthly Report */
.ox-niv-report-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 10px;
}

.ox-niv-report-table th,
.ox-niv-report-table td {
    padding: 10px 14px;
    text-align: left;
    border-bottom: 1px solid #eee;
}

.ox-niv-report-table th {
    background: #f8f9fa;
    font-weight: 600;
    font-size: 0.85em;
    text-transform: uppercase;
    color: #666;
}

.ox-niv-report-table td {
    font-size: 0.9em;
}

.ox-niv-report-total {
    font-weight: 700;
    font-size: 1.1em;
    color: var(--ox-primary, #1e3a5f);
}

/* Team Management */
.ox-niv-team-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.ox-niv-team-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 14px;
    background: #fff;
    border: 1px solid var(--ox-border, #e2e8f0);
    border-radius: var(--ox-radius, 8px);
}

.ox-niv-team-item .ox-niv-team-toggle {
    position: relative;
    width: 44px;
    height: 24px;
}

.ox-niv-team-toggle input {
    opacity: 0;
    width: 0;
    height: 0;
}

.ox-niv-team-toggle .ox-toggle-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background: #ccc;
    border-radius: 24px;
    transition: 0.3s;
}

.ox-niv-team-toggle .ox-toggle-slider:before {
    position: absolute;
    content: "";
    height: 18px;
    width: 18px;
    left: 3px;
    bottom: 3px;
    background: #fff;
    border-radius: 50%;
    transition: 0.3s;
}

.ox-niv-team-toggle input:checked + .ox-toggle-slider {
    background: var(--ox-success, #28a745);
}

.ox-niv-team-toggle input:checked + .ox-toggle-slider:before {
    transform: translateX(20px);
}

/* Empty state */
.ox-niv-empty {
    text-align: center;
    padding: 30px 20px;
    color: #888;
}

.ox-niv-empty .dashicons {
    font-size: 40px;
    width: 40px;
    height: 40px;
    color: #ccc;
    margin-bottom: 10px;
}

/* Responsive */
@media (max-width: 640px) {
    .ox-avail-header,
    .ox-avail-row {
        grid-template-columns: 100px repeat(3, 1fr);
    }

    .ox-avail-day {
        font-size: 0.8em;
        padding: 8px;
    }

    .ox-niv-detail-grid {
        grid-template-columns: 1fr;
    }

    .ox-niv-card-meta {
        flex-direction: column;
        gap: 4px;
    }

    .ox-niv-filters {
        flex-direction: column;
    }

    .ox-niv-jitsi-container {
        height: 350px;
    }
}

/* ==========================================
   Teacher Block Overlay
   ========================================== */
.ox-teacher-block-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.85);
    z-index: 99999;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    box-sizing: border-box;
}

.ox-block-container {
    background: var(--ox-white);
    border-radius: 12px;
    width: 100%;
    max-width: 700px;
    max-height: 85vh;
    display: flex;
    flex-direction: column;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
    animation: oxBlockSlideIn 0.3s ease-out;
}

@keyframes oxSpin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

.ox-spin {
    animation: oxSpin 1s linear infinite;
}

@keyframes oxBlockSlideIn {
    from {
        opacity: 0;
        transform: translateY(-30px) scale(0.95);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

.ox-block-header {
    text-align: center;
    padding: 30px 30px 20px;
    border-bottom: 1px solid var(--ox-border);
}

.ox-block-header .dashicons-lock {
    font-size: 40px;
    width: 40px;
    height: 40px;
    color: var(--ox-danger);
    display: block;
    margin: 0 auto 10px;
}

.ox-block-header h2 {
    margin: 0 0 8px;
    font-size: 20px;
    color: var(--ox-dark);
}

.ox-block-header p {
    margin: 0;
    color: var(--ox-secondary);
    font-size: 14px;
}

.ox-block-sections {
    overflow-y: auto;
    padding: 20px 30px;
    flex: 1;
    min-height: 0;
}

.ox-block-section {
    margin-bottom: 24px;
}

.ox-block-section:last-child {
    margin-bottom: 0;
}

.ox-block-section h3 {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 15px;
    margin: 0 0 12px;
    color: var(--ox-primary);
    padding-bottom: 8px;
    border-bottom: 2px solid var(--ox-border);
}

.ox-block-section h3 .dashicons {
    font-size: 18px;
    width: 18px;
    height: 18px;
}

.ox-block-item-group {
    background: var(--ox-light);
    border-radius: var(--ox-radius);
    padding: 12px;
    margin-bottom: 10px;
}

.ox-block-item-group:last-child {
    margin-bottom: 0;
}

.ox-block-item-header {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 10px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--ox-border);
}

.ox-block-item-header strong {
    flex: 1;
    font-size: 14px;
}

.ox-block-presenca-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}

.ox-block-presenca-item:last-child {
    border-bottom: none;
}

.ox-block-presenca-item .ox-aluno-nome {
    flex: 1;
    font-size: 13px;
}

.ox-block-presenca-item .ox-presenca-actions {
    display: flex;
    gap: 4px;
}

.ox-block-presenca-item .ox-presenca-status {
    font-size: 12px;
    font-weight: 600;
    display: none;
}

.ox-block-presenca-item .ox-presenca-status.ox-status-presente,
.ox-block-presenca-item .ox-presenca-status.ox-status-atrasado,
.ox-block-presenca-item .ox-presenca-status.ox-status-ausente,
.ox-block-presenca-item .ox-presenca-status.ox-status-justificado {
    display: inline-block;
}

.ox-block-presenca-item.ox-marked .ox-presenca-status {
    display: inline-block;
}

.ox-block-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 12px;
    background: var(--ox-light);
    border-radius: var(--ox-radius-sm);
    margin-bottom: 6px;
}

.ox-block-item:last-child {
    margin-bottom: 0;
}

.ox-block-item strong {
    flex: 1;
    font-size: 13px;
}

.ox-block-item span {
    font-size: 12px;
    color: var(--ox-secondary);
    white-space: nowrap;
}

.ox-block-item .ox-btn {
    white-space: nowrap;
    flex-shrink: 0;
}

.ox-block-footer {
    text-align: center;
    padding: 20px 30px;
    border-top: 1px solid var(--ox-border);
}

.ox-block-footer p {
    margin: 0 0 12px;
    color: var(--ox-secondary);
    font-size: 13px;
}

.ox-block-footer .ox-btn {
    min-width: 180px;
}

/* Block overlay responsive */
@media (max-width: 768px) {
    .ox-teacher-block-overlay {
        padding: 10px;
        align-items: flex-start;
    }

    .ox-block-container {
        max-height: 95vh;
        border-radius: 8px;
    }

    .ox-block-header {
        padding: 20px 16px 16px;
    }

    .ox-block-header h2 {
        font-size: 17px;
    }

    .ox-block-sections {
        padding: 16px;
    }

    .ox-block-item-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 6px;
    }

    .ox-block-presenca-item {
        flex-wrap: wrap;
    }

    .ox-block-presenca-item .ox-aluno-nome {
        width: 100%;
    }

    .ox-block-item {
        flex-wrap: wrap;
    }

    .ox-block-item strong {
        width: 100%;
    }

    .ox-block-footer {
        padding: 16px;
    }
}

/* Tutor Block Overlay Items */
.ox-tutor-block-item.ox-block-item {
    flex-direction: column;
    align-items: stretch;
}

.ox-tutor-block-info {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.ox-tutor-block-info strong {
    flex: none;
}

.ox-tutor-block-meta {
    font-size: 12px;
    color: var(--ox-secondary);
}

/* ========================================
 * SUBSTITUTE TEACHER ACCESS
 * ======================================== */

#substituicoes-list {
    max-height: 400px;
    overflow-y: auto;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.ox-substituicoes-section .ox-table {
    margin-top: 10px;
    white-space: nowrap;
}

.ox-substituicoes-section .ox-table th,
.ox-substituicoes-section .ox-table td {
    vertical-align: middle;
}

.ox-substituicoes-section .ox-table thead th {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--ox-light);
}

.ox-badge-substitute {
    background-color: #fd7e14;
    color: #fff;
    font-size: 0.75em;
    padding: 2px 8px;
    border-radius: 3px;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.ox-badge-substitute .dashicons {
    font-size: 14px;
    width: 14px;
    height: 14px;
}

.ox-turma-substitute-info {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-left: 6px;
}

.ox-turma-substitute-info .ox-sub-expires {
    font-size: 0.75em;
    color: #999;
}

@media (max-width: 768px) {
    /* Hide "Granted By" column on small screens */
    .ox-substituicoes-section .ox-table th:nth-child(4),
    .ox-substituicoes-section .ox-table td:nth-child(4) {
        display: none;
    }
}

/* ========================================
 * SUBSTITUTION REPORT
 * ======================================== */

.ox-sub-report-filters {
    margin-bottom: 15px;
}

.ox-sub-report-filters .ox-filter-row {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: flex-end;
}

.ox-sub-report-filters .ox-filter-group {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.ox-sub-report-filters .ox-filter-group label {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--ox-secondary);
}

.ox-sub-report-filters .ox-filter-group input,
.ox-sub-report-filters .ox-filter-group select {
    padding: 6px 10px;
    font-size: 0.85rem;
    border: 1px solid var(--ox-border);
    border-radius: 4px;
}

.ox-sub-report-filters .ox-filter-actions {
    flex-direction: row;
    gap: 6px;
}

.ox-sub-report-summary {
    padding: 8px 0;
    font-size: 0.9rem;
    color: var(--ox-secondary);
}

.ox-sub-report-table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.ox-table-sub-report {
    white-space: nowrap;
}

.ox-table-sub-report th,
.ox-table-sub-report td {
    vertical-align: middle;
}

.ox-table-sub-report td:nth-child(7) {
    white-space: normal;
    max-width: 200px;
}

@media (max-width: 768px) {
    .ox-sub-report-filters .ox-filter-row {
        flex-direction: column;
    }

    .ox-sub-report-filters .ox-filter-group {
        width: 100%;
    }

    .ox-sub-report-filters .ox-filter-group input,
    .ox-sub-report-filters .ox-filter-group select {
        width: 100%;
    }

    .ox-sub-report-filters .ox-filter-actions {
        flex-direction: row;
    }

    /* Hide less critical columns on mobile */
    .ox-table-sub-report th:nth-child(6),
    .ox-table-sub-report td:nth-child(6),
    .ox-table-sub-report th:nth-child(9),
    .ox-table-sub-report td:nth-child(9) {
        display: none;
    }
}

/* ==========================================
   Monthly Report Page
   ========================================== */
.ox-monthly-report-page {
    padding: 20px;
}

.ox-report-page-header {
    background: #fff;
    border-radius: var(--ox-radius);
    padding: 20px 24px;
    margin-bottom: 20px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);
}

.ox-report-page-title {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
}

.ox-report-page-title h2 {
    margin: 0;
    color: var(--ox-primary);
    display: flex;
    align-items: center;
    gap: 8px;
}

.ox-report-filters {
    display: flex;
    gap: 16px;
    align-items: flex-end;
    flex-wrap: wrap;
}

.ox-report-filter-group {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.ox-report-filter-group label {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--ox-secondary);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.ox-report-filter-select {
    padding: 8px 12px;
    border: 1px solid var(--ox-border);
    border-radius: 6px;
    font-size: 0.9rem;
    min-width: 160px;
}

.ox-report-filter-actions {
    flex-direction: row;
    gap: 8px;
    align-self: flex-end;
}

.ox-report-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--ox-border);
}

.ox-report-header h4 {
    margin: 0;
    color: var(--ox-primary);
}

.ox-report-metrics-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 12px;
    margin-bottom: 20px;
}

.ox-report-metric-card {
    background: #fff;
    border-radius: var(--ox-radius);
    padding: 15px;
    text-align: center;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);
    border-left: 4px solid var(--ox-primary);
}

.ox-report-metric-card.ox-report-card-success { border-left-color: var(--ox-success); }
.ox-report-metric-card.ox-report-card-danger  { border-left-color: var(--ox-danger); }
.ox-report-metric-card.ox-report-card-info    { border-left-color: #17a2b8; }
.ox-report-metric-card.ox-report-card-warning { border-left-color: var(--ox-warning); }

.ox-report-metric-value {
    display: block;
    font-size: 1.5rem;
    font-weight: 700;
    color: #1a202c;
}

.ox-report-metric-label {
    display: block;
    font-size: 0.75rem;
    color: var(--ox-secondary);
    margin-top: 4px;
}

.ox-report-table-wrapper {
    overflow-x: auto;
}

.ox-report-table {
    font-size: 0.85rem;
}

.ox-report-table th,
.ox-report-table td {
    white-space: nowrap;
    padding: 8px 10px;
}

.ox-report-table td small {
    color: var(--ox-secondary);
}

/* Clickable cards */
.ox-report-card-clickable {
    cursor: pointer;
    transition: transform 0.15s, box-shadow 0.15s;
    position: relative;
}
.ox-report-card-clickable:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0,0,0,0.12);
}
.ox-report-card-hint {
    display: block;
    font-size: 0.65rem;
    color: var(--ox-secondary);
    margin-top: 6px;
    opacity: 0.6;
}
.ox-report-card-clickable:hover .ox-report-card-hint {
    opacity: 1;
    color: var(--ox-primary);
}

/* Detail modal */
.ox-report-modal {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    z-index: 100000;
    display: flex;
    align-items: center;
    justify-content: center;
}
.ox-report-modal-backdrop {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(0,0,0,0.5);
}
.ox-report-modal-content {
    position: relative;
    background: #fff;
    border-radius: var(--ox-radius, 8px);
    width: 90%;
    max-width: 800px;
    max-height: 80vh;
    display: flex;
    flex-direction: column;
    box-shadow: 0 8px 30px rgba(0,0,0,0.2);
}
.ox-report-modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px 20px;
    border-bottom: 1px solid var(--ox-border, #e2e8f0);
}
.ox-report-modal-header h4 {
    margin: 0;
    color: var(--ox-primary, #1e3a5f);
}
.ox-report-modal-close {
    background: none;
    border: none;
    font-size: 24px;
    cursor: pointer;
    color: var(--ox-secondary, #6b7280);
    padding: 0 4px;
    line-height: 1;
}
.ox-report-modal-close:hover {
    color: var(--ox-danger, #dc3545);
}
.ox-report-modal-body {
    padding: 16px 20px;
    overflow-y: auto;
}
.ox-report-detail-table {
    width: 100%;
    font-size: 0.85rem;
}
.ox-report-detail-table th,
.ox-report-detail-table td {
    padding: 8px 10px;
    white-space: nowrap;
}

@media (max-width: 900px) {
    .ox-report-metrics-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 500px) {
    .ox-report-metrics-grid {
        grid-template-columns: 1fr;
    }
    .ox-report-filters {
        flex-direction: column;
    }
    .ox-report-filter-select {
        min-width: unset;
        width: 100%;
    }
}

/* ==========================================
   Monthly Report Overlay
   ========================================== */
.ox-teacher-report-overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 99999;
    background: rgba(0, 0, 0, 0.85);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    animation: oxBlockSlideIn 0.3s ease-out;
}

.ox-report-overlay-container {
    background: #fff;
    border-radius: 12px;
    width: 100%;
    max-width: 900px;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
}

.ox-report-overlay-header {
    padding: 24px 30px 16px;
    border-bottom: 1px solid #eee;
    text-align: center;
}
.ox-report-overlay-header h2 {
    margin: 10px 0 5px;
    font-size: 1.4em;
    color: var(--ox-primary, #1e3a5f);
}
.ox-report-overlay-header p {
    color: #666;
    font-size: 0.9em;
    margin: 0;
}

.ox-report-overlay-body {
    flex: 1;
    overflow-y: auto;
    padding: 20px 30px;
}

.ox-report-overlay-footer {
    padding: 16px 30px;
    border-top: 1px solid #eee;
    text-align: center;
    background: #f8f9fa;
    border-radius: 0 0 12px 12px;
}

/* Report sections */
.ox-report-section {
    margin-bottom: 24px;
    padding-bottom: 20px;
    border-bottom: 1px solid #eee;
}
.ox-report-section:last-child {
    border-bottom: none;
    margin-bottom: 0;
}

.ox-report-section-title {
    font-size: 15px;
    font-weight: 600;
    color: var(--ox-primary, #1e3a5f);
    margin-bottom: 12px;
    display: flex;
    align-items: center;
    gap: 6px;
}
.ox-report-section-title .dashicons {
    font-size: 16px;
    width: 16px;
    height: 16px;
}

.ox-report-metric-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 0;
    border-bottom: 1px solid #f5f5f5;
}
.ox-report-metric-row:last-child {
    border-bottom: none;
}

.ox-report-metric-label {
    color: #555;
    font-size: 14px;
}

.ox-report-metric-value {
    font-weight: 600;
    font-size: 15px;
}

.ox-report-metric-good { color: var(--ox-success, #28a745); }
.ox-report-metric-warning { color: #e6a817; }
.ox-report-metric-bad { color: var(--ox-danger, #dc3545); }

/* Trend arrows */
.ox-report-trend-up { color: var(--ox-success, #28a745); font-weight: 600; }
.ox-report-trend-up::before { content: '\25B2 '; font-size: 0.8em; }
.ox-report-trend-down { color: var(--ox-danger, #dc3545); font-weight: 600; }
.ox-report-trend-down::before { content: '\25BC '; font-size: 0.8em; }
.ox-report-trend-flat { color: #888; }
.ox-report-trend-flat::before { content: '\25CF '; font-size: 0.6em; }

/* Risk students table */
.ox-report-risk-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 8px;
    font-size: 13px;
}
.ox-report-risk-table th,
.ox-report-risk-table td {
    padding: 6px 10px;
    text-align: left;
    border-bottom: 1px solid #eee;
}
.ox-report-risk-table th {
    background: #f8f9fa;
    font-weight: 600;
    font-size: 12px;
    text-transform: uppercase;
    color: #666;
}

/* Ranking badge */
.ox-report-rank-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 70px;
    height: 70px;
    border-radius: 50%;
    background: var(--ox-primary, #1e3a5f);
    color: #fff;
    font-size: 24px;
    font-weight: 700;
}

/* ==========================================
   Teacher of the Month Awards (Dashboard)
   ========================================== */
.ox-awards-section {
    margin-bottom: 20px;
    background: #fff;
    border-radius: 8px;
    padding: 15px 20px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.ox-awards-section .ox-section-header h3 {
    display: flex;
    align-items: center;
    gap: 6px;
}

.ox-award-card {
    background: #fafafa;
    border-radius: 8px;
    padding: 12px;
    border: 1px solid #eee;
}

.ox-award-card-title {
    font-weight: 600;
    font-size: 0.82em;
    margin-bottom: 8px;
    color: var(--ox-primary, #1e3a5f);
    display: flex;
    align-items: center;
    gap: 4px;
}
.ox-award-card-title .dashicons {
    font-size: 14px;
    width: 14px;
    height: 14px;
}

.ox-award-entry {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 3px 0;
    font-size: 0.85em;
}

.ox-award-position {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    font-size: 9px;
    font-weight: 700;
    color: #fff;
    flex-shrink: 0;
}

.ox-award-name {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ox-award-score {
    font-size: 0.8em;
    color: #888;
    flex-shrink: 0;
}

.ox-award-highlight {
    background: #fff8e1;
    margin: -2px -4px;
    padding: 2px 4px;
    border-radius: 4px;
}

/* ==========================================
   Message Requests
   ========================================== */
.ox-mensagem-request-item {
    background: #fff;
    border-left: 4px solid #6c757d;
    padding: 12px;
    margin-bottom: 8px;
    border-radius: 4px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.ox-mensagem-request-item.ox-mensagem-pendente { border-left-color: #ffc107; }
.ox-mensagem-request-item.ox-mensagem-enviada { border-left-color: #17a2b8; }
.ox-mensagem-request-item.ox-mensagem-respondida { border-left-color: var(--ox-success, #28a745); }
.ox-mensagem-request-item.ox-mensagem-cancelada { border-left-color: #6c757d; opacity: 0.7; }

.ox-mensagem-destino-badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 12px;
    font-size: 0.7em;
    font-weight: 600;
    margin-left: 5px;
}
.ox-mensagem-destino-grupo { background: #e3f2fd; color: #1565c0; }
.ox-mensagem-destino-individual { background: #fce4ec; color: #c62828; }

/* ==========================================
   Tutor Notes in Monitoria
   ========================================== */
.ox-monitoria-tutor-notes {
    font-size: 0.85em;
    color: #333;
    margin-top: 8px;
    padding: 10px;
    background: #e3f2fd;
    border-top: 1px solid #bbdefb;
    border-radius: 4px;
}

/* ==========================================
   Substitution Type Badges
   ========================================== */
.ox-badge-solicitada { background: #ffc107; color: #333; }
.ox-badge-remanejamento { background: #6c757d; color: #fff; }

.ox-substituicao-tipo-select {
    padding: 3px 6px;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 0.85em;
    cursor: pointer;
}

/* ==========================================
   Report Overlay Responsive
   ========================================== */
@media (max-width: 768px) {
    .ox-report-overlay-container {
        max-height: 95vh;
        border-radius: 8px;
    }
    .ox-report-overlay-header,
    .ox-report-overlay-body,
    .ox-report-overlay-footer {
        padding: 15px 20px;
    }
    .ox-report-overlay-header h2 {
        font-size: 1.1em;
    }
    .ox-report-risk-table th,
    .ox-report-risk-table td {
        padding: 4px 6px;
        font-size: 12px;
    }
    .ox-awards-section .ox-award-card {
        min-width: 0;
    }
}

/* ==========================================
   Term Activities Checklist
   ========================================== */
.ox-term-checklists {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    margin-bottom: 20px;
}

.ox-term-checklist {
    background: var(--ox-white);
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius);
    padding: 16px 20px;
    margin-bottom: 0;
    box-shadow: var(--ox-shadow);
}

.ox-term-checklist.ox-checklist-done {
    border-color: var(--ox-success);
    border-left: 4px solid var(--ox-success);
}

.ox-checklist-header {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    margin-bottom: 14px;
    gap: 8px;
}

.ox-checklist-title {
    display: flex;
    align-items: center;
    gap: 10px;
}

.ox-checklist-title strong {
    font-size: 1rem;
    color: var(--ox-primary);
}

.ox-checklist-deadline {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    border-radius: var(--ox-radius-sm);
    font-size: 0.85rem;
    font-weight: 600;
}

.ox-deadline-ok {
    background: #d4edda;
    color: #155724;
}

.ox-deadline-soon {
    background: #fff3cd;
    color: #856404;
}

.ox-deadline-past {
    background: #f8d7da;
    color: #721c24;
}

.ox-deadline-date {
    font-weight: 700;
}

.ox-deadline-remaining {
    font-weight: 400;
    opacity: 0.85;
}

.ox-checklist-items {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.ox-checklist-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    border-radius: var(--ox-radius-sm);
    background: var(--ox-light);
    transition: var(--ox-transition);
}

.ox-checklist-item.ox-checklist-complete {
    background: #d4edda;
}

.ox-checklist-item.ox-checklist-partial {
    background: #fff3cd;
}

.ox-checklist-item.ox-checklist-pending {
    background: var(--ox-light);
}

.ox-checklist-icon {
    font-size: 1.1rem;
    width: 24px;
    text-align: center;
    flex-shrink: 0;
}

.ox-checklist-complete .ox-checklist-icon {
    color: var(--ox-success);
    font-weight: 700;
}

.ox-checklist-pending .ox-checklist-icon,
.ox-checklist-partial .ox-checklist-icon {
    color: var(--ox-secondary);
}

.ox-checklist-label {
    flex: 1;
    font-size: 0.9rem;
    font-weight: 500;
}

.ox-checklist-label small {
    font-weight: 400;
}

.ox-checklist-progress {
    flex-shrink: 0;
}

.ox-checklist-bar {
    width: 60px;
    height: 6px;
    background: #e2e8f0;
    border-radius: 3px;
    overflow: hidden;
    flex-shrink: 0;
}

.ox-checklist-bar-fill {
    height: 100%;
    background: var(--ox-warning);
    border-radius: 3px;
    transition: width 0.3s ease;
}

.ox-checklist-complete .ox-checklist-bar-fill {
    background: var(--ox-success);
}

@media (max-width: 900px) {
    .ox-term-checklists {
        grid-template-columns: 1fr;
    }
}

.ox-checklist-item[data-etapa] {
    cursor: pointer;
}

.ox-checklist-item[data-etapa]:hover {
    filter: brightness(0.95);
}

.ox-checklist-item-active {
    outline: 2px solid var(--ox-primary);
    outline-offset: -2px;
}

/* Grade entry panel */
.ox-checklist-grade-panel {
    background: var(--ox-white);
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius);
    box-shadow: var(--ox-shadow-lg);
    margin-bottom: 20px;
    overflow: hidden;
}

.ox-grade-panel-header {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    background: var(--ox-primary);
    color: var(--ox-white);
    font-size: 0.95rem;
}

.ox-grade-panel-header .ox-btn {
    color: var(--ox-white);
    border-color: rgba(255,255,255,0.3);
}

.ox-grade-panel-body {
    padding: 12px 16px;
    max-height: 400px;
    overflow-y: auto;
}

.ox-grade-panel-body .ox-table-compact td,
.ox-grade-panel-body .ox-table-compact th {
    padding: 6px 8px;
    font-size: 0.85rem;
}

.ox-grade-panel-body .ox-grade-input,
.ox-grade-panel-body .ox-grade-max-input {
    width: 100%;
    padding: 4px 6px;
    font-size: 0.85rem;
}

.ox-grade-panel-footer {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    border-top: 1px solid var(--ox-border);
    background: var(--ox-light);
}

.ox-grade-panel-status {
    font-size: 0.85rem;
    font-weight: 600;
}

@media (max-width: 600px) {
    .ox-checklist-header {
        flex-direction: column;
        align-items: flex-start;
    }
    .ox-checklist-bar {
        width: 40px;
    }
}

/* Comment panel */
.ox-comment-panel-body {
    max-height: 600px;
}

.ox-comment-hint {
    background: #eef4fb;
    border-left: 3px solid var(--ox-primary);
    padding: 8px 14px;
    margin: 0 12px 8px;
    font-size: 0.82rem;
    line-height: 1.5;
    color: #2d3748;
    border-radius: 0 var(--ox-radius-sm) var(--ox-radius-sm) 0;
}

.ox-comment-hint strong {
    display: block;
    margin-bottom: 2px;
    font-size: 0.84rem;
}

.ox-comment-table td {
    vertical-align: top;
}

.ox-comment-keywords {
    width: 100%;
    padding: 4px 8px;
    font-size: 0.85rem;
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius-sm);
}

.ox-comment-textarea {
    width: 100%;
    padding: 8px 10px;
    font-size: 0.85rem;
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius-sm);
    resize: vertical;
    min-height: 80px;
    max-height: 300px;
    font-family: inherit;
    line-height: 1.45;
    transition: min-height 0.2s ease;
}

.ox-comment-textarea:focus {
    border-color: var(--ox-primary);
    outline: none;
    box-shadow: 0 0 0 2px rgba(var(--ox-primary-rgb, 0, 123, 255), 0.15);
    min-height: 120px;
}

.ox-comment-keywords:focus {
    border-color: var(--ox-primary);
    outline: none;
    box-shadow: 0 0 0 2px rgba(var(--ox-primary-rgb, 0, 123, 255), 0.15);
}

.ox-comment-generate {
    white-space: nowrap;
    font-size: 0.78rem !important;
    padding: 3px 8px !important;
}

.ox-comment-text-row td {
    padding-top: 0 !important;
    padding-bottom: 12px !important;
}

.ox-comment-generate-all {
    margin-right: auto;
}

.ox-comment-attendance {
    font-size: 0.75rem;
    font-weight: 600;
    padding: 1px 6px;
    border-radius: 3px;
    display: inline-block;
    margin-top: 2px;
}

.ox-att-ok {
    color: #276749;
    background: #c6f6d5;
}

.ox-att-low {
    color: #9b2c2c;
    background: #fed7d7;
}

/* ==========================================
   Activity Log
   ========================================== */
.ox-activity-log-section .ox-filter-row input[type="date"] {
    max-width: 150px;
    padding: 8px 10px;
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius-sm);
    font-size: 0.85rem;
}

.ox-log-day-group {
    margin-bottom: 20px;
}

.ox-log-day-header {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--ox-secondary);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    padding: 8px 0;
    margin-bottom: 6px;
    border-bottom: 2px solid var(--ox-border);
    display: flex;
    align-items: center;
    gap: 8px;
}

.ox-log-day-header .ox-log-day-count {
    background: var(--ox-light);
    color: var(--ox-secondary);
    font-size: 0.75rem;
    padding: 2px 8px;
    border-radius: 10px;
    font-weight: 500;
}

.ox-log-entry {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 8px 12px;
    border-bottom: 1px solid #f0f0f0;
    font-size: 0.85rem;
    transition: background 0.15s ease;
}

.ox-log-entry:hover {
    background: #f9fafb;
}

.ox-log-entry:last-child {
    border-bottom: none;
}

.ox-log-time {
    flex-shrink: 0;
    width: 45px;
    color: var(--ox-secondary);
    font-family: monospace;
    font-size: 0.82rem;
}

.ox-log-user {
    flex-shrink: 0;
    min-width: 140px;
    max-width: 180px;
    font-weight: 500;
    color: var(--ox-dark);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ox-log-user-role {
    font-weight: 400;
    font-size: 0.75rem;
    color: var(--ox-secondary);
}

.ox-log-desc {
    flex: 1;
    color: #444;
    line-height: 1.4;
}

.ox-log-action-badge {
    display: inline-block;
    padding: 1px 7px;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    margin-right: 6px;
    vertical-align: middle;
}

.ox-log-action-create { background: #d4edda; color: #155724; }
.ox-log-action-update { background: #cce5ff; color: #004085; }
.ox-log-action-delete { background: #f8d7da; color: #721c24; }
.ox-log-action-status_change { background: #fff3cd; color: #856404; }
.ox-log-action-assign { background: #d1ecf1; color: #0c5460; }
.ox-log-action-transfer { background: #e2d5f1; color: #4a235a; }
.ox-log-action-generate { background: #d6d8db; color: #383d41; }
.ox-log-action-schedule { background: #d1ecf1; color: #0c5460; }
.ox-log-action-report { background: #cce5ff; color: #004085; }
.ox-log-action-confirm { background: #d4edda; color: #155724; }
.ox-log-action-cancel { background: #f8d7da; color: #721c24; }

.ox-log-details-toggle {
    cursor: pointer;
    color: var(--ox-primary);
    font-size: 0.75rem;
    margin-left: 6px;
    text-decoration: underline;
    opacity: 0.7;
}

.ox-log-details-toggle:hover {
    opacity: 1;
}

.ox-log-details-content {
    display: none;
    margin-top: 6px;
    padding: 8px 10px;
    background: var(--ox-light);
    border-radius: 4px;
    font-size: 0.78rem;
    font-family: monospace;
    max-height: 200px;
    overflow-y: auto;
    word-break: break-all;
}

#ox-activity-log-pagination {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 10px;
    margin-top: 15px;
}

@media (max-width: 768px) {
    .ox-log-entry {
        flex-wrap: wrap;
        gap: 4px;
    }
    .ox-log-user {
        min-width: auto;
        max-width: none;
    }
    .ox-activity-log-section .ox-filter-row {
        flex-direction: column;
    }
    .ox-activity-log-section .ox-filter-row input,
    .ox-activity-log-section .ox-filter-row select {
        width: 100% !important;
        max-width: none !important;
        min-width: auto !important;
    }
}

/* ==========================================
   FUP — Teacher Dashboard Section
   ========================================== */
.ox-fup-dashboard-teacher { border-left: 4px solid #6c757d; }
.ox-fup-dashboard-teacher.ox-fup-week-active { border-left-color: #007bff; background: linear-gradient(135deg, #f0f7ff 0%, #fff 60%); }

.ox-fup-week-banner { display: flex; align-items: flex-start; gap: 10px; padding: 12px 16px; margin-bottom: 12px; background: #e3f2fd; border: 1px solid #90caf9; border-radius: 6px; font-size: 0.9em; color: #1565c0; }
.ox-fup-week-banner .dashicons { font-size: 20px; width: 20px; height: 20px; margin-top: 1px; }

.ox-fup-teacher-summary { display: flex; flex-direction: column; gap: 10px; }
.ox-fup-teacher-status { display: flex; align-items: center; gap: 10px; }
.ox-fup-teacher-label { font-size: 0.9em; color: #555; }
.ox-fup-teacher-schedule { display: flex; align-items: center; gap: 6px; font-size: 0.9em; color: #333; }
.ox-fup-teacher-schedule .dashicons { font-size: 16px; width: 16px; height: 16px; color: #007bff; }

/* ==========================================
   FUP (Follow-Up) Reports
   ========================================== */
.ox-fup-page { }
.ox-fup-header { margin-bottom: 16px; }
.ox-fup-title { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; }
.ox-fup-title h2 { margin: 0; font-size: 1.4em; }

.ox-fup-list-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; }
.ox-fup-card { background: #fff; border: 1px solid #e0e0e0; border-radius: 8px; overflow: hidden; transition: box-shadow 0.2s; }
.ox-fup-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.1); }
.ox-fup-card-header { display: flex; justify-content: space-between; align-items: center; padding: 14px 16px 0; }
.ox-fup-card-body { padding: 10px 16px; }
.ox-fup-card-meta { display: flex; gap: 16px; font-size: 0.9em; color: #555; }
.ox-fup-card-meta .dashicons { font-size: 16px; width: 16px; height: 16px; vertical-align: -2px; }
.ox-fup-card-footer { padding: 10px 16px 14px; text-align: right; }

.ox-fup-status-badge { display: inline-block; padding: 3px 10px; border-radius: 12px; font-size: 0.78em; font-weight: 600; color: #fff; text-transform: uppercase; letter-spacing: 0.5px; }

.ox-fup-detail-header { display: flex; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: 12px; margin-bottom: 16px; }
.ox-fup-detail-actions { display: flex; gap: 8px; align-items: flex-start; }

.ox-fup-tabs { display: flex; gap: 4px; border-bottom: 2px solid #e0e0e0; margin-bottom: 20px; flex-wrap: wrap; }
.ox-fup-tab { padding: 10px 18px; border: none; background: none; cursor: pointer; font-size: 0.95em; color: #666; border-bottom: 3px solid transparent; margin-bottom: -2px; transition: all 0.2s; }
.ox-fup-tab:hover { color: #333; background: #f8f9fa; }
.ox-fup-tab.active { color: #007bff; border-bottom-color: #007bff; font-weight: 600; }

/* FUP Turma Header with inline course dev */
.ox-fup-turma-header { display: flex; justify-content: space-between; align-items: center; margin: 24px 0 12px; padding-bottom: 8px; border-bottom: 1px solid #e0e0e0; flex-wrap: wrap; gap: 8px; }
.ox-fup-turma-header:first-child { margin-top: 0; }
.ox-fup-turma-header h4 { margin: 0; font-size: 1.1em; }
.ox-fup-course-dev-inline { display: flex; align-items: center; gap: 6px; font-size: 0.85em; }
.ox-fup-course-dev-inline label { font-weight: 600; color: #555; white-space: nowrap; }
.ox-fup-course-dev-inline select { font-size: 0.9em; padding: 4px 8px; border-radius: 4px; }

/* FUP Compact Student Table */
.ox-fup-table-wrap { overflow-x: auto; margin-bottom: 20px; }
.ox-fup-student-table { width: 100%; border-collapse: collapse; font-size: 0.88em; }
.ox-fup-student-table th { background: #f5f6f8; padding: 8px 10px; text-align: left; font-size: 0.82em; font-weight: 600; color: #666; text-transform: uppercase; letter-spacing: 0.3px; border-bottom: 2px solid #e0e0e0; white-space: nowrap; }
.ox-fup-student-table td { padding: 7px 10px; border-bottom: 1px solid #eee; vertical-align: middle; }
.ox-fup-student-table tbody tr:hover { background: #f8f9fb; }
.ox-fup-student-table tr.at-risk { border-left: 3px solid #dc3545; }
.ox-fup-student-table tr.at-risk td:first-child { padding-left: 7px; }
.ox-fup-cell-name { font-weight: 500; white-space: nowrap; max-width: 180px; overflow: hidden; text-overflow: ellipsis; }
.ox-fup-cell-risk { text-align: center; }
.ox-fup-risk-dot { display: inline-block; width: 10px; height: 10px; background: #dc3545; border-radius: 50%; }
.ox-fup-risk-badge { background: #dc3545; color: #fff; padding: 2px 8px; border-radius: 10px; font-size: 0.75em; font-weight: 700; letter-spacing: 0.5px; }

/* Inline selects in student table */
.ox-fup-inline-select { border: 1px solid transparent; background: transparent; padding: 3px 4px; border-radius: 4px; font-size: 0.95em; cursor: pointer; color: #333; width: 100%; box-sizing: border-box; }
.ox-fup-inline-select:hover { border-color: #ccc; background: #fff; }
.ox-fup-inline-select:focus { border-color: #007bff; background: #fff; outline: none; }

/* Percentage cells */
.ox-fup-pct-ok { color: #28a745; font-weight: 600; }
.ox-fup-pct-warning { color: #f57f17; font-weight: 600; }
.ox-fup-pct-danger { color: #dc3545; font-weight: 600; }

/* Edit button in table */
.ox-btn-xs { padding: 2px 6px; font-size: 0.8em; line-height: 1.2; }
.ox-btn-xs .dashicons { font-size: 14px; width: 14px; height: 14px; vertical-align: -2px; }

/* Student Edit Modal */
.ox-fup-student-modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 10000; display: flex; align-items: center; justify-content: center; }
.ox-fup-student-modal-content { background: #fff; border-radius: 10px; max-width: 640px; width: 95%; max-height: 90vh; overflow-y: auto; padding: 24px; box-shadow: 0 8px 32px rgba(0,0,0,0.2); }
.ox-fup-modal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; }
.ox-fup-modal-header h3 { margin: 0; font-size: 1.2em; }
.ox-fup-modal-section { margin-top: 16px; padding-top: 16px; border-top: 1px solid #eee; }
.ox-fup-modal-section h4 { margin: 0 0 12px; font-size: 0.95em; color: #555; text-transform: uppercase; letter-spacing: 0.3px; }
.ox-fup-modal-actions { margin-top: 20px; padding-top: 16px; border-top: 1px solid #eee; display: flex; gap: 8px; }

/* Action item row labels */
.ox-fup-action-label { display: block; font-size: 0.75em; font-weight: 600; color: #888; text-transform: uppercase; letter-spacing: 0.3px; margin-bottom: 3px; }
.ox-fup-action-row .ox-input { width: 100%; }
.ox-fup-action-row:first-child .ox-fup-action-label { display: block; }
.ox-fup-action-row:not(:first-child) .ox-fup-action-label { display: none; }

/* Metrics (used in modal) */
.ox-fup-student-metrics { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.ox-fup-metric { display: inline-flex; align-items: center; gap: 4px; padding: 4px 10px; background: #f0f4f8; border-radius: 6px; font-size: 0.85em; color: #555; }
.ox-fup-metric strong { color: #333; }
.ox-fup-metric-danger { background: #fff3f3; color: #c62828; }
.ox-fup-metric-danger strong { color: #c62828; }
.ox-fup-metric-warning { background: #fff8e1; color: #f57f17; }
.ox-fup-metric-warning strong { color: #f57f17; }

/* Form fields (modal & overview) */
.ox-fup-field-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; margin-bottom: 10px; }
.ox-fup-field { margin-bottom: 8px; }
.ox-fup-field label { display: block; font-size: 0.85em; font-weight: 600; color: #555; margin-bottom: 4px; }
.ox-fup-field .ox-input, .ox-fup-field .ox-textarea { width: 100%; }

/* Overview sections */
.ox-fup-overview-section { margin-bottom: 24px; }
.ox-fup-overview-section h4 { margin: 0 0 12px; font-size: 1em; display: flex; align-items: center; }

/* System data grid */
.ox-fup-system-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
.ox-fup-system-card { background: #fff; border: 1px solid #e0e0e0; border-radius: 8px; padding: 16px; }
.ox-fup-system-card-value { font-size: 1.5em; font-weight: 700; color: #333; }
.ox-fup-system-card-label { font-size: 0.85em; color: #888; margin-top: 4px; }

.ox-fup-prev-action { padding: 8px 12px; background: #f8f9fa; border-radius: 6px; margin-bottom: 8px; }
.ox-fup-prev-action .dashicons { vertical-align: -3px; margin-right: 4px; }

/* Assigned Follow-ups */
.ox-fup-assigned-section { background: #fff8f0; border: 1px solid #ffe0b2; border-radius: 8px; padding: 16px; }
.ox-fup-assigned-item { padding: 10px 12px; background: #fff; border: 1px solid #eee; border-radius: 6px; margin-bottom: 8px; }
.ox-fup-assigned-student { font-size: 0.95em; }
.ox-fup-assigned-meta { font-size: 0.82em; color: #888; margin-top: 4px; }
.ox-fup-assigned-plan { font-size: 0.88em; color: #333; margin-top: 6px; padding: 6px 10px; background: #f5f5f5; border-radius: 4px; }
.ox-fup-assigned-comment { font-size: 0.85em; color: #666; margin-top: 4px; font-style: italic; }
.ox-fup-assigned-done { opacity: 0.6; }
.ox-fup-assigned-done-info { font-size: 0.85em; color: #28a745; margin-top: 6px; }
.ox-fup-assigned-done-info .dashicons { font-size: 14px; width: 14px; height: 14px; vertical-align: -2px; }
.ox-fup-followup-count { display: inline-block; background: #fd7e14; color: #fff; border-radius: 10px; padding: 1px 8px; font-size: 0.75em; font-weight: 700; vertical-align: middle; margin-left: 4px; }
.ox-fup-followup-actions { margin-top: 8px; }
.ox-fup-followup-actions .ox-textarea { margin-bottom: 6px; }

/* Dashboard follow-up items (shared by teacher + coordinator dashboards) */
.ox-fup-dashboard-followups { border-top: 1px solid #eee; padding-top: 12px; }
.ox-fup-followup-item { background: #fff; border: 1px solid #eee; border-left: 3px solid #fd7e14; border-radius: 6px; padding: 10px 12px; margin-bottom: 8px; }
.ox-fup-followup-info { font-size: 0.9em; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.ox-fup-followup-plan { font-size: 0.85em; color: #333; margin-top: 6px; padding: 6px 10px; background: #f8f9fa; border-radius: 4px; }
.ox-fup-followup-act { margin-top: 8px; }
.ox-fup-followup-act .ox-textarea { font-size: 0.85em; margin-bottom: 6px; }
.ox-fup-followup-act .ox-btn .dashicons { font-size: 14px; width: 14px; height: 14px; vertical-align: -2px; }

/* FUP Schedule Banner */
.ox-fup-schedule { display: flex; align-items: flex-start; gap: 12px; padding: 14px 18px; margin-top: 16px; background: linear-gradient(135deg, #e8f4fd 0%, #f0f7ff 100%); border: 1px solid #b8daff; border-radius: 8px; }
.ox-fup-schedule-icon { color: #007bff; }
.ox-fup-schedule-icon .dashicons { font-size: 22px; width: 22px; height: 22px; margin-top: 2px; }
.ox-fup-schedule-content { flex: 1; }
.ox-fup-schedule-content strong { font-size: 0.9em; color: #0056b3; text-transform: uppercase; letter-spacing: 0.5px; }
.ox-fup-schedule-dates { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 6px; }
.ox-fup-schedule-item { display: inline-flex; align-items: center; gap: 6px; padding: 4px 12px; background: #fff; border-radius: 6px; border: 1px solid #d0e3f5; font-size: 0.9em; }
.ox-fup-schedule-date { font-weight: 700; color: #0056b3; }
.ox-fup-schedule-unit { font-size: 0.8em; padding: 2px 6px; background: #e2ecf7; border-radius: 4px; color: #2c5282; text-transform: capitalize; }
.ox-fup-schedule-desc { color: #666; font-size: 0.85em; }

@media (max-width: 768px) {
    .ox-fup-list-grid { grid-template-columns: 1fr; }
    .ox-fup-field-row { grid-template-columns: 1fr; }
    .ox-fup-tabs { gap: 0; }
    .ox-fup-tab { padding: 8px 12px; font-size: 0.85em; }
    .ox-fup-detail-header { flex-direction: column; }
    .ox-fup-system-grid { grid-template-columns: repeat(2, 1fr); }
    .ox-fup-action-row { flex-wrap: wrap; }
    .ox-fup-action-row .ox-input { min-width: 0; }
    .ox-fup-turma-header { flex-direction: column; align-items: flex-start; }
    .ox-fup-student-table { font-size: 0.82em; }
    .ox-fup-inline-select { font-size: 0.85em; }
    .ox-fup-student-modal-content { padding: 16px; }
}

/* ==========================================
   Career Plan
   ========================================== */

/* Career Badge (next to score in dashboard header) */
.ox-career-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 12px;
    font-size: 0.75rem;
    font-weight: 700;
    border-radius: 20px;
    text-transform: uppercase;
    cursor: pointer;
    transition: var(--ox-transition);
    margin-left: 8px;
    vertical-align: middle;
}
.ox-career-badge:hover {
    transform: scale(1.05);
    box-shadow: var(--ox-shadow);
}
.ox-career-badge .dashicons {
    font-size: 14px;
    width: 14px;
    height: 14px;
}

/* Level-specific badge colors */
.ox-career-badge-baby           { background: #e8f5e9; color: #2e7d32; }
.ox-career-badge-pre_junior     { background: #e3f2fd; color: #1565c0; }
.ox-career-badge-junior         { background: #e1f5fe; color: #0277bd; }
.ox-career-badge-junior_plus    { background: #b3e5fc; color: #01579b; }
.ox-career-badge-pre_expert     { background: #fff3e0; color: #e65100; }
.ox-career-badge-expert         { background: #ffe0b2; color: #bf360c; }
.ox-career-badge-expert_plus    { background: #ffccbc; color: #b71c1c; }
.ox-career-badge-pre_master_1   { background: #f3e5f5; color: #6a1b9a; }
.ox-career-badge-pre_master_2   { background: #e1bee7; color: #4a148c; }
.ox-career-badge-pre_master_3   { background: #ce93d8; color: #311b92; }
.ox-career-badge-master         { background: linear-gradient(135deg, #ffd700, #ff8c00); color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,0.3); }

/* Career Modal Sections */
.ox-career-section {
    margin-bottom: 20px;
    padding-bottom: 15px;
    border-bottom: 1px solid var(--ox-border);
}
.ox-career-section:last-child {
    border-bottom: none;
}
.ox-career-section h4 {
    color: var(--ox-primary);
    margin: 0 0 10px 0;
    font-size: 1rem;
    display: flex;
    align-items: center;
    gap: 6px;
}

/* Level display */
.ox-career-level-display {
    display: flex;
    align-items: center;
    gap: 15px;
    flex-wrap: wrap;
    margin-bottom: 10px;
}
.ox-career-level-big {
    display: inline-block;
    padding: 8px 20px;
    font-size: 1.1rem;
    font-weight: 700;
    border-radius: 20px;
    text-transform: uppercase;
}
.ox-career-years {
    font-size: 0.9rem;
    color: var(--ox-secondary);
}
.ox-career-raise {
    font-size: 0.85rem;
    font-weight: 600;
    color: #2e7d32;
}
.ox-career-max {
    color: #2e7d32;
    font-weight: 600;
    font-size: 0.95rem;
}

/* Next level progress */
.ox-career-next {
    margin-top: 10px;
}
.ox-career-next p {
    margin: 0 0 8px 0;
    font-size: 0.9rem;
}
.ox-career-next .ox-progress-bar {
    height: 12px;
}

/* Certifications list */
.ox-career-certs-list {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.ox-career-cert-item {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.9rem;
}
.ox-career-cert-total {
    margin-top: 10px;
    font-size: 0.9rem;
}

/* Training summary */
.ox-career-training-summary p {
    margin: 0 0 6px 0;
    font-size: 0.9rem;
}
.ox-career-training-summary .ox-progress-bar {
    height: 12px;
    margin-top: 8px;
}

/* Bonus summary */
.ox-career-bonus-summary {
    display: flex;
    gap: 20px;
    flex-wrap: wrap;
    align-items: center;
    font-size: 0.9rem;
}
.ox-career-total-value {
    font-size: 1.2rem;
    color: var(--ox-primary);
    padding: 6px 16px;
    background: #e8eef6;
    border-radius: 8px;
}

/* Training submission item */
.ox-career-training-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 0;
    border-bottom: 1px solid var(--ox-border);
}
.ox-career-training-item:last-child {
    border-bottom: none;
}
.ox-career-training-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.ox-career-training-info span {
    font-size: 0.8rem;
    color: var(--ox-secondary);
}

/* Training form layout */
#form-career-training .ox-form-row {
    display: flex;
    gap: 12px;
}

/* Responsive */
@media (max-width: 768px) {
    .ox-career-level-display {
        flex-direction: column;
        align-items: flex-start;
    }
    .ox-career-bonus-summary {
        flex-direction: column;
        gap: 8px;
    }
    #form-career-training .ox-form-row {
        flex-direction: column;
        gap: 0;
    }
    .ox-career-badge {
        margin-left: 0;
        margin-top: 4px;
    }
}

/* ================================================================
   Shared Resources
   ================================================================ */

.ox-shared-resource-item {
    padding: 12px 0;
    border-bottom: 1px solid var(--ox-border);
}
.ox-shared-resource-item:first-child {
    padding-top: 0;
}
.ox-shared-resource-item:last-child {
    border-bottom: none;
    padding-bottom: 0;
}
.ox-shared-resource-name {
    font-weight: 700;
    font-size: 0.95rem;
    margin-bottom: 4px;
    color: var(--ox-primary);
}
.ox-shared-resource-row {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.85rem;
    margin-bottom: 2px;
}
.ox-shared-resource-row a {
    color: var(--ox-primary);
    word-break: break-all;
    font-size: 0.82rem;
}
.ox-shared-label {
    font-weight: 600;
    color: #555;
    min-width: 36px;
}
.ox-shared-resource-row code {
    background: #f0f0f0;
    padding: 1px 6px;
    border-radius: 3px;
    font-size: 0.85rem;
}
.ox-shared-pw {
    letter-spacing: 1px;
}
.ox-shared-resource-notes {
    margin-top: 4px;
    font-size: 0.8rem;
    color: #888;
    font-style: italic;
}

.ox-btn-copy,
.ox-btn-toggle-pw {
    background: none;
    border: none;
    cursor: pointer;
    padding: 2px 4px;
    color: #888;
    line-height: 1;
    border-radius: 3px;
}
.ox-btn-copy:hover,
.ox-btn-toggle-pw:hover {
    color: var(--ox-primary);
    background: rgba(0,0,0,0.05);
}
.ox-btn-copy .dashicons,
.ox-btn-toggle-pw .dashicons {
    font-size: 16px;
    width: 16px;
    height: 16px;
}

/* ================================================================
   Teacher Guides
   ================================================================ */

.ox-guides-collection {
    margin-bottom: 16px;
}
.ox-guides-collection:last-child {
    margin-bottom: 0;
}
.ox-guides-collection-name {
    font-weight: 700;
    font-size: 0.9rem;
    color: var(--ox-primary);
    margin-bottom: 6px;
    padding-bottom: 4px;
    border-bottom: 1px solid var(--ox-border);
}
.ox-guide-link {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 8px;
    font-size: 0.88rem;
    color: #333;
    text-decoration: none;
    border-radius: 4px;
    transition: background 0.15s;
}
.ox-guide-link:hover {
    background: #f0f4ff;
    color: var(--ox-primary);
}
.ox-guide-link .dashicons {
    color: #dc3545;
    font-size: 18px;
    width: 18px;
    height: 18px;
}

.ox-guides-manage-group:first-child h4 {
    margin-top: 0;
}

/* ================================================================
   Activity Bank
   ================================================================ */

.ox-activity-bank-items {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.ox-activity-bank-item {
    padding: 12px 14px;
    border: 1px solid #e9ecef;
    border-radius: 6px;
    transition: background 0.15s, border-color 0.15s;
}

.ox-activity-bank-item:hover {
    background: #f8f9fa;
    border-color: var(--ox-primary);
}

.ox-activity-bank-item-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
    margin-bottom: 4px;
}

.ox-activity-bank-item-header strong {
    font-size: 0.92em;
    color: #333;
}

.ox-activity-bank-badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.72em;
    font-weight: 600;
    background: #e8f0fe;
    color: var(--ox-primary);
    white-space: nowrap;
    text-transform: capitalize;
}

.ox-activity-bank-meta {
    display: flex;
    gap: 12px;
    font-size: 0.78em;
    color: #888;
    margin-bottom: 4px;
}

.ox-activity-bank-meta span::before {
    content: "\2022";
    margin-right: 4px;
}

.ox-activity-bank-meta span:first-child::before {
    content: "";
    margin-right: 0;
}

.ox-activity-bank-desc {
    font-size: 0.82em;
    color: #666;
    line-height: 1.4;
    margin: 4px 0 0;
}

/* Activity Comments */
.ox-activity-comment {
    padding: 10px 12px;
    background: #f8f9fa;
    border-radius: 6px;
    margin-bottom: 8px;
    border-left: 3px solid var(--ox-primary);
}

.ox-activity-comment-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 4px;
}

.ox-activity-comment-header strong {
    font-size: 0.82em;
    color: #333;
}

.ox-activity-comment-date {
    font-size: 0.75em;
    color: #aaa;
}

.ox-activity-comment-text {
    font-size: 0.84em;
    color: #555;
    line-height: 1.5;
    margin: 0;
    white-space: pre-wrap;
}

/* Activity Likes */
.ox-activity-bank-item-footer {
    display: flex;
    justify-content: flex-end;
    margin-top: 6px;
}

.ox-activity-like-indicator {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: 0.75em;
    color: #aaa;
}

.ox-activity-like-indicator .dashicons {
    font-size: 14px;
    width: 14px;
    height: 14px;
}

.ox-activity-like-indicator.is-liked {
    color: #e74c3c;
}

.ox-activity-like-btn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 6px 14px;
    border: 1px solid #ddd;
    border-radius: 20px;
    background: #fff;
    color: #666;
    font-size: 0.85em;
    cursor: pointer;
    transition: all 0.2s ease;
}

.ox-activity-like-btn:hover {
    border-color: #e74c3c;
    color: #e74c3c;
}

.ox-activity-like-btn.is-liked {
    background: #fdf2f2;
    border-color: #e74c3c;
    color: #e74c3c;
}

.ox-activity-like-btn .dashicons {
    font-size: 16px;
    width: 16px;
    height: 16px;
}

.ox-activity-like-btn.ox-like-loading {
    opacity: 0.6;
    pointer-events: none;
}

/* ==========================================================================
   Institutional Videos Modal
   ========================================================================== */

.ox-videos-category {
    margin-bottom: 24px;
}

.ox-videos-category:last-child {
    margin-bottom: 0;
}

.ox-videos-category-title {
    font-size: 0.95em;
    font-weight: 700;
    color: var(--ox-primary, #1e3a5f);
    margin: 0 0 12px;
    padding-bottom: 6px;
    border-bottom: 2px solid var(--ox-primary, #1e3a5f);
}

.ox-videos-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 14px;
}

.ox-video-card {
    display: block;
    text-decoration: none;
    color: inherit;
    background: #f8f9fa;
    border-radius: var(--ox-radius-sm, 4px);
    overflow: hidden;
    border: 1px solid #e9ecef;
    transition: var(--ox-transition, all 0.2s ease);
}

.ox-video-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0,0,0,0.12);
    border-color: var(--ox-primary, #1e3a5f);
    text-decoration: none;
    color: inherit;
}

.ox-video-thumb {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    background: #ddd;
}

.ox-video-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.ox-video-play {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0,0,0,0.25);
    opacity: 0;
    transition: opacity 0.2s ease;
}

.ox-video-card:hover .ox-video-play {
    opacity: 1;
}

.ox-video-play .dashicons {
    font-size: 2.5rem;
    width: 2.5rem;
    height: 2.5rem;
    color: #fff;
    filter: drop-shadow(0 1px 3px rgba(0,0,0,0.4));
}

.ox-video-title {
    display: block;
    padding: 8px 10px;
    font-size: 0.82em;
    font-weight: 600;
    color: #333;
    line-height: 1.3;
}

@media (max-width: 600px) {
    .ox-videos-grid {
        grid-template-columns: 1fr 1fr;
        gap: 10px;
    }
}

@media (max-width: 400px) {
    .ox-videos-grid {
        grid-template-columns: 1fr;
    }
}

/* ==========================================
   Collapsible Sections
   ========================================== */
.ox-collapsible-toggle {
    cursor: pointer;
    user-select: none;
}

.ox-collapse-icon {
    font-size: 18px;
    width: 18px;
    height: 18px;
    color: var(--ox-secondary);
    transition: transform 0.25s ease;
    margin-left: 8px;
}

.ox-collapsible-section.collapsed .ox-collapse-icon {
    transform: rotate(-90deg);
}

.ox-collapsible-body {
    transition: none;
}

.ox-collapsible-section.collapsed .ox-collapsible-body {
    display: none;
}

/* Observations — show 3 latest with scroll */
.ox-obs-dashboard-recent .ox-observacoes-list {
    max-height: 270px;
    overflow-y: auto;
}

/* ========= Tutor Availability Slot Buttons ========= */
.ox-avail-slot-btn {
    padding: 8px 16px;
    border-radius: 8px;
    border: 1.5px solid;
    font-weight: 600;
    font-size: 0.875rem;
    cursor: pointer;
    transition: all 0.15s;
    line-height: 1;
}
.ox-avail-slot-btn.available {
    border-color: #28a745;
    background: #f0fff4;
    color: #28a745;
}
.ox-avail-slot-btn.available:hover {
    background: #d4edda;
}
.ox-avail-slot-btn.booked {
    border-color: #dc3545;
    background: #fff5f5;
    color: #dc3545;
    cursor: not-allowed;
    opacity: 0.8;
}
.ox-avail-slot-btn.blocked {
    border-color: #ff9800;
    background: #fff8e1;
    color: #e65100;
    cursor: not-allowed;
    opacity: 0.85;
}
.ox-avail-slot-btn.blocked.ox-unblockable {
    cursor: pointer;
    opacity: 1;
}
.ox-avail-slot-btn.blocked.ox-unblockable:hover {
    background: #ffe0b2;
}
.ox-avail-slot-btn.ox-slot-selected {
    border-color: #1e3a5f !important;
    background: #e8edf2 !important;
    color: #1e3a5f !important;
    box-shadow: 0 0 0 2px #1e3a5f;
}

/* ==========================================
   TUTOR DASHBOARD — Base Styles
   ========================================== */

/* Tutor Dashboard Container */
.ox-tutor-dashboard {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    color: var(--ox-dark);
    line-height: 1.5;
    padding: 20px;
}

/* Prevent wide tables from blowing out the layout —
   every ancestor must cap its width so .ox-table-container
   can create a proper scroll region. */
.ox-tutor-dashboard .ox-dashboard-main {
    max-width: 100%;
    min-width: 0;
}

.ox-tutor-dashboard .ox-dashboard-section {
    max-width: 100%;
    min-width: 0;
}

.ox-tutor-dashboard .ox-table-container {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
}

/* Visible scroll hint — thin bottom scrollbar */
.ox-tutor-dashboard .ox-table-container::-webkit-scrollbar {
    height: 8px;
}
.ox-tutor-dashboard .ox-table-container::-webkit-scrollbar-track {
    background: var(--ox-light);
    border-radius: 4px;
}
.ox-tutor-dashboard .ox-table-container::-webkit-scrollbar-thumb {
    background: #b0bec5;
    border-radius: 4px;
}
.ox-tutor-dashboard .ox-table-container::-webkit-scrollbar-thumb:hover {
    background: var(--ox-secondary);
}

/* Tutor Actions Button Group (in table rows) */
.ox-tutor-actions-group {
    display: flex;
    align-items: center;
    gap: 4px;
    flex-wrap: wrap;
}

.ox-tutor-actions-group .ox-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.ox-tutor-actions-group .ox-btn .dashicons {
    font-size: 16px;
    width: 16px;
    height: 16px;
    line-height: 1;
}

/* Tutor View Class link */
.ox-tutor-view-turma {
    color: var(--ox-primary);
    text-decoration: none;
    font-weight: 500;
}

.ox-tutor-view-turma:hover {
    text-decoration: underline;
}

/* Tutor table uses default wrapping so columns fit the screen naturally */

/* ==========================================
   Tutor Form Elements
   ========================================== */
.ox-tutor-label {
    display: block;
    margin-bottom: 6px;
    font-weight: 600;
    font-size: 0.9rem;
    color: var(--ox-dark);
}

.ox-tutor-input,
.ox-tutor-select,
.ox-tutor-textarea {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius-sm);
    font-size: 0.95rem;
    transition: var(--ox-transition);
    background: var(--ox-white);
    font-family: inherit;
    box-sizing: border-box;
}

.ox-tutor-input:focus,
.ox-tutor-select:focus,
.ox-tutor-textarea:focus {
    outline: none;
    border-color: var(--ox-primary);
    box-shadow: 0 0 0 3px rgba(30, 58, 95, 0.1);
}

.ox-tutor-textarea {
    resize: vertical;
    min-height: 60px;
}

/* ==========================================
   Tutor Radio Cards (Present/Absent)
   ========================================== */
.ox-tutor-radio-group {
    display: flex;
    gap: 12px;
}

.ox-tutor-radio-option {
    flex: 1;
    cursor: pointer;
}

.ox-tutor-radio-option input[type="radio"] {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
}

.ox-tutor-radio-card {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 14px 18px;
    border: 2px solid var(--ox-border);
    border-radius: var(--ox-radius);
    background: var(--ox-white);
    font-weight: 600;
    font-size: 0.95rem;
    transition: var(--ox-transition);
    text-align: center;
}

.ox-tutor-radio-card .dashicons {
    font-size: 20px;
    width: 20px;
    height: 20px;
}

.ox-tutor-radio-option input[type="radio"]:checked + .ox-tutor-radio-card {
    border-width: 2px;
}

.ox-tutor-radio-present input[type="radio"]:checked + .ox-tutor-radio-card {
    border-color: var(--ox-success);
    background: #d4edda;
    color: #155724;
}

.ox-tutor-radio-absent input[type="radio"]:checked + .ox-tutor-radio-card {
    border-color: var(--ox-danger);
    background: #f8d7da;
    color: #721c24;
}

.ox-tutor-radio-card:hover {
    border-color: var(--ox-primary);
    background: #f7fafc;
}

/* ==========================================
   Tutor Info Cards (Student/Class in modals)
   ========================================== */
.ox-tutor-info-cards {
    display: flex;
    gap: 12px;
    margin-bottom: 20px;
}

.ox-tutor-info-card {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    background: var(--ox-light);
    border: 1px solid var(--ox-border);
    border-radius: var(--ox-radius);
}

.ox-tutor-info-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--ox-primary);
    color: var(--ox-white);
    flex-shrink: 0;
}

.ox-tutor-info-icon .dashicons {
    font-size: 20px;
    width: 20px;
    height: 20px;
}

.ox-tutor-info-detail {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.ox-tutor-info-label {
    font-size: 0.75rem;
    color: var(--ox-secondary);
    text-transform: uppercase;
    font-weight: 600;
    letter-spacing: 0.5px;
}

.ox-tutor-info-value {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--ox-dark);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Google Calendar badge */
.ox-gcal-badge {
    pointer-events: none;
}

/* ==========================================
   TUTOR DASHBOARD — Mobile Responsive
   ========================================== */

/* --- 768px: Main mobile breakpoint --- */
@media (max-width: 768px) {

    /* Dashboard padding */
    .ox-tutor-dashboard {
        padding: 12px;
    }

    .ox-tutor-dashboard .ox-dashboard-section {
        padding: 16px;
        margin-bottom: 16px;
    }

    /* Section headers: stack on mobile */
    .ox-tutor-dashboard .ox-section-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 10px;
    }

    .ox-tutor-dashboard .ox-section-header h3 {
        font-size: 1rem;
        margin-bottom: 0;
    }

    .ox-tutor-dashboard .ox-section-header > div {
        width: 100%;
        justify-content: flex-start;
    }

    .ox-tutor-dashboard .ox-section-header .ox-btn {
        flex: 1;
        justify-content: center;
        font-size: 0.78rem;
        padding: 8px 10px;
    }

    /* Counter cards: 3 columns on mobile, 5 items  */
    .ox-tutor-dashboard .ox-dashboard-counters {
        grid-template-columns: repeat(3, 1fr);
        gap: 8px;
        margin-bottom: 16px;
    }

    .ox-tutor-dashboard .ox-counter-card {
        padding: 10px 6px;
    }

    .ox-tutor-dashboard .ox-counter-value {
        font-size: 1.4rem;
    }

    .ox-tutor-dashboard .ox-counter-label {
        font-size: 0.65rem;
    }

    /* ============================
       Table → Card Layout on Mobile
       ============================ */
    .ox-tutor-dashboard .ox-table-container {
        overflow-x: visible;
    }

    .ox-tutor-dashboard .ox-table thead {
        display: none;
    }

    .ox-tutor-dashboard .ox-table,
    .ox-tutor-dashboard .ox-table tbody {
        display: block;
    }

    .ox-tutor-dashboard .ox-table tr {
        display: block;
        background: var(--ox-white);
        border: 1px solid var(--ox-border);
        border-radius: var(--ox-radius);
        padding: 14px;
        margin-bottom: 12px;
        box-shadow: var(--ox-shadow);
        position: relative;
    }

    .ox-tutor-dashboard .ox-table tr:hover {
        background: var(--ox-white);
    }

    .ox-tutor-dashboard .ox-table td {
        display: flex;
        align-items: flex-start;
        padding: 4px 0;
        border-bottom: none;
        font-size: 0.88rem;
        gap: 8px;
    }

    .ox-tutor-dashboard .ox-table td::before {
        content: attr(data-label);
        font-weight: 600;
        color: var(--ox-primary);
        font-size: 0.75rem;
        text-transform: uppercase;
        min-width: 85px;
        flex-shrink: 0;
        padding-top: 2px;
    }

    /* First cell (student name) styled as card title */
    .ox-tutor-dashboard .ox-table td:first-child {
        font-weight: 700;
        font-size: 1rem;
        color: var(--ox-primary);
        padding-bottom: 6px;
        margin-bottom: 4px;
        border-bottom: 1px solid var(--ox-border);
    }

    /* Actions cell: full width, centered */
    .ox-tutor-dashboard .ox-table td:last-child {
        padding-top: 10px;
        margin-top: 6px;
        border-top: 1px solid var(--ox-border);
        justify-content: flex-start;
    }

    .ox-tutor-dashboard .ox-table td:last-child::before {
        display: none;
    }

    /* Action buttons in card layout */
    .ox-tutor-actions-group {
        width: 100%;
        gap: 6px;
    }

    .ox-tutor-actions-group .ox-btn {
        flex: 1;
        min-width: 0;
        padding: 8px 6px;
    }

    /* Turmas grid: single column on mobile */
    .ox-tutor-dashboard .ox-turmas-grid {
        grid-template-columns: 1fr;
        gap: 12px;
    }

    .ox-tutor-dashboard .ox-turma-card {
        padding: 14px;
    }

    .ox-tutor-dashboard .ox-turma-header {
        flex-direction: column;
        gap: 8px;
    }

    .ox-tutor-dashboard .ox-turma-header h4 {
        font-size: 1rem;
    }

    .ox-tutor-dashboard .ox-turma-meta {
        font-size: 0.8rem;
        gap: 6px;
    }

    /* Calendar nav: wrap nicely */
    .ox-tutor-dashboard #ox-calendar-nav {
        flex-wrap: wrap;
        gap: 6px !important;
    }

    .ox-tutor-dashboard #ox-calendar-nav .ox-btn {
        font-size: 0.78rem;
        padding: 6px 10px;
    }

    .ox-tutor-dashboard #ox-cal-week-label {
        width: 100%;
        margin-left: 0 !important;
        text-align: center;
    }

    /* Calendar grid horizontal scroll on mobile */
    .ox-tutor-dashboard #ox-calendar-grid {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    /* Modal improvements for mobile */
    .ox-tutor-dashboard ~ .ox-modal .ox-modal-content,
    .ox-tutor-dashboard + .ox-modal .ox-modal-content,
    #ox-modal-tutor-report .ox-modal-content,
    #ox-modal-tutor-request-more .ox-modal-content,
    #ox-modal-tutor-edit .ox-modal-content,
    #ox-modal-tutor-create-session .ox-modal-content {
        width: 95%;
        max-width: 95%;
        max-height: 95vh;
    }

    #ox-modal-tutor-report .ox-modal-body,
    #ox-modal-tutor-request-more .ox-modal-body,
    #ox-modal-tutor-edit .ox-modal-body,
    #ox-modal-tutor-create-session .ox-modal-body {
        padding: 16px !important;
    }

    #ox-modal-tutor-report .ox-modal-header h3,
    #ox-modal-tutor-request-more .ox-modal-header h3,
    #ox-modal-tutor-edit .ox-modal-header h3,
    #ox-modal-tutor-create-session .ox-modal-header h3 {
        font-size: 1rem;
    }

    /* Tutor info cards: stack vertically on mobile */
    .ox-tutor-info-cards {
        flex-direction: column;
        gap: 8px;
    }

    .ox-tutor-info-card {
        padding: 10px 12px;
    }

    .ox-tutor-info-icon {
        width: 34px;
        height: 34px;
    }

    .ox-tutor-info-icon .dashicons {
        font-size: 16px;
        width: 16px;
        height: 16px;
    }

    /* Radio cards: keep side by side but compact */
    .ox-tutor-radio-group {
        gap: 8px;
    }

    .ox-tutor-radio-card {
        padding: 10px 12px;
        font-size: 0.85rem;
    }

    .ox-tutor-radio-card .dashicons {
        font-size: 18px;
        width: 18px;
        height: 18px;
    }

    /* Form rows with inline styles: force stack */
    #ox-modal-tutor-edit [style*="display:flex"][style*="gap:12px"],
    #ox-modal-tutor-create-session [style*="display:grid"] {
        display: flex !important;
        flex-direction: column;
        gap: 0 !important;
    }

    .ox-form-row {
        flex-direction: column;
        gap: 0;
    }

    /* Modal footer: stack buttons on very narrow */
    .ox-modal-footer {
        flex-wrap: wrap;
        gap: 8px;
    }

    .ox-modal-footer .ox-btn {
        font-size: 0.85rem;
        padding: 10px 14px;
    }

    /* Past/concluded toggle headers */
    .ox-tutor-dashboard .ox-section-header-collapsible {
        padding: 10px 14px;
        cursor: pointer;
    }

    .ox-tutor-dashboard .ox-section-header-collapsible h4 {
        font-size: 0.9rem;
    }
}

/* --- 480px: Small mobile --- */
@media (max-width: 480px) {

    .ox-tutor-dashboard {
        padding: 8px;
    }

    .ox-tutor-dashboard .ox-dashboard-section {
        padding: 12px;
        margin-bottom: 12px;
    }

    /* Counter cards: 2+3 layout for 5 items */
    .ox-tutor-dashboard .ox-dashboard-counters {
        grid-template-columns: repeat(2, 1fr);
        gap: 6px;
    }

    .ox-tutor-dashboard .ox-counter-value {
        font-size: 1.2rem;
    }

    .ox-tutor-dashboard .ox-counter-label {
        font-size: 0.6rem;
    }

    /* Card layout tweaks for very small screens */
    .ox-tutor-dashboard .ox-table tr {
        padding: 12px;
        margin-bottom: 10px;
    }

    .ox-tutor-dashboard .ox-table td {
        flex-direction: column;
        gap: 2px;
    }

    .ox-tutor-dashboard .ox-table td::before {
        min-width: auto;
        font-size: 0.7rem;
    }

    /* Action buttons: wrap into 2 rows */
    .ox-tutor-actions-group {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(44px, 1fr));
        gap: 6px;
    }

    .ox-tutor-actions-group .ox-btn {
        width: 100%;
        padding: 8px 4px;
    }

    /* Modal footer: full width buttons */
    .ox-modal-footer {
        flex-direction: column;
    }

    .ox-modal-footer .ox-btn {
        width: 100%;
        text-align: center;
        justify-content: center;
    }

    /* Radio cards: stack vertically on very small screens */
    .ox-tutor-radio-group {
        flex-direction: column;
    }

    /* Professor name smaller */
    .ox-tutor-dashboard .ox-professor-details h2 {
        font-size: 1.15rem;
    }

    .ox-tutor-dashboard .ox-dashboard-date {
        font-size: 0.9rem;
    }
}

/* ==========================================
   SORTABLE TABLE HEADERS
   ========================================== */
.ox-sortable-table th.ox-sortable {
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
    transition: background 0.15s;
    position: relative;
}
.ox-sortable-table th.ox-sortable:hover {
    background: rgba(30, 58, 95, 0.08);
}
.ox-sortable-table th.ox-sorted-asc,
.ox-sortable-table th.ox-sorted-desc {
    background: rgba(30, 58, 95, 0.06);
    color: #1e3a5f;
}
.ox-sort-arrow {
    display: inline-block;
    font-size: 0.75em;
    margin-left: 3px;
    opacity: 0.7;
    vertical-align: middle;
}

/* ==========================================
   Tutor Calendar
   ========================================== */
.ox-cal-table { width: 100%; border-collapse: collapse; font-size: 0.82em; }
.ox-cal-table th { background: #f8f9fa; padding: 8px 6px; text-align: center; border: 1px solid #e9ecef; font-weight: 600; font-size: 0.85em; white-space: nowrap; }
.ox-cal-table td { padding: 4px; border: 1px solid #e9ecef; vertical-align: top; min-width: 100px; }
.ox-cal-table td:first-child { font-weight: 600; white-space: nowrap; min-width: auto; padding: 8px 10px; background: #f8f9fa; }
.ox-cal-slot { display: inline-block; padding: 3px 7px; border-radius: 4px; font-size: 0.82em; margin: 2px 1px; white-space: nowrap; line-height: 1.3; }
.ox-cal-slot-available { background: #d4edda; color: #155724; cursor: pointer; border: 1px solid #c3e6cb; }
.ox-cal-slot-available:hover { background: #b1dfbb; }
.ox-cal-slot-booked { background: #cce5ff; color: #004085; border: 1px solid #b8daff; cursor: default; }
.ox-cal-slot-blocked { background: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; }
.ox-cal-slot-blocked.ox-cal-unblockable { cursor: pointer; }
.ox-cal-slot-blocked.ox-cal-unblockable:hover { background: #f1b0b7; }
.ox-cal-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 4px; vertical-align: middle; }
.ox-cal-dot-available { background: #28a745; }
.ox-cal-dot-booked { background: #007bff; }
.ox-cal-dot-blocked { background: #dc3545; }
.ox-cal-dot-holiday { background: #ffc107; }
.ox-cal-holiday { background: #fff3cd; color: #856404; border: 1px solid #ffc107; cursor: default; }
.ox-cal-block-active { background: #dc3545 !important; color: #fff !important; border-color: #dc3545 !important; }
.ox-cal-student-results { position: absolute; z-index: 10; background: #fff; border: 1px solid #ddd; border-radius: 6px; max-height: 200px; overflow-y: auto; width: 100%; box-shadow: 0 4px 12px rgba(0,0,0,0.1); }
.ox-cal-student-item { padding: 8px 12px; cursor: pointer; font-size: 0.9em; border-bottom: 1px solid #f0f0f0; }
.ox-cal-student-item:hover { background: #f0f7ff; }
.ox-cal-student-item:last-child { border-bottom: none; }
.ox-cal-student-turma { color: #888; font-size: 0.85em; margin-left: 4px; }
@media (max-width: 768px) {
    .ox-cal-table { font-size: 0.75em; }
    .ox-cal-slot { padding: 2px 5px; font-size: 0.78em; }
    .ox-cal-table td { min-width: 80px; }
}

/* AI Review & Regenerate Buttons */
.ox-rc-ai-buttons {
    display: flex;
    gap: 8px;
    margin-top: 6px;
}
.ox-btn-ai-review {
    background: linear-gradient(135deg, #8b5cf6, #6d28d9);
    color: #fff;
    border: none;
    border-radius: 6px;
    padding: 5px 14px;
    font-size: 0.82rem;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    transition: opacity 0.2s;
}
.ox-btn-ai-review:hover { opacity: 0.85; }
.ox-btn-ai-review:disabled { opacity: 0.5; cursor: not-allowed; }
.ox-btn-ai-regenerate {
    background: linear-gradient(135deg, #f59e0b, #d97706);
    color: #fff;
    border: none;
    border-radius: 6px;
    padding: 5px 14px;
    font-size: 0.82rem;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    transition: opacity 0.2s;
}
.ox-btn-ai-regenerate:hover { opacity: 0.85; }
.ox-btn-ai-regenerate:disabled { opacity: 0.5; cursor: not-allowed; }
