@charset "UTF-8";:root,[data-theme=light]{--primary: #001f5c;--primary-light: #003087;--accent: #d32f2f;--gold: #fbc02d;--bg: #f4f6fb;--white: #ffffff;--text: #1a1a2e;--muted: #6b7280;--border: #e5e7eb;--success: #059669;--warning: #d97706;--danger: #dc2626;--radius: 8px;--shadow: 0 2px 8px rgba(0, 31, 92, .08);--row-hover: #f8fafc;--input-bg: #ffffff;--topbar-bg: #ffffff}[data-theme=dark]{--primary: #93c5fd;--primary-light: #bfdbfe;--accent: #f87171;--gold: #fbbf24;--bg: #0f1419;--white: #1a2332;--text: #e8eaed;--muted: #9ca3af;--border: #2d3748;--success: #34d399;--warning: #fbbf24;--danger: #f87171;--shadow: 0 2px 12px rgba(0, 0, 0, .45);--row-hover: #243044;--input-bg: #141c28;--topbar-bg: #1a2332;color-scheme:dark}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,system-ui,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;overflow-x:hidden}a{color:var(--primary);text-decoration:none}.page-title{font-size:1.5rem;font-weight:700;color:var(--primary);margin-bottom:.5rem}.page-subtitle{margin-bottom:1.5rem;color:var(--muted);font-size:.95rem}.card{background:var(--white);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem;margin-bottom:1.5rem}.card-title{font-size:1rem;font-weight:600;color:var(--primary);margin-bottom:1rem;padding-bottom:.5rem;border-bottom:2px solid var(--gold)}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1rem;border:none;border-radius:var(--radius);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-light)}.btn-accent{background:var(--accent);color:#fff}.btn-gold{background:var(--gold);color:var(--primary)}.btn-outline{background:transparent;border:1px solid var(--primary);color:var(--primary)}.btn-danger{background:var(--danger);color:#fff}.btn-whatsapp{background:#25d366;color:#fff;border:1px solid #25d366}.btn-whatsapp:hover{background:#1ebe5d;border-color:#1ebe5d}.btn-sm{padding:.35rem .75rem;font-size:.8rem}.btn:disabled,.btn.is-busy{opacity:.55;cursor:not-allowed;pointer-events:none}.btn.is-busy{filter:saturate(.85)}.btn-spinner{width:.9rem;height:.9rem;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:btn-spin .65s linear infinite;flex-shrink:0}@keyframes btn-spin{to{transform:rotate(360deg)}}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}.form-group{display:flex;flex-direction:column;gap:.35rem}.form-group label{font-size:.8rem;font-weight:500;color:var(--muted)}.form-group input,.form-group select,.form-group textarea{padding:.5rem .75rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.875rem;font-family:inherit;background:var(--input-bg);color:var(--text)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #001f5c1a}table.data-table{width:100%;border-collapse:collapse;font-size:.875rem}table.data-table th{background:var(--primary);color:#fff;padding:.75rem 1rem;text-align:left;font-weight:500;white-space:nowrap}table.data-table td{padding:.75rem 1rem;border-bottom:1px solid var(--border)}table.data-table tr:hover td{background:var(--row-hover)}.status-badge{display:inline-block;padding:.15rem .55rem;border-radius:999px;font-size:.75rem;font-weight:700;letter-spacing:.02em}.status-badge.status-pass{background:#dcfce7;color:#166534}.status-badge.status-fail{background:#fee2e2;color:#b91c1c}table.data-table tr.subject-fail td{color:#b91c1c}.result-subjects-row td{background:#f8fafc;padding-top:.35rem;padding-bottom:.85rem}.nested-result-table{margin-top:.25rem;font-size:.8125rem}.nested-result-table th{background:#334155}.table-responsive{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:.25rem}.table-responsive .data-table{min-width:520px}.badge{display:inline-block;padding:.2rem .6rem;border-radius:999px;font-size:.75rem;font-weight:600}.badge-paid{background:#d1fae5;color:var(--success)}.badge-partial{background:#fef3c7;color:var(--warning)}.badge-pending{background:#fee2e2;color:var(--danger)}.badge-upcoming{background:#e0e7ff;color:#3730a3;font-size:.75rem;padding:.15rem .45rem;border-radius:4px;font-weight:600}.row-upcoming{background:#f8fafc}.row-upcoming td{color:#475569}.badge-offline{background:#fff3e0;color:#e65100}.badge-online{background:#e3f2fd;color:#1565c0}.offline-banner{margin-bottom:1rem}.offline-banner p{margin:.5rem 0 0;line-height:1.5}.offline-note{margin:0 0 1rem;padding:.75rem 1rem;background:#fff8e1;border-left:4px solid #ff9800;border-radius:4px;font-size:.9rem;line-height:1.5}.field-hint{display:block;margin-top:.25rem;font-size:.8rem;color:#666}.modal-backdrop{position:fixed;inset:0;background:#0006;z-index:1000}.modal-card{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1001;width:min(640px,92vw);max-height:85vh;overflow-y:auto;-webkit-overflow-scrolling:touch}.modal-card--wide{width:min(720px,94vw)}.app-confirm-card{width:min(420px,92vw);padding:1.25rem 1.5rem}.app-confirm-message{margin:.75rem 0 1.25rem;color:var(--text-muted, #555);line-height:1.5}.app-confirm-actions{display:flex;justify-content:flex-end;gap:.75rem}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;margin-bottom:1.5rem}.stat-card{background:var(--white);border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow);border-left:4px solid var(--primary)}.stat-card.accent{border-left-color:var(--accent)}.stat-card.gold{border-left-color:var(--gold)}.stat-card .stat-value{font-size:1.75rem;font-weight:700;color:var(--primary)}.stat-card .stat-label{font-size:.8rem;color:var(--muted);margin-top:.25rem}.alert{padding:.75rem 1rem;border-radius:var(--radius);margin-bottom:1rem;font-size:.875rem}.alert-error{background:#fee2e2;color:var(--danger)}.alert-success{background:#d1fae5;color:var(--success)}.alert-info{background:#e3f2fd;color:#0d47a1;border:1px solid #90caf9}[data-theme=dark] .badge-paid{background:#34d39933}[data-theme=dark] .badge-partial{background:#fbbf2433}[data-theme=dark] .badge-pending{background:#f8717133}[data-theme=dark] .badge-upcoming{background:#818cf833;color:#a5b4fc}[data-theme=dark] .row-upcoming{background:#94a3b814}[data-theme=dark] .badge-offline{background:#fb923c33;color:#fdba74}[data-theme=dark] .badge-online{background:#93c5fd33;color:#93c5fd}[data-theme=dark] .offline-note{background:#2a2418;border-left-color:#f59e0b;color:var(--text)}[data-theme=dark] .alert-error{background:#f8717126}[data-theme=dark] .alert-success{background:#34d39926}[data-theme=dark] .alert-info{background:#93c5fd1f;color:#93c5fd;border-color:#3b5998}[data-theme=dark] .field-hint{color:var(--muted)}[data-theme=dark] table.data-table th{background:#243044}.actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1rem}.field-error{display:block;margin-top:.3rem;font-size:.75rem;line-height:1.35;color:var(--danger)}.form-group.has-error input,.form-group.has-error select,.form-group.has-error textarea,.field-block.has-error .input-wrap input{border-color:var(--danger)}.empty-state{text-align:center;padding:2rem;color:var(--muted)}.app-snackbar-container{position:fixed;bottom:1.25rem;right:1.25rem;z-index:10000;display:flex;flex-direction:column;gap:.65rem;max-width:min(420px,100vw - 2rem);pointer-events:none}.app-snackbar{display:flex;align-items:flex-start;gap:.65rem;padding:.85rem 1rem;border-radius:12px;background:var(--white);border:1px solid var(--border);box-shadow:0 12px 32px #0000002e;color:var(--text);font-size:.875rem;line-height:1.45;opacity:0;transform:translateY(12px) scale(.98);transition:opacity .28s ease,transform .28s ease;pointer-events:auto}.app-snackbar.show{opacity:1;transform:translateY(0) scale(1)}.app-snackbar__icon{flex-shrink:0;width:1.5rem;height:1.5rem;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700}.app-snackbar--success{border-color:#05966959}.app-snackbar--success .app-snackbar__icon{background:#05966926;color:var(--success)}.app-snackbar--error{border-color:#dc262659}.app-snackbar--error .app-snackbar__icon{background:#dc26261f;color:var(--danger)}.app-snackbar--info{border-color:#001f5c40}.app-snackbar--info .app-snackbar__icon{background:#001f5c1a;color:var(--primary)}@media(max-width:640px){.app-snackbar-container{left:1rem;right:1rem;bottom:1rem;max-width:none}}@media(max-width:992px){.page-title{font-size:1.25rem}.page-subtitle{font-size:.875rem;margin-bottom:1rem}.card{padding:1rem;margin-bottom:1rem}.form-grid{grid-template-columns:1fr}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem}.stat-card .stat-value{font-size:1.4rem}table.data-table{font-size:.8rem}table.data-table th,table.data-table td{padding:.5rem .65rem}.actions{gap:.4rem}.btn{min-height:2.25rem}.modal-card,.modal-card--wide{width:calc(100vw - 1.25rem);max-height:90vh;top:auto;bottom:0;left:50%;transform:translate(-50%);border-bottom-left-radius:0;border-bottom-right-radius:0}.app-confirm-card{width:calc(100vw - 1.25rem)}.app-confirm-actions{flex-direction:column-reverse;align-items:stretch}.app-confirm-actions .btn{width:100%;justify-content:center}}@media(max-width:480px){.page-title{font-size:1.1rem}.btn-sm{padding:.4rem .55rem;font-size:.75rem}.badge{font-size:.68rem;padding:.15rem .45rem}.table-responsive .data-table{min-width:480px}}.login-page .password-input-wrap{position:relative}.login-page .password-input-wrap input{width:100%;padding-right:2.75rem}.login-page .password-toggle-btn{position:absolute;top:50%;right:.55rem;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:0;background:transparent;color:var(--muted);cursor:pointer;border-radius:6px}.login-page .password-toggle-btn svg{width:1.15rem;height:1.15rem;fill:currentColor}.login-page .password-toggle-btn:hover{color:var(--text);background:var(--row-hover)}
