:root{--bg:#e6f5ff;--bg-deep:#c9ebff;--panel:#fff;--panel-soft:#f4fbff;--line:#d9e8f5;--text:#5c3317;--muted:#7b5c43;--blue:#4db6ff;--orange:#ffa800;--green:#4ebd74;--red:#ff8a9e}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{background:linear-gradient(180deg, var(--bg-deep), var(--bg));color:var(--text);font-family:Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.68}.login-page{align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:var(--panel);border-radius:18px;gap:14px;width:100%;max-width:380px;margin:0 auto;padding:28px;display:grid;box-shadow:0 18px 38px #417eb829}.login-card h1{margin-bottom:4px}.login-card .notice{margin-bottom:0}.login-hint{color:var(--muted);gap:4px;font-size:11px;display:grid}.console-shell{gap:14px;min-width:1040px;min-height:100vh;padding:14px;display:flex}.sidebar{background:#ffffffe0;border:1px solid #4db6ff2e;border-radius:16px;flex-direction:column;flex:0 0 176px;min-height:calc(100vh - 28px);padding:12px;display:flex}.school-select{background:var(--panel);white-space:nowrap;border-radius:12px;justify-content:space-between;align-items:center;margin-bottom:12px;padding:11px 12px;font-size:14px;display:flex}.nav-list{gap:7px;display:grid}.nav-button{color:#7b5c43;text-align:left;white-space:nowrap;background:0 0;border:0;border-radius:12px;padding:11px 12px;font-size:14px;font-weight:800}.nav-button.active{background:var(--blue);color:#fff}.nav-short{display:none}.sidebar-footer{color:var(--muted);gap:4px;font-size:11px;display:grid;overflow:hidden}.sidebar-account{border-top:1px solid #edf3f9;gap:8px;margin-top:auto;padding-top:10px;display:grid}.sidebar-user{color:var(--text);text-align:left;background:#f7fbff;border:1px solid #e2eef9;border-radius:12px;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:8px;padding:8px;display:grid}.sidebar-user strong,.sidebar-user small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.sidebar-user strong{font-size:13px}.sidebar-user small{color:var(--muted);margin-top:2px;font-size:11px}.sidebar-avatar{background:var(--blue);color:#fff;border-radius:10px;justify-content:center;align-items:center;width:34px;height:34px;font-size:14px;font-weight:900;display:flex}.sidebar-logout{color:#d7475f;background:#fff;border:1px solid #ffd0d8;border-radius:10px;height:34px;font-size:12px;font-weight:900}.main-panel{flex:1;min-width:0}.topbar{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.eyebrow{color:#3775af;letter-spacing:.08em;text-transform:uppercase;margin:0 0 3px;font-size:11px;font-weight:900}h1,h2,p{margin:0}h1{font-size:22px;line-height:1.15}h2{font-size:16px}.top-actions{gap:8px;display:flex}.top-actions button,.chip,.button-pair button,.review-actions button{border:1px solid var(--line);color:var(--blue);background:#fff;border-radius:999px;padding:8px 12px;font-size:12px;font-weight:800}.notice,.loading-card,.empty-state{color:#835f18;background:#fff8e9;border:1px solid #ffe0a6;border-radius:14px;margin-bottom:10px;padding:12px;font-size:13px;font-weight:700}.dashboard-grid{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.entry-card,.metric-card,.panel-card,.student-card,.submission-card{background:var(--panel);border:0;border-radius:16px;box-shadow:0 12px 28px #417eb81f}.entry-card{color:var(--text);flex-direction:column;align-items:center;gap:7px;min-height:112px;padding:16px;display:flex;position:relative}.entry-card small{color:var(--muted);font-size:11px}.entry-icon{color:#fff;border-radius:12px;justify-content:center;align-items:center;width:38px;height:38px;font-size:17px;font-weight:900;display:flex}.red{background:var(--red)}.orange{background:var(--orange)}.green{background:var(--green)}.blue{background:var(--blue)}.badge{background:var(--red);color:#fff;border:2px solid #fff;border-radius:999px;justify-content:center;align-items:center;min-width:24px;height:24px;font-size:11px;font-weight:900;display:flex;position:absolute;top:-7px;right:-6px}.metric-card{gap:3px;padding:13px;display:grid}.metric-card strong{color:var(--blue);font-size:24px}.metric-card span{color:var(--muted);font-size:12px}.split-layout,.settings-grid{grid-template-columns:minmax(300px,.85fr) minmax(420px,1.15fr);gap:12px;display:grid}.tasks-workbench{grid-template-columns:minmax(0,1fr);align-items:start;gap:12px;display:grid}.panel-card{padding:16px}.section-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.section-head span{color:var(--muted);font-size:12px}textarea,input{border:1px solid var(--line);color:var(--text);background:#f8fbff;border-radius:10px;outline:none;width:100%;transition:border-color .16s,box-shadow .16s,background .16s}textarea:focus,input:focus{background:#fff;border-color:#8fd4ff;box-shadow:0 0 0 3px #4db6ff24}textarea{resize:vertical;min-height:190px;padding:12px}input{height:36px;padding:0 11px}label{color:var(--muted);gap:5px;font-size:12px;font-weight:800;display:grid}.form-grid,.inline-form{grid-template-columns:1fr 1fr;gap:10px;margin-top:10px;display:grid}.primary-action,.inline-form button{background:var(--blue);color:#fff;border:0;border-radius:10px;height:38px;margin-top:10px;font-weight:900}.light-action{border:1px solid var(--line);color:var(--blue);background:#fff;border-radius:10px;height:34px;padding:0 12px;font-size:12px;font-weight:900}.custom-select{width:100%;position:relative}.custom-select-button{border:1px solid var(--line);color:var(--text);text-align:left;background:#f8fbff;border-radius:10px;justify-content:space-between;align-items:center;gap:10px;width:100%;min-width:0;height:36px;padding:0 11px;font-size:13px;font-weight:900;transition:border-color .16s,box-shadow .16s,background .16s;display:flex}.custom-select-button span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.custom-select-button i{opacity:.72;border-bottom:2px solid;border-right:2px solid;flex:none;width:7px;height:7px;transition:transform .16s;transform:rotate(45deg)translateY(-2px)}.custom-select.open .custom-select-button{background:#fff;border-color:#8fd4ff;box-shadow:0 0 0 3px #4db6ff24}.custom-select.open .custom-select-button i{transform:rotate(225deg)translate(-2px,-1px)}.custom-select.disabled .custom-select-button{color:#9aa8b4;background:#f1f5f9}.custom-select-menu{z-index:50;background:#fff;border:1px solid #d8e9f8;border-radius:12px;gap:4px;max-height:220px;padding:6px;display:grid;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow:auto;box-shadow:0 16px 30px #417eb82e}.custom-select-menu button{color:var(--text);text-align:left;background:0 0;border:0;border-radius:8px;min-height:32px;padding:0 9px;font-size:13px;font-weight:900}.custom-select-menu button:hover,.custom-select-menu button.active{color:#1388d0;background:#eaf7ff}.toggle-control{border:1px solid var(--line);color:var(--muted);background:#f8fbff;border-radius:999px;justify-content:flex-start;align-self:end;align-items:center;gap:8px;width:100%;height:36px;padding:0 12px 0 6px;font-size:12px;font-weight:900;display:inline-flex}.toggle-control.checked{color:#23753d;background:#ebfff0;border-color:#bfe7c8}.toggle-control:disabled{color:#9aa8b4;background:#f1f5f9}.toggle-knob{background:#c9d8e6;border-radius:999px;width:40px;height:22px;position:relative}.toggle-knob:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .16s;position:absolute;top:2px;left:2px;box-shadow:0 2px 5px #417eb838}.toggle-control.checked .toggle-knob{background:var(--green)}.toggle-control.checked .toggle-knob:after{transform:translate(18px)}.datetime-text-field{grid-template-columns:minmax(0,1fr) 58px;gap:6px;display:grid;position:relative}.datetime-text-field input{letter-spacing:0;font-weight:900}.datetime-picker-trigger{color:var(--blue);cursor:pointer;background:#eef8ff;border:1px solid #bfe5ff;border-radius:10px;min-height:34px;padding:0 10px;font-size:12px;font-weight:900}.datetime-picker-panel{z-index:30;background:#fff;border:1px solid #d7e9f8;border-radius:12px;gap:10px;min-width:min(520px,100vw - 48px);padding:12px;display:grid;position:absolute;top:calc(100% + 8px);left:0;box-shadow:0 14px 30px #457fb42e}.datetime-picker-grid{grid-template-columns:1.05fr .82fr .82fr .82fr .82fr;gap:8px;display:grid}.datetime-picker-grid .custom-select-button{min-height:34px;padding:0 10px}.datetime-picker-grid .custom-select-menu{max-height:190px;overflow:auto}.datetime-quick-row{flex-wrap:wrap;gap:8px;display:flex}.datetime-quick-row button{color:var(--text);cursor:pointer;background:#f7fbff;border:1px solid #dcebf7;border-radius:999px;min-height:30px;padding:0 12px;font-size:12px;font-weight:900}.datetime-quick-row button:hover,.datetime-picker-trigger:hover{border-color:var(--blue);color:var(--blue)}.ocr-upload{color:var(--blue);cursor:pointer;background:#eef8ff;border:1px solid #bfe5ff;border-radius:10px;flex:none;justify-content:center;align-items:center;gap:6px;min-width:92px;height:34px;padding:0 12px;font-size:12px;font-weight:900;display:inline-flex}.ocr-upload input{display:none}.ocr-upload.loading{cursor:wait}.ocr-upload.loading:before{border:2px solid #4db6ff38;border-top-color:var(--blue);content:"";border-radius:999px;width:12px;height:12px;animation:.78s linear infinite spin}.ocr-status{color:var(--muted);margin-top:8px;font-size:12px;font-weight:800}.confirm-overlay{z-index:90;background:#14253685;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.confirm-card{background:#fff;border:1px solid #d8e9f8;border-radius:16px;gap:18px;width:min(430px,100vw - 48px);max-width:430px;padding:20px;display:grid;box-shadow:0 22px 46px #1425363d}.confirm-card h2{margin-top:3px;font-size:18px}.confirm-card span{color:var(--muted);margin-top:8px;font-size:13px;font-weight:800;line-height:1.55;display:block}.confirm-actions{justify-content:flex-end;gap:10px;display:flex}.confirm-actions button{border:1px solid var(--line);color:var(--text);background:#f6fbff;border-radius:10px;min-width:86px;height:38px;padding:0 16px;font-size:13px;font-weight:900}.confirm-actions button:last-child{background:var(--blue);border-color:var(--blue);color:#fff}.confirm-actions button.danger{color:#d7475f;background:#fff0f2;border-color:#ffd0d8}.pager{justify-content:flex-end;align-items:center;gap:8px;margin-top:12px;display:flex}.pager button{border:1px solid var(--line);color:var(--blue);background:#fff;border-radius:999px;height:32px;padding:0 12px;font-size:12px;font-weight:900}.pager span{color:var(--muted);text-align:center;min-width:48px;font-size:12px;font-weight:900}.inline-form{grid-template-columns:minmax(180px,1fr) 110px;margin-bottom:12px}.inline-form button{margin-top:0}.class-form{grid-template-columns:minmax(180px,1fr) 110px;gap:10px;max-width:420px;margin-bottom:10px;display:grid}.class-form button,.edit-actions button,.edit-student-button{background:var(--blue);color:#fff;border:0;border-radius:10px;padding:0 12px;font-size:12px;font-weight:900}.class-form button,.edit-actions button{min-height:36px}.responsive-table{display:grid}.table-row{border-top:1px solid #edf3f9;grid-template-columns:1.45fr .8fr .6fr .8fr;align-items:center;gap:10px;min-height:54px;padding:9px 0;display:grid}.table-head{color:var(--muted);border-top:0;min-height:32px;font-size:12px;font-weight:900}.table-row strong{font-size:14px;display:block}.table-row small{color:var(--muted);margin-top:3px;font-size:11px;display:block}.button-pair{flex-wrap:wrap;gap:6px;display:flex}.task-list-panel,.task-editor-panel{min-width:0}.task-stack{gap:8px;display:grid}.task-editor-modal{z-index:32;background:#1425368c;justify-content:center;align-items:center;padding:28px;display:flex;position:fixed;inset:0}.task-editor-modal-card{background:#fff;border-radius:14px;width:min(900px,100vw - 56px);max-height:calc(100vh - 56px);padding:16px;display:grid;overflow:auto;box-shadow:0 18px 42px #1425363d}.task-modal-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.task-row{background:#fbfdff;border:1px solid #edf3f9;border-radius:12px;grid-template-columns:minmax(0,1fr) minmax(140px,.18fr) auto;gap:9px;min-height:72px;padding:11px 12px;display:grid}.task-row.active{border-color:var(--blue);box-shadow:0 0 0 2px #4db6ff1f}.task-row-main,.task-row-meta{min-width:0}.task-row-main strong,.task-row-main span,.task-row-meta span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.task-row-main strong{font-size:14px}.task-row-main span,.task-row-meta span{color:var(--muted);margin-top:4px;font-size:11px;font-weight:800}.task-row-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;min-width:188px;display:flex}.task-row-actions button{border:1px solid var(--line);color:var(--blue);background:#fff;border-radius:999px;height:32px;padding:0 10px;font-size:12px;font-weight:900}.status-chip{color:#607080;white-space:nowrap;background:#f1f5f9;border:1px solid #dbe5ef;border-radius:999px;justify-content:center;align-items:center;height:28px;padding:0 10px;font-size:11px;font-weight:900;display:inline-flex}.status-chip.published{color:#21804b;background:#ecfdf3;border-color:#bcebc9}.status-chip.draft{color:#a96a00;background:#fff8e8;border-color:#f4dc9c}.status-chip.archived{color:#708092;background:#f1f5f9}.compact-editor{width:min(760px,100vw - 56px)}.editor-form-grid{align-items:start}.wide-editor-field{grid-column:1/-1}.wide-editor-field textarea{min-height:82px}.form-note{color:var(--muted);margin-top:12px;font-size:12px;font-weight:800;line-height:1.5;display:block}.activity-list{gap:8px;display:grid}.activity-row{background:#fbfdff;border:1px solid #edf3f9;border-radius:12px;grid-template-columns:minmax(0,1fr) minmax(230px,.52fr) auto;gap:12px;padding:12px;display:grid}.activity-row-main,.activity-row-meta{min-width:0}.activity-row-title{align-items:center;gap:8px;display:flex}.activity-row-title strong{font-size:14px}.activity-row-main>span,.activity-row-meta span{color:var(--muted);margin-top:5px;font-size:11px;font-weight:800;line-height:1.45;display:block}.activity-task-tags{flex-wrap:wrap;gap:5px;margin-top:8px;display:flex}.activity-task-tags span{color:#277cab;text-overflow:ellipsis;white-space:nowrap;background:#edf8ff;border:1px solid #cfeafd;border-radius:8px;max-width:240px;padding:4px 7px;font-size:11px;font-weight:800;overflow:hidden}.activity-task-picker{border-top:1px solid #e9f0f6;gap:10px;margin-top:14px;padding-top:14px;display:grid}.activity-task-picker>div:first-child{gap:3px;display:grid}.activity-task-picker strong{font-size:13px}.activity-task-picker>div:first-child span{color:var(--muted);font-size:11px;font-weight:800}.activity-task-option-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;display:grid}.activity-task-option-grid button{color:var(--text);text-align:left;background:#fbfdff;border:1px solid #e2edf6;border-radius:9px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:5px;min-height:42px;padding:8px 9px;display:grid}.activity-task-option-grid button b{color:var(--blue);background:#eef8ff;border-radius:6px;padding:3px 5px;font-size:10px}.activity-task-option-grid button span{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:900;overflow:hidden}.activity-task-option-grid button.selected{background:#edf8ff;border-color:#75c9f7;box-shadow:0 0 0 2px #4db6ff1f}.task-textarea{min-height:260px;line-height:1.42}.task-textarea:disabled{color:#5c3317b8;cursor:wait}.task-textarea-shell{gap:10px;display:grid;position:relative}.task-title-field{color:var(--text);gap:7px;font-size:12px;font-weight:900;display:grid}.task-title-field input{border:1px solid var(--line);color:var(--text);font:inherit;background:#f7fbff;border-radius:10px;outline:none;height:42px;padding:0 12px}.task-title-field input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #4db6ff24}.task-textarea-shell.recognizing .task-textarea{border-color:#bfe5ff;box-shadow:inset 0 0 0 1px #4db6ff1f}.ocr-textarea-overlay{color:var(--blue);pointer-events:none;background:#f8fbffb8;border-radius:10px;justify-content:center;align-items:center;gap:8px;font-size:13px;font-weight:900;display:flex;position:absolute;inset:1px}.ocr-textarea-overlay span{border:3px solid #4db6ff2e;border-top-color:var(--blue);border-radius:999px;width:22px;height:22px;animation:.78s linear infinite spin}.task-editor-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.task-editor-actions .primary-action{margin-top:0;padding:0 16px}.wordbook-layout{grid-template-columns:minmax(240px,.25fr) minmax(0,1fr);align-items:start;gap:12px;display:grid}.wordbook-sidebar,.wordbook-main{min-width:0}.wordbook-list{gap:8px;display:grid}.wordbook-row{color:var(--text);cursor:pointer;text-align:left;background:#fbfdff;border:1px solid #e4eef8;border-radius:12px;gap:4px;min-height:58px;padding:10px 12px;display:grid}.wordbook-row.active{border-color:var(--blue);background:#eaf7ff;box-shadow:0 0 0 2px #4db6ff1f}.wordbook-row strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.wordbook-row span{color:var(--muted);font-size:11px;font-weight:850}.wordbook-create-form{border-top:1px solid #eef3f8;margin-top:14px;padding-top:14px}.wordbook-actions{flex-wrap:wrap;gap:8px;display:flex}.light-action.danger{color:#d9465f;border-color:#ffd6dd}.wordbook-tools{grid-template-columns:minmax(280px,.9fr) minmax(320px,1.1fr);gap:12px;margin-bottom:14px;display:grid}.wordbook-import,.wordbook-add-form{background:#fbfdff;border:1px solid #e4eef8;border-radius:12px;gap:10px;padding:12px;display:grid}.wordbook-import textarea{min-height:128px}.wordbook-add-form{grid-template-columns:1fr 1fr;align-content:start}.wordbook-add-form label:last-of-type{grid-column:1/-1}.word-item-list{gap:8px;display:grid}.word-item-row{background:#fbfdff;border:1px solid #e8f0f8;border-radius:12px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;min-height:58px;padding:10px 12px;display:grid}.word-item-main{grid-template-columns:minmax(120px,.25fr) minmax(90px,.2fr) minmax(0,1fr);align-items:baseline;gap:4px 10px;min-width:0;display:grid}.word-item-main strong{color:var(--text);font-size:15px}.word-item-main span,.word-item-main small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:850;overflow:hidden}.word-item-actions{gap:6px;display:flex}.word-item-actions button,.word-item-edit button{border:1px solid var(--line);color:var(--blue);cursor:pointer;background:#fff;border-radius:999px;height:32px;padding:0 10px;font-size:12px;font-weight:900}.word-item-actions button.danger{color:#d9465f;border-color:#ffd6dd}.word-item-edit{grid-column:1/-1;grid-template-columns:minmax(110px,.25fr) minmax(100px,.2fr) minmax(160px,1fr) auto auto;gap:8px;display:grid}@keyframes spin{to{transform:rotate(360deg)}}.chip-row{flex-wrap:wrap;gap:7px;display:flex}.chip.active{background:var(--blue);color:#fff}.students-layout,.codes-layout{grid-template-columns:260px minmax(0,1fr);align-items:start;gap:14px;display:grid}.student-controls,.code-sidebar{gap:12px;display:grid}.section-head.stacked{align-items:flex-start;margin-bottom:0}.class-list{gap:8px;display:grid}.class-row{color:var(--text);text-align:left;background:#f7fbff;border:1px solid #e2eef9;border-radius:10px;justify-content:space-between;align-items:center;min-height:38px;padding:0 10px;font-size:13px;font-weight:900;display:flex}.class-row.active{background:var(--blue);border-color:var(--blue);color:#fff}.class-row span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.class-row strong{font-size:12px}.stack-form{border-top:1px solid #edf3f9;gap:8px;padding-top:12px;display:grid}.stack-form button{background:var(--blue);color:#fff;border:0;border-radius:10px;height:36px;font-size:12px;font-weight:900}.bind-note{color:#835f18;background:#fff8e9;border:1px solid #ffe0a6;border-radius:10px;gap:4px;padding:10px;font-size:12px;font-weight:800;display:grid}.bind-note strong{font-size:13px}.students-main,.codes-main{gap:12px;min-width:0;display:grid}.code-create-grid{grid-template-columns:repeat(2,minmax(280px,1fr));gap:12px;display:grid}.code-manager-card{gap:12px;display:grid}.code-manager-card label{max-width:220px}.code-manager-card.extension-card{background:#f8fff9;border-color:#dceee1}.code-actions{flex-wrap:wrap;gap:8px;display:flex}.code-actions button{color:#fff;background:#ffb21f;border:0;border-radius:9px;height:34px;padding:0 12px;font-weight:900}.code-list-grid{grid-template-columns:repeat(2,minmax(300px,1fr));gap:12px;display:grid}.code-list-panel{min-width:0}.managed-code-list{gap:8px;display:grid}.managed-code-row{background:#fff8e9;border:1px solid #ffe0a6;border-radius:10px;grid-template-columns:112px 72px minmax(90px,.8fr) minmax(150px,1fr) 46px 58px;align-items:center;gap:10px;min-height:52px;padding:9px 10px;display:grid}.managed-code-row strong{color:#9b5a00;letter-spacing:1px;font-size:16px}.managed-code-row span,.managed-code-row small,.managed-code-row em{color:#9b5a00;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-style:normal;font-weight:800;overflow:hidden}.managed-code-row.extension-code{background:#ebfff0;border-color:#cdeed4}.managed-code-row.extension-code strong,.managed-code-row.extension-code span,.managed-code-row.extension-code small,.managed-code-row.extension-code em{color:#23753d}.managed-code-row button{color:#9b5a00;background:#fff;border:1px solid;border-radius:8px;height:30px;font-size:11px;font-weight:900}.managed-code-row.extension-code button{color:#23753d}.inline-empty{margin:0}.student-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:10px;display:grid}.students-table-panel{min-width:0}.student-list{gap:8px;display:grid}.student-row{background:#fbfdff;border:1px solid #edf3f9;border-radius:12px;grid-template-columns:38px minmax(130px,.8fr) minmax(260px,1fr) minmax(220px,.9fr) 58px;align-items:center;gap:12px;min-height:72px;padding:10px 12px;display:grid}.student-row.expired{background:#fff8f8;border-color:#ffd0d8}.student-main-info,.student-code-info,.student-status{min-width:0}.student-main-info strong,.student-main-info span,.student-status span,.student-status em{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.student-main-info strong{color:var(--text);font-size:14px}.student-main-info span,.student-status span,.student-status em{color:var(--muted);margin-top:3px;font-size:11px;font-style:normal}.student-card{grid-template-columns:38px minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:12px;display:grid}.avatar,.teacher-avatar{color:var(--blue);background:#dff0ff;border-radius:11px;justify-content:center;align-items:center;width:38px;height:38px;font-weight:900;display:flex;overflow:hidden}.student-avatar img{object-fit:cover;width:100%;height:100%;display:block}.student-avatar span{display:block}.student-avatar.has-image{background:#fff;border:1px solid #d7e9f8}.student-card strong{font-size:14px;display:block}.student-card span,.student-card em{color:var(--muted);font-size:11px;font-style:normal;display:block}.student-card code,.student-row code{color:#9b5a00;background:#fff6dc;border:1px solid #ffe1a6;border-radius:7px;margin-top:5px;padding:3px 7px;font-family:inherit;font-size:11px;font-weight:900;display:inline-block}.student-card code+code,.student-row code+code{margin-left:6px}.expired-code{color:#d7475f!important;background:#fff0f2!important;border-color:#ffd0d8!important}.edit-student-button{min-height:32px}.student-edit-form{grid-column:2/-1;grid-template-columns:repeat(2,minmax(120px,1fr));align-items:end;gap:8px;display:grid}.student-edit-field{color:var(--muted);font-size:11px}.edit-actions{gap:8px;display:flex}.review-workbench{grid-template-columns:260px minmax(0,1fr);align-items:start;gap:14px;display:grid}.review-task-panel,.review-detail-panel{min-width:0}.review-task-list{gap:8px;display:grid}.review-task{color:var(--text);text-align:left;background:#f7fbff;border:1px solid #e2eef9;border-radius:10px;gap:4px;min-height:58px;padding:10px;display:grid}.review-task.active{background:var(--blue);border-color:var(--blue);color:#fff}.review-task strong,.review-task span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.review-task strong{font-size:13px}.review-task span{color:inherit;opacity:.82;font-size:11px;font-weight:800}.submission-list{gap:10px;display:grid}.submission-card{background:#fbfdff;border:1px solid #edf3f9;border-radius:12px;grid-template-columns:minmax(200px,.8fr) minmax(260px,1fr) minmax(300px,1fr) 84px;align-items:center;gap:12px;min-height:78px;padding:12px;display:grid}.submission-meta{grid-template-columns:38px minmax(0,1fr);align-items:center;gap:10px;display:grid}.submission-meta strong,.submission-meta span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.submission-meta strong{font-size:14px}.submission-meta span{color:var(--muted);margin-top:3px;font-size:11px}.submission-content-preview{background:#f8fbff;border:1px solid #e4eef8;border-radius:10px;gap:3px;min-width:0;padding:9px 10px;display:grid}.submission-content-preview strong,.submission-content-preview span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.submission-content-preview strong{color:var(--text);font-size:12px}.submission-content-preview span{color:var(--muted);font-size:11px;font-weight:800}.score-strip{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.score-strip span{text-align:center;background:#f4f9ff;border-radius:10px;margin:0;padding:8px}.score-strip strong{color:var(--blue);font-size:18px;display:block}.score-strip small{color:var(--muted);font-size:11px}.review-modal{z-index:30;background:#1425368c;justify-content:center;align-items:center;padding:32px;display:flex;position:fixed;inset:0}.review-modal-card{background:#fff;border-radius:14px;grid-template-columns:minmax(320px,.9fr) minmax(420px,1.1fr);gap:14px;width:min(1040px,100vw - 64px);max-height:calc(100vh - 64px);padding:14px;display:grid;box-shadow:0 18px 42px #1425363d}.review-modal-text{background:#f8fbff;border:1px solid #e4eef8;border-radius:12px;grid-template-rows:auto minmax(0,1fr) auto;gap:12px;min-height:0;padding:14px;display:grid}.review-modal-text p{color:var(--text);white-space:pre-wrap;margin:0;font-size:15px;font-weight:700;line-height:1.55;overflow:auto}.review-asr-text{background:#fff;border:1px solid #dcebf7;border-radius:10px;gap:6px;min-height:0;max-height:150px;padding:10px;display:grid;overflow:auto}.review-asr-text strong{color:var(--blue);font-size:12px}.review-asr-text p{font-size:13px}.content-library-layout,.ai-access-layout{grid-template-columns:minmax(250px,310px) minmax(0,1fr);align-items:start;gap:16px;display:grid}.content-library-main,.ai-access-layout{min-width:0}.content-library-main{gap:16px;display:grid}.content-collection-panel,.content-import-panel,.content-unit-panel,.ai-key-panel,.ai-log-panel{padding:20px}.content-collection-list,.content-document-list,.content-unit-grid,.api-key-list,.api-log-list{gap:9px;display:grid}.content-collection-row,.content-document-row,.content-unit-row,.api-key-row,.api-log-row{box-sizing:border-box;color:#604631;text-align:left;background:#f8fbff;border:1px solid #e2edf8;border-radius:7px;align-items:center;gap:8px;min-width:0;padding:12px 14px;display:grid}.content-collection-row{width:100%}.content-collection-row.active{background:#e9f6ff;border-color:#4cafee}.content-collection-row strong,.content-document-row strong,.content-unit-row strong,.api-key-row strong,.api-log-row strong{color:#5a3419;font-size:14px}.content-collection-row span,.content-document-row span,.content-unit-row small,.api-key-row span,.api-log-row span,.api-log-row small{color:#8a7564;overflow-wrap:anywhere;font-size:12px;line-height:1.35}.content-create-form,.api-key-create{gap:9px;margin-top:16px;display:grid}.content-create-form textarea{resize:vertical;min-height:66px}.content-document-row{grid-template-columns:minmax(0,1fr) auto}.content-document-row>div:first-child,.api-key-row>div:first-child{gap:4px;min-width:0;display:grid}.content-document-actions{align-items:center;gap:8px;display:flex}.content-document-actions button,.light-action,.task-row-actions button{white-space:nowrap}.task-audio-upload{color:#2488d5;cursor:pointer;white-space:nowrap;background:#eef8ff;border:1px solid #cfe7fa;border-radius:999px;align-items:center;min-height:31px;padding:0 11px;font-size:12px;font-weight:800;display:inline-flex}.task-audio-upload input{opacity:0;width:1px;height:1px;position:absolute}.content-unit-row{grid-template-columns:34px minmax(0,1fr) auto}.content-unit-row>div{gap:4px;min-width:0;display:grid}.unit-type,.status-chip{box-sizing:border-box;white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;min-height:25px;padding:3px 8px;font-size:11px;font-weight:800;display:inline-flex}.unit-type{color:#2589d7;background:#e8f3ff}.unit-type.word{color:#4e8a30;background:#eff8e9}.unit-type.phrase{color:#b37515;background:#fff5df}.unit-type.sentence{color:#8a50b4;background:#f7edff}.unit-type.passage{color:#287f74;background:#e7f8f5}.status-chip{color:#697989;background:#eef3f8}.status-chip.published{color:#338245;background:#e5f8e9}.status-chip.completed{color:#ab731a;background:#fff5df}.status-chip.failed{color:#c44558;background:#ffe8ec}.status-chip.queued,.status-chip.processing,.status-chip.draft{color:#2789d7;background:#e8f3ff}.ai-access-layout{grid-template-columns:minmax(320px,.85fr) minmax(0,1.15fr)}.api-key-reveal{background:#fff7e8;border:1px solid #ffd698;border-radius:7px;gap:7px;margin:14px 0;padding:12px;display:grid}.api-key-reveal strong{color:#a56a11;font-size:12px}.api-key-reveal code{color:#5d3d25;overflow-wrap:anywhere;font-size:12px}.api-key-row,.api-log-row{grid-template-columns:minmax(0,1fr) auto}.api-log-row small{grid-column:1/-1}@media (max-width:1040px){.content-library-layout,.ai-access-layout{grid-template-columns:1fr}}.review-modal-side{gap:12px;min-width:0;display:grid}.review-modal-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.review-modal-head>div{flex:1;min-width:0}.review-modal-head span{color:var(--muted);margin-top:3px;font-size:12px;font-weight:800;display:block}.review-modal-head button{border:1px solid var(--line);color:var(--blue);background:#fff;border-radius:10px;flex:none;height:34px;padding:0 14px;font-size:12px;font-weight:900}.review-modal-player,.review-modal-empty{aspect-ratio:16/9;color:#fff;background:#13212e;border-radius:10px;place-content:center;width:100%;max-height:calc(100vh - 260px);font-size:13px;font-weight:900;display:grid}.review-actions{gap:7px;display:grid}.status-badge{color:var(--text);letter-spacing:0;white-space:nowrap;background:#fff;border:1px solid #dce8f3;border-radius:10px;justify-content:center;align-items:center;gap:7px;height:28px;padding:0 9px;font-size:11px;font-weight:900;display:inline-flex;box-shadow:0 4px 12px #417eb80f}.status-badge i{border-radius:999px;flex:none;width:7px;height:7px}.status-badge span{color:inherit;font-size:inherit;font-weight:inherit;margin:0;display:inline}.status-badge.pending i{background:#d69216}.status-badge.approved i{background:#2fa866}.status-badge.rejected i{background:#d7475f}.review-actions .danger{color:var(--red)}.modal-score-strip{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.modal-score-strip span{text-align:center;background:#f4f9ff;border-radius:10px;padding:9px}.modal-score-strip strong{color:var(--blue);font-size:20px;display:block}.modal-score-strip small{color:var(--muted);font-size:11px}.modal-review-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.modal-review-actions button{background:var(--blue);color:#fff;border:0;border-radius:10px;height:38px;font-weight:900}.modal-review-actions .danger{color:#d7475f;background:#fff0f2}.queue-layout{gap:12px;display:grid}.queue-summary{grid-template-columns:repeat(4,minmax(140px,1fr));gap:10px;display:grid}.queue-summary-card{background:#fff;border-radius:12px;gap:5px;min-height:72px;padding:14px;display:grid;box-shadow:0 10px 22px #417eb81a}.queue-summary-card span{color:var(--muted);font-size:12px;font-weight:900}.queue-summary-card strong{color:var(--blue);font-size:24px}.queue-summary-card.running strong{color:#d69216}.queue-summary-card.queued strong{color:#3775af}.queue-summary-card.failed strong{color:#d7475f}.queue-panel{min-width:0}.queue-toolbar{grid-template-columns:repeat(2,minmax(180px,240px));gap:10px;margin-bottom:12px;display:grid}.queue-job-list{gap:8px;display:grid}.queue-job-row{background:#fbfdff;border:1px solid #edf3f9;border-radius:12px;grid-template-columns:minmax(220px,1fr) minmax(150px,.42fr) minmax(210px,.7fr) minmax(260px,.9fr);align-items:center;gap:12px;min-height:86px;padding:12px;display:grid}.queue-group-row{align-items:stretch}.queue-job-main{gap:5px;min-width:0;display:grid}.queue-stage-strip{flex-wrap:wrap;gap:5px;margin-top:2px;display:flex}.queue-stage{border-radius:999px;padding:4px 7px;font-size:10px;font-weight:900}.queue-stage.done{color:#23753d;background:#e9faef}.queue-stage.failed{color:#d7475f;background:#fff0f2}.queue-stage.running{color:#9b5a00;background:#fff7df}.queue-stage.queued{color:#3775af;background:#eaf6ff}.queue-job-title{align-items:center;gap:8px;min-width:0;display:flex}.queue-job-title strong,.queue-job-main>span,.queue-job-main small,.queue-job-main em,.queue-job-meta span,.queue-job-action span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.queue-job-title strong{color:var(--text);font-size:14px}.queue-job-main>span,.queue-job-main small,.queue-job-meta span{color:var(--muted);font-size:11px;font-weight:800}.queue-job-main small{color:#3775af;font-weight:900}.queue-job-main em{color:#d7475f;font-size:11px;font-style:normal;font-weight:900}.operation-status{border-radius:999px;flex:none;padding:4px 8px;font-size:11px;font-weight:900}.operation-status.done{color:#23753d;background:#e9faef}.operation-status.failed{color:#d7475f;background:#fff0f2}.operation-status.running{color:#9b5a00;background:#fff7df}.operation-status.queued{color:#3775af;background:#eaf6ff}.queue-progress{gap:5px;min-width:0;display:grid}.queue-progress>div{background:#eaf3fb;border-radius:999px;height:8px;overflow:hidden}.queue-progress>div span{background:var(--blue);height:100%;display:block}.queue-progress strong{color:var(--text);font-size:12px}.queue-job-meta{gap:3px;min-width:0;display:grid}.queue-job-action{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;min-width:0;display:grid}.queue-job-action span{color:#3775af;background:#f4f9ff;border:1px solid #e1eef8;border-radius:8px;padding:8px;font-size:11px;font-weight:900;display:inline-block}.queue-job-action button{white-space:nowrap;height:34px;padding:0 12px}.queue-detail-modal{z-index:35;background:#1425368c;justify-content:center;align-items:center;padding:28px;display:flex;position:fixed;inset:0}.queue-detail-card{background:#fff;border-radius:14px;gap:14px;width:min(900px,100vw - 56px);max-height:calc(100vh - 56px);padding:16px;display:grid;overflow:auto;box-shadow:0 18px 42px #1425363d}.queue-detail-head{border-bottom:1px solid #e8f1f9;justify-content:space-between;align-items:center;gap:14px;padding-bottom:12px;display:flex}.queue-detail-head h2{color:var(--text);margin:0;font-size:20px}.queue-detail-head span{color:var(--muted);margin-top:3px;font-size:12px;font-weight:800;display:block}.queue-detail-grid{grid-template-columns:repeat(5,minmax(120px,1fr));gap:10px;display:grid}.queue-detail-video{background:#13212e;border-radius:12px;place-content:center;min-height:220px;display:grid;overflow:hidden}.queue-detail-video video{aspect-ratio:16/9;background:#13212e;width:100%;max-height:360px;display:block}.queue-detail-video div{color:#fff;font-size:13px;font-weight:900}.queue-detail-field{background:#f7fbff;border:1px solid #e2edf7;border-radius:10px;gap:4px;min-width:0;padding:10px;display:grid}.queue-detail-field span{color:var(--muted);font-size:11px;font-weight:900}.queue-detail-field strong{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:900;overflow:hidden}.queue-detail-section{gap:7px;display:grid}.queue-detail-section>span{color:var(--muted);font-size:12px;font-weight:900}.queue-detail-section p,.queue-detail-section pre{color:var(--text);white-space:pre-wrap;word-break:break-word;background:#f7fbff;border:1px solid #e2edf7;border-radius:10px;max-height:220px;margin:0;padding:10px;font-size:12px;font-weight:800;line-height:1.5;overflow:auto}.queue-detail-section.error pre{color:#b8334a;background:#fff3f5;border-color:#ffd6dd}.queue-evaluation-panel{grid-template-columns:minmax(240px,.9fr) minmax(320px,1.1fr);gap:12px;display:grid}.queue-evaluation-text,.queue-evaluation-result{background:#fbfdff;border:1px solid #e2edf7;border-radius:12px;gap:10px;min-width:0;padding:12px;display:grid}.queue-evaluation-text>span,.queue-evaluation-headline span{color:var(--muted);font-size:12px;font-weight:900}.queue-evaluation-text p{color:var(--text);white-space:pre-wrap;word-break:break-word;background:#fff;border:1px solid #edf3f9;border-radius:10px;max-height:260px;margin:0;padding:12px;font-size:13px;font-weight:850;line-height:1.6;overflow:auto}.queue-evaluation-headline{justify-content:space-between;align-items:center;display:flex}.queue-evaluation-headline strong{color:#166534;background:#dcfce7;border-radius:999px;padding:6px 12px;font-size:12px;font-weight:900}.queue-evaluation-scores{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.queue-evaluation-scores span{text-align:center;background:#f0f7ff;border-radius:10px;gap:2px;padding:10px;display:grid}.queue-evaluation-scores strong{color:var(--blue);font-size:20px;font-weight:950;line-height:1}.queue-evaluation-scores small{color:var(--muted);font-size:11px;font-weight:900}.queue-word-list{flex-wrap:wrap;gap:8px;max-height:150px;display:flex;overflow:auto}.queue-word{background:#f7fbff;border:1px solid #dcebf7;border-radius:10px;gap:2px;min-width:86px;padding:8px 10px;display:grid}.queue-word strong{color:var(--text);font-size:13px;font-weight:950}.queue-word small{color:var(--muted);font-size:11px;font-weight:850}.queue-word em{color:var(--muted);font-size:10px;font-style:normal;font-weight:900}.queue-word.matched{background:#f0fdf4;border-color:#bbf7d0}.queue-word.missed,.queue-word.wrong,.queue-word.extra{background:#fff1f2;border-color:#fecdd3}.queue-word.empty{color:var(--muted);align-items:center;font-size:12px;font-weight:900;display:flex}.queue-raw-response{gap:8px;display:grid}.queue-raw-response summary{color:var(--blue);cursor:pointer;font-size:12px;font-weight:900}.queue-raw-response pre{color:var(--text);white-space:pre-wrap;word-break:break-word;background:#f7fbff;border:1px solid #e2edf7;border-radius:10px;max-height:180px;margin:0;padding:10px;font-size:11px;font-weight:800;line-height:1.5;overflow:auto}.queue-stage-detail-list{gap:8px;display:grid}.queue-stage-detail{background:#fbfdff;border:1px solid #edf3f9;border-radius:12px;gap:8px;padding:10px;display:grid}.queue-stage-detail>div{justify-content:space-between;align-items:center;gap:8px;display:flex}.queue-stage-detail strong{color:var(--text);font-size:13px}.queue-stage-detail small{color:var(--muted);font-size:11px;font-weight:900}.queue-stage-detail p,.queue-stage-detail pre{max-height:120px}.profile-card{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:220px;display:flex}.teacher-avatar{background:var(--blue);color:#fff;width:74px;height:74px;margin-bottom:14px;font-size:24px}.settings-list{display:grid}.settings-list div{border-top:1px solid #edf3f9;justify-content:space-between;padding:13px 0;font-size:13px;display:flex}.settings-list span{color:var(--muted)}.admin-users-panel{grid-column:1/-1}.admin-user-form{grid-template-columns:120px repeat(4,minmax(130px,1fr)) 140px;gap:10px;margin-bottom:12px;display:grid}.admin-user-form button,.admin-user-edit-form button,.admin-row-actions button{background:var(--blue);color:#fff;border:0;border-radius:10px;min-height:34px;padding:0 10px;font-size:12px;font-weight:900}.admin-user-list{display:grid}.admin-user-row{border-top:1px solid #edf3f9;grid-template-columns:minmax(120px,.8fr) minmax(180px,1fr) 70px 190px;align-items:center;gap:10px;min-height:52px;padding:8px 0;display:grid}.admin-user-row span,.admin-user-row em{color:var(--muted);font-size:12px;font-style:normal}.admin-user-edit-form{grid-column:1/-1;grid-template-columns:110px repeat(4,minmax(120px,1fr)) 88px 108px;gap:10px;display:grid}.admin-row-actions{gap:7px;display:flex}.system-lock{background:#fff8e9;border:1px solid #ffe0a6;border-radius:10px;align-items:center;min-height:34px;padding:0 10px;font-size:12px;font-weight:900;display:inline-flex;color:#835f18!important}.admin-row-actions .danger{color:#d7475f;background:#fff0f2}@media (max-width:820px){.console-shell{gap:8px;min-width:760px;padding:8px}.sidebar{flex-basis:84px;padding:8px}.sidebar-user{grid-template-columns:1fr;justify-items:center;padding:7px}.sidebar-user span:last-child,.sidebar-footer{display:none}.sidebar-logout{padding:0 6px;font-size:11px}.school-select{display:none}.nav-button{text-align:center;padding:9px 8px;font-size:12px}.nav-full{display:none}.nav-short{display:inline}.dashboard-grid{grid-template-columns:repeat(4,minmax(120px,1fr))}.split-layout,.settings-grid{grid-template-columns:280px 1fr}.task-row{grid-template-columns:minmax(0,1fr)}.task-row-actions{justify-content:flex-start}.students-layout,.codes-layout{grid-template-columns:220px minmax(520px,1fr)}.code-create-grid,.code-list-grid{grid-template-columns:1fr}.managed-code-row{grid-template-columns:104px 64px minmax(80px,.7fr) minmax(140px,1fr) 42px 54px}.student-row{grid-template-columns:38px minmax(110px,.7fr) minmax(220px,1fr) minmax(180px,.85fr) 58px}.student-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.submission-card{grid-template-columns:180px 220px minmax(240px,1fr) 82px}.review-workbench{grid-template-columns:220px minmax(620px,1fr)}.review-modal-card{grid-template-columns:minmax(280px,.95fr) minmax(360px,1.05fr);width:min(900px,100vw - 32px)}.queue-summary{grid-template-columns:repeat(4,minmax(110px,1fr))}.queue-job-row{grid-template-columns:minmax(220px,1fr) minmax(140px,.5fr)}.queue-job-action,.queue-job-meta{grid-column:1/-1}.queue-detail-grid{grid-template-columns:repeat(2,minmax(120px,1fr))}.queue-detail-video{min-height:180px}.queue-evaluation-panel{grid-template-columns:1fr}.queue-evaluation-scores{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-user-form{grid-template-columns:repeat(3,minmax(120px,1fr))}.admin-user-row{grid-template-columns:minmax(100px,.8fr) minmax(160px,1fr) 62px 180px}.admin-user-edit-form{grid-template-columns:repeat(3,minmax(120px,1fr))}}
