.loading-spinner-container{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:2rem;color:#666}.loading-spinner-inline{display:inline-flex;align-items:center;gap:.5rem;color:inherit}.loading-spinner{display:inline-block;border-radius:50%;border-style:solid;border-color:#e0e0e0;border-top-color:#3498db;animation:spin .8s linear infinite}.loading-spinner-small{width:16px;height:16px;border-width:2px}.loading-spinner-medium{width:24px;height:24px;border-width:3px}.loading-spinner-large{width:40px;height:40px;border-width:4px}.loading-spinner-text{font-size:.875rem;color:inherit}.loading-spinner[aria-hidden=true]{display:none}.period-settings-overlay{z-index:3000}.period-settings-dialog{max-width:500px}.period-settings-body{padding:1.5rem}.period-settings-description{margin:0 0 1.5rem;color:#666;font-size:.9rem}.period-settings-form{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem}.period-setting-row{display:flex;align-items:center;justify-content:space-between;padding:.75rem;background-color:#f8f9fa;border-radius:4px}.period-setting-label{font-weight:500;color:#2c3e50;min-width:60px}.period-setting-input-group{display:flex;align-items:center;gap:.5rem}.period-setting-input{width:80px;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;text-align:center}.period-setting-input:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 2px #3498db33}.period-setting-unit{color:#666;font-size:.9rem}.period-settings-actions{display:flex;justify-content:flex-end;gap:.75rem;padding-top:1rem;border-top:1px solid #e0e0e0}.btn{padding:.5rem 1.5rem;border:none;border-radius:4px;font-size:.95rem;cursor:pointer;transition:background-color .2s}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background-color:#ecf0f1;color:#2c3e50}.btn-secondary:hover:not(:disabled){background-color:#d5dbdb}.btn-primary{background-color:#3498db;color:#fff}.btn-primary:hover:not(:disabled){background-color:#2980b9}.print-report-dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:10000}.print-report-dialog{background:#fff;border-radius:8px;max-width:90vw;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 4px 20px #0003}.print-report-dialog-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;border-bottom:1px solid #e0e0e0}.print-report-dialog-header h3{margin:0;font-size:1.1rem}.print-report-dialog-body{padding:1rem;overflow:auto;flex:1}.print-report-dialog-controls{margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.print-report-dialog-controls label{font-weight:500}.print-report-dialog-controls select{padding:.35rem .5rem;min-width:200px}.print-report-checkbox-label{display:inline-flex;align-items:center;gap:.35rem;font-weight:400;cursor:pointer}.print-report-dialog-error{color:#c00;margin:.5rem 0}.print-report-dialog-loading{color:#666;margin:.5rem 0}.print-report-preview{margin-bottom:1rem;padding:.5rem;background:#fafafa;border-radius:4px;max-height:60vh;overflow:auto}.print-report-preview .report-title{font-size:1rem;font-weight:600;margin-bottom:.5rem}.print-report-class-block{margin-bottom:1.5rem}.print-report-table{width:100%;border-collapse:collapse;font-size:.9rem}.print-report-table th,.print-report-table td{border:1px solid #ccc;padding:4px 8px;text-align:left}.print-report-table th{background:#eee}.print-report-grid{table-layout:fixed}.print-report-grid .print-report-axis{background:#f0f0f0;font-weight:600;min-width:2.5rem;text-align:center}.print-report-grid th.print-report-axis,.print-report-grid td.print-report-axis{width:2.5rem}.print-report-grid td{min-width:4rem;vertical-align:top}.print-report-cell-top{font-weight:600;line-height:1.25;margin-bottom:2px}.print-report-cell-bottom{font-size:.85em;color:#555;line-height:1.2}.print-report-list .print-report-day-header{text-align:center}.print-report-list .print-report-slot-header{font-weight:500;text-align:center;min-width:2.5rem}.print-report-list .print-report-row-label{font-weight:600;white-space:nowrap}.print-report-dialog-actions{display:flex;gap:.5rem;flex-wrap:wrap}@media print{.print-report-dialog-overlay{background:none}.print-report-dialog{box-shadow:none;max-width:none;max-height:none}.print-report-dialog-header,.print-report-dialog-controls,.print-report-dialog-actions{display:none!important}}.timetable-toolbar{position:relative;z-index:100;background:#fff;border-radius:8px;margin-bottom:.5rem;box-shadow:0 2px 4px #0000001a;overflow:visible;will-change:transform,opacity;transform:translateZ(0);transition:transform .2s cubic-bezier(.4,0,.2,1),opacity .2s cubic-bezier(.4,0,.2,1),margin-bottom .2s cubic-bezier(.4,0,.2,1)}.timetable-toolbar.collapsed{transform:translateY(-100%) translateZ(0);opacity:0;margin-bottom:0;pointer-events:none;height:0;min-height:0;overflow:hidden}.timetable-toolbar.collapsed .toolbar-content{display:none}.timetable-toolbar.expanded{transform:translateY(0) translateZ(0);opacity:1;margin-bottom:.5rem;pointer-events:auto}.timetable-toolbar.expanded .toolbar-content{display:flex}.toolbar-content{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap;gap:1rem;padding:.3rem .5rem;will-change:contents;overflow:visible}.toolbar-section{display:flex;align-items:center;gap:.5rem;overflow:visible}.toolbar-section label{font-weight:500;color:#2c3e50;font-size:.85rem;white-space:nowrap}.toolbar-section select,.toolbar-section input{padding:.3rem .5rem;border:1px solid #ddd;border-radius:4px;font-size:.85rem}.multi-select{position:relative;min-width:120px;max-width:160px;z-index:100}.multi-select-button{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.3rem .5rem;border:1px solid #ddd;border-radius:4px;background-color:#fff;font-size:.85rem;cursor:pointer;text-align:left}.multi-select-button:focus{outline:2px solid #3498db;outline-offset:2px}.multi-select-value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.multi-select-value.placeholder{color:#7f8c8d}.multi-select-indicator{font-size:.85rem;color:#2c3e50}.multi-select-clear{margin-left:.5rem;background:none;border:none;color:#3498db;cursor:pointer;font-size:.85rem;text-decoration:underline}.multi-select-menu{position:absolute;top:calc(100% + 4px);left:0;width:100%;max-height:14rem;overflow-y:auto;border:1px solid #ddd;border-radius:6px;background-color:#fff;box-shadow:0 8px 16px #0000001f;z-index:1000;padding:.25rem 0}.multi-select-option{display:flex;align-items:center;gap:.5rem;padding:.4rem .75rem;cursor:pointer;font-size:.95rem}.multi-select-option:hover{background-color:#f0f6ff}.multi-select-option input{accent-color:#3498db}.multi-select-empty{padding:.75rem;text-align:center;color:#7f8c8d;font-size:.9rem}.toolbar-button{padding:.3rem .75rem;background-color:#3498db;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.85rem;transition:background-color .2s;white-space:nowrap;min-width:60px;height:28px;display:inline-flex;align-items:center;justify-content:center}.toolbar-button:hover{background-color:#2980b9}.toolbar-button:active{background-color:#21618c}.toolbar-button:disabled{opacity:.6;cursor:not-allowed}.toolbar-button-active{background-color:#e74c3c!important;color:#fff!important}.toolbar-button-active:hover{background-color:#c0392b!important}.data-management-container{position:relative;display:inline-block}.data-management-menu{position:absolute;top:100%;left:0;margin-top:4px;background-color:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 4px 8px #0000001a;z-index:1000;min-width:150px}.data-management-menu-item{width:100%;border-radius:0;border:none;text-align:left;padding:.5rem .75rem;background:transparent;color:#2c3e50;transition:background-color .2s;cursor:pointer;font-size:.85rem}.data-management-menu-item:not(:last-child){border-bottom:1px solid #eee}.data-management-menu-item:hover:not(:disabled){background-color:#f0f6ff}.data-management-menu-item:disabled{opacity:.6;cursor:not-allowed}@media (max-width: 1024px){.timetable-toolbar{padding:.75rem;gap:1rem}.toolbar-section{gap:.75rem}.toolbar-section label{font-size:.9rem}.toolbar-section select,.toolbar-section input{font-size:.9rem;padding:.4rem}.toolbar-button{padding:.4rem .75rem;font-size:.9rem}}@media (max-width: 768px){.timetable-toolbar{flex-direction:column;align-items:stretch;padding:.75rem;gap:.75rem}.toolbar-section{flex-direction:column;align-items:stretch;gap:.5rem}.toolbar-section label{font-size:.85rem}.toolbar-section select,.toolbar-section input{width:100%;font-size:.85rem;padding:.5rem}.multi-select{width:100%}.multi-select-menu{max-height:12rem}.toolbar-button{width:100%;padding:.5rem;font-size:.85rem}}@media (max-width: 480px){.timetable-toolbar{padding:.5rem;gap:.5rem}.toolbar-section{gap:.4rem}.toolbar-section label{font-size:.8rem}.toolbar-section select,.toolbar-section input{font-size:.8rem;padding:.4rem}.multi-select-button{font-size:.8rem;padding:.4rem .5rem}.toolbar-button{font-size:.8rem;padding:.4rem}}.timetable-filter-bar-container{position:relative;background-color:#f8f9fa;border-top:1px solid #e0e0e0}.timetable-filter-bar{background-color:#f8f9fa;padding:.4rem .5rem;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.filter-bar-content{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;width:100%}.filter-button-wrapper{position:relative}.filter-button-wrapper .multi-select{min-width:140px;max-width:200px}.filter-button-wrapper .multi-select-button{background-color:#fff;border:1px solid #d0d0d0;border-radius:4px;padding:.35rem .6rem;font-size:.85rem;transition:all .2s ease}.filter-button-wrapper .multi-select-button:hover{background-color:#f0f0f0;border-color:#3498db}.filter-button-wrapper.filter-active .multi-select-button,.filter-button-wrapper:has(.multi-select-menu) .multi-select-button{background-color:#3498db;border-color:#3498db;color:#fff}.filter-button-wrapper.filter-active .multi-select-button .multi-select-value,.filter-button-wrapper:has(.multi-select-menu) .multi-select-button .multi-select-value{color:#fff}.filter-button-wrapper.filter-active .multi-select-button .multi-select-indicator,.filter-button-wrapper:has(.multi-select-menu) .multi-select-button .multi-select-indicator{color:#fff}.filter-button-wrapper .multi-select-button:focus{outline:2px solid #3498db;outline-offset:2px}.filter-button-wrapper .multi-select-clear{position:absolute;right:28px;top:50%;transform:translateY(-50%);background:#dc26261a;border:none;color:#dc2626;padding:2px 6px;border-radius:3px;font-size:.7rem;cursor:pointer;z-index:10}.filter-button-wrapper .multi-select-clear:hover{background:#dc262633}.filter-button-wrapper .multi-select-menu{margin-top:4px;z-index:1000}@media (max-width: 1024px){.timetable-filter-bar{padding:.35rem .4rem}.filter-button-wrapper .multi-select{min-width:120px;max-width:180px}.filter-button-wrapper .multi-select-button{padding:.3rem .5rem;font-size:.8rem}}@media (max-width: 768px){.timetable-filter-bar{padding:.3rem;gap:.4rem}.filter-bar-content{gap:.4rem}.filter-button-wrapper{flex:1;min-width:100px}.filter-button-wrapper .multi-select{width:100%;min-width:100px;max-width:none}}@media (max-width: 480px){.timetable-filter-bar{padding:.25rem}.filter-button-wrapper .multi-select-button{padding:.25rem .4rem;font-size:.75rem}}.detail-dialog-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}.detail-dialog-content{background:#fff;border-radius:6px;width:90%;max-width:420px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 4px 6px #0000001a;overflow:hidden;-webkit-user-select:none;user-select:none}.detail-dialog-header{display:flex;justify-content:space-between;align-items:center;padding:.5rem .75rem;border-bottom:1px solid #ddd;background-color:#34495e;color:#fff;border-radius:6px 6px 0 0;cursor:move}.detail-dialog-header:active{cursor:grabbing}.detail-dialog-header h3{margin:0;font-size:1rem;font-weight:600}.detail-dialog-close{background:none;border:none;color:#fff;font-size:1.25rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:background-color .2s}.detail-dialog-close:hover{background-color:#fff3}.detail-dialog-body{flex:1;min-height:0;overflow-y:auto;padding:.75rem 1rem;-webkit-user-select:text;user-select:text}.detail-section{margin-bottom:.75rem}.detail-two-pane{display:flex;gap:.75rem;margin-bottom:.75rem}.detail-pane{flex:1;margin-bottom:0;min-width:0}.detail-section h4{font-size:.875rem;font-weight:600;margin-bottom:.375rem;color:#2c3e50;border-bottom:1px solid #ecf0f1;padding-bottom:.2rem}.detail-item{display:flex;justify-content:space-between;margin-bottom:.375rem;font-size:.85rem}.detail-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:.375rem .75rem}.detail-item label{font-weight:500;color:#7f8c8d}.detail-item span{color:#2c3e50}.detail-list{list-style:none;padding:0;margin:0}.detail-list li{padding:.35rem .5rem;background-color:#f8f9fa;margin-bottom:.2rem;border-radius:3px;font-size:.85rem}.detail-warning{background-color:#fff3cd;padding:.5rem .75rem;border-radius:3px;border:1px solid #ffc107}.detail-warning h4{color:#856404}.detail-actions{display:flex;flex-direction:row;flex-wrap:wrap;gap:.4rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid #ddd}.action-button{padding:.5rem .75rem;background-color:#3498db;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.875rem;font-weight:500;transition:background-color .2s;min-height:36px;flex:1 1 calc(50% - .2rem);min-width:0}.action-button:hover{background-color:#2980b9}.action-button-warning{background-color:#f39c12;color:#fff}.action-button-warning:hover:not(:disabled){background-color:#e67e22}.action-button-danger{background-color:#e74c3c}.action-button-danger:hover{background-color:#c0392b}.action-button:disabled{opacity:.6;cursor:not-allowed}.loading-spinner{display:inline-block;width:12px;height:12px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite;margin-right:.4rem;vertical-align:middle}@media (max-width: 1024px){.detail-dialog-content{max-width:380px}.detail-dialog-header{padding:.5rem .75rem}.detail-dialog-header h3{font-size:.95rem}.detail-dialog-body{padding:.65rem .85rem}.detail-two-pane{flex-direction:column;gap:.5rem}.detail-info-grid{grid-template-columns:1fr;gap:.375rem}}@media (max-width: 768px){.detail-dialog-content{width:95%;max-width:95%;max-height:95vh}.detail-dialog-header{padding:.75rem}.detail-dialog-header h3{font-size:1rem}.detail-dialog-body{padding:.75rem}.detail-section{margin-bottom:1rem}.detail-section h4{font-size:.9rem}.detail-item{font-size:.85rem}.detail-list li{font-size:.85rem;padding:.4rem}.action-button{font-size:.9rem;padding:.6rem}.detail-two-pane{flex-direction:column;gap:.5rem}.detail-info-grid{grid-template-columns:1fr;gap:.375rem}}@media (max-width: 480px){.detail-dialog-content{width:100%;max-width:100%;max-height:100vh;border-radius:0}.detail-dialog-header{padding:.5rem;border-radius:0}.detail-dialog-header h3{font-size:.9rem}.detail-dialog-body{padding:.5rem}.detail-section{margin-bottom:.75rem}.detail-section h4{font-size:.85rem}.detail-item{font-size:.8rem;flex-direction:column;align-items:flex-start;gap:.25rem}.detail-list li{font-size:.8rem;padding:.35rem}.action-button{font-size:.85rem;padding:.5rem}}.timetable-font-sidebar{width:280px;min-width:280px;flex-shrink:0;background:#f8f9fa;border-right:1px solid #dee2e6;display:flex;flex-direction:column;overflow:hidden;box-shadow:2px 0 8px #0000000f}.timetable-font-sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;background:#2c3e50;color:#fff;flex-shrink:0}.timetable-font-sidebar-title{margin:0;font-size:1rem;font-weight:600}.timetable-font-sidebar-close{background:none;border:none;color:#ffffffe6;font-size:1.5rem;line-height:1;cursor:pointer;padding:0 .25rem;border-radius:4px;transition:background-color .2s,color .2s}.timetable-font-sidebar-close:hover{background:#ffffff26;color:#fff}.timetable-font-sidebar-body{flex:1;overflow-y:auto;padding:1rem}.timetable-display-color-controls{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.timetable-display-color-btn,.timetable-display-color-group button{min-height:2rem;padding:.35rem .6rem;font-size:.875rem;border:1px solid #ced4da;border-radius:4px;background:#fff;color:#212529;cursor:pointer;transition:background-color .2s,border-color .2s,color .2s}.timetable-display-color-btn:hover,.timetable-display-color-group button:hover{background:#e9ecef;border-color:#adb5bd}.timetable-display-color-btn.active,.timetable-display-color-group button.active{background:#34495e;border-color:#2c3e50;color:#fff}.timetable-display-color-group{display:inline-flex;gap:.25rem}.timetable-font-sidebar-section{margin-bottom:1.25rem}.timetable-font-sidebar-section:last-of-type{margin-bottom:1rem}.timetable-font-sidebar-section-title{margin:0 0 .5rem;font-size:.8rem;font-weight:600;color:#495057;text-transform:uppercase;letter-spacing:.02em}.timetable-font-sidebar-subtitle{display:block;margin:.75rem 0 .25rem;font-size:.75rem;color:#6c757d}.timetable-font-sidebar-section .timetable-font-sidebar-subtitle:first-of-type{margin-top:.25rem}.timetable-font-sidebar-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.5rem}.timetable-font-sidebar-row:last-child{margin-bottom:0}.timetable-font-sidebar-label{font-size:.875rem;color:#212529;flex:1;min-width:0}.timetable-font-sidebar-input-wrap{display:flex;align-items:center;gap:.25rem;flex-shrink:0}.timetable-font-sidebar-number{width:56px;padding:.35rem .5rem;font-size:.875rem;border:1px solid #ced4da;border-radius:4px;text-align:right}.timetable-font-sidebar-number:focus{outline:none;border-color:#34495e;box-shadow:0 0 0 2px #34495e33}.timetable-font-sidebar-unit{font-size:.75rem;color:#6c757d}.timetable-font-sidebar-select{padding:.35rem .5rem;font-size:.875rem;border:1px solid #ced4da;border-radius:4px;background:#fff;min-width:100px}.timetable-font-sidebar-select:focus{outline:none;border-color:#34495e}.timetable-font-sidebar-actions{margin-top:1rem;padding-top:1rem;border-top:1px solid #dee2e6}.timetable-font-sidebar-reset{width:100%;padding:.5rem .75rem;font-size:.875rem;color:#495057;background:#fff;border:1px solid #dee2e6;border-radius:4px;cursor:pointer;transition:background-color .2s,border-color .2s}.timetable-font-sidebar-reset:hover{background:#e9ecef;border-color:#adb5bd}.dialog-content{background:#fff;border-radius:8px;width:90%;max-width:550px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 4px 6px #0000001a;overflow:hidden;-webkit-user-select:none;user-select:none}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;border-bottom:1px solid #ddd;background-color:#34495e;color:#fff;border-radius:8px 8px 0 0;cursor:move}.dialog-header:active{cursor:grabbing}.dialog-body{flex:1;min-height:0;overflow-y:auto;padding:1rem 1.25rem;-webkit-user-select:text;user-select:text}.form-row{display:flex;gap:1rem;margin-bottom:1rem}.form-group{margin-bottom:1rem;flex:1}.form-row .form-group{margin-bottom:0}.form-group>label:first-child{display:block;margin-bottom:.5rem;font-weight:500;color:#2c3e50;font-size:.95rem}.form-group select{width:100%;padding:.5rem .625rem;border:1px solid #ddd;border-radius:4px;font-size:.95rem;background-color:#fff}.checkbox-group{display:flex;flex-direction:row;flex-wrap:wrap;gap:.375rem;max-height:180px;overflow-y:auto;overflow-x:hidden;border:1px solid #ddd;border-radius:4px;padding:.625rem;background-color:#fff}.checkbox-group::-webkit-scrollbar{width:10px}.checkbox-group::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}.checkbox-group::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}.checkbox-group::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.checkbox-label{display:inline-flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:.5rem!important;cursor:pointer;padding:.4rem .6rem;border-radius:4px;transition:background-color .2s,color .2s;-webkit-user-select:none;user-select:none;box-sizing:border-box;white-space:nowrap}.checkbox-label:hover{background-color:#f0f7ff;color:#2c3e50}.checkbox-label.checkbox-checked{background-color:#e8f4f8;font-weight:500}.checkbox-label:has(input[type=checkbox]:checked){background-color:#e8f4f8;font-weight:500}.checkbox-label input[type=checkbox]{cursor:pointer;width:1.15rem!important;height:1.15rem!important;flex-shrink:0;margin:0!important;padding:0!important;accent-color:#3498db;border:2px solid #bdc3c7;border-radius:3px;display:inline-block!important;vertical-align:middle}.checkbox-label input[type=checkbox]:checked{background-color:#3498db;border-color:#3498db}.checkbox-label input[type=checkbox]:focus{outline:2px solid #3498db;outline-offset:2px}.checkbox-label span{margin:0;padding:0;font-size:.95rem;line-height:1.15rem;display:inline;vertical-align:middle}.dialog-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:.75rem 1rem;border-top:1px solid #ddd;background-color:#f8f9fa;border-radius:0 0 8px 8px}.button-primary,.button-secondary{padding:.625rem 1.25rem;border:none;border-radius:4px;cursor:pointer;font-size:.95rem;transition:background-color .2s;font-weight:500}.button-primary{background-color:#3498db;color:#fff}.button-primary:hover{background-color:#2980b9}.button-secondary{background-color:#95a5a6;color:#fff}.button-secondary:hover{background-color:#7f8c8d}.button-primary:disabled,.button-secondary:disabled{opacity:.6;cursor:not-allowed}@media (max-width: 1024px){.dialog-content{max-width:500px;width:85%}.dialog-header{padding:.75rem}.dialog-header h3{font-size:1.1rem;color:#fff!important}.dialog-body{padding:1rem}.form-group{margin-bottom:1rem}}@media (max-width: 768px){.dialog-content{max-width:95%;width:95%;max-height:95vh;margin:.5rem}.dialog-header{padding:.75rem}.dialog-header h3{font-size:1rem;color:#fff!important}.dialog-body{padding:1rem}.form-group{margin-bottom:1rem}.form-group label{font-size:.9rem}.form-group select{font-size:.9rem;padding:.5rem}.checkbox-group{max-height:150px;font-size:.9rem}.checkbox-label{font-size:.9rem}.dialog-footer{padding:.75rem;flex-direction:column-reverse;gap:.5rem}.button-primary,.button-secondary{width:100%;padding:.75rem;font-size:.9rem}}@media (max-width: 480px){.dialog-content{max-width:100%;width:100%;max-height:100vh;margin:0;border-radius:0}.dialog-header{padding:.5rem;border-radius:0}.dialog-header h3{font-size:.9rem;color:#fff!important}.dialog-body{padding:.75rem}.form-group{margin-bottom:.75rem}.form-group label{font-size:.85rem}.form-group select{font-size:.85rem;padding:.4rem}.checkbox-group{max-height:120px;font-size:.85rem;padding:.4rem}.checkbox-label{font-size:.85rem;padding:.2rem}.dialog-footer{padding:.5rem;border-radius:0}.button-primary,.button-secondary{font-size:.85rem;padding:.6rem}}.dialog-content-large{max-width:800px}.loading-message{padding:2rem;text-align:center;color:#7f8c8d}.preview-summary,.preview-conflicts,.preview-cells-to-create,.preview-cells-to-move{margin-bottom:1.5rem;padding:1rem;background-color:#f8f9fa;border-radius:4px}.preview-summary h4,.preview-conflicts h4,.preview-cells-to-create h4,.preview-cells-to-move h4{margin-top:0;margin-bottom:.5rem;color:#2c3e50;font-size:1rem}.preview-summary ul,.preview-conflicts ul{margin:0;padding-left:1.5rem}.conflict-item{color:#e74c3c;margin-bottom:.25rem}.cells-list{max-height:300px;overflow-y:auto;display:flex;flex-direction:column;gap:.5rem}.cell-preview-item{padding:.5rem;background-color:#fff;border-radius:4px;border:1px solid #ddd;font-size:.9rem}.preview-conflicts{background-color:#fff3cd;border:1px solid #ffc107}.dialog-content.placement-count-dialog{width:95vw;max-width:1200px}.placement-count-note{margin-bottom:.75rem;color:#555;font-size:.9rem}.placement-count-table-wrapper{max-height:60vh;overflow:auto;border:1px solid #e0e0e0;border-radius:6px}.placement-count-table{width:100%;border-collapse:collapse;font-size:.9rem;background:#fff}.placement-count-table th,.placement-count-table td{border:1px solid #e0e0e0;padding:6px 8px;text-align:center;white-space:nowrap}.placement-count-table th{background:#f8f9fb;position:sticky;top:0;z-index:1}.placement-count-class{text-align:left;font-weight:600}.placement-count-cell{font-variant-numeric:tabular-nums}.placement-count-cell.placement-count-insufficient{background-color:#fff9c4}.placement-count-cell.placement-count-excess{background-color:#c8e6c9}.placement-count-total{font-weight:600;background:#fafafa}.placement-count-total.placement-count-insufficient{background-color:#fff9c4}.placement-count-total.placement-count-excess{background-color:#c8e6c9}.unplaced-lessons-overlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000;pointer-events:none}.unplaced-lessons-panel{position:fixed;width:782px;max-width:95vw;max-height:80vh;background:#fff;border-radius:8px;box-shadow:0 4px 20px #0000004d;display:flex;flex-direction:column;pointer-events:auto;z-index:1001;right:20px;top:100px;left:auto;transform:none}.unplaced-lessons-panel--sidebar{right:0;top:0;bottom:0;left:auto;width:391px;max-width:391px;min-width:280px;max-height:none;height:100vh;border-radius:8px 0 0 8px;box-shadow:-2px 0 16px #0003}.unplaced-lessons-panel--sidebar .unplaced-lessons-header{flex-shrink:0}.unplaced-lessons-sidebar-header-top{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.5rem}.unplaced-lessons-sidebar-header-top-row{display:flex;align-items:center;gap:.35rem;flex-wrap:nowrap;flex:1;min-width:0;overflow-x:auto;overflow-y:hidden}.unplaced-lessons-sidebar-header-top h3{margin:0;font-size:.95rem;flex-shrink:0;white-space:nowrap}.unplaced-lessons-sidebar-header-top-row .unplaced-lessons-sidebar-badges,.unplaced-lessons-close--sidebar{flex-shrink:0}.unplaced-lessons-sidebar-badges{display:flex;align-items:center;gap:.25rem}.unplaced-lessons-sidebar-badges .unplaced-lessons-count-badge{font-size:.7rem;padding:.15rem .3rem}.unplaced-lessons-sidebar-tabs-wrap{display:flex;flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:.4rem;min-height:0}.unplaced-lessons-sidebar-tabs-row{display:flex;flex-wrap:nowrap;align-items:center;gap:.35rem;min-height:0;overflow-x:auto;overflow-y:hidden}.unplaced-lessons-sidebar-tabs{display:flex;flex-wrap:nowrap;gap:.15rem;border-bottom:none;padding-bottom:0;flex-shrink:0}.unplaced-lessons-sidebar-tab{font-size:.8rem;padding:.22rem .4rem;min-height:2.125rem;box-sizing:border-box;border:none;border-radius:4px;background:#ffffff1a;color:#ffffffe6;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.unplaced-lessons-sidebar-tab:hover{background:#ffffff2e}.unplaced-lessons-sidebar-tab--active{background:#fffffff2;color:#363d44;font-weight:600}.unplaced-lessons-sidebar-tabs-divider{display:inline-block;width:1px;height:1.25rem;background:#ffffff59;flex-shrink:0;margin:0 .15rem}.unplaced-lessons-sidebar-tab-content{min-height:0;display:flex;flex-wrap:wrap;align-items:center;gap:.2rem;min-width:0}.unplaced-lessons-sidebar-section-buttons{display:flex;flex-wrap:nowrap;gap:.2rem;align-items:center}.unplaced-lessons-sidebar-section-buttons .unplaced-lessons-header-btn,.unplaced-lessons-sidebar-section-buttons .unplaced-lessons-primary-btn,.unplaced-lessons-sidebar-section-buttons .unplaced-lessons-display-mode-toggle,.unplaced-lessons-sidebar-section-buttons .unplaced-lessons-close{min-width:2.5rem;min-height:2.125rem;box-sizing:border-box;font-size:.8rem;padding:.22rem .36rem;white-space:nowrap;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.unplaced-lessons-sidebar-section-buttons .unplaced-lessons-color-mode-selector{min-height:2.125rem;box-sizing:border-box;display:inline-flex}.unplaced-lessons-sidebar-section-buttons .unplaced-lessons-color-mode-selector-button,.unplaced-lessons-sidebar-section-buttons .unplaced-lessons-color-mode-selector button{min-height:2.125rem;box-sizing:border-box;font-size:.8rem;padding:.22rem .36rem;white-space:nowrap;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-header-btn,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-create-btn,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-generate-btn,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-auto-place-btn,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-batch-place-btn,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-fix-duplicates-btn,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-bulk-lock-btn,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-batch-unplace-btn,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-delete-all-btn,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-mode-toggle{background:#3d5a73;color:#fff}.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-header-btn:hover,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-create-btn:hover,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-generate-btn:hover,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-auto-place-btn:hover,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-batch-place-btn:hover,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-fix-duplicates-btn:hover,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-bulk-lock-btn:hover,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-batch-unplace-btn:hover,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-delete-all-btn:hover,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-mode-toggle:hover{background:#4d6d87;color:#fff}.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-color-mode-selector-button,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-color-mode-selector button{background:#fff!important;color:#363d44!important;border-color:#00000026!important}.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-color-mode-selector-button:hover,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-color-mode-selector button:hover{background:#f0f0f0!important;color:#363d44!important}.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-color-mode-selector-button.active,.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-color-mode-selector button.active{background:#3d5a73!important;color:#fff!important;border-color:#415a72!important}.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-mode-toggle-active{background:#5a7fa3;color:#fff}.unplaced-lessons-sidebar-tab-content .unplaced-lessons-sidebar-section-buttons .unplaced-lessons-mode-toggle-active:hover{background:#6b92b8;color:#fff}.unplaced-lessons-panel--sidebar .unplaced-lessons-content-wrapper{min-height:0;flex:1}.unplaced-lessons-panel--sidebar .unplaced-lessons-index-sidebar{width:6.5rem;min-width:6.5rem;flex-shrink:0}.unplaced-lessons-panel--sidebar .unplaced-lessons-index-grouping-tab{font-size:.7rem;padding:.35rem .15rem}.unplaced-lessons-panel--sidebar .unplaced-lessons-body{min-width:0;overflow:auto}.unplaced-lessons-header{display:flex;flex-direction:column;gap:.25rem;padding:.5rem .75rem;border-bottom:1px solid rgba(255,255,255,.15);background:#363d44;border-radius:8px 8px 0 0;-webkit-user-select:none;user-select:none;overflow:visible;position:relative;z-index:10}.unplaced-lessons-header select{-webkit-user-select:auto;user-select:auto}.unplaced-lessons-panel{--unplaced-header-bg: #363d44;--unplaced-btn-normal: #51575e;--unplaced-btn-normal-hover: #5d646d;--unplaced-btn-active-bg: #ffffff;--unplaced-btn-active-text: #4d5156;--unplaced-btn-danger: #cb3636;--unplaced-btn-danger-hover: #b82e2e;--unplaced-btn-secondary-bg: rgba(255, 255, 255, .15);--unplaced-btn-secondary-hover: rgba(255, 255, 255, .25)}.unplaced-lessons-mode-toggle{padding:.26rem .5rem;background:var(--unplaced-btn-secondary-bg);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.8rem;font-weight:500;transition:background .2s ease;white-space:nowrap;min-width:5.75rem;text-align:center;box-sizing:border-box}.unplaced-lessons-mode-toggle:hover{background:var(--unplaced-btn-secondary-hover)}.unplaced-lessons-mode-toggle-active{background:var(--unplaced-btn-active-bg);color:var(--unplaced-btn-active-text);border:none}.unplaced-lessons-mode-toggle-active:hover{background:#f0f0f0}.unplaced-lessons-header-top{display:flex;justify-content:space-between;align-items:center;overflow:visible;position:relative;z-index:11}.unplaced-lessons-header h3{margin:0;font-size:1rem;font-weight:600;color:#fff}.unplaced-lessons-header-controls{display:flex;gap:.35rem;align-items:center}.unplaced-lessons-count-badge{font-size:.8rem;font-weight:500;padding:.2rem .4rem;border-radius:4px;border:none}.unplaced-lessons-count-badge-remaining{background:#fff3;color:#fff}.unplaced-lessons-count-badge-placed{background:#4caf5066;color:#e8f5e9}.unplaced-lessons-count-badge-total{background:#fff3;color:#fff}.unplaced-lessons-count-badge-error{background:#cb363680;color:#fff;font-weight:600}.unplaced-lessons-count-badge-warning{background:#fbbf2466;color:#fffde7;font-weight:600}.unplaced-lessons-grouping-select{padding:.26rem .45rem;border:1px solid rgba(255,255,255,.3);border-radius:4px;background:#ffffff26;color:#fff;font-size:.8rem;cursor:pointer;position:relative;z-index:1000;appearance:auto;-webkit-appearance:menulist;-moz-appearance:menulist;pointer-events:auto;min-height:1.75rem}.unplaced-lessons-grouping-select:hover{background:#ffffff40}.unplaced-lessons-grouping-select option{background:var(--unplaced-header-bg);color:#fff}.unplaced-lessons-header-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem}.unplaced-lessons-header-actions--stacked{flex-direction:column;align-items:stretch;gap:.4rem}.unplaced-lessons-dialog-tabs-row{display:flex;flex-wrap:nowrap;align-items:center;gap:.25rem;overflow-x:auto}.unplaced-lessons-dialog-tab{flex-shrink:0;min-height:2.375rem;box-sizing:border-box;padding:.32rem .6rem;font-size:.95rem;font-weight:500;border:none;border-radius:4px;background:#ffffff40;color:#fffffff2;cursor:pointer;transition:background .15s,color .15s;display:inline-flex;align-items:center;justify-content:center}.unplaced-lessons-dialog-tab:hover{background:#fff6}.unplaced-lessons-dialog-tab--active{background:#fffffff2;color:#363d44}.unplaced-lessons-dialog-tab-content{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem;min-height:0}.unplaced-lessons-header-actions--stacked .unplaced-lessons-dialog-tab-content .unplaced-lessons-header-btn,.unplaced-lessons-header-actions--stacked .unplaced-lessons-dialog-tab-content .unplaced-lessons-create-btn,.unplaced-lessons-header-actions--stacked .unplaced-lessons-dialog-tab-content .unplaced-lessons-generate-btn,.unplaced-lessons-header-actions--stacked .unplaced-lessons-dialog-tab-content .unplaced-lessons-auto-place-btn,.unplaced-lessons-header-actions--stacked .unplaced-lessons-dialog-tab-content .unplaced-lessons-target-place-btn,.unplaced-lessons-header-actions--stacked .unplaced-lessons-dialog-tab-content .unplaced-lessons-batch-place-btn,.unplaced-lessons-header-actions--stacked .unplaced-lessons-dialog-tab-content .unplaced-lessons-fix-duplicates-btn,.unplaced-lessons-header-actions--stacked .unplaced-lessons-dialog-tab-content .unplaced-lessons-bulk-lock-btn,.unplaced-lessons-header-actions--stacked .unplaced-lessons-dialog-tab-content .unplaced-lessons-batch-unplace-btn,.unplaced-lessons-header-actions--stacked .unplaced-lessons-dialog-tab-content .unplaced-lessons-delete-all-btn,.unplaced-lessons-header-actions--stacked .unplaced-lessons-dialog-tab-content .unplaced-lessons-mode-toggle{min-height:2.375rem;box-sizing:border-box;font-size:.9rem;padding:.3rem .55rem;display:inline-flex;align-items:center;justify-content:center}.unplaced-lessons-header-actions--stacked .unplaced-lessons-dialog-tab-content .unplaced-lessons-color-mode-selector{min-height:2.375rem;box-sizing:border-box;display:inline-flex}.unplaced-lessons-header-actions--stacked .unplaced-lessons-dialog-tab-content .unplaced-lessons-color-mode-selector-button,.unplaced-lessons-header-actions--stacked .unplaced-lessons-dialog-tab-content .unplaced-lessons-color-mode-selector button{min-height:2.375rem;box-sizing:border-box;font-size:.9rem;padding:.3rem .55rem;display:inline-flex;align-items:center;justify-content:center}.unplaced-lessons-header-action-group{display:flex;gap:.25rem;align-items:center;margin-right:.35rem}.unplaced-lessons-header-action-group:last-child{margin-right:0}.unplaced-lessons-header-btn{min-width:5.75rem;max-width:8rem;box-sizing:border-box;text-align:center;white-space:nowrap;padding:.26rem .45rem;font-size:.8rem;font-weight:500}.unplaced-lessons-header-actions button.unplaced-lessons-header-btn,.unplaced-lessons-header-actions select.unplaced-lessons-header-btn{padding:.26rem .45rem;font-size:.8rem}.unplaced-lessons-color-mode-selector{display:flex;gap:0;border:1px solid rgba(255,255,255,.3);border-radius:4px;overflow:hidden;background:transparent}.unplaced-lessons-color-mode-selector button{padding:.26rem .45rem;background:var(--unplaced-btn-active-bg);color:var(--unplaced-btn-active-text);border:none;border-right:1px solid rgba(255,255,255,.2);cursor:pointer;font-size:.8rem;font-weight:500;transition:background .2s ease;white-space:nowrap}.unplaced-lessons-color-mode-selector button:last-child{border-right:none}.unplaced-lessons-color-mode-selector button:hover{background:#f0f0f0;color:var(--unplaced-btn-active-text)}.unplaced-lessons-color-mode-selector button.active{background:var(--unplaced-btn-normal);color:#fff}.unplaced-lessons-color-mode-selector button.active:hover{background:var(--unplaced-btn-normal-hover);color:#fff}.unplaced-lessons-color-mode-selector-button{padding:.26rem .45rem;background:var(--unplaced-btn-active-bg);color:var(--unplaced-btn-active-text);border:1px solid rgba(255,255,255,.4);border-radius:4px;cursor:pointer;font-size:.8rem;font-weight:500;transition:background .2s ease;white-space:nowrap}.unplaced-lessons-color-mode-selector-button:hover{background:#f0f0f0}.unplaced-lessons-color-mode-selector-button.active{background:var(--unplaced-btn-normal);color:#fff;border-color:var(--unplaced-btn-normal)}.unplaced-lessons-color-mode-selector-button.active:hover{background:var(--unplaced-btn-normal-hover)}.unplaced-lessons-create-btn{padding:.4rem .8rem;background:var(--unplaced-btn-normal);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background .2s ease}.unplaced-lessons-create-btn:hover{background:var(--unplaced-btn-normal-hover)}.unplaced-lessons-generate-btn{padding:.4rem .8rem;background:var(--unplaced-btn-normal);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background .2s ease}.unplaced-lessons-generate-btn:hover:not(:disabled){background:var(--unplaced-btn-normal-hover)}.unplaced-lessons-generate-btn:disabled{background:#ffffff1a;cursor:not-allowed;opacity:.6}.unplaced-lessons-remove-excess-btn{padding:.4rem .8rem;background:var(--unplaced-btn-danger);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background .2s ease}.unplaced-lessons-remove-excess-btn:hover:not(:disabled){background:var(--unplaced-btn-danger-hover)}.unplaced-lessons-remove-excess-btn:disabled{background:#ffffff1a;cursor:not-allowed;opacity:.6}.unplaced-lessons-delete-all-btn{padding:.4rem .8rem;background:var(--unplaced-btn-danger);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background .2s ease}.unplaced-lessons-delete-all-btn:hover:not(:disabled){background:var(--unplaced-btn-danger-hover)}.unplaced-lessons-delete-all-btn:disabled{background:#ffffff1a;cursor:not-allowed;opacity:.6}.unplaced-lessons-auto-place-btn{padding:.4rem .8rem;background:var(--unplaced-btn-normal);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background .2s ease}.unplaced-lessons-auto-place-btn:hover:not(:disabled){background:var(--unplaced-btn-normal-hover)}.unplaced-lessons-auto-place-btn:disabled{background:#ffffff1a;cursor:not-allowed;opacity:.6}.unplaced-lessons-batch-unplace-btn{padding:.4rem .8rem;background:var(--unplaced-btn-danger);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background .2s ease}.unplaced-lessons-batch-unplace-btn:hover{background:var(--unplaced-btn-danger-hover)}.unplaced-lessons-batch-place-btn{padding:.4rem .8rem;background:var(--unplaced-btn-normal);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background .2s ease;white-space:nowrap}.unplaced-lessons-batch-place-btn:hover{background:var(--unplaced-btn-normal-hover)}.unplaced-lessons-fix-duplicates-btn{padding:.4rem .8rem;background:var(--unplaced-btn-secondary-bg);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background .2s ease}.unplaced-lessons-fix-duplicates-btn:hover:not(:disabled){background:var(--unplaced-btn-secondary-hover)}.unplaced-lessons-fix-duplicates-btn:disabled{background:#ffffff14;cursor:not-allowed;opacity:.6}.unplaced-lessons-bulk-lock-btn{padding:.4rem .8rem;background:var(--unplaced-btn-secondary-bg);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background .2s ease}.unplaced-lessons-bulk-lock-btn:hover{background:var(--unplaced-btn-secondary-hover)}.unplaced-lessons-primary-btn{padding:.375rem .75rem;background:var(--unplaced-btn-normal);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.875rem;font-weight:500;transition:background .2s ease}.unplaced-lessons-primary-btn:hover{background:var(--unplaced-btn-normal-hover)}.unplaced-lessons-primary-btn--compact{font-size:.75rem;padding:.2rem .5rem;min-height:auto}.unplaced-lessons-primary-btn--icon{width:1.75rem;min-width:1.75rem;height:1.75rem;padding:0;display:inline-flex;align-items:center;justify-content:center;font-size:1rem;line-height:1;flex-shrink:0}.unplaced-lessons-display-mode-toggle{padding:.25rem .5rem;font-size:.75rem;background:#ffffff26;color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:4px;cursor:pointer;white-space:nowrap;transition:background .2s ease}.unplaced-lessons-display-mode-toggle:hover{background:#ffffff40}.unplaced-lessons-display-mode-switch{flex-shrink:0;padding:0;width:2.5rem;height:1.35rem;border:none;background:transparent;cursor:pointer;display:inline-flex;align-items:center;border-radius:999px}.unplaced-lessons-display-mode-switch-track{position:relative;width:100%;height:100%;border-radius:999px;background:#ffffff40;transition:background .2s ease}.unplaced-lessons-display-mode-switch:hover .unplaced-lessons-display-mode-switch-track{background:#ffffff59}.unplaced-lessons-display-mode-switch-knob{position:absolute;top:50%;left:.2rem;transform:translateY(-50%);width:1rem;height:1rem;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000040;transition:transform .2s ease}.unplaced-lessons-display-mode-switch--on .unplaced-lessons-display-mode-switch-track{background:#81c784e6}.unplaced-lessons-display-mode-switch--on:hover .unplaced-lessons-display-mode-switch-track{background:#81c784}.unplaced-lessons-display-mode-switch--on .unplaced-lessons-display-mode-switch-knob{transform:translateY(-50%) translate(1.1rem)}.unplaced-lessons-close{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:4px;cursor:pointer;font-size:1.5rem;color:#fffc;transition:background .2s ease,color .2s;line-height:1}.unplaced-lessons-close:hover{background:var(--unplaced-btn-danger);color:#fff}.unplaced-lessons-content-wrapper{display:flex;flex:1;overflow:hidden;min-height:200px}.unplaced-lessons-index-sidebar{width:132px;min-width:132px;background:#f8f9fa;border-right:1px solid #e0e0e0;display:flex;flex-direction:column;overflow-y:auto;flex-shrink:0}.unplaced-lessons-index-grouping-tabs{display:flex;flex-shrink:0;border-bottom:1px solid #dee2e6;background:#e9ecef;position:sticky;top:0;z-index:5}.unplaced-lessons-index-grouping-tab{flex:1;padding:.5rem .25rem;font-weight:600;font-size:.75rem;color:#495057;background:transparent;border:none;border-bottom:3px solid transparent;cursor:pointer;transition:background .2s,color .2s,border-color .2s;white-space:nowrap}.unplaced-lessons-index-grouping-tab:hover{background:#dee2e6;color:#212529}.unplaced-lessons-index-grouping-tab--active{background:#f8f9fa;color:#212529;border-bottom-color:#2c3e50}.unplaced-lessons-index-list{display:flex;flex-direction:column;padding:.5rem 0}.unplaced-lessons-index-item{padding:.5rem .75rem;text-align:left;background:none;border:none;cursor:pointer;font-size:.85rem;color:#495057;transition:background-color .2s,color .2s;border-left:3px solid transparent}.unplaced-lessons-index-item:hover{background:#e9ecef;color:#212529}.unplaced-lessons-index-item:active{background:#dee2e6}.unplaced-lessons-body{flex:1;overflow-y:auto;padding:0 1rem 1rem;min-height:200px;position:relative;z-index:1}.unplaced-lessons-loading{display:flex;align-items:center;justify-content:center;padding:2rem;color:#7f8c8d}.unplaced-lessons-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center;color:#7f8c8d}.unplaced-lessons-empty p{margin:.5rem 0}.unplaced-lessons-hint{font-size:.9rem;color:#95a5a6}.unplaced-lessons-list{display:flex;flex-direction:column;gap:0}.unplaced-lessons-group{border:1px solid #e0e0e0;border-radius:6px;overflow:visible;margin-bottom:1rem;background:#fff}.unplaced-lessons-group:first-child{margin-top:0}.unplaced-lessons-subject-title{font-weight:600;font-size:1rem;color:#2c3e50;background:#f8f9fa;border-bottom:1px solid #e0e0e0;background:#f8f9fa!important;margin-left:-1rem;margin-right:-1rem;padding:.75rem 1.75rem;box-shadow:0 2px 4px #0000000d}.unplaced-lessons-group>.unplaced-lessons-subject-title{position:sticky;top:0;z-index:10}.unplaced-lessons-subject-group>.unplaced-lessons-subject-title{position:sticky;top:var(--first-title-height, 48px);z-index:9}.unplaced-lessons-class-title{font-weight:600;font-size:1rem;color:#2c3e50;padding:.75rem;background:#e8f5e9;border-bottom:1px solid #c8e6c9}.unplaced-lessons-first-title{position:sticky;top:0;z-index:10;box-shadow:0 2px 4px #0000000d;margin-left:-1rem;margin-right:-1rem;padding-left:1.75rem;padding-right:1.75rem}.unplaced-lessons-teacher-title.unplaced-lessons-first-title{padding:.75rem;background:#e3f2fd!important;border-bottom:1px solid #bbdefb;font-weight:600}.unplaced-lessons-subject-group{margin-bottom:.5rem}.unplaced-lessons-teacher-group{margin-bottom:.75rem}.unplaced-lessons-teacher-group:last-child{margin-bottom:0}.unplaced-lessons-teacher-title{font-size:.95rem;font-weight:500;color:#34495e;background:#f0f4f8;border-left:3px solid #3498db;margin-bottom:.25rem;background:#f0f4f8!important;margin-left:-1rem;margin-right:-1rem;padding:.5rem 2rem;box-shadow:0 1px 2px #0000000d}.unplaced-lessons-group>.unplaced-lessons-subject-title~.unplaced-lessons-teacher-group .unplaced-lessons-teacher-title{position:sticky;top:var(--subject-title-height, 48px);z-index:9}.unplaced-lessons-group>.unplaced-lessons-class-title~.unplaced-lessons-subject-group~.unplaced-lessons-teacher-group .unplaced-lessons-teacher-title{position:sticky;top:calc(var(--first-title-height, 48px) + var(--subject-title-height, 48px));z-index:8}.unplaced-lessons-class-row{padding:.5rem .75rem;border-bottom:1px solid #f0f0f0}.unplaced-lessons-class-row:last-child{border-bottom:none}.unplaced-lessons-class-items{display:flex;flex-wrap:wrap;gap:.4rem}.unplaced-lesson-item{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.2rem .15rem;border-radius:4px;cursor:grab;transition:all .2s;-webkit-user-select:none;user-select:none;min-height:42px;min-width:55px}.unplaced-lesson-item:hover{transform:translateY(-2px);box-shadow:0 2px 8px #00000026}.unplaced-lesson-item.dragging{opacity:.5;cursor:grabbing}.unplaced-lesson-item-subject{font-size:.9rem;font-weight:600;color:#2c3e50;text-align:center;margin-bottom:.25rem;line-height:1.2}.unplaced-lesson-item-class{font-size:.85rem;color:#7f8c8d;text-align:center;line-height:1.2}.unplaced-lesson-item[data-cell-dark=true] .unplaced-lesson-item-subject,.unplaced-lesson-item[data-cell-dark=true] .unplaced-lesson-item-class{color:#fff!important}.unplaced-lesson-item{position:relative}.unplaced-lesson-item-delete{position:absolute;top:2px;right:2px;width:18px;height:18px;display:flex;align-items:center;justify-content:center;background:var(--unplaced-btn-danger);color:#fff;border:none;border-radius:50%;cursor:pointer;font-size:14px;font-weight:700;line-height:1;padding:0;opacity:0;transition:opacity .2s,background-color .2s;z-index:10}.unplaced-lesson-item:hover .unplaced-lesson-item-delete{opacity:1}.unplaced-lesson-item-delete:hover{background:var(--unplaced-btn-danger);transform:scale(1.1)}.unplaced-lesson-item-delete:active{transform:scale(.95)}.unplaced-lessons-body::-webkit-scrollbar{width:8px}.unplaced-lessons-body::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}.unplaced-lessons-body::-webkit-scrollbar-thumb{background:#bdc3c7;border-radius:4px}.unplaced-lessons-body::-webkit-scrollbar-thumb:hover{background:#95a5a6}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem;border-bottom:1px solid #ddd;background-color:#34495e;color:#fff;border-radius:8px 8px 0 0}.unplaced-context-menu{position:fixed;z-index:1002;min-width:10rem;padding:.25rem 0;background:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 4px 12px #00000026}.unplaced-context-menu button{display:block;width:100%;padding:.4rem .75rem;border:none;background:none;text-align:left;font-size:.9rem;cursor:pointer}.unplaced-context-menu button:hover{background:#f0f0f0}.unplaced-context-menu button:first-child{border-radius:6px 6px 0 0}.unplaced-context-menu button:last-child{border-radius:0 0 6px 6px}.swap-dialog-overlay{position:fixed;top:0;right:0;bottom:0;width:400px;max-width:100%;pointer-events:none;z-index:1000;display:flex;justify-content:flex-end}.swap-dialog{pointer-events:auto;background-color:#fff;border-radius:8px 0 0 8px;padding:1.5rem;width:100%;height:100%;overflow-y:auto;box-shadow:-4px 0 12px #00000026}.swap-dialog-title{margin:0 0 .5rem;font-size:1.25rem;font-weight:600;color:#2c3e50}.swap-dialog-hint{margin:0 0 1rem;font-size:.875rem;color:#5a6c7d;line-height:1.4}.swap-dialog-section{margin-bottom:1rem}.swap-dialog-section h3{margin:0 0 .5rem;font-size:.95rem;font-weight:600;color:#34495e}.swap-dialog-entries{list-style:none;margin:0;padding:0;border:1px solid #dee2e6;border-radius:4px;background-color:#f8f9fa}.swap-dialog-entry{border-bottom:1px solid #e9ecef;font-size:.875rem}.swap-dialog-entry:last-child{border-bottom:none}.swap-dialog-entry-content{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem;padding:.75rem}.swap-dialog-entry-details{flex:1;min-width:0}.swap-dialog-entry-detail-row{margin-bottom:.2rem}.swap-dialog-entry-detail-row:last-child{margin-bottom:0}.swap-dialog-entry-detail-label{color:#6c757d;margin-right:.35rem}.swap-dialog-entry-detail-value{color:#2c3e50}.swap-dialog-entry-remove{flex-shrink:0;width:1.75rem;height:1.75rem;padding:0;border:1px solid #dee2e6;border-radius:4px;background:#fff;color:#6c757d;font-size:1.1rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.swap-dialog-entry-remove:hover:not(:disabled){background:#f8d7da;color:#721c24;border-color:#f5c6cb}.swap-dialog-entry-remove:disabled{opacity:.6;cursor:not-allowed}.swap-dialog-constraint-violations{border:1px solid #e65100;background-color:#fff3e0;border-radius:4px;padding:.75rem}.swap-dialog-constraint-violations-desc{margin:0 0 .5rem;font-size:.875rem;color:#bf360c;font-weight:500}.swap-dialog-constraint-violations-list{margin:0;padding-left:1.25rem;font-size:.9rem;color:#bf360c;line-height:1.5}.swap-dialog-conflicts{border:1px solid #f5c6cb;background-color:#f8d7da;border-radius:4px;padding:.75rem}.swap-dialog-conflicts-desc{margin:0 0 .5rem;font-size:.875rem;color:#721c24}.swap-dialog-conflicts-list{margin:0;padding-left:1.25rem;font-size:.9rem;color:#721c24}.swap-dialog-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1rem}.swap-dialog-button{padding:.5rem 1rem;border:none;border-radius:4px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background-color .2s}.swap-dialog-button-execute{background-color:#3498db;color:#fff}.swap-dialog-button-execute:hover:not(:disabled){background-color:#2980b9}.swap-dialog-button-execute:disabled{background-color:#95a5a6;color:#fff;cursor:not-allowed}.swap-dialog-button-cancel{background-color:#95a5a6;color:#fff}.swap-dialog-button-cancel:hover:not(:disabled){background-color:#7f8c8d}.swap-dialog-button-cancel:disabled{opacity:.7;cursor:not-allowed}.toast-container{position:fixed;bottom:20px;right:20px;z-index:10000;display:flex;flex-direction:column;gap:.75rem;max-width:400px}.toast{background:#fff;border-radius:8px;padding:1rem;box-shadow:0 4px 12px #00000026;display:flex;align-items:center;gap:.75rem;min-width:300px;max-width:400px;cursor:pointer;opacity:0;transform:translateY(100%);transition:opacity .3s ease,transform .3s ease}.toast-visible{opacity:1;transform:translate(0)}.toast-success{border-left:4px solid #4caf50}.toast-error{border-left:4px solid #f44336}.toast-warning{border-left:4px solid #ff9800}.toast-info{border-left:4px solid #2196f3}.toast-icon{font-size:1.25rem;font-weight:700;flex-shrink:0}.toast-success .toast-icon{color:#4caf50}.toast-error .toast-icon{color:#f44336}.toast-warning .toast-icon{color:#ff9800}.toast-info .toast-icon{color:#2196f3}.toast-message{flex:1;font-size:.9rem;line-height:1.4;color:#2c3e50;white-space:pre-wrap;word-wrap:break-word}.toast-close{background:none;border:none;font-size:1.5rem;color:#7f8c8d;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:4px;transition:background-color .2s,color .2s}.toast-close:hover{background-color:#ecf0f1;color:#2c3e50}.toast-group{cursor:pointer}.toast-count{font-weight:700;margin-left:.5rem;color:#7f8c8d}.toast-details-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;z-index:10001;display:flex;align-items:center;justify-content:center;padding:20px}.toast-details-modal{background:#fff;border-radius:8px;box-shadow:0 8px 24px #0003;max-width:500px;width:100%;max-height:80vh;display:flex;flex-direction:column}.toast-details-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem;border-bottom:1px solid #e0e0e0}.toast-details-header h3{margin:0;font-size:1.1rem;font-weight:600;color:#2c3e50}.toast-details-close{background:none;border:none;font-size:1.5rem;color:#7f8c8d;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s,color .2s}.toast-details-close:hover{background-color:#ecf0f1;color:#2c3e50}.toast-details-content{padding:1.25rem;flex:1;overflow-y:auto}.toast-details-message{font-size:1rem;line-height:1.6;color:#2c3e50;margin-bottom:1rem}.toast-details-count{font-size:.9rem;color:#7f8c8d;padding:.75rem;background-color:#f5f5f5;border-radius:4px}.toast-details-footer{padding:1rem 1.25rem;border-top:1px solid #e0e0e0;display:flex;justify-content:flex-end}.toast-details-remove-all{background-color:#f44336;color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;font-size:.9rem;cursor:pointer;transition:background-color .2s}.toast-details-remove-all:hover{background-color:#d32f2f}@media (max-width: 768px){.toast-container{bottom:10px;right:10px;left:10px;max-width:none}.toast{min-width:auto;max-width:none}.toast-details-modal{max-width:90%;max-height:90vh}}.ai-suggestion-card{background:#f9f9f9;border:1px solid #ddd;border-radius:4px;padding:1rem;transition:box-shadow .2s}.ai-suggestion-card:hover{box-shadow:0 2px 8px #0000001a}.ai-suggestion-card__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem;padding-bottom:.5rem;border-bottom:1px solid #eee}.ai-suggestion-card__type{font-weight:600;font-size:.9rem;color:#007bff}.ai-suggestion-card__confidence{font-size:.85rem;font-weight:500}.ai-suggestion-card__content{font-size:.9rem;margin-bottom:1rem}.ai-suggestion-card__description{margin:0 0 .75rem;color:#333}.ai-suggestion-card__recommendations{margin:.5rem 0;padding-left:1.5rem;color:#666}.ai-suggestion-card__recommendations li{margin:.25rem 0}.ai-suggestion-card__changes{margin-top:.75rem;padding-top:.75rem;border-top:1px solid #eee;font-size:.85rem}.ai-suggestion-card__changes ul{margin:.5rem 0 0;padding-left:1.5rem;color:#666}.ai-suggestion-card__changes li{margin:.25rem 0}.ai-suggestion-card__actions{display:flex;justify-content:flex-end;gap:.5rem;padding-top:.75rem;border-top:1px solid #eee}.suggestion-preview-overlay{z-index:2000}.suggestion-preview-dialog{max-height:80vh;display:flex;flex-direction:column}.suggestion-preview-body{flex:1;overflow-y:auto;padding:1.5rem}.suggestion-preview__description{margin-bottom:1.5rem}.suggestion-preview__description h4,.suggestion-preview__changes h4,.suggestion-preview__recommendations h4,.suggestion-preview__improvement h4{margin:0 0 .75rem;font-size:1rem;font-weight:600;color:#2c3e50}.suggestion-preview__description p{margin:0;color:#666;line-height:1.6}.suggestion-preview__changes{margin-bottom:1.5rem}.suggestion-preview__changes-list{display:flex;flex-direction:column;gap:1rem;max-height:400px;overflow-y:auto;padding:.5rem;background:#f9f9f9;border-radius:4px}.suggestion-preview__change-item{padding:1rem;background:#fff;border-radius:4px;border:1px solid #e0e0e0;display:flex;flex-direction:column;gap:.5rem}.suggestion-preview__change-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.suggestion-preview__change-action{font-weight:600;color:#007bff;padding:.25rem .5rem;background:#e7f3ff;border-radius:4px;font-size:.85rem}.suggestion-preview__change-cell-id{font-size:.75rem;color:#999;font-family:monospace}.suggestion-preview__change-from,.suggestion-preview__change-to,.suggestion-preview__change-reason{display:flex;align-items:center;gap:.5rem}.suggestion-preview__change-label{font-size:.9rem;color:#666;min-width:60px}.suggestion-preview__change-value{font-size:.9rem;color:#2c3e50;font-weight:500}.suggestion-preview__change-to .suggestion-preview__change-label{color:#28a745;font-weight:600}.suggestion-preview__recommendations{margin-bottom:1.5rem}.suggestion-preview__recommendations ul{margin:0;padding-left:1.5rem;color:#666;line-height:1.8}.suggestion-preview__improvement{margin-bottom:1.5rem}.suggestion-preview__improvement p{margin:0;color:#666;line-height:1.6;padding:.75rem;background:#f0f8ff;border-left:3px solid #007bff;border-radius:4px}.suggestion-preview__confidence{display:flex;align-items:center;gap:.5rem;padding:.75rem;background:#f9f9f9;border-radius:4px}.suggestion-preview__confidence-label{font-size:.9rem;color:#666}.suggestion-preview__confidence-value{font-size:1rem;font-weight:600;color:#007bff}.suggestion-preview-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid #e0e0e0}.dialog-footer{display:flex;justify-content:flex-end;gap:.75rem}@media (max-width: 768px){.suggestion-preview-dialog{max-width:95vw;max-height:90vh}.suggestion-preview__changes-list{max-height:300px}}.ai-settings-overlay{z-index:2001}.ai-settings-dialog{max-height:80vh}.ai-settings-body{padding:1.5rem}.ai-settings__section{margin-bottom:1.5rem}.ai-settings__label{display:block;margin-bottom:.5rem;font-weight:600;color:#2c3e50}.ai-settings__input,.ai-settings__select{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem;font-family:monospace}.ai-settings__input:focus,.ai-settings__select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.ai-settings__provider-info{margin-top:.5rem;padding:.5rem;background:#e7f3ff;border-left:3px solid #007bff;border-radius:4px;font-size:.85rem;color:#0056b3}.ai-settings__provider-warning{margin-top:.5rem;padding:.5rem;background:#fff3cd;border-left:3px solid #ffc107;border-radius:4px;font-size:.85rem;color:#856404}.ai-settings__checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.9rem}.ai-settings__checkbox-label input[type=checkbox]{width:1.2rem;height:1.2rem;cursor:pointer}.ai-settings__help-text{margin-top:.5rem;font-size:.85rem;color:#666}.ai-settings__info{margin-top:2rem;padding:1rem;background:#f9f9f9;border-radius:4px}.ai-settings__info h4{margin:0 0 .75rem;font-size:1rem;color:#2c3e50}.ai-settings__info ul{margin:0;padding-left:1.5rem;color:#666;line-height:1.8}.ai-settings__info code{background:#e9ecef;padding:.2rem .4rem;border-radius:3px;font-family:monospace;font-size:.85rem}.ai-settings-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid #e0e0e0}.ai-support-panel{background:#fff;border:none;border-radius:0;padding:0;max-width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}.ai-support-panel__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid #eee}.ai-support-panel__header h3{margin:0;font-size:1.1rem}.ai-support-panel__actions{display:flex;gap:.5rem}.ai-support-panel__analysis{margin-bottom:1.5rem;padding:1rem;background:#f9f9f9;border-radius:4px;flex-shrink:0}.ai-support-panel__analysis h4{margin:0 0 1rem;font-size:1rem}.ai-support-panel__analysis-metrics{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.ai-support-panel__metric{display:flex;flex-direction:column;gap:.25rem}.ai-support-panel__metric-label{font-size:.85rem;color:#666}.ai-support-panel__metric-value{font-size:1.1rem;font-weight:600;color:#007bff}.ai-support-panel__suggestions{flex:1;overflow-y:auto;overflow-x:hidden;padding:1rem;min-height:0;max-height:100%}.ai-support-panel__suggestions h4{margin:0 0 1rem;font-size:1rem}.ai-support-panel__empty{text-align:center;padding:2rem;color:#999;font-size:.9rem}.ai-support-panel__suggestion-list{display:flex;flex-direction:column;gap:.75rem}.btn{padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;transition:background-color .2s;pointer-events:auto;position:relative;z-index:1}.btn-secondary:hover:not(:disabled){background:#545b62}.btn-secondary:disabled{background:#ccc;cursor:not-allowed}@media (max-width: 768px){.ai-support-panel{max-width:100%}.ai-support-panel__analysis-metrics{grid-template-columns:1fr}}.timetable-grid-container{position:relative;overflow-x:auto;overflow-y:auto;max-height:100%;height:100%;flex:1;min-height:0;width:100%;max-width:100%}.timetable-grid{width:100%;border-collapse:collapse;background:#fff;table-layout:fixed}.timetable-grid th,.timetable-grid td{border:1px solid #999;padding:.25rem}.timetable-grid td.grid-row-header{border-top:1px solid rgba(255,255,255,.5)!important;border-bottom:1px solid rgba(255,255,255,.5)!important}.timetable-grid .grid-day-header,.timetable-grid .grid-period-header{border:none}.grid-header{background-color:#34495e;color:#fff;font-weight:600;font-size:1rem;text-align:center;position:sticky;top:0;z-index:10}.grid-row-header-label{position:sticky;left:0;z-index:15}.grid-row-header-label.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s}.timetable-grid.read-only .grid-row-header-label.sortable{cursor:default}.grid-row-header-label.sortable:hover{background-color:#3d5266}.timetable-grid .grid-row-header-label{border:1px solid rgba(255,255,255,.5);border-top-color:#2c3e50}.sort-indicator{font-size:.8em;opacity:.9}.timetable-grid .grid-day-header{background-color:#2c3e50;font-size:var(--tt-font-size-day-header, .9rem);position:sticky;top:0;z-index:11;border-top:1px solid #34495e;border-right:1px solid rgba(255,255,255,.5);border-bottom:1px solid rgba(255,255,255,.5);border-left:1px solid rgba(255,255,255,.5)}.grid-day-header.grid-day-header-holiday{background-color:#c62828;color:#fff;border-top-color:#34495e;border-right-color:#ffffff80;border-bottom-color:#ffffff80;border-left-color:#ffffff80}.grid-day-header:not(:first-child){border-left:2px solid #34495e}.grid-day-header.grid-day-header-holiday:not(:first-child){border-left:2px solid #34495e}.grid-day-header.first-day,.grid-day-header.grid-day-header-holiday.first-day{border-left:1px solid rgba(255,255,255,.5)!important}.grid-day-header{border-right:none!important}.grid-day-header.last-day{border-right:2px solid #34495e!important}.grid-day-header:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:1px;background-color:#ffffff80;z-index:100;pointer-events:none}.grid-day-header:not(:first-child):before{display:none!important}.timetable-grid .grid-period-header{background-color:#34495e;font-size:var(--tt-font-size-period-header, .85rem);font-weight:500;padding:.05rem .15rem;cursor:grab;-webkit-user-select:none;user-select:none;position:sticky;top:var(--day-header-height, 40px);z-index:10;border-top:1px solid rgba(255,255,255,.5);border-right:1px solid rgba(255,255,255,.5);border-bottom:1px solid rgba(255,255,255,.5);border-left:1px solid rgba(255,255,255,.5)}.timetable-grid.read-only .grid-period-header{cursor:default}.timetable-grid th.grid-period-header.day-first-period,.timetable-grid td.grid-period-header.day-first-period{border-left:2px solid #2c3e50!important;border-top:1px solid rgba(255,255,255,.5)!important;border-right:1px solid rgba(255,255,255,.5)!important;border-bottom:1px solid rgba(255,255,255,.5)!important}.timetable-grid th.grid-period-header.first-day-first-period,.timetable-grid td.grid-period-header.first-day-first-period{border-left:1px solid #2c3e50!important}.grid-period-header:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:1px;background-color:#ffffff80;z-index:100;pointer-events:none}.grid-period-header.day-first-period:not(:last-child):after{display:none!important}.grid-period-header:not(:last-child):not(.day-first-period):not(.day-last-period):before{content:"";position:absolute;top:0;bottom:0;right:-1px;width:1px;background-color:#ffffff80;z-index:100;pointer-events:none}.grid-period-header.day-first-period:not(:last-child):before{display:none!important}.grid-period-header.day-first-period:last-child:before{display:none!important}.grid-period-header:active{cursor:grabbing}.grid-day-header{cursor:grab;-webkit-user-select:none;user-select:none}.grid-day-header:active{cursor:grabbing}.grid-header-dragging{opacity:.5;background-color:#3498db!important}.grid-header-drag-over{background-color:#2ecc71!important;box-shadow:inset 0 0 10px #2ecc7180}.timetable-grid tr.highlighted-row{background-color:#fff3cd!important;animation:highlightPulse 1.5s ease-in-out}.timetable-grid tr.highlighted-row td{background-color:#fff3cd!important}.timetable-grid tr.highlighted-row .grid-row-header,.timetable-grid tr.highlighted-row .highlighted-row-header{background-color:#ffc107!important;color:#000!important;font-weight:700}@keyframes highlightPulse{0%{background-color:#ffc107}50%{background-color:#fff3cd}to{background-color:#fff3cd}}.grid-row-header{background-color:#34495e!important;color:#fff!important;font-weight:600;font-size:1rem;text-align:center;position:sticky;left:0;z-index:5;width:85px;min-width:85px;max-width:85px;padding:.1rem .15rem;box-sizing:border-box;overflow:visible;vertical-align:middle}.row-header-content{display:flex;flex-direction:column;gap:.05rem;overflow:hidden;max-width:100%;color:#fff!important;align-items:center;justify-content:center;text-align:center;min-height:100%}.row-header-content.row-header-special-needs{overflow:visible}.row-header-main{font-weight:600;font-size:.9rem;color:#fff!important;overflow:visible;white-space:normal;word-break:break-word;max-width:100%;line-height:1.2;text-align:center}.timetable-grid-container[data-mode=teacher] .row-header-main{font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;word-break:normal;overflow-wrap:normal;align-self:stretch;width:100%;min-width:0;box-sizing:border-box}.timetable-grid .grid-row-header{border-top:1px solid rgba(255,255,255,.5)!important;border-right:1px solid rgba(255,255,255,.5)!important;border-bottom:1px solid rgba(255,255,255,.5)!important;border-left:1px solid rgba(255,255,255,.5)!important}.row-header-sub{font-weight:400;font-size:1rem;color:#ecf0f1!important;margin-top:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-align:center}.row-header-special-needs-class{font-size:.8rem;margin-top:0;color:#bdc3c7!important;overflow:visible;text-overflow:clip;white-space:normal;word-break:break-word;line-height:1.1;max-width:100%;flex-shrink:0}.timetable-grid-container[data-mode=teacher] tr:not(.sn-teacher-row) .row-header-special-needs-class{font-size:1rem;line-height:1.2}.timetable-grid-container[data-mode=class] .row-header-main-special-needs{font-size:.8rem;font-weight:500;white-space:nowrap;overflow:visible;text-overflow:clip;word-break:normal;overflow-wrap:normal}.timetable-grid-container[data-mode=class] .row-header-main-special-needs-wrap{font-size:.8rem;font-weight:500;white-space:pre-line;overflow:visible;text-overflow:clip;word-break:keep-all;overflow-wrap:normal;line-height:1.2}.timetable-grid-container[data-mode=teacher] .row-header-teacher-name{font-size:var(--tt-font-size-row-header-teacher-name-teacher-view, 16px)!important}.timetable-grid-container[data-mode=class] .row-header-teacher-name{font-size:var(--tt-font-size-row-header-teacher-name-class-view, 16px)!important}.row-header-position{font-size:var(--tt-font-size-row-header-position, 13px)!important}.timetable-grid-container[data-mode=teacher] .row-header-class-name{font-size:var(--tt-font-size-row-header-class-name-teacher-view, 14px)!important}.timetable-grid-container[data-mode=class] .row-header-class-name{font-size:var(--tt-font-size-row-header-class-name-class-view, 14px)!important}.grid-cell{min-height:50px;padding:.15rem .25rem;cursor:pointer;transition:background-color .2s}.timetable-grid.read-only .grid-cell{cursor:default}.grid-cell{position:relative;vertical-align:top;text-align:center;word-wrap:break-word;overflow:hidden;max-width:100%;box-sizing:border-box}.timetable-grid-container[data-mode=class] .grid-cell{min-height:45px;padding:.1rem .25rem;vertical-align:middle}.timetable-grid-container[data-mode=class] .timetable-grid th,.timetable-grid-container[data-mode=class] .timetable-grid td,.timetable-grid-container[data-mode=teacher] .grid-day-header,.timetable-grid-container[data-mode=teacher] .grid-period-header{padding:.1rem .25rem}.grid-cell-empty{background-color:#f8f9fa;border-top:1px solid #999;border-right:1px solid #999;border-bottom:1px solid #999;border-left:1px solid #999}.timetable-grid th.grid-cell-empty.day-first-cell,.timetable-grid td.grid-cell-empty.day-first-cell{border-left:2px solid #34495e!important;border-top:1px solid #999!important;border-right:1px solid #999!important;border-bottom:1px solid #999!important}.timetable-grid th.grid-cell-empty.first-day-first-cell,.timetable-grid td.grid-cell-empty.first-day-first-cell{border-left:1px solid #999!important}.grid-cell-filled{border-top:1px solid #999;border-right:1px solid #999;border-bottom:1px solid #999}.timetable-grid th.grid-cell-filled.day-first-cell,.timetable-grid td.grid-cell-filled.day-first-cell{border-left:2px solid #34495e!important;border-top:1px solid #999!important;border-right:1px solid #999!important;border-bottom:1px solid #999!important}.timetable-grid th.grid-cell-filled.first-day-first-cell,.timetable-grid td.grid-cell-filled.first-day-first-cell{border-left:1px solid #999!important}.grid-cell-filled.grid-cell-locked{position:relative;box-shadow:inset 0 0 0 1px #c62828}.grid-cell-filled.grid-cell-locked .cell-content-locked{background-color:transparent!important}.grid-cell-filled.grid-cell-locked:hover{opacity:.9}.grid-cell-empty:hover{background-color:#e9ecef}.grid-cell-drag-over{background-color:#e3f2fd!important;border:2px dashed #2196f3!important;box-shadow:inset 0 0 10px #2196f34d;animation:pulse-border 1s ease-in-out infinite}.grid-cell-droppable-hint{background-color:#2196f314!important;border:1px dashed rgba(33,150,243,.35)}@keyframes pulse-border{0%,to{border-color:#2196f3;box-shadow:inset 0 0 10px #2196f34d}50%{border-color:#1976d2;box-shadow:inset 0 0 15px #2196f380}}.grid-cell-dragging{transform:scale(.92);cursor:grabbing!important;transition:transform .2s;position:relative}.grid-cell-locked{position:relative}.grid-cell-filled.grid-cell-locked:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:repeating-linear-gradient(45deg,transparent,transparent 10px,rgba(198,40,40,.06) 10px,rgba(198,40,40,.06) 20px);pointer-events:none;border-radius:2px;z-index:0}.grid-cell-blocked{background:#e0f2fe;border:1px solid #7dd3fc}.grid-cell-blocked.grid-cell-blocked-dark{background:#1e3a5f;border:1px solid #3b82f6}.cell-blocked-banner{display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600;padding:.25rem;height:100%;overflow:hidden}.cell-blocked-banner .cell-blocked-reason{font-size:.7rem;font-weight:600;line-height:1.2;text-align:center;word-break:break-all;max-width:100%}.grid-cell-unavailable{background:repeating-linear-gradient(45deg,#dc26260d,#dc26260d 10px,#dc26261a 10px,#dc26261a 20px),#fee2e2;border:1px dashed rgba(220,38,38,.4)!important}.grid-cell-unavailable.grid-cell-unavailable-dark{background:repeating-linear-gradient(45deg,#fbbf2426,#fbbf2426 10px,#fbbf2440 10px,#fbbf2440 20px),#555;border:1px dashed rgba(251,191,36,.8)!important}.grid-cell-selected-for-placement{background-color:#fff9c4!important;border:3px solid #fbc02d!important;box-shadow:0 0 8px #fbc02d80!important;outline:2px solid #f9a825;outline-offset:2px}.grid-cell-selected-for-placement:focus{outline:2px solid #f9a825!important;outline-offset:2px!important}.grid-cell:focus:not(.grid-cell-selected-for-placement){outline:none!important;box-shadow:none!important}.cell-unavailable-mark{display:flex;align-items:center;justify-content:center;height:100%;width:100%;position:absolute;top:0;left:0;pointer-events:none}.cell-unavailable-mark .unavailable-mark{font-size:1.5rem;font-weight:700;color:#dc2626;line-height:1}.grid-cell-placeable{border:2px dashed #f9a825!important;background-color:#f9a8251f!important}.grid-cell-highlighted-same-class{border:2px solid #ffc107!important}.grid-cell-swap-conflict{background-color:#ff980059!important;border:2px solid #e65100!important;box-shadow:inset 0 0 0 1px #e6510066}.grid-cell-swap-conflict .cell-content,.grid-cell-swap-conflict .cell-content-locked{background-color:transparent!important}.grid-cell-swap-destination{box-shadow:0 0 0 2px #1976d2!important;background-color:#1976d21f!important}.grid-cell-swap-destination .cell-content,.grid-cell-swap-destination .cell-content-locked{background-color:transparent!important}.cell-blocking-hint{display:flex;align-items:center;justify-content:center;height:100%;width:100%;position:absolute;top:0;left:0;pointer-events:none;opacity:.5}.cell-blocking-hint .blocking-hint-text{font-size:.7rem;color:#6b7280;font-weight:500;background-color:#fffc;padding:.2rem .4rem;border-radius:4px;border:1px dashed #9ca3af}.cell-unavailable-mark .unavailable-text{font-size:.75rem;font-weight:600;color:#b91c1c;margin-left:.35rem}.cell-daily-change{margin-top:.25rem;padding:.2rem .4rem;border-radius:4px;font-size:.8rem;font-weight:600;text-align:center}.timetable-grid-container[data-mode=class] .cell-daily-change{margin-top:.1rem;padding:.15rem .3rem}.cell-daily-change.canceled{background-color:#fee2e2;color:#b91c1c}.cell-daily-change.swapped{background-color:#fef3c7;color:#92400e}.cell-daily-change.covered{background-color:#dbeafe;color:#1e40af}.cell-content{cursor:grab;position:relative;z-index:2;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;min-width:0;box-sizing:border-box}.cell-content:active{cursor:grabbing}.timetable-grid.read-only .cell-content{cursor:default}.timetable-grid.read-only *{cursor:default!important}.cell-content-locked{cursor:not-allowed;opacity:1;position:relative;-webkit-user-select:none;user-select:none;z-index:10!important;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;min-width:0;box-sizing:border-box}.cell-content-locked:hover{background-color:#ff98001a!important}.grid-cell-filled.grid-cell-locked .cell-content-locked{background-color:transparent!important;z-index:10!important}.grid-cell-filled.grid-cell-locked .cell-subject{font-weight:600;font-size:var(--tt-font-size-cell-subject, 1.05rem);color:#000;margin-bottom:.05rem;line-height:1.1;text-align:center;position:relative;z-index:10!important}.exchange-label{color:#1976d2;font-weight:700;font-size:.85em;line-height:1;margin-top:.02rem;display:block}.cell-classes+.exchange-label{margin-top:.02rem}.cell-classes:has(+.exchange-label){margin-bottom:0;line-height:1}.cell-exchange-marker{position:absolute;top:2px;right:2px;font-size:.7rem;color:#2196f3;font-weight:700;z-index:5;pointer-events:none}.grid-cell-swap-selected,.grid-cell-swap-range-selected{background-color:#e3f2fd!important;border:2px solid #2196f3!important;box-shadow:0 0 8px #2196f380!important}.grid-cell-swap-target-selected{background-color:#fff9c4!important;border:2px solid #fbc02d!important;box-shadow:0 0 8px #fbc02d80!important}.timetable-grid-container[data-mode=class] .grid-cell-filled.grid-cell-locked .cell-subject{margin-bottom:.02rem;line-height:1.05}.grid-cell-filled.grid-cell-locked .cell-classes,.grid-cell-filled.grid-cell-locked .cell-teachers{font-size:var(--tt-font-size-cell-sub, .85rem);color:#000;margin-top:.02rem;line-height:1.05;position:relative;text-align:center;z-index:10!important}.timetable-grid-container[data-mode=class] .grid-cell-filled.grid-cell-locked .cell-classes,.timetable-grid-container[data-mode=class] .grid-cell-filled.grid-cell-locked .cell-teachers{margin-top:.02rem;line-height:1}.cell-subject{font-weight:600;font-size:var(--tt-font-size-cell-subject, 1.05rem);color:#000;margin-bottom:.05rem;line-height:1.1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-align:center}.timetable-grid-container[data-mode=class] .cell-subject{margin-bottom:.02rem;line-height:1.05}.cell-classes,.cell-teachers{font-size:var(--tt-font-size-cell-sub, .8rem);color:#000;margin-top:.02rem;line-height:1.05;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;width:100%;min-width:0;max-width:100%}.timetable-grid-container[data-mode=teacher] .cell-classes{font-size:var(--tt-font-size-cell-sub, .95rem)}.timetable-grid-container[data-mode=teacher] .cell-classes-special-needs{font-size:.8rem;white-space:normal;word-break:break-word;text-overflow:clip}.timetable-grid-container[data-mode=teacher] tr.sn-teacher-row .cell-content,.timetable-grid-container[data-mode=teacher] tr.sn-teacher-row .cell-content-locked{justify-content:flex-start;align-items:center;padding-top:.15rem}.timetable-grid-container[data-mode=class] .cell-classes,.timetable-grid-container[data-mode=class] .cell-teachers{margin-top:.02rem;line-height:1}.grid-cell-filled[data-cell-dark=true] .cell-subject,.grid-cell-filled[data-cell-dark=true] .cell-classes,.grid-cell-filled[data-cell-dark=true] .cell-teachers{color:#fff!important}.timetable-page--cell-wrap .cell-subject,.timetable-page--cell-wrap .cell-classes,.timetable-page--cell-wrap .cell-teachers{white-space:normal;overflow-wrap:break-word;word-break:break-word;text-overflow:clip;overflow:visible}.timetable-page--cell-wrap .cell-content,.timetable-page--cell-wrap .cell-content-locked{align-items:center;justify-content:center}.cell-lock-icon,.cell-warning-icon{position:absolute;top:2px;right:2px;z-index:10}.cell-lock-icon{background-color:#ff9800;color:#fff;font-size:.7rem;line-height:1;border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px #0000004d;font-weight:700;border:2px solid #fff;position:absolute;top:2px;left:2px;z-index:11}.cell-warning-icon{font-size:.9rem}.timetable-grid-loading{padding:2rem;text-align:center;color:#7f8c8d;display:flex;align-items:center;justify-content:center;gap:.5rem}.timetable-grid-loading:before{content:"";width:20px;height:20px;border:3px solid #e0e0e0;border-top-color:#3498db;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 1024px){.timetable-grid-container{max-height:500px}.grid-cell{min-height:60px;padding:.4rem}.cell-subject{font-size:.95rem}.cell-classes,.cell-teachers{font-size:.75rem}}@media (max-width: 768px){.timetable-grid-container{max-height:400px;-webkit-overflow-scrolling:touch}.timetable-grid th,.timetable-grid td{padding:.3rem;font-size:.85rem}.grid-header{font-size:.85rem}.grid-day-header{font-size:.8rem}.grid-period-header{font-size:.75rem;padding:.1rem .15rem}.grid-row-header{width:105px;min-width:105px;max-width:105px;font-size:.85rem;padding:.15rem .2rem}.timetable-grid-container[data-mode=teacher] .row-header-main{font-size:.9rem}.timetable-grid-container[data-mode=teacher] .row-header-special-needs-class{font-size:.8rem;line-height:1;padding:0}.timetable-grid-container[data-mode=teacher] tr:not(.sn-teacher-row) .row-header-special-needs-class{font-size:.95rem;line-height:1.2}.timetable-grid-container[data-mode=teacher] .cell-classes{font-size:.9rem}.timetable-grid-container[data-mode=teacher] .cell-classes-special-needs{font-size:.75rem}.grid-cell{min-height:55px;padding:.3rem;font-size:.8rem}.cell-subject{font-size:.9rem;margin-bottom:.2rem}.cell-classes,.cell-teachers{font-size:.72rem;margin-top:.1rem}.timetable-grid-container[data-mode=teacher] .cell-classes{font-size:.85rem}.timetable-grid-container[data-mode=teacher] .cell-classes-special-needs{font-size:.72rem}.cell-lock-icon,.cell-warning-icon{font-size:.7rem;top:1px;right:1px}}@media (max-width: 480px){.timetable-grid-container{max-height:300px}.timetable-grid th,.timetable-grid td{padding:.25rem;font-size:.75rem}.grid-header{font-size:.75rem}.grid-day-header{font-size:.7rem}.grid-period-header{font-size:.65rem;padding:.05rem .1rem}.grid-row-header{width:90px;min-width:90px;max-width:90px;font-size:.75rem;padding:.1rem .15rem}.grid-cell{min-height:50px;padding:.25rem;font-size:.7rem}.cell-subject{font-size:.85rem;margin-bottom:.15rem}.cell-classes,.cell-teachers{font-size:.7rem;margin-top:.1rem}.timetable-grid-container[data-mode=teacher] .cell-classes{font-size:.8rem}.timetable-grid-container[data-mode=teacher] .cell-classes-special-needs{font-size:.7rem}.cell-lock-icon,.cell-warning-icon{font-size:.65rem}}.grid-day-spacer,.grid-period-spacer,.grid-cell-spacer{border-top:none!important;border-bottom:none!important;border-left:2px solid #34495e!important;border-right:none!important;background:#fff!important;padding:0!important;width:8px!important;min-width:8px!important;max-width:8px!important;position:relative;z-index:2;box-sizing:border-box}.timetable-grid .grid-day-spacer{border-top:1px solid #ffffff!important}.grid-cell-spacer{width:8px!important;min-width:8px!important;max-width:8px!important}.grid-period-header.day-first-period{border-left:2px solid #2c3e50!important}.grid-cell.day-first-cell{border-left:2px solid #34495e!important}.grid-period-header.first-day-first-period{border-left:1px solid rgba(255,255,255,.5)!important}.grid-cell.first-day-first-cell{border-left:1px solid #999!important}.grid-period-header.day-last-period{border-right:none!important}.grid-period-header.day-last-period.last-day{border-right:2px solid #2c3e50!important}.grid-cell.day-last-cell{border-right:none!important}.grid-cell.day-last-cell.last-day{border-right:2px solid #34495e!important}.grid-cell-has-comment{box-shadow:inset 0 0 0 2px #e74c3c!important;position:relative}.grid-cell-has-comment:after{content:"";position:absolute;top:2px;right:2px;width:8px;height:8px;background-color:#e74c3c;border-radius:50%;z-index:1}.grid-cell-has-comment:has(.cell-comment-count-badge):after{display:none}.cell-comment-count-badge{position:absolute;top:2px;right:2px;min-width:18px;height:18px;padding:0 4px;background-color:#e74c3c;color:#fff;border-radius:9px;font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center;z-index:10;line-height:1;box-shadow:0 1px 3px #0000004d}.swap-arrows-overlay{z-index:50}.comment-popup{max-width:400px;margin-bottom:8px}.comment-popup-content{background-color:#fff;color:#2c3e50;padding:.75rem;border-radius:8px;font-size:.9rem;line-height:1.5;white-space:pre-wrap;word-wrap:break-word;box-shadow:0 2px 8px #00000026;position:relative;display:flex;flex-direction:column;gap:0;border:1px solid #e0e0e0;min-width:350px;max-width:450px;max-height:400px;overflow-y:auto}.comment-popup-item{display:flex!important;flex-direction:row!important;gap:.75rem;align-items:flex-start;width:100%;box-sizing:border-box;padding-bottom:.75rem}.comment-popup-item:last-child{padding-bottom:0}.comment-popup-divider{height:1px;background-color:#e0e0e0;margin:.5rem 0;width:100%;flex-shrink:0}.comment-popup-avatar{flex-shrink:0;width:24px;height:24px;display:flex;align-items:flex-start;justify-content:center;margin-top:2px}.comment-popup-avatar svg{width:100%;height:100%}.comment-popup-info{display:flex;flex-direction:column;gap:.125rem;align-items:flex-start;text-align:left;flex-shrink:0;min-width:80px;max-width:120px}.comment-popup-author{font-size:.85rem;font-weight:600;color:#2c3e50;line-height:1.3;word-break:break-word}.comment-popup-timestamp{font-size:.75rem;color:#7f8c8d;line-height:1.2}.comment-popup-item-right{flex:1 1 auto!important;min-width:150px;display:flex!important;flex-direction:column!important;box-sizing:border-box}.comment-popup-text{white-space:pre-wrap;word-wrap:break-word;word-break:normal;color:#2c3e50;line-height:1.6;font-size:.95rem;overflow-wrap:break-word}.comment-popup-check{flex-shrink:0;display:flex;align-items:flex-start;justify-content:center;margin-left:.5rem}.comment-popup-check-btn{background:none;border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;transition:background-color .2s}.comment-popup-check-btn:hover{background-color:#f0f0f0}.comment-popup-check-btn.resolved svg{fill:#4caf50}.comment-popup-item.resolved{opacity:.5;filter:grayscale(.3)}.comment-popup-item.resolved .comment-popup-text,.comment-popup-item.resolved .comment-popup-author,.comment-popup-item.resolved .comment-popup-timestamp{color:#95a5a6}.comment-popup-arrow{position:absolute;bottom:-6px;left:50%;transform:translate(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #ffffff;filter:drop-shadow(0 2px 2px rgba(0,0,0,.1))}.comment-popup-arrow:before{content:"";position:absolute;bottom:1px;left:50%;transform:translate(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #e0e0e0}.form-group input:disabled,.form-group select:disabled{background-color:#f5f5f5;cursor:not-allowed}.form-hint{margin-top:.5rem;font-size:.85rem;color:#666}.cell-comment-dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000}.cell-comment-dialog{background:#fff;border-radius:8px;width:90%;max-width:500px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 4px 20px #0000004d}.cell-comment-dialog-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem}.cell-comment-dialog-header h3{margin:0;font-size:1.2rem;font-weight:600;color:#2c3e50}.cell-comment-dialog-close{background:none;border:none;font-size:1.5rem;color:#7f8c8d;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s,color .2s}.cell-comment-dialog-close:hover{background-color:#ecf0f1;color:#2c3e50}.cell-comment-dialog-body{padding:0 1.5rem 1.5rem;flex:1;overflow-y:auto}.cell-comment-textarea{width:100%;min-height:120px;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:.95rem;font-family:inherit;resize:vertical;line-height:1.5}.cell-comment-textarea:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.cell-comment-dialog-hint{margin-top:.5rem;font-size:.85rem;color:#7f8c8d}.cell-comment-dialog-footer{display:flex;gap:.5rem;padding:1rem 1.5rem;border-top:1px solid #e0e0e0;align-items:center}.cell-comment-dialog-delete{padding:.5rem 1rem;background:#e74c3c;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background-color .2s}.cell-comment-dialog-delete:hover:not(:disabled){background:#c0392b}.cell-comment-dialog-delete:disabled{background:#bdc3c7;cursor:not-allowed}.cell-comment-dialog-cancel{padding:.5rem 1rem;background:#fff;color:#333;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background-color .2s}.cell-comment-dialog-cancel:hover{background:#f5f5f5}.cell-comment-dialog-save{padding:.5rem 1rem;background:#3498db;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background-color .2s}.cell-comment-dialog-save:hover:not(:disabled){background:#2980b9}.cell-comment-dialog-save:disabled{background:#bdc3c7;cursor:not-allowed}.cell-comment-list{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem;max-height:400px;overflow-y:auto;padding-right:.5rem}.cell-comment-item{border:1px solid #e0e0e0;border-radius:6px;padding:.75rem;background-color:#f8f9fa;margin-bottom:.75rem;width:100%;box-sizing:border-box}.cell-comment-item:last-child{margin-bottom:0}.cell-comment-item-content{display:flex!important;flex-direction:row!important;gap:.75rem;align-items:flex-start;width:100%;box-sizing:border-box}.cell-comment-item-left{display:flex!important;flex-direction:column!important;align-items:center;gap:.5rem;flex-shrink:0;width:90px;min-width:90px;max-width:90px}.cell-comment-avatar{width:24px;height:24px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.cell-comment-avatar svg{width:100%;height:100%}.cell-comment-item-author{display:flex;flex-direction:column;gap:.125rem;align-items:center;text-align:center;width:100%}.cell-comment-author-name{font-weight:600;font-size:.85rem;color:#2c3e50;line-height:1.3;word-break:break-word}.cell-comment-timestamp{font-size:.75rem;color:#7f8c8d;line-height:1.2}.cell-comment-item-right{flex:1 1 auto!important;min-width:0;display:flex!important;flex-direction:column!important;gap:.5rem;box-sizing:border-box}.cell-comment-item-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:.25rem}.cell-comment-edit-btn,.cell-comment-delete-btn{padding:.25rem .75rem;border:1px solid #ddd;border-radius:4px;background:#fff;color:#333;font-size:.85rem;cursor:pointer;transition:background-color .2s}.cell-comment-edit-btn:hover{background:#f5f5f5}.cell-comment-delete-btn{color:#e74c3c;border-color:#e74c3c}.cell-comment-delete-btn:hover{background:#fee}.cell-comment-item-text{font-size:.95rem;color:#2c3e50;line-height:1.6;white-space:pre-wrap;word-wrap:break-word}.cell-comment-edit-form{display:flex;flex-direction:column;gap:.5rem}.cell-comment-edit-actions{display:flex;gap:.5rem;justify-content:flex-end}.cell-comment-cancel-btn{padding:.4rem .8rem;background:#fff;color:#333;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:.85rem;transition:background-color .2s}.cell-comment-cancel-btn:hover{background:#f5f5f5}.cell-comment-save-btn{padding:.4rem .8rem;background:#3498db;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.85rem;transition:background-color .2s}.cell-comment-save-btn:hover:not(:disabled){background:#2980b9}.cell-comment-save-btn:disabled{background:#bdc3c7;cursor:not-allowed}.cell-comment-new{padding-top:0;margin-top:0}.cell-comment-new-label{font-size:.9rem;font-weight:600;color:#2c3e50;margin-bottom:.5rem}.comments-list-dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000}.comments-list-dialog{background:#fff;border-radius:8px;width:90%;max-width:700px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 4px 20px #0000004d}.comments-list-dialog-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid #e0e0e0}.comments-list-dialog-header h3{margin:0;font-size:1.2rem;font-weight:600;color:#2c3e50}.comments-list-dialog-close{background:none;border:none;font-size:1.5rem;color:#7f8c8d;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s,color .2s}.comments-list-dialog-close:hover{background-color:#ecf0f1;color:#2c3e50}.comments-list-dialog-body{padding:1.5rem;flex:1;overflow-y:auto;min-height:200px}.comments-list-empty{text-align:center;color:#7f8c8d;padding:2rem}.comments-list{display:flex;flex-direction:column;gap:.75rem}.comments-list-item{padding:.75rem 1rem;border:1px solid #e0e0e0;border-radius:6px;cursor:pointer;transition:background-color .2s,border-color .2s,box-shadow .2s;background-color:#fff}.comments-list-item:hover{background-color:#f8f9fa;border-color:#3498db;box-shadow:0 2px 4px #3498db1a}.comments-list-item-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.comments-list-item-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:.5rem}.comments-list-item-primary{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem;font-size:.9rem;line-height:1.4}.comments-list-item-datetime{font-weight:600;color:#2c3e50}.comments-list-item-separator{color:#95a5a6;margin:0 .125rem}.comments-list-item-subject{color:#27ae60;font-weight:500}.comments-list-item-teacher{color:#2980b9;font-weight:500}.comments-list-item-user{color:#7f8c8d;font-size:.85rem}.comments-list-item-comment{font-size:.95rem;color:#2c3e50;line-height:1.6;white-space:pre-wrap;word-wrap:break-word;padding:.5rem .75rem;background-color:#f8f9fa;border-radius:4px;border-left:3px solid #3498db;margin-top:.25rem}.comments-list-item-right{display:flex;flex-direction:column;align-items:flex-end;gap:.5rem;flex-shrink:0}.comments-list-item-actions{display:flex;flex-direction:column;align-items:center;gap:.25rem}.comments-list-item-date{font-size:.8rem;color:#95a5a6;white-space:nowrap;margin-top:.125rem}.comments-list-item-check-btn{background:none;border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;transition:background-color .2s;flex-shrink:0}.comments-list-item-check-btn:hover{background-color:#f0f0f0}.comments-list-item-check-btn.resolved svg{fill:#4caf50}.comments-list-item-delete-btn{background:none;border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;transition:background-color .2s;flex-shrink:0}.comments-list-item-delete-btn:hover:not(:disabled){background-color:#fee}.comments-list-item-delete-btn:disabled{opacity:.5;cursor:not-allowed}.comments-list-item-resolved-badge{display:inline-block;padding:.125rem .5rem;background-color:#4caf50;color:#fff;border-radius:12px;font-size:.75rem;font-weight:600;margin-right:.5rem}.comments-list-item.resolved{opacity:.6;filter:grayscale(.3)}.comments-list-item.resolved .comments-list-item-datetime,.comments-list-item.resolved .comments-list-item-subject,.comments-list-item.resolved .comments-list-item-teacher,.comments-list-item.resolved .comments-list-item-user,.comments-list-item.resolved .comments-list-item-comment{color:#95a5a6}.comments-list-dialog-footer{padding:1rem 1.5rem;border-top:1px solid #e0e0e0;display:flex;justify-content:flex-end}.comments-list-dialog-close-btn{padding:.5rem 1rem;background:#3498db;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background-color .2s}.comments-list-dialog-close-btn:hover{background:#2980b9}.context-menu{background:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 4px 12px #00000026;min-width:160px;padding:4px 0;-webkit-user-select:none;user-select:none}.context-menu-item{display:block;width:100%;padding:8px 16px;text-align:left;background:none;border:none;cursor:pointer;font-size:.9rem;color:#333;transition:background-color .15s}.context-menu-item:hover:not(:disabled){background-color:#f0f0f0}.context-menu-item:disabled{color:#999;cursor:not-allowed}.context-menu-separator{height:1px;background-color:#e0e0e0;margin:4px 0}.timetable-page{display:flex;flex-direction:column;height:100%;overflow:hidden}.timetable-body-row{display:flex;flex:1;min-height:0;overflow:hidden}.timetable-body-column{display:flex;flex-direction:column;flex:1;min-width:0;overflow:hidden}.swap-mode-message{background-color:#e3f2fd;border:2px solid #2196f3;border-radius:4px;padding:.75rem 1rem;margin:.5rem 0;color:#1976d2;font-size:.95rem;font-weight:500;text-align:center;box-shadow:0 2px 4px #2196f333}.timetable-content{display:flex;flex:1;gap:.5rem;overflow:hidden;min-width:0}.timetable-content--sidebar-open{margin-right:391px}.timetable-content--swap-panel-open{margin-right:400px}.timetable-content--sidebar-open.timetable-content--swap-panel-open{margin-right:791px}.timetable-split-container{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.timetable-section{background:#fff;border-radius:8px;padding:.5rem;box-shadow:0 2px 4px #0000001a;overflow:hidden;display:flex;flex-direction:column;min-height:0;flex-shrink:0;width:100%;max-width:100%;box-sizing:border-box}.timetable-section>*{flex:1;min-height:0;height:100%}.timetable-section-top{border-radius:8px 8px 0 0}.timetable-section-bottom{border-radius:0 0 8px 8px}.ai-support-panel-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:1000;display:flex;align-items:center;justify-content:flex-end;padding:1rem;pointer-events:auto}.ai-support-panel-container{background:#fff;border-radius:8px;box-shadow:0 4px 12px #00000026;width:450px;max-width:90vw;height:90vh;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;pointer-events:auto;position:relative;z-index:1001}.ai-support-panel-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid #eee;background:#f8f9fa}.ai-support-panel-header h3{margin:0;font-size:1.2rem;font-weight:600}.ai-support-panel-close{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#666;padding:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s;pointer-events:auto;z-index:1001}.ai-support-panel-close:hover{background:#e9ecef}.ai-support-panel-content{flex:1;overflow:hidden;display:flex;flex-direction:column;min-height:0;position:relative;pointer-events:auto}.ai-support-panel-content>:global(.ai-support-panel){flex:1;overflow-y:auto;overflow-x:hidden;padding:0;max-width:100%;border:none;border-radius:0;min-height:0;display:flex;flex-direction:column;height:100%}.timetable-resizer{height:8px;background:#ddd;cursor:row-resize;position:relative;flex-shrink:0;z-index:10;transition:background-color .2s}.timetable-resizer:hover{background:#bbb}.timetable-resizer:active{background:#999}.timetable-resizer:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:40px;height:4px;background:#999;border-radius:2px}.timetable-grids{flex:1;display:flex;flex-direction:column;gap:.5rem;overflow-y:auto}.section-title{font-size:1.2rem;font-weight:600;margin-bottom:.5rem;color:#2c3e50}@media (max-width: 1024px){.timetable-content{flex-direction:column;gap:.5rem}.timetable-section{padding:.5rem}.section-title{font-size:1.1rem;margin-bottom:.5rem}}@media (max-width: 768px){.timetable-content{flex-direction:column;gap:.75rem;padding:.5rem}.timetable-grids{gap:.75rem}.timetable-section{padding:.5rem;border-radius:4px}.section-title{font-size:1rem;margin-bottom:.5rem}}@media (max-width: 480px){.timetable-content{padding:.25rem;gap:.5rem}.timetable-section{padding:.5rem}.section-title{font-size:.9rem;margin-bottom:.5rem}}.timetable-version-footer{position:sticky;bottom:0;left:0;right:0;background-color:#2c3e50;border-top:1px solid rgba(255,255,255,.1);z-index:50;flex-shrink:0}.version-tabs-container{width:100%;background-color:#2c3e50;border-top:1px solid rgba(255,255,255,.1);padding:0;overflow:hidden;display:flex;flex-direction:column;gap:0}.version-tabs-row{flex-shrink:0}.version-tabs-row-month{padding-top:4px;padding-left:4px;padding-right:4px}.version-tabs-row-weeks{padding-left:4px;padding-right:4px;padding-bottom:2px;border-top:1px solid rgba(255,255,255,.08);min-height:25px;box-sizing:content-box}.version-tab.version-tab-weekly{width:max-content;min-width:180px;max-width:none;padding-right:0;box-sizing:border-box;gap:0;justify-content:flex-start}.version-tab.version-tab-weekly .version-tab-text{overflow:visible;text-overflow:unset;min-width:min-content;padding-right:0;flex:0 1 auto;flex-shrink:0;text-align:center}.version-tab.version-tab-weekly .version-tab-close{flex-shrink:0;margin:0 0 0 2px}.version-tabs-row-weeks .version-tab-empty{padding:2px 8px;font-size:.85rem}.version-tab-month{min-width:48px;max-width:none;width:max-content}.version-tab-annual{min-width:72px;max-width:none;width:max-content}.version-tab-base-switch{min-width:120px;max-width:none;width:max-content;background-color:#ff980040;border-color:#ff980080}.version-tab-base-switch:hover{background-color:#ff980066;border-color:#ff9800b3}.version-tabs-scroll{display:flex;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.3) #2c3e50;-ms-overflow-style:-ms-autohiding-scrollbar;align-items:flex-end}.version-tabs-scroll::-webkit-scrollbar{height:8px}.version-tabs-scroll::-webkit-scrollbar-track{background:#2c3e50}.version-tabs-scroll::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:4px}.version-tabs-scroll::-webkit-scrollbar-thumb:hover{background:#ffffff80}.version-tab{position:relative;display:flex;align-items:center;justify-content:space-between;gap:4px;min-height:24px;height:auto;padding:.25em 8px .25em 12px;margin-right:2px;background-color:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-bottom:none;border-radius:4px 4px 0 0;cursor:pointer;font-size:var(--tt-font-size-sheet-tab, .75rem);color:#fff;white-space:nowrap;min-width:60px;max-width:none;width:max-content;transition:background-color .15s ease;z-index:1;outline:none;flex-shrink:0;box-sizing:border-box}.version-tab:hover:not([aria-disabled=true]):not(.active){background-color:#ffeb3b80;border-color:#ffeb3bcc}.version-tab:active:not([aria-disabled=true]):not(.active){background-color:#ffeb3b66}.version-tab:focus-visible{outline:2px solid #ffc107;outline-offset:2px;background-color:#ffc1074d;border-color:#ffc107}.version-tab:focus:not(:focus-visible){outline:none}.version-tab.active{background-color:#fff;border-bottom:1px solid #ffffff;border-color:#ffffff4d;color:#2c3e50;z-index:2;box-shadow:0 -2px 4px #0000001a;margin-bottom:-1px;min-height:25px;height:auto}.version-tab[aria-disabled=true]{opacity:.6;cursor:not-allowed}.version-tab-text{overflow:visible;text-overflow:unset;white-space:nowrap;flex:0 1 auto;flex-shrink:0;text-align:center;line-height:1.2;padding-right:4px;min-width:min-content}.version-tab-close{background:none;border:none;color:#dc2626;cursor:pointer;font-size:1.2rem;font-weight:700;line-height:1;padding:0;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;flex-shrink:0;opacity:0;transition:opacity .15s ease,background-color .15s ease}.version-tab:hover .version-tab-close{opacity:1}.version-tab-close:hover{background-color:#dc262626}.version-tab.active .version-tab-close{color:#dc2626}.version-tab.active:hover .version-tab-close{opacity:1}.version-tab.active .version-tab-close:hover{background-color:#dc262626}.version-tab-lock-icon{font-size:.9rem;margin-left:4px;flex-shrink:0;opacity:.8}.version-tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;background-color:#e74c3c;color:#fff;border-radius:9px;font-size:11px;font-weight:600;line-height:1;margin-left:4px;box-shadow:0 1px 3px #0000004d}.version-tab-add{font-weight:700;font-size:1.1rem;min-width:40px;max-width:none;width:max-content;background-color:#4caf5033;border-color:#4caf5080}.version-tab-add:hover:not(:disabled){background-color:#4caf5066;border-color:#4caf50cc}.version-tab-add:active:not(:disabled){background-color:#4caf504d}@media (max-width: 1024px){.version-tab{padding:.25em 10px;min-width:50px;max-width:none;width:max-content;min-height:22px;height:auto}.version-tab.active{min-height:23px;height:auto}}@media (max-width: 768px){.version-tab{padding:.25em 8px;min-width:40px;max-width:none;width:max-content;min-height:20px;height:auto}.version-tab.active{min-height:21px;height:auto}}@media (max-width: 480px){.version-tab{padding:.25em 6px;min-width:35px;max-width:none;width:max-content;min-height:18px;height:auto}.version-tab.active{min-height:19px;height:auto}}.masters-page{display:flex;flex-direction:column;gap:1rem}[data-editing-cell]{min-width:400px!important;max-width:600px!important;width:auto!important;z-index:10000!important;position:relative}.masters-table td [data-editing-cell]{z-index:10000!important;position:absolute!important}.subject-checkbox-group{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.5rem;padding:.75rem;border:1px solid #ddd;border-radius:4px;background-color:#f9fafb;max-height:200px;overflow-y:auto}.subject-checkbox-label{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;padding:.4rem .6rem;border-radius:4px;transition:background-color .2s;-webkit-user-select:none;user-select:none}.subject-checkbox-label:hover{background-color:#e5e7eb}.subject-checkbox-label input[type=checkbox]{cursor:pointer;width:1.15rem;height:1.15rem;flex-shrink:0;margin:0;accent-color:#3498db}.subject-checkbox-label span{font-size:.95rem;line-height:1.15rem}.role-checkbox-groups{display:flex;flex-direction:column;gap:1rem;margin-top:.5rem}.role-category-group{display:flex;flex-direction:column;gap:.5rem}.role-category-header{font-weight:600;font-size:.9rem;color:#333;padding:.25rem 0;border-bottom:1px solid #e5e7eb}.role-checkbox-group{display:flex;flex-wrap:wrap;gap:.75rem;padding:.75rem;border:1px solid #ddd;border-radius:4px;background-color:#f9fafb;max-height:150px;overflow-y:auto}.role-checkbox-label{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;padding:.4rem .6rem;border-radius:4px;transition:background-color .2s;-webkit-user-select:none;user-select:none}.role-checkbox-label:hover{background-color:#e5e7eb}.role-checkbox-label input[type=checkbox]{cursor:pointer;width:1.15rem;height:1.15rem;flex-shrink:0;margin:0;accent-color:#3498db}.role-checkbox-label span{font-size:.95rem;line-height:1.15rem}.class-assignment-section{margin-top:.5rem;padding:1rem;border:1px solid #ddd;border-radius:4px;background-color:#f9fafb}.assignment-type-selector{display:flex;gap:1rem;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #e5e7eb}.assignment-type-option{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.assignment-type-option input[type=radio]{cursor:pointer;width:1.15rem;height:1.15rem;accent-color:#3498db}.assignment-type-option span{font-size:.95rem}.grade-selection,.class-selection{margin-top:.5rem}.grade-checkbox-group,.class-checkbox-group{display:flex;flex-wrap:wrap;gap:.75rem;padding:.75rem;border:1px solid #ddd;border-radius:4px;background-color:#fff;max-height:200px;overflow-y:auto}.grade-checkbox-label,.class-checkbox-label{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;padding:.4rem .6rem;border-radius:4px;transition:background-color .2s;-webkit-user-select:none;user-select:none}.grade-checkbox-label:hover,.class-checkbox-label:hover{background-color:#e5e7eb}.grade-checkbox-label.disabled,.class-checkbox-label.disabled{opacity:.5;cursor:not-allowed}.grade-checkbox-label input[type=checkbox],.grade-checkbox-label input[type=radio],.class-checkbox-label input[type=checkbox]{cursor:pointer;width:1.15rem;height:1.15rem;flex-shrink:0;margin:0;accent-color:#3498db}.grade-checkbox-label.disabled input[type=checkbox],.class-checkbox-label.disabled input[type=checkbox]{cursor:not-allowed}.grade-checkbox-label span,.class-checkbox-label span{font-size:.95rem;line-height:1.15rem}.teaching-class-checkbox-group{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.5rem;padding:.75rem;border:1px solid #ddd;border-radius:4px;background-color:#f9fafb;max-height:200px;overflow-y:auto}.teaching-class-checkbox-label{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;padding:.4rem .6rem;border-radius:4px;transition:background-color .2s;-webkit-user-select:none;user-select:none}.teaching-class-checkbox-label:hover{background-color:#e5e7eb}.teaching-class-checkbox-label input[type=checkbox]{cursor:pointer;width:1.15rem;height:1.15rem;flex-shrink:0;margin:0;accent-color:#3498db}.teaching-class-checkbox-label span{font-size:.95rem;line-height:1.15rem}.masters-tabs{display:flex;gap:.75rem;border-bottom:2px solid #e2e8f0}.masters-tabs button{padding:.5rem 1rem;border:none;background:none;font-size:1rem;font-weight:600;color:#52606d;cursor:pointer;border-radius:6px 6px 0 0}.masters-tabs button.active{background-color:#fff;color:#1d4ed8;border-bottom:3px solid #1d4ed8}.masters-content{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px #0f172a14}.masters-header{display:flex;flex-direction:column;gap:.25rem;margin-bottom:1rem}.masters-header button.primary,.masters-header .primary{align-self:flex-start;width:auto;padding:.5rem 1rem;background-color:#2563eb;color:#fff;border:1px solid #2563eb;border-radius:6px;font-weight:500;cursor:pointer;transition:background-color .2s,border-color .2s}.masters-header button.primary:hover,.masters-header .primary:hover{background-color:#1d4ed8;border-color:#1d4ed8}.masters-header button.ghost,.masters-header .ghost{align-self:flex-start;width:auto;padding:.5rem 1rem;background-color:#fff;color:#0f172a;border:1px solid #e2e8f0;border-radius:6px;font-weight:500;cursor:pointer;transition:background-color .2s,border-color .2s,color .2s}.masters-header button.ghost:hover,.masters-header .ghost:hover{background-color:#f8fafc;border-color:#cbd5e1}.masters-header button.ghost:disabled,.masters-header .ghost:disabled{opacity:.6;cursor:not-allowed}.masters-header button.primary:disabled,.masters-header .primary:disabled{opacity:.6;cursor:not-allowed}.section-description{color:#64748b;font-size:.9rem}.masters-layout{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;max-width:100%}.masters-form{display:flex;flex-direction:column;gap:1rem;padding:1rem;border:1px solid #e2e8f0;border-radius:8px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem}.masters-form label{display:flex;flex-direction:column;gap:.25rem;font-size:.9rem}.masters-form label.full-width-label{grid-column:1 / -1;color:#0f172a}.masters-form input,.masters-form textarea{border:1px solid #cbd5f5;border-radius:6px;padding:.45rem .5rem;font-size:.95rem}.masters-form textarea{font-family:Fira Code,monospace;min-height:3rem}.form-actions button{padding:.5rem .9rem;border-radius:6px;border:none;cursor:pointer;font-weight:600}.masters-table-wrapper{overflow-x:auto;border:1px solid #e2e8f0;border-radius:8px}.masters-table{width:100%;border-collapse:collapse}.masters-table th,.masters-table td{padding:.65rem .75rem;border-bottom:1px solid #e2e8f0;text-align:left}.masters-table td[style*="cursor: pointer"]{transition:background-color .2s}.masters-table td[style*="cursor: pointer"]:hover{background-color:#f0f9ff}.masters-table thead{background:#f8fafc;position:relative;z-index:1}.masters-table th.sortable{position:relative;padding-right:1.5rem}.masters-table th.sortable:hover{background-color:#e5e7eb;transition:background-color .2s}.masters-table th .sort-indicator{position:absolute;right:.5rem;font-size:.75rem;color:#3498db}.masters-table-teachers{table-layout:fixed}.masters-table-teachers .teacher-subjects-cell{overflow-wrap:break-word;word-wrap:break-word;word-break:keep-all}.masters-table-teachers .teacher-teaching-classes-cell{max-width:100%;min-width:0}.teacher-teaching-class-item{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.2rem .35rem;border-radius:4px;min-height:36px;min-width:48px;transition:box-shadow .2s}.teacher-teaching-class-item:hover{box-shadow:0 2px 6px #0000001f}.teacher-teaching-class-item-subject{font-size:.8rem;font-weight:600;color:#2c3e50;text-align:center;margin-bottom:.15rem;line-height:1.2}.teacher-teaching-class-item-class{font-size:.75rem;color:#7f8c8d;text-align:center;line-height:1.2}.teacher-subject-item{display:inline-flex;align-items:center;font-size:.8rem;font-weight:500;color:#2c3e50;white-space:nowrap;transition:box-shadow .2s}.teacher-subject-item:hover{box-shadow:0 2px 6px #0000001a}.standard-hours-subject-row .standard-hours-delete-btn{opacity:0;pointer-events:none;transition:opacity .15s ease}.standard-hours-subject-row:hover .standard-hours-delete-btn{opacity:1;pointer-events:auto}.table-actions button{padding:.35rem .7rem;border-radius:4px;border:none;cursor:pointer;font-size:.85rem}.table-actions button:hover{opacity:.85}.table-actions .danger,.action-buttons .danger{background-color:#dc2626;color:#fff}.table-actions .danger:hover,.action-buttons .danger:hover{background-color:#b91c1c}.table-actions button:not(.danger),.action-buttons button:not(.danger){background-color:#e0f2fe;color:#0369a1}.action-buttons{display:flex;gap:.4rem}.action-buttons button{padding:.35rem .7rem;border-radius:4px;border:none;cursor:pointer;font-size:.85rem;font-weight:500}.action-buttons button:hover{opacity:.85}@media (max-width: 1024px){.masters-layout{grid-template-columns:1fr}.form-actions{flex-wrap:wrap}}@media (max-width: 640px){.masters-content{padding:1rem}.masters-tabs{flex-wrap:wrap}}.unavailable-timetable{border:1px solid #ddd;border-radius:6px;overflow:hidden;margin-top:.5rem;background:#fff}.unavailable-timetable-header{display:grid;grid-template-columns:40px repeat(5,1fr);background:#f8fafc;border-bottom:1px solid #ddd}.unavailable-timetable-corner{padding:.5rem;font-weight:600;font-size:.85rem;color:#64748b}.unavailable-timetable-day-header{padding:.5rem;text-align:center;font-weight:600;font-size:.85rem;color:#64748b;border-left:1px solid #ddd}.unavailable-timetable-row{display:grid;grid-template-columns:40px repeat(5,1fr);border-bottom:1px solid #e2e8f0}.unavailable-timetable-row:last-child{border-bottom:none}.unavailable-timetable-period-header{padding:.5rem;text-align:center;font-weight:600;font-size:.85rem;color:#64748b;background:#f8fafc;display:flex;align-items:center;justify-content:center;border-right:1px solid #ddd}.unavailable-timetable-cell{border:none;background:#fff;border-left:1px solid #e2e8f0;padding:.5rem;cursor:pointer;transition:background-color .2s;display:flex;align-items:center;justify-content:center;min-height:40px}.unavailable-timetable-cell:hover{background:#f1f5f9}.unavailable-timetable-cell.unavailable{background:#fee2e2}.unavailable-timetable-cell.unavailable:hover{background:#fecaca}.unavailable-timetable-cell.has-class{background:#dbeafe}.unavailable-timetable-cell.has-class:hover{background:#bfdbfe}.unavailable-mark{font-size:1.2rem;font-weight:700;color:#dc2626;line-height:1}.class-mark{font-size:.75rem;font-weight:600;color:#1e40af;line-height:1;text-align:center;word-break:break-word}.unavailable-timetable-hint{margin-top:.5rem;font-size:.8rem;color:#64748b;font-style:italic}.masters-page button.primary,.masters-page .primary{background-color:#007bff;color:#fff;border:1px solid #007bff;padding:.5rem 1rem;border-radius:4px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background-color .2s}.masters-page button.primary:hover,.masters-page .primary:hover{background-color:#0056b3;border-color:#0056b3}.btn-primary{background-color:#3498db;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.95rem;font-weight:500;transition:background-color .2s ease;display:inline-flex;align-items:center;justify-content:center;gap:.5rem}.btn-primary:hover{background-color:#2980b9}.btn-primary:active{background-color:#21618c}.btn-primary:disabled{background-color:#bdc3c7;cursor:not-allowed;opacity:.6}.btn-secondary{background-color:#95a5a6;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.95rem;font-weight:500;transition:background-color .2s ease;display:inline-flex;align-items:center;justify-content:center;gap:.5rem}.btn-secondary:hover{background-color:#7f8c8d}.btn-secondary:active{background-color:#6c7a7a}.btn-secondary:disabled{background-color:#bdc3c7;cursor:not-allowed;opacity:.6}.dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:10001}.dialog-overlay .dialog-content{background:#fff;border-radius:8px;width:90%;max-width:600px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 4px 6px #0000001a;overflow:hidden;-webkit-user-select:none;user-select:none}.dialog-overlay .dialog-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem;border-bottom:1px solid #ddd;background-color:#34495e;color:#fff;border-radius:8px 8px 0 0;cursor:move}.dialog-overlay .dialog-header h3{margin:0;font-size:1.2rem}.dialog-overlay .dialog-body{padding:1rem;overflow-y:auto}.dialog-overlay .dialog-close{background:none;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0 .5rem;line-height:1}.bulk-teacher-overlay{z-index:10000}.bulk-teacher-dialog{width:98vw!important;max-width:1400px!important;min-width:900px;max-height:90vh;display:flex;flex-direction:column}.bulk-teacher-body{flex:1;overflow:hidden;display:flex;flex-direction:column;padding:1rem}.bulk-teacher-info{margin-bottom:1rem;padding:.75rem 1rem;background:#f0f9ff;border:1px solid #bae6fd;border-radius:6px}.bulk-teacher-info p{margin:0;font-size:.875rem;color:#0369a1}.bulk-teacher-grid-wrapper{flex:1;overflow:auto;border:1px solid #e2e8f0;border-radius:6px;background:#fff}.bulk-teacher-grid{width:100%;border-collapse:collapse;font-size:.8rem}.bulk-teacher-grid thead{position:sticky;top:0;z-index:10;background:#f8fafc}.bulk-teacher-grid th{padding:.5rem;text-align:left;font-weight:600;color:#475569;border-bottom:2px solid #e2e8f0;white-space:nowrap;font-size:.8rem}.bulk-teacher-grid td{padding:.35rem .5rem;border-bottom:1px solid #f1f5f9;vertical-align:top}.bulk-teacher-grid tbody tr:hover{background:#f8fafc}.bulk-teacher-grid tbody tr.row-valid{background:#f0fdf4}.bulk-teacher-grid tbody tr.row-valid:hover{background:#dcfce7}.col-actions{width:32px;min-width:32px;text-align:center}.col-name{width:140px;min-width:130px}.col-shortname{width:80px;min-width:75px}.col-subjects{width:50%;min-width:500px}.col-roles-class{width:12%;min-width:140px}.col-roles-position{width:18%;min-width:220px}.btn-remove-row{width:24px;height:24px;padding:0;border:none;background:transparent;color:#94a3b8;font-size:1rem;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .15s}.btn-remove-row:hover{background:#fee2e2;color:#dc2626}.input-name,.input-shortname{width:100%;padding:.35rem .5rem;border:1px solid #e2e8f0;border-radius:4px;font-size:.8rem;transition:border-color .15s}.input-name:focus,.input-shortname:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}.input-name::placeholder,.input-shortname::placeholder{color:#cbd5e1}.subject-chips{display:flex;flex-wrap:wrap;gap:3px;align-items:flex-start}.subject-chip{display:inline-flex;align-items:center}.subject-chip .subject-checkbox{display:flex;align-items:center;gap:2px;padding:1px 4px;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:3px;font-size:.7rem;cursor:pointer;transition:all .15s;white-space:nowrap}.subject-chip .subject-checkbox:hover{background:#e2e8f0}.subject-chip.selected .subject-checkbox{background:#dbeafe;border-color:#93c5fd}.subject-chip .subject-checkbox input{width:11px;height:11px;margin:0;flex-shrink:0}.subject-chip .subject-name{cursor:pointer;-webkit-user-select:none;user-select:none}.subject-chip.selected .subject-name:hover{text-decoration:underline;color:#2563eb}.subject-chip .class-count{font-size:.7rem;color:#3b82f6;margin-left:2px;font-weight:600}.role-chips{display:flex;flex-wrap:wrap;gap:3px}.role-checkbox{display:flex;align-items:center;gap:3px;padding:1px 4px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:3px;font-size:.7rem;cursor:pointer;transition:all .15s}.role-checkbox:hover{background:#f1f5f9}.role-checkbox:has(input:checked){background:#fef3c7;border-color:#fcd34d}.role-checkbox input{width:11px;height:11px;margin:0;flex-shrink:0}.role-checkbox span{white-space:nowrap}.bulk-teacher-actions-row{display:flex;align-items:center;gap:1rem;margin-top:1rem;padding-top:.75rem;border-top:1px solid #e2e8f0}.btn-add-rows{padding:.5rem 1rem;border:1px dashed #94a3b8;border-radius:6px;background:transparent;color:#64748b;font-size:.875rem;cursor:pointer;transition:all .15s}.btn-add-rows:hover{border-color:#3b82f6;color:#3b82f6;background:#f0f9ff}.valid-count{font-size:.875rem;color:#64748b}.dialog-footer{display:flex;gap:.75rem;padding:1rem;border-top:1px solid #e2e8f0;background:#f8fafc}.dialog-footer button.primary{padding:.625rem 1.5rem;background:#3b82f6;color:#fff;border:none;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s}.dialog-footer button.primary:hover:not(:disabled){background:#2563eb}.dialog-footer button.primary:disabled{background:#94a3b8;cursor:not-allowed}.dialog-footer button.ghost{padding:.625rem 1rem;background:transparent;color:#64748b;border:1px solid #e2e8f0;border-radius:6px;font-size:.875rem;cursor:pointer;transition:all .15s}.dialog-footer button.ghost:hover:not(:disabled){background:#f1f5f9;color:#475569}.class-select-popup{background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 10px 25px #00000026;min-width:200px;max-width:300px;max-height:300px;overflow:hidden;display:flex;flex-direction:column}.class-select-popup .popup-header{display:flex;align-items:center;gap:.25rem;padding:.75rem 1rem;background:#f8fafc;border-bottom:1px solid #e2e8f0;font-size:.875rem}.class-select-popup .popup-header strong{color:#1e40af}.class-select-popup .popup-close{margin-left:auto;width:24px;height:24px;padding:0;border:none;background:transparent;color:#94a3b8;font-size:1rem;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center}.class-select-popup .popup-close:hover{background:#fee2e2;color:#dc2626}.class-select-popup .popup-body{padding:.75rem;overflow-y:auto;flex:1}.class-select-popup .no-classes{color:#94a3b8;font-size:.875rem;text-align:center;padding:1rem;margin:0}.class-select-popup .class-checkboxes{display:flex;flex-direction:column;gap:4px}.class-select-popup .class-checkbox-item{display:flex;align-items:center;gap:.5rem;padding:.375rem .5rem;border-radius:4px;cursor:pointer;transition:background .15s}.class-select-popup .class-checkbox-item:hover{background:#f1f5f9}.class-select-popup .class-checkbox-item:has(input:checked){background:#dbeafe}.class-select-popup .class-checkbox-item input{width:14px;height:14px;margin:0}.class-select-popup .class-checkbox-item span{font-size:.875rem;color:#334155}.constraints-page{display:flex;flex-direction:column;gap:1.5rem;width:100%;max-width:100%}.constraints-header{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}.constraints-header h2{margin:0}.constraints-filters{display:flex;gap:.75rem;flex-wrap:wrap}.constraints-filters label{display:flex;flex-direction:column;gap:.25rem;font-size:.9rem}.constraints-filters select{border:1px solid #cbd5f5;border-radius:6px;padding:.4rem .6rem}.constraints-content{width:100%;max-width:100%}.constraints-form,.constraints-table-wrapper{background:#fff;border-radius:12px;padding:1.25rem;box-shadow:0 2px 8px #0f172a14;width:100%;max-width:100%}.constraints-form{display:flex;flex-direction:column;gap:.5rem}.constraints-form label{display:flex;flex-direction:column;gap:.2rem;font-size:.85rem}.constraints-form input,.constraints-form select,.constraints-form textarea{border:1px solid #cbd5f5;border-radius:4px;padding:.35rem .45rem;font-size:.85rem}.constraints-form textarea{font-family:Fira Code,monospace}.target-kind-group{display:flex;gap:.3rem;flex-wrap:wrap}.target-kind-group button{border:1px solid #94a3b8;background:#f8fafc;border-radius:999px;padding:.3rem .75rem;cursor:pointer;font-size:.85rem}.constraint-hint{font-size:.75rem;color:#64748b;margin-top:.15rem}.constraints-table{width:100%;border-collapse:collapse}.constraints-table th,.constraints-table td{padding:.65rem .75rem;border-bottom:1px solid #e2e8f0;text-align:left}.constraints-table thead{background:#f8fafc}.params-code{font-size:.75rem;background:#f1f5f9;padding:.25rem .35rem;border-radius:4px}.params-display{font-size:.9rem;color:#0f172a}.constraint-target-tag{font-size:.95rem}.form-actions{display:flex;gap:.4rem;margin-top:.4rem}.form-actions button{border:none;border-radius:6px;padding:.4rem .75rem;cursor:pointer;font-weight:600;font-size:.9rem}.ghost.small{align-self:flex-start;padding:.2rem .5rem;font-size:.8rem}.ghost.small.active{background-color:#2563eb;color:#fff}.ghost.small.danger{background-color:#fee2e2;color:#b91c1c}.severity-input-group{display:flex;gap:.5rem;flex-wrap:wrap}.severity-button{flex:1;min-width:200px;display:flex;align-items:center;gap:.5rem;padding:.65rem .75rem;border:2px solid #cbd5f5;border-radius:6px;background:#fff;cursor:pointer;transition:all .2s;text-align:left}.severity-button:hover{border-color:#94a3b8;background:#f8fafc}.severity-button.active{border-color:#2563eb;background:#dbeafe}.severity-button.active.warning{border-color:#f59e0b;background:#fef3c7}.severity-button.active.forbidden{border-color:#dc2626;background:#fee2e2}.severity-icon{font-size:1.25rem;flex-shrink:0}.severity-title{font-weight:600;font-size:.9rem;color:#0f172a;margin-bottom:.15rem}.severity-description{font-size:.75rem;color:#64748b;line-height:1.3}.severity-badge{display:inline-block;padding:.25rem .75rem;border-radius:999px;font-size:.85rem;font-weight:500}.severity-badge.warning{background:#fef3c7;color:#92400e}.severity-badge.forbidden{background:#fee2e2;color:#991b1b}.weight-input-group{display:flex;flex-direction:column;gap:.4rem}.weight-presets{display:flex;gap:.3rem;flex-wrap:wrap}.preferred-times-editor{display:flex;flex-direction:column;gap:.4rem;padding:.6rem;background:#f8fafc;border-radius:6px}.preferred-time-row{display:flex;gap:.4rem;align-items:center}.preferred-time-row select{border:1px solid #cbd5f5;border-radius:6px;padding:.35rem .5rem;font-size:.85rem}.ng-time-editor{display:flex;flex-direction:column;gap:.75rem;padding:.6rem;background:#f8fafc;border-radius:6px}.ng-time-section{display:flex;flex-direction:column;gap:.4rem}.ng-time-label{font-weight:500;font-size:.85rem;color:#0f172a}.ng-time-checkboxes{display:flex;flex-wrap:wrap;gap:.5rem}.ng-time-checkbox{display:flex;align-items:center;gap:.35rem;cursor:pointer;padding:.3rem .5rem;background:#fff;border:1px solid #cbd5f5;border-radius:5px;transition:all .2s;font-size:.85rem}.ng-time-checkbox:hover{background:#f1f5f9;border-color:#94a3b8}.ng-time-checkbox input[type=checkbox]{margin:0;cursor:pointer}.ng-time-checkbox input[type=checkbox]:checked+span{font-weight:600;color:#2563eb}.ng-time-checkbox:has(input[type=checkbox]:checked){background:#dbeafe;border-color:#2563eb}.constraints-page button.primary,.constraints-page .primary{background-color:#007bff;color:#fff;border:1px solid #007bff;padding:.5rem 1rem;border-radius:4px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background-color .2s}.constraints-page button.primary:hover,.constraints-page .primary:hover{background-color:#0056b3;border-color:#0056b3}@media (max-width: 1024px){.constraints-content{width:100%}}@media (max-width: 640px){.constraints-header{flex-direction:column}.constraints-form,.constraints-table-wrapper{padding:1rem}}.dialog-body{flex:1;min-height:0;overflow-y:auto;padding:.6rem .85rem;-webkit-user-select:text;user-select:text}.target-multi-select{width:100%}.target-checkboxes{scrollbar-width:thin;scrollbar-color:#cbd5f5 #f8fafc}.target-checkboxes::-webkit-scrollbar{width:5px}.target-checkboxes::-webkit-scrollbar-track{background:#f8fafc;border-radius:2px}.target-checkboxes::-webkit-scrollbar-thumb{background:#cbd5f5;border-radius:2px}.target-checkboxes::-webkit-scrollbar-thumb:hover{background:#94a3b8}.target-checkbox{display:flex;align-items:center}.target-checkbox input[type=checkbox]:checked+span{font-weight:600;color:#2563eb}.target-checkbox:has(input[type=checkbox]:checked){background-color:#dbeafe!important}.events-page{display:flex;flex-direction:column;gap:1.5rem;width:100%;max-width:100%}.events-header h2{margin:0}.event-section{width:100%;max-width:100%}.event-form,.event-table-wrapper{background:#fff;border-radius:12px;padding:1.25rem;box-shadow:0 2px 8px #0f172a14;width:100%;max-width:100%}.event-form{display:flex;flex-direction:column;gap:.85rem}.event-form label{display:flex;flex-direction:column;gap:.3rem;font-size:.95rem}.event-form input,.event-form select,.event-form textarea{border:1px solid #cbd5f5;border-radius:6px;padding:.45rem;font-size:.95rem}.target-kind-group{display:flex;gap:.4rem}.target-kind-group button{border:1px solid #94a3b8;border-radius:999px;background:#f8fafc;padding:.3rem .8rem;cursor:pointer;font-size:.85rem}.target-kind-group button.active{background:#2563eb;color:#fff;border-color:#2563eb}.event-table{width:100%;border-collapse:collapse}.event-table th,.event-table td{text-align:left;padding:.65rem .75rem;border-bottom:1px solid #e2e8f0}.event-table thead{background:#f8fafc}.form-actions{display:flex;gap:.5rem;flex-wrap:wrap}@media (max-width: 1024px){.event-section{width:100%}}@media (max-width: 640px){.event-form,.event-table-wrapper{padding:1rem}}.blocked-edit-dialog-content{max-width:720px}.target-multi-select{display:flex;flex-wrap:wrap;gap:.5rem;max-height:160px;overflow-y:auto;padding:.5rem;border:1px solid #cbd5f5;border-radius:6px;background:#f8fafc}.target-checkbox-item{display:flex;align-items:center;gap:.4rem;cursor:pointer;font-size:.9rem}.target-checkbox-item input{margin:0}.target-checkbox-item span{-webkit-user-select:none;user-select:none}.empty-hint{color:#94a3b8;font-size:.9rem}.slot-grid-wrapper{overflow-x:auto;padding:.5rem;border:1px solid #cbd5f5;border-radius:6px;background:#f8fafc}.slot-grid{border-collapse:collapse;font-size:.85rem}.slot-grid th,.slot-grid td{padding:.25rem .35rem;text-align:center;border:1px solid #e2e8f0}.slot-grid th{background:#f1f5f9;font-weight:600}.slot-grid-day,.slot-grid-period{text-align:left!important;font-weight:500;min-width:2rem}.slot-grid-disabled{color:#cbd5e1;font-size:.9em}.slot-grid-cell input{margin:0;cursor:pointer}.events-page button.primary,.events-page .primary{background-color:#007bff;color:#fff;border:1px solid #007bff;padding:.5rem 1rem;border-radius:4px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background-color .2s}.events-page button.primary:hover,.events-page .primary:hover{background-color:#0056b3;border-color:#0056b3}.constraints-events-page{display:flex;flex-direction:column;gap:1rem;width:100%;max-width:100%}.constraints-events-header{flex-shrink:0}.constraints-events-header h2{margin:0 0 .25rem}.constraints-events-header p{margin:0;font-size:.9rem;color:#64748b}.constraints-events-tabs{display:flex;gap:.25rem;padding:.25rem;background:#f1f5f9;border-radius:8px;width:fit-content}.constraints-events-tab{padding:.5rem 1rem;border:none;border-radius:6px;background:transparent;font-size:.95rem;cursor:pointer;color:#475569;transition:background .2s,color .2s}.constraints-events-tab:hover{background:#fffc;color:#334155}.constraints-events-tab.active{background:#fff;color:#1e293b;font-weight:600;box-shadow:0 1px 3px #00000014}.constraints-events-panel{flex:1;min-height:0}.users-page{display:flex;flex-direction:column;gap:1.5rem;width:100%;max-width:100%}.users-header h2{margin:0}.users-content{width:100%;max-width:100%}.users-form,.users-table-wrapper{background:#fff;border-radius:12px;padding:1.25rem;box-shadow:0 2px 8px #0f172a14;width:100%;max-width:100%}.users-form{display:flex;flex-direction:column;gap:.85rem}.users-form label{display:flex;flex-direction:column;gap:.3rem;font-size:.95rem}.users-form input,.users-form select{border:1px solid #cbd5f5;border-radius:6px;padding:.45rem;font-size:.95rem}.users-table{width:100%;border-collapse:collapse}.users-table th,.users-table td{padding:.65rem .75rem;border-bottom:1px solid #e2e8f0;text-align:left}.users-table thead{background:#f8fafc}.table-actions{display:flex;gap:.4rem}.table-actions button{border:none;border-radius:4px;padding:.35rem .7rem;cursor:pointer;font-size:.85rem}.table-actions button:not(.danger){background-color:#e0f2fe;color:#0369a1}.table-actions .danger{background-color:#dc2626;color:#fff}.table-actions .danger:hover{background-color:#b91c1c}.empty-state{text-align:center;color:#94a3b8;font-style:italic}.form-actions{display:flex;gap:.5rem}.form-actions button{border:none;border-radius:6px;padding:.5rem .9rem;cursor:pointer;font-weight:600}.form-actions .primary{background-color:#2563eb;color:#fff}.form-actions .ghost{background-color:#f1f5f9;color:#0f172a}@media (max-width: 1024px){.users-content{width:100%}}@media (max-width: 640px){.users-form,.users-table-wrapper{padding:1rem}}.users-page button.primary,.users-page .primary{background-color:#007bff;color:#fff;border:1px solid #007bff;padding:.5rem 1rem;border-radius:4px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background-color .2s}.users-page button.primary:hover,.users-page .primary:hover{background-color:#0056b3;border-color:#0056b3}.versions-page{padding:1.5rem;width:100%;max-width:100%;box-sizing:border-box}.versions-header{margin-bottom:2rem}.versions-header h2{margin:0 0 .5rem;font-size:1.5rem;color:#333}.versions-header p{margin:0;color:#666}.versions-content{display:flex;flex-direction:column;gap:1.5rem;width:100%}.versions-form{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.versions-form h3{margin:0 0 1rem;font-size:1.2rem;color:#333}.versions-form label{display:block;margin-bottom:1rem;font-weight:500;color:#333}.versions-form input,.versions-form select{width:100%;padding:.5rem;margin-top:.25rem;border:1px solid #ddd;border-radius:4px;font-size:1rem}.versions-form input:disabled{background-color:#f5f5f5;cursor:not-allowed}.form-actions{display:flex;gap:.5rem;margin-top:1.5rem}.form-actions button{padding:.5rem 1rem;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:background-color .2s}.form-actions button.primary{background-color:#007bff;color:#fff}.form-actions button.primary:hover:not(:disabled){background-color:#0056b3}.form-actions button.primary:disabled{background-color:#ccc;cursor:not-allowed}.form-actions button.ghost{background-color:transparent;color:#666;border:1px solid #ddd}.form-actions button.ghost:hover{background-color:#f5f5f5}.versions-table-wrapper{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;width:100%;box-sizing:border-box}.versions-table-wrapper h3{margin:0 0 1rem;font-size:1.2rem;color:#333}.versions-table{width:100%;border-collapse:collapse}.versions-table thead{background-color:#f8f9fa}.versions-table th{padding:.75rem;text-align:left;font-weight:600;color:#333;border-bottom:2px solid #dee2e6}.versions-table td{padding:.75rem;border-bottom:1px solid #dee2e6}.versions-table tbody tr:hover{background-color:#f8f9fa}.table-actions button{padding:.25rem .75rem;border:none;border-radius:4px;font-size:.875rem;cursor:pointer;transition:background-color .2s}.table-actions button{background-color:#6c757d;color:#fff}.table-actions button:hover{background-color:#5a6268}.table-actions button.secondary{background-color:#17a2b8}.table-actions button.secondary:hover{background-color:#138496}.empty-state{text-align:center;color:#999;padding:2rem!important}.versions-table-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;gap:1rem;flex-wrap:wrap}.versions-filters{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap;margin-bottom:1rem;padding:1rem;background:#f8f9fa;border-radius:4px}.versions-filters .filter-group{display:flex;flex-direction:column;gap:.25rem}.versions-filters .filter-group label{font-size:.875rem;font-weight:500;color:#333}.versions-filters .filter-group input,.versions-filters .filter-group select{padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem;min-width:120px}.versions-filters .filter-group select:disabled{background-color:#f5f5f5;cursor:not-allowed}.versions-table-actions{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.bulk-actions{display:flex;align-items:center;gap:1rem}.selected-count{color:#666;font-size:.875rem}.bulk-actions button{padding:.5rem 1rem;border:none;border-radius:4px;font-size:.875rem;cursor:pointer;transition:background-color .2s}.bulk-actions button.danger{background-color:#dc2626;color:#fff}.bulk-actions button.danger:hover{background-color:#b91c1c}.view-controls{display:flex;gap:.5rem}.view-controls button{padding:.5rem 1rem;border:1px solid #ddd;border-radius:4px;font-size:.875rem;cursor:pointer;transition:background-color .2s;background-color:transparent;color:#666}.versions-page button.primary,.versions-page .primary{background-color:#007bff;color:#fff;border:1px solid #007bff;padding:.5rem 1rem;border-radius:4px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background-color .2s}.versions-page button.primary:hover,.versions-page .primary:hover{background-color:#0056b3;border-color:#0056b3}.view-controls button.primary{background-color:#007bff;color:#fff;border-color:#007bff}.view-controls button.primary:hover{background-color:#0056b3}.view-controls button.ghost:hover{background-color:#f5f5f5}.version-tree{padding:1rem}.version-tree h4{margin:0 0 1rem;font-size:1.2rem;color:#333}.tree-container{border:1px solid #dee2e6;border-radius:4px;padding:1rem;background:#fff}.tree-node{margin-bottom:.5rem}.tree-node-content{display:flex;align-items:center;gap:1rem;padding:.5rem;background:#f8f9fa;border-radius:4px}.tree-node-id{font-weight:600;color:#333}.tree-node-status{font-size:.875rem;color:#666;padding:.25rem .5rem;background:#e9ecef;border-radius:4px}.tree-node-date{font-size:.875rem;color:#999;margin-left:auto}.tree-node-children{margin-top:.5rem;padding-left:1rem;border-left:2px solid #dee2e6}.compare-section-wrapper{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;width:100%;box-sizing:border-box;margin-top:1.5rem}.compare-section{width:100%;box-sizing:border-box}.compare-section h4{margin:0 0 .5rem;font-size:1rem;color:#333}.compare-controls{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.compare-select{flex:1;min-width:150px;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.875rem}.compare-select:first-of-type{flex:1}.compare-select:last-of-type{flex:1}.compare-vs{font-weight:600;color:#666}.comparison-result{margin-top:2rem;padding:1.5rem;background:#f8f9fa;border-radius:8px;border:1px solid #dee2e6}.comparison-result h4{margin:0 0 1rem;font-size:1.2rem;color:#333}.comparison-summary{display:flex;gap:2rem;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid #dee2e6}.comparison-stat{display:flex;flex-direction:column;align-items:center}.stat-label{font-size:.875rem;color:#666;margin-bottom:.25rem}.stat-value{font-size:1.5rem;font-weight:600}.stat-value.added{color:#28a745}.stat-value.removed{color:#dc3545}.stat-value.modified{color:#ffc107}.comparison-details{margin-bottom:1rem}.comparison-details h5{margin:0 0 .5rem;font-size:1rem;color:#333}.comparison-details ul{margin:0;padding-left:1.5rem;list-style-type:disc}.comparison-details li{margin-bottom:.25rem;color:#666}.dialog-content{background:#fff;border-radius:8px;width:90%;max-width:600px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 4px 6px #0000001a;overflow:hidden;-webkit-user-select:none;user-select:none}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem;border-bottom:1px solid #ddd;background-color:#34495e;color:#fff;border-radius:8px 8px 0 0;cursor:move}.dialog-header.dragging{cursor:grabbing}.dialog-header h3{margin:0;font-size:1.2rem}.dialog-close{background:none;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s}.dialog-body{flex:1;min-height:0;overflow-y:auto;padding:1rem;-webkit-user-select:text;user-select:text}@media (max-width: 768px){.versions-content{grid-template-columns:1fr}.versions-page{padding:1rem}.versions-table-header{flex-direction:column}.compare-controls{flex-direction:column;align-items:stretch}.compare-vs{text-align:center}.comparison-summary{flex-direction:column;gap:1rem}}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#00000080;display:flex;align-items:flex-start;justify-content:center;z-index:1000;overflow-y:auto;overflow-x:hidden;padding:1rem;box-sizing:border-box;-webkit-overflow-scrolling:touch}.dialog-content{background:#fff;border-radius:8px;box-shadow:0 4px 6px #0000001a;width:100%;max-width:600px;max-height:min(90vh,calc(100vh - 2rem));margin:1rem auto;align-self:flex-start;display:flex;flex-direction:column;min-height:0;overflow:hidden}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #ddd;background-color:#34495e;color:#fff;border-radius:8px 8px 0 0;flex-shrink:0}.dialog-form{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.dialog-body{padding:1.5rem;flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}.form-group textarea{resize:vertical;min-height:80px}.dialog-footer{display:flex;justify-content:flex-end;gap:.5rem;padding:1.5rem;border-top:1px solid #eee;flex-shrink:0;background:#fff;border-radius:0 0 8px 8px}.base-timetables-page{padding:1.5rem;width:100%}.base-timetables-header{margin-bottom:2rem}.base-timetables-header h2{margin:0 0 .5rem;font-size:1.5rem;color:#333}.base-timetables-header p{margin:0;color:#666}.base-timetables-content{display:flex;flex-direction:column;gap:1.5rem}.base-timetables-filters{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap}.base-timetables-table-wrapper{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.base-timetables-table{width:100%;border-collapse:collapse}.base-timetables-table th,.base-timetables-table td{padding:.75rem;text-align:left;border-bottom:1px solid #eee}.base-timetables-table th{background-color:#f5f5f5;font-weight:600;color:#333}.base-timetables-table tbody tr:hover{background-color:#f9f9f9}.base-timetables-page button.primary,.base-timetables-page .primary{background-color:#007bff;color:#fff;border:1px solid #007bff;padding:.5rem 1rem;border-radius:4px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background-color .2s}.base-timetables-page button.primary:hover,.base-timetables-page .primary:hover{background-color:#0056b3;border-color:#0056b3}.weekly-timetables-page{padding:1.5rem;width:100%}.weekly-timetables-header{margin-bottom:2rem}.weekly-timetables-header h2{margin:0 0 .5rem;font-size:1.5rem;color:#333}.weekly-timetables-header p{margin:0;color:#666}.weekly-timetables-content{display:flex;flex-direction:column;gap:1.5rem}.weekly-timetables-filters{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap}.weekly-timetables-table-wrapper{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.weekly-timetables-table{width:100%;border-collapse:collapse}.weekly-timetables-table th,.weekly-timetables-table td{padding:.75rem;text-align:left;border-bottom:1px solid #eee}.weekly-timetables-table th{background-color:#f5f5f5;font-weight:600;color:#333}.weekly-timetables-table tbody tr:hover{background-color:#f9f9f9}.status-badge{display:inline-block;padding:.25rem .5rem;border-radius:4px;font-size:.85rem;font-weight:500}.status-badge.modified{background-color:#fef3c7;color:#92400e}.status-badge.unmodified{background-color:#d1fae5;color:#065f46}.table-actions{display:flex;gap:.5rem;flex-wrap:wrap}.table-actions button.primary{background-color:#3b82f6;color:#fff}.table-actions button.primary:hover{background-color:#2563eb}.weekly-timetables-page button.primary,.weekly-timetables-page .primary{background-color:#007bff;color:#fff;border:1px solid #007bff;padding:.5rem 1rem;border-radius:4px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background-color .2s}.weekly-timetables-page button.primary:hover,.weekly-timetables-page .primary:hover{background-color:#0056b3;border-color:#0056b3}.timetable-versions-section{display:flex;flex-direction:column;height:100%;width:100%;gap:0}.timetable-versions-subtabs{display:flex;gap:.25rem;border-bottom:1px solid #e2e8f0;margin-bottom:1rem;padding-bottom:0}.timetable-versions-subtabs button{padding:.5rem 1rem;border:none;background:none;font-size:.95rem;font-weight:500;color:#64748b;cursor:pointer;border-radius:6px 6px 0 0}.timetable-versions-subtabs button:hover{color:#334155;background-color:#f1f5f9}.timetable-versions-subtabs button.active{color:#1d4ed8;font-weight:600;border-bottom:2px solid #1d4ed8;margin-bottom:-1px}.timetable-versions-content{flex:1;min-height:0;overflow:auto}.timetable-versions-content>*{height:100%;width:100%}.dialog-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}.dialog-content{background:#fff;border-radius:8px;box-shadow:0 4px 6px #0000001a;width:90%;max-width:600px;max-height:90vh;overflow-y:auto}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #ddd;background-color:#34495e;color:#fff;border-radius:8px 8px 0 0}.dialog-header h3{margin:0;font-size:1.2rem;color:#fff;font-weight:600}.dialog-close{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#fff;padding:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s}.dialog-close:hover{background-color:#fff3}.dialog-body{padding:1.5rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#333}.form-group .required{color:#dc2626}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem;font-family:inherit}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.dialog-footer{display:flex;justify-content:flex-end;gap:.5rem;padding:1.5rem;border-top:1px solid #eee}.dialog-footer button{padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;transition:background-color .2s}.dialog-footer button.secondary{background-color:#6b7280;color:#fff}.dialog-footer button.secondary:hover{background-color:#4b5563}.dialog-footer button.primary{background-color:#3b82f6;color:#fff}.dialog-footer button.primary:hover{background-color:#2563eb}.test-periods-page{padding:1.5rem;width:100%}.test-periods-header{margin-bottom:2rem}.test-periods-header h2{margin:0 0 .5rem;font-size:1.5rem;color:#333}.test-periods-header p{margin:0;color:#666}.test-periods-content{display:flex;flex-direction:column;gap:1.5rem}.test-periods-filters{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap}.test-periods-table-wrapper{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.test-periods-table{width:100%;border-collapse:collapse}.test-periods-table th,.test-periods-table td{padding:.75rem;text-align:left;border-bottom:1px solid #eee}.test-periods-table th{background-color:#f5f5f5;font-weight:600;color:#333}.test-periods-table tbody tr:hover{background-color:#f9f9f9}.table-actions button{padding:.4rem .8rem;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;transition:background-color .2s}.table-actions button.secondary{background-color:#6b7280;color:#fff}.table-actions button.secondary:hover{background-color:#4b5563}.table-actions button.danger{background-color:#dc2626;color:#fff}.table-actions button.danger:hover{background-color:#b91c1c}.test-periods-page button.primary,.test-periods-page .primary{background-color:#007bff;color:#fff;border:1px solid #007bff;padding:.5rem 1rem;border-radius:4px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background-color .2s}.test-periods-page button.primary:hover,.test-periods-page .primary:hover{background-color:#0056b3;border-color:#0056b3}.error-message{color:#dc2626;padding:1rem;background-color:#fee2e2;border:1px solid #fca5a5;border-radius:4px;margin:1rem 0}.statistics-page{padding:1.5rem;width:100%}.statistics-header{margin-bottom:2rem}.statistics-header h2{margin:0 0 .5rem;font-size:1.5rem;color:#333}.statistics-header p{margin:0;color:#666}.statistics-content{display:flex;flex-direction:column;gap:1.5rem}.statistics-tabs{display:flex;gap:.5rem;border-bottom:2px solid #eee}.statistics-tabs button{padding:.75rem 1.5rem;border:none;background:none;cursor:pointer;font-size:.9rem;font-weight:500;color:#666;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .2s}.statistics-tabs button:hover{color:#333}.statistics-tabs button.active{color:#3b82f6;border-bottom-color:#3b82f6}.statistics-filters{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap;background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.filter-group{display:flex;flex-direction:column;gap:.5rem}.filter-group label{font-size:.9rem;font-weight:500;color:#333}.filter-group input,.filter-group select{padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.statistics-results-wrapper{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.statistics-results h3{margin:0 0 1rem;font-size:1.2rem;color:#333}.statistics-results h4{margin:1.5rem 0 1rem;font-size:1.1rem;color:#333}.statistics-table{width:100%;border-collapse:collapse;margin-top:1rem}.statistics-table th,.statistics-table td{padding:.75rem;text-align:left;border-bottom:1px solid #eee}.statistics-table th{background-color:#f5f5f5;font-weight:600;color:#333}.statistics-table tbody tr:hover{background-color:#f9f9f9}.statistics-totals{margin-top:2rem;padding-top:1.5rem;border-top:2px solid #eee}.statistics-table-wrapper{width:100%;overflow-x:auto;border:1px solid #ddd;border-radius:4px}.statistics-goto-timetable{padding:.35rem .6rem;font-size:.8rem;color:#2563eb;background:#eff6ff;border:1px solid #bfdbfe;border-radius:4px;cursor:pointer;white-space:nowrap}.statistics-goto-timetable:hover{background:#dbeafe;color:#1d4ed8}.statistics-pivot-table{min-width:100%;border-collapse:collapse}.statistics-pivot-table th,.statistics-pivot-table td{padding:.75rem;text-align:left;border:1px solid #ddd;white-space:nowrap}.statistics-pivot-table th{background-color:#f5f5f5;font-weight:600;color:#333;text-align:center}.statistics-pivot-table tbody tr:nth-child(2n){background-color:#fafafa}.statistics-pivot-table tbody tr:hover{background-color:#f0f0f0}.annual-pattern-table-wrapper{overflow:auto;max-height:70vh;margin-top:.5rem}.annual-pattern-table{width:100%;border-collapse:collapse;font-size:.9rem}.annual-pattern-table th,.annual-pattern-table td{border:1px solid #ddd;padding:.5rem;text-align:center}.annual-pattern-table .month-header,.annual-pattern-table .week-header{background-color:#f5f5f5;font-weight:700}.annual-pattern-table .day-header{font-weight:700}.annual-pattern-table .day-header.day-header-mon{background-color:#bbdefb}.annual-pattern-table .day-header.day-header-tue{background-color:#f8bbd0}.annual-pattern-table .day-header.day-header-wed{background-color:#e1bee7}.annual-pattern-table .day-header.day-header-thu{background-color:#c8e6c9}.annual-pattern-table .day-header.day-header-fri{background-color:#ffecb3}.annual-pattern-table .day-date-header,.annual-pattern-table .period-header{font-size:.85rem}.annual-pattern-table .day-date-header.header-day-mon,.annual-pattern-table .period-header.header-day-mon{background-color:#bbdefb}.annual-pattern-table .day-date-header.header-day-tue,.annual-pattern-table .period-header.header-day-tue{background-color:#f8bbd0}.annual-pattern-table .day-date-header.header-day-wed,.annual-pattern-table .period-header.header-day-wed{background-color:#e1bee7}.annual-pattern-table .day-date-header.header-day-thu,.annual-pattern-table .period-header.header-day-thu{background-color:#c8e6c9}.annual-pattern-table .day-date-header.header-day-fri,.annual-pattern-table .period-header.header-day-fri{background-color:#ffecb3}.annual-pattern-table thead tr:first-child th{position:sticky;top:0;z-index:3}.annual-pattern-table thead tr:nth-child(2) th{position:sticky;top:2.5rem;z-index:2;box-shadow:0 2px 4px #0000000f}.annual-pattern-table .month-cell{background-color:#f5f5f5;font-weight:700;vertical-align:middle;border-bottom:2px solid #333}.annual-pattern-table .week-cell{background-color:#f5f5f5;font-weight:700;vertical-align:middle}.annual-pattern-table .day-date-cell{background-color:#fafafa;font-weight:500}.pattern-cell{padding:.5rem;text-align:center;border:1px solid #ddd;cursor:move;-webkit-user-select:none;user-select:none;position:relative;min-width:54px}.pattern-cell.pattern-cell-day-mon{background-color:#e3f2fd}.pattern-cell.pattern-cell-day-tue{background-color:#fce4ec}.pattern-cell.pattern-cell-day-wed{background-color:#f3e5f5}.pattern-cell.pattern-cell-day-thu{background-color:#e8f5e9}.pattern-cell.pattern-cell-day-fri{background-color:#fff8e1}.pattern-cell:hover{background-color:#f0f0f0}.pattern-cell.dragging{opacity:.5;background-color:#e3f2fd}.pattern-cell.drag-over{background-color:#c8e6c9;border:2px solid #4caf50}.pattern-cell.custom-slot{background-color:#e3f2fd}.pattern-cell.blocked-slot{background-color:#ffebee;color:#c62828;font-weight:700;font-size:1.2em}.pattern-cell.delete-mode-cell{cursor:pointer;outline:1px dashed rgba(200,0,0,.5);outline-offset:-1px}.pattern-cell.delete-mode-cell:hover{background-color:#ffebee!important}.pattern-cell .remove-slot-button{position:absolute;top:2px;right:2px;width:18px;height:18px;padding:0;background:#f44336;color:#fff;border:none;border-radius:50%;cursor:pointer;font-size:12px;line-height:1;display:flex;align-items:center;justify-content:center;opacity:.7}.pattern-cell .remove-slot-button:hover{opacity:1;background:#d32f2f}.annual-pattern-table tfoot.annual-pattern-footer{position:sticky;bottom:0;z-index:2;border-top:2px solid #333;background:#f5f5f5;box-shadow:0 -2px 8px #00000014}.annual-pattern-table .footer-toggle{background:#fff3e0;color:#e65100;cursor:pointer;font-weight:600;padding:.5rem .75rem;text-align:left;-webkit-user-select:none;user-select:none}.annual-pattern-table .footer-toggle:hover{background:#ffe0b2}.annual-pattern-table .footer-aggregation-row td{background:#fafafa;font-weight:500;min-width:44px;border-top:2px solid #333;border-bottom:2px solid #333}.annual-pattern-table .footer-aggregation-row td:first-child{border-left:2px solid #333}.annual-pattern-table .footer-aggregation-row td:last-child{border-right:2px solid #333}.annual-pattern-table .footer-agg-label{background:#e8f5e9!important;font-weight:700;min-width:54px}.annual-pattern-table .footer-agg-date{min-width:36px;color:#999}.annual-pattern-table .footer-aggregation-row td.footer-agg-date{min-width:36px}.annual-pattern-table .footer-agg-date.footer-agg-day-mon,.annual-pattern-table .footer-agg-cell.footer-agg-day-mon{background-color:#e3f2fd!important}.annual-pattern-table .footer-agg-date.footer-agg-day-tue,.annual-pattern-table .footer-agg-cell.footer-agg-day-tue{background-color:#fce4ec!important}.annual-pattern-table .footer-agg-date.footer-agg-day-wed,.annual-pattern-table .footer-agg-cell.footer-agg-day-wed{background-color:#f3e5f5!important}.annual-pattern-table .footer-agg-date.footer-agg-day-thu,.annual-pattern-table .footer-agg-cell.footer-agg-day-thu{background-color:#e8f5e9!important}.annual-pattern-table .footer-agg-date.footer-agg-day-fri,.annual-pattern-table .footer-agg-cell.footer-agg-day-fri{background-color:#fff8e1!important}.annual-pattern-table .footer-agg-total{background:#e3f2fd!important;font-weight:700;min-width:54px}.slot-management-dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.slot-management-dialog{background:#fff;border-radius:8px;width:90%;max-width:600px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 4px 6px #0000001a}.slot-management-dialog-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid #ddd}.slot-management-dialog-header h3{margin:0;font-size:1.25rem}.slot-management-dialog-content{padding:1rem;overflow-y:auto;flex:1}.add-slot-section{margin-bottom:2rem;padding-bottom:1rem;border-bottom:2px solid #eee}.add-slot-section h4{margin:0 0 .75rem;font-size:1rem}.add-slot-form{display:flex;gap:.5rem;align-items:center}.add-slot-form select,.add-slot-form input{padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.add-slot-form input{flex:1}.add-slot-form button{padding:.5rem 1rem;background:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem}.add-slot-form button:hover{background:#0056b3}.slot-section{margin-bottom:1.5rem}.slot-section h4{margin:0 0 .75rem;font-size:1rem;color:#333}.slot-list{display:flex;flex-direction:column;gap:.5rem}.slot-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem;background:#f5f5f5;border-radius:4px}.slot-name{font-weight:500}.slot-actions{display:flex;gap:.5rem}.slot-actions button{padding:.25rem .75rem;background:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:.85rem}.slot-actions button:hover{background:#f0f0f0}.slot-item input{flex:1;padding:.5rem;border:1px solid #007bff;border-radius:4px;font-size:.9rem}.empty-message{color:#999;font-style:italic;padding:.75rem;text-align:center}.slot-management-dialog-footer{display:flex;justify-content:flex-end;gap:.5rem;padding:1rem;border-top:1px solid #ddd}.slot-management-dialog-footer button{padding:.5rem 1.5rem;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:.9rem}.slot-management-dialog-footer button.primary{background:#007bff;color:#fff;border-color:#007bff}.slot-management-dialog-footer button.primary:hover{background:#0056b3}.slot-edit-dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1001}.slot-edit-dialog{background:#fff;border-radius:8px;width:90%;max-width:500px;display:flex;flex-direction:column;box-shadow:0 4px 6px #0000001a}.slot-edit-dialog-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid #ddd}.slot-edit-dialog-header h3{margin:0;font-size:1.25rem}.close-button{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#666;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center}.close-button:hover{color:#000}.slot-edit-dialog-content{padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.slot-type-selector,.slot-selector{display:flex;flex-direction:column;gap:.5rem}.slot-type-selector label,.slot-selector label{font-weight:500;font-size:.9rem}.slot-type-selector select,.slot-selector select{padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.empty-message{color:#999;font-style:italic;padding:.5rem;text-align:center}.slot-edit-dialog-footer{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-top:1px solid #ddd}.slot-edit-dialog-footer button{padding:.5rem 1.5rem;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:.9rem}.slot-edit-dialog-footer button.primary{background:#007bff;color:#fff;border-color:#007bff}.slot-edit-dialog-footer button.primary:hover:not(:disabled){background:#0056b3}.slot-edit-dialog-footer button.primary:disabled{opacity:.5;cursor:not-allowed}.slot-edit-dialog-footer button.delete-button{background:#dc3545;color:#fff;border-color:#dc3545}.slot-edit-dialog-footer button.delete-button:hover{background:#c82333}.annual-timetable-pattern-page{padding:.5rem 1rem 1rem}.annual-timetable-pattern-header{margin-bottom:.75rem}.annual-timetable-pattern-header h2{margin:0 0 .35rem;font-size:1.35rem}.annual-timetable-pattern-header p{margin:0;color:#666;font-size:.9rem;line-height:1.4}.annual-timetable-pattern-content{display:flex;flex-direction:column;gap:.75rem}.pattern-selector{display:flex;gap:1rem;align-items:center}.pattern-selector .form-group{display:flex;gap:.5rem;align-items:center}.pattern-selector label{font-weight:500}.pattern-selector select{padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:1rem}.grade-tabs{display:flex;gap:.35rem;border-bottom:2px solid #ddd}.grade-tabs button{padding:.4rem 1rem;border:none;background:transparent;cursor:pointer;font-size:.95rem;border-bottom:3px solid transparent;transition:all .2s}.grade-tabs button:hover{background:#f5f5f5}.grade-tabs button.active{border-bottom-color:#007bff;color:#007bff;font-weight:600}.aggregation-toggle{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:.5rem}.aggregation-toggle button{padding:.5rem 1rem;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background-color .2s,border-color .2s,color .2s;border:1px solid transparent}.aggregation-toggle button.secondary{background-color:#f5f5f5;color:#333;border-color:#ccc}.aggregation-toggle button.secondary:hover{background-color:#e8e8e8;border-color:#aaa}.aggregation-toggle button.primary{background-color:#007bff;color:#fff;border-color:#007bff}.aggregation-toggle button.primary:hover:not(:disabled){background-color:#0056b3;border-color:#0056b3}.aggregation-toggle button.primary:disabled{opacity:.6;cursor:not-allowed}.annual-pattern-table{width:100%;border-collapse:collapse;background:#fff;font-size:.9rem}.annual-pattern-table thead tr:first-child th{border-top:2px solid #333;border-bottom:2px solid #333}.annual-pattern-table .month-header{border-left:2px solid #333}.annual-pattern-table .week-header{border-left:2px solid #333;border-right:2px solid #333}.annual-pattern-table .month-cell{border-left:2px solid #333}.annual-pattern-table .week-cell{border-left:2px solid #333;border-right:2px solid #333}.annual-pattern-table tbody tr:last-child td{border-bottom:2px solid #333}.annual-pattern-table th{background:#f5f5f5;border:1px solid #ddd;padding:.5rem;text-align:center;font-weight:600}.annual-pattern-table .month-header{background:#e8f5e9;min-width:54px}.annual-pattern-table .day-date-header{background:#fff9c4;font-weight:600;min-width:36px;text-align:center;border-left:2px solid #333}.annual-pattern-table .day-date-cell{background:#fff9c4;border-left:2px solid #333;font-weight:600;min-width:36px;text-align:center;vertical-align:middle;padding:.5rem}.annual-pattern-table .day-date-cell.day-date-cell-first{font-size:.9rem;padding:.3rem .18rem;background-color:#ffe0b2;font-weight:700}.annual-pattern-table .day-header{font-size:1rem;border-left:2px solid #333}.annual-pattern-table .day-header.day-header-mon{background:#bbdefb}.annual-pattern-table .day-header.day-header-tue{background:#f8bbd0}.annual-pattern-table .day-header.day-header-wed{background:#e1bee7}.annual-pattern-table .day-header.day-header-thu{background:#c8e6c9}.annual-pattern-table .day-header.day-header-fri{background:#ffecb3}.annual-pattern-table .period-header{font-size:.85rem;min-width:44px}.annual-pattern-table .day-date-header.header-day-mon,.annual-pattern-table .period-header.header-day-mon{background:#bbdefb}.annual-pattern-table .day-date-header.header-day-tue,.annual-pattern-table .period-header.header-day-tue{background:#f8bbd0}.annual-pattern-table .day-date-header.header-day-wed,.annual-pattern-table .period-header.header-day-wed{background:#e1bee7}.annual-pattern-table .day-date-header.header-day-thu,.annual-pattern-table .period-header.header-day-thu{background:#c8e6c9}.annual-pattern-table .day-date-header.header-day-fri,.annual-pattern-table .period-header.header-day-fri{background:#ffecb3}.annual-pattern-table .week-header{background:#e3f2fd;min-width:54px}.annual-pattern-table thead tr:nth-child(2) th{border-bottom:2px solid #999}.annual-pattern-table td{border:1px solid #ddd;padding:.5rem;text-align:center;vertical-align:middle;min-width:44px;height:40px}.annual-pattern-table tbody td{border-top:1px solid #eee;border-bottom:1px solid #eee}.annual-pattern-table .month-cell{background:#e8f5e9;font-weight:500;text-align:center;border-bottom:2px solid #333}.annual-pattern-table tbody tr.month-boundary-row td,.annual-pattern-table tbody td.month-boundary-cell{border-bottom:2px solid #333}.annual-pattern-table .day-header-content{display:flex;align-items:center;gap:.5rem}.annual-pattern-table .day-label{font-weight:600}.annual-pattern-table .pattern-cell{cursor:move;-webkit-user-select:none;user-select:none;transition:all .2s;background:#fff;position:relative}.annual-pattern-table .pattern-cell.pattern-cell-day-mon{background-color:#e3f2fd}.annual-pattern-table .pattern-cell.pattern-cell-day-tue{background-color:#fce4ec}.annual-pattern-table .pattern-cell.pattern-cell-day-wed{background-color:#f3e5f5}.annual-pattern-table .pattern-cell.pattern-cell-day-thu{background-color:#e8f5e9}.annual-pattern-table .pattern-cell.pattern-cell-day-fri{background-color:#fff8e1}.annual-pattern-table .pattern-cell:hover{background:#f0f8ff;border-color:#007bff}.annual-pattern-table .pattern-cell.dragging{opacity:.5;border-color:#007bff;background:#e3f2fd}.annual-pattern-table .pattern-cell.drag-over{border-color:#28a745;background:#d4edda;border-width:2px}.annual-pattern-table .pattern-cell.break-day-cell,.annual-pattern-table .pattern-cell.break-day-cell:hover,.annual-pattern-table .day-date-cell.break-date-cell,.annual-pattern-table .day-date-cell.break-date-cell.day-date-cell-first{background-color:#bdbdbd!important}.annual-pattern-table .pattern-cell.holiday-cell,.annual-pattern-table .pattern-cell.holiday-cell:hover{background-color:#fff!important}.annual-pattern-table .day-date-cell.holiday-date-cell,.annual-pattern-table .day-date-cell.holiday-date-cell.day-date-cell-first{background-color:#e06666!important;color:#fff!important}.annual-pattern-table .day-date-cell.next-year-cell,.annual-pattern-table .pattern-cell.next-year-cell{background-color:#bdbdbd!important;cursor:default}.annual-pattern-table .pattern-cell.next-year-cell:hover{background-color:#bdbdbd!important}.annual-pattern-table .week-cell{background:#e3f2fd;font-weight:500}.hours-aggregation-panel{max-height:0;overflow:hidden;transition:max-height .3s ease-out;margin-bottom:1rem}.hours-aggregation-panel.visible{max-height:1000px;transition:max-height .3s ease-in}.aggregation-section{margin-bottom:2rem}.aggregation-section h3{margin:0 0 1rem;font-size:1.2rem}.test-period-info{margin:0 0 1rem;color:#666;font-size:.9rem}.aggregation-table-wrapper{overflow-x:auto}.aggregation-table{width:100%;border-collapse:collapse;background:#fff}.aggregation-table th,.aggregation-table td{padding:.75rem;border:1px solid #ddd;text-align:center}.aggregation-table th{background:#f5f5f5;font-weight:600}.aggregation-table .day-label{background:#f5f5f5;font-weight:600;text-align:left}.aggregation-table .hours-cell{font-weight:500}.timetable-settings-page{padding:1.5rem;max-width:1200px;margin:0 auto}.settings-section-container{background:#fff;border-radius:8px;padding:2rem;box-shadow:0 2px 4px #0000001a}.settings-section-container h2{margin-top:0;margin-bottom:2rem;color:#2c3e50;font-size:1.5rem;border-bottom:2px solid #3498db;padding-bottom:.5rem}.settings-section{margin-bottom:2rem;padding-bottom:2rem;border-bottom:1px solid #e0e0e0}.settings-section:last-of-type{border-bottom:none}.settings-section h3{margin-top:0;margin-bottom:1rem;color:#34495e;font-size:1.2rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#2c3e50}.checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer}.checkbox-label input[type=checkbox]{width:18px;height:18px;cursor:pointer}.checkbox-label span{font-weight:500;color:#2c3e50}.form-group select{width:100%;max-width:400px;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:1rem}.form-group small{display:block;margin-top:.5rem;color:#7f8c8d;font-size:.9rem}.section-description{color:#555;margin-bottom:1rem;line-height:1.6}.public-view-url-code{background-color:#f5f5f5;padding:.5rem 1rem;border-radius:4px;font-family:Courier New,monospace;font-size:.9rem;word-break:break-all;border:1px solid #ddd}.form-actions{margin-top:2rem;padding-top:1.5rem;border-top:1px solid #e0e0e0}.form-actions button{padding:.75rem 1.5rem;font-size:1rem;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s}.form-actions button.primary{background-color:#3498db;color:#fff}.form-actions button.primary:hover:not(:disabled){background-color:#2980b9}.timetable-management-page{display:flex;flex-direction:column;height:100%;width:100%}.timetable-management-tabs{display:flex;gap:.75rem;border-bottom:2px solid #e2e8f0}.timetable-management-tabs button{padding:.5rem 1rem;border:none;background:none;font-size:1rem;font-weight:600;color:#52606d;cursor:pointer;border-radius:6px 6px 0 0}.timetable-management-tabs button.active{background-color:#fff;color:#1d4ed8;border-bottom:3px solid #1d4ed8}.timetable-management-content{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px #0f172a14;flex:1;overflow-y:auto}.timetable-management-content>*{height:100%;width:100%}.recurrence-editor{padding:1rem;background:#f9f9f9;border-radius:4px;border:1px solid #ddd}.recurrence-editor__field{margin-bottom:1.5rem}.recurrence-editor__field:last-child{margin-bottom:0}.recurrence-editor__field label{display:block;margin-bottom:.5rem;font-weight:500;font-size:.9rem}.recurrence-editor__field .required{color:#dc3545}.recurrence-editor__select{width:100%;padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem}.recurrence-editor__input-number,.recurrence-editor__input-date{padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem;margin-left:.5rem;width:80px}.recurrence-editor__input-number:disabled,.recurrence-editor__input-date:disabled{background:#f5f5f5;cursor:not-allowed}.recurrence-editor__day-buttons{display:flex;flex-wrap:wrap;gap:.5rem}.recurrence-editor__day-button{padding:.5rem 1rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;font-size:.9rem;transition:all .2s}.recurrence-editor__day-button:hover{background:#f0f0f0}.recurrence-editor__day-button.active{background:#007bff;color:#fff;border-color:#007bff}.recurrence-editor__month-buttons{display:flex;flex-wrap:wrap;gap:.5rem}.recurrence-editor__month-button{padding:.5rem 1rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;font-size:.9rem;transition:all .2s}.recurrence-editor__month-button:hover{background:#f0f0f0}.recurrence-editor__month-button.active{background:#007bff;color:#fff;border-color:#007bff}.recurrence-editor__month-day-buttons{display:flex;flex-wrap:wrap;gap:.5rem;max-height:200px;overflow-y:auto}.recurrence-editor__month-day-button{padding:.5rem;min-width:40px;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;font-size:.85rem;transition:all .2s}.recurrence-editor__month-day-button:hover{background:#f0f0f0}.recurrence-editor__month-day-button.active{background:#007bff;color:#fff;border-color:#007bff}.recurrence-editor__end-condition{display:flex;flex-direction:column;gap:.75rem}.recurrence-editor__end-condition label{display:flex;align-items:center;gap:.5rem;font-weight:400;margin-bottom:0}@media (max-width: 768px){.recurrence-editor__day-buttons,.recurrence-editor__month-buttons{justify-content:center}.recurrence-editor__month-day-buttons{max-height:150px}}.dialog-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.accessible-dialog{background:#fff;border-radius:8px;box-shadow:0 4px 6px #0000001a,0 1px 3px #00000014;max-width:90vw;max-height:90vh;overflow:auto;display:flex;flex-direction:column;outline:none}.dialog-header{padding:1rem;border-bottom:1px solid #e0e0e0}.dialog-title{margin:0;font-size:1.25rem;font-weight:600;color:#2c3e50}.dialog-description{margin:.5rem 0 0;font-size:.875rem;color:#666}.dialog-content{padding:1rem;flex:1;overflow:auto}.accessible-dialog:focus{outline:none}.accessible-dialog [tabindex="-1"]:focus{outline:none}.annual-event-edit-dialog{min-width:500px;max-width:600px}.annual-event-edit-dialog__field{margin-bottom:1.5rem}.annual-event-edit-dialog__field-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.5rem}.annual-event-edit-dialog__field label{display:block;margin-bottom:.5rem;font-weight:500;font-size:.9rem}.annual-event-edit-dialog__field .required{color:#dc3545}.annual-event-edit-dialog__input,.annual-event-edit-dialog__select,.annual-event-edit-dialog__textarea{width:100%;padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem;font-family:inherit}.annual-event-edit-dialog__textarea{resize:vertical}.annual-event-edit-dialog__help{margin-top:.25rem;font-size:.85rem;color:#666}.annual-event-edit-dialog__actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:2rem;padding-top:1rem;border-top:1px solid #eee}@media (max-width: 768px){.annual-event-edit-dialog{min-width:auto;max-width:100%}.annual-event-edit-dialog__field-row{grid-template-columns:1fr}}.annual-event-calendar{background:#fff;border-radius:4px;padding:1.5rem}.annual-event-calendar__header{display:flex;align-items:center;justify-content:center;gap:1rem;margin-bottom:1.5rem}.annual-event-calendar__nav-button{padding:.5rem 1rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;font-size:1.2rem;transition:background-color .2s}.annual-event-calendar__nav-button:hover{background:#f0f0f0}.annual-event-calendar__title{margin:0;font-size:1.5rem;min-width:150px;text-align:center}.annual-event-calendar__today-button{padding:.5rem 1rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;font-size:.9rem;transition:background-color .2s}.annual-event-calendar__today-button:hover{background:#f0f0f0}.annual-event-calendar__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:#ddd;border:1px solid #ddd;border-radius:4px;overflow:hidden}.annual-event-calendar__weekday{background:#f5f5f5;padding:.75rem;text-align:center;font-weight:600;font-size:.9rem}.annual-event-calendar__day{background:#fff;min-height:100px;padding:.5rem;display:flex;flex-direction:column}.annual-event-calendar__day.other-month{background:#f9f9f9;color:#999}.annual-event-calendar__day.today{background:#e3f2fd}.annual-event-calendar__day-number{font-weight:600;margin-bottom:.25rem;font-size:.9rem}.annual-event-calendar__day-events{flex:1;display:flex;flex-direction:column;gap:.25rem;overflow:hidden}.annual-event-calendar__event{padding:.25rem .5rem;border-radius:3px;color:#fff;font-size:.75rem;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:opacity .2s}.annual-event-calendar__event:hover{opacity:.8}.annual-event-calendar__event-detail{margin-top:1.5rem;padding:1rem;background:#f9f9f9;border-radius:4px;border:1px solid #ddd}.annual-event-calendar__event-detail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.annual-event-calendar__event-detail-header h4{margin:0;font-size:1.2rem}.annual-event-calendar__close-button{padding:.25rem .5rem;border:none;background:transparent;font-size:1.5rem;cursor:pointer;color:#666;line-height:1}.annual-event-calendar__close-button:hover{color:#000}.annual-event-calendar__event-detail-content p{margin:.5rem 0;font-size:.9rem}.annual-event-calendar__event-detail-actions{display:flex;gap:.5rem;margin-top:1rem;flex-wrap:wrap;align-items:center}.annual-event-calendar__version-select{padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem}.annual-event-calendar__legend{display:flex;gap:1.5rem;margin-top:1.5rem;padding-top:1rem;border-top:1px solid #ddd;flex-wrap:wrap}.annual-event-calendar__legend-item{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.annual-event-calendar__legend-color{width:16px;height:16px;border-radius:3px}@media (max-width: 768px){.annual-event-calendar{padding:1rem}.annual-event-calendar__day{min-height:80px;padding:.25rem}.annual-event-calendar__event{font-size:.7rem;padding:.2rem .4rem}.annual-event-calendar__legend{flex-direction:column;gap:.5rem}}.annual-events-page{padding:1.5rem;max-width:1400px;margin:0 auto}.annual-events-page__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.annual-events-page__header h2{margin:0;font-size:1.5rem}.annual-events-page__controls{display:flex;gap:1rem;align-items:center}.annual-events-page__view-select{padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem}.annual-events-page__filters{display:flex;gap:1.5rem;margin-bottom:1.5rem;padding:1rem;background:#f5f5f5;border-radius:4px}.annual-events-page__filters label{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.annual-events-page__filter-select{padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem}.annual-events-page__loading{text-align:center;padding:2rem;color:#666}.annual-events-page__list{background:#fff;border-radius:4px;overflow:hidden}.annual-events-page__table{width:100%;border-collapse:collapse}.annual-events-page__table thead{background:#f5f5f5}.annual-events-page__table th{padding:.75rem;text-align:left;font-weight:600;border-bottom:2px solid #ddd}.annual-events-page__table td{padding:.75rem;border-bottom:1px solid #eee}.annual-events-page__table tr:hover{background:#f9f9f9}.annual-events-page__empty{text-align:center;color:#999;padding:2rem!important}@media (max-width: 768px){.annual-events-page{padding:1rem}.annual-events-page__header{flex-direction:column;align-items:flex-start;gap:1rem}.annual-events-page__filters{flex-direction:column;gap:.75rem}.annual-events-page__table{font-size:.85rem}.annual-events-page__table th,.annual-events-page__table td{padding:.5rem}}.teaching-plan-edit-dialog{min-width:600px;max-width:800px}.teaching-plan-edit-dialog__field{margin-bottom:1.5rem}.teaching-plan-edit-dialog__field-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.5rem}.teaching-plan-edit-dialog__field label{display:block;margin-bottom:.5rem;font-weight:500;font-size:.9rem}.teaching-plan-edit-dialog__field .required{color:#dc3545}.teaching-plan-edit-dialog__input,.teaching-plan-edit-dialog__select,.teaching-plan-edit-dialog__textarea{width:100%;padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem;font-family:inherit}.teaching-plan-edit-dialog__textarea{resize:vertical}.teaching-plan-edit-dialog__list-item{display:flex;gap:.5rem;margin-bottom:.5rem}.teaching-plan-edit-dialog__list-item input{flex:1}.teaching-plan-edit-dialog__remove-button{padding:.5rem 1rem;border:1px solid #dc3545;border-radius:4px;background:#fff;color:#dc3545;cursor:pointer;font-size:.85rem;transition:background-color .2s}.teaching-plan-edit-dialog__remove-button:hover{background:#dc3545;color:#fff}.teaching-plan-edit-dialog__add-button{padding:.5rem 1rem;border:1px solid #007bff;border-radius:4px;background:#fff;color:#007bff;cursor:pointer;font-size:.85rem;transition:background-color .2s}.teaching-plan-edit-dialog__add-button:hover{background:#007bff;color:#fff}.teaching-plan-edit-dialog__actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:2rem;padding-top:1rem;border-top:1px solid #eee}@media (max-width: 768px){.teaching-plan-edit-dialog{min-width:auto;max-width:100%}.teaching-plan-edit-dialog__field-row{grid-template-columns:1fr}}.teaching-plan-spreadsheet{display:flex;flex-direction:column;gap:1rem;width:100%;max-width:100%}.teaching-plan-spreadsheet__filters{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-end}.teaching-plan-spreadsheet__filters label{display:flex;flex-direction:column;gap:.25rem;font-size:.9rem}.teaching-plan-spreadsheet__select{padding:.4rem .6rem;border:1px solid #cbd5e1;border-radius:6px;min-width:140px}.teaching-plan-spreadsheet__hint,.teaching-plan-spreadsheet__loading,.teaching-plan-spreadsheet__empty{color:#64748b;margin:0;padding:1rem 0}.teaching-plan-spreadsheet__table-wrap{overflow-x:auto;border:1px solid #e2e8f0;border-radius:8px;background:#fff}.teaching-plan-spreadsheet__table{width:100%;border-collapse:collapse;font-size:.9rem}.teaching-plan-spreadsheet__table th,.teaching-plan-spreadsheet__table td{border:1px solid #e2e8f0;padding:.5rem .75rem;text-align:left;vertical-align:top}.teaching-plan-spreadsheet__table th{background:#f8fafc;font-weight:600;color:#334155}.teaching-plan-spreadsheet__col-index{width:3rem;text-align:center}.teaching-plan-spreadsheet__col-date{width:6rem;white-space:nowrap}.teaching-plan-spreadsheet__col-period{width:3.5rem;text-align:center}.teaching-plan-spreadsheet__col-content,.teaching-plan-spreadsheet__col-items,.teaching-plan-spreadsheet__col-objectives,.teaching-plan-spreadsheet__col-reflection{min-width:160px}.teaching-plan-spreadsheet__col-items{min-width:120px}.teaching-plan-spreadsheet__cell-text{min-height:4.5rem;padding:.25rem 0;cursor:text;white-space:pre-wrap;word-break:break-word}.teaching-plan-spreadsheet__cell-text:hover{background:#f1f5f9;border-radius:4px}.teaching-plan-spreadsheet__cell-text:focus{outline:2px solid #3b82f6;outline-offset:-2px;border-radius:4px}.teaching-plan-spreadsheet__input{width:100%;min-height:4.5rem;padding:.25rem 0;margin:-.25rem 0;border:none;border-radius:0;background:transparent;font-size:inherit;font-family:inherit;line-height:inherit;resize:none;outline:none;box-shadow:none;display:block;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.teaching-plan-spreadsheet__input::-webkit-scrollbar{display:none}.teaching-plan-spreadsheet__input:focus{background:#f8fafc;box-shadow:inset 0 0 0 1px #e2e8f0;border-radius:2px}.teaching-plan-spreadsheet__saving{margin:0;font-size:.85rem;color:#64748b}.teaching-plans-page{padding:1.5rem;max-width:1400px;margin:0 auto}.teaching-plans-page__header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem}.teaching-plans-page__tabs{display:flex;gap:.25rem;padding:.25rem;background:#f1f5f9;border-radius:8px}.teaching-plans-page__tab{padding:.5rem 1rem;border:none;border-radius:6px;background:transparent;font-size:.95rem;cursor:pointer;color:#475569}.teaching-plans-page__tab:hover{background:#fffc;color:#334155}.teaching-plans-page__tab.active{background:#fff;color:#1e293b;font-weight:600;box-shadow:0 1px 3px #00000014}.teaching-plans-page__header h2{margin:0;font-size:1.5rem}.teaching-plans-page__filters{display:flex;gap:1.5rem;margin-bottom:1.5rem;padding:1rem;background:#f5f5f5;border-radius:4px}.teaching-plans-page__filters label{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.teaching-plans-page__filter-select{padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem}.teaching-plans-page__loading{text-align:center;padding:2rem;color:#666}.teaching-plans-page__empty{text-align:center;padding:2rem;color:#999}.teaching-plans-page__plan-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.teaching-plans-page__plan-card{background:#fff;border:1px solid #ddd;border-radius:4px;padding:1rem;transition:box-shadow .2s}.teaching-plans-page__plan-card:hover{box-shadow:0 2px 8px #0000001a}.teaching-plans-page__plan-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid #eee}.teaching-plans-page__plan-card-header h3{margin:0;font-size:1.1rem;flex:1}.teaching-plans-page__plan-card-actions{display:flex;gap:.5rem}.teaching-plans-page__plan-card-content{font-size:.9rem}.teaching-plans-page__plan-card-content p{margin:.5rem 0}.teaching-plans-page__plan-card-preview{margin-top:.75rem;padding-top:.75rem;border-top:1px solid #eee;color:#666;font-size:.85rem}@media (max-width: 768px){.teaching-plans-page{padding:1rem}.teaching-plans-page__header{flex-direction:column;align-items:flex-start;gap:1rem}.teaching-plans-page__filters{flex-direction:column;gap:.75rem}.teaching-plans-page__plan-cards{grid-template-columns:1fr}}.teaching-log-edit-dialog{min-width:600px;max-width:800px}.teaching-log-edit-dialog__field{margin-bottom:1.5rem}.teaching-log-edit-dialog__field-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.5rem}.teaching-log-edit-dialog__field label{display:block;margin-bottom:.5rem;font-weight:500;font-size:.9rem}.teaching-log-edit-dialog__field .required{color:#dc3545}.teaching-log-edit-dialog__input,.teaching-log-edit-dialog__select,.teaching-log-edit-dialog__textarea{width:100%;padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem;font-family:inherit}.teaching-log-edit-dialog__textarea{resize:vertical}.teaching-log-edit-dialog__input-number{width:80px;padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem}.teaching-log-edit-dialog__attendance{display:flex;gap:1.5rem;flex-wrap:wrap}.teaching-log-edit-dialog__attendance-item{display:flex;align-items:center;gap:.5rem}.teaching-log-edit-dialog__attendance-item label{margin-bottom:0;font-weight:400}.teaching-log-edit-dialog__actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:2rem;padding-top:1rem;border-top:1px solid #eee}@media (max-width: 768px){.teaching-log-edit-dialog{min-width:auto;max-width:100%}.teaching-log-edit-dialog__field-row{grid-template-columns:1fr}.teaching-log-edit-dialog__attendance{flex-direction:column;gap:.75rem}}.teaching-log-weekly-print{padding:1rem;max-width:100%}.teaching-log-weekly-print__main{max-width:min(285.12mm,100%);margin-left:auto;margin-right:auto;box-sizing:border-box}.teaching-log-weekly-print__controls{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-end;margin-bottom:1.5rem;width:100%;box-sizing:border-box}.teaching-log-weekly-print__controls label{display:flex;flex-direction:column;gap:.25rem;font-size:.9rem}.teaching-log-weekly-print__select,.teaching-log-weekly-print__input{padding:.4rem .6rem;border:1px solid #cbd5e1;border-radius:6px;min-width:140px}.teaching-log-weekly-print__data-source{font-size:.85rem;color:#475569;margin:0 0 1rem;max-width:100%;width:100%;box-sizing:border-box}.teaching-log-weekly-print__hint,.teaching-log-weekly-print__loading{color:#64748b;margin:0}.teaching-log-weekly-print__screen-scale-wrapper{zoom:1.5;width:100%;box-sizing:border-box}.teaching-log-weekly-print__document{--weekly-print-row-h: 44px;background:#fff;color:#000;padding:1rem;max-width:min(285.12mm,100%);margin:0 auto;box-sizing:border-box}.teaching-log-weekly-print__title{font-size:1.6rem;margin:0 0 .5rem;text-align:center}.teaching-log-weekly-print__week-label{margin:0 0 1rem;text-align:center;font-size:1.15rem}.teaching-log-weekly-print__grid{width:100%;max-width:100%;border-collapse:collapse;font-size:1rem;margin-bottom:1.5rem;table-layout:fixed}.teaching-log-weekly-print__grid--pdf col:nth-child(1),.teaching-log-weekly-print__grid--pdf col:nth-child(2){width:3.5%}.teaching-log-weekly-print__grid tbody tr{height:44px!important;max-height:44px!important;min-height:44px!important;overflow:hidden!important}.teaching-log-weekly-print__grid tbody tr td,.teaching-log-weekly-print__grid tbody tr th{overflow:hidden!important;vertical-align:middle}.teaching-log-weekly-print__grid th,.teaching-log-weekly-print__grid td{border:1px solid #333;padding:.35rem;vertical-align:top}.teaching-log-weekly-print__grid--pdf th,.teaching-log-weekly-print__grid--pdf td{text-align:center;vertical-align:middle}.teaching-log-weekly-print__grid--pdf .teaching-log-weekly-print__td-cell--input-top-right,.teaching-log-weekly-print__td-cell--input-top-right{text-align:left}.teaching-log-weekly-print__th-period-block{width:3.5%;min-width:2.73em;max-width:3.8em;text-align:center;background:#f5f5f5;font-weight:600;font-size:1.3rem;vertical-align:middle;padding:.15em .2em}.teaching-log-weekly-print__td-period-vertical{width:3.5%;min-width:2.73em;max-width:3.8em;font-weight:600;font-size:1.4rem;background:#f8f8f8;writing-mode:vertical-rl;text-orientation:mixed;letter-spacing:.1em;padding:.15em .2em;text-align:center;vertical-align:middle}.teaching-log-weekly-print__period-inner{display:inline-block;line-height:1.4}.teaching-log-weekly-print__grid--pdf .teaching-log-weekly-print__th-label{font-weight:600;font-size:1.2rem;text-align:center;vertical-align:middle;background:#f5f5f5;writing-mode:vertical-rl;text-orientation:mixed;letter-spacing:.05em}.teaching-log-weekly-print__grid--pdf tbody .teaching-log-weekly-print__th-label{width:3.5%;min-width:2.73em;max-width:3.8em;padding:.15em .2em}.teaching-log-weekly-print__grid--pdf tbody .teaching-log-weekly-print__tr--content-objectives .teaching-log-weekly-print__th-label,.teaching-log-weekly-print__grid--pdf tbody .teaching-log-weekly-print__tr--reflection .teaching-log-weekly-print__th-label{font-size:2.4mm}.teaching-log-weekly-print__grid--pdf .teaching-log-weekly-print__th-label--header{writing-mode:horizontal-tb;text-orientation:mixed;width:3.5%;min-width:2.73em;max-width:3.8em;padding:.15em .2em;text-align:center}.teaching-log-weekly-print__grid--pdf thead tr{height:36px!important;min-height:36px!important;max-height:36px!important}.teaching-log-weekly-print__grid--pdf thead th,.teaching-log-weekly-print__grid--pdf thead td{overflow:hidden;vertical-align:middle}.teaching-log-weekly-print__grid--pdf .teaching-log-weekly-print__th-day{width:18.4%;text-align:center;font-size:1.3rem;font-weight:600;white-space:nowrap}.teaching-log-weekly-print__grid--pdf .teaching-log-weekly-print__td-date{width:18.4%;text-align:center;font-size:1.1rem;white-space:nowrap}.teaching-log-weekly-print__grid--pdf .teaching-log-weekly-print__td-cell{position:relative;width:18.4%;height:44px!important;min-height:44px!important;max-height:44px!important;padding:0;white-space:pre-wrap;word-break:break-word;text-align:center;vertical-align:middle;font-size:1.15rem;overflow:hidden;box-sizing:border-box}.teaching-log-weekly-print__th-day,.teaching-log-weekly-print__td-day{width:2em;text-align:center}.teaching-log-weekly-print__th-date,.teaching-log-weekly-print__td-date{width:5em;text-align:center}.teaching-log-weekly-print__th-period{text-align:center;min-width:100px}.teaching-log-weekly-print__td-cell{position:relative;min-width:100px;height:44px!important;min-height:44px!important;max-height:44px!important;padding:0;overflow:hidden;box-sizing:border-box}.teaching-log-weekly-print__td-cell-inner{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;min-height:0;max-height:100%;overflow:hidden;box-sizing:border-box}.teaching-log-weekly-print__td-cell-inner>*{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;min-height:0;max-height:100%;box-sizing:border-box;display:block;overflow:hidden}.teaching-log-weekly-print__cell-display{padding:0;cursor:text;white-space:pre-wrap;word-break:break-word;overflow:hidden;display:flex;align-items:center;justify-content:center}.teaching-log-weekly-print__td-cell--input-top-right .teaching-log-weekly-print__cell-display{align-items:flex-start;justify-content:flex-start}@media print{.teaching-log-weekly-print__screen-scale-wrapper{zoom:normal!important}.teaching-log-weekly-print__cell-display[role=button]{cursor:default;pointer-events:none}}.teaching-log-weekly-print__cell-display:hover{background:#f8fafc;border-radius:2px}.teaching-log-weekly-print__cell-input{padding:.2rem;margin:0;border:none;border-radius:0;background:transparent;font-size:inherit;font-family:inherit;line-height:inherit;resize:none;outline:none;box-shadow:none;overflow-x:hidden!important;overflow-y:auto!important;scrollbar-width:none;-ms-overflow-style:none;height:100%!important;max-height:100%!important;box-sizing:border-box}.teaching-log-weekly-print__td-cell--input-top-right .teaching-log-weekly-print__cell-input{text-align:left}.teaching-log-weekly-print__cell-input::-webkit-scrollbar{display:none}.teaching-log-weekly-print__cell-input:focus{background:#f8fafc;box-shadow:inset 0 0 0 1px #e2e8f0;border-radius:2px}.teaching-log-weekly-print__td-cell--popover-anchor{box-shadow:inset 0 0 0 2px #3b82f6;background:#eff6ff}.teaching-log-weekly-print__cell-editing-hint{display:block;font-size:.7rem;color:#64748b;padding:2px 4px;-webkit-user-select:none;user-select:none}.teaching-log-weekly-print__edit-popover{background:#fff;border:1px solid #cbd5e1;border-radius:8px;box-shadow:0 10px 15px -3px #00000014,0 4px 6px -2px #0000000a;padding:8px;box-sizing:border-box}.teaching-log-weekly-print__edit-popover-input{display:block;width:100%;box-sizing:border-box;margin:0;padding:10px 12px;min-height:220px;max-height:min(70vh,480px);font-size:.8125rem;line-height:1.5;font-family:inherit;color:#0f172a;border:1px solid #e2e8f0;border-radius:6px;resize:vertical;background:#fafafa}.teaching-log-weekly-print__edit-popover-input:focus{outline:none;border-color:#3b82f6;background:#fff;box-shadow:0 0 0 3px #3b82f626}.teaching-log-weekly-print__cell-print-only{display:none;white-space:pre-wrap;word-break:break-word;height:100%;min-height:0;padding:0;overflow:hidden;box-sizing:border-box}.teaching-log-weekly-print__cell-inner{display:flex;flex-direction:column;gap:.25rem}.teaching-log-weekly-print__lesson{border-bottom:1px solid #e2e8f0;padding-bottom:.25rem}.teaching-log-weekly-print__lesson:last-child{border-bottom:none}.teaching-log-weekly-print__lesson-header{font-weight:600;font-size:.85em}.teaching-log-weekly-print__lesson-content,.teaching-log-weekly-print__lesson-objectives,.teaching-log-weekly-print__lesson-reflection{font-size:.9em;white-space:pre-wrap;word-break:break-word}.teaching-log-weekly-print__lesson-reflection{color:#475569}.teaching-log-weekly-print__empty{color:#94a3b8}.teaching-log-weekly-print__section-title{font-size:1.35rem;margin:0 0 .5rem}.teaching-log-weekly-print__counts{margin-bottom:1.5rem}.teaching-log-weekly-print__counts-table{width:100%;border-collapse:collapse;font-size:1.15rem}.teaching-log-weekly-print__counts-table th,.teaching-log-weekly-print__counts-table td{border:1px solid #333;padding:.4rem;text-align:left}.teaching-log-weekly-print__empty-cell{color:#94a3b8}.teaching-log-weekly-print__counts-table--pdf th,.teaching-log-weekly-print__counts-table--pdf td{border:1px solid #333;padding:.5rem .75rem;text-align:center}.teaching-log-weekly-print__counts-table--pdf th{background:#f5f5f5;text-align:center;min-width:3em}.teaching-log-weekly-print__counts-td{min-width:2.5em}.teaching-log-weekly-print__layout-sidebar-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;z-index:999}.teaching-log-weekly-print__layout-sidebar{position:fixed;top:0;right:0;width:320px;max-width:95vw;height:100vh;background:#fff;box-shadow:-4px 0 12px #00000026;z-index:1000;display:flex;flex-direction:column;transform:translate(100%);transition:transform .2s ease-out;overflow:hidden}.teaching-log-weekly-print__layout-sidebar--open{transform:translate(0)}.teaching-log-weekly-print__layout-sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1rem .75rem;border-bottom:1px solid #e2e8f0;flex-shrink:0}.teaching-log-weekly-print__layout-sidebar-title{margin:0;font-size:1.1rem;font-weight:600}.teaching-log-weekly-print__layout-sidebar-close{width:2rem;height:2rem;padding:0;border:none;background:transparent;font-size:1.5rem;line-height:1;cursor:pointer;color:#64748b;border-radius:4px}.teaching-log-weekly-print__layout-sidebar-close:hover{background:#f1f5f9;color:#334155}.teaching-log-weekly-print__layout-sidebar-body{padding:1rem;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:1rem}.teaching-log-weekly-print__layout-sidebar-note{margin:0;font-size:.8rem;color:#64748b;line-height:1.4}.teaching-log-weekly-print__layout-fields{display:flex;flex-direction:column;gap:.75rem}.teaching-log-weekly-print__layout-field{display:flex;flex-direction:column;gap:.25rem;font-size:.875rem}.teaching-log-weekly-print__layout-field span{font-weight:500;color:#334155}.teaching-log-weekly-print__layout-field input{padding:.4rem .5rem;border:1px solid #cbd5e1;border-radius:6px;font-size:.9rem;width:100%;box-sizing:border-box}.teaching-log-weekly-print__layout-field-hint{display:block;font-size:.75rem;color:#64748b;margin-top:.25rem;line-height:1.3}.teaching-log-weekly-print__layout-field input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f633}.teaching-log-weekly-print__layout-sidebar-actions{display:flex;gap:.5rem;justify-content:flex-end;padding-top:.5rem;border-top:1px solid #e2e8f0;flex-shrink:0}@media print{.teaching-log-weekly-print__layout-sidebar-backdrop,.teaching-log-weekly-print__layout-sidebar{display:none!important}@page{size:A4;margin:6mm}html,body{margin:0!important;padding:0!important;height:285mm!important;max-height:285mm!important;overflow:hidden!important;box-sizing:border-box}body *{visibility:hidden!important}.teaching-log-weekly-print__document,.teaching-log-weekly-print__document *{visibility:visible!important}.no-print{display:none!important}.teaching-log-weekly-print{padding:0!important;max-width:100%!important;width:100%!important;overflow:hidden!important;box-sizing:border-box}@page{size:A4;margin:10mm 6mm}.teaching-log-weekly-print__document{--weekly-print-row-h: 6.5mm;display:grid!important;grid-template-columns:1fr!important;grid-template-rows:8mm 5mm minmax(0,1fr) auto!important;grid-template-areas:"title" "week" "grid" "counts"!important;position:fixed!important;top:0!important;left:0!important;width:198mm!important;max-width:198mm!important;min-width:198mm!important;height:277mm!important;max-height:277mm!important;min-height:277mm!important;padding:10mm 3mm 2mm 12mm!important;margin:0!important;overflow:hidden!important;box-sizing:border-box;page-break-inside:avoid!important;page-break-after:avoid!important;align-content:start!important}.teaching-log-weekly-print__document .teaching-log-weekly-print__title{grid-area:title!important;margin:0 0 1mm!important;text-align:center!important}.teaching-log-weekly-print__document .teaching-log-weekly-print__week-label{grid-area:week!important;margin:0 0 1mm!important;text-align:center!important}.teaching-log-weekly-print__document .teaching-log-weekly-print__grid-wrapper{grid-area:grid!important;min-height:0!important;overflow:hidden!important;align-self:stretch!important}.teaching-log-weekly-print__document .teaching-log-weekly-print__counts{grid-area:counts!important;margin:1mm 0 0!important;overflow:visible!important;align-self:end!important}.teaching-log-weekly-print__document .teaching-log-weekly-print__title{height:8mm!important;min-height:8mm!important;max-height:8mm!important;margin:0 0 1mm!important;padding:0!important;font-size:3.2mm!important;line-height:8mm!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis;text-align:center!important}.teaching-log-weekly-print__document .teaching-log-weekly-print__week-label{height:5mm!important;min-height:5mm!important;max-height:5mm!important;margin:0!important;padding:0!important;font-size:2.6mm!important;line-height:5mm!important;white-space:nowrap!important;text-align:center!important;overflow:hidden!important}.teaching-log-weekly-print__grid{width:100%!important;max-width:100%!important;table-layout:fixed!important;overflow:hidden!important}.teaching-log-weekly-print__grid--pdf{width:100%!important;max-width:100%!important}.teaching-log-weekly-print__grid--pdf th,.teaching-log-weekly-print__grid--pdf td{box-sizing:border-box!important;overflow:hidden!important}.teaching-log-weekly-print__grid--pdf thead tr{height:5mm!important;min-height:5mm!important;max-height:5mm!important}.teaching-log-weekly-print__grid--pdf thead th,.teaching-log-weekly-print__grid--pdf thead td{overflow:hidden!important;vertical-align:middle!important;font-size:2.4mm!important;line-height:1.1!important}.teaching-log-weekly-print__grid--pdf .teaching-log-weekly-print__th-day,.teaching-log-weekly-print__grid--pdf .teaching-log-weekly-print__td-date{white-space:nowrap!important;font-size:2.2mm!important;line-height:5mm!important;text-align:center!important}.teaching-log-weekly-print__grid--pdf .teaching-log-weekly-print__th-period-block,.teaching-log-weekly-print__grid--pdf .teaching-log-weekly-print__td-period-vertical{font-size:2.6mm!important}.teaching-log-weekly-print__grid--pdf .teaching-log-weekly-print__th-label{min-width:0;white-space:nowrap!important;overflow:hidden!important}.teaching-log-weekly-print__grid.teaching-log-weekly-print__grid--pdf thead tr,.teaching-log-weekly-print__grid thead tr{height:var(--weekly-print-header-h, 4mm)!important;min-height:var(--weekly-print-header-h, 4mm)!important;max-height:var(--weekly-print-header-h, 4mm)!important;overflow:hidden!important}.teaching-log-weekly-print__grid.teaching-log-weekly-print__grid--pdf tbody tr,.teaching-log-weekly-print__grid tbody tr{overflow:hidden!important}.teaching-log-weekly-print__grid--pdf tbody .teaching-log-weekly-print__tr--class,.teaching-log-weekly-print__grid tbody .teaching-log-weekly-print__tr--class{height:var(--weekly-print-row-h-class, 5.2mm)!important;min-height:var(--weekly-print-row-h-class, 5.2mm)!important;max-height:var(--weekly-print-row-h-class, 5.2mm)!important}.teaching-log-weekly-print__grid--pdf tbody .teaching-log-weekly-print__tr--content-objectives,.teaching-log-weekly-print__grid tbody .teaching-log-weekly-print__tr--content-objectives{height:var(--weekly-print-row-h-content, 16.9mm)!important;min-height:var(--weekly-print-row-h-content, 16.9mm)!important;max-height:var(--weekly-print-row-h-content, 16.9mm)!important}.teaching-log-weekly-print__grid--pdf tbody .teaching-log-weekly-print__tr--reflection,.teaching-log-weekly-print__grid tbody .teaching-log-weekly-print__tr--reflection{height:var(--weekly-print-row-h-reflection, 14.04mm)!important;min-height:var(--weekly-print-row-h-reflection, 14.04mm)!important;max-height:var(--weekly-print-row-h-reflection, 14.04mm)!important}.teaching-log-weekly-print__grid--pdf tbody .teaching-log-weekly-print__tr--class .teaching-log-weekly-print__th-label,.teaching-log-weekly-print__grid--pdf tbody .teaching-log-weekly-print__tr--class .teaching-log-weekly-print__td-cell,.teaching-log-weekly-print__grid tbody .teaching-log-weekly-print__tr--class .teaching-log-weekly-print__th-label,.teaching-log-weekly-print__grid tbody .teaching-log-weekly-print__tr--class .teaching-log-weekly-print__td-cell{height:var(--weekly-print-row-h-class, 5.2mm)!important;min-height:var(--weekly-print-row-h-class, 5.2mm)!important;max-height:var(--weekly-print-row-h-class, 5.2mm)!important;overflow:hidden!important}.teaching-log-weekly-print__grid--pdf tbody .teaching-log-weekly-print__tr--content-objectives .teaching-log-weekly-print__th-label,.teaching-log-weekly-print__grid--pdf tbody .teaching-log-weekly-print__tr--content-objectives .teaching-log-weekly-print__td-cell,.teaching-log-weekly-print__grid tbody .teaching-log-weekly-print__tr--content-objectives .teaching-log-weekly-print__th-label,.teaching-log-weekly-print__grid tbody .teaching-log-weekly-print__tr--content-objectives .teaching-log-weekly-print__td-cell{height:var(--weekly-print-row-h-content, 16.9mm)!important;min-height:var(--weekly-print-row-h-content, 16.9mm)!important;max-height:var(--weekly-print-row-h-content, 16.9mm)!important;overflow:hidden!important}.teaching-log-weekly-print__grid--pdf tbody .teaching-log-weekly-print__tr--reflection .teaching-log-weekly-print__th-label,.teaching-log-weekly-print__grid--pdf tbody .teaching-log-weekly-print__tr--reflection .teaching-log-weekly-print__td-cell,.teaching-log-weekly-print__grid tbody .teaching-log-weekly-print__tr--reflection .teaching-log-weekly-print__th-label,.teaching-log-weekly-print__grid tbody .teaching-log-weekly-print__tr--reflection .teaching-log-weekly-print__td-cell{height:var(--weekly-print-row-h-reflection, 14.04mm)!important;min-height:var(--weekly-print-row-h-reflection, 14.04mm)!important;max-height:var(--weekly-print-row-h-reflection, 14.04mm)!important;overflow:hidden!important}.teaching-log-weekly-print__grid--pdf .teaching-log-weekly-print__td-cell,.teaching-log-weekly-print__td-cell{padding:0!important;overflow:hidden!important;min-width:0}.teaching-log-weekly-print__grid--pdf tbody .teaching-log-weekly-print__tr--class .teaching-log-weekly-print__td-cell *,.teaching-log-weekly-print__grid tbody .teaching-log-weekly-print__tr--class .teaching-log-weekly-print__td-cell *,.teaching-log-weekly-print__grid--pdf .teaching-log-weekly-print__td-cell *,.teaching-log-weekly-print__td-cell *{line-height:1.2!important}.teaching-log-weekly-print__document .teaching-log-weekly-print__counts{margin:2mm 0 0!important;flex-shrink:0!important;overflow:visible!important}.teaching-log-weekly-print__document .teaching-log-weekly-print__section-title{font-size:3.5mm!important;margin:0 0 .6mm!important;line-height:1.2!important}.teaching-log-weekly-print__counts-table,.teaching-log-weekly-print__counts-table--pdf{font-size:3mm!important;line-height:1.25!important}.teaching-log-weekly-print__counts-table--pdf th,.teaching-log-weekly-print__counts-table--pdf td{padding:.55mm .8mm!important}.teaching-log-weekly-print__grid--pdf .teaching-log-weekly-print__th-period-block,.teaching-log-weekly-print__grid--pdf .teaching-log-weekly-print__td-period-vertical{min-width:0}.teaching-log-weekly-print__cell-print-only{display:block!important}}.teaching-logs-page{padding:1.5rem;max-width:1400px;margin:0 auto}.teaching-logs-page__header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem}.teaching-logs-page__tabs{display:flex;gap:.25rem;padding:.25rem;background:#f1f5f9;border-radius:8px}.teaching-logs-page__tab{padding:.5rem 1rem;border:none;border-radius:6px;background:transparent;font-size:.95rem;cursor:pointer;color:#475569}.teaching-logs-page__tab:hover{background:#fffc;color:#334155}.teaching-logs-page__tab.active{background:#fff;color:#1e293b;font-weight:600;box-shadow:0 1px 3px #00000014}.teaching-logs-page__header h2{margin:0;font-size:1.5rem}.teaching-logs-page__filters{display:flex;gap:1.5rem;margin-bottom:1.5rem;padding:1rem;background:#f5f5f5;border-radius:4px}.teaching-logs-page__filters label{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.teaching-logs-page__filter-select,.teaching-logs-page__filter-input{padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem}.teaching-logs-page__loading{text-align:center;padding:2rem;color:#666}.teaching-logs-page__empty{text-align:center;padding:2rem;color:#999}.teaching-logs-page__log-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.teaching-logs-page__log-card{background:#fff;border:1px solid #ddd;border-radius:4px;padding:1rem;transition:box-shadow .2s}.teaching-logs-page__log-card:hover{box-shadow:0 2px 8px #0000001a}.teaching-logs-page__log-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid #eee}.teaching-logs-page__log-card-header h3{margin:0;font-size:1.1rem;flex:1}.teaching-logs-page__log-card-actions{display:flex;gap:.5rem}.teaching-logs-page__log-card-content{font-size:.9rem}.teaching-logs-page__log-card-content p{margin:.5rem 0}.teaching-logs-page__log-card-preview{margin-top:.75rem;padding-top:.75rem;border-top:1px solid #eee;color:#666;font-size:.85rem}.btn-sm{padding:.25rem .5rem;font-size:.85rem}@media (max-width: 768px){.teaching-logs-page{padding:1rem}.teaching-logs-page__header{flex-direction:column;align-items:flex-start;gap:1rem}.teaching-logs-page__filters{flex-direction:column;gap:.75rem}.teaching-logs-page__log-cards{grid-template-columns:1fr}}@media print{.teaching-logs-page__header{display:none!important}}.spreadsheet-sync-dialog{min-width:500px;max-width:600px}.spreadsheet-sync-dialog__field{margin-bottom:1.5rem}.spreadsheet-sync-dialog__field label{display:block;margin-bottom:.5rem;font-weight:500;font-size:.9rem}.spreadsheet-sync-dialog__field .required{color:#dc3545}.spreadsheet-sync-dialog__input,.spreadsheet-sync-dialog__select{width:100%;padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem;font-family:inherit}.spreadsheet-sync-dialog__help{margin-top:.25rem;font-size:.85rem;color:#666}.spreadsheet-sync-dialog__actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:2rem;padding-top:1rem;border-top:1px solid #eee}.btn-primary:hover{background:#0056b3}@media (max-width: 768px){.spreadsheet-sync-dialog{min-width:auto;max-width:100%}}.spreadsheet-sync-page{padding:1.5rem;max-width:1400px;margin:0 auto}.spreadsheet-sync-page__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.spreadsheet-sync-page__header h2{margin:0;font-size:1.5rem}.spreadsheet-sync-page__description{margin:.5rem 0 0;font-size:.9rem;color:#555;max-width:560px}.spreadsheet-sync-page__description p{margin:.25em 0}.spreadsheet-sync-page__description p:first-child{margin-top:0}.spreadsheet-sync-page__loading{text-align:center;padding:2rem;color:#666}.spreadsheet-sync-page__empty{text-align:center;padding:2rem;color:#999}.spreadsheet-sync-page__list{background:#fff;border-radius:4px;overflow:hidden}.spreadsheet-sync-page__table{width:100%;border-collapse:collapse}.spreadsheet-sync-page__table thead{background:#f5f5f5}.spreadsheet-sync-page__table th{padding:.75rem;text-align:left;font-weight:600;border-bottom:2px solid #ddd}.spreadsheet-sync-page__table td{padding:.75rem;border-bottom:1px solid #eee}.spreadsheet-sync-page__table tr:hover{background:#f9f9f9}.spreadsheet-sync-page__status{padding:.25rem .5rem;border-radius:4px;font-size:.85rem;font-weight:500}.spreadsheet-sync-page__status--idle{background:#e9ecef;color:#495057}.spreadsheet-sync-page__status--syncing{background:#fff3cd;color:#856404}.spreadsheet-sync-page__status--error{background:#f8d7da;color:#721c24}.spreadsheet-sync-page__error{margin-top:.25rem;font-size:.85rem;color:#dc3545}.spreadsheet-sync-page__preview-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.spreadsheet-sync-page__preview-modal{background:#fff;border-radius:8px;min-width:320px;max-width:480px;max-height:80vh;overflow:auto;box-shadow:0 4px 20px #00000026}.spreadsheet-sync-page__preview-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid #eee}.spreadsheet-sync-page__preview-header h3{margin:0;font-size:1.1rem}.spreadsheet-sync-page__preview-body{padding:1.25rem}.spreadsheet-sync-page__preview-body p{margin:0 0 .5rem}.spreadsheet-sync-page__preview-errors{margin-top:.75rem;padding:.5rem;background:#f8d7da;color:#721c24;border-radius:4px;font-size:.9rem}.spreadsheet-sync-page__preview-unresolved{margin-top:1rem;font-size:.9rem}.spreadsheet-sync-page__preview-unresolved ul{margin:.25rem 0 0;padding-left:1.25rem}.btn{padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;transition:background-color .2s}.btn-primary{background:#007bff;color:#fff}.btn-primary:hover:not(:disabled){background:#0056b3}.btn-primary:disabled{background:#ccc;cursor:not-allowed}.btn-secondary{background:#6c757d;color:#fff}.btn-secondary:hover{background:#545b62}.btn-info{background:#17a2b8;color:#fff}.btn-info:hover:not(:disabled){background:#138496}.btn-info:disabled{background:#ccc;cursor:not-allowed}.btn-danger:hover:not(:disabled){background:#c82333}.btn-danger:disabled{background:#ccc;cursor:not-allowed}.btn-danger{background:#dc3545;color:#fff}.btn-danger:hover{background:#c82333}.btn-sm{padding:.25rem .5rem;font-size:.85rem;margin-right:.25rem}@media (max-width: 768px){.spreadsheet-sync-page{padding:1rem}.spreadsheet-sync-page__header{flex-direction:column;align-items:flex-start;gap:1rem}.spreadsheet-sync-page__table{font-size:.85rem}.spreadsheet-sync-page__table th,.spreadsheet-sync-page__table td{padding:.5rem}}.school-settings-page{display:flex;flex-direction:column;height:100%;overflow-y:auto;padding:1.5rem;background-color:#f5f5f5}.school-settings-header{margin-bottom:2rem;padding-bottom:1rem;border-bottom:2px solid #e2e8f0}.school-settings-header h2{margin:0 0 .5rem;font-size:1.5rem;font-weight:600;color:#1a202c}.school-settings-header p{margin:0;color:#718096;font-size:.9rem}.school-settings-content{background-color:#fff;border-radius:8px;padding:2rem;box-shadow:0 1px 3px #0000001a}.settings-section{margin-bottom:2rem;padding-bottom:2rem;border-bottom:1px solid #e2e8f0}.settings-section:last-of-type{border-bottom:none;margin-bottom:1.5rem}.public-view-url-code{display:inline-block;max-width:100%;padding:.35rem .5rem;background:#f1f5f9;border-radius:4px;font-size:.9rem;word-break:break-all}.settings-section h3{margin:0 0 1.5rem;font-size:1.2rem;font-weight:600;color:#2d3748}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#374151;font-size:.9rem}.form-group label.required:after{content:" *";color:#e53e3e}.form-group input[type=text],.form-group input[type=tel],.form-group input[type=email],.form-group input[type=number],.form-group select{width:100%;padding:.75rem;border:1px solid #d1d5db;border-radius:4px;font-size:1rem;transition:border-color .2s,box-shadow .2s}.form-group input[type=text]:focus,.form-group input[type=tel]:focus,.form-group input[type=email]:focus,.form-group input[type=number]:focus,.form-group select:focus{outline:none;border-color:#4299e1;box-shadow:0 0 0 3px #4299e11a}.form-group input[type=number]{width:200px}.form-group small{display:block;margin-top:.25rem;color:#718096;font-size:.85rem}.form-group .checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-weight:400;margin-bottom:.25rem}.form-group .checkbox-label input[type=checkbox]{width:1.25rem;height:1.25rem;cursor:pointer}.term-periods-table-wrapper{overflow-x:auto;margin-top:.5rem}.term-periods-table{width:100%;border-collapse:collapse;font-size:.9rem}.term-periods-table th,.term-periods-table td{border:1px solid #e2e8f0;padding:.5rem .75rem;text-align:left}.term-periods-table th{background:#f7fafc;font-weight:600;color:#2d3748}.term-periods-table .term-period-name{width:100%;min-width:100px;padding:.4rem .5rem;border:1px solid #d1d5db;border-radius:4px}.term-periods-table .term-period-date-input{min-width:140px;padding:.4rem .5rem;border:1px solid #d1d5db;border-radius:4px;font-size:.9rem}.term-periods-table .term-period-date-input:focus{outline:none;border-color:#4299e1;box-shadow:0 0 0 2px #4299e133}.section-description{margin:-.5rem 0 1rem;color:#718096;font-size:.9rem}.holidays-fetch-row,.holidays-add-row{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem}.holidays-fetch-row label,.holidays-add-row>span{display:inline-flex;align-items:center;font-size:.9rem;color:#374151}.holidays-fetch-row input[type=number],.holidays-add-row input[type=date],.holidays-add-row input[type=text],.holidays-add-row select{padding:.4rem .5rem;border:1px solid #d1d5db;border-radius:4px;font-size:.9rem}.holidays-fetch-row button,.holidays-add-row button{padding:.4rem 1rem;font-size:.9rem;border:1px solid #cbd5e0;border-radius:4px;background:#edf2f7;cursor:pointer}.holidays-fetch-row button:hover:not(:disabled),.holidays-add-row button:hover{background:#e2e8f0}.holidays-fetch-row button:disabled{opacity:.7;cursor:not-allowed}.holidays-list-controls{margin-top:.5rem;margin-bottom:.5rem}.holidays-filter-label{display:inline-flex;align-items:center;gap:.5rem;font-size:.9rem;color:#374151;margin-right:1rem}.holidays-filter-label select{padding:.35rem .5rem;border:1px solid #d1d5db;border-radius:4px;font-size:.9rem;min-width:6rem}.holidays-list-details{margin-top:.75rem;border:1px solid #e2e8f0;border-radius:6px;background:#fafafa}.holidays-list-summary{padding:.5rem .75rem;font-size:.95rem;cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none}.holidays-list-summary::-webkit-details-marker{display:none}.holidays-list-summary:hover{background:#f1f5f9;border-radius:6px}.holidays-list-details[open] .holidays-list-summary{border-bottom:1px solid #e2e8f0;border-radius:6px 6px 0 0}.holidays-table-wrapper{overflow-x:auto;margin:0;padding:.5rem .75rem .75rem;background:#fff;border-radius:0 0 6px 6px}.holidays-table{width:100%;border-collapse:collapse;font-size:.9rem}.holidays-table th,.holidays-table td{border:1px solid #e2e8f0;padding:.5rem .75rem;text-align:left}.holidays-table th{background:#f7fafc;font-weight:600;color:#2d3748}.holidays-table .empty-cell{color:#718096;font-style:italic;text-align:center;padding:1rem}.holiday-delete-btn{padding:.25rem .5rem;font-size:.8rem;border:1px solid #feb2b2;border-radius:4px;background:#fff5f5;color:#c53030;cursor:pointer}.holiday-delete-btn:hover{background:#fed7d7}.form-actions{display:flex;gap:1rem;justify-content:flex-end;margin-top:2rem;padding-top:1.5rem;border-top:1px solid #e2e8f0}.form-actions button{padding:.75rem 2rem;font-size:1rem;font-weight:600;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s,opacity .2s}.form-actions button.primary{background-color:#4299e1;color:#fff}.form-actions button.primary:hover:not(:disabled){background-color:#3182ce}.form-actions button:disabled{opacity:.6;cursor:not-allowed}.form-group button{padding:.5rem 1rem;font-size:.9rem;border:1px solid #cbd5e0;border-radius:4px;background:#edf2f7;cursor:pointer;width:fit-content!important;min-width:auto!important;max-width:none!important;display:inline-block;transition:background-color .2s}.form-group button:hover:not(:disabled){background:#e2e8f0}.form-group button:disabled{opacity:.7;cursor:not-allowed}@media (max-width: 768px){.school-settings-page{padding:1rem}.school-settings-content{padding:1.5rem}.form-group input[type=number]{width:100%}.form-actions{flex-direction:column}.form-actions button{width:100%}}.schools-page{padding:1rem;max-width:900px}.schools-header{margin-bottom:1.5rem}.schools-header h2{margin:0 0 .25rem}.schools-header p{margin:0;color:#555;font-size:.9rem}.schools-table-wrapper{background:#fff;border:1px solid #e0e0e0;border-radius:6px;padding:1rem}.schools-table{width:100%;border-collapse:collapse}.schools-table th,.schools-table td{padding:.5rem .75rem;text-align:left;border-bottom:1px solid #eee}.schools-table th{font-weight:600;background:#f8f9fa}.table-actions{display:flex;gap:.5rem}.table-actions .danger{color:#c62828}.school-dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.school-dialog{background:#fff;border-radius:8px;padding:1.5rem;min-width:380px;max-width:90vw;box-shadow:0 4px 20px #00000026}.school-dialog h3{margin:0 0 1rem}.school-dialog .form-group{margin-bottom:1rem}.school-dialog .form-group label{display:block;margin-bottom:.25rem;font-weight:500}.school-dialog .form-group input[type=text],.school-dialog .form-group input[type=email],.school-dialog .form-group input[type=password]{width:100%;padding:.4rem .5rem;border:1px solid #ccc;border-radius:4px;box-sizing:border-box}.school-dialog .form-group input:disabled{background:#f0f0f0;color:#666}.school-dialog .form-group small{display:block;margin-top:.25rem;color:#666;font-size:.85rem}.school-dialog .first-admin-fields{margin:1rem 0;padding:1rem;border:1px solid #e0e0e0;border-radius:4px}.school-dialog .first-admin-fields legend{padding:0 .5rem}.school-dialog .form-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.25rem}.school-dialog .dialog-hint{margin:0 0 1rem;color:#666;font-size:.9rem}.school-users-dialog{min-width:520px}.muted{color:#999;font-size:.9rem}.login-page{display:flex;justify-content:center;align-items:center;min-height:100vh;background-color:#f5f5f5}.login-container{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 8px #0000001a;width:100%;max-width:400px}.login-container h1{margin:0 0 1.25rem;text-align:center;font-size:1.5rem;color:#333}.login-form{display:flex;flex-direction:column;gap:1rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-weight:500;color:#555;font-size:.9rem}.form-group input{padding:.6rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;transition:border-color .2s}.form-group input:focus{outline:none;border-color:#4a90e2}.form-group input:disabled{background-color:#f5f5f5;cursor:not-allowed}.error-message{padding:.6rem;background-color:#fee;color:#c33;border-radius:4px;font-size:.9rem}.login-button{padding:.6rem;background-color:#4a90e2;color:#fff;border:none;border-radius:4px;font-size:1rem;font-weight:500;cursor:pointer;transition:background-color .2s}.login-button:hover:not(:disabled){background-color:#357abd}.login-button:disabled{background-color:#ccc;cursor:not-allowed}.login-divider{display:flex;align-items:center;margin:1rem 0;text-align:center}.login-divider:before,.login-divider:after{content:"";flex:1;border-bottom:1px solid #ddd}.login-divider span{padding:0 1rem;color:#999;font-size:.9rem}.google-login-button{width:100%;padding:.6rem;background-color:#fff;color:#333;border:1px solid #ddd;border-radius:4px;font-size:1rem;font-weight:500;cursor:pointer;transition:background-color .2s,border-color .2s;display:flex;align-items:center;justify-content:center;gap:.5rem}.google-login-button:hover:not(:disabled){background-color:#f9f9f9;border-color:#ccc}.google-login-button:disabled{background-color:#f5f5f5;cursor:not-allowed;opacity:.6}.google-icon{flex-shrink:0}.app{height:100vh;display:flex;flex-direction:column;overflow:hidden}.app-header{background-color:#2c3e50;color:#fff;padding:.4rem 1rem;box-shadow:0 2px 4px #0000001a;display:flex;flex-wrap:wrap;gap:.5rem;justify-content:space-between;align-items:center;position:relative;z-index:10}.app-header__actions{display:flex;align-items:center;gap:1rem}.app-header__school-type-selector{display:flex;align-items:center;gap:.5rem}.app-header__school-type-label{font-size:.9rem;font-weight:600;color:#fff;white-space:nowrap}.app-header__school-type-select{background:#ffffff26;border:1px solid rgba(255,255,255,.3);color:#fff;padding:.3rem .75rem;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:500;min-width:150px}.app-header__school-type-select:hover{background:#ffffff40}.app-header__school-type-select option{background:#2c3e50;color:#fff}.app-main__empty-state{padding:2rem;text-align:center;color:#666;font-size:1rem}.app-header__settings-button{background:#ffffff26;border:none;color:#fff;padding:.3rem .75rem;border-radius:999px;cursor:pointer;transition:background .2s ease;font-weight:600;display:flex;align-items:center;gap:.4rem;font-size:.9rem}.app-header__settings-button:hover{background:#ffffff4d}.app-header__settings-icon{font-size:.8rem}.app-header__user-info{display:flex;align-items:center;gap:.5rem;padding:.3rem .75rem;background:#ffffff1a;border-radius:4px;font-size:.9rem}.app-header__user-name{font-weight:600;color:#fff}.app-header__user-role{color:#d1d5db;font-size:.85rem}.app-header__logout-button{background:#dc2626cc;border:none;color:#fff;padding:.3rem .75rem;border-radius:4px;cursor:pointer;transition:background .2s ease;font-weight:600;font-size:.9rem;white-space:nowrap}.app-header__logout-button:hover{background:#dc2626}.app-header__title{display:flex;flex-direction:column;gap:.3rem}.app-header h1{font-size:1.2rem;font-weight:600;margin:0;line-height:1.2}.app-header__subtitle{font-size:.75rem;color:#d1d5db;line-height:1.2}.app-nav{display:flex;gap:.75rem}.app-nav button{background:#ffffff26;border:none;color:#fff;padding:.3rem .75rem;border-radius:999px;cursor:pointer;transition:background .2s ease;font-weight:600;font-size:.9rem}.app-nav button.active{background:#fff;color:#2c3e50}.app-nav button:not(.active):hover{background:#ffffff4d}.app-main{flex:1;padding:.5rem;background-color:#f5f5f5;display:flex;flex-direction:column;min-height:0;overflow-y:auto}.app-main.app-main-timetable{overflow:hidden}@media (max-width: 640px){.app-header{flex-direction:column;align-items:flex-start}.app-header__actions{width:100%;flex-wrap:wrap}.app-header__user-info{order:1}.app-header__logout-button{order:2}.app-nav{width:100%;justify-content:space-between;order:3}.app-nav button{flex:1;text-align:center}}@media print{.app-header{display:none!important}html,body{overflow:hidden!important;width:100%!important;max-width:100%!important;margin:0!important;padding:0!important}.app,.app-main{overflow:hidden!important;height:auto!important;max-width:100%!important}.teaching-logs-page{overflow:hidden!important;max-width:100%!important}*{scrollbar-width:none!important;-ms-overflow-style:none!important}*::-webkit-scrollbar{display:none!important;width:0!important;height:0!important}}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}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}#root{height:100%}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}
