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}.public-layout{background:#f8f9fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;min-height:100vh}.public-nav{background:#fff;border-bottom:1px solid #e5e7eb;gap:1.5rem;height:64px;padding:0 2rem;position:-webkit-sticky;position:sticky;top:0;z-index:100}.public-nav,.public-nav-brand{align-items:center;display:flex}.public-nav-brand{color:#1e2329;flex:0 0 auto;font-size:1.05rem;font-weight:700;gap:.5rem;text-decoration:none;white-space:nowrap}.public-nav-brand-img{display:block;height:44px;width:auto}.public-nav-icon{font-size:1.25rem}.public-nav-links{align-items:center;display:flex;flex:1 1;gap:.5rem;justify-content:center}.public-nav-link{border-bottom:none;border-radius:6px;color:#4b5563;font-size:.9rem;font-weight:600;letter-spacing:.01em;padding:.4rem .9rem;text-decoration:none;transition:background .15s,color .15s}.public-nav-link:hover{background:#f3f4f6;color:#1e2329}.public-nav-link--active{background:#eef2ff;border-bottom:none;color:#4338ca}.public-nav-actions{align-items:center;display:flex;flex:0 0 auto;gap:.75rem}.public-btn{align-items:center;border:none;border-radius:6px;cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:600;justify-content:center;line-height:1;padding:.5rem 1.1rem;text-decoration:none;transition:background .15s,color .15s;white-space:nowrap}.public-btn--ghost{background:#0000;color:#4b5563}.public-btn--ghost:hover{background:#f3f4f6;color:#1e2329}.public-btn--primary{background:#4f46e5;color:#fff}.public-btn--primary:hover{background:#4338ca}.public-footer{background:#1e2329;color:#9ca3af;margin-top:auto;padding:2.5rem 2rem 1.5rem}.public-footer-inner{align-items:flex-start;border-bottom:1px solid #374151;display:flex;flex-wrap:wrap;gap:2rem;justify-content:space-between;margin:0 auto;max-width:960px;padding-bottom:1.5rem}.public-footer-brand-img{display:block;height:32px;opacity:.9;width:auto}.public-footer-brand p{color:#9ca3af;font-size:.85rem;margin:.35rem 0 0}.public-footer-links{align-items:center;display:flex;flex-wrap:wrap;gap:1.5rem}.public-footer-links a{color:#9ca3af;font-size:.875rem;text-decoration:none;transition:color .15s}.public-footer-links a:hover{color:#f9fafb}.public-footer-bottom{color:#6b7280;font-size:.8rem;margin:1rem auto 0;max-width:960px}.landing-hero{margin:0 auto;max-width:720px;padding:2.5rem 2rem 4rem;text-align:center}.landing-hero-banner{display:block;height:auto;margin:0 auto 2rem;max-width:790px;width:100%}.landing-eyebrow{color:#4f46e5;font-size:.8rem;font-weight:700;letter-spacing:.1em;margin:0 0 1rem;text-transform:uppercase}.landing-heading{color:#1e2329;font-size:2.75rem;font-weight:800;line-height:1.15;margin:0 0 1.25rem}.landing-subheading{color:#4b5563;font-size:1.1rem;line-height:1.7;margin:0 0 2.5rem}.landing-ctas{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center}.landing-cta-primary,.landing-cta-secondary{font-size:1rem;padding:.75rem 1.75rem}.landing-cta-secondary{color:#4b5563}.landing-how{background:#fff;border-bottom:1px solid #e5e7eb;border-top:1px solid #e5e7eb;padding:4rem 2rem}.landing-section-title{color:#1e2329;font-size:1.5rem;font-weight:800;margin:0 0 2.5rem;text-align:center}.landing-steps{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin:0 auto;max-width:840px}.landing-step{text-align:center}.landing-step-num{align-items:center;background:#4f46e5;border-radius:50%;color:#fff;display:flex;font-size:1rem;font-weight:800;height:40px;justify-content:center;margin:0 auto 1rem;width:40px}.landing-step h3{color:#1e2329;font-size:1rem;font-weight:700;margin:0 0 .5rem}.landing-step p{color:#6b7280;font-size:.9rem;line-height:1.6;margin:0}.landing-features{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));margin:0 auto;max-width:960px;padding:4rem 2rem}.landing-feature{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:1.75rem;text-align:center}.landing-feature-icon{display:block;font-size:2rem;margin-bottom:.75rem}.landing-feature h3{color:#1e2329;font-size:1rem;font-weight:700;margin:0 0 .5rem}.landing-feature p{color:#6b7280;font-size:.9rem;line-height:1.6;margin:0}.landing-cta-band{align-items:center;background:#4f46e5;color:#fff;display:flex;flex-direction:column;padding:4rem 2rem;text-align:center}.landing-cta-band h2{font-size:1.75rem;font-weight:800;margin:0 0 .75rem}.landing-cta-band p{font-size:1rem;margin:0 0 2rem;opacity:.85}.landing-cta-band .public-btn--primary{background:#fff;color:#4f46e5;font-size:1rem;padding:.75rem 2rem}.landing-cta-band .public-btn--primary:hover{background:#f0f0ff}.landing-cta-band .public-btn--ghost{border-color:#ffffff80;color:#ffffffd9;font-size:.9rem}.landing-cta-band .public-btn--ghost:hover{background:#ffffff1f;color:#fff}.pricing-page{margin:0 auto;max-width:960px;padding:4rem 2rem}.pricing-header{margin-bottom:3rem;text-align:center}.pricing-header h1{color:#1e2329;font-size:2rem;font-weight:800;margin:0 0 .75rem}.pricing-header p{color:#6b7280;font-size:1.05rem;margin:0}.pricing-cards{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:1fr 1fr;margin-bottom:4rem}@media (max-width:600px){.pricing-cards{grid-template-columns:1fr}}.pricing-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;display:flex;flex-direction:column;padding:2rem;position:relative}.pricing-card--featured{border-color:#4f46e5;box-shadow:0 4px 20px #4f46e51f}.pricing-card-badge{background:#4f46e5;border-radius:20px;color:#fff;font-size:.75rem;font-weight:700;left:50%;padding:.2rem .8rem;position:absolute;top:-13px;transform:translateX(-50%);white-space:nowrap}.pricing-card-header h2{color:#1e2329;font-size:1.25rem;font-weight:700;margin:0 0 .5rem}.pricing-price{color:#1e2329;font-size:2.5rem;font-weight:800;margin:.5rem 0}.pricing-price-note{color:#6b7280;font-size:.95rem;font-weight:500}.pricing-card-header p{color:#6b7280;font-size:.9rem;margin:0 0 1.5rem}.pricing-features-list{flex:1 1;list-style:none;margin:0 0 2rem;padding:0}.pricing-features-list li{border-bottom:1px solid #f3f4f6;color:#374151;font-size:.9rem;padding:.4rem 0}.pricing-features-list li:last-child{border-bottom:none}.pricing-cta{border:2px solid #e5e7eb;border-radius:8px;box-sizing:border-box;display:block;padding:.75rem 1rem;text-align:center;width:100%}.pricing-card--featured .pricing-cta{border-color:#4f46e5}button.pricing-cta{cursor:pointer;font-family:inherit;font-size:1rem}button.pricing-cta:disabled{cursor:not-allowed;opacity:.6}.pricing-upgrade-error{color:#dc2626;font-size:.875rem;margin:.75rem 0 0;text-align:center}.pricing-secure-note{color:#9ca3af;font-size:.78rem;margin:.75rem 0 0;text-align:center}.pricing-faq{margin:0 auto;max-width:640px}.pricing-faq h2{color:#1e2329;font-size:1.5rem;font-weight:700;margin:0 0 2rem;text-align:center}.faq-item{border-bottom:1px solid #e5e7eb;margin-bottom:1.5rem;padding-bottom:1.5rem}.faq-item:last-child{border-bottom:none}.faq-item h3{color:#1e2329;font-size:1rem;font-weight:600;margin:0 0 .5rem}.faq-item p{color:#6b7280;font-size:.9rem;line-height:1.6;margin:0}.about-page{margin:0 auto;max-width:720px;padding:4rem 2rem}.about-content h1{color:#1e2329;font-size:2rem;font-weight:800;margin:0 0 1.5rem}.about-content h2{color:#1e2329;font-size:1.25rem;font-weight:700;margin:2.5rem 0 .75rem}.about-content p,.about-content ul{color:#4b5563;font-size:1rem;line-height:1.75;margin:0 0 1.25rem}.about-content ul{padding-left:1.5rem}.about-content ul li{margin-bottom:.5rem}.about-content a{color:#4f46e5;text-decoration:none}.about-content a:hover{text-decoration:underline}.sign-page{align-items:center;background:#f5f6fa;display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;justify-content:center;min-height:100vh;padding:2rem 1rem}.tier-limit-chip{align-items:center;background:#fef3c7;border:1px solid #f59e0b;border-radius:999px;color:#92400e;display:inline-flex;font-size:.75rem;gap:5px;margin:0;padding:5px 12px;white-space:nowrap}.tier-limit-chip a{color:#b45309;font-weight:600;text-decoration:underline}.tier-limit-chip a:hover{color:#78350f}.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}.modal.modal-fullwidth{width:min(98vw,1400px)}.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{align-items:center;background:#fafafa;border-top:1px solid #e0e0e0;display:flex;flex-wrap:nowrap;gap:8px;justify-content:flex-end;padding:12px 20px}.modal-footer button{white-space:nowrap}.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}.teacher-days-row--compact{gap:4px;padding:0}.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;flex-shrink:0;font-size:.72rem;font-weight:600;gap:1px;width:24px}.teacher-day-toggle input{border:none;cursor:pointer;height:14px;padding:0;width:14px}.teacher-day-toggle.day-inactive{opacity:.35}.teacher-day-toggle--boxonly{gap:0;min-width:24px}.modal-table--teachers .teacher-days-row{gap:4px;padding:0}.modal-table--teachers td{padding-bottom:4px;padding-top:4px}.teachers-col-title{color:#6b7280;font-size:.74rem;letter-spacing:.04em;margin-bottom:4px;text-transform:uppercase}.teachers-actions-cell{text-align:center}.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}.teachers-modal-body{display:flex;flex-direction:column;overflow:hidden;padding-bottom:0}.teachers-form-area{border-bottom:2px solid #e0e0e0;flex-shrink:0;padding-bottom:6px}.teachers-form-grid{grid-gap:0;align-items:end;display:grid;gap:0;grid-template-columns:32% 22% 34% 12%;margin-bottom:10px}.teachers-form-grid .teacher-days-row{border:none;padding:0}.teachers-form-field{display:flex;flex-direction:column;gap:4px;padding:0 8px}.field-label-row{align-items:center;display:flex;gap:6px}.help-bubble-btn{align-items:center;background:#f9fafb;border:1px solid #9ca3af;border-radius:999px;color:#374151;cursor:pointer;display:inline-flex;font-size:.75rem;font-weight:700;height:18px;justify-content:center;line-height:1;padding:0;width:18px}.help-bubble-btn:hover{background:#eef2ff;border-color:#6366f1;color:#312e81}.teachers-form-grid .teachers-form-field:first-child input,.teachers-form-grid .teachers-form-field:nth-child(2) input{width:80%}.teachers-form-actions,.teachers-form-field--days{justify-content:flex-end}.teachers-form-actions{align-items:flex-end;display:flex;gap:8px;padding:0 8px}.teachers-form-actions .btn-primary,.teachers-form-actions .btn-secondary{white-space:nowrap}.teachers-form-actions .btn-primary{transform:translateX(-10px)}.teachers-form-grid>:nth-child(2),.teachers-form-grid>:nth-child(3),.teachers-form-grid>:nth-child(4){margin-left:-6px}.teachers-table-scroll{flex:1 1;min-height:80px;overflow-y:auto}.modal-table--teachers td:first-child,.modal-table--teachers th:first-child{width:32%}.modal-table--teachers td:nth-child(2),.modal-table--teachers th:nth-child(2){width:22%}.modal-table--teachers td:nth-child(3),.modal-table--teachers th:nth-child(3){width:34%}.modal-table--teachers td:nth-child(4),.modal-table--teachers th:nth-child(4){text-align:center;width:12%}.teachers-table-scroll .modal-table thead th{background:#fff;border-bottom:2px solid #e0e0e0;position:-webkit-sticky;position:sticky;top:0;z-index:1}.help-modal{max-width:95vw;width:560px}.help-modal-body p{color:#374151;line-height:1.45;margin:0 0 10px}.help-modal-body p:last-child{margin-bottom:0}@media (max-width:980px){.teachers-form-grid{grid-template-columns:1fr 1fr}}.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;display:inline-block;flex-shrink:0;font-size:.82rem;margin-right:6px;text-align:right;white-space:nowrap;width:52px}.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-editor{background:#f4f6fa;border:1px solid #d0d7e3;border-radius:6px;margin-bottom:6px;padding:10px 14px;width:100%}.color-editor-preview{align-items:center;display:flex;gap:8px;margin-bottom:10px}.color-editor-swatch{border:2px solid #aaa;border-radius:6px;flex-shrink:0;height:36px;width:36px}.color-editor-arrow{color:#666;font-size:1.1rem}.color-editor-hex{color:#444;font-family:monospace;font-size:.82rem}.color-editor-actions{display:flex;gap:8px;justify-content:flex-end}.btn-add-custom-color{align-items:center;background:#0000;border:2px dashed #aaa;border-radius:50%;color:#666;cursor:pointer;display:inline-flex;font-size:1rem;height:26px;justify-content:center;line-height:1;margin-left:4px;padding:0;width:26px}.btn-add-custom-color:hover{border-color:#4f86c6;color:#4f86c6}.confirm-modal{width:400px}.confirm-modal-body p{color:#333;font-size:.95rem;line-height:1.5;margin:0}.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%}.add-block-days-row{align-items:center;display:flex;flex-wrap:wrap;gap:12px;padding:4px 0}.add-block-days-label{color:#555;font-size:.82rem;font-weight:600;min-width:32px}.add-block-day-toggle{align-items:center;cursor:pointer;display:flex;flex-direction:column;font-size:.75rem;font-weight:600;gap:2px;-webkit-user-select:none;user-select:none}.add-block-day-toggle input{cursor:pointer;height:14px;width:14px}.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}}@page{margin:.5in}.print-page{border:2px solid #000;border-collapse:collapse;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;table-layout:fixed;width:100%}.print-page-break{page-break-after:always}.col-grade{width:60px}.col-teacher{width:160px}.print-day-banner{background:#d0d0d0;border-bottom:1px solid #333;color:#222;font-size:.85rem;font-weight:700;letter-spacing:.14em;padding:5px 0;text-align:center;text-transform:uppercase}.print-day-banner,.print-header{-webkit-print-color-adjust:exact;print-color-adjust:exact}.print-header{background:#f5f5f5;border-bottom:2px solid #ccc}.print-header-cell{color:#888;font-size:.62rem;font-weight:700;height:26px;letter-spacing:.04em;padding:4px 0;text-align:center;text-transform:uppercase;vertical-align:middle}.print-time-header-cell{height:26px;padding:0;position:relative}.print-grade-col{border-right:1px solid #ddd;color:#444;font-size:.72rem;padding:0 4px;text-align:center;width:60px}.print-grade-col,.print-teacher-col{font-weight:600;vertical-align:middle}.print-teacher-col{border-right:2px solid #ccc;color:#222;font-size:.75rem;padding:0 8px;width:160px}.print-time-row{height:26px;overflow:hidden;position:relative;width:100%}.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;break-inside:avoid;page-break-inside:avoid}.print-block-area{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}.print-block-time--two{display:flex;flex-direction:column;overflow:hidden}.schedules-modal{max-width:95vw;width:680px}.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-list-scroll{margin-bottom:4px;max-height:260px;overflow-y:auto}.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-th-sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.schedules-th-sortable:hover{color:#444}.schedules-sort-idle{font-size:.65rem;opacity:.35}.schedules-table td{border-bottom:1px solid #f0f0f0;padding:4px 8px;vertical-align:middle}.schedules-row--active td{background:#f0f6ff}.schedules-row--selected{outline:2px solid #4f86c6;outline-offset:-1px}.schedules-row--selected td{background:#dbeafe}.schedules-row--active.schedules-row--selected td{background:#bfdbfe}.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}.schedules-new-hint{color:#666;font-size:.8rem;font-style:italic}.schedules-confirm-overlay{z-index:1001}.schedules-confirm-modal{width:360px}.schedules-confirm-modal .toolbar-btn{background:#f0f0f0;border-color:#ccc;color:#222}.schedules-confirm-modal .toolbar-btn:hover:not(:disabled){background:#e0e0e0}.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;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:.9rem;font-weight:700;height:28px;justify-content:center;letter-spacing:.04em}.scheduler-header{background:#fff;border-bottom:2px solid #888;display:flex;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;max-width:60px;min-width:60px;overflow:hidden;padding:0 8px;position:-webkit-sticky;position:sticky;text-align:center;text-overflow:ellipsis;white-space:nowrap;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;max-width:160px;min-width:160px;overflow:hidden;padding:0 10px;position:-webkit-sticky;position:sticky;text-overflow:ellipsis;white-space:nowrap;width:160px;z-index:5}.teacher-name-col.header-col{font-size:.78rem}.col-text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.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-unmet{box-shadow:0 0 0 3px #ef444459!important;outline:2px solid #ef4444;outline-offset:-2px}.block-over{box-shadow:0 0 0 3px #f9731659!important;outline:2px solid #f97316;outline-offset:-2px}.block-ontarget{box-shadow:0 0 0 3px #22c55e59!important;outline:2px solid #22c55e;outline-offset:-2px}.block-short{box-shadow:0 0 0 3px #a855f759!important;outline:2px dashed #a855f7;outline-offset:-2px}.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;text-overflow:ellipsis}.block-subject,.block-times{line-height:1.15;overflow:hidden;white-space:nowrap}.block-times{color:#000000b3;font-size:.67rem}.block-times--two{display:flex;flex-direction:column;overflow:hidden;white-space:nowrap}.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;max-width:min(420px,calc(100vw - 16px));min-width:180px;overflow-wrap:anywhere;padding:8px 12px;pointer-events:none;position:fixed;white-space:normal;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}.summary-modal{display:flex;flex-direction:column;height:85vh;max-height:85vh}.summary-filters{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;flex-shrink:0;flex-wrap:wrap;gap:8px;padding:10px 20px}.summary-filters select{background:#fff;border:1px solid #ccc;border-radius:5px;font-size:.85rem;padding:5px 8px}.summary-count{color:#888;font-size:.8rem;margin-left:4px}.summary-export-btn{background:#f0f0f0!important;border-color:#ccc!important;color:#222!important;margin-left:auto;white-space:nowrap}.summary-export-btn:hover:not(:disabled){background:#e0e0e0!important}.summary-export-label{font-size:.85rem}.summary-table-scroll{flex:1 1;overflow-y:auto}.summary-empty{color:#888;font-size:.9rem;padding:24px;text-align:center}.summary-table{border-collapse:collapse;font-size:.82rem;width:100%}.summary-table thead th{background:#f8f9fa;border-bottom:2px solid #e0e0e0;color:#666;font-size:.72rem;letter-spacing:.04em;padding:7px 8px;position:-webkit-sticky;position:sticky;text-align:left;text-transform:uppercase;top:0;white-space:nowrap;z-index:1}.summary-table thead th:nth-child(12),.summary-table thead th:nth-child(n+4):nth-child(-n+10),.summary-th-num{text-align:right}.summary-th-center{text-align:center}.summary-table tbody tr:hover td{background:#f5f8ff}.summary-table td{border-bottom:1px solid #f0f0f0;padding:6px 8px;vertical-align:middle;white-space:nowrap}.summary-teacher-cell{color:#222;font-weight:600;min-width:100px}.summary-subject-cell{align-items:center;display:flex;gap:6px;min-width:100px}.summary-subject-dot{border-radius:50%;display:inline-block;flex-shrink:0;height:10px;width:10px}.summary-min-cell{color:#444;text-align:right}.summary-total{font-weight:600}.summary-per-cell{color:#666;font-size:.78rem;text-align:center}.summary-diff{font-weight:600}.summary-diff--ontarget{color:#16a34a}.summary-diff--over{color:#ea6c0a}.summary-diff--under{color:#dc2626}.summary-status-cell{font-size:.8rem;font-weight:500}.summary-status--ontarget{color:#16a34a}.summary-status--over{color:#ea6c0a}.summary-status--under{color:#dc2626}.summary-short-badge{color:#a855f7;font-size:.75rem;font-weight:600;white-space:nowrap}@media print{@page{size:17in 11in;margin:.4in}body{background:#fff!important}.app-main,.demo-banner,.modal-overlay,.toolbar{display:none!important}.app{background:#fff!important;height:auto!important;overflow:visible!important}#print-root{display:block!important}}.toolbar-user{align-items:center;display:flex;flex-shrink:0;gap:clamp(3px,1.25vw - 14.5px,8px);margin-left:.25rem}.toolbar-btn--upgrade{background:linear-gradient(135deg,#f59e0b,#d97706);border-color:#0000;color:#fff;font-weight:600}.toolbar-btn--upgrade:hover{background:linear-gradient(135deg,#fbbf24,#f59e0b)}.toolbar-btn--save-status{font-size:.75rem;font-weight:600;min-width:5.5rem;padding:.2rem .6rem;text-align:center}.toolbar-btn--saved{background:#f0fdf4;border-color:#86efac;color:#15803d}.toolbar-btn--unsaved{background:#fff7ed;border-color:#fb923c;color:#c2410c}.toolbar-btn--unsaved:hover{background:#ffedd5;border-color:#f97316}.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}.toast.toast-warn{background:#b45309}@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:clamp(44px,2vw + 16px,52px);justify-content:space-between;padding:0 clamp(8px,2vw - 20px,16px)}.toolbar,.toolbar-brand{align-items:center;display:flex}.toolbar-brand{border-radius:6px;gap:8px;padding:2px 6px;transition:background .15s;-webkit-user-select:none;user-select:none}.toolbar-brand--open,.toolbar-brand:hover{background:#ffffff1f}.toolbar-brand-img{display:block;height:38px;width:auto}.toolbar-brand-chevron{font-size:.65rem;margin-left:2px;opacity:.7}.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;line-height:1.15}.toolbar-subtitle{font-size:.85rem;font-weight:500;letter-spacing:.03em;line-height:1.1;opacity:.8;white-space:nowrap}@media (max-width:1750px){.toolbar-subtitle{display:none}}.toolbar-actions{align-items:center;display:flex;gap:clamp(4px,1vw - 10px,8px)}.toolbar-indicators{align-items:center;display:flex;flex:1 1;gap:8px;padding:0 clamp(4px,3vw - 38px,16px)}.toolbar-btn{background:#ffffff1a;border:1px solid #fff3;border-radius:5px;color:#fff;cursor:pointer;font-size:clamp(12px,.5vw + 5px,14px);font-weight:500;padding:clamp(3px,.5vw - 4px,5px) clamp(7px,1vw - 7px,11px);transition:background .15s;white-space:nowrap}.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}.toolbar-dropdown-wrap{position:relative}.toolbar-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}.toolbar-dropdown--brand{min-width:160px}.toolbar-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;white-space:nowrap;width:100%}.toolbar-dropdown-item:hover:not(:disabled){background:#f0f5ff}.toolbar-dropdown-item:disabled{cursor:not-allowed;opacity:.4}.toolbar-dropdown-item--active{color:#2563eb;font-weight:700}.selection-indicator{align-items:center;background:#4f86c640;border:1px solid #4f86c680;border-radius:5px;box-sizing:border-box;color:#d0e4ff;display:flex;font-size:.8rem;gap:6px;min-height:26px;padding:4px 10px;white-space:nowrap}.selection-indicator--hidden{pointer-events:none;visibility:hidden}.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;gap:clamp(3px,.75vw - 7.5px,6px);margin-left:clamp(4px,1vw - 10px,8px)}.zoom-control,.zoom-control select{font-size:clamp(12px,.4vw + 6.4px,13.6px)}.zoom-control select{background:#ffffff1a;border:1px solid #ffffff4d;border-radius:4px;color:#fff;cursor:pointer;padding:clamp(2px,.5vw - 5px,4px) clamp(5px,.75vw - 5.5px,8px)}.zoom-control select option{background:#1e2a3a;color:#fff}.row-height-btn{align-items:center;background:#ffffff1a;border:1px solid #ffffff4d;border-radius:4px;color:#fff;cursor:pointer;display:flex;font-size:1rem;height:22px;justify-content:center;line-height:1;padding:0;width:22px}.row-height-btn:hover{background:#ffffff40}.row-height-val{font-size:.82rem;min-width:34px;text-align:center}.time-display-btn{background:#ffffff1a;border:1px solid #ffffff4d;border-radius:5px;color:#fff;cursor:pointer;font-size:clamp(12px,.4vw + 6.4px,13.6px);font-weight:500;letter-spacing:.01em;padding:clamp(3px,.25vw - .5px,4px) clamp(7px,.75vw - 3.5px,10px);transition:background .15s,border-color .15s;white-space:nowrap}.time-display-btn:hover{background:#fff3;border-color:#ffffff80}.day-hours span{color:#ffffff80;font-size:.8rem}.time-picker-wrap{position:relative}.time-picker-popover{align-items:center;background:#1e2a3a;border:1px solid #ffffff2e;border-radius:8px;box-shadow:0 8px 28px #00000073;display:flex;gap:5px;left:50%;padding:10px 12px;position:absolute;top:calc(100% + 6px);transform:translateX(-50%);white-space:nowrap;z-index:2000}.time-picker-popover select{appearance:none;-webkit-appearance:none;background:#ffffff1a;border:1px solid #ffffff38;border-radius:5px;color:#fff;cursor:pointer;font-size:.92rem;font-weight:600;min-width:44px;padding:5px 6px;text-align:center}.time-picker-popover select:hover{background:#ffffff2e;border-color:#ffffff73}.time-picker-popover select:focus{border-color:#fff9;outline:none}.time-picker-popover select option{background:#1e2a3a;color:#fff}.time-picker-popover--right{left:auto;right:0;transform:none}.time-picker-colon{color:#fff9;font-size:1.05rem;font-weight:700;line-height:1;margin:0 1px}.time-picker-done{background:#ffffff26;border:1px solid #ffffff40;border-radius:5px;color:#fff;cursor:pointer;font-size:.85rem;font-weight:600;margin-left:4px;padding:5px 10px;transition:background .15s}.time-picker-done:hover{background:#ffffff47}.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:clamp(12px,.4vw + 6.4px,13.6px);font-weight:600;padding:4px clamp(7px,1.25vw - 10.5px,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}.demo-banner{align-items:center;background:#1e40af;color:#fff;display:flex;flex-wrap:wrap;font-size:.875rem;gap:12px;padding:8px 16px}.demo-banner-spacer{flex:1 1}.demo-banner-tip-btn{background:#ffffff26;border:1px solid #ffffff59;border-radius:5px;color:#fff;cursor:pointer;font-size:.8rem;padding:4px 12px;transition:background .15s}.demo-banner-tip-btn:hover{background:#ffffff40}.demo-banner-signup{background:#fff;border:none;border-radius:5px;color:#1e40af;cursor:pointer;font-size:.85rem;font-weight:700;padding:5px 14px;transition:background .15s}.demo-banner-signup:hover{background:#dbeafe}.demo-tip-overlay{align-items:center;background:#00000073;display:flex;inset:0;justify-content:center;position:fixed;z-index:1000}.demo-tip-modal{background:#fff;border-radius:12px;box-shadow:0 20px 60px #00000040;max-width:420px;padding:2rem 2.25rem 1.75rem;position:relative;text-align:center;width:90%}.demo-tip-close{position:absolute;right:14px;top:12px}.demo-tip-icon{font-size:2.5rem;margin-bottom:.75rem}.demo-tip-title{color:#1e2329;font-size:1.2rem;font-weight:700;margin:0 0 .75rem}.demo-tip-body{color:#4b5563;font-size:.95rem;line-height:1.65;margin:0 0 1.25rem}.demo-tip-dots{display:flex;gap:8px;justify-content:center;margin-bottom:1.25rem}.demo-tip-dot{background:#d1d5db;border-radius:50%;cursor:pointer;height:8px;transition:background .15s;width:8px}.demo-tip-dot--active{background:#4f46e5}.demo-tip-footer{display:flex;gap:10px;justify-content:center}.demo-print-credit{display:none}@media print{.demo-print-credit{color:#888;display:block;font-size:.75rem;letter-spacing:.02em;margin-top:12px;text-align:center}}.demo-tip-modal .toolbar-btn{background:#f0f0f0;border-color:#ccc;color:#222}.demo-tip-modal .toolbar-btn:hover:not(:disabled){background:#e0e0e0}.demo-tip-modal .toolbar-btn--primary{background:#4f46e5;border-color:#4f46e5;color:#fff}.demo-tip-modal .toolbar-btn--primary:hover{background:#4338ca}.success-page{align-items:center;display:flex;justify-content:center;min-height:60vh;padding:3rem 1rem}.success-card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;box-shadow:0 4px 24px #00000012;max-width:480px;padding:3rem 2.5rem;text-align:center;width:100%}.success-check{align-items:center;background:#22c55e;border-radius:50%;color:#fff;display:flex;font-size:2rem;font-weight:700;height:64px;justify-content:center;margin:0 auto 1.5rem;width:64px}.success-card h1{color:#1e293b;font-size:1.875rem;font-weight:700;margin:0 0 1rem}.success-subtitle{color:#475569;font-size:1rem;line-height:1.6;margin:0 0 1rem}.success-note{color:#94a3b8;font-size:.875rem;margin:0 0 2rem}.success-cta{display:inline-block;text-align:center;width:100%}
/*# sourceMappingURL=main.569aa519.css.map*/