:root{--color-primary: #2c3e50;--color-primary-dark: #1a252f;--color-secondary: #34495e;--color-secondary-dark: #2c3e50;--color-danger: #e74c3c;--color-danger-dark: #c0392b;--color-success: #27ae60;--color-warning: #f39c12;--color-info: #3498db;--color-text: #2c3e50;--color-text-secondary: #7f8c8d;--color-text-light: #95a5a6;--color-background: #f5f6fa;--color-background-secondary: #ffffff;--color-border: #dcdde1;--color-border-light: #f1f2f6;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .1);--shadow-md: 0 2px 8px rgba(0, 0, 0, .1);--shadow-lg: 0 4px 16px rgba(0, 0, 0, .1);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;line-height:1.6;font-weight:400}*{margin:0;padding:0;box-sizing:border-box}body{margin:0;min-height:100vh;color:var(--color-text);background-color:var(--color-background);font-size:14px}#root{min-height:100vh}h1,h2,h3,h4,h5,h6{color:var(--color-text);margin-bottom:var(--spacing-md);font-weight:600}h1{font-size:28px}h2{font-size:24px}h3{font-size:20px}p{margin-bottom:var(--spacing-sm)}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.container{max-width:1200px;margin:0 auto;padding:0 var(--spacing-md)}.text-center{text-align:center}.text-right{text-align:right}.mt-sm{margin-top:var(--spacing-sm)}.mt-md{margin-top:var(--spacing-md)}.mt-lg{margin-top:var(--spacing-lg)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-md{margin-bottom:var(--spacing-md)}.mb-lg{margin-bottom:var(--spacing-lg)}.p-sm{padding:var(--spacing-sm)}.p-md{padding:var(--spacing-md)}.p-lg{padding:var(--spacing-lg)}@media(max-width:768px){body{font-size:16px}h1{font-size:24px}h2{font-size:20px}}.spinner{border:3px solid var(--color-border);border-top:3px solid var(--color-primary);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto}.spinner-small{width:20px;height:20px;border-width:2px}.spinner-medium{width:40px;height:40px}.spinner-large{width:60px;height:60px;border-width:4px}.spinner-overlay{position:fixed;inset:0;background-color:#0000008c;display:flex;justify-content:center;align-items:center;z-index:9999}.spinner-overlay-content{display:flex;flex-direction:column;align-items:center;gap:16px;background:var(--color-surface, #fff);border-radius:12px;padding:32px 40px;box-shadow:0 8px 32px #00000040}.spinner-overlay-message{margin:0;font-size:1rem;font-weight:500;color:var(--color-text, #333);text-align:center}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.input-group{margin-bottom:16px;width:100%}.input-label{display:block;margin-bottom:6px;font-weight:500;color:var(--color-text);font-size:14px}.required{color:var(--color-danger);margin-left:4px}.input-field{width:100%;padding:10px 12px;border:1px solid var(--color-border);border-radius:4px;font-size:16px;transition:border-color .2s}.input-field:focus{outline:none;border-color:var(--color-primary)}.input-field.input-error{border-color:var(--color-danger)}.error-message{display:block;margin-top:6px;color:var(--color-danger);font-size:12px}.btn{padding:10px 20px;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:500;transition:all .2s;display:inline-block;text-align:center}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background-color:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background-color:var(--color-primary-dark)}.btn-secondary{background-color:var(--color-secondary);color:#fff}.btn-secondary:hover:not(:disabled){background-color:var(--color-secondary-dark)}.btn-danger{background-color:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background-color:var(--color-danger-dark)}.btn-outline{background-color:transparent;border:1px solid var(--color-primary);color:var(--color-primary)}.btn-outline:hover:not(:disabled){background-color:var(--color-primary);color:#fff}.login-container{min-height:100vh;display:flex;justify-content:center;align-items:center;background-color:var(--color-background);padding:20px}.login-card{background:#fff;padding:0;border-radius:8px;box-shadow:0 2px 10px #0000001a;width:100%;max-width:420px;overflow:hidden}.login-tabs{display:flex;background:#f8f9fa;border-bottom:2px solid #e9ecef}.login-tab{flex:1;padding:1rem;background:transparent;border:none;font-size:.9375rem;font-weight:500;color:#6c757d;cursor:pointer;transition:all .2s;border-bottom:3px solid transparent;position:relative}.login-tab:hover{background:#e9ecef;color:#495057}.login-tab.active{background:#fff;color:#3498db;border-bottom-color:#3498db}@media(max-width:768px){.login-tab-admin,.login-tab-teacher{display:none}}.login-header{text-align:center;margin-bottom:30px;padding:40px 40px 0}.login-header h1{color:var(--color-primary);margin-bottom:8px;font-size:24px}.login-header p{color:var(--color-text-secondary);font-size:14px}.login-form{margin-bottom:20px;padding:0 40px}.login-btn{width:100%;margin-top:10px;padding:12px;font-size:16px;display:flex;justify-content:center;align-items:center}.login-links{display:flex;justify-content:space-between;font-size:14px;padding:20px 40px 40px;border-top:1px solid var(--color-border);margin:0 40px}.login-links a{color:var(--color-primary);text-decoration:none}.login-links a:hover{text-decoration:underline}.alert{padding:12px;border-radius:4px;margin:0 40px 20px;font-size:14px}.alert-error{background-color:#fee;color:var(--color-danger);border:1px solid var(--color-danger)}@media(max-width:480px){.login-header{padding:30px 20px 0}.login-form{padding:0 20px}.login-links{padding:20px 20px 30px;margin:0 20px;flex-direction:column;gap:10px}.alert{margin:0 20px 20px}}.auth-container{min-height:100vh;display:flex;justify-content:center;align-items:center;background-color:var(--color-background);padding:20px}.auth-card{background:#fff;padding:40px;border-radius:8px;box-shadow:0 2px 10px #0000001a;width:100%;max-width:420px}.auth-header{text-align:center;margin-bottom:30px}.auth-header h1{color:var(--color-primary);margin-bottom:8px;font-size:24px}.auth-header p{color:var(--color-text-secondary);font-size:14px}.auth-form{margin-bottom:20px}.auth-btn{width:100%;margin-top:10px;padding:12px;font-size:16px;display:flex;justify-content:center;align-items:center}.auth-links{text-align:center;font-size:14px;padding-top:20px;border-top:1px solid var(--color-border)}.auth-links a{color:var(--color-primary);text-decoration:none}.auth-links a:hover{text-decoration:underline}.alert-success{background-color:#d4edda;color:#155724;border:1px solid #c3e6cb}.admin-layout{display:flex;min-height:100vh;background:#f5f5f5;margin:0;padding:0}.sidebar.closed .nav-link,.sidebar.closed h3,.sidebar.closed .sidebar-header h2{display:none}.notification-badge{background:#e74c3c;color:#fff;font-size:.7rem;font-weight:600;padding:2px 6px;border-radius:10px;margin-left:auto;margin-right:8px;min-width:18px;text-align:center;display:inline-block}.nav-section{margin-top:1.5rem}.nav-section h3{font-size:.7rem;text-transform:uppercase;color:#95a5a6;padding:0 .75rem;margin-bottom:.5rem;letter-spacing:.5px;font-weight:600}.user-info .btn-outline:hover{background:#dc3545;color:#fff;border-color:#dc3545}@media(max-width:768px){.sidebar{width:0}.sidebar.open{width:200px}.main-content{margin-left:0}.sidebar.open+.main-content{margin-left:200px}.sidebar-header h2{display:none}.sidebar.open .sidebar-header h2{display:block}.nav-link,h3{display:none}.sidebar.open .nav-link,.sidebar.open h3{display:block}}.teacher-layout{display:flex;min-height:100vh;background:#f5f5f5;margin:0;padding:0}.sidebar{width:200px;background:#2c3e50;color:#fff;transition:width .3s ease;display:flex;flex-direction:column;position:fixed;left:0;top:0;height:100vh;overflow-y:auto;z-index:102}.sidebar.closed{width:0}.sidebar.closed .nav-link,.sidebar.closed .sidebar-header h2{display:none}.toggle-btn{background:transparent;border:none;color:#fff;font-size:1.25rem;cursor:pointer;padding:.25rem .5rem;flex-shrink:0;z-index:10}.sidebar.closed .sidebar-header{position:fixed;left:0;top:0;width:auto;padding:1rem;background:transparent;border:none;z-index:103}.sidebar.closed .toggle-btn{background:#2c3e50;padding:.5rem .75rem;border-radius:4px;box-shadow:0 2px 8px #0003}.nav-link{display:block;color:#fff;padding:.625rem .75rem;text-decoration:none;transition:background .2s;white-space:nowrap;font-size:.875rem}.nav-link:hover{background:#ffffff1a}.sidebar.closed+.main-content{margin-left:0}.user-info{display:flex;align-items:center;justify-content:flex-end;gap:1rem;position:fixed;top:0;left:0;right:0;background:#fff;padding:1rem 1.5rem;box-shadow:0 2px 4px #0000001a;z-index:101}.btn-secondary{background:#3498db;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.875rem;transition:background .2s}.btn-secondary:hover{background:#2980b9}.btn-switch{background:transparent;border:none;color:#6c757d;padding:.4rem;cursor:pointer;font-size:1.25rem;display:flex;align-items:center;justify-content:center;transition:all .2s}.btn-switch:hover{color:#2c3e50}.user-info .btn-outline{background:#fff;color:#dc3545;border:1px solid #dc3545;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.875rem;transition:all .2s}.user-info .btn-outline:hover{background:#dc3545;color:#fff}.notification-wrapper{position:relative}.btn-notification{background:transparent;border:none;color:#6c757d;padding:.4rem;cursor:pointer;font-size:1.125rem;display:flex;align-items:center;justify-content:center;position:relative;transition:color .2s}.btn-notification:hover{color:#2c3e50}.notification-badge{position:absolute;top:-2px;right:-4px;background:#e74c3c;color:#fff;font-size:.625rem;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 3px;line-height:1}.notification-dropdown{position:absolute;top:calc(100% + 8px);right:0;width:340px;background:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026;z-index:200;overflow:hidden}.notification-dropdown-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;border-bottom:1px solid #e9ecef}.notification-dropdown-title{font-weight:600;font-size:.9rem;color:#2c3e50}.btn-mark-all-read{background:transparent;border:none;color:#3498db;font-size:.75rem;cursor:pointer;padding:.25rem .5rem;border-radius:3px;transition:background .15s}.btn-mark-all-read:hover{background:#3498db1a}.notification-dropdown-body{max-height:380px;overflow-y:auto}.notification-loading,.notification-empty{padding:2rem 1rem;text-align:center;color:#adb5bd;font-size:.875rem}.notification-item{display:flex;align-items:flex-start;gap:.5rem;padding:.75rem 1rem;cursor:pointer;transition:background .15s;border-bottom:1px solid #f1f3f5}.notification-item:hover{background:#f8f9fa}.notification-item.unread{background:#f0f7ff}.notification-item.unread:hover{background:#e3f0fc}.notification-item-content{flex:1;display:flex;flex-direction:column;gap:.125rem;min-width:0}.notification-item-title{font-weight:600;font-size:.8125rem;color:#2c3e50}.notification-item-message{font-size:.75rem;color:#6c757d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notification-item-time{font-size:.6875rem;color:#adb5bd;margin-top:.125rem}.notification-unread-dot{width:8px;height:8px;border-radius:50%;background:#3498db;flex-shrink:0;margin-top:4px}@media(max-width:768px){.sidebar{width:0}.sidebar.open{width:200px}.main-content{margin-left:0}.sidebar.open+.main-content{margin-left:200px}.sidebar-header h2{display:none}.sidebar.open .sidebar-header h2{display:block}.nav-link{display:none}.sidebar.open .nav-link{display:block}}.student-layout{display:flex;min-height:100vh;background:#f5f5f5;margin:0;padding:0}.sidebar{width:200px;background:#2c3e50;color:#fff;transition:width .3s ease;display:flex;flex-direction:column;position:fixed;left:0;top:0;bottom:0;height:100vh;min-height:100vh;max-height:100vh;overflow-y:auto;z-index:102}.sidebar.closed{width:60px}.sidebar.closed .nav-link span:not(.notification-badge){display:none}.sidebar.closed .sidebar-header h2{display:none}.sidebar.closed .nav-link{justify-content:center;padding:.75rem .5rem}.sidebar-header{padding:1rem .75rem;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(255,255,255,.1);position:relative}.sidebar-header h2{margin:0;font-size:1.125rem;white-space:nowrap}.toggle-btn{background:transparent;border:none;color:#fff;font-size:1.25rem;cursor:pointer;padding:.25rem .5rem;flex-shrink:0;z-index:10;position:relative}.toggle-btn:hover{background:#ffffff1a;border-radius:4px}.toggle-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;font-size:.625rem;padding:.0625rem .25rem;margin-left:0}.sidebar.closed .sidebar-header{justify-content:center;padding:1rem .5rem}.sidebar.closed .toggle-btn{padding:.25rem .5rem}.sidebar.closed .toggle-badge{top:-4px;right:-4px}.sidebar-overlay{position:fixed;inset:0;background:#00000080;z-index:101;display:none}.sidebar-nav{padding:1rem 0;flex:1}.nav-link{display:flex;align-items:center;gap:.75rem;color:#fff;padding:.75rem 1rem;text-decoration:none;transition:background .2s;white-space:nowrap;font-size:.9375rem;position:relative}.nav-link i{font-size:1.125rem;min-width:20px;text-align:center}.nav-link:hover{background:#ffffff26}.nav-link.active{background:#fff3;border-left:3px solid #3498db}.notification-badge{background:#e74c3c;color:#fff;font-size:.6875rem;font-weight:600;padding:.125rem .375rem;border-radius:10px;min-width:18px;height:18px;display:flex;align-items:center;justify-content:center;margin-left:auto;margin-right:8px}.main-content{flex:1;display:flex;flex-direction:column;margin-left:200px;transition:margin-left .3s ease}.sidebar.closed+.main-content{margin-left:60px}.top-bar{background:transparent;padding:0;box-shadow:none;display:flex;justify-content:flex-end;align-items:center;position:relative;min-height:0}.user-info{display:flex;align-items:center;justify-content:flex-end;gap:1rem;position:fixed;top:0;left:0;right:0;background:#fff;padding:1rem 1.5rem;box-shadow:0 2px 4px #0000001a;z-index:101;max-width:100vw;box-sizing:border-box}.user-name{font-weight:500;color:#2c3e50}.btn-outline{background:transparent;color:#e74c3c;border:1px solid #e74c3c;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.875rem;transition:all .2s}.btn-outline:hover{background:#e74c3c;color:#fff}.content{padding:clamp(1rem,3vw,2.5rem);padding-top:calc(60px + clamp(1rem,3vw,2.5rem));flex:1;overflow-x:auto}.deactivated-banner{background:#fff3cd;color:#856404;border:1px solid #ffc107;border-radius:6px;padding:.75rem 1rem;margin-bottom:1rem;font-size:.875rem;font-weight:500}.sidebar::-webkit-scrollbar{width:6px}.sidebar::-webkit-scrollbar-track{background:#0000001a}.sidebar::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:3px}.sidebar::-webkit-scrollbar-thumb:hover{background:#ffffff80}@media(max-width:768px){.sidebar-overlay{display:block}.sidebar{width:0;z-index:102}.sidebar.closed{width:0}.sidebar.open{width:160px}.main-content{margin-left:0}.sidebar.open+.main-content{margin-left:160px}.sidebar.closed+.main-content{margin-left:0}.sidebar-header{padding:.75rem .5rem}.sidebar-header h2{display:none;font-size:.9375rem}.sidebar.open .sidebar-header h2{display:block}.toggle-btn{font-size:1rem;padding:.1875rem .375rem}.sidebar.closed .sidebar-header{position:fixed;left:0;top:0;width:auto;padding:1rem;background:transparent;border:none;z-index:103}.sidebar.closed .toggle-btn{background:#2c3e50;padding:.5rem .75rem;border-radius:4px;box-shadow:0 2px 8px #0003;font-size:1rem}.sidebar.closed .toggle-badge{top:-6px;right:-6px;min-width:16px;height:16px;font-size:.5625rem}.sidebar.closed .nav-link{display:none}.sidebar-nav{padding:.75rem 0}.nav-link{display:none;padding:.5rem .625rem;font-size:.8125rem;gap:.5rem}.nav-link i{font-size:.9375rem;min-width:18px}.sidebar.open .nav-link{display:flex}.notification-badge{font-size:.625rem;min-width:16px;height:16px;padding:.0625rem .25rem}.user-info{padding:.75rem 1rem;gap:.5rem}.user-name{font-size:.8125rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}.btn-outline{padding:.375rem .75rem;font-size:.8125rem;white-space:nowrap}.content{padding:.75rem;padding-top:calc(60px + .75rem);overflow-x:hidden;max-width:100vw;box-sizing:border-box}}.page-header h1{margin:0;color:#2c3e50;font-size:1.5rem;font-weight:600}.page-header p{margin:.5rem 0 0;color:#7f8c8d;font-size:.875rem}.admin-home h1{margin-bottom:2rem;color:#2c3e50}.alert-error{background:#fee;color:#c33;border:1px solid #fcc}.followups-section{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem}.followups-section h2{margin-top:0;margin-bottom:1rem;color:#2c3e50}.followups-list{display:grid;gap:1rem;max-height:400px;overflow-y:auto}.followup-card{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:#f8f9fa;border-radius:4px;border-left:4px solid #3498db;transition:all .2s}.followup-card.overdue{border-left-color:#e74c3c;background:#fee}.followup-card:hover{box-shadow:0 2px 4px #0000001a}.followup-content{flex:1}.followup-issue{margin:0 0 .5rem;color:#2c3e50;font-weight:500}.due-date{font-size:.875rem;color:#6c757d}.btn-done{background:transparent;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;transition:all .2s}.btn-done i{color:#27ae60;font-size:1rem}.btn-done.btn-icon{padding:.5rem;min-width:36px;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center}.btn-done:hover{background:#27ae601a}.btn-done:hover i{color:#229954}.bottom-section{display:grid;grid-template-columns:2fr 1fr;gap:clamp(1rem,3vw,2rem);width:100%}.attendance-section,.detentions-section{background:#fff;padding:clamp(1rem,2.5vw,1.5rem);border-radius:8px;box-shadow:0 2px 4px #0000001a;min-width:0}.attendance-section h2,.detentions-section h2{margin-top:0;margin-bottom:1rem;color:#2c3e50}.class-selector{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #e9ecef}.class-selector label{font-weight:500;color:#495057;font-size:.875rem}.class-dropdown{padding:.375rem .75rem;border:1px solid #ced4da;border-radius:4px;font-size:.8125rem;background:#fff;cursor:pointer;min-width:250px;transition:all .2s}.class-dropdown:hover{border-color:#3498db}.class-dropdown:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.attendance-content{max-height:500px;overflow-y:auto}.class-attendance{margin-bottom:1.5rem}.class-attendance:last-child{margin-bottom:0}.class-attendance h3{margin:0 0 .75rem;font-size:1rem;color:#495057}.class-attendance table,.detentions-section table{width:100%;border-collapse:collapse}.class-attendance table th,.class-attendance table td,.detentions-section table th,.detentions-section table td{padding:.75rem;text-align:left;border-bottom:1px solid #e9ecef}.class-attendance table th,.detentions-section table th{font-weight:600;color:#6c757d;font-size:.875rem;text-transform:uppercase}.class-attendance input[type=checkbox]{cursor:pointer}.detentions-section select{padding:.375rem .75rem;border:1px solid #ced4da;border-radius:4px;font-size:.8125rem;background:#fff;cursor:pointer;transition:all .2s}.detentions-section select:hover{border-color:#3498db}.detentions-section select:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.empty-state{text-align:center;padding:2rem;color:#6c757d;font-style:italic}@media(max-width:968px){.bottom-section{grid-template-columns:1fr}}.classroom-filter{padding:.5rem 1rem;border:1px solid #ddd;border-radius:6px;font-size:.875rem;background:#fff;cursor:pointer;min-width:200px}.classroom-filter:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.timetable-legend{margin-top:1.5rem;padding:1rem 1.5rem;background:#f8f9fa;border-radius:8px}.timetable-legend h3{margin:0 0 1rem;font-size:.95rem;color:#2c3e50;font-weight:600;text-transform:none}.legend-items{display:flex;flex-wrap:wrap;gap:1.5rem}.legend-color{width:20px;height:20px;border-radius:4px;box-shadow:0 1px 3px #0003}.data-table-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden}.data-table{width:100%;border-collapse:collapse}.data-table thead{background:#f8f9fa}.data-table th{padding:1rem;text-align:left;font-weight:600;color:#2c3e50;border-bottom:2px solid #e9ecef;white-space:nowrap}.data-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.data-table th.sortable:hover{background:#e9ecef}.sort-indicator{color:#3498db;font-size:.75rem}.data-table td{padding:1rem;border-bottom:1px solid #e9ecef;color:#495057;font-size:1rem}.data-table tbody tr{transition:background .2s}.data-table tbody tr:hover{background:#f8f9fa}.data-table tbody tr.clickable{cursor:pointer}.data-table tbody tr.clickable:hover{background:#e3f2fd}.actions{text-align:center;vertical-align:middle}.actions-group{display:flex;align-items:center;justify-content:center;gap:.25rem}.actions-header{text-align:center}.btn-action{padding:.5rem 1rem;border:none;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s;min-width:90px}.btn-icon{padding:.5rem;min-width:40px;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;font-size:1.125rem}.toggle-switch{position:relative;display:inline-block;width:50px;height:24px;cursor:pointer}.toggle-slider{position:absolute;inset:0;background-color:#ccc;transition:.3s;border-radius:24px}.toggle-slider:before{position:absolute;content:"";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;transition:.3s;border-radius:50%}.toggle-switch input:checked+.toggle-slider:before{transform:translate(26px)}.toggle-switch:hover .toggle-slider{box-shadow:0 0 4px #0000004d}.btn-edit{background:transparent!important;border:none}.btn-edit i{color:#3498db;font-size:1rem}.btn-edit:hover{background:#3498db1a!important;transform:translateY(-1px)}.btn-edit:hover i{color:#2980b9}.btn-delete{background:transparent;border:none}.btn-delete i{color:#e74c3c;font-size:1rem}.btn-delete:hover:not(:disabled){background:#e74c3c1a;transform:translateY(-1px)}.btn-delete:hover:not(:disabled) i{color:#c0392b}.btn-delete:disabled{cursor:not-allowed;opacity:.4}.btn-delete:disabled i{color:#95a5a6}.btn-action:active:not(:disabled){transform:translateY(0)}.table-loading,.table-empty{padding:3rem;text-align:center;color:#6c757d;background:#fff;border-radius:8px}.table-loading:before{content:"⏳ "}.table-empty:before{content:"📭 "}.modal-content{background:#fff;border-radius:8px;box-shadow:0 4px 6px #0000001a,0 10px 20px #00000026;max-height:90vh;display:flex;flex-direction:column;animation:modalSlideIn .2s ease-out}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.modal-content.small{width:400px;max-width:90vw}.modal-content.medium{width:600px;max-width:90vw}.modal-content.large{width:900px;max-width:90vw}.modal-header{padding:1rem 1.25rem;border-bottom:1px solid #e9ecef;display:flex;justify-content:space-between;align-items:center}.modal-header h2{margin:0;font-size:1.125rem;color:#2c3e50}.modal-close{background:none;border:none;font-size:2rem;line-height:1;color:#6c757d;cursor:pointer;padding:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}.modal-body{padding:.75rem 1.25rem;overflow-y:auto;flex:1}.modal-body>.form{margin:0;padding:0}.modal-body::-webkit-scrollbar{width:8px}.modal-body::-webkit-scrollbar-track{background:#f1f1f1}.modal-body::-webkit-scrollbar-thumb{background:#888;border-radius:4px}.modal-body::-webkit-scrollbar-thumb:hover{background:#555}.admin-page{width:100%;max-width:1600px;min-width:320px;margin:0 auto}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:clamp(1rem,3vw,2rem);flex-wrap:wrap;gap:1rem}.filters-section,.term-selector-section,.controls-section{width:100%;max-width:100%}[class*=-container],[class*=-section]{max-width:100%}.filters{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.filters input,.filters select{min-width:200px}.link{color:#3498db;text-decoration:none;font-weight:500}.link:hover{text-decoration:underline}.badge{padding:.25rem .75rem;border-radius:12px;font-size:.75rem;font-weight:600;text-transform:uppercase}.form{display:flex;flex-direction:column;gap:.625rem}.form-group{display:flex;flex-direction:column}.form-group label{margin-bottom:.25rem;font-weight:500;color:#2c3e50;font-size:.875rem}.form-group input,.form-group select,.form-group textarea{padding:.375rem .5rem;border:1px solid #ced4da;border-radius:4px;font-size:.875rem}.form-group textarea{resize:vertical}.form-group .checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-weight:400}.form-group .checkbox-label input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:#3498db}.form-hint{font-size:.8rem;color:#6c757d;margin:0}.form-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:.75rem}.data-table th:has(+td),.data-table td{min-width:fit-content}.data-table th:nth-child(5),.data-table td:nth-child(5){min-width:180px;width:180px}@media(max-width:1200px){.admin-page{padding:0 clamp(.5rem,2vw,1rem)}}@media(max-width:768px){.admin-page{min-width:320px}.page-header{flex-direction:column;align-items:flex-start}.filters-section,.term-selector-section,.controls-section{padding:clamp(.75rem,2vw,1rem)}.data-table th:nth-child(5),.data-table td:nth-child(5){min-width:140px;width:140px}}.student-list-page{width:100%}@media(max-width:768px){.student-list-page{padding:1rem}.filters-section{grid-template-columns:1fr}}.search-select{position:relative;width:100%}.search-select-trigger{display:flex;justify-content:space-between;align-items:center;padding:.375rem .5rem;border:1px solid #ced4da;border-radius:4px;background:#fff;cursor:pointer;font-size:.875rem;min-height:32px;transition:border-color .2s}.search-select-trigger:hover{border-color:#3498db}.search-select-trigger.open{border-color:#3498db;box-shadow:0 0 0 2px #3498db1a}.search-select-trigger .placeholder{color:#6c757d}.search-select-trigger .has-value{color:#2c3e50}.search-select-icons{display:flex;align-items:center;gap:.25rem}.search-select-icons .arrow{font-size:.625rem;color:#6c757d}.search-select-icons .clear-btn{background:none;border:none;color:#6c757d;cursor:pointer;font-size:1rem;line-height:1;padding:0 .25rem}.search-select-icons .clear-btn:hover{color:#e74c3c}.search-select-dropdown{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #ced4da;border-radius:4px;box-shadow:0 4px 12px #00000026;z-index:1000;margin-top:2px}.search-select-dropdown .search-input{width:100%;padding:.5rem;border:none;border-bottom:1px solid #eee;font-size:.875rem;outline:none;box-sizing:border-box}.search-select-dropdown .search-input:focus{outline:none}.options-list{max-height:200px;overflow-y:auto}.options-list .option{padding:.5rem;cursor:pointer;font-size:.875rem;transition:background .15s}.options-list .option:hover{background:#f0f7ff}.options-list .option.selected{background:#e3f2fd;color:#1976d2;font-weight:500}.options-list .no-options{padding:.75rem;color:#6c757d;font-size:.875rem;text-align:center}.class-list-page{width:100%}.term-selector-section{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem}.filters-section{background:#fff;padding:1rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.75rem;align-items:center}.filter-group{display:flex}.filter-group select,.filter-group input{width:100%;padding:.375rem .75rem;border:1px solid #ced4da;border-radius:4px;font-size:.8125rem;background:#fff;transition:all .2s}.filter-group input::placeholder{color:#adb5bd}.filter-group select:hover,.filter-group input:hover{border-color:#3498db}.filter-actions{display:flex;align-items:center}.btn-clear{padding:.375rem .75rem;background:#6c757d;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.8125rem;font-weight:500;transition:all .2s;white-space:nowrap}.btn-clear:hover{background:#5a6268}.schedule-section{margin-top:1rem;padding-top:1rem;border-top:1px solid #eee}.schedule-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.schedule-header label{font-weight:500;color:#2c3e50}.schedule-row{display:grid;grid-template-columns:1fr 1fr .8fr auto;gap:.5rem;align-items:end;margin-bottom:.5rem;padding:.5rem;background:#f8f9fa;border-radius:4px}.schedule-row .form-group{margin-bottom:0}.schedule-row .form-group label{font-size:.75rem;color:#6c757d;margin-bottom:.25rem}.btn-add-slot{background:#27ae60;color:#fff;border:none;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:500;cursor:pointer;transition:all .2s}.btn-add-slot:hover{background:#229954}.btn-remove-slot{background:#e74c3c;color:#fff;border:none;width:28px;height:28px;border-radius:4px;font-size:1rem;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}.btn-remove-slot:hover{background:#c0392b}.alert{padding:.5rem .75rem;border-radius:4px;margin-bottom:1rem;font-size:.875rem}.btn-add-students{background:none;border:none;color:#27ae60;cursor:pointer;padding:.25rem;font-size:1.1rem;display:flex;align-items:center;justify-content:center;transition:color .2s}.btn-add-students:hover{color:#1e8449}.students-section{margin-top:1rem;padding-top:1rem;border-top:1px solid #eee}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.section-header label{font-weight:500;color:#2c3e50}.selected-students-list{display:flex;flex-wrap:wrap;gap:.5rem;max-height:120px;overflow-y:auto;padding:.5rem;background:#f8f9fa;border-radius:4px}.selected-student-chip{display:flex;align-items:center;gap:.25rem;background:#e3f2fd;color:#1976d2;padding:.25rem .5rem;border-radius:16px;font-size:.8rem}.selected-student-chip.year-mismatch{background:#fff3e0;color:#e65100}.selected-student-chip .warning-icon{font-size:.75rem}.chip-remove{background:none;border:none;color:inherit;cursor:pointer;font-size:1rem;line-height:1;padding:0 .25rem;opacity:.7}.chip-remove:hover{opacity:1}.student-modal-content{display:flex;flex-direction:column;gap:1rem}.modal-selected-students{display:flex;flex-direction:column;gap:.375rem}.modal-selected-students>label{font-size:.8125rem;font-weight:600;color:#2c3e50}.modal-selected-chips{display:flex;flex-wrap:wrap;gap:.375rem;max-height:120px;overflow-y:auto;padding:.5rem;background:#f8f9fa;border-radius:4px;border:1px solid #eee}.student-filters{display:flex;gap:.5rem}.student-filters input,.student-filters select{padding:.5rem;border:1px solid #ced4da;border-radius:4px;font-size:.875rem}.student-filters input{flex:1}.student-filters select{min-width:120px}.student-list{max-height:300px;overflow-y:auto;border:1px solid #eee;border-radius:4px}.student-item{display:flex;align-items:center;gap:.75rem;padding:.625rem .75rem;cursor:pointer;border-bottom:1px solid #f0f0f0;transition:background .15s}.student-item:last-child{border-bottom:none}.student-item:hover{background:#f8f9fa}.student-item.selected{background:#e3f2fd}.student-item.year-mismatch.selected{background:#fff3e0}.student-item input[type=checkbox]{width:18px;height:18px;cursor:pointer}.student-info{flex:1;display:flex;flex-direction:column}.student-name{font-weight:500;color:#2c3e50;font-size:.875rem}.student-year{font-size:.75rem;color:#6c757d}.year-warning{font-size:.75rem;color:#e65100;white-space:nowrap}.student-modal-footer{display:flex;justify-content:space-between;align-items:center;padding-top:.75rem;border-top:1px solid #eee}.selection-count{font-size:.875rem;color:#6c757d}.modal-actions{display:flex;gap:.5rem}.empty-state{padding:2rem;text-align:center;color:#6c757d}@media(max-width:768px){.class-list-page{padding:1rem}.schedule-row{grid-template-columns:1fr 1fr;gap:.5rem}.btn-remove-slot{grid-column:span 2;width:100%;justify-content:center}.term-selector-group{flex-direction:column;align-items:flex-start}.term-selector-group label{min-width:auto}.term-dropdown{width:100%;min-width:auto}.filters-section{grid-template-columns:1fr}}.progress-list-page{width:100%}.term-selector-section{background:#fff;padding:clamp(1rem,2.5vw,1.5rem);border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:clamp(1rem,3vw,2rem);width:100%;max-width:100%}.term-selector-group{display:flex;align-items:center;gap:1rem}.term-selector-group label{font-weight:600;color:#2c3e50;font-size:1rem;min-width:120px}.term-dropdown{padding:.5rem 1rem;border:1px solid #ced4da;border-radius:4px;font-size:.875rem;background:#fff;cursor:pointer;min-width:300px;transition:all .2s;font-weight:500;color:#2c3e50}.progress-table-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow-x:auto}.table-loading{padding:3rem;text-align:center}.progress-table{width:100%;border-collapse:collapse}.progress-table thead{background:#f8f9fa;border-bottom:2px solid #dee2e6}.progress-table th{padding:1rem;text-align:left;font-weight:600;color:#2c3e50;font-size:.875rem;text-transform:uppercase;letter-spacing:.5px}.progress-table .actions-column{text-align:left;width:200px}.progress-row{transition:background .2s;border-bottom:1px solid #e9ecef}.progress-row:hover{background:#f8f9fa}.progress-table td{padding:1rem;color:#495057;font-size:1rem}.actions-cell{text-align:left;display:flex;gap:.5rem;justify-content:flex-start;align-items:center}.progress-table .btn-view{padding:.375rem .75rem;background:transparent!important;color:#3498db;border:none;border-radius:4px;cursor:pointer;font-size:.75rem;font-weight:500;transition:all .2s}.progress-table .btn-view.btn-icon{padding:.375rem!important;min-width:32px;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;font-size:.875rem;background:transparent!important}.progress-table .btn-view i{color:#3498db}.progress-table .btn-view:hover{background:#3498db1a!important}.progress-table .btn-view:hover i{color:#2980b9}.btn-delete{padding:.375rem .75rem;background:transparent;border:none;border-radius:4px;cursor:pointer;font-size:.8125rem;font-weight:500;transition:all .2s}.btn-delete i{color:#e74c3c;font-size:.875rem}.btn-delete.btn-icon{padding:.375rem;min-width:32px;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;font-size:1rem}.btn-delete:hover{background:#e74c3c1a}.btn-delete:hover i{color:#c0392b}.weekly-content{padding:1.5rem}.weekly-content h4{margin:0 0 1rem;color:#2c3e50;font-size:1rem;text-transform:uppercase;letter-spacing:.5px}.weekly-content-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #dee2e6}.weekly-content-table thead{background:#e9ecef}.weekly-content-table th{padding:.75rem 1rem;text-align:left;font-weight:600;color:#2c3e50;font-size:.875rem;border-bottom:2px solid #dee2e6;border-right:1px solid #dee2e6}.weekly-content-table th:last-child{border-right:none}.weekly-content-table tbody tr{border-bottom:1px solid #e9ecef}.weekly-content-table tbody tr:last-child{border-bottom:none}.weekly-content-table td{padding:.75rem 1rem;vertical-align:top;color:#495057;font-size:.875rem;border-right:1px solid #e9ecef}.weekly-content-table td:last-child{border-right:none}.week-number{font-weight:600;color:#2c3e50;white-space:nowrap;width:100px}.topics-cell{min-width:250px}.topic-item{padding:.5rem;background:#f8f9fa;border-left:3px solid #3498db;border-radius:3px;font-size:.875rem;color:#495057}.test-cell{min-width:150px}.comments-cell{min-width:200px}.no-data{color:#adb5bd;font-style:italic;font-size:.875rem}.week-actions-col{width:40px;text-align:center}.week-actions-cell{text-align:center;width:40px}.btn-edit-week{padding:.375rem;background:transparent;border:none;cursor:pointer;color:#6c757d;font-size:.8125rem;border-radius:4px;transition:all .15s;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center}.btn-edit-week:hover{background:#3498db1a;color:#3498db}.modal-close{background:transparent;border:none;font-size:1.5rem;cursor:pointer;color:#6c757d;padding:0 .25rem;line-height:1}.edit-week-modal{background:#fff;border-radius:8px;width:90%;max-width:750px;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #0003}.edit-week-modal .modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid #dee2e6}.edit-week-modal .modal-header h2{margin:0;font-size:1.125rem;color:#2c3e50}.edit-week-modal .modal-body{padding:1.25rem;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:1.25rem}.edit-week-modal .modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.25rem;border-top:1px solid #dee2e6;flex-wrap:wrap}.edit-field{display:flex;flex-direction:column;gap:.5rem}.edit-field-label{font-weight:600;font-size:.875rem;color:#2c3e50}.edit-field-input{padding:.5rem .75rem;border:1px solid #ced4da;border-radius:4px;font-size:.875rem;transition:border-color .15s}.edit-field-input:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 2px #3498db26}.edit-field-textarea{padding:.5rem .75rem;border:1px solid #ced4da;border-radius:4px;font-size:.875rem;font-family:inherit;resize:vertical;transition:border-color .15s}.edit-field-textarea:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 2px #3498db26}.selected-topics-list{display:flex;flex-direction:column;gap:.375rem}.no-topics-selected{color:#adb5bd;font-style:italic;margin:0;font-size:.875rem}.selected-topic-item{display:flex;align-items:center;gap:.5rem;padding:.375rem .5rem;background:#e8f4fd;border-radius:4px;font-size:.8125rem}.selected-topic-item .topic-name{flex:1;font-weight:500;color:#2c3e50}.topic-meta{color:#6c757d;font-size:.75rem}.remove-topic-btn{background:transparent;border:none;cursor:pointer;color:#e74c3c;font-size:1rem;padding:0 .25rem;line-height:1}.remove-topic-btn:hover{color:#c0392b}.topics-tree{border:1px solid #e9ecef;border-radius:4px;max-height:250px;overflow-y:auto}.folder-level{border-bottom:1px solid #f1f3f5}.folder-level:last-child{border-bottom:none}.folder-header{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;cursor:pointer;font-weight:500;color:#2c3e50;font-size:.875rem;transition:background .15s}.folder-header i{font-size:.75rem;color:#6c757d}.folder-header i.fa-folder{color:#f39c12}.folder-children{padding-left:1.25rem}.topic-tree-item{display:flex;align-items:center;gap:.5rem;padding:.375rem .75rem;cursor:pointer;font-size:.8125rem;color:#495057;transition:background .15s}.topic-tree-item:hover{background:#e8f4fd}.topic-tree-item.selected{background:#d1ecf1;font-weight:500}.topic-tree-item i{color:#6c757d;font-size:.75rem}.sync-loading{padding:1.5rem;text-align:center}.sync-no-classes-inline{color:#adb5bd;font-style:italic;margin:0;font-size:.875rem}.sync-description{margin:0;color:#495057;font-size:.85rem}.sync-select-all{padding:.5rem 0;border-bottom:1px solid #e9ecef}.sync-checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-weight:600;font-size:.875rem;color:#2c3e50}.sync-class-list{display:flex;flex-direction:column;gap:.25rem;max-height:200px;overflow-y:auto}.sync-class-item{display:flex;align-items:center;gap:.75rem;padding:.5rem;border-radius:4px;cursor:pointer;transition:background .15s}.sync-class-item:hover{background:#f8f9fa}.sync-class-info{display:flex;flex-direction:column;gap:.125rem}.sync-class-name{font-weight:500;color:#2c3e50;font-size:.875rem}.sync-class-teacher{color:#6c757d;font-size:.75rem}.sync-all-modal{background:#fff;border-radius:8px;width:90%;max-width:550px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #0003}.sync-all-modal .modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid #dee2e6}.sync-all-modal .modal-header h2{margin:0;font-size:1.125rem;color:#2c3e50}.sync-all-modal .modal-body{padding:1.25rem;overflow-y:auto;flex:1}.sync-all-modal .modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.25rem;border-top:1px solid #dee2e6}.sync-all-empty{text-align:center;color:#666;padding:1rem 0}.sync-all-empty p{margin:0}.weekly-content-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.weekly-content-header h4{margin:0}.btn-sync-all{padding:.375rem .75rem;background:#27ae60;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.8125rem;font-weight:500;display:inline-flex;align-items:center;gap:.375rem;transition:background .2s}.btn-sync-all:hover{background:#219a52}.btn-cancel{padding:.5rem 1rem;background:#6c757d;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.875rem;transition:background .2s}.btn-cancel:disabled{opacity:.6;cursor:not-allowed}.btn-save{padding:.5rem 1rem;background:#3498db;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.875rem;font-weight:500;transition:background .2s}.btn-save:hover{background:#2980b9}.btn-save:disabled{opacity:.6;cursor:not-allowed}.btn-template-only{padding:.5rem 1rem;background:#f8f9fa;color:#495057;border:1px solid #ced4da;border-radius:4px;cursor:pointer;font-size:.875rem;transition:all .2s}.btn-template-only:hover{background:#e9ecef;border-color:#adb5bd}.btn-template-only:disabled{opacity:.6;cursor:not-allowed}@media(max-width:768px){.progress-list-page{padding:1rem}.term-selector-group{flex-direction:column;align-items:flex-start}.term-selector-group label{min-width:auto}.term-dropdown{width:100%;min-width:auto}.edit-week-modal{width:95%;max-height:90vh}.folder-children{padding-left:.75rem}.edit-week-modal .modal-footer{flex-direction:column}.edit-week-modal .modal-footer button{width:100%}}.topic-list-page{width:100%}.folder-structure{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:clamp(1rem,2.5vw,1.5rem);width:100%;max-width:100%}.folder-header{display:flex;align-items:center;padding:.75rem 1rem;cursor:pointer;border-radius:6px;transition:background .2s;-webkit-user-select:none;user-select:none}.folder-header:hover{background:#f8f9fa}.year-level>.folder-header{font-weight:600;color:#2c3e50;font-size:1rem;background:#f8f9fa;border:1px solid #e9ecef}.year-level>.folder-header:hover{background:#e9ecef}.term-level>.folder-header{font-weight:500;color:#495057;font-size:.9375rem;margin-left:2rem}.folder-icon{font-size:1.25rem;margin-right:.75rem}.folder-name{flex:1}.folder-count{color:#6c757d;font-size:.875rem;font-weight:400}.folder-content{margin-left:1rem;margin-top:.5rem}.term-level .folder-content{margin-left:3rem}.topics-list{display:flex;flex-direction:column;gap:.5rem}.topic-item{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;background:#fff;border:1px solid #e9ecef;border-radius:6px;transition:all .2s}.topic-item:hover{background:#f8f9fa;border-color:#dee2e6;transform:translate(4px)}.topic-info{display:flex;align-items:center;gap:.75rem;flex:1}.topic-icon{font-size:1rem}.topic-week{font-weight:600;color:#3498db;font-size:.875rem;min-width:35px}.topic-name{color:#495057;font-size:.875rem}.topic-actions{display:flex;gap:.5rem}.btn-edit-small,.btn-delete-small{padding:.375rem .75rem;border:none;border-radius:4px;cursor:pointer;font-size:.8125rem;font-weight:500;transition:all .2s}.btn-edit-small.btn-icon,.btn-delete-small.btn-icon{padding:.375rem;min-width:32px;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;font-size:1rem}.btn-edit-small{background:transparent!important;border:none}.btn-edit-small i{color:#3498db;font-size:.875rem}.btn-edit-small:hover{background:#3498db1a!important}.btn-edit-small:hover i{color:#2980b9}.btn-delete-small{background:transparent;border:none}.btn-delete-small i{color:#e74c3c;font-size:.875rem}.btn-delete-small:hover{background:#e74c3c1a}.btn-delete-small:hover i{color:#c0392b}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#2c3e50;font-size:.875rem}.form-group select,.form-group input{width:100%;padding:.5rem .75rem;border:1px solid #ced4da;border-radius:4px;font-size:.875rem;background:#fff;transition:all .2s}.form-group select{cursor:pointer}.form-group select:hover,.form-group input:hover{border-color:#3498db}.form-group select:focus,.form-group input:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.form-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1.5rem}@media(max-width:768px){.topic-list-page,.folder-structure{padding:1rem}.term-level>.folder-header{margin-left:1rem}.term-level .folder-content{margin-left:2rem}.topic-item{flex-direction:column;align-items:flex-start;gap:.75rem}.topic-actions{width:100%;justify-content:flex-end}}.detention-slots-page{width:100%}.instructions-banner{background:#e3f2fd;border-left:4px solid #2196f3;padding:clamp(.75rem,2vw,1rem) clamp(1rem,2.5vw,1.5rem);margin-bottom:clamp(1rem,2.5vw,1.5rem);border-radius:6px;color:#1565c0;font-size:.9rem;width:100%;max-width:100%}.instructions-banner strong{color:#0d47a1}.batch-controls{background:#fff;padding:clamp(.75rem,2vw,1rem);border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:clamp(1rem,2.5vw,1.5rem);width:100%;max-width:100%}.batch-control-group h3{margin:0 0 1rem;font-size:.95rem;color:#2c3e50;font-weight:600}.batch-buttons{display:flex;gap:.75rem;flex-wrap:wrap}.batch-btn{padding:.375rem .75rem;background:#3498db;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.8125rem;font-weight:500;transition:all .2s}.batch-btn:hover:not(:disabled){background:#2980b9;transform:translateY(-1px);box-shadow:0 2px 4px #3498db4d}.batch-btn:disabled{opacity:.6;cursor:not-allowed}.controls-section{display:flex;justify-content:flex-start;align-items:center;margin-bottom:2rem;padding:1rem;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;flex-wrap:wrap;gap:.75rem}.term-navigation{display:flex;align-items:center;gap:.75rem}.nav-btn{padding:.375rem .5rem;border:none;background:transparent;color:#3498db;cursor:pointer;transition:all .2s;font-size:1.125rem;font-weight:500;min-width:36px;flex-shrink:0}.nav-btn:hover:not(:disabled){color:#2980b9;transform:scale(1.1)}.nav-btn:disabled{opacity:.3;cursor:not-allowed;color:#ccc}.term-selector{min-width:200px;flex-shrink:0}.term-dropdown{width:100%;padding:.375rem .75rem;border:1px solid #ced4da;border-radius:4px;font-size:.8125rem;background:#fff;cursor:pointer;transition:all .2s}.term-dropdown:hover{border-color:#3498db}.term-dropdown:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.classroom-dropdown{min-width:250px;padding:.375rem .75rem;border:1px solid #ced4da;border-radius:4px;font-size:.8125rem;background:#fff;cursor:pointer;transition:all .2s}.classroom-dropdown:hover{border-color:#3498db}.classroom-dropdown:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.slots-grid-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow-x:auto;margin-bottom:2rem}.slots-grid{width:100%;border-collapse:collapse;min-width:800px}.slots-grid thead{background:#f8f9fa;border-bottom:2px solid #dee2e6}.week-header,.day-header{padding:1rem;text-align:center;font-weight:600;color:#2c3e50;border-right:1px solid #dee2e6;position:relative}.week-header{width:100px;background:#e9ecef}.day-header{min-width:150px}.day-header.clickable{cursor:pointer;transition:background .2s;-webkit-user-select:none;user-select:none}.day-header.clickable:hover{background:#e3f2fd}.week-cell{padding:1rem;text-align:center;font-weight:600;color:#495057;background:#e9ecef;border-right:1px solid #dee2e6;border-bottom:3px solid #adb5bd;vertical-align:top;position:relative}.week-cell.clickable{cursor:pointer;transition:background .2s;-webkit-user-select:none;user-select:none}.week-cell.clickable:hover{background:#d6dce1}.day-cell{padding:.5rem;border-right:1px solid #dee2e6;border-bottom:3px solid #adb5bd;vertical-align:top;background:#fafbfc}.slot{padding:.75rem;margin-bottom:.5rem;border-radius:6px;cursor:pointer;transition:all .15s ease;border:2px solid transparent;text-align:center;-webkit-user-select:none;user-select:none;position:relative;min-height:50px;display:flex;flex-direction:column;justify-content:center;align-items:center}.slot:last-child{margin-bottom:0}.slot:active{transform:scale(.98)}.slot.saving{pointer-events:none;opacity:.7}.slot.dragging{outline:2px solid #3498db;outline-offset:-2px;background:linear-gradient(135deg,currentColor 0%,currentColor 100%),linear-gradient(to bottom,#3498db26,#3498db26);background-blend-mode:normal,overlay;z-index:10;position:relative}.slot.dragging:before{content:"";position:absolute;inset:0;background:#3498db33;pointer-events:none;border-radius:6px}.slot.disabled{background:#f8f9fa;color:#6c757d;border-color:#dee2e6}.slot.disabled:hover{background:#e9ecef;border-color:#3498db;transform:translateY(-2px);box-shadow:0 2px 8px #3498db26}.slot.enabled{border-color:#27ae60}.slot.enabled.available{background:#d4edda;color:#155724;border-color:#27ae60}.slot.enabled.available:hover{background:#c3e6cb;transform:translateY(-2px);box-shadow:0 2px 8px #27ae6040}.slot.enabled.partially-booked{background:#fff3cd;color:#856404;border-color:#f39c12}.slot.enabled.partially-booked:hover{background:#ffe8a1;transform:translateY(-2px);box-shadow:0 2px 8px #f39c1240}.slot.enabled.fully-booked{background:#f8d7da;color:#721c24;border-color:#e74c3c}.slot.enabled.fully-booked:hover{background:#f5c6cb;transform:translateY(-2px);box-shadow:0 2px 8px #e74c3c40}.slot.has-bookings.disabled{cursor:not-allowed;opacity:.7}.slot.has-bookings{cursor:not-allowed}.slot-time{font-size:.8rem;font-weight:500;margin-bottom:.25rem;pointer-events:none}.slot-booked{font-size:.75rem;font-weight:600;margin-top:.25rem}.legend{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem}.legend h3{margin:0 0 1rem;color:#2c3e50;font-size:1rem}.legend-items{display:flex;gap:2rem;flex-wrap:wrap;margin-bottom:1rem}.legend-item{display:flex;align-items:center;gap:.5rem}.legend-box{width:60px;height:30px;border-radius:4px;border:2px solid transparent}.legend-box.disabled{background:#f8f9fa;border-color:#dee2e6}.legend-box.enabled.available{background:#d4edda;border-color:#27ae60}.legend-box.enabled.partially-booked{background:#fff3cd;border-color:#f39c12}.legend-box.enabled.fully-booked{background:#f8d7da;border-color:#e74c3c}.legend-note{margin:0;color:#6c757d;font-size:.875rem;font-style:italic}.saving-indicator{position:fixed;bottom:2rem;right:2rem;background:#3498db;color:#fff;padding:.75rem 1.5rem;border-radius:6px;box-shadow:0 4px 6px #0000001a;font-weight:500;animation:fadeInOut .3s ease}@keyframes fadeInOut{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media(max-width:968px){.controls-section{flex-direction:column;align-items:stretch}.term-navigation{width:100%}.term-selector{width:100%;flex:1}.classroom-dropdown{width:100%}.legend-items{flex-direction:column;gap:.75rem}}.dm-tabs{display:flex;gap:0;margin-bottom:1.5rem;border-bottom:2px solid #e9ecef}.dm-tab{padding:.75rem 1.5rem;background:transparent;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;font-size:.9375rem;font-weight:500;color:#6c757d;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:.5rem}.dm-tab:hover{color:#2c3e50;border-bottom-color:#dee2e6}.dm-tab.active{color:#3498db;border-bottom-color:#3498db;font-weight:600}.dm-tab-badge{background:#e74c3c;color:#fff;font-size:.75rem;font-weight:600;padding:.125rem .5rem;border-radius:10px;min-width:20px;text-align:center}.dm-tab-badge.booked{background:#3498db}.dm-tab-badge.completed{background:#27ae60}.btn-book-small{padding:.375rem .75rem;background:#3498db;color:#fff;border:none;border-radius:4px;font-size:.8125rem;font-weight:600;cursor:pointer;transition:background .2s}.btn-book-small:hover{background:#2980b9}.btn-cancel-small{padding:.375rem .5rem;background:transparent;color:#e74c3c;border:1px solid #e74c3c;border-radius:4px;font-size:.75rem;cursor:pointer;transition:all .2s}.btn-cancel-small:hover{background:#e74c3c;color:#fff}.status-select{padding:.375rem .5rem;border:1px solid #ced4da;border-radius:4px;font-size:.8125rem;background:#fff;cursor:pointer;min-width:120px}.status-select:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 2px #3498db26}.modal-content{background:#fff;border-radius:8px;box-shadow:0 4px 20px #0000004d;max-height:90vh;display:flex;flex-direction:column}.modal-header h3{margin:0;color:#000;font-size:1.25rem}.modal-close{background:transparent;border:none;color:#7f8c8d;font-size:1.5rem;cursor:pointer;padding:.25rem .5rem}.term-dropdown,.classroom-dropdown{width:100%;padding:.5rem .75rem;border:1px solid #ced4da;border-radius:6px;font-size:.875rem;background:#fff;cursor:pointer}.month-nav-btn{background:#f8f9fa;border:1px solid #dee2e6;border-radius:6px;padding:.5rem .75rem;cursor:pointer;color:#3498db;font-size:1rem;transition:all .2s}.calendar-day{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:8px;font-size:.9375rem;font-weight:500;cursor:default;background:#f8f9fa;color:#6c757d;border:2px solid transparent;transition:all .2s;position:relative;gap:2px}.available-slots h4{margin:0 0 1rem;font-size:1.125rem;color:#2c3e50;font-weight:600}.select-date-prompt i{font-size:3rem;display:block;margin-bottom:1rem;color:#bdc3c7}.btn-cancel:hover{background:#f8f9fa}.followup-list-page{width:100%}.filter-tabs{display:flex;gap:1rem;margin-bottom:2rem;border-bottom:2px solid #e0e0e0}.filter-tabs button{padding:.75rem 1.5rem;background:none;border:none;border-bottom:3px solid transparent;cursor:pointer;font-size:1rem;font-weight:500;color:#666;transition:all .2s}.filter-tabs button:hover{color:#333}.filter-tabs button.active{color:#3498db;border-bottom-color:#3498db}.followups-table-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow-x:auto}.followups-table{width:100%;border-collapse:collapse}.followups-table thead{background:#f8f9fa;border-bottom:2px solid #dee2e6}.followups-table th{padding:1rem;text-align:left;font-weight:600;color:#2c3e50;font-size:.875rem;text-transform:uppercase;letter-spacing:.5px}.followups-table tbody tr{border-bottom:1px solid #e9ecef;transition:background .2s}.followups-table tbody tr:hover{background:#f8f9fa}.followups-table tbody tr.overdue{background:#fff5f5;border-left:4px solid #e74c3c}.followups-table tbody tr.completed{background:#f0f9f4;opacity:.85;border-left:4px solid #27ae60}.followups-table td{padding:1rem;color:#495057;vertical-align:top;font-size:1rem}.issue-cell{width:30%}.issue-cell strong{color:#2c3e50;font-size:.95rem}.solution-cell{width:30%;font-size:.875rem}.no-solution{color:#adb5bd}.date-cell{width:15%}.due-date{font-weight:500;font-size:.875rem;display:flex;flex-direction:column;gap:.25rem}.due-date.overdue{color:#e74c3c;font-weight:600}.overdue-badge{display:inline-block;background:#e74c3c;color:#fff;padding:.125rem .5rem;border-radius:12px;font-size:.7rem;font-weight:600;text-transform:uppercase}.status-cell{width:15%}.status-completed{display:flex;flex-direction:column;gap:.25rem}.completed-date{color:#27ae60;font-size:.75rem}.actions-cell{width:120px;white-space:nowrap}.followup-actions{display:flex;gap:.75rem;align-items:center}.icon-btn{background:transparent!important;border:none;cursor:pointer;font-size:1.25rem;padding:.25rem;transition:all .2s;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px}.icon-btn:hover{transform:scale(1.2);background:#3498db1a!important}.icon-btn-done i{color:#27ae60}.icon-btn-done:hover{background:#27ae601a!important}.icon-btn-done:hover i{color:#229954}.icon-btn-revert i{color:#e67e22}.icon-btn-revert:hover{background:#e67e221a!important}.icon-btn-revert:hover i{color:#d35400}.icon-btn-edit i{color:#3498db}.icon-btn-edit:hover{background:#3498db1a!important}.icon-btn-edit:hover i{color:#2980b9}.icon-btn-delete i{color:#e74c3c}.icon-btn-delete:hover i{color:#c0392b}.modal-content{background:#fff;border-radius:8px;width:90%;max-width:600px;max-height:90vh;overflow-y:auto;box-shadow:0 8px 16px #0003}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #e0e0e0}.modal-header h2{margin:0;font-size:1.5rem;color:#2c3e50}.close-btn{background:none;border:none;font-size:2rem;color:#666;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}.close-btn:hover{background:#f0f0f0;color:#333}.modal-content form{padding:1.5rem}.form-group input,.form-group textarea{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;font-family:inherit}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.modal-actions{display:flex;justify-content:flex-end;gap:1rem;padding-top:1rem;border-top:1px solid #e0e0e0}.btn-sm{padding:.4rem .8rem;font-size:.875rem}.btn-success{background:#27ae60;color:#fff;border:none;border-radius:4px;cursor:pointer;font-weight:500;transition:all .2s}@media(max-width:768px){.followup-list-page{padding:1rem}.followups-table-container{overflow-x:scroll}.followups-table{min-width:800px}.actions-cell{width:auto}.modal-content{width:95%}}.absence-summary-page{width:100%}.header-actions{display:flex;gap:1rem}.stats-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;margin-bottom:2rem}.stat-card{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.stat-card h3{margin:0 0 1rem;font-size:.9rem;color:#666;text-transform:uppercase;letter-spacing:.5px}.stat-value{font-size:2.5rem;font-weight:700;color:#e74c3c}.stat-list{display:flex;flex-direction:column;gap:.5rem}.stat-item{display:flex;justify-content:space-between;padding:.5rem;background:#f8f9fa;border-radius:4px}.stat-name{font-weight:500;color:#2c3e50}.stat-count{font-weight:600;color:#e74c3c}.absences-table-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow-x:auto}.absences-table{width:100%;border-collapse:collapse}.absences-table thead{background:#f8f9fa;border-bottom:2px solid #dee2e6}.absences-table th{padding:1rem;text-align:left;font-weight:600;color:#2c3e50;font-size:.875rem;text-transform:uppercase;letter-spacing:.5px}.absences-table th:first-child{text-align:left}.absences-table td{padding:1rem;border-bottom:1px solid #e9ecef;color:#495057}.absences-table td:first-child{text-align:left}.absences-table tbody tr:hover{background:#f8f9fa}.latest-absence-details{font-size:.75rem;color:#666;margin-top:.25rem}.btn-primary{padding:.5rem 1rem;background:#3498db;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.8125rem;font-weight:500;transition:all .2s}.btn-primary:disabled{opacity:.5;cursor:not-allowed}@media(max-width:768px){.absence-summary-page{padding:1rem}.page-header{flex-direction:column;align-items:flex-start;gap:1rem}.stats-summary,.filters-section{grid-template-columns:1fr}.absences-table-container{overflow-x:scroll}.absences-table{min-width:700px}}.badge-muted{background:#e9ecef;color:#6c757d}.btn-send-notes-small{padding:.35rem .75rem;background:#3498db;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.75rem;font-weight:600;transition:all .2s;white-space:nowrap}.btn-send-notes-small:hover{background:#2980b9}.send-notes-modal{background:#fff;border-radius:12px;max-width:700px;width:95%;max-height:80vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 8px 32px #0003}.modal-header-bar{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;background:#f8f9fa;border-bottom:1px solid #e9ecef}.modal-header-bar h2{margin:0;font-size:1.1rem;color:#2c3e50}.modal-close-btn{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#6c757d;padding:0;line-height:1}.modal-close-btn:hover{color:#2c3e50}.modal-body-content{padding:1.5rem;overflow-y:auto}.no-absences-msg{color:#666;text-align:center;padding:2rem}.absence-detail-table{width:100%;border-collapse:collapse}.absence-detail-table th{padding:.6rem .75rem;text-align:left;font-weight:600;color:#6c757d;font-size:.75rem;text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid #dee2e6}.absence-detail-table td{padding:.6rem .75rem;border-bottom:1px solid #e9ecef;font-size:.8125rem}.btn-send-inline{padding:.25rem .6rem;background:#27ae60;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.75rem;font-weight:600;transition:all .2s}.btn-send-inline:hover:not(:disabled){background:#1e8449}.btn-send-inline:disabled{opacity:.5;cursor:not-allowed}.sent-check{color:#27ae60;font-weight:700}.no-action{color:#ccc}.absence-count-high{color:#e74c3c;font-weight:700}.sortable-header{cursor:pointer;-webkit-user-select:none;user-select:none}.sortable-header:hover{background:#e8f4fd}.student-search-wrapper{position:relative}.student-search-input{width:100%;padding:.375rem .75rem;border:1px solid #ced4da;border-radius:4px;font-size:.8125rem;transition:all .2s}.student-search-input:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.student-search-dropdown{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #ced4da;border-top:none;border-radius:0 0 4px 4px;max-height:200px;overflow-y:auto;z-index:100;box-shadow:0 4px 8px #0000001a}.student-search-option{padding:.4rem .75rem;cursor:pointer;font-size:.8125rem}.student-search-option:hover{background:#e8f4fd}.student-search-option.selected{background:#d1ecf1;font-weight:600}.student-search-option.no-match{color:#999;cursor:default;font-style:italic}.clear-search-btn{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:none;border:none;font-size:1.1rem;color:#999;cursor:pointer;padding:0 4px;line-height:1}.clear-search-btn:hover{color:#e74c3c}.absence-tabs{display:flex;gap:0;border-bottom:2px solid #dee2e6;margin-bottom:1.5rem}.absence-tab{position:relative;padding:.65rem 1.25rem;background:none;border:none;border-bottom:3px solid transparent;margin-bottom:-2px;cursor:pointer;font-size:.9rem;font-weight:500;color:#6c757d;transition:all .2s;display:flex;align-items:center;gap:.5rem}.absence-tab:hover{color:#2c3e50;background:#f8f9fa}.absence-tab.active{color:#3498db;border-bottom-color:#3498db}.tab-badge{background:#e74c3c;color:#fff;border-radius:10px;padding:.1rem .45rem;font-size:.7rem;font-weight:700;line-height:1.4}.email-management-tab{padding-top:.5rem}.email-requests-list{display:flex;flex-direction:column;gap:1rem}.email-request-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #00000014;overflow:hidden}.email-request-header{background:#f8f9fa;border-bottom:1px solid #e9ecef;padding:1rem 1.25rem;display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap}.email-request-title{display:flex;align-items:center;gap:.75rem}.req-class-name{font-size:1rem;font-weight:700;color:#2c3e50}.req-week-badge{background:#3498db;color:#fff;padding:.2rem .6rem;border-radius:12px;font-size:.75rem;font-weight:600}.email-request-meta{display:flex;align-items:center;gap:.75rem;font-size:.8125rem;color:#6c757d;flex-wrap:wrap}.req-term{background:#e9ecef;padding:.15rem .5rem;border-radius:4px;font-size:.75rem}.req-date{font-size:.75rem}.email-request-body{padding:1rem 1.25rem}.req-section{margin-bottom:.75rem}.req-section-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#6c757d;display:block;margin-bottom:.4rem}.student-chips{display:flex;flex-wrap:wrap;gap:.4rem}.student-chip{background:#e8f4fd;color:#2980b9;padding:.2rem .6rem;border-radius:12px;font-size:.8rem;font-weight:500}.req-email-note{font-size:.8125rem;color:#6c757d;margin:.5rem 0 0;font-style:italic}.email-request-actions{display:flex;gap:.75rem;padding:.75rem 1.25rem;border-top:1px solid #e9ecef;background:#fafafa}.btn-approve{padding:.45rem 1rem;background:#27ae60;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.8125rem;font-weight:600;transition:all .2s}.btn-approve:hover:not(:disabled){background:#1e8449}.btn-reject{padding:.45rem 1rem;background:#e74c3c;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.8125rem;font-weight:600;transition:all .2s}.btn-cancel{padding:.45rem 1rem;background:#6c757d;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.8125rem;font-weight:600;transition:all .2s}.btn-cancel:hover{background:#5a6268}.reject-modal{background:#fff;border-radius:12px;max-width:440px;width:95%;overflow:hidden;box-shadow:0 8px 32px #0003}.reject-label{display:block;font-size:.875rem;font-weight:500;color:#2c3e50;margin-bottom:.5rem}.reject-textarea{width:100%;padding:.5rem .75rem;border:1px solid #ced4da;border-radius:4px;font-size:.875rem;resize:vertical;box-sizing:border-box}.reject-textarea:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.reject-actions{display:flex;gap:.75rem;margin-top:1rem}.btn-send-attendance{background:#8e44ad!important}.btn-send-attendance:hover:not(:disabled){background:#7d3c98!important}.btn-send-attendance.status-pending{background:#95a5a6!important}.btn-send-attendance.status-approved{background:#27ae60!important}.btn-send-attendance.status-rejected{background:#e74c3c!important}.operation-history-page{width:100%}.filters-section{background:#fff;padding:1rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.75rem}.filter-group{display:flex;flex-direction:column}.filter-group label{margin-bottom:.5rem;font-weight:500;color:#2c3e50;font-size:.8125rem}.filter-group select,.filter-group input{padding:.375rem .75rem;border:1px solid #ced4da;border-radius:4px;font-size:.8125rem;background:#fff;transition:all .2s}.filter-group select{cursor:pointer}.filter-group select:hover{border-color:#3498db}.filter-group select:focus,.filter-group input:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.logs-table-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow-x:auto}.logs-table thead{background:#f8f9fa;border-bottom:2px solid #dee2e6}.logs-table th{padding:1rem;text-align:left;font-weight:600;color:#2c3e50;font-size:.875rem;text-transform:uppercase;letter-spacing:.5px}.logs-table td{padding:1rem;border-bottom:1px solid #e9ecef;color:#495057}.log-row{cursor:pointer;transition:background .2s}.log-row:hover{background:#f8f9fa}.expand-cell{text-align:center}.expand-btn{background:none;border:none;cursor:pointer;font-size:.875rem;color:#3498db;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:all .2s}.expand-btn:hover{color:#2980b9}.resource-id{font-family:monospace;font-size:.75rem;color:#666}.badge{display:inline-block;padding:.25rem .75rem;border-radius:12px;font-size:.75rem;font-weight:600;text-transform:uppercase}.badge-danger{background:#f8d7da;color:#721c24}.badge-info{background:#d1ecf1;color:#0c5460}.expanded-row{background:#f8f9fa}.expanded-row td{padding:0}.expanded-content{padding:1.5rem;display:flex;flex-direction:column;gap:1.5rem}.expanded-section{background:#fff;padding:1rem;border-radius:4px;border:1px solid #dee2e6}.expanded-section h4{margin:0 0 1rem;font-size:.875rem;color:#2c3e50;text-transform:uppercase;letter-spacing:.5px}.change-details{display:flex;flex-direction:column;gap:.75rem}.change-item{display:flex;flex-direction:column;gap:.25rem}.change-item strong{color:#2c3e50;font-size:.875rem}.change-values{display:flex;align-items:center;gap:.75rem;font-family:monospace;font-size:.875rem}.old-value{color:#e74c3c;background:#fee;padding:.25rem .5rem;border-radius:4px}.arrow{color:#95a5a6;font-weight:700}.new-value{color:#27ae60;background:#efe;padding:.25rem .5rem;border-radius:4px}.metadata-details{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.75rem}.metadata-item{display:flex;flex-direction:column;gap:.25rem}.metadata-item strong{color:#2c3e50;font-size:.875rem}.metadata-item span{color:#495057;font-size:.875rem;font-family:monospace;background:#f8f9fa;padding:.25rem .5rem;border-radius:4px}.pagination{display:flex;justify-content:center;align-items:center;gap:.75rem;margin-top:2rem;padding:.75rem;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a}.page-info{font-size:.8125rem;color:#666}.pagination button:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{padding:.375rem .75rem;background:#6c757d;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.8125rem;font-weight:500;transition:all .2s}.btn-secondary:hover:not(:disabled){background:#5a6268}.empty-state{padding:3rem;text-align:center;color:#666}@media(max-width:768px){.operation-history-page{padding:1rem}.filters-section{grid-template-columns:1fr}.logs-table-container{overflow-x:scroll}.logs-table{min-width:700px}.metadata-details{grid-template-columns:1fr}}.class-switch-requests-admin-page,.switch-class-page{padding:20px}.tabs{display:flex;gap:0;margin-bottom:20px;border-bottom:2px solid #e0e0e0}.tab{padding:12px 24px;background:none;border:none;font-size:14px;font-weight:500;color:#666;cursor:pointer;position:relative;transition:color .2s}.tab:hover,.tab.active{color:#3498db}.tab.active:after{content:"";position:absolute;bottom:-2px;left:0;right:0;height:2px;background:#3498db}.logs-table-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden}.logs-table{width:100%;border-collapse:collapse}.logs-table th,.logs-table td{padding:12px 16px;text-align:left;border-bottom:1px solid #eee}.logs-table th{background:#f8f9fa;font-weight:600;color:#2c3e50;font-size:13px;text-transform:uppercase}.logs-table tbody tr:hover{background:#f8f9fa}.change-details{display:flex;align-items:center;gap:8px}.from-class{color:#e74c3c}.arrow{color:#95a5a6}.to-class{color:#27ae60}.empty-state{padding:40px;text-align:center;color:#666}.page-header{margin-bottom:30px}.filters-section{background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:20px}.filter-group{display:flex;align-items:center;gap:10px}.filter-group label{font-weight:500;color:#333}.filter-group select{padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px;background:#fff;cursor:pointer}.filter-group select:focus{outline:none;border-color:#3498db}.header-filter{padding:4px 8px;border:1px solid #ddd;border-radius:4px;font-size:13px;background:#fff;cursor:pointer;font-weight:400}.header-filter:focus{outline:none;border-color:#3498db}.btn-success{background:#27ae60;color:#fff;padding:6px 12px;border:none;border-radius:4px;cursor:pointer;font-size:13px;font-weight:500}.btn-success:hover{background:#229954}.btn-danger{background:#e74c3c;color:#fff;padding:6px 12px;border:none;border-radius:4px;cursor:pointer;font-size:13px;font-weight:500;margin-left:8px}.btn-sm{font-size:12px;padding:6px 12px}.btn-icon{background:none;border:none;cursor:pointer;padding:6px 10px;border-radius:4px;font-size:16px;transition:background .2s}.btn-approve{color:#27ae60}.btn-approve:hover{background:#27ae601a}.btn-reject{color:#e74c3c}.btn-reject:hover{background:#e74c3c1a}.status-badge{padding:4px 12px;border-radius:12px;font-size:11px;font-weight:600;text-transform:uppercase}.badge-pending{background:#fff3cd;color:#856404}.badge-approved{background:#d4edda;color:#155724}.badge-rejected{background:#f8d7da;color:#721c24}.badge-cancelled{background:#e2e3e5;color:#383d41}.reason-cell{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content{background:#fff;border-radius:8px;box-shadow:0 4px 6px #0000001a;width:90%;max-width:600px;max-height:90vh;overflow-y:auto}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #eee}.modal-header h2{margin:0;color:#2c3e50;font-size:20px}.close-btn{background:none;border:none;font-size:28px;color:#95a5a6;cursor:pointer;line-height:1;padding:0;width:30px;height:30px}.close-btn:hover{color:#7f8c8d}.modal-body{padding:20px}.request-details{background:#f8f9fa;padding:15px;border-radius:4px;margin-bottom:20px}.request-details p{margin:8px 0;font-size:14px;line-height:1.6}.request-details strong{color:#2c3e50;margin-right:8px}.form-group{margin-bottom:15px}.form-group textarea{width:100%;padding:10px;border:1px solid #ddd;border-radius:4px;font-size:14px;font-family:inherit;resize:vertical;box-sizing:border-box}.form-group textarea:focus{outline:none;border-color:#3498db}.alert{padding:12px;border-radius:4px;margin-bottom:15px}.modal-footer{padding:20px;border-top:1px solid #eee;display:flex;justify-content:flex-end;gap:10px}@media(max-width:768px){.class-switch-requests-admin-page,.filters-section{padding:15px}.modal-content{width:95%;max-height:95vh}.modal-header,.modal-body{padding:15px}.modal-footer{padding:15px;flex-direction:column}.modal-footer button{width:100%}.filter-group{flex-direction:column;align-items:flex-start}.filter-group select{width:100%}}.pending-notes-page{width:100%}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.page-header h1{margin:0;font-size:2rem;color:#2c3e50}.pending-count{background:#fff3cd;color:#856404;padding:.5rem 1rem;border-radius:20px;font-weight:600;font-size:.875rem}.notes-list{display:flex;flex-direction:column;gap:1rem}.pending-group-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden}.group-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;background:#f8f9fa;border-bottom:1px solid #e9ecef}.group-info h3{margin:0 0 .5rem;color:#2c3e50;font-size:1.1rem}.group-meta{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.week-badge{background:#3498db;color:#fff;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600}.teacher-name{color:#666;font-size:.875rem}.term-name{color:#888;font-size:.75rem;background:#e9ecef;padding:.25rem .5rem;border-radius:4px}.group-actions{display:flex;gap:.5rem}.files-list{padding:1rem 1.5rem}.file-item{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid #f0f0f0}.file-item:last-child{border-bottom:none}.file-link{color:#3498db;cursor:pointer;text-decoration:underline;flex:1}.file-link:hover{color:#2980b9}.upload-time{color:#888;font-size:.75rem;margin-left:1rem}.btn-approve{padding:.5rem 1rem;background:#27ae60;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.8125rem;font-weight:500;transition:all .2s}.btn-approve:hover:not(:disabled){background:#219a52}.btn-approve:disabled{opacity:.5;cursor:not-allowed}.btn-reject{padding:.5rem 1rem;background:#e74c3c;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.8125rem;font-weight:500;transition:all .2s}.btn-reject:hover:not(:disabled){background:#c0392b}.btn-reject:disabled{opacity:.5;cursor:not-allowed}.empty-state{background:#fff;padding:3rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;text-align:center;color:#666}.empty-state p{margin:0;font-size:1.1rem}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:#fff;padding:2rem;border-radius:8px;max-width:500px;width:90%;box-shadow:0 4px 20px #0003}.modal-content h2{margin:0 0 1rem;color:#2c3e50}.modal-content p{color:#666;margin-bottom:1rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#2c3e50}.form-group textarea{width:100%;padding:.75rem;border:1px solid #ced4da;border-radius:4px;font-size:.875rem;resize:vertical;box-sizing:border-box}.form-group textarea:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.modal-actions{display:flex;justify-content:flex-end;gap:1rem}.btn-secondary{padding:.5rem 1rem;background:#6c757d;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.8125rem;font-weight:500;transition:all .2s}.btn-secondary:hover{background:#5a6268}@media(max-width:768px){.pending-notes-page{padding:1rem}.page-header,.group-header{flex-direction:column;align-items:flex-start;gap:1rem}.group-actions{width:100%}.group-actions button{flex:1}.file-item{flex-direction:column;align-items:flex-start;gap:.25rem}.upload-time{margin-left:0}}.pending-tabs{display:flex;gap:0;margin-bottom:1.5rem;border-bottom:2px solid #e9ecef}.pending-tab{padding:.75rem 1.5rem;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;font-size:.9375rem;font-weight:600;color:#6c757d;transition:all .2s;display:flex;align-items:center;gap:.5rem}.pending-tab:hover{color:#2c3e50}.pending-tab.active{color:#3498db;border-bottom-color:#3498db}.tab-badge{background:#e74c3c;color:#fff;font-size:.7rem;padding:.15rem .5rem;border-radius:10px;font-weight:700;min-width:1.25rem;text-align:center}.note-request-card .group-header{background:#eef6ff;border-bottom-color:#b8d4f0}.request-details{padding:1rem 1.5rem}.request-section{margin-bottom:1rem}.request-section:last-child{margin-bottom:0}.request-section h4{margin:0 0 .5rem;font-size:.8125rem;color:#6c757d;text-transform:uppercase;letter-spacing:.5px}.student-chips{display:flex;flex-wrap:wrap;gap:.5rem}.student-chip{background:#f0f0f0;color:#2c3e50;padding:.35rem .75rem;border-radius:16px;font-size:.8125rem;font-weight:500}.request-date{color:#888;font-size:.75rem}.announcement-grid{display:grid;grid-template-columns:1fr 400px;gap:1.5rem;align-items:start}.announcement-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden}.announcement-card .card-header{padding:1.25rem 1.5rem;background:linear-gradient(135deg,#3498db,#2980b9);color:#fff;display:flex;align-items:center;gap:.75rem}.announcement-card .card-header i{font-size:1.25rem}.announcement-card .card-header h2{margin:0;font-size:1.125rem;font-weight:600}.announcement-card .card-body{padding:1.5rem}.announcement-form{display:flex;flex-direction:column;gap:1.25rem}.announcement-form .form-group{display:flex;flex-direction:column;gap:.5rem}.announcement-form label{font-weight:600;color:#2c3e50;font-size:.875rem}.announcement-form .form-input{padding:.75rem 1rem;border:1px solid #dee2e6;border-radius:6px;font-size:.9375rem;transition:border-color .2s,box-shadow .2s}.announcement-form .form-input:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.announcement-form textarea.form-input{resize:vertical;min-height:200px;font-family:inherit;line-height:1.5}.form-actions{display:flex;justify-content:flex-end;gap:1rem;padding-top:.5rem}.btn-cancel,.btn-primary{padding:.75rem 1.5rem;border-radius:6px;font-size:.9375rem;font-weight:600;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:.5rem}.btn-cancel:hover:not(:disabled){background:#f8f9fa;border-color:#dee2e6}.btn-primary{background:#3498db;border:none;color:#fff}.btn-primary:hover:not(:disabled){background:#2980b9}.btn-primary:disabled,.btn-cancel:disabled{opacity:.6;cursor:not-allowed}.alert{padding:1rem 1.25rem;border-radius:6px;margin-bottom:1.25rem;display:flex;align-items:center;gap:.75rem}.info-card .card-header{background:linear-gradient(135deg,#9b59b6,#8e44ad)}.help-content h3{margin:0 0 1rem;color:#2c3e50;font-size:1rem}.help-list{list-style:none;padding:0;margin:0 0 1.5rem}.help-list li{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem;background:#f8f9fa;border-radius:6px;margin-bottom:.5rem}.help-list li:last-child{margin-bottom:0}.help-list i{color:#3498db;font-size:1rem;margin-top:.125rem}.help-list span{font-size:.875rem;color:#2c3e50;line-height:1.4}.help-notes{background:#e3f2fd;padding:1rem;border-radius:6px;border-left:4px solid #3498db}.help-notes h4{margin:0 0 .75rem;color:#2c3e50;font-size:.875rem}.help-notes ul{margin:0;padding-left:1.25rem}.help-notes li{font-size:.8125rem;color:#555;margin-bottom:.375rem;line-height:1.4}.help-notes li:last-child{margin-bottom:0}.send-results h3{margin:0 0 1rem;color:#2c3e50;font-size:1rem}.result-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:.75rem;margin-bottom:1rem}.stat-item{text-align:center;padding:1rem;background:#f8f9fa;border-radius:8px}.stat-item.success{background:#d4edda}.stat-item.error{background:#f8d7da}.stat-value{display:block;font-size:1.5rem;font-weight:700;color:#2c3e50}.stat-item.success .stat-value{color:#155724}.stat-item.error .stat-value{color:#721c24}.stat-label{display:block;font-size:.6875rem;color:#7f8c8d;text-transform:uppercase;letter-spacing:.5px;margin-top:.25rem}.limit-warning{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem;background:#fff3cd;border-radius:6px;margin-bottom:1rem}.limit-warning i{color:#856404;margin-top:.125rem}.limit-warning span{font-size:.8125rem;color:#856404;line-height:1.4}.error-list{background:#f8d7da;padding:1rem;border-radius:6px}.error-list h4{margin:0 0 .5rem;color:#721c24;font-size:.875rem}.error-list ul{margin:0;padding-left:1.25rem}.error-list li{font-size:.8125rem;color:#721c24;margin-bottom:.25rem}.announcement-confirm-modal{background:#fff;border-radius:10px;width:100%;max-width:420px;box-shadow:0 10px 30px #0003;overflow:hidden}.announcement-confirm-modal .modal-header{padding:1.25rem 1.5rem;background:linear-gradient(135deg,#e74c3c,#c0392b);color:#fff;display:flex;align-items:center;gap:.75rem}.announcement-confirm-modal .modal-header i{font-size:1.25rem}.announcement-confirm-modal .modal-header h2{margin:0;font-size:1.125rem;font-weight:600}.announcement-confirm-modal .modal-body{padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.announcement-confirm-modal .modal-body p{margin:0;color:#555;font-size:.9375rem}.announcement-confirm-modal .modal-body .form-group{display:flex;flex-direction:column;gap:.5rem}.announcement-confirm-modal .modal-body label{font-weight:600;color:#2c3e50;font-size:.875rem}.announcement-confirm-modal .modal-body .form-input{padding:.75rem 1rem;border:1px solid #dee2e6;border-radius:6px;font-size:.9375rem;transition:border-color .2s,box-shadow .2s}.announcement-confirm-modal .modal-body .form-input:focus{outline:none;border-color:#e74c3c;box-shadow:0 0 0 3px #e74c3c1a}.announcement-confirm-modal .modal-footer{padding:1rem 1.5rem;border-top:1px solid #e9ecef;display:flex;justify-content:flex-end;gap:.75rem}@media(max-width:1024px){.announcement-grid{grid-template-columns:1fr}.info-card{order:-1}}@media(max-width:768px){.form-actions{flex-direction:column}.btn-cancel,.btn-primary{width:100%;justify-content:center}.result-stats{grid-template-columns:1fr}}.my-classes-page{width:100%;max-width:1600px;min-width:320px;margin:0 auto}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;flex-wrap:wrap;gap:1rem}.page-header h1{margin:0;color:#2c3e50;font-size:clamp(1.5rem,4vw,2rem)}.header-stats{display:flex;gap:1rem}.stat-card{background:#fff;padding:1rem 1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;text-align:center;min-width:120px}.stat-value{font-size:2rem;font-weight:700;color:#3498db;line-height:1;margin-bottom:.5rem}.stat-label{font-size:.8125rem;color:#7f8c8d;text-transform:uppercase;letter-spacing:.5px}.term-filter{display:flex;align-items:center;gap:1rem;margin-bottom:2rem;background:#fff;padding:1rem 1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.term-filter label{font-weight:600;color:#2c3e50;font-size:.9375rem}.term-select{flex:1;max-width:300px;padding:.625rem 1rem;border:2px solid #e9ecef;border-radius:6px;font-size:.9375rem;color:#2c3e50;background:#fff;cursor:pointer;transition:all .2s}.term-select:hover{border-color:#3498db}.term-select:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.classes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem}.class-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:1.5rem;cursor:pointer;transition:all .2s;position:relative;border-left:4px solid #3498db}.class-card:hover{transform:translateY(-2px);box-shadow:0 4px 8px #00000026}.class-card.today{border-left-color:#e74c3c;background:linear-gradient(to right,#fff5f5,#fff 10%)}.today-badge{position:absolute;top:1rem;right:1rem;background:#e74c3c;color:#fff;padding:.25rem .75rem;border-radius:12px;font-size:.75rem;font-weight:600;text-transform:uppercase}.class-header{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #e9ecef}.class-name{margin:0 0 .5rem;color:#2c3e50;font-size:1.25rem}.class-code{font-family:monospace;font-size:.875rem;color:#7f8c8d;background:#f8f9fa;padding:.25rem .5rem;border-radius:4px;display:inline-block}.class-details{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.5rem}.detail-row{display:flex;justify-content:space-between;align-items:center;font-size:.875rem}.detail-row .label{color:#7f8c8d;font-weight:500}.detail-row .value{color:#2c3e50;font-weight:600}.class-actions{display:flex;gap:.5rem}.btn-primary-sm{flex:1;padding:.5rem 1rem;background:#3498db;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s}.btn-primary-sm:hover{background:#2980b9}.loading{text-align:center;padding:3rem;color:#7f8c8d;font-size:1.1rem}.empty-state{background:#fff;padding:3rem;text-align:center;border-radius:8px;box-shadow:0 2px 4px #0000001a}.empty-state p{margin:0;color:#7f8c8d;font-size:1rem}.alert{padding:1rem;border-radius:4px;margin-bottom:1rem}@media(max-width:768px){.my-classes-page{padding:1rem}.page-header{flex-direction:column;align-items:flex-start}.header-stats{width:100%}.stat-card{flex:1;min-width:auto}.term-filter{flex-direction:column;align-items:flex-start}.term-select{width:100%;max-width:none}.classes-grid{grid-template-columns:1fr}}.teacher-class-details{width:100%;max-width:100vw;margin:0 auto;padding:2rem;background:#f5f7fa;min-height:100vh;overflow-x:hidden;box-sizing:border-box}.page-header{margin-bottom:2rem}.btn-back{padding:.75rem 1.5rem;background:#fff;border:2px solid #3498db;color:#3498db;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s;display:inline-flex;align-items:center;gap:.5rem}.btn-back:hover{background:#3498db;color:#fff;transform:translateY(-2px);box-shadow:0 4px 12px #3498db4d}.class-overview-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;padding:2rem;margin-bottom:2rem}.class-title{margin:0 0 1.5rem;color:#2c3e50;font-size:2rem;font-weight:700;padding-bottom:1rem;border-bottom:3px solid #3498db}.info-label{font-size:.875rem;color:#7f8c8d;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.info-value{font-size:1.125rem;color:#2c3e50;font-weight:600}.view-toggle{display:flex;gap:1rem;margin-bottom:2rem;background:#fff;padding:.5rem;border-radius:12px;box-shadow:0 2px 8px #0000001a}.toggle-btn{flex:1;padding:1rem 2rem;background:transparent;border:none;color:#7f8c8d;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s}.toggle-btn:hover{background:#f8f9fa;color:#2c3e50}.toggle-btn.active{background:#3498db;color:#fff;box-shadow:0 4px 12px #3498db4d}.weekly-overview{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1rem;width:100%;max-width:calc(100vw - 100px - 4rem);box-sizing:border-box}.week-card{background:#fff;border-radius:8px;box-shadow:0 2px 6px #0000001a;overflow:hidden;transition:all .3s}.week-card:hover{box-shadow:0 4px 12px #00000026;transform:translateY(-2px)}.week-card-header{background:#3498db;padding:.75rem 1rem;color:#fff}.week-card-header h2{margin:0;font-size:1.125rem;font-weight:700;color:#fff}.week-card-body{padding:1rem;display:flex;flex-direction:column;gap:1rem}.week-section{display:flex;flex-direction:column;gap:.5rem}.section-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:.375rem;border-bottom:1px solid #e9ecef}.section-header h3{margin:0;font-size:.8125rem;font-weight:600;color:#2c3e50;text-transform:uppercase;letter-spacing:.5px}.btn-edit,.upload-btn{padding:.375rem .75rem;background:#3498db;color:#fff;border:none;border-radius:4px;font-size:.75rem;font-weight:600;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;gap:.25rem}.btn-edit:hover,.upload-btn:hover{background:#2980b9;transform:scale(1.05)}.section-content{min-height:40px;display:flex;align-items:flex-start}.editable-field{cursor:pointer;padding:.5rem;background:#f8f9fa;border-radius:4px;transition:all .2s;width:100%;min-height:36px;display:flex;align-items:center;font-size:.875rem}.editable-field:hover{background:#e3f2fd}.no-content{color:#bdc3c7;font-style:italic;font-size:.8125rem}.topics-list{display:flex;flex-wrap:wrap;gap:.375rem;width:100%}.topic-chip{background:#e3f2fd;color:#2980b9;padding:.375rem .75rem;border-radius:16px;font-size:.75rem;font-weight:600;border:1px solid #3498db}.files-grid{display:flex;flex-direction:column;gap:.375rem;width:100%}.file-card{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:#f8f9fa;border-radius:6px;border:1px solid #dee2e6;transition:all .2s}.file-card:hover{background:#e9ecef;border-color:#3498db}.file-icon{color:#3498db;font-size:1rem;flex-shrink:0}.file-name{flex:1;cursor:pointer;color:#3498db;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .2s;font-size:.8125rem}.btn-delete-file{background:transparent;border:none;color:#e74c3c;cursor:pointer;padding:.125rem .25rem;font-size:.875rem;border-radius:3px;transition:all .2s;flex-shrink:0}.btn-delete-file:hover{background:#fee;color:#c0392b}.file-input-hidden{display:none}.file-card.pending{background:#fff8e6;border-color:#ffc107}.file-card.rejected{background:#fff0f0;border-color:#e74c3c}.approval-badge{font-size:.625rem;padding:.125rem .375rem;border-radius:3px;font-weight:600;text-transform:uppercase;flex-shrink:0}.approval-badge.pending{background:#fff3cd;color:#856404}.approval-badge.approved{background:#d4edda;color:#155724}.approval-badge.rejected{background:#f8d7da;color:#721c24}.student-progress{background:#fff;border-radius:12px;box-shadow:0 4px 16px #00000014;padding:0;width:100%;max-width:calc(100vw - 150px - 4rem);overflow:visible;box-sizing:border-box}.week-tabs-bar{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;border-bottom:2px solid #e9ecef;gap:1rem;flex-wrap:wrap}.week-tabs{display:flex;gap:.375rem;flex-wrap:wrap}.week-tab{padding:.5rem 1rem;border:2px solid #dee2e6;background:#f8f9fa;color:#7f8c8d;border-radius:8px;font-size:.8125rem;font-weight:600;cursor:pointer;transition:all .2s;position:relative}.week-tab:hover{background:#e3f2fd;border-color:#3498db;color:#2c3e50}.week-tab.active{background:#3498db;border-color:#3498db;color:#fff;box-shadow:0 2px 8px #3498db4d}.week-tab.has-test:after{content:"";position:absolute;top:4px;right:4px;width:6px;height:6px;border-radius:50%;background:#e74c3c}.week-tab.active.has-test:after{background:gold}.test-dot{display:none}.save-actions{display:flex;align-items:center;gap:.75rem}.unsaved-badge{font-size:.75rem;color:#e67e22;font-weight:600;background:#fef3e2;padding:.375rem .75rem;border-radius:12px;border:1px solid #f0c27a}.btn-save-progress{padding:.625rem 1.5rem;background:#27ae60;color:#fff;border:none;border-radius:8px;font-size:.875rem;font-weight:700;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;gap:.5rem}.btn-save-progress:hover:not(:disabled){background:#1e8449;transform:translateY(-1px);box-shadow:0 4px 12px #27ae604d}.btn-save-progress:disabled{background:#bdc3c7;cursor:not-allowed;transform:none;box-shadow:none}.btn-send-notes{padding:.625rem 1.5rem;background:#3498db;color:#fff;border:none;border-radius:8px;font-size:.875rem;font-weight:700;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;gap:.5rem}.btn-send-notes:hover:not(:disabled){background:#2980b9;transform:translateY(-1px);box-shadow:0 4px 12px #3498db4d}.btn-send-notes:disabled{background:#bdc3c7;cursor:not-allowed;transform:none;box-shadow:none}.btn-send-notes.status-pending{background:#95a5a6;cursor:not-allowed}.btn-send-notes.status-approved{background:#27ae60}.btn-send-notes.status-approved:hover:not(:disabled){background:#219a52;box-shadow:0 4px 12px #27ae604d}.btn-send-notes.status-rejected{background:#e74c3c}.btn-send-notes.status-rejected:hover:not(:disabled){background:#c0392b;box-shadow:0 4px 12px #e74c3c4d}.btn-send-notes.btn-send-attendance{background:#8e44ad}.btn-send-notes.btn-send-attendance:hover:not(:disabled){background:#7d3c98;box-shadow:0 4px 12px #8e44ad4d}.week-progress-wrapper{padding:1.5rem;overflow-x:auto}.week-progress-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.875rem;border:1px solid #e9ecef;border-radius:8px;overflow:hidden}.week-progress-table thead tr{background:#3498db}.week-progress-table th{color:#fff;font-weight:700;font-size:.8125rem;text-transform:uppercase;letter-spacing:.5px;padding:.875rem 1rem;text-align:center;border-right:1px solid rgba(255,255,255,.15)}.week-progress-table th:last-child{border-right:none}.week-progress-table td{padding:.625rem .75rem;text-align:center;vertical-align:middle;border-bottom:1px solid #e9ecef;border-right:1px solid #f0f0f0}.week-progress-table td:last-child{border-right:none}.week-progress-table tbody tr{transition:background-color .15s}.week-progress-table tbody tr:hover{background-color:#f8f9fa}.week-progress-table tbody tr:last-child td{border-bottom:none}.col-student{text-align:left!important;font-weight:600;color:#2c3e50;min-width:160px;padding-left:1.25rem!important}.col-det{width:60px}.col-att{width:120px}.col-hw-grade{width:130px}.col-hw-comment{min-width:180px}.col-test{width:100px}.col-school-test{width:120px}.detention-count{display:inline-block;background:#e74c3c;color:#fff;padding:.25rem .625rem;border-radius:12px;font-weight:700;font-size:.75rem}.no-detention{color:#bdc3c7;font-size:.875rem}.attendance-toggle{display:flex;align-items:center;gap:.5rem;cursor:pointer;justify-content:center}.attendance-toggle input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:#27ae60}.toggle-label{font-size:.75rem;font-weight:600}.toggle-label.present{color:#27ae60}.toggle-label.absent-label{color:#e74c3c}.hw-grade-select{width:100%;padding:.375rem .5rem;border:1px solid #dee2e6;border-radius:6px;font-size:.8125rem;font-weight:600;cursor:pointer;transition:border-color .2s}.hw-grade-select:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 2px #3498db26}.hw-comment-input{width:100%;padding:.375rem .5rem;border:1px solid #dee2e6;border-radius:6px;font-size:.8125rem;transition:border-color .2s;box-sizing:border-box}.hw-comment-input:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 2px #3498db26}.test-mark-input{width:80px;padding:.375rem .5rem;border:1px solid #dee2e6;border-radius:6px;font-size:.875rem;font-weight:600;text-align:center;color:#3498db;transition:border-color .2s}.test-mark-input:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 2px #3498db26}.school-test-input{width:100%;padding:.375rem .5rem;border:1px solid #dee2e6;border-radius:6px;font-size:.8125rem;font-weight:600;text-align:center;transition:border-color .2s;box-sizing:border-box}.school-test-input:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 2px #3498db26}.form-select,.form-input{width:100%;padding:.5rem;border:2px solid #3498db;border-radius:4px;font-size:.875rem;background:#fff}.form-select-inline,.form-input-inline{width:100%;padding:.5rem;border:2px solid #3498db;border-radius:4px;font-size:.9375rem;background:#fff}.form-select:focus,.form-input:focus,.form-select-inline:focus,.form-input-inline:focus{outline:none;border-color:#2980b9;box-shadow:0 0 0 3px #3498db1a}.topic-edit-icon{color:#3498db;font-size:1rem;cursor:pointer;transition:color .2s ease;padding:.25rem}.topic-edit-icon:hover{color:#2980b9}.modal-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.topic-modal{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:900px;width:100%;max-height:90vh;display:flex;flex-direction:column}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:2rem;border-bottom:2px solid #e9ecef}.modal-header h2{margin:0;color:#2c3e50;font-size:1.75rem;font-weight:700}.modal-close{background:none;border:none;font-size:2rem;color:#7f8c8d;cursor:pointer;line-height:1;padding:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:8px;transition:all .2s}.modal-close:hover{background:#f8f9fa;color:#2c3e50}.modal-body{flex:1;overflow-y:auto;padding:2rem;display:flex;flex-direction:column;gap:2rem}.selected-topics-section h3,.available-topics-section h3{margin:0 0 1rem;color:#2c3e50;font-size:1.25rem;font-weight:700}.selected-topics-list{display:flex;flex-wrap:wrap;gap:.75rem;min-height:80px;padding:1.5rem;background:#f8f9fa;border-radius:12px;border:2px dashed #dee2e6}.no-topics-selected{margin:0;color:#7f8c8d;font-style:italic;width:100%;text-align:center}.selected-topic-item{display:flex;align-items:center;gap:.75rem;background:#3498db;color:#fff;padding:.75rem 1rem;border-radius:8px;font-size:.9375rem}.selected-topic-item .topic-name{font-weight:700}.selected-topic-item .topic-meta{opacity:.9;font-size:.8125rem;margin-left:.5rem}.remove-topic-btn{background:#ffffff40;border:none;color:#fff;font-size:1.5rem;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer;line-height:1;padding:0;margin-left:.5rem;transition:all .2s}.remove-topic-btn:hover{background:#fff6;transform:scale(1.15)}.topics-tree{border:2px solid #dee2e6;border-radius:12px;padding:1rem;background:#f8f9fa;max-height:450px;overflow-y:auto}.folder-level{margin-bottom:.5rem}.folder-header{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;cursor:pointer;border-radius:8px;transition:all .2s;font-weight:600;color:#2c3e50}.folder-header:hover{background:#e3f2fd}.folder-header i{width:18px;text-align:center}.folder-header i.fa-chevron-right,.folder-header i.fa-chevron-down{color:#7f8c8d;font-size:.875rem}.folder-header i.fa-folder{color:#f39c12;font-size:1.125rem}.folder-children{padding-left:2rem;margin-top:.5rem}.topic-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;cursor:pointer;border-radius:8px;transition:all .2s;color:#2c3e50;font-weight:500}.topic-item:hover{background:#c8e6c9}.topic-item.selected{background:#81c784;font-weight:700;color:#1b5e20}.topic-item i.fa-file-alt{color:#3498db;font-size:1rem}.modal-footer{padding:2rem;border-top:2px solid #e9ecef;display:flex;justify-content:flex-end;gap:1rem}.btn-cancel,.btn-save{padding:1rem 2rem;border:none;border-radius:8px;font-size:1rem;font-weight:700;cursor:pointer;transition:all .3s}.btn-cancel{background:#f8f9fa;color:#2c3e50;border:2px solid #dee2e6}.btn-cancel:hover{background:#e9ecef}.btn-save{background:#3498db;color:#fff}.btn-save:hover{background:#2980b9;transform:scale(1.05);box-shadow:0 4px 12px #3498db4d}.loading{text-align:center;padding:4rem;color:#7f8c8d;font-size:1.25rem}.empty-state{background:#fff;padding:4rem;text-align:center;border-radius:12px;box-shadow:0 2px 8px #0000001a;color:#7f8c8d;font-size:1.125rem}.alert{padding:1.5rem;border-radius:8px;margin-bottom:1.5rem}.alert-error{background:#fee;color:#c0392b;border:2px solid #e74c3c}@media(min-width:1600px){.teacher-class-details{max-width:1400px}.weekly-overview,.student-progress{max-width:1368px}}@media(max-width:768px){.teacher-class-details{padding:1rem}.weekly-overview,.student-progress{max-width:calc(100vw - 2rem)}.class-overview-card{padding:1.5rem}.class-title{font-size:1.5rem}.class-info-grid{grid-template-columns:1fr}.view-toggle{flex-direction:column}.weekly-overview{grid-template-columns:1fr}.student-progress{padding:0}.week-tabs-bar{flex-direction:column;align-items:stretch}.week-tabs{justify-content:center}.save-actions{justify-content:flex-end}.week-progress-table{font-size:.75rem}.col-student{min-width:120px}.modal-header h2{font-size:1.25rem}.modal-body{padding:1.5rem}.folder-children{padding-left:1.5rem}}.timetable-controls{display:flex;gap:1rem;align-items:center}.timetable-term-title{margin:1.5rem 0 1rem;padding:1rem 1.5rem;background:#f8f9fa;border-radius:8px;border-left:4px solid #3498db}.timetable-term-title h2{margin:0;font-size:1.25rem;color:#2c3e50;font-weight:600}.timetable-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow-x:auto;margin-top:1.5rem;padding:1rem}.timetable-wrapper{display:flex;min-width:1200px;border:1px solid #e1e8ed;border-radius:4px;overflow:hidden}.time-column{width:80px;flex-shrink:0;background:#f8f9fa;border-right:2px solid #e1e8ed}.day-column{flex:1;min-width:0;border-right:1px solid #e1e8ed}.day-column:last-child{border-right:none}.day-header-cell{background:#f8f9fa;padding:.75rem;text-align:center;font-weight:600;border-bottom:2px solid #e1e8ed;color:#2c3e50;height:50px;font-size:.85rem;display:flex;align-items:center;justify-content:center;flex-shrink:0}.time-label{padding:0;text-align:center;font-size:.8rem;color:#6c757d;border-bottom:1px solid #e1e8ed;font-weight:500;height:70px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.day-content{position:relative;background:#fff}.time-grid-line{position:absolute;left:0;right:0;height:70px;border-bottom:1px solid #e9ecef;pointer-events:none}.time-grid-line:hover{background-color:#f8f9fa80}.class-block{position:absolute;border-radius:4px;padding:.4rem!important;cursor:pointer;transition:all .2s ease;overflow:hidden!important;box-shadow:0 1px 3px #00000026;z-index:1;box-sizing:border-box!important}.class-block:hover{z-index:10;box-shadow:0 4px 12px #00000040;transform:scale(1.02);filter:brightness(1.05)!important}.class-block-content{color:#fff!important;font-size:.65rem!important;line-height:1.2!important;height:100%!important;display:flex!important;flex-direction:column!important;gap:.05rem!important;overflow:hidden!important}.class-name{font-weight:600!important;font-size:.75rem!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;line-height:1.2!important}.class-room,.class-time,.class-students{font-size:.6rem!important;opacity:.95!important;overflow:visible!important;word-wrap:break-word!important;overflow-wrap:break-word!important;white-space:normal!important}.class-block-content-minimal{color:#fff;font-size:.7rem;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;padding:.25rem}.class-name-small{font-weight:600;font-size:.75rem;writing-mode:vertical-rl;text-orientation:mixed;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-height:100%}.class-tooltip{position:absolute;top:100%;left:50%;transform:translate(-50%);margin-top:.5rem;background:#2c3e50f5;color:#fff;padding:.75rem 1rem;border-radius:6px;box-shadow:0 4px 12px #0000004d;z-index:100;min-width:220px;white-space:nowrap;pointer-events:none;opacity:0;visibility:hidden;transition:none}.class-tooltip:before{content:"";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-bottom-color:#2c3e50f5}.class-block:hover .class-tooltip{opacity:1;visibility:visible}.tooltip-row{padding:.25rem 0;font-size:.85rem;line-height:1.4}.tooltip-row:first-child{padding-bottom:.5rem;border-bottom:1px solid rgba(255,255,255,.2);margin-bottom:.25rem}.tooltip-row strong{font-weight:600;font-size:.95rem}.loading-spinner{text-align:center;padding:3rem;font-size:1rem;color:#6c757d}.empty-state{text-align:center;padding:3rem;color:#6c757d}@media(max-width:1400px){.timetable-wrapper{min-width:1000px}.class-block{padding:.35rem}.class-block-content{font-size:.7rem;gap:.15rem}.class-name{font-size:.75rem}.class-room,.class-time,.class-students{font-size:.65rem}}@media(max-width:1200px){.timetable-wrapper{min-width:900px}.class-block{padding:.3rem}.class-block-content{font-size:.65rem;gap:.1rem}.class-name{font-size:.7rem}.class-room,.class-time,.class-students{font-size:.6rem}.time-label{height:60px}.day-header-cell{height:45px;font-size:.75rem}.time-grid-line{height:60px}}@media(max-width:968px){.timetable-container{padding:.75rem}.timetable-wrapper{min-width:800px}.class-block{padding:.25rem}.class-block-content{font-size:.6rem;gap:.1rem}.class-name{font-size:.65rem}.class-room,.class-time,.class-students{font-size:.55rem}.time-label{height:55px}.day-header-cell{height:40px;font-size:.7rem}.time-grid-line{height:55px}.class-tooltip{min-width:180px;font-size:.8rem}}.student-page{width:100%;max-width:1200px;margin:0 auto}.page-header h1{margin:0;color:#2c3e50;font-size:1.875rem;font-weight:600}.page-header p{margin:.5rem 0 0;color:#7f8c8d;font-size:.9375rem}.filters-section{background:#fff;padding:1rem 1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:1.5rem;display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}.filter-group{display:flex;align-items:center;gap:.75rem}.filter-group label{font-weight:600;color:#2c3e50;font-size:.875rem}.filter-select{padding:.5rem 1rem;border:1px solid #ddd;border-radius:6px;font-size:.875rem;background:#fff;cursor:pointer;min-width:200px}.filter-select:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.summary-text{color:#7f8c8d;font-size:.875rem}.classes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem}.class-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden;cursor:pointer;transition:all .3s ease;position:relative}.class-card:hover{box-shadow:0 4px 12px #00000026;transform:translateY(-2px)}.today-badge{position:absolute;top:.75rem;right:.75rem;background:#3498db;color:#fff;padding:.25rem .75rem;border-radius:12px;font-size:.75rem;font-weight:600;z-index:1}.class-card-header{padding:1.25rem 1.25rem 1rem;border-bottom:2px solid #f8f9fa;display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem}.class-card-header h3{margin:0;color:#2c3e50;font-size:1.125rem;font-weight:600;flex:1}.year-badge{background:#3498db;color:#fff;padding:.25rem .625rem;border-radius:4px;font-size:.75rem;font-weight:600;white-space:nowrap}.class-card-body{padding:1.25rem;display:flex;flex-direction:column;gap:.875rem}.class-info-item{display:flex;align-items:center;gap:.75rem;font-size:.875rem;color:#555}.class-info-item i{color:#3498db;width:18px;text-align:center;font-size:.9375rem}.class-info-item span{flex:1}.class-card-footer{padding:0 1.25rem 1.25rem}.btn-view{width:100%;padding:.625rem 1rem;background:#3498db;color:#fff;border:none;border-radius:6px;font-size:.875rem;font-weight:600;cursor:pointer;transition:background .2s}.btn-view:hover{background:#2980b9}.empty-state{background:#fff;border-radius:8px;padding:3rem;text-align:center;box-shadow:0 2px 4px #0000001a}.empty-icon{font-size:3rem;color:#bdc3c7;margin-bottom:1rem}.empty-state p{color:#7f8c8d;font-size:1rem;margin:0}.loading-spinner{text-align:center;padding:3rem;font-size:1rem;color:#7f8c8d}@media(max-width:768px){.page-header h1{font-size:1.5rem}.classes-grid{grid-template-columns:1fr}.filters-section{flex-direction:column;align-items:stretch;padding:.75rem 1rem}.filter-group{width:100%}.filter-select{min-width:100%;width:100%}.class-card{max-width:100%;overflow:visible}.class-card-header{padding:1rem;flex-direction:column;align-items:flex-start;gap:.5rem;overflow:visible;min-height:auto}.class-card-header h3{font-size:.9375rem!important;line-height:1.4;word-break:break-word;width:100%;max-width:100%;padding:0;margin:0;color:#2c3e50!important;font-weight:600;display:block!important;order:2;opacity:1;visibility:visible;white-space:normal}.year-badge{font-size:.6875rem;padding:.1875rem .5rem;order:3}.today-badge{position:relative;top:0;right:0;font-size:.6875rem;padding:.1875rem .5rem;margin-bottom:.25rem;order:1}.class-card-body{padding:1rem;gap:.75rem}.class-info-item{font-size:.8125rem;gap:.5rem}.class-info-item i{font-size:.875rem;width:16px}.class-card-footer{padding:0 1rem 1rem}.btn-view{padding:.5rem .875rem;font-size:.8125rem}}.student-page{width:100%;max-width:1400px;margin:0 auto}.page-header{margin-bottom:1.5rem}.btn-back{padding:.625rem 1.25rem;background:#fff;border:2px solid #3498db;color:#3498db;border-radius:6px;font-size:.8125rem;font-weight:600;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;gap:.5rem}.btn-back:hover{background:#3498db;color:#fff}.btn-back i{font-size:.875rem}.class-overview-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:1.5rem;margin-bottom:1.5rem}.class-title-section{margin-bottom:1rem;padding-bottom:1rem;border-bottom:2px solid #e9ecef}.class-title-section h1{margin:0;color:#2c3e50;font-size:1.25rem}.class-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem}.info-item{display:flex;flex-direction:column;gap:.5rem}.info-label{font-size:.6875rem;color:#7f8c8d;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.info-value{font-size:.8125rem;color:#2c3e50;font-weight:600}.progress-table-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:1.5rem;overflow-x:auto}.progress-table-container h2{margin:0 0 1.5rem;color:#2c3e50;font-size:1.125rem}.scroll-hint{display:none}.table-wrapper{overflow-x:auto}.progress-table{width:100%;border-collapse:collapse;font-size:.75rem;min-width:900px}.progress-table thead{background:#f8f9fa}.progress-table th{padding:.875rem;text-align:left;font-weight:600;color:#2c3e50;border-bottom:2px solid #dee2e6;white-space:nowrap}.progress-table td{padding:.875rem;border-bottom:1px solid #e9ecef;vertical-align:top}.progress-table tbody tr:hover{background:#f8f9fa}.week-header,.week-cell{width:80px;font-weight:600;color:#2c3e50}.week-abbr{display:none}.content-header,.content-cell{min-width:150px}.grade-header,.grade-cell{width:120px;text-align:center}.files-header,.files-cell{min-width:180px}.topics-list{display:flex;flex-wrap:wrap;gap:.375rem}.topic-chip{display:inline-block;background:#e3f2fd;color:#1976d2;padding:.25rem .625rem;border-radius:4px;font-size:.625rem;font-weight:500}.test-cell{font-size:.75rem}.test-name{color:#2c3e50;font-weight:500;font-size:.75rem}.comments-cell{color:#555;font-size:.8125rem;max-width:200px}.grade-content{display:flex;flex-direction:column;align-items:center;gap:.5rem}.grade{font-weight:600;font-size:.875rem;color:#2c3e50}.grade-cell.incomplete{background:#fff9e6}.grade-cell.missing{background:#fee;color:#c0392b}.grade-cell.missing .grade{color:#c0392b}.attendance-header,.attendance-cell{text-align:center}.attendance-status{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%}.attendance-status.arrived{color:#27ae60}.attendance-status.arrived i{font-size:14px}.attendance-status.absent{color:#e74c3c}.attendance-status.absent i{font-size:14px}.attendance-cell.absent{background:#fee}.homework-comment{display:flex;align-items:center;gap:.375rem;font-size:.625rem;color:#7f8c8d;padding:.25rem .5rem;background:#f8f9fa;border-radius:4px;max-width:100%;position:relative}.homework-comment i{color:#3498db;font-size:.625rem;cursor:pointer}.comment-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px}.comment-tooltip{display:none;position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#2c3e50;color:#fff;padding:.5rem;border-radius:4px;font-size:.625rem;white-space:normal;max-width:200px;margin-bottom:.5rem;z-index:1000;box-shadow:0 2px 8px #0003}.comment-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:#2c3e50}.homework-comment:hover .comment-tooltip{display:block}.test-mark{font-weight:600;font-size:.875rem;color:#2c3e50}.files-list{display:flex;flex-direction:column;gap:.375rem}.file-item{display:flex;align-items:center;gap:.375rem;padding:.375rem .5rem;background:#f8f9fa;border-radius:4px;transition:background .2s}.file-item:hover{background:#e9ecef}.file-icon{color:#3498db;font-size:.75rem}.file-name{flex:1;cursor:pointer;color:#3498db;font-size:.6875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .2s}.file-name:hover{color:#2980b9;text-decoration:underline}.download-all-btn{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;background:#3498db;color:#fff;border:none;border-radius:6px;padding:.5rem .75rem;cursor:pointer;font-size:.875rem;transition:all .2s}.download-all-btn:hover:not(:disabled){background:#2980b9}.download-all-btn:disabled{opacity:.7;cursor:not-allowed}.download-all-btn i{font-size:.875rem}.download-all-btn .file-count{font-size:.625rem;background:#ffffff4d;padding:.125rem .375rem;border-radius:10px;font-weight:600}.no-content{color:#bdc3c7;font-style:italic;font-size:.6875rem}.empty-state{text-align:center;padding:3rem;color:#7f8c8d}.empty-state p{margin:0;font-size:.875rem}.loading-spinner{text-align:center;padding:3rem;font-size:.875rem;color:#7f8c8d}.alert{padding:1rem 1.5rem;border-radius:6px;margin-bottom:1.5rem}@media(max-width:768px){.student-page{width:100%;max-width:100%;overflow-x:hidden;box-sizing:border-box;padding:0}.class-overview-card{padding:1rem;margin-bottom:1rem;border-radius:4px}.progress-table-container{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:1rem;border-radius:4px}.table-wrapper{overflow-x:auto;max-width:100%}.class-title-section h1{font-size:1rem}.class-info-grid{grid-template-columns:1fr;gap:1rem}.info-label{font-size:.625rem}.info-value{font-size:.75rem}.progress-table-container h2{font-size:1rem;margin-bottom:.5rem}.scroll-hint{display:block;font-size:.7rem;color:#7f8c8d;margin:0 0 1rem;font-style:italic}.progress-table{font-size:.6875rem;min-width:500px}.progress-table th,.progress-table td{padding:.625rem .375rem}.progress-table th{font-size:.5625rem}.week-header,.week-cell{width:25px;padding-left:.15rem;padding-right:.15rem;min-width:30px;font-size:.625rem}.week-text{display:none}.week-abbr{display:inline}.content-header,.content-cell,.topics-cell{min-width:15px;max-width:15px}.test-cell{min-width:15px;max-width:15px;word-break:break-word;overflow-wrap:break-word;font-size:.6rem}.test-cell .test-name{font-size:.6rem}.grade-header,.grade-cell{width:55px}.attendance-header,.attendance-cell{width:70px;min-width:70px;max-width:70px}.files-header,.files-cell{min-width:80px}.topics-list{gap:.25rem;min-width:50px;max-width:50px}.topic-chip{font-size:.5625rem;padding:.125rem .375rem;width:70px;min-width:70px;max-width:70px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;box-sizing:border-box}.grade,.test-mark{font-size:.75rem}.files-header,.files-cell{min-width:10px;max-width:10px}.file-name{font-size:.625rem}.comment-text{display:none}.homework-comment{padding:.25rem;background:transparent}}.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;margin-bottom:2rem}.summary-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:1.5rem;display:flex;align-items:center;gap:1.5rem}.summary-card.pending{border-left:4px solid #e74c3c}.summary-card.booked{border-left:4px solid #3498db}.card-icon{font-size:2.5rem;color:#fff;width:70px;height:70px;display:flex;align-items:center;justify-content:center;border-radius:8px;flex-shrink:0}.summary-card.pending .card-icon{background:#e74c3c}.summary-card.booked .card-icon{background:#3498db}.card-content{flex:1;min-width:0}.card-content h3{margin:0;font-size:2rem;color:#2c3e50;font-weight:700}.card-content p{margin:.25rem 0 0;color:#7f8c8d;font-size:.9375rem}.detentions-section{margin-bottom:2.5rem}.detentions-section h2{color:#2c3e50;font-size:1.125rem;margin:0 0 1rem;display:flex;align-items:center;gap:.75rem}.detentions-section h2 i{color:#3498db;font-size:1rem}.detentions-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem}.detention-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden;transition:all .3s ease}.detention-card:hover{box-shadow:0 4px 12px #00000026}.pending-card{border-left:4px solid #e74c3c}.booked-card{border-left:4px solid #3498db}.detention-header{padding:1rem 1.25rem;background:#f8f9fa;border-bottom:1px solid #e9ecef;display:flex;justify-content:space-between;align-items:center}.detention-badge{padding:.25rem .5rem;border-radius:50%;font-size:.875rem;font-weight:600;display:flex;align-items:center;justify-content:center}.detention-badge.pending{background:transparent;color:#e74c3c;padding:0}.detention-badge.booked{background:#e3f2fd;color:#1976d2;font-size:.6875rem;padding:.1875rem .5rem}.detention-date{font-size:.75rem;color:#fff}.detention-body{padding:1.25rem;display:flex;flex-direction:column;gap:1rem}.detention-info{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:#555}.detention-info i{color:#3498db;width:14px;text-align:center;font-size:.8125rem}.detention-schedule{display:flex;flex-direction:column;gap:.5rem;padding:.75rem;background:#f8f9fa;border-radius:6px}.schedule-item{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:#2c3e50;font-weight:500}.schedule-item i{color:#3498db;width:14px;text-align:center;font-size:.8125rem}.detention-reason{font-size:.8125rem}.detention-reason strong{display:block;color:#2c3e50;margin-bottom:.375rem;font-size:.8125rem}.detention-reason p{margin:0;color:#555;line-height:1.5;padding:.5rem;background:#f8f9fa;border-radius:4px;font-size:.8125rem}.detention-footer{padding:0 1.25rem 1.25rem;display:flex;justify-content:space-between;align-items:center}.btn-book{width:100%;padding:.625rem .875rem;background:#3498db;color:#fff;border:none;border-radius:6px;font-size:.8125rem;font-weight:600;cursor:pointer;transition:background .2s;display:flex;align-items:center;justify-content:center;gap:.5rem}.btn-book:hover{background:#2980b9}.btn-book i{font-size:.8125rem}.btn-cancel-booking,.btn-rebook{background:transparent;border:none;padding:0;font-size:.75rem;font-weight:500;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:.375rem}.btn-cancel-booking{color:#e74c3c}.btn-cancel-booking:hover{color:#c0392b;text-decoration:underline}.btn-rebook{color:#f39c12}.btn-rebook:hover{color:#d68910;text-decoration:underline}.btn-cancel-booking i,.btn-rebook i{font-size:.6875rem}.empty-state-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:2.5rem;text-align:center}.empty-state-card i{font-size:2.5rem;color:#27ae60;margin-bottom:1rem}.empty-state-card p{margin:0;color:#7f8c8d;font-size:.875rem}.modal-content{background:#fff;border-radius:8px;box-shadow:0 4px 20px #0000004d;max-width:600px;width:100%;max-height:90vh;overflow:hidden;display:flex;flex-direction:column}.modal-header h3{margin:0;color:#000;font-size:1.375rem}.slot-option{display:flex;gap:1rem;padding:1rem;border:2px solid #e9ecef;border-radius:8px;cursor:pointer;transition:all .2s}.slot-option:hover{border-color:#3498db;background:#f8f9fa}.slot-option input[type=radio]{margin-top:.25rem;width:18px;height:18px;cursor:pointer}.slot-option input[type=radio]:checked+.slot-details{color:#3498db}.slot-details{flex:1;display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem;font-size:.875rem}.slot-date,.slot-time,.slot-room,.slot-capacity{display:flex;align-items:center;gap:.5rem;color:#2c3e50}.slot-details i{color:#3498db;width:16px;text-align:center}.slot-capacity{grid-column:span 2;justify-self:center;padding:.25rem .75rem;background:#e3f2fd;color:#1976d2;border-radius:12px;font-size:.75rem;font-weight:600}.btn-confirm:disabled{background:#bdc3c7;cursor:not-allowed}.help-text{font-size:.875rem;color:#7f8c8d;margin-top:.5rem}@media(max-width:768px){.summary-cards{grid-template-columns:1fr}.summary-card{padding:1.25rem}.detentions-grid{grid-template-columns:1fr}.card-icon{width:60px;height:60px;font-size:2rem;flex-shrink:0}.card-content{flex:1;min-width:0}.card-content h3{font-size:1.75rem;white-space:nowrap}.card-content p{font-size:.875rem}.slot-details{grid-template-columns:1fr}.slot-capacity{grid-column:span 1}.modal-content{margin:0;max-height:100vh;border-radius:0}.detention-footer{justify-content:space-between}}.booking-modal-large{width:95vw;max-width:1400px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column}.booking-modal-large .modal-body{overflow-y:auto;overflow-x:hidden;flex:1}.booking-controls{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.5rem;padding:1rem;background:#f8f9fa;border-radius:8px}.term-selector,.classroom-selector{display:flex;flex-direction:column;gap:.5rem}.term-selector label,.classroom-selector label{font-size:.875rem;font-weight:600;color:#2c3e50}.term-dropdown,.classroom-dropdown{width:100%;padding:.5rem .75rem;border:1px solid #ced4da;border-radius:6px;font-size:.875rem;background:#fff;cursor:pointer;transition:all .2s}.term-dropdown:hover,.classroom-dropdown:hover{border-color:#3498db}.term-dropdown:focus,.classroom-dropdown:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.calendar-container{background:#fff;border-radius:8px;border:1px solid #dee2e6;padding:1.5rem;margin-bottom:1.5rem}.calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:2px solid #e9ecef}.calendar-header h4{margin:0;font-size:1.25rem;color:#2c3e50;font-weight:600}.month-nav-btn{background:#f8f9fa;border:1px solid #dee2e6;border-radius:6px;padding:.5rem .75rem;cursor:pointer;transition:all .2s;color:#3498db;font-size:1rem}.month-nav-btn:hover{background:#3498db;color:#fff;border-color:#3498db}.calendar-grid{margin-bottom:1rem}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem;margin-bottom:.5rem}.calendar-weekday{text-align:center;font-weight:600;font-size:.875rem;color:#7f8c8d;padding:.5rem}.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem}.calendar-day{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:8px;font-size:.9375rem;font-weight:500;cursor:default;transition:all .2s;background:#f8f9fa;color:#6c757d;border:2px solid transparent;position:relative;gap:2px}.calendar-day .day-number{line-height:1}.calendar-day.empty{background:transparent}.calendar-day.past{opacity:.4;cursor:not-allowed}.calendar-day.has-slots{cursor:pointer;color:#2c3e50}.calendar-day.has-slots:hover:not(.past){background:#e8f4fd;border-color:#3498db;transform:scale(1.05);box-shadow:0 2px 8px #3498db33}.calendar-day.selected{background:#3498db;color:#fff;border-color:#2980b9;transform:scale(1.05);box-shadow:0 2px 8px #3498db4d;cursor:pointer}.available-dot{width:6px;height:6px;border-radius:50%;background:#27ae60;flex-shrink:0}.calendar-legend{display:flex;gap:1.5rem;padding-top:1rem;border-top:1px solid #e9ecef;justify-content:center}.legend-item{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:#495057}.legend-dot{width:20px;height:20px;border-radius:4px;border:2px solid transparent}.available-dot-legend{width:8px;height:8px;border-radius:50%;background:#27ae60}.selected-legend{width:20px;height:20px;border-radius:4px;background:#3498db;border:2px solid #2980b9}.slots-loading{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:3rem;color:#7f8c8d;font-size:1rem}.slots-loading i{font-size:1.25rem;color:#3498db}.available-slots{background:#fff;border-radius:8px;border:1px solid #dee2e6;padding:1.5rem;margin-bottom:1rem}.available-slots h4{margin:0 0 1rem;font-size:1.125rem;color:#2c3e50;font-weight:600;display:flex;align-items:center;gap:.5rem}.slots-list{display:flex;flex-direction:column;gap:.75rem}.slot-card{display:flex;align-items:center;gap:1rem;padding:1rem;border:2px solid #e9ecef;border-radius:8px;cursor:pointer;transition:all .2s;background:#fff}.slot-card:hover{border-color:#3498db;background:#f8f9fa;transform:translateY(-2px);box-shadow:0 2px 8px #3498db26}.slot-card.selected{border-color:#3498db;background:#e3f2fd;box-shadow:0 4px 12px #3498db33}.slot-card-icon{font-size:1.5rem;color:#3498db;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#e3f2fd;border-radius:8px;flex-shrink:0}.slot-card.selected .slot-card-icon{background:#3498db;color:#fff}.slot-card-details{flex:1;display:flex;flex-direction:column;gap:.5rem}.slot-card-time{font-size:1rem;font-weight:600;color:#2c3e50}.slot-card-info{display:flex;gap:1rem;font-size:.875rem;color:#6c757d}.slot-card-room,.slot-card-capacity{display:flex;align-items:center;gap:.375rem}.slot-card-room i{color:#3498db}.slot-card-check{font-size:1.5rem;color:#3498db;flex-shrink:0}.select-date-prompt{text-align:center;padding:3rem 2rem;color:#7f8c8d}.select-date-prompt i{font-size:3rem;color:#bdc3c7;margin-bottom:1rem;display:block}.select-date-prompt p{margin:0;font-size:1rem}@media(max-width:968px){.booking-modal-large{width:100vw;max-width:100vw;max-height:100vh;border-radius:0}.booking-modal-large .modal-body{overflow-y:auto;overflow-x:auto;padding:1rem;-webkit-overflow-scrolling:touch}.booking-controls{grid-template-columns:1fr}.calendar-container{padding:1rem}.calendar-header h4{font-size:1.125rem}.calendar-weekday{font-size:.75rem;padding:.375rem}.calendar-day{font-size:.8125rem}.available-slots{padding:1rem}.available-slots h4{font-size:1rem}}@media(max-width:576px){.modal-overlay{padding:0}.booking-modal-large .modal-header{padding:1rem;flex-shrink:0}.booking-modal-large .modal-header h3{font-size:1.125rem}.modal-close{font-size:1.25rem;padding:.25rem}.booking-modal-large .modal-body{padding:.75rem;overflow-y:auto;overflow-x:auto;flex:1;min-height:0;-webkit-overflow-scrolling:touch}.booking-controls{padding:.75rem;gap:.75rem;flex-shrink:0;grid-template-columns:1fr}.term-dropdown,.classroom-dropdown{font-size:.8125rem;padding:.5rem}.calendar-container{padding:.75rem}.calendar-header{margin-bottom:1rem;padding-bottom:.75rem}.calendar-header h4{font-size:1rem}.month-nav-btn{padding:.375rem .5rem;font-size:.875rem}.calendar-weekdays{gap:.25rem}.calendar-weekday{font-size:.625rem;padding:.25rem}.calendar-days{gap:.25rem}.calendar-day{font-size:.75rem;border-radius:6px}.calendar-legend{padding-top:.75rem;gap:1rem}.legend-item{font-size:.75rem}.legend-dot{width:16px;height:16px}.available-slots{padding:.75rem}.available-slots h4{font-size:.9375rem}.slot-card{padding:.75rem;gap:.75rem}.slot-card-icon{width:36px;height:36px;font-size:1.25rem}.slot-card-time{font-size:.9375rem}.slot-card-info{flex-direction:column;gap:.375rem;font-size:.8125rem}.slot-card-check{font-size:1.25rem}.select-date-prompt{padding:2rem 1rem}.select-date-prompt i{font-size:2.5rem}.select-date-prompt p{font-size:.9375rem}.modal-footer{padding:1rem;flex-direction:column-reverse;gap:.5rem;flex-shrink:0}.btn-cancel,.btn-confirm{width:100%;padding:.75rem 1rem;font-size:.875rem}}.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:1.5rem}.profile-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden}.card-header{padding:1.5rem;background:linear-gradient(135deg,#3498db,#2980b9);color:#fff;display:flex;align-items:center;gap:.75rem}.card-header i{font-size:1.5rem}.card-header h2{margin:0;font-size:1.25rem;font-weight:600}.card-body{padding:1.5rem}.profile-field{margin-bottom:1.5rem}.profile-field:last-child{margin-bottom:0}.profile-field label{display:block;font-size:.8125rem;color:#7f8c8d;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-bottom:.5rem}.field-value{font-size:1rem;color:#2c3e50;font-weight:500;padding:.75rem 1rem;background:#f8f9fa;border-radius:6px}.role-badge{display:inline-block;background:#3498db;color:#fff;padding:.375rem .875rem;border-radius:4px;font-size:.875rem;font-weight:600}.btn-settings{width:100%;padding:1rem 1.5rem;background:#fff;border:2px solid #3498db;color:#3498db;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:.75rem;margin-bottom:1.5rem}.btn-settings:hover{background:#3498db;color:#fff}.btn-settings i{font-size:1.125rem}.settings-info{display:flex;align-items:flex-start;gap:.75rem;padding:1rem;background:#e3f2fd;border-radius:6px;border-left:4px solid #3498db}.settings-info i{color:#3498db;font-size:1.25rem;margin-top:.125rem}.settings-info p{margin:0;color:#2c3e50;font-size:.875rem;line-height:1.5}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-content{background:#fff;border-radius:8px;box-shadow:0 4px 20px #0000004d;max-width:500px;width:100%;max-height:90vh;overflow:hidden;display:flex;flex-direction:column}.modal-header{padding:1.5rem;border-bottom:1px solid #e9ecef;display:flex;justify-content:space-between;align-items:center}.modal-header h3{margin:0;color:#2c3e50;font-size:1.375rem}.modal-close{background:transparent;border:none;color:#7f8c8d;font-size:1.5rem;cursor:pointer;padding:.25rem .5rem;transition:color .2s}.modal-close:hover{color:#2c3e50}.modal-body{padding:1.5rem;overflow-y:auto;flex:1}.modal-footer{padding:1.5rem;border-top:1px solid #e9ecef;display:flex;justify-content:flex-end;gap:1rem}.form-group{margin-bottom:1.5rem}.form-group:last-child{margin-bottom:0}.form-group label{display:block;font-size:.875rem;font-weight:600;color:#2c3e50;margin-bottom:.5rem}.form-input{width:100%;padding:.75rem 1rem;border:1px solid #dee2e6;border-radius:6px;font-size:.9375rem;transition:border-color .2s,box-shadow .2s}.form-input:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.form-help{display:block;margin-top:.375rem;font-size:.8125rem;color:#7f8c8d}.alert{padding:1rem 1.25rem;border-radius:6px;margin-bottom:1.5rem;display:flex;align-items:center;gap:.75rem}.alert i{font-size:1.125rem}.alert-error{background:#fee;color:#c0392b;border-left:4px solid #e74c3c}.alert-success{background:#d4edda;color:#155724;border-left:4px solid #28a745}.btn-cancel,.btn-confirm{padding:.75rem 1.5rem;border-radius:6px;font-size:.9375rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-cancel{background:transparent;border:1px solid #e9ecef;color:#7f8c8d}.btn-cancel:hover{background:#f8f9fa;border-color:#dee2e6}.btn-confirm{background:#3498db;border:none;color:#fff}.btn-confirm:hover{background:#2980b9}@media(max-width:768px){.profile-grid{grid-template-columns:1fr}.modal-content{margin:0;max-height:100vh;border-radius:0}.card-header h2{font-size:1.125rem}}.class-switch-requests-page{padding:20px}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.page-header h1{margin:0;color:#2c3e50}.create-form-section{background:#fff;padding:24px;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:30px}.create-form-section h2{margin-top:0;margin-bottom:20px;color:#2c3e50}.switch-request-form{max-width:600px}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;font-weight:500;color:#333}.form-group input,.form-group select,.form-group textarea{width:100%;padding:10px;border:1px solid #ddd;border-radius:4px;font-size:14px;box-sizing:border-box}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#3498db}.form-group small{display:block;margin-top:5px;color:#666;font-size:12px}.form-group small.text-info{color:#3498db;font-style:italic}.form-actions{display:flex;gap:10px;margin-top:20px}.btn-primary{background:#3498db;color:#fff;padding:10px 20px;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:500}.btn-primary:hover{background:#2980b9}.btn-secondary{background:#95a5a6;color:#fff;padding:10px 20px;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:500}.btn-secondary:hover{background:#7f8c8d}.btn-danger{background:#e74c3c;color:#fff;padding:8px 16px;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:500}.btn-danger:hover{background:#c0392b}.alert{padding:12px;border-radius:4px;margin-bottom:20px}.alert-error{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.requests-section{margin-top:30px}.requests-section h2{margin-bottom:20px;color:#2c3e50}.requests-list{display:flex;flex-direction:column;gap:15px}.request-card{background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 4px #0000001a}.request-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;padding-bottom:10px;border-bottom:1px solid #eee}.status-badge{padding:4px 12px;border-radius:12px;font-size:12px;font-weight:600;text-transform:uppercase}.badge-warning{background:#fff3cd;color:#856404}.badge-success{background:#d4edda;color:#155724}.badge-error{background:#f8d7da;color:#721c24}.badge-secondary{background:#e2e3e5;color:#383d41}.request-date{color:#666;font-size:14px}.request-body{margin-bottom:15px}.info-row{margin-bottom:10px;font-size:14px;line-height:1.6}.info-row strong{color:#333;margin-right:8px}.admin-notes{background:#f8f9fa;padding:10px;border-radius:4px;margin-top:10px}.request-actions{display:flex;gap:10px;justify-content:flex-end}.empty-state{text-align:center;padding:60px 20px;color:#999;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a}.empty-icon{font-size:48px;margin-bottom:20px;color:#ddd}.empty-state p{margin:0;font-size:16px}.loading-spinner{text-align:center;padding:40px;font-size:18px;color:#666}@media(max-width:768px){.class-switch-requests-page{padding:15px}.page-header{flex-direction:column;align-items:flex-start;gap:15px}.create-form-section{padding:15px}.switch-request-form{max-width:100%}.form-actions{flex-direction:column}.form-actions button{width:100%}.request-card{padding:15px}.request-header{flex-direction:column;align-items:flex-start;gap:10px}}.settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:1.5rem}.settings-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden}.section-description{margin:0 0 1.5rem;color:#7f8c8d;font-size:.875rem;line-height:1.5}.preferences-list{display:flex;flex-direction:column;gap:1rem}.preference-item{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:#f8f9fa;border-radius:8px;gap:1rem}.preference-info{flex:1}.preference-label{display:block;font-weight:600;color:#2c3e50;margin-bottom:.25rem;font-size:.9375rem}.preference-description{display:block;font-size:.8125rem;color:#7f8c8d;line-height:1.4}.toggle-switch{position:relative;display:inline-block;width:48px;height:26px;flex-shrink:0}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;transition:.3s;border-radius:26px}.toggle-slider:before{position:absolute;content:"";height:20px;width:20px;left:3px;bottom:3px;background-color:#fff;transition:.3s;border-radius:50%;box-shadow:0 1px 3px #0003}.toggle-switch input:checked+.toggle-slider{background-color:#27ae60}.toggle-switch input:checked+.toggle-slider:before{transform:translate(22px)}.toggle-switch input:disabled+.toggle-slider{opacity:.6;cursor:not-allowed}.parent-emails-list{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.5rem}.parent-email-item{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:#f8f9fa;border-radius:8px;gap:1rem}.parent-email-info{flex:1;min-width:0}.parent-email-header{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.parent-email-address{font-weight:600;color:#2c3e50;font-size:.9375rem;word-break:break-all}.primary-badge{display:inline-block;background:#3498db;color:#fff;padding:.125rem .5rem;border-radius:4px;font-size:.6875rem;font-weight:600;text-transform:uppercase}.parent-relationship{display:block;font-size:.8125rem;color:#7f8c8d;margin-top:.25rem}.parent-email-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.notification-toggle{position:relative;display:inline-block;width:36px;height:20px}.notification-toggle input{opacity:0;width:0;height:0}.small-toggle-slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;transition:.3s;border-radius:20px}.small-toggle-slider:before{position:absolute;content:"";height:14px;width:14px;left:3px;bottom:3px;background-color:#fff;transition:.3s;border-radius:50%;box-shadow:0 1px 2px #0003}.notification-toggle input:checked+.small-toggle-slider{background-color:#27ae60}.notification-toggle input:checked+.small-toggle-slider:before{transform:translate(16px)}.notification-toggle input:disabled+.small-toggle-slider{opacity:.6;cursor:not-allowed}.btn-icon{width:32px;height:32px;border:none;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.btn-icon:disabled{opacity:.5;cursor:not-allowed}.btn-set-primary{background:#fff3e0;color:#f39c12}.btn-set-primary:hover:not(:disabled){background:#f39c12;color:#fff}.btn-remove{background:#fee;color:#e74c3c}.btn-remove:hover:not(:disabled){background:#e74c3c;color:#fff}.btn-add-parent{width:100%;padding:.875rem 1.5rem;background:#fff;border:2px dashed #3498db;color:#3498db;border-radius:8px;font-size:.9375rem;font-weight:600;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:.5rem}.btn-add-parent:hover:not(:disabled){background:#e3f2fd;border-style:solid}.btn-add-parent:disabled{opacity:.6;cursor:not-allowed}.empty-state{text-align:center;padding:2rem;color:#7f8c8d;margin-bottom:1rem}.empty-state i{font-size:2.5rem;margin-bottom:.75rem;opacity:.5}.empty-state p{margin:0;font-size:.9375rem}.checkbox-group{margin-top:1rem}.checkbox-label{display:flex;align-items:center;gap:.75rem;cursor:pointer;-webkit-user-select:none;user-select:none}.checkbox-label input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:#3498db}.checkbox-text{font-size:.9375rem;color:#2c3e50}@media(max-width:768px){.settings-grid{grid-template-columns:1fr}.preference-item{flex-direction:column;align-items:flex-start;gap:.75rem}.preference-info{width:100%}.parent-email-item{flex-direction:column;align-items:flex-start}.parent-email-actions{width:100%;justify-content:flex-end;margin-top:.5rem;padding-top:.75rem;border-top:1px solid #e9ecef}}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(prefers-reduced-motion:no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}
