:root{font-family:Segoe UI,Arial,sans-serif;color:#263047;background:#f6f7fb;font-synthesis:none;font-size:14px}*{box-sizing:border-box}body{margin:0}button,textarea{font:inherit}button{cursor:pointer;border:1px solid #dfe3ed;border-radius:8px;background:#fff;color:inherit;padding:9px 13px;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:background .12s}button:hover{background:#f0edf9}button:disabled{cursor:default;opacity:.5}button:focus-visible,textarea:focus-visible,.table-scroll:focus-visible{outline:3px solid #9f8ce8;outline-offset:2px}svg{width:18px;height:18px;flex-shrink:0}.app-shell{display:flex;min-height:100vh}.sidebar{width:222px;flex-shrink:0;background:#202a40;color:#e9edf7;display:flex;flex-direction:column;padding:30px 15px 22px;position:fixed;top:0;bottom:0;overflow-y:auto}.brand{display:flex;gap:12px;align-items:center;padding:0 9px;font-size:23px;font-weight:650;letter-spacing:-.5px}.brand-mark{background:#a491e9;color:#fff;width:37px;height:39px;border-radius:11px;display:grid;place-items:center}.brand-mark svg{width:24px;height:24px}.brand span:not(.brand-mark){display:block;font-size:8px;letter-spacing:1.5px;font-weight:500;margin-top:5px;color:#aab7cf}.student{margin:29px 8px 22px;padding-bottom:24px;border-bottom:1px solid #35405a;display:flex;align-items:center;gap:11px;font-weight:600}.student-avatar{width:36px;height:36px;background:#37445f;color:#d8cee9;border-radius:50%;display:grid;place-items:center}.student div span{display:block;font-size:12px;font-weight:400;color:#aab7cf;margin-top:4px}.nav-label{font-size:10px;letter-spacing:1.7px;color:#93a1bb;margin:0 13px 11px;font-weight:600}.subjects-label{margin-top:25px}.nav-button{border:0;background:transparent;color:#c8d2e4;display:flex;justify-content:flex-start;width:100%;padding:11px 14px;border-radius:8px;font-size:13px;min-height:40px}.nav-button:hover{background:#303c55}.nav-button.selected{background:#aa98eb;color:#17223b;font-weight:650}.nav-button.global{font-size:12px;letter-spacing:1px}.subject-dot{width:8px;height:8px;display:inline-block;flex-shrink:0;border-radius:50%;margin-right:3px}.sidebar-bottom{margin-top:auto;padding:25px 11px 0;font-size:11px;color:#c0cadd;line-height:1.8}.offline-dot{display:inline-block;width:6px;height:6px;background:#8cc7b0;border-radius:50%;margin-right:6px}.small-muted{display:block;color:#93a1bb;margin-left:12px;font-size:10px}main{margin-left:222px;min-width:0;flex:1}.topbar{height:72px;border-bottom:1px solid #e6e9f1;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 32px;color:#65718a;font-size:12px;gap:18px}.slash{padding:0 14px;color:#c0c7d7}.backup-buttons{display:flex;gap:9px}.backup-buttons button{font-size:11px;padding:8px 11px}.backup-buttons svg{width:15px;height:15px}.main-content{padding:34px 30px}.page-intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:29px;gap:20px}.eyebrow{font-size:10px;font-weight:700;color:#8574b6;letter-spacing:1.6px;margin:0 0 10px}h1{font-size:32px;letter-spacing:-1px;line-height:1.2;margin:0;font-weight:650}h2{margin:0;font-weight:600}.subtitle{font-size:13px;color:#7e879a;margin:10px 0 0}.week-count{display:flex;align-items:center;gap:13px;background:#ede9f7;border:1px solid #e5def4;border-radius:12px;padding:13px 20px}.week-count strong{font-size:28px;font-weight:600;color:#7763b8}.week-count span{font-size:11px;color:#807593;line-height:1.6}.week-panel{background:#fff;border:1px solid #e0e4ed;border-radius:13px;overflow:hidden;box-shadow:0 3px 16px #24304704}.week-toolbar{padding:19px 20px;display:flex;align-items:center;justify-content:space-between;gap:20px}.week-navigation{display:flex;align-items:center;gap:11px}.week-navigation h2{font-size:15px;min-width:230px;text-align:center;letter-spacing:-.3px}.icon-button{width:32px;height:32px;padding:6px;flex-shrink:0}.today-button{font-size:11px;padding:7px 10px;margin-left:7px}.edit-hint{font-size:11px;color:#9199a9}.table-scroll{overflow:auto;max-height:calc(100vh - 315px);min-height:290px;scrollbar-color:#c6bedb #f1f1f7}table{border-collapse:separate;border-spacing:0;width:100%;table-layout:fixed;min-width:1200px}th,td{border-right:1px solid #e6e9f0;border-bottom:1px solid #e6e9f0}thead th{background:#fafbfe;text-align:center;font-weight:500;position:sticky;z-index:2;top:0}thead tr:first-child th{height:65px;border-top:1px solid #e6e9f0}thead tr:nth-child(2) th{top:65px;height:27px}.subject-heading{width:155px;text-align:left;padding-left:18px;color:#7a8397;font-size:11px;left:0;z-index:4}.day-name{display:block;font-size:11px;color:#7c8497;margin-bottom:5px}.day-date{display:block;font-size:17px;font-weight:600;color:#3e4861}.day-date>span{font-size:11px;font-weight:400;margin-left:3px;color:#949bad}.day-date>.today-tag{font-size:8px;font-weight:700;letter-spacing:.7px;margin-left:6px;color:#8871ca}.today{background:#f0ecfb}.scope-heading{color:#9b91b5;font-size:9px;text-transform:uppercase;letter-spacing:1.3px}tbody th{position:sticky;left:0;z-index:1;background:#fff;font-size:11px;text-align:left;font-weight:600;padding:0 12px 0 18px;height:83px}.subject-name .subject-dot{margin-right:8px}td{padding:4px;height:83px;vertical-align:top}.weekend{background:#f9f9fc}.scheduled{background:#f6f3fc}.day-end{border-right-color:#d9dce7}.cell-button{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;min-height:74px;height:100%;padding:7px 6px;gap:3px;border:1px solid transparent;border-radius:6px;background:transparent;text-align:left;font-size:11px;overflow:hidden}.cell-button:hover{border-color:#d2c5f1;background:#ede7fc}.cell-add{font-size:20px;font-weight:300;color:#bdc2d0;opacity:0}.cell-button:hover .cell-add,.cell-button:focus-visible .cell-add{opacity:1}.class-indicator{font-size:8px;letter-spacing:.3px;color:#b1a6c8}.has-entry{background:#eee9fb;border-color:#e0d7f5;align-items:stretch;justify-content:space-between}.entry-text{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;white-space:pre-wrap;color:#5c4e84;font-size:10px;line-height:1.45}.entry-footer{display:flex;align-items:center;gap:3px;font-size:7px;color:#9988bd;letter-spacing:.2px}.entry-footer svg{width:10px;height:10px}.table-footer{padding:16px 20px;display:flex;gap:22px;font-size:10px;color:#8992a4;flex-wrap:wrap}.table-footer span{display:flex;align-items:center;gap:6px}.table-footer i{width:9px;height:9px;border-radius:2px;display:inline-block}.legend-scheduled{background:#f1ebfc;border:1px solid #e2d9f3}.legend-entry{background:#b19bdd}.footer-note{margin-left:auto}.page-footnote{color:#939aaa;font-size:10px;margin:18px 2px}.subject-section h1{display:flex;align-items:center;gap:12px}.subject-section h1 .subject-dot{width:13px;height:13px}.coming-soon{margin-top:30px;border:1px solid #e0e4ed;border-radius:13px;background:#fff;text-align:center;padding:65px 25px;color:#838da0}.empty-icon{display:grid;place-items:center;margin:0 auto 20px;width:62px;height:62px;border-radius:17px;background:#f0ebfa;color:#9b85c9}.empty-icon svg{width:30px;height:30px}.coming-soon h2{font-size:21px;color:#4a5267}.coming-soon p{font-size:13px;line-height:1.6}.primary{background:#8670c9;border-color:#8670c9;color:#fff;padding:10px 19px}.primary:hover{background:#725caf}.coming-soon .primary{margin-top:15px}.editor-dialog{border:1px solid #ded9eb;border-radius:17px;padding:28px;width:560px;max-width:calc(100vw - 32px);box-shadow:0 20px 90px #17223b35;color:#263047;max-height:90vh;overflow-y:auto}.editor-dialog::backdrop{background:#17223b66;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.dialog-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.dialog-heading h2{font-size:25px;letter-spacing:-.5px}.dialog-date{color:#7f889b;font-size:12px;text-transform:capitalize;margin:10px 0 20px}.provisional-note{background:#f4f1fa;color:#9484b2;padding:10px 12px;font-size:10px;border-radius:7px;margin-bottom:21px}.editor-dialog label{display:block;font-size:13px;font-weight:600;margin-bottom:10px}.editor-dialog textarea{width:100%;resize:vertical;min-height:180px;max-height:45vh;border:1px solid #dfe2eb;border-radius:9px;padding:13px;background:#fdfdff;color:#3f475b;line-height:1.7;font-size:13px}.editor-dialog textarea::placeholder{color:#a4aabb}.field-help{display:flex;justify-content:space-between;gap:15px;font-size:9px;color:#9099aa;margin-top:9px}.dialog-actions{margin-top:28px;padding-top:20px;border-top:1px solid #e8eaf2;display:flex;justify-content:flex-end;gap:10px}.discard-panel{padding:15px;background:#fff5f0;border-radius:8px;margin-top:20px;font-size:12px}.discard-panel p{margin-top:0}.discard-panel>div{display:flex;gap:9px;justify-content:flex-end}.danger{color:#ad5548;border-color:#e5b5aa}.form-error{font-size:12px;color:#a14b41;line-height:1.6}.toast{position:fixed;bottom:24px;left:calc(50% + 100px);transform:translate(-50%);z-index:20;background:#26334b;color:#fff;padding:14px 20px;border-radius:10px;box-shadow:0 7px 25px #17223b26;font-size:12px;pointer-events:none;opacity:0;transition:opacity .18s;max-width:70vw}.toast.visible{opacity:1}.loading,.error-state{padding:50px;text-align:center}.error-state p{line-height:1.7;max-width:600px;margin:25px auto}.error-state h1{font-size:25px}@media(min-width:1700px){.main-content{padding:40px}.table-scroll{max-height:calc(100vh - 335px)}table{min-width:1300px}.subject-heading{width:170px}tbody th,td{height:90px}.cell-button{min-height:81px}.entry-text{font-size:11px}}@media(max-width:1150px){.sidebar{width:190px;padding-left:10px;padding-right:10px}main{margin-left:190px}.main-content{padding:26px 20px}.topbar{padding:0 20px}.week-toolbar{align-items:flex-start}.edit-hint{display:none}.week-navigation{gap:7px}.week-navigation h2{min-width:200px;font-size:13px}.toast{left:calc(50% + 95px)}}@media(max-width:850px){.sidebar{width:165px}.brand{font-size:20px;gap:8px;padding:0 4px}.brand span:not(.brand-mark){font-size:7px;letter-spacing:1px}.nav-button{padding:10px;font-size:11px}main{margin-left:165px}.topbar{height:auto;min-height:72px;align-items:flex-start;flex-direction:column;padding:15px 20px;gap:10px}.main-content{padding:25px 15px}.week-count{display:none}.week-navigation{flex-wrap:wrap}.week-navigation h2{min-width:170px}.today-button{margin-left:0}.table-scroll{max-height:calc(100vh - 350px)}.footer-note{margin-left:0}.page-intro h1{font-size:28px}}td,.weekend{background:#fff}.cell-disabled{background:#f9f9fc}.cell-button.has-entry{background:#fff;border-color:#e1e3eb}.cell-button.disabled-cell,.cell-button.disabled-cell:hover{background:#f9f9fc;opacity:1;cursor:not-allowed;border-color:transparent;color:#adb3c1}.cell-button.disabled-cell.has-entry{border-color:#e6e9f0}.disabled-cell .entry-text,.disabled-cell .entry-footer{color:#9aa1af}.cell-lock{display:flex;align-items:center;justify-content:center}.cell-lock svg{width:15px;height:15px}.legend-editable{background:#fff;border:1px solid #dfe3ed}.legend-disabled{background:#f9f9fc;border:1px solid #e6e9f0}.table-footer svg{width:12px;height:12px;color:#adb3c1}.form-field{min-width:0}.pages-fields{display:grid;gap:15px}.editor-dialog .form-field label{font-size:12px;margin-bottom:7px}.editor-dialog input,.editor-dialog select{width:100%;border:1px solid #dfe2eb;border-radius:8px;padding:10px 12px;background:#fdfdff;color:#3f475b;font:inherit;font-size:13px;min-height:39px}.editor-dialog input::placeholder{color:#a4aabb}.editor-dialog input:focus-visible,.editor-dialog select:focus-visible{outline:3px solid #9f8ce8;outline-offset:2px}.pages-help{font-size:10px;color:#9099aa;line-height:1.6;margin:11px 0 20px}.assessment-fields{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-bottom:22px}.editor-dialog textarea{min-height:90px;max-height:150px}.editor-dialog .field-help{line-height:1.5}.editor-dialog .dialog-actions{margin-top:20px;padding-top:16px}@media(max-width:600px){.assessment-fields{grid-template-columns:1fr;gap:15px}.editor-dialog{padding:20px}}.activity-summary{display:flex;flex-wrap:wrap;gap:4px 7px;align-items:center;width:100%;min-width:0}.summary-item{display:inline-flex;align-items:center;gap:4px;max-width:100%;min-width:0;font-size:10px;line-height:14px;color:#685889}.summary-item>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.summary-item svg{width:14px;height:14px;flex-shrink:0;color:#8f7daf}.summary-exam,.summary-exam svg{color:#aa7d46}.summary-control,.summary-control svg{color:#648d89}.summary-notes{width:100%;-webkit-line-clamp:2;font-size:9px}.cell-button.has-entry{justify-content:center}.disabled-cell .summary-item,.disabled-cell .summary-item svg{color:#9aa1af}.login-page{margin:0;min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:390px;max-width:100%;padding:30px;background:#fff;border:1px solid #e0e4ed;border-radius:16px}.login-card p{line-height:1.6;color:#65718a}.login-card label{display:block;margin:18px 0 7px}.login-card input{width:100%;padding:12px;border:1px solid #dfe2eb;border-radius:8px;font:inherit}.login-card button{margin-top:22px;width:100%}.sidebar-bottom button{margin-top:12px;font-size:11px}@media(max-width:600px){.sidebar{width:130px;padding:18px 7px}.brand{font-size:15px;gap:5px}.brand-mark{width:26px;height:30px}.brand span:not(.brand-mark){font-size:6px;letter-spacing:.2px}.student{margin:20px 4px 18px;font-size:12px;gap:6px}.student-avatar{width:26px;height:26px}.nav-button{font-size:10px;padding:9px 6px}.nav-label{margin-left:6px;font-size:8px}main{margin-left:130px}.login-page{margin:0}.topbar{padding:12px 10px}.backup-buttons{flex-wrap:wrap;gap:5px}.backup-buttons button{padding:7px;font-size:10px}.main-content{padding:20px 10px}.week-toolbar{padding:12px}.week-navigation h2{min-width:0;font-size:12px}.page-intro h1{font-size:25px}.toast{left:50%;max-width:90vw}.sidebar-bottom{padding:18px 4px 0;font-size:9px}}.mobile-menu-button,.menu-backdrop{display:none}.topbar-location{display:flex;align-items:center;gap:12px}@media(max-width:600px){.sidebar{width:190px;z-index:35;transform:translate(-100%);visibility:hidden;transition:transform .15s,visibility .15s}.sidebar.sidebar-open{transform:none;visibility:visible}.app-shell>main{margin-left:0}.mobile-menu-button{display:inline-flex}.menu-backdrop{display:block;position:fixed;inset:0;border:0;border-radius:0;background:#17223b66;z-index:34}.menu-backdrop:hover{background:#17223b66}.brand{font-size:20px}.nav-button{font-size:12px}.sidebar-bottom{font-size:11px}.topbar .slash{padding:0 5px}.table-scroll{max-height:65vh}.week-navigation h2{font-size:13px}.login-page{margin:0}}.sidebar{position:relative;top:auto;bottom:auto;overflow:visible;min-height:100vh}.app-shell>main{margin-left:0}.table-scroll{max-height:none;min-height:0;overflow-x:auto;overflow-y:hidden}tbody th,td{height:56px}td{padding:3px}.cell-button{min-height:48px;height:auto;padding:5px 6px}@media(max-width:600px){.sidebar{position:absolute;top:0;left:0;bottom:auto;min-height:100vh}.sidebar.sidebar-open{transform:none;visibility:visible}}
