:root{color:#20242a;font-synthesis:none;text-rendering:optimizelegibility;--blue:#2563eb;--blue-dark:#1d4ed8;--ink:#20242a;--muted:#66717f;--line:#dce2e8;--surface:#fff;--background:#f5f7f9;--green:#14835b;--amber:#a65d04;--red:#c23732;--sidebar:#17212b;--shadow:0 10px 30px #131f2d1a;background:#f5f7f9;font-family:Inter,Segoe UI,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--background);min-width:320px}button,input,textarea,select{font:inherit;letter-spacing:0}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline-offset:2px;outline:3px solid #2563eb40}h1,h2,h3,p{margin-top:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.muted{color:var(--muted)}.spin{animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.app-loading,.loading-block{min-height:180px;color:var(--muted);justify-content:center;align-items:center;gap:10px;display:flex}.spinner{border:2px solid var(--line);border-top-color:var(--blue);border-radius:50%;width:22px;height:22px;animation:.75s linear infinite spin}.button,.icon-button{cursor:pointer;border:0;justify-content:center;align-items:center;gap:8px;font-weight:650;transition:background .15s,color .15s,border-color .15s,opacity .15s;display:inline-flex}.button{border-radius:7px;min-height:42px;padding:0 16px}.button--small{min-height:34px;padding:0 11px;font-size:13px}.button--icon{width:40px;height:40px;padding:0}.button--primary{color:#fff;background:var(--blue)}.button--primary:hover{background:var(--blue-dark)}.button--secondary{color:var(--ink);background:var(--surface);border:1px solid var(--line)}.button--secondary:hover,.button--ghost:hover{background:#edf2f7}.button--ghost{color:#435063;background:0 0}.button--danger{color:#fff;background:var(--red)}.button:disabled,.icon-button:disabled{cursor:not-allowed;opacity:.48}.icon-button{color:#526173;background:0 0;border-radius:7px;flex:none;width:38px;height:38px;padding:0}.icon-button:hover{color:var(--ink);background:#edf2f7}.app-shell{min-height:100vh}.sidebar{z-index:20;color:#dce6ef;background:var(--sidebar);flex-direction:column;width:224px;padding:16px 12px;display:flex;position:fixed;inset:0 auto 0 0}.sidebar__brand{align-items:center;gap:10px;height:44px;padding:0 8px;display:flex}.brand-mark{color:#fff;background:var(--blue);border-radius:7px;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.brand-name{color:#fff;font-size:19px;font-weight:750}.sidebar__close{color:#cbd5df;margin-left:auto;display:none}.sidebar__nav{gap:4px;margin-top:28px;display:grid}.nav-link{color:#b9c5d0;text-align:left;background:0 0;border:0;border-radius:6px;align-items:center;gap:11px;min-height:42px;padding:0 12px;font-size:14px;font-weight:600;text-decoration:none;display:flex}.nav-link:hover{color:#fff;background:#ffffff12}.nav-link--active{color:#fff;background:#27384a}.nav-link:disabled{opacity:.45;cursor:default}.sidebar__lower{gap:4px;margin-top:auto;display:grid}.account-menu{border-top:1px solid #ffffff1a;align-items:center;gap:9px;margin-top:12px;padding:12px 4px 0;display:flex}.account-menu__text{flex:1;min-width:0;display:grid}.account-menu__text strong{color:#fff;text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.account-menu__text small{color:#9eacb9;font-size:11px}.account-menu .icon-button{color:#aebbc7}.app-main{min-height:100vh;margin-left:224px}.mobile-header,.sidebar-backdrop{display:none}.page{width:100%;max-width:1500px;margin:0 auto;padding:36px 40px 64px}.page-header{justify-content:space-between;align-items:flex-start;gap:20px;min-height:54px;margin-bottom:28px;display:flex}.page-header h1{letter-spacing:0;margin-bottom:5px;font-size:27px;line-height:1.2}.page-header p{color:var(--muted);margin-bottom:0;font-size:14px}.page-header__actions{align-items:center;gap:9px;display:flex}.section-heading{justify-content:space-between;align-items:flex-start;gap:16px;min-height:32px;margin-bottom:18px;display:flex}.section-heading h2{margin:0;font-size:17px}.section-heading a{color:var(--blue);font-size:13px;font-weight:650;text-decoration:none}.eyebrow{color:var(--muted);text-transform:uppercase;margin-bottom:7px;font-size:12px;font-weight:700;display:block}.auth-page{background:#edf2f6;place-items:center;min-height:100vh;padding:24px;display:grid}.auth-panel{background:var(--surface);border:1px solid var(--line);width:min(100%,440px);box-shadow:var(--shadow);border-radius:8px;padding:34px}.auth-brand{align-items:center;gap:10px;margin-bottom:34px;font-size:20px;font-weight:750;display:flex}.auth-heading{margin-bottom:24px}.auth-heading h1{margin-bottom:8px;font-size:25px}.auth-heading p{color:var(--muted);margin:0;font-size:14px;line-height:1.55}.segmented{background:#edf1f5;border-radius:7px;grid-template-columns:1fr 1fr;height:43px;margin-bottom:22px;padding:3px;display:grid}.segmented button{color:#5a6675;cursor:pointer;background:0 0;border:0;border-radius:5px;justify-content:center;align-items:center;gap:7px;font-weight:650;display:flex}.segmented button.is-active{color:var(--ink);background:#fff;box-shadow:0 1px 3px #16223024}.form-stack{gap:17px;display:grid}.form-row{grid-template-columns:minmax(0,1fr) minmax(130px,.6fr);gap:14px;display:grid}.field{gap:7px;min-width:0;display:grid}.field__label{color:#394555;font-size:13px;font-weight:700}.field__hint,.field__error{color:var(--muted);font-size:12px;line-height:1.4}.field__error{color:var(--red)}.field input,.field textarea,.field select,.search-field input,.copy-field input{width:100%;min-height:42px;color:var(--ink);background:#fff;border:1px solid #cbd4dd;border-radius:6px;padding:9px 11px}.field textarea{resize:vertical;line-height:1.5}.field input:hover,.field textarea:hover,.field select:hover{border-color:#9eabb8}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--blue)}.field--error input,.field--error textarea{border-color:var(--red)}.text-link{color:var(--blue);margin-top:18px;font-size:14px;font-weight:650;text-decoration:none;display:inline-block}.invite-preview,.invite-result{border:1px solid var(--line);background:#f8fafb;border-radius:7px;align-items:center;gap:12px;padding:14px;display:flex}.invite-preview{color:var(--green);margin-bottom:20px}.invite-preview div,.invite-result div{min-width:0;color:var(--ink);gap:3px;display:grid}.invite-preview span,.invite-result span{color:var(--muted);font-size:13px}.notice{color:#244b85;background:#eef5ff;border:1px solid #bed0ef;border-radius:6px;padding:11px 13px;font-size:13px;line-height:1.45}.notice--success{color:#126044;background:#ecf8f3;border-color:#b5ddcc}.notice--error{color:#8d2926;background:#fff1f0;border-color:#e9bbb8}.error-state{min-height:92px;color:var(--red);background:#fff4f3;border:1px solid #e9bbb8;border-radius:7px;align-items:center;gap:13px;padding:18px;display:flex}.error-state div{flex:1}.error-state strong{color:var(--ink);font-size:14px}.error-state p{color:#7d4a48;margin:3px 0 0;font-size:13px}.empty-state{text-align:center;background:#ffffff8c;border:1px dashed #c9d2db;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;min-height:230px;padding:28px;display:flex}.empty-state__icon{color:#5c6b7c;background:#e9eef3;border-radius:50%;place-items:center;width:42px;height:42px;margin-bottom:12px;display:grid}.empty-state h3{margin-bottom:5px;font-size:16px}.empty-state p{max-width:410px;color:var(--muted);margin-bottom:16px;font-size:13px;line-height:1.5}.dashboard-grid{grid-template-columns:minmax(0,1.45fr) minmax(300px,.75fr);gap:20px;display:grid}.next-lesson-panel,.summary-panel,.schedule-panel{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:24px}.next-lesson-panel{flex-direction:column;align-items:flex-start;min-height:280px;display:flex}.next-lesson-panel .section-heading{width:100%}.next-lesson-panel .empty-state{background:0 0;border:0;width:100%;min-height:170px}.next-lesson-panel__student{align-items:center;gap:13px;margin:auto 0 22px;display:flex}.next-lesson-panel__student>div{gap:5px;display:grid}.next-lesson-panel__student span{color:var(--muted);align-items:center;gap:5px;font-size:13px;display:flex}.summary-panel{grid-row:span 2}.schedule-panel{min-width:0}.attention-row{border-radius:6px;grid-template-columns:38px 1fr auto 20px;align-items:center;gap:10px;min-height:68px;margin:0 -8px;padding:9px 8px;text-decoration:none;display:grid}.attention-row:hover{background:#f3f6f9}.attention-row__icon{width:36px;height:36px;color:var(--blue);background:#eaf1ff;border-radius:6px;place-items:center;display:grid}.attention-row__icon--amber{color:var(--amber);background:#fff3df}.attention-row>span:nth-child(2){gap:2px;display:grid}.attention-row strong{font-size:13px}.attention-row small{color:var(--muted);font-size:11px}.attention-row b{font-size:16px}.schedule-list{display:grid}.schedule-row{border-top:1px solid #edf0f3;grid-template-columns:48px 2px minmax(0,1fr) auto auto;align-items:center;gap:13px;min-height:60px;display:grid}.schedule-row:first-child{border-top:0}.schedule-row time{font-size:13px;font-weight:750}.schedule-row__line{background:var(--blue);border-radius:2px;height:28px}.schedule-row>div{gap:3px;min-width:0;display:grid}.schedule-row strong,.schedule-row span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.schedule-row strong{font-size:13px}.schedule-row div span{color:var(--muted);font-size:12px}.toolbar{align-items:center;gap:14px;min-height:54px;margin-bottom:18px;display:flex}.search-field{color:#687586;border:1px solid var(--line);background:#fff;border-radius:7px;align-items:center;gap:8px;width:min(100%,420px);height:42px;padding:0 11px;display:flex}.search-field input{background:0 0;border:0;outline:0;min-width:0;padding:0}.toolbar__count{color:var(--muted);align-items:center;gap:6px;margin-left:auto;font-size:13px;display:inline-flex}.table-wrap{border:1px solid var(--line);background:#fff;border-radius:8px;overflow:hidden}.data-table{border-collapse:collapse;width:100%}.data-table th{color:#66717f;text-align:left;text-transform:uppercase;background:#f5f7f9;height:42px;padding:0 14px;font-size:11px}.data-table td{color:#455263;border-top:1px solid #e8edf1;min-height:62px;padding:11px 14px;font-size:13px}.data-table tbody tr:hover{background:#fafbfd}.person-cell{color:var(--ink);align-items:center;gap:10px;text-decoration:none;display:flex}.person-cell>span:last-child{gap:2px;min-width:0;display:grid}.person-cell strong,.person-cell small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.person-cell small{color:var(--muted)}.avatar{color:#174e9b;background:#dceaff;border-radius:50%;flex:none;place-items:center;width:44px;height:44px;font-size:14px;font-weight:750;display:inline-grid}.avatar--small{width:34px;height:34px;font-size:11px}.status{color:#526172;white-space:nowrap;background:#edf1f4;border-radius:999px;align-items:center;min-height:24px;padding:3px 8px;font-size:11px;font-weight:700;display:inline-flex}.status--active,.status--completed,.status--reviewed{color:#126044;background:#e8f6f0}.status--pending,.status--scheduled,.status--assigned{color:#87500b;background:#fff2dc}.status--suspended,.status--cancelled,.status--returned{color:#8a332f;background:#feecea}.status--submitted{color:#204f9c;background:#e8f0ff}.count-badge{color:#8a4d00;background:#fff0d6;border-radius:99px;place-items:center;min-width:24px;height:24px;padding:0 7px;font-weight:700;display:inline-grid}.table-actions{justify-content:flex-end;align-items:center;gap:3px;display:flex}.modal-open{overflow:hidden}.modal-backdrop{z-index:100;background:#0f172085;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:8px;width:min(100%,520px);max-height:calc(100vh - 48px);overflow:auto;box-shadow:0 24px 70px #0a141e42}.modal--small{width:min(100%,410px)}.modal--large{width:min(100%,760px)}.modal__header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:14px;min-height:74px;padding:20px 22px;display:flex}.modal__header h2{margin:0;font-size:19px}.modal__header p{color:var(--muted);margin:5px 0 0;font-size:13px}.modal__body{padding:22px}.modal-actions{justify-content:flex-end;gap:9px;padding-top:4px;display:flex}.modal-copy{color:var(--muted);margin-bottom:0;font-size:14px;line-height:1.55}.copy-field{grid-template-columns:minmax(0,1fr) 40px;align-items:center;display:grid}.copy-field input{grid-area:1/1;padding-right:44px}.copy-field .icon-button{grid-area:1/1;justify-self:end}.back-link{color:var(--muted);align-items:center;gap:6px;margin-bottom:18px;font-size:13px;font-weight:650;text-decoration:none;display:inline-flex}.back-link:hover{color:var(--blue)}.student-profile-header{justify-content:space-between;align-items:center;gap:24px;margin-bottom:20px;display:flex}.student-profile-header__identity{align-items:center;gap:15px;min-width:0;display:flex}.student-profile-header__identity>div{flex-wrap:wrap;align-items:center;gap:7px 10px;min-width:0;display:flex}.student-profile-header__identity h1{text-overflow:ellipsis;width:100%;margin:0;font-size:27px;overflow:hidden}.student-profile-header__identity>div>span:not(.status){color:var(--muted);font-size:13px}.avatar--large{width:58px;height:58px;font-size:18px}.student-profile-header__actions{align-items:center;gap:8px;display:flex}.metric-strip{border:1px solid var(--line);background:#fff;border-radius:8px;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:20px;display:grid}.metric-strip>div{border-left:1px solid var(--line);gap:7px;min-width:0;padding:17px 20px;display:grid}.metric-strip>div:first-child{border-left:0}.metric-strip span{color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:650}.metric-strip strong{text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.inline-note{color:#765219;background:#fff9ed;border:1px solid #ead7b5;border-radius:7px;gap:11px;margin-bottom:20px;padding:15px 17px;display:flex}.inline-note strong{color:#4c3d25;font-size:13px}.inline-note p{color:#6c5c44;white-space:pre-wrap;margin:4px 0 0;font-size:13px;line-height:1.5}.detail-grid{grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);gap:20px;display:grid}.content-section{border:1px solid var(--line);background:#fff;border-radius:8px;min-width:0;padding:22px}.link-button{color:var(--blue);cursor:pointer;background:0 0;border:0;padding:0;font-size:13px;font-weight:650}.timeline-list,.compact-list{display:grid}.timeline-row{border-top:1px solid #edf0f3;grid-template-columns:minmax(0,1fr) auto 38px;align-items:center;gap:10px;min-height:64px;padding-left:26px;display:grid;position:relative}.timeline-row:first-child{border-top:0}.timeline-row:before{content:"";background:#dce3e9;width:1px;position:absolute;top:0;bottom:0;left:7px}.timeline-row:first-child:before{top:50%}.timeline-row:last-child:before{bottom:50%}.timeline-row__dot{z-index:1;background:#93a0ad;border:2px solid #fff;border-radius:50%;width:9px;height:9px;position:absolute;left:3px;box-shadow:0 0 0 1px #93a0ad}.timeline-row__dot--active,.timeline-row__dot--completed{background:var(--green);box-shadow:0 0 0 1px var(--green)}.timeline-row__dot--scheduled{background:var(--blue);box-shadow:0 0 0 1px var(--blue)}.timeline-row>div{gap:3px;min-width:0;display:grid}.timeline-row strong,.timeline-row span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.timeline-row strong{font-size:13px}.timeline-row div span{color:var(--muted);font-size:12px}.compact-row{border-top:1px solid #edf0f3;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:61px;display:grid}.compact-row:first-child{border-top:0}.compact-row__icon{width:34px;height:34px;color:var(--blue);background:#eaf1ff;border-radius:6px;place-items:center;display:grid}.compact-row>div{gap:3px;min-width:0;display:grid}.compact-row strong,.compact-row span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.compact-row strong{font-size:13px}.compact-row div span{color:var(--muted);font-size:11px}.toolbar--wrap{flex-wrap:wrap}.filter-tabs{border:1px solid var(--line);background:#fff;border-radius:7px;align-items:center;gap:2px;min-height:40px;padding:3px;display:inline-flex}.filter-tabs button{color:#5a6776;cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:5px;align-items:center;gap:6px;height:32px;padding:0 11px;font-size:12px;font-weight:650;display:inline-flex}.filter-tabs button:hover{background:#f1f4f7}.filter-tabs button.is-active{color:var(--ink);background:#e8eef5}.filter-tabs button span{color:#7a4708;background:#ffe9c4;border-radius:99px;place-items:center;min-width:19px;height:19px;padding:0 5px;font-size:10px;display:inline-grid}.filter-tabs--standalone{margin-bottom:20px}.library-layout{border:1px solid var(--line);background:#fff;border-radius:8px;grid-template-columns:minmax(310px,.75fr) minmax(0,1.25fr);min-height:560px;display:grid;overflow:hidden}.material-list{border-right:1px solid var(--line);min-height:560px;max-height:calc(100vh - 220px);overflow:auto}.material-row{width:100%;min-height:82px;color:var(--ink);cursor:pointer;text-align:left;background:#fff;border:0;border-bottom:1px solid #edf0f3;align-items:flex-start;gap:11px;padding:13px 15px;display:flex}.material-row:hover{background:#f8fafc}.material-row--selected{box-shadow:inset 3px 0 var(--blue);background:#eef4ff}.material-kind{color:#285b9f;background:#e5effd;border-radius:7px;flex:none;place-items:center;width:38px;height:38px;display:grid}.material-kind--task{color:#87520d;background:#fff0d8}.material-kind--link{color:#246f5a;background:#e3f4ee}.material-kind--file{color:#73479d;background:#f0e8f8}.material-row__content{gap:4px;min-width:0;display:grid}.material-row__content strong,.material-row__content small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.material-row__content strong{font-size:13px}.material-row__content small{color:var(--muted);font-size:11px}.tag-line{gap:5px;min-height:17px;display:flex}.tag-line em{color:#607185;font-size:10px;font-style:normal}.material-preview{min-width:0;padding:28px 32px;overflow:auto}.material-preview__head{color:var(--muted);text-transform:uppercase;align-items:center;gap:9px;font-size:12px;font-weight:700;display:flex}.material-preview__head .material-kind{width:34px;height:34px}.material-preview__head a{color:var(--blue);margin-left:auto}.material-preview h2{margin:24px 0 14px;font-size:22px}.material-body{color:#354253;white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.7}.source-link{max-width:100%;color:var(--blue);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:7px;margin-top:18px;font-size:13px;display:inline-flex;overflow:hidden}.file-chip{border:1px solid var(--line);border-radius:6px;align-items:center;gap:8px;width:fit-content;margin-top:18px;padding:9px 11px;font-size:13px;display:flex}.preview-tags{color:var(--muted);flex-wrap:wrap;align-items:center;gap:7px;margin-top:22px;font-size:12px;display:flex}.material-preview__actions{border-top:1px solid var(--line);gap:9px;margin-top:30px;padding-top:20px;display:flex}.assignment-list{gap:10px;display:grid}.assignment-card{border:1px solid var(--line);background:#fff;border-radius:7px;grid-template-columns:42px minmax(0,1fr) auto;align-items:flex-start;gap:13px;min-height:112px;padding:18px;display:grid}.assignment-card__icon{width:40px;height:40px;color:var(--blue);background:#e7efff;border-radius:7px;place-items:center;display:grid}.assignment-card__main{min-width:0}.assignment-card__main>div{align-items:center;gap:9px;display:flex}.assignment-card h2{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:15px;overflow:hidden}.assignment-card p{color:#4e5c6c;text-overflow:ellipsis;white-space:nowrap;margin:8px 0;font-size:13px;line-height:1.45;overflow:hidden}.assignment-card__main>span{color:var(--muted);font-size:11px}.assignment-card__action{align-self:center}.success-icon{color:var(--green)}.submitted-answer,.assignment-condition{border:1px solid var(--line);background:#f8fafb;border-radius:7px;padding:14px}.submitted-answer span,.assignment-condition span{color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:700}.submitted-answer p,.assignment-condition p{color:#354253;white-space:pre-wrap;margin:8px 0 0;font-size:14px;line-height:1.6}.modal-actions--split{justify-content:space-between}.student-dashboard{grid-template-columns:minmax(0,1.25fr) minmax(330px,.75fr);gap:20px;display:grid}.student-next-lesson,.student-homework-panel,.student-progress-panel{border:1px solid var(--line);background:#fff;border-radius:8px;padding:24px}.student-next-lesson{min-height:320px}.student-next-lesson__body{min-height:210px;color:var(--muted);flex-direction:column;justify-content:center;align-items:flex-start;gap:13px;font-size:13px;display:flex}.student-next-lesson__body>span{align-items:center;gap:7px;display:flex}.student-next-lesson__date{color:var(--ink);text-transform:capitalize;font-size:17px}.student-next-lesson__body .button{margin-top:10px}.student-next-lesson .empty-state{background:0 0;border:0;min-height:210px}.student-homework-panel{min-width:0}.student-homework-panel .empty-state{background:0 0;border:0;min-height:215px}.homework-brief-list{display:grid}.homework-brief{border-top:1px solid #edf0f3;grid-template-columns:36px minmax(0,1fr) 20px;align-items:center;gap:9px;min-height:62px;padding:8px 4px;text-decoration:none;display:grid}.homework-brief:first-child{border-top:0}.homework-brief__icon{width:34px;height:34px;color:var(--blue);background:#e8f0ff;border-radius:6px;place-items:center;display:grid}.homework-brief__icon.is-returned{color:var(--amber);background:#fff1da}.homework-brief>span:nth-child(2){gap:3px;min-width:0;display:grid}.homework-brief strong,.homework-brief small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.homework-brief strong{font-size:13px}.homework-brief small{color:var(--muted);font-size:11px}.student-progress-panel{grid-column:1/-1;grid-template-columns:46px 1fr auto;align-items:center;gap:13px;min-height:102px;display:grid}.student-progress-panel__icon{width:44px;height:44px;color:var(--green);background:#e5f5ef;border-radius:50%;place-items:center;display:grid}.student-progress-panel h2{color:var(--muted);margin:0 0 4px;font-size:12px}.student-progress-panel strong{font-size:24px}.student-progress-panel a{color:var(--blue);font-size:13px;font-weight:650}.student-assignment-grid,.student-material-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;display:grid}.student-assignment-card{border:1px solid var(--line);background:#fff;border-radius:8px;flex-direction:column;min-width:0;min-height:220px;padding:19px;display:flex}.student-assignment-card__top{justify-content:space-between;align-items:center;display:flex}.student-assignment-card h2{margin:18px 0 8px;font-size:16px}.student-assignment-card p{color:#526071;-webkit-line-clamp:3;-webkit-box-orient:vertical;margin-bottom:20px;font-size:13px;line-height:1.5;display:-webkit-box;overflow:hidden}.student-assignment-card__bottom{justify-content:space-between;align-items:center;gap:10px;margin-top:auto;display:flex}.student-assignment-card__bottom>span{color:var(--muted);align-items:center;gap:5px;font-size:11px;display:flex}.assignment-dialog{gap:17px;display:grid}.notice svg{vertical-align:text-bottom}.student-material-card{border:1px solid var(--line);min-width:0;min-height:112px;color:var(--ink);cursor:pointer;text-align:left;background:#fff;border-radius:8px;grid-template-columns:40px minmax(0,1fr) 18px;align-items:flex-start;gap:12px;padding:16px;display:grid}.student-material-card:hover{border-color:#aebdca;box-shadow:0 4px 14px #14243412}.student-material-card__content{gap:5px;min-width:0;display:grid}.student-material-card__content small{color:var(--muted);text-transform:uppercase;font-size:10px;font-weight:700}.student-material-card__content strong,.student-material-card__content>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.student-material-card__content strong{font-size:14px}.student-material-card__content>span{color:var(--muted);font-size:12px}.student-material-card>svg{color:var(--muted)}.mobile-material-overlay{z-index:25;justify-content:flex-end;display:flex;position:fixed;inset:0}.mobile-material-overlay .sidebar-backdrop{display:block}.student-material-detail{z-index:26;background:#fff;width:min(520px,92vw);padding:30px;position:relative;overflow:auto;box-shadow:-12px 0 34px #121e2c29}.student-material-detail .detail-close{float:right;color:var(--blue);cursor:pointer;background:0 0;border:0;font-size:13px;font-weight:650}.student-material-detail>small{color:var(--muted);text-transform:uppercase;margin:14px 0 5px;font-size:11px;font-weight:700;display:block}.student-material-detail h2{margin-bottom:18px}.admin-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:20px;display:grid}.admin-summary>div{border:1px solid var(--line);background:#fff;border-radius:7px;grid-template-columns:38px 1fr auto;align-items:center;gap:10px;min-height:82px;padding:15px;display:grid}.admin-summary__icon{width:36px;height:36px;color:var(--blue);background:#e8f0ff;border-radius:6px;place-items:center;display:grid}.admin-summary__icon--green{color:var(--green);background:#e6f5ef}.admin-summary__icon--gray{color:#687586;background:#edf1f4}.admin-summary span:nth-child(2){color:var(--muted);font-size:12px}.admin-summary strong{font-size:21px}.lesson-loading{place-items:center;min-height:100vh;padding:24px;display:grid}.lesson-shell{height:100dvh;min-height:540px;color:var(--ink);background:#edf1f4;grid-template:58px minmax(0,1fr)/72px minmax(0,1fr) 0;transition:grid-template-columns .18s;display:grid;overflow:hidden}.lesson-shell--dock{grid-template-columns:72px minmax(0,1fr) 360px}.lesson-header{z-index:10;background:#fff;border-bottom:1px solid #d5dce3;grid-column:1/-1;align-items:center;gap:10px;min-width:0;padding:0 12px;display:flex}.lesson-header__title{flex:1;gap:2px;min-width:0;display:grid}.lesson-header__title strong,.lesson-header__title span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.lesson-header__title strong{font-size:14px}.lesson-header__title span{color:var(--muted);font-size:11px}.connection-pill{color:#865207;background:#fff0d6;border-radius:99px;align-items:center;gap:6px;min-height:28px;padding:0 9px;font-size:11px;font-weight:700;display:inline-flex}.connection-pill--connected{color:#126044;background:#e5f5ef}.connection-pill--offline{color:#8d312d;background:#feecea}.lesson-timer{color:#4a5665;font-variant-numeric:tabular-nums;text-align:center;min-width:52px;font-size:13px;font-weight:750}.lesson-modes{background:#fff;border-right:1px solid #d5dce3;flex-direction:column;gap:7px;padding:10px 7px;display:flex}.lesson-modes button{color:#657283;cursor:pointer;background:0 0;border:0;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:58px;height:58px;padding:5px 2px;display:flex}.lesson-modes button:hover{color:var(--ink);background:#edf2f6}.lesson-modes button.is-active{color:var(--blue);background:#e9f0ff}.lesson-modes span{font-size:9px;font-weight:700}.lesson-workspace{background:#f8fafc;min-width:0;min-height:0;position:relative;overflow:hidden}.workspace-pane{min-width:0;min-height:0;display:none;position:absolute;inset:0}.workspace-pane.is-visible{display:flex}.workspace-pane .excalidraw{width:100%;height:100%}.lesson-toast{z-index:8;width:min(520px,100% - 24px);box-shadow:var(--shadow);align-items:center;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.lesson-toast .notice{flex:1}.lesson-toast .icon-button{margin-left:-42px}.code-workspace{background:#fff;flex-direction:column;display:none}.code-workspace.is-visible{grid-template-rows:50px minmax(200px,1fr) minmax(120px,30%);display:grid}.code-toolbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:0 12px;display:flex}.language-switch{background:#edf1f5;border-radius:6px;height:34px;padding:3px;display:flex}.language-switch button{color:#627080;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:0 11px;font-size:12px;font-weight:700}.language-switch button.is-active{color:var(--ink);background:#fff;box-shadow:0 1px 3px #16223021}.code-editor{min-width:0;min-height:0}.code-output{color:#dce7f1;background:#17212b;border-top:1px solid #2b3946;min-width:0;min-height:0;overflow:auto}.code-output__head{color:#9eafbd;text-transform:uppercase;border-bottom:1px solid #2b3946;justify-content:space-between;align-items:center;height:37px;padding:0 14px;font-size:11px;display:flex}.code-output__head button{color:#aebdca;cursor:pointer;text-transform:none;background:0 0;border:0;font-size:11px}.code-output pre{white-space:pre-wrap;margin:0;padding:12px 14px;font-family:Cascadia Code,Consolas,monospace;font-size:12px;line-height:1.55;overflow:auto}.lesson-library{background:#f5f7f9;flex-direction:column;padding:24px;overflow:auto}.lesson-library__header{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:20px;display:flex}.lesson-library__header h2{margin:0 0 5px;font-size:20px}.lesson-library__header p{color:var(--muted);margin:0;font-size:12px}.lesson-library__header .search-field{background:#fff;flex:0 340px}.lesson-material-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.lesson-material-card{border:1px solid var(--line);background:#fff;border-radius:7px;flex-direction:column;min-width:0;min-height:210px;padding:17px;display:flex}.lesson-material-card__head{justify-content:space-between;align-items:center;display:flex}.lesson-material-card__kind{width:34px;height:34px;color:var(--blue);background:#e7efff;border-radius:6px;place-items:center;display:grid}.lesson-material-card__kind--task{color:var(--amber);background:#fff1dc}.lesson-material-card h3{text-overflow:ellipsis;white-space:nowrap;margin:16px 0 7px;font-size:14px;overflow:hidden}.lesson-material-card p{color:#5a6675;-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0 0 16px;font-size:12px;line-height:1.5;display:-webkit-box;overflow:hidden}.lesson-material-card__foot{justify-content:space-between;align-items:center;gap:8px;margin-top:auto;display:flex}.lesson-material-card__foot>span{min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.progress-tag{color:#735019;white-space:nowrap;background:#fff0d6;border-radius:99px;align-items:center;min-height:21px;padding:3px 7px;font-size:9px;font-weight:750;display:inline-flex}.progress-tag--covered{color:#20508e;background:#e7f0ff}.progress-tag--completed{color:#126044;background:#e5f5ef}.lesson-dock{opacity:0;pointer-events:none;background:#fff;border-left:1px solid #d5dce3;min-width:0;min-height:0;overflow:hidden}.lesson-dock--open{opacity:1;pointer-events:auto}.video-frame{color:#fff;background:#101820;height:225px;position:relative;overflow:hidden}.video-frame iframe{background:#101820;border:0;width:100%;height:100%}.video-frame__expand{color:#fff;background:#0f1922b3;position:absolute;top:8px;right:8px}.video-frame__expand:hover{color:#fff;background:#0f1922e6}.dock-tabs{border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr;height:47px;padding:0 10px;display:grid}.dock-tabs button{color:var(--muted);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;gap:6px;font-size:12px;font-weight:700;display:flex;position:relative}.dock-tabs button.is-active{color:var(--blue)}.dock-tabs button.is-active:after{content:"";background:var(--blue);height:2px;position:absolute;bottom:0;left:12px;right:12px}.dock-tabs button span{background:#e7ecf1;border-radius:50%;place-items:center;min-width:18px;height:18px;font-size:9px;display:grid}.lesson-plan,.lesson-notes{height:calc(100% - 272px);overflow:auto}.lesson-plan{padding:14px}.lesson-plan__head{justify-content:space-between;align-items:center;margin-bottom:10px;font-size:12px;display:flex}.lesson-plan__head button{color:var(--blue);cursor:pointer;background:0 0;border:0;font-size:11px;font-weight:700}.lesson-plan__list{display:grid}.lesson-plan__list article{border-top:1px solid #edf0f3;grid-template-columns:28px minmax(0,1fr) 36px;align-items:center;gap:8px;min-height:62px;display:grid}.lesson-plan__list article:first-child{border-top:0}.plan-index{color:#5a6776;background:#edf1f4;border-radius:5px;place-items:center;width:24px;height:24px;font-size:10px;font-weight:750;display:grid}.lesson-plan__list article>div{justify-items:start;gap:5px;min-width:0;display:grid}.lesson-plan__list strong{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:11px;overflow:hidden}.lesson-plan .empty-state{background:0 0;border:0;min-height:210px}.lesson-notes{flex-direction:column;gap:10px;padding:14px;display:flex}.lesson-notes__head{justify-content:space-between;align-items:center;font-size:12px;display:flex}.lesson-notes textarea{resize:none;border:1px solid var(--line);color:#364354;background:#fbfcfd;border-radius:6px;flex:1;min-height:200px;padding:10px;font-size:12px;line-height:1.55}.save-state{color:var(--muted);font-size:10px;font-weight:600}.save-state--saved{color:var(--green)}.save-state--error{color:var(--red)}.dock-peek{z-index:11;border:1px solid var(--line);width:42px;height:42px;color:var(--blue);box-shadow:var(--shadow);cursor:pointer;background:#fff;border-right:0;border-radius:7px 0 0 7px;justify-content:center;align-items:center;gap:0;display:flex;position:fixed;top:72px;right:0}.finish-summary{border:1px solid var(--line);background:#f8fafb;border-radius:6px;gap:10px;padding:13px;display:grid}.finish-summary span{color:#4d5b6b;align-items:center;gap:8px;font-size:12px;display:flex}@media (width<=1280px){.lesson-shell--dock{grid-template-columns:72px minmax(0,1fr) 320px}}@media (width<=1120px){.sidebar{align-items:center;width:76px}.brand-name,.nav-link span,.account-menu__text,.sidebar__lower,.account-menu .avatar{display:none}.sidebar__brand{padding:0}.sidebar__nav{width:100%}.nav-link{justify-content:center;padding:0}.account-menu{justify-content:center;width:100%}.app-main{margin-left:76px}.dashboard-grid{grid-template-columns:minmax(0,1fr)}.summary-panel{grid-row:auto}}@media (width<=760px){.mobile-header{z-index:15;border-bottom:1px solid var(--line);background:#fffffff5;grid-template-columns:40px 1fr 40px;align-items:center;height:58px;padding:0 12px;display:grid;position:sticky;top:0}.mobile-header__title{text-align:center;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:700;overflow:hidden}.sidebar{width:min(84vw,280px);box-shadow:var(--shadow);align-items:stretch;transition:transform .2s;transform:translate(-102%)}.sidebar--open{transform:translate(0)}.sidebar--open .brand-name,.sidebar--open .nav-link span,.sidebar--open .account-menu__text,.sidebar--open .sidebar__lower,.sidebar--open .account-menu .avatar{display:flex}.sidebar--open .account-menu__text{display:grid}.sidebar--open .sidebar__brand{padding:0 8px}.sidebar--open .sidebar__nav{width:auto}.sidebar--open .nav-link{justify-content:flex-start;padding:0 12px}.sidebar--open .account-menu{justify-content:flex-start}.sidebar__close{display:inline-flex}.sidebar-backdrop{z-index:19;background:#0f172073;border:0;display:block;position:fixed;inset:0}.app-main{margin-left:0}.page{padding:24px 16px 48px}.page-header{flex-direction:column;align-items:stretch;margin-bottom:20px}.page-header h1{font-size:23px}.page-header__actions .button{width:100%}.form-row{grid-template-columns:1fr}.auth-page{background:#fff;padding:0}.auth-panel{min-height:100vh;box-shadow:none;border:0;border-radius:0;padding:28px 20px}.dashboard-grid{gap:14px}.next-lesson-panel,.summary-panel,.schedule-panel{padding:18px}.schedule-row{grid-template-columns:44px 2px minmax(0,1fr) auto}.schedule-row .status{display:none}.schedule-row .button{grid-column:3/-1;justify-self:start}.table-wrap{background:0 0;border:0;overflow:visible}.data-table,.data-table tbody{gap:10px;display:grid}.data-table thead{display:none}.data-table tr{border:1px solid var(--line);background:#fff;border-radius:7px;gap:10px;padding:14px;display:grid}.data-table td{border:0;justify-content:space-between;align-items:center;gap:15px;min-height:0;padding:0;display:flex}.data-table td:before{content:attr(data-label);color:var(--muted);text-transform:uppercase;font-size:11px}.data-table td:first-child:before,.data-table .table-actions:before{display:none}.data-table .table-actions{justify-content:flex-end}.person-cell{width:100%}.modal-backdrop{align-items:end;padding:12px}.modal{border-radius:8px 8px 0 0;width:100%;max-height:calc(100vh - 24px)}}.student-material-progress{margin-top:20px}.progress-material-list{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:24px;display:grid}.progress-material-list>div{border-top:1px solid #edf0f3;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:60px;display:grid}.progress-material-list>div:nth-child(-n+2){border-top:0}.progress-material-list>div>div{gap:3px;min-width:0;display:grid}.progress-material-list strong,.progress-material-list span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.progress-material-list strong{font-size:13px}.progress-material-list div span{color:var(--muted);font-size:11px}.student-material-card__content .progress-tag{width:fit-content;margin-top:2px;font-style:normal}.student-material-detail>.progress-tag{margin-bottom:18px}.field input[type=file]{padding:7px}.field input[type=file]::file-selector-button{color:#344253;cursor:pointer;background:#e9eef3;border:0;border-radius:5px;margin-right:10px;padding:6px 10px;font-weight:650}@media (width<=1120px){.detail-grid,.student-dashboard{grid-template-columns:minmax(0,1fr)}.student-progress-panel{grid-column:auto}.student-profile-header{flex-direction:column;align-items:flex-start}.metric-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-strip>div:nth-child(3){border-top:1px solid var(--line);border-left:0}.metric-strip>div:nth-child(4){border-top:1px solid var(--line)}}@media (width<=900px){.lesson-shell,.lesson-shell--dock{grid-template:58px minmax(0,1fr) 60px/minmax(0,1fr)}.lesson-header{grid-area:1/1}.lesson-workspace{grid-area:2/1}.lesson-modes{z-index:12;border-top:1px solid #d5dce3;border-right:0;flex-direction:row;grid-area:3/1;justify-content:center;align-items:center;gap:9px;padding:5px 10px}.lesson-modes button{width:82px;height:50px}.lesson-modes span{font-size:10px}.lesson-dock{z-index:18;border-left:1px solid var(--line);opacity:1;width:min(380px,92vw);transition:transform .18s;position:fixed;top:58px;bottom:60px;right:0;transform:translate(102%);box-shadow:-14px 0 38px #101d2b2e}.lesson-dock--open{transform:translate(0)}.dock-peek{top:70px}.lesson-library{padding:18px}.lesson-plan,.lesson-notes{height:calc(100% - 272px)}.library-layout{grid-template-columns:minmax(270px,.85fr) minmax(0,1.15fr)}.student-assignment-grid,.student-material-grid{grid-template-columns:minmax(0,1fr)}}@media (width<=760px){.student-profile-header__actions{grid-template-columns:repeat(2,minmax(0,1fr));width:100%;display:grid}.student-profile-header__actions .button{min-width:0;padding:0 10px}.student-profile-header__actions .button:last-child{grid-column:1/-1}.metric-strip{grid-template-columns:minmax(0,1fr)}.metric-strip>div,.metric-strip>div:nth-child(3),.metric-strip>div:nth-child(4){border-top:1px solid var(--line);border-left:0}.metric-strip>div:first-child{border-top:0}.timeline-row{grid-template-columns:minmax(0,1fr) auto}.timeline-row .status{display:none}.progress-material-list{grid-template-columns:minmax(0,1fr)}.progress-material-list>div:nth-child(2){border-top:1px solid #edf0f3}.library-layout{min-height:0;display:block}.material-list{border-right:0;min-height:0;max-height:none}.material-preview{display:none}.filter-tabs{max-width:100%;overflow-x:auto}.assignment-card{grid-template-columns:38px minmax(0,1fr)}.assignment-card__action{grid-column:2;justify-self:start}.assignment-card p{white-space:normal}.student-progress-panel{grid-template-columns:44px 1fr}.student-progress-panel a{grid-column:2}.admin-summary{grid-template-columns:minmax(0,1fr)}.modal-actions--split{flex-direction:column-reverse;align-items:stretch}.modal-actions--split .button{width:100%}.student-material-detail{width:100vw;padding:22px}.lesson-header{gap:5px;padding:0 7px}.lesson-header__title span{display:none}.connection-pill{justify-content:center;width:30px;padding:0}.connection-pill span{display:none}.lesson-timer{min-width:44px;font-size:11px}.lesson-header>.button{width:40px;padding:0;font-size:0;overflow:hidden}.lesson-library__header{flex-direction:column;align-items:stretch}.lesson-library__header .search-field{flex:none}.lesson-material-grid{grid-template-columns:minmax(0,1fr)}.code-workspace.is-visible{grid-template-rows:48px minmax(180px,1fr) minmax(130px,36%)}.language-switch button{padding:0 8px}.video-frame{height:210px}.lesson-plan,.lesson-notes{height:calc(100% - 257px)}}@media (width<=430px){.lesson-timer{display:none}.lesson-header__title strong{font-size:12px}.lesson-dock{width:100vw}.lesson-modes{gap:4px}.lesson-modes button{width:76px}}
