*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5}.app{min-height:100vh}.app-header{background-color:#2c3e50;color:#fff;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center}.app-header h1{font-size:1.5rem}.app-header nav{display:flex;gap:1rem}.app-header button{background-color:#34495e;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;transition:background-color .2s}.app-header button:hover{background-color:#455a64}.app-header .settings-btn{background-color:#e67e22}.app-header .settings-btn:hover{background-color:#d35400}.app-main{padding:2rem;max-width:1400px;margin:0 auto}.schedule-controls{display:flex;gap:1rem;margin-bottom:2rem;align-items:center}.schedule-controls label{display:flex;align-items:center;gap:.5rem}.schedule-controls input{padding:.5rem;border:1px solid #ddd;border-radius:4px}.schedule-controls button{background-color:#3498db;color:#fff;border:none;padding:.5rem 1.5rem;border-radius:4px;cursor:pointer;font-size:1rem}.schedule-controls button:hover{background-color:#2980b9}.conflicts,.warnings{margin-bottom:1rem;padding:1rem;border-radius:4px}.conflicts{background-color:#ffebee;border:1px solid #ef5350}.warnings{background-color:#fff3e0;border:1px solid #ff9800}.conflicts h3,.warnings h3{margin-bottom:.5rem;color:#c62828}.warnings h3{color:#e65100}.conflicts ul,.warnings ul{list-style-position:inside}.schedule-view{margin-top:2rem}.schedule-view h2{margin-bottom:1rem}.schedule-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.schedule-day{background-color:#fff;border:1px solid #ddd;border-radius:4px;padding:1rem}.day-header{display:flex;justify-content:space-between;margin-bottom:.5rem;padding-bottom:.5rem;border-bottom:1px solid #eee}.day-slots{display:flex;flex-direction:column;gap:.5rem}.schedule-slot{background-color:#f9f9f9;border:1px solid #ddd;border-radius:4px;padding:.75rem}.slot-time{font-weight:700;color:#3498db;margin-bottom:.25rem}.slot-teacher{font-size:.9rem;color:#555;margin-bottom:.25rem}.slot-students{font-size:.85rem;color:#777}.list{display:flex;flex-direction:column;gap:1rem}.list-item{background-color:#fff;border:1px solid #ddd;border-radius:4px;padding:1rem;display:flex;justify-content:space-between;align-items:center}.list-item button{margin-left:.5rem;padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer}.list-item button:first-of-type{background-color:#3498db;color:#fff}.list-item button:first-of-type:hover{background-color:#2980b9}.list-item button:last-of-type{background-color:#e74c3c;color:#fff}.list-item button:last-of-type:hover{background-color:#c0392b}.student-form,.teacher-form{background-color:#fff;border:1px solid #ddd;border-radius:4px;padding:2rem;max-width:800px}.student-form h2,.teacher-form h2,.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:700}.form-group input,.form-group select{width:100%;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:1rem}.form-group select[multiple]{min-height:150px}.form-row{display:flex;gap:1rem;margin-bottom:1.5rem}.form-group-half{flex:1;margin-bottom:0}.form-group input.input-error{border-color:#e74c3c;background-color:#fff5f5}.input-error-text{color:#e74c3c;font-size:.8rem;margin-top:.25rem;display:block}.subject-group{border:1px solid #ddd;border-radius:4px;padding:1rem;margin-bottom:1rem}.subject-item,.teachable-subject-item,.time-item{display:flex;gap:.5rem;margin-bottom:.5rem;align-items:center}.subject-item select,.teachable-subject-item select,.time-item select{flex:1}.preferred-teachers{margin-top:.5rem;padding-top:.5rem;border-top:1px solid #eee}.preferred-teacher-item{display:flex;gap:.5rem;align-items:center;margin-bottom:.25rem}.preferred-teacher-item span{min-width:60px}.form-group>button,.form-group .add-btn{background-color:#3498db;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;margin-top:.5rem}.form-group>button:hover,.form-group .add-btn:hover{background-color:#2980b9}.form-actions{display:flex;gap:1rem;margin-top:2rem}.form-actions button{padding:.75rem 1.5rem;border:none;border-radius:4px;cursor:pointer;font-size:1rem}.form-actions button[type=submit]{background-color:#27ae60;color:#fff}.form-actions button[type=submit]:hover{background-color:#229954}.form-actions button[type=button]{background-color:#95a5a6;color:#fff}.form-actions button[type=button]:hover{background-color:#7f8c8d}.monthly-schedule{border:1px solid #ddd;border-radius:4px;padding:1rem;margin-bottom:1rem}.schedule-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.schedule-header h3{margin:0}.schedule-header button{background-color:#e74c3c;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer}.schedule-header button:hover{background-color:#c0392b}.schedule-days-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.5rem}.day-schedule{border:1px solid #ddd;border-radius:4px;padding:.5rem;background-color:#f9f9f9}.day-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.day-header strong{font-size:.9rem}.day-header button{background-color:#3498db;color:#fff;border:none;padding:.25rem .5rem;border-radius:4px;cursor:pointer;font-size:.8rem}.day-header button:hover{background-color:#2980b9}.day-time-slots{display:flex;flex-direction:column;gap:.25rem}.time-slot-item{display:flex;justify-content:space-between;align-items:center;font-size:.85rem}.time-slot-item span{flex:1}.time-slot-item select{width:60px;padding:.25rem;font-size:.85rem}.time-slot-item button{background-color:#27ae60;color:#fff;border:none;padding:.25rem .5rem;border-radius:4px;cursor:pointer;font-size:.8rem}.time-slot-item button:hover{background-color:#229954}.view-selector{display:flex;gap:.5rem;margin-bottom:1rem}.view-selector button{padding:.5rem 1rem;border:1px solid #ddd;background-color:#fff;border-radius:4px;cursor:pointer;transition:all .2s}.view-selector button:hover{background-color:#f0f0f0}.view-selector button.active{background-color:#3498db;color:#fff;border-color:#3498db}.month-calendar-view{background-color:#fff;border:1px solid #ddd;border-radius:4px;overflow:hidden}.calendar-header{display:grid;grid-template-columns:repeat(7,1fr);background-color:#34495e;color:#fff}.calendar-day-header{padding:.75rem;text-align:center;font-weight:700;border-right:1px solid #2c3e50}.calendar-day-header:last-child{border-right:none}.calendar-week{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid #ddd}.calendar-week:last-child{border-bottom:none}.calendar-day{min-height:120px;border-right:1px solid #ddd;padding:.5rem;background-color:#fff}.calendar-day:last-child{border-right:none}.calendar-day.empty{background-color:#f9f9f9}.calendar-day-number{font-weight:700;margin-bottom:.25rem;color:#555}.calendar-day-slots{display:flex;flex-direction:column;gap:.25rem}.calendar-slot{background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:3px;padding:.25rem;font-size:.75rem}.slot-time-small{font-weight:700;color:#1976d2;font-size:.7rem}.slot-teacher-small{font-size:.7rem;color:#555;margin-top:.1rem}.slot-student-small{font-size:.65rem;color:#777;margin-top:.1rem}.week-calendars-container{display:flex;flex-direction:column;gap:0}.weekend-note{padding:.5rem 1rem;background-color:#fff3e0;border:1px solid #ff9800;border-radius:4px;margin-bottom:.5rem;font-size:.85rem;color:#e65100}.week-calendar-section{background-color:#fff;border:1px solid #ddd;border-top:none;overflow:hidden}.week-calendar-section:first-child{border-top:1px solid #ddd;border-radius:4px 4px 0 0}.week-calendar-section:last-child{border-radius:0 0 4px 4px}.week-calendar-table{display:flex;flex-direction:column}.week-calendar-header{display:grid;grid-template-columns:120px repeat(7,1fr);background-color:#2c3e50;color:#fff}.week-time-header-cell{padding:.75rem;text-align:center;font-weight:700;border-right:1px solid #1a252f;background-color:#2c3e50}.week-day-header-cell{padding:.5rem;text-align:center;border-right:1px solid #1a252f;background-color:#2c3e50}.week-day-header-cell.empty{background-color:#1a252f}.week-day-number{font-weight:700;font-size:1rem}.week-day-name{font-size:.75rem;opacity:.9}.week-calendar-row{display:grid;grid-template-columns:120px repeat(7,1fr);border-bottom:1px solid #ddd}.week-calendar-row:last-child{border-bottom:none}.week-time-cell{padding:.5rem;background-color:#ecf0f1;border-right:1px solid #ddd;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#555;font-size:.85rem}.weekday-time{font-weight:700;margin-bottom:.2rem}.weekend-time{font-size:.7rem;color:#777;font-style:italic}.week-day-cell{min-height:100px;border-right:1px solid #ddd;padding:.5rem;background-color:#fff}.week-day-cell.clickable{cursor:pointer}.week-day-cell.clickable:hover{background-color:#f5f5f5}.week-day-cell.empty{background-color:#f9f9f9}.week-day-cell:last-child{border-right:none}.calendar-slot-compact{background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:3px;padding:.25rem;margin-bottom:.25rem;font-size:.7rem}.slot-teacher-compact{font-weight:700;color:#795548;font-size:.65rem;margin-bottom:.1rem}.slot-student-compact{color:#555;font-size:.65rem;margin-top:.1rem}.slot-subject-only{color:#1976d2;font-weight:700;font-size:.7rem}.filter-controls{display:flex;gap:1rem;align-items:center;margin-bottom:1rem;padding:1rem;background-color:#fff;border:1px solid #ddd;border-radius:4px;flex-wrap:wrap}.filter-controls label{display:flex;align-items:center;gap:.5rem;cursor:pointer}.filter-controls input[type=radio]{margin:0;cursor:pointer}.filter-controls select{padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.day-view{background-color:#fff;border:1px solid #ddd;border-radius:4px;padding:1rem}.day-navigation{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #ddd}.day-navigation button{background-color:#3498db;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;transition:all .2s}.day-navigation button:hover{background-color:#2980b9}.today-btn{background-color:#27ae60!important;margin-left:.5rem;font-weight:700}.today-btn:hover{background-color:#219a52!important}.day-date-selector{display:flex;align-items:center;gap:.5rem}.day-date-input{padding:.5rem .75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;cursor:pointer}.day-date-input:hover{border-color:#3498db}.day-of-week-label{font-weight:700;color:#2c3e50}.day-grid{overflow-x:auto}.day-header-row{display:grid;grid-template-columns:150px repeat(auto-fit,minmax(200px,1fr));background-color:#34495e;color:#fff}.day-teacher-header{padding:.75rem;text-align:center;font-weight:700;border-right:1px solid #2c3e50}.day-time-header{padding:.75rem;text-align:center;font-weight:700;border-right:1px solid #2c3e50;font-size:.9rem}.day-time-header:last-child{border-right:none}.day-teacher-row{display:grid;grid-template-columns:150px repeat(auto-fit,minmax(200px,1fr));border-bottom:1px solid #ccc}.day-teacher-row:last-child{border-bottom:none}.day-teacher-name{background-color:#ecf0f1;font-weight:700;padding:.75rem;border-right:1px solid #ccc;display:flex;align-items:center}.day-time-cell{min-height:120px;border-right:1px solid #ccc;padding:.75rem;background-color:#fff;cursor:pointer}.day-time-cell:hover{background-color:#f5f5f5}.day-time-cell.unavailable{background-color:#e0e0e0;cursor:default;border-right:1px solid #bbb}.day-time-cell.unavailable:hover{background-color:#d5d5d5}.day-time-cell.negotiable{background-color:#fff8e1;border-right:1px solid #ffe082}.day-time-cell.negotiable:hover{background-color:#ffecb3}.day-time-cell:last-child{border-right:none}.day-time-cell.editable{cursor:pointer;transition:transform .1s ease,box-shadow .1s ease}.day-time-cell.editable:hover{background-color:#f5f5f5}.day-time-cell.has-error{background-color:#ffebee!important}.day-time-cell.has-error .day-slot{border:2px solid #e74c3c!important;background-color:#ffcdd2!important}.day-time-cell.has-warning{background-color:#fff3e0!important}.day-time-cell.has-warning .day-slot{border:2px solid #f39c12!important;background-color:#ffe0b2!important}.day-time-cell.affected .day-slot{border-left:3px solid #f39c12!important}.day-slot{background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:3px;padding:.5rem;min-height:80px}.day-student{font-size:.85rem;color:#555;margin-bottom:.25rem;padding:.25rem;background-color:#fff;border-radius:2px}.day-student:last-child{margin-bottom:0}.student-list-grouped{display:flex;flex-direction:column;gap:1.5rem}.grade-group{background-color:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden}.grade-header{background-color:#34495e;color:#fff;padding:.75rem 1rem;margin:0;font-size:1rem}.grade-group .list{padding:0}.grade-group .list-item{border:none;border-bottom:1px solid #eee;border-radius:0;padding:1rem}.grade-group .list-item:last-child{border-bottom:none}.school-grade-badge{display:inline-block;background-color:#3498db;color:#fff;padding:.2rem .5rem;border-radius:4px;font-size:.8rem;margin-left:.5rem}.student-subjects{margin-top:.5rem;display:flex;flex-wrap:wrap;gap:.5rem}.subject-tag{display:inline-block;background-color:#e8f5e9;color:#2e7d32;padding:.25rem .5rem;border-radius:4px;font-size:.8rem}.subject-tag.lecture{background-color:#fff3e0;color:#e65100}.form-row{display:flex;gap:1rem}.form-group-half{flex:1}.subject-card{border:1px solid #ddd;border-radius:8px;padding:1rem;margin-bottom:1rem;background-color:#fafafa}.subject-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.lesson-type-selector{display:flex;gap:0;border:1px solid #ddd;border-radius:4px;overflow:hidden}.lesson-type-btn{padding:.5rem 1rem;border:none;background-color:#fff;cursor:pointer;transition:all .2s}.lesson-type-btn:first-child{border-right:1px solid #ddd}.lesson-type-btn.active{background-color:#3498db;color:#fff}.lesson-type-btn:hover:not(.active){background-color:#f0f0f0}.remove-btn{background-color:#e74c3c;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer}.remove-btn:hover{background-color:#c0392b}.subject-checkboxes{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.subject-checkbox{display:inline-flex;align-items:center;gap:.25rem;padding:.4rem .75rem;border:1px solid #ddd;border-radius:4px;background-color:#fff;cursor:pointer;transition:all .2s;font-size:.9rem}.subject-checkbox:hover{border-color:#3498db}.subject-checkbox.checked{background-color:#e3f2fd;border-color:#3498db;color:#1976d2}.subject-checkbox input[type=checkbox]{display:none}.preferred-teachers{margin-top:1rem;padding-top:1rem;border-top:1px solid #ddd}.preferred-teachers-label{display:block;margin-bottom:.5rem;font-weight:700;font-size:.9rem;color:#555}.preferred-teachers-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.5rem}.preferred-teacher-item{display:flex;align-items:center;gap:.5rem}.preferred-teacher-item .subject-label{min-width:40px;font-weight:700;color:#555}.preferred-teacher-item select{flex:1;padding:.4rem;border:1px solid #ddd;border-radius:4px}.add-btn{background-color:#27ae60;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:4px;cursor:pointer;font-size:.9rem;transition:background-color .2s}.add-btn:hover{background-color:#229954}.form-hint{font-size:.85rem;color:#666;margin-bottom:.75rem}.availability-calendar{border:1px solid #ddd;border-radius:8px;overflow:hidden;background-color:#fff}.availability-header{display:grid;grid-template-columns:120px repeat(7,1fr);background-color:#34495e;color:#fff}.availability-time-header,.availability-day-header{padding:.75rem .5rem;text-align:center;font-weight:700;border-right:1px solid #2c3e50}.availability-day-header:last-child{border-right:none}.availability-day-header.disabled{background-color:#5d6d7e;color:#95a5a6}.availability-row{display:grid;grid-template-columns:120px repeat(7,1fr);border-bottom:1px solid #ddd}.availability-row:last-child{border-bottom:none}.availability-time-cell{padding:.75rem .5rem;text-align:center;background-color:#ecf0f1;border-right:1px solid #ddd;font-size:.85rem;font-weight:500;color:#555}.availability-cell{min-height:50px;border-right:1px solid #ddd;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}.availability-cell:last-child{border-right:none}.availability-cell:hover:not(.disabled){background-color:#f0f0f0}.availability-cell.disabled{background-color:#f5f5f5;cursor:not-allowed}.availability-cell.preferred{background-color:#e3f2fd}.availability-cell.available{background-color:#e8f5e9}.availability-mark{font-size:1.2rem;font-weight:700}.availability-cell.preferred .availability-mark{color:#1976d2}.availability-cell.available .availability-mark{color:#388e3c}.availability-legend{display:flex;gap:1.5rem;margin-top:.75rem;padding:.5rem;background-color:#f9f9f9;border-radius:4px}.legend-item{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:#555}.legend-mark{font-weight:700;font-size:1rem}.legend-mark.preferred{color:#1976d2}.legend-mark.available{color:#388e3c}.student-info{flex:1}.student-name-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.subject-type-label{font-size:.7rem;color:#e65100;margin-left:.25rem}.preferred-teacher-label{font-size:.7rem;color:#1976d2;margin-left:.25rem}.teacher-list{display:flex;flex-direction:column;gap:1rem}.teacher-card{background-color:#fff;border:1px solid #ddd;border-radius:8px;padding:1rem}.teacher-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}.teacher-name-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.teacher-name{font-size:1.1rem}.teacher-affiliation{font-size:.85rem;color:#666}.teacher-id-badge{font-size:.75rem;background-color:#e3f2fd;color:#1565c0;padding:.15rem .4rem;border-radius:3px;font-family:monospace}.teacher-password-set{font-size:.7rem;background-color:#e8f5e9;color:#2e7d32;padding:.15rem .4rem;border-radius:3px}.teacher-actions{display:flex;gap:.5rem}.teacher-actions button{padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer}.teacher-actions button:first-child{background-color:#3498db;color:#fff}.teacher-actions button:last-child{background-color:#e74c3c;color:#fff}.teacher-subjects-section{display:flex;flex-direction:column;gap:.75rem}.teacher-grade-subjects{display:flex;align-items:flex-start;gap:.75rem}.grade-level-label{background-color:#34495e;color:#fff;padding:.25rem .5rem;border-radius:4px;font-size:.8rem;min-width:40px;text-align:center}.teacher-subject-tags{display:flex;flex-wrap:wrap;gap:.5rem}.teacher-subject-tag{background-color:#e3f2fd;color:#1976d2;padding:.25rem .5rem;border-radius:4px;font-size:.85rem}.subject-selector{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.subject-select-btn{padding:.5rem .75rem;border:1px solid #ddd;border-radius:4px;background-color:#fff;cursor:pointer;transition:all .2s;font-size:.9rem}.subject-select-btn:hover{border-color:#3498db}.subject-select-btn.selected{background-color:#3498db;color:#fff;border-color:#3498db}.selected-subjects-list{display:flex;flex-direction:column;gap:.75rem}.subject-detail-card{border:1px solid #ddd;border-radius:8px;background-color:#fafafa;overflow:hidden}.subject-detail-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background-color:#e3f2fd;border-bottom:1px solid #ddd}.subject-name{font-weight:700;font-size:1rem;color:#1976d2}.remove-subject-btn{background-color:transparent;border:none;color:#e74c3c;font-size:1.2rem;cursor:pointer;padding:0 .5rem}.remove-subject-btn:hover{color:#c0392b}.subject-detail-body{padding:.75rem 1rem;display:flex;flex-wrap:wrap;gap:1rem}.subject-option{display:flex;align-items:center;gap:.5rem}.option-label{font-size:.85rem;color:#555}.lesson-type-toggle{display:flex;border:1px solid #ddd;border-radius:4px;overflow:hidden}.toggle-btn{padding:.4rem .75rem;border:none;background-color:#fff;cursor:pointer;font-size:.85rem;transition:all .2s}.toggle-btn:first-child{border-right:1px solid #ddd}.toggle-btn.active{background-color:#3498db;color:#fff}.toggle-btn:hover:not(.active){background-color:#f0f0f0}.teacher-select{padding:.4rem;border:1px solid #ddd;border-radius:4px;font-size:.85rem;min-width:120px}.teachable-subjects-section{display:flex;flex-direction:column;gap:1rem}.grade-level-section{border:1px solid #ddd;border-radius:8px;padding:1rem;background-color:#fafafa}.grade-level-title{margin:0 0 .75rem;font-size:1rem;color:#34495e;padding-bottom:.5rem;border-bottom:1px solid #ddd}.monthly-schedule-calendar{border:1px solid #ddd;border-radius:8px;margin-bottom:1rem;overflow:hidden}.schedule-calendar-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background-color:#34495e;color:#fff}.schedule-month-nav{display:flex;align-items:center;gap:1rem}.schedule-month-nav h3{margin:0;font-size:1rem}.schedule-month-nav button{background-color:transparent;border:1px solid white;color:#fff;padding:.25rem .5rem;border-radius:4px;cursor:pointer}.schedule-month-nav button:hover{background-color:#ffffff1a}.schedule-calendar-note{padding:.5rem 1rem;background-color:#fff3e0;font-size:.8rem;color:#e65100}.schedule-calendar-grid{background-color:#fff}.calendar-header-row{display:grid;grid-template-columns:100px repeat(7,1fr);background-color:#ecf0f1;border-bottom:1px solid #ddd}.calendar-time-header{padding:.5rem;text-align:center;font-weight:700;font-size:.75rem;color:#555;border-right:1px solid #ddd}.calendar-day-name{padding:.5rem;text-align:center;font-weight:700;font-size:.85rem;border-right:1px solid #ddd}.calendar-day-name:last-child{border-right:none}.calendar-week-section{border-bottom:2px solid #ddd}.calendar-week-section:last-child{border-bottom:none}.calendar-date-row{display:grid;grid-template-columns:100px repeat(7,1fr);background-color:#f9f9f9;border-bottom:1px solid #eee}.calendar-date-cell{padding:.25rem;text-align:center;border-right:1px solid #ddd}.calendar-date-cell:last-child{border-right:none}.calendar-date-cell.empty{background-color:#f5f5f5}.date-number{font-weight:700;font-size:.85rem;color:#333}.date-label{background-color:#ecf0f1}.calendar-time-row{display:grid;grid-template-columns:100px repeat(7,1fr);border-bottom:1px solid #eee}.calendar-time-row:last-child{border-bottom:none}.calendar-time-cell{padding:.25rem;text-align:center;background-color:#ecf0f1;border-right:1px solid #ddd;font-size:.65rem}.time-weekday{font-weight:700;color:#333}.time-weekend{color:#777;font-style:italic}.calendar-slot-cell{min-height:30px;border-right:1px solid #ddd;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}.calendar-slot-cell:last-child{border-right:none}.calendar-slot-cell:hover:not(.disabled):not(.empty){background-color:#f0f0f0}.calendar-slot-cell.disabled,.calendar-slot-cell.empty{background-color:#f5f5f5;cursor:not-allowed}.calendar-slot-cell.status-ok{background-color:#e8f5e9}.calendar-slot-cell.status-maybe{background-color:#fff3e0}.calendar-slot-cell.status-no{background-color:#ffebee}.status-mark{font-weight:700;font-size:.9rem}.calendar-slot-cell.status-ok .status-mark{color:#388e3c}.calendar-slot-cell.status-maybe .status-mark{color:#f57c00}.calendar-slot-cell.status-no .status-mark{color:#d32f2f}.calendar-legend{display:flex;gap:1.5rem;padding:.75rem 1rem;background-color:#f9f9f9;border-top:1px solid #ddd}.status-ok{color:#388e3c;font-weight:700}.status-maybe{color:#f57c00;font-weight:700}.status-no{color:#d32f2f;font-weight:700}.weekend-note{font-size:.8rem;color:#777;font-style:italic}.month-tabs{display:flex;gap:0;padding:.5rem 1rem;background-color:#f5f5f5;border-bottom:1px solid #ddd;overflow-x:auto}.month-tab{padding:.5rem 1rem;border:1px solid #ddd;border-bottom:none;background-color:#fff;cursor:pointer;font-size:.9rem;transition:all .2s;position:relative;border-radius:4px 4px 0 0;margin-right:-1px}.month-tab:hover{background-color:#e3f2fd}.month-tab.active{background-color:#3498db;color:#fff;border-color:#3498db;z-index:1}.month-tab.has-data:not(.active){background-color:#e8f5e9}.month-tab .data-indicator{display:block;font-size:.6rem;margin-top:.1rem;line-height:1}.month-tab .data-indicator.submitted{color:#27ae60}.month-tab .data-indicator.not-submitted{color:#bdc3c7}.month-tab.active .data-indicator.submitted{color:#a8e6cf}.month-tab.active .data-indicator.not-submitted{color:#ffffffb3}.month-tab-year{font-size:.6rem;display:block;opacity:.7}.form-group-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.form-group-header label{margin-bottom:0}.refresh-schedule-btn{background-color:#3498db;color:#fff;border:none;padding:.4rem .75rem;border-radius:4px;font-size:.85rem;cursor:pointer;transition:background-color .2s}.refresh-schedule-btn:hover{background-color:#2980b9}.refresh-message{background-color:#d4edda;color:#155724;padding:.5rem 1rem;border-radius:4px;margin-bottom:.5rem;font-size:.9rem;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.form-hint.last-refreshed{color:#27ae60;font-weight:700}.selected-subjects-teachers{margin-top:1rem;padding:1rem;background-color:#f9f9f9;border-radius:8px}.teacher-assignments{display:flex;flex-direction:column;gap:.5rem}.teacher-assignment-row{display:flex;align-items:center;gap:1rem}.teacher-assignment-row .subject-label{min-width:80px;font-weight:700;color:#1976d2}.teacher-assignment-row .teacher-select{flex:1;max-width:200px}.lectures-list{display:flex;flex-direction:column;gap:1rem;margin-bottom:1rem}.lecture-card{border:1px solid #ff9800;border-radius:8px;overflow:hidden;background-color:#fff8e1}.lecture-header{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;background-color:#ff9800;color:#fff}.lecture-badge{font-weight:700;font-size:1.1rem;background-color:#fff;color:#ff9800;padding:.25rem .5rem;border-radius:4px}.remove-lecture-btn{background-color:transparent;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0 .5rem;line-height:1}.remove-lecture-btn:hover{color:#ffccbc}.lecture-body{padding:1rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem}.lecture-field{display:flex;flex-direction:column;gap:.25rem}.lecture-field label{font-size:.85rem;color:#666;font-weight:400}.lecture-field select,.lecture-field input{padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.lecture-field input[type=number]{width:80px}.add-lecture-btn{background-color:#ff9800;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:4px;cursor:pointer;font-size:.9rem;transition:background-color .2s}.add-lecture-btn:hover{background-color:#f57c00}.lecture-tag{display:inline-block;background-color:#fff3e0;color:#e65100;padding:.25rem .5rem;border-radius:4px;font-size:.8rem;border:1px solid #ffcc80}.lecture-tag .lecture-alpha{font-weight:700;margin-right:.25rem}.header-left{display:flex;align-items:center;gap:2rem}.fiscal-year-selector{display:flex;align-items:center;gap:.75rem}.fiscal-year-select{background-color:#34495e;color:#fff;border:1px solid #5d6d7e;padding:.5rem 1rem;border-radius:4px;font-size:1rem;cursor:pointer}.fiscal-year-select:hover{background-color:#455a64}.progress-year-btn{background-color:#27ae60!important;font-size:.9rem!important;padding:.4rem .8rem!important}.progress-year-btn:hover{background-color:#219a52!important}.app-header nav button.active{background-color:#1abc9c}.current-month-display{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:2px solid #ecf0f1}.current-month-title{font-size:1.8rem;font-weight:700;color:#2c3e50;margin:0}.fiscal-year-badge{background-color:#3498db;color:#fff;padding:.25rem .75rem;border-radius:20px;font-size:.85rem;font-weight:700}.month-selector{display:flex;align-items:center;gap:.75rem}.month-selector-label{font-size:.9rem;color:#666;white-space:nowrap}.fiscal-year-label{font-weight:700;color:#2c3e50}.month-tabs-horizontal{display:flex;gap:.25rem;flex-wrap:wrap}.month-tab-h{background-color:#ecf0f1;border:1px solid #bdc3c7;padding:.4rem .75rem;border-radius:4px;cursor:pointer;font-size:.85rem;transition:all .2s}.month-tab-h:hover{background-color:#d5dbdb}.month-tab-h.active{background-color:#2980b9;color:#fff;border-color:#2980b9;font-weight:700;transform:scale(1.05);box-shadow:0 2px 4px #0003}.month-tab-h.has-data:not(.active){position:relative}.month-tab-h.has-data:not(.active):after{content:"";position:absolute;bottom:2px;left:50%;transform:translate(-50%);width:6px;height:6px;background-color:#27ae60;border-radius:50%}.month-selector-compact{display:flex;align-items:center;gap:.5rem}.month-select{padding:.5rem 1rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;background-color:#fff;cursor:pointer;min-width:160px}.month-select:hover{border-color:#3498db}.month-nav-buttons{display:flex;gap:.25rem}.month-nav-btn{background-color:#ecf0f1;border:1px solid #bdc3c7;padding:.5rem .75rem;border-radius:4px;cursor:pointer;font-size:.9rem;transition:all .2s}.month-nav-btn:hover:not(:disabled){background-color:#3498db;color:#fff;border-color:#3498db}.month-nav-btn:disabled{opacity:.5;cursor:not-allowed}.month-nav-compact{display:flex;align-items:center;gap:1rem}.month-nav-btn-large{background-color:#3498db;color:#fff;border:none;padding:.6rem 1.2rem;border-radius:4px;cursor:pointer;font-size:1rem;font-weight:700;transition:all .2s}.month-nav-btn-large:hover{background-color:#2980b9;transform:scale(1.02)}.month-nav-btn-large:active{transform:scale(.98)}.schedule-actions{display:flex;gap:.75rem;margin-left:auto}.build-schedule-btn{background-color:#3498db!important}.build-schedule-btn:hover{background-color:#2980b9!important}.reset-btn{background-color:#95a5a6!important;font-size:.85rem!important}.reset-btn:hover{background-color:#7f8c8d!important}.undo-btn{background-color:#9b59b6!important;font-size:.85rem!important}.undo-btn:hover{background-color:#8e44ad!important}.excel-export-btn{background-color:#27ae60!important;font-size:.85rem!important}.excel-export-btn:hover{background-color:#219a52!important}.excel-export-btn.btn-no-data{background-color:#95a5a6!important;opacity:.6}.excel-import-btn-label{display:inline-flex;align-items:center;justify-content:center;background-color:#e67e22;color:#fff;padding:.5rem 1rem;border-radius:4px;font-size:.85rem;cursor:pointer;font-weight:500;transition:background-color .2s;white-space:nowrap}.excel-import-btn-label:hover{background-color:#d35400}.excel-import-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.excel-import-dialog{background:#fff;border-radius:8px;padding:1.5rem;max-width:700px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:0 4px 20px #0000004d}.excel-import-dialog h3{margin:0 0 1rem;color:#2c3e50;font-size:1.2rem}.excel-import-summary{display:flex;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.excel-import-stat{background:#ecf0f1;border-radius:6px;padding:.5rem 1rem;text-align:center;min-width:80px}.excel-import-stat .stat-label{display:block;font-size:.8rem;color:#7f8c8d}.excel-import-stat .stat-value{display:block;font-size:1.2rem;font-weight:700;color:#2c3e50}.excel-import-stat.stat-added .stat-value{color:#27ae60}.excel-import-stat.stat-modified .stat-value{color:#e67e22}.excel-import-stat.stat-removed .stat-value{color:#e74c3c}.excel-import-warnings{background:#fef9e7;border:1px solid #f39c12;border-radius:6px;padding:.75rem;margin-bottom:1rem}.excel-import-warnings h4{margin:0 0 .5rem;color:#e67e22;font-size:.9rem}.excel-import-warnings ul{margin:0;padding-left:1.2rem;font-size:.85rem;color:#7f6c3e}.excel-import-section{margin-bottom:1rem}.excel-import-section h4{margin:0 0 .5rem;color:#2c3e50;font-size:.9rem}.excel-import-section ul{margin:0;padding-left:1.2rem;font-size:.85rem;color:#34495e;list-style:none}.excel-import-section li{padding:.25rem 0;border-bottom:1px solid #ecf0f1}.diff-before{color:#e74c3c;font-size:.8rem}.diff-after{color:#27ae60;font-size:.8rem}.excel-import-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1rem;padding-top:1rem;border-top:1px solid #ecf0f1}.excel-import-cancel-btn{background-color:#95a5a6!important;color:#fff;padding:.5rem 1.5rem;border:none;border-radius:4px;cursor:pointer;font-size:.9rem}.excel-import-cancel-btn:hover{background-color:#7f8c8d!important}.excel-import-confirm-btn{background-color:#3498db!important;color:#fff;padding:.5rem 1.5rem;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:700}.excel-import-confirm-btn:hover{background-color:#2980b9!important}.excel-import-confirm-btn:disabled{background-color:#bdc3c7!important;cursor:not-allowed}.saved-schedule-info{background-color:#e8f8f5;border:1px solid #1abc9c;color:#16a085;padding:.5rem 1rem;border-radius:4px;font-size:.9rem;margin-bottom:1rem}.list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.list-header h2{color:#2c3e50;font-size:1.3rem}.list-header button{background-color:#27ae60;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer}.list-header button:hover{background-color:#219a52}.list-header-actions{display:flex;gap:.5rem;align-items:center}.refresh-btn{background-color:#3498db!important}.refresh-btn:hover{background-color:#2980b9!important}.empty-message{color:#7f8c8d;text-align:center;padding:2rem;font-style:italic}.archived-list{display:flex;flex-direction:column;gap:.75rem}.archived-item{background-color:#fff;border:1px solid #ddd;border-radius:8px;padding:1rem;display:flex;justify-content:space-between;align-items:center}.archived-info{display:flex;align-items:baseline;gap:1rem}.archived-info strong{color:#2c3e50}.archived-meta{color:#7f8c8d;font-size:.9rem}.archived-subjects{display:flex;gap:.5rem}.dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.dialog{background-color:#fff;padding:2rem;border-radius:12px;max-width:500px;width:90%;box-shadow:0 4px 20px #0003}.dialog h3{color:#2c3e50;margin-bottom:1rem;font-size:1.3rem}.dialog p{color:#555;margin-bottom:1rem}.progress-info{background-color:#fef9e7;border:1px solid #f7dc6f;padding:1rem;border-radius:8px;margin-bottom:1rem}.progress-info li{color:#7d6608;margin-left:1.5rem;margin-bottom:.5rem}.progress-preview{background-color:#eaf2f8;border:1px solid #5dade2;padding:1rem;border-radius:8px;margin-bottom:1.5rem}.progress-preview strong{color:#2c3e50;display:block;margin-bottom:.5rem}.progress-preview p{margin:.25rem 0;color:#2471a3}.dialog-actions{display:flex;gap:1rem;justify-content:flex-end}.dialog-actions .confirm-btn{background-color:#27ae60;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:4px;cursor:pointer;font-size:1rem}.dialog-actions .confirm-btn:hover{background-color:#219a52}.dialog-actions .cancel-btn{background-color:#95a5a6;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:4px;cursor:pointer;font-size:1rem}.dialog-actions .cancel-btn:hover{background-color:#7f8c8d}.archived-section{margin-top:3rem;padding-top:2rem;border-top:2px solid #bdc3c7}.archived-section-header{color:#7f8c8d;font-size:1.2rem;margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.archived-section-header:before{content:"";display:inline-block;width:4px;height:1.2rem;background-color:#95a5a6;border-radius:2px}.changes-notification,.violations-notification{padding:1rem;margin:1rem;border-radius:8px}.changes-notification{background-color:#fff3e0;border:1px solid #ff9800}.violations-notification{background-color:#ffebee;border:1px solid #f44336}.changes-notification h4,.violations-notification h4{margin:0 0 .5rem;display:flex;align-items:center;gap:.5rem}.changes-notification ul,.violations-notification ul{margin:0;padding-left:1.5rem;font-size:.9rem}.violations-notification li.error{color:#c62828}.violations-notification li.warning{color:#e65100}.slot-editor-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.slot-editor{background-color:#fff;border-radius:12px;box-shadow:0 4px 20px #0000004d;min-width:400px;max-width:500px;max-height:80vh;overflow-y:auto}.slot-editor-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;background-color:#3498db;color:#fff;border-radius:12px 12px 0 0}.slot-editor-header h3{margin:0}.slot-editor-header .close-btn{background:transparent;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0;line-height:1}.slot-editor-header .close-btn:hover{opacity:.8}.slot-editor-body{padding:1.5rem}.slot-editor-info{margin-bottom:1rem;padding:.75rem;background-color:#ecf0f1;border-radius:6px;font-size:.9rem}.slot-editor-section{margin-bottom:1.5rem}.slot-editor-section label{display:block;font-weight:700;margin-bottom:.5rem;color:#2c3e50}.slot-editor-section select{width:100%;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.slot-editor-students{border:1px solid #ddd;border-radius:6px;padding:.75rem}.slot-editor-student-row{display:flex;justify-content:space-between;align-items:center;padding:.5rem;background-color:#f8f9fa;border-radius:4px;margin-bottom:.5rem}.slot-editor-student-row:last-child{margin-bottom:0}.slot-editor-student-row .student-info{font-size:.9rem}.slot-editor-student-row .remove-student-btn{background-color:#e74c3c;color:#fff;border:none;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;cursor:pointer}.slot-editor-student-row .remove-student-btn:hover{background-color:#c0392b}.add-student-row{margin-top:.75rem;padding-top:.75rem;border-top:1px dashed #ddd}.add-student-row select{width:100%;margin-bottom:.5rem}.subject-select{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.subject-select span{font-size:.85rem;color:#666}.subject-add-btn{background-color:#27ae60;color:#fff;border:none;padding:.25rem .75rem;border-radius:4px;font-size:.85rem;cursor:pointer}.subject-add-btn:hover{background-color:#219a52}.capacity-notice{padding:.5rem;background-color:#fff3e0;color:#e65100;border-radius:4px;font-size:.85rem;text-align:center;margin-top:.75rem}.no-students-notice{padding:.5rem;background-color:#fce4ec;color:#c2185b;border-radius:4px;font-size:.85rem;text-align:center;margin-top:.75rem}.teacher-warning{color:#e65100;font-size:.85rem;margin-top:.25rem}.slot-editor-violations{background-color:#ffebee;border:1px solid #f44336;border-radius:6px;padding:.75rem;margin-bottom:1rem}.slot-editor-violations h4{margin:0 0 .5rem;color:#c62828;font-size:.9rem}.violation-item{display:flex;align-items:flex-start;gap:.5rem;padding:.5rem;margin-bottom:.25rem;border-radius:4px;font-size:.85rem}.violation-item.error{background-color:#ffcdd2}.violation-item.warning{background-color:#fff3e0}.violation-icon{flex-shrink:0}.violation-message{flex:1}.violation-suggestion{display:block;font-size:.8rem;color:#666;margin-top:.25rem;font-style:italic}.slot-editor-changes{background-color:#e3f2fd;border:1px solid #2196f3;border-radius:6px;padding:.75rem;margin-bottom:1rem}.slot-editor-changes h4{margin:0 0 .5rem;color:#1565c0;font-size:.9rem}.slot-editor-changes ul{margin:0;padding-left:1.25rem;font-size:.85rem}.slot-editor-changes li{margin-bottom:.25rem}.slot-editor-footer{display:flex;gap:1rem;justify-content:flex-end;padding:1rem 1.5rem;background-color:#f8f9fa;border-top:1px solid #ddd;border-radius:0 0 12px 12px}.schedule-slot.editable{cursor:pointer;transition:transform .1s,box-shadow .1s}.schedule-slot.editable:hover{transform:scale(1.02);box-shadow:0 2px 8px #00000026}.schedule-slot.has-violations{border:2px solid #e74c3c!important;animation:pulse-violation 2s infinite}@keyframes pulse-violation{0%,to{box-shadow:0 0 #e74c3c66}50%{box-shadow:0 0 0 4px #e74c3c00}}.schedule-slot.has-changes{border:2px solid #f39c12!important}.slot-violation-indicator{position:absolute;top:2px;right:2px;font-size:.75rem}.schedule-container.readonly .schedule-slot{cursor:default}.readonly-notice{padding:.75rem 1rem;background-color:#ecf0f1;color:#7f8c8d;font-size:.9rem;text-align:center;border-bottom:1px solid #ddd}.calendar-slot-compact.editable{cursor:pointer;transition:transform .1s ease,box-shadow .1s ease}.calendar-slot-compact.editable:hover{transform:scale(1.03);box-shadow:0 2px 8px #0003;z-index:1}.calendar-slot-compact.affected{border-left:3px solid #f39c12!important}.calendar-slot-compact.has-error{border:2px solid #e74c3c!important;background-color:#ffebee!important}.calendar-slot-compact.has-warning{border:2px solid #f39c12!important;background-color:#fff3e0!important}.calendar-slot-compact.draggable{cursor:grab}.calendar-slot-compact.draggable:active{cursor:grabbing}.calendar-slot-compact.dragging{opacity:.5;transform:scale(.95)}.week-day-cell.drop-target{background-color:#e3f2fd!important;border:2px dashed #2196f3!important}.slot-violation-indicator{position:absolute;top:2px;right:2px;font-size:.65rem;line-height:1}.edit-hint{margin-left:1rem;color:#3498db;font-weight:700}.day-time-slot.editable{cursor:pointer;transition:transform .1s ease,box-shadow .1s ease}.day-time-slot.editable:hover{transform:scale(1.02);box-shadow:0 2px 8px #00000026}.day-time-slot.affected{border-left:3px solid #f39c12!important}.day-time-slot.has-error{border:2px solid #e74c3c!important;background-color:#ffebee!important}.day-time-slot.has-warning{border:2px solid #f39c12!important;background-color:#fff3e0!important}.edit-history{margin:1rem;padding:1rem;background-color:#e8f4fd;border:1px solid #2196f3;border-radius:8px}.edit-history-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.edit-history-header h4{margin:0;color:#1565c0}.clear-history-btn{background-color:transparent;border:1px solid #1565c0;color:#1565c0;padding:.25rem .75rem;border-radius:4px;font-size:.8rem;cursor:pointer}.clear-history-btn:hover{background-color:#1565c0;color:#fff}.edit-history-list{margin:0;padding:0;list-style:none;max-height:200px;overflow-y:auto}.edit-history-item{display:flex;flex-direction:column;gap:.25rem;padding:.75rem;background-color:#fff;border-radius:4px;margin-bottom:.5rem;font-size:.85rem;border-left:3px solid #2196f3}.edit-history-item:last-child{margin-bottom:0}.edit-header{display:flex;align-items:center;gap:.5rem}.edit-time{color:#666;font-family:monospace;font-size:.8rem}.edit-type-badge{background-color:#e3f2fd;color:#1565c0;padding:.1rem .4rem;border-radius:3px;font-size:.7rem;text-transform:uppercase}.edit-slot-info{color:#555;font-size:.8rem;padding:.25rem .5rem;background-color:#f5f5f5;border-radius:3px}.edit-change-desc{color:#333;font-weight:500}.datetime-selectors{display:flex;gap:.5rem}.datetime-selectors select{flex:1;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.delete-confirm{background-color:#ffebee;border:1px solid #e74c3c;border-radius:6px;padding:1rem;margin-top:1rem}.delete-confirm p{margin:0 0 .75rem}.delete-confirm p:first-child{font-weight:700;color:#c62828}.delete-confirm-info{background-color:#fff;padding:.75rem;border-radius:4px;font-size:.9rem;line-height:1.5}.delete-confirm-buttons{display:flex;gap:.75rem;margin-top:1rem}.delete-confirm-btn{background-color:#e74c3c;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-weight:700}.delete-confirm-btn:hover{background-color:#c0392b}.delete-cancel-btn{background-color:#95a5a6;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer}.delete-cancel-btn:hover{background-color:#7f8c8d}.slot-editor-footer{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;background-color:#f8f9fa;border-top:1px solid #ddd;border-radius:0 0 12px 12px}.slot-editor-footer .delete-btn{background-color:transparent;border:1px solid #e74c3c;color:#e74c3c;padding:.5rem 1rem;border-radius:6px;cursor:pointer;font-size:.9rem}.slot-editor-footer .delete-btn:hover{background-color:#e74c3c;color:#fff}.footer-right{display:flex;gap:.75rem}.footer-right.full-width{margin-left:auto}.slot-editor-footer .save-btn{background-color:#27ae60;color:#fff;border:none;padding:.5rem 1.5rem;border-radius:6px;cursor:pointer;font-weight:700}.slot-editor-footer .save-btn:hover:not(:disabled){background-color:#219a52}.slot-editor-footer .save-btn:disabled{background-color:#bdc3c7;cursor:not-allowed}.slot-editor-footer .cancel-btn{background-color:#95a5a6;color:#fff;border:none;padding:.5rem 1.5rem;border-radius:6px;cursor:pointer}.slot-editor-footer .cancel-btn:hover{background-color:#7f8c8d}.violation-content{display:flex;flex-direction:column;gap:.25rem}.integrity-issues{margin:1rem;padding:1rem;background-color:#fce4ec;border:1px solid #e91e63;border-radius:8px}.integrity-issues h4{margin:0 0 .75rem;color:#c2185b}.integrity-issues ul{margin:0;padding:0;list-style:none}.integrity-issues li{display:flex;align-items:flex-start;gap:.5rem;padding:.5rem;background-color:#fff;border-radius:4px;margin-bottom:.5rem;font-size:.9rem}.integrity-issues li:last-child{margin-bottom:0}.integrity-issues li.error{border-left:3px solid #e74c3c}.integrity-issues li.warning{border-left:3px solid #f39c12}.issue-icon{flex-shrink:0}.issue-content{display:flex;flex-direction:column;gap:.25rem}.issue-message{color:#333}.issue-details{font-size:.8rem;color:#666;font-style:italic}.day-slots-container{display:flex;flex-direction:column;gap:.25rem;height:100%}.day-slots-container.multi{flex-direction:row;flex-wrap:wrap}.day-slots-container.multi .day-slot{flex:1 1 45%;min-width:80px}.day-slot{background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:3px;padding:.5rem;min-height:80px;position:relative}.day-slot.draggable{cursor:grab}.day-slot.draggable:active{cursor:grabbing}.day-slot.dragging{opacity:.5;transform:scale(.95)}.day-slot.affected{border-left:3px solid #f39c12!important}.day-slot.has-error{border:2px solid #e74c3c!important;background-color:#ffcdd2!important}.day-slot.has-warning{border:2px solid #f39c12!important;background-color:#ffe0b2!important}.day-time-cell.drop-target{background-color:#e3f2fd!important;border:2px dashed #2196f3!important}.day-time-cell.multiple-slots{background-color:#fff8e1}.lecture-period-settings{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#fff;border-radius:12px;box-shadow:0 4px 20px #0000004d;width:90%;max-width:600px;max-height:80vh;display:flex;flex-direction:column;z-index:1000}.settings-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;z-index:999}.settings-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;background-color:#3498db;color:#fff;border-radius:12px 12px 0 0}.settings-header h2{margin:0;font-size:1.2rem}.settings-header .close-btn{background:transparent;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0;line-height:1}.settings-content{flex:1;overflow-y:auto;padding:1.5rem}.periods-section{margin-bottom:2rem}.periods-section:last-child{margin-bottom:0}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:2px solid #ecf0f1}.section-header h3{margin:0;color:#2c3e50;font-size:1.1rem}.add-period-btn{background-color:#27ae60;color:#fff;border:none;padding:.4rem .8rem;border-radius:4px;cursor:pointer;font-size:.9rem}.add-period-btn:hover:not(:disabled){background-color:#219a52}.add-period-btn:disabled{opacity:.5;cursor:not-allowed}.periods-list{display:flex;flex-direction:column;gap:.75rem}.empty-periods{color:#95a5a6;font-style:italic;padding:1rem;text-align:center;background-color:#f9f9f9;border-radius:4px}.period-item{background-color:#f8f9fa;border:1px solid #ddd;border-radius:6px;padding:.75rem 1rem}.period-display{display:flex;justify-content:space-between;align-items:center}.period-info{display:flex;align-items:center;gap:1rem}.period-name{font-weight:700;color:#2c3e50}.period-dates{color:#7f8c8d;font-size:.9rem}.period-actions{display:flex;gap:.5rem}.period-actions .edit-btn{background-color:#3498db;color:#fff;border:none;padding:.3rem .6rem;border-radius:4px;cursor:pointer;font-size:.85rem}.period-actions .edit-btn:hover{background-color:#2980b9}.period-actions .delete-btn{background-color:transparent;border:1px solid #e74c3c;color:#e74c3c;padding:.3rem .6rem;border-radius:4px;cursor:pointer;font-size:.85rem}.period-actions .delete-btn:hover{background-color:#e74c3c;color:#fff}.period-edit-form{display:flex;flex-direction:column;gap:.75rem}.period-name-input{padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:1rem}.period-date-inputs{display:flex;align-items:center;gap:.5rem}.period-date-inputs input[type=date]{padding:.4rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.period-date-inputs span{color:#666}.period-edit-actions{display:flex;gap:.5rem;justify-content:flex-end}.period-edit-actions .save-btn{background-color:#27ae60;color:#fff;border:none;padding:.4rem .8rem;border-radius:4px;cursor:pointer}.period-edit-actions .cancel-btn{background-color:#95a5a6;color:#fff;border:none;padding:.4rem .8rem;border-radius:4px;cursor:pointer}.add-period-form{background-color:#e8f8f5;border:1px solid #1abc9c;border-radius:8px;padding:1rem;margin-top:1rem}.add-period-form h4{margin:0 0 1rem;color:#16a085}.add-period-form .form-row{margin-bottom:1rem}.add-period-form .form-row label{display:block;margin-bottom:.5rem;font-weight:700;color:#2c3e50}.name-input-group{display:flex;flex-direction:column;gap:.5rem}.name-suggestions{display:flex;flex-wrap:wrap;gap:.5rem}.suggestion-btn{background-color:#fff;border:1px solid #ddd;padding:.3rem .6rem;border-radius:4px;cursor:pointer;font-size:.85rem;transition:all .2s}.suggestion-btn:hover{border-color:#3498db;color:#3498db}.suggestion-btn.selected{background-color:#3498db;color:#fff;border-color:#3498db}.add-form-actions{display:flex;gap:.75rem;justify-content:flex-end}.add-confirm-btn{background-color:#27ae60;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-weight:700}.add-confirm-btn:hover{background-color:#219a52}.add-cancel-btn{background-color:#95a5a6;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer}.add-cancel-btn:hover{background-color:#7f8c8d}.settings-footer{display:flex;gap:1rem;justify-content:flex-end;padding:1rem 1.5rem;background-color:#f8f9fa;border-top:1px solid #ddd;border-radius:0 0 12px 12px}.save-all-btn{background-color:#27ae60;color:#fff;border:none;padding:.6rem 1.2rem;border-radius:6px;cursor:pointer;font-weight:700}.save-all-btn:hover{background-color:#219a52}.cancel-all-btn{background-color:#95a5a6;color:#fff;border:none;padding:.6rem 1.2rem;border-radius:6px;cursor:pointer}.cancel-all-btn:hover{background-color:#7f8c8d}.archived-section{margin-top:2rem;padding-top:1rem;border-top:2px dashed #bdc3c7}.archived-header{cursor:pointer;-webkit-user-select:none;user-select:none}.archived-header:hover{background-color:#f8f9fa}.archive-toggle{margin-right:.5rem;color:#7f8c8d;font-size:.85rem}.archived-periods-list{display:flex;flex-direction:column;gap:.5rem}.archived-item{opacity:.7;background-color:#ecf0f1!important;border-color:#bdc3c7!important}.archived-item .period-name{color:#7f8c8d}.archived-item .period-dates{color:#95a5a6}.archived-item .period-type-badge{font-size:.7rem;padding:.15rem .4rem;border-radius:3px;background-color:#bdc3c7;color:#fff}.lecture-periods-enrollment{display:flex;flex-direction:column;gap:1rem}.lecture-period-card{background-color:#f8f9fa;border:1px solid #ddd;border-radius:8px;padding:1rem;transition:border-color .2s}.lecture-period-card:hover{border-color:#bbb}.lecture-period-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem;padding-bottom:.5rem;border-bottom:1px solid #eee}.period-type-badge{font-size:.7rem;padding:.2rem .5rem;border-radius:4px;font-weight:700}.period-type-badge.regular{background-color:#3498db;color:#fff}.period-type-badge.special{background-color:#e67e22;color:#fff}.lecture-period-header .period-name{font-weight:700;color:#2c3e50;font-size:1rem}.lecture-period-header .period-dates{color:#666;font-size:.85rem}.lecture-period-subjects{display:flex;flex-direction:column;gap:.5rem}.enrollment-subject-row{display:flex;align-items:center;gap:1rem;padding:.5rem;background-color:#fff;border:1px solid #eee;border-radius:4px;transition:all .2s}.enrollment-subject-row.enrolled{background-color:#e8f8f5;border-color:#1abc9c}.enrollment-checkbox{display:flex;align-items:center;gap:.5rem;cursor:pointer;min-width:80px}.enrollment-checkbox input[type=checkbox]{width:18px;height:18px;cursor:pointer}.enrollment-checkbox .subject-label{font-weight:500;color:#2c3e50}.enrollment-details{display:flex;align-items:center;gap:1rem;flex:1;justify-content:flex-end}.enrollment-lessons{display:flex;align-items:center;gap:.25rem}.enrollment-lessons .lessons-input{width:60px;padding:.3rem .5rem;border:1px solid #ddd;border-radius:4px;text-align:center;font-size:.9rem}.enrollment-teacher-select{padding:.3rem .5rem;border:1px solid #ddd;border-radius:4px;font-size:.85rem;min-width:130px}.period-enrollment-summary{margin-top:.75rem;padding-top:.5rem;border-top:1px solid #ddd;font-size:.85rem;color:#27ae60;font-weight:500;text-align:right}.no-lecture-periods{text-align:center;padding:2rem;background-color:#fff3cd;border:1px dashed #ffc107;border-radius:8px}.no-lecture-periods .form-hint{margin:.5rem 0;color:#856404}.legacy-lectures{margin-top:1rem;padding:1rem;background-color:#fef9e7;border:1px solid #f4d03f;border-radius:8px}.legacy-lectures label{color:#856404!important}.lecture-card.legacy{opacity:.7}.lecture-card.legacy .lecture-body{padding:.5rem;font-size:.9rem;color:#666}.subject-tag.lecture-enrollment{background-color:#e8f8f5;border:1px solid #1abc9c;color:#16a085;display:inline-flex;align-items:center;gap:.25rem}.subject-tag.lecture-enrollment .enrollment-period-name{font-size:.75rem;color:#27ae60}.subject-tag.lecture-enrollment .enrollment-lessons{font-size:.75rem;background-color:#1abc9c;color:#fff;padding:.1rem .3rem;border-radius:3px;margin-left:.25rem}.subject-tag.lecture.legacy{background-color:#fef9e7;border:1px dashed #f4d03f;color:#856404;opacity:.8}.day-student.lecture,.slot-student-compact.lecture,.slot-subject-only.lecture{color:#1976d2;font-weight:500}.settings-page-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.settings-page{background-color:#fff;border-radius:12px;width:90%;max-width:800px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 4px 20px #0000004d}.settings-page-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid #ddd;background-color:#2c3e50;color:#fff;border-radius:12px 12px 0 0}.settings-page-header h2{margin:0;font-size:1.3rem}.settings-page-header .close-btn{background:none;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:.25rem .5rem;line-height:1}.settings-page-header .close-btn:hover{opacity:.8}.settings-tabs{display:flex;background-color:#f8f9fa;border-bottom:1px solid #ddd}.settings-tab{flex:1;padding:.75rem 1rem;background:none;border:none;border-bottom:3px solid transparent;cursor:pointer;font-size:.95rem;color:#666;transition:all .2s}.settings-tab:hover{background-color:#ecf0f1;color:#2c3e50}.settings-tab.active{border-bottom-color:#3498db;color:#3498db;font-weight:700}.settings-tab-content{flex:1;overflow-y:auto}.settings-tab-content .lecture-period-settings{position:static!important;transform:none!important;top:auto!important;left:auto!important;width:100%;max-width:none;max-height:none;border-radius:0;box-shadow:none;z-index:auto}.settings-tab-content .settings-header{display:none!important}.settings-tab-content .settings-content{max-height:calc(90vh - 200px);overflow-y:auto;padding:1.5rem}.settings-tab-content .settings-footer{border-radius:0}.general-settings{padding:2rem}.debug-section h3{margin-bottom:.5rem;color:#2c3e50}.debug-section .settings-description{margin-bottom:1.5rem;color:#7f8c8d}.debug-buttons{display:flex;flex-direction:column;gap:1.5rem}.debug-button-group{padding:1rem;border:1px solid #ddd;border-radius:8px;background-color:#f9f9f9}.debug-button-group h4{margin:0 0 .5rem;color:#2c3e50;font-size:1rem}.debug-button-group p{margin:0 0 1rem;color:#666;font-size:.9rem}.debug-btn{padding:.6rem 1.2rem;border:none;border-radius:6px;font-size:.95rem;cursor:pointer;transition:all .2s}.sample-data-btn{background-color:#3498db;color:#fff}.sample-data-btn:hover{background-color:#2980b9}.clear-data-btn{background-color:#e74c3c;color:#fff}.clear-data-btn:hover{background-color:#c0392b}.help-btn{width:24px;height:24px;border-radius:50%;border:2px solid #3498db;background-color:transparent;color:#3498db;font-weight:700;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;margin-left:.5rem;transition:all .2s}.help-btn:hover{background-color:#3498db;color:#fff}.help-page-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:2rem}.help-page{background-color:#fff;border-radius:12px;max-width:900px;width:100%;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 4px 20px #0003}.help-page-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid #eee}.help-page-header h2{margin:0;font-size:1.3rem;color:#2c3e50}.help-page-content{padding:1.5rem;overflow-y:auto;flex:1}.help-page-content .help-section:first-child{margin-top:0}.help-content{max-width:800px;margin:0 auto}.help-content h3{font-size:1.5rem;color:#2c3e50;margin-bottom:1.5rem;padding-bottom:.75rem;border-bottom:2px solid #3498db}.help-section{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid #eee}.help-section:last-child{border-bottom:none}.help-section h4{font-size:1.1rem;color:#2c3e50;margin-bottom:.75rem;display:flex;align-items:center;gap:.5rem}.help-section h4:before{content:"▶";color:#3498db;font-size:.8rem}.help-section>p{color:#555;line-height:1.6;margin-bottom:1rem}.help-subsection{margin:1rem 0;padding-left:1rem;border-left:3px solid #e0e0e0}.help-subsection h5{font-size:.95rem;color:#34495e;margin-bottom:.5rem}.help-subsection p{color:#666;font-size:.9rem;line-height:1.5;margin-bottom:.5rem}.help-subsection ul,.help-subsection ol{margin:.5rem 0;padding-left:1.5rem;color:#666;font-size:.9rem}.help-subsection li{margin-bottom:.4rem;line-height:1.5}.help-subsection li strong{color:#2c3e50}.help-steps{padding-left:1.5rem;color:#555}.help-steps>li{margin-bottom:1rem}.help-steps>li>strong{display:block;color:#2c3e50;margin-bottom:.3rem}.help-steps>li>p{margin:0;color:#666;font-size:.9rem}.help-table{width:100%;border-collapse:collapse;margin:1rem 0;font-size:.9rem}.help-table th,.help-table td{border:1px solid #ddd;padding:.6rem .8rem;text-align:left}.help-table th{background-color:#f8f9fa;color:#2c3e50;font-weight:600}.help-table td{color:#555}.help-section.help-warning{background-color:#fff8e1;border:1px solid #ffcc02;border-radius:8px;padding:1rem 1.5rem}.help-section.help-warning h4{color:#e65100}.help-section.help-warning h4:before{content:"⚠️"}.help-section.help-warning ul{padding-left:1.5rem;color:#5d4037;margin:0}.help-section.help-warning li{margin-bottom:.5rem;line-height:1.5}.future-settings-list li{padding:.5rem 1rem;background-color:#f8f9fa;border-radius:4px;display:inline-block}.teacher-schedule-settings{padding:1.5rem}.teacher-schedule-settings h3{margin:0 0 .5rem;color:#2c3e50}.settings-description{color:#666;margin-bottom:1.5rem;font-size:.95rem}.url-generator{background-color:#f8f9fa;border-radius:8px;padding:1.5rem;margin-bottom:1.5rem}.url-generator-inputs{display:flex;gap:1rem;margin-bottom:1rem}.url-input-group{display:flex;flex-direction:column;gap:.25rem}.url-input-group label{font-size:.85rem;color:#555;font-weight:700}.url-input-group input,.url-input-group select{padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.95rem;min-width:100px}.generated-url-container{margin-bottom:1rem}.generated-url-container label{display:block;font-size:.85rem;color:#555;font-weight:700;margin-bottom:.25rem}.generated-url{display:flex;gap:.5rem}.generated-url input{flex:1;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:.85rem;background-color:#fff}.copy-url-btn{padding:.75rem 1rem;background-color:#3498db;color:#fff;border:none;border-radius:4px;cursor:pointer;font-weight:700;white-space:nowrap;transition:background-color .2s}.copy-url-btn:hover{background-color:#2980b9}.copy-url-btn.copied{background-color:#27ae60}.url-preview{text-align:right}.preview-link{color:#3498db;font-size:.9rem}.preview-link:hover{text-decoration:underline}.teacher-schedule-notes{background-color:#fff3cd;border:1px solid #ffc107;border-radius:8px;padding:1rem 1.5rem}.teacher-schedule-notes h4{margin:0 0 .75rem;color:#856404}.teacher-schedule-notes ol{margin:0;padding-left:1.5rem;color:#856404}.teacher-schedule-notes li{margin-bottom:.5rem;line-height:1.5}.teacher-schedule-notes li:last-child{margin-bottom:0}.backup-settings{padding:1.5rem}.backup-settings h3{margin:0 0 .5rem;color:#2c3e50}.backup-section{background-color:#f8f9fa;border-radius:8px;padding:1.5rem;margin-bottom:1.5rem}.backup-section h4{margin:0 0 .5rem;color:#2c3e50}.backup-section p{margin:0 0 1rem;color:#666;font-size:.95rem}.backup-includes{margin:0 0 1rem;padding-left:1.5rem;color:#555;font-size:.9rem}.backup-includes li{margin-bottom:.25rem}.backup-btn{padding:.75rem 1.5rem;border:none;border-radius:6px;font-size:1rem;font-weight:700;cursor:pointer;transition:background-color .2s}.export-btn{background-color:#27ae60;color:#fff}.export-btn:hover{background-color:#219a52}.restore-section{background-color:#fff8e1;border:1px solid #ffcc02}.restore-warning{background-color:#fff3cd;color:#856404;padding:.75rem 1rem;border-radius:6px;margin-bottom:1rem;font-size:.9rem}.restore-btn{background-color:#e67e22;color:#fff}.restore-btn:hover:not(:disabled){background-color:#d35400}.restore-btn:disabled{background-color:#bdc3c7;cursor:not-allowed}.backup-message{margin-top:1rem;padding:.75rem 1rem;border-radius:6px;font-size:.95rem}.backup-message.success{background-color:#d4edda;color:#155724;border:1px solid #c3e6cb}.backup-message.error{background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.reload-btn{margin-left:1rem;padding:.4rem .75rem;background-color:#3498db;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.85rem}.reload-btn:hover{background-color:#2980b9}.loading-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000}.loading-content{background-color:#fff;padding:2rem 3rem;border-radius:12px;display:flex;flex-direction:column;align-items:center;gap:1rem;box-shadow:0 4px 20px #0000004d}.loading-spinner{width:50px;height:50px;border:4px solid #f3f3f3;border-top:4px solid #3498db;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-message{font-size:1.1rem;color:#2c3e50;margin:0}.unplaced-slots-panel{background-color:#fff3cd;border:1px solid #ffc107;border-radius:8px;margin-bottom:1rem;overflow:hidden}.unplaced-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background-color:#ffeeba;cursor:pointer;-webkit-user-select:none;user-select:none}.unplaced-header:hover{background-color:#ffe9a0}.unplaced-title{display:flex;align-items:center;gap:.5rem;font-weight:700;color:#856404}.unplaced-icon{font-size:1.2rem}.expand-toggle{background:none;border:none;font-size:.9rem;color:#856404;cursor:pointer;padding:.25rem .5rem}.unplaced-content{padding:1rem;background-color:#fffbf0}.unplaced-period-group{margin-bottom:1rem}.unplaced-period-group:last-child{margin-bottom:0}.unplaced-period-header{font-weight:700;color:#e67e22;margin-bottom:.5rem;padding-bottom:.25rem;border-bottom:1px solid #f4d03f}.unplaced-list{display:flex;flex-direction:column;gap:.5rem}.unplaced-item{display:flex;align-items:center;gap:1rem;padding:.5rem .75rem;background-color:#fff;border:1px solid #eee;border-radius:4px}.unplaced-student{font-weight:500;color:#2c3e50;min-width:100px}.unplaced-subject{background-color:#3498db;color:#fff;padding:.15rem .5rem;border-radius:3px;font-size:.85rem}.unplaced-count{color:#666;font-size:.9rem}.unplaced-remaining{color:#e74c3c;font-weight:500}.unplaced-slots-panel.all-placed{background-color:#d4edda;border-color:#28a745}.unplaced-slots-panel.all-placed .unplaced-header{background-color:#c3e6cb;cursor:default}.unplaced-slots-panel.all-placed .unplaced-title{color:#155724}.unplaced-slots-panel.all-placed .unplaced-icon{color:#28a745}.unplaced-slots-panel.all-placed .unplaced-content{background-color:#e8f5e9}.all-placed-message{text-align:center;color:#155724;padding:.5rem}.unplaced-section{margin-bottom:1.5rem}.unplaced-section:last-child{margin-bottom:0}.unplaced-section-header{display:flex;align-items:center;gap:.5rem;font-weight:700;color:#2c3e50;margin-bottom:.75rem;padding-bottom:.5rem;border-bottom:2px solid #ddd}.section-badge{display:inline-block;padding:.2rem .5rem;border-radius:4px;font-size:.75rem;font-weight:700;color:#fff}.section-badge.regular{background-color:#27ae60}.section-badge.lecture{background-color:#1976d2}.slot-status-section{margin-bottom:1.5rem;padding:1rem;border-radius:8px}.slot-status-section:last-child{margin-bottom:0}.slot-status-section-header{display:flex;align-items:center;gap:.75rem;font-weight:700;font-size:1rem;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:2px solid currentColor}.deficit-section{background-color:#fff8e1;border:1px solid #ffc107}.deficit-section .slot-status-section-header{color:#856404;border-bottom-color:#ffc107}.excess-section{background-color:#ffebee;border:1px solid #e57373}.excess-section .slot-status-section-header{color:#c62828;border-bottom-color:#e57373}.status-badge{display:inline-block;padding:.25rem .75rem;border-radius:4px;font-size:.85rem;font-weight:700;color:#fff}.status-badge.deficit{background-color:#f59e0b}.status-badge.excess{background-color:#dc2626}.unplaced-remaining.deficit{color:#d97706;font-weight:500}.unplaced-remaining.excess{color:#dc2626;font-weight:500}.unplaced-item.excess{background-color:#ffebee;border-color:#ffcdd2}.unplaced-slots-panel.has-excess{border-color:#e57373}.unplaced-slots-panel.has-deficit.has-excess{border-color:#ff9800}.teacher-submission-container{min-height:100vh;background-color:#f5f5f5;display:flex;justify-content:center;align-items:flex-start;padding:2rem}.teacher-submission-login{background-color:#fff;border-radius:12px;box-shadow:0 4px 20px #0000001a;padding:2rem;max-width:400px;width:100%;margin-top:4rem}.teacher-submission-login h1{margin:0 0 .5rem;color:#2c3e50;font-size:1.5rem;text-align:center}.submission-month-info{text-align:center;color:#666;margin-bottom:2rem;font-size:.95rem}.login-form{display:flex;flex-direction:column;gap:1rem}.login-field{display:flex;flex-direction:column;gap:.5rem}.login-field label{font-weight:700;color:#555;font-size:.9rem}.login-field input{padding:.75rem;border:1px solid #ddd;border-radius:6px;font-size:1rem}.login-field input:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db33}.login-error{background-color:#ffebee;color:#c62828;padding:.75rem;border-radius:6px;font-size:.9rem;text-align:center}.login-btn{background-color:#3498db;color:#fff;border:none;padding:.75rem;border-radius:6px;font-size:1rem;font-weight:700;cursor:pointer;margin-top:.5rem}.login-btn:hover{background-color:#2980b9}.teacher-submission-page{background-color:#fff;border-radius:12px;box-shadow:0 4px 20px #0000001a;max-width:900px;width:100%}.submission-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid #eee;background-color:#2c3e50;color:#fff;border-radius:12px 12px 0 0}.submission-header-left{display:flex;align-items:center;gap:1rem}.submission-header h1{margin:0;font-size:1.25rem}.submission-teacher-name{background-color:#fff3;padding:.25rem .75rem;border-radius:4px;font-size:.9rem}.logout-btn{background-color:transparent;border:1px solid rgba(255,255,255,.5);color:#fff;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.85rem}.logout-btn:hover{background-color:#ffffff1a}.submission-content{padding:1.5rem}.submission-month-header{margin-bottom:1rem}.submission-month-header h2{margin:0;color:#2c3e50;font-size:1.25rem}.submission-legend{display:flex;gap:1.5rem;margin-bottom:1rem;padding:.75rem 1rem;background-color:#f8f9fa;border-radius:6px}.legend-item{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.legend-circle{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;color:#fff;font-weight:700;font-size:.8rem}.bulk-actions{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.bulk-label{font-weight:700;color:#555;font-size:.85rem}.bulk-btn{padding:.4rem .75rem;border:none;border-radius:4px;cursor:pointer;font-size:.85rem;font-weight:700}.bulk-btn.available{background-color:#e8f5e9;color:#2e7d32}.bulk-btn.available:hover{background-color:#c8e6c9}.bulk-btn.negotiable{background-color:#fff3e0;color:#e65100}.bulk-btn.negotiable:hover{background-color:#ffe0b2}.bulk-btn.unavailable{background-color:#f5f5f5;color:#616161}.bulk-btn.unavailable:hover{background-color:#e0e0e0}.day-of-week-actions{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}.day-of-week-group{display:flex;align-items:center;gap:.25rem;background-color:#f8f9fa;padding:.25rem .5rem;border-radius:4px}.day-name{font-size:.8rem;color:#555;min-width:1.5rem;text-align:center}.day-btn{width:24px;height:24px;padding:0;border:none;border-radius:4px;cursor:pointer;font-size:.75rem;font-weight:700}.day-btn.available{background-color:#e8f5e9;color:#2e7d32}.day-btn.available:hover{background-color:#c8e6c9}.day-btn.unavailable{background-color:#f5f5f5;color:#616161}.day-btn.unavailable:hover{background-color:#e0e0e0}.submission-calendar{overflow-x:auto;margin-bottom:1.5rem}.schedule-table{width:100%;border-collapse:collapse;font-size:.9rem}.schedule-table th,.schedule-table td{border:1px solid #ddd;padding:.5rem;text-align:center}.schedule-table th{background-color:#2c3e50;color:#fff;font-weight:700}.date-header{width:100px}.time-header{font-size:.8rem;line-height:1.3}.date-cell{background-color:#f8f9fa;font-weight:700}.day-number{font-size:1rem;margin-right:.25rem}.day-of-week{font-size:.8rem;color:#666}.day-of-week.sunday{color:#e53935}.day-of-week.saturday{color:#1565c0}.schedule-table tr.sunday .date-cell{background-color:#ffebee}.schedule-table tr.saturday .date-cell{background-color:#e3f2fd}.status-cell{cursor:pointer;transition:background-color .2s,transform .1s;-webkit-user-select:none;user-select:none}.status-cell:hover{transform:scale(1.05)}.status-cell:active{transform:scale(.95)}.status-icon{font-size:1.25rem;font-weight:700}.submission-actions{display:flex;justify-content:center;align-items:center;gap:1rem;flex-direction:column}.submission-status{display:flex;align-items:center;gap:.5rem;padding:1rem 1.5rem;border-radius:8px;margin-bottom:1.5rem;font-weight:700}.submission-status.submitted{background-color:#e8f5e9;color:#2e7d32;border:2px solid #4caf50}.submission-status.not-submitted{background-color:#fff3e0;color:#e65100;border:2px solid #ff9800}.submission-status .status-icon{font-size:1.25rem}.unsaved-warning{background-color:#fff3e0;color:#e65100;padding:.75rem 1.5rem;border-radius:6px;font-weight:700;border:1px solid #ff9800}.save-success-message{background-color:#e8f5e9;color:#2e7d32;padding:.75rem 1.5rem;border-radius:6px;font-weight:700}.save-btn{background-color:#27ae60;color:#fff;border:none;padding:1rem 3rem;border-radius:8px;font-size:1.1rem;font-weight:700;cursor:pointer;transition:background-color .2s}.save-btn:hover:not(:disabled){background-color:#219a52}.save-btn:disabled{background-color:#bdc3c7;cursor:not-allowed}.save-btn.has-changes{background-color:#e67e22;animation:pulse-orange 2s infinite}.save-btn.has-changes:hover{background-color:#d35400}@keyframes pulse-orange{0%,to{box-shadow:0 0 #e67e2266}50%{box-shadow:0 0 0 10px #e67e2200}}.submission-calendar{margin:0}.submission-calendar .schedule-calendar-grid{max-height:none}
