:root{--bg-app:linear-gradient(135deg, #eef2f6 0%, #e0e9f5 100%);--glass-bg:#ffffff73;--glass-border:#fff6;--glass-shadow:0 8px 32px 0 #1f26870f;--glass-blur:blur(16px) saturate(180%);--text-primary:#1e293b;--text-secondary:#475569;--text-muted:#64748b;--accent:#3b82f6;--accent-hover:#2563eb;--accent-light:#3b82f61a;--accent-glow:#3b82f633;--card-bg:#fff9;--card-border:#ffffff80;--success:#10b981;--success-light:#10b9811a;--warning:#f59e0b;--warning-light:#f59e0b1a;--danger:#ef4444;--danger-light:#ef44441a;--sidebar-width:260px;--sidebar-collapsed-width:80px;--transition-speed:.3s}[data-theme=dark]{--bg-app:linear-gradient(135deg, #0b0f19 0%, #030712 100%);--glass-bg:#11182780;--glass-border:#ffffff0f;--glass-shadow:0 8px 32px 0 #0000005e;--text-primary:#f8fafc;--text-secondary:#94a3b8;--text-muted:#64748b;--accent:#60a5fa;--accent-hover:#3b82f6;--accent-light:#60a5fa26;--accent-glow:#60a5fa40;--card-bg:#1f2937a6;--card-border:#ffffff0d;--success:#34d399;--success-light:#34d39926;--warning:#fbbf24;--warning-light:#fbbf2426;--danger:#f87171;--danger-light:#f8717126}[data-theme=glass-purple]{--bg-app:linear-gradient(135deg, #f5e6fc 0%, #e5cbf2 100%);--glass-bg:#fff6;--glass-border:#ffffff80;--glass-shadow:0 8px 32px 0 #a21caf14;--text-primary:#3b0764;--text-secondary:#581c87;--text-muted:#701a75;--accent:#a21caf;--accent-hover:#86198f;--accent-light:#a21caf1a;--accent-glow:#a21caf33;--card-bg:#ffffff8c;--card-border:#ffffff73}[data-theme=glass-green]{--bg-app:linear-gradient(135deg, #e6f7ed 0%, #caefd9 100%);--glass-bg:#ffffff73;--glass-border:#ffffff80;--glass-shadow:0 8px 32px 0 #0478570f;--text-primary:#064e3b;--text-secondary:#065f46;--text-muted:#047857;--accent:#059669;--accent-hover:#047857;--accent-light:#0596691a;--accent-glow:#05966933;--card-bg:#ffffff8c;--card-border:#ffffff73}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-app);color:var(--text-primary);min-height:100vh;font-family:Inter,Outfit,system-ui,-apple-system,sans-serif;transition:background .3s,color .3s;overflow-x:hidden}.glass-container{min-height:100vh;display:flex;position:relative}.glass-panel{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.glass-card{background:var(--card-bg);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--card-border);box-shadow:var(--glass-shadow);border-radius:16px;padding:24px;transition:transform .2s,box-shadow .2s}.glass-card:hover{transform:translateY(-2px);box-shadow:0 12px 40px #1f26871f}.app-sidebar{width:var(--sidebar-width);z-index:100;height:100vh;transition:width var(--transition-speed) ease;border-radius:0 20px 20px 0;flex-direction:column;display:flex;position:fixed;top:0;left:0}.app-sidebar.collapsed{width:var(--sidebar-collapsed-width)}.app-main{margin-left:var(--sidebar-width);min-height:100vh;transition:margin-left var(--transition-speed) ease;flex:1;padding:30px}.app-sidebar.collapsed+.app-main{margin-left:var(--sidebar-collapsed-width)}.sidebar-header{border-bottom:1px solid var(--glass-border);white-space:nowrap;align-items:center;gap:12px;padding:24px;display:flex;overflow:hidden}.sidebar-logo{background:linear-gradient(90deg, var(--accent) 0%, #10b981 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-family:Outfit,sans-serif;font-size:1.25rem;font-weight:800}.sidebar-menu{flex:1;padding:16px 8px;list-style:none;overflow-y:auto}.sidebar-menu-category{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;padding:12px 16px 6px;font-size:.7rem;font-weight:700;overflow:hidden}.sidebar-menu.collapsed .sidebar-menu-category{display:none}.sidebar-item{color:var(--text-secondary);cursor:pointer;white-space:nowrap;border-radius:10px;align-items:center;gap:14px;margin-bottom:4px;padding:12px 16px;font-size:.925rem;font-weight:500;transition:all .2s;display:flex}.sidebar-item:hover{background:var(--accent-light);color:var(--accent)}.sidebar-item.active{background:var(--accent);color:#fff;box-shadow:0 4px 12px var(--accent-glow)}.sidebar-item-icon{justify-content:center;align-items:center;width:20px;font-size:1.2rem;display:flex}.sidebar-item-text{transition:opacity var(--transition-speed)}.app-sidebar.collapsed .sidebar-item-text{opacity:0;width:0;display:none}.app-header{border-radius:16px;justify-content:space-between;align-items:center;margin-bottom:30px;padding:16px 24px;display:flex}.header-title-section h1{color:var(--text-primary);font-family:Outfit,sans-serif;font-size:1.75rem;font-weight:700}.header-title-section p{color:var(--text-secondary);margin-top:4px;font-size:.875rem}.header-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:16px;display:flex}.profile-widget{cursor:pointer;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:30px;align-items:center;gap:12px;padding:6px 12px;transition:all .2s;display:flex}.profile-widget:hover{background:var(--accent-light);border-color:var(--accent)}.profile-info{text-align:right;flex-direction:column;max-width:150px;display:flex}.profile-info span:first-child{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.profile-avatar{border-radius:50%;flex-shrink:0;width:40px;height:40px}.dashboard-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;margin-bottom:30px;display:grid}.grid-2col{grid-template-columns:1fr 1fr;gap:16px;display:grid}.dashboard-today-grid{grid-template-columns:1fr 1fr;gap:20px;display:grid}.stat-card{align-items:center;gap:20px;display:flex}.stat-icon{color:#fff;border-radius:12px;justify-content:center;align-items:center;width:56px;height:56px;font-size:1.5rem;display:flex}.stat-icon.primary{background:linear-gradient(135deg,#3b82f6,#1d4ed8)}.stat-icon.success{background:linear-gradient(135deg,#10b981,#047857)}.stat-icon.warning{background:linear-gradient(135deg,#f59e0b,#b45309)}.stat-icon.danger{background:linear-gradient(135deg,#ef4444,#b91c1c)}.stat-info h3{color:var(--text-secondary);margin-bottom:4px;font-size:.875rem;font-weight:500}.stat-info p{color:var(--text-primary);font-family:Outfit,sans-serif;font-size:1.75rem;font-weight:700}.table-container,.table-responsive{-webkit-overflow-scrolling:touch;border-radius:8px;width:100%;margin-top:20px;overflow-x:auto}table{border-collapse:collapse;text-align:left;width:100%}th{color:var(--text-secondary);border-bottom:2px solid var(--glass-border);white-space:nowrap;padding:14px 16px;font-size:.875rem;font-weight:600}td{color:var(--text-primary);border-bottom:1px solid var(--glass-border);white-space:nowrap;padding:14px 16px;font-size:.9rem}tr:hover td{background:var(--accent-light)}.badge{text-align:center;border-radius:20px;padding:4px 10px;font-size:.75rem;font-weight:600;display:inline-block}.badge.success{background:var(--success-light);color:var(--success)}.badge.warning{background:var(--warning-light);color:var(--warning)}.badge.danger{background:var(--danger-light);color:var(--danger)}.badge.primary{background:var(--accent-light);color:var(--accent)}.btn{cursor:pointer;border:none;border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-family:inherit;font-size:.9rem;font-weight:600;transition:all .2s;display:inline-flex}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 4px 12px var(--accent-glow)}.btn-primary:hover{background:var(--accent-hover);transform:translateY(-1px)}.btn-secondary{background:var(--glass-bg);color:var(--text-primary);border:1px solid var(--glass-border)}.btn-secondary:hover{background:var(--accent-light);color:var(--accent)}.btn-danger{background:var(--danger);color:#fff;box-shadow:0 4px 12px var(--danger-light)}.btn-danger:hover{background:#dc2626;transform:translateY(-1px)}.form-group{margin-bottom:20px}.form-label{color:var(--text-secondary);margin-bottom:8px;font-size:.875rem;font-weight:600;display:block}.form-control{background:var(--glass-bg);border:1px solid var(--glass-border);width:100%;color:var(--text-primary);border-radius:10px;outline:none;padding:12px 16px;font-family:inherit;font-size:.9rem;transition:all .2s}.form-control:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.modal-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:1000;background:#00000073;justify-content:center;align-items:center;width:100%;height:100%;padding:20px;display:flex;position:fixed;top:0;left:0}.modal-content{border-radius:20px;width:100%;max-width:600px;max-height:90vh;padding:30px;animation:.3s cubic-bezier(.16,1,.3,1) modalFadeIn;position:relative;overflow-y:auto}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.95)translateY(10px)}to{opacity:1;transform:scale(1)translateY(0)}}.modal-header{border-bottom:1px solid var(--glass-border);justify-content:space-between;align-items:center;margin-bottom:24px;padding-bottom:14px;display:flex}.modal-header h2{font-family:Outfit,sans-serif;font-size:1.5rem;font-weight:700}.modal-close{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;font-size:1.5rem;transition:color .2s}.modal-close:hover{color:var(--danger)}.mobile-header{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-bottom:1px solid var(--glass-border);z-index:200;justify-content:space-between;align-items:center;padding:16px 20px;display:none;position:sticky;top:0}.menu-toggle{color:var(--text-primary);cursor:pointer;background:0 0;border:none;font-size:1.5rem}.split-layout{grid-template-columns:2fr 1fr;gap:30px;display:grid}@media (width<=1024px){.split-layout{grid-template-columns:1fr}}@media (width<=768px){.glass-container{flex-direction:column}.app-sidebar{z-index:1000;height:100vh;position:fixed;top:0;left:0;transform:translate(-100%)}.app-sidebar.open{background:var(--bg-app);width:280px;transform:translate(0);box-shadow:4px 0 24px #0000002e}.app-sidebar.open:after{content:"";z-index:-1;background:#0000004d;position:fixed;inset:0 0 0 280px}.app-main{box-sizing:border-box;width:100%;max-width:100vw;padding:12px;overflow-x:hidden;margin-left:0!important}.glass-card{overflow:hidden}.mobile-header{box-sizing:border-box;gap:8px;width:100%;padding:10px 14px;display:flex}.mobile-header .sidebar-logo{flex-shrink:0;font-size:1rem}.app-header{display:none}.profile-info{max-width:100px}.profile-info span:first-child{font-size:.85rem}.grid-2col,.dashboard-today-grid,.split-layout{grid-template-columns:1fr}.dashboard-grid{grid-template-columns:repeat(2,1fr);gap:12px}.stat-info p{font-size:1.25rem}th,td{padding:10px;font-size:.8rem}.btn{padding:8px 12px;font-size:.82rem}.modal-content{border-radius:14px;padding:18px}.timetable-grid{grid-template-columns:1fr}.org-node{min-width:unset;width:100%}.org-level{gap:12px}}.chart-container{justify-content:center;align-items:center;height:220px;display:flex}.chart-svg{width:100%;max-width:320px;height:100%}.chart-legend{flex-direction:column;gap:8px;margin-left:20px;display:flex}.legend-item{color:var(--text-secondary);align-items:center;gap:8px;font-size:.875rem;display:flex}.legend-dot{border-radius:50%;width:12px;height:12px}.seating-grid{gap:15px;margin-top:20px;padding:10px;display:grid}.desk-cell{background:var(--glass-bg);border:2px dashed var(--glass-border);aspect-ratio:1.5;cursor:pointer;text-align:center;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;padding:8px;transition:all .2s;display:flex}.desk-cell:hover{border-color:var(--accent);background:var(--accent-light)}.desk-cell.occupied{border-style:solid;border-color:var(--accent);background:var(--card-bg);box-shadow:var(--glass-shadow)}.desk-cell .desk-label{color:var(--text-muted);margin-bottom:4px;font-size:.75rem}.desk-cell .student-name{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:.85rem;font-weight:600;overflow:hidden}.timetable-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;margin-top:20px;display:grid}.day-column{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:16px;flex-direction:column;gap:12px;min-height:300px;padding:16px;display:flex}.day-title{border-bottom:2px solid var(--glass-border);margin-bottom:4px;padding-bottom:8px;font-family:Outfit,sans-serif;font-size:1.1rem;font-weight:700}.subject-slot{background:var(--card-bg);border:1px solid var(--card-border);border-radius:12px;padding:12px;position:relative;box-shadow:0 2px 6px #00000005}.slot-time{color:var(--accent);margin-bottom:4px;font-size:.75rem;font-weight:600}.slot-subject{margin-bottom:2px;font-size:.9rem;font-weight:700}.slot-teacher{color:var(--text-secondary);font-size:.8rem}.org-chart{flex-direction:column;align-items:center;gap:30px;padding:20px 0;display:flex}.org-level{flex-wrap:wrap;justify-content:center;gap:40px;width:100%;display:flex}.org-node{background:var(--card-bg);border:1px solid var(--card-border);text-align:center;box-shadow:var(--glass-shadow);border-radius:12px;min-width:180px;padding:14px 20px}.org-node-role{text-transform:uppercase;color:var(--accent);margin-bottom:4px;font-size:.75rem;font-weight:700}.org-node-name{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:.95rem;font-weight:600;overflow:hidden}.attendance-list{flex-direction:column;gap:10px;display:flex}.attendance-row{background:var(--card-bg);border:1px solid var(--card-border);border-radius:12px;justify-content:space-between;align-items:center;padding:12px 20px;display:flex}.attendance-student-info{flex-direction:column;gap:2px;display:flex}.attendance-options{gap:8px;display:flex}.attendance-btn{cursor:pointer;border:1px solid var(--glass-border);background:var(--glass-bg);width:38px;height:38px;color:var(--text-secondary);border-radius:50%;justify-content:center;align-items:center;font-size:.875rem;font-weight:700;transition:all .15s;display:flex}.attendance-btn:hover{background:var(--accent-light);color:var(--accent)}.attendance-btn.active-H{background:var(--success);color:#fff;border-color:var(--success)}.attendance-btn.active-S{background:var(--warning);color:#fff;border-color:var(--warning)}.attendance-btn.active-I{background:var(--accent);color:#fff;border-color:var(--accent)}.attendance-btn.active-A{background:var(--danger);color:#fff;border-color:var(--danger)}
