html,body,#root{height:100%;width:100%;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.header{background:linear-gradient(90deg,#1a1a2e,#16213e);color:#fff;padding:0 2rem;height:64px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 4px 6px -1px #0000001a;position:sticky;top:0;z-index:100}.header-left{display:flex;align-items:center;gap:2.5rem}.logo{font-size:1.5rem;font-weight:800;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.header-right{display:flex;align-items:center;gap:1.5rem}.current-entity{background:#667eea33;padding:.5rem 1rem;border-radius:8px;font-size:.875rem;font-weight:500}.user-info{font-size:.875rem;opacity:.9}.logout-btn{background:linear-gradient(135deg,#ef4444,#dc2626);border:none;color:#fff;padding:.5rem 1.25rem;border-radius:8px;cursor:pointer;font-weight:500;transition:all .2s}.logout-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #ef444466}.section-switcher{display:flex;background:#ffffff1a;border-radius:10px;padding:4px}.section-btn{background:transparent;border:none;color:#ffffffb3;padding:.5rem 1.25rem;border-radius:8px;cursor:pointer;transition:all .2s;font-weight:500}.section-btn:hover{color:#fff}.section-btn.active{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 2px 8px #667eea66}.sidebar{width:260px;background:linear-gradient(180deg,#1a1a2e,#16213e);padding:1.5rem 0;overflow-y:auto;flex-shrink:0;height:calc(100vh - 64px);position:sticky;top:64px}.nav-menu{list-style:none}.nav-menu li a{display:flex;align-items:center;padding:.875rem 1.75rem;color:#94a3b8;text-decoration:none;transition:all .2s;font-weight:500;border-left:3px solid transparent}.nav-menu li a:hover{background:#667eea1a;color:#fff;border-left-color:#667eea}.nav-menu li a.active{background:#667eea26;color:#fff;border-left-color:#667eea}.nav-divider{padding:1.5rem 1.75rem .75rem;color:#667eea;font-size:.7rem;text-transform:uppercase;letter-spacing:1.5px;font-weight:600}@media(max-width:768px){.sidebar{width:200px}.header{padding:0 1rem}}@media(max-width:480px){.sidebar{display:none}.header-left{gap:1rem}.section-switcher,.current-entity{display:none}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a1a2e,#16213e,#0f3460)}.login-card{background:#fff;padding:2.5rem;border-radius:16px;box-shadow:0 25px 50px -12px #0006;width:100%;max-width:420px}.login-card h1{text-align:center;margin-bottom:1.5rem;color:#1a1a2e;font-size:2rem;font-weight:700}.login-toggle{display:flex;background:#f1f5f9;border-radius:10px;padding:4px;margin-bottom:1.5rem}.toggle-btn{flex:1;padding:.75rem 1rem;border:none;background:transparent;border-radius:8px;font-weight:500;color:#64748b;cursor:pointer;transition:all .2s}.toggle-btn.active{background:#fff;color:#1a1a2e;box-shadow:0 2px 4px #0000001a}.toggle-btn:hover:not(.active){color:#1a1a2e}.parent-info{text-align:center;color:#64748b;font-size:.9rem;margin-bottom:1.5rem;line-height:1.5}.btn-full{width:100%}.login-hint{text-align:center;margin-top:1.5rem;color:#64748b;font-size:.875rem;padding:.75rem;background:#f8fafc;border-radius:8px}.parent-progress-page{min-height:100vh;background:linear-gradient(135deg,#f8fafc,#e2e8f0)}.loading-container,.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;text-align:center;padding:2rem}.loading-spinner{width:50px;height:50px;border:4px solid #e2e8f0;border-top-color:#6366f1;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}@keyframes spin{to{transform:rotate(360deg)}}.error-icon{font-size:4rem;margin-bottom:1rem}.error-container h2{color:#1a1a2e;margin-bottom:.5rem}.error-container p{color:#64748b;margin-bottom:1.5rem}.parent-header{background:linear-gradient(135deg,#1a1a2e,#16213e);color:#fff;padding:1.5rem 2rem;display:flex;align-items:center;gap:1.5rem}.back-btn{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#fff;padding:.5rem 1rem;border-radius:8px;cursor:pointer;transition:all .2s}.back-btn:hover{background:#fff3}.parent-header h1{margin:0;font-size:1.5rem;font-weight:600}.parent-content{max-width:900px;margin:0 auto;padding:2rem}.student-info-card{background:#fff;border-radius:16px;padding:2rem;display:flex;align-items:center;gap:1.5rem;box-shadow:0 4px 12px #00000014;margin-bottom:1.5rem}.student-avatar-large{width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.75rem;font-weight:600}.student-details h2{margin:0 0 .5rem;color:#1a1a2e;font-size:1.5rem}.student-meta{display:flex;gap:1rem;color:#64748b;font-size:.9rem;margin-bottom:.5rem}.curriculum-badge{display:inline-block;background:#f0fdf4;color:#16a34a;padding:.35rem .75rem;border-radius:20px;font-size:.85rem;font-weight:500}.attendance-card{background:#fff;border-radius:16px;padding:1.5rem;box-shadow:0 4px 12px #00000014;margin-bottom:1.5rem}.attendance-card h3{margin:0;color:#1a1a2e;font-size:1.1rem}.attendance-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.month-selector{display:flex;align-items:center;gap:.75rem}.month-nav-btn{background:#f1f5f9;border:none;width:32px;height:32px;border-radius:8px;cursor:pointer;font-size:.85rem;color:#475569;transition:all .2s}.month-nav-btn:hover{background:#e2e8f0;color:#1a1a2e}.current-month{font-weight:600;color:#1a1a2e;min-width:140px;text-align:center}.attendance-overall{margin-top:1rem;padding-top:1rem;border-top:1px solid #e2e8f0;text-align:center;color:#475569;font-size:.9rem}.attendance-calendar{margin-bottom:1rem}.calendar-header{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px}.calendar-day-name{text-align:center;font-size:.75rem;font-weight:600;color:#64748b;padding:.5rem 0}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.calendar-cell{aspect-ratio:1;border-radius:8px;background:#f8fafc;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.85rem;position:relative;min-height:45px}.calendar-cell.empty{background:transparent}.calendar-cell .cell-day{font-weight:500;color:#475569}.calendar-cell .cell-status{font-size:.7rem;font-weight:700;margin-top:2px}.calendar-cell.att-present{background:#dcfce7}.calendar-cell.att-present .cell-day,.calendar-cell.att-present .cell-status{color:#16a34a}.calendar-cell.att-absent{background:#fef2f2}.calendar-cell.att-absent .cell-day,.calendar-cell.att-absent .cell-status{color:#dc2626}.calendar-cell.att-late{background:#fef3c7}.calendar-cell.att-late .cell-day,.calendar-cell.att-late .cell-status{color:#d97706}.attendance-legend{display:flex;flex-wrap:wrap;gap:1rem;padding-top:1rem;border-top:1px solid #e2e8f0}.legend-item{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:#475569}.legend-dot{width:12px;height:12px;border-radius:3px}.legend-dot.present{background:#16a34a}.legend-dot.absent{background:#dc2626}.legend-dot.late{background:#d97706}.attendance-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.stat-item{text-align:center;padding:1rem;background:#f8fafc;border-radius:12px}.stat-item.present{background:#f0fdf4}.stat-item.absent{background:#fef2f2}.stat-item.percentage{background:#eff6ff}.stat-value{display:block;font-size:1.75rem;font-weight:700;color:#1a1a2e}.stat-item.present .stat-value{color:#16a34a}.stat-item.absent .stat-value{color:#dc2626}.stat-item.percentage .stat-value{color:#2563eb}.stat-label{display:block;font-size:.8rem;color:#64748b;margin-top:.25rem}.no-curriculum-card,.no-progress-card{background:#fff;border-radius:16px;padding:3rem 2rem;text-align:center;box-shadow:0 4px 12px #00000014}.no-curriculum-card .icon,.no-progress-card .icon{font-size:3rem;margin-bottom:1rem}.no-curriculum-card h3,.no-progress-card h3{color:#1a1a2e;margin-bottom:.5rem}.no-curriculum-card p,.no-progress-card p{color:#64748b;max-width:400px;margin:0 auto}.curriculum-progress-section{background:#fff;border-radius:16px;padding:1.5rem;box-shadow:0 4px 12px #00000014}.curriculum-progress-section h3{margin:0 0 1.5rem;color:#1a1a2e;font-size:1.1rem}.subject-card{border:1px solid #e2e8f0;border-radius:12px;margin-bottom:1rem;overflow:hidden}.subject-header{display:flex;align-items:center;padding:1rem 1.25rem;background:#f8fafc;cursor:pointer;transition:background .2s}.subject-header:hover{background:#f1f5f9}.subject-info{flex:1}.subject-info h4{margin:0;color:#1a1a2e;font-size:1rem}.topic-count{font-size:.8rem;color:#64748b}.subject-progress{display:flex;align-items:center;gap:.75rem;margin-right:1rem}.progress-bar{width:100px;height:8px;background:#e2e8f0;border-radius:4px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#6366f1,#8b5cf6);border-radius:4px;transition:width .3s}.progress-text{font-size:.85rem;font-weight:600;color:#6366f1;min-width:40px}.expand-icon{color:#94a3b8;font-size:.75rem}.topics-list{padding:.5rem;background:#fff}.topic-item{padding:1rem;border-radius:8px;margin-bottom:.5rem;background:#f8fafc}.topic-item.completed{background:#f0fdf4;border-left:3px solid #16a34a}.topic-item.in_progress{background:#fffbeb;border-left:3px solid #f59e0b}.topic-item.not_started{background:#f8fafc;border-left:3px solid #cbd5e1}.topic-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.topic-name{font-weight:500;color:#1a1a2e}.status-badge{padding:.25rem .75rem;border-radius:20px;font-size:.75rem;font-weight:500}.status-badge.completed{background:#dcfce7;color:#16a34a}.status-badge.in-progress{background:#fef3c7;color:#d97706}.status-badge.not-started{background:#f1f5f9;color:#64748b}.topic-skills{margin-top:1rem;padding-top:1rem;border-top:1px solid #e2e8f0}.topic-skills h5{margin:0 0 .75rem;font-size:.85rem;color:#64748b}.skills-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.5rem}.skill-item{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:#fff;border-radius:6px;font-size:.85rem}.skill-icon{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700}.skill-item.skill-positive .skill-icon{background:#dcfce7;color:#16a34a}.skill-item.skill-negative .skill-icon{background:#fef2f2;color:#dc2626}.skill-item.skill-neutral .skill-icon{background:#f1f5f9;color:#64748b}.skill-label{color:#475569}.topic-remarks{margin-top:.75rem;padding:.75rem;background:#fff;border-radius:6px;font-size:.85rem;color:#475569}@media(max-width:768px){.parent-content{padding:1rem}.student-info-card{flex-direction:column;text-align:center}.attendance-stats{grid-template-columns:repeat(2,1fr)}.skills-grid{grid-template-columns:1fr}.subject-progress{display:none}}.classes-page{max-width:1200px}.class-form-container{max-width:100%}.form-section{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:2px solid #e2e8f0}.form-section:last-of-type{border-bottom:none}.form-section h4{color:#1a1a2e;margin-bottom:.5rem;font-size:1.1rem}.form-section .hint{color:#64748b;font-size:.875rem;margin-bottom:1rem}.add-student-row{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;align-items:end;padding:1.25rem;background:#f8fafc;border-radius:12px;border:2px dashed #e2e8f0}.add-student-row input,.add-student-row select{padding:.7rem .85rem;border:2px solid #e2e8f0;border-radius:8px;font-size:.9rem;width:100%;min-width:0}.add-student-row input:focus,.add-student-row select:focus{outline:none;border-color:#667eea}.add-student-row .btn-success{white-space:nowrap;padding:.75rem 1.25rem;width:100%}.students-list{margin-top:1rem;max-height:400px;overflow-y:auto}.badge{display:inline-block;padding:.25rem .6rem;border-radius:12px;font-size:.7rem;font-weight:600;text-transform:uppercase}.badge.new{background:#d1fae5;color:#065f46}.badge.existing{background:#e0e7ff;color:#3730a3}.badge.remove{background:#fee2e2;color:#991b1b}.data-table tr.to-remove{opacity:.5;background:#fee2e2}.form-actions{display:flex;justify-content:flex-end;gap:1rem;margin-top:2rem;padding-top:1.5rem;border-top:2px solid #e2e8f0}.classes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem}.class-card{background:#fff;border-radius:16px;padding:1.5rem;box-shadow:0 4px 6px -1px #0000001a;transition:all .2s;border:2px solid transparent}.class-card:hover{transform:translateY(-2px);box-shadow:0 10px 25px -5px #0000001a;border-color:#667eea}.class-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:1rem;border-bottom:2px solid #f1f5f9}.class-header h3{margin:0;color:#1a1a2e;font-size:1.25rem}.grade-badge{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:.35rem .85rem;border-radius:20px;font-size:.8rem;font-weight:600}.class-details{margin-bottom:1rem}.class-details p{margin:.5rem 0;color:#64748b;font-size:.9rem}.class-details strong{color:#1a1a2e}.class-actions{display:flex;gap:.5rem}@media(max-width:900px){.add-student-row{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.add-student-row{grid-template-columns:1fr}}@media(max-width:480px){.classes-grid{grid-template-columns:1fr}}.timetable-page{max-width:1100px}.wizard-container{background:#fff;border-radius:20px;padding:2.5rem;box-shadow:0 10px 40px -10px #00000026}.wizard-progress{display:flex;justify-content:center;align-items:center;gap:1rem;margin-bottom:2.5rem;padding-bottom:2rem;border-bottom:2px solid #e2e8f0}.wizard-progress .step{display:flex;align-items:center;gap:.75rem;padding:.75rem 1.5rem;border-radius:50px;background:#f1f5f9;color:#64748b;font-weight:600;font-size:.9rem;transition:all .3s}.wizard-progress .step-number{width:28px;height:28px;border-radius:50%;background:#cbd5e1;color:#fff;display:flex;align-items:center;justify-content:center;font-size:.85rem;font-weight:700}.wizard-progress .step.active{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 4px 15px #667eea66}.wizard-progress .step.active .step-number{background:#ffffff4d}.wizard-progress .step.completed{background:#d1fae5;color:#065f46}.wizard-progress .step.completed .step-number{background:#10b981}.wizard-progress .step-connector{width:40px;height:3px;background:#e2e8f0;border-radius:2px}.wizard-progress .step-connector.active{background:linear-gradient(90deg,#667eea,#764ba2)}.wizard-step{animation:fadeIn .3s ease}.wizard-step h3{font-size:1.5rem;color:#1a1a2e;margin-bottom:.5rem}.wizard-step>p{color:#64748b;margin-bottom:2rem;font-size:1rem}.wizard-actions{display:flex;justify-content:space-between;gap:1rem;margin-top:2.5rem;padding-top:2rem;border-top:2px solid #e2e8f0}.period-config{background:#f8fafc;border-radius:16px;padding:2rem;margin-bottom:1.5rem}.period-config label{display:block;font-size:.85rem;color:#64748b;margin-bottom:.5rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.period-config input[type=number]{width:120px;padding:1rem 1.25rem;border:2px solid #e2e8f0;border-radius:12px;font-size:1.5rem;font-weight:700;text-align:center;color:#1a1a2e}.period-config input[type=number]:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.period-timings{display:grid;gap:1rem;max-width:600px}.timing-row{display:flex;align-items:center;gap:1rem;padding:1rem 1.25rem;background:#f8fafc;border-radius:12px;border:2px solid #e2e8f0}.timing-row .period-label{min-width:100px;font-weight:700;color:#1a1a2e;font-size:1rem}.timing-row input[type=time]{padding:.75rem 1rem;border:2px solid #e2e8f0;border-radius:10px;font-size:1rem;font-weight:500}.timing-row input[type=time]:focus{outline:none;border-color:#667eea}.timing-row span{color:#94a3b8;font-weight:500}.days-selector{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1rem}.day-btn{padding:1rem 1.75rem;border:2px solid #e2e8f0;border-radius:12px;background:#fff;cursor:pointer;font-weight:600;font-size:1rem;transition:all .2s;min-width:130px;text-align:center}.day-btn:hover{border-color:#667eea;background:#f8fafc}.day-btn.selected{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-color:transparent;box-shadow:0 4px 12px #667eea4d}.schedule-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1.5rem}.day-schedule{background:#f8fafc;border-radius:16px;padding:1.5rem;border:2px solid #e2e8f0}.day-schedule h4{margin-bottom:1rem;color:#1a1a2e;font-size:1.1rem;padding-bottom:.75rem;border-bottom:2px solid #e2e8f0;display:flex;align-items:center;gap:.5rem}.day-schedule h4:before{content:"📅"}.periods-list{display:grid;gap:.75rem}.period-entry{padding:1rem;background:#fff;border-radius:12px;border:2px solid #e2e8f0;transition:all .2s}.period-entry.active{border-color:#667eea;box-shadow:0 2px 8px #667eea26}.period-checkbox{display:flex;align-items:center;gap:.75rem;cursor:pointer;font-weight:500}.period-checkbox input[type=checkbox]{width:20px;height:20px;accent-color:#667eea;cursor:pointer}.period-checkbox span{color:#1a1a2e}.period-details{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-top:1rem;padding-top:1rem;border-top:1px solid #e2e8f0}.period-details input{padding:.65rem .85rem;border:2px solid #e2e8f0;border-radius:8px;font-size:.9rem}.period-details input:focus{outline:none;border-color:#667eea}.period-details input::placeholder{color:#94a3b8}.timetable-view{background:#fff;padding:2rem;border-radius:20px;box-shadow:0 10px 40px -10px #0000001a}.timetable-header{display:flex;align-items:center;gap:1.5rem;margin-bottom:1.5rem;padding-bottom:1.5rem;border-bottom:2px solid #e2e8f0}.timetable-header h3{flex:1;margin:0;font-size:1.25rem;color:#1a1a2e}.timetable-header span{background:#f1f5f9;padding:.5rem 1rem;border-radius:8px;font-size:.9rem;color:#64748b}.visual-timetable{overflow-x:auto;margin-top:1rem}.school-timetable{width:100%;border-collapse:separate;border-spacing:0;border-radius:16px;overflow:hidden;box-shadow:0 4px 20px #00000014}.school-timetable th,.school-timetable td{padding:1rem;text-align:center;border:1px solid #e2e8f0}.school-timetable thead tr{background:linear-gradient(135deg,#667eea,#764ba2)}.school-timetable .period-header{background:linear-gradient(135deg,#4c5fd5,#6b4f9a);color:#fff;font-weight:700;font-size:.95rem;text-transform:uppercase;letter-spacing:.5px;min-width:120px}.school-timetable .day-header{color:#fff;font-weight:700;font-size:1rem;text-transform:uppercase;letter-spacing:.5px;min-width:140px}.school-timetable .period-cell{background:linear-gradient(180deg,#f8fafc,#f1f5f9);font-weight:600;border-right:2px solid #e2e8f0}.period-cell .period-num{color:#1a1a2e;font-size:.95rem;font-weight:700;margin-bottom:.25rem}.period-cell .period-time{color:#64748b;font-size:.8rem;font-weight:500}.school-timetable .schedule-cell{background:#fff;transition:all .2s;vertical-align:middle;height:80px}.school-timetable .schedule-cell.has-class{background:linear-gradient(135deg,#e0e7ff,#ede9fe)}.school-timetable .schedule-cell.has-class:hover{background:linear-gradient(135deg,#c7d2fe,#ddd6fe);transform:scale(1.02);box-shadow:0 4px 12px #667eea33}.school-timetable .schedule-cell.empty{background:#fafafa}.schedule-cell .cell-content{display:flex;flex-direction:column;align-items:center;gap:.35rem}.schedule-cell .subject-name{font-weight:700;color:#4c1d95;font-size:1rem}.schedule-cell .room-info{font-size:.8rem;color:#6b7280;background:#ffffffb3;padding:.2rem .6rem;border-radius:12px}.schedule-cell .no-class{color:#d1d5db;font-size:1.2rem}.no-entries{text-align:center;color:#64748b;padding:3rem;font-size:1rem}.school-timetable tbody tr:nth-child(2n) .period-cell{background:linear-gradient(180deg,#f1f5f9,#e2e8f0)}.school-timetable tbody tr:nth-child(2n) .schedule-cell.empty{background:#f5f5f5}.school-timetable tbody tr:nth-child(2n) .schedule-cell.has-class{background:linear-gradient(135deg,#dbeafe,#e0e7ff)}.no-timetable{background:#fff;padding:4rem 2rem;border-radius:20px;text-align:center;box-shadow:0 4px 6px -1px #0000001a}.no-timetable p{color:#64748b;margin-bottom:1.5rem;font-size:1.1rem}.no-timetable .btn-primary{margin-top:1rem}@media(max-width:900px){.wizard-progress{flex-wrap:wrap;gap:.5rem}.wizard-progress .step-connector{display:none}.schedule-grid{grid-template-columns:1fr}}@media(max-width:600px){.wizard-container{padding:1.5rem}.wizard-step h3{font-size:1.25rem}}.school-timetable.trainer-view .schedule-cell.has-class{background:linear-gradient(135deg,#dcfce7,#d1fae5)!important}.school-timetable.trainer-view .schedule-cell.has-class:hover{background:linear-gradient(135deg,#bbf7d0,#a7f3d0)!important}.school-timetable.trainer-view .schedule-cell.multiple-classes{background:linear-gradient(135deg,#fef3c7,#fde68a)!important}.school-timetable.trainer-view .schedule-cell.multiple-classes:hover{background:linear-gradient(135deg,#fde68a,#fcd34d)!important}.school-timetable.trainer-view tbody tr:nth-child(2n) .schedule-cell.has-class{background:linear-gradient(135deg,#dcfce7,#d1fae5)!important}.school-timetable.trainer-view tbody tr:nth-child(2n) .schedule-cell.multiple-classes{background:linear-gradient(135deg,#fef3c7,#fde68a)!important}.cell-content.multi-class{display:flex;flex-direction:column;gap:.35rem;align-items:center}.class-chip{display:flex;flex-direction:column;align-items:center;background:#fffc;padding:.35rem .75rem;border-radius:8px;width:100%}.class-chip .class-name{font-weight:700;color:#166534;font-size:.9rem}.class-chip .class-subject{font-size:.75rem;color:#6b7280}.schedule-cell.multiple-classes .class-chip .class-name{color:#92400e}.timetable-legend{display:flex;gap:2rem;margin-top:1.5rem;padding-top:1rem;border-top:1px solid #e2e8f0}.timetable-legend .legend-item{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:#64748b}.timetable-legend .legend-color{width:20px;height:20px;border-radius:4px}.timetable-legend .legend-color.single{background:linear-gradient(135deg,#dcfce7,#d1fae5);border:1px solid #86efac}.timetable-legend .legend-color.multiple{background:linear-gradient(135deg,#fef3c7,#fde68a);border:1px solid #fcd34d}.no-timetable .hint{font-size:.9rem;color:#94a3b8;margin-top:.5rem}.attendance-page{max-width:100%}.attendance-controls{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1.5rem;margin-bottom:1.5rem;background:#fff;padding:1.5rem 2rem;border-radius:16px;box-shadow:0 4px 6px -1px #0000001a}.date-time-picker{display:flex;gap:1rem;align-items:center}.date-time-picker .form-group{margin-bottom:0}.date-time-picker label{display:block;font-size:.75rem;color:#64748b;margin-bottom:.35rem;text-transform:uppercase;font-weight:600;letter-spacing:.5px}.date-time-picker input,.date-time-picker select{padding:.75rem 1rem;border:2px solid #e2e8f0;border-radius:10px;font-size:1rem;font-weight:500;min-width:160px;transition:all .2s}.date-time-picker input:focus,.date-time-picker select:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.attendance-stats{display:flex;gap:1rem}.attendance-stats .stat{padding:.5rem 1rem;border-radius:8px;font-weight:600;font-size:.9rem}.attendance-stats .stat.present{background:#d1fae5;color:#065f46}.attendance-stats .stat.absent{background:#fee2e2;color:#991b1b}.attendance-stats .stat.late{background:#fef3c7;color:#92400e}.monthly-attendance-container{background:#fff;border-radius:16px;padding:1.5rem;box-shadow:0 4px 6px -1px #0000001a}.monthly-grid-wrapper{overflow-x:auto;max-width:100%;position:relative}.monthly-attendance-table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%}.monthly-attendance-table th,.monthly-attendance-table td{border:1px solid #e2e8f0;text-align:center;vertical-align:middle}.monthly-attendance-table .sticky-col{position:sticky;left:0;z-index:10;background:#fff;box-shadow:2px 0 5px #0000001a}.monthly-attendance-table .student-header{background:linear-gradient(135deg,#4c5fd5,#6b4f9a);color:#fff;font-weight:700;padding:1rem 1.5rem;min-width:200px;text-align:left;z-index:20}.monthly-attendance-table .student-name-cell{padding:.75rem 1rem;text-align:left;min-width:200px;background:#fff}.student-name-cell .student-name{font-weight:600;color:#1a1a2e;font-size:.95rem}.student-name-cell .student-school{font-size:.8rem;color:#64748b;margin-top:.15rem}.monthly-attendance-table .date-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:.75rem .5rem;min-width:50px;cursor:pointer;transition:all .2s}.monthly-attendance-table .date-header:hover{background:linear-gradient(135deg,#5a6fd6,#6a4590)}.date-header .date-num{font-size:1.1rem;font-weight:700}.date-header .date-day{font-size:.7rem;text-transform:uppercase;opacity:.9}.date-header.weekend{background:linear-gradient(135deg,#94a3b8,#64748b)}.monthly-attendance-table .attendance-cell{padding:.5rem;min-width:50px;height:50px;cursor:pointer;font-weight:700;font-size:1rem;transition:all .15s;background:#fff}.attendance-cell:hover{background:#f1f5f9;transform:scale(1.05)}.attendance-cell.weekend{background:#f8fafc}.attendance-cell.cell-present{background:linear-gradient(135deg,#d1fae5,#a7f3d0);color:#065f46}.attendance-cell.cell-absent{background:linear-gradient(135deg,#fee2e2,#fecaca);color:#991b1b}.attendance-cell.cell-late{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#92400e}.monthly-attendance-table tbody tr:nth-child(2n) .student-name-cell{background:#f8fafc}.monthly-attendance-table tbody tr:nth-child(2n) .attendance-cell:not(.cell-present):not(.cell-absent):not(.cell-late){background:#fafafa}.attendance-legend{display:flex;gap:2rem;margin-top:1.5rem;padding-top:1rem;border-top:1px solid #e2e8f0;flex-wrap:wrap}.legend-item{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:#64748b}.legend-box{width:24px;height:24px;border-radius:4px;border:1px solid #e2e8f0}.legend-box.present{background:linear-gradient(135deg,#d1fae5,#a7f3d0)}.legend-box.absent{background:linear-gradient(135deg,#fee2e2,#fecaca)}.legend-box.late{background:linear-gradient(135deg,#fef3c7,#fde68a)}.legend-box.weekend-box{background:#f8fafc}@media(max-width:768px){.attendance-controls{flex-direction:column;align-items:stretch}.date-time-picker{flex-direction:column}.attendance-stats{justify-content:center}.monthly-attendance-table .student-header,.monthly-attendance-table .student-name-cell{min-width:150px}}.extra-student-row{background:linear-gradient(90deg,#fef3c7,transparent)!important}.extra-student{background:linear-gradient(135deg,#fef3c7,#fde68a)!important}.extra-badge{display:inline-block;background:#f59e0b;color:#fff;font-size:.65rem;padding:.15rem .4rem;border-radius:4px;margin-left:.5rem;font-weight:700;vertical-align:middle}.legend-box.extra-box{background:linear-gradient(135deg,#fef3c7,#fde68a);border-color:#f59e0b}.action-buttons{display:flex;gap:.75rem}.modal-hint{color:#64748b;font-size:.9rem;margin-bottom:1rem;padding:.75rem;background:#fef3c7;border-radius:8px;border-left:3px solid #f59e0b}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media(max-width:500px){.form-row{grid-template-columns:1fr}}.progress-page{max-width:1400px}.progress-layout{display:grid;grid-template-columns:320px 1fr;gap:1.5rem;margin-top:1.5rem;height:calc(100vh - 200px)}.student-panel{background:#fff;border-radius:16px;box-shadow:0 4px 6px -1px #0000001a;display:flex;flex-direction:column;overflow:hidden}.search-box{padding:1rem;border-bottom:2px solid #e2e8f0}.search-box input{width:100%;padding:.875rem 1rem;border:2px solid #e2e8f0;border-radius:10px;font-size:.95rem;transition:all .2s}.search-box input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.student-list{flex:1;overflow-y:auto;padding:.75rem}.student-item{display:flex;align-items:center;gap:.875rem;padding:.875rem;border-radius:12px;cursor:pointer;transition:all .2s;margin-bottom:.5rem}.student-item:hover{background:#f8fafc}.student-item.active{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.student-item.active .school{color:#fffc}.student-avatar{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem;flex-shrink:0}.student-item.active .student-avatar{background:#fff3}.student-avatar.large{width:56px;height:56px;font-size:1.1rem}.student-info{display:flex;flex-direction:column}.student-info .name{font-weight:600;font-size:.95rem}.student-info .school{font-size:.8rem;color:#64748b}.loading-text,.empty-text{text-align:center;color:#94a3b8;padding:2rem}.progress-panel{background:#fff;border-radius:16px;box-shadow:0 4px 6px -1px #0000001a;padding:1.5rem;overflow-y:auto}.no-selection{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:#64748b}.no-selection .icon{font-size:3rem;margin-bottom:1rem}.selected-student-header{display:flex;align-items:center;gap:1rem;padding-bottom:1.25rem;margin-bottom:1.25rem;border-bottom:2px solid #e2e8f0}.selected-student-header h3{margin:0;color:#1a1a2e}.selected-student-header p{margin:0;color:#64748b;font-size:.9rem}.curriculum-assignment{background:linear-gradient(135deg,#ede9fe,#ddd6fe);border-radius:12px;padding:1rem 1.25rem;margin-bottom:1rem;border:2px solid #a78bfa}.curriculum-assignment>label{display:block;font-size:.75rem;color:#6d28d9;margin-bottom:.5rem;text-transform:uppercase;font-weight:700;letter-spacing:.5px}.assignment-row{display:flex;align-items:center;gap:.75rem}.assignment-row select{flex:1;padding:.75rem 1rem;border:2px solid #a78bfa;border-radius:10px;font-size:.95rem;background:#fff;font-weight:500}.assignment-row select:focus{outline:none;border-color:#7c3aed;box-shadow:0 0 0 3px #7c3aed33}.saving-indicator{color:#7c3aed;font-size:.85rem;font-weight:500}.curriculum-readonly{padding:.5rem .75rem;background:#f1f5f9;border-radius:6px;color:#475569;font-weight:500}.no-curriculum-hint{background:#fef3c7;border:2px solid #f59e0b;border-radius:12px;padding:1.5rem;text-align:center;margin-top:1rem}.no-curriculum-hint p{color:#92400e;margin:0;font-weight:500}.curriculum-selectors{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;margin-bottom:1.5rem;padding:1.25rem;background:#f8fafc;border-radius:12px}.selector-group label{display:block;font-size:.75rem;color:#64748b;margin-bottom:.35rem;text-transform:uppercase;font-weight:600;letter-spacing:.5px}.selector-group select{width:100%;padding:.75rem 1rem;border:2px solid #e2e8f0;border-radius:10px;font-size:.95rem;background:#fff;cursor:pointer}.selector-group select:focus{outline:none;border-color:#667eea}.selector-group select:disabled{background:#f1f5f9;cursor:not-allowed}.progress-form{animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.status-selector{margin-bottom:1.5rem}.status-selector>label{display:block;font-weight:600;color:#1a1a2e;margin-bottom:.75rem}.status-buttons{display:flex;gap:.75rem}.status-btn{flex:1;padding:.875rem 1rem;border:2px solid #e2e8f0;border-radius:10px;background:#fff;cursor:pointer;font-weight:600;font-size:.9rem;transition:all .2s}.status-btn:hover{background:#f8fafc}.status-btn.active.not_started{background:#f1f5f9;border-color:#64748b;color:#475569}.status-btn.active.in_progress{background:linear-gradient(135deg,#fef3c7,#fde68a);border-color:#f59e0b;color:#92400e}.status-btn.active.completed{background:linear-gradient(135deg,#d1fae5,#a7f3d0);border-color:#10b981;color:#065f46}.skills-section{background:#f8fafc;border-radius:12px;padding:1.25rem;margin-bottom:1.5rem}.skills-section h4{margin:0 0 .25rem;color:#1a1a2e}.skills-hint{color:#64748b;font-size:.85rem;margin-bottom:1rem}.skill-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:1rem;padding:.75rem 0;border-bottom:1px solid #e2e8f0}.skill-row:last-child{border-bottom:none}.skill-row label{font-weight:500;color:#374151;font-size:.95rem}.skill-slider{display:flex;gap:.25rem;background:#fff;padding:.25rem;border-radius:8px;border:2px solid #e2e8f0}.skill-btn{width:40px;height:36px;border:none;border-radius:6px;cursor:pointer;font-size:1.25rem;font-weight:700;background:transparent;color:#94a3b8;transition:all .15s}.skill-btn:hover{background:#f1f5f9}.skill-btn.negative.active{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff}.skill-btn.neutral.active{background:linear-gradient(135deg,#64748b,#475569);color:#fff}.skill-btn.positive.active{background:linear-gradient(135deg,#10b981,#059669);color:#fff}.skill-value{min-width:70px;text-align:center;font-size:.8rem;font-weight:600;padding:.35rem .5rem;border-radius:6px}.skill-value.negative{background:#fee2e2;color:#991b1b}.skill-value.neutral{background:#f1f5f9;color:#475569}.skill-value.positive{background:#d1fae5;color:#065f46}.remarks-section{margin-bottom:1.5rem}.remarks-section label{display:block;font-weight:600;color:#1a1a2e;margin-bottom:.5rem}.remarks-section textarea{width:100%;padding:.875rem 1rem;border:2px solid #e2e8f0;border-radius:10px;font-size:.95rem;resize:vertical;font-family:inherit}.remarks-section textarea:focus{outline:none;border-color:#667eea}.save-btn{width:100%}.select-topic-hint,.loading-progress{text-align:center;color:#64748b;padding:3rem;background:#f8fafc;border-radius:12px;margin-top:1rem}@media(max-width:900px){.progress-layout{grid-template-columns:1fr;height:auto}.student-panel{max-height:300px}.curriculum-selectors{grid-template-columns:1fr}}.curriculum-page{max-width:1400px}.curriculum-layout{display:grid;grid-template-columns:280px 1fr;gap:1.5rem;margin-top:1.5rem}.curriculum-list{background:#fff;border-radius:16px;padding:1.5rem;box-shadow:0 4px 6px -1px #0000001a;height:fit-content}.curriculum-list h3{margin-bottom:1rem;color:#1a1a2e;font-size:1rem;padding-bottom:.75rem;border-bottom:2px solid #e2e8f0}.curriculum-item{display:flex;justify-content:space-between;align-items:center;padding:.875rem 1rem;border-radius:10px;cursor:pointer;transition:all .2s;margin-bottom:.5rem;background:#f8fafc}.curriculum-item:hover{background:#f1f5f9}.curriculum-item.active{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.curriculum-item.active .btn-danger{background:#fff3}.curriculum-name{font-weight:600}.curriculum-details{background:#fff;border-radius:16px;padding:1.5rem;box-shadow:0 4px 6px -1px #0000001a;min-height:400px}.no-selection{display:flex;align-items:center;justify-content:center;height:300px;color:#64748b;font-size:1.1rem}.details-header{margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:2px solid #e2e8f0}.details-header h3{color:#1a1a2e;margin-bottom:.25rem}.details-header p{color:#64748b;margin-bottom:1rem}.details-actions{display:flex;gap:.75rem}.subjects-list{display:grid;gap:1rem}.subject-card{background:#f8fafc;border-radius:12px;padding:1.25rem;border:2px solid #e2e8f0}.subject-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.subject-header h4{color:#1a1a2e;font-size:1.1rem;display:flex;align-items:center;gap:.5rem}.subject-header h4:before{content:"📚"}.subject-desc{color:#64748b;font-size:.9rem;margin-bottom:1rem}.topics-list{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid #e2e8f0}.topic-item{display:flex;align-items:center;gap:.5rem;background:#fff;padding:.5rem .75rem;border-radius:8px;font-size:.9rem;border:1px solid #e2e8f0}.topic-item .btn-sm{padding:.15rem .4rem;font-size:.75rem}.empty-text,.empty-topics{color:#94a3b8;font-size:.9rem;text-align:center;padding:1rem}@media(max-width:900px){.curriculum-layout{grid-template-columns:1fr}.curriculum-list{order:2}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#f0f2f5;color:#1a1a2e;line-height:1.5}.app-layout{min-height:100vh;display:flex;flex-direction:column}.main-container{display:flex;flex:1}.content{flex:1;padding:2rem;overflow-y:auto;background:#f0f2f5;height:calc(100vh - 64px)}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:2px solid #e2e8f0}.page-header h2{color:#1a1a2e;font-size:1.75rem;font-weight:700}.subtitle{color:#64748b;font-size:.9rem;margin-top:.25rem}.form-group{margin-bottom:1.25rem}.form-group label{display:block;margin-bottom:.5rem;color:#374151;font-weight:600;font-size:.875rem}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.875rem 1rem;border:2px solid #e2e8f0;border-radius:10px;font-size:1rem;transition:all .2s;background:#fff}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-card{background:#fff;padding:2rem;border-radius:16px;box-shadow:0 4px 6px -1px #0000001a;margin-bottom:2rem}.form-card h3{margin-bottom:1.25rem;color:#1a1a2e;font-size:1.125rem;font-weight:600}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1rem}.form-row input,.form-row select{padding:.75rem 1rem;border:2px solid #e2e8f0;border-radius:10px;font-size:.95rem}.btn-primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;padding:.875rem 2rem;border-radius:10px;cursor:pointer;font-size:1rem;font-weight:600;transition:all .2s;box-shadow:0 4px 14px #667eea66}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea80}.btn-primary:disabled{background:#cbd5e1;cursor:not-allowed;box-shadow:none;transform:none}.btn-secondary{background:#f1f5f9;color:#475569;border:2px solid #e2e8f0;padding:.75rem 1.5rem;border-radius:10px;cursor:pointer;font-weight:500;transition:all .2s}.btn-secondary:hover{background:#e2e8f0}.btn-sm{padding:.5rem 1rem;font-size:.85rem;border:none;border-radius:8px;cursor:pointer;font-weight:600;transition:all .15s}.btn-success{background:linear-gradient(135deg,#10b981,#059669);color:#fff}.btn-danger{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff}.btn-warning{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff}.btn-large{padding:1rem 2.5rem;font-size:1.1rem}.data-table{width:100%;background:#fff;border-radius:16px;box-shadow:0 4px 6px -1px #0000001a;border-collapse:collapse;overflow:hidden}.data-table th,.data-table td{padding:1rem 1.25rem;text-align:left;border-bottom:1px solid #f1f5f9}.data-table th{background:linear-gradient(135deg,#f8fafc,#f1f5f9);color:#475569;font-weight:700;font-size:.8rem;text-transform:uppercase}.data-table tr:hover{background:#f8fafc}.data-table.compact th,.data-table.compact td{padding:.6rem .75rem;font-size:.875rem}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem;margin-bottom:2rem}.stat-card{background:#fff;padding:1.5rem;border-radius:16px;box-shadow:0 4px 6px -1px #0000001a;border-left:4px solid #667eea}.stat-card h3{font-size:2rem;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:.25rem;font-weight:800}.stat-card p{color:#64748b;font-weight:500;font-size:.9rem}.status-badge{padding:.35rem .85rem;border-radius:20px;font-size:.75rem;font-weight:600;text-transform:uppercase}.status-badge.present,.status-badge.completed{background:#d1fae5;color:#065f46}.status-badge.absent{background:#fee2e2;color:#991b1b}.status-badge.late,.status-badge.in_progress{background:#fef3c7;color:#92400e}.status-badge.not_started{background:#f1f5f9;color:#475569}.filters{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap;background:#fff;padding:1.5rem;border-radius:16px;box-shadow:0 2px 4px #0000000d}.filters .form-group{margin-bottom:0;min-width:180px}.error-message{background:#fee2e2;color:#991b1b;padding:1rem;border-radius:10px;margin-bottom:1rem;border-left:4px solid #ef4444}.welcome-message{background:linear-gradient(135deg,#667eea,#764ba2);padding:2rem;border-radius:16px;color:#fff;margin-bottom:2rem}.welcome-message h3{color:#fff;margin-bottom:.5rem;font-size:1.5rem}.welcome-message p{color:#ffffffe6}.no-data{text-align:center;padding:3rem;color:#64748b;background:#fff;border-radius:16px;box-shadow:0 2px 4px #0000000d}.no-data .hint{font-size:.875rem;margin-top:.5rem;color:#94a3b8}.loading{display:flex;align-items:center;justify-content:center;min-height:300px;color:#64748b}.school-selector,.center-selector{padding:.6rem 1rem;border:2px solid #e2e8f0;border-radius:8px;font-size:.95rem;background:#fff;cursor:pointer}@media(max-width:768px){.content{padding:1rem}.form-row{grid-template-columns:1fr}}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}.modal{background:#fff;border-radius:20px;padding:2rem;width:90%;max-width:500px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #0000004d;animation:slideUp .3s ease}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal h3{margin:0 0 1.5rem;color:#1a1a2e;font-size:1.25rem}.form-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1.5rem;padding-top:1rem;border-top:1px solid #e2e8f0}
