.teacher-login{min-height:100vh;display:grid;grid-template-columns:1.2fr 1fr}.login-world{position:relative;min-height:100vh;background:#030914;overflow:hidden}.login-world canvas{position:absolute;inset:0;width:100%;height:100%}.login-world:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#070d17ed,transparent 80%)}.login-world>div{position:absolute;bottom:13%;left:12%;right:9%;z-index:1}.login-world h1{font-size:36px;line-height:1.7;letter-spacing:2px}.login-world p:last-child{font-size:12px;color:var(--muted)}.login-form-wrap{align-self:center;max-width:490px;width:100%;padding:60px;margin:auto}.login-form-wrap .brand{margin-bottom:75px;font-size:15px;letter-spacing:1px}.login-form-wrap .eyebrow{font-size:9px}.login-form-wrap h2{font-size:29px;margin:18px 0 15px}.login-form-wrap form{margin:32px 0}.login-form-wrap label{display:block;color:#a9bdcc;font-size:12px;margin-bottom:18px}.login-form-wrap input{margin-top:9px}.admin{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:100vh}.admin-side{padding:30px 21px;display:flex;flex-direction:column;border-right:1px solid var(--line);background:#0a131f;position:sticky;top:0;height:100vh}.admin-side .brand{font-size:13px;letter-spacing:.5px;gap:9px}.admin-side .brand-orbit{font-size:36px}.admin-side .brand small{font-size:7px;letter-spacing:1.5px}.admin-side>.eyebrow{font-size:8px;margin:53px 8px 20px;color:#61778c;letter-spacing:1.5px}.admin-side nav{display:flex;flex-direction:column;gap:8px}.admin-nav{padding:13px 10px;border:1px solid transparent;border-radius:5px;text-align:left;color:#8ea3b6;display:flex;align-items:center;gap:9px;font-size:12px}.admin-nav>span{font-size:16px;width:23px}.admin-nav small{margin-left:auto;font:9px var(--mono);color:#536b82}.admin-nav.active{color:var(--gold);background:#d7bd930c;border-color:#d7bd9330}.admin-side-note{padding:22px 10px;margin-top:45px;border-top:1px solid var(--line);font-size:10px;color:#a7becb}.admin-side-note p{font-size:10px;color:#5f778c;margin:11px 0 0}.side-foot{margin-top:auto;border-top:1px solid var(--line);padding:20px 9px 0;display:flex;flex-direction:column;gap:13px;color:#899fb2;font-size:11px}.side-foot button{text-align:left;font-size:10px;padding:0;color:#71889e}.side-foot button:hover{color:var(--gold)}.admin-main{width:100%;max-width:1600px;margin:auto;padding:34px 4% 70px;min-width:0}.admin-header{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:34px}.admin-header .eyebrow{font-size:8px;margin-bottom:12px}.admin-header h1{font-size:29px;letter-spacing:1px;margin:0}.admin-header-actions{display:flex;gap:18px;align-items:center}.admin-header-actions .subtle{font-size:10px}.teacher-banner{background:radial-gradient(ellipse at 100% 0%,#2e4350aa,transparent 65%),#111c29;border:1px solid #d7bd9322;border-radius:7px;padding:28px 30px;display:flex;align-items:center;justify-content:space-between}.teacher-banner .eyebrow{font-size:8px}.teacher-banner h2{font-size:21px;margin:10px 0 12px;letter-spacing:.5px}.teacher-banner p:last-child{font-size:11px;color:var(--muted);margin:0}.teacher-banner>span{font:76px serif;color:#d7bd9366;margin-left:20px}.admin .report-stats{margin:24px 0}.admin .report-stat{padding:21px}.admin .report-stat b{font-size:30px}.overview-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:22px;align-items:start}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}.panel-head .eyebrow{font-size:7px;letter-spacing:1.4px;margin-bottom:11px}.panel-head h2{margin:0;font-size:18px}.small-badge{font-size:9px;color:#9fb6c5;border:1px solid var(--line);padding:6px 9px;border-radius:3px;white-space:nowrap}.event-row{display:flex;align-items:flex-start;gap:13px;padding:16px 0;border-top:1px solid var(--line);text-align:left;width:100%}.event-dot{display:block;flex-shrink:0;width:7px;height:7px;border:1px solid var(--teal);border-radius:50%;margin-top:6px}.event-dot.error{border-color:var(--danger)}.event-copy{flex:1;min-width:0}.event-copy p{font-size:11px;margin:0;color:#c0cfda;line-height:1.7}.event-copy b{font-weight:500;color:var(--gold);margin-right:7px}.event-copy small{display:block;font-size:9px;color:#748ca2;line-height:1.7;margin-top:5px}.event-row time{font:8px var(--mono);color:#61788e;white-space:nowrap;padding-top:4px}.help-row{padding:15px 0;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left}.help-row b{font-size:12px;font-weight:400}.help-row small{font-size:10px;color:#8ca2b5;display:block;margin-top:7px}.help-row>span:last-child{font-size:10px;color:var(--danger)}.assessment-note{font-size:10px;line-height:1.9;color:#6e859a;border-top:1px solid var(--line);margin-top:15px;padding-top:20px}.section-tools{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:25px}.section-tools p{margin:0;max-width:560px;font-size:11px}.inline-form{display:flex;gap:9px;flex-shrink:0}.inline-form input{width:200px;font-size:11px;padding:10px 12px}.class-cards{display:flex;gap:12px;flex-wrap:wrap;margin:25px 0}.class-card{border:1px solid var(--line);border-radius:6px;padding:20px;min-width:180px;flex:1;max-width:280px;background:var(--panel);text-align:left}.class-card b{display:block;font-weight:500;font-size:15px}.class-card span{display:block;font-size:10px;color:var(--muted);margin-top:12px}.class-card.active{border-color:#d7bd9380;background:#d7bd930b}.class-card.active b{color:var(--gold)}.invite-panel{display:flex;align-items:center;gap:14px}.invite-panel>span{font-size:10px;color:var(--muted)}.invite-panel b{font:19px var(--mono);color:var(--gold);letter-spacing:4px}.roster-tools{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:25px 0 20px}.roster-tools>label{flex:1;min-width:150px}.roster-tools input,.roster-tools select{padding:9px 12px;font-size:11px}.roster-tools .subtle{font-size:10px}.table-scroll{overflow:auto;width:100%}table{width:100%;border-collapse:collapse;min-width:720px;text-align:left}th{font-size:10px;color:#6f889d;font-weight:400;padding:13px 10px;border-bottom:1px solid var(--line);white-space:nowrap}td{font-size:11px;color:#abbfcd;padding:17px 10px;border-bottom:1px solid var(--line)}td input[type=checkbox],th input[type=checkbox]{width:14px;height:14px;accent-color:var(--gold)}.name-button{color:var(--text);font-size:12px;padding:0}.name-button:hover{color:var(--gold)}td small{font-size:9px;color:#6a849c;display:block;margin-top:5px}.mini-button{border:1px solid var(--line);color:var(--muted);font-size:9px;padding:6px 8px;border-radius:4px;margin-right:5px}.mini-button:hover{color:var(--gold);border-color:#d7bd9355}.mini-button.danger-text{color:var(--danger)}.table-progress{width:85px;height:3px;background:#243443;margin-top:8px}.table-progress i{display:block;height:100%;background:var(--teal)}.notice{padding:18px 22px;background:#d7bd9308;border:1px solid #d7bd9328;border-radius:5px;color:#bca98b;font-size:12px;line-height:1.9;margin-bottom:28px}.course-group{margin:28px 0}.course-group>h2{font-size:17px;color:var(--gold);margin-bottom:18px}.course-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.course-item{display:flex;align-items:center;gap:16px;padding:18px;border:1px solid var(--line);background:var(--panel);border-radius:5px}.course-number{font:18px var(--mono);color:#6c839a}.course-item>div{flex:1}.course-item h3{font-size:13px;margin:0 0 8px}.course-item small{font-size:9px;color:var(--muted)}.publish-label{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:9px;color:var(--muted)}.publish-label input{appearance:none;width:33px;height:19px;border-radius:12px;background:#2a3745;border:0;position:relative;padding:0;cursor:pointer}.publish-label input:before{content:'';width:13px;height:13px;position:absolute;left:3px;top:3px;background:#afbbc3;border-radius:50%;transition:left .15s}.publish-label input:checked{background:#668b83}.publish-label input:checked:before{left:17px;background:#d5eee7}.work-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.work-card{padding:25px;border:1px solid var(--line);border-radius:6px;background:var(--panel);text-align:left}.work-card .eyebrow{font-size:8px}.work-card h3{font-size:17px;margin:12px 0}.work-card p{font-size:11px;color:var(--muted);line-height:1.8}.work-card>div{display:flex;justify-content:space-between;font-size:10px;color:var(--gold);border-top:1px solid var(--line);padding-top:15px}.student-dialog{max-width:min(1000px,calc(100vw - 30px))}.work-dialog{max-width:min(850px,calc(100vw - 30px))}.detail-tabs{display:flex;gap:7px;border-bottom:1px solid var(--line);margin:25px 0 20px;overflow:auto;padding-bottom:12px}.detail-tabs button{font-size:11px;padding:9px 13px;border:1px solid var(--line);border-radius:4px;white-space:nowrap;color:var(--muted)}.detail-tabs button.active{color:var(--gold);border-color:#d7bd9370}.detail-meta{color:var(--muted);font-size:11px}.detail-section details{padding:15px 0;border-bottom:1px solid var(--line)}.detail-section summary{font-size:12px;cursor:pointer;line-height:1.8;color:#b7c9d7}.detail-section summary .passed{color:var(--teal)}.detail-section summary .failed{color:var(--danger)}.code-snapshot{background:#060f1a;padding:18px;border:1px solid var(--line);border-radius:4px;white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.8 var(--mono);max-height:370px;overflow:auto}.snapshot-title{font-size:10px;color:var(--gold);margin:20px 0 10px}.snapshot-error{color:var(--danger)}.detail-section .history-row{font-size:12px}.detail-section p{color:var(--muted);font-size:11px}.student-progress-row{padding:15px 0;border-bottom:1px solid var(--line)}.student-progress-row h3{font-size:13px;margin:0 0 10px}.stage-chips{display:flex;gap:8px;flex-wrap:wrap}.stage-chips span{font-size:9px;padding:6px 8px;border:1px solid var(--line);border-radius:3px;color:var(--muted)}.stage-chips span.done{color:var(--teal);border-color:#83c6c744}.work-reflection{font-size:12px;line-height:1.9;white-space:pre-wrap;color:#bacbd6;border-left:2px solid var(--gold);padding:7px 16px;margin:22px 0}.work-dialog textarea{display:block;width:100%;margin-top:10px;font-size:12px;line-height:1.8}.work-dialog form{margin-top:28px}@media(max-width:1150px){.admin{grid-template-columns:205px minmax(0,1fr)}.admin-side{padding:25px 16px}.admin-main{padding:28px 3% 60px}.admin-header-actions .subtle{display:none}.overview-grid{grid-template-columns:1fr}.section-tools{align-items:flex-start;flex-direction:column}.course-grid{grid-template-columns:1fr}.teacher-banner h2{font-size:18px}.teacher-banner{padding:24px}.teacher-banner>span{font-size:55px}.report-stat b{font-size:25px}}@media(max-width:780px){.admin{display:block}.admin-side{height:auto;position:static;padding:18px 20px;border-right:0;border-bottom:1px solid var(--line)}.admin-side>.eyebrow,.admin-side-note{display:none}.admin-side nav{flex-direction:row;gap:4px;margin-top:20px;overflow:auto}.admin-nav{white-space:nowrap;font-size:11px;padding:10px;flex:1}.admin-nav small{display:none}.admin-nav>span{font-size:14px;width:16px}.side-foot{flex-direction:row;align-items:center;gap:20px;margin:16px 0 0;padding:13px 0 0;font-size:10px}.side-foot button{margin-left:auto}.side-foot button:last-child{margin-left:0}.admin-main{padding:26px 20px 50px}.admin-header h1{font-size:25px}.admin-header-actions{gap:10px}.admin-header-actions>a{display:none}.teacher-banner{padding:23px}.teacher-banner h2{font-size:18px;line-height:1.8}.teacher-banner>span{display:none}.teacher-banner p:last-child{font-size:10px}.admin .report-stats{grid-template-columns:repeat(2,1fr)}.work-grid{grid-template-columns:1fr}.class-card{min-width:140px;padding:17px}.roster-panel{padding:20px 15px}.invite-panel{gap:8px;flex-wrap:wrap;justify-content:flex-end}.invite-panel b{font-size:16px;letter-spacing:2px}.invite-panel>span{display:none}.panel-head{gap:12px}.teacher-login{grid-template-columns:1fr}.login-world{display:none}.login-form-wrap{max-width:480px;padding:45px 30px}.login-form-wrap .brand{margin-bottom:55px}.student-dialog{padding:30px 20px}.inline-form{width:100%}.inline-form input{flex:1;min-width:0}.detail-tabs button{padding:8px 9px;font-size:10px}}@media(max-width:420px){.admin-nav{font-size:10px;gap:4px;padding:9px 6px}.admin-nav>span{display:none}.admin .report-stat{padding:18px}.admin-header-actions .button{font-size:10px;padding:8px}.roster-tools .button{width:100%}.panel-head .small-badge{display:none}.teacher-banner h2{font-size:16px}}
