*{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-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}.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:#e3f2fd;border:1px solid #90caf9;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:80px;border-right:1px solid #ddd;padding:.25rem;background-color:#fff}.week-day-cell.empty{background-color:#f9f9f9}.week-day-cell:last-child{border-right:none}.calendar-slot-compact{background-color:#e3f2fd;border:1px solid #90caf9;border-radius:3px;padding:.25rem;margin-bottom:.25rem;font-size:.7rem}.slot-teacher-compact{font-weight:700;color:#1976d2;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}.day-navigation button:hover{background-color:#2980b9}.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 #ddd}.day-teacher-row:last-child{border-bottom:none}.day-teacher-name{background-color:#ecf0f1;font-weight:700;padding:.75rem;border-right:1px solid #ddd;display:flex;align-items:center}.day-time-cell{min-height:100px;border-right:1px solid #ddd;padding:.5rem;background-color:#fff}.day-time-cell:last-child{border-right:none}.day-slot{background-color:#e3f2fd;border:1px solid #90caf9;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-direction:column;gap:.25rem}.teacher-name{font-size:1.1rem}.teacher-affiliation{font-size:.85rem;color:#666}.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}
