:root{--navy:#0d2740;--navy2:#173d60;--blue:#3474f3;--green:#20b479;--ink:#18222c;--muted:#758392;--line:#e5eaf0;--bg:#f5f7fa;font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink)}button,input,textarea{font:inherit}[hidden]{display:none!important}.login-screen{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(420px,.9fr);gap:7vw;align-items:center;padding:7vw 10vw;background:radial-gradient(circle at 12% 12%,rgba(52,116,243,.13),transparent 30%),radial-gradient(circle at 88% 86%,rgba(32,180,121,.08),transparent 25%),#f7f9fb}.brand-mark{width:68px;height:68px;border-radius:20px;display:grid;place-items:center;background:linear-gradient(145deg,#3c7cf8,#214eb1);color:#fff;font-weight:800;font-size:30px;box-shadow:0 18px 40px rgba(52,116,243,.22)}.brand-mark.mini{width:42px;height:42px;border-radius:13px;font-size:20px;box-shadow:none}.eyebrow{font-size:12px;letter-spacing:.15em;color:#718092;font-weight:800;margin:26px 0 14px}.eyebrow.dark{margin:0 0 7px;color:#8794a1}.login-copy h1{font-size:clamp(40px,5vw,66px);line-height:1.04;letter-spacing:-.05em;margin:0 0 22px}.lead{font-size:18px;line-height:1.8;color:#647385;max-width:640px}.login-principles{display:flex;gap:9px;flex-wrap:wrap;margin-top:30px}.login-principles span{border:1px solid #dfe5eb;background:rgba(255,255,255,.72);border-radius:999px;padding:8px 12px;font-size:12px;color:#607080}.login-card{width:min(460px,100%);justify-self:end;background:#fff;border:1px solid #e6ebef;border-radius:26px;padding:38px;box-shadow:0 28px 80px rgba(20,39,65,.11)}.test-chip{display:inline-block;background:#fff1d9;color:#966100;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:800}.login-card h2{font-size:28px;margin:16px 0 8px}.login-card>p{margin:0 0 26px;color:var(--muted);line-height:1.6}.login-card label{display:block;margin:17px 0}.login-card label span{display:block;font-size:13px;font-weight:800;margin-bottom:8px;color:#4d5d6d}.login-card input{width:100%;height:50px;border:1px solid #dbe2e9;border-radius:13px;padding:0 14px;outline:none;background:#fbfcfd}.login-card input:focus{border-color:#88a9f5;box-shadow:0 0 0 4px rgba(52,116,243,.08);background:#fff}.primary-btn{width:100%;height:52px;border:0;border-radius:13px;background:var(--blue);color:#fff;font-weight:800;display:flex;align-items:center;justify-content:space-between;padding:0 18px}.primary-btn:disabled{opacity:.6}.test-account{text-align:center;color:#94a0aa;font-size:12px;margin-top:18px}.form-error{background:#fff0f0;color:#b44040;border:1px solid #ffd0d0;padding:10px 12px;border-radius:10px;margin:12px 0;font-size:13px}.app-shell{min-height:100vh;display:grid;grid-template-columns:224px minmax(0,1fr)}.sidebar{position:fixed;inset:0 auto 0 0;width:224px;background:var(--navy);color:#fff;padding:24px 18px 18px;display:flex;flex-direction:column;z-index:20}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:0 6px 23px}.sidebar-brand strong{display:block;font-size:15px}.sidebar-brand span{display:block;font-size:10px;color:#9eb1c2;margin-top:4px}.new-chat-btn{height:44px;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.055);color:#fff;border-radius:11px;text-align:left;padding:0 14px;margin-bottom:22px}.sidebar nav{display:flex;flex-direction:column;gap:5px}.nav-item{height:44px;border:0;border-radius:10px;background:transparent;color:#aab9c7;display:grid;grid-template-columns:25px 1fr auto;align-items:center;text-align:left;padding:0 12px}.nav-item i{font-style:normal;text-align:center}.nav-item em{font-style:normal;font-size:10px;background:#284b6b;padding:2px 6px;border-radius:999px}.nav-item:hover{background:rgba(255,255,255,.055);color:#fff}.nav-item.active{background:#173d60;color:#fff}.workflow-status{margin-top:auto;border-top:1px solid rgba(255,255,255,.08);padding:18px 8px 16px;display:flex;gap:9px}.workflow-status>span,.identity-chip>span{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px rgba(32,180,121,.1)}.workflow-status strong{font-size:11px;display:block}.workflow-status small{font-size:9px;color:#8098ad;display:block;margin-top:4px}.account-box{position:relative;border-top:1px solid rgba(255,255,255,.08);padding:16px 4px 0;display:flex;align-items:center;gap:10px}.avatar{width:35px;height:35px;border-radius:11px;background:#edf4ff;color:#2d68df;display:grid;place-items:center;font-weight:800}.account-copy{min-width:0;flex:1}.account-copy strong{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.account-copy span{font-size:9px;color:#8ea5b9}.dots{border:0;background:transparent;color:#91a5b7}.account-menu{position:absolute;left:3px;right:3px;bottom:54px;background:#fff;border:1px solid #e7ebef;border-radius:12px;padding:7px;box-shadow:0 18px 45px rgba(0,0,0,.2)}.account-menu button{width:100%;border:0;background:transparent;border-radius:8px;text-align:left;padding:10px}.account-menu button:hover{background:#f4f6f8}.account-menu .danger{color:#d14c4c}main{grid-column:2;min-width:0;min-height:100vh}.topbar{height:82px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;background:rgba(255,255,255,.94);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.topbar h2{font-size:20px;margin:0}.identity-chip{display:flex;align-items:center;gap:9px;border:1px solid #e2eee7;background:#f4f8f5;border-radius:999px;padding:9px 12px;font-size:12px;font-weight:800;color:#526459}.page{display:none}.active-page{display:block}.workspace{height:calc(100vh - 82px);display:grid;grid-template-columns:minmax(0,1fr)}.chat-panel{display:grid;grid-template-rows:minmax(0,1fr) auto;background:#fff;min-width:0}.chat-messages{overflow:auto;padding:34px clamp(24px,5vw,70px) 22px;scroll-behavior:smooth}.message-row{display:flex;gap:12px;max-width:920px;margin:0 auto 22px}.message-row.user{justify-content:flex-end}.message-avatar{width:32px;height:32px;flex:0 0 32px;border-radius:10px;background:#edf4ff;color:#2866dc;display:grid;place-items:center;font-weight:800;font-size:13px}.message-bubble{max-width:min(760px,88%);border-radius:15px;padding:15px 17px;font-size:14px;line-height:1.72}.assistant-bubble{background:#f7f9fb;border:1px solid #e5eaef;border-top-left-radius:5px}.user-bubble{background:var(--blue);color:#fff;border-top-right-radius:5px;white-space:pre-wrap}.message-bubble p{margin:.2em 0 .9em}.message-bubble p:last-child{margin-bottom:.2em}.message-bubble pre{overflow:auto;background:#17212c;color:#edf3f7;padding:14px;border-radius:10px}.message-bubble blockquote{margin:12px 0;padding:8px 13px;border-left:3px solid #b6c9ef;background:#f2f6ff;color:#536374}.cap-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:16px}.cap-grid div{background:#fff;border:1px solid #e6ebef;border-radius:11px;padding:11px;display:grid;grid-template-columns:28px 1fr;column-gap:8px}.cap-grid b{grid-row:1/3;font-size:10px;color:#2d68df;padding-top:2px}.cap-grid strong{font-size:12px}.cap-grid small{font-size:10px;color:#8b97a3;margin-top:3px}.composer-wrap{padding:10px clamp(24px,5vw,70px) 18px;background:#fff}.composer{max-width:920px;margin:auto;border:1px solid #dbe2e9;border-radius:16px;padding:10px;box-shadow:0 9px 28px rgba(27,44,63,.06)}.composer:focus-within{border-color:#a5bdf2;box-shadow:0 0 0 4px rgba(52,116,243,.06),0 9px 28px rgba(27,44,63,.06)}.composer textarea{width:100%;border:0;outline:0;resize:none;max-height:150px;padding:6px 8px;line-height:1.6;color:#25313d}.composer-row{display:flex;align-items:center;justify-content:space-between;padding:3px 1px 0 8px}.composer-row>span{font-size:10px;color:#9ea8b2}.composer-row button{width:34px;height:34px;border:0;border-radius:10px;background:var(--blue);color:#fff;font-size:20px}.composer-row button:disabled{opacity:.45}.privacy-note{text-align:center;font-size:10px;color:#a0a9b2;margin:8px 0 0}.typing{display:flex;gap:4px;align-items:center;height:20px}.typing i{width:5px;height:5px;background:#8492a0;border-radius:50%;animation:b 1.2s infinite}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}@keyframes b{0%,70%,100%{transform:translateY(0);opacity:.4}35%{transform:translateY(-4px);opacity:1}}.context-rail{background:#f7f9fb;padding:18px;overflow:auto}.rail-card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:16px;margin-bottom:13px}.rail-card.subtle{background:#f2f6ff;border-color:#dfe8fd}.card-head{display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:800;margin-bottom:14px}.card-head em{font-style:normal;background:#eaf8f2;color:#168b5c;padding:5px 8px;border-radius:999px;font-size:10px}.agent-orbit{width:100px;height:100px;border-radius:50%;margin:8px auto 18px;padding:7px;background:conic-gradient(var(--blue) 0 300deg,#e7edf4 300deg)}.agent-orbit div{width:100%;height:100%;border-radius:50%;background:#fff;display:grid;place-content:center;text-align:center}.agent-orbit strong{font-size:18px}.agent-orbit span{font-size:10px;color:#7e8b98}.rail-card ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.rail-card li{display:flex;justify-content:space-between;font-size:11px;color:#778493}.rail-card li b{color:#40505f}.quick{width:100%;border:0;background:transparent;display:grid;grid-template-columns:34px 1fr;gap:9px;align-items:center;text-align:left;padding:9px 6px;border-radius:9px}.quick:hover{background:#f6f8fa}.quick i{width:30px;height:30px;border-radius:9px;background:#edf4ff;color:#2d68df;display:grid;place-items:center;font-style:normal;font-size:10px;font-weight:800}.quick b{display:block;font-size:11px}.quick small{display:block;font-size:9px;color:#97a2ad;margin-top:3px}.rail-card p{font-size:11px;line-height:1.7;color:#71808f;margin:0}.placeholder-page{height:calc(100vh - 82px);padding:48px}.placeholder-page.active-page{display:grid;place-items:center}.placeholder-card{width:min(520px,100%);background:#fff;border:1px solid var(--line);border-radius:22px;padding:48px;text-align:center;box-shadow:0 18px 50px rgba(20,39,65,.08)}.placeholder-card>div{width:54px;height:54px;border-radius:16px;background:#edf4ff;color:#2f6df6;display:grid;place-items:center;margin:0 auto 18px;font-size:24px}.placeholder-card h3{font-size:24px;margin:0 0 12px}.placeholder-card p{color:#798694;line-height:1.75}.placeholder-card button{border:1px solid #d7e0e7;background:#fff;border-radius:11px;padding:10px 16px;color:#4c5a67}@media(max-width:1050px){.workspace{grid-template-columns:minmax(0,1fr)}.context-rail{display:none}}@media(max-width:760px){.login-screen{grid-template-columns:1fr;padding:34px 22px;gap:34px}.login-card{justify-self:stretch;padding:28px}.app-shell{display:block}.sidebar{position:static;width:100%;height:auto;padding:12px 14px;display:flex;flex-direction:row;align-items:center;gap:12px}.sidebar-brand{padding:0}.sidebar-brand span,.new-chat-btn,.sidebar nav,.workflow-status,.account-copy{display:none}.account-box{margin-left:auto;border:0;padding:0}.account-menu{left:auto;right:0;top:45px;bottom:auto;width:150px}main{grid-column:auto}.topbar{height:70px;padding:0 16px}.workspace{height:calc(100vh - 70px)}.chat-messages{padding:22px 14px}.composer-wrap{padding:8px 12px 14px}.cap-grid{grid-template-columns:1fr}}

/* ===== 2026-08 学生端增强：固定布局 / 文件上传 / 密码安全 / 微交互 ===== */
html,body{height:100%;overflow:hidden}.login-screen{overflow:auto;height:100vh}.app-shell{height:100vh;min-height:0;overflow:hidden}.app-shell main{height:100vh;min-height:0;overflow:hidden}.topbar{position:relative;top:auto;flex:0 0 82px}.page{height:calc(100vh - 82px);min-height:0;overflow:hidden}.workspace{height:100%;min-height:0}.chat-panel{min-height:0;overflow:hidden}.chat-messages{min-height:0;overscroll-behavior:contain}.context-rail{min-height:0;overscroll-behavior:contain}.composer-wrap{position:relative;z-index:3;flex:0 0 auto}.sidebar{height:100vh;overflow:visible}.account-copy span{font-size:9px;color:#8ea5b9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;margin-top:3px}

button{cursor:pointer}.interactive-btn,.nav-item,.quick,.account-menu button,.placeholder-card button{transition:transform .15s ease,box-shadow .15s ease,background-color .15s ease,border-color .15s ease,color .15s ease,opacity .15s ease}.interactive-btn:not(:disabled):hover,.placeholder-card button:hover{transform:translateY(-1px)}.interactive-btn:not(:disabled):active,.placeholder-card button:active{transform:translateY(0) scale(.985)}.primary-btn:not(:disabled):hover{background:#2d69df;box-shadow:0 8px 22px rgba(52,116,243,.22)}.new-chat-btn:hover{background:rgba(255,255,255,.11);border-color:rgba(255,255,255,.28)}.dots:hover{background:rgba(255,255,255,.08);color:#fff}.composer-row button:not(:disabled):hover{box-shadow:0 6px 16px rgba(52,116,243,.23)}.quick:hover{transform:translateX(1px)}

.login-help{font-size:11px;color:#7f8b96;text-align:center;margin-top:14px;line-height:1.55}.test-account{margin-top:10px}.primary-btn.compact{width:auto;min-width:154px;padding:0 16px}.secondary-btn{height:48px;border:1px solid #d8e0e7;background:#fff;color:#52606d;border-radius:12px;padding:0 17px;font-weight:700}.secondary-btn:hover{background:#f6f8fa;border-color:#cbd5df}

.modal-backdrop{position:fixed;inset:0;background:rgba(9,27,45,.46);backdrop-filter:blur(8px);z-index:100;display:grid;place-items:center;padding:24px}.modal-card{width:min(470px,100%);background:#fff;border:1px solid #e5eaf0;border-radius:22px;padding:30px;box-shadow:0 30px 90px rgba(13,39,64,.25)}.modal-badge{display:inline-flex;background:#edf4ff;color:#2e68db;border-radius:999px;padding:6px 10px;font-size:11px;font-weight:800}.modal-card h3{font-size:24px;margin:15px 0 8px}.modal-card>p{font-size:13px;line-height:1.7;color:#718090;margin:0 0 20px}.modal-card label{display:block;margin:15px 0}.modal-card label span{display:block;font-size:12px;font-weight:800;color:#4f5f6e;margin-bottom:7px}.modal-card input{width:100%;height:48px;border:1px solid #dbe2e9;border-radius:12px;padding:0 13px;outline:0;background:#fbfcfd}.modal-card input:focus{border-color:#88a9f5;box-shadow:0 0 0 4px rgba(52,116,243,.08);background:#fff}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}

.composer{transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.composer.dragging{border-color:#6f9bf5;background:#f7faff;box-shadow:0 0 0 4px rgba(52,116,243,.08),0 10px 28px rgba(27,44,63,.07)}.composer-tools,.composer-send{display:flex;align-items:center;gap:8px}.composer-tools>span,.composer-send>span{font-size:10px;color:#9ea8b2}.attach-btn{width:31px!important;height:31px!important;border-radius:9px!important;background:#edf4ff!important;color:#2d68df!important;font-size:19px!important;font-weight:500;line-height:1}.attach-btn:hover{background:#dfebff!important}.composer-row{gap:12px}.composer-send{margin-left:auto}.composer-send #sendBtn{flex:0 0 34px}.upload-error{max-width:920px;margin:0 auto 8px;background:#fff2f2;color:#b44040;border:1px solid #ffd2d2;border-radius:10px;padding:8px 11px;font-size:11px;line-height:1.5}

.attachment-tray{max-width:920px;margin:0 auto 8px;display:flex;gap:8px;overflow-x:auto;padding:2px 1px 5px;scrollbar-width:thin}.attachment-card{position:relative;flex:0 0 auto;min-width:190px;max-width:260px;height:58px;border:1px solid #dfe6ed;background:#fff;border-radius:12px;display:grid;grid-template-columns:42px minmax(0,1fr) 24px;align-items:center;gap:9px;padding:7px 7px 7px 8px;box-shadow:0 4px 14px rgba(25,45,65,.04)}.attachment-thumb{width:42px;height:42px;border-radius:9px;background:#edf4ff;color:#2d68df;display:grid;place-items:center;font-size:10px;font-weight:900;overflow:hidden}.attachment-thumb img{width:100%;height:100%;object-fit:cover}.attachment-info{min-width:0}.attachment-name{display:block;font-size:11px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.attachment-meta{display:block;font-size:9px;color:#8d99a4;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.attachment-status.uploading{color:#2f6df6}.attachment-status.ready{color:#168b5c}.attachment-status.error{color:#c14d4d}.attachment-remove{width:24px;height:24px;border:0;background:transparent;border-radius:7px;color:#8e99a4;font-size:16px;display:grid;place-items:center}.attachment-remove:hover{background:#f1f4f7;color:#cf4e4e}.attachment-remove:disabled{opacity:.35;cursor:not-allowed}

.message-attachments{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.message-file{display:inline-flex;align-items:center;gap:6px;border:1px solid rgba(255,255,255,.26);background:rgba(255,255,255,.12);border-radius:9px;padding:5px 8px;font-size:10px;max-width:280px}.message-file span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.message-row.user .user-bubble.has-files{min-width:220px}

@media(max-width:760px){html,body{overflow:auto}.app-shell{height:auto;min-height:100vh;overflow:visible}.app-shell main{height:auto;min-height:0;overflow:visible}.page{height:calc(100vh - 70px);overflow:hidden}.sidebar{height:auto;overflow:visible}.composer-tools>span{display:none}.composer-send>span{display:none}.attachment-card{min-width:170px}.modal-card{padding:24px}.modal-actions{flex-direction:column-reverse}.modal-actions button{width:100%}.primary-btn.compact{width:100%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}

/* ===== 2026-08-20 统一登录 + 教师端骨架 ===== */
.teacher-course-chip{height:38px;border:1px solid rgba(255,255,255,.13);background:rgba(255,255,255,.05);border-radius:10px;display:flex;align-items:center;padding:0 12px;margin:0 0 18px;color:#b8c6d3;font-size:11px;font-weight:700}.teacher-avatar{background:#eef8f3;color:#168b5c}.teacher-dashboard-page{overflow:auto;background:#f5f7fa}.teacher-dashboard{padding:34px;max-width:1240px;margin:0 auto}.teacher-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;background:linear-gradient(135deg,#102f4b,#1d4b72);color:#fff;border-radius:22px;padding:30px 32px;box-shadow:0 20px 50px rgba(13,39,64,.14)}.teacher-kicker{font-size:10px;font-weight:900;letter-spacing:.16em;color:#9db7cc}.teacher-hero h1{font-size:30px;margin:10px 0 9px}.teacher-hero h1 strong{font-weight:900}.teacher-hero p{max-width:720px;margin:0;color:#b9cad8;line-height:1.7;font-size:13px}.teacher-stage-badge{flex:0 0 auto;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.13);border-radius:14px;padding:14px 16px;min-width:150px}.teacher-stage-badge b,.teacher-stage-badge span{display:block}.teacher-stage-badge b{font-size:11px;color:#8de0bd}.teacher-stage-badge span{margin-top:5px;font-size:13px;font-weight:800}.teacher-module-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:18px}.teacher-module-card{border:1px solid var(--line);background:#fff;border-radius:16px;padding:18px;display:grid;grid-template-columns:42px minmax(0,1fr) 20px;align-items:center;gap:13px;text-align:left;color:var(--ink);box-shadow:0 8px 24px rgba(23,48,74,.045);transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.teacher-module-card:hover{transform:translateY(-2px);border-color:#cfdcf1;box-shadow:0 14px 32px rgba(23,48,74,.08)}.teacher-module-card i{width:42px;height:42px;border-radius:12px;background:#edf4ff;color:#2e68db;display:grid;place-items:center;font-style:normal;font-weight:900}.teacher-module-card strong{display:block;font-size:14px}.teacher-module-card span{display:block;font-size:11px;line-height:1.6;color:#83909d;margin-top:4px}.teacher-module-card>b{color:#9aa7b3}.teacher-note-card{margin-top:14px;background:#fff;border:1px solid var(--line);border-left:4px solid #20b479;border-radius:14px;padding:17px 18px}.teacher-note-card strong{font-size:12px}.teacher-note-card p{font-size:11px;line-height:1.7;color:#74818e;margin:6px 0 0}.test-account code{background:#f3f6f8;border:1px solid #e4e9ed;border-radius:5px;padding:1px 5px;color:#42505e}
@media(max-width:900px){.teacher-module-grid{grid-template-columns:1fr}.teacher-hero{flex-direction:column}.teacher-stage-badge{min-width:0}.teacher-dashboard{padding:22px}}
@media(max-width:760px){.teacher-course-chip{display:none}.teacher-dashboard{padding:14px}.teacher-hero{padding:22px}.teacher-hero h1{font-size:24px}}

/* ===== 2026-08-20 教学任务基础闭环 ===== */
.task-page{overflow:auto;background:#f5f7fa}.task-page-inner{max-width:1120px;margin:0 auto;padding:30px 32px 44px}.section-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:18px}.section-heading h3{font-size:28px;margin:6px 0 8px}.section-heading p{margin:0;color:#7b8997;font-size:12px;line-height:1.7;max-width:700px}.section-kicker{font-size:9px;letter-spacing:.16em;font-weight:900;color:#6b83a0}.compact-btn{height:38px;padding:0 14px;font-size:11px;flex:0 0 auto}.task-summary{display:flex;gap:10px;margin:0 0 14px}.task-summary>div{min-width:120px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px}.task-summary strong{display:block;font-size:20px}.task-summary span{display:block;font-size:10px;color:#8a97a4;margin-top:3px}.task-list{display:flex;flex-direction:column;gap:9px}.task-row{width:100%;border:1px solid var(--line);background:#fff;border-radius:14px;padding:14px 15px;display:grid;grid-template-columns:58px minmax(0,1fr) auto 24px;gap:14px;align-items:center;text-align:left;color:var(--ink);box-shadow:0 5px 16px rgba(23,48,74,.035);transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}.task-row:hover{transform:translateY(-1px);border-color:#cbd9ef;box-shadow:0 10px 26px rgba(23,48,74,.07)}.task-type{display:inline-flex;align-items:center;justify-content:center;width:max-content;min-width:46px;height:25px;border-radius:999px;padding:0 9px;font-size:10px;font-weight:900}.task-type.assignment{background:#edf4ff;color:#2e68db}.task-type.experiment{background:#eef8f3;color:#168b5c}.task-main{min-width:0}.task-main strong{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-main small{display:block;font-size:10px;color:#8a97a4;margin-top:6px}.task-state{display:inline-flex;align-items:center;justify-content:center;height:26px;border-radius:999px;padding:0 10px;font-size:10px;font-weight:900;white-space:nowrap}.task-state.todo{background:#fff4df;color:#9a6800}.task-state.good{background:#eaf8f1;color:#16865b}.task-state.review{background:#f0ecff;color:#6d50bf}.task-state.danger{background:#fff0f0;color:#b94b4b}.task-state.large{height:30px;padding:0 12px}.task-arrow{color:#9aa8b5}.loading-card,.empty-task-card{background:#fff;border:1px dashed #d7dfe7;border-radius:14px;padding:26px;text-align:center;color:#81909e;font-size:12px}.empty-task-card b,.empty-task-card span{display:block}.empty-task-card b{color:#53616e;font-size:13px}.empty-task-card span{margin-top:6px;line-height:1.6}.error-card{border-color:#f1cccc;background:#fffafa}.text-back{border:0;background:transparent;color:#55718b;padding:4px 0 14px;font-size:12px;font-weight:800}.task-detail-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:24px;box-shadow:0 12px 34px rgba(23,48,74,.05)}.task-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding-bottom:20px;border-bottom:1px solid #edf0f3}.task-detail-head h3{font-size:25px;margin:10px 0 0}.task-meta-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:18px 0}.task-meta-grid>div{background:#f8fafc;border:1px solid #edf1f4;border-radius:12px;padding:13px}.task-meta-grid span,.task-meta-grid b,.task-meta-grid small{display:block}.task-meta-grid span{font-size:9px;color:#8c99a5}.task-meta-grid b{font-size:12px;margin-top:5px}.task-meta-grid small{font-size:9px;color:#9aa6b0;margin-top:4px}.task-content-section{margin-top:22px}.task-content-section>span{display:block;font-size:10px;font-weight:900;color:#687889;margin-bottom:9px}.task-requirements{border:1px solid #e7ecf0;border-radius:13px;background:#fbfcfd;padding:16px;font-size:13px;line-height:1.8;color:#40505f}.task-files{display:flex;flex-direction:column;gap:8px}.task-file-link{text-decoration:none;color:var(--ink);display:grid;grid-template-columns:38px minmax(0,1fr) 22px;align-items:center;gap:10px;border:1px solid #e4eaf0;border-radius:12px;padding:10px 12px;background:#fff}.task-file-link>span{width:38px;height:38px;border-radius:10px;background:#edf4ff;color:#2e68db;display:grid;place-items:center;font-size:9px;font-weight:900}.task-file-link b,.task-file-link small{display:block}.task-file-link b{font-size:11px}.task-file-link small{font-size:9px;color:#8c99a5;margin-top:4px}.task-file-link em{font-style:normal;color:#8796a4}.no-files{font-size:11px;color:#8b98a4;border:1px dashed #dbe2e8;padding:14px;border-radius:11px}.submission-placeholder{margin-top:22px;border:1px solid #dfe7f4;background:#f5f8ff;border-radius:13px;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:16px}.submission-placeholder b,.submission-placeholder span{display:block}.submission-placeholder b{font-size:12px}.submission-placeholder div>span{font-size:10px;color:#77889b;margin-top:5px;line-height:1.6}.construction-chip{flex:0 0 auto;background:#e7efff;color:#3768c9;border-radius:999px;padding:6px 9px;font-size:9px!important;font-weight:900}

.teacher-task-layout{height:100%;overflow:auto;display:grid;grid-template-columns:minmax(360px,440px) minmax(0,1fr);gap:18px;padding:26px 30px;background:#f5f7fa}.task-create-card,.teacher-task-list-panel{background:#fff;border:1px solid var(--line);border-radius:17px;padding:20px;align-self:start}.form-title>span{font-size:9px;letter-spacing:.15em;color:#6d84a0;font-weight:900}.form-title h3{font-size:22px;margin:6px 0 7px}.form-title p{font-size:11px;line-height:1.65;color:#81909d;margin:0 0 16px}.task-create-card label{display:block;margin:13px 0}.task-create-card label>span{display:block;font-size:10px;font-weight:900;color:#536270;margin-bottom:7px}.task-create-card input,.task-create-card textarea,.task-create-card select{width:100%;border:1px solid #dce3e9;border-radius:11px;background:#fbfcfd;outline:0;padding:10px 11px;color:#2f3c48}.task-create-card input,.task-create-card select{height:42px}.task-create-card textarea{resize:vertical;line-height:1.6;min-height:120px}.task-create-card input:focus,.task-create-card textarea:focus,.task-create-card select:focus{border-color:#91afea;box-shadow:0 0 0 3px rgba(52,116,243,.07);background:#fff}.task-create-card label small{display:block;font-size:9px;color:#929eaa;margin-top:6px;line-height:1.5}.fixed-type-chip{display:inline-flex;height:29px;align-items:center;border-radius:999px;background:#edf4ff;color:#2e68db;font-size:10px;font-weight:900;padding:0 12px}.two-col-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-footnote{font-size:9px;line-height:1.6;color:#9aa5af;margin:10px 0 0}.form-error.success{background:#edf9f3;border-color:#c9eedc;color:#157b54}.compact-heading h3{font-size:21px}.compact-heading p{max-width:520px}.teacher-task-list{display:flex;flex-direction:column;gap:9px}.teacher-task-item{border:1px solid #e4eaf0;border-radius:13px;padding:14px}.teacher-task-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.teacher-task-id{font-size:8px;color:#a0aab4}.teacher-task-item h4{font-size:13px;margin:11px 0 6px}.teacher-task-item>p{font-size:10px;color:#8996a2;margin:0}.teacher-task-stats{display:flex;gap:8px;margin-top:12px}.teacher-task-stats span{background:#f6f8fa;border-radius:8px;padding:6px 8px;font-size:9px;color:#7c8996}.teacher-task-stats b{color:#3a4a58;font-size:11px;margin-right:2px}

.teacher-agent-page{background:#f5f7fa;overflow:auto}.teacher-agent-shell{max-width:1000px;height:100%;margin:0 auto;padding:26px 30px;display:grid;grid-template-rows:auto minmax(0,1fr) auto}.teacher-agent-intro{padding:2px 2px 16px}.teacher-agent-intro>span{font-size:9px;letter-spacing:.16em;font-weight:900;color:#6c84a0}.teacher-agent-intro h3{font-size:26px;margin:6px 0 6px}.teacher-agent-intro p{font-size:11px;color:#7d8b98;line-height:1.65;margin:0}.teacher-chat-messages{min-height:0;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px 20px;box-shadow:0 9px 28px rgba(27,44,63,.04)}.teacher-composer{display:grid;grid-template-columns:minmax(0,1fr) 110px;gap:10px;padding-top:12px}.teacher-composer textarea{resize:none;border:1px solid #dbe2e9;border-radius:13px;padding:12px 13px;outline:0;line-height:1.6}.teacher-composer textarea:focus{border-color:#8daae7;box-shadow:0 0 0 3px rgba(52,116,243,.07)}.teacher-composer .primary-btn{height:auto;min-height:52px}.muted-inline{color:#8996a2;font-size:11px}

@media(max-width:980px){.teacher-task-layout{grid-template-columns:1fr}.task-create-card,.teacher-task-list-panel{align-self:auto}.task-page-inner{padding:22px}.teacher-agent-shell{padding:20px}.task-row{grid-template-columns:54px minmax(0,1fr) auto}.task-arrow{display:none}}
@media(max-width:760px){.task-page-inner{padding:14px}.task-row{grid-template-columns:48px minmax(0,1fr);gap:9px}.task-state{grid-column:2;justify-self:start}.task-meta-grid,.two-col-fields{grid-template-columns:1fr}.teacher-task-layout{padding:14px}.teacher-agent-shell{padding:14px}.teacher-composer{grid-template-columns:1fr}.teacher-composer .primary-btn{height:48px}.task-detail-head{flex-direction:column}.task-summary{flex-wrap:wrap}}

/* ===== 2026-08-20 v3：教师端精简、教师 Agent、班级发布与确认 ===== */
.teacher-chat-layout{height:100%;max-width:1120px;margin:0 auto;padding:24px 30px;background:#f5f7fa}
.teacher-chat-panel{height:100%;min-height:0;background:#fff;border:1px solid var(--line);border-radius:20px;display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;box-shadow:0 12px 34px rgba(23,48,74,.05)}
.teacher-agent-intro{padding:24px 28px 18px;border-bottom:1px solid #edf0f3;background:#fff}
.teacher-agent-intro>span{font-size:9px;letter-spacing:.16em;font-weight:900;color:#6c84a0}.teacher-agent-intro h3{font-size:25px;margin:6px 0}.teacher-agent-intro p{font-size:11px;color:#7d8b98;line-height:1.65;margin:0}
.teacher-chat-messages{min-height:0;overflow:auto;background:#fff;border:0;border-radius:0;padding:28px clamp(22px,4vw,58px) 18px;box-shadow:none}
.teacher-composer-wrap{padding:10px clamp(22px,4vw,58px) 20px;border-top:1px solid #f0f2f5;background:#fff}
.teacher-composer-box{max-width:920px;margin:0 auto;padding:10px;border:1px solid #dbe2e9;border-radius:16px;box-shadow:0 9px 28px rgba(27,44,63,.06)}
.teacher-composer-box textarea{width:100%;border:0;outline:0;resize:none;max-height:150px;padding:6px 8px;line-height:1.6;color:#25313d;background:transparent}
.teacher-composer-box .composer-row{padding:3px 1px 0 8px}.teacher-composer-box .composer-send #teacherSendBtn{flex:0 0 34px;width:34px;height:34px;border:0;border-radius:10px;background:var(--blue);color:#fff;font-size:20px}
.teacher-composer-box .composer-send #teacherSendBtn:hover{box-shadow:0 6px 16px rgba(52,116,243,.23)}

.pretty-file-picker{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center;border:1px solid #dce3e9;border-radius:12px;background:#fbfcfd;padding:9px}
.file-picker-btn{height:40px;border:1px solid #d7e3f8;border-radius:10px;background:#edf4ff;color:#2e68db;padding:0 13px;display:inline-flex;align-items:center;gap:7px;font-size:11px;font-weight:900;white-space:nowrap}.file-picker-btn b{font-size:17px;line-height:1}.file-picker-btn:hover{background:#e3edff;border-color:#c3d6f7}
.file-picker-summary{min-width:0}.file-picker-summary strong,.file-picker-summary small{display:block}.file-picker-summary strong{font-size:10px;color:#4f5f6d}.file-picker-summary small{font-size:9px;color:#929eaa;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.picked-file-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}.picked-file-list>span{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:8px;padding:7px 9px;border:1px solid #e4eaf0;border-radius:9px;background:#fff}.picked-file-list b{width:30px;height:27px;border-radius:7px;background:#edf4ff;color:#2d68df;display:grid;place-items:center;font-size:8px}.picked-file-list em{font-style:normal;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.picked-file-list small{font-size:9px;color:#8d99a4}

.task-confirm-card{width:min(620px,100%);max-height:min(760px,90vh);overflow:hidden;padding:0}.task-confirm-scroll{max-height:min(760px,90vh);overflow-y:auto;padding:30px;scrollbar-gutter:stable}.task-confirm-scroll::-webkit-scrollbar{width:8px}.task-confirm-scroll::-webkit-scrollbar-track{background:transparent}.task-confirm-scroll::-webkit-scrollbar-thumb{background:#b9c4cf;border:2px solid #fff;border-radius:999px}.task-confirm-scroll::-webkit-scrollbar-thumb:hover{background:#99a8b7}.confirm-detail-list{display:grid;grid-template-columns:1fr 1fr;gap:9px}.confirm-detail-list>div{border:1px solid #e7ecf0;border-radius:11px;background:#fafbfd;padding:11px 12px}.confirm-detail-list>div.wide{grid-column:1/-1}.confirm-detail-list span,.confirm-detail-list b{display:block}.confirm-detail-list span{font-size:9px;color:#8b97a3;margin-bottom:5px}.confirm-detail-list b{font-size:11px;color:#334250}.confirm-detail-list p{font-size:11px;line-height:1.65;color:#40505f;margin:0;max-height:130px;overflow:auto;word-break:break-word}

.task-create-card select#taskTypeInput{font-weight:800;color:#2e68db;background:#f7faff}.task-create-card select#taskClassInput{font-weight:700}
.teacher-task-item>p{line-height:1.6}

@media(max-width:760px){.teacher-chat-layout{padding:12px}.teacher-agent-intro{padding:18px}.teacher-chat-messages{padding:20px 14px}.teacher-composer-wrap{padding:8px 12px 14px}.pretty-file-picker{grid-template-columns:1fr}.file-picker-btn{justify-content:center}.confirm-detail-list{grid-template-columns:1fr}.confirm-detail-list>div.wide{grid-column:auto}}

/* ===== 2026-08-20 v4：定版前可读性、圆角下拉、实验分阶段任务 ===== */
body{font-size:15px}
button,input,textarea,select{font:inherit}

/* 全站点可读性：把原先 8–11px 的辅助文字整体抬高，避免桌面端过小 */
.sidebar-brand span{font-size:12px}.workflow-status strong{font-size:13px}.workflow-status small{font-size:11px}.account-copy strong{font-size:14px}.account-copy span{font-size:12px}
.nav-item,.new-chat-btn{font-size:14px}.nav-item em{font-size:11px}.topbar h2{font-size:22px}.identity-chip{font-size:13px}
.composer textarea,.teacher-composer-box textarea{font-size:15px}.composer-row>span,.composer-tools>span,.composer-send>span,.privacy-note{font-size:12px}
.teacher-agent-intro>span,.section-kicker,.form-title>span{font-size:11px}.teacher-agent-intro p,.form-title p,.section-heading p{font-size:13px}.muted-inline{font-size:13px}
.task-summary span{font-size:12px}.task-main strong{font-size:15px}.task-main small{font-size:13px}.task-type{min-width:52px;height:28px;font-size:12px}.task-state{height:29px;font-size:12px;padding:0 12px}.loading-card,.empty-task-card{font-size:13px}.empty-task-card b{font-size:15px}.text-back{font-size:13px}
.task-meta-grid span{font-size:12px}.task-meta-grid b{font-size:15px}.task-meta-grid small{font-size:12px}.task-content-section>span{font-size:13px}.task-requirements{font-size:14px}.task-file-link b{font-size:13px}.task-file-link small,.no-files{font-size:12px}.submission-placeholder b{font-size:14px}.submission-placeholder div>span{font-size:12px}.construction-chip{font-size:11px!important}
.task-create-card label>span{font-size:13px}.task-create-card label small,.form-footnote{font-size:12px}.task-create-card input,.task-create-card textarea{font-size:14px}.task-create-card input{height:46px}.task-create-card textarea{min-height:132px}.file-picker-btn{font-size:13px;height:44px}.file-picker-summary strong{font-size:13px}.file-picker-summary small{font-size:12px}.picked-file-list em{font-size:12px}.picked-file-list small{font-size:11px}.picked-file-list b{font-size:10px}
.teacher-task-item{padding:17px}.teacher-task-id{font-size:11px}.teacher-task-item h4{font-size:16px}.teacher-task-item>p{font-size:13px}.teacher-task-stats span{font-size:12px;padding:7px 10px}.teacher-task-stats b{font-size:13px}.confirm-detail-list span{font-size:12px}.confirm-detail-list b,.confirm-detail-list p{font-size:13px}

/* 自定义下拉：原生菜单在 Windows/Chrome 中无法统一圆角，因此保留其值、替换可见交互层 */
.native-select-hidden{position:absolute!important;opacity:0!important;pointer-events:none!important;width:1px!important;height:1px!important;padding:0!important;border:0!important;clip:rect(0 0 0 0)!important}
.custom-select{position:relative;width:100%;z-index:2}.custom-select.open{z-index:80}
.custom-select-trigger{width:100%;height:46px;border:1px solid #dce3e9;border-radius:13px;background:#fbfcfd;color:#2f3c48;padding:0 13px;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;font-size:14px;font-weight:700;outline:0;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}
.custom-select-trigger:hover{border-color:#c8d5e3;background:#fff}.custom-select.open .custom-select-trigger{border-color:#91afea;box-shadow:0 0 0 3px rgba(52,116,243,.08);background:#fff}.custom-select-trigger.placeholder{color:#8a98a6;font-weight:600}.custom-select-trigger b{font-size:17px;color:#6e7f90;transition:transform .15s ease}.custom-select.open .custom-select-trigger b{transform:rotate(180deg)}
.custom-select-menu{position:absolute;left:0;right:0;top:calc(100% + 6px);padding:6px;background:#fff;border:1px solid #dce3e9;border-radius:13px;box-shadow:0 18px 42px rgba(23,48,74,.16);max-height:260px;overflow:auto}
.custom-select-option{width:100%;min-height:40px;border:0;border-radius:9px;background:transparent;color:#334250;text-align:left;padding:9px 11px;font-size:14px;cursor:pointer}.custom-select-option:hover{background:#f2f6ff;color:#245fd3}.custom-select-option.selected{background:#eaf2ff;color:#255fd2;font-weight:800}.custom-select-option:disabled{opacity:.45;cursor:not-allowed}
#taskTypeInput+.custom-select-trigger{color:#2e68db}

/* 发布实验：与普通作业明确分叉 */
.task-type-fields{margin-top:2px}.experiment-fields{margin:16px -3px 2px;padding:16px;border:1px solid #dfe8f5;border-radius:15px;background:#f8fbff}
.experiment-fields-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:10px}.experiment-fields-head b,.experiment-fields-head span{display:block}.experiment-fields-head b{font-size:15px;color:#29445f}.experiment-fields-head span{font-size:12px;line-height:1.6;color:#71859a;margin-top:4px}
.schedule-section-label{margin:15px 0 4px;padding-top:12px;border-top:1px solid #e6edf5;font-size:12px;font-weight:900;color:#66809a;letter-spacing:.04em}
.experiment-schedule-preview-wrap{margin-top:16px;padding:14px;border:1px solid #dfe7f1;border-radius:14px;background:#fff}.schedule-preview-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.schedule-preview-title b{font-size:14px}.schedule-preview-title span{font-size:12px;color:#8493a2}
.experiment-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;min-width:0}.experiment-step{position:relative;min-width:0;text-align:center;padding:0 6px}.step-line{height:30px;display:flex;align-items:center}.step-dot{width:28px;height:28px;flex:0 0 28px;border-radius:50%;display:grid;place-items:center;border:2px solid #cfd9e4;background:#fff;color:#7d8d9d;font-size:12px;font-weight:900;z-index:1}.step-line i{height:2px;flex:1;background:#dfe6ed}.experiment-step b{display:block;font-size:13px;color:#3e5061;margin-top:7px}.experiment-step small{display:block;font-size:11px;line-height:1.5;color:#8997a4;margin-top:4px;word-break:break-word}.experiment-step.configured .step-dot{border-color:#8fb1f2;background:#edf4ff;color:#2d68df}.experiment-step.done .step-dot{border-color:#77c8a8;background:#eaf8f1;color:#16865b}.experiment-step.done .step-line i{background:#9bd3bd}.experiment-step.current .step-dot{border-color:#3474f3;background:#3474f3;color:#fff;box-shadow:0 0 0 5px rgba(52,116,243,.1)}.experiment-step.current .step-line i{background:linear-gradient(90deg,#3474f3,#dfe6ed)}.schedule-empty{grid-column:1/-1;border:1px dashed #d7e0e8;border-radius:11px;padding:13px;text-align:center;color:#8795a3;font-size:12px}

/* 学生实验详情：步骤条会随时间自动显示当前进度 */
.experiment-detail-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:18px 0}.experiment-detail-summary>div{background:#f8fafc;border:1px solid #edf1f4;border-radius:12px;padding:13px}.experiment-detail-summary span,.experiment-detail-summary b{display:block}.experiment-detail-summary span{font-size:12px;color:#8c99a5}.experiment-detail-summary b{font-size:15px;margin-top:5px}
.student-experiment-progress{margin:18px 0;padding:18px;border:1px solid #e2e9f0;border-radius:15px;background:#fbfcfe}
.task-state.neutral{background:#f2f4f6;color:#657483}.task-state.active{background:#e9f2ff;color:#2666d9}

/* 教师已发布实验任务 */
.teacher-mini-schedule{margin-top:10px;display:flex;flex-direction:column;gap:5px;padding:10px 11px;border:1px solid #e8edf3;border-radius:10px;background:#fafbfd}.teacher-mini-schedule span{font-size:12px;color:#718090;line-height:1.45}.teacher-task-stats{align-items:center;flex-wrap:wrap}.schedule-edit-btn{margin-left:auto;border:1px solid #d8e4f7;background:#f4f8ff;color:#2c67db;border-radius:9px;padding:7px 10px;font-size:12px;font-weight:800}.schedule-edit-btn:hover{background:#eaf2ff}
.schedule-edit-card{width:min(760px,100%);max-height:90vh;overflow:auto}.schedule-edit-card .two-col-fields label{margin:9px 0}.modal-steps{margin:16px 0 4px;padding:14px;border:1px solid #e4eaf0;border-radius:13px;background:#fbfcfd}.confirm-timeline{overflow:visible!important}.confirm-timeline .experiment-steps{margin-top:10px}

/* 发布页给实验时间配置更多空间 */
.teacher-task-layout{grid-template-columns:minmax(470px,540px) minmax(0,1fr)}

@media(max-width:980px){.teacher-task-layout{grid-template-columns:1fr}.experiment-steps{grid-template-columns:1fr;gap:8px}.experiment-step{display:grid;grid-template-columns:38px minmax(0,1fr);grid-template-rows:auto auto;text-align:left;padding:0}.step-line{grid-row:1/3;height:auto;align-items:flex-start}.step-line i{display:none}.experiment-step b{margin-top:1px}.experiment-step small{margin-top:2px}.experiment-current-action{align-items:flex-start;flex-direction:column}.experiment-current-action>b{align-self:flex-start}}
@media(max-width:760px){.experiment-fields{margin-left:0;margin-right:0;padding:12px}.schedule-edit-card .two-col-fields{grid-template-columns:1fr}.experiment-detail-summary{grid-template-columns:1fr}.custom-select-menu{position:fixed;left:14px;right:14px;top:auto;bottom:14px;max-height:45vh;border-radius:16px}.custom-select.open{z-index:120}}

/* ===== 2026-08-20 v5：自定义日期时间选择器、自动衔接、教师阶段标签、竖向时间轴 ===== */

/* 自定义日期时间选择器 */
.native-datetime-hidden{position:absolute!important;opacity:0!important;pointer-events:none!important;width:1px!important;height:1px!important;padding:0!important;border:0!important;clip:rect(0 0 0 0)!important}
.datetime-picker{position:relative;width:100%;z-index:3}.datetime-picker.open{z-index:95}
.datetime-picker-trigger{width:100%;height:46px;border:1px solid #d7e0e9;border-radius:13px;background:#fbfcfd;color:#2f3c48;padding:0 13px;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;font-size:14px;font-weight:650;outline:0;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}
.datetime-picker-trigger:hover{border-color:#c5d3e1;background:#fff}.datetime-picker.open .datetime-picker-trigger{border-color:#8eaceb;background:#fff;box-shadow:0 0 0 3px rgba(52,116,243,.08)}.datetime-picker-trigger.placeholder{color:#8a98a6}.datetime-picker-trigger>b{font-size:16px;color:#6f8192;font-weight:700}
.datetime-picker-panel{position:absolute;left:0;top:calc(100% + 8px);width:min(430px,calc(100vw - 40px));display:grid;grid-template-columns:minmax(270px,1fr) 150px;background:#fff;border:1px solid #ccd8e5;border-radius:16px;box-shadow:0 22px 55px rgba(26,48,72,.22);overflow:hidden;z-index:120}
.datetime-picker-panel[hidden]{display:none!important}
.dt-calendar{padding:14px 14px 10px;background:#fff}.dt-calendar-head{display:grid;grid-template-columns:34px 1fr 34px;align-items:center;gap:7px;margin-bottom:10px}.dt-calendar-head strong{text-align:center;font-size:14px;color:#26394a}.dt-calendar-head button{width:34px;height:34px;border:0;border-radius:10px;background:#f3f6f9;color:#506477;font-size:21px;cursor:pointer}.dt-calendar-head button:hover{background:#eaf1fb;color:#2e67d9}
.dt-week,.dt-days{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.dt-week{margin-bottom:4px}.dt-week span{font-size:11px;color:#8a98a5;text-align:center;padding:4px 0}.dt-day{height:32px;border:0;border-radius:9px;background:transparent;color:#2d3c49;font-size:12px;cursor:pointer}.dt-day:hover{background:#eef4ff;color:#2b66da}.dt-day.muted{color:#b5bec7}.dt-day.today{box-shadow:inset 0 0 0 1px #a9bee6}.dt-day.selected{background:#3474f3;color:#fff;font-weight:800;box-shadow:none}
.dt-footer{display:flex;justify-content:space-between;align-items:center;margin-top:8px;padding-top:9px;border-top:1px solid #edf1f5}.dt-footer button{border:0;background:transparent;color:#2e67d9;font-size:12px;font-weight:800;cursor:pointer;padding:5px 7px;border-radius:8px}.dt-footer button:hover{background:#eef4ff}
.dt-time-pane{display:grid;grid-template-columns:1fr 1fr;border-left:1px solid #e0e7ef;background:#f7f9fc;min-height:330px}.dt-time-column{min-width:0;display:flex;flex-direction:column}.dt-time-column+ .dt-time-column{border-left:1px solid #e7edf3}.dt-time-column>b{height:40px;display:flex;align-items:center;justify-content:center;border-bottom:1px solid #e3eaf1;font-size:12px;color:#65788b;background:#f2f6fa}.dt-time-list{height:290px;overflow:auto;padding:6px}.dt-time-list::-webkit-scrollbar{width:5px}.dt-time-list::-webkit-scrollbar-thumb{background:#c8d3df;border-radius:999px}.dt-time-option{width:100%;height:32px;border:0;border-radius:8px;background:transparent;color:#3a4b5b;font-size:12px;cursor:pointer}.dt-time-option:hover{background:#e8f0ff;color:#245fd3}.dt-time-option.selected{background:#3474f3;color:#fff;font-weight:800}
.two-col-fields>label:nth-child(2) .datetime-picker-panel{left:auto;right:0}
.schedule-edit-card{overflow:visible;max-height:none}.modal-backdrop{overflow:auto}

/* 竖向实验时间轴：标题与时间同行，避免横向四列错位和小字号 */
.experiment-steps{display:flex;flex-direction:column;gap:0;min-width:0}.experiment-step{position:relative;display:grid;grid-template-columns:34px minmax(0,1fr);gap:12px;text-align:left;padding:0;min-height:64px}.step-rail{position:relative;display:flex;flex-direction:column;align-items:center;height:100%}.step-dot{width:30px;height:30px;flex:0 0 30px;border-radius:50%;display:grid;place-items:center;border:2px solid #cfd9e4;background:#fff;color:#7d8d9d;font-size:12px;font-weight:900;z-index:1}.step-rail i{width:2px;flex:1;min-height:28px;background:#dfe6ed;margin:3px 0}.step-copy{display:grid;grid-template-columns:minmax(100px,130px) minmax(0,1fr);gap:16px;align-items:start;padding:4px 0 20px}.experiment-step:last-child .step-copy{padding-bottom:4px}.step-copy b{display:block;font-size:14px;line-height:1.5;color:#34495a;margin:0}.step-copy small{display:block;font-size:13px;line-height:1.5;color:#78899a;margin:0;white-space:nowrap}.experiment-step.configured .step-dot{border-color:#8fb1f2;background:#edf4ff;color:#2d68df}.experiment-step.done .step-dot{border-color:#77c8a8;background:#eaf8f1;color:#16865b}.experiment-step.done .step-rail i{background:#9bd3bd}.experiment-step.current .step-dot{border-color:#3474f3;background:#3474f3;color:#fff;box-shadow:0 0 0 5px rgba(52,116,243,.1)}.experiment-step.current .step-rail i{background:linear-gradient(180deg,#3474f3,#dfe6ed)}
.experiment-schedule-preview-wrap{padding:16px 18px}.modal-steps{padding:16px 18px}.confirm-timeline .experiment-steps{margin-top:12px}

/* 教师任务卡：实验当前阶段必须一眼可见 */
.teacher-task-badges{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.teacher-phase-chip{display:inline-flex;align-items:center;height:28px;border-radius:999px;padding:0 11px;font-size:12px;font-weight:850;background:#f1f4f7;color:#617182}.teacher-phase-chip.todo{background:#fff5dc;color:#966500}.teacher-phase-chip.active{background:#e9f2ff;color:#2465d8}.teacher-phase-chip.good{background:#e9f8f1;color:#168258}.teacher-phase-chip.danger{background:#fff0ef;color:#bf4c45}.teacher-task-top{align-items:center}

@media(max-width:760px){
  .datetime-picker-panel{left:0!important;right:auto!important;width:min(390px,calc(100vw - 34px));grid-template-columns:minmax(230px,1fr) 132px}
  .dt-time-pane{min-height:314px}.dt-time-list{height:274px}
  .step-copy{grid-template-columns:1fr;gap:3px;padding-top:2px}.step-copy small{white-space:normal;font-size:12px}.experiment-step{grid-template-columns:32px minmax(0,1fr);gap:10px}
}

/* v5.1：发布确认弹窗圆角与时间轴序号视觉对齐 */
.task-confirm-card{border-radius:22px;overflow:hidden}
.step-dot{box-sizing:border-box;display:flex!important;align-items:center;justify-content:center;padding:0!important;line-height:1!important;font-family:Arial,"Helvetica Neue",sans-serif;font-variant-numeric:tabular-nums;text-align:center;text-indent:.02em}
@media(max-width:760px){.task-confirm-scroll{padding:24px}}

/* Excel 学生名单：先预览冲突，再一次确认导入 */
.roster-import-modal{width:min(920px,100%);max-height:90vh;display:flex;flex-direction:column}.roster-import-modal>p{margin-bottom:14px}.roster-import-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}.roster-import-summary>span{display:flex;flex-direction:column;gap:3px;padding:12px 14px;border:1px solid #e1e8ee;border-radius:13px;background:#f7f9fb}.roster-import-summary b{font-size:21px;color:#243746}.roster-import-summary small{font-size:11px;color:#748493}.roster-import-summary .good{background:#eef8f3;border-color:#d8ebe2}.roster-import-summary .bad{background:#fff5f3;border-color:#f0ded9}.roster-import-table-wrap{min-height:180px;max-height:410px;overflow:auto;border:1px solid #dde5ec;border-radius:14px}.roster-import-table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}.roster-import-table th{position:sticky;top:0;z-index:1;padding:11px 13px;background:#f3f6f9;color:#586a7a;font-size:11px}.roster-import-table td{padding:10px 13px;border-top:1px solid #edf1f4;color:#344654}.roster-import-table th:first-child,.roster-import-table td:first-child{width:52px;color:#8996a1}.roster-row-state{display:inline-flex;max-width:340px;padding:5px 9px;border-radius:999px;font-size:11px;line-height:1.35}.roster-row-state.good{background:#e8f6ef;color:#187653}.roster-row-state.skip{background:#eef2f5;color:#637482}.roster-row-state.warn{background:#fff5db;color:#8c6400}.roster-row-state.bad{background:#fff0ee;color:#ad453e}.roster-import-modal>.teacher-review-message{min-height:18px;margin:12px 0 0}
@media(max-width:760px){.roster-import-summary{grid-template-columns:repeat(2,1fr)}.roster-import-modal{max-height:none}.roster-import-table-wrap{max-height:48vh}.roster-import-table th,.roster-import-table td{padding:9px 8px}}

/* 2026-08-27：下拉箭头固定围绕自身中心旋转 */
.custom-select-trigger .custom-select-chevron{width:20px;height:20px;flex:0 0 20px;display:grid;place-items:center;color:#5f7183;font-size:0;line-height:0;transform-origin:50% 50%;transition:transform .15s ease}
.custom-select-trigger .custom-select-chevron::before{content:"";width:10px;height:10px;box-sizing:border-box;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translate(-1px,-1px);transform-origin:50% 50%}
.custom-select.open .custom-select-trigger .custom-select-chevron{transform:rotate(180deg)}

/* 第一阶段：学生正式文字提交与教师只读评价 */
.student-submission-section{margin-top:18px;padding:22px;border:1px solid #dce6e3;border-radius:18px;background:#f8fbfa}.submission-section-head,.submission-history-title{display:flex;align-items:center;justify-content:space-between;gap:16px}.submission-section-head span{display:block;color:#71827e;font-size:10px;letter-spacing:.12em}.submission-section-head h4{margin:4px 0 0;font-size:20px}.submission-section-head>b{padding:6px 10px;border-radius:999px;background:#e8f2ef;color:#315e53;font-size:11px}.submission-text-label{display:block;margin-top:18px}.submission-text-label>span{display:block;margin-bottom:8px;font-size:12px;font-weight:700;color:#384a46}.submission-text-label textarea{width:100%;resize:vertical;min-height:128px;border:1px solid #ccd9d5;border-radius:14px;background:#fff;padding:14px 16px;font:inherit;line-height:1.7;outline:none}.submission-text-label textarea:focus{border-color:#497c70;box-shadow:0 0 0 3px rgba(73,124,112,.12)}.submission-text-label textarea:disabled{background:#eef2f1;color:#84918e}.submission-stage-note{margin:10px 0;color:#73817e;font-size:11px;line-height:1.6}.submission-form-message{min-height:20px;margin:5px 0;font-size:12px}.submission-form-message.error{color:#b0443e}.submission-form-message.success{color:#27725e}.submission-history-title{margin:24px 0 10px;padding-top:18px;border-top:1px solid #dce6e3}.submission-history-title span{color:#7a8985;font-size:11px}.submission-history{display:grid;gap:10px}.submission-history-item{padding:14px 16px;border:1px solid #dde7e4;border-radius:13px;background:#fff}.submission-history-item>div{display:flex;align-items:center;justify-content:space-between;gap:12px}.submission-history-item>div span,.submission-history-item small{color:#74837f;font-size:11px}.submission-history-item p{margin:9px 0;white-space:pre-wrap;line-height:1.65;color:#344743}
.review-page-inner{display:block}.review-task-button{display:block;width:100%;text-align:left;font:inherit;cursor:pointer}.review-task-button:hover{border-color:#aac3bd;transform:translateY(-1px)}.review-roster-card{border:1px solid #dce5e2;border-radius:20px;background:#fff;padding:24px}.review-roster-head h3{margin:4px 0 6px;font-size:24px}.review-roster-head p{margin:0;color:#71807d}.review-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:22px 0}.review-summary>div{padding:16px;border-radius:14px;background:#f1f6f4;text-align:center}.review-summary strong{display:block;font-size:24px;color:#244e45}.review-summary span{font-size:11px;color:#71817d}.review-roster-list{display:grid;gap:8px}.review-student-row{display:grid;grid-template-columns:minmax(160px,1.4fr) minmax(105px,.8fr) minmax(130px,1fr) 90px 20px;align-items:center;gap:12px;width:100%;padding:13px 15px;border:1px solid #dfe8e5;border-radius:13px;background:#fff;text-align:left;font:inherit}.review-student-row.submitted{cursor:pointer}.review-student-row.submitted:hover{border-color:#9dbbb4;background:#f8fbfa}.review-student-row:disabled{opacity:.72}.review-student-row span b,.review-student-person b{display:block;font-size:12px;color:#31443f}.review-student-row small{display:block;margin-top:4px;color:#7b8986;font-size:10px}.review-student-row em{font-style:normal;color:#5d7d75}.submission-ref-list{display:flex;flex-wrap:wrap;gap:8px}.submission-ref-list span{padding:8px 10px;border:1px solid #d7e2df;border-radius:9px;background:#f5f8f7;font-size:11px;color:#40534e}.readonly-review-note{display:flex;align-items:center;gap:10px;margin-top:18px;padding:14px 16px;border-radius:13px;background:#f1f5f4;color:#697975}.readonly-review-note b{color:#405a54}
.submission-file-preview-button{width:100%;display:grid;grid-template-columns:36px minmax(0,1fr) 20px;align-items:center;gap:9px;padding:9px 10px;border:1px solid #dbe5e2;border-radius:11px;background:#f9fbfa;color:#344743;text-align:left;font:inherit;cursor:pointer}.submission-file-preview-button:hover{border-color:#9fbdb5;background:#fff}.submission-file-preview-button>span{width:36px;height:36px;border-radius:9px;background:#eaf3f0;color:#286b5b;display:grid;place-items:center;font-size:9px;font-weight:900}
.teacher-review-editor{margin-top:18px;padding:18px;border:1px solid #d9e4e1;border-radius:15px;background:#f8fbfa}.teacher-review-editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.teacher-review-editor-head span{display:block;color:#71827e;font-size:9px;letter-spacing:.12em}.teacher-review-editor-head h4{margin:4px 0 0;font-size:18px}.teacher-review-editor-head>small{color:#778681;font-size:10px}.teacher-review-editor textarea{width:100%;min-height:128px;margin-top:14px;padding:13px 14px;border:1px solid #ccd9d5;border-radius:12px;background:#fff;resize:vertical;font:inherit;line-height:1.7;outline:none}.teacher-review-editor textarea:focus{border-color:#497c70;box-shadow:0 0 0 3px rgba(73,124,112,.12)}.teacher-review-editor>p{margin:10px 0 0;color:#7b8986;font-size:10px}.teacher-review-message{min-height:20px;margin:6px 0;font-size:11px}.teacher-review-message.error{color:#b0443e}.teacher-review-message.success{color:#27725e}
.teacher-review-direction{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:16px 0 10px}.teacher-review-direction button{position:relative;min-height:50px;border:1px solid #ccd9d5;border-radius:11px;background:#fff;color:#466159;font:inherit;font-size:12px;font-weight:800;cursor:pointer}.teacher-review-direction button>span{display:block}.teacher-review-direction button>small{display:block;margin-top:3px;color:#2b7c65;font-size:9px}.teacher-review-direction button:hover{border-color:#8fb5aa}.teacher-review-direction button.recommended{border-color:#75af9e;background:#f2faf7;box-shadow:inset 0 3px #49a086}.teacher-review-direction button.selected{border-color:#347c68;background:#e8f5f0;color:#1f6d57;box-shadow:0 0 0 3px rgba(52,124,104,.1)}.teacher-review-no-suggestion{margin:0 0 10px;color:#7b8986;font-size:10px}
@media(max-width:760px){.teacher-review-direction{grid-template-columns:1fr 1fr}}
.teacher-inline-file-preview{margin-top:14px;border:1px solid #d8e4e0;border-radius:15px;overflow:hidden;background:#eef2f1;scroll-margin-top:18px}.teacher-inline-file-preview[hidden]{display:none}.teacher-inline-preview-head{min-height:52px;padding:9px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fff;border-bottom:1px solid #dfe7e4}.teacher-inline-preview-head b,.teacher-inline-preview-head small{display:block}.teacher-inline-preview-head b{font-size:12px;color:#31443f}.teacher-inline-preview-head small{margin-top:3px;font-size:10px;color:#7b8986}.teacher-inline-preview-head button{width:32px;height:32px;border:0;border-radius:9px;background:#eef3f1;color:#506b64;font-size:22px;line-height:1;cursor:pointer}.teacher-inline-preview-body{min-height:360px;display:grid;place-items:center;background:#151515}.teacher-inline-preview-body img{display:block;max-width:100%;max-height:68vh;object-fit:contain}.teacher-inline-preview-body iframe{display:block;width:100%;height:68vh;min-height:520px;border:0;background:#fff}
@media (max-width:900px){.review-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.review-student-row{grid-template-columns:1fr 1fr}.review-student-row .task-state,.review-student-row em{display:none}}
@media(max-width:760px){.teacher-inline-preview-body{min-height:240px}.teacher-inline-preview-body iframe{height:62vh;min-height:380px}}
.submission-disabled-upload{display:flex;align-items:center;gap:10px;margin-top:10px}.submission-disabled-upload span{color:#7a8985;font-size:11px}.submission-disabled-upload button:disabled{cursor:not-allowed;opacity:.62}
.student-submission-upload{display:flex;align-items:center;gap:10px;margin-top:12px}.student-submission-upload>span{color:#71817d;font-size:11px}.student-submission-attachment-tray{display:grid;gap:8px;margin-top:10px}.submission-upload-card{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 10px;border:1px solid #d8e4e0;border-radius:12px;background:#fff}.submission-upload-badge{width:38px;height:38px;border-radius:9px;background:#eaf3f0;color:#286b5b;display:grid;place-items:center;font-size:9px;font-weight:900}.submission-upload-card b,.submission-upload-card small{display:block;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.submission-upload-card b{font-size:11px;color:#344743}.submission-upload-card small{margin-top:4px;font-size:10px}.submission-upload-card button{border:0;border-radius:8px;background:#f3f6f5;color:#687975;padding:7px 9px;font-size:10px}.submission-upload-card button:hover{background:#feecec;color:#a94848}.submission-upload-card button:disabled{opacity:.45;cursor:not-allowed}.submission-file-links{display:grid;gap:7px;margin-top:10px}.submission-file-links a{display:grid;grid-template-columns:36px minmax(0,1fr) 20px;align-items:center;gap:9px;padding:9px 10px;border:1px solid #dbe5e2;border-radius:11px;background:#f9fbfa;color:#344743;text-decoration:none}.submission-file-links a:hover{border-color:#9fbdb5;background:#fff}.submission-file-links a>span{width:36px;height:36px;border-radius:9px;background:#eaf3f0;color:#286b5b;display:grid;place-items:center;font-size:9px;font-weight:900}.submission-file-links b,.submission-file-links small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.submission-file-links b{font-size:11px}.submission-file-links small{margin-top:3px;color:#778681;font-size:9px}.submission-file-links em{font-style:normal;color:#618078}.submission-history-item .submission-file-links{margin-top:10px}
.student-review-feedback{display:block!important;margin-top:12px;padding:12px 14px;border-radius:11px;background:#eef6f3;border:1px solid #d3e5df}.student-review-feedback>span{display:block;color:#34705f;font-size:10px;font-weight:800;letter-spacing:.08em}.student-review-feedback>p{margin:6px 0!important;color:#29473f!important;line-height:1.7}.student-review-feedback>small{display:block;margin-top:6px;color:#71817d}
.student-message-list{display:grid;gap:12px}.student-message-card{display:grid;grid-template-columns:44px minmax(0,1fr) 20px;align-items:start;gap:14px;width:100%;padding:18px;border:1px solid #dce6e3;border-radius:16px;background:#fff;text-align:left;font:inherit;cursor:pointer}.student-message-card.unread{border-color:#9fc5ba;background:#f8fcfb;box-shadow:inset 4px 0 #2d8a70}.student-message-card:hover{border-color:#9ebcb4;transform:translateY(-1px);box-shadow:0 10px 24px rgba(28,67,58,.07)}.student-message-card:disabled{cursor:wait;opacity:.72}.student-message-icon{width:44px;height:44px;border-radius:13px;background:#e8f3ef;color:#26705d;display:grid;place-items:center;font-weight:900}.student-message-copy{min-width:0}.student-message-head{display:flex;min-width:0;align-items:center;gap:8px}.student-message-head strong{min-width:0;flex:0 1 auto;color:#172b27;font-size:16px;line-height:1.45}.student-message-unread-dot{width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:#b22f35}.student-message-status{flex:0 0 auto;margin-left:auto;padding:4px 9px;border:1px solid #c8dad4;border-radius:8px;background:#f5f8f7;color:#526660;font-size:12px;line-height:1.2}.student-message-status.warning{border-color:#efd39e;background:#fff7e8;color:#9a6505}.student-message-status.success{border-color:#b9daca;background:#edf8f2;color:#217050}.student-message-status.muted{border-color:#d8e0de;background:#f5f7f6;color:#6f7f7a}.student-message-copy p{margin:5px 0 0;color:#526660;font-size:14px;line-height:1.65;white-space:pre-wrap}.student-message-meta{display:flex;align-items:center;gap:10px;margin-top:9px;color:#80908c}.student-message-copy .student-message-meta em,.student-message-copy .student-message-meta small{display:block;margin:0;color:inherit;font-size:12px;font-style:normal;font-weight:500;letter-spacing:0}.student-message-copy .student-message-meta small:before{content:"·";margin-right:10px}.student-message-arrow{align-self:center;color:#67877f}.student-message-card>b{color:#67877f}@media(max-width:620px){.student-message-card{grid-template-columns:38px minmax(0,1fr);gap:11px;padding:15px}.student-message-icon{width:38px;height:38px;border-radius:11px}.student-message-arrow{display:none}.student-message-head{align-items:flex-start;flex-wrap:wrap}.student-message-status{margin-left:0}.student-message-head strong{flex:1 1 calc(100% - 90px);font-size:15px}}
.student-review-letter{overflow:hidden;border:1px solid #d9e4e1;border-radius:20px;background:#fff;box-shadow:0 16px 38px rgba(28,67,58,.08)}.student-review-letter>header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:26px 28px;border-bottom:1px solid #e4ece9;background:#fbfdfc}.student-review-letter>header span{display:block;color:#34705f;font-size:12px;font-weight:850;letter-spacing:.12em}.student-review-letter section>span{display:block;color:#34705f;font-size:14px;font-weight:850;letter-spacing:.08em}.student-review-letter>header h3{margin:7px 0 0;font-size:30px}.student-review-letter-meta{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:20px 28px 0}.student-review-letter-meta>div{padding:16px 18px;border-radius:13px;background:#f3f7f6}.student-review-letter-meta span,.student-review-letter-meta b{display:block}.student-review-letter-meta span{font-size:12px;color:#697b76}.student-review-letter-meta b{margin-top:6px;color:#30443f;font-size:15px}.student-review-letter section{margin:20px 28px 0;padding:20px;border:1px solid #dfe8e5;border-radius:14px}.student-review-letter section p{margin:10px 0 0;color:#3d514c;font-size:16px;line-height:1.8}.student-review-letter .teacher-reply-body{background:#f1f8f5;border-color:#cfe3dc}.student-review-letter .teacher-reply-body p{font-size:17px;color:#24483f}.student-review-letter footer{margin-top:22px;padding:16px 28px;background:#f7faf9;color:#7a8985;font-size:11px}.student-review-letter .error-card{margin:18px 28px 0}
@media(max-width:760px){.student-review-letter>header{padding:20px}.student-review-letter-meta{grid-template-columns:1fr;padding:16px 20px 0}.student-review-letter section{margin:16px 20px 0}.student-review-letter footer{padding:14px 20px}}

/* 2026-08-27：教师任务与评价页层次增强 */
.teacher-task-list-panel,.review-roster-card,.task-detail-card{border-color:#c8d5df;box-shadow:0 12px 30px rgba(30,55,78,.07)}
.teacher-task-list{gap:12px}
.teacher-task-item{border-color:#cbd7e1;background:#fff;box-shadow:0 2px 7px rgba(35,60,82,.045)}
.teacher-task-item:nth-child(even){background:#f9fbfd}
.teacher-task-item:hover{border-color:#91aac0;box-shadow:0 7px 18px rgba(35,60,82,.09)}
.teacher-task-stats span{border:1px solid #dde5eb;background:#f1f5f8}
.task-detail-head{border-bottom-color:#d8e1e7}
.task-meta-grid>div{border-color:#cedae2;background:#f1f5f7}
.task-requirements{border-color:#cfdbe2;background:#f8fafb}
.submission-file-preview-button,.submission-file-links a{border-color:#bfd0ca;background:#f7faf9}
.teacher-review-editor{border-color:#adc6bf;background:#f1f7f5;box-shadow:inset 0 0 0 1px rgba(87,126,116,.04)}
.teacher-review-direction button{border-color:#aebfba}
.teacher-review-editor textarea{border-color:#afc3bd}
.teacher-inline-file-preview{border-color:#aac1ba;box-shadow:0 8px 22px rgba(37,75,65,.08)}

/* 教师班级管理 */
.teacher-classes-page-inner{display:block}.teacher-class-summary{display:flex;gap:12px;margin:18px 0}.teacher-class-summary>div{display:flex;align-items:baseline;gap:6px;min-width:150px;padding:15px 18px;border:1px solid #d4e0dc;border-radius:14px;background:#f5f9f7}.teacher-class-summary span{margin-right:auto;color:#667a74;font-size:11px}.teacher-class-summary strong{color:#24584b;font-size:25px}.teacher-class-summary small{color:#768680}.teacher-class-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.teacher-class-card{display:block;width:100%;padding:22px;border:1px solid #cbdad5;border-radius:18px;background:#fff;text-align:left;font:inherit;cursor:pointer;box-shadow:0 5px 16px rgba(35,70,61,.05);transition:.18s ease}.teacher-class-card:hover{border-color:#86ad9f;transform:translateY(-2px);box-shadow:0 12px 26px rgba(35,70,61,.1)}.teacher-class-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.teacher-class-card-head small{display:block;color:#3e7868;font-size:10px;font-weight:800;letter-spacing:.08em}.teacher-class-card-head h4{margin:5px 0 0;color:#203b34;font-size:20px}.teacher-class-meta{display:grid;grid-template-columns:1.2fr .8fr 1fr;gap:8px;margin-top:20px}.teacher-class-meta>span{min-width:0;padding:11px;border-radius:11px;background:#f1f6f4}.teacher-class-meta b,.teacher-class-meta small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.teacher-class-meta b{color:#3b514b;font-size:11px}.teacher-class-meta small{margin-top:4px;color:#82908c;font-size:9px}.teacher-class-enter{display:block;margin-top:17px;color:#347563;font-size:11px}.teacher-class-detail-card{overflow:hidden;border:1px solid #cbdad5;border-radius:20px;background:#fff;box-shadow:0 12px 30px rgba(30,66,57,.07)}.teacher-class-detail-head{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:26px 28px;border-bottom:1px solid #dce6e3;background:#f8fbfa}.teacher-class-detail-head span{display:block;color:#397562;font-size:10px;font-weight:850;letter-spacing:.1em}.teacher-class-detail-head h3{margin:6px 0 4px;font-size:27px}.teacher-class-detail-head p{margin:0;color:#72827e;font-size:11px}.teacher-class-detail-head>div:last-child{min-width:92px;padding:14px;border-radius:13px;background:#e7f2ee;text-align:center}.teacher-class-detail-head>div:last-child strong,.teacher-class-detail-head>div:last-child small{display:block}.teacher-class-detail-head>div:last-child strong{color:#24624f;font-size:25px}.teacher-class-detail-head>div:last-child small{color:#6a8079;font-size:10px}.teacher-class-roster{padding:24px 28px 28px}.teacher-class-roster-title{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:15px}.teacher-class-roster-title span{display:block;color:#4f7c70;font-size:9px;letter-spacing:.12em}.teacher-class-roster-title h4{margin:4px 0 0;font-size:18px}.teacher-class-roster-title>small{color:#7c8b87;font-size:10px}.teacher-class-student-list{display:grid;gap:8px}.teacher-class-student-row{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:12px;padding:13px 15px;border:1px solid #dce6e3;border-radius:12px;background:#fff}.teacher-class-student-row>span{color:#92a09c;font-size:11px;font-weight:800}.teacher-class-student-row b,.teacher-class-student-row small{display:block}.teacher-class-student-row b{color:#2c423c;font-size:13px}.teacher-class-student-row small{margin-top:4px;color:#7b8b86;font-size:10px}.teacher-class-student-row em{padding:5px 9px;border-radius:999px;background:#eaf5f1;color:#31715f;font-size:9px;font-style:normal;font-weight:800}
@media(max-width:900px){.teacher-class-list{grid-template-columns:1fr}}@media(max-width:760px){.teacher-class-summary{display:grid;grid-template-columns:1fr 1fr}.teacher-class-summary>div{min-width:0;padding:12px}.teacher-class-meta{grid-template-columns:1fr 1fr}.teacher-class-meta>span:last-child{grid-column:1/-1}.teacher-class-detail-head{align-items:flex-start;padding:20px}.teacher-class-roster{padding:20px}.teacher-class-roster-title{align-items:flex-start;flex-direction:column}.teacher-class-detail-head h3{font-size:23px}}

/* 班级管理与作业评价可读性、编辑能力 */
.teacher-review-heading h3{font-size:34px;line-height:1.2}.teacher-review-heading p{font-size:15px}.teacher-review-filters{display:grid;grid-template-columns:minmax(220px,1fr) minmax(260px,1.4fr);gap:14px;margin:0 0 20px;padding:18px;border:1px solid #cbdad5;border-radius:16px;background:#fff;box-shadow:0 7px 20px rgba(30,66,57,.05)}.teacher-review-filters label>span{display:block;margin-bottom:8px;color:#38594f;font-size:14px;font-weight:850}.teacher-review-filters .custom-select-trigger{font-size:15px}.review-roster-head h3{font-size:30px}.review-roster-head p{font-size:13px}.review-student-row span b,.review-student-person b{font-size:15px}.review-student-row small{font-size:12px}.review-student-row em{font-size:13px}
.experiment-team-row{grid-template-columns:minmax(130px,.8fr) minmax(260px,2fr) minmax(100px,.65fr) 90px 20px;cursor:default!important}.experiment-team-row.submitted:hover{background:#fff}.experiment-team-members{display:flex;flex-wrap:wrap;gap:8px}.experiment-team-member{padding:7px 9px;border-radius:10px;background:#f2f6f5;color:#31443f}.experiment-team-member.captain{background:#e9f5ef;color:#176249}.experiment-team-member small{margin-top:2px}.experiment-unassigned{display:flex;gap:12px;align-items:flex-start;margin:-8px 0 18px;padding:13px 15px;border:1px dashed #d3a962;border-radius:13px;background:#fffaf0}.experiment-unassigned b{flex:0 0 auto;color:#8b5a13}.experiment-unassigned span{color:#75644d;line-height:1.7}
.team-request-card{cursor:default}.team-request-actions{display:flex!important;gap:8px;margin-top:12px}.team-request-actions button{border:1px solid #bdd2cb;border-radius:9px;padding:7px 14px;background:#fff;color:#285a4d;font:inherit;font-weight:800;cursor:pointer}.team-request-actions button:first-child{border-color:#2f76f6;background:#2f76f6;color:#fff}.team-request-actions button:disabled{opacity:.55;cursor:wait}
.team-request-waiting{display:inline-block;margin-top:12px;padding:6px 12px;border-radius:9px;background:#f2f6f5;color:#6d817c;font-weight:800;font-size:15px}
/* 学生实验详情 · 组队区 */
.student-team-panel{margin:0 0 20px}
.my-team-card{border:1px solid #d5e3de;border-radius:14px;background:#fff;padding:16px 18px;margin-bottom:14px}
.my-team-head{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.my-team-head span{color:#7b8f89;font-size:15px;font-weight:800;letter-spacing:.04em}
.my-team-head h4{margin:0;font-size:23px;color:#1d3730}
.my-team-meta{display:flex;flex-wrap:wrap;gap:22px;margin-bottom:13px;padding-bottom:13px;border-bottom:1px solid #eaf1ef}
.my-team-meta div{display:flex;flex-direction:column;gap:3px}
.my-team-meta span{color:#7b8f89;font-size:15px}
.my-team-meta b{font-size:19px;color:#1d3730}
.my-team-members{display:flex;flex-wrap:wrap;gap:9px}
.team-member-chip{display:flex;flex-direction:column;gap:2px;padding:8px 12px;border-radius:11px;background:#f2f6f5;color:#31443f}
.team-member-chip.captain{background:#e9f5ef;color:#176249}
.team-member-chip b{font-size:17px}
.team-member-chip small{font-size:14px;opacity:.85}
.team-empty-note{border:1px dashed #c9d9d4;border-radius:13px;background:#fafcfb;padding:15px 17px;margin-bottom:14px}
.team-empty-note b{display:block;margin-bottom:4px;font-size:19px;color:#1d3730}
.team-empty-note span{color:#6d817c;line-height:1.75}
.joinable-teams{margin-bottom:14px}
.joinable-title{margin-bottom:10px}
.joinable-title b{font-size:19px;color:#1d3730}
.joinable-title span{display:block;margin-top:3px;color:#7b8f89;font-size:15px}
.joinable-title.muted b{color:#6d817c}
.joinable-team-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 15px;border:1px solid #d5e3de;border-radius:12px;background:#fff;margin-bottom:9px}
.joinable-team-row b{display:block;font-size:18px;color:#1d3730}
.joinable-team-row small{display:block;margin-top:3px;color:#6d817c;font-size:15px}
.joinable-team-row.disabled{background:#fafcfb;border-style:dashed}
.join-disabled{color:#9aa8a4;font-weight:800;font-size:15px}
.team-panel-error{border:1px solid #e3b6b6;border-radius:13px;background:#fdf3f3;padding:15px 17px}
.team-panel-error b{display:block;margin-bottom:4px;color:#a33;font-size:19px}
.team-panel-error span{color:#8a5a5a}
/* 教师端 · 队伍管理 */
.team-manage-bar{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:-4px 0 16px;padding:13px 15px;border:1px solid #e5eaef;border-radius:13px;background:#fff}
.team-manage-bar>span{color:#6d817c;font-size:15px;line-height:1.7}
.team-manage-bar .primary-btn span{color:#fff}
.unassigned-list{display:flex;flex-wrap:wrap;gap:9px}
.unassigned-item{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 13px;border-radius:11px;background:#fff;border:1px solid #e2d3b6;color:#4d4030;text-align:left;font:inherit;cursor:pointer}
.unassigned-item:hover{border-color:#b99350;background:#fffdf8;box-shadow:0 5px 14px rgba(114,82,31,.08)}
.unassigned-item span,.unassigned-item strong,.unassigned-item small{display:block}.unassigned-item strong{font-size:15px}.unassigned-item small{margin-top:3px;color:#8b7a5e;font-size:13px}.unassigned-item em{color:#316f5e;font-size:13px;font-style:normal;font-weight:850;white-space:nowrap}
.member-ops{display:flex;gap:6px;margin-top:6px}
.member-op-btn,.team-op-btn{border:1px solid #bdd2cb;border-radius:8px;padding:5px 11px;background:#fff;color:#285a4d;font:inherit;font-size:15px;font-weight:800;cursor:pointer;white-space:nowrap}
.member-op-btn:hover,.team-op-btn:hover{background:#eef5f3}
.member-op-btn:disabled,.team-op-btn:disabled{opacity:.55;cursor:wait}
.team-row-ops{display:flex;flex-direction:column;gap:6px}
.member-op-btn.danger{border-color:#e3b9b5;background:#fff6f5;color:#a33f38}.member-op-btn.danger:hover{background:#fde9e7}
.experiment-team-row{grid-template-columns:minmax(130px,.8fr) minmax(240px,2fr) minmax(96px,.6fr) 84px 108px!important}
.team-arrange-card{width:min(820px,100%);max-height:90vh;overflow:auto}.team-arrange-card>p{font-size:15px}.team-arrange-context{margin:14px 0 4px;padding:14px 16px;border:1px solid #d8e4e0;border-radius:13px;background:#f7faf9}.team-arrange-context>span{display:block;color:#698079;font-size:12px;font-weight:850;letter-spacing:.06em}.team-arrange-context>b{display:block;margin-top:6px;font-size:18px}.team-arrange-context>small{display:block;margin-top:3px;color:#71837d;font-size:13px}.team-arrange-context-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:7px}.team-arrange-context-head b{font-size:18px}.team-arrange-context-head em{padding:5px 9px;border-radius:999px;background:#e9f3ef;color:#286251;font-size:12px;font-style:normal;font-weight:850}.team-arrange-context .team-choice-members{margin-bottom:0}.team-arrange-options{display:grid;gap:12px;max-height:55vh;margin-top:16px;padding:2px;overflow:auto}.team-arrange-choice{width:100%;border:1px solid #cbdad5;border-radius:15px;background:#fff;color:#263d36;text-align:left;font:inherit;cursor:pointer;transition:.16s ease}.team-arrange-choice:hover{border-color:#7fa897;box-shadow:0 8px 20px rgba(39,78,67,.09);transform:translateY(-1px)}.team-arrange-choice.selected{border-color:#347cf3;background:#f4f8ff;box-shadow:0 0 0 3px rgba(52,124,243,.13)}.team-arrange-choice.disabled,.team-arrange-choice:disabled{cursor:not-allowed;opacity:.58;transform:none;box-shadow:none}.team-choice-card{padding:17px 18px}.team-choice-head{display:flex;align-items:center;justify-content:space-between;gap:15px}.team-choice-head b{font-size:19px}.team-choice-head em{padding:6px 10px;border-radius:999px;background:#eef4f2;color:#3b675b;font-size:13px;font-style:normal;font-weight:850}.team-choice-members{display:flex;flex-wrap:wrap;gap:8px;margin:13px 0 11px}.team-arrange-member{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border-radius:10px;background:#f1f6f4}.team-arrange-member.captain{background:#e6f4ee;color:#176249}.team-arrange-member b{font-size:14px}.team-arrange-member small{font-size:12px;color:#6c7f79}.team-choice-card>small{color:#637a73;font-size:13px}.team-arrange-empty{padding:8px 10px;border-radius:9px;background:#f6f8f7;color:#82908c;font-size:13px}.student-choice-list{grid-template-columns:repeat(2,minmax(0,1fr))}.student-choice-card{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px}.student-choice-card b,.student-choice-card small{display:block}.student-choice-card b{font-size:17px}.student-choice-card small{margin-top:4px;color:#71837d;font-size:13px}.student-choice-card em{padding:6px 10px;border-radius:999px;background:#fff7e8;color:#8b5a13;font-size:12px;font-style:normal;font-weight:850}.team-arrange-no-options{padding:25px;border:1px dashed #cbdad5;border-radius:14px;background:#fafcfb;text-align:center}.team-arrange-no-options b,.team-arrange-no-options span{display:block}.team-arrange-no-options b{font-size:18px}.team-arrange-no-options span{margin-top:6px;color:#71837d;font-size:14px}
.teacher-class-card{padding:26px}.teacher-class-card-head small{font-size:13px}.teacher-class-card-head h4{font-size:25px}.teacher-class-card .task-state{font-size:12px}.teacher-class-meta{gap:11px}.teacher-class-meta>span{padding:14px}.teacher-class-meta small{margin:0 0 8px;color:#667a74;font-size:12px;font-weight:800}.teacher-class-meta b{font-size:15px}.teacher-class-enter{font-size:14px}.teacher-class-detail-actions{display:flex;align-items:stretch;gap:9px!important;min-width:150px!important;padding:0!important;border-radius:0!important;background:transparent!important}.teacher-class-detail-actions>div{padding:12px 18px;border-radius:13px;background:#e7f2ee;text-align:center}.teacher-class-detail-actions>div strong,.teacher-class-detail-actions>div small{display:block}.teacher-class-detail-actions>div strong{color:#24624f;font-size:25px}.teacher-class-detail-actions>div small{color:#6a8079;font-size:10px}.teacher-class-edit-form{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;padding:22px 28px;border-bottom:1px solid #dce6e3;background:#f5f9f7}.teacher-class-edit-form[hidden]{display:none}.teacher-class-edit-form label>span,.teacher-class-add-student label>span{display:block;margin-bottom:7px;color:#38594f;font-size:12px;font-weight:850}.teacher-class-edit-form input,.teacher-class-edit-form select,.teacher-class-add-student input{width:100%;height:44px;padding:0 12px;border:1px solid #bfd0ca;border-radius:11px;background:#fff;font:inherit;font-size:14px;outline:none}.teacher-class-edit-form input:focus,.teacher-class-edit-form select:focus,.teacher-class-add-student input:focus{border-color:#4f8b79;box-shadow:0 0 0 3px rgba(79,139,121,.12)}.teacher-class-edit-form label>small{display:block;margin-top:6px;color:#798985;font-size:10px;line-height:1.5}.teacher-class-edit-form .teacher-review-message{grid-column:1/-1;margin:0}.teacher-class-form-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:9px}#teacherClassCreateStudentForm .teacher-class-roster-title{grid-column:1/-1;margin-bottom:4px}.teacher-class-roster-tools{display:grid;grid-template-columns:minmax(0,1fr) minmax(310px,.65fr);gap:15px;margin-bottom:16px;padding:15px;border:1px dashed #bdcec8;border-radius:13px;background:#f8fbfa}.teacher-class-add-student{display:grid;grid-template-columns:minmax(220px,1fr) auto;align-items:end;gap:10px}.teacher-class-add-student p{grid-column:1/-1;min-height:0;margin:0;color:#557069;font-size:11px}.teacher-class-add-student p.error{color:#ad433e}.teacher-class-import-students{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px;padding-left:15px;border-left:1px solid #d8e4e0}.teacher-class-import-students>div b,.teacher-class-import-students>div small{display:block}.teacher-class-import-students>div b{color:#38594f;font-size:12px}.teacher-class-import-students>div small{margin-top:7px;color:#748680;font-size:10px;line-height:1.4}.teacher-class-import-students>button{white-space:nowrap}.teacher-class-import-students>p{grid-column:1/-1;min-height:0;margin:0}.teacher-class-student-row{grid-template-columns:42px minmax(0,1fr) auto auto}.teacher-class-student-row b{font-size:15px}.teacher-class-student-row small{font-size:12px}.teacher-class-remove-student{border:1px solid #e4c8c5;border-radius:9px;background:#fff7f6;color:#a84b45;padding:7px 10px;font:inherit;font-size:11px;font-weight:800;cursor:pointer}.teacher-class-remove-student:hover{background:#fdeceb}
.teacher-class-create-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:20px 0 24px}.teacher-management-create-card{display:grid;grid-template-columns:1fr 1fr;align-content:start;gap:13px;padding:22px;border:1px solid #cbdad5;border-radius:18px;background:#f8fbfa;box-shadow:0 6px 18px rgba(30,66,57,.05)}.teacher-management-create-card .teacher-class-roster-title{grid-column:1/-1;align-items:flex-start;margin:0 0 3px}.teacher-management-create-card label>span{display:block;margin-bottom:7px;color:#38594f;font-size:13px;font-weight:850}.teacher-management-create-card input,.teacher-management-create-card select{width:100%;height:46px;padding:0 12px;border:1px solid #bfd0ca;border-radius:11px;background:#fff;color:#263d36;font:inherit;font-size:14px;outline:none}.teacher-management-create-card input:focus,.teacher-management-create-card select:focus{border-color:#4f8b79;box-shadow:0 0 0 3px rgba(79,139,121,.12)}.teacher-management-create-card label:first-of-type{grid-column:1/-1}.teacher-management-create-card .teacher-review-message{grid-column:1/-1;min-height:20px;margin:0;font-size:12px}.teacher-management-create-card>button{grid-column:1/-1;justify-self:end}.teacher-created-classes-heading{margin:24px 0 13px}.teacher-created-classes-heading span{color:#4f7c70;font-size:10px;font-weight:800;letter-spacing:.12em}.teacher-created-classes-heading h4{margin:4px 0 0;color:#263d36;font-size:21px}
.academic-term-selects{display:grid!important;grid-template-columns:1fr 1fr;gap:8px;margin:0!important;color:inherit!important;font-size:inherit!important;font-weight:inherit!important}
@media(max-width:900px){.teacher-class-roster-tools{grid-template-columns:1fr}.teacher-class-import-students{padding:15px 0 0;border-top:1px solid #d8e4e0;border-left:0}}@media(max-width:760px){.teacher-review-filters{grid-template-columns:1fr}.teacher-review-heading h3{font-size:29px}.teacher-class-meta small{font-size:11px}.teacher-class-meta b{font-size:14px}.teacher-class-detail-actions{width:100%;flex-direction:row}.teacher-class-edit-form{grid-template-columns:1fr;padding:18px 20px}.teacher-class-edit-form .teacher-review-message,.teacher-class-form-actions{grid-column:1}.teacher-class-add-student,.teacher-class-import-students{grid-template-columns:1fr}.teacher-class-import-students>button{width:100%;justify-content:center}.teacher-class-student-row{grid-template-columns:34px minmax(0,1fr) auto}.teacher-class-student-row em{display:none}.teacher-class-remove-student{grid-column:2/-1;justify-self:start}}
@media(max-width:900px){.teacher-class-create-grid{grid-template-columns:1fr}}@media(max-width:600px){.teacher-management-create-card{grid-template-columns:1fr}.teacher-management-create-card label,.teacher-management-create-card label:first-of-type{grid-column:1}.teacher-management-create-card>button{width:100%;justify-content:center}}
@media(max-width:700px){.student-choice-list{grid-template-columns:1fr}.team-choice-head{align-items:flex-start;flex-direction:column}.team-arrange-card{padding:22px}.experiment-unassigned{flex-direction:column}.unassigned-list{width:100%}.unassigned-item{width:100%}}

/* 学生侧栏移除工作流状态后，账号区仍固定在底部。 */
#studentApp .account-box{margin-top:auto}

.conversation-history-panel{display:flex;min-height:0;flex:1;flex-direction:column;margin-top:15px;padding:15px 4px 8px;border-top:1px solid rgba(255,255,255,.08)}
.sidebar-content-tabs{display:grid;grid-template-columns:1fr 1fr;gap:3px;margin:0 3px 12px;padding:3px;border-radius:10px;background:rgba(255,255,255,.07)}.sidebar-content-tabs button{height:30px;border:0;border-radius:8px;background:transparent;color:#8fa7b9;font:inherit;font-size:11px;font-weight:800;cursor:pointer}.sidebar-content-tabs button:hover{color:#fff}.sidebar-content-tabs button.active{background:#f4f8fb;color:#17364f;box-shadow:0 2px 7px rgba(5,23,37,.2)}
.sidebar-content-view{display:flex;min-height:0;flex:1;flex-direction:column}.sidebar-content-view[hidden]{display:none!important}
.conversation-history-head{display:flex;align-items:center;justify-content:space-between;padding:0 7px 9px;color:#dbe8f2;font-size:12px}.conversation-history-head span{min-width:22px;border-radius:999px;background:#234866;padding:2px 6px;color:#a9bfd0;text-align:center;font-size:10px}
.conversation-search{display:flex;align-items:center;gap:6px;height:34px;margin:0 3px 9px;padding:0 9px;border:1px solid rgba(255,255,255,.11);border-radius:9px;background:rgba(255,255,255,.055);color:#8da4b7}.conversation-search:focus-within{border-color:rgba(139,174,207,.55);background:rgba(255,255,255,.09)}.conversation-search input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:#fff;font:inherit;font-size:11px}.conversation-search input::placeholder{color:#7891a5}
.conversation-history-list{display:flex;min-height:0;flex:1;flex-direction:column;gap:3px;overflow:auto;padding:1px 2px 8px}.conversation-history-item{width:100%;border:0;border-radius:9px;background:transparent;padding:9px 10px;color:#a9bdcd;text-align:left}.conversation-history-item:hover{background:rgba(255,255,255,.06);color:#fff}.conversation-history-item.active{background:#1b4568;color:#fff}.conversation-history-item strong,.conversation-history-item small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.conversation-history-item strong{font-size:11px}.conversation-history-item small{margin-top:4px;color:#7895aa;font-size:9px}.conversation-history-item.active small{color:#a9c0d1}.conversation-history-empty{margin:12px 8px;color:#718ba0;font-size:10px;line-height:1.6;text-align:center}
.course-sidebar-view{gap:3px;overflow:auto;padding:1px 2px 8px}.course-folder-row,.course-resource-folder{width:100%;display:grid;grid-template-columns:19px minmax(0,1fr) auto;align-items:center;gap:7px;border:0;border-radius:9px;background:transparent;padding:9px 10px;color:#c5d5e1;text-align:left;font:inherit;cursor:pointer}.course-folder-row:hover,.course-resource-folder:hover{background:rgba(255,255,255,.06);color:#fff}.course-folder-icon{position:relative;width:15px;height:11px;border:1.5px solid #89a5b8;border-radius:2px}.course-folder-icon:before{content:"";position:absolute;left:-1.5px;top:-5px;width:7px;height:4px;border:1.5px solid #89a5b8;border-bottom:0;border-radius:2px 2px 0 0}.course-folder-row strong,.course-resource-folder strong{font-size:11px}.course-folder-row>b{color:#7892a6;font-size:13px}.course-folder-row[aria-expanded="false"]>b{transform:rotate(-90deg)}.course-folder-children{display:grid;gap:2px;margin-left:16px;padding-left:7px;border-left:1px solid rgba(255,255,255,.1)}.course-folder-children[hidden]{display:none}.course-resource-folder{grid-template-columns:19px minmax(0,1fr);color:#9fb5c5}.course-resource-folder.active{background:#1b4568;color:#fff}.course-resource-folder.active .course-folder-icon,.course-resource-folder.active .course-folder-icon:before{border-color:#d7e8f4}.course-folder-empty{margin:12px 8px;color:#718ba0;font-size:10px;line-height:1.6;text-align:center}
.course-sidebar-view{scrollbar-width:thin;scrollbar-color:#5e788c transparent}.course-sidebar-view::-webkit-scrollbar{width:7px}.course-sidebar-view::-webkit-scrollbar-track,.course-sidebar-view::-webkit-scrollbar-corner{background:transparent}.course-sidebar-view::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:999px;background:#5e788c;background-clip:padding-box}.course-sidebar-view::-webkit-scrollbar-thumb:hover{background:#7892a6;background-clip:padding-box}.course-sidebar-view::-webkit-scrollbar-button{display:none;width:0;height:0}
@media(max-width:760px){#studentApp .conversation-history-panel{display:none}}
.math-formula.math-display{display:block;max-width:100%;margin:14px 0;overflow-x:auto;overflow-y:hidden;padding:6px 2px;text-align:center}.math-formula.math-inline{display:inline-block;max-width:100%;vertical-align:-.08em}.math-formula .katex-display{margin:0}

/* 聊天回答中的 Markdown 表格：表头与各列内容共用同一左边界。 */
.assistant-bubble table{width:100%;margin:10px 0 12px;border-collapse:collapse;table-layout:auto}
.assistant-bubble th,.assistant-bubble td{padding:3px 14px 3px 0;text-align:left;vertical-align:top}
.assistant-bubble th:last-child,.assistant-bubble td:last-child{padding-right:0}

/* 课程资料：稳定的文件夹箭头、侧栏文件列表与对话区右侧预览。 */
.course-folder-row>b{width:26px;height:26px;display:grid;place-items:center;color:#a9bfd0;font-size:24px;line-height:1;transform:rotate(90deg);transform-origin:50% 50%;transition:transform .24s cubic-bezier(.2,.75,.3,1),color .18s ease;will-change:transform}.course-folder-row:hover>b{color:#fff}.course-folder-row[aria-expanded="false"]>b{transform:rotate(0deg)}
.course-material-list{display:grid;gap:4px;margin-top:7px;padding-top:7px;border-top:1px solid rgba(255,255,255,.08)}.course-material-item{width:100%;min-width:0;display:grid;grid-template-columns:31px minmax(0,1fr) 14px;align-items:center;gap:8px;border:0;border-radius:9px;background:transparent;padding:8px;color:#b3c6d5;text-align:left;font:inherit;cursor:pointer}.course-material-item:hover{background:rgba(255,255,255,.075);color:#fff}.course-material-item>span{height:29px;border-radius:7px;display:grid;place-items:center;background:#224968;color:#dbe9f4;font-size:8px;font-weight:900}.course-material-item strong,.course-material-item small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.course-material-item strong{font-size:10px}.course-material-item small{margin-top:3px;color:#7894a9;font-size:8px}.course-material-item>b{color:#728ca0;font-size:16px}.course-folder-empty.error{color:#e4a8a8}
.workspace.course-preview-open{grid-template-columns:minmax(480px,1.15fr) minmax(430px,.85fr);gap:0}.course-preview-panel{min-width:0;height:100%;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;border-left:1px solid #dce4eb;background:#edf2f6}.course-preview-head{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:66px;padding:11px 14px 11px 18px;border-bottom:1px solid #dce4eb;background:#fff}.course-preview-head>div:first-child{min-width:0}.course-preview-head small,.course-preview-head strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.course-preview-head small{color:#698077;font-size:9px;font-weight:850;letter-spacing:.07em}.course-preview-head strong{margin-top:4px;font-size:13px}.course-preview-head>div:last-child{display:flex;align-items:center;gap:8px;flex:0 0 auto}.course-preview-download{color:#2864d7;font-size:10px;font-weight:800;text-decoration:none}.course-preview-head button{width:32px;height:32px;border:1px solid #d9e1e8;border-radius:9px;background:#fff;color:#61717f;font-size:21px;line-height:1;cursor:pointer}.course-preview-head button:hover{background:#f3f6f8}.course-preview-panel iframe{width:100%;height:100%;border:0;background:#e7edf2}.course-preview-status{display:grid;place-items:center;padding:28px;color:#748390;text-align:center;font-size:12px;line-height:1.7}
.course-preview-panel[hidden]{display:none!important}
.workspace.course-preview-open .course-preview-panel{position:relative;z-index:11;height:calc(100% + 82px);transform:translateY(-82px)}
#assistantPage.course-preview-active{overflow:visible}

/* 学生智能助教：为普通聊天状态增加完整的内容边框。 */
#studentApp .workspace:not(.course-preview-open){padding:18px 24px 22px;background:var(--bg)}
#studentApp .workspace:not(.course-preview-open) .chat-panel{width:min(1060px,100%);justify-self:center;overflow:hidden;border:1px solid #d8e1e9;border-radius:20px;box-shadow:0 12px 34px rgba(23,48,74,.05)}
#studentApp .workspace:not(.course-preview-open) .composer-wrap{border-top:1px solid #eef2f5}
@media(max-width:760px){#studentApp .workspace:not(.course-preview-open){padding:10px 12px 14px}#studentApp .workspace:not(.course-preview-open) .chat-panel{border-radius:14px}}

/* 教师课程资料库。 */
#teacherCoursesPage{overflow:auto;background:#f5f7fa}.teacher-course-page-inner{max-width:1420px}.teacher-course-layout{display:grid;grid-template-columns:minmax(360px,.72fr) minmax(520px,1.28fr);gap:16px;min-height:calc(100vh - 190px)}.teacher-course-library,.teacher-course-preview{min-width:0;border:1px solid #cbdad5;border-radius:18px;background:#fff;overflow:hidden}.teacher-course-library{padding:18px}.teacher-course-upload-card{display:grid;grid-template-columns:minmax(0,1fr) 150px auto;gap:11px;align-items:end;padding:17px;border:1px solid #d8e4e0;border-radius:14px;background:#f7faf9}.teacher-course-upload-card>div:first-child{grid-column:1/-1}.teacher-course-upload-card h4{margin:0;font-size:17px}.teacher-course-upload-card p{margin:5px 0 0;color:#74827e;font-size:10px;line-height:1.6}.teacher-course-upload-card label span{display:block;margin-bottom:6px;color:#38594f;font-size:11px;font-weight:850}.teacher-course-upload-card select{width:100%;height:42px;border:1px solid #bfd0ca;border-radius:10px;background:#fff;padding:0 10px}.teacher-course-picked-file{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#687975;font-size:10px}.teacher-course-upload-card .primary-btn{grid-column:1/-1;justify-self:end}.teacher-course-upload-card .teacher-review-message{grid-column:1/-1;margin:0}.teacher-course-filter{display:flex;gap:6px;margin:16px 0 10px}.teacher-course-filter button{border:1px solid #d6e1dd;border-radius:9px;background:#fff;padding:8px 15px;color:#687a74;font-weight:800;cursor:pointer}.teacher-course-filter button.active{border-color:#3474f3;background:#edf4ff;color:#2864d7}.teacher-course-material-list{display:grid;gap:7px}.teacher-course-material-item{width:100%;display:grid;grid-template-columns:42px minmax(0,1fr) 20px;align-items:center;gap:11px;border:1px solid #dce6e3;border-radius:12px;background:#fff;padding:12px;color:#2d433d;text-align:left;font:inherit;cursor:pointer}.teacher-course-material-item:hover{border-color:#8eafa4;background:#f8fbfa}.teacher-course-material-item>span{height:38px;border-radius:10px;display:grid;place-items:center;background:#eaf3f0;color:#2b6c5a;font-size:9px;font-weight:900}.teacher-course-material-item strong,.teacher-course-material-item small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.teacher-course-material-item strong{font-size:13px}.teacher-course-material-item small{margin-top:4px;color:#788781;font-size:10px}.teacher-course-material-item>b{color:#7d948d;font-size:18px}.teacher-course-preview{display:grid;grid-template-rows:auto minmax(0,1fr);min-height:620px;background:#edf2f0}.teacher-course-preview-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:55px;padding:12px 16px;border-bottom:1px solid #d8e2df;background:#fff}.teacher-course-preview-head a{color:#2864d7;font-size:11px;font-weight:800;text-decoration:none}.teacher-course-preview iframe{width:100%;height:100%;border:0;background:#e8edeb}
@media(max-width:1180px){.workspace.course-preview-open{grid-template-columns:minmax(420px,1fr) minmax(380px,1fr)}.teacher-course-layout{grid-template-columns:1fr}.teacher-course-preview{min-height:700px}}@media(max-width:800px){.workspace.course-preview-open{grid-template-columns:1fr}.workspace.course-preview-open .chat-panel{display:none}.workspace.course-preview-open .course-preview-panel{height:calc(100% + 70px);transform:translateY(-70px)}.course-preview-panel{border-left:0}.teacher-course-upload-card{grid-template-columns:1fr}.teacher-course-upload-card>*,.teacher-course-upload-card>div:first-child,.teacher-course-upload-card .primary-btn,.teacher-course-upload-card .teacher-review-message{grid-column:1}.teacher-course-upload-card .primary-btn{width:100%;justify-content:center}}

/* Mobile account menu must stay above the course/page header. */
@media(max-width:760px){
  .sidebar{position:relative;z-index:200}
  .topbar{z-index:10}
  .account-box{position:relative;z-index:210}
  .account-menu{position:fixed;left:auto;right:14px;top:64px;bottom:auto;width:172px;z-index:1000}
}

/* 2026-09-09 学生端信息架构：对话与课程资料归入助教、任务筛选 */
#studentApp .conversation-history-panel{display:flex}
#studentApp .conversation-history-panel[hidden]{display:none!important}
#studentApp .conversation-history-panel .new-chat-btn{flex:0 0 auto;width:100%;margin:0 0 14px;background:rgba(255,255,255,.075)}
#studentApp .workspace:not(.course-preview-open) .chat-panel{width:min(980px,100%)}
.student-task-heading-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.student-task-filters{display:flex;align-items:center;padding:3px;border:1px solid #d9e1e8;border-radius:11px;background:#fff;box-shadow:0 3px 10px rgba(23,48,74,.035)}
.student-task-filters button{height:34px;padding:0 14px;border:0;border-radius:8px;background:transparent;color:#6f7e8c;font-size:12px;font-weight:800;cursor:pointer}
.student-task-filters button:hover{color:#285fbc;background:#f3f7fc}
.student-task-filters button.active{color:#245ebd;background:#edf4ff;box-shadow:0 1px 4px rgba(36,94,189,.12)}
.task-main .task-attempts{display:inline-block;width:max-content;margin-top:7px;padding:3px 8px;border-radius:999px;background:#f1f6fb;color:#4f6f8f;font-size:11px;font-style:normal;font-weight:800}
@media(max-width:900px){.student-task-heading-actions{width:100%;justify-content:space-between}}
@media(max-width:700px){#studentApp .conversation-history-panel{display:none}.student-task-heading-actions{align-items:stretch;flex-direction:column}.student-task-filters{width:100%;display:grid;grid-template-columns:repeat(4,1fr)}.student-task-filters button{padding:0 6px}.student-task-heading-actions .secondary-btn{align-self:flex-end}}

/* 消息卡片：状态固定在右侧垂直中央，不再显示跳转箭头。 */
.student-message-card{position:relative;grid-template-columns:44px minmax(0,1fr);align-items:center;padding-right:112px}
.student-message-head strong{flex:1 1 auto}
.student-message-status{position:absolute;right:18px;top:50%;margin:0;transform:translateY(-50%)}
.student-message-arrow{display:none!important}
@media(max-width:620px){.student-message-card{grid-template-columns:38px minmax(0,1fr);padding:15px 94px 15px 15px}.student-message-status{right:14px}.student-message-head strong{flex:1 1 auto}}

/* 网站备案信息：登录页及登录后的两端均保持可见。 */
.site-registration{color:inherit;text-decoration:none;transition:color .18s ease,opacity .18s ease}
.site-registration:hover{color:#fff;opacity:1}
.login-registration{display:block;margin-top:18px;color:#73879a;font-size:11px;text-align:center}
.login-registration:hover{color:#315f86}
.sidebar-registration{display:block;margin:10px 8px 0;color:#7892a6;font-size:9px;line-height:1.5;text-align:center;opacity:.85}

/* 消息详情弹窗 */
#studentMessageDetailView{position:relative;width:min(640px,calc(100vw - 32px));max-height:calc(100dvh - 48px);box-sizing:border-box;padding:22px;border:1px solid #dce5e1;border-radius:18px;background:#fff;color:#243e35;box-shadow:0 24px 80px #173a3433;overflow:auto}
#studentMessageDetailView::backdrop{background:#152d2859}
#studentMessageDetailView #backStudentMessagesBtn{position:absolute;z-index:2;top:18px;right:20px;display:grid;width:32px;height:32px;margin:0;padding:0;place-items:center;border:0;border-radius:50%;background:transparent;color:#47685d;font-size:21px;line-height:1;cursor:pointer}
#studentMessageDetailView #backStudentMessagesBtn:hover{background:#edf4f1;color:#214d3f}
#studentMessageDetailView #backStudentMessagesBtn:focus-visible{outline:2px solid #34705f;outline-offset:2px}
.message-detail-card header{padding-bottom:22px;border-bottom:1px solid #dfe7e3}
.message-detail-badges{display:flex;gap:8px;flex-wrap:wrap;padding-right:42px}
.message-detail-badges>span{padding:4px 9px;border:1px solid #bad5cb;border-radius:6px;background:#edf6f1;color:#286750;font-size:12px}
.message-detail-badges>.warning{background:#fff4df;border-color:#efd39b;color:#956000}
.message-detail-badges>.success{background:#e6f5ec;border-color:#bbdfcb;color:#197246}
.message-detail-badges>.muted{background:#f2f4f3;border-color:#dce2df;color:#66776f}
.message-detail-card h3{font-size:21px;line-height:1.55;margin:12px 0 8px;overflow-wrap:anywhere}
.message-detail-card time{font-size:12px;color:#76877e}
.message-detail-section{margin-top:24px}.message-detail-section h4{display:flex;align-items:center;gap:12px;font-size:14px;margin:0 0 14px}.message-detail-section h4:after{content:"";height:1px;flex:1;background:#dfe7e3}
.message-feedback{padding:18px;border:1px solid #dfe7e3;border-radius:12px;background:#f8faf9;line-height:1.9;overflow-wrap:anywhere}
.message-detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.message-detail-grid>div{padding:16px 12px;border:1px solid #dfe7e3;border-radius:11px;background:#f8faf9}.message-detail-grid span{display:block;font-size:12px;color:#76877e;margin-bottom:8px}.message-detail-grid b{font-size:14px;font-weight:500;overflow-wrap:anywhere}
.message-detail-actions,.message-decision-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}.message-detail-actions:empty{display:none}.message-detail-actions button{flex:0 0 auto;width:auto;min-height:42px;padding-inline:18px}.message-detail-error{color:#b03a32}.team-request-card[role="button"]{cursor:pointer}.team-request-card[role="button"]:focus-visible{outline:2px solid #34705f;outline-offset:3px}
@media(max-width:520px){#studentMessageDetailView{padding:18px;width:calc(100vw - 24px)}#studentMessageDetailView #backStudentMessagesBtn{top:14px;right:14px}.message-detail-grid{grid-template-columns:1fr}.message-detail-card h3{font-size:19px}}
