@font-face{font-family:ShuwenTimesLatin;src:local("Times New Roman");font-weight:400;font-style:normal;unicode-range:U+0020-007E,U+00A0-024F,U+1E00-1EFF}
@font-face{font-family:ShuwenTimesLatin;src:local("Times New Roman Bold");font-weight:700;font-style:normal;unicode-range:U+0020-007E,U+00A0-024F,U+1E00-1EFF}
@font-face{font-family:ShuwenTimesLatin;src:local("Times New Roman Italic");font-weight:400;font-style:italic;unicode-range:U+0020-007E,U+00A0-024F,U+1E00-1EFF}
@font-face{font-family:ShuwenTimesLatin;src:local("Times New Roman Bold Italic");font-weight:700;font-style:italic;unicode-range:U+0020-007E,U+00A0-024F,U+1E00-1EFF}
:root{--ink:#152d52;--muted:#8391a5;--line:#e0e9f3;--blue:#275b94;--deep:#1c3658;--pale:#edf6ff;--gold:#c19851;--shadow:0 8px 28px #557ba509}*{box-sizing:border-box}body{margin:0;color:var(--ink);font:15px/1.55 ShuwenTimesLatin,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",Arial,sans-serif;background:#eef6ff}button,input,select,textarea{font:inherit;color:inherit}button,a,input,select,textarea,[contenteditable]{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}button:disabled{opacity:.45;cursor:not-allowed}[hidden]{display:none!important}svg{width:23px;height:23px;stroke:currentColor;stroke-width:1.55;fill:none;stroke-linecap:round;stroke-linejoin:round}.sidebar{width:220px;position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;color:#f3f7fd;background:linear-gradient(140deg,#1d3a5b,#182c46 85%);z-index:20}.brand{display:block;padding:40px 24px 30px;white-space:nowrap}.brand strong{font:29px/1.35 ShuwenTimesLatin,Georgia,"Songti SC",STSong,serif;letter-spacing:1px}.brand span{display:block;color:#95b5d9;font:14px/1.6 ShuwenTimesLatin,Georgia,serif;letter-spacing:.7px;margin-top:3px}.sidebar nav>a{display:flex;gap:15px;align-items:center;padding:16px 24px;min-height:55px;color:#c6d8ed;border-left:4px solid transparent}.sidebar nav>a:hover{background:#ffffff09}.sidebar nav>a.selected{border-left-color:#68a7ed;background:linear-gradient(90deg,#719cc54a,#5e81ac17);color:#fff}.sidebar nav>a b{font:20px ShuwenTimesLatin,Georgia,"Songti SC",STSong,serif;font-weight:500;letter-spacing:1px}.sidebar nav>a small{display:block;font:12px ShuwenTimesLatin,Georgia,serif;letter-spacing:.4px;margin-top:4px}.sidebar nav svg{width:24px;flex-shrink:0}.side-footer{margin-top:auto;padding:20px 28px 28px;color:#c2d0e0;font:12px/1.9 ShuwenTimesLatin,Georgia,serif}.languages{display:flex;justify-content:space-between;border-top:1px solid #ffffff25;padding-top:20px;margin-bottom:24px}.languages button{border:0;background:none;color:#c9d5e5;padding:5px;font-size:22px;opacity:.7}.languages button.active{opacity:1}.languages button span{display:block;font:12px/1.6 ShuwenTimesLatin,Arial,sans-serif;margin-top:3px}.main{position:relative;margin-left:220px;padding:20px 26px 10px;min-height:100vh;background:radial-gradient(ellipse 70% 70% at 90% 15%,#e5f2ff 0,transparent 68%),linear-gradient(112deg,#f4faff,#eaf4ff 65%,#eff7ff);overflow:hidden}.main:before{content:"";pointer-events:none;position:absolute;width:580px;height:120px;right:-130px;top:-52px;border:1px solid #c3def745;border-radius:50%;transform:rotate(12deg);box-shadow:0 22px #d6e9fc44,0 45px #e1effb66}.page-header{position:relative;display:flex;justify-content:space-between;gap:20px;align-items:flex-start;padding:0 18px 16px}.breadcrumbs{font:15px/1.6 ShuwenTimesLatin,Georgia,"Songti SC",serif;letter-spacing:1px;margin-bottom:10px;color:#4e6581}.eyebrow{margin:0 0 4px;font:12px/1.6 ShuwenTimesLatin,Georgia,serif;color:#c09a58;letter-spacing:3px}.page-header h1{margin:0;font:600 clamp(30px,3vw,42px)/1.4 ShuwenTimesLatin,Georgia,"Songti SC",STSong,serif;letter-spacing:2px;color:#102b52}.page-header h1 small{font:19px/1.4 ShuwenTimesLatin,Georgia,serif;letter-spacing:.3px;color:#6f8ab3;margin-left:18px;font-weight:400}.description{margin:2px 0 0;font:17px/1.6 ShuwenTimesLatin,Georgia,"Songti SC",serif;letter-spacing:.6px;color:#536b8b}.top-actions{display:flex;gap:18px;align-items:center;padding-top:0;white-space:nowrap}.view-pill{display:inline-flex;gap:8px;align-items:center;padding:9px 12px;border:1px solid #92aac6;border-radius:8px;background:#ffffff8c;font:600 14px ShuwenTimesLatin,Georgia,"Songti SC",serif}.view-pill svg{width:21px}.avatar{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:linear-gradient(145deg,#e1eaf5,#a9c4e4);color:#375d87;font-size:16px;flex-shrink:0}.avatar.small{width:29px;height:29px;font-size:14px}.top-actions details{position:relative}.top-actions summary{list-style:none;display:flex;gap:11px;align-items:center;cursor:pointer;font:600 14px ShuwenTimesLatin,Georgia,"Songti SC",serif}.top-actions summary::-webkit-details-marker{display:none}.chevron{padding-left:1px}.account-dropdown{position:absolute;right:0;top:45px;background:white;border:1px solid var(--line);border-radius:8px;padding:6px;min-width:150px;z-index:50;box-shadow:0 12px 35px #15375d20}.account-dropdown button{display:block;width:100%;border:0;background:none;padding:10px;text-align:left;border-radius:5px}.account-dropdown button:hover{background:#eff5fc}.bell{position:relative;border:0;background:none;padding:7px;color:#8c929a;line-height:0;flex-shrink:0}.bell svg{width:22px;height:22px;stroke-width:1.35}.bell i{position:absolute;right:6px;top:5px;width:6px;height:6px;background:#3470d6;border-radius:50%;box-shadow:0 0 0 2px #eef6ff}.teacher-grid{display:grid;grid-template-columns:minmax(460px,1.17fr) minmax(400px,1fr);gap:15px;align-items:start}.right-column{display:grid;gap:15px}.card{position:relative;background:#ffffffed;border:1px solid #e1edfb;border-radius:13px;padding:20px 27px;box-shadow:var(--shadow);min-width:0}.card-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}.card h2{margin:0;font:600 24px/1.4 ShuwenTimesLatin,Georgia,"Songti SC",STSong,serif;letter-spacing:1px}.status,.tag{display:inline-flex;align-items:center;justify-content:center;font:13px/1.3 ShuwenTimesLatin,Georgia,"Songti SC",serif;padding:6px 12px;border-radius:20px;white-space:nowrap}.status.neutral{color:#8490a0;background:#f5f7fa;border-radius:8px}.status.neutral:before{content:"";width:7px;height:7px;background:#a6b3c8;border-radius:50%;margin-right:8px}.status.warm{background:#fff5e2;color:#b58c44}.status.green{background:#eaf6f0;color:#3e8a68}.status.gray{background:#eef1f5;color:#8491a2}.tag{background:#e8f3ff;color:#386b9d;padding:4px 12px}.compose-card label:not(.check){display:block;font:600 16px/1.5 ShuwenTimesLatin,Georgia,"Songti SC",STSong,serif;margin:0 0 14px}.compose-card label>span{display:block;margin-bottom:7px}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:25px}.compose-card input:not([type=checkbox]),select,.dialog input,.settings-card input{width:100%;height:38px;border:1px solid #dbe3ed;border-radius:7px;padding:6px 12px;background:#fff;outline:none;box-shadow:0 1px 3px #24456e03}.compose-card input:focus,select:focus,.dialog input:focus,textarea:focus{border-color:#7399c6;box-shadow:0 0 0 3px #6397cf13}.compose-card input[readonly],select:disabled{background:#fbfcff;opacity:1;color:#4d617b}.compose-card input::placeholder,.editor:empty:before,textarea::placeholder{color:#9daac0;font-weight:400}.rich-editor{border:1px solid #d6dfeb;border-radius:7px;overflow:hidden;margin-top:-7px;background:#fff}.toolbar{display:flex;align-items:center;gap:16px;border-bottom:1px solid #dce6f1;background:linear-gradient(#fafbfd,#f2f5f9);padding:7px 14px;height:43px}.toolbar button{padding:0 4px;border:0;background:none;min-width:24px;font:19px ShuwenTimesLatin,Georgia,serif;height:27px;line-height:27px;color:#152f54}.toolbar button:hover{background:#dce8f6;border-radius:4px}.toolbar>span{height:20px;border-left:1px solid #d7e0ed;margin-left:-8px}.editor{min-height:230px;padding:18px 20px;outline:none;line-height:1.85;font-family:ShuwenTimesLatin,Georgia,"Songti SC",STSong,serif;white-space:pre-wrap;overflow-wrap:anywhere}.editor:empty:before{content:attr(placeholder);font-size:15px}.editor p{margin:0 0 8px}.attachment-line{display:flex;gap:12px;align-items:center;margin-top:9px;flex-wrap:wrap}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:7px;padding:9px 17px;font:600 14px/1.4 ShuwenTimesLatin,Georgia,"Songti SC",STSong,serif;letter-spacing:.3px;background:white;cursor:pointer}.button.primary{background:linear-gradient(130deg,#264b73,#193557);color:white;border-color:#173558;box-shadow:0 2px 5px #223f6b14}.button.primary:hover{background:#315983}.button.secondary{border-color:#cdd9e9;color:#34547c;background:#fff}.button.secondary:hover{background:#f4f8ff}.button.text{padding-left:0;background:none;color:#6b83a1}.button.small{padding:6px 10px;font:12px/1.4 ShuwenTimesLatin,-apple-system,sans-serif}.button.wide{width:100%}.paperclip{font:23px/1 ShuwenTimesLatin,Georgia,serif}.subtle{font-size:12px;line-height:1.7;color:#92a0b4}.file-chips{display:flex;gap:7px;flex-wrap:wrap;margin:7px 0 14px}.file-chip{display:flex;align-items:center;gap:8px;border:1px solid #dee7f2;border-radius:6px;background:#f5f8fc;padding:6px 9px;font-size:12px;max-width:100%}.file-chip>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:240px}.file-chip .file-symbol{font-size:16px;color:#d85a5a}.file-chip button{border:0;background:none;color:#506e94;padding:0 2px;font-size:19px}.deadline-label{display:flex!important;align-items:center;gap:13px;flex-wrap:wrap}.deadline-label>span{margin:0!important}.deadline-label input{max-width:255px;font-family:ShuwenTimesLatin,-apple-system,sans-serif}.deadline-label small{font:11px/1.4 ShuwenTimesLatin,sans-serif}.check{display:flex;align-items:center;gap:10px;font:15px/1.5 ShuwenTimesLatin,Georgia,"Songti SC",serif}.check input{width:19px;height:19px;accent-color:#284f79}.form-actions{display:flex;justify-content:flex-end;gap:12px;padding-top:16px;margin-top:12px;border-top:1px solid #edf0f6}.form-actions .text{margin-right:auto}.form-actions .button{min-width:112px}.form-actions .text{min-width:0;font-size:12px}.messages-card{padding:20px}.messages-card .card-heading{margin-bottom:12px}.card-heading select{max-width:155px;height:35px;font:13px ShuwenTimesLatin,Georgia,"Songti SC",serif}.preview-label{background:linear-gradient(90deg,#e4f1ff,#e8f5ff);border-radius:9px 9px 0 0;padding:8px 19px;font:600 14px ShuwenTimesLatin,Georgia,"Songti SC",serif;color:#3b6d9e;letter-spacing:.5px}.assignment-preview,.assignment-detail{padding:15px 19px 16px;border:1px solid #e6eef9;border-top:0;border-radius:0 0 8px 8px}.assignment-title-line{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.assignment-title-line h3,.assignment-detail h3{font:600 21px/1.5 ShuwenTimesLatin,Georgia,"Songti SC",STSong,serif;margin:0;letter-spacing:.4px;overflow-wrap:anywhere}.assignment-title-line>.status{font-size:11px;padding:6px 9px;margin-top:7px}.tags{display:flex;gap:10px;align-items:center;margin:5px 0 10px}.author-line{display:flex;align-items:center;gap:11px;font:14px/1.6 ShuwenTimesLatin,Georgia,"Songti SC",serif;margin:12px 0 8px}.author-line>.subtle{border-left:1px solid #e0e7f1;padding-left:12px;font:12px ShuwenTimesLatin,Georgia,"Songti SC",serif}.formatted{font:15px/1.8 ShuwenTimesLatin,Georgia,"Songti SC",STSong,serif;overflow-wrap:anywhere}.formatted p{margin:5px 0}.formatted ul,.formatted ol{padding-left:24px;margin:6px 0}.formatted a{color:#3477b9;text-decoration:underline}.formatted blockquote{border-left:3px solid #bbd6f4;padding:2px 13px;margin:8px 0;color:#5c7696}.empty-text{color:#9aa8ba}.attachments{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.attachment-link{display:inline-flex;align-items:center;gap:8px;max-width:100%;border-radius:6px;background:#f0f6ff;padding:7px 10px;font-size:12px;overflow-wrap:anywhere}.attachment-link .file-symbol{color:#df5656;font-size:18px}.attachment-media{width:100%;margin:8px 0}.attachment-media img{max-width:100%;max-height:260px;object-fit:contain;border-radius:8px;background:#f5f8fc}.attachment-media video{width:100%;max-height:300px;background:#142a43;border-radius:8px}.attachment-media audio{width:100%;height:38px}.replies{border-top:1px solid #e3eaf5;margin-top:15px;padding-top:6px;max-height:360px;overflow:auto}.reply{padding:9px 0}.reply .author-line{margin:0 0 5px}.reply-body{background:#f2f5f9;border-radius:7px;padding:9px 13px;margin-left:40px;font:14px/1.8 ShuwenTimesLatin,Georgia,"Songti SC",serif;overflow-wrap:anywhere}.reply.teacher .reply-body{background:#eef6ff}.reply .time{font:10px ShuwenTimesLatin,sans-serif;color:#9baabd}.reply-form{margin-top:15px}.reply-form textarea{width:100%;min-height:67px;resize:vertical;border:1px solid #d7e1ee;border-radius:7px;padding:12px;outline:none;background:#fff;font:14px/1.6 ShuwenTimesLatin,Georgia,"Songti SC",serif}.reply-actions{display:flex;justify-content:space-between;gap:10px;margin-top:6px}.reply-actions .primary{min-width:80px}.quick-list{display:flex;gap:8px;overflow:auto;padding-top:12px}.quick-item{max-width:190px;flex-shrink:0;padding:7px 11px;border:1px solid #e4edf8;border-radius:7px;background:#f8fbff;text-align:left;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.quick-item.selected{background:#e7f2ff;border-color:#bdd7f4}.status-card{min-height:165px}.tabs{display:flex;gap:20px}.tabs button{border:0;background:none;color:#97a5b8;padding:7px 0;font:13px ShuwenTimesLatin,Georgia,"Songti SC",serif;white-space:nowrap}.tabs button.active{border-bottom:2px solid #2d4d73;color:#2d4d73}.empty-state{text-align:center;color:#90a0b8;padding:20px 10px}.empty-state p{font:14px/1.8 ShuwenTimesLatin,Georgia,"Songti SC",serif;margin:9px 0}.empty-state h3{font-size:16px;font-weight:500}.empty-icon{display:block;font:36px ShuwenTimesLatin,Georgia;color:#bdcbdc;line-height:1.3}.status-row{display:flex;justify-content:space-between;gap:14px;padding:12px 0;border-top:1px solid #edf2f8;font-size:13px}.status-row:first-child{border-top:0}.status-row button{border:0;background:none;color:#2d5c8e;padding:0;text-align:left;font-weight:500}.notice{padding:12px 17px;border-radius:8px;background:#fff5df;border:1px solid #f4e2b8;color:#927139;font-size:13px;margin-bottom:15px}.notice.error{background:#fff1ef;border-color:#f3cdc5;color:#ae4e43}.page-footer{text-align:right;padding:12px 5px 0;font:11px/1.5 ShuwenTimesLatin,Georgia,"Songti SC",serif;letter-spacing:.4px;color:#a1afc2}.login-card{max-width:960px;min-height:480px;margin:35px auto 80px;display:grid;grid-template-columns:1fr 1fr;border-radius:15px;overflow:hidden;box-shadow:0 20px 80px #4a75a316;background:white}.login-art{padding:52px 35px;background:linear-gradient(145deg,#284c70,#162d48);color:#d7e8fa;display:flex;flex-direction:column;justify-content:space-between}.login-art>p:first-child{font:12px ShuwenTimesLatin,Georgia;letter-spacing:2px;color:#b6cce2}.login-art h2{font:34px/1.55 ShuwenTimesLatin,Georgia,"Songti SC",serif;letter-spacing:1px}.login-art>p:last-child{font-size:13px;color:#a9c3de}.login-form{padding:48px 40px}.login-form h2{font:27px ShuwenTimesLatin,Georgia,"Songti SC",serif;margin:8px 0 25px}.login-form label,.dialog label,.settings-card label{display:block;font-size:14px;margin:15px 0}.login-form label input{width:100%;border:1px solid #d6e1ed;border-radius:7px;padding:11px 12px;display:block;margin-top:7px;outline:none}.form-error{color:#b65248;font-size:13px;min-height:6px}.dialog{padding:27px;border:1px solid #d6e4f3;border-radius:13px;box-shadow:0 20px 80px #17345630;width:min(480px,94vw);color:var(--ink)}.dialog::backdrop{background:#12294466;backdrop-filter:blur(3px)}.dialog input,.dialog select,.settings-card input{display:block;margin-top:6px}.dialog h2{font:23px ShuwenTimesLatin,Georgia,"Songti SC",serif;margin:0}.dialog .two-columns{gap:15px}.close-button{border:0;background:none;color:#7891ad;font-size:25px;padding:0 4px}.dialog .check{display:flex}.dialog .check input{width:auto;margin:0}.dialog pre{white-space:pre-wrap;overflow-wrap:anywhere;border:1px solid #dbe7f5;border-radius:7px;padding:14px;background:#f5f9ff;font:14px/1.8 ShuwenTimesLatin,monospace}.dialog .notice{margin-top:12px}.student-top{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:6px 0 20px}.back-link{font-size:13px;color:#6281a5}.notification-settings{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:12px;color:#7890ac}.student-grid{display:grid;grid-template-columns:minmax(280px,.7fr) minmax(430px,1.3fr);gap:18px;align-items:start}.assignment-row{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid #e8eef6;background:none;padding:17px 0;color:var(--ink)}.assignment-row.active{background:#f0f7ff;margin:0 -12px;padding:17px 12px;width:calc(100% + 24px);border-radius:8px}.assignment-row h3{font:600 18px/1.5 ShuwenTimesLatin,Georgia,"Songti SC",serif;margin:0 0 7px;overflow-wrap:anywhere}.assignment-row .meta{font-size:12px;color:#8a9bb0;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.assignment-row .snippet{color:#8a98ad;font-size:13px;line-height:1.8;margin:8px 0}.unread-dot{width:6px;height:6px;background:#3570d4;border-radius:50%;display:inline-block;vertical-align:middle;margin-left:8px}.receipt-actions{display:flex;gap:10px;padding:14px 0 4px;flex-wrap:wrap}.detail-meta{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:12px;color:#8a9db4;margin:10px 0 17px}.detail-tools{display:flex;gap:10px;justify-content:flex-end;margin-bottom:12px}.admin-tabs{display:flex;gap:24px;margin:10px 0 22px;padding:0 12px}.admin-tabs button{border:0;background:none;padding:10px 0;color:#879cb6}.admin-tabs button.active{color:#284d79;border-bottom:2px solid #284d79}.table-wrap{overflow:auto;margin-top:18px}table{width:100%;border-collapse:collapse;font-size:13px;text-align:left}th{background:#f4f8fd;color:#7791b0;font-weight:500;padding:13px 10px;white-space:nowrap}td{padding:15px 10px;border-bottom:1px solid #e6edf6;white-space:nowrap}td .button{margin:2px}.settings-card{max-width:700px}.settings-card input{height:41px}.settings-card hr{border:0;border-top:1px solid #e0e9f4;margin:26px 0}.settings-card p{font-size:13px;color:#7c90a9}.student-detail-card{min-height:350px}#toast{position:fixed;bottom:25px;left:calc(50% + 90px);transform:translateX(-50%);z-index:200;background:#213e60;color:white;padding:12px 24px;border-radius:8px;box-shadow:0 8px 30px #203f6328;font-size:14px;max-width:80vw}body[data-role=admin] .sidebar .brand strong{font-size:25px}body[data-role=admin] .sidebar nav>a{padding:11px 20px;font-size:13px;gap:11px}body[data-role=admin] .sidebar nav>a b{font-size:15px}body[data-role=admin] .sidebar nav>a small{display:none}body[data-role=admin] #account-menu,body[data-role=student] #account-menu{display:none}
@media(min-width:1700px){.main{padding:25px 40px}.teacher-grid{gap:20px}.card{padding:25px 28px}.editor{min-height:280px}.page-header{padding-bottom:24px}}@media(max-width:1250px){.sidebar{width:190px}.main{margin-left:190px;padding:20px 18px}.brand{padding:32px 20px}.brand strong{font-size:24px}.page-header h1 small{display:block;margin:0;font-size:16px}.teacher-grid{grid-template-columns:minmax(350px,1.05fr) minmax(340px,1fr)}.card{padding:18px}.two-columns{gap:13px}.top-actions{gap:10px}.view-pill{font-size:12px;padding:8px}.page-header h1{font-size:33px}.description{font-size:14px}.toolbar{gap:12px}.form-actions{gap:7px}.form-actions .button{min-width:90px;padding:9px 12px}.tabs{gap:12px}.student-top{align-items:flex-start;flex-direction:column}}@media(max-width:1000px){.teacher-grid{grid-template-columns:1fr}.right-column{grid-template-columns:1fr}.student-grid{grid-template-columns:1fr}.editor{min-height:210px}.page-header{padding:0 0 20px}.top-actions{gap:9px}.view-pill{display:none}.card-heading{margin-bottom:14px}.assignment-title-line .status{white-space:normal}.main{padding-bottom:25px}}@media(max-width:650px){.sidebar{position:relative;width:auto;display:block}.brand{padding:15px 20px}.brand strong{font-size:23px}.brand span{display:inline;font-size:11px;margin-left:14px}.sidebar nav{display:flex;overflow:auto}.sidebar nav>a{padding:10px 16px;white-space:nowrap;border-left:0;border-bottom:3px solid transparent;min-height:45px}.sidebar nav>a.selected{border-bottom-color:#73a8e4}.sidebar nav>a b{font-size:16px}.sidebar nav>a small{display:none}.sidebar nav svg{width:20px}.side-footer{padding:0}.side-footer>p{display:none}.languages{position:absolute;right:10px;top:10px;margin:0;border:0;padding:0;gap:5px}.languages button{font-size:18px;padding:4px}.languages button span{display:none}.main{margin:0;padding:18px 12px}.page-header{gap:8px}.page-header h1{font-size:28px;letter-spacing:.6px}.page-header h1 small{font-size:14px;margin-top:3px}.breadcrumbs{font-size:12px;margin-bottom:5px}.eyebrow{font-size:9px;letter-spacing:2px}.description{font-size:12px}.top-actions{padding-top:5px;gap:5px}#user-name,.chevron{display:none}.avatar{width:29px;height:29px;font-size:13px}.bell{padding:5px}.card{padding:17px 15px}.card h2{font-size:21px}.messages-card{padding:16px 13px}.two-columns{gap:12px}.compose-card label:not(.check){font-size:14px}.assignment-preview,.assignment-detail{padding:13px 12px}.assignment-title-line{display:block}.assignment-title-line h3{font-size:19px}.assignment-title-line>.status{margin:6px 0}.form-actions .button{min-width:80px;font-size:12px;padding:9px 10px}.form-actions .text{min-width:0;font-size:11px}.attachment-line .subtle{font-size:10px}.deadline-label input{width:100%;max-width:none}.editor{font-size:14px;padding:14px;min-height:200px}.tabs{gap:13px}.tabs button{font-size:12px}.status-row{font-size:12px}.login-card{grid-template-columns:1fr;margin:10px 0 30px}.login-art{padding:22px 25px}.login-art h2{font-size:25px;margin:14px 0}.login-art>p:last-child{display:none}.login-form{padding:27px}.notification-settings .button{padding:8px 10px;font-size:12px}#toast{left:50%;font-size:12px;width:max-content;max-width:90vw}.sidebar nav>a{flex-shrink:0}body[data-role=admin] .sidebar nav>a{padding:10px 12px}body[data-role=admin] .sidebar nav>a:not(.selected){display:none}.student-detail-card{min-height:260px}}

body[data-role=admin] .admin-entry-tools{display:flex;justify-content:space-between;gap:15px;margin-bottom:18px;font-size:13px}body[data-role=admin] .admin-entry-tools a{color:#52739b;text-decoration:none}body[data-role=admin] .admin-filters{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0}body[data-role=admin] .admin-filters input{flex:1;min-width:160px}body[data-role=admin] .admin-filters select{width:auto;min-width:100px}.admin-work-dialog{width:min(780px,94vw);max-width:780px;max-height:90vh;overflow:auto}.admin-work-dialog .editor{min-height:180px}

body[data-role=teacher] .sidebar nav>a b{font-size:18px}body[data-role=teacher] .sidebar nav>a small{font-size:10px}
@media(max-width:650px){body[data-role=teacher] .sidebar nav>a b{font-size:14px}}

/* Arial for Latin text and digits; retain the existing CJK fallback. */
body[data-role=teacher],body[data-role=teacher] button,body[data-role=teacher] input,body[data-role=teacher] select,body[data-role=teacher] textarea,body[data-role=teacher] .brand strong,body[data-role=teacher] .brand span,body[data-role=teacher] .sidebar nav>a b,body[data-role=teacher] .sidebar nav>a small,body[data-role=teacher] .side-footer,body[data-role=teacher] .languages button span,body[data-role=teacher] .breadcrumbs,body[data-role=teacher] .eyebrow,body[data-role=teacher] .page-header h1,body[data-role=teacher] .page-header h1 small,body[data-role=teacher] .description,body[data-role=teacher] .view-pill,body[data-role=teacher] .top-actions summary,body[data-role=teacher] .card h2,body[data-role=teacher] .status,body[data-role=teacher] .tag,body[data-role=teacher] .compose-card label,body[data-role=teacher] .card-heading select,body[data-role=teacher] .editor,body[data-role=teacher] .assignment-row h3,body[data-role=teacher] .assignment-title-line h3,body[data-role=teacher] .login-art h2,body[data-role=teacher] .login-form h2{font-family:ShuwenTimesLatin,Arial,"Songti SC",STSong,"PingFang SC",sans-serif}

body[data-role=teacher] #assignment-drop-zone{padding:12px;border:1px dashed #b7cfe8;border-radius:9px;min-height:70px;transition:background .15s,border-color .15s}body[data-role=teacher] #assignment-drop-zone.drag-over{background:#e5f1ff;border-color:#3478bd;box-shadow:0 0 0 3px #3478bd20}

.upload-progress{margin:10px 0 16px;padding:12px 14px;border:1px solid #cbdff3;border-radius:9px;background:#f5faff;font:13px/1.5 ShuwenTimesLatin,Arial,"PingFang SC",sans-serif}.upload-progress-heading{display:flex;justify-content:space-between;gap:16px}.upload-file-name{overflow-wrap:anywhere;min-width:0}.upload-percent{flex-shrink:0;color:#275b94}.upload-progress progress{display:block;width:100%;height:9px;margin:9px 0;accent-color:#3478bd;border:0;border-radius:6px;overflow:hidden}.upload-progress progress::-webkit-progress-bar{background:#e0eaf6;border-radius:6px}.upload-progress progress::-webkit-progress-value{background:#3478bd;border-radius:6px;transition:width .15s}.upload-progress-status{color:#6c84a2;font-size:12px}

.bell i.has-count{width:auto;min-width:16px;height:16px;padding:0 4px;right:0;top:0;border-radius:9px;color:#fff;font:normal 10px/16px ShuwenTimesLatin,Arial,sans-serif;text-align:center;white-space:nowrap;box-sizing:border-box}

.homework-page-links{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin:12px 0;font:13px/1.5 ShuwenTimesLatin,Arial,"PingFang SC",sans-serif}.homework-page-links>span{color:#7d92ae}.homework-page-links>a{padding:7px 10px;border:1px solid #cbdff3;border-radius:7px;background:#eff7ff;color:#285b91}

.empty-icon .hw-empty-paper{display:block;width:36px;height:36px;margin:0 auto;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}

/* Unauthenticated teacher portal: login card without the page heading. */
body[data-role=teacher].login-screen .page-header,
body[data-role=teacher].login-screen .page-footer,
body[data-role=teacher].login-screen .login-form>.eyebrow{display:none}
body[data-role=teacher].login-screen .main{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh}
body[data-role=teacher].login-screen .login-card{width:min(960px,100%);margin:36px auto}
body[data-role=teacher].login-screen #notice{width:min(960px,100%)}
body[data-role=teacher].login-screen .login-art>p:first-child{line-height:1.7;letter-spacing:1px;overflow-wrap:anywhere}
@media(max-width:650px){body[data-role=teacher].login-screen .main{min-height:calc(100svh - 120px)}}

body[data-role=teacher] .side-footer>p{text-align:center}

/* Teacher sidebar: reduce the existing type scale by 2px. */
body[data-role=teacher] .sidebar{font-size:13px}
body[data-role=teacher] .sidebar .brand strong{font-size:27px}
body[data-role=teacher] .sidebar .brand span{font-size:12px}
body[data-role=teacher] .sidebar nav>a b{font-size:16px}
body[data-role=teacher] .sidebar nav>a small{font-size:8px}
body[data-role=teacher] .sidebar .side-footer{font-size:10px}
body[data-role=teacher] .sidebar .languages button{font-size:20px}
body[data-role=teacher] .sidebar .languages button span{font-size:10px}
@media(max-width:1250px){body[data-role=teacher] .sidebar .brand strong{font-size:22px}}
@media(max-width:650px){body[data-role=teacher] .sidebar .brand strong{font-size:21px}body[data-role=teacher] .sidebar .brand span{font-size:9px}body[data-role=teacher] .sidebar nav>a b{font-size:12px}body[data-role=teacher] .sidebar .languages button{font-size:16px}}

/* Login artwork: full system name and copyright only. */
body[data-role=teacher].login-screen .login-art{padding-bottom:24px}
body[data-role=teacher].login-screen .login-art>.login-system-title{font:30px/1.6 "SimSun","宋体","Songti SC",STSong,serif;letter-spacing:1px;color:#d7e8fa;margin:0;overflow-wrap:anywhere}
body[data-role=teacher].login-screen .login-art>.login-art-copyright{display:block;font-size:12px;line-height:1.8;letter-spacing:0;text-align:center;color:#a9c3de;margin:48px 0 0}
@media(max-width:650px){body[data-role=teacher].login-screen .login-art>.login-system-title{font-size:24px}body[data-role=teacher].login-screen .login-art>.login-art-copyright{margin-top:36px}}
/* Center all localized system titles at one third of the blue panel. */
body[data-role=teacher].login-screen .login-art{position:relative}
body[data-role=teacher].login-screen .login-art>.login-system-title{position:absolute;left:35px;right:35px;top:33.333333%;transform:translateY(-50%);text-align:center;margin:0}
body[data-role=teacher].login-screen .login-art>.login-art-copyright{position:absolute;left:35px;right:35px;bottom:24px;margin:0}
@media(max-width:650px){body[data-role=teacher].login-screen .login-art{min-height:280px}body[data-role=teacher].login-screen .login-art>.login-system-title,body[data-role=teacher].login-screen .login-art>.login-art-copyright{left:25px;right:25px}}

/* English translation beneath the Chinese login title only. */
body[data-role=teacher].login-screen .login-system-title>.login-title-english{display:block;margin-top:10px;font:16px/1.5 "Times New Roman",serif;letter-spacing:.4px;color:#b6cce2}
html:not([lang=zh]) body[data-role=teacher].login-screen .login-system-title>.login-title-english{display:none}
@media(max-width:650px){body[data-role=teacher].login-screen .login-system-title>.login-title-english{font-size:14px}}
/* Increase sidebar English text by 2px; retain the Chinese type scale. */
body[data-role=teacher] .sidebar .brand span{font-size:14px}
html:not([lang=de]) body[data-role=teacher] .sidebar nav>a small{font-size:10px}
body[data-role=teacher] .sidebar .side-footer>p{font-size:12px}
body[data-role=teacher] .sidebar .languages button[data-language=en] span{font-size:12px}
html[lang=en] body[data-role=teacher] .sidebar .brand strong{font-size:29px}
html[lang=en] body[data-role=teacher] .sidebar nav>a b{font-size:18px}
@media(max-width:1250px){html[lang=en] body[data-role=teacher] .sidebar .brand strong{font-size:24px}}
@media(max-width:650px){body[data-role=teacher] .sidebar .brand span{font-size:11px}html[lang=en] body[data-role=teacher] .sidebar .brand strong{font-size:23px}html[lang=en] body[data-role=teacher] .sidebar nav>a b{font-size:14px}}

/* A slightly narrower OA sidebar; retain mobile top navigation. */
@media(min-width:1251px){body[data-role=teacher] .sidebar{width:200px}body[data-role=teacher] .main{margin-left:200px}}
@media(min-width:651px) and (max-width:1250px){body[data-role=teacher] .sidebar{width:180px}body[data-role=teacher] .main{margin-left:180px}}

/* Vocabulary module inside OA; original vocabulary role checks remain in its service. */
body[data-role=teacher] #vocabulary-view{width:100%}
body[data-role=teacher] #vocabulary-frame{display:block;width:100%;height:calc(100vh - 200px);min-height:620px;border:1px solid #d9e7f5;border-radius:12px;background:#fff}
.oa-module-tabs{display:flex;gap:12px;flex-wrap:wrap;margin:12px 0 20px}
#oa-vocabulary-frame{display:block;width:100%;height:calc(100vh - 230px);min-height:800px;border:1px solid #d9e7f5;border-radius:12px;background:#fff}
@media(max-width:650px){body[data-role=teacher] #vocabulary-frame{height:calc(100svh - 220px);min-height:560px}}

/* Personnel controls share the existing OA cards and typography. */
.people-table{width:100%;border-collapse:collapse}.people-table th,.people-table td{text-align:left;padding:16px;border-bottom:1px solid #d9e7f5}.people-table th{color:#6c86a9;font-size:12px;background:#f1f6ff}.people-table td small{display:block;margin-top:5px}.people-table select{min-width:110px;max-width:180px}.person-message{display:inline-block;margin-left:10px;font-size:12px;color:#496a87}.people-table th:first-child{width:28%}

/* Personnel information and account dialogs. */
.people-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.people-table{min-width:880px}.people-table th:first-child{width:21%}.people-table th,.people-table td{vertical-align:middle;overflow-wrap:anywhere}.people-table th:last-child{min-width:135px}.people-table .person-delete{color:#ad4b43}.person-dialog{max-width:620px}body[data-role=admin] #person-dialog{width:min(780px,92vw);max-width:780px}.person-dialog label{display:block;margin:14px 0}.person-dialog input,.person-dialog select{width:100%}.person-dialog label small{display:block;margin-top:6px}.person-dialog .two-columns{align-items:start}.person-dialog .two-columns label{margin:0}.person-dialog .two-columns{margin:14px 0}.people-table td{font-size:14px}

.person-history-check{display:flex;align-items:center;gap:8px}.person-history-check input{width:16px;height:16px;margin:0}#person-history-warning{color:#a45c46}

/* OA account actions sit directly to the right of the signed-in username. */
body[data-role=teacher] #account-menu:not([hidden]){display:flex;align-items:center;gap:16px;white-space:nowrap}
body[data-role=teacher] #account-menu .account-identity{display:flex;align-items:center;gap:10px;font-weight:600;font-size:14px}
body[data-role=teacher] #account-menu #user-name{display:inline}
body[data-role=teacher] #account-menu>button{border:0;background:transparent;color:inherit;padding:6px 0;font:inherit;font-size:14px;cursor:pointer}
body[data-role=teacher] #account-menu>button:hover{text-decoration:underline}
body[data-role=teacher] #account-menu>button:focus-visible{outline:2px solid #6d9ac6;outline-offset:4px;border-radius:3px}
@media(max-width:650px){body[data-role=teacher] #account-menu:not([hidden]){gap:10px}body[data-role=teacher] #account-menu .account-identity{gap:6px}}

/* Approved flag learning entries; other learning modules retain their cards. */
#learning-items>.learning-flag-entry{margin-top:24px;padding:0 4px;text-align:center}
#learning-items .learning-flag-button{display:flex;align-items:center;justify-content:center;width:100%;height:148px;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;cursor:pointer}
#learning-items .learning-flag-button:disabled{opacity:1;cursor:default}
#learning-items .learning-flag-button:focus-visible{outline:2px solid #7a9fc9;outline-offset:3px;border-radius:8px}
#learning-items .learning-flag-button>img{display:block;width:198px;height:134px;max-width:100%;object-fit:contain;border:0;border-radius:0;background:transparent;filter:drop-shadow(0 10px 7px rgba(25,52,82,.24)) drop-shadow(0 3px 2px rgba(25,52,82,.12))}
#learning-items>.learning-flag-entry>h2{margin:-3px 0 0;padding:0;font-size:17px;line-height:1.55;letter-spacing:.2px;font-weight:600;color:#17365a;text-align:center}
#learning-items .learning-flag-status{margin:7px 0 0;font-size:13px;line-height:1.6;color:#99a9be;text-align:center}

/* Soft ground shadow adds depth beneath the existing flag images. */
#learning-items .learning-flag-button{position:relative;isolation:isolate}
#learning-items .learning-flag-button:after{content:"";position:absolute;z-index:0;left:50%;bottom:17px;transform:translateX(-50%);width:74%;max-width:154px;height:10px;border-radius:50%;background:rgba(24,52,83,.17);filter:blur(7px);pointer-events:none}
#learning-items .learning-flag-button>img{position:relative;z-index:1}

/* Keep the OA page signature at the bottom, with space reserved on long pages. */
body[data-role=teacher] .main{padding-bottom:42px}
body[data-role=teacher] .main>.page-footer{position:absolute;right:26px;bottom:12px;margin:0;padding:0 5px;text-align:right}
@media(min-width:1700px){body[data-role=teacher] .main>.page-footer{right:40px}}
@media(max-width:1250px){body[data-role=teacher] .main>.page-footer{right:18px}}
@media(max-width:650px){body[data-role=teacher] .main>.page-footer{right:12px}}
