.schedule-table-container{overflow-x:auto;border-radius:8px;box-shadow:0 2px 8px #00000014}.schedule-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.9rem}.schedule-table th{background:linear-gradient(135deg,var(--primary-color) 0%,#2563eb 100%);color:#fff;padding:1rem;text-align:center;font-weight:600;position:sticky;top:0;z-index:10;border-bottom:3px solid #1e40af;text-transform:uppercase;letter-spacing:.5px;font-size:.85rem}.schedule-table th:first-child{border-top-left-radius:8px}.schedule-table th:last-child{border-top-right-radius:8px}.schedule-table td{border:1px solid #e5e7eb;padding:.5rem;text-align:center;vertical-align:middle;min-height:100px;background-color:#fff;transition:background-color .2s ease}.schedule-table td:hover{background-color:#f9fafb}.time-column{background:linear-gradient(to right,#f8f9fa,#fff);font-weight:500;min-width:90px;border-right:2px solid #e5e7eb;position:sticky;left:0;z-index:5}.lesson-number{font-size:1.2rem;font-weight:700;color:#1f2937;background:linear-gradient(135deg,#3b82f6,#2563eb);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.lesson-time{font-size:.75rem;color:#6b7280;margin-top:.25rem;font-weight:500}.schedule-cell{min-width:140px;height:100px;padding:.4rem}.schedule-entry{padding:.75rem;border-radius:8px;color:#fff;font-weight:500;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.4rem;box-shadow:0 2px 8px #00000026;transition:all .2s ease;cursor:pointer;position:relative;overflow:visible}.schedule-entry.has-substitution{box-shadow:0 0 0 3px #ff9800 inset,0 2px 8px #00000026}.substitution-badge{position:absolute;top:-8px;right:-8px;background:#ff9800;color:#fff;font-size:9px;font-weight:700;padding:3px 8px;border-radius:10px;text-transform:uppercase;letter-spacing:.3px;box-shadow:0 2px 6px #ff980066;z-index:10;white-space:nowrap}.schedule-entry:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg,#ffffff1a,#fff0);pointer-events:none}.schedule-entry:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000040}.entry-header{display:flex;align-items:center;justify-content:space-between;width:100%;gap:.5rem;margin-bottom:.25rem}.entry-subject-code{font-size:1.1rem;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.1)}.entry-subject-name{font-size:.9rem;opacity:1;font-weight:600;text-align:center;line-height:1.3;text-shadow:0 1px 2px rgba(0,0,0,.15);letter-spacing:.3px}.entry-room-badge{background:#ffffff40;padding:.15rem .4rem;border-radius:4px;font-size:.7rem;font-weight:600;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);white-space:nowrap}.entry-teacher,.entry-class{font-size:.85rem;opacity:.95;display:flex;align-items:center;gap:.3rem;background:#fff3;padding:.2rem .5rem;border-radius:12px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.teacher-substitution{display:flex;align-items:center;gap:.35rem;font-size:.8rem}.teacher-substitution .original-teacher{text-decoration:line-through;opacity:.7;font-style:italic}.teacher-substitution .arrow{font-size:1rem;font-weight:700;opacity:.95;margin:0 .1rem}.teacher-substitution .substitute-teacher{font-weight:700}.teacher-icon,.class-icon{font-size:.9rem}.empty-cell{color:#d1d5db;font-size:1.5rem;font-weight:300;opacity:.5}.schedule-detail-modal{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fadeIn .2s ease}.modal-content{background:#fff;border-radius:16px;padding:2rem;max-width:500px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:0 20px 60px #0000004d;animation:slideUp .3s ease;position:relative}.modal-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:2px solid #e5e7eb}.modal-title{font-size:1.5rem;font-weight:700;color:#1f2937;margin:0}.modal-close{background:#f3f4f6;border:none;width:32px;height:32px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1.2rem;color:#6b7280;transition:all .2s ease}.modal-close:hover{background:#e5e7eb;color:#1f2937;transform:rotate(90deg)}.modal-body{display:flex;flex-direction:column;gap:1rem}.modal-info-card{background:#f9fafb;border-radius:12px;padding:1rem;border-left:4px solid var(--primary-color)}.modal-info-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.5px;color:#6b7280;font-weight:600;margin-bottom:.5rem}.modal-info-value{font-size:1.1rem;color:#1f2937;font-weight:600;display:flex;align-items:center;gap:.5rem}.modal-info-secondary{font-size:.9rem;color:#6b7280;margin-top:.25rem}.modal-subject-header{padding:1.5rem;border-radius:12px;color:#fff;text-align:center;margin-bottom:1.5rem;box-shadow:0 4px 12px #00000026}.modal-subject-code{font-size:2rem;font-weight:700;margin-bottom:.5rem;text-shadow:0 2px 4px rgba(0,0,0,.2)}.modal-subject-name{font-size:1.2rem;font-weight:500;opacity:.95}.schedule-page{max-width:1400px;margin:0 auto;padding:20px}.page-header{margin-bottom:2rem;text-align:center}.page-header h2{color:#2c3e50;margin-bottom:.5rem}.page-header p{color:#7f8c8d;font-size:1.1rem}.schedule-toggle{display:flex;gap:.5rem;justify-content:center;margin-top:1rem}.schedule-toggle .toggle-btn{padding:.6rem 1.2rem;border:2px solid #ddd;background:#fff;border-radius:6px;cursor:pointer;font-weight:500;font-size:14px;transition:all .2s}.schedule-toggle .toggle-btn:hover{border-color:#667eea;background:#f8f9ff}.schedule-toggle .toggle-btn.active{border-color:#667eea;background:#667eea;color:#fff}.view-toggle{display:flex;gap:10px;margin-bottom:20px}.view-toggle button{padding:10px 20px;border:2px solid #3498db;background:#fff;color:#3498db;border-radius:5px;cursor:pointer;font-size:14px;font-weight:500;transition:all .2s}.view-toggle button.active{background:#3498db;color:#fff}.view-toggle button:hover:not(.active){background:#e8f4f8}.filter-group{margin-bottom:20px}.filter-group label{display:block;font-weight:600;margin-bottom:8px;color:#2c3e50}.multi-select{position:relative;width:100%}.multi-select-trigger{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border:1px solid #ddd;border-radius:5px;background:#fff;cursor:pointer;min-height:42px}.multi-select-trigger:hover{border-color:#3498db}.selected-items{display:flex;flex-wrap:wrap;gap:5px;flex:1}.selected-chip{background:#3498db;color:#fff;padding:3px 8px;border-radius:3px;font-size:13px;display:flex;align-items:center;gap:5px}.selected-chip .remove{cursor:pointer;font-weight:700;opacity:.8}.selected-chip .remove:hover{opacity:1}.multi-select-dropdown{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #ddd;border-radius:5px;margin-top:4px;max-height:300px;overflow-y:auto;box-shadow:0 4px 6px #0000001a;z-index:100}.multi-select-option{padding:10px 12px;cursor:pointer;display:flex;align-items:center;gap:8px}.multi-select-option:hover{background:#f8f9fa}.multi-select-option input[type=checkbox]{cursor:pointer}.schedule-grid-container{overflow-x:auto;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a}.schedule-grid{display:grid;grid-template-columns:120px repeat(5,minmax(150px,1fr));gap:1px;background:#ddd;border:1px solid #ddd;min-width:900px}.schedule-grid.with-saturday{grid-template-columns:120px repeat(6,minmax(150px,1fr));min-width:1050px}.grid-header{background:#34495e;color:#fff;padding:12px;font-weight:600;text-align:center;position:sticky;top:0;z-index:10}.grid-header.time-header{background:#2c3e50}.time-slot-label{background:#ecf0f1;padding:12px;font-weight:600;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border-right:2px solid #bdc3c7}.time-slot-label .lesson-number{font-size:16px;color:#2c3e50}.time-slot-label .time-range{font-size:12px;color:#7f8c8d;margin-top:4px}.day-cell{background:#fff;min-height:80px;padding:6px;display:flex;flex-direction:column;gap:4px;position:relative}.day-cell.empty{justify-content:center;align-items:center}.day-cell.empty:hover{background:#f8f9fa}.schedule-entry-card{background:#fff;border:2px solid #3498db;border-radius:4px;padding:6px;cursor:pointer;transition:all .2s;font-size:13px;position:relative}.schedule-entry-card:hover{transform:translateY(-2px);box-shadow:0 2px 4px #00000026}.schedule-entry-card.has-conflict{border-color:#e74c3c;border-width:3px}.entry-card-class{font-weight:700;color:#2c3e50;margin-bottom:3px}.entry-card-details{display:flex;flex-wrap:wrap;gap:6px;color:#34495e;font-size:12px}.entry-card-detail{display:flex;align-items:center;gap:3px}.entry-card-room{color:#7f8c8d;font-size:11px;margin-top:2px}.add-entry-button{position:absolute;bottom:4px;right:4px;background:transparent;border:1px solid #bdc3c7;border-radius:3px;width:24px;height:24px;cursor:pointer;color:#95a5a6;font-size:16px;line-height:1;transition:all .2s;display:flex;align-items:center;justify-content:center;padding:0}.day-cell.empty .add-entry-button{position:static;width:100%;height:100%;font-size:32px;border:2px dashed #bdc3c7;border-radius:4px}.add-entry-button:hover{border-color:#3498db;color:#3498db;background:#f8f9fa}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.quick-entry-modal{background:#fff;border-radius:8px;padding:24px;max-width:500px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:0 8px 16px #0003;animation:slideUp .3s}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid #ecf0f1}.modal-header h3{margin:0;color:#2c3e50}.modal-close{background:none;border:none;font-size:24px;color:#95a5a6;cursor:pointer;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s}.modal-close:hover{background:#ecf0f1;color:#2c3e50}.modal-info{background:#e8f4f8;padding:12px;border-radius:5px;margin-bottom:20px;color:#2c3e50;font-size:14px}.modal-form{display:flex;flex-direction:column;gap:16px}.modal-actions{display:flex;gap:10px;margin-top:20px}.modal-actions button{flex:1;padding:12px;border:none;border-radius:5px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.modal-actions .btn-primary{background:#3498db;color:#fff}.modal-actions .btn-primary:hover{background:#2980b9}.modal-actions .btn-danger{background:#e74c3c;color:#fff}.modal-actions .btn-danger:hover{background:#c0392b}.modal-actions .btn-secondary{background:#ecf0f1;color:#2c3e50}.modal-actions .btn-secondary:hover{background:#bdc3c7}@media (max-width: 768px){.schedule-grid-container{margin:0 -20px}.schedule-grid{font-size:12px}.time-slot-label{padding:8px}.schedule-entry-card{padding:4px;font-size:11px}.desktop-only{display:none}.mobile-only{display:block}}@media (min-width: 769px){.desktop-only{display:block}.mobile-only{display:none}}.overview-page{max-width:1200px;margin:0 auto}.overview-grid{display:grid;gap:2rem}.overview-section h3{margin-bottom:1.5rem;color:var(--text-dark);font-size:1.5rem}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1rem}.overview-card{background:var(--card-bg);border-radius:8px;padding:1.5rem;text-align:center;text-decoration:none;color:var(--text-dark);box-shadow:var(--shadow);transition:all .3s;display:flex;flex-direction:column;justify-content:center;min-height:100px}.overview-card:hover{transform:translateY(-4px);box-shadow:0 4px 12px #00000026}.card-title{font-size:1.5rem;font-weight:600;color:var(--primary-color);margin-bottom:.5rem}.card-subtitle{font-size:.9rem;color:var(--text-light)}.empty-message{color:var(--text-light);font-style:italic;padding:2rem;text-align:center;background:var(--card-bg);border-radius:8px;border:2px dashed #ddd}.error-message{color:#e74c3c;padding:1rem;background:#fef5f5;border-radius:8px;border-left:4px solid #e74c3c}.substitution-plan-page{padding:20px;max-width:1400px;margin:0 auto}.page-header h2{font-size:28px;color:#2c3e50;margin-bottom:10px}.controls{display:flex;gap:20px;align-items:center;margin-bottom:20px;flex-wrap:wrap;padding:15px;background:#f8f9fa;border-radius:8px}.date-selector,.selector{display:flex;gap:10px;align-items:center}.date-selector label,.selector label{font-weight:500;color:#2c3e50;white-space:nowrap}.date-selector input,.selector select{padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px}.date-nav-btn{padding:8px 12px;background:#667eea;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:700;transition:all .2s}.date-nav-btn:hover{background:#5568d3;transform:scale(1.05)}.date-nav-btn:active{transform:scale(.98)}.btn-clear-filter{padding:10px 20px;background:#e74c3c;color:#fff;border:none;border-radius:6px;cursor:pointer;font-weight:500;transition:all .2s ease}.btn-clear-filter:hover{background:#c0392b;transform:translateY(-1px);box-shadow:0 2px 6px #e74c3c4d}.selector{min-width:250px}.substitution-info{margin-bottom:20px}.info-message{padding:12px 16px;border-radius:6px;font-weight:500}.info-warning{background:#fff3cd;color:#856404;border:1px solid #ffeaa7}.info-success{background:#d4edda;color:#155724;border:1px solid #c3e6cb}.substitution-table{width:100%;border-collapse:collapse;background:#fff;box-shadow:0 2px 8px #0000001a;border-radius:8px;overflow:hidden}.substitution-table thead{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.substitution-table th{padding:15px;text-align:left;font-weight:600}.substitution-table td{padding:12px 15px;border-bottom:1px solid #f0f0f0}.substitution-table tbody tr:last-child td{border-bottom:none}.substitution-table tbody tr:hover{background:#f8f9fa}.substitution-table tr.has-substitution{background:#fff9e6}.substitution-table tr.has-substitution:hover{background:#fff3d1}.substitution-table tr.empty-slot{opacity:.5}.lesson-number{font-weight:600;color:#2c3e50}.time-range{color:#7f8c8d;font-size:inherit}.original{text-decoration:line-through;opacity:.6;color:#e74c3c}.substitute{font-weight:600;color:#27ae60}.substitution-note{color:#f39c12;font-weight:500;font-style:italic}.btn-print{padding:10px 20px;background:#3498db;color:#fff;border:none;border-radius:6px;cursor:pointer;font-weight:500;font-size:14px;transition:all .2s ease;display:flex;align-items:center;gap:8px;white-space:nowrap}.btn-print:hover{background:#2980b9;transform:translateY(-1px);box-shadow:0 2px 6px #3498db4d}.btn-print:active{transform:translateY(0)}.print-date{display:none;font-size:16px;color:#2c3e50;margin-top:8px;font-weight:500}.substitution-table .no-substitutions{text-align:center;padding:40px;color:#7f8c8d;font-size:16px}.day-name{font-weight:600;color:var(--primary-color);font-size:1.1rem}.no-substitutions{text-align:center;padding:3rem;font-size:1.2rem;color:var(--secondary-color)}.substitutions-list{display:flex;flex-direction:column;gap:1rem}.substitution-card{border-left:4px solid var(--primary-color)}.sub-replacement{border-left-color:var(--warning-color)}.sub-cancellation{border-left-color:var(--danger-color);background-color:#fff5f5}.sub-room-change{border-left-color:var(--primary-color)}.sub-subject-change{border-left-color:var(--secondary-color)}.sub-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--border-color)}.sub-type{font-weight:600;font-size:1.1rem;color:var(--text-dark)}.sub-time{color:var(--text-light);font-size:.9rem}.sub-details{display:flex;flex-direction:column;gap:.5rem}.sub-row{display:flex;gap:.5rem}.sub-notes{margin-top:.75rem;padding:.75rem;background-color:#f8f9fa;border-radius:4px;color:var(--text-dark);font-style:italic}@media print{*{box-sizing:border-box}body{background:#fff!important;margin:0!important;padding:0!important;height:auto!important;overflow:visible!important}.app{min-height:auto!important;margin:0!important;padding:0!important}.main-content{max-width:100%!important;margin:0!important;padding:0!important}.substitution-plan-page{max-width:100%;padding:0!important;margin:0!important;height:auto!important}.page-header{margin:0 0 12px!important;padding:0!important;page-break-after:avoid!important}.page-header h2{font-size:24px;color:#000;margin:0 0 4px!important;padding:0!important}.print-date{display:block!important;font-size:14px;color:#000;margin:0!important;padding:0!important}.controls,.substitution-info,.btn-print,nav,header,footer,.no-substitutions{display:none!important;height:0!important;margin:0!important;padding:0!important;overflow:hidden!important}.substitution-table{box-shadow:none;border:2px solid #333;width:100%;border-collapse:collapse;margin:0!important;padding:0!important;page-break-after:auto!important}.substitution-table thead{background:#333!important;color:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.substitution-table th{padding:9px 7px!important;font-size:12px;border:1px solid #333}.substitution-table td{padding:7px 6px!important;border:1px solid #666;color:#000;font-size:11px}.substitution-table tbody tr:hover{background:transparent!important}.substitution-table tr.has-substitution{background:#fafafa!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.original{text-decoration:line-through;color:#666!important}.substitute{font-weight:700;color:#000!important}.substitution-note{color:#000!important;font-weight:500}.lesson-number{font-weight:700;color:#000}.time-range{color:#333}.substitution-table tbody,.substitution-table thead,.substitution-table tr,.page-header{page-break-inside:avoid!important;break-inside:avoid!important}@page{margin:1cm;size:A4}}.admin-page{max-width:1400px;margin:0 auto;padding:20px}.page-header{margin-bottom:30px}.page-header h2{font-size:28px;font-weight:600;margin-bottom:8px;color:#2c3e50}.page-header p{color:#7f8c8d;font-size:16px}.admin-tabs{display:flex;gap:10px;margin-bottom:30px;border-bottom:2px solid #ecf0f1;padding-bottom:0}.admin-tabs button{padding:12px 24px;background:none;border:none;font-size:15px;font-weight:500;color:#7f8c8d;cursor:pointer;border-bottom:3px solid transparent;transition:all .2s;position:relative;bottom:-2px}.admin-tabs button:hover{color:#2c3e50;background-color:#f8f9fa}.admin-tabs button.active{color:#3498db;border-bottom-color:#3498db}.manager-section{background:#fff;border-radius:8px;padding:24px;box-shadow:0 2px 4px #0000001a}.schedule-content{width:100%}.schedule-with-sidebar{display:flex;gap:12px;align-items:flex-start;margin-top:16px}.schedule-table-wrapper{flex:1;min-width:0}.btn-toggle-workload{flex-shrink:0;width:40px;height:40px;padding:0;background:#3498db;color:#fff;border:none;border-radius:6px;font-size:18px;cursor:pointer;transition:all .2s;box-shadow:0 2px 4px #0000001a;align-self:flex-start;margin-top:0}.btn-toggle-workload:hover{background:#2980b9;transform:translateY(-1px);box-shadow:0 3px 6px #00000026}.btn-toggle-workload.active{background:#e74c3c}.btn-toggle-workload.active:hover{background:#c0392b}.workload-sidebar{width:280px;flex-shrink:0;background:#f8f9fa;padding:16px;border-radius:6px;border:1px solid #e1e8ed;align-self:flex-start}.workload-sidebar h4{font-size:14px;font-weight:600;color:#2c3e50;margin-bottom:16px;padding-bottom:8px;border-bottom:2px solid #e1e8ed}.workload-list{display:flex;flex-direction:column;gap:12px}.workload-item{background:#fff;border-radius:6px;padding:10px;border:1px solid #e1e8ed;transition:all .2s}.workload-item.partial{background:#e8f5e9;border-color:#a5d6a7}.workload-item.full{background:#fff3e0;border-color:#ffb74d}.workload-item.over-full{background:#ffebee;border-color:#ef9a9a}.workload-item:hover{box-shadow:0 2px 6px #00000014}.workload-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.workload-numbers-small{font-size:13px;font-weight:600;color:#2c3e50}.workload-bar-small{height:4px;background:#ecf0f1;border-radius:2px;overflow:hidden;margin-bottom:6px}.workload-fill{height:100%;transition:width .3s ease;border-radius:2px}.workload-fill.low{background:#2ecc71}.workload-fill.medium{background:#f39c12}.workload-fill.high{background:#e67e22}.workload-fill.over{background:#e74c3c}.workload-item-footer{display:flex;justify-content:space-between;align-items:center;font-size:11px}.teacher-name-small{color:#7f8c8d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}.percentage-small{font-weight:600;color:#2c3e50}.percentage-small.over{color:#e74c3c}.manager-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.manager-header h3{font-size:20px;font-weight:600;color:#2c3e50}.header-actions{display:flex;gap:12px;align-items:center}.workload-overview{background:#f8f9fa;padding:20px;border-radius:8px;margin-bottom:24px;border:1px solid #e1e8ed}.workload-overview h4{font-size:16px;font-weight:600;color:#2c3e50;margin-bottom:16px}.workload-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.workload-card{background:#fff;border-radius:6px;padding:16px;border:1px solid #e1e8ed;transition:box-shadow .2s}.workload-card:hover{box-shadow:0 2px 8px #0000001a}.workload-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.teacher-info{display:flex;align-items:center;gap:8px}.teacher-code{background:#3498db;color:#fff;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:600}.teacher-name{font-size:14px;font-weight:500;color:#2c3e50}.workload-numbers{display:flex;align-items:baseline;gap:4px;font-size:18px;font-weight:600}.workload-numbers .assigned{color:#2c3e50}.workload-numbers .separator{color:#95a5a6}.workload-numbers .max{color:#7f8c8d;font-size:14px}.workload-bar-container{height:8px;background:#ecf0f1;border-radius:4px;overflow:hidden;position:relative;margin-bottom:8px}.workload-bar{height:100%;transition:width .3s ease;border-radius:4px}.workload-bar.low{background:linear-gradient(90deg,#2ecc71,#27ae60)}.workload-bar.medium{background:linear-gradient(90deg,#f39c12,#e67e22)}.workload-bar.high{background:linear-gradient(90deg,#e74c3c,#c0392b)}.workload-bar.over{background:linear-gradient(90deg,#c0392b,#a93226)}.workload-overflow{position:absolute;top:0;right:0;height:100%;background:repeating-linear-gradient(45deg,#e74c3c,#e74c3c 4px,#c0392b 4px,#c0392b 8px);animation:overflow-pulse 1s ease-in-out infinite}@keyframes overflow-pulse{0%,to{opacity:.8}50%{opacity:1}}.workload-footer{display:flex;justify-content:space-between;align-items:center}.percentage{font-size:14px;font-weight:600;color:#2c3e50}.percentage.over{color:#e74c3c}.remaining{font-size:12px;color:#7f8c8d}.remaining.negative{color:#e74c3c;font-weight:600}.edit-form{background:#f8f9fa;padding:20px;border-radius:8px;margin-bottom:24px}.filter-section{background:#f0f4f8;padding:16px 20px;border-radius:8px;margin-bottom:20px;border:1px solid #e1e8ed}.filter-section .form-grid{margin-bottom:0}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px;margin-bottom:16px}.form-group{display:flex;flex-direction:column}.form-group label{font-weight:500;margin-bottom:6px;color:#2c3e50;font-size:14px}.form-group input,.form-group select{padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;transition:border-color .2s;background:#fff}.form-group input:focus,.form-group select:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.form-group input[type=color]{height:42px;cursor:pointer}.form-actions{display:flex;gap:10px}.btn-primary{padding:10px 20px;background:#3498db;color:#fff;border:none;border-radius:6px;font-weight:500;cursor:pointer;transition:background .2s;font-size:14px}.btn-primary:hover{background:#2980b9}.btn-secondary{padding:10px 20px;background:#95a5a6;color:#fff;border:none;border-radius:6px;font-weight:500;cursor:pointer;transition:background .2s;font-size:14px}.btn-secondary:hover{background:#7f8c8d}.btn-info{padding:10px 20px;background:#3498db;color:#fff;border:none;border-radius:6px;font-weight:500;cursor:pointer;transition:background .2s;font-size:14px}.btn-info:hover{background:#2980b9}.btn-edit{padding:6px 12px;background:#f39c12;color:#fff;border:none;border-radius:4px;font-size:13px;cursor:pointer;margin-right:8px;transition:background .2s}.btn-edit:hover{background:#d68910}.btn-delete{padding:6px 12px;background:#e74c3c;color:#fff;border:none;border-radius:4px;font-size:13px;cursor:pointer;transition:background .2s}.btn-delete:hover{background:#c0392b}.data-table{width:100%;border-collapse:collapse;background:#fff}.data-table thead{background:#f8f9fa}.data-table th{padding:12px 16px;text-align:left;font-weight:600;color:#2c3e50;border-bottom:2px solid #ecf0f1;font-size:14px}.data-table td{padding:12px 16px;border-bottom:1px solid #ecf0f1;font-size:14px;color:#34495e}.data-table tbody tr:hover{background:#f8f9fa}.data-table tbody tr:last-child td{border-bottom:none}.color-preview-container{display:flex;align-items:center;gap:8px}.color-preview{width:24px;height:24px;border-radius:4px;border:1px solid #ddd}@media (max-width: 768px){.admin-tabs{overflow-x:auto;-webkit-overflow-scrolling:touch}.admin-tabs button{white-space:nowrap}.form-grid{grid-template-columns:1fr}.manager-header{flex-direction:column;align-items:flex-start;gap:12px}.data-table{font-size:13px}.data-table th,.data-table td{padding:8px 12px}}.substitution-manager{padding:20px}.manager-content{width:100%}.manager-header{margin-bottom:20px}.filters{display:flex;gap:1rem;margin-bottom:1.5rem;align-items:flex-end;flex-wrap:wrap;padding:15px;background:#f8f9fa;border-radius:8px}.view-toggle{display:flex;gap:.5rem}.toggle-btn{padding:.6rem 1.2rem;border:2px solid #ddd;background:#fff;border-radius:6px;cursor:pointer;font-weight:500;transition:all .2s}.toggle-btn:hover{border-color:#667eea;background:#f8f9ff}.toggle-btn.active{border-color:#667eea;background:#667eea;color:#fff}.filter-group{display:flex;flex-direction:column;gap:.5rem}.filter-group label{font-weight:600;font-size:.9rem;color:#2c3e50}.filter-group select{min-width:200px;padding:.5rem;border:2px solid #ddd;border-radius:6px;background:#fff;font-size:.95rem;cursor:pointer;transition:border-color .2s}.filter-group select:hover{border-color:#667eea}.filter-group select:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.btn-reset{width:36px;height:36px;padding:0;background:#f44336;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:18px;font-weight:600;transition:all .2s;display:flex;align-items:center;justify-content:center;flex-shrink:0}.btn-reset:hover{background:#d32f2f;transform:translateY(-1px);box-shadow:0 2px 8px #0003}.schedule-table{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 8px #0000001a}.schedule-table thead{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.schedule-table th{padding:15px;text-align:center;font-weight:600;border-right:1px solid rgba(255,255,255,.2)}.schedule-table th:last-child{border-right:none}.time-header{width:120px}.day-name{font-size:14px;margin-bottom:4px}.day-date{font-size:12px;opacity:.9}.schedule-table tbody tr{border-bottom:1px solid #e0e0e0}.schedule-table tbody tr:last-child{border-bottom:none}.schedule-table td{display:table-cell!important;padding:8px;vertical-align:top;border-right:1px solid #e0e0e0}.schedule-table td:last-child{border-right:none}.time-cell{display:table-cell!important;background:#f8f9fa;text-align:center;padding:10px;width:120px}.lesson-number{font-weight:600;color:#2c3e50;font-size:16px;margin-bottom:4px}.time-range{color:#7f8c8d}.day-cell{display:table-cell!important;min-height:60px;width:auto}.day-cell-content{display:flex;flex-direction:column;gap:6px}.entry{padding:10px 12px;border-radius:6px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:13px;position:relative;transition:all .2s ease;border:2px solid transparent}.entry:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0003}.entry.absent{background:linear-gradient(135deg,#bdc3c7,#95a5a6);color:#2c3e50;border:2px dashed #e74c3c;cursor:pointer}.entry.absent.clickable{cursor:pointer}.entry.absent:hover{background:linear-gradient(135deg,#95a5a6,#7f8c8d);box-shadow:0 4px 12px #e74c3c4d}.entry.substituted{cursor:pointer;box-shadow:0 0 0 3px #1b5e204d}.entry.substituted:hover{box-shadow:0 0 0 3px #1b5e2080,0 4px 12px #4caf5066;transform:translateY(-2px)}.substitution-marker{position:absolute;bottom:6px;right:6px;font-size:18px;color:#fff;font-weight:700;opacity:1;pointer-events:none;line-height:1;background:#1b5e20e6;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px #0003;z-index:10}.delete-substitution-btn{position:absolute;bottom:6px;left:6px;font-size:20px;color:#fff;font-weight:700;background:#d32f2fe6;border:none;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;pointer-events:auto;box-shadow:0 2px 4px #0003;transition:all .2s ease;line-height:1;padding:0;z-index:10}.delete-substitution-btn:hover{background:#c62828;transform:scale(1.1);box-shadow:0 3px 8px #0000004d}.absent-teacher{color:#ffffffe6;font-style:italic}.entry-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.entry-class-name{font-weight:700;font-size:16px;letter-spacing:.5px}.entry-room-badge{background:#ffffff40;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:600}.entry-subject-line{margin-bottom:4px;font-size:13px}.entry-subject-line .subject-name{font-weight:600}.entry-teacher-line{font-size:12px;font-style:italic;opacity:.95}.entry-teacher-line .current-teacher{font-weight:500}.absent-marker{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:60px;color:#e74c3c;font-weight:700;opacity:.15;pointer-events:none;line-height:1}.original-teacher{text-decoration:line-through;opacity:.7;font-weight:400}.substitute-teacher{font-weight:700;font-style:normal}.substitute-selection-modal{background:#fff;border-radius:12px;padding:20px;max-width:500px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:0 10px 40px #0000004d}.available-teachers-list{display:flex;flex-direction:column;gap:8px;margin-top:15px}.teacher-option{display:flex;align-items:center;gap:12px;padding:12px 16px;border:2px solid #e0e0e0;border-radius:8px;background:#fff;cursor:pointer;transition:all .2s ease;text-align:left}.teacher-option:hover{border-color:#667eea;background:#f8f9ff;transform:translate(4px)}.teacher-option.preferred{border-color:#f39c12;background:#fff9e6}.teacher-option.preferred:hover{border-color:#e67e22;background:#fff3d1}.teacher-option.current{border-color:#4caf50;background:#e8f5e9;font-weight:600}.teacher-option.current:hover{border-color:#388e3c;background:#c8e6c9}.teacher-code{font-weight:600;color:#667eea;font-size:14px;min-width:50px}.teacher-name{flex:1;color:#2c3e50;font-size:14px}.current-badge{font-size:12px;color:#4caf50;font-weight:600;display:flex;align-items:center;gap:4px}.preferred-badge{font-size:12px;color:#f39c12;font-weight:600}.notes-section{margin-top:20px;padding-top:15px;border-top:2px solid #e0e0e0}.notes-section label{display:block;font-weight:600;color:#2c3e50;margin-bottom:8px;font-size:14px}.notes-input{width:100%;padding:10px;border:2px solid #e0e0e0;border-radius:6px;font-family:inherit;font-size:14px;resize:vertical;transition:border-color .2s}.notes-input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.notes-input::placeholder{color:#95a5a6;font-style:italic}.btn-save-notes{margin-top:12px;padding:10px 20px;background:#27ae60;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:600;transition:all .2s;display:flex;align-items:center;gap:8px;width:100%;justify-content:center}.btn-save-notes:hover{background:#229954;transform:translateY(-1px);box-shadow:0 2px 8px #27ae604d}.btn-save-notes:active{transform:translateY(0)}.substitution-list{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;overflow:hidden}.list-table{width:100%;border-collapse:collapse}.list-table thead{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.list-table th{padding:15px;text-align:left;font-weight:600;font-size:14px}.list-table td{padding:12px 15px;border-bottom:1px solid #f0f0f0;font-size:14px}.list-table tbody tr:hover{background:#f8f9fa}.list-table tbody tr:last-child td{border-bottom:none}.time-small{font-size:11px;color:#7f8c8d}.substitute-name{font-weight:600;color:#27ae60}.btn-edit-small{padding:6px 12px;background:#3498db;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:16px;transition:all .2s;margin-right:8px}.btn-edit-small:hover{background:#2980b9;transform:scale(1.1)}.btn-delete-small{padding:6px 12px;background:#e74c3c;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:16px;transition:all .2s}.btn-delete-small:hover{background:#c0392b;transform:scale(1.1)}.no-substitutions{padding:40px;text-align:center;color:#7f8c8d;font-size:16px}.table-with-sidebar{display:flex;gap:12px;align-items:flex-start;margin-top:16px}.table-wrapper{flex:1;min-width:0}.btn-toggle-stats{flex-shrink:0;width:40px;height:40px;padding:0;background:#667eea;color:#fff;border:none;border-radius:6px;font-size:18px;cursor:pointer;transition:all .2s;box-shadow:0 2px 4px #0000001a;align-self:flex-start;margin-top:0}.btn-toggle-stats:hover{background:#5568d3;transform:translateY(-1px);box-shadow:0 3px 6px #00000026}.btn-toggle-stats.active{background:#e74c3c}.btn-toggle-stats.active:hover{background:#c0392b}.stats-sidebar{width:280px;flex-shrink:0;background:#f8f9fa;padding:16px;border-radius:6px;border:1px solid #e1e8ed;align-self:flex-start}.stats-sidebar h4{font-size:14px;font-weight:600;color:#2c3e50;margin-bottom:16px;padding-bottom:8px;border-bottom:2px solid #e1e8ed}.stats-list{display:flex;flex-direction:column;gap:12px}.stats-item{background:#fff;border-radius:6px;padding:10px;border:1px solid #e1e8ed;transition:all .2s}.stats-item.none{background:#f8f9fa;border-color:#dee2e6}.stats-item.low{background:#e8f5e9;border-color:#a5d6a7}.stats-item.medium{background:#fff3e0;border-color:#ffb74d}.stats-item.high{background:#ffebee;border-color:#ef9a9a}.stats-item:hover{box-shadow:0 2px 6px #00000014}.stats-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.teacher-code-small{background:#3498db;color:#fff;padding:2px 6px;border-radius:3px;font-size:11px;font-weight:600}.stats-count{font-size:16px;font-weight:700;color:#2c3e50;min-width:32px;text-align:right}.stats-item-footer{display:flex;align-items:center;font-size:11px}.teacher-name-small{color:#7f8c8d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.login-card{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;padding:40px;max-width:450px;width:100%}.login-card h1{text-align:center;color:#333;margin-bottom:10px;font-size:2rem}.login-card h2{text-align:center;color:#666;margin-bottom:30px;font-weight:400;font-size:1.5rem}.login-form{margin-bottom:30px}.form-group label{display:block;margin-bottom:8px;color:#333;font-weight:500}.form-group input{width:100%;padding:12px;border:2px solid #e0e0e0;border-radius:6px;font-size:16px;transition:border-color .3s}.form-group input:focus{outline:none;border-color:#667eea}.form-group input:disabled{background-color:#f5f5f5;cursor:not-allowed}.login-button{width:100%;padding:14px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:6px;font-size:16px;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s}.login-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #667eea66}.login-button:active:not(:disabled){transform:translateY(0)}.login-button:disabled{opacity:.6;cursor:not-allowed}.demo-credentials{background-color:#f8f9fa;padding:20px;border-radius:6px;border:1px solid #e0e0e0}.demo-credentials h3{margin-top:0;margin-bottom:12px;color:#666;font-size:.9rem;text-transform:uppercase;letter-spacing:.5px}.demo-credentials ul{list-style:none;padding:0;margin:0}.demo-credentials li{padding:6px 0;color:#666;font-size:.9rem}.demo-credentials strong{color:#333}.user-management{padding:20px;max-width:1400px;margin:0 auto}.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.header h1{margin:0;color:#333}.btn-create{padding:10px 20px;background-color:#4caf50;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:16px;transition:background-color .3s}.btn-create:hover{background-color:#45a049}.error-banner{background-color:#fee;color:#c33;padding:12px;border-radius:6px;margin-bottom:20px;border-left:4px solid #c33}.users-table-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden}.users-table{width:100%;border-collapse:collapse}.users-table th,.users-table td{padding:12px 16px;text-align:left;border-bottom:1px solid #e0e0e0}.users-table th{background-color:#f5f5f5;font-weight:600;color:#666;text-transform:uppercase;font-size:.85rem;letter-spacing:.5px}.users-table tbody tr:hover{background-color:#f9f9f9}.role-badge{display:inline-block;padding:4px 12px;border-radius:12px;font-size:.85rem;font-weight:600}.role-admin{background-color:#e3f2fd;color:#1565c0}.role-rektor{background-color:#f3e5f5;color:#7b1fa2}.role-teacher{background-color:#e8f5e9;color:#2e7d32}.role-viewer{background-color:#fff3e0;color:#e65100}.status-badge{display:inline-block;padding:4px 12px;border-radius:12px;font-size:.85rem;font-weight:600}.status-badge.active{background-color:#e8f5e9;color:#2e7d32}.status-badge.inactive{background-color:#ffebee;color:#c62828}.text-muted{color:#999}.actions{display:flex;gap:8px}.btn-edit,.btn-delete{padding:6px 12px;border:none;border-radius:4px;cursor:pointer;font-size:16px;transition:transform .2s}.btn-edit{background-color:#2196f3}.btn-edit:hover{transform:scale(1.1)}.btn-delete{background-color:#f44336}.btn-delete:hover{transform:scale(1.1)}.modal-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}.modal{background:#fff;border-radius:8px;padding:30px;max-width:500px;width:90%;max-height:90vh;overflow-y:auto}.modal h2{margin-top:0;margin-bottom:20px;color:#333}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:6px;color:#666;font-weight:500}.form-group input,.form-group select{width:100%;padding:10px;border:1px solid #ddd;border-radius:4px;font-size:14px}.form-group input:focus,.form-group select:focus{outline:none;border-color:#2196f3}.checkbox-group label{display:flex;align-items:center;gap:8px;cursor:pointer}.checkbox-group input[type=checkbox]{width:auto;cursor:pointer}.error-message{background-color:#fee;color:#c33;padding:12px;border-radius:6px;margin-bottom:20px;border-left:4px solid #c33}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:30px}.btn-cancel,.btn-save{padding:10px 20px;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:600;transition:background-color .3s}.btn-cancel{background-color:#e0e0e0;color:#666}.btn-cancel:hover{background-color:#d0d0d0}.btn-save{background-color:#4caf50;color:#fff}.btn-save:hover{background-color:#45a049}.loading{text-align:center;padding:50px;font-size:18px;color:#666}.app{min-height:100vh}.navbar{background-color:var(--card-bg);box-shadow:var(--shadow);position:sticky;top:0;z-index:100}.nav-container{max-width:1400px;margin:0 auto;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;gap:2rem}.nav-logo{font-size:1.5rem;color:var(--primary-color)}.nav-menu{display:flex;list-style:none;gap:2rem}.nav-menu a{text-decoration:none;color:var(--text-dark);font-weight:500;transition:color .3s}.nav-menu a:hover{color:var(--primary-color)}.nav-user{display:flex;align-items:center;gap:1rem}.user-info{color:var(--text-light);font-size:.9rem}.btn-logout{padding:.5rem 1rem;background-color:#e0e0e0;color:#666;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;transition:background-color .3s}.btn-logout:hover{background-color:#d0d0d0}.main-content{max-width:1400px;margin:0rem auto;padding:0 0rem}.page-header{margin-bottom:2rem}.page-header h2{font-size:2rem;color:var(--text-dark);margin-bottom:.5rem}.page-header p{color:var(--text-light);font-size:1rem}.card{background:var(--card-bg);border-radius:8px;padding:1.5rem;box-shadow:var(--shadow);margin-bottom:1.5rem}.btn{padding:.75rem 1.5rem;border:none;border-radius:6px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .3s}.btn-primary{background-color:var(--primary-color);color:#fff}.btn-primary:hover{background-color:#357abd}.btn-danger{background-color:var(--danger-color);color:#fff}.btn-danger:hover{background-color:#c0392b}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:var(--text-dark)}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.75rem;border:1px solid var(--border-color);border-radius:6px;font-size:1rem;font-family:inherit}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--primary-color)}.loading{text-align:center;padding:2rem;color:var(--text-light)}.error{background-color:#fee;color:var(--danger-color);padding:1rem;border-radius:6px;margin-bottom:1rem}.success{background-color:#efe;color:var(--secondary-color);padding:1rem;border-radius:6px;margin-bottom:1rem}:root{--primary-color: #4a90e2;--secondary-color: #50c878;--danger-color: #e74c3c;--warning-color: #f39c12;--bg-color: #f5f7fa;--card-bg: #ffffff;--text-dark: #2c3e50;--text-light: #7f8c8d;--border-color: #e1e8ed;--shadow: 0 2px 8px rgba(0, 0, 0, .1)}*{margin:0;padding:0;box-sizing:border-box}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:var(--bg-color);color:var(--text-dark)}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}
