.container{max-width:1400px;margin:0 auto}.loading-spinner{border:4px solid #e5e7eb;border-top-color:#3b82f6;border-radius:50%;width:40px;height:40px;margin:0 auto;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.control-panel{background:#fff;border-radius:.75rem;margin-bottom:1.5rem;padding:1.5rem;box-shadow:0 4px 6px #0000001a}.control-panel-compact{background:#fff;border-radius:.5rem;padding:.75rem;box-shadow:0 2px 4px #0000001a}.teacher-select-compact{background:#fff;border:1px solid #d1d5db;border-radius:.25rem;min-width:100px;padding:.25rem .5rem;font-size:.875rem}.period-select-compact{background:#fff;border:1px solid #d1d5db;border-radius:.25rem;min-width:45px;padding:.25rem .5rem;font-size:.875rem}.btn-compact{cursor:pointer;border:none;border-radius:.25rem;align-items:center;gap:.25rem;padding:.375rem .75rem;font-size:.875rem;font-weight:500;transition:all .2s;display:inline-flex}.btn-add-compact{color:#fff;cursor:pointer;background:#10b981;border:none;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;transition:all .2s}.btn-add-compact:hover{background:#059669}.btn-remove-compact{color:#fff;cursor:pointer;background:#ef4444;border:none;border-radius:.25rem;padding:.125rem .375rem;font-size:.875rem;line-height:1;transition:all .2s}.btn-remove-compact:hover{background:#dc2626}.control-group{margin-bottom:1rem}.control-group label{color:#374151;margin-bottom:.5rem;font-weight:500;display:block}.control-group-horizontal{align-items:center;gap:.5rem;margin-bottom:1rem;display:flex}.control-group-horizontal label{color:#374151;font-weight:500}.absent-teacher-row{align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.teacher-select{background:#fff;border:1px solid #d1d5db;border-radius:.375rem;min-width:150px;padding:.5rem}.number-select{min-width:60px}.period-range{align-items:center;gap:.5rem;display:flex}.btn{cursor:pointer;border:none;border-radius:.375rem;align-items:center;gap:.5rem;padding:.5rem 1rem;font-weight:500;transition:all .2s;display:inline-flex}.primary-btn{color:#fff;background:#3b82f6}.primary-btn:hover{background:#2563eb}.history-btn{color:#fff;background:#8b5cf6}.history-btn:hover{background:#7c3aed}.add-btn{color:#fff;background:#10b981}.add-btn:hover{background:#059669}.danger-btn{color:#fff;background:#ef4444;padding:.25rem .5rem;font-size:1.25rem;line-height:1}.danger-btn:hover{background:#dc2626}.status-message{border-radius:.5rem;margin-bottom:1rem;padding:.75rem 1rem;font-weight:500;animation:.3s ease-out slideIn}.status-message.success{color:#065f46;background:#d1fae5;border:1px solid #10b981}.status-message.error{color:#991b1b;background:#fee2e2;border:1px solid #ef4444}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.schedule-table-container{background:#fff;border-radius:.75rem;flex-direction:column;height:100%;padding:1.5rem;display:flex;box-shadow:0 4px 6px #0000001a}.schedule-table{border-collapse:collapse;table-layout:fixed;width:100%;height:100%}.schedule-table th,.schedule-table td{text-align:center;border:1px solid #d1d5db;padding:.75rem}.schedule-table tbody tr{height:1fr}.schedule-table thead{color:#1f2937;background:#fff}.period-header{border-right:1px solid #fff6;padding:.5rem;font-weight:600}.class-header{border-right:1px solid #fff6;padding:.5rem;font-weight:500}.period-cell{color:#374151;background:#f3f4f6;border-right:2px solid #d1d5db;font-weight:600}.table-cell{transition:all .2s;position:relative}.table-cell:hover{background:#f3f4f6}.table-cell.absent-teacher{position:relative}.table-cell.absent-teacher:after{content:"";pointer-events:none;background:#ef444433;border:2px solid #ef4444;position:absolute;inset:0}.table-cell.reassigned{position:relative}.table-cell.reassigned:after{content:"";pointer-events:none;background:#fbbf2433;border:2px solid #f59e0b;position:absolute;inset:0}.table-cell.changed-subject{position:relative}.table-cell.changed-subject:after{content:"";pointer-events:none;background:#ec489933;border:2px solid #ec4899;position:absolute;inset:0}.subject{font-size:1.125rem;font-weight:700}.teacher-name{opacity:.9;margin-top:.25rem;font-size:.875rem}.legend-item{align-items:center;gap:.5rem;display:flex}.legend-color{border:1px solid #d1d5db;border-radius:.25rem;width:20px;height:20px}.legend-color.absent-teacher{background:#fee2e2}.legend-color.reassigned{background:#fef3c7}.legend-color.changed-subject{background:#fce7f3}.modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-content{background:#fff;border-radius:.75rem;flex-direction:column;width:90%;max-width:800px;max-height:80vh;display:flex;overflow:hidden}.modal-header{border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:1.5rem;display:flex}.modal-header h2{color:#1f2937;font-size:1.5rem;font-weight:600}.close-button{color:#6b7280;cursor:pointer;background:0 0;border:none;border-radius:.375rem;justify-content:center;align-items:center;width:32px;height:32px;font-size:1.5rem;transition:all .2s;display:flex}.close-button:hover{color:#1f2937;background:#f3f4f6}.modal-body{flex:1;padding:1.5rem;overflow-y:auto}.history-list{space-y:1rem}.history-item{border:1px solid #e5e7eb;border-radius:.5rem;margin-bottom:1rem;padding:1rem}.history-header{border-bottom:1px solid #e5e7eb;justify-content:space-between;margin-bottom:.75rem;padding-bottom:.75rem;display:flex}.history-date{color:#1f2937;font-weight:600}.history-teacher{color:#6b7280}.history-changes{space-y:.5rem}.change-item{background:#f9fafb;border-radius:.25rem;gap:1rem;padding:.5rem;display:flex}.change-period{color:#1f2937;min-width:60px;font-weight:500}.change-class{color:#3b82f6;min-width:60px;font-weight:500}.change-subject{color:#ef4444;flex:1}.change-teacher{color:#6b7280;flex:1}.matrix-container{overflow-x:auto}.matrix-table{border-collapse:collapse;width:100%}.matrix-table th,.matrix-table td{text-align:center;border:1px solid #e5e7eb;padding:.5rem}.matrix-header-corner{background:#f3f4f6;font-weight:600}.matrix-header{background:#f9fafb;font-weight:500}.matrix-row-header{text-align:left;background:#f9fafb;font-weight:500}.matrix-cell{background:#fff}.matrix-cell.has-changes{background:#fef3c7;font-weight:600}
