.App{background-color:#f8fafc;display:flex;flex-direction:column;min-height:100vh;overflow-x:hidden}.App *{box-sizing:border-box}::-webkit-scrollbar{width:auto}::-webkit-scrollbar-track{background:#0000}::-webkit-scrollbar-thumb{background:#0003;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#0000004d}body,html{background:#f8fafc}.app-main{position:relative;z-index:1}.app-header{background:linear-gradient(135deg,#1e3a8a,#3b82f6);box-shadow:0 2px 10px #0000001a;color:#fff;height:70px;left:0;padding:1rem 0;position:fixed;right:0;top:0;z-index:1000}.header-content{align-items:center;display:flex;justify-content:space-between;max-width:1400px;padding:0 2rem}.header-content h1{font-size:1.8rem;font-weight:700;margin:0}.app-header h1:after{color:#fffc;content:" - 家長版";font-size:.6em;font-weight:400;margin-left:10px}[data-role=admin],[data-role=teacher]{display:none!important}.user-info{align-items:center;display:flex;gap:1rem}.logout-btn{background:#fff3;border:1px solid #ffffff4d;border-radius:6px;color:#fff;cursor:pointer;padding:.5rem 1rem;transition:all .2s}.logout-btn:hover{background:#ffffff4d;border-color:#ffffff80}.sidebar-toggle{align-items:center;background:#fff3;border:1px solid #ffffff4d;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-size:1.2rem;justify-content:center;margin-right:1rem;min-height:40px;min-width:40px;padding:.5rem;transition:all .2s;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.sidebar-toggle:hover{background:#ffffff4d;border-color:#ffffff80}.sidebar-toggle:active{background:#fff6;transform:scale(.95)}.sidebar-toggle.active{background:#ffffff4d;border-color:#fff9}.sidebar-toggle.active:hover{background:#fff6;border-color:#fffc}.app-sidebar{background:#fff;box-shadow:2px 0 10px #0000001a;height:calc(100vh - 70px);left:0;overflow-y:auto;position:fixed;top:70px;transition:transform .3s ease;width:140px;z-index:999}.app-sidebar.closed{transform:translateX(-100%);visibility:hidden}.app-sidebar.open{transform:translateX(0);visibility:visible}.sidebar-backdrop{background-color:#00000080;bottom:0;cursor:pointer;display:none;left:0;position:fixed;right:0;top:0;transition:opacity .3s ease;z-index:998}@media (max-width:768px){.sidebar-backdrop{display:block}.app-sidebar{max-width:35vw;width:140px}.app-sidebar.closed{transform:translateX(-100%)}.app-sidebar.open{transform:translateX(0)}}.sidebar-navigation{padding:1rem 0}.sidebar-nav-item{align-items:center;display:flex;margin:.25rem .5rem}.sidebar-nav-button{align-items:center;background:#0000;border:none;border-radius:8px;color:#374151;cursor:pointer;display:flex;flex-direction:column;font-size:.9rem;font-weight:500;gap:.25rem;justify-content:center;line-height:1.3;min-height:60px;padding:.75rem .5rem;text-align:center;transition:all .2s;width:100%}.sidebar-nav-button:hover{background:#f3f4f6;color:#1f2937}.sidebar-nav-button.active{background:#3b82f6;color:#fff;font-weight:600}.sidebar-nav-button.active:hover{background:#2563eb}.app-main{flex:1 1;margin-left:0;margin-top:70px;padding:2rem;transition:margin-left .3s ease}.app-main.with-sidebar{margin-left:140px}.app-main.without-sidebar{margin-left:0}.app-footer{background:#1f2937;color:#fff;margin-top:auto;padding:2rem 0}.app-loading,.auth-container{align-items:center;background:#f8fafc;display:flex;flex-direction:column;height:100vh;justify-content:center}.auth-container{gap:2rem}@media (max-width:1024px){.app-sidebar{width:140px}.app-main.with-sidebar{margin-left:140px}}@media (max-width:768px){.app-sidebar{transform:translateX(-100%);width:100%}.app-sidebar.open{transform:translateX(0)}.app-main.with-sidebar,.app-main.without-sidebar{margin-left:0;padding:1rem}.header-content{padding:0 1rem}.header-content h1{font-size:1.5rem}}@media (max-width:480px){.app-main{padding:1rem}.user-info{flex-direction:column;gap:.5rem}.sidebar-nav-button{font-size:.9rem;padding:.6rem .8rem}}.text-center{text-align:center}.mb-4{margin-bottom:1rem}.mt-4{margin-top:1rem}.p-4{padding:1rem}.rounded{border-radius:.375rem}.module-container,.shadow{box-shadow:0 1px 3px #0000001a}.module-container{background:#fff;border-radius:12px;margin-bottom:2rem;padding:2rem}.module-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;margin-bottom:1.5rem;padding-bottom:1rem}.module-title{color:#1f2937;font-size:1.5rem;font-weight:600;margin:0}.back-button{background-color:#f3f4f6;border:1px solid #e5e7eb;border-radius:12px;color:#374151;font-size:16px;gap:8px;margin-bottom:16px;padding:12px 24px}.back-button:hover{background-color:#e5e7eb;border-color:#d1d5db;box-shadow:0 2px 8px #0000001a}.back-button:active{box-shadow:0 1px 4px #0000001a;transform:translateY(0)}.page-header{background:linear-gradient(90deg,#10b981,#059669);box-shadow:0 4px 12px #0000001a;margin-bottom:24px}.page-header h1{font-size:24px}.module-header{background:linear-gradient(90deg,#10b981,#059669);border-radius:12px;box-shadow:0 4px 12px #0000001a;color:#fff;margin-bottom:24px;padding:20px}.module-header h1{font-size:24px;font-weight:600;margin:0}.data-table{border-collapse:collapse;margin-top:1rem;width:100%}.data-table td,.data-table th{border-bottom:1px solid #e5e7eb;padding:.75rem;text-align:left}.data-table th{color:#374151;font-weight:600}.data-table th,.data-table tr:hover{background:#f9fafb}.form-group{margin-bottom:1rem}.form-label{color:#374151;font-weight:500;margin-bottom:.5rem}.form-input{border:1px solid #d1d5db;font-size:.9rem;padding:.75rem}.form-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.btn{border-radius:6px;font-size:.9rem;font-weight:500;padding:.75rem 1.5rem;transition:all .2s}.btn-primary{background:#3b82f6}.btn-primary:hover{background:#2563eb}.btn-secondary{background:#6b7280}.btn-secondary:hover{background:#4b5563}.btn-success{background:#10b981;color:#fff}.btn-success:hover{background:#059669}.btn-danger{background:#ef4444;color:#fff}.btn-danger:hover{background:#dc2626}.parent-view-only{opacity:.8;pointer-events:none}.parent-view-only:after{color:#6b7280;content:" (僅供查看)";font-size:.85em;font-style:italic}.unified-calendar-system{background:#fff;border-radius:12px;box-shadow:0 4px 20px #0000001a;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;margin:0 auto;max-width:1200px;padding:20px}.calendar-loading{align-items:center;color:#666;display:flex;font-size:18px;height:400px;justify-content:center}.calendar-header{gap:20px;justify-content:space-between;margin-bottom:30px}.calendar-controls,.calendar-header{align-items:center;display:flex;flex-wrap:wrap}.calendar-controls{gap:30px}.calendar-navigation{gap:20px}.nav-button{background:#4a90e2;border:none;border-radius:50%;color:#fff;font-size:20px;height:40px;justify-content:center;width:40px}.nav-button:hover{background:#357abd;transform:scale(1.05)}.calendar-title{color:#2c3e50;font-size:28px;font-weight:600;margin:0;text-align:center}.academic-year{color:#7f8c8d;display:block;font-size:14px;font-weight:400;margin-top:5px}.academic-year-selector{align-items:center;display:flex;gap:10px}.academic-year-selector label{color:#2c3e50;font-size:16px;font-weight:600}.year-select{background:#fff;border:2px solid #e2e8f0;border-radius:8px;color:#2c3e50;cursor:pointer;font-size:16px;font-weight:500;min-width:140px;padding:8px 12px;transition:all .3s ease}.year-select:focus,.year-select:hover{border-color:#4a90e2}.year-select:focus{box-shadow:0 0 0 3px #4a90e21a;outline:none}.view-mode-selector{align-items:center;display:flex;flex-wrap:wrap;gap:12px}.view-mode-checkbox{align-items:center;cursor:pointer;display:flex;-webkit-user-select:none;user-select:none}.view-checkbox{display:none}.checkbox-label{background:#fff;border:2px solid #e2e8f0;border-radius:8px;color:#2c3e50;font-weight:500;gap:8px;padding:8px 12px;transition:all .3s ease;white-space:nowrap}.checkbox-label:hover{background:#f8f9ff;border-color:#4a90e2}.view-checkbox:checked+.checkbox-label{background:#4a90e2;border-color:#4a90e2;color:#fff}.color-indicator{border:2px solid #fff;border-radius:50%;box-shadow:0 1px 3px #0003;height:12px;width:12px}.view-checkbox:checked+.checkbox-label .color-indicator{border-color:#fffc}.calendar-grid{border-radius:8px;box-shadow:0 2px 8px #0000000d}.weekdays{background:#f8f9fa;border-bottom:2px solid #e9ecef;display:grid;grid-template-columns:repeat(7,1fr)}.weekday{color:#495057;font-size:14px;font-weight:600;padding:15px 8px;text-align:center}.calendar-days{grid-gap:1px;background:#e9ecef;display:grid;gap:1px;grid-template-columns:repeat(7,1fr)}.calendar-day{background:#fff;display:flex;flex-direction:column;padding:8px;transition:all .2s ease}.calendar-day:hover{background:#f8f9fa;transform:translateY(-1px)}.calendar-day.empty{background:#f8f9fa;min-height:120px}.calendar-day.today{background:#e3f2fd;border:2px solid #2196f3}.calendar-day.weekend{background:#fafafa}.calendar-day.weekend .day-number{color:#f44336}.day-number{align-items:center;color:#2c3e50;display:flex;font-size:16px;justify-content:space-between;margin-bottom:4px}.cycle-day{background:#4a90e2;border-radius:8px;box-shadow:0 1px 3px #0003;color:#fff;font-size:10px;font-weight:700;line-height:1;min-width:16px;padding:2px 4px;position:absolute;right:2px;text-align:center;top:2px}.day-events{display:flex;flex:1 1;flex-direction:column;gap:2px;overflow:hidden}.event{border:1px solid #fff3;border-radius:4px;color:#fff;cursor:pointer;font-size:11px;font-weight:500;overflow:hidden;padding:2px 6px;text-overflow:ellipsis;transition:all .2s ease;white-space:nowrap}.event:hover{box-shadow:0 2px 4px #0003;filter:brightness(1.1);transform:translateY(-1px)}.event.holiday{background-color:#ff6b6b!important}.event.school_event{background-color:#4ecdc4!important}.event.eca_event{background-color:#45b7d1!important}.event.slp_event{background-color:#96ceb4!important}.calendar-legend{background:#f8f9fa;border-radius:8px;display:flex;flex-wrap:wrap;gap:30px;justify-content:center;margin-top:20px;padding:15px}.legend-item{color:#495057;font-size:14px;gap:8px}.legend-color{border-radius:4px;display:inline-block;height:16px;width:16px}@media (max-width:768px){.unified-calendar-system{padding:15px}.calendar-header{flex-direction:column;gap:15px}.calendar-title{font-size:24px}.view-mode-selector{gap:8px;justify-content:center;width:100%}.checkbox-label{font-size:12px;padding:6px 10px}.color-indicator{height:10px;width:10px}.calendar-day{min-height:80px;padding:6px}.day-number{font-size:14px}.event{font-size:10px;padding:1px 4px}.calendar-legend{gap:15px}.legend-item{font-size:13px}}@media (max-width:480px){.unified-calendar-system{padding:10px}.calendar-day{min-height:60px;padding:4px}.day-number{font-size:12px}.cycle-day{font-size:8px;padding:1px 4px}.event{font-size:9px}.weekday{font-size:12px;padding:10px 4px}}.calendar-no-events{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;margin:20px 0;padding:20px;text-align:center}.no-events-message{color:#6c757d}.no-events-message span{display:block;font-size:18px;font-weight:600;margin-bottom:10px}.no-events-message p{font-size:14px;margin:10px 0 20px}.navigate-to-events-btn{background:#4a90e2;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:all .3s ease}.navigate-to-events-btn:hover{background:#357abd;box-shadow:0 2px 8px #00000026;transform:translateY(-1px)}.calendar-events-summary{background:#e8f5e8;border:1px solid #c8e6c9;border-radius:8px;color:#2e7d32;font-size:14px;font-weight:500;margin:20px 0;padding:15px 20px;text-align:center}.calendar-management{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;margin:0 auto;max-width:1200px;padding:20px}.management-header{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;color:#fff;margin-bottom:30px;padding:20px;text-align:center}.management-header h2{font-size:28px;font-weight:600;margin:0 0 10px}.management-header p{font-size:16px;margin:0;opacity:.9}.management-grid{grid-gap:30px;display:grid;gap:30px;grid-template-columns:1fr 1fr;margin-bottom:30px}.management-section{background:#fff;border:1px solid #e1e8ed;border-radius:12px;box-shadow:0 4px 20px #00000014;padding:25px}.management-section h3{align-items:center;color:#2c3e50;display:flex;font-size:20px;font-weight:600;gap:8px;margin:0 0 20px}.export-section{border-left:4px solid #27ae60}.import-section{border-left:4px solid #3498db}.form-group label{color:#34495e}.form-file{background:#f8f9fa;border:2px dashed #bdc3c7;border-radius:8px;cursor:pointer;padding:12px;transition:all .3s ease;width:100%}.form-file:hover{background:#ecf0f1;border-color:#3498db}.form-file:focus{border-color:#3498db;box-shadow:0 0 0 3px #3498db1a;outline:none}.form-help{color:#7f8c8d;display:block;font-size:12px;line-height:1.4;margin-top:6px}.checkbox-label{align-items:center;color:#34495e;cursor:pointer;display:flex;font-size:14px;-webkit-user-select:none;user-select:none}.form-checkbox{accent-color:#3498db}.checkmark,.form-checkbox{height:18px;margin-right:10px;width:18px}.checkmark{border:2px solid #bdc3c7;border-radius:4px;display:inline-block;position:relative;transition:all .3s ease}.form-checkbox:checked+.checkmark{background-color:#3498db;border-color:#3498db}.form-checkbox:checked+.checkmark:after{color:#fff;content:"✓";font-size:12px;font-weight:700;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.btn{align-items:center;display:flex;font-size:16px;gap:8px;justify-content:center;padding:14px 20px;width:100%}.btn:disabled{cursor:not-allowed;opacity:.6}.btn-export{background:linear-gradient(135deg,#27ae60,#2ecc71);color:#fff}.btn-export:hover:not(:disabled){box-shadow:0 6px 20px #27ae604d;transform:translateY(-2px)}.btn-import{background:linear-gradient(135deg,#3498db,#2980b9);color:#fff}.btn-import:hover:not(:disabled){box-shadow:0 6px 20px #3498db4d;transform:translateY(-2px)}.message{align-items:center;animation:slideIn .3s ease;display:flex;gap:12px;padding:16px 20px}.message.success{background:#d4edda}.message.error{background:#f8d7da}.message.info{background:#d1ecf1}.message-icon{font-size:18px}.message-text{flex:1 1}.preview-section{animation:slideIn .3s ease;background:#fff;border:1px solid #e1e8ed;border-radius:12px;box-shadow:0 4px 20px #00000014;margin-bottom:20px;padding:25px}.preview-header{border-bottom:2px solid #f39c12;margin-bottom:20px;padding-bottom:15px;text-align:center}.preview-header h3{color:#2c3e50;font-size:22px;font-weight:600;margin:0 0 8px}.preview-header p{color:#7f8c8d;font-size:14px;margin:0}.preview-content{grid-gap:25px;display:grid;gap:25px}.preview-summary{background:#f8f9fa;border-left:4px solid #3498db;border-radius:8px;padding:20px}.preview-summary h4{color:#2c3e50;font-size:18px;font-weight:600;margin:0 0 15px}.summary-grid{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.summary-item{align-items:center;background:#fff;border:1px solid #e1e8ed;border-radius:6px;display:flex;justify-content:space-between;padding:10px 15px}.summary-label{color:#34495e}.summary-value{background:#d4edda;border-radius:4px;color:#27ae60;font-size:14px;font-weight:600;padding:4px 8px}.preview-actions{text-align:center}.action-buttons{margin-bottom:20px}.btn-confirm{background:linear-gradient(135deg,#27ae60,#2ecc71);color:#fff;min-width:200px}.btn-confirm:hover:not(:disabled){box-shadow:0 6px 20px #27ae604d;transform:translateY(-2px)}.btn-cancel{background:linear-gradient(135deg,#e74c3c,#c0392b);color:#fff;min-width:200px}.btn-cancel:hover:not(:disabled){box-shadow:0 6px 20px #e74c3c4d;transform:translateY(-2px)}.action-note{background:#fff3cd;border:1px solid #ffeaa7;border-radius:8px;padding:15px;text-align:left}.action-note p{color:#856404;font-size:14px;line-height:1.4;margin:5px 0}.action-note strong{color:#d63031}.data-section{background:#fff;border:1px solid #e1e8ed;border-radius:8px;overflow:hidden}.data-header{align-items:center;background:#f8f9fa;border-bottom:1px solid #e1e8ed;display:flex;flex-wrap:wrap;gap:15px;justify-content:space-between;padding:15px 20px}.data-header h4{color:#2c3e50;font-size:16px;font-weight:600;margin:0}.view-toggle{background:#e9ecef;border-radius:6px;display:flex;gap:5px;padding:3px}.toggle-btn{background:#0000;border:none;border-radius:4px;color:#6c757d;font-weight:500;transition:all .3s ease}.toggle-btn.active{background:#3498db;box-shadow:0 2px 4px #3498db33}.toggle-btn:hover:not(.active){background:#dee2e6;color:#495057}.data-actions{display:flex;gap:10px}.json-header{align-items:center;background:#f8f9fa;border-bottom:1px solid #e1e8ed;display:flex;justify-content:space-between;padding:15px 20px}.json-header h4{color:#2c3e50;font-size:16px;font-weight:600;margin:0}.json-actions{display:flex;gap:10px}.btn-edit{background:linear-gradient(135deg,#f39c12,#e67e22);color:#fff;font-size:14px;min-width:auto;padding:8px 16px}.btn-edit:hover:not(:disabled){box-shadow:0 4px 15px #f39c124d;transform:translateY(-1px)}.edit-actions{display:flex;gap:8px}.btn-save{background:linear-gradient(135deg,#27ae60,#2ecc71);color:#fff;font-size:14px;min-width:auto;padding:8px 16px}.btn-save:hover:not(:disabled){box-shadow:0 4px 15px #27ae604d;transform:translateY(-1px)}.btn-cancel-edit{background:linear-gradient(135deg,#e74c3c,#c0392b);color:#fff;font-size:14px;min-width:auto;padding:8px 16px}.btn-cancel-edit:hover:not(:disabled){box-shadow:0 4px 15px #e74c3c4d;transform:translateY(-1px)}.json-display{background:#f8f9fa;max-height:500px;overflow-y:auto;padding:20px}.json-content{word-wrap:break-word;background:#2c3e50;border:1px solid #34495e;border-radius:6px;box-shadow:inset 0 1px 3px #0003;color:#ecf0f1;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:13px;line-height:1.5;margin:0;padding:15px;white-space:pre-wrap}.json-edit{background:#f8f9fa;padding:20px}.json-textarea{background:#2c3e50;border:2px solid #3498db;border-radius:6px;color:#ecf0f1;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:13px;line-height:1.5;min-height:400px;outline:none;padding:15px;resize:vertical;transition:border-color .3s ease;width:100%}.json-textarea:focus{border-color:#2980b9;box-shadow:0 0 0 3px #3498db1a}.json-textarea::placeholder{color:#95a5a6}.edit-help{background:#fff3cd;border:1px solid #ffeaa7;border-radius:6px;margin-top:15px;padding:15px}.edit-help p{color:#856404;font-size:13px;line-height:1.4;margin:5px 0}.edit-help strong{color:#d63031}.form-display,.form-edit{background:#f8f9fa;padding:20px}.academic-year-card{background:#fff;border:1px solid #e1e8ed;border-radius:8px;box-shadow:0 2px 4px #0000000d;margin-bottom:20px;padding:20px}.academic-year-card h5{border-bottom:2px solid #3498db;color:#2c3e50;font-size:18px;font-weight:600;margin:0 0 15px;padding-bottom:8px}.data-section-group{margin-bottom:25px}.data-section-group h5{background:#fff;border-left:4px solid #f39c12;border-radius:6px;color:#2c3e50;font-size:16px;font-weight:600;margin:0 0 15px;padding:10px 15px}.cards-grid{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}.event-card{background:#fff;border:1px solid #e1e8ed;border-radius:8px;box-shadow:0 2px 8px #00000014;padding:20px;transition:all .3s ease}.event-card:hover{box-shadow:0 4px 12px #0000001f;transform:translateY(-2px)}.event-card.editable{background:#f8f9fa;border:2px solid #3498db}.event-header{align-items:center;border-bottom:1px solid #e9ecef;display:flex;justify-content:space-between;margin-bottom:15px;padding-bottom:10px}.event-title{color:#2c3e50;flex:1 1;font-size:16px;font-weight:600;margin:0}.event-type{background:#e9ecef;border-radius:4px;color:#495057;font-size:12px;font-weight:500;padding:4px 8px}.event-details{grid-gap:10px;display:grid;gap:10px}.detail-row{align-items:center;border-bottom:1px solid #f8f9fa;display:flex;justify-content:space-between;padding:8px 0}.detail-label{min-width:80px}.detail-value{color:#2c3e50;flex:1 1;margin-left:15px;text-align:right}.priority-badge{border-radius:4px;font-size:12px;padding:4px 8px;text-transform:uppercase}.priority-low{background:#d4edda;color:#155724}.priority-medium{background:#fff3cd;color:#856404}.priority-high{background:#f8d7da;color:#721c24}.status-badge{border-radius:4px;text-transform:uppercase}.status-pending{background:#fff3cd;color:#856404}.status-confirmed{background:#d4edda;color:#155724}.status-cancelled{background:#f8d7da;color:#721c24}.activity-card{background:#fff;border:1px solid #e1e8ed;border-radius:8px;box-shadow:0 2px 8px #00000014;padding:20px;transition:all .3s ease}.activity-card:hover{box-shadow:0 4px 12px #0000001f;transform:translateY(-2px)}.activity-card.editable{background:#f8f9fa;border:2px solid #3498db}.activity-header{align-items:center;border-bottom:1px solid #e9ecef;display:flex;justify-content:space-between;margin-bottom:15px;padding-bottom:10px}.activity-title{color:#2c3e50;flex:1 1;font-size:16px;font-weight:600;margin:0}.activity-category{background:#e9ecef;border-radius:4px;color:#495057;font-size:12px;font-weight:500;padding:4px 8px}.category-card{background:#fff;border:1px solid #e1e8ed;border-radius:8px;box-shadow:0 2px 8px #00000014;padding:20px;transition:all .3s ease}.category-card:hover{box-shadow:0 4px 12px #0000001f;transform:translateY(-2px)}.category-header{align-items:center;border-bottom:1px solid #e9ecef;display:flex;justify-content:space-between;margin-bottom:15px;padding-bottom:10px}.category-title{color:#2c3e50;flex:1 1;font-size:16px;font-weight:600;margin:0}.category-color{border:2px solid #e9ecef}.cycle-config-card{background:#fff;border:1px solid #e1e8ed;border-radius:8px;box-shadow:0 2px 8px #00000014;padding:20px}.cycle-config-card h5{border-bottom:2px solid #f39c12;color:#2c3e50;font-size:16px;font-weight:600;margin:0 0 15px;padding-bottom:8px}.edit-header{align-items:center;background:#fff;border:1px solid #e1e8ed;border-radius:8px;display:flex;justify-content:space-between;margin-bottom:20px;padding:15px}.edit-header h5{color:#2c3e50;font-size:18px;font-weight:600;margin:0}.form-row{display:flex;flex-direction:column;gap:5px;margin-bottom:15px}.form-row label{color:#34495e;font-size:14px;font-weight:500}.form-input{border:2px solid #e1e8ed;border-radius:6px;font-size:14px;padding:10px 12px}.form-input:focus{border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.form-textarea{border:2px solid #e1e8ed;border-radius:6px;font-size:14px;min-height:80px;padding:10px 12px;resize:vertical;transition:all .3s ease}.form-textarea:focus{border-color:#3498db;box-shadow:0 0 0 3px #3498db1a;outline:none}.form-select{border:2px solid #e1e8ed;border-radius:6px;padding:10px 12px;transition:all .3s ease}.form-select:focus{border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.event-title-input{color:#2c3e50;font-size:16px;font-weight:600}.event-type-select{min-width:120px}.activity-title-input{color:#2c3e50;font-size:16px;font-weight:600}.instructions{background:#fff;border:1px solid #e1e8ed;border-radius:12px;box-shadow:0 4px 20px #00000014;padding:25px}.instructions h3{align-items:center;color:#2c3e50;display:flex;font-size:20px;font-weight:600;gap:8px;margin:0 0 20px}.instruction-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.instruction-item{background:#f8f9fa;border-left:4px solid #f39c12;border-radius:8px;padding:20px}.instruction-item h4{align-items:center;color:#2c3e50;display:flex;font-size:16px;font-weight:600;gap:8px;margin:0 0 15px}.instruction-item ol,.instruction-item ul{color:#34495e;font-size:14px;line-height:1.6;margin:0;padding-left:20px}.instruction-item li{margin-bottom:6px}.instruction-item strong{color:#2c3e50}@media (max-width:768px){.calendar-management{padding:15px}.management-grid{gap:20px;grid-template-columns:1fr}.management-section{padding:20px}.instruction-grid{grid-template-columns:1fr}.management-header h2{font-size:24px}.btn{font-size:14px;padding:12px 16px}.preview-section{padding:20px}.action-buttons{align-items:center;flex-direction:column}.btn-cancel,.btn-confirm{max-width:300px;min-width:100%}.summary-grid{grid-template-columns:1fr}.json-header{align-items:stretch;flex-direction:column;gap:15px}.json-actions{justify-content:center}.edit-actions{align-items:center;flex-direction:column}.json-textarea{font-size:12px;min-height:300px}.data-header{align-items:stretch;flex-direction:column}.view-toggle{justify-content:center}.cards-grid{grid-template-columns:1fr}.activity-card,.category-card,.event-card{padding:15px}.form-row{margin-bottom:12px}}@media (max-width:480px){.calendar-management{padding:10px}.instructions,.management-section,.preview-section{padding:15px}.form-file,.form-select{font-size:14px;padding:10px 12px}}.calendar-settings{margin:0 auto;max-width:800px;padding:20px}.settings-container{background:#fff;border-radius:12px;box-shadow:0 4px 20px #0000001a;overflow:hidden}.settings-section{border-bottom:1px solid #e9ecef;padding:30px}.settings-section:last-child{border-bottom:none}.section-title{align-items:center;display:flex;font-size:24px;gap:10px;margin-bottom:10px}.section-description{color:#6c757d;font-size:16px;line-height:1.5;margin-bottom:25px}.setting-option{margin-bottom:20px}.radio-option{align-items:flex-start;border:2px solid #e9ecef;border-radius:10px;gap:15px;padding:20px;transition:all .3s ease}.radio-option:hover{background-color:#f8f9fa;border-color:#4a90e2}.radio-option input[type=radio]{accent-color:#4a90e2;height:20px;margin-top:3px;width:20px}.radio-label{display:flex;flex:1 1;flex-direction:column;gap:8px}.radio-label strong{color:#2c3e50;font-size:18px}.option-description{color:#6c757d;font-size:14px;line-height:1.4}.current-setting-display{background:#f8f9fa;padding:30px;text-align:center}.current-setting-display h3{color:#2c3e50;font-size:20px;margin-bottom:20px}.setting-badge{border-radius:25px;color:#fff;display:inline-block;font-size:16px;font-weight:600;margin-bottom:15px;padding:12px 24px}.setting-badge.normal-mode{background:linear-gradient(135deg,#28a745,#20c997)}.setting-badge.cycle-mode{background:linear-gradient(135deg,#4a90e2,#6f42c1)}.setting-explanation{color:#6c757d;font-size:16px;line-height:1.5;margin:0 auto;max-width:500px}.coming-soon{padding:20px;text-align:center}.coming-soon-badge{background:#ffc107;border-radius:20px;color:#212529;display:inline-block;font-size:14px;font-weight:600;margin-bottom:20px;padding:8px 16px}.coming-soon-features{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));list-style:none;margin:0;padding:0}.coming-soon-features li{background:#e9ecef;border-radius:8px;color:#6c757d;font-size:14px;padding:12px 16px;text-align:center}@media (max-width:768px){.calendar-settings{padding:15px}.settings-section{padding:20px}.section-title{font-size:20px}.radio-option{padding:15px}.coming-soon-features{grid-template-columns:1fr}}.calendar-page{background:linear-gradient(135deg,#667eea,#764ba2);min-height:100vh;padding:20px}.calendar-tabs{display:flex;gap:10px;justify-content:center;margin-bottom:20px}.tab-button{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fff3;border:1px solid #ffffff1a;border-radius:8px;color:#fff;font-size:16px;padding:12px 24px}.tab-button:hover{background:#ffffff4d}.tab-button.active{background:#ffffffe6;box-shadow:0 4px 15px #0000001a;color:#2c3e50;font-weight:600}.page-header{text-align:center}.page-title{font-size:36px;font-weight:700;margin-bottom:10px;text-shadow:0 2px 4px #0000004d}.page-description{font-size:18px;margin:0;opacity:.9;text-shadow:0 1px 2px #0000004d}.calendar-info{grid-gap:30px;display:grid;gap:30px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));margin:40px auto 0;max-width:1200px}.info-section{background:#fff;border-radius:12px;box-shadow:0 4px 20px #0000001a;padding:25px}.info-section h3{border-bottom:2px solid #4a90e2;color:#2c3e50;font-size:20px;margin-bottom:15px;padding-bottom:8px}.info-section li{border-bottom:1px solid #f1f2f6;color:#555;line-height:1.5;padding:8px 0}.info-section li:last-child{border-bottom:none}.info-section strong{color:#2c3e50;font-weight:600}.cycle-info{margin-top:15px}.cycle-day-list{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));margin-bottom:20px}.cycle-day-item{background:#f8f9fa;border-left:4px solid #4a90e2;border-radius:8px;padding:15px;text-align:center}.cycle-number{color:#4a90e2;display:block;font-size:16px;font-weight:600;margin-bottom:5px}.cycle-description{color:#6c757d;font-size:12px}.cycle-note{background:#fff3cd;border-left:4px solid #ffc107;border-radius:6px;color:#6c757d;font-size:14px;font-style:italic;margin:0;padding:15px}.eca-categories{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.category-item{align-items:center;background:#f8f9fa;border-radius:8px;display:flex;gap:10px;padding:12px;transition:all .2s ease}.category-item:hover{box-shadow:0 4px 12px #0000001a;transform:translateY(-2px)}.category-color{border-radius:50%;box-shadow:0 2px 4px #0003;display:inline-block;height:20px;width:20px}.category-item span:last-child{color:#2c3e50;font-weight:500}@media (max-width:768px){.calendar-page{padding:15px}.calendar-tabs{align-items:center;flex-direction:column;gap:8px}.tab-button{font-size:14px;max-width:300px;padding:10px 20px;width:100%}.page-title{font-size:28px}.page-description{font-size:16px}.calendar-info{gap:20px;margin-top:30px}.info-section{padding:20px}.info-section h3{font-size:18px}.cycle-day-list{gap:10px;grid-template-columns:repeat(auto-fit,minmax(100px,1fr))}.cycle-day-item{padding:10px}.eca-categories{grid-template-columns:1fr}}@media (max-width:480px){.calendar-page{padding:10px}.page-title{font-size:24px}.page-description{font-size:14px}.info-section{padding:15px}.cycle-day-list{grid-template-columns:repeat(2,1fr)}}.roll-call-interface{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0 auto;max-width:1200px;padding:20px}.roll-call-header{align-items:center;background:linear-gradient(135deg,#007bff,#0056b3);border-radius:12px;color:#fff;display:flex;justify-content:space-between;margin-bottom:30px;padding:20px}.roll-call-title{flex:1 1;font-size:2rem;font-weight:700;margin:0;text-align:center}.class-info{text-align:right}.class-date{font-size:1rem;margin-bottom:5px;opacity:.9}.class-count{font-size:1.2rem;font-weight:600;opacity:.9}.view-mode-toggle{align-items:center;background:#f8f9fa;border-radius:8px;display:flex;justify-content:space-between;margin-bottom:20px;padding:15px 20px}.view-mode-toggle span{color:#495057;font-weight:600}.toggle-buttons{display:flex;gap:10px}.toggle-btn{background:#fff;border:2px solid #dee2e6;border-radius:6px;cursor:pointer;font-size:14px;padding:8px 16px;transition:all .2s ease}.toggle-btn.active{background:#007bff;border-color:#007bff;color:#fff}.toggle-btn:hover:not(.active){border-color:#007bff;color:#007bff}.attendance-summary{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));margin-bottom:30px}.summary-card{box-shadow:0 4px 6px #0000001a;color:#fff;padding:20px}.summary-card.present{background:linear-gradient(135deg,#28a745,#20c997)}.summary-card.absent{background:linear-gradient(135deg,#dc3545,#c82333)}.summary-card.late{background:linear-gradient(135deg,#fd7e14,#e55a00)}.summary-card.early-leave{background:linear-gradient(135deg,#6f42c1,#5a2d91)}.summary-card.out{background:linear-gradient(135deg,#17a2b8,#138496)}.summary-number{font-size:2rem;font-weight:700;margin-bottom:5px}.summary-label{font-size:.9rem;opacity:.9}.student-container{margin-bottom:30px}.student-container.grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.student-container.list{display:flex;flex-direction:column;gap:15px}.student-container.list .student-card{flex-direction:row;padding:15px}.student-container.list .student-avatar{height:60px;margin-right:20px;width:60px}.student-container.list .student-info{flex:1 1}.student-container.list .attendance-controls{margin-left:auto}.student-card{border-radius:12px;box-shadow:0 4px 6px #0000001a;flex-direction:column;padding:20px;text-align:center;transition:transform .2s ease,box-shadow .2s ease}.student-card:hover{box-shadow:0 8px 15px #00000026;transform:translateY(-2px)}.student-avatar{font-size:2rem;font-weight:700;height:80px;margin-bottom:15px;position:relative;width:80px}.student-initial{z-index:1}.status-indicator{align-items:center;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px #0003;color:#fff;cursor:pointer;display:flex;font-size:.8rem;font-weight:600;height:25px;justify-content:center;position:absolute;right:-5px;top:-5px;transition:all .2s ease;width:25px;z-index:2}.status-indicator:hover{box-shadow:0 4px 8px #0000004d;transform:scale(1.1)}.status-indicator:active{transform:scale(.95)}.student-info{margin-bottom:15px}.student-name{font-size:1.1rem}.student-id{color:#6c757d;font-size:.8rem;margin-bottom:5px}.student-status{color:#007bff;font-size:.9rem;font-weight:600}.attendance-controls{width:100%}.status-select{background:#fff;border:2px solid #dee2e6;border-radius:6px;cursor:pointer;font-size:14px;padding:8px 12px;transition:border-color .2s ease;width:100%}.status-select:focus{border-color:#007bff;outline:none}.save-section{padding:20px;text-align:center}.save-button{background:linear-gradient(135deg,#28a745,#20c997);border:none;border-radius:12px;box-shadow:0 4px 6px #0000001a;color:#fff;cursor:pointer;font-size:1.1rem;font-weight:600;padding:16px 32px;transition:all .2s ease}.save-button:hover:not(:disabled){box-shadow:0 8px 15px #0003;transform:translateY(-2px)}.save-button:disabled{cursor:not-allowed;opacity:.6}@media (max-width:768px){.roll-call-interface{padding:15px}.roll-call-header{flex-direction:column;gap:15px;text-align:center}.roll-call-title{font-size:1.5rem}.class-info{text-align:center}.view-mode-toggle{flex-direction:column;gap:10px}.attendance-summary{gap:10px;grid-template-columns:repeat(2,1fr)}.summary-card{padding:15px}.summary-number{font-size:1.5rem}.student-container.grid{gap:15px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.student-card{padding:15px}.student-avatar{height:60px;width:60px}.student-name{font-size:1rem}}@media (max-width:480px){.roll-call-title{font-size:1.3rem}.attendance-summary,.student-container.grid{grid-template-columns:1fr}.student-container.list .student-card{flex-direction:column;text-align:center}.student-container.list .student-avatar{margin-bottom:15px;margin-right:0}.student-container.list .attendance-controls{margin-left:0;margin-top:15px}}@media (max-width:768px){.roll-call-interface{padding:15px}.roll-call-header{flex-direction:column;gap:15px;text-align:center}.roll-call-title{font-size:1.5rem}.class-info{text-align:center}.view-mode-toggle{flex-direction:column;gap:10px}.attendance-summary{gap:10px;grid-template-columns:repeat(2,1fr)}.summary-card{padding:15px}.summary-number{font-size:1.5rem}.student-container.grid{gap:12px;grid-template-columns:repeat(4,1fr)}.student-card{border-radius:10px;padding:12px}.student-avatar{font-size:1.5rem;height:50px;margin-bottom:10px;width:50px}.student-name{font-size:.9rem;margin-bottom:4px}.student-id{font-size:.7rem;margin-bottom:4px}.student-status{font-size:.8rem}.status-select{font-size:12px;padding:6px 8px}.status-indicator{font-size:.7rem;height:20px;right:-3px;top:-3px;width:20px}}@media (max-width:480px){.roll-call-title{font-size:1.3rem}.attendance-summary{grid-template-columns:1fr}.student-container.grid{gap:8px;grid-template-columns:repeat(4,1fr)}.student-card{border-radius:8px;padding:8px}.student-avatar{font-size:1.2rem;height:40px;margin-bottom:8px;width:40px}.student-name{font-size:.8rem;margin-bottom:3px}.student-id{font-size:.6rem;margin-bottom:3px}.student-status{font-size:.7rem}.status-select{font-size:11px;padding:4px 6px}.status-indicator{font-size:.6rem;height:18px;right:-2px;top:-2px;width:18px}.student-container.list .student-card{flex-direction:column;text-align:center}.student-container.list .student-avatar{margin-bottom:15px;margin-right:0}.student-container.list .attendance-controls{margin-left:0;margin-top:15px}}@media (max-width:360px){.student-container.grid{gap:6px;grid-template-columns:repeat(3,1fr)}.student-card{padding:6px}.student-avatar{font-size:1rem;height:35px;width:35px}.student-name{font-size:.7rem}.student-id{font-size:.5rem}.status-select{font-size:10px;padding:3px 4px}}.attendance-summary-page{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0 auto;max-width:1200px;padding:20px}.summary-header{align-items:center;background:linear-gradient(135deg,#6f42c1,#5a2d91);border-radius:12px;color:#fff;display:flex;justify-content:space-between;margin-bottom:30px;padding:20px}.back-button{border:1px solid #ffffff4d}.summary-title{flex:1 1;font-size:2rem;font-weight:700;margin:0;text-align:center}.summary-info{text-align:right}.class-name{font-size:1.5rem;margin-bottom:5px}.summary-date{font-size:1rem;opacity:.9}.summary-stats{grid-gap:15px;gap:15px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:30px}.stat-card{color:#fff}.stat-card.total{background:linear-gradient(135deg,#495057,#343a40)}.stat-card.present{background:linear-gradient(135deg,#28a745,#20c997)}.stat-card.absent{background:linear-gradient(135deg,#dc3545,#c82333)}.stat-card.late{background:linear-gradient(135deg,#fd7e14,#e55a00)}.stat-card.early-leave{background:linear-gradient(135deg,#6f42c1,#5a2d91)}.stat-card.out{background:linear-gradient(135deg,#17a2b8,#138496)}.view-controls{align-items:center;background:#f8f9fa;border-radius:8px;flex-wrap:wrap;gap:15px;justify-content:space-between;margin-bottom:20px;padding:15px 20px}.view-tabs{display:flex;gap:10px}.view-tab{background:#fff;border:2px solid #dee2e6;border-radius:6px;cursor:pointer;font-size:14px;padding:10px 20px;transition:all .2s ease}.view-tab.active{background:#6f42c1;border-color:#6f42c1;color:#fff}.view-tab:hover:not(.active){border-color:#6f42c1;color:#6f42c1}.filter-controls{gap:10px}.status-filter{background:#fff;border:2px solid #dee2e6;border-radius:6px;cursor:pointer;font-size:14px;padding:8px 12px}.status-filter:focus{border-color:#6f42c1;outline:none}.export-button{background:linear-gradient(135deg,#28a745,#20c997);border-radius:6px;padding:8px 16px;transition:all .2s ease}.export-button:hover{box-shadow:0 4px 8px #0003;transform:translateY(-1px)}.records-table-container{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;margin-bottom:30px;overflow:hidden}.records-table{border-collapse:collapse;font-size:14px;width:100%}.records-table th{background:#f8f9fa;border-bottom:2px solid #dee2e6;color:#495057;font-weight:600;padding:16px 12px;text-align:left}.records-table td{border-bottom:1px solid #f1f3f4;color:#495057;padding:16px 12px}.records-table tr:hover{background:#f8f9fa}.student-code{color:#6c757d;font-family:monospace}.status-badge{border-radius:12px;color:#fff;font-size:.8rem}.attendance-time{color:#6c757d;font-family:monospace}.attendance-notes{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attendance-type{color:#6c757d;font-size:.9rem}.no-records{color:#6c757d;padding:40px;text-align:center}.summary-footer{align-items:center;background:#f8f9fa;border-radius:8px;display:flex;flex-wrap:wrap;gap:15px;justify-content:space-between;padding:20px}.footer-stats{color:#6c757d;display:flex;font-size:14px;gap:20px}.footer-actions{display:flex;gap:10px}.print-button{background:linear-gradient(135deg,#17a2b8,#138496);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:10px 20px;transition:all .2s ease}.print-button:hover{box-shadow:0 4px 8px #0003;transform:translateY(-1px)}@media print{.back-button,.export-button,.print-button,.view-controls{display:none!important}.attendance-summary-page{padding:0}.summary-header{background:#6f42c1!important}.stat-card,.status-badge,.summary-header{color-adjust:exact;-webkit-print-color-adjust:exact}}@media (max-width:768px){.attendance-summary-page{padding:15px}.summary-header{flex-direction:column;gap:15px;text-align:center}.summary-title{font-size:1.5rem}.summary-info{text-align:center}.summary-stats{gap:10px;grid-template-columns:repeat(2,1fr)}.stat-card{padding:15px}.stat-number{font-size:1.5rem}.view-controls{align-items:stretch;flex-direction:column}.filter-controls,.view-tabs{justify-content:center}.records-table{font-size:12px}.records-table td,.records-table th{padding:12px 8px}.summary-footer{flex-direction:column;text-align:center}.footer-stats{justify-content:center}}@media (max-width:480px){.summary-title{font-size:1.3rem}.summary-stats{grid-template-columns:1fr}.view-tabs{flex-direction:column;width:100%}.view-tab{text-align:center;width:100%}.filter-controls{flex-direction:column;width:100%}.export-button,.status-filter{width:100%}.records-table{font-size:11px}.records-table td,.records-table th{padding:8px 4px}.attendance-notes{max-width:100px}}.type-badge{border-radius:12px;color:#fff;display:inline-block;font-size:12px;font-weight:500;padding:4px 12px}.type-badge.regular{background:linear-gradient(135deg,#28a745,#20c997)}.type-badge.eca{background:linear-gradient(135deg,#007bff,#0056b3)}.type-badge.slp{background:linear-gradient(135deg,#6f42c1,#5a2d91)}.view-tab{font-weight:500;min-width:140px;text-align:center}.view-tab.active{box-shadow:0 2px 4px #6f42c14d}.view-tab:hover:not(.active){transform:translateY(-1px)}.student-info{min-width:200px}.student-id-name{align-items:center;display:flex;flex-direction:row;gap:8px}.student-id{background:#007bff1a;border-radius:4px;color:#007bff;display:inline-block;font-family:Courier New,monospace;font-size:.9rem;padding:2px 6px;width:-webkit-fit-content;width:fit-content}.student-name{color:#2c3e50;font-size:1rem;font-weight:500}@media (max-width:768px){.student-info{min-width:150px}.student-id-name{gap:6px}.student-id{font-size:.8rem;padding:1px 4px}.student-name{font-size:.9rem}}@media (max-width:480px){.student-info{min-width:120px}.student-id-name{gap:4px}.student-id{font-size:.7rem;padding:1px 3px}.student-name{font-size:.8rem}}.attendance-page{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0 auto;max-width:1200px;padding:20px}.navigation{margin-bottom:20px}.back-button{background:#f8f9fa;border:1px solid #dee2e6;padding:10px 20px;transition:all .2s ease}.back-button:hover{background:#e9ecef;border-color:#adb5bd}.title-section{margin-bottom:30px;text-align:center}.main-title{color:#2c3e50;font-size:2.5rem;font-weight:700;margin:0 0 10px}.subtitle{color:#6c757d;font-size:1.1rem;line-height:1.5;margin:0}.date-time-selector{align-items:center;display:flex;flex-wrap:wrap;gap:30px;justify-content:center;margin-bottom:30px}.date-selector,.time-selector{align-items:center;display:flex;gap:10px}.date-selector label,.time-selector label{color:#495057;font-weight:600}.date-selector input,.time-selector input{border:2px solid #dee2e6;border-radius:6px;font-size:14px;padding:8px 12px;transition:border-color .2s ease}.date-selector input:focus,.time-selector input:focus{border-color:#007bff;outline:none}.stats-cards{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:40px}.stat-card{box-shadow:0 4px 6px #0000001a;padding:24px;transition:transform .2s ease,box-shadow .2s ease}.stat-card:hover{box-shadow:0 8px 15px #00000026}.stat-card.green{background:linear-gradient(135deg,#28a745,#20c997);color:#fff}.stat-card.blue{background:linear-gradient(135deg,#007bff,#0056b3);color:#fff}.stat-card.orange{background:linear-gradient(135deg,#fd7e14,#e55a00);color:#fff}.stat-card.red{background:linear-gradient(135deg,#dc3545,#c82333);color:#fff}.stat-icon{margin-right:16px;opacity:.9}.stat-number{margin-bottom:4px}.stat-label{font-size:.9rem;opacity:.9}.table-section{margin-bottom:40px}.section-title{color:#2c3e50;font-size:1.5rem;font-weight:600;margin-bottom:20px;text-align:center}.table-container{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;overflow:hidden}.attendance-table{border-collapse:collapse;font-size:14px;width:100%}.attendance-table th{background:#f8f9fa;border-bottom:2px solid #dee2e6;color:#495057;font-weight:600;padding:16px 12px;text-align:left}.attendance-table td{border-bottom:1px solid #f1f3f4;color:#495057;padding:16px 12px}.attendance-table tr:hover{background:#f8f9fa}.attendance-table .present{color:#28a745;font-weight:600}.attendance-table .absent{color:#dc3545;font-weight:600}.attendance-table .late{color:#fd7e14;font-weight:600}.attendance-table .early-leave{color:#6f42c1;font-weight:600}.attendance-table .status{color:#007bff;cursor:pointer;font-weight:600}.attendance-table .status:hover{color:#0056b3}.quick-operations{margin-bottom:40px}.operation-cards{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.operation-card{background:#fff;border-left:4px solid;border-radius:12px;box-shadow:0 4px 6px #0000001a;cursor:pointer;overflow:hidden;padding:24px;position:relative;transition:transform .2s ease,box-shadow .2s ease;-webkit-user-select:none;user-select:none}.operation-card:before{background:#0000000d;bottom:0;content:"";left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .2s ease}.operation-card:hover:before{opacity:1}.operation-card:hover{box-shadow:0 8px 15px #00000026;transform:translateY(-2px)}.operation-card:active{box-shadow:0 4px 6px #0000001a;transform:translateY(0)}.operation-card.green{border-left-color:#28a745}.operation-card.blue{border-left-color:#007bff}.operation-card.orange{border-left-color:#fd7e14}.operation-icon{font-size:2.5rem;margin-bottom:16px;opacity:.8}.operation-content h3{color:#2c3e50;font-size:1.3rem;font-weight:600;margin:0 0 8px}.operation-content p{color:#6c757d;font-size:.9rem;line-height:1.5;margin:0}.loading{align-items:center;display:flex;height:200px;justify-content:center}.view-summary-btn{background:linear-gradient(135deg,#007bff,#0056b3);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:12px;padding:6px 12px;transition:all .2s ease}.view-summary-btn:hover{box-shadow:0 4px 8px #0003;transform:translateY(-1px)}.class-selector-modal{align-items:center;background:#00000080;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:1000}.modal-content{background:#fff;border-radius:12px;box-shadow:0 10px 25px #0003;max-width:500px;padding:30px;text-align:center;width:90%}.modal-content h2{color:#2c3e50;font-size:1.5rem;margin-bottom:10px}.modal-content p{color:#6c757d;margin-bottom:20px}.class-list{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));margin-bottom:25px}.class-option{background:linear-gradient(135deg,#007bff,#0056b3);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:15px 10px;transition:all .2s ease}.class-option:hover{box-shadow:0 4px 8px #0003;transform:translateY(-2px)}.cancel-button{background:#6c757d;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;padding:12px 24px;transition:all .2s ease}.cancel-button:hover{background:#5a6268;transform:translateY(-1px)}@media (max-width:768px){.attendance-page{padding:15px}.main-title{font-size:2rem}.stats-cards{gap:15px;grid-template-columns:1fr}.stat-card{padding:20px}.operation-cards{gap:15px;grid-template-columns:1fr}.attendance-table{font-size:12px}.attendance-table td,.attendance-table th{padding:12px 8px}.date-time-selector{flex-direction:column;gap:15px}.date-selector,.time-selector{flex-direction:column;gap:8px;text-align:center}}@media (max-width:480px){.main-title{font-size:1.8rem}.subtitle{font-size:1rem}.date-selector{flex-direction:column;gap:8px}.stat-card{padding:16px}.stat-number{font-size:1.5rem}.operation-card{padding:20px}}@media (max-width:768px){.modal-content{margin:20px;padding:20px}.class-list{gap:10px;grid-template-columns:repeat(auto-fit,minmax(100px,1fr))}.class-option{font-size:13px;padding:12px 8px}}.grades-management-page{background:#f8fafc;min-height:100vh;padding:0}.page-header{background:linear-gradient(135deg,#8b5cf6,#7c3aed);box-shadow:0 4px 20px #0000001a;padding:20px 24px}.page-header h1{flex:1 1;font-size:1.75rem;text-align:center}.back-button,.refresh-button{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fff3;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:8px 16px;transition:all .2s ease}.back-button:hover,.refresh-button:hover{background:#ffffff4d;transform:translateY(-1px)}.refresh-button{font-size:18px}.grades-tabs{border-bottom:2px solid #e5e7eb;display:flex;gap:8px;margin:24px 24px 0;padding-bottom:0}.tab-btn{border-bottom:2px solid #0000;color:#6b7280;font-size:14px;padding:12px 24px;transition:all .2s ease}.tab-btn:hover{background:#f9fafb;color:#374151}.tab-btn.active{background:#faf5ff;border-bottom-color:#8b5cf6;color:#8b5cf6}.page-content{padding:24px}.error-container,.loading-container{padding:60px 24px}.loading-spinner{border:4px solid #e5e7eb;border-top-color:#8b5cf6;margin-bottom:16px}.error-icon{font-size:48px;margin-bottom:16px}.error-container h3{color:#ef4444;margin-bottom:8px}.retry-button{background:#8b5cf6;font-weight:500;margin-top:16px}.overview-section{gap:32px}.summary-cards{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.summary-card{align-items:center;border:1px solid #e5e7eb;box-shadow:0 4px 20px #00000014;display:flex;gap:16px;padding:24px;transition:all .2s ease}.summary-card:hover{box-shadow:0 8px 30px #0000001f;transform:translateY(-2px)}.card-icon{align-items:center;background:#faf5ff;border-radius:12px;display:flex;font-size:32px;height:60px;justify-content:center;width:60px}.card-content h3{color:#6b7280;font-size:14px;font-weight:500;margin:0 0 8px}.card-value{color:#1f2937;font-size:28px;font-weight:700;margin:0}.grade-distribution h2{color:#1f2937;font-size:1.5rem;margin-bottom:20px}.distribution-chart{background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 4px 20px #00000014;padding:24px}.distribution-item{gap:16px;margin-bottom:16px;padding:8px 0}.distribution-item:last-child{margin-bottom:0}.grade-level{font-size:14px;font-weight:600;min-width:120px}.grade-level.A{color:#10b981}.grade-level.B{color:#3b82f6}.grade-level.C{color:#f59e0b}.grade-level.D{color:#f97316}.grade-level.F{color:#ef4444}.progress-bar{background:#e5e7eb;border-radius:4px;flex:1 1;height:8px;overflow:hidden}.progress-fill{background:#8b5cf6;height:100%;transition:width .3s ease}.count{color:#1f2937;min-width:40px;text-align:right}.recent-grades h2{color:#1f2937;font-size:1.5rem;font-weight:600;margin-bottom:20px}.grades-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}.grade-card{border:1px solid #e5e7eb;box-shadow:0 4px 20px #00000014;padding:20px;transition:all .2s ease}.grade-card:hover{box-shadow:0 8px 30px #0000001f}.grade-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.grade-header h4{color:#1f2937;font-size:1.125rem;font-weight:600;margin:0}.grade-badge{background:#8b5cf6;border-radius:20px;color:#fff;font-size:16px;font-weight:700;padding:6px 12px}.grade-details p{color:#6b7280;font-size:14px;margin:4px 0}.grade-details strong{color:#374151;font-weight:600}.quick-actions h2{color:#1f2937;font-size:1.5rem;font-weight:600;margin-bottom:20px}.action-buttons{gap:12px}.action-btn{background:#8b5cf6;gap:8px;padding:12px 24px;transition:all .2s ease}.action-btn:hover{background:#7c3aed;transform:translateY(-1px)}.action-btn.primary{background:#10b981}.action-btn.primary:hover{background:#059669}.action-btn.small{font-size:12px;padding:6px 12px}.action-btn.danger{background:#ef4444}.action-btn.danger:hover{background:#dc2626}.grades-section{background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 4px 20px #00000014;padding:24px}.section-header{align-items:center;border-bottom:2px solid #e5e7eb;display:flex;justify-content:space-between;margin-bottom:24px;padding-bottom:16px}.section-header h2{margin:0}.grades-table{overflow-x:auto}.grades-table table{border-collapse:collapse;font-size:14px;width:100%}.grades-table th{background:#f8fafc;border-bottom:2px solid #e5e7eb;color:#374151;font-weight:600;padding:12px 16px;text-align:left}.grades-table td{border-bottom:1px solid #e5e7eb;padding:16px;vertical-align:middle}.grades-table tr:hover{background:#f8fafc}.student-info{align-items:center;display:flex;gap:12px}.student-avatar{background:#8b5cf6;font-size:14px;height:32px;width:32px}.grade-value{font-size:18px;font-weight:700}.grade-level-badge{color:#fff;font-size:12px;font-weight:600}.grade-level-badge,.status-badge{border-radius:6px;padding:4px 8px}.status-badge.passing{background:#dcfce7;color:#166534}.status-badge.failing{background:#fef2f2;color:#dc2626}.students-section{background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 4px 20px #00000014;padding:24px}.students-section h2{color:#1f2937;font-size:1.5rem;font-weight:600;margin-bottom:24px}.students-table{overflow-x:auto}.students-table table{border-collapse:collapse;font-size:14px;width:100%}.students-table th{background:#f8fafc;border-bottom:2px solid #e5e7eb;color:#374151;font-weight:600;padding:12px 16px;text-align:left}.students-table td{border-bottom:1px solid #e5e7eb;padding:16px;vertical-align:middle}.students-table tr:hover{background:#f8fafc}.rank-badge{background:#8b5cf6;border-radius:20px;color:#fff;font-size:12px;font-weight:600;padding:6px 12px}.average-grade{font-size:16px;font-weight:700}.passing-rate{align-items:center;display:flex;gap:8px}.rate-text{color:#1f2937;font-weight:600;min-width:40px}.rate-bar{background:#e5e7eb;border-radius:3px;height:6px;overflow:hidden;width:60px}.rate-fill{background:#10b981;height:100%;transition:width .3s ease}.statistics-section{background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 4px 20px #00000014;padding:24px}.statistics-section h2{color:#1f2937;font-size:1.5rem;font-weight:600;margin-bottom:24px}.stats-grid{grid-gap:24px;gap:24px;grid-template-columns:repeat(auto-fit,minmax(400px,1fr))}.stats-card{background:#f8fafc;border:1px solid #e5e7eb;border-radius:12px;padding:20px}.stats-card h3{color:#1f2937;font-size:1.125rem;font-weight:600;margin-bottom:16px}.stats-content{display:flex;flex-direction:column;gap:12px}.stats-content .stat-item{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:8px 0}.stats-content .stat-item:last-child{border-bottom:none}.stat-value{color:#1f2937;font-size:16px;font-weight:600}.class-stats-list,.subject-stats-list{display:flex;flex-direction:column;gap:12px}.class-stat-item,.subject-stat-item{align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:8px;display:flex;justify-content:space-between;padding:12px}.class-name,.subject-name{color:#1f2937;font-size:14px;font-weight:600}.class-stats,.subject-stats{align-items:center;display:flex;gap:12px}.class-stats .stat,.subject-stats .stat{color:#6b7280;font-size:12px}.class-stats .average,.subject-stats .average{color:#8b5cf6;font-weight:600}.class-stats .rate,.subject-stats .rate{color:#10b981;font-weight:600}@media (max-width:768px){.page-header{padding:16px 20px}.page-header h1{font-size:1.5rem}.grades-tabs{flex-wrap:wrap;margin:16px 16px 0}.tab-btn{font-size:13px;padding:10px 16px}.page-content{padding:16px}.grades-grid,.summary-cards{grid-template-columns:1fr}.distribution-item{align-items:stretch;flex-direction:column;gap:8px}.grade-level{min-width:auto}.progress-bar{width:100%}.count{text-align:left}.action-buttons,.section-header{flex-direction:column}.section-header{align-items:stretch;gap:12px}.grades-table,.students-table{font-size:12px}.grades-table td,.grades-table th,.students-table td,.students-table th{padding:8px 12px}.stats-grid{grid-template-columns:1fr}.class-stat-item,.subject-stat-item{align-items:stretch;flex-direction:column;gap:8px}.class-stats,.subject-stats{justify-content:center}}.student-info-dashboard{background:linear-gradient(135deg,#667eea,#764ba2);margin:0;min-height:100vh;padding:0}.page-header{background:linear-gradient(135deg,#4285f4,#34a853);box-shadow:0 4px 12px #00000026}.back-button{gap:5px;padding:10px 15px}.back-button:hover{transform:translateX(-2px)}.page-header h1{font-size:28px;font-weight:600;text-shadow:0 2px 4px #0000004d}.refresh-button{font-size:16px;padding:10px}.student-tabs{background:#fff;box-shadow:0 2px 8px #0000001a;display:flex;gap:0;padding:0 20px}.tab-btn{background:none;border:none;border-bottom:3px solid #0000;color:#666;cursor:pointer;font-size:16px;font-weight:500;padding:15px 25px;position:relative;transition:all .3s ease}.tab-btn.active,.tab-btn:hover{background:#4285f40d;color:#4285f4}.tab-btn.active{border-bottom-color:#4285f4}.page-content{background:#fff;min-height:calc(100vh - 140px);padding:30px}.error-container,.loading-container{min-height:400px}.loading-spinner{border-top-color:#4285f4}.error-message{background:#ffebee;border:1px solid #f44336;max-width:400px;padding:30px}.error-message h3{color:#d32f2f;margin:0 0 15px}.retry-button{background:#4285f4;border-radius:6px;font-size:14px;margin-top:15px;padding:10px 20px;transition:background .3s ease}.retry-button:hover{background:#3367d6}.overview-section{margin:0 auto;max-width:1200px}.stats-grid{margin-bottom:40px}.stat-card{box-shadow:0 4px 12px #0000001a;gap:20px;padding:25px;transition:transform .3s ease,box-shadow .3s ease}.stat-card:hover{box-shadow:0 8px 20px #00000026;transform:translateY(-2px)}.stat-icon{background:linear-gradient(135deg,#4285f4,#34a853);border-radius:50%;color:#fff;font-size:48px;height:80px;width:80px}.stat-content{flex:1 1}.stat-number{color:#4285f4;font-size:36px;margin-bottom:5px}.stat-label{color:#333;font-size:16px;font-weight:600;margin-bottom:3px}.stat-subtitle{color:#666;font-size:14px}.grade-distribution{margin-top:40px}.grade-distribution h2{color:#333;font-size:24px;font-weight:600;margin-bottom:30px;text-align:center}.grade-grid{grid-gap:20px;gap:20px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.grade-card{border-radius:12px;box-shadow:0 4px 12px #0000001a;text-align:center;transition:transform .3s ease,box-shadow .3s ease}.grade-card:hover{box-shadow:0 8px 20px #00000026;transform:translateY(-2px)}.grade-number{color:#f44336;font-size:32px;line-height:1;margin-bottom:8px}.grade-label{color:#333;font-size:16px;font-weight:600;margin-bottom:5px}.grade-subtitle{color:#666;font-size:14px}.class-browser-section h2{color:#333;font-size:24px;font-weight:600;margin-bottom:30px}.form-level-group{margin-bottom:40px}.form-level-group h3{border-bottom:2px solid #4285f4;color:#4285f4;font-size:20px;font-weight:600;margin-bottom:20px;padding-bottom:10px}.class-buttons{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.class-card{border:2px solid #e0e0e0;border-radius:12px;box-shadow:0 2px 8px #0000001a;padding:20px;transition:all .3s ease}.class-card:hover{background:#4285f405;border-color:#4285f4;box-shadow:0 6px 20px #4285f426;transform:translateY(-3px)}.class-header{border-bottom:1px solid #f0f0f0;margin-bottom:15px;padding-bottom:10px}.class-name{color:#333;font-size:18px;margin:0}.student-count{background:#f8f9fa;border-radius:6px;color:#666;font-size:14px;padding:4px 8px}.teacher-info{margin-bottom:15px}.teacher-row{align-items:flex-start;display:flex;font-size:14px;margin-bottom:8px}.teacher-label{color:#555;font-weight:600;margin-right:8px;min-width:80px}.teacher-name{margin-right:5px}.teacher-subject{font-size:12px}.subject-teachers{display:flex;flex-direction:column;gap:4px}.subject-teacher{background:#f8f9fa;border-radius:4px;color:#333;display:inline-block;font-size:13px;padding:2px 6px}.view-details-btn{background:linear-gradient(135deg,#4285f4,#34a853);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:10px;transition:all .3s ease;width:100%}.view-details-btn:hover{background:linear-gradient(135deg,#3367d6,#2d8f47);box-shadow:0 4px 12px #4285f44d;transform:translateY(-1px)}.search-section h2{color:#333;font-size:24px;font-weight:600;margin-bottom:30px}.search-container{margin:0 auto;max-width:600px}.search-input{border:2px solid #e0e0e0;border-radius:10px;padding:15px 20px}.search-input:focus{border-color:#4285f4;box-shadow:0 0 0 3px #4285f41a}.search-results{border-radius:10px;box-shadow:0 4px 12px #0000001a;margin-top:20px;overflow:hidden}.search-result-item{border-bottom:1px solid #f0f0f0;cursor:pointer;padding:15px 20px;transition:background .3s ease}.search-result-item:hover{background:#4285f40d}.search-result-item:last-child{border-bottom:none}.student-name{margin-bottom:5px}.student-details{color:#666;font-size:14px}.class-details-section{margin:0 auto;max-width:1000px}.class-header{align-items:center;border-bottom:2px solid #e0e0e0;display:flex;justify-content:space-between;margin-bottom:30px;padding-bottom:20px}.class-header h2{color:#333;font-size:24px;font-weight:600;margin:0}.back-to-overview{background:#f5f5f5;border:1px solid #ddd;border-radius:6px;color:#666;cursor:pointer;font-size:14px;padding:8px 15px;transition:all .3s ease}.back-to-overview:hover{background:#e0e0e0;color:#333}.download-button{background:#f44336;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:background .3s ease}.download-button:hover{background:#d32f2f}.class-teachers{background:#f8f9fa;border-radius:8px;margin-bottom:30px;padding:20px}.teacher-info{align-items:center;display:flex;gap:10px;margin-bottom:10px}.teacher-info:last-child{margin-bottom:0}.teacher-role{color:#4285f4;font-weight:600;min-width:80px}.teacher-name{color:#333;font-weight:500}.teacher-subject{color:#666;font-size:14px}.students-list h3{color:#333;font-size:20px;font-weight:600;margin-bottom:20px}.students-grid{grid-gap:15px;gap:15px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.student-card{align-items:center;border:1px solid #e0e0e0;border-radius:8px;display:flex;gap:15px;padding:15px;transition:all .3s ease}.student-card:hover{background:#4285f40d;border-color:#4285f4;box-shadow:0 2px 8px #4285f433;transform:translateY(-1px)}.student-number{align-items:center;background:#4285f4;border-radius:50%;color:#fff;display:flex;font-size:14px;font-weight:600;height:30px;justify-content:center;width:30px}.student-name{color:#333;font-size:16px;font-weight:600;margin-bottom:3px}.student-id{color:#666}.student-details-section{margin:0 auto;max-width:800px}.student-header{align-items:center;border-bottom:2px solid #e0e0e0;display:flex;justify-content:space-between;margin-bottom:30px;padding-bottom:20px}.student-header h2{color:#333;font-size:24px;font-weight:600;margin:0}.student-profile{background:#fff;border-radius:12px;box-shadow:0 4px 12px #0000001a;padding:30px}.profile-section{margin-bottom:30px}.profile-section:last-child{margin-bottom:0}.profile-section h3{border-bottom:1px solid #e0e0e0;color:#4285f4;font-size:18px;font-weight:600;margin-bottom:20px;padding-bottom:10px}.profile-grid{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.academic-item,.attendance-item,.profile-item{align-items:center;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;padding:10px 0}.academic-item:last-child,.attendance-item:last-child,.profile-item:last-child{border-bottom:none}.academic-item label,.attendance-item label,.profile-item label{color:#666;font-weight:600;min-width:80px}.academic-item span,.attendance-item span,.profile-item span{color:#333;font-weight:500}.academic-stats,.attendance-stats{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}@media (max-width:768px){.page-header{flex-direction:column;gap:15px;padding:15px;text-align:center}.page-header h1{font-size:24px}.page-content{padding:20px}.stats-grid{grid-template-columns:1fr}.grade-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.class-buttons{grid-template-columns:1fr}.class-header{align-items:stretch;flex-direction:column;gap:15px}.students-grid{grid-template-columns:1fr}.student-header{align-items:stretch;flex-direction:column;gap:15px}.profile-grid{grid-template-columns:1fr}}.class-info-page{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;margin:0 auto;max-width:1200px;padding:20px}.page-header{align-items:center;background:linear-gradient(135deg,#ff6b35,#f7931e);border-radius:12px;box-shadow:0 4px 15px #ff6b354d;color:#fff;display:flex;justify-content:space-between;margin-bottom:30px;padding:20px}.page-header h1{font-size:2.5rem;font-weight:700;margin:0;text-shadow:2px 2px 4px #0000004d}.back-button{border:2px solid #ffffff4d;font-size:1rem;font-weight:600}.back-button:hover{border-color:#ffffff80}.refresh-button{border:2px solid #ffffff4d;font-size:1.2rem;padding:12px}.refresh-button:hover{border-color:#ffffff80;transform:rotate(180deg)}.loading-spinner{border-top-color:#ff6b35;height:50px;width:50px}.error-container{background:#fff5f5;border:2px solid #fed7d7;border-radius:12px;margin:20px 0}.error-container p{color:#c53030;font-size:1.1rem;margin-bottom:20px}.retry-button{background:#ff6b35;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:12px 24px;transition:all .3s ease}.retry-button:hover{background:#e55a2b;transform:translateY(-2px)}.no-data-container{background:#f7fafc;border:2px solid #e2e8f0;border-radius:12px;margin:20px 0;padding:60px 20px;text-align:center}.no-data-container p{color:#4a5568;font-size:1.1rem}.summary-section{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));margin-bottom:40px}.summary-card{background:#fff;border:2px solid #0000;border-radius:16px;box-shadow:0 4px 20px #0000001a;padding:30px}.summary-card:hover{border-color:#ff6b35;box-shadow:0 8px 30px #00000026}.card-icon{font-size:3rem;margin-bottom:20px}.card-content h3{color:#2d3748;font-size:1.3rem;font-weight:600;margin:0 0 15px}.card-number{color:#ff6b35;font-size:3rem;font-weight:700;margin-bottom:10px;text-shadow:2px 2px 4px #ff6b3533}.card-content p{color:#718096;font-size:1rem;margin:0}.grade-section{margin-bottom:40px}.grade-section h2{color:#2d3748;font-size:2rem;font-weight:700;margin-bottom:25px;text-align:center}.grade-grid{grid-gap:25px;display:grid;gap:25px;grid-template-columns:repeat(auto-fit,minmax(350px,1fr))}.grade-card{background:#fff;border:2px solid #e2e8f0;border-radius:16px;box-shadow:0 4px 20px #0000001a;padding:25px;transition:all .3s ease}.grade-card:hover{border-color:#ff6b35;box-shadow:0 8px 30px #00000026;transform:translateY(-3px)}.grade-card h3{color:#2d3748;font-size:1.5rem;margin:0 0 15px}.grade-card h3,.grade-number{font-weight:700;text-align:center}.grade-number{color:#ff6b35;font-size:2.5rem;margin-bottom:10px}.grade-card p{color:#718096;font-weight:600;margin-bottom:20px;text-align:center}.grade-details{background:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;padding:15px}.grade-details p{color:#4a5568;font-weight:500;margin:5px 0;text-align:left}.class-list{margin-top:15px}.class-item{border-bottom:1px solid #e2e8f0;justify-content:space-between;padding:8px 0}.class-item:last-child{border-bottom:none}.class-name{color:#2d3748;font-weight:600}.class-master{color:#718096;font-size:.9rem;font-style:italic}.stats-section{margin-bottom:40px}.stats-section h2{color:#2d3748;font-size:2rem;font-weight:700;margin-bottom:25px;text-align:center}.stats-grid{grid-gap:25px;gap:25px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.stat-item{background:#fff;border:2px solid #e2e8f0;border-radius:16px;box-shadow:0 4px 20px #0000001a;padding:25px}.stat-item h4{color:#2d3748;font-size:1.3rem;font-weight:600;margin:0 0 20px}.stat-content,.stat-item h4{text-align:center}.stat-bar{background:#e2e8f0;border-radius:10px;height:20px;margin-bottom:15px;overflow:hidden;width:100%}.stat-fill{border-radius:10px;height:100%;transition:width 1s ease}.stat-fill.male{background:linear-gradient(90deg,#3182ce,#63b3ed)}.stat-fill.eca{background:linear-gradient(90deg,#38a169,#68d391)}.stat-fill.academic{background:linear-gradient(90deg,#d69e2e,#f6e05e)}.stat-labels{color:#718096;display:flex;font-size:.9rem;font-weight:500;justify-content:space-between}.recent-classes-section{margin-bottom:40px}.recent-classes-section h2{color:#2d3748;font-size:2rem;font-weight:700;margin-bottom:25px;text-align:center}.classes-list{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.class-item{align-items:center;background:#fff;border:2px solid #0000;border-radius:12px;box-shadow:0 4px 15px #0000001a;display:flex;gap:15px;padding:20px;transition:all .3s ease}.class-item:hover{border-color:#ff6b35;box-shadow:0 8px 25px #00000026;transform:translateY(-3px)}.class-avatar{align-items:center;background:linear-gradient(135deg,#ff6b35,#f7931e);border-radius:50%;color:#fff;display:flex;font-size:1.5rem;font-weight:700;height:50px;justify-content:center;width:50px}.class-info{flex:1 1}.class-info h4{color:#2d3748;font-size:1.1rem;font-weight:600;margin:0 0 5px}.class-info p{color:#718096;font-size:.9rem;margin:0 0 3px}.class-master{color:#ff6b35;font-weight:500}.class-status{background:#38a169;border-radius:20px;color:#fff;font-size:.8rem;font-weight:600;padding:6px 12px}.no-classes{background:#f7fafc;border:2px solid #e2e8f0;border-radius:12px;color:#718096;padding:40px;text-align:center}.class-masters-section{margin-bottom:40px}.class-masters-section h2{color:#2d3748;font-size:2rem;font-weight:700;margin-bottom:25px;text-align:center}.masters-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.master-card{align-items:center;background:#fff;border:2px solid #0000;border-radius:12px;box-shadow:0 4px 15px #0000001a;display:flex;gap:15px;padding:20px;transition:all .3s ease}.master-card:hover{border-color:#ff6b35;box-shadow:0 8px 25px #00000026;transform:translateY(-3px)}.master-avatar{align-items:center;background:linear-gradient(135deg,#3182ce,#63b3ed);border-radius:50%;color:#fff;display:flex;font-size:1.5rem;font-weight:700;height:50px;justify-content:center;width:50px}.master-info{flex:1 1}.master-info h4{color:#2d3748;font-size:1.1rem;font-weight:600;margin:0 0 5px}.master-department{color:#ff6b35;font-size:.9rem;font-weight:500;margin:0 0 3px}.master-position{color:#718096;font-size:.9rem;margin:0 0 3px}.master-english{color:#a0aec0;font-size:.8rem;font-style:italic;margin:0}.no-masters{background:#f7fafc;border:2px solid #e2e8f0;border-radius:12px;color:#718096;padding:40px;text-align:center}@media (max-width:768px){.class-info-page{padding:15px}.page-header{flex-direction:column;gap:15px;text-align:center}.page-header h1{font-size:2rem}.classes-list,.grade-grid,.masters-grid,.stats-grid,.summary-section{grid-template-columns:1fr}.class-item,.master-card{flex-direction:column;text-align:center}}@media (max-width:480px){.page-header{padding:15px}.page-header h1{font-size:1.8rem}.summary-card{padding:20px}.card-number{font-size:2.5rem}.grade-card{padding:20px}.grade-number{font-size:2rem}}.group-list{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff2;border-right:1px solid #0000001a;display:flex;flex-direction:column;overflow:visible;transition:transform .3s ease,width .3s ease;width:280px}.group-list.collapsed{transform:translateX(-220px);width:60px}.group-list.collapsed .create-group-button,.group-list.collapsed .group-list-controls,.group-list.collapsed .group-list-header h3,.group-list.collapsed .group-list-header p,.group-list.collapsed .groups-container{display:none}.group-list.collapsed .group-list-header{cursor:pointer;padding:1rem .5rem}.group-list.collapsed .group-list-header:after{content:"💬";display:block;font-size:1.5rem}.group-list-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;cursor:pointer;padding:1.5rem;position:relative;text-align:center;-webkit-user-select:none;user-select:none}.toggle-button{background:#fff3;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:.8rem;padding:.25rem .5rem;position:absolute;right:1rem;top:50%;transform:translateY(-50%);transition:all .2s ease}.toggle-button:hover{background:#ffffff4d}.group-list-header h3{font-size:.9rem;font-weight:600;margin:0}.group-list-header p{font-size:.8rem;margin:.25rem 0 0;opacity:.9}.group-list-controls{background:#fffc;border-bottom:1px solid #0000001a;padding:.75rem}.search-box{margin-bottom:1rem;position:relative}.search-input{background:#fff;border:1px solid #0003;border-radius:20px;font-size:.9rem;padding:.6rem .75rem .6rem 2.25rem;transition:all .3s ease}.search-icon{color:#666;font-size:.9rem;left:1rem}.filter-controls{gap:.5rem}.filter-select{border:1px solid #0003;border-radius:8px;cursor:pointer;flex:1 1;font-size:.9rem;padding:.5rem}.filter-select:focus{border-color:#667eea;outline:none}.groups-container{flex:1 1;overflow-y:auto;padding:.5rem}.no-groups{color:#666;padding:2rem;text-align:center}.no-groups p{margin:.25rem 0}.group-item{align-items:center;background:#fff;border:2px solid #0000;border-radius:10px;cursor:pointer;display:flex;margin-bottom:.4rem;min-height:64px;padding:.75rem;position:relative;transition:all .3s ease}.group-item:hover{border-color:#667eea4d;box-shadow:0 8px 25px #00000026;transform:translateY(-2px)}.group-item.selected{background:linear-gradient(135deg,#667eea1a,#764ba21a);border-color:#667eea;box-shadow:0 4px 15px #667eea4d}.group-icon{align-items:center;border-radius:50%;box-shadow:0 4px 12px #00000026;display:flex;flex-shrink:0;font-size:1.2rem;height:42px;justify-content:center;margin-right:.75rem;width:42px}.group-info{flex:1 1;min-width:0}.group-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:.25rem}.group-name{color:#374151;font-size:.9rem;font-weight:500;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.unread-badge{background:#ef4444;border-radius:12px;color:#fff;font-size:.9rem;font-weight:600;min-width:20px;padding:.25rem .5rem;text-align:center}.group-description{color:#374151;line-height:1.3;margin:0 0 .4rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-meta{align-items:center;display:flex;gap:.6rem}.group-meta,.group-type,.last-activity,.member-count{color:#374151;font-size:.9rem;font-weight:500;line-height:1.3}.group-type,.last-activity,.member-count{background:#0000000d;border-radius:12px;padding:.25rem .5rem;white-space:nowrap}.admin-badge{color:#f59e0b;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));font-size:1rem;position:absolute;right:.5rem;top:.5rem}.create-group-button{background:#ffffffe6;border-top:1px solid #0000001a;padding:1rem}.btn-create-group{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:.9rem;font-weight:600;gap:.5rem;justify-content:center;padding:.75rem;transition:all .3s ease;width:100%}.btn-create-group:hover{box-shadow:0 8px 25px #667eea66;transform:translateY(-2px)}.btn-create-group span{font-size:1.2rem;font-weight:700}.groups-container::-webkit-scrollbar{width:6px}.groups-container::-webkit-scrollbar-track{background:#0000000d;border-radius:3px}.groups-container::-webkit-scrollbar-thumb{background:#667eea4d;border-radius:3px}.groups-container::-webkit-scrollbar-thumb:hover{background:#667eea80}@media (max-width:768px){.group-list{border-bottom:1px solid #0000001a;border-right:none;width:100%}.group-list.collapsed{transform:none;width:100%}.group-list.collapsed .group-list-header{padding:1rem}.group-list.collapsed .group-list-header:after{display:none}.group-list-header{padding:1rem}.group-list-header h3{font-size:1.1rem}.group-item{padding:.75rem}.group-icon{font-size:1.2rem;height:42px;width:42px}}@media (max-width:480px){.group-list-controls{padding:.75rem}.search-input{font-size:.9rem;padding:.5rem 1rem .5rem 2rem}.group-item{padding:.5rem}.group-icon{font-size:1.1rem;height:38px;width:38px}}.message-bubble{animation:fadeIn .3s ease-in-out;margin:.5rem 0;max-width:70%;position:relative}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.message-bubble.own-message{align-self:flex-end;margin-left:auto}.message-bubble.other-message{align-self:flex-start;margin-right:auto}.message-sender{gap:.5rem;margin-bottom:.5rem}.message-sender,.sender-avatar{align-items:center;display:flex}.sender-avatar{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:50%;color:#fff;flex-shrink:0;font-size:.9rem;font-weight:600;height:32px;justify-content:center;width:32px}.sender-info{display:flex;flex-direction:column;gap:.25rem}.sender-name{color:#333;font-size:.85rem;font-weight:600}.sender-role{background:#0000000d;border-radius:10px;color:#666;display:inline-block;font-size:.75rem;padding:.125rem .5rem}.message-content{word-wrap:break-word;border-radius:18px;line-height:1.4;padding:.75rem 1rem;position:relative}.own-message .message-content{background:linear-gradient(135deg,#667eea,#764ba2);border-bottom-right-radius:6px;color:#fff}.other-message .message-content{background:#fff;border:1px solid #0000001a;border-bottom-left-radius:6px;color:#333}.message-text{font-size:.95rem;line-height:1.5}.message-image img{border-radius:12px;cursor:pointer;max-height:300px;max-width:100%;transition:transform .3s ease}.message-image img:hover{transform:scale(1.05)}.image-fallback{color:#666;font-size:.9rem;gap:.5rem;padding:1rem}.image-fallback,.message-file{align-items:center;background:#0000000d;border-radius:8px;display:flex}.message-file{border:1px solid #0000001a;gap:.75rem;padding:.75rem}.file-icon{font-size:1.5rem}.file-info{flex:1 1;min-width:0}.file-name{font-size:.9rem;font-weight:600}.file-size{font-size:.8rem;margin-top:.25rem}.btn-download{align-items:center;background:#667eea;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;height:32px;justify-content:center;transition:all .3s ease;width:32px}.btn-download:hover{background:#5a67d8;transform:scale(1.1)}.message-system{align-items:center;background:#667eea1a;border:1px solid #667eea33;border-radius:20px;display:flex;gap:.5rem;margin:1rem auto;max-width:400px;padding:.5rem 1rem;text-align:center}.system-icon{color:#667eea;font-size:1rem}.system-content{color:#667eea;font-size:.85rem;font-weight:500}.message-attachments{display:flex;flex-direction:column;gap:.5rem;margin-top:.75rem}.attachment-item{border-radius:8px;overflow:hidden}.attachment-image{border-radius:8px;cursor:pointer;max-height:200px;max-width:100%;transition:transform .3s ease}.attachment-image:hover{transform:scale(1.05)}.attachment-file{align-items:center;background:#0000000d;border-radius:6px;display:flex;font-size:.85rem;gap:.5rem;padding:.5rem}.attachment-file .file-icon{color:#667eea;font-size:1rem}.attachment-file .file-name{color:#333;font-weight:500}.attachment-file .file-size{color:#666;font-size:.75rem}.message-meta{align-items:center;display:flex;font-size:.75rem;justify-content:space-between;margin-top:.5rem}.own-message .message-meta{color:#fffc}.other-message .message-meta{color:#888}.message-time{opacity:.8}.message-status{font-size:.8rem;opacity:.9}.message-actions{background:#fff;border:1px solid #0000001a;border-radius:20px;box-shadow:0 4px 12px #00000026;display:flex;gap:.25rem;opacity:0;padding:.25rem;position:absolute;right:0;top:-10px;transform:translateY(-10px);transition:all .3s ease;z-index:10}.message-bubble:hover .message-actions{opacity:1;transform:translateY(0)}.action-btn{background:#667eea1a;border-radius:50%;color:#667eea;font-size:.9rem;height:28px;width:28px}.action-btn:hover{background:#667eea;color:#fff;transform:scale(1.1)}.reply-indicator{background:#0000000d;border-radius:10px;color:#666;font-size:.75rem;gap:.25rem;margin-bottom:.5rem;max-width:200px;padding:.25rem .5rem}.reply-icon{font-size:.8rem}@media (max-width:768px){.message-bubble{max-width:85%}.message-content{padding:.5rem .75rem}.message-text{font-size:.9rem}.sender-avatar{height:28px;width:28px}.sender-avatar,.sender-name{font-size:.8rem}.sender-role{font-size:.7rem}}@media (max-width:480px){.message-bubble{max-width:90%}.message-content{padding:.5rem}.message-text{font-size:.85rem}.sender-avatar{font-size:.7rem;height:24px;width:24px}.sender-name{font-size:.75rem}.sender-role{font-size:.65rem}.message-actions{right:-5px;top:-5px}.action-btn{font-size:.8rem;height:24px;width:24px}}.message-composer{background:#fff;border-radius:12px;box-shadow:0 4px 12px #0000001a;overflow:visible;position:relative}.reply-indicator{align-items:center;background:#667eea1a;border-bottom:1px solid #667eea33;color:#667eea;display:flex;font-size:.85rem;gap:.5rem;padding:.75rem 1rem}.reply-icon{font-size:1rem}.reply-text{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-remove-reply{background:none;border:none;border-radius:50%;color:#667eea;cursor:pointer;font-size:1rem;padding:.25rem;transition:all .3s ease}.btn-remove-reply:hover{background:#667eea1a;transform:scale(1.1)}.attachments-preview{background:#00000005;border-bottom:1px solid #0000001a;padding:.75rem 1rem}.attachment-preview-item{align-items:center;background:#fff;border:1px solid #0000001a;border-radius:8px;display:flex;justify-content:space-between;margin-bottom:.5rem;padding:.5rem}.attachment-preview-item:last-child{margin-bottom:0}.attachment-info{align-items:center;display:flex;flex:1 1;gap:.5rem;min-width:0}.file-icon{color:#667eea;font-size:1.2rem}.file-name{color:#333;font-size:.85rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size{color:#666;font-size:.75rem}.btn-remove-file{align-items:center;background:#ef4444;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;flex-shrink:0;font-size:.8rem;height:24px;justify-content:center;transition:all .3s ease;width:24px}.btn-remove-file:hover{background:#dc2626;transform:scale(1.1)}.composer-input-area{align-items:flex-end;background:#fff;display:flex;gap:.75rem;padding:1rem;position:relative}.composer-controls{display:flex;flex-shrink:0;gap:.5rem}.control-btn{align-items:center;background:#667eea1a;border:none;border-radius:50%;color:#667eea;cursor:pointer;display:flex;font-size:1.2rem;height:40px;justify-content:center;transition:all .3s ease;width:40px}.control-btn:hover{background:#667eea33;transform:scale(1.1)}.message-input-container{flex:1 1;position:relative;z-index:1001}.message-input{border:1px solid #0003;border-radius:20px;font-family:inherit;font-size:.95rem;line-height:1.4;max-height:120px;min-height:40px;outline:none;padding:.75rem;resize:none;transition:all .3s ease;width:100%}.message-input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.message-input::placeholder{color:#999}.send-button{align-items:center;background:#667eea;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;flex-shrink:0;font-size:1.2rem;font-weight:700;height:40px;justify-content:center;transition:all .3s ease;width:40px}.send-button.active{background:linear-gradient(135deg,#667eea,#764ba2);transform:scale(1)}.send-button.active:hover{box-shadow:0 4px 12px #667eea66;transform:scale(1.1)}.send-button.disabled{background:#ccc;cursor:not-allowed;transform:scale(1)}.send-button.disabled:hover{box-shadow:none;transform:scale(1)}.message-templates{background:#fff;border:1px solid #0000001a;border-radius:12px;bottom:calc(100% + 10px);box-shadow:0 8px 25px #00000026;left:0;max-height:300px;overflow-y:auto;pointer-events:auto;position:absolute;right:0;transform:translateY(0);z-index:1000}.templates-header{align-items:center;background:#667eea0d;border-bottom:1px solid #0000001a;display:flex;justify-content:space-between;padding:1rem}.templates-header h4{color:#333;font-size:1rem;margin:0}.btn-close-templates{background:none;border:none;border-radius:50%;color:#666;cursor:pointer;font-size:1.2rem;padding:.25rem;transition:all .3s ease}.btn-close-templates:hover{background:#0000001a;color:#333}.templates-list{padding:.5rem}.template-item{background:#fff;border:none;border-radius:8px;cursor:pointer;margin-bottom:.25rem;padding:.75rem;text-align:left;transition:all .3s ease;width:100%}.template-item:hover{background:#667eea1a;transform:translateX(5px)}.template-item:last-child{margin-bottom:0}.template-name{color:#333;display:block;font-size:.9rem;font-weight:600;margin-bottom:.25rem}.template-preview{color:#666;display:block;font-size:.8rem;line-height:1.3}.file-attachment-panel{background:#fff;border:1px solid #0000001a;border-radius:12px;bottom:calc(100% + 10px);box-shadow:0 8px 25px #00000026;left:0;pointer-events:auto;position:absolute;right:0;z-index:1000}.attachment-header{align-items:center;background:#667eea0d;border-bottom:1px solid #0000001a;display:flex;justify-content:space-between;padding:1rem}.attachment-header h4{color:#333;font-size:1rem;margin:0}.btn-close-attachments{background:none;border:none;border-radius:50%;color:#666;cursor:pointer;font-size:1.2rem;padding:.25rem;transition:all .3s ease}.btn-close-attachments:hover{background:#0000001a;color:#333}.attachment-options{padding:1rem}.file-upload-btn{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;display:inline-block;font-weight:600;margin-bottom:1rem;padding:.75rem 1.5rem;text-align:center;transition:all .3s ease}.file-upload-btn:hover{box-shadow:0 8px 25px #667eea66;transform:translateY(-2px)}.file-types-info{background:#00000005;border:1px solid #0000001a;border-radius:8px;padding:.75rem}.file-types-info p{color:#666;font-size:.85rem;margin:.25rem 0}.file-types-info p:first-child{color:#333;font-weight:600}.file-attachment-panel::-webkit-scrollbar,.message-templates::-webkit-scrollbar{width:6px}.file-attachment-panel::-webkit-scrollbar-track,.message-templates::-webkit-scrollbar-track{background:#0000000d;border-radius:3px}.file-attachment-panel::-webkit-scrollbar-thumb,.message-templates::-webkit-scrollbar-thumb{background:#667eea4d;border-radius:3px}.file-attachment-panel::-webkit-scrollbar-thumb:hover,.message-templates::-webkit-scrollbar-thumb:hover{background:#667eea80}@media (max-width:768px){.composer-input-area{gap:.5rem;padding:.75rem}.control-btn,.send-button{font-size:1rem;height:36px;width:36px}.message-input{font-size:.9rem;min-height:36px;padding:.5rem}.file-attachment-panel,.message-templates{max-height:250px}}@media (max-width:480px){.composer-input-area{gap:.25rem;padding:.5rem}.control-btn,.send-button{font-size:.9rem;height:32px;width:32px}.message-input{font-size:.85rem;min-height:32px;padding:.5rem}.attachments-preview,.reply-indicator{padding:.5rem}.attachment-preview-item{padding:.25rem}.btn-remove-file{font-size:.7rem;height:20px;width:20px}}.emoji-picker-panel{background:#fff;border:1px solid #0000001a;border-radius:12px;bottom:calc(100% + 10px);box-shadow:0 8px 24px #00000026;left:0;max-height:300px;overflow:hidden;pointer-events:auto;position:absolute;right:0;z-index:1000}.emoji-header{align-items:center;background:#f8fafc;border-bottom:1px solid #0000001a;display:flex;justify-content:space-between;padding:.75rem 1rem}.emoji-header h4{color:#333;font-size:.9rem;font-weight:600;margin:0}.btn-close-emojis{background:none;border:none;border-radius:50%;color:#666;cursor:pointer;font-size:1rem;padding:.25rem;transition:all .3s ease}.btn-close-emojis:hover{background:#0000001a;color:#333}.emoji-grid{grid-gap:.25rem;display:grid;gap:.25rem;grid-template-columns:repeat(10,1fr);max-height:250px;overflow-y:auto;padding:.75rem}.emoji-item{align-items:center;background:none;border:none;border-radius:8px;cursor:pointer;display:flex;font-size:1.5rem;justify-content:center;min-height:40px;padding:.5rem;transition:all .2s ease}.emoji-item:hover{background:#667eea1a;transform:scale(1.1)}.emoji-item:active{transform:scale(.95)}.emoji-grid::-webkit-scrollbar{width:6px}.emoji-grid::-webkit-scrollbar-track{background:#0000000d;border-radius:3px}.emoji-grid::-webkit-scrollbar-thumb{background:#667eea4d;border-radius:3px}.emoji-grid::-webkit-scrollbar-thumb:hover{background:#667eea80}.chat-interface{background:#fff;display:flex;flex:1 1;flex-direction:column;overflow:visible}.chat-header{background:linear-gradient(135deg,#667eea,#764ba2);border-bottom:1px solid #fff3;color:#fff;justify-content:space-between;padding:1rem 1.5rem}.chat-header,.group-info{align-items:center;display:flex}.group-info{gap:1rem}.group-avatar{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fff3;border-radius:50%;display:flex;font-size:1.5rem;height:48px;justify-content:center;width:48px}.group-details{display:flex;flex-direction:column}.group-name{font-size:1.25rem;font-weight:600;margin:0}.group-description{font-size:.9rem;margin:.25rem 0 0;opacity:.9}.group-stats{display:flex;gap:1rem;margin-top:.5rem}.group-type,.member-count{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#fff3;border-radius:15px;font-size:.8rem;padding:.25rem .75rem}.group-actions{display:flex;gap:.5rem}.btn-group-info,.btn-group-members,.btn-group-settings{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#fff3;border:none;border-radius:50%;color:#fff;cursor:pointer;font-size:1.2rem;height:40px;transition:all .3s ease;width:40px}.btn-group-info:hover,.btn-group-members:hover,.btn-group-settings:hover{background:#ffffff4d;transform:scale(1.1)}.messages-container{background:#f8fafc;flex:1 1;overflow-y:auto;padding:1rem}.no-messages{align-items:center;display:flex;height:100%;justify-content:center}.no-messages-content{color:#666;padding:2rem;text-align:center}.no-messages-content h3{color:#333;font-size:1.5rem;margin-bottom:.5rem}.no-messages-content p{font-size:1rem;margin:.25rem 0}.group-welcome{background:linear-gradient(135deg,#667eea1a,#764ba21a);border:1px solid #667eea33;border-radius:12px;margin-top:1rem!important;padding:1rem}.messages-list{display:flex;flex-direction:column;gap:.5rem}.date-separator{color:#666;font-size:.85rem;font-weight:500;margin:1rem 0;position:relative;text-align:center}.date-separator:before{background:#0000001a;content:"";height:1px;left:0;position:absolute;right:0;top:50%;z-index:1}.date-separator span{background:#f8fafc;padding:0 1rem;position:relative;z-index:2}.typing-indicator{align-items:center;align-self:flex-start;background:#fffc;border-radius:20px;display:flex;gap:.5rem;margin:.5rem 0;max-width:200px;padding:.5rem 1rem}.typing-dots{display:flex;gap:.25rem}.typing-dots span{animation:typing 1.4s ease-in-out infinite;background:#667eea;border-radius:50%;height:8px;width:8px}.typing-dots span:first-child{animation-delay:-.32s}.typing-dots span:nth-child(2){animation-delay:-.16s}@keyframes typing{0%,80%,to{opacity:.5;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.typing-text{color:#666;font-size:.85rem}.message-composer-container{background:#fff;border-top:1px solid #0000001a;padding:1rem}.messages-container::-webkit-scrollbar{width:6px}.messages-container::-webkit-scrollbar-track{background:#0000000d;border-radius:3px}.messages-container::-webkit-scrollbar-thumb{background:#667eea4d;border-radius:3px}.messages-container::-webkit-scrollbar-thumb:hover{background:#667eea80}@media (max-width:768px){.chat-header{padding:.75rem 1rem}.group-avatar{font-size:1.25rem;height:40px;width:40px}.group-name{font-size:1.1rem}.group-stats{flex-direction:column;gap:.5rem}.message-composer-container,.messages-container{padding:.75rem}}@media (max-width:480px){.chat-header{padding:.5rem}.group-avatar{height:36px;width:36px}.group-avatar,.group-name{font-size:1rem}.group-description{font-size:.8rem}.btn-group-info,.btn-group-members,.btn-group-settings{font-size:1rem;height:36px;width:36px}.message-composer-container,.messages-container{padding:.5rem}}.group-messages-module{background:#667eea;display:flex;flex-direction:column;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;height:auto;min-height:calc(100vh - 70px)}.group-messages-module.loading{align-items:center;justify-content:center}.loading-spinner{color:#fff;font-size:1.2rem;text-align:center}.group-messages-header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border-bottom:1px solid #fff3;padding:1rem 2rem;text-align:center}.group-messages-header h2{color:#fff;font-size:1.5rem;font-weight:600;margin:0;text-shadow:0 2px 4px #0000004d}.group-messages-header p{color:#fffc;font-size:.9rem;font-weight:300;margin:.5rem 0 0}.group-messages-content{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#ffffff0d;display:flex;flex:1 1;overflow:visible}.no-group-selected{align-items:center;background:#ffffff05;display:flex;flex:1 1;justify-content:center}.no-group-content{color:#ffffffb3;padding:2rem;text-align:center}.no-group-content h3{color:#fff;font-size:1.2rem;margin-bottom:.5rem}.no-group-content p{font-size:.9rem;margin:.25rem 0}.group-messages-module::-webkit-scrollbar{width:8px}.group-messages-module::-webkit-scrollbar-track{background:#0000}.group-messages-module::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:4px}.group-messages-module::-webkit-scrollbar-thumb:hover{background:#ffffff80}.group-messages-module{position:relative;z-index:1}.chat-interface,.group-list,.group-messages-content,.group-messages-module{overflow:visible}@media (max-width:768px){.group-messages-header{padding:.75rem 1rem}.group-messages-header h2{font-size:1.5rem}.group-messages-header p{font-size:.9rem}.group-messages-content{flex-direction:column}}@media (max-width:480px){.group-messages-header h2{font-size:1.25rem}.group-messages-header p{font-size:.8rem}}.timetable-grid-container{background:#fff;border-radius:12px;box-shadow:0 10px 25px -5px #0000001a;margin-bottom:24px;padding:24px}.timetable-table{border:2px solid #374151;min-width:800px;table-layout:fixed}.timetable-table th{background:linear-gradient(135deg,#f3f4f6,#e5e7eb);border:2px solid #374151;color:#1f2937;font-size:14px;padding:12px 16px}.timetable-table td:first-child,.timetable-table th:first-child{width:8%}.timetable-table td:nth-child(2),.timetable-table td:nth-child(3),.timetable-table td:nth-child(4),.timetable-table td:nth-child(5),.timetable-table td:nth-child(6),.timetable-table td:nth-child(7),.timetable-table td:nth-child(8),.timetable-table th:nth-child(2),.timetable-table th:nth-child(3),.timetable-table th:nth-child(4),.timetable-table th:nth-child(5),.timetable-table th:nth-child(6),.timetable-table th:nth-child(7),.timetable-table th:nth-child(8){width:13.14%}.timetable-table td{border:2px solid #374151;height:120px;min-height:120px;padding:4px}.timetable-time-cell{background:linear-gradient(135deg,#f8fafc,#e2e8f0);border-right:3px solid #3b82f6;color:#1e293b;font-size:13px;font-weight:600;min-width:120px;padding:12px 8px;position:relative;text-align:center;white-space:nowrap}.timetable-time-cell:before{background:linear-gradient(90deg,#3b82f6,#8b5cf6,#06b6d4);content:"";height:3px;left:0;position:absolute;right:0;top:0}.time-slot-container{align-items:center;display:flex;flex-direction:column;gap:8px;height:100%;justify-content:center}.timetable-time-cell .time-slot{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#3b82f6,#1d4ed8);-webkit-background-clip:text;background-clip:text;color:#1e293b;font-size:14px;font-weight:800;letter-spacing:.5px;text-shadow:0 1px 2px #0000001a}.period-info{align-items:center;display:flex;flex-direction:column;gap:4px;width:100%}.period-badge{background:linear-gradient(135deg,#6366f1,#8b5cf6);border:1px solid #fff3;border-radius:12px;box-shadow:0 2px 4px #6366f14d;color:#fff;font-size:11px;font-weight:700;letter-spacing:.5px;min-width:60px;padding:4px 8px;text-align:center;text-transform:uppercase}.period-number{align-items:center;background:#f1f5f9;border:1px solid #cbd5e1;border-radius:50%;box-shadow:0 1px 2px #0000000d;color:#64748b;display:flex;font-size:10px;font-weight:600;height:20px;justify-content:center;width:20px}.period-badge[data-period-type=homeroom]{background:linear-gradient(135deg,#f59e0b,#d97706);box-shadow:0 2px 4px #f59e0b4d}.period-badge[data-period-type=recess]{background:linear-gradient(135deg,#10b981,#059669);box-shadow:0 2px 4px #10b9814d}.period-badge[data-period-type=lunch]{background:linear-gradient(135deg,#ef4444,#dc2626);box-shadow:0 2px 4px #ef44444d}.period-badge[data-period-type=period]{background:linear-gradient(135deg,#6366f1,#8b5cf6);box-shadow:0 2px 4px #6366f14d}.timetable-period-info{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:4px;box-shadow:0 1px 2px #0000000d;font-size:10px;line-height:1.3;margin-top:4px;padding:4px 6px}.timetable-period-info div{font-weight:500;margin:1px 0}.timetable-period-info div:first-child{color:#3b82f6;font-weight:600}.timetable-period-info div:last-child{color:#6b7280}@media (max-width:768px){.timetable-time-cell{min-width:100px;padding:8px 4px}.timetable-time-cell .time-slot{font-size:12px}.period-badge{font-size:10px;min-width:50px;padding:3px 6px}.period-number{font-size:9px;height:18px;width:18px}.timetable-period-info{font-size:9px;padding:3px 4px}}.timetable-cell{background:#fff;border:1px solid #d1d5db;border-radius:6px;height:100%;overflow-x:hidden;overflow-y:auto;padding:4px;transition:all .2s ease}.timetable-admin-cell{background:linear-gradient(135deg,#fef2f2,#fff);border:1px solid #fca5a5}.timetable-elective-x1-cell{background:linear-gradient(135deg,#f3e8ff,#fff);border:1px solid #c4b5fd}.timetable-elective-x2-cell{background:linear-gradient(135deg,#fffbeb,#fff);border:1px solid #fcd34d}.timetable-cell:hover{box-shadow:0 2px 8px #0000001a}.timetable-cell::-webkit-scrollbar{width:4px}.timetable-cell::-webkit-scrollbar-track{background:#f1f5f9;border-radius:2px}.timetable-cell::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:2px}.timetable-cell::-webkit-scrollbar-thumb:hover{background:#94a3b8}.timetable-empty-cell{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;cursor:default;opacity:.3;position:relative}.timetable-empty-cell:before{background:repeating-linear-gradient(45deg,#0000,#0000 3px,#94a3b814 0,#94a3b814 6px);bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.timetable-empty-cell:after{color:#94a3b8;content:"Free Period";font-size:10px;font-weight:500;left:50%;opacity:.7;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%)}.timetable-empty-cell:hover{background:linear-gradient(135deg,#f1f5f9,#e2e8f0);box-shadow:0 1px 3px #0000000d;opacity:.5}.timetable-empty-text{color:#94a3b8;font-size:11px;font-style:italic;opacity:0;padding:8px;text-align:center}.timetable-core-badge{background:linear-gradient(135deg,#dbeafe,#bfdbfe);border:1px solid #93c5fd;border-radius:4px;color:#1e40af}.timetable-core-badge,.timetable-elective-badge{font-size:10px;font-weight:700;margin-bottom:4px;padding:2px 4px;text-align:center}.timetable-elective-badge{background:linear-gradient(135deg,#f3e8ff,#e9d5ff);border:1px solid #c4b5fd;border-radius:4px;color:#7c3aed}.timetable-admin-badge{background:linear-gradient(135deg,#fef2f2,#fecaca);border:1px solid #fca5a5;border-radius:4px;color:#dc2626}.timetable-admin-badge,.timetable-elective-x1-badge{font-size:10px;font-weight:700;margin-bottom:4px;padding:2px 4px;text-align:center}.timetable-elective-x1-badge{background:linear-gradient(135deg,#f3e8ff,#e9d5ff);border:1px solid #c4b5fd;border-radius:4px;color:#7c3aed}.timetable-elective-x2-badge{background:linear-gradient(135deg,#fffbeb,#fef3c7);border:1px solid #fcd34d;border-radius:4px;color:#d97706;font-size:10px;font-weight:700;margin-bottom:4px;padding:2px 4px;text-align:center}.timetable-subject-text{color:#1f2937;font-size:11px;font-weight:600;line-height:1.3;margin-bottom:2px}.timetable-classroom-text{color:#6b7280;font-size:10px;line-height:1.2}.timetable-teacher-text{color:#059669;font-size:10px;font-weight:500;line-height:1.2}.timetable-special-cell{background:linear-gradient(135deg,#fef3c7,#fde68a);border:1px solid #f59e0b}.timetable-special-badge{background:linear-gradient(135deg,#fbbf24,#f59e0b);border-radius:4px;color:#92400e;font-size:10px;font-weight:700;margin-bottom:4px;padding:2px 4px;text-align:center}.timetable-break-cell{background:linear-gradient(135deg,#f3f4f6,#e5e7eb);border:1px solid #9ca3af}.timetable-break-text{color:#4b5563;font-size:12px;font-weight:600;text-align:center}.timetable-master-cell{background:linear-gradient(135deg,#fef3c7,#fde68a);border:2px solid #f59e0b}.timetable-master-text{color:#92400e;font-size:12px;font-weight:700;text-align:center}.timetable-elective-option{background:#fff;border:1px solid #d8b4fe;border-radius:4px;margin-bottom:2px;padding:2px 4px}.timetable-elective-option:last-child{margin-bottom:0}.timetable-explanation{background:linear-gradient(135deg,#fef3c7,#fed7aa);border:2px solid #f59e0b;border-radius:8px;box-shadow:0 4px 6px -1px #0000001a;margin-top:24px;padding:16px}.timetable-explanation h4{color:#92400e;font-size:16px;font-weight:700;margin-bottom:12px}.timetable-explanation-item{align-items:flex-start;display:flex;gap:8px;margin-bottom:8px}.timetable-explanation-label{color:#92400e;flex-shrink:0;font-weight:700;min-width:0}.timetable-explanation-text{color:#92400e;line-height:1.4}.timetable-text-small .timetable-subject-text{font-size:9px}.timetable-text-small .timetable-classroom-text,.timetable-text-small .timetable-teacher-text{font-size:8px}.timetable-text-small .timetable-core-badge,.timetable-text-small .timetable-elective-badge,.timetable-text-small .timetable-special-badge{font-size:8px;padding:1px 3px}.timetable-text-normal .timetable-subject-text,.timetable-text-small .timetable-time-cell{font-size:11px}.timetable-text-normal .timetable-classroom-text,.timetable-text-normal .timetable-teacher-text{font-size:10px}.timetable-text-normal .timetable-core-badge,.timetable-text-normal .timetable-elective-badge,.timetable-text-normal .timetable-special-badge{font-size:10px;padding:2px 4px}.timetable-text-large .timetable-subject-text,.timetable-text-normal .timetable-time-cell{font-size:13px}.timetable-text-large .timetable-classroom-text,.timetable-text-large .timetable-teacher-text{font-size:12px}.timetable-text-large .timetable-core-badge,.timetable-text-large .timetable-elective-badge,.timetable-text-large .timetable-special-badge{font-size:12px;padding:3px 5px}.timetable-text-large .timetable-time-cell,.timetable-text-xlarge .timetable-subject-text{font-size:15px}.timetable-text-xlarge .timetable-classroom-text,.timetable-text-xlarge .timetable-teacher-text{font-size:14px}.timetable-text-xlarge .timetable-core-badge,.timetable-text-xlarge .timetable-elective-badge,.timetable-text-xlarge .timetable-special-badge{font-size:14px;padding:4px 6px}.timetable-text-xlarge .timetable-time-cell{font-size:17px}@media (max-width:768px){.timetable-table{min-width:600px}.timetable-table td,.timetable-table th{padding:8px 4px}.timetable-table td{height:90px;min-height:90px}.timetable-text-small .timetable-subject-text{font-size:8px}.timetable-text-small .timetable-classroom-text,.timetable-text-small .timetable-teacher-text{font-size:7px}.timetable-text-normal .timetable-subject-text{font-size:10px}.timetable-text-normal .timetable-classroom-text,.timetable-text-normal .timetable-teacher-text{font-size:9px}.timetable-text-large .timetable-subject-text{font-size:12px}.timetable-text-large .timetable-classroom-text,.timetable-text-large .timetable-teacher-text{font-size:11px}.timetable-text-xlarge .timetable-subject-text{font-size:14px}.timetable-text-xlarge .timetable-classroom-text,.timetable-text-xlarge .timetable-teacher-text{font-size:13px}}@media (max-width:480px){.timetable-table{min-width:500px}.timetable-table td,.timetable-table th{padding:4px 2px}.timetable-table td{height:75px;min-height:75px}.timetable-text-small .timetable-subject-text{font-size:7px}.timetable-text-small .timetable-classroom-text,.timetable-text-small .timetable-teacher-text{font-size:6px}.timetable-text-normal .timetable-subject-text{font-size:9px}.timetable-text-normal .timetable-classroom-text,.timetable-text-normal .timetable-teacher-text{font-size:8px}.timetable-text-large .timetable-subject-text{font-size:11px}.timetable-text-large .timetable-classroom-text,.timetable-text-large .timetable-teacher-text{font-size:10px}.timetable-text-xlarge .timetable-subject-text{font-size:13px}.timetable-text-xlarge .timetable-classroom-text,.timetable-text-xlarge .timetable-teacher-text{font-size:12px}}.timetable-settings{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;margin:0 auto;max-width:1200px;padding:20px}.settings-header{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;box-shadow:0 8px 32px #0000001a;color:#fff;margin-bottom:30px;padding:30px}.settings-header h2{font-size:2.2rem;font-weight:600;margin:0 0 10px}.settings-header p{font-size:1.1rem;margin:0;opacity:.9}.message{animation:slideIn .3s ease-out;border-radius:8px;font-weight:500;margin-bottom:20px;padding:15px 20px}.message.success{background-color:#d4edda;border:1px solid #c3e6cb;color:#155724}.message.error{background-color:#f8d7da;border:1px solid #f5c6cb;color:#721c24}.message.info{background-color:#d1ecf1;border:1px solid #bee5eb;color:#0c5460}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.settings-content{display:flex;flex-direction:column;gap:30px}.config-section{background:#fff;border:1px solid #e9ecef;border-radius:12px;box-shadow:0 4px 20px #00000014;padding:25px}.config-section h3{border-bottom:2px solid #e9ecef;color:#2c3e50;font-size:1.4rem;font-weight:600;margin:0 0 20px;padding-bottom:10px}.form-group{margin-bottom:20px}.form-group label{font-weight:500}.form-input{background-color:#f8f9fa;border:2px solid #e9ecef;border-radius:8px;font-size:1rem;padding:12px 16px;transition:all .3s ease;width:100%}.form-input:focus{background-color:#fff;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.form-input.small{font-size:.9rem;padding:8px 12px;width:150px}.time-slots-table{border:1px solid #e9ecef;border-radius:8px;overflow-x:auto}.time-slots-table table{background:#fff;border-collapse:collapse;width:100%}.time-slots-table th{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.9rem;font-weight:600;letter-spacing:.5px;padding:15px 12px;text-align:left;text-transform:uppercase}.time-slots-table td{border-bottom:1px solid #e9ecef;padding:12px;vertical-align:middle}.time-slots-table tr:nth-child(2n){background-color:#f8f9fa}.time-slots-table tr:hover{background-color:#e3f2fd}.day-override{background:#f8f9fa;border-radius:8px;margin-bottom:20px;padding:20px}.day-override h4{color:#495057;font-size:1.2rem;font-weight:600;margin:0 0 15px}.override-controls{margin-bottom:20px}.override-controls label{align-items:center;color:#495057;cursor:pointer;display:flex;font-weight:500;gap:10px}.override-controls input[type=checkbox]{accent-color:#667eea;height:18px;width:18px}.override-details{grid-gap:15px;background:#fff;border:1px solid #dee2e6;border-radius:6px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));padding:15px}.action-buttons{justify-content:center;margin-top:30px}.btn{border:none;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;letter-spacing:.5px;padding:12px 30px;text-transform:uppercase;transition:all .3s ease}.btn-primary{background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 4px 15px #667eea4d;color:#fff}.btn-primary:hover:not(:disabled){box-shadow:0 6px 20px #667eea66;transform:translateY(-2px)}.btn-primary:disabled{cursor:not-allowed;opacity:.6;transform:none}.btn-secondary{background:#6c757d;box-shadow:0 4px 15px #6c757d4d;color:#fff}.btn-secondary:hover{background:#5a6268;box-shadow:0 6px 20px #6c757d66;transform:translateY(-2px)}.config-preview{background:#2c3e50;border-radius:8px;color:#ecf0f1;font-family:Courier New,monospace;font-size:.9rem;line-height:1.5;max-height:400px;overflow-x:auto;overflow-y:auto;padding:20px}.loading{color:#6c757d;font-size:1.2rem;padding:60px 20px;text-align:center}@media (max-width:768px){.timetable-settings{padding:15px}.settings-header{padding:20px}.settings-header h2{font-size:1.8rem}.config-section{padding:20px}.time-slots-table{font-size:.9rem}.form-input.small{width:120px}.action-buttons{align-items:center;flex-direction:column}.btn{max-width:300px;width:100%}}@media (max-width:480px){.time-slots-table td,.time-slots-table th{padding:8px 6px}.form-input.small{padding:6px 8px;width:100px}}.setup-toggle-buttons{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1.5rem}.setup-toggle-btn{align-items:center;border:none;border-radius:.75rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;cursor:pointer;display:flex;font-size:.875rem;font-weight:600;gap:.5rem;overflow:hidden;padding:.75rem 1.5rem;position:relative;transform:translateY(0);transition:all .3s cubic-bezier(.4,0,.2,1)}.setup-toggle-btn:before{background:linear-gradient(90deg,#0000,#fff3,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.setup-toggle-btn:hover:before{left:100%}.setup-toggle-btn:hover{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;transform:translateY(-2px)}.setup-toggle-btn:active{transform:translateY(0)}.setup-toggle-btn.app-setup{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff}.setup-toggle-btn.app-setup:hover{background:linear-gradient(135deg,#dc2626,#b91c1c)}.setup-toggle-btn.timetable-setup{background:linear-gradient(135deg,#6366f1,#4f46e5);color:#fff}.setup-toggle-btn.timetable-setup:hover{background:linear-gradient(135deg,#4f46e5,#4338ca)}.setup-toggle-btn.debug-data{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff}.setup-toggle-btn.debug-data:hover{background:linear-gradient(135deg,#d97706,#b45309)}.setup-toggle-btn.settings{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.setup-toggle-btn.settings:hover{background:linear-gradient(135deg,#5a67d8,#6b46c1)}.action-buttons-container{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem}.action-btn{align-items:center;border-radius:.75rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;display:flex;font-weight:600;gap:.5rem;justify-content:center;min-width:140px;overflow:hidden;padding:.875rem 1.75rem;position:relative;transform:translateY(0);transition:all .3s cubic-bezier(.4,0,.2,1)}.action-btn:before{background:linear-gradient(90deg,#0000,#fff3,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.action-btn:hover:before{left:100%}.action-btn:hover{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;transform:translateY(-2px)}.action-btn:active{transform:translateY(0)}.action-btn:disabled{cursor:not-allowed;opacity:.5}.action-btn:disabled,.action-btn:disabled:hover{box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;transform:translateY(0)}.action-btn.create-tables{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff}.action-btn.create-tables:hover:not(:disabled){background:linear-gradient(135deg,#2563eb,#1d4ed8)}.action-btn.insert-data{background:linear-gradient(135deg,#10b981,#059669);color:#fff}.action-btn.insert-data:hover:not(:disabled){background:linear-gradient(135deg,#059669,#047857)}.action-btn.complete-setup{background:linear-gradient(135deg,#8b5cf6,#7c3aed);color:#fff}.action-btn.complete-setup:hover:not(:disabled){background:linear-gradient(135deg,#7c3aed,#6d28d9)}.action-btn.refresh-status{background:linear-gradient(135deg,#6b7280,#4b5563);color:#fff}.action-btn.refresh-status:hover:not(:disabled){background:linear-gradient(135deg,#4b5563,#374151)}.action-btn.loading{color:#0000;position:relative}.action-btn.loading:after{animation:spin 1s linear infinite;border:2px solid #0000;border-radius:50%;border-top-color:currentcolor;content:"";height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}@media (max-width:768px){.setup-toggle-buttons{flex-direction:column;gap:.5rem}.setup-toggle-btn{justify-content:center;width:100%}.action-buttons-container{flex-direction:column;gap:.75rem}.action-btn{min-width:auto;width:100%}}@media (max-width:480px){.setup-toggle-btn{font-size:.8rem;padding:.625rem 1.25rem}.action-btn{font-size:.8rem;padding:.75rem 1.5rem}}.loading-container{background:linear-gradient(135deg,#dbeafe,#fff 50%,#e0e7ff);min-height:100vh}.loading-content{text-align:center}.loading-spinner-container{position:relative}.loading-spinner-outer{border:4px solid #dbeafe;border-radius:50%;margin:0 auto 1.5rem}.loading-spinner-inner,.loading-spinner-outer{animation:spin 1s linear infinite;height:4rem;width:4rem}.loading-spinner-inner{border:4px solid #3b82f6;border-radius:50%;border-top-color:#0000;left:50%;position:absolute;top:0;transform:translateX(-50%)}.loading-text{color:#4b5563;font-size:1.125rem;font-weight:500}.loading-subtext{color:#6b7280;font-size:.875rem;margin-top:.5rem}.error-container{background:linear-gradient(135deg,#dbeafe,#fff 50%,#e0e7ff);min-height:100vh}.error-content{margin:0 auto;max-width:28rem;text-align:center}.error-card{background:#fff;border:1px solid #f3f4f6;border-radius:.75rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;padding:2rem}.error-icon{color:#ef4444;font-size:2.25rem;margin-bottom:1rem}.error-title{color:#1f2937;font-size:1.25rem;font-weight:700;margin-bottom:.5rem}.error-message{margin-bottom:1.5rem}.error-button{background:linear-gradient(90deg,#3b82f6,#1d4ed8);border-radius:.75rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;color:#fff;padding:.75rem 1.5rem;transform:translateY(0);transition:all .2s}.error-button:hover{background:linear-gradient(90deg,#1d4ed8,#1e40af);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;transform:translateY(-2px)}.main-container{background:linear-gradient(135deg,#dbeafe,#fff 50%,#e0e7ff);min-height:100vh}.header-container{background:#fff;border-bottom:1px solid #e5e7eb;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;overflow:hidden;position:relative}.header-gradient{background:linear-gradient(90deg,#3b82f60d,#6366f10d);inset:0;position:absolute}.header-content{margin:0 auto;max-width:80rem;padding:1.5rem 1rem;position:relative}.header-main{justify-content:space-between}.header-left,.header-main{align-items:center;display:flex}.header-left{gap:1rem}.header-icon{background:linear-gradient(135deg,#3b82f6,#4f46e5);border-radius:.75rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;padding:.75rem}.header-icon span{font-size:1.5rem}.header-text h1{background:linear-gradient(90deg,#1d4ed8,#4f46e5);background-clip:text;-webkit-background-clip:text;color:#0000;font-size:2.25rem;font-weight:700;margin-bottom:.5rem}.header-text p{color:#4b5563;font-size:1.125rem}.back-button{align-items:center;background:linear-gradient(90deg,#6b7280,#4b5563);border-radius:.75rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;display:flex;gap:.5rem;padding:.75rem 1.5rem;transform:translateY(0);transition:all .2s}.back-button:hover{background:linear-gradient(90deg,#4b5563,#374151);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.back-button span:first-child{transition:transform .2s}.back-button:hover span:first-child{transform:translateX(-4px)}.navigation{display:flex;gap:.5rem;margin-top:1.5rem}.nav-button{align-items:center;border-radius:.75rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;display:flex;font-weight:600;gap:.5rem;padding:.75rem 1.5rem;transform:translateY(0);transition:all .2s}.nav-button.active{background:linear-gradient(to right,var(--color-from),var(--color-to))}.nav-button.inactive{background:#fff;border:1px solid #d1d5db;color:#374151}.nav-button.inactive:hover{background:#f9fafb;border-color:#9ca3af}.nav-button:hover{box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.nav-button span:first-child{transition:transform .2s}.nav-button:hover span:first-child{transform:scale(1.1)}.content-container{margin:0 auto;max-width:80rem;padding:1.5rem 1rem}.selected-item-container{margin-bottom:1.5rem}.back-to-list-button{align-items:center;background:linear-gradient(90deg,#6b7280,#4b5563);border-radius:.75rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;color:#fff;display:inline-flex;padding:.75rem 1.5rem;transform:translateY(0);transition:all .2s}.back-to-list-button:hover{background:linear-gradient(90deg,#4b5563,#374151);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;transform:translateY(-2px)}.back-to-list-button span:first-child{margin-right:.5rem;transition:transform .2s}.back-to-list-button:hover span:first-child{transform:translateX(-4px)}.timetable-card{background:#fff;border:1px solid #f3f4f6;border-radius:.75rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;overflow:hidden}.classes-4x6-grid{margin-bottom:1rem}.grid-4-cols{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(4,1fr)}.students-6col-grid,.teachers-4col-grid{margin-bottom:1rem}.grid-6-cols{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:repeat(6,1fr)}.grid-1-cols{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(1,1fr)}@media (min-width:768px){.grid-1-cols{grid-template-columns:repeat(2,1fr)}}@media (min-width:1024px){.grid-1-cols{grid-template-columns:repeat(3,1fr)}}.item-card{background:#fff;border:1px solid #f3f4f6;border-radius:.75rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;transform:translateY(0)}.item-card:hover{border-color:#d1d5db;box-shadow:0 25px 50px -12px #00000040;transform:translateY(-4px)}.item-card.class-card-compact{min-height:200px}.item-card.teacher-card-compact{min-height:220px}.item-card.student-card-compact{min-height:180px}.card-content{padding:1rem}.card-header{justify-content:space-between;margin-bottom:.75rem}.card-icon-container{border-radius:.5rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;padding:.5rem;transition:transform .2s}.item-card:hover .card-icon-container{transform:scale(1.1)}.card-icon-container.class{background:linear-gradient(135deg,#3b82f6,#1d4ed8)}.card-icon-container.teacher{background:linear-gradient(135deg,#10b981,#059669)}.card-icon-container.student{background:linear-gradient(135deg,#8b5cf6,#7c3aed)}.card-icon{color:#fff;font-size:.875rem}.card-icon.large{font-size:1.125rem}.elective-badge{background:linear-gradient(90deg,#f3e8ff,#e9d5ff);border-radius:9999px;box-shadow:0 1px 2px 0 #0000000d;color:#6b21a8;font-weight:600}.card-title-section{margin-bottom:.75rem;text-align:center}.card-title{color:#1f2937;font-size:1.125rem;font-weight:700;margin-bottom:.25rem;transition:color .2s}.item-card:hover .card-title{color:#111827}.card-subtitle{color:#4b5563;font-size:.875rem}.card-details{display:flex;flex-direction:column;font-size:.875rem;gap:.5rem}.card-detail-row{align-items:center;color:#4b5563;display:flex;gap:.5rem;justify-content:center}.card-detail-row.compact{font-size:.75rem;gap:.25rem}.card-detail-icon{color:#3b82f6}.card-detail-icon.emerald{color:#10b981}.card-detail-icon.purple{color:#8b5cf6}.card-detail-text{overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.subjects-display{background:#ecfdf5;color:#374151}.elective-subjects-display,.subjects-display{border-radius:.5rem;font-size:.75rem;padding:.25rem .5rem;text-align:center}.elective-subjects-display{background:#faf5ff;color:#6b21a8}.card-footer{border-top:1px solid #f3f4f6;margin-top:.75rem;padding-top:.75rem}.card-footer-text{color:#6b7280;font-size:.75rem;text-align:center}.card-footer-compact{border-top:1px solid #f3f4f6;margin-top:.5rem;padding-top:.5rem}.card-footer-text-compact{color:#6b7280;font-size:.75rem;text-align:center}.elective-management{margin-bottom:1.5rem}.elective-title{color:#1f2937;font-size:1.25rem;font-weight:700;margin-bottom:1rem}.fallback-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(1,1fr)}@media (min-width:768px){.fallback-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:1024px){.fallback-grid{grid-template-columns:repeat(3,1fr)}}.fallback-card{background:#fff;border:1px solid #f3f4f6;border-radius:.75rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;cursor:pointer;transform:translateY(0);transition:all .3s cubic-bezier(.4,0,.2,1)}.fallback-card:hover{border-color:#d1d5db;box-shadow:0 25px 50px -12px #00000040;transform:translateY(-4px)}.fallback-card-content{padding:1.5rem}.fallback-card-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:1rem}.fallback-card-left{align-items:center;display:flex;gap:.75rem}.fallback-card-icon-container{border-radius:.5rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;padding:.5rem;transition:transform .2s}.fallback-card-icon-container.class{background:linear-gradient(135deg,#3b82f6,#1d4ed8)}.fallback-card-icon-container.teacher{background:linear-gradient(135deg,#10b981,#059669)}.fallback-card-icon-container.student{background:linear-gradient(135deg,#8b5cf6,#7c3aed)}.fallback-card:hover .fallback-card-icon-container{transform:scale(1.1)}.fallback-card-title{color:#1f2937;font-size:1.125rem;font-weight:700;transition:color .2s}.fallback-card:hover .fallback-card-title{color:#111827}.fallback-card-footer{align-items:center;border-top:1px solid #f3f4f6;display:flex;justify-content:space-between;margin-top:1rem;padding-top:1rem}.fallback-card-footer-text{color:#6b7280;font-size:.75rem}.fallback-card-arrow{color:#9ca3af;transition:color .2s}.fallback-card:hover .fallback-card-arrow{color:#4b5563}.timetable-container{animation:gradientShift 15s ease infinite;background:linear-gradient(135deg,#667eea,#764ba2 25%,#f093fb 50%,#f5576c 75%,#4facfe);background-size:400% 400%;min-height:100vh;position:relative}.timetable-container:before{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#ffffffe6;bottom:0;content:"";left:0;position:fixed;right:0;top:0;z-index:0}.timetable-container>*{position:relative;z-index:1}@keyframes gradientShift{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.timetable-header{animation:headerGradient 8s ease infinite;background:linear-gradient(135deg,#ff6b6b,#4ecdc4 25%,#45b7d1 50%,#96ceb4 75%,#feca57);background-size:300% 300%;border-bottom:3px solid #fff3;box-shadow:0 15px 45px #ff6b6b4d;color:#fff;overflow:hidden;position:relative}@keyframes headerGradient{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.timetable-header:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg width='60' height='60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23fff' fill-opacity='.05' fill-rule='evenodd'%3E%3Ccircle cx='9' cy='9' r='2'/%3E%3Ccircle cx='51' cy='9' r='2'/%3E%3Ccircle cx='9' cy='51' r='2'/%3E%3Ccircle cx='51' cy='51' r='2'/%3E%3C/g%3E%3C/svg%3E") repeat;bottom:0;content:"";left:0;opacity:.1;position:absolute;right:0;top:0}.timetable-header>*{position:relative;z-index:2}.timetable-nav{display:flex;flex-wrap:wrap;gap:8px;margin-top:1rem}.timetable-nav-button{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff26;border:2px solid #0000;border-radius:12px;box-shadow:0 4px 15px #0000001a;color:#fff;cursor:pointer;font-weight:600;overflow:hidden;padding:12px 24px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.timetable-nav-button:before{background:linear-gradient(90deg,#0000,#fff3,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.timetable-nav-button:hover:before{left:100%}.timetable-nav-button.active{background:#3b82f6!important;border-color:#3b82f6!important;box-shadow:0 8px 25px #3b82f64d!important;color:#fff!important}.timetable-nav-button.active:hover{background:#1d4ed8!important;border-color:#1d4ed8!important;box-shadow:0 12px 35px #3b82f666!important;transform:translateY(-2px)}.timetable-nav-button:not(.active){background:#ffffff1a;border-color:#fff3;color:#fff}.timetable-nav-button:not(.active):hover{background:#fff3;box-shadow:0 8px 25px #00000026;transform:translateY(-2px)}.timetable-content{margin:0 auto;max-width:80rem;padding:1.5rem 1rem}.timetable-grid{background:linear-gradient(135deg,#fff,#f8fafc 50%,#e2e8f0);border:2px solid #fffc;border-radius:20px;box-shadow:0 20px 60px #0000001a;margin-bottom:2rem;overflow:hidden;padding:2rem;position:relative}.timetable-grid:before{animation:cardGradient 6s ease infinite;background:linear-gradient(135deg,#ff6b6b,#4ecdc4,#45b7d1,#96ceb4,#feca57);background-size:300% 300%;content:"";height:4px;left:0;position:absolute;right:0;top:0}@keyframes cardGradient{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.timetable-table{background:#fff;border:2px solid #e5e7eb;border-radius:12px;box-shadow:0 8px 25px #0000001a;min-width:100%}.timetable-table th{background:linear-gradient(135deg,#667eea,#764ba2);border:1px solid #5a6fd8;color:#fff;font-size:.9rem;font-weight:700;letter-spacing:.025em;min-width:12rem;padding:1rem;text-align:left;text-shadow:0 1px 2px #0000001a}.timetable-table td{padding:.75rem;transition:all .2s ease}.timetable-table tr:nth-child(2n){background:linear-gradient(135deg,#f8fafc,#f1f5f9)}.timetable-table tr:nth-child(odd){background:#fff}.timetable-table tr:hover{background:linear-gradient(135deg,#dbeafe,#bfdbfe);box-shadow:0 4px 15px #3b82f61a;transform:scale(1.01)}.timetable-cell{border-radius:8px;display:flex;flex-direction:column;gap:.5rem;min-height:4rem;overflow:hidden;padding:.75rem;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.timetable-cell:before{background:linear-gradient(90deg,#0000,#fff3,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.timetable-cell:hover:before{left:100%}.timetable-cell.core{background:linear-gradient(135deg,#dbeafe,#bfdbfe);border:2px solid #3b82f6;box-shadow:0 4px 15px #3b82f633}.timetable-cell.core:hover{box-shadow:0 8px 25px #3b82f64d;transform:translateY(-2px)}.timetable-cell.elective{background:linear-gradient(135deg,#f3e8ff,#e9d5ff);border:2px solid #8b5cf6;box-shadow:0 4px 15px #8b5cf633}.timetable-cell.elective:hover{box-shadow:0 8px 25px #8b5cf64d;transform:translateY(-2px)}.timetable-subject{color:#1e40af;font-size:.8rem;font-weight:700;letter-spacing:.025em;line-height:1.3;text-shadow:0 1px 2px #0000001a}.timetable-classroom{background:#ffffffb3;color:#6b7280;font-weight:500}.timetable-classroom,.timetable-teacher{border-radius:4px;display:inline-block;font-size:.75rem;padding:2px 6px}.timetable-teacher{background:#10b9811a;color:#059669;font-weight:600}.timetable-type-badge{border-radius:.25rem;font-size:.75rem;font-weight:700;margin-bottom:.25rem;padding:.125rem .25rem;text-align:center}.timetable-type-badge.core{background-color:#dbeafe;color:#1e40af}.timetable-type-badge.elective{background-color:#ede9fe;color:#7c3aed}.timetable-multiple-subjects{display:flex;flex-direction:column;gap:.25rem;max-height:8rem;overflow-y:auto}.timetable-multiple-subject{background-color:#f9fafb;border:1px solid #e5e7eb;border-radius:.25rem;padding:.25rem}.timetable-legend{background-color:#fefce8;border:1px solid #fde047;border-radius:.5rem;margin-top:1rem;padding:1rem}.timetable-legend h4{color:#92400e;font-weight:600;margin-bottom:.5rem}.timetable-legend p{color:#92400e;font-size:.875rem;margin-bottom:.25rem}.timetable-legend p:last-child{margin-bottom:0}.timetable-legend strong{font-weight:700}.item-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.item-card{background:linear-gradient(135deg,#fff,#f8fafc);border:2px solid #0000;border-radius:16px;box-shadow:0 8px 25px #0000001a;cursor:pointer;overflow:hidden;padding:1.5rem;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.item-card:before{animation:cardGradient 4s ease infinite;background:linear-gradient(135deg,#3b82f6,#8b5cf6,#ec4899,#f59e0b);background-size:300% 300%;content:"";height:4px;left:0;position:absolute;right:0;top:0}.item-card:hover{border-color:#3b82f6;box-shadow:0 20px 40px #3b82f633;transform:translateY(-8px) scale(1.02)}.item-card h3{color:#1f2937;font-weight:600;margin-bottom:.5rem}.item-card .item-info{color:#6b7280;font-size:.875rem}.elective-badge{background-color:#f3e8ff;border-radius:.25rem;color:#7c3aed;font-size:.75rem;margin-left:.5rem;padding:.25rem .5rem}.elective-info{color:#7c3aed;font-size:.75rem;margin-top:.25rem}.search-filter{border-radius:.5rem;box-shadow:0 4px 6px -1px #0000001a;margin-bottom:1.5rem;padding:1rem}.search-filter .filter-row{display:flex;flex-direction:column;gap:1rem}@media (min-width:640px){.search-filter .filter-row{flex-direction:row}}.search-filter input{border:1px solid #d1d5db;border-radius:.5rem;flex:1 1;font-size:.875rem;padding:.5rem 1rem}.search-filter input:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f633;outline:none}.search-filter select{border:1px solid #d1d5db;border-radius:.5rem;font-size:.875rem;padding:.5rem 1rem;width:100%}@media (min-width:640px){.search-filter select{width:12rem}}.search-filter select:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f633;outline:none}.statistics-panel{background:linear-gradient(135deg,#f8fafc,#e2e8f0);border:1px solid #e2e8f0;border-radius:16px;box-shadow:0 4px 20px #00000014;margin-bottom:24px;overflow:hidden;padding:24px;position:relative}.statistics-panel:before{background:linear-gradient(90deg,#3b82f6,#8b5cf6 50%,#10b981);content:"";height:4px;left:0;position:absolute;right:0;top:0}.statistics-title{color:#1e293b;font-size:1.25rem;font-weight:700;margin-bottom:20px;position:relative;z-index:1}.statistics-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));position:relative;z-index:1}@media (min-width:1200px){.statistics-grid{grid-template-columns:repeat(4,1fr)}}@media (min-width:900px) and (max-width:1199px){.statistics-grid{grid-template-columns:repeat(3,1fr)}}@media (min-width:600px) and (max-width:899px){.statistics-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:599px){.statistics-grid{gap:12px;grid-template-columns:1fr}}.statistics-item{background:#fff;border:1px solid #f1f5f9;border-radius:12px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;display:flex;flex-direction:column;justify-content:center;min-height:100px;overflow:hidden;padding:20px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.statistics-item:before{background:linear-gradient(90deg,#3b82f6,#8b5cf6);content:"";height:3px;left:0;position:absolute;right:0;top:0}.statistics-item:hover{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;transform:translateY(-2px)}.statistics-label{color:#64748b;font-size:.875rem;font-weight:500;line-height:1.4;margin-bottom:8px}.statistics-value{color:#1e293b;font-size:1.5rem;font-weight:700;line-height:1.2}.statistics-array{color:#475569;font-size:.875rem;font-weight:500;line-height:1.4}.elective-selector{background:#fff;border-radius:.5rem;box-shadow:0 4px 6px -1px #0000001a;margin-bottom:1rem;padding:1rem}.elective-selector h4{font-size:1.125rem;font-weight:600;margin-bottom:1rem}.elective-form{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.elective-form .form-group{display:flex;flex-direction:column}.elective-form label{color:#374151;font-size:.875rem;font-weight:500;margin-bottom:.5rem}.elective-form select{border:1px solid #d1d5db;border-radius:.5rem;font-size:.875rem;padding:.5rem .75rem}.elective-form select:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f633;outline:none}.elective-form .form-actions{align-items:center;display:flex;justify-content:space-between;margin-top:1rem}.elective-form .current-info{color:#6b7280;font-size:.875rem}.elective-form button{align-items:center;background-color:#3b82f6;border:none;border-radius:.5rem;color:#fff;cursor:pointer;display:flex;font-size:.875rem;gap:.5rem;padding:.5rem 1rem}.elective-form button:hover:not(:disabled){background-color:#2563eb}.elective-form button:disabled{background-color:#d1d5db;cursor:not-allowed}.loading-spinner{animation:spin 1s ease-in-out infinite;border:2px solid #fff;border-top-color:#0000;display:inline-block;height:1rem;width:1rem}.error-message{background-color:#fef2f2;border:1px solid #fecaca;border-radius:.5rem;color:#dc2626;padding:1rem;text-align:center}.error-message .icon{font-size:1.25rem;margin-bottom:1rem}.error-message button{background-color:#3b82f6;border:none;border-radius:.5rem;color:#fff;cursor:pointer;margin-top:1rem;padding:.5rem 1rem}.error-message button:hover{background-color:#2563eb}.classes-4x6-grid{max-width:100%;width:100%}.classes-4x6-grid .grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(4,1fr);width:100%}.class-card-compact{display:flex;flex-direction:column;justify-content:space-between;min-height:200px}.class-card-compact:hover{box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;transform:translateY(-2px)}.teachers-4col-grid{max-width:100%;width:100%}.teachers-4col-grid .grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(4,1fr);width:100%}.teacher-card-compact{display:flex;flex-direction:column;justify-content:space-between;min-height:220px}.teacher-card-compact:hover{box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;transform:translateY(-2px)}.students-6col-grid{max-width:100%;width:100%}.students-6col-grid .grid{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:repeat(6,1fr);width:100%}.student-card-compact{display:flex;flex-direction:column;justify-content:space-between;min-height:160px}.student-card-compact:hover{box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;transform:translateY(-2px)}.module-nav-container{display:flex;flex-direction:column;gap:8px;margin-bottom:32px;padding:0}.module-nav-btn{align-items:center;background:#f8fafc;border:2px solid #e5e7eb;border-radius:12px;box-shadow:0 2px 8px #0000000d;color:#374151;cursor:pointer;display:flex;font-size:15px;font-weight:600;gap:12px;justify-content:flex-start;margin-bottom:8px;overflow:hidden;padding:16px 20px;position:relative;text-align:left;text-decoration:none;transition:all .3s cubic-bezier(.4,0,.2,1);width:100%}.module-nav-btn:hover{background:#f1f5f9;border-color:#3b82f6;box-shadow:0 8px 25px #3b82f626;transform:translateY(-2px)}.module-nav-btn.active{background:#3b82f6!important;border-color:#3b82f6!important;box-shadow:0 8px 25px #3b82f64d!important;color:#fff!important}.module-nav-btn.active:hover{background:#1d4ed8!important;border-color:#1d4ed8!important;box-shadow:0 12px 35px #3b82f666!important;transform:translateY(-3px)}.module-nav-icon{align-items:center;display:flex;font-size:18px;height:20px;justify-content:center;width:20px}.module-nav-text{font-weight:600;letter-spacing:.025em}.module-nav-english{font-size:12px;font-weight:500;margin-left:4px;opacity:.8}.form-control-container{margin-bottom:20px;position:relative}.form-control-label{color:#374151;display:block;font-size:14px;font-weight:600;letter-spacing:.025em;margin-bottom:8px}.select-container{display:inline-block;min-width:200px;position:relative;width:100%}.select-wrapper{background:linear-gradient(135deg,#fff,#f8fafc);border:2px solid #e5e7eb;border-radius:12px;box-shadow:0 4px 15px #0000000d;overflow:hidden;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.select-wrapper:hover{border-color:#3b82f6;box-shadow:0 8px 25px #3b82f626;transform:translateY(-2px)}.select-wrapper:focus-within{border-color:#3b82f6;box-shadow:0 0 0 4px #3b82f61a}select{-webkit-appearance:none;appearance:none;background:#0000;border:none;color:#374151;cursor:pointer;font-family:inherit;font-size:15px;font-weight:500;padding:16px 50px 16px 20px;width:100%}select,select:focus{outline:none}.select-arrow{border-left:6px solid #0000;border-right:6px solid #0000;border-top:8px solid #6b7280;height:0;pointer-events:none;position:absolute;right:20px;top:50%;transform:translateY(-50%);transition:all .3s ease;width:0}.select-wrapper:hover .select-arrow{border-top-color:#3b82f6}.select-wrapper:focus-within .select-arrow{border-top-color:#3b82f6;transform:translateY(-50%) rotate(180deg)}.btn-gradient,.btn-primary,.btn-secondary,.btn-success,.demo-btn,.primary-btn,.view-details-btn,.view-module-btn{align-items:center;background:linear-gradient(135deg,#3b82f6,#1d4ed8);border:none;border-radius:12px;box-shadow:0 4px 15px #3b82f64d;color:#fff;cursor:pointer;display:inline-flex;font-size:14px;font-weight:600;gap:8px;justify-content:center;letter-spacing:.025em;overflow:hidden;padding:12px 24px;position:relative;text-decoration:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.btn-gradient:before,.btn-primary:before,.btn-secondary:before,.btn-success:before,.demo-btn:before,.primary-btn:before,.view-details-btn:before,.view-module-btn:before{background:linear-gradient(90deg,#0000,#fff3,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.btn-gradient:hover:before,.btn-primary:hover:before,.btn-secondary:hover:before,.btn-success:hover:before,.demo-btn:hover:before,.primary-btn:hover:before,.view-details-btn:hover:before,.view-module-btn:hover:before{left:100%}.btn-gradient:hover,.btn-primary:hover,.btn-secondary:hover,.btn-success:hover,.demo-btn:hover,.primary-btn:hover,.view-details-btn:hover,.view-module-btn:hover{background:linear-gradient(135deg,#1d4ed8,#1e40af);box-shadow:0 8px 25px #3b82f666;transform:translateY(-3px)}.btn-gradient:active,.btn-primary:active,.btn-secondary:active,.btn-success:active,.demo-btn:active,.primary-btn:active,.view-details-btn:active,.view-module-btn:active{box-shadow:0 4px 15px #3b82f64d;transform:translateY(-1px)}.btn-secondary{background:linear-gradient(135deg,#6b7280,#4b5563);box-shadow:0 4px 15px #6b72804d}.btn-secondary:hover{background:linear-gradient(135deg,#4b5563,#374151);box-shadow:0 8px 25px #6b728066}.btn-success{background:linear-gradient(135deg,#10b981,#059669);box-shadow:0 4px 15px #10b9814d}.btn-success:hover{background:linear-gradient(135deg,#059669,#047857);box-shadow:0 8px 25px #10b98166}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text],textarea{background:linear-gradient(135deg,#fff,#f8fafc);border:2px solid #e5e7eb;border-radius:12px;box-shadow:0 2px 8px #0000000d;color:#374151;font-family:inherit;font-size:15px;font-weight:500;padding:16px 20px;transition:all .3s cubic-bezier(.4,0,.2,1);width:100%}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=text]:focus,textarea:focus{background:#fff;border-color:#3b82f6;box-shadow:0 0 0 4px #3b82f61a,0 8px 25px #3b82f626;outline:none;transform:translateY(-2px)}input[type=email]:hover,input[type=number]:hover,input[type=password]:hover,input[type=search]:hover,input[type=text]:hover,textarea:hover{border-color:#3b82f6;box-shadow:0 4px 15px #3b82f61a}.control-container{background:linear-gradient(135deg,#fff,#f8fafc);border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 4px 15px #0000000d;margin-bottom:24px;padding:24px;transition:all .3s ease}.control-container:hover{box-shadow:0 8px 25px #0000001a;transform:translateY(-2px)}.control-header{border-bottom:2px solid #e5e7eb;color:#1f2937;font-size:18px;font-weight:700;margin-bottom:20px;padding-bottom:12px}.form-group{margin-bottom:24px}.form-group label{color:#374151;letter-spacing:.025em}input[type=checkbox],input[type=radio]{accent-color:#3b82f6;cursor:pointer;height:20px;margin-right:12px;width:20px}@media (max-width:1200px){.classes-4x6-grid .grid,.teachers-4col-grid .grid{grid-template-columns:repeat(3,1fr)}.students-6col-grid .grid{grid-template-columns:repeat(4,1fr)}}@media (max-width:768px){.timetable-content{padding:1rem .5rem}.timetable-table{font-size:.75rem}.timetable-table td,.timetable-table th{padding:.25rem}.item-grid{grid-template-columns:1fr}.statistics-grid{grid-template-columns:repeat(2,1fr)}.elective-form{grid-template-columns:1fr}.classes-4x6-grid .grid{grid-template-columns:repeat(2,1fr)}.class-card-compact{min-height:180px}.teachers-4col-grid .grid{grid-template-columns:repeat(2,1fr)}.teacher-card-compact{min-height:200px}.students-6col-grid .grid{grid-template-columns:repeat(3,1fr)}.student-card-compact{min-height:140px}}@media (max-width:480px){.statistics-grid{grid-template-columns:1fr}.timetable-nav{flex-direction:column;gap:.5rem}.timetable-nav-button{text-align:center}.classes-4x6-grid .grid{grid-template-columns:1fr}.class-card-compact{min-height:160px}.teachers-4col-grid .grid{grid-template-columns:1fr}.teacher-card-compact{min-height:180px}.students-6col-grid .grid{grid-template-columns:repeat(2,1fr)}.student-card-compact{min-height:120px}}.homework-module{background-color:#f9fafb;min-height:100vh}.homework-header{align-items:center;background:#fff;border-bottom:1px solid #e5e7eb;box-shadow:0 1px 3px 0 #0000001a;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;padding:1rem 1.5rem}.back-btn{background:#6b7280;border:none;border-radius:.375rem;color:#fff;cursor:pointer;font-size:.875rem;padding:.5rem 1rem;transition:background-color .2s}.back-btn:hover{background:#4b5563}.homework-header h1{color:#1f2937;font-size:1.5rem;font-weight:600;margin:0}.homework-nav{display:flex;flex-wrap:wrap;gap:.5rem}.nav-btn{background:#fff;border:1px solid #d1d5db;border-radius:.375rem;color:#374151;cursor:pointer;font-size:.875rem;padding:.5rem 1rem;transition:all .2s}.nav-btn:hover{background:#f3f4f6;border-color:#9ca3af}.nav-btn.active{background:#3b82f6;border-color:#3b82f6;color:#fff}.homework-content{margin:0 auto;max-width:80rem;padding:1.5rem 1rem}.error-container,.loading-container{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:3rem 1rem;text-align:center}.loading-spinner{border:2px solid #f3f4f6;border-top-color:#3b82f6;height:2rem;margin-bottom:1rem;width:2rem}.error-container p{color:#ef4444;font-size:1.125rem;margin-bottom:1rem}.retry-btn{background:#3b82f6;border:none;border-radius:.375rem;color:#fff;cursor:pointer;font-size:.875rem;padding:.5rem 1rem;transition:background-color .2s}.retry-btn:hover{background:#2563eb}.statistics-panel{background:#fff;border-radius:.75rem;box-shadow:0 1px 3px 0 #0000001a;margin-bottom:2rem;padding:1.5rem}.stats-header{margin-bottom:1.5rem;text-align:center}.stats-header h3{color:#1f2937;font-size:1.25rem;font-weight:600;margin:0 0 .5rem}.stats-header p{color:#6b7280;margin:0}.stats-grid{grid-gap:1.5rem;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:2rem}.stat-card{background:#f9fafb;border:1px solid #e5e7eb;border-radius:.5rem;gap:1rem;padding:1.5rem}.stat-card,.stat-icon{align-items:center;display:flex}.stat-icon{background:#fff;border-radius:.5rem;box-shadow:0 1px 2px 0 #0000000d;font-size:2rem;height:3rem;justify-content:center;width:3rem}.stat-content h4{color:#6b7280;font-size:.875rem;font-weight:500;margin:0 0 .25rem}.stat-number{font-size:2rem;line-height:1}.stat-content p{color:#6b7280;font-size:.875rem;margin:.25rem 0 0}.stat-details{margin-top:.5rem}.detail-item{color:#6b7280;font-size:.75rem}.detailed-stats{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:1fr 1fr;margin-bottom:1.5rem}.class-level-distribution h4,.subjects-overview h4{color:#1f2937;font-size:1rem;font-weight:600;margin:0 0 1rem}.distribution-grid{display:flex;flex-direction:column;gap:.5rem}.distribution-item{align-items:center;display:flex;gap:.75rem}.level-name{color:#374151;font-size:.875rem;font-weight:500;min-width:2rem}.level-bar{background:#e5e7eb;border-radius:.25rem;flex:1 1;height:.5rem;overflow:hidden}.level-fill{background:#3b82f6;height:100%;transition:width .3s ease}.level-count{color:#1f2937;font-size:.875rem;font-weight:600;min-width:1.5rem;text-align:right}.subject-tag{background:#e5e7eb;color:#374151}.subject-tag.more{background:#d1d5db;color:#6b7280}.system-info{border-top:1px solid #e5e7eb;display:flex;justify-content:space-between;padding-top:1rem}.info-item{align-items:center;display:flex;gap:.5rem}.info-label{color:#6b7280;font-size:.875rem}.info-value{color:#374151;font-size:.875rem;font-weight:500}.status-active{color:#059669}.search-filter{background:#fff;border-radius:.75rem;box-shadow:0 1px 3px 0 #0000001a;margin-bottom:2rem;padding:1.5rem}.search-section{margin-bottom:1rem}.search-input-group{max-width:400px;position:relative}.search-input{border:1px solid #d1d5db;border-radius:.5rem;font-size:.875rem;padding:.75rem 1rem .75rem 2.5rem;transition:border-color .2s;width:100%}.search-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.search-icon{color:#6b7280;font-size:1rem;left:.75rem;position:absolute;top:50%;transform:translateY(-50%)}.filter-section{margin-bottom:1rem}.filter-group{align-items:center;display:flex;gap:.75rem}.filter-label{color:#374151;font-size:.875rem;font-weight:500}.filter-select{background:#fff;border:1px solid #d1d5db;border-radius:.375rem;font-size:.875rem;min-width:150px;padding:.5rem .75rem}.results-info{align-items:center;border-top:1px solid #e5e7eb;display:flex;justify-content:space-between;padding-top:1rem}.results-count{color:#6b7280;font-size:.875rem}.clear-filters-btn{background:#6b7280;border:none;border-radius:.25rem;color:#fff;cursor:pointer;font-size:.75rem;padding:.375rem .75rem;transition:background-color .2s}.clear-filters-btn:hover{background:#4b5563}.section-header{margin-bottom:2rem;text-align:center}.section-header h2{color:#1f2937;font-size:1.5rem;font-weight:600;margin:0 0 .5rem}.section-header p{color:#6b7280;margin:0}.classes-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.class-card{background:#fff;border:1px solid #e5e7eb;border-radius:.75rem;box-shadow:0 1px 3px 0 #0000001a;cursor:pointer;padding:1.5rem;transition:all .2s}.class-card:hover{border-color:#3b82f6;box-shadow:0 4px 6px -1px #0000001a}.class-card-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem}.class-info h3{color:#1f2937;font-size:1.125rem;font-weight:600;margin:0 0 .25rem}.class-info p{color:#6b7280;font-size:.875rem;margin:0}.class-level{border-radius:.375rem;font-size:.75rem;font-weight:600;padding:.25rem .75rem}.class-details{margin-bottom:1rem}.detail-item{gap:.5rem;margin-bottom:.5rem}.detail-label{color:#6b7280;font-size:.875rem;min-width:4rem}.detail-value{color:#374151;font-size:.875rem;font-weight:500}.class-actions{display:flex;justify-content:center}.action-btn{background:#3b82f6;border:1px solid #3b82f6;border-radius:.375rem;color:#fff;font-size:.875rem;padding:.5rem 1rem;transition:all .2s}.action-btn:hover{background:#2563eb;border-color:#2563eb}.action-btn.primary{background:#3b82f6;border-color:#3b82f6}.teachers-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}.teacher-card{background:#fff;border:1px solid #e5e7eb;border-radius:.75rem;box-shadow:0 1px 3px 0 #0000001a;cursor:pointer;padding:1.5rem;transition:all .2s}.teacher-card:hover{border-color:#3b82f6;box-shadow:0 4px 6px -1px #0000001a}.teacher-card-header{align-items:center;display:flex;gap:1rem;margin-bottom:1rem}.teacher-avatar{align-items:center;background:#3b82f6;border-radius:50%;color:#fff;display:flex;font-size:1.25rem;font-weight:600;height:3rem;justify-content:center;width:3rem}.avatar-text{line-height:1}.teacher-info h3{color:#1f2937;font-size:1.125rem;font-weight:600;margin:0 0 .25rem}.teacher-info p{color:#6b7280;font-size:.875rem;margin:0}.subjects-list{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.subject-tag{border-radius:.25rem;font-size:.75rem;font-weight:500;padding:.25rem .5rem}.contact-info{margin-top:.5rem}.contact-item{color:#374151;font-size:.875rem;margin:.25rem 0}.students-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.student-card{background:#fff;border:1px solid #e5e7eb;border-radius:.75rem;box-shadow:0 1px 3px 0 #0000001a;cursor:pointer;padding:1.5rem;transition:all .2s}.student-card:hover{border-color:#3b82f6;box-shadow:0 4px 6px -1px #0000001a}.student-card-header{align-items:center;display:flex;gap:1rem;margin-bottom:1rem}.student-avatar{align-items:center;background:#10b981;border-radius:50%;color:#fff;display:flex;font-size:1.25rem;font-weight:600;height:3rem;justify-content:center;width:3rem}.student-info{flex:1 1}.student-info h3{color:#1f2937;font-size:1.125rem;font-weight:600;margin:0 0 .25rem}.student-info p{color:#6b7280;font-size:.875rem;margin:0}.class-badge{border-radius:.375rem;font-size:.75rem;font-weight:600;padding:.25rem .75rem}.electives-list{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.elective-tag{border-radius:.25rem;font-size:.75rem;font-weight:500;padding:.25rem .5rem}.empty-state{color:#6b7280;padding:3rem 1rem;text-align:center}.empty-icon{font-size:3rem;margin-bottom:1rem}.empty-state h3{color:#374151;font-size:1.25rem;font-weight:600;margin:0 0 .5rem}.empty-state p{margin:0}.timetable-system{background:#fff;border-radius:.75rem;box-shadow:0 1px 3px 0 #0000001a;padding:1.5rem}.timetable-header{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:2rem}.timetable-header h2{color:#1f2937;font-size:1.5rem;font-weight:600;margin:0}.timetable-controls{align-items:center;flex-wrap:wrap}.timetable-controls,.timetable-legend{display:flex;gap:1rem}.legend-color.core{background:#dbeafe;border:1px solid #3b82f6}.legend-color.elective{background:#e9d5ff;border:1px solid #8b5cf6}.info-toggle-btn{align-items:center;background:#6b7280;border:none;border-radius:.375rem;color:#fff;cursor:pointer;display:flex;font-size:.875rem;font-weight:500;gap:.5rem;padding:.5rem 1rem;transition:all .2s}.info-toggle-btn:hover{background:#4b5563}.info-toggle-btn.active{background:#3b82f6}.info-toggle-btn.active:hover{background:#2563eb}.timetable-container{grid-gap:2rem;display:grid;gap:2rem;transition:grid-template-columns .3s ease}.timetable-container.with-info{grid-template-columns:1fr 300px}.timetable-container.without-info{grid-template-columns:1fr}.timetable-grid{overflow-x:auto}.timetable-table{border:1px solid #e5e7eb;border-collapse:collapse;border-radius:.5rem;overflow:hidden;width:100%}.timetable-table th{background:#f9fafb;border:1px solid #e5e7eb;color:#374151;font-weight:600;padding:.75rem;text-align:center}.time-header{min-width:37px}.day-header{min-width:73px}.timetable-table td{border:1px solid #e5e7eb;min-height:55px;padding:.5rem;vertical-align:top}.even-row{background:#f9fafb}.odd-row{background:#fff}.time-cell{background:#f3f4f6;color:#374151;font-size:.875rem;font-weight:500;text-align:center}.lesson-cell{cursor:pointer;min-height:55px;transition:all .2s}.lesson-cell:hover{background:#f0f9ff}.lesson-cell.has-lesson{cursor:pointer}.lesson-cell.empty-lesson{background:#f9fafb;cursor:default}.lesson-content{text-align:center}.lesson-subject{color:#1f2937;font-size:.875rem;font-weight:600;margin-bottom:.25rem}.lesson-classroom,.lesson-teacher{color:#6b7280;font-size:.75rem;margin-bottom:.25rem}.lesson-type{background:#fffc;border-radius:.125rem;color:#6b7280;display:inline-block;font-size:.625rem;padding:.125rem .25rem}.empty-lesson-content{color:#9ca3af;font-size:.75rem;text-align:center}.timetable-info{background:#f9fafb;border-radius:.5rem;padding:1.5rem}.info-section{margin-bottom:1.5rem}.info-section:last-child{margin-bottom:0}.info-section h3{color:#1f2937;font-size:1rem;font-weight:600;margin:0 0 1rem}.info-section ul{list-style:none;margin:0;padding:0}.info-section li{color:#6b7280;font-size:.875rem;margin-bottom:.5rem;padding-left:1rem;position:relative}.info-section li:before{color:#3b82f6;content:"•";left:0;position:absolute}.homework-calendar{background:#fff;border-radius:.75rem;box-shadow:0 1px 3px 0 #0000001a;padding:1.5rem}.homework-calendar-header{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:2rem}.homework-calendar-header h2{color:#1f2937;font-size:1.5rem;font-weight:600;margin:0}.date-selector{align-items:center;display:flex;gap:.5rem}.date-input{border:1px solid #d1d5db;border-radius:.375rem;font-size:.875rem;padding:.5rem .75rem}.homework-calendar-nav{border-bottom:1px solid #e5e7eb;display:flex;gap:.5rem;margin-bottom:2rem}.nav-tab{background:none;border:none;border-bottom:2px solid #0000;color:#6b7280;cursor:pointer;font-size:.875rem;font-weight:500;padding:.75rem 1.5rem;transition:all .2s}.nav-tab:hover{color:#374151}.nav-tab.active{border-bottom-color:#3b82f6;color:#3b82f6}.homework-calendar-content{min-height:400px}.calendar-view{margin:0 auto;max-width:4xl}.calendar-header{margin-bottom:2rem;text-align:center}.calendar-header h3{color:#1f2937;font-size:1.25rem;font-weight:600;margin:0 0 .5rem}.calendar-header p{color:#6b7280;margin:0}.calendar-navigation{align-items:center;display:flex;gap:1rem;justify-content:center;margin-bottom:2rem}.calendar-navigation h4{color:#1f2937;font-size:1.25rem;font-weight:600;margin:0;min-width:200px;text-align:center}.calendar-grid{background:#fff;border-radius:.75rem;box-shadow:0 1px 3px 0 #0000001a;margin-bottom:2rem;overflow:hidden}.calendar-header-row{background:#f9fafb;border-bottom:1px solid #e5e7eb;display:grid;grid-template-columns:repeat(7,1fr)}.calendar-day-header{color:#374151;font-size:.875rem;font-weight:600;padding:.75rem;text-align:center}.calendar-body{display:grid;grid-template-columns:repeat(7,1fr)}.calendar-day{border-bottom:1px solid #e5e7eb;border-right:1px solid #e5e7eb;cursor:pointer;min-height:120px;padding:.5rem;position:relative;transition:background-color .2s}.calendar-day:hover{background:#f9fafb}.calendar-day.selected{background:#eff6ff;border-color:#3b82f6}.calendar-day.today{background:#dbeafe;border-color:#3b82f6}.calendar-day.has-homework{background:#f0fdf4}.calendar-day.empty{background:#f9fafb;cursor:default}.day-number{color:#374151;font-weight:600;margin-bottom:.25rem}.day-homework{display:flex;flex-direction:column;gap:.125rem}.homework-preview{align-items:center;border-radius:.125rem;display:flex;font-size:.625rem;gap:.125rem;padding:.125rem .25rem;text-align:center}.homework-icon{font-size:.75rem}.homework-subject{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.more-homework{color:#6b7280;font-size:.625rem;font-style:italic;text-align:center}.calendar-legend{background:#f9fafb;border-radius:.5rem;padding:1.5rem}.calendar-legend h4{color:#1f2937;font-size:1rem;font-weight:600;margin:0 0 1rem}.legend-items{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.legend-item{align-items:center;color:#374151;display:flex;font-size:.875rem;gap:.5rem}.legend-color{border-radius:.25rem;height:1rem;width:1rem}.legend-color.today{background:#3b82f6}.legend-color.selected{background:#10b981}.legend-color.has-homework{background:#22c55e}.legend-icon{font-size:1rem}.loading-overlay{align-items:center;background:#fffc;bottom:0;display:flex;flex-direction:column;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:10}.homework-list-view{margin:0 auto;max-width:4xl}.homework-list-header{margin-bottom:2rem;text-align:center}.homework-list-header h3{color:#1f2937;font-size:1.25rem;font-weight:600;margin:0 0 .5rem}.homework-list-header p{color:#6b7280;margin:0}.empty-homework{color:#6b7280;padding:3rem 1rem;text-align:center}.empty-homework .empty-icon{font-size:3rem;margin-bottom:1rem}.empty-homework h4{color:#374151;font-size:1.25rem;font-weight:600;margin:0 0 .5rem}.empty-homework p{margin:0}.homework-list{display:flex;flex-direction:column;gap:1.5rem}.homework-item{background:#f9fafb;border:1px solid #e5e7eb;border-radius:.75rem;display:flex;gap:1.5rem;padding:1.5rem}.homework-priority{align-items:center;display:flex;flex-direction:column;gap:.5rem;min-width:120px;text-align:center}.priority-icon{font-size:1.5rem}.priority-badge{border:1px solid;border-radius:.375rem;font-size:.75rem;font-weight:500;padding:.25rem .75rem}.homework-content{flex:1 1}.homework-header-info{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem}.homework-title-section{align-items:center;display:flex;gap:.5rem}.assignment-type-icon{font-size:1.25rem}.homework-title{color:#1f2937;font-size:1.125rem;font-weight:600;margin:0}.homework-details{display:flex;flex-direction:column;gap:.5rem}.overdue-text{color:#dc2626;font-weight:600}.overdue-indicator{color:#dc2626;font-size:.75rem}.homework-summary{border-top:1px solid #e5e7eb;margin-top:2rem;padding-top:2rem}.summary-stats{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));margin-bottom:2rem}.stat-item{background:#f9fafb;border-radius:.5rem;padding:1rem;text-align:center}.stat-number{color:#1f2937;display:block;font-size:1.5rem;font-weight:700}.stat-label{color:#6b7280;font-size:.875rem}.assignment-type-breakdown,.priority-breakdown{margin-bottom:1.5rem}.assignment-type-breakdown h4,.priority-breakdown h4{color:#1f2937;font-size:1rem;font-weight:600;margin:0 0 1rem}.priority-stats,.type-stats{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.priority-stat,.type-stat{align-items:center;background:#f9fafb;border-radius:.5rem;display:flex;flex-direction:column;gap:.5rem;padding:1rem;text-align:center}.priority-count,.type-count{color:#1f2937;font-size:1.25rem;font-weight:700}.priority-label,.type-label{color:#6b7280;font-size:.75rem}.type-icon{font-size:1.25rem}@media (max-width:768px){.homework-header{align-items:stretch;flex-direction:column}.homework-nav{justify-content:center}.classes-grid,.detailed-stats,.stats-grid,.students-grid,.teachers-grid{grid-template-columns:1fr}.timetable-container,.timetable-container.with-info,.timetable-container.without-info{grid-template-columns:1fr!important}.timetable-header{align-items:stretch;flex-direction:column}.timetable-controls{align-items:center;flex-direction:column;gap:.5rem}.info-toggle-btn,.timetable-legend{justify-content:center}.info-toggle-btn{width:100%}.homework-calendar-header{align-items:stretch;flex-direction:column}.homework-calendar-nav{flex-wrap:wrap}.homework-item{flex-direction:column;gap:1rem}.homework-priority{min-width:auto;text-align:left}.priority-stats,.summary-stats,.type-stats{grid-template-columns:repeat(2,1fr)}.calendar-navigation{flex-direction:column;gap:.5rem}.calendar-navigation h4{min-width:auto}.legend-items{grid-template-columns:1fr}.calendar-day{min-height:80px}}.enotice-module{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0 auto;max-width:1200px;padding:20px}.enotice-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;box-shadow:0 4px 15px #0000001a;color:#fff;display:flex;justify-content:space-between;margin-bottom:30px;padding:20px}.enotice-header h1{font-size:24px;font-weight:600;margin:0}.back-button{transition:background-color .2s}.user-role{opacity:.9}.search-button{border-radius:6px;font-size:16px;padding:8px;transition:background-color .2s}.enotice-loading{align-items:center;color:#666;display:flex;flex-direction:column;height:400px;justify-content:center}@media (max-width:768px){.enotice-module{padding:15px}.enotice-header{flex-direction:column;gap:15px;text-align:center}.enotice-header h1{font-size:20px}.header-actions{justify-content:center;width:100%}}@media (max-width:480px){.enotice-header{padding:15px}.enotice-header h1{font-size:18px}.back-button{font-size:12px;padding:8px 12px}}.notice-list-container{background:#fff;border-radius:12px;box-shadow:0 2px 10px #0000001a;overflow:hidden}.filter-tabs{background:#f8f9fa;border-bottom:1px solid #e9ecef;display:flex}.filter-tab{background:none;border:none;border-bottom:3px solid #0000;color:#6c757d;cursor:pointer;flex:1 1;font-size:14px;font-weight:500;padding:15px 20px;transition:all .2s}.filter-tab:hover{background:#e9ecef;color:#495057}.filter-tab.active{background:#fff;border-bottom-color:#667eea;color:#667eea}.notices-list{padding:0}.no-notices{color:#6c757d;padding:60px 20px;text-align:center}.no-notices p{font-size:16px;margin:0}.notice-item{align-items:center;border-bottom:1px solid #e9ecef;cursor:pointer;display:flex;padding:20px;transition:background-color .2s}.notice-item:hover{background:#f8f9fa}.notice-item:last-child{border-bottom:none}.notice-content{cursor:pointer;flex:1 1}.notice-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:8px}.notice-title{color:#212529;font-size:16px;font-weight:600;line-height:1.4;margin:0}.notice-status{border-radius:20px;font-size:12px;font-weight:500;padding:4px 12px;text-transform:uppercase}.status-unsigned{background:#fff3cd;border:1px solid #ffeaa7;color:#856404}.status-signed{background:#d4edda;border:1px solid #c3e6cb;color:#155724}.notice-meta{align-items:center;display:flex;gap:15px;margin-bottom:8px}.notice-date{color:#6c757d;font-size:13px}.notice-expired{color:#dc3545;font-size:12px;font-weight:500}.notice-preview{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:#495057;display:-webkit-box;font-size:14px;line-height:1.5;overflow:hidden}.notice-actions{align-items:center;display:flex;flex-direction:column;gap:8px;margin-left:20px}.sign-button{background:#667eea;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:500;padding:8px 16px;transition:background-color .2s;white-space:nowrap}.sign-button:hover{background:#5a6fd8}.signed-indicator{align-items:center;color:#28a745;display:flex;font-size:12px;font-weight:500;gap:4px}@media (max-width:768px){.filter-tabs{flex-wrap:wrap}.filter-tab{font-size:13px;min-width:80px;padding:12px 15px}.notice-item{align-items:stretch;flex-direction:column;gap:15px}.notice-actions{flex-direction:row;justify-content:center;margin-left:0}.notice-header{align-items:flex-start;flex-direction:column;gap:8px}.notice-meta{flex-wrap:wrap;gap:10px}}@media (max-width:480px){.notice-item{padding:15px}.notice-title{font-size:15px}.filter-tab{font-size:12px;padding:10px 12px}.sign-button{font-size:12px;padding:6px 12px}}.notice-detail-container{background:#fff;border-radius:12px;box-shadow:0 2px 10px #0000001a;overflow:hidden}.notice-detail-header{align-items:center;background:#f8f9fa;border-bottom:1px solid #e9ecef;display:flex;padding:20px}.notice-detail-header h2{color:#495057;font-size:18px;margin:0 0 0 15px}.notice-detail-content{padding:30px}.notice-detail-title{border-bottom:2px solid #e9ecef;margin-bottom:30px;padding-bottom:20px}.notice-detail-title h1{color:#212529;font-size:24px;line-height:1.3;margin:0 0 15px}.notice-detail-meta{align-items:center;display:flex;flex-wrap:wrap;gap:20px}.notice-id{background:#667eea;border-radius:20px;color:#fff;font-size:12px;font-weight:600;padding:6px 12px}.notice-dates{color:#6c757d;font-size:14px;font-weight:500}.notice-detail-body{margin-bottom:30px}.notice-detail-body p{color:#495057;font-size:16px;line-height:1.7;margin:0}.actions-section,.signing-status-section,.student-info-section,.target-audience-section{background:#f8f9fa;border-left:4px solid #667eea;border-radius:8px;margin-bottom:25px;padding:20px}.actions-section h3,.signing-status-section h3,.student-info-section h3,.target-audience-section h3{color:#495057;font-size:16px;font-weight:600;margin:0 0 15px}.student-details{display:flex;flex-direction:column;gap:8px}.student-class,.student-name{color:#495057;font-size:14px}.student-class strong,.student-name strong{color:#212529}.signing-status{border-radius:20px;display:inline-block;font-size:14px;font-weight:600;margin-bottom:15px;padding:8px 16px;text-transform:uppercase}.signing-status.status-unsigned{background:#fff3cd;border:1px solid #ffeaa7;color:#856404}.signing-status.status-signed{background:#d4edda;border:1px solid #c3e6cb;color:#155724}.signing-details p{color:#495057;font-size:14px;margin:5px 0}.signing-details strong{color:#212529}.target-audience-section p{color:#495057;font-size:14px;margin:0}.actions-list{display:flex;flex-direction:column;gap:15px}.action-item{background:#fff;border:1px solid #e9ecef;border-radius:6px;padding:15px}.action-header{align-items:center;display:flex;gap:10px;margin-bottom:10px}.action-title{color:#212529;font-size:14px;font-weight:600}.required-badge{background:#dc3545;border-radius:12px;color:#fff;font-size:10px;font-weight:600;padding:2px 8px;text-transform:uppercase}.action-options{display:flex;flex-wrap:wrap;gap:8px}.action-option{background:#e9ecef;border-radius:15px;color:#495057;font-size:12px;font-weight:500;padding:4px 12px}.sign-action-section{background:#f8f9fa;border-radius:8px;margin-top:30px;padding:20px;text-align:center}.sign-notice-button{background:#667eea;border:none;border-radius:8px;box-shadow:0 2px 8px #667eea4d;color:#fff;cursor:pointer;font-size:16px;font-weight:600;padding:15px 30px;transition:background-color .2s}.sign-notice-button:hover{background:#5a6fd8;box-shadow:0 4px 12px #667eea66;transform:translateY(-1px)}@media (max-width:768px){.notice-detail-content{padding:20px}.notice-detail-title h1{font-size:20px}.notice-detail-meta{align-items:flex-start;flex-direction:column;gap:10px}.actions-section,.signing-status-section,.student-info-section,.target-audience-section{padding:15px}.sign-notice-button{font-size:14px;padding:12px 24px}}@media (max-width:480px){.notice-detail-content{padding:15px}.notice-detail-title h1{font-size:18px}.notice-detail-header{padding:15px}.notice-detail-header h2{font-size:16px}.actions-section,.signing-status-section,.student-info-section,.target-audience-section{padding:12px}}.notice-reply-container{background:#fff;border-radius:12px;box-shadow:0 2px 10px #0000001a;overflow:hidden}.notice-reply-header{align-items:center;background:#f8f9fa;border-bottom:1px solid #e9ecef;display:flex;padding:20px}.notice-reply-header h2{color:#495057;font-size:18px;margin:0 0 0 15px}.notice-reply-content{padding:30px}.reply-notice-title{border-bottom:2px solid #e9ecef;margin-bottom:30px;padding-bottom:20px}.reply-notice-title h3{color:#212529;font-size:20px;line-height:1.3;margin:0}.reply-form{max-width:600px}.form-label{color:#212529;display:block;font-size:14px;font-weight:600;margin-bottom:8px}.required{color:#dc3545;margin-left:4px}.radio-group{display:flex;flex-direction:column;gap:12px}.radio-option{align-items:center;border-radius:6px;cursor:pointer;display:flex;gap:10px;padding:10px;transition:background-color .2s}.radio-option:hover{background:#f8f9fa}.radio-option input[type=radio]{accent-color:#667eea;cursor:pointer;height:18px;width:18px}.radio-label{cursor:pointer;-webkit-user-select:none;user-select:none}.radio-label,.text-input{color:#495057;font-size:14px}.text-input{background:#fff;border:2px solid #e9ecef;border-radius:8px;font-family:inherit;padding:12px 16px;resize:vertical;transition:border-color .2s,box-shadow .2s;width:100%}.text-input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.text-input::placeholder{color:#adb5bd}textarea.text-input{min-height:80px}.error-message{align-items:center;display:flex;font-size:12px;gap:4px;margin-top:5px}.error-message:before{content:"⚠";font-size:14px}.submit-instructions{background:#e7f3ff;border-left:4px solid #007bff;border-radius:8px;margin:30px 0;padding:15px 20px}.submit-instructions p{color:#0056b3;font-size:14px;font-weight:500;margin:0}.form-actions{margin-top:30px;text-align:center}.submit-button{background:#667eea;border:none;border-radius:8px;box-shadow:0 2px 8px #667eea4d;color:#fff;cursor:pointer;font-size:16px;font-weight:600;min-width:120px;padding:15px 40px;transition:all .2s}.submit-button:hover{background:#5a6fd8;box-shadow:0 4px 12px #667eea66;transform:translateY(-1px)}.submit-button:active{transform:translateY(0)}.submit-button:disabled{background:#6c757d;box-shadow:none;cursor:not-allowed;transform:none}@media (max-width:768px){.notice-reply-content{padding:20px}.reply-notice-title h3{font-size:18px}.submit-button{font-size:14px;max-width:300px;padding:12px 30px;width:100%}.radio-group{gap:10px}.radio-option{padding:8px}.text-input{font-size:13px;padding:10px 14px}}@media (max-width:480px){.notice-reply-content{padding:15px}.reply-notice-title h3{font-size:16px}.notice-reply-header{padding:15px}.notice-reply-header h2{font-size:16px}.form-group{margin-bottom:20px}.submit-instructions{padding:12px 15px}.submit-instructions p{font-size:13px}.radio-option{padding:6px}.radio-option input[type=radio]{height:16px;width:16px}.radio-label{font-size:13px}}.library-module{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0 auto;max-width:1400px;padding:20px}.library-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:15px;box-shadow:0 8px 25px #00000026;color:#fff;display:flex;justify-content:space-between;margin-bottom:30px;padding:25px}.library-header h1{font-size:28px;font-weight:600;margin:0;text-shadow:0 2px 4px #0003}.back-button{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fff3;border-radius:10px;font-weight:500;padding:12px 20px}.back-button:hover{background:#ffffff4d;box-shadow:0 4px 15px #0003;transform:translateY(-2px)}.header-actions{align-items:center;display:flex;gap:15px}.tenant-selector{align-items:center;display:flex;gap:10px}.refresh-button{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fff3;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:12px;padding:8px 12px;transition:all .3s ease}.refresh-button:hover{background:#ffffff4d;transform:translateY(-1px)}.tenant-select{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fff3;border:1px solid #ffffff4d;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:8px 12px;transition:all .3s ease}.tenant-select:hover{background:#ffffff4d}.tenant-select option{background:#667eea;color:#fff}.user-role{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fff3;border-radius:20px;font-size:14px;font-weight:500;padding:8px 16px}.search-button{align-items:center;background:#fff3;border-radius:50%;display:flex;font-size:18px;height:40px;justify-content:center;padding:10px;width:40px}.search-button:hover{background:#ffffff4d;transform:scale(1.1)}.library-navigation{display:flex;flex-wrap:wrap;gap:15px;margin-bottom:30px}.nav-button{border-radius:12px;box-shadow:0 2px 8px #00000014;font-size:15px;min-width:140px;padding:15px 25px}.library-content{background:#fff;border-radius:15px;box-shadow:0 4px 20px #00000014;min-height:600px;overflow:hidden}@media (max-width:768px){.library-module{padding:15px}.library-header{flex-direction:column;gap:20px;padding:20px;text-align:center}.library-header h1{font-size:24px}.library-navigation{justify-content:center}.nav-button{font-size:14px;min-width:120px;padding:12px 20px}}@media (max-width:480px){.library-navigation{align-items:center;flex-direction:column}.nav-button{max-width:300px;width:100%}}.loading-container{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:60px 20px;text-align:center}.loading-spinner{animation:spin 1s linear infinite;border:4px solid #f3f3f3;border-radius:50%;border-top-color:#667eea;height:40px;margin-bottom:20px;width:40px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.error-container{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:60px 20px;text-align:center}.error-message{background:#f8d7da;border:1px solid #f5c6cb;border-radius:8px;color:#dc3545;font-size:16px;margin-bottom:20px;max-width:500px;padding:15px}.error-container button{background:#dc3545;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:10px 20px;transition:background .3s ease}.error-container button:hover{background:#c82333}.library-catalog{padding:30px}.catalog-header{align-items:center;border-bottom:2px solid #e9ecef;display:flex;justify-content:space-between;margin-bottom:30px;padding-bottom:20px}.catalog-header h2{color:#212529;font-size:24px;margin:0}.catalog-stats{color:#6c757d;display:flex;font-size:14px;gap:20px}.catalog-stats span{background:#f8f9fa;border:1px solid #e9ecef;border-radius:20px;padding:8px 16px}.catalog-controls{flex-wrap:wrap;gap:20px;justify-content:space-between;margin-bottom:25px}.catalog-controls,.search-form{align-items:center;display:flex}.search-form{flex:1 1;gap:15px;max-width:500px}.search-input{font-size:14px}.search-button:hover{box-shadow:0 4px 12px #667eea4d;transform:translateY(-1px)}.catalog-table{background:#fff;border-radius:12px;box-shadow:0 2px 10px #0000000d;overflow:hidden}.catalog-table table{border-collapse:collapse;width:100%}.catalog-table th{background:#f8f9fa;border-bottom:2px solid #e9ecef;color:#495057;cursor:pointer;font-weight:600;padding:18px 16px;text-align:left;transition:background-color .3s ease;-webkit-user-select:none;user-select:none}.catalog-table th:hover{background:#e9ecef}.catalog-table td{border-bottom:1px solid #f1f3f4;padding:16px;vertical-align:top}.call-number{background:#f8f9fa;border-radius:4px;color:#495057;font-size:13px;padding:4px 8px}.book-title .title-content{display:flex;flex-direction:column;gap:4px}.book-author .author-content{display:flex;flex-direction:column;gap:2px}.author-zh{color:#495057;font-weight:500}.author-en{color:#6c757d;font-size:13px;font-style:italic}.publisher{color:#495057;font-weight:500}.location,.publish-year{color:#6c757d;font-size:14px}.actions{text-align:center}.no-results h4{margin:20px 0 10px}.catalog-footer{border-top:1px solid #e9ecef;color:#6c757d;font-size:14px;margin-top:30px;padding-top:20px;text-align:center}.catalog-footer p{margin:5px 0}@media (max-width:1024px){.catalog-controls{align-items:stretch;flex-direction:column}.search-form{max-width:none}.filter-controls{justify-content:center}}@media (max-width:768px){.library-catalog{padding:20px}.catalog-header{flex-direction:column;gap:15px;text-align:center}.catalog-stats{flex-wrap:wrap;justify-content:center}.catalog-table{overflow-x:auto}.catalog-table table{min-width:800px}.catalog-table td,.catalog-table th{font-size:13px;padding:12px 8px}.title-en,.title-zh{font-size:14px}.status-badge{font-size:11px;min-width:50px;padding:4px 8px}}@media (max-width:480px){.library-catalog{padding:15px}.catalog-controls{gap:15px}.filter-controls,.search-form{flex-direction:column;gap:10px}.filter-select,.sort-select{width:100%}}.book-detail{padding:30px}.book-detail-header{align-items:center;border-bottom:2px solid #e9ecef;display:flex;margin-bottom:30px;padding-bottom:20px}.book-detail-header h2{color:#495057;font-size:22px;margin:0 0 0 20px}.book-detail-content{grid-gap:40px;display:grid;gap:40px;grid-template-columns:1fr 2fr;margin-bottom:40px}.book-main-info{display:flex;flex-direction:column;gap:30px}.book-cover-section{position:relative}.book-cover{box-shadow:0 8px 25px #00000026;height:auto}.book-cover,.book-cover-placeholder{border-radius:12px;max-width:300px;width:100%}.book-cover-placeholder{align-items:center;background:linear-gradient(135deg,#f8f9fa,#e9ecef);box-shadow:0 8px 25px #0000001a;display:flex;flex-direction:column;height:400px;justify-content:center;text-align:center}.cover-icon{margin-bottom:15px}.cover-title{font-size:14px;line-height:1.4}.book-status{gap:8px;right:15px;top:15px}.status-badge{min-width:70px;padding:8px 16px}.book-info-section{display:flex;flex-direction:column;gap:25px}.book-title{font-size:32px;line-height:1.2;margin:0}.book-title-en{font-size:20px;font-weight:400;margin:0}.book-meta{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.meta-item{display:flex;flex-direction:column;gap:5px}.meta-label{color:#6c757d;font-size:14px;font-weight:500}.meta-value{color:#212529;font-size:16px;font-weight:600}.meta-value-en{color:#6c757d;font-size:14px;font-style:italic}.book-description h3{color:#495057;font-size:18px;margin:0 0 15px}.book-description p{color:#495057;font-size:15px;line-height:1.6;margin:0}.book-actions{display:flex;flex-wrap:wrap;gap:15px}.borrow-button,.reserve-button,.share-button{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;min-width:120px;padding:12px 24px;transition:all .3s ease}.borrow-button{background:#28a745;color:#fff}.borrow-button:hover{background:#218838;box-shadow:0 4px 15px #28a7454d;transform:translateY(-2px)}.reserve-button{background:#ffc107;color:#212529}.reserve-button:hover:not(:disabled){background:#e0a800;transform:translateY(-2px)}.reserve-button:disabled{background:#e9ecef;color:#6c757d;cursor:not-allowed}.share-button{background:#17a2b8;color:#fff}.share-button:hover{background:#138496;box-shadow:0 4px 15px #17a2b84d;transform:translateY(-2px)}.book-details-grid{grid-gap:30px;display:grid;gap:30px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));margin-bottom:40px}.detail-section h3{border-bottom:2px solid #e9ecef;color:#495057;font-size:18px;margin:0 0 20px;padding-bottom:10px}.detail-grid{grid-gap:15px;display:grid;gap:15px}.detail-item{align-items:center;border-bottom:1px solid #f1f3f4;display:flex;justify-content:space-between;padding:12px 0}.detail-label{color:#6c757d;font-size:14px;font-weight:500}.detail-value{color:#212529;font-size:14px;font-weight:600}.tags-container{display:flex;flex-wrap:wrap;gap:10px}.tag{background:#e9ecef;border-radius:20px;color:#495057;font-size:12px;font-weight:500;padding:6px 12px}.no-tags{color:#6c757d;font-size:14px;font-style:italic}.book-related{border-top:2px solid #e9ecef;padding-top:30px}.book-related h3{color:#495057;font-size:18px;margin:0 0 20px}.related-placeholder{background:#f8f9fa;border-radius:8px;color:#6c757d;font-style:italic;padding:40px 20px;text-align:center}@media (max-width:1024px){.book-detail-content{gap:30px;grid-template-columns:1fr}.book-cover-section{text-align:center}.book-cover,.book-cover-placeholder{margin:0 auto}.book-status{flex-direction:row;justify-content:center;margin-top:15px;position:static}}@media (max-width:768px){.book-detail{padding:20px}.book-title{font-size:24px}.book-title-en{font-size:16px}.book-meta{grid-template-columns:1fr}.book-actions{justify-content:center}.book-details-grid{gap:25px;grid-template-columns:1fr}.detail-item{align-items:flex-start;flex-direction:column;gap:5px}}@media (max-width:480px){.book-detail{padding:15px}.book-detail-header{flex-direction:column;gap:15px;text-align:center}.book-cover,.book-cover-placeholder{max-width:250px}.book-cover-placeholder{height:350px}.book-actions{align-items:center;flex-direction:column}.borrow-button,.reserve-button,.share-button{max-width:200px;width:100%}}.borrowing-system{padding:30px}.borrowing-header{align-items:center;border-bottom:2px solid #e9ecef;display:flex;margin-bottom:30px;padding-bottom:20px}.borrowing-header h2{color:#495057;font-size:22px;margin:0 0 0 20px}.borrowing-navigation{display:flex;flex-wrap:wrap;gap:15px;margin-bottom:30px}.nav-button{background:#fff;border:2px solid #e9ecef;border-radius:10px;color:#495057;cursor:pointer;font-size:14px;font-weight:500;min-width:120px;padding:12px 20px;text-align:center;transition:all .3s ease}.nav-button:hover{border-color:#667eea;box-shadow:0 4px 15px #667eea26;color:#667eea;transform:translateY(-2px)}.nav-button.active{background:linear-gradient(135deg,#667eea,#764ba2);border-color:#0000;box-shadow:0 4px 15px #667eea4d;color:#fff}.borrowing-content{background:#fff;border-radius:12px;box-shadow:0 2px 10px #0000000d;margin-bottom:30px;padding:30px}.checkout-form h3,.overdue-list h3,.renew-form h3,.return-form h3{border-bottom:2px solid #e9ecef;color:#212529;font-size:20px;margin:0 0 25px;padding-bottom:15px}.form-group{margin-bottom:25px}.form-group label{color:#495057;display:block;font-size:14px;font-weight:600;margin-bottom:8px}.form-select{background:#fff;border:2px solid #e9ecef;border-radius:8px;cursor:pointer;font-size:14px;padding:12px 16px;transition:border-color .3s ease;width:100%}.form-select:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.action-button{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;min-width:120px;padding:12px 24px;transition:all .3s ease}.checkout-button{background:#28a745;color:#fff}.checkout-button:hover:not(:disabled){background:#218838;box-shadow:0 4px 15px #28a7454d;transform:translateY(-2px)}.checkout-button:disabled{background:#e9ecef;color:#6c757d;cursor:not-allowed}.borrowed-books{grid-gap:20px;display:grid;gap:20px}.borrowed-book-item{align-items:center;background:#f8f9fa;border:1px solid #e9ecef;border-radius:10px;display:flex;justify-content:space-between;padding:20px;transition:all .3s ease}.borrowed-book-item:hover{background:#e9ecef;box-shadow:0 4px 15px #0000001a;transform:translateY(-2px)}.renewed-badge{background:#d4edda;color:#155724}.overdue-badge,.renewed-badge{border-radius:12px;display:inline-block;font-size:11px;font-weight:500;margin-left:10px;padding:4px 8px}.overdue-badge{background:#f8d7da;color:#721c24}.return-button{background:#dc3545;color:#fff}.return-button:hover:not(:disabled){background:#c82333;box-shadow:0 4px 15px #dc35454d;transform:translateY(-2px)}.renew-button{background:#17a2b8;color:#fff}.renew-button:hover:not(:disabled){background:#138496;box-shadow:0 4px 15px #17a2b84d;transform:translateY(-2px)}.renew-button:disabled{background:#e9ecef;color:#6c757d;cursor:not-allowed}.no-overdue{color:#6c757d;font-style:italic;padding:40px 20px;text-align:center}.overdue-books{grid-gap:20px;gap:20px}.overdue-book-item{background:#fff5f5;border:1px solid #fed7d7;border-radius:10px;padding:20px}.overdue-book-item .book-info h4{color:#c53030}.overdue-actions{display:flex;flex-wrap:wrap;gap:15px;margin-top:15px}.fine-button{background:#f56565;color:#fff}.fine-button:hover:not(:disabled){background:#e53e3e;box-shadow:0 4px 15px #f565654d;transform:translateY(-2px)}.borrowing-summary{grid-gap:20px;background:#fff;border-radius:12px;box-shadow:0 2px 10px #0000000d;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));padding:25px}.summary-item{background:#f8f9fa;border:1px solid #e9ecef;border-radius:10px;padding:20px;text-align:center}.summary-label{margin-bottom:8px}.summary-value{font-size:24px}@media (max-width:768px){.borrowing-system{padding:20px}.borrowing-navigation{justify-content:center}.nav-button{font-size:13px;min-width:100px;padding:10px 16px}.borrowing-content{padding:20px}.borrowed-book-item{align-items:stretch;flex-direction:column;gap:15px}.book-info{text-align:center}.overdue-actions{justify-content:center}.borrowing-summary{gap:15px;grid-template-columns:repeat(2,1fr);padding:20px}}@media (max-width:480px){.borrowing-system{padding:15px}.borrowing-header{flex-direction:column;gap:15px;text-align:center}.borrowing-navigation{align-items:center;flex-direction:column}.nav-button{max-width:250px;width:100%}.borrowing-content{padding:15px}.form-group{margin-bottom:20px}.action-button{max-width:200px;width:100%}.borrowing-summary{gap:15px;grid-template-columns:1fr;padding:15px}}.reader-profile{padding:30px}.profile-header{align-items:center;border-bottom:2px solid #e9ecef;display:flex;margin-bottom:30px;padding-bottom:20px}.profile-header h2{color:#495057;font-size:22px;margin:0 0 0 20px}.profile-tabs{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:30px}.tab-button{background:#fff;border:2px solid #e9ecef;border-radius:10px;color:#495057;cursor:pointer;font-size:14px;font-weight:500;min-width:100px;padding:12px 20px;text-align:center;transition:all .3s ease}.tab-button:hover{border-color:#667eea;box-shadow:0 4px 15px #667eea26;color:#667eea;transform:translateY(-2px)}.tab-button.active{background:linear-gradient(135deg,#667eea,#764ba2);border-color:#0000;box-shadow:0 4px 15px #667eea4d;color:#fff}.profile-content{background:#fff;border-radius:12px;box-shadow:0 2px 10px #0000000d;padding:30px}.overview-section{display:flex;flex-direction:column;gap:30px}.reader-card{background:linear-gradient(135deg,#f8f9fa,#e9ecef);border-radius:15px;box-shadow:0 4px 15px #0000001a;padding:25px}.card-header{gap:20px;margin-bottom:20px}.card-header,.card-photo{align-items:center;display:flex}.card-photo{background:#e9ecef;border-radius:50%;height:80px;justify-content:center;overflow:hidden;width:80px}.card-photo img{height:100%;object-fit:cover;width:100%}.photo-placeholder{align-items:center;color:#6c757d;display:flex;font-size:32px;height:100%;justify-content:center;width:100%}.card-info h3{color:#212529;font-size:24px;margin:0 0 5px}.english-name{color:#6c757d;font-size:16px;font-style:italic;margin:0 0 5px}.student-id{color:#495057;font-size:14px;font-weight:600;margin:0 0 5px}.class-info{color:#6c757d;font-size:14px;margin:0}.card-body{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.card-details .detail-item{align-items:center;border-bottom:1px solid #e9ecef;display:flex;justify-content:space-between;padding:10px 0}.card-details .label{color:#6c757d;font-size:14px;font-weight:500}.card-details .value{color:#212529;font-size:14px;font-weight:600}.status-badge{border-radius:20px;font-size:12px;font-weight:500;min-width:60px;padding:6px 12px}.status-badge.active{background:#d4edda;color:#155724}.status-badge.inactive{background:#f8d7da;color:#721c24}.stats-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.stat-card{background:#fff;border:1px solid #e9ecef;border-radius:12px;box-shadow:0 2px 10px #00000014;padding:20px;text-align:center;transition:all .3s ease}.stat-card:hover{box-shadow:0 8px 25px #00000026;transform:translateY(-5px)}.stat-icon{font-size:32px;margin-bottom:15px}.stat-value{color:#212529;font-size:28px;font-weight:700;margin-bottom:5px}.stat-label{color:#6c757d;font-size:14px;font-weight:500}.quick-actions h4{border-bottom:2px solid #e9ecef;color:#495057;font-size:18px;margin:0 0 20px;padding-bottom:10px}.action-buttons{display:flex;flex-wrap:wrap;gap:15px}.action-btn{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;min-width:100px;padding:12px 20px;transition:all .3s ease}.action-btn.primary{background:#28a745;color:#fff}.action-btn.primary:hover{background:#218838;box-shadow:0 4px 15px #28a7454d;transform:translateY(-2px)}.action-btn.secondary{background:#17a2b8;color:#fff}.action-btn.secondary:hover{background:#138496;box-shadow:0 4px 15px #17a2b84d;transform:translateY(-2px)}.action-btn.warning{background:#ffc107;color:#212529}.action-btn.warning:hover{background:#e0a800;transform:translateY(-2px)}.action-btn.info{background:#6c757d;color:#fff}.action-btn.info:hover{background:#5a6268;transform:translateY(-2px)}.borrowings-section h3,.fines-section h3,.history-section h3{border-bottom:2px solid #e9ecef;color:#212529;font-size:20px;margin:0 0 25px;padding-bottom:15px}.no-borrowings,.no-fines,.no-history{color:#6c757d;font-style:italic;padding:40px 20px;text-align:center}.borrowings-list,.fines-list,.history-list{grid-gap:20px;display:grid;gap:20px}.borrowing-item,.fine-item,.history-item{background:#f8f9fa;border:1px solid #e9ecef;border-radius:10px;padding:20px;transition:all .3s ease}.borrowing-item:hover,.fine-item:hover,.history-item:hover{background:#e9ecef;box-shadow:0 4px 15px #0000001a;transform:translateY(-2px)}.borrowing-item.overdue{background:#fff5f5;border-color:#fed7d7}.borrowing-item.overdue .due-date{color:#c53030;font-weight:600}.book-info h4{color:#212529;font-size:16px;margin:0 0 10px}.book-info p{color:#6c757d;font-size:14px;margin:5px 0}.call-number{font-weight:600}.borrowing-actions,.fine-actions{display:flex;flex-wrap:wrap;gap:15px;margin-top:15px}.fine-info{background:#fff5f5;border:1px solid #fed7d7;border-radius:8px;margin-top:15px;padding:10px}.fine-amount{color:#c53030;font-size:16px;font-weight:600}.fines-summary{background:#fff5f5;border:1px solid #fed7d7;border-radius:10px;margin-bottom:25px;padding:20px;text-align:center}.fines-summary h4{color:#c53030;font-size:18px;margin:0 0 10px}.fines-summary p{color:#6c757d;font-size:14px;margin:0}@media (max-width:768px){.reader-profile{padding:20px}.profile-tabs{justify-content:center}.tab-button{font-size:13px;min-width:80px;padding:10px 16px}.profile-content{padding:20px}.card-header{flex-direction:column;gap:15px;text-align:center}.card-body{gap:15px;grid-template-columns:1fr}.stats-grid{gap:15px;grid-template-columns:repeat(2,1fr)}.action-buttons,.borrowing-actions,.fine-actions{justify-content:center}}@media (max-width:480px){.reader-profile{padding:15px}.profile-header{flex-direction:column;gap:15px;text-align:center}.profile-tabs{align-items:center;flex-direction:column}.tab-button{max-width:200px;width:100%}.profile-content{padding:15px}.stats-grid{gap:15px;grid-template-columns:1fr}.action-buttons{align-items:center;flex-direction:column}.action-btn{max-width:200px;width:100%}.borrowing-actions,.fine-actions{align-items:center;flex-direction:column}}.library-reports{padding:30px}.reports-header{align-items:center;border-bottom:2px solid #e9ecef;display:flex;margin-bottom:30px;padding-bottom:20px}.reports-header h2{color:#495057;font-size:22px;margin:0 0 0 20px}.back-button{background:#6c757d;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;padding:10px 16px;transition:all .3s ease}.back-button:hover{background:#5a6268;transform:translateY(-1px)}.reports-controls{align-items:center;display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;margin-bottom:30px}.report-type-selector{display:flex;flex-wrap:wrap;gap:10px}.report-type-btn{background:#fff;border:2px solid #e9ecef;border-radius:10px;color:#495057;cursor:pointer;font-size:14px;font-weight:500;min-width:120px;padding:12px 20px;text-align:center;transition:all .3s ease}.report-type-btn:hover{border-color:#667eea;box-shadow:0 4px 15px #667eea26;color:#667eea;transform:translateY(-2px)}.report-type-btn.active{background:linear-gradient(135deg,#667eea,#764ba2);border-color:#0000;box-shadow:0 4px 15px #667eea4d;color:#fff}.report-options{align-items:center;display:flex;flex-wrap:wrap;gap:15px}.date-range-select,.export-format-select{background:#fff;border:2px solid #e9ecef;border-radius:8px;cursor:pointer;font-size:14px;padding:10px 16px;transition:border-color .3s ease}.date-range-select:focus,.export-format-select:focus{border-color:#667eea;outline:none}.reports-content{background:#fff;border-radius:12px;box-shadow:0 2px 10px #0000000d;padding:30px}.report-header{align-items:center;border-bottom:2px solid #e9ecef;display:flex;justify-content:space-between;margin-bottom:30px;padding-bottom:20px}.report-header h3{color:#212529;font-size:24px;margin:0}.export-button{background:#28a745;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:12px 24px;transition:all .3s ease}.export-button:hover{background:#218838;box-shadow:0 4px 15px #28a7454d;transform:translateY(-2px)}.report-summary{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:40px}.summary-card{background:#f8f9fa;border:1px solid #e9ecef;border-radius:12px;padding:25px;text-align:center;transition:all .3s ease}.summary-card:hover{box-shadow:0 8px 25px #00000026;transform:translateY(-5px)}.summary-card.warning{background:#fff3cd;border-color:#ffeaa7}.summary-card.danger{background:#f8d7da;border-color:#fab1a0}.summary-value{color:#212529;display:block;font-size:32px;font-weight:700;margin-bottom:8px}.summary-label{color:#6c757d;display:block;font-size:14px;font-weight:500}.report-sections{grid-gap:40px;display:grid;gap:40px}.report-section{background:#f8f9fa;border:1px solid #e9ecef;border-radius:12px;padding:25px}.report-section h4{border-bottom:2px solid #e9ecef;color:#495057;font-size:18px;margin:0 0 25px;padding-bottom:15px}.top-list{grid-gap:15px;display:grid;gap:15px}.top-item{align-items:center;background:#fff;border:1px solid #e9ecef;border-radius:8px;display:flex;gap:20px;padding:15px;transition:all .3s ease}.top-item:hover{box-shadow:0 4px 15px #0000001a;transform:translateX(5px)}.rank{align-items:center;background:#667eea;border-radius:50%;color:#fff;display:flex;flex-shrink:0;font-size:14px;font-weight:600;height:30px;justify-content:center;width:30px}.name,.title{color:#212529;flex:1 1;font-size:15px;font-weight:600}.count{background:#e9ecef;border-radius:20px;color:#495057;flex-shrink:0;font-size:12px;font-weight:600;padding:6px 12px}.subject-stats{grid-gap:20px;display:grid;gap:20px}.subject-stat{background:#fff;border:1px solid #e9ecef;border-radius:8px;padding:20px}.subject-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:15px}.subject-name{color:#212529;font-size:16px;font-weight:600}.subject-count{background:#667eea;border-radius:20px;color:#fff;font-size:12px;font-weight:600;padding:6px 12px}.subject-bar{background:#e9ecef;border-radius:4px;height:8px;margin-bottom:15px;overflow:hidden;width:100%}.bar-fill{background:linear-gradient(90deg,#667eea,#764ba2);border-radius:4px;height:100%;transition:width .3s ease}.subject-details{color:#6c757d;display:flex;font-size:12px;justify-content:space-between}.format-stats,.language-stats{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.format-stat,.language-stat{background:#fff;border:1px solid #e9ecef;border-radius:8px;padding:15px;text-align:center;transition:all .3s ease}.format-stat:hover,.language-stat:hover{box-shadow:0 4px 15px #0000001a;transform:translateY(-3px)}.format-name,.language-name{color:#212529;display:block;font-size:14px;font-weight:600;margin-bottom:8px}.format-count,.language-count{background:#667eea;border-radius:20px;color:#fff;display:block;font-size:12px;font-weight:600;padding:6px 12px}.overdue-readers{margin-top:30px}.overdue-readers h4{border-bottom:2px solid #e9ecef;color:#495057;font-size:18px;margin:0 0 25px;padding-bottom:15px}.overdue-reader{background:#fff;border:1px solid #fed7d7;border-radius:8px;margin-bottom:20px;padding:20px}.reader-header{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;margin-bottom:15px}.reader-header h5{color:#c53030;font-size:16px;font-weight:600;margin:0}.overdue-count,.total-fine{background:#f8d7da;border-radius:20px;color:#721c24;font-size:12px;font-weight:600;padding:6px 12px}.overdue-books{grid-gap:10px;display:grid;gap:10px}.overdue-book{align-items:center;background:#fff5f5;border:1px solid #fed7d7;border-radius:6px;display:flex;font-size:13px;justify-content:space-between;padding:10px}.book-title{color:#c53030}.call-number{color:#6c757d;font-family:Courier New,monospace}.due-date{color:#c53030;font-weight:500}@media (max-width:1024px){.reports-controls{align-items:stretch;flex-direction:column}.report-options,.report-type-selector{justify-content:center}.report-summary{gap:15px;grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){.library-reports{padding:20px}.reports-header{flex-direction:column;gap:15px;text-align:center}.report-type-selector{align-items:center;flex-direction:column}.report-type-btn{max-width:200px;width:100%}.report-options{align-items:center;flex-direction:column;gap:10px}.date-range-select,.export-format-select{max-width:200px;width:100%}.reports-content{padding:20px}.report-header{flex-direction:column;gap:15px;text-align:center}.export-button{max-width:200px;width:100%}.report-summary{gap:15px;grid-template-columns:1fr}.top-item{flex-direction:column;gap:15px;text-align:center}.rank{order:-1}.subject-details{flex-direction:column;gap:5px;text-align:center}.format-stats,.language-stats{gap:10px;grid-template-columns:1fr}.reader-header{gap:10px}.overdue-book,.reader-header{flex-direction:column;text-align:center}.overdue-book{gap:5px}}@media (max-width:480px){.library-reports,.report-section,.reports-content{padding:15px}.summary-card{padding:20px}.summary-value{font-size:24px}.top-item{padding:12px}.rank{font-size:12px;height:25px;width:25px}.name,.title{font-size:14px}.count{font-size:11px;padding:4px 8px}}.opac-interface{padding:30px}.opac-header{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:15px;box-shadow:0 8px 25px #00000026;color:#fff;margin-bottom:40px;padding:40px;text-align:center}.opac-header h2{font-size:32px;font-weight:600;margin:0 0 15px;text-shadow:0 2px 4px #0003}.opac-header p{font-size:16px;margin:0;opacity:.9}.search-section{margin-bottom:40px}.search-form{margin:0 auto;max-width:800px}.search-controls{align-items:center;display:flex;flex-wrap:wrap;gap:15px}.search-type-select{background:#fff;border:2px solid #e9ecef;border-radius:8px;cursor:pointer;font-size:14px;min-width:150px;padding:12px 16px;transition:border-color .3s ease}.search-type-select:focus{border-color:#667eea;outline:none}.search-input{border:2px solid #e9ecef;border-radius:8px;flex:1 1;font-size:16px;min-width:300px;padding:12px 16px;transition:border-color .3s ease}.search-input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.search-button{background:#667eea;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;min-width:100px;padding:12px 24px;transition:all .3s ease}.search-button:hover{background:#5a6fd8;box-shadow:0 4px 15px #667eea4d;transform:translateY(-2px)}.opac-controls{gap:20px;justify-content:space-between;margin-bottom:30px}.filter-controls,.opac-controls{align-items:center;display:flex;flex-wrap:wrap}.filter-controls{gap:15px}.filter-select,.sort-select{background:#fff;border:2px solid #e9ecef;border-radius:8px;cursor:pointer;font-size:14px;padding:10px 16px;transition:border-color .3s ease}.filter-select:focus,.sort-select:focus{border-color:#667eea;outline:none}.view-controls{display:flex;gap:10px}.view-btn{background:#fff;border:2px solid #e9ecef;border-radius:8px;color:#495057;cursor:pointer;font-size:14px;font-weight:500;min-width:120px;padding:10px 16px;text-align:center;transition:all .3s ease}.view-btn:hover{border-color:#667eea;box-shadow:0 4px 15px #667eea26;color:#667eea;transform:translateY(-2px)}.view-btn.active{background:linear-gradient(135deg,#667eea,#764ba2);border-color:#0000;box-shadow:0 4px 15px #667eea4d;color:#fff}.search-results{background:#fff;border-radius:12px;box-shadow:0 2px 10px #0000000d;padding:30px}.results-header{align-items:center;border-bottom:2px solid #e9ecef;display:flex;justify-content:space-between;margin-bottom:30px;padding-bottom:20px}.results-header h3{color:#212529;font-size:20px;margin:0}.results-count{background:#e9ecef;border-radius:20px;color:#495057;font-size:14px;font-weight:500;padding:8px 16px}.no-results{color:#6c757d;padding:60px 20px;text-align:center}.no-results-icon{font-size:64px;margin-bottom:20px;opacity:.5}.no-results h4{color:#495057;font-size:20px;margin:0 0 15px}.no-results p{font-size:16px;line-height:1.6;margin:0 0 30px}.search-tips{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;margin:0 auto;max-width:500px;padding:20px;text-align:left}.search-tips h5{color:#495057;font-size:16px;margin:0 0 15px}.search-tips ul{color:#6c757d;line-height:1.6;margin:0;padding-left:20px}.search-tips li{margin-bottom:8px}.books-grid{grid-gap:25px;display:grid;gap:25px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.book-card{background:#fff;border:1px solid #e9ecef;border-radius:12px;box-shadow:0 2px 10px #00000014;cursor:pointer;overflow:hidden;transition:all .3s ease}.book-card:hover{box-shadow:0 12px 30px #00000026;transform:translateY(-8px)}.book-cover{height:200px;overflow:hidden;position:relative}.book-cover img{height:100%;object-fit:cover;width:100%}.cover-placeholder{align-items:center;background:linear-gradient(135deg,#f8f9fa,#e9ecef);display:flex;flex-direction:column;height:100%;justify-content:center;text-align:center;width:100%}.cover-icon{color:#6c757d;font-size:48px;margin-bottom:10px}.cover-title{color:#6c757d;font-size:12px;line-height:1.3;max-width:200px}.book-status{display:flex;flex-direction:column;gap:5px;position:absolute;right:10px;top:10px}.status-badge{border-radius:15px;box-shadow:0 2px 8px #00000026;display:inline-block;font-size:11px;font-weight:600;min-width:50px;padding:6px 10px;text-align:center}.status-available{background:#d4edda;color:#155724}.status-borrowed{background:#fff3cd;color:#856404}.status-overdue{background:#f8d7da;color:#721c24}.status-reserved{background:#cce5ff;color:#004085}.status-maintenance{background:#e2e3e5;color:#383d41}.status-unknown{background:#f8f9fa;color:#6c757d}.new-badge{background:#dc3545;border-radius:12px;color:#fff;font-size:10px;font-weight:600;left:10px;padding:4px 8px;position:absolute;top:10px}.book-info{padding:20px}.book-title{color:#212529;font-size:16px;font-weight:600}.book-title,.book-title-en{line-height:1.3;margin:0 0 8px}.book-title-en{color:#6c757d;font-size:14px;font-style:italic}.book-author{font-size:14px;margin:0 0 8px}.book-subject{font-size:13px;margin:0 0 8px}.book-call-number{display:inline-block;margin:0 0 12px}.book-meta{align-items:center;color:#6c757d;display:flex;font-size:12px;justify-content:space-between}.format,.publish-year{background:#e9ecef;border-radius:12px;font-weight:500;padding:4px 8px}.books-list{overflow-x:auto}.books-list table{border-collapse:collapse;width:100%}.books-list th{background:#f8f9fa;border-bottom:2px solid #e9ecef;color:#495057;font-size:14px;font-weight:600;padding:15px;text-align:left}.books-list td{border-bottom:1px solid #f1f3f4;padding:15px;vertical-align:top}.book-row:hover{background:#f8f9fa}.title-content{display:flex;flex-direction:column;gap:4px}.title-zh{color:#212529;font-size:15px;font-weight:600}.title-en{color:#6c757d;font-size:13px;font-style:italic}.book-author{color:#495057;font-weight:500}.book-subject{color:#6c757d}.book-call-number{background:#f8f9fa;border-radius:4px;color:#495057;font-family:Courier New,monospace;font-size:12px;font-weight:600;padding:4px 8px}.view-button{background:#667eea;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;padding:8px 16px;transition:all .3s ease}.view-button:hover{background:#5a6fd8;box-shadow:0 2px 8px #667eea4d;transform:translateY(-1px)}.opac-footer{border-top:1px solid #e9ecef;margin-top:40px;padding-top:30px}.quick-links h4{color:#495057;font-size:18px;margin:0 0 20px;text-align:center}.links-grid{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin:0 auto;max-width:800px}.quick-link{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;color:#495057;display:block;font-weight:500;padding:15px;text-align:center;text-decoration:none;transition:all .3s ease}.quick-link:hover{background:#667eea;box-shadow:0 4px 15px #667eea4d;color:#fff;text-decoration:none;transform:translateY(-2px)}@media (max-width:1024px){.opac-controls{align-items:stretch;flex-direction:column}.filter-controls,.view-controls{justify-content:center}.books-grid{gap:20px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}}@media (max-width:768px){.opac-interface{padding:20px}.opac-header{margin-bottom:30px;padding:30px 20px}.opac-header h2{font-size:24px}.search-controls{flex-direction:column;gap:15px}.search-input,.search-type-select{min-width:auto;width:100%}.books-grid{gap:15px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.books-list{overflow-x:auto}.books-list table{min-width:700px}.books-list td,.books-list th{font-size:13px;padding:12px 8px}.links-grid{gap:10px;grid-template-columns:repeat(2,1fr)}}@media (max-width:480px){.opac-interface{padding:15px}.opac-header{padding:20px 15px}.opac-header h2{font-size:20px}.search-results{padding:20px}.books-grid{gap:15px;grid-template-columns:1fr}.book-card{margin:0 auto;max-width:300px}.book-info{padding:15px}.book-title{font-size:15px}.book-title-en{font-size:13px}.links-grid{gap:10px;grid-template-columns:1fr}.quick-link{font-size:14px;padding:12px}}.children-selector{align-items:center;background-color:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;display:flex;gap:12px;margin:16px 0;padding:12px}.children-selector label{color:#374151;font-size:14px;font-weight:500;white-space:nowrap}.child-select{background-color:#fff;border:1px solid #d1d5db;border-radius:6px;color:#1f2937;cursor:pointer;flex:1 1;font-size:14px;padding:8px 12px;transition:border-color .2s,box-shadow .2s}.child-select:hover{border-color:#9ca3af}.child-select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.child-select option{padding:8px}
/*# sourceMappingURL=main.643bb04d.css.map*/