[hidden]{display:none!important}body{margin:0;font-family:system-ui,sans-serif;background:#f4f5f7;color:#1f2328}.page{max-width:360px;margin:80px auto;padding:0 16px}.card{display:flex;flex-direction:column;gap:12px;padding:24px;background:#fff;border-radius:8px;box-shadow:0 1px 4px #0000001a}.card h2{margin:0 0 4px}label{display:flex;flex-direction:column;gap:4px;font-size:14px}input{padding:8px 10px;font-size:15px;border:1px solid #c9ced6;border-radius:6px}button{padding:10px;font-size:15px;color:#fff;background:#2563eb;border:none;border-radius:6px;cursor:pointer}button:disabled{opacity:.6;cursor:default}.error{margin:0;color:#c62828;font-size:14px}select{padding:8px 10px;font-size:15px;border:1px solid #c9ced6;border-radius:6px;background:#fff}button.secondary{color:#1f2328;background:#e5e7eb}button.danger{background:#dc2626}.dashboard{display:flex;min-height:100vh}.sidebar{display:flex;flex-direction:column;gap:16px;width:220px;padding:20px 12px;background:#1f2937;color:#e5e7eb}.sidebar.collapsed{width:auto;padding:20px 8px}.sidebar.collapsed .sidebar-title,.sidebar.collapsed .sidebar-user,.sidebar.collapsed .nav-label{display:none}.sidebar.collapsed .sidebar-header,.sidebar.collapsed .nav-item,.sidebar.collapsed .sidebar-logout{justify-content:center}.sidebar-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.nav-item,.sidebar-logout{display:flex;align-items:center;gap:10px}.sidebar-logout{justify-content:center}.icon{flex-shrink:0}.sidebar-toggle{padding:4px 10px;font-size:18px;line-height:1;color:#e5e7eb;background:transparent}.sidebar-toggle:hover{background:#374151}.sidebar nav{display:flex;flex-direction:column;gap:4px;flex:1}.sidebar-title{padding:0 8px;font-size:18px;font-weight:600}.nav-item{text-align:left;color:#e5e7eb;background:transparent}.nav-item.active,.nav-item:hover{background:#374151}.sidebar-footer{display:flex;flex-direction:column;gap:8px}.sidebar-user{padding:0 8px;font-size:14px;color:#9ca3af}.content{flex:1;min-width:0;padding:24px 32px;overflow-x:auto}.section{display:flex;flex-direction:column;gap:16px}.section-header{display:flex;align-items:center;justify-content:space-between}.section-header h2{margin:0}.toolbar{display:flex;gap:8px}.toolbar input{flex:1;max-width:360px}.table{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;box-shadow:0 1px 4px #0000001a;font-size:14px}.table th,.table td{padding:10px 12px;text-align:left;border-bottom:1px solid #eef0f3}.table th{color:#6b7280;font-weight:500}.table .actions{display:flex;gap:6px;justify-content:flex-end}.table .actions button{padding:6px 10px;font-size:13px}.table .empty{text-align:center;color:#6b7280}.badge{padding:2px 8px;border-radius:10px;font-size:12px}.badge-active{background:#dcfce7;color:#166534}.badge-inactive{background:#f3f4f6;color:#4b5563}.badge-enrolled{background:#dcfce7;color:#166534}.badge-expelled{background:#f3f4f6;color:#4b5563}.badge-blocked{background:#fee2e2;color:#991b1b}.pagination{display:flex;align-items:center;gap:12px;font-size:14px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#0006}.modal{width:420px;max-width:calc(100vw - 32px)}.modal-actions{display:flex;justify-content:flex-end;gap:8px}.empty-text{margin:0;color:#6b7280}.class-tabs{display:flex;flex-wrap:wrap;gap:8px}.class-tab{padding:8px 14px;color:#1f2328;background:#fff;border:1px solid #c9ced6}.class-tab.active{color:#fff;background:#2563eb;border-color:#2563eb}.class-tab-count{margin-left:4px;padding:0 6px;font-size:12px;border-radius:8px;background:#0000001a}.card .table{box-shadow:none}.success{margin:0;color:#166534;font-size:14px}.schedule-table{table-layout:fixed}.schedule-table th,.schedule-table td{padding:6px;border:1px solid #eef0f3}.schedule-table .schedule-lesson-col{width:56px;text-align:center}.inline-label{flex-direction:row;align-items:center;gap:8px}.hint{color:#6b7280;font-size:14px}.table-scroll{overflow-x:auto}.absences-table{border-collapse:separate;border-spacing:0}.absences-table th,.absences-table td{padding:4px;border:none;border-right:1px solid #eef0f3;border-bottom:1px solid #eef0f3}.absences-table tr>:first-child{border-left:1px solid #eef0f3}.absences-table thead th{border-top:1px solid #eef0f3}.absences-table .absences-num,.absences-table .absences-name{position:sticky;z-index:1;background:#fff}.absences-table .absences-num{left:0;box-sizing:border-box;width:40px;min-width:40px;max-width:40px;text-align:center}.absences-table .absences-name{left:40px;min-width:200px;white-space:nowrap;box-shadow:2px 0 4px -2px #00000026}.absences-table .absences-day{min-width:44px;text-align:center}.absences-day-meta{font-size:11px;white-space:nowrap}.absences-table .absence-select{box-sizing:border-box;width:44px;padding:4px 2px;font-size:13px;font-weight:600;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.absences-table .absence-select:disabled{background:#f3f4f6;cursor:default}.absence-select option{color:#1f2328;background:#fff}.report-range{display:flex;flex-wrap:wrap;align-items:center;gap:16px}.report-export{margin-left:auto}.report-table th,.report-table td{border:1px solid #eef0f3}.report-table th:nth-child(n+3),.report-table td:nth-child(n+3){text-align:center}.report-summary{width:auto;min-width:420px}.report-summary th,.report-summary td{border:1px solid #eef0f3}.report-summary th{color:#1f2328;font-weight:600;background:#f9fafb}.report-summary td:last-child{width:80px;text-align:center}.report-total-row td{font-weight:600;background:#f9fafb}.alert{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;border:1px solid;border-radius:8px;font-size:14px}.alert-error{color:#991b1b;background:#fee2e2;border-color:#fca5a5}.alert button{flex-shrink:0}.absence-legend{display:flex;flex-wrap:wrap;gap:16px;font-size:14px}.absence-legend-item{display:flex;align-items:center;gap:4px}.absence-mark{display:inline-block;min-width:28px;padding:2px 6px;border:1px solid transparent;border-radius:6px;font-weight:600;text-align:center}.absence-by_order{color:#1e40af;background:#dbeafe;border-color:#93c5fd}.absence-illness{color:#92400e;background:#fef3c7;border-color:#fcd34d}.absence-explanatory{color:#166534;background:#dcfce7;border-color:#86efac}.absence-unexcused{color:#991b1b;background:#fee2e2;border-color:#fca5a5}.absences-total{font-weight:600}.absences-expelled .absences-name{color:#9ca3af}.schedule-table input{box-sizing:border-box;width:100%;padding:6px 8px;font-size:14px}
