@import "https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Source+Code+Pro:wght@500;600&display=swap";.student-course-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.student-course-card{background:#fff;border:1px solid #e1e7f0;border-radius:14px;flex-direction:column;gap:12px;padding:20px;transition:transform .15s,box-shadow .15s;display:flex}.student-course-card:hover{transform:translateY(-2px);box-shadow:0 12px 26px #172b4d12}.student-course-card-top{color:#2f6bff;justify-content:space-between;align-items:center;display:flex}.student-course-card h2{letter-spacing:-.045em;margin:0;font-size:1.12rem}.student-course-card p{color:#6f7b91;min-height:38px;margin:0;font-size:.78rem;line-height:1.55}.course-progress{gap:7px;margin-top:auto;display:grid}.course-progress>div:first-child{color:#6f7b91;justify-content:space-between;font-size:.7rem;display:flex}.course-progress strong{color:#172033}.progress-track{background:#e9edf4;border-radius:8px;height:7px;overflow:hidden}.progress-track i{background:#2f6bff;border-radius:8px;height:100%;display:block}.student-course-meta{color:#6f7b91;justify-content:space-between;gap:8px;font-size:.68rem;display:flex}.student-course-meta span{align-items:center;gap:4px;display:flex}.student-course-layout{grid-template-columns:290px minmax(0,1fr);align-items:start;gap:20px;display:grid}.student-tree{padding:15px;position:sticky;top:20px}.student-tree-head{color:#2d62d4;align-items:center;gap:8px;padding:5px 7px 14px;font-size:.82rem;display:flex}.tree-module{border-top:1px solid #edf0f5;padding:13px 0 0}.tree-module h2{color:#526078;margin:0 7px 8px;font-size:.76rem}.tree-lesson,.tree-task{text-align:left;color:#526078;background:0 0;border:0;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;width:100%;display:flex}.tree-lesson{padding:9px 7px;font-size:.75rem;font-weight:800}.tree-lesson>span,.tree-task>span{align-items:center;gap:6px;display:flex}.tree-lesson small{color:#8a94a5;font-size:.62rem;font-weight:600}.tree-lesson:hover,.tree-lesson.selected,.tree-task:hover,.tree-task.selected{color:#285ed4;background:#eef3ff}.tree-lesson.locked{color:#9aa4b3}.tree-task{padding:7px 7px 7px 26px;font-size:.7rem}.student-workspace{gap:16px;min-width:0;display:grid}.course-description{color:#6f7b91;max-width:620px;margin:9px 0 0;font-size:.78rem}.course-progress-pill{color:#285ed4;background:#edf2ff;border-radius:10px;align-items:center;gap:10px;padding:10px 13px;display:flex}.course-progress-pill strong{font-size:1.2rem}.course-progress-pill span{color:#526078;font-size:.68rem}.lesson-heading{justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.lesson-heading .due{align-items:center;gap:4px;display:flex}.lesson-content{min-height:300px}.lesson-content h2{margin:0 0 18px;font-size:1.4rem}.student-task{max-width:none}.student-task>p{white-space:pre-wrap}.reviewer-comment{color:#526078;background:#f2f6ff;border-left:3px solid #7ba5ff;padding:10px 13px;font-size:.76rem}.reviewer-comment strong{color:#315fc6}.reviewer-comment p{margin:5px 0 0;line-height:1.5}.locked-lesson,.unavailable-course{color:#6f7b91;place-items:start;gap:9px;display:grid}.locked-lesson h2,.unavailable-course h2{color:#172033;margin:0}.locked-lesson p,.unavailable-course p{margin:0;font-size:.8rem}.locked-lesson svg,.unavailable-course svg{color:#8a94a5}.empty-state{place-items:center;gap:7px;display:grid}.empty-state svg{color:#2f6bff}.empty-state p{margin:0}.runner-actions .runner-save:disabled{opacity:.55}@media (width<=1050px){.student-course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.student-course-layout{grid-template-columns:1fr}.student-tree{position:static}}@media (width<=600px){.student-course-grid{grid-template-columns:1fr}.course-progress-pill{justify-content:center;width:100%}.student-course-meta{flex-wrap:wrap}.tree-lesson{padding:11px 7px}.lesson-content,.student-task{padding:18px}}.sidebar nav a.active{color:#fff;background:#29466f}.quick-actions{gap:9px;display:grid}.quick-actions a{justify-content:flex-start}.pagination{color:#6f7b91;justify-content:center;align-items:center;gap:16px;padding:18px 0 2px;font-size:.75rem;display:flex}.pagination button{min-height:35px}.attendance-tools{color:#6f7b91;justify-content:space-between;align-items:center;margin:14px 0;font-size:.75rem;display:flex}.entity-row{border-top:1px solid #edf0f5;justify-content:space-between;align-items:center;gap:10px;padding:12px 0;display:flex}.entity-row strong{font-size:.82rem;display:block}.entity-row small{color:#6f7b91;margin-top:3px;font-size:.7rem;display:block}.row-actions{align-items:center;gap:2px;display:flex}.settings-form{gap:14px;display:grid}.settings-form h2,.panel>h2{letter-spacing:-.045em;margin:0 0 5px;font-size:1.1rem}.settings-form label{color:#526078;gap:7px;font-size:.76rem;font-weight:800;display:grid}.settings-form input,.editor-form input,.editor-form select,.editor-form textarea{color:#172033;border:1px solid #e1e7f0;border-radius:8px;padding:9px}.settings-form button{justify-self:start}.reset-form{background:#f7f9ff;border-radius:9px;padding:12px}.reset-form strong{font-size:.76rem}.review-detail{gap:12px;width:100%;display:grid}.review-code-grid{grid-template-columns:2fr 1fr 1fr;gap:9px;display:grid}.review-code-grid small{color:#6f7b91;margin-bottom:4px;font-size:.68rem;display:block}.review-code-grid pre{max-width:none;min-height:62px;margin:0;overflow:auto}.review-detail textarea{resize:vertical;border:1px solid #e1e7f0;border-radius:8px;width:100%;min-height:70px;padding:9px}.empty-state{text-align:center;color:#6f7b91;padding:22px;font-size:.8rem}.check-line{color:#6f7b91;align-items:center;gap:7px;font-size:.75rem;display:flex}.check-line input{accent-color:#2f6bff}.editor-form{background:#f8faff;border-radius:9px;padding:12px}.editor-lesson{display:block}.editor-lesson>.row-actions{justify-content:flex-end;margin-top:8px}.task-chip{color:#526078;background:#f2f5fa;border-radius:6px;align-items:center;gap:4px;width:max-content;max-width:100%;margin-top:4px;padding:4px 6px;font-size:.7rem;display:flex}.task-chip button{min-height:22px;padding:0 5px;font-size:.65rem}.add-form{border:1px dashed #c2ccdd;border-radius:8px;padding:11px}.add-form textarea{min-height:55px}.modal h2{margin:0}.import-label{cursor:pointer;width:max-content}.import-preview{background:#fbfcff;border:1px solid #e1e7f0;border-radius:9px;margin-top:10px;padding:12px;font-size:.74rem;line-height:1.8}.invalid-row{color:#b34d3d}.code-list{color:#176e56;background:#f2faf6;border-radius:9px;gap:5px;margin-top:10px;padding:12px;font-size:.78rem;display:grid}.code-list code{background:#fff;border-radius:5px;padding:3px 6px;font-family:Source Code Pro,monospace}.form-success,.form-error{margin:0 0 12px}.header-actions form{margin:0}.lesson-row .task-form{width:100%}*{box-sizing:border-box}body{color:#172033;background:#f4f7fb;min-width:320px;margin:0;font-family:Manrope,Inter,system-ui,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.inline-form{flex-wrap:wrap;align-items:center;gap:9px;margin:14px 0;display:flex}.inline-form input,.course-nav input{color:#172033;border:1px solid #e1e7f0;border-radius:9px;flex:1;min-width:160px;padding:10px 12px}.course-nav form{gap:9px;margin-bottom:18px;display:grid}.content-card{border-top:1px solid #e1e7f0;padding:18px 0}.content-card h3{margin:0;font-size:1rem}.runner-save{color:#aebfdc}.review-card pre{white-space:pre-wrap;background:#f4f6fa;border-radius:7px;max-width:550px;padding:9px;font-size:.72rem}.editor-input{border:1px solid #e1e7f0;border-radius:8px;margin-bottom:8px;padding:9px;font-size:1.2rem;font-weight:800;display:block}.editor-title textarea,.lesson-form textarea,.task-form textarea{resize:vertical;border:1px solid #e1e7f0;border-radius:8px;width:100%;min-height:70px;padding:9px;display:block}.assignment-box{background:#f5f8ff;border-radius:9px;flex-wrap:wrap;align-items:center;gap:12px;margin:16px 0;padding:12px;font-size:.75rem;display:flex}.assignment-box label{align-items:center;gap:5px;display:flex}.lesson-form,.task-form{gap:8px;margin:12px 0;display:grid}.lesson-form input,.lesson-form select,.task-form input{border:1px solid #e1e7f0;border-radius:8px;padding:9px}.content-heading{justify-content:space-between;align-items:center;display:flex}.markdown-preview{background:#fbfcfe;border:1px solid #e1e7f0;border-radius:8px;padding:12px;font-size:.82rem;line-height:1.5}.markdown-preview img{max-width:100%;height:auto}.markdown-preview p{margin:5px 0}.form-success{color:#168567;font-size:.8rem}.breadcrumbs{color:#8b95a6;align-items:center;gap:9px;margin-bottom:16px;font-size:.72rem;display:flex}.breadcrumbs strong{color:#526078}.page-description{color:var(--muted);max-width:640px;margin:8px 0 0;font-size:.8rem;line-height:1.55}.state-card{min-height:120px;color:var(--muted);justify-content:center;align-items:center;gap:10px;padding:22px;font-size:.8rem;display:flex}.state-card strong{color:var(--ink);font-size:.84rem}.state-card p{margin:6px 0 12px;line-height:1.5}.state-card.empty-state{text-align:center;gap:5px;display:grid}.error-state{color:#b34d3d;background:#fff8f6;border:1px solid #f2d7d2;border-radius:12px;justify-content:flex-start;margin-bottom:16px}.error-state svg{flex:none}.error-state .secondary{margin-top:3px}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.toast{z-index:50;color:#fff;background:#172b4d;border-radius:11px;align-items:center;gap:9px;max-width:min(420px,100vw - 32px);padding:13px 15px;font-size:.78rem;display:flex;position:fixed;bottom:24px;right:24px;box-shadow:0 15px 40px #172b4d2e}.toast-success svg{color:#8ce2c1}.toast-error svg{color:#ffb8a8}.toast button{color:#cdd9ef;background:0 0;border:0;place-items:center;margin-left:auto;display:grid}.confirm-dialog{gap:11px}.confirm-dialog p{color:var(--muted);margin:0;font-size:.82rem;line-height:1.55}.danger{color:#fff;background:#b34d3d;border:0;border-radius:10px;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:0 15px;font-size:.84rem;font-weight:800;display:inline-flex}.danger:hover{background:#9f4032}.danger-icon{color:#b34d3d!important}.field-label{color:#526078;gap:7px;font-size:.75rem;font-weight:800;display:grid}.student-form{grid-template-columns:1.4fr 1fr 1fr auto;align-items:end;gap:12px;display:grid}.student-form label,.selection-grid label,.filter-panel label{color:#526078;gap:7px;font-size:.75rem;font-weight:800;display:grid}.student-form input,.student-form select,.selection-grid select,.filter-panel select{border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:9px;padding:11px 12px}.group-panels h2{margin:0}.subgroup-pill{color:#2b61d6;background:#eef3ff;border-radius:999px;margin:8px 5px 0 0;padding:4px 8px;font-size:.65rem;font-weight:800;display:inline-flex}.selection-grid{grid-template-columns:1fr 2fr;gap:14px;margin-bottom:18px;display:grid}.attendance-list{border-top:1px solid var(--line);margin:4px 0 18px;display:grid}.attendance-number{color:#2b61d6;background:#eaf0ff;border-radius:50%;place-items:center;width:30px;height:30px;font-size:.72rem;font-weight:800;display:grid}.attendance-row{grid-template-columns:35px 1fr auto 22px;padding:13px 0}.attendance-row input{grid-area:1/4}.present-label{color:var(--green);font-size:.7rem}.absent-label{color:#b34d3d;font-size:.7rem}.filter-panel{margin-bottom:16px}.filter-panel .filters{grid-template-columns:repeat(3,minmax(150px,1fr));gap:12px;margin:0;display:grid}.review-card-expanded{align-items:stretch}.review-meta{align-items:center;gap:12px;display:flex}.table-tools h2{letter-spacing:-.04em;margin:0;font-size:1rem}.table-tools .eyebrow{margin:0 0 3px}.table-tools{align-items:end}.table-wrap table td,.table-wrap table th{vertical-align:middle}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:2px;outline:3px solid #8ab0ff}@media (width<=900px){.student-form{grid-template-columns:1fr 1fr}.student-form button{grid-column:1/-1}.selection-grid,.filter-panel .filters,.course-layout{grid-template-columns:1fr}.course-nav{display:block}.course-nav form{grid-template-columns:1fr auto;align-items:end}.course-nav form .field-label{grid-column:1/-1}}@media (width<=600px){.breadcrumbs{margin-bottom:10px}.toast{bottom:16px;right:16px}.student-form{grid-template-columns:1fr}.student-form button{grid-column:auto}.group-panels{grid-template-columns:1fr}.table-tools{align-items:stretch;gap:12px;display:grid}.table-tools .filters{grid-template-columns:1fr;display:grid}.header-actions{width:100%}.course-nav form{grid-template-columns:1fr}.course-nav form button{width:100%}.editor-title{gap:15px;display:grid}.assignment-box{align-items:start;display:grid}.review-code-grid{grid-template-columns:1fr}.review-meta{flex-direction:column;align-items:flex-start;gap:6px}}.courses-page{gap:22px;display:grid}.courses-shell{gap:20px;display:grid}.courses-shell.has-detail{grid-template-columns:minmax(310px,.62fr) minmax(620px,1.38fr);align-items:start}.course-catalog{min-width:0}.catalog-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:20px;padding-bottom:20px;display:flex}.catalog-head h2{letter-spacing:-.05em;margin:0;font-size:1.32rem}.catalog-count{color:var(--muted);margin:5px 0 0;font-size:.72rem}.create-course{gap:7px;min-width:min(100%,330px);display:grid}.create-course label,.sort-field span{color:#526078;font-size:.7rem;font-weight:800}.create-course>div{gap:7px;display:flex}.create-course input{border:1px solid var(--line);min-width:0;color:var(--ink);border-radius:9px;flex:1;padding:10px 11px}.catalog-tools{flex-wrap:wrap;align-items:center;gap:12px;padding:17px 0 2px;display:flex}.search-field{min-width:210px;color:var(--muted);border:1px solid var(--line);border-radius:9px;flex:1;align-items:center;gap:8px;padding:0 11px;display:flex}.search-field input{width:100%;color:var(--ink);background:0 0;border:0;outline:0;padding:10px 0}.catalog-filters{flex-wrap:wrap;gap:4px;display:flex}.catalog-filters button{color:var(--muted);background:#f5f7fb;border:0;border-radius:999px;padding:8px 11px;font-size:.7rem;font-weight:800}.catalog-filters button.filter-active{color:#285ed4;background:#eaf0ff}.sort-field{align-items:center;gap:7px;display:flex}.sort-field select{min-width:155px}.course-cards{gap:10px;margin-top:14px;display:grid}.course-card{border:1px solid var(--line);background:#fff;border-radius:12px;transition:border-color .15s,box-shadow .15s;overflow:hidden}.course-card:hover{border-color:#b9c9e8;box-shadow:0 10px 25px #172b4d0b}.course-card-main{text-align:left;cursor:pointer;background:#fff;border:0;width:100%;padding:15px 16px 11px}.course-card-title{align-items:center;gap:7px;display:flex}.course-status{border-radius:999px;padding:4px 8px;font-size:.63rem;font-weight:800}.status-draft{color:#657188;background:#eff1f4}.status-published{color:#168567;background:#e5f7f0}.status-archived{color:#785d9a;background:#f1eaff}.course-warning{color:#b07815;display:flex}.course-card h3{letter-spacing:-.025em;color:var(--ink);margin:11px 0 5px;font-size:.97rem}.course-card p{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:.72rem;overflow:hidden}.course-card-stats{color:#6d7890;flex-wrap:wrap;gap:10px;margin-top:12px;font-size:.64rem;display:flex}.course-card-stats span{align-items:center;gap:4px;display:flex}.course-validation-note{color:#a96f0e;background:#fff8ea;border-top:1px solid #f4e5c5;padding:8px 16px;font-size:.68rem}.course-card-actions{border-top:1px solid #f0f2f6;justify-content:flex-end;gap:4px;padding:5px 9px;display:flex}.course-card-actions .ghost{min-height:28px;padding:0 8px;font-size:.68rem}.catalog-empty{color:var(--muted);text-align:center;place-items:center;gap:7px;padding:50px 15px;font-size:.76rem;display:grid}.catalog-empty strong{color:var(--ink);font-size:.88rem}.course-pagination{color:var(--muted);justify-content:center;align-items:center;gap:14px;margin-top:18px;font-size:.72rem;display:flex}.course-workspace{min-width:0;padding:0;position:sticky;top:22px;overflow:hidden}.workspace-mobile-title{display:none}.course-workspace-grid{grid-template-columns:255px minmax(0,1fr);min-height:650px;display:grid}.course-tree{border-right:1px solid var(--line);background:#fbfcff;padding:18px 10px}.tree-node{text-align:left;color:#526078;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:7px;width:100%;min-height:34px;padding:7px 8px;font-size:.73rem;font-weight:700;display:flex}.tree-node span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tree-node small{color:#8e99aa;font-size:.62rem;font-weight:700}.tree-node:hover{background:#f0f4fb}.tree-selected{color:#285ed4!important;background:#eaf0ff!important}.tree-course{margin-bottom:12px;font-size:.78rem;font-weight:800}.tree-course small{font-size:.59rem}.tree-row{align-items:center;gap:2px;display:flex}.tree-disclosure{color:#8792a5;cursor:pointer;background:0 0;border:0;place-items:center;width:22px;height:26px;display:grid}.tree-module{padding-left:4px}.tree-children{padding:3px 0 8px 23px}.tree-lesson-branch{gap:1px;display:grid}.tree-lesson{font-weight:700}.tree-task{color:#718096;padding-left:24px;font-size:.68rem;font-weight:600}.tree-ok{color:#168567;flex:none}.tree-muted{color:#b17c22;flex:none}.course-tree+.node-editor{min-width:0}.node-editor{min-width:0;padding:24px}.node-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:15px;margin-bottom:20px;padding-bottom:19px;display:flex}.node-header h2{letter-spacing:-.05em;margin:0;font-size:1.35rem}.node-subtitle{color:var(--muted);margin:5px 0 0;font-size:.71rem}.node-actions{flex-wrap:wrap;justify-content:flex-end;gap:5px;display:flex}.node-actions button{min-height:34px;padding:0 9px;font-size:.68rem}.autosave-status{color:var(--muted);margin:7px 0 0;font-size:.67rem}.autosave-status[data-state=saving]{color:#2c62dc}.autosave-status[data-state=error]{color:#b34d3d}.autosave-status[data-state=saved]{color:#168567}.editor-fields{grid-template-columns:1fr 1fr;gap:14px;display:grid}.editor-fields label,.add-node-card label{color:#526078;gap:7px;font-size:.72rem;font-weight:800;display:grid}.editor-fields input,.editor-fields select,.editor-fields textarea,.add-node-card input,.add-node-card select,.add-node-card textarea,.quick-add-module input{border:1px solid var(--line);width:100%;color:var(--ink);font:inherit;background:#fff;border-radius:9px;padding:10px;font-size:.77rem}.editor-fields textarea{resize:vertical;min-height:100px}.editor-fields .wide-field{grid-column:1/-1}.markdown-editor{line-height:1.5;min-height:270px!important;font-family:Source Code Pro,monospace!important}.task-statement{min-height:150px!important}.code-input{min-height:190px!important;font-family:Source Code Pro,monospace!important}.assignment-editor{background:#f7f9ff;border:1px solid #e4ebf9;border-radius:11px;gap:14px;margin-top:20px;padding:16px;display:grid}.assignment-editor h3{margin:0;font-size:.91rem}.assignment-editor p:not(.eyebrow){color:var(--muted);margin:5px 0 0;font-size:.7rem}.group-checkboxes{flex-wrap:wrap;gap:9px;display:flex}.group-checkboxes label{border:1px solid var(--line);color:#526078;background:#fff;border-radius:8px;align-items:center;gap:6px;padding:8px 10px;font-size:.72rem;display:flex}.group-checkboxes small{color:var(--muted);font-size:.62rem}.check-line{align-items:center;gap:7px;display:flex!important}.check-line input{accent-color:var(--blue);width:auto!important}.publish-checklist{background:#fffaf0;border:1px solid #f2dfbb;border-radius:11px;margin-top:20px;padding:16px}.publish-checklist.checklist-valid{background:#f5fcf9;border-color:#c9ecdf}.checklist-title{justify-content:space-between;gap:12px;display:flex}.checklist-title h3{margin:0;font-size:.92rem}.checklist-icon{color:#b07815}.success-icon{color:#168567}.checklist-items{gap:8px;margin-top:13px;display:grid}.checklist-item{color:#526078;align-items:center;gap:7px;font-size:.71rem;display:flex}.checklist-errors,.checklist-warnings{margin:13px 0 0;padding-left:18px;font-size:.68rem;line-height:1.5}.checklist-errors{color:#a94e3f}.checklist-warnings{color:#a96f0e}.add-node-card{background:#f8faff;border:1px dashed #bdcbe3;border-radius:11px;gap:11px;margin-top:22px;padding:15px;display:grid}.add-node-card>div:first-child{gap:4px;display:grid}.add-node-card strong{color:var(--ink);font-size:.8rem}.add-node-card span{color:var(--muted);font-size:.67rem}.add-node-card>.secondary{justify-self:start}.form-grid{grid-template-columns:1fr 1fr;gap:11px;display:grid}.add-node-card textarea{resize:vertical;min-height:75px}.quick-add-module{border-top:1px solid var(--line);gap:8px;padding:14px 20px;display:flex}.quick-add-module input{flex:1}.node-editor-empty{min-height:400px;color:var(--muted);align-content:center;place-items:center;gap:8px;font-size:.77rem;display:grid}.node-editor-empty strong{color:var(--ink)}.workspace-mobile-title{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:12px 16px}.course-preview-modal{width:min(720px,100%);max-height:88vh;overflow:auto}.preview-label{color:#285ed4;align-items:center;gap:6px;font-size:.7rem;font-weight:800;display:flex}.course-preview-modal h2{font-size:1.45rem}.student-preview-task{gap:12px;display:grid}.preview-statement{white-space:pre-wrap;color:#526078;font-size:.82rem;line-height:1.6}.preview-example,.preview-code{background:#f7f9fc;border:1px solid #e6ebf3;border-radius:9px;padding:11px}.preview-example strong,.preview-code div{color:#526078;font-size:.7rem}.preview-example pre,.preview-code pre{white-space:pre-wrap;margin:8px 0 0;font:500 .75rem/1.55 Source Code Pro,monospace}.preview-hint{color:#526078;background:#f2f6ff;border-left:3px solid #7ba5ff;padding:9px 12px;font-size:.74rem}.preview-hint p{margin:5px 0 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}@media (width<=920px){.courses-shell.has-detail{grid-template-columns:1fr}.course-workspace{position:static}.course-catalog{order:0}.course-workspace{order:1}.course-workspace-grid{grid-template-columns:230px minmax(0,1fr)}}@media (width>=921px){.courses-shell.has-detail{grid-template-columns:1fr}}@media (width<=700px){.catalog-head{display:grid}.create-course{min-width:0}.create-course>div{display:grid}.create-course button{width:100%}.catalog-tools{align-items:stretch;display:grid}.search-field{min-width:0}.catalog-filters{flex-wrap:nowrap;overflow:auto}.sort-field{justify-content:space-between}.sort-field select{flex:1}.course-workspace{border-radius:12px}.workspace-mobile-title{display:flex}.course-workspace-grid{min-height:0;display:block}.course-tree{border-right:0;border-bottom:1px solid var(--line);max-height:260px;padding:12px;overflow:auto}.node-editor{padding:18px 15px}.node-header{display:grid}.node-actions{justify-content:flex-start}.node-actions button{flex:1}.editor-fields,.form-grid{grid-template-columns:1fr}.editor-fields .wide-field{grid-column:auto}.assignment-editor{padding:13px}.group-checkboxes{display:grid}.group-checkboxes label{justify-content:space-between}.quick-add-module{padding:12px;display:grid}.quick-add-module button{width:100%}.course-card-stats{gap:7px}.course-card-main{padding:13px}.course-preview-modal{padding:23px}.course-preview-modal .modal-close{top:10px;right:10px}}.lesson-block-editor{border-top:1px solid var(--line);gap:14px;margin-top:20px;padding-top:18px;display:grid}.block-editor-head,.block-toolbar,.block-card-head,.revision-history-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.block-editor-head h3{margin:0;font-size:1rem}.block-toolbar{align-items:stretch}.block-add{align-items:center;gap:8px;display:flex}.block-add select{min-width:180px}.block-list{gap:10px;display:grid}.lesson-block-card{border:1px solid var(--line);background:var(--surface,#fff);border-radius:12px;gap:12px;padding:12px;display:grid}.lesson-block-card.is-dirty{border-color:var(--accent,#4f46e5)}.block-card-head{font-weight:600}.block-card-actions{gap:5px;display:flex}.icon-button{border:1px solid var(--line);width:32px;height:32px;color:inherit;cursor:pointer;background:0 0;border-radius:8px;place-items:center;padding:0;display:inline-grid}.icon-button:hover{background:var(--surface-muted,#f4f4f5)}.block-type-label{align-items:center;gap:7px;display:inline-flex}.block-fields{gap:10px;display:grid}.block-fields textarea{resize:vertical;min-height:86px}.block-fields .inline-fields{grid-template-columns:1fr 120px;gap:10px;display:grid}.block-inline-preview{border-top:1px dashed var(--line);padding-top:10px}.block-inline-preview small{color:var(--muted);margin-bottom:6px;display:block}.block-preview{gap:10px;display:grid}.content-code-block{color:#e2e8f0;background:#101827;border-radius:9px;margin:0;padding:12px;font:500 .84rem/1.55 ui-monospace,SFMono-Regular,Menlo,monospace;overflow:auto}.content-code-head{color:#94a3b8;justify-content:space-between;margin-bottom:6px;font-size:.78rem;display:flex}.content-callout{border-left:4px solid var(--accent,#4f46e5);background:color-mix(in srgb,var(--accent,#4f46e5) 8%,transparent);border-radius:0 9px 9px 0;padding:12px}.content-callout.warning{border-color:#f59e0b}.content-callout.tip{border-color:#10b981}.content-media{gap:6px;display:grid}.content-media img{border-radius:8px;max-width:100%}.content-media figcaption{color:var(--muted);font-size:.82rem}.content-divider{border:0;border-top:1px solid var(--line);margin:8px 0}.content-check{background:var(--surface-muted,#f8fafc);border-radius:9px;gap:7px;padding:12px;display:grid}.content-check ul{margin:0;padding-left:20px}.template-toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.template-toolbar select{min-width:210px}.save-template{border:1px dashed var(--line);border-radius:10px;gap:8px;padding:12px;display:grid}.save-template summary{cursor:pointer;font-weight:600}.revision-history{gap:12px;display:grid}.revision-history-list{gap:8px;max-height:390px;display:grid;overflow:auto}.revision-row{border:1px solid var(--line);border-radius:9px;justify-content:space-between;align-items:center;gap:10px;padding:10px;display:flex}.revision-row small{color:var(--muted);display:block}.preview-block-button{align-items:center;gap:6px;display:inline-flex}.autosave-status{color:var(--muted);font-size:.82rem}.autosave-status.saving{color:#b45309}.autosave-status.saved{color:#047857}.autosave-status.error{color:#b91c1c}@media (width<=700px){.block-add{grid-template-columns:1fr auto;width:100%;display:grid}.block-add select{min-width:0}.block-fields .inline-fields{grid-template-columns:1fr}.revision-row{flex-direction:column;align-items:flex-start}.revision-row button{width:100%}.template-toolbar{display:grid}.template-toolbar select{width:100%;min-width:0}.lesson-block-card{padding:10px}}.inline-python-playground{border:1px solid var(--line);background:var(--surface-muted,#f8fafc);border-radius:12px;gap:12px;padding:16px;display:grid}.inline-python-playground label{gap:6px;display:grid}.inline-python-playground textarea:not(.code-editor){min-height:64px}.interactive-block{gap:14px;display:grid}.interactive-block h2{margin:0}.interactive-options{gap:9px;display:grid}.interactive-options label{border:1px solid var(--line);cursor:pointer;border-radius:9px;align-items:center;gap:8px;padding:10px;display:flex}.interactive-options label:has(input:checked){border-color:var(--accent,#4f46e5);background:color-mix(in srgb,var(--accent,#4f46e5) 8%,transparent)}:root{--ink:#172033;--muted:#6f7b91;--navy:#172b4d;--blue:#2f6bff;--line:#e1e7f0;--panel:#fff;--green:#168567}.auth-page{background:#fff;grid-template-columns:minmax(380px,1.12fr) minmax(420px,.88fr);min-height:100vh;display:grid}.auth-intro{background:var(--navy);color:#f7faff;flex-direction:column;justify-content:space-between;min-height:100vh;padding:48px clamp(34px,7vw,112px);display:flex;position:relative;overflow:hidden}.auth-intro:after{content:"";border:1px solid #bdd3ff29;border-radius:50%;width:440px;height:440px;position:absolute;bottom:-190px;right:-220px;box-shadow:0 0 0 70px #bdd3ff0a,0 0 0 140px #bdd3ff06}.brand{z-index:1;align-items:center;gap:10px;font-size:1.05rem;font-weight:800;display:flex;position:relative}.brand-mark{background:var(--blue);color:#fff;border-radius:11px;place-items:center;width:36px;height:36px;display:grid}.auth-intro h1{letter-spacing:-.065em;max-width:660px;margin:.5rem 0 1.2rem;font-size:clamp(2.5rem,5vw,4.7rem);line-height:1.04}.eyebrow{text-transform:uppercase;letter-spacing:.11em;color:var(--muted);margin:0 0 .55rem;font-size:.7rem;font-weight:800}.auth-intro .eyebrow{color:#94b4ef}.intro-copy{color:#c0ceea;max-width:480px;font-size:1.05rem;line-height:1.7}.intro-stat{z-index:1;align-items:center;gap:16px;display:flex;position:relative}.intro-stat strong{color:#82a9ff;letter-spacing:-.06em;font-size:3.2rem}.intro-stat span{color:#c0ceea;font-size:.85rem;line-height:1.4}.auth-card{place-items:center;padding:44px;display:grid}.auth-card-inner{width:100%;max-width:388px}.auth-card h2{letter-spacing:-.05em;margin:0 0 2rem;font-size:2rem}.role-switch{background:#f0f3f8;border-radius:12px;grid-template-columns:1fr 1fr;margin-bottom:28px;padding:4px;display:grid}.role-switch button{color:var(--muted);background:0 0;border:0;border-radius:9px;justify-content:center;align-items:center;gap:7px;padding:11px 8px;font-size:.84rem;font-weight:700;display:flex}.role-switch .selected{color:var(--ink);background:#fff;box-shadow:0 2px 8px #182c5510}.auth-card form{gap:17px;display:grid}.auth-card label,.modal label{color:#4b5870;gap:8px;font-size:.82rem;font-weight:700;display:grid}.auth-card input,.modal input,.modal select{border:1px solid var(--line);color:var(--ink);border-radius:10px;outline:none;padding:13px 14px}.auth-card input:focus,.modal input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #2f6bff16}.primary,.secondary,.ghost{border:0;border-radius:10px;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:0 15px;font-size:.84rem;font-weight:800;display:inline-flex}.primary{background:var(--blue);color:#fff;box-shadow:0 5px 13px #2f6bff2b}.primary:hover{background:#245de5}.secondary{color:#2659cb;background:#edf2ff}.ghost{color:#53617a;background:0 0}.ghost:hover{background:#f1f4f8}.auth-submit{width:100%;margin-top:6px}.auth-hint{color:var(--muted);margin:17px 0 0;font-size:.76rem;line-height:1.55}.form-error{color:#b34d3d;margin:0;font-size:.8rem}.app-shell{min-height:100vh;display:flex}.sidebar{color:#d6e0f3;z-index:5;background:#152746;flex-direction:column;width:245px;padding:28px 16px;display:flex;position:fixed;inset:0 auto 0 0}.side-brand{color:#fff;margin-bottom:38px;padding:0 11px}.side-top{align-items:center;display:flex}.close-menu,.mobile-menu{display:none}.sidebar nav{gap:5px;display:grid}.sidebar nav a{color:#aebfdc;border-radius:9px;align-items:center;gap:12px;padding:11px 12px;font-size:.86rem;font-weight:700;display:flex}.sidebar nav a:hover,.sidebar nav .nav-active{color:#fff;background:#29466f}.side-bottom{margin-top:auto}.profile{align-items:center;gap:10px;padding:13px 10px;display:flex}.profile strong{color:#fff;font-size:.78rem;display:block}.profile small{color:#aebfdc;font-size:.67rem}.avatar{color:#245bd8;background:#dce7ff;border-radius:50%;flex:none;place-items:center;width:35px;height:35px;font-size:.72rem;font-weight:800;display:grid}.avatar.coral{color:#c6533d;background:#ffe3df}.avatar.blue{color:#2d63da;background:#e5edff}.sign-out{color:#aebfdc;background:0 0;border:0;align-items:center;gap:10px;width:100%;padding:12px 10px;font-size:.82rem;font-weight:700;display:flex}.workspace{width:calc(100% - 245px);max-width:1600px;margin-left:245px;padding:42px clamp(26px,4.6vw,76px)}.page-header{justify-content:space-between;align-items:end;gap:22px;margin-bottom:32px;display:flex}.page-header h1{letter-spacing:-.06em;margin:0;font-size:clamp(1.85rem,3.4vw,2.7rem);line-height:1.05}.header-actions{gap:9px;display:flex}.metrics{grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:22px;display:grid}.metric{background:var(--panel);border:1px solid var(--line);border-radius:14px;flex-direction:column;min-height:138px;padding:21px;display:flex}.metric strong{letter-spacing:-.07em;font-size:2rem}.metric span{color:#516078;margin-top:7px;font-size:.78rem}.metric small{color:var(--muted);margin-top:auto;font-size:.7rem}.metric .positive{color:var(--green)}.two-col{grid-template-columns:1.18fr .82fr;gap:22px;display:grid}.panel{border:1px solid var(--line);background:#fff;border-radius:14px;padding:24px}.panel-heading{justify-content:space-between;align-items:start;gap:15px;margin-bottom:20px;display:flex}.panel-heading h2,.editor h2,.modal h2,.attendance h2,.review-card h2,.student-progress h2{letter-spacing:-.045em;margin:0;font-size:1.2rem}.panel-heading a{color:#2b61d6;align-items:center;gap:3px;font-size:.76rem;font-weight:800;display:flex}.lesson-list{display:grid}.lesson-row{border-top:1px solid #edf0f5;align-items:center;gap:12px;padding:12px 0;display:flex}.lesson-index{color:#2c62dc;background:#eef3ff;border-radius:8px;flex:none;place-items:center;width:30px;height:30px;font-size:.75rem;font-weight:800;display:grid}.lesson-index.locked{color:#8f98a7;background:#f2f3f5}.lesson-row div{flex:1;gap:3px;display:grid}.lesson-row strong,.editor-lessons strong{font-size:.82rem}.lesson-row small,.editor-lessons small{color:var(--muted);font-size:.69rem}.badge{white-space:nowrap;border-radius:999px;padding:5px 9px;font-size:.67rem;font-weight:800}.badge.success{color:#168567;background:#e5f7f0}.badge.muted{color:#758095;background:#eff1f4}.badge.warning{color:#a96f0e;background:#fff2dc}.attention-item{border-top:1px solid #edf0f5;align-items:center;gap:11px;padding:15px 0;display:flex}.attention-item div{flex:1}.attention-item strong{font-size:.82rem;display:block}.attention-item small{color:var(--muted);font-size:.68rem}.table-panel{padding:0;overflow:hidden}.table-tools{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.tabs{gap:4px;display:flex}.tabs button{color:var(--muted);background:0 0;border:0;border-radius:8px;padding:8px 11px;font-size:.76rem;font-weight:800}.tabs .tab-active{color:#285ed4;background:#eaf0ff}.table-wrap{overflow-x:auto}table{border-collapse:collapse;text-align:left;width:100%}th{text-transform:uppercase;letter-spacing:.07em;color:#7c8799;white-space:nowrap;background:#f9fafc;padding:13px 20px;font-size:.65rem}td{color:#526078;white-space:nowrap;border-top:1px solid #edf0f5;padding:15px 20px;font-size:.78rem}td strong{color:var(--ink);font-size:.8rem;display:block}td small{color:var(--muted);margin-top:3px;font-size:.68rem;display:block}td code{color:#34425c;background:#f2f5fa;border-radius:5px;padding:5px 7px;font-family:Source Code Pro,monospace;font-size:.7rem}.progress-cell{color:#50607a;align-items:center;gap:9px;font-size:.75rem;display:flex}.progress-cell>span{background:#e9edf4;border-radius:10px;width:83px;height:6px;display:block;overflow:hidden}.progress-cell i{background:var(--blue);border-radius:10px;height:100%;display:block}.modal-backdrop{z-index:20;background:#14284774;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:16px;gap:16px;width:min(440px,100%);padding:30px;display:grid;position:relative;box-shadow:0 24px 70px #1428473c}.modal-close{color:var(--muted);background:0 0;border:0;position:absolute;top:13px;right:13px}.course-layout{grid-template-columns:280px 1fr;gap:22px;display:grid}.course-nav h2{letter-spacing:-.05em;margin:0 0 20px;font-size:1.28rem}.module-tree{gap:4px;display:grid}.module-item{text-align:left;color:#536078;background:0 0;border:0;border-radius:8px;justify-content:space-between;gap:7px;padding:11px;font-size:.78rem;font-weight:700;display:flex}.module-item span{color:#929dad;font-size:.65rem;font-weight:600}.module-item.selected{color:#265fd7;background:#eaf0ff}.add-line{color:#2e65d9;background:0 0;border:0;align-items:center;gap:5px;padding:18px 10px 0;font-size:.75rem;font-weight:800;display:flex}.editor-title{border-bottom:1px solid var(--line);justify-content:space-between;align-items:start;padding-bottom:18px;display:flex}.publish-toggle{border:0}.editor-lessons{display:grid}.editor-lessons article{border-bottom:1px solid #edf0f5;align-items:center;gap:12px;padding:17px 0;display:flex}.editor-lessons article div{flex:1;gap:4px;display:grid}.add-lesson{color:#315fc5;background:#f9fbff;border:1px dashed #aebbd2;border-radius:9px;justify-content:center;gap:6px;width:100%;margin-top:18px;padding:11px;font-size:.78rem;font-weight:800;display:flex}.lesson-note{color:#52627d;background:#f3f7ff;border-radius:9px;gap:9px;margin-top:20px;padding:13px;font-size:.74rem;line-height:1.5;display:flex}.review-stack{gap:12px;display:grid}.review-card{border:1px solid var(--line);background:#fff;border-radius:13px;justify-content:space-between;align-items:center;gap:18px;padding:20px;display:flex}.review-main{align-items:center;gap:13px;display:flex}.review-main h2{font-size:.96rem}.review-main p:not(.eyebrow){color:var(--muted);margin:5px 0 0;font-size:.76rem}.review-actions{gap:8px;display:flex}.attendance{max-width:760px}.attendance-info{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:18px;padding-bottom:17px;display:flex}select{border:1px solid var(--line);color:#425069;background:#fff;border-radius:8px;padding:9px;font-size:.76rem}.attendance-row{border-bottom:1px solid #edf0f5;grid-template-columns:38px 1fr auto 18px 105px;align-items:center;gap:11px;padding:14px 0;font-size:.8rem;display:grid}.attendance-row span:nth-of-type(2){color:var(--muted);font-size:.7rem}.attendance-row input{accent-color:var(--blue);width:16px;height:16px}.attendance-row i{color:var(--green);font-size:.7rem;font-style:normal;font-weight:700}.filters{gap:10px;margin:-10px 0 22px;display:flex}.student-layout{grid-template-columns:minmax(280px,.78fr) minmax(400px,1.22fr);align-items:start;gap:22px;display:grid}.task-panel{border:1px solid var(--line);background:#fff;border-radius:14px;padding:25px}.task-top{justify-content:space-between;align-items:center;margin-bottom:22px;display:flex}.due{color:var(--muted);font-size:.73rem;font-weight:700}.task-panel h2{letter-spacing:-.05em;margin:0 0 12px;font-size:1.35rem}.task-panel>p{color:#4f5e77;margin-bottom:24px;font-size:.84rem;line-height:1.7}.task-panel code,.example code{background:#f2f5fa;border-radius:4px;padding:1px 4px;font-family:Source Code Pro,monospace;font-size:.78rem}.example{background:#f7f9fc;border:1px solid #e9edf4;border-radius:10px;margin-bottom:15px;padding:14px;font-size:.76rem}.example strong{margin-bottom:10px;font-size:.73rem;display:block}.example div{color:var(--muted);border-top:1px solid #e8edf4;justify-content:space-between;padding:7px 0;display:flex}.hint{color:#4f5e77;background:#f2f6ff;border-left:3px solid #7ba5ff;padding:11px 13px;font-size:.76rem}.hint strong{color:#315fc6}.hint p{margin:6px 0 0;line-height:1.5}.submission-state{color:#5d6c83;gap:9px;margin-top:18px;font-size:.72rem;line-height:1.5;display:flex}.submission-state svg{color:#315fc6;flex:none}.runner{color:#dce6f8;background:#18233a;border:1px solid #263652;border-radius:14px;padding:16px;box-shadow:0 15px 35px #18233a17}.runner-head{justify-content:space-between;align-items:center;padding:2px 4px 13px;display:flex}.runner-head .eyebrow{color:#8498bc;margin-bottom:3px}.runner-head strong{font-size:.8rem}.offline-note{color:#9cb0d3;background:#253652;border-radius:6px;padding:5px 7px;font-size:.65rem}.code-label,.io-label{color:#9db1d3;align-items:center;gap:5px;margin:0 4px 7px;font-family:Source Code Pro,monospace;font-size:.68rem;display:flex}.code-editor{resize:vertical;color:#e8f0ff;background:#111a2c;border:1px solid #2b3b58;border-radius:9px;outline:none;width:100%;min-height:260px;padding:15px;font:500 .83rem/1.65 Source Code Pro,monospace;display:block}.code-editor:focus{border-color:#527df1}.io-grid{grid-template-columns:.6fr 1.4fr;gap:12px;margin-top:14px;display:grid}.io-grid label{color:#9db1d3;gap:7px;font-size:.68rem;display:grid}.io-grid textarea{resize:vertical;color:#e8f0ff;background:#111a2c;border:1px solid #2b3b58;border-radius:8px;width:100%;height:86px;padding:9px;font:500 .75rem Source Code Pro,monospace}.console{color:#b5d9c8;white-space:pre-wrap;background:#0e1524;border:1px solid #2b3b58;border-radius:8px;min-height:86px;margin:0;padding:10px;font:500 .75rem/1.5 Source Code Pro,monospace}.runner-actions{justify-content:flex-end;gap:9px;padding-top:14px;display:flex}.runner .secondary{color:#dbe8ff;background:#253a60}.student-progress{border:1px solid var(--line);background:#fff;border-radius:14px;margin-top:24px;padding:22px}.student-progress h2{margin-bottom:16px;font-size:1.2rem}.progress-overall{align-items:center;gap:12px;display:flex}.progress-overall>span{color:var(--muted);font-size:.75rem}.mobile-menu{z-index:4;border:1px solid var(--line);width:39px;height:39px;color:var(--navy);background:#fff;border-radius:8px;position:fixed;top:15px;left:15px}@media (width<=1050px){.metrics{grid-template-columns:repeat(2,1fr)}.student-layout,.two-col,.course-layout{grid-template-columns:1fr}.course-nav{display:none}}@media (width<=760px){.auth-page{grid-template-columns:1fr}.auth-intro{min-height:auto;padding:30px}.auth-intro>div:nth-child(2){margin:58px 0 36px}.auth-intro h1{font-size:2.55rem}.auth-card{padding:34px 23px}.sidebar{transition:transform .2s;transform:translate(-100%)}.sidebar.open{transform:translate(0);box-shadow:12px 0 36px #15274640}.workspace{width:100%;margin:0;padding:70px 17px 28px}.mobile-menu,.close-menu{place-items:center;display:grid}.close-menu{color:#fff;background:0 0;border:0;margin-left:auto}.page-header{flex-direction:column;align-items:start;margin-bottom:24px}.header-actions{grid-template-columns:1fr 1fr;width:100%;display:grid}.header-actions button{padding:0 8px}.metrics{grid-template-columns:1fr 1fr;gap:10px}.metric{min-height:121px;padding:15px}.metric strong{font-size:1.65rem}.panel{padding:17px}.table-tools{padding:12px}.table-tools .ghost{font-size:0}.table-tools .ghost svg{margin:0}.review-card{flex-direction:column;align-items:start}.review-actions{width:100%}.review-actions button{flex:1}.attendance-info{flex-direction:column;align-items:start}.attendance-row{grid-template-columns:36px 1fr 18px;gap:8px}.attendance-row span:nth-of-type(2),.attendance-row i{grid-column:2}.attendance-row input{grid-area:1/3}.filters{grid-template-columns:1fr;display:grid}.task-panel{padding:18px}.io-grid{grid-template-columns:1fr}.runner{padding:11px}.code-editor{min-height:215px}.progress-overall{flex-direction:column;align-items:start}.auth-card h2{font-size:1.7rem}.sidebar nav{margin-top:5px}}
