body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.modal-overlay{align-items:center;background:#00000080;display:flex;inset:0;justify-content:center;position:fixed;z-index:1000}.modal{background:#fff;border-radius:8px;box-shadow:0 8px 32px #00000040;display:flex;flex-direction:column;max-height:90vh;max-width:95vw;width:540px}.modal.modal-wide{width:946px;width:720px}.modal-header{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:16px 20px}.modal-header h2{font-size:1.1rem;font-weight:600;margin:0}.modal-close{background:none;border:none;border-radius:4px;color:#666;cursor:pointer;font-size:1.1rem;padding:4px 8px}.modal-close:hover{background:#f0f0f0}.modal-body{flex:1 1;overflow-y:auto;padding:16px 20px}.modal-footer{background:#fafafa;border-top:1px solid #e0e0e0;display:flex;gap:8px;justify-content:flex-end;padding:12px 20px}.modal-form{align-items:flex-end;display:flex;flex-wrap:wrap;gap:12px;margin-bottom:16px}.modal-form.vertical{align-items:stretch;flex-direction:column}.modal-form.centered{align-items:center;flex-direction:column}.modal-form label{display:flex;flex-direction:column;font-size:.85rem;font-weight:500;gap:4px}.modal-form input,.modal-form select{border:1px solid #ccc;border-radius:4px;font-size:.9rem;outline:none;padding:6px 10px}.modal-form input:focus,.modal-form select:focus{border-color:#4f86c6}.btn-primary{background:#4f86c6;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:.9rem;font-weight:500;padding:7px 18px}.btn-primary:hover{background:#3a6fad}.btn-secondary{background:#f0f0f0;border:1px solid #ccc;border-radius:4px;color:#333;cursor:pointer;font-size:.9rem;padding:7px 18px}.btn-secondary:hover{background:#e0e0e0}.teacher-days-row{align-items:center;display:flex;gap:6px;padding:0 6px}.modal-form .teacher-days-row{border-left:2px solid #e0e0e0;border-right:2px solid #e0e0e0;padding:0 12px}.teacher-day-toggle{align-items:center;cursor:pointer;display:flex;flex-direction:column;font-size:.72rem;font-weight:600;gap:1px}.teacher-day-toggle input{border:none;cursor:pointer;height:14px;padding:0;width:14px}.teacher-day-toggle.day-inactive{opacity:.35}.modal-table td:last-child,.modal-table th:last-child{white-space:nowrap}.subjects-modal-body{display:flex;flex-direction:column;overflow:hidden;padding-bottom:0}.subjects-form-area{border-bottom:2px solid #e0e0e0;flex-shrink:0;padding-bottom:4px}.subjects-form-actions{display:flex;gap:8px;justify-content:flex-end;padding:8px 0 4px}.subjects-table-scroll{flex:1 1;min-height:80px;overflow-y:auto}.subjects-table-scroll .modal-table thead th{background:#fff;border-bottom:2px solid #e0e0e0;position:-webkit-sticky;position:sticky;top:0;z-index:1}.btn-danger{background:#e53e3e;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:.9rem;font-weight:500;padding:7px 18px}.btn-danger:hover:not(:disabled){background:#c53030}.btn-danger:disabled{cursor:not-allowed;opacity:.4}.btn-icon{background:none;border:none;cursor:pointer;font-size:1rem;padding:2px 6px}.btn-icon:hover{background:#f0f0f0;border-radius:4px}.modal-table{border-collapse:collapse;font-size:.9rem;width:100%}.modal-table th{border-bottom:2px solid #e0e0e0;color:#555;font-weight:600;padding:6px 8px;text-align:left}.modal-table td{border-bottom:1px solid #f0f0f0;padding:6px 8px}.modal-table tr:hover td{background:#f8f8f8}.color-row{align-items:center;display:flex;flex-wrap:wrap;gap:6px;margin-bottom:4px}.color-row>span{margin-right:6px}.requirement-type-row{align-items:center;color:#444;display:flex;font-size:.9rem;gap:16px;justify-content:flex-end}.requirement-type-row label{align-items:center;cursor:pointer;display:flex;font-weight:400;gap:5px}.subject-form-row{align-items:flex-end;display:flex;gap:10px;margin-bottom:4px}.subject-form-field{display:flex;flex-direction:column;gap:4px}.subject-form-field--grow{flex:1 1}.subject-form-field--mins{width:115px}.subject-form-field--type{align-items:center;width:110px}.field-label{color:#666;font-size:.78rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase}.form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:4px;width:100%}.color-swatch{border:2px solid #0000;border-radius:50%;cursor:pointer;flex-shrink:0;height:26px;padding:0;width:26px}.color-swatch.selected{border-color:#222;transform:scale(1.2)}.color-swatch-empty{background:#0000;border:2px dashed #ccc;border-radius:50%;display:inline-block;flex-shrink:0;height:26px;width:26px}.color-row-label{color:#666;font-size:.82rem;margin-right:2px;white-space:nowrap}.btn-link{background:none;border:none;color:#888;cursor:pointer;font-size:.75rem;padding:0 4px;text-decoration:underline}.btn-link:hover{color:#c94f4f}.color-dot{border-radius:50%;height:18px;width:18px}.add-block-top-row{align-items:flex-end;display:flex;gap:10px}.add-block-top-row label{flex:1 1;min-width:0}.add-block-top-row select{width:100%}.teacher-picker{border:1px solid #ddd;border-radius:6px;margin:0;padding:8px 12px}.teacher-picker legend{color:#555;font-size:.85rem;font-weight:600;padding:0 4px}.teacher-assign-table td:last-child,.teacher-assign-table th:last-child{text-align:center;width:36px}.teacher-assign-table tbody tr:hover{background:#eef4ff}.teacher-assign-table tbody tr.row-selected td{background:#def}.clear-days-intro{color:#555;font-size:.88rem;margin-bottom:12px}.clear-days-list{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.clear-day-row{align-items:center;border:1px solid #e8e8e8;border-radius:5px;cursor:pointer;display:flex;font-size:.88rem;gap:10px;padding:7px 10px;transition:background .12s}.clear-day-row:hover{background:#fef2f2;border-color:#fca5a5}.clear-day-row--checked{background:#fff5f5;border-color:#fca5a5}.clear-day-row input[type=checkbox]{accent-color:#e53e3e;cursor:pointer;height:15px;width:15px}.clear-day-name{color:#222;font-weight:600;min-width:36px}.clear-day-count{color:#888;font-size:.78rem;margin-left:auto}.clear-days-select-all{background:none;border:none;color:#4f86c6;cursor:pointer;font-size:.82rem;padding:2px 0;text-decoration:underline}.clear-days-select-all:hover{color:#3a6fad}.clear-days-confirm-prompt{color:#e53e3e;font-size:.85rem;font-weight:600;margin-right:auto}@media screen{#print-root{display:none}}.print-page{border:2px solid #000;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;width:100%}.print-page-break{page-break-after:always}.print-day-banner{background:#d0d0d0;border-bottom:1px solid #333;color:#222;font-size:.85rem;font-weight:700;letter-spacing:.14em;padding:5px 0;-webkit-print-color-adjust:exact;print-color-adjust:exact;text-align:center;text-transform:uppercase}.print-header{background:#f5f5f5;border-bottom:2px solid #ccc;display:flex}.print-header-cell{color:#888;font-size:.62rem;font-weight:700;height:26px;letter-spacing:.04em;padding:4px 0;text-transform:uppercase}.print-grade-col,.print-header-cell{align-items:center;display:flex;justify-content:center}.print-grade-col{border-right:1px solid #ddd;color:#444;flex-shrink:0;font-size:.72rem;font-weight:600;min-width:60px;padding:0 4px;text-align:center;width:60px}.print-teacher-col{align-items:center;border-right:2px solid #ccc;color:#222;display:flex;flex-shrink:0;font-size:.75rem;font-weight:600;min-width:160px;padding:0 8px;width:160px}.print-time-row{flex:1 1;height:26px;overflow:hidden;position:relative}.print-time-cell{bottom:0;overflow:visible;position:absolute;top:0}.print-time-label{color:#666;font-size:.58rem;left:2px;position:absolute;top:50%;transform:translateY(-50%);white-space:nowrap}.print-row{border-bottom:1px solid #e8e8e8;display:flex;min-height:30px}.print-block-area{flex:1 1;height:30px;overflow:visible;position:relative}.print-grid-line{background:#ececec;bottom:0;position:absolute;top:0;width:1px}.print-hour-line{background:#c8c8c8}.print-block{border-radius:3px;bottom:2px;display:flex;flex-direction:column;justify-content:center;overflow:hidden;padding:0 4px;position:absolute;-webkit-print-color-adjust:exact;print-color-adjust:exact;top:2px}.print-block-name{color:#111;font-size:.64rem;font-weight:700;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.print-block-time{color:#000000b3;font-size:.54rem;line-height:1.2;white-space:nowrap}.schedules-modal{max-width:95vw}.schedules-modal .toolbar-btn{background:#f0f0f0;border-color:#ccc;color:#222}.schedules-modal .toolbar-btn:hover:not(:disabled){background:#e0e0e0}.schedules-modal .toolbar-btn--primary{background:#4f86c6;border-color:#4f86c6;color:#fff}.schedules-modal .toolbar-btn--primary:hover:not(:disabled){background:#3a6fad}.schedules-section-label{color:#888;font-size:.72rem;font-weight:700;letter-spacing:.06em;margin-bottom:8px;margin-top:4px;text-transform:uppercase}.schedules-save-row{align-items:center;display:flex;gap:8px;margin-bottom:20px}.schedules-name-input{border:1px solid #ccc;border-radius:5px;flex:1 1;font-size:.9rem;outline:none;padding:7px 10px}.schedules-name-input:focus{border-color:#4f8ef7;box-shadow:0 0 0 2px #4f8ef733}.schedules-empty{color:#aaa;font-size:.85rem;padding:20px 0;text-align:center}.schedules-table{border-collapse:collapse;font-size:.85rem;width:100%}.schedules-table th{border-bottom:2px solid #e0e0e0;color:#888;font-size:.72rem;letter-spacing:.04em;padding:6px 8px;text-align:left;text-transform:uppercase}.schedules-table td{border-bottom:1px solid #f0f0f0;padding:7px 8px;vertical-align:middle}.schedules-row--active td{background:#f0f6ff}.schedules-name-cell{color:#222;font-weight:600}.schedules-date-cell{color:#888;font-size:.78rem;white-space:nowrap}.schedules-actions-cell{display:flex;gap:6px;justify-content:flex-end;white-space:nowrap}.schedules-delete-btn{color:#e53e3e!important}.schedules-confirm-btn{background:#e53e3e!important;border-color:#e53e3e!important;color:#fff!important}.schedules-transfer-row{display:flex;gap:8px;margin-bottom:6px}.schedules-import-error{color:#e53e3e;font-size:.82rem;margin:0 0 8px}.schedules-danger-zone{border-top:1px solid #ffd0d0;margin-top:20px;padding-top:16px}.schedules-danger-label{color:#e53e3e!important}.schedules-danger-row{align-items:center;display:flex;gap:8px;margin-bottom:8px}.schedules-danger-prompt{color:#e53e3e;font-size:.85rem;font-weight:600}.scheduler-wrapper{background:#fafafa;border:1px solid #ddd;border-radius:6px;flex:1 1;overflow:auto;-webkit-user-select:none;user-select:none}.day-banner{background:#d0d0d0;border-bottom:1px solid #333;display:flex;overflow:hidden;position:-webkit-sticky;position:sticky;top:0;z-index:11}.day-banner .teacher-grade-col,.day-banner .teacher-name-col{background:#d0d0d0;border-right-color:#bbb;color:#0000}.day-banner-label{align-items:center;color:#222;display:flex;flex-shrink:0;font-size:.82rem;font-weight:700;height:28px;justify-content:center;letter-spacing:.12em;text-transform:uppercase}.scheduler-header{background:#fff;border-bottom:2px solid #888;display:flex;overflow:hidden;position:-webkit-sticky;position:sticky;top:28px;z-index:10}.time-header-row{display:flex;flex-shrink:0}.time-cell{border-right:1px solid #e8e8e8;flex-shrink:0;height:28px;overflow:visible;position:relative}.time-label{color:#222;font-size:.82rem;font-weight:600;left:3px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);white-space:nowrap}.scheduler-body{display:flex;flex-direction:column}.scheduler-row{align-items:stretch;border-bottom:1px solid #e8e8e8;display:flex;min-height:28px}.scheduler-row:hover{background:#f5f8ff}.header-col{background:#fff;border-bottom:none;color:#888;font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.teacher-grade-col{align-items:center;background:#fff;border-right:1px solid #e8e8e8;color:#555;display:flex;font-size:.88rem;font-weight:600;justify-content:center;left:0;min-width:60px;padding:0 8px;position:-webkit-sticky;position:sticky;text-align:center;width:60px;z-index:5}.teacher-grade-col.header-col{font-size:.78rem}.teacher-name-col{align-items:center;background:#fff;border-right:2px solid #888;color:#222;display:flex;font-size:.88rem;font-weight:600;left:60px;min-width:160px;padding:0 10px;position:-webkit-sticky;position:sticky;width:160px;z-index:5}.teacher-name-col.header-col{font-size:.78rem}.teacher-inline-input{background:#0000;border:none;border-bottom:2px solid #4f86c6;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;outline:none;padding:0;width:100%}.scheduler-row.row-selected .teacher-grade-col,.scheduler-row.row-selected .teacher-name-col{background:#dbeafe}.scheduler-row.row-dragging{opacity:.45}.row-drop-indicator{background:#4f86c6;height:2px;margin:0;pointer-events:none}.block-area{flex-shrink:0;overflow:visible}.grid-line{background:#e0e0e0;bottom:0;pointer-events:none;position:absolute;top:0;width:1px}.grid-line.hour-line{background:#999}.schedule-block{align-items:stretch;border-radius:5px;bottom:2px;box-shadow:0 2px 6px #0000002e;cursor:grab;display:flex;overflow:visible;position:absolute;top:2px;transition:box-shadow .1s;z-index:2}.schedule-block:active{box-shadow:0 4px 16px #00000047;cursor:grabbing;z-index:20}.block-selected{box-shadow:0 0 0 3px #1e40af59,0 4px 12px #0000004d!important;outline:2px solid #1e40af;outline-offset:-2px;z-index:10}.block-content{display:flex;flex:1 1;flex-direction:column;justify-content:center;min-width:0;overflow:hidden;padding:0 6px;pointer-events:none}.block-subject{color:#111;font-size:.78rem;font-weight:700}.block-subject,.block-times{line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.block-times{color:#000000b3;font-size:.67rem}.resize-handle{background:#ffffff40;border-radius:3px;cursor:ew-resize;flex-shrink:0;transition:background .15s;width:8px;z-index:3}.resize-handle:hover{background:#ffffff80}.resize-left{border-radius:5px 0 0 5px}.resize-right{border-radius:0 5px 5px 0}.block-delete{align-items:center;background:#0000004d;border:none;border-radius:50%;color:#fff;cursor:pointer;display:none;font-size:.6rem;height:16px;justify-content:center;line-height:1;padding:0;position:absolute;right:2px;top:2px;width:16px;z-index:4}.schedule-block:hover .block-delete{display:flex}.block-delete:hover{background:#c80000b3}.selection-highlight{background:#4f86c633;border:1.5px dashed #4f86c6cc;border-radius:3px;bottom:1px;pointer-events:none;position:absolute;top:1px;z-index:1}.block-tooltip-popup{background:#1e2a3a;border:3px solid #999;border-radius:6px;box-shadow:0 4px 16px #00000059;color:#f0f4ff;font-size:.82rem;line-height:1.6;min-width:180px;padding:8px 12px;pointer-events:none;position:fixed;white-space:nowrap;z-index:9999}.tooltip-title{color:#fff;font-size:.88rem;font-weight:700;margin-bottom:2px}.tooltip-line{color:#c8d8f0}.empty-state{color:#aaa;font-size:.9rem;padding:40px;text-align:center}@media print{@page{size:17in 11in;margin:.4in}body{background:#fff!important}.app-main,.modal-overlay,.toolbar{display:none!important}.app{background:#fff!important;height:auto!important;overflow:visible!important}#print-root{display:block!important}}.toast{animation:toast-in .2s ease;background:#1e2a3a;border-radius:8px;bottom:28px;box-shadow:0 4px 16px #00000040;color:#fff;font-size:.9rem;font-weight:500;left:50%;padding:10px 22px;pointer-events:none;position:fixed;transform:translateX(-50%);z-index:9999}@keyframes toast-in{0%{opacity:0;transform:translateX(-50%) translateY(8px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}*,:after,:before{box-sizing:border-box}body{background:#f0f2f5;color:#222;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0}.app{flex-direction:column;height:100vh}.app,.app-main{display:flex;overflow:hidden}.app-main{flex:1 1;flex-direction:column;padding:12px}.toolbar{background:#1e2a3a;box-shadow:0 2px 6px #0003;color:#fff;flex-shrink:0;height:52px;justify-content:space-between;padding:0 16px}.toolbar,.toolbar-brand{align-items:center;display:flex}.toolbar-brand{border-radius:6px;gap:8px;padding:2px 6px;transition:background .15s}.toolbar-brand:hover{background:#ffffff1f}.toolbar-title-group{display:flex;flex-direction:column;line-height:1.2}.toolbar-icon{font-size:1.3rem}.toolbar-title{font-size:1.05rem;font-weight:700;letter-spacing:.02em}.toolbar-schedule-name{font-size:.7rem;font-weight:400;max-width:180px;opacity:.75;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toolbar-actions,.toolbar-indicators{align-items:center;display:flex;gap:8px}.toolbar-indicators{flex:1 1;padding:0 16px}.toolbar-btn{background:#ffffff1a;border:1px solid #fff3;border-radius:5px;color:#fff;cursor:pointer;font-size:.88rem;font-weight:500;padding:6px 14px;transition:background .15s}.toolbar-btn:hover{background:#fff3}.toolbar-btn:disabled{cursor:not-allowed;opacity:.4}.toolbar-btn--primary{background:#4f86c6;border-color:#4f86c6}.toolbar-btn--primary:hover:not(:disabled){background:#3a6fad}.toolbar-btn--active{background:#ffffff40;border-color:#ffffff80}.setup-dropdown-wrap{position:relative}.setup-dropdown{background:#fff;border:1px solid #ddd;border-radius:6px;box-shadow:0 4px 16px #00000026;left:0;min-width:150px;overflow:hidden;position:absolute;top:calc(100% + 4px);z-index:200}.setup-dropdown-item{background:none;border:none;color:#222;cursor:pointer;display:block;font-size:.88rem;font-weight:500;padding:10px 16px;text-align:left;transition:background .12s;width:100%}.setup-dropdown-item:hover{background:#f0f5ff}.selection-indicator{align-items:center;background:#4f86c640;border:1px solid #4f86c680;border-radius:5px;color:#d0e4ff;display:flex;font-size:.8rem;gap:6px;padding:4px 10px;white-space:nowrap}.sel-clear{background:none;border:none;color:#aac8f0;cursor:pointer;font-size:.75rem;line-height:1;padding:0 2px}.sel-clear:hover{color:#fff}.block-selection-indicator{background:#c8505033;border-color:#dc646480}.sel-delete{color:#faa;font-size:.78rem}.sel-delete:hover{color:#f66}.zoom-control{align-items:center;color:#fffc;display:flex;font-size:.85rem;gap:6px;margin-left:8px}.zoom-control select{background:#ffffff1a;border:1px solid #ffffff4d;border-radius:4px;color:#fff;cursor:pointer;font-size:.85rem;padding:4px 8px}.zoom-control select option{background:#1e2a3a;color:#fff}.day-hours input[type=time]{background:#ffffff1a;border:1px solid #ffffff4d;border-radius:4px;color:#fff;cursor:pointer;font-size:.85rem;padding:3px 6px;width:90px}.day-hours input[type=time]::-webkit-calendar-picker-indicator{cursor:pointer;filter:invert(1);opacity:.7}.day-hours span{color:#fff9}.day-tabs{background:#0003;border-radius:6px;display:flex;gap:3px;margin-left:8px;padding:3px}.day-tab{background:#0000;border:none;border-radius:4px;color:#fff9;cursor:pointer;font-size:.85rem;font-weight:600;padding:4px 12px;transition:background .15s,color .15s}.day-tab:hover{background:#ffffff1a;color:#fff}.day-tab--active{background:#4f86c6;color:#fff}.day-copy-btn{background:#4f86c626;border:2px solid #4f86c666;border-radius:6px;color:#4f86c6;cursor:pointer;font-size:.95rem;font-weight:600;padding:8px 16px;transition:background .15s,border-color .15s}.day-copy-btn:hover{background:#4f86c640;border-color:#4f86c6}.day-copy-btn--selected{background:#4f86c6;border-color:#4f86c6;color:#fff}
/*# sourceMappingURL=main.de5ae4d1.css.map*/