html,body{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}body{margin:0}[tabindex="-1"]:focus{outline:none}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[title],abbr[data-original-title]{-webkit-text-decoration:underline dotted;text-decoration:underline;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=text],input[type=password],input[type=number],textarea{-webkit-appearance:none}ol,ul,dl{margin-top:0;margin-bottom:1em}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}pre,code,kbd,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;text-align:left;caption-side:bottom}input,button,select,optgroup,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{padding:0;border-style:none}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}.update-page[data-v-8c6ce36c]{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--bg-grad);z-index:2000}.update-card[data-v-8c6ce36c]{width:min(90vw,400px);padding:32px 24px;border-radius:18px;background:#fffffff5;border:1px solid rgba(31,45,79,.1);box-shadow:0 12px 40px #0000001f;text-align:center}.update-logo[data-v-8c6ce36c]{font-size:28px;font-weight:800;color:#1f2d4f;margin-bottom:20px}.update-title[data-v-8c6ce36c]{font-size:18px;font-weight:600;color:#1f2d4f;margin-bottom:8px}.update-message[data-v-8c6ce36c]{margin-bottom:20px;line-height:1.5;font-size:13px;color:#5e6b86}.update-progress-wrap[data-v-8c6ce36c]{margin-bottom:8px}.update-progress-track[data-v-8c6ce36c]{width:100%;height:6px;border-radius:999px;background:#e6edf7;border:1px solid #d8e2f0;overflow:hidden}.update-progress-fill[data-v-8c6ce36c]{height:100%;border-radius:999px;background:linear-gradient(90deg,#ff8e53,#ff6b35);transition:width .25s ease}.update-progress-text[data-v-8c6ce36c]{margin-top:6px;font-size:12px;color:#8892a8}.update-action-btn[data-v-8c6ce36c]{margin-top:16px;width:100%;height:40px;border:none;border-radius:12px;background:linear-gradient(135deg,#ff8e53,#ff6b35);color:#fff;font-size:14px;font-weight:600;cursor:pointer}.update-action-btn[data-v-8c6ce36c]:active{transform:translateY(1px)}.teacher-page-loading[data-v-2f1fedef]{display:grid;min-height:200px;place-items:center;color:var(--learning-primary);background:var(--learning-surface)}.login-page[data-v-7a7a37b1]{--login-primary-rgb: 255, 107, 53;min-height:100vh;min-height:100dvh;background:var(--bg-grad)}.login-shell[data-v-7a7a37b1]{width:100%;max-width:420px;margin:0 auto;padding:calc(env(safe-area-inset-top,0px) + 20px) 16px calc(env(safe-area-inset-bottom,0px) + 20px);min-height:100%;min-height:100dvh;display:flex;flex-direction:column;justify-content:center}.login-shell--loading[data-v-7a7a37b1]{align-items:center}.brand-header[data-v-7a7a37b1]{text-align:center;margin-bottom:16px}.brand-title[data-v-7a7a37b1]{margin:0;font-size:30px;font-weight:700;color:var(--text-1);letter-spacing:.2px}.brand-subtitle[data-v-7a7a37b1]{margin-top:6px;color:var(--text-2, #6f7f92);font-size:14px}.login-card[data-v-7a7a37b1]{margin:0!important;border-radius:20px!important;border:1px solid rgba(148,163,184,.18)!important;background:#ffffffeb!important;box-shadow:0 16px 40px #0f172a14!important;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.login-card[data-v-7a7a37b1] .ant-card-body{padding:20px}.form-title[data-v-7a7a37b1]{font-size:22px;font-weight:600;color:var(--text-1);margin-bottom:4px}.form-subtitle[data-v-7a7a37b1]{margin:0 0 16px;color:var(--text-2, #6f7f92);font-size:13px}.login-form[data-v-7a7a37b1]{margin:0}.form-item[data-v-7a7a37b1]{background:#f8fafceb;border:1px solid transparent;border-radius:12px;padding:9px 12px 8px;margin-bottom:12px;transition:border-color .2s ease,box-shadow .2s ease}.form-item[data-v-7a7a37b1]:focus-within{border-color:rgba(var(--login-primary-rgb),.45);box-shadow:0 0 0 3px rgba(var(--login-primary-rgb),.12)}.field-label[data-v-7a7a37b1]{display:block;margin-bottom:5px;color:var(--text-2, #6f7f92);font-size:12px;line-height:1.1}.form-item[data-v-7a7a37b1] .ant-input,.form-item[data-v-7a7a37b1] .ant-input-affix-wrapper,.form-item[data-v-7a7a37b1] .ant-input-affix-wrapper:hover,.form-item[data-v-7a7a37b1] .ant-input-affix-wrapper-focused{background:transparent!important;border:none!important;box-shadow:none!important;padding:0!important;min-height:auto!important}.form-item[data-v-7a7a37b1] .ant-input{color:var(--text-1);font-size:15px}.form-item[data-v-7a7a37b1] .ant-input::placeholder{color:#9aa8b7}.remember-row[data-v-7a7a37b1]{margin-top:-2px;margin-bottom:8px;color:var(--text-2, #6f7f92)}.login-button[data-v-7a7a37b1]{margin-top:8px;font-weight:600;letter-spacing:.3px}.version-tag[data-v-7a7a37b1]{text-align:center;margin-top:12px;font-size:11px;color:#aab}@media(max-width:576px){.brand-title[data-v-7a7a37b1]{font-size:26px}.login-shell[data-v-7a7a37b1]{max-width:100%;padding-left:14px;padding-right:14px}.login-card[data-v-7a7a37b1]{border-radius:16px!important}}:root{--learning-bg-grad: linear-gradient(180deg, #ffe8d9 0%, #fff4ed 30%, #fffaf7 60%, #fff8f3 100%);--learning-bg: #fef8f5;--learning-surface: #ffffff;--learning-surface-soft: #fafbfc;--learning-line: #e8ecf1;--learning-line-strong: #d8dee7;--learning-shadow-1: 0 2px 8px rgba(15, 23, 42, .08);--learning-primary: #ff6b35;--learning-primary-hover: #e55f2f;--learning-primary-pressed: #d9542a;--learning-primary-soft: #fff5f2;--learning-success: #52c41a;--learning-warning: #f59e0b;--learning-danger: #ff4d4f;--learning-text-1: #0f172a;--learning-text-2: #475569;--learning-text-3: #64748b;--learning-font-family: "HarmonyOS Sans SC", "PingFang SC", "SF Pro Display", "Segoe UI", sans-serif;--learning-radius-sm: 6px;--learning-radius-md: 10px;--learning-radius-lg: 12px;--learning-touch-size: 36px;--learning-mobile-breakpoint: 767px}:root{--bg-grad: var(--learning-bg-grad);--surface: var(--learning-surface);--surface-soft: var(--learning-surface-soft);--line: var(--learning-line);--shadow-1: var(--learning-shadow-1);--primary: var(--learning-primary);--text-1: var(--learning-text-1);--text-2: var(--learning-text-2);--text-3: var(--learning-text-3)}*{box-sizing:border-box}html,body,#app{margin:0;width:100%;height:100%;min-height:100%}body{background:var(--bg-grad);overflow:hidden;-webkit-font-smoothing:antialiased}.workspace{width:100%;height:100vh;height:100dvh;overflow:hidden;display:grid;grid-template-columns:76px 280px minmax(0,1fr);transition:grid-template-columns .28s cubic-bezier(.4,0,.2,1)}.workspace.middle-collapsed{grid-template-columns:76px 0 minmax(0,1fr)}.workspace.juzi-workspace,.workspace.juzi-workspace.middle-collapsed{grid-template-columns:76px minmax(0,1fr)}.rail-sider{min-width:0;border-right:1px solid var(--line);background:var(--surface-soft)}.rail-inner{height:100%;min-height:0;display:flex;flex-direction:column;align-items:center;gap:10px;padding:calc(env(safe-area-inset-top,0px) + 12px) 8px calc(env(safe-area-inset-bottom,0px) + 12px)}.rail-brand{width:56px;height:56px;border-radius:12px;border:0;background:linear-gradient(135deg,color-mix(in srgb,var(--learning-primary) 68%,#fff),var(--learning-primary),var(--learning-primary-hover));box-shadow:0 6px 18px color-mix(in srgb,var(--learning-primary) 28%,transparent);position:relative;display:block;color:#fff;text-align:center;line-height:1;overflow:hidden;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,filter .15s ease}.rail-brand:hover{box-shadow:0 8px 20px color-mix(in srgb,var(--learning-primary) 34%,transparent)}.rail-brand:active{transform:scale(.96)}.rail-brand-main{position:absolute;left:50%;top:8px;transform:translate(-50%);font-size:8px;font-weight:800;line-height:1;opacity:.72;letter-spacing:1.1px;white-space:nowrap}.rail-brand-sub{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;min-height:16px;align-items:center;justify-content:center;font-size:16px;font-weight:900;line-height:1;white-space:nowrap}.rail-brand-sub.is-abc{letter-spacing:1px}.rail-brand-sub.is-jisuan{font-size:16px;letter-spacing:.2px}.rail-brand-role{position:absolute;left:50%;bottom:7px;transform:translate(-50%);font-size:8px;font-weight:700;line-height:1;letter-spacing:1px;opacity:.86;white-space:nowrap}.rail-user-name{width:56px;overflow:hidden;color:var(--learning-text-2);font-size:11px;font-weight:700;line-height:1.3;text-align:center;text-overflow:ellipsis;white-space:nowrap}.rail-nav{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%;min-height:0}.rail-nav-item{width:56px;min-height:56px;border-radius:12px;border:1px solid transparent;background:transparent;color:var(--learning-text-3);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:6px 4px;cursor:pointer;text-align:center;transition:all .18s ease}.rail-nav-item:hover{background:var(--learning-surface);border-color:var(--learning-line-strong);color:var(--learning-text-2)}.rail-nav-item.active{color:var(--learning-primary);border-color:color-mix(in srgb,var(--learning-primary) 34%,var(--learning-line));background:var(--learning-primary-soft);box-shadow:0 3px 10px color-mix(in srgb,var(--learning-primary) 14%,transparent)}.rail-nav-item:disabled{opacity:.6;cursor:not-allowed}.rail-nav-icon{font-size:18px;line-height:1}.rail-nav-text{width:100%;text-align:center;font-size:11px;font-weight:700;line-height:1.05}.rail-actions{margin-top:auto;width:100%;border-top:1px solid var(--line);padding-top:10px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:8px}@media(max-width:767px){.workspace{grid-template-columns:64px minmax(0,1fr);position:relative}.workspace.middle-collapsed,.workspace.juzi-workspace,.workspace.juzi-workspace.middle-collapsed{grid-template-columns:64px minmax(0,1fr)}.rail-inner{gap:6px;padding:calc(env(safe-area-inset-top,0px) + 8px) 5px calc(env(safe-area-inset-bottom,0px) + 8px)}.rail-brand,.rail-nav-item{width:52px}.rail-brand{height:52px;border-radius:11px}.rail-nav{gap:6px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none}.rail-nav::-webkit-scrollbar{display:none}.rail-nav-item{min-height:50px;border-radius:10px;gap:3px;padding:5px 3px}.rail-nav-icon{font-size:17px}.rail-nav-text{font-size:10px;line-height:1}.rail-actions{gap:6px;padding-top:7px}.list-sider{position:fixed;z-index:40;top:0;bottom:0;left:64px;width:min(280px,calc(100vw - 64px));height:100vh;height:100dvh;box-shadow:14px 0 32px #0f172a2e;opacity:1;pointer-events:auto;transform:translate(0);transition:opacity .18s ease,transform .22s cubic-bezier(.4,0,.2,1)}.workspace.middle-collapsed .list-sider{opacity:0;pointer-events:none;transform:translate(-104%)}}.list-sider{min-width:0;overflow:hidden;background:var(--surface);border-right:1px solid var(--line);transition:opacity .18s ease}.workspace.middle-collapsed .list-sider{opacity:0;pointer-events:none}.list-inner{width:280px;height:100%;display:grid;grid-template-rows:auto 1fr;min-height:0}.list-inner.list-inner-groups{display:flex;flex-direction:column;overflow-y:auto;-ms-overflow-style:none;scrollbar-width:none}.list-inner.list-inner-groups::-webkit-scrollbar{display:none}.list-inner.list-inner-groups .list-header{position:sticky;top:0;z-index:1;background:var(--surface)}@media(max-width:767px){.list-inner{width:min(280px,calc(100vw - 64px))}}.list-header{padding:12px;border-bottom:1px solid var(--line);display:grid;gap:8px}.list-title-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.list-title{font-size:15px;font-weight:700;color:var(--learning-text-1)}.status-strip{display:flex;flex-wrap:wrap;gap:6px;padding:8px;border-bottom:1px solid var(--line)}.student-scroll{min-height:0;overflow-y:auto;padding:8px;-ms-overflow-style:none;scrollbar-width:none}.student-scroll::-webkit-scrollbar{display:none}.group-filter-section{padding:10px}.group-filter-title{margin-bottom:8px;font-size:12px;font-weight:700;color:var(--learning-text-2)}.group-filter-chip-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.group-filter-chip{width:100%;border:1px solid var(--learning-line);border-radius:12px;background:var(--learning-surface-soft);color:var(--learning-text-2);font-size:12px;font-weight:700;padding:12px 10px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:8px;min-height:52px;cursor:pointer;transition:all .15s ease}.group-filter-chip>span:first-child{line-height:1.2}.group-filter-chip .chip-count{min-width:0;border-radius:0;background:transparent;color:var(--learning-text-3);font-size:18px;font-weight:800;line-height:1.1;padding:0;text-align:left;border:0;transition:color .15s ease}.group-filter-chip.active{border-color:color-mix(in srgb,var(--learning-primary) 34%,var(--learning-line));background:var(--learning-primary-soft);color:var(--learning-primary);box-shadow:0 4px 12px color-mix(in srgb,var(--learning-primary) 12%,transparent)}.group-filter-chip.active .chip-count{color:var(--learning-primary-hover)}.dashboard-middle-pane{height:100%;min-height:0;padding:12px;display:flex;flex-direction:column;gap:10px;overflow-y:auto;-ms-overflow-style:none;scrollbar-width:none}.dashboard-middle-pane::-webkit-scrollbar{display:none}.dashboard-middle-title{font-size:14px;font-weight:700;color:var(--learning-text-1)}.dashboard-middle-scope{margin-top:-6px;color:var(--learning-text-3);font-size:12px;line-height:1.4}.dashboard-middle-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.dashboard-middle-stat{border:1px solid var(--learning-line);border-radius:12px;background:var(--learning-surface-soft);text-align:center;padding:10px 6px}.dashboard-middle-stat-value{font-size:20px;line-height:1;font-weight:800;color:var(--learning-text-1)}.dashboard-middle-stat-label{margin-top:4px;font-size:11px;color:var(--learning-text-3);font-weight:600}.dashboard-middle-log-title{font-size:13px;font-weight:700;color:var(--learning-text-2)}.dashboard-middle-log-list{display:grid;gap:8px;align-content:start}.dashboard-middle-log-item{width:100%;border:1px solid var(--learning-line);border-radius:10px;background:var(--learning-surface);padding:8px 10px;text-align:left;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.dashboard-middle-log-main{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.dashboard-middle-log-name{font-size:12px;font-weight:700;color:var(--learning-text-1)}.dashboard-middle-log-type{font-size:11px;color:var(--learning-text-3)}.dashboard-middle-log-level{margin-left:auto;font-size:12px;font-weight:700;color:var(--learning-success)}.dashboard-middle-log-level.down{color:var(--learning-danger)}.dashboard-middle-log-manual{font-size:10px;font-weight:700;color:var(--learning-primary-hover);background:var(--learning-primary-soft);border:1px solid color-mix(in srgb,var(--learning-primary) 30%,var(--learning-line));border-radius:999px;padding:1px 6px}.dashboard-middle-log-acc{margin-left:auto;font-size:12px;font-weight:700}.dashboard-middle-log-acc.acc-good{color:var(--learning-success)}.dashboard-middle-log-acc.acc-mid{color:var(--learning-warning)}.dashboard-middle-log-acc.acc-low{color:var(--learning-danger)}.dashboard-middle-log-acc.acc-none{color:var(--learning-text-3)}.dashboard-middle-log-sub{margin-top:4px;font-size:11px;color:var(--learning-text-3);line-height:1.3}.dashboard-middle-empty{font-size:12px;color:var(--learning-text-3);padding-top:4px}.inline-refresh-indicator{width:max-content;max-width:100%;margin:0 0 8px auto;border:1px solid var(--learning-line);border-radius:999px;background:var(--learning-surface);color:var(--learning-text-3);font-size:12px;line-height:1;font-weight:700;padding:5px 9px;display:flex;align-items:center;gap:6px;box-shadow:0 4px 12px #0f172a0f}.inline-refresh-indicator.compact{margin:0 0 6px auto;padding:4px 8px;font-size:11px}.student-toolbar{margin-bottom:8px;padding:0}.batch-bar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;border:1px solid var(--learning-line);border-radius:10px;background:var(--learning-surface-soft);padding:8px 10px}.batch-left{border:0;background:transparent;display:inline-flex;align-items:center;gap:4px;color:var(--learning-text-3);font-size:12px;font-weight:700;cursor:pointer;padding:0}.batch-count{text-align:center;font-size:12px;color:var(--learning-text-3);font-weight:600}.batch-generate{border:1px solid color-mix(in srgb,var(--learning-primary) 30%,var(--learning-line));background:var(--learning-primary-soft);color:var(--learning-primary-hover);height:28px;padding:0 10px;border-radius:8px;display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;cursor:pointer}.batch-generate:not(.disabled):hover{border-color:color-mix(in srgb,var(--learning-primary) 48%,var(--learning-line));background:color-mix(in srgb,var(--learning-primary) 14%,var(--learning-surface));color:var(--learning-primary-hover)}.batch-generate.disabled,.batch-generate:disabled{opacity:.45;cursor:not-allowed}.batch-icon{font-size:14px}.batch-icon.select{color:var(--learning-primary)}.student-list{display:grid;gap:8px;align-content:start}.student-list.student-list-virtual{display:block}.student-list.student-list-virtual .student-card{margin-bottom:8px}.student-list.student-list-virtual .student-card:last-of-type{margin-bottom:0}.student-pager{position:sticky;bottom:0;z-index:2;display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 0 6px;background:linear-gradient(180deg,color-mix(in srgb,var(--learning-surface) 76%,transparent),var(--learning-surface) 28%);color:var(--learning-text-3);font-size:12px}.student-pager button{height:26px;min-width:58px;border:1px solid color-mix(in srgb,var(--learning-primary) 30%,var(--learning-line));border-radius:6px;background:var(--learning-surface);color:var(--learning-primary);cursor:pointer}.student-pager button:disabled{border-color:var(--learning-line);color:var(--learning-text-3);cursor:not-allowed}.virtual-spacer{width:100%;pointer-events:none}.student-card{border:1px solid var(--learning-line);box-shadow:var(--shadow-1);cursor:pointer;transition:all .18s ease}.student-card.active{border-color:color-mix(in srgb,var(--learning-primary) 34%,var(--learning-line));background:var(--learning-primary-soft)}.student-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.student-name{font-size:14px;font-weight:700;color:var(--learning-text-1)}.student-meta{margin-top:2px;font-size:12px;color:var(--learning-text-3)}.student-main{flex:1;min-width:0}.student-card-action{min-width:86px;display:flex;justify-content:flex-end;align-items:center}.student-generate-btn{min-width:64px;height:24px;padding:0 7px;border-radius:6px;border:1px solid #cfe3ff;background:#eff6ff;color:#0a84ff;font-size:12px;font-weight:600;box-shadow:none}.student-generate-btn.ant-btn:hover,.student-generate-btn.ant-btn:focus{border-color:#b9d9ff;background:#e0f0ff;color:#0869cb}.student-generate-btn.ant-btn:disabled,.student-generate-btn.ant-btn[disabled]{opacity:.45;color:#0a84ff;border-color:#cfe3ff;background:#eff6ff}.student-generate-btn.ant-btn.ant-btn-sm{font-size:12px;height:24px;padding:0 7px;border-radius:6px}.student-status-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.student-status-dot.dot-green{background:var(--learning-success);box-shadow:0 0 0 4px color-mix(in srgb,var(--learning-success) 14%,transparent)}.student-status-dot.dot-red{background:var(--learning-danger);box-shadow:0 0 0 4px color-mix(in srgb,var(--learning-danger) 14%,transparent)}.main-content{min-width:0;overflow-y:auto;padding:16px;background:var(--bg-grad);-ms-overflow-style:none;scrollbar-width:none}.main-content::-webkit-scrollbar{display:none}.students-workspace,.groups-workspace{min-height:100%;display:flex;flex-direction:column;gap:12px}.students-workspace{height:100%}.students-empty-frame.ant-empty{flex:1;margin:0;border:1px solid var(--learning-line);border-radius:14px;background:var(--learning-surface);box-shadow:var(--shadow-1);min-height:calc(100vh - 128px);min-height:calc(100dvh - 128px);display:flex;align-items:center;justify-content:center}.students-empty-frame.ant-empty .ant-empty-description{color:var(--learning-text-3);font-size:13px;font-weight:600}.system-tabs .ant-tabs-nav{margin:0}.system-tabs .ant-tabs-tab{padding-top:8px;padding-bottom:8px}.groups-toolbar{display:grid;gap:10px}.stage-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:10px;flex-wrap:wrap}.stage-toolbar-left{display:grid;gap:8px;min-width:0;flex:1}.stage-toolbar-right{min-width:260px}.stage-chip-group{display:flex;gap:8px;flex-wrap:wrap}.stage-chip{border:1px solid var(--learning-line);background:var(--learning-surface);color:var(--learning-text-3);border-radius:999px;padding:5px 12px;font-size:12px;font-weight:700;cursor:pointer}.stage-chip.active{border-color:color-mix(in srgb,var(--learning-primary) 34%,var(--learning-line));background:var(--learning-primary-soft);color:var(--learning-primary)}.stage-stat-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.stage-stat{border:1px solid var(--learning-line);border-radius:12px;background:var(--learning-surface-soft);padding:8px 10px}.stage-stat span{display:block;font-size:11px;color:var(--learning-text-3)}.stage-stat strong{display:block;margin-top:3px;font-size:18px;color:var(--learning-text-1)}.group-batch-bar{margin-bottom:10px;border:1px solid var(--learning-line);border-radius:10px;background:var(--learning-surface-soft);padding:8px 10px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.group-batch-left,.group-batch-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.group-table-wrap{border:1px solid var(--learning-line);border-radius:12px;background:var(--learning-surface);overflow-y:auto;overflow-x:hidden}.group-table-wrap.virtual-scroll{max-height:calc(100vh - 300px);max-height:calc(100dvh - 300px)}.group-table{width:100%;border-collapse:separate;border-spacing:0;min-width:0;table-layout:auto}.group-table th,.group-table td{padding:10px 12px;text-align:left;font-size:12px;border-bottom:1px solid var(--learning-line);vertical-align:middle;word-break:break-word;white-space:nowrap}.group-table th{color:var(--learning-text-3);font-weight:700;background:var(--learning-surface-soft);white-space:nowrap;position:sticky;top:0;z-index:1}.group-table td{color:var(--learning-text-1)}.group-common-col,.group-review-col,.group-data-col,.group-action-col{min-width:0}.group-actions-stack{display:inline-flex;flex-direction:row;align-items:center;gap:6px;flex-wrap:nowrap}.group-op-actions{display:inline-flex;flex-direction:column;align-items:flex-start;gap:6px}.group-data-actions{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}.group-op-actions .manage-link-btn,.group-actions-stack .manage-link-btn,.group-data-actions .manage-link-btn{white-space:nowrap;line-height:1.25}.group-word-list{display:flex;flex-direction:column;gap:0}.group-word-row{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid var(--learning-line)}.group-word-row:last-child{border-bottom:none}.group-word-index{min-width:24px;text-align:right;font-size:11px;font-weight:700;color:var(--learning-text-3);padding-top:2px}.group-word-main{flex:1;min-width:0}.group-word-en{font-size:15px;font-weight:700;color:var(--learning-text-1);line-height:1.4}.group-word-phonetic{margin-left:6px;font-size:12px;font-weight:500;color:var(--learning-text-3)}.group-word-cn{margin-top:2px;font-size:12px;color:var(--learning-text-3);line-height:1.4}.group-passage-tabs{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}.group-passage-tab{padding:4px 12px;border-radius:8px;border:1px solid var(--learning-line);background:var(--learning-surface-soft);color:var(--learning-text-3);font-size:12px;font-weight:600;cursor:pointer}.group-passage-tab.active{border-color:var(--learning-primary);background:var(--learning-primary-soft);color:var(--learning-primary)}.group-passage-ghost-btn{margin-left:auto;padding:4px 10px;border-radius:8px;border:1px solid var(--learning-line);background:var(--learning-surface-soft);color:var(--learning-text-3);font-size:11px;font-weight:600;cursor:pointer}.group-passage-ghost-btn.active{border-color:color-mix(in srgb,var(--learning-primary) 34%,var(--learning-line));background:var(--learning-primary-soft);color:var(--learning-primary)}.group-passage-card{border:1px solid var(--learning-line);border-radius:12px;background:var(--learning-surface-soft);padding:14px}.group-passage-meta{margin-bottom:10px;font-size:12px;color:#64748b}.group-passage-content{color:#1f2937;font-size:14px;line-height:1.85;white-space:normal}.group-passage-translation{margin-top:12px;border-top:1px dashed #e2e8f0;padding-top:12px}.group-passage-translation-title{font-size:12px;font-weight:700;color:#475569;margin-bottom:6px}.group-passage-translation-body{font-size:13px;color:#475569;line-height:1.7;white-space:normal}.group-passage-questions{margin-top:12px}.group-passage-question-title{margin-bottom:8px;font-size:12px;font-weight:700;color:#334155}.group-passage-question{margin-bottom:12px}.group-passage-question-text{margin-bottom:6px;font-size:13px;font-weight:600;color:#1f2937;white-space:normal}.group-passage-options{display:flex;flex-direction:column;gap:4px}.group-passage-option{padding:4px 8px;border-radius:8px;font-size:13px;color:#475569;white-space:normal}.group-passage-option.correct{background:#ecfdf3;color:#166534}.group-passage-option-label{font-weight:700;margin-right:4px}.group-passage-answer{margin-top:6px;font-size:12px;color:#0f766e;font-weight:600}.group-review-meta{border:1px solid #e8edf3;border-radius:10px;background:#f8fafc;padding:10px 12px;margin-bottom:12px;display:flex;justify-content:space-between;gap:10px;font-size:12px;color:#334155}.group-review-question{border:1px solid #edf2f7;border-radius:10px;padding:10px;margin-bottom:10px;background:#fff}.group-review-question-title{margin-bottom:8px;font-size:13px;font-weight:700;color:#1f2937}.group-review-options{display:flex;flex-wrap:wrap;gap:8px}.group-review-option-btn{border:1px solid #e5eaf1;background:#f8fafc;color:#475569;border-radius:8px;padding:6px 10px;font-size:12px;font-weight:600;cursor:pointer}.group-review-option-btn.active{border-color:#ffd7c4;background:#fff5ef;color:#ff6b35}.group-review-remark{margin-top:10px}.group-review-remark-label{margin-bottom:6px;font-size:12px;font-weight:700;color:#475569}.teacher-themed-modal{overflow:hidden!important}.teacher-themed-modal .ant-modal{top:16px;padding-bottom:0}.teacher-themed-modal .ant-modal-content{border-radius:14px;border:1px solid #e8edf3;overflow:hidden;display:flex;flex-direction:column;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px)}.teacher-themed-modal .ant-modal-header,.teacher-themed-modal .ant-modal-footer{flex-shrink:0}.teacher-themed-modal .ant-modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:none;-ms-overflow-style:none}.teacher-themed-modal .ant-modal-body::-webkit-scrollbar{width:0;height:0;display:none}.teacher-themed-modal .ant-modal-wrap{overflow:hidden!important}.teacher-themed-modal .ant-modal-header{border-bottom:1px solid #edf2f7;background:linear-gradient(180deg,#fff8f3,#fff)}.teacher-themed-modal .ant-modal-title{color:#c2410c;font-weight:700}.teacher-themed-modal .ant-modal-footer .ant-btn-primary{border-color:#ff6b35;background:#ff6b35}.teacher-themed-modal .ant-modal-footer .ant-btn-primary:hover,.teacher-themed-modal .ant-modal-footer .ant-btn-primary:focus{border-color:#ff824f;background:#ff824f}@media(max-width:768px){.teacher-themed-modal .ant-modal{top:8px}.teacher-themed-modal .ant-modal-content{max-height:calc(100vh - 16px);max-height:calc(100dvh - 16px)}}.group-time-field{display:flex;flex-direction:column;gap:8px}.group-time-mode-row{display:inline-flex;align-items:center;gap:8px}.group-time-mode-btn{border:1px solid #ffd9c2;background:#fff7f2;color:#9a3412;border-radius:999px;padding:5px 12px;font-size:12px;font-weight:700;cursor:pointer;transition:all .16s ease}.group-time-mode-btn.active{border-color:#ff6b35;background:#ff6b35;color:#fff}.group-time-label{font-size:12px;font-weight:700;color:#475569}.group-time-input{height:40px;border:1px solid #ffd9c2;border-radius:10px;padding:0 12px;font-size:13px;color:#1f2937;background:#fff;outline:none}.group-time-input:focus{border-color:#ff6b35;box-shadow:0 0 0 3px #ff6b3514}.group-table th:first-child,.group-table td:first-child{padding-left:10px;padding-right:10px}.group-table .col-check{width:44px;min-width:44px;text-align:center}.group-virtual-spacer-row td{padding:0!important;border-bottom:none!important;background:transparent!important}.group-student-link{border:none;background:transparent;color:#ff6b35;font-size:13px;font-weight:700;cursor:pointer;padding:0}.group-student-link:hover{text-decoration:underline}.group-student-meta{margin-top:2px;color:#94a3b8;font-size:11px}.profile-card{background:#fff;border-radius:16px;padding:20px}.jisuan-profile-card{border:1px solid #e8edf3;box-shadow:var(--shadow-1)}.profile-top{display:flex;align-items:center;gap:14px;margin-bottom:14px}.profile-avatar{cursor:default}.profile-info{min-width:0;flex:1}.profile-name{font-size:18px;line-height:1;font-weight:800;color:#0f172a;letter-spacing:-.3px}.profile-meta{margin-top:4px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:#64748b;font-size:12px;font-weight:500}.profile-meta .expiry-link{display:inline-flex;align-items:center;gap:3px;cursor:pointer}.profile-meta .expiry-link:hover{color:#ff6b35}.profile-meta .expiry-icon{font-size:13px;color:#f59e0b}.profile-meta .expired{color:#ef4444}.profile-epoch-control{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;min-width:180px}.profile-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.profile-primary-action{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 20px;border-radius:14px;border:0;background:linear-gradient(135deg,#ff8c42,#ff6b35);color:#fff;font-size:14px;font-weight:700;cursor:pointer;box-shadow:0 4px 14px #ff6b354d;transition:transform .15s ease,opacity .15s ease}.profile-primary-action:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.profile-primary-action:not(:disabled):active{transform:scale(.96)}.profile-actions{display:flex;gap:8px;flex-wrap:wrap}.act-chip{display:inline-flex;align-items:center;gap:5px;padding:8px 14px;border-radius:12px;border:1.5px solid #eef0f4;background:#fafbfc;color:#111827;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s ease}.chip-icon{font-size:16px;color:#ff6b35}.act-chip:hover{background:#f4f5f7}.act-chip:active{transform:scale(.97)}.act-chip.warn,.act-chip.danger{color:#4b5563}.act-chip.warn .chip-icon{color:#f59e0b}.act-chip.danger .chip-icon{color:#ef4444}.student-profile-top{display:flex;align-items:center;gap:14px}.student-avatar{width:52px;height:52px;border-radius:16px;background:linear-gradient(135deg,#fff3ed,#ffe8dc);color:#ff6b35;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:800;flex-shrink:0}.student-profile-info{min-width:0;flex:1}.student-profile-name{font-size:18px;line-height:1;font-weight:800;color:#0f172a}.student-profile-meta{margin-top:4px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:#64748b;font-size:12px;font-weight:500}.student-profile-actions{display:flex;justify-content:flex-end;align-items:center}.right-tabs{display:flex;gap:0;background:#fff;border-radius:12px;padding:3px;box-shadow:0 1px 3px #0000000d}.right-tabs-shell{display:flex;align-items:center;gap:10px;background:#fff;border-radius:12px;padding:3px;box-shadow:0 1px 3px #0000000d}.right-tabs-shell .right-tabs{flex:1 1 auto;min-width:0;box-shadow:none;padding:0}.learning-epoch-switcher{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;min-width:150px}.learning-epoch-label{color:#64748b;font-size:12px;font-weight:700;white-space:nowrap}.learning-epoch-select{width:100%;min-width:126px;height:32px;border:1px solid #e5e7eb;border-radius:9px;background:#f8fafc;color:#334155;font-size:12px;font-weight:600;padding:0 8px;outline:none}.learning-epoch-select:disabled{opacity:1;cursor:default}.learning-epoch-select:focus{border-color:#ffb391;box-shadow:0 0 0 2px #ff6b351f}.learning-epoch-readonly,.profile-readonly-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#eef2ff;color:#4f46e5;font-size:11px;font-weight:700;padding:3px 7px;white-space:nowrap}.right-tab{flex:1;border:0;background:transparent;text-align:center;padding:8px 0;border-radius:10px;font-size:13px;font-weight:600;color:#9ca3af;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:4px;transition:background .2s,color .2s,box-shadow .2s}.right-tab.active{background:linear-gradient(135deg,#fff3ed,#ffe8dc);color:#ff6b35;box-shadow:0 2px 8px #ff6b3526}.tab-count{font-size:10px;font-weight:700;background:#ff6b3526;padding:0 5px;border-radius:8px;color:#ff6b35}@media(max-width:900px){.right-tabs-shell{align-items:stretch;flex-direction:column}.learning-epoch-switcher{width:100%}}.student-overview-pane{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:12px}.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;flex-shrink:0}.stat-card{background:#fff;border-radius:14px;padding:16px 12px;text-align:center;box-shadow:0 1px 3px #0000000a,0 4px 12px #00000005}.stat-num{font-size:20px;font-weight:800;color:var(--text-1);line-height:1.2}.stat-num.accent{color:var(--primary, #ff6b35)}.stat-sub{font-size:11px;font-weight:500;color:var(--text-3)}.stat-lbl{margin-top:4px;font-size:11px;color:#b0b8c4;font-weight:500}.chart-card{background:#fff;border-radius:16px;padding:16px 20px 12px;box-shadow:0 1px 3px #0000000a,0 4px 12px #00000005;flex:1 1 0;display:flex;flex-direction:column;min-height:0}.chart-toggle{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px;flex-shrink:0;flex-wrap:wrap}.toggle-group{display:flex;gap:4px}.toggle-btn{padding:5px 14px;border-radius:10px;font-size:12px;font-weight:600;color:var(--text-3);background:#fafbfc;cursor:pointer;transition:all .2s;-webkit-tap-highlight-color:transparent;border:none}.toggle-btn.active{background:linear-gradient(135deg,#fff3ed,#ffe8dc);color:var(--primary);box-shadow:0 2px 8px #ff6b3526}.toggle-btn.ghost{background:#f4f5f7;color:#7b8698}.toggle-btn.ghost.active{background:#fff;color:var(--primary);box-shadow:inset 0 0 0 1px #ff6b3540}.chart-area{flex:1 1 auto;min-height:0;height:100%;position:relative}.chart-area canvas{width:100%!important;height:100%!important}.chart-empty{height:100%;min-height:180px;display:flex;align-items:center;justify-content:center}.overview-chart-svg{width:100%;height:100%}.overview-chart-grid line{stroke:#0000000a;stroke-width:1}.overview-chart-grid text,.overview-chart-xaxis text{fill:#94a3b8;font-size:11px;font-weight:500}.overview-chart-xaxis text{text-anchor:middle}.manage-filter-row{display:flex;gap:8px}.manage-filter-chip{border:1px solid var(--learning-line);background:var(--learning-surface-soft);color:var(--learning-text-3);border-radius:var(--learning-radius-md);padding:6px 12px;font-size:12px;font-weight:700;cursor:pointer}.manage-filter-chip.active{border-color:color-mix(in srgb,var(--learning-primary) 34%,var(--learning-line));background:var(--learning-primary-soft);color:var(--learning-primary)}.manage-batch-bar{margin-bottom:10px;border:1px solid var(--learning-line);border-radius:var(--learning-radius-md);background:var(--learning-surface-soft);padding:8px 10px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.manage-batch-left,.manage-batch-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.manage-selected-count{font-size:12px;color:var(--learning-text-3);font-weight:600}.manage-check{display:inline-flex;align-items:center;gap:6px;color:var(--learning-text-2);font-size:12px;font-weight:600;cursor:pointer;-webkit-user-select:none;user-select:none}.manage-check input{width:16px;height:16px;margin:0;-moz-appearance:none;appearance:none;-webkit-appearance:none;border:1.5px solid var(--learning-line-strong);border-radius:4px;background:var(--learning-surface);display:inline-grid;place-content:center;cursor:pointer;transition:background-color .16s ease,border-color .16s ease,box-shadow .16s ease}.manage-check input:before{content:"";width:9px;height:5px;border:2px solid #fff;border-top:0;border-right:0;transform:rotate(-45deg) scale(0);transform-origin:center;transition:transform .14s ease}.manage-check input:hover{border-color:var(--learning-primary-hover)}.manage-check input:checked{border-color:var(--learning-primary);background:var(--learning-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--learning-primary) 20%,transparent)}.manage-check input:checked:before{transform:rotate(-45deg) scale(1)}.manage-check input:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--learning-primary) 18%,transparent)}.manage-check input:disabled{opacity:.55;cursor:not-allowed}.manage-head-left{gap:6px}.manage-list,.report-list{display:grid;gap:10px}.manage-item-card,.report-item-card{border:1px solid var(--learning-line)}.student-manage-pane .manage-list{margin-top:8px;gap:10px}.student-manage-pane .manage-item-card{border-radius:16px;background:var(--learning-surface);border:none;box-shadow:var(--learning-shadow-1);padding:14px 14px 12px}.student-report-pane .report-list{gap:12px}.student-report-pane .report-item-card{border-radius:16px;background:var(--learning-surface);border:none;box-shadow:var(--learning-shadow-1);padding:16px 20px}.student-report-pane .report-head{margin-bottom:12px}.student-report-pane .report-metrics{margin-bottom:14px}.student-report-pane .report-section{margin-top:4px}.student-report-pane.report-pane-abc .report-metrics{display:flex;gap:8px;flex-wrap:nowrap}.student-report-pane.report-pane-abc .report-metric{flex:1;min-width:0;border:none;background:var(--learning-surface-soft);border-radius:12px;padding:12px 8px}.student-report-pane.report-pane-abc .report-metric span{font-size:10px;margin-bottom:2px;color:var(--learning-text-3)}.student-report-pane.report-pane-abc .report-metric strong{font-size:16px;font-weight:800}.student-report-pane.report-pane-abc .report-section-title{margin-bottom:8px}.student-report-pane.report-pane-abc .report-section-title span:first-child{font-size:12px;font-weight:700}.student-report-pane.report-pane-abc .report-section-sub,.student-report-pane.report-pane-abc .report-section-right{font-size:11px;font-weight:500;color:var(--learning-text-3)}.student-report-pane.report-pane-abc .report-rings{gap:8px;flex-wrap:nowrap}.student-report-pane.report-pane-abc .report-ring-item{border-radius:12px;background:var(--learning-surface-soft);padding:10px 8px}.student-report-pane.report-pane-abc .report-ring-title{font-size:10px;color:var(--learning-text-3);font-weight:500;margin-bottom:4px}.jisuan-report-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.jisuan-report-title{font-size:14px;font-weight:700;color:var(--learning-text-2)}.student-report-pane.report-pane-jisuan .jisuan-record-table .ant-table-thead>tr>th{font-size:12px;color:var(--learning-text-3);background:var(--learning-surface-soft)}.student-report-pane.report-pane-jisuan .jisuan-record-table .ant-table-tbody>tr>td{font-size:12px;color:var(--learning-text-2)}.jisuan-report-detail-modal .ant-modal-body{max-height:72vh;overflow:auto}.jisuan-report-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:12px}.jisuan-report-summary-item{border:1px solid var(--learning-line);background:var(--learning-surface-soft);border-radius:var(--learning-radius-md);padding:10px}.jisuan-report-summary-label{font-size:12px;color:var(--learning-text-3);margin-bottom:4px}.jisuan-report-summary-value{font-size:14px;color:var(--learning-text-1);font-weight:600;line-height:1.35}.jisuan-report-tabs .ant-tabs-content{min-height:280px}.jisuan-page-link{padding-left:0}.student-manage-pane .manage-item-actions{margin-top:0}.student-manage-pane .abc-manage-actions .manage-item-actions-left,.student-manage-pane .abc-manage-actions .manage-item-actions-right{gap:8px}.student-manage-pane .manage-link-btn{border:1px solid var(--learning-line);background:var(--learning-surface-soft);color:var(--learning-text-2);border-radius:var(--learning-radius-md);padding:4px 12px;min-height:30px;font-size:12px;font-weight:600;cursor:pointer;line-height:1.2;transition:background .15s ease,border-color .15s ease,color .15s ease,transform .12s ease}.student-manage-pane .manage-link-btn:hover{background:var(--learning-primary-soft);border-color:color-mix(in srgb,var(--learning-primary) 30%,var(--learning-line));color:var(--learning-primary)}.student-manage-pane .manage-link-btn:active{transform:translateY(1px)}.student-manage-pane .manage-link-btn:disabled{color:var(--learning-text-3);border-color:var(--learning-line);background:var(--learning-surface-soft);cursor:not-allowed}.student-manage-pane .abc-manage-actions .manage-item-actions-left .manage-link-btn{border-color:var(--learning-line);background:var(--learning-surface-soft);border-radius:9px;padding:4px 11px;min-height:30px}.student-manage-pane .abc-manage-actions .manage-item-actions-left .manage-link-btn:hover{background:var(--learning-primary-soft);border-color:color-mix(in srgb,var(--learning-primary) 30%,var(--learning-line));color:var(--learning-primary)}.student-manage-pane .abc-manage-actions .manage-item-actions-right .manage-link-btn{border-width:1px;padding:4px 13px;border-radius:10px;min-height:30px}.student-manage-pane .manage-link-btn.action-primary{border-color:color-mix(in srgb,var(--learning-primary) 38%,var(--learning-line));background:var(--learning-primary-soft);color:var(--learning-primary)}.student-manage-pane .manage-link-btn.action-success{border-color:color-mix(in srgb,var(--learning-success) 40%,var(--learning-line));background:color-mix(in srgb,var(--learning-success) 10%,var(--learning-surface));color:var(--learning-success)}.student-manage-pane .manage-link-btn.action-warning{border-color:color-mix(in srgb,var(--learning-warning) 40%,var(--learning-line));background:color-mix(in srgb,var(--learning-warning) 10%,var(--learning-surface));color:var(--learning-warning)}.student-manage-pane .manage-link-btn.action-danger{border-color:color-mix(in srgb,var(--learning-danger) 34%,var(--learning-line));background:color-mix(in srgb,var(--learning-danger) 9%,var(--learning-surface));color:var(--learning-danger)}.student-manage-pane .manage-link-btn.action-primary:hover{border-color:#ffc3a6;background:#ffede4;color:#ea580c}.student-manage-pane .manage-link-btn.action-success:hover{border-color:#86efac;background:#dcfce7;color:#166534}.student-manage-pane .manage-link-btn.action-warning:hover{border-color:#fcd34d;background:#fef3c7;color:#92400e}.student-manage-pane .manage-link-btn.action-danger:hover{border-color:#fca5a5;background:#fee2e2;color:#b91c1c}.student-manage-pane .pager-bar{padding-bottom:12px}.manage-item-head,.report-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.manage-item-meta,.report-head-left{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.manage-time{font-size:11px;color:var(--learning-text-3)}.manage-id{font-size:12px;font-weight:600;color:var(--learning-text-2)}.group-type{font-size:11px;font-weight:700;padding:2px 10px;border-radius:8px}.group-type.t-basic{background:var(--learning-primary-soft);color:var(--learning-primary)}.group-type.t-upgrade{background:color-mix(in srgb,var(--learning-success) 10%,var(--learning-surface));color:var(--learning-success)}.group-type.t-consolidation{background:color-mix(in srgb,var(--learning-warning) 10%,var(--learning-surface));color:var(--learning-warning)}.group-type.t-application{background:color-mix(in srgb,var(--learning-danger) 9%,var(--learning-surface));color:var(--learning-danger)}.group-status{font-size:10px;font-weight:700;padding:2px 8px;border-radius:8px}.group-status.st-pending{background:color-mix(in srgb,var(--learning-warning) 16%,var(--learning-surface));color:var(--learning-warning)}.group-status.st-running{background:color-mix(in srgb,var(--learning-primary) 12%,var(--learning-surface));color:var(--learning-primary)}.group-status.st-tested{background:var(--learning-primary-soft);color:var(--learning-primary)}.group-status.st-paused{background:color-mix(in srgb,var(--learning-warning) 16%,var(--learning-surface));color:var(--learning-warning)}.group-status.st-completed{background:color-mix(in srgb,var(--learning-success) 14%,var(--learning-surface));color:var(--learning-success)}.group-status.st-pending-review{background:color-mix(in srgb,var(--learning-warning) 10%,var(--learning-surface));color:var(--learning-warning);border:1px solid color-mix(in srgb,var(--learning-warning) 34%,var(--learning-line))}.group-status.st-not_generated{background:var(--learning-surface-soft);color:var(--learning-text-2)}.pdf-badge{font-size:10px;font-weight:600;padding:2px 8px;border-radius:6px;background:var(--learning-surface-soft);color:var(--learning-text-3)}.pdf-badge.pdf-generating,.pdf-badge.pdf-pending{background:color-mix(in srgb,var(--learning-warning) 10%,var(--learning-surface));color:var(--learning-warning)}.pdf-badge.pdf-completed{background:color-mix(in srgb,var(--learning-success) 10%,var(--learning-surface));color:var(--learning-success)}.pdf-badge.pdf-failed{background:color-mix(in srgb,var(--learning-danger) 9%,var(--learning-surface));color:var(--learning-danger)}.duration-badge{font-size:10px;font-weight:700;padding:2px 8px;border-radius:6px;background:var(--learning-primary-soft);color:var(--learning-primary);border:1px solid color-mix(in srgb,var(--learning-primary) 34%,var(--learning-line))}.pause-badge{font-size:10px;font-weight:700;padding:2px 8px;border-radius:6px;border:1px solid transparent}.pause-badge.running{background:color-mix(in srgb,var(--learning-success) 10%,var(--learning-surface));color:var(--learning-success);border-color:color-mix(in srgb,var(--learning-success) 40%,var(--learning-line))}.pause-badge.paused{background:color-mix(in srgb,var(--learning-warning) 10%,var(--learning-surface));color:var(--learning-warning);border-color:color-mix(in srgb,var(--learning-warning) 34%,var(--learning-line))}.manage-item-actions{margin-top:4px}.abc-manage-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:nowrap}.abc-manage-actions .manage-item-actions-left,.abc-manage-actions .manage-item-actions-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.abc-manage-actions .manage-item-actions-left{flex:1;min-width:0}.abc-manage-actions .manage-item-actions-right{justify-content:flex-end;margin-left:auto;flex-shrink:0}.jisuan-manage-actions{justify-content:flex-end}.jisuan-manage-actions .manage-item-actions-right{justify-content:flex-end;margin-left:auto}.manage-link-btn{border:1px solid #e5eaf1;background:#f8fafc;color:#64748b;border-radius:8px;padding:4px 9px;font-size:12px;font-weight:600;line-height:1.2;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.manage-link-btn:hover{background:#eef2f7}.manage-link-btn.action-primary{border-color:#c7e0ff;background:#eff6ff;color:#1d4ed8}.manage-link-btn.action-success{border-color:#bbf7d0;background:#ecfdf3;color:#15803d}.manage-link-btn.action-warning{border-color:#fde68a;background:#fffbeb;color:#b45309}.manage-link-btn.action-danger{border-color:#fecaca;background:#fef2f2;color:#dc2626}.manage-link-btn.action-print{border-color:#ffd7c4;background:#fff5ef;color:#ff6b35}.manage-timing{margin-bottom:10px;padding:10px;border-radius:10px;background:linear-gradient(180deg,#fbfdff,#f8fbff);border:1px solid #eaf0f7}.timing-flow-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;row-gap:24px;width:100%;padding:10px 0 8px}.flow-chip{min-width:108px;border:1px solid #dbe7f5;background:#f5f9ff;border-radius:10px;padding:6px 8px;display:flex;flex-direction:column;align-items:center;gap:2px;flex:0 0 auto}.flow-chip.completed{border-color:#bde7cc;background:#effcf4}.flow-chip.active{border-color:#bfd7ff;background:#edf5ff}.flow-chip.pause{border-color:#fed7aa;background:#fff7ed}.flow-chip.resume{border-color:#bbf7d0;background:#ecfdf3}.flow-chip.pause .flow-name{color:#c2410c}.flow-chip.resume .flow-name{color:#15803d}.flow-name{font-size:11px;font-weight:700;color:#4f5f75;line-height:1.2;white-space:nowrap}.flow-time{font-size:10px;color:#7f90a6;line-height:1.2;white-space:nowrap}.flow-event{max-width:124px;font-size:10px;line-height:1.35;color:#8a9aaf;text-align:center;white-space:normal;word-break:break-all}.flow-arrow{min-width:62px;display:inline-flex;align-items:center;justify-content:center;position:relative;align-self:center;overflow:visible}.arrow-line{width:42px;height:2px;border-radius:999px;background:#cfdbeb;position:relative}.arrow-line:after{content:"";position:absolute;right:-1px;top:-3px;width:0;height:0;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:6px solid #cfdbeb}.flow-arrow.active .arrow-line{background:#59a8ff}.flow-arrow.active .arrow-line:after{border-left-color:#59a8ff}.arrow-time{position:absolute;left:50%;bottom:100%;margin-bottom:4px;transform:translate(-50%);font-size:10px;color:#8091a7;white-space:nowrap}@media(max-width:1100px){.timing-flow-row{gap:12px;row-gap:24px}.flow-chip{padding:6px 4px}.flow-name{font-size:10px}.flow-time,.arrow-time{font-size:9px}}@media(max-width:768px){.flow-chip{min-width:82px;padding:5px 6px}.flow-arrow{min-width:50px}}.report-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:10px}.report-metric{border:1px solid var(--learning-line);background:var(--learning-surface-soft);border-radius:10px;padding:10px 8px;text-align:center}.report-metric span{display:block;font-size:11px;color:var(--learning-text-3)}.report-metric strong{display:block;margin-top:4px;font-size:16px;color:var(--learning-text-1)}.report-metric strong.acc-none{color:var(--learning-text-3);font-size:14px;font-weight:600}.report-section{margin-top:4px}.report-section-title{display:flex;align-items:center;gap:8px;margin-bottom:8px}.report-section-title span:first-child{font-size:12px;font-weight:700;color:var(--learning-text-1)}.report-section-sub{font-size:11px;color:var(--learning-text-3);font-weight:500}.report-section-right{margin-left:auto;font-size:11px;color:var(--learning-text-3);font-weight:500}.report-rings{display:flex;flex-wrap:nowrap;gap:10px}.report-ring-item{flex:1;min-width:0;border-radius:12px;background:var(--learning-surface-soft);padding:10px 8px;display:flex;flex-direction:column;align-items:center;gap:4px}.report-ring-circle{width:76px;height:76px;position:relative}.report-ring-circle svg{width:76px;height:76px;transform:rotate(-90deg)}.report-ring-bg{fill:none;stroke:var(--learning-line);stroke-width:6}.report-ring-bar{fill:none;stroke-width:6;stroke-linecap:round;transition:stroke-dashoffset .6s ease}.report-ring-bar.acc-high{stroke:var(--learning-success)}.report-ring-bar.acc-mid{stroke:var(--learning-warning)}.report-ring-bar.acc-low{stroke:var(--learning-danger)}.report-ring-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.report-ring-pct{font-size:14px;font-weight:800;color:var(--learning-text-1);line-height:1.2}.report-ring-score{font-size:9px;color:var(--learning-text-3);font-weight:500}.report-ring-title{font-size:10px;color:var(--learning-text-2);font-weight:500}.level-log-pane{font-size:12px;background:var(--learning-surface);border-radius:12px;overflow-x:auto;overflow-y:hidden;box-shadow:0 1px 3px #0000000a}.student-panel-card .ant-card-body{border-radius:0 0 12px 12px}.level-log-header{display:flex;align-items:center;min-width:760px;padding:10px 14px;font-size:11px;font-weight:600;color:var(--learning-text-3);background:var(--learning-surface-soft);border-bottom:1px solid var(--learning-line)}.level-log-row{display:flex;align-items:center;min-width:760px;padding:10px 14px;border-bottom:1px solid var(--learning-line)}.level-log-row:last-child{border-bottom:none}.level-log-row.highlight{background:var(--learning-primary-soft)}.col-group{width:48px;flex-shrink:0;color:var(--learning-text-2);font-weight:600}.col-ttype{flex:1;flex-shrink:0}.ttype-tag{font-size:10px;font-weight:700;padding:1px 6px;border-radius:4px;white-space:nowrap}.ttype-tag.t-basic{background:#f4f5f7;color:#888}.ttype-tag.t-upgrade{background:#ecfdf3;color:#16a34a}.ttype-tag.t-consolidation{background:#fff7ed;color:#f59e0b}.ttype-tag.t-application{background:#fef2f2;color:#ef4444}.col-vocab{flex:1;display:flex;align-items:center;gap:4px}.col-vocab-range{flex:1;color:var(--learning-text-3);font-size:11px}.col-acc{flex:1;font-size:11px;color:var(--learning-text-2)}.col-suggest{flex:1;display:flex;align-items:center;gap:5px}.col-time{width:82px;flex-shrink:0;color:var(--learning-text-3);font-size:11px;text-align:right}.delta{font-weight:800;font-size:13px}.delta.up{color:#16a34a}.delta.down{color:#ef4444}.level-tag{font-size:10px;font-weight:700;padding:1px 6px;border-radius:4px}.level-tag.up{background:#ecfdf3;color:#16a34a}.level-tag.down{background:#fef2f2;color:#ef4444}.streak{font-weight:700;font-size:12px}.streak.up{color:#16a34a}.streak.down{color:#ef4444}.streak.reset{color:var(--learning-text-3)}.muted{color:var(--learning-text-3);font-weight:500}.pager-bar{margin-top:10px;display:flex;align-items:center;justify-content:center;gap:10px}.pager-btn{border:1px solid var(--learning-line);background:var(--learning-surface);color:var(--learning-text-3);border-radius:8px;padding:5px 12px;font-size:12px;font-weight:600;cursor:pointer}.pager-btn:disabled{opacity:.45;cursor:not-allowed}.pager-info{color:var(--learning-text-3);font-size:12px}.stage-card,.dashboard-card{border:1px solid var(--learning-line);box-shadow:var(--shadow-1)}.dashboard-refresh-btn{min-width:88px;border-radius:8px;font-weight:700;box-shadow:0 4px 10px color-mix(in srgb,var(--learning-primary) 22%,transparent)}.dashboard-refresh-btn.ant-btn-loading,.dashboard-refresh-btn:disabled{box-shadow:none}.dashboard-alert{margin-bottom:8px}.board-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:12px}.board-metric{border:1px solid var(--learning-line);border-radius:10px;background:var(--learning-surface);padding:10px;display:flex;flex-direction:column;gap:3px}.board-metric span{font-size:12px;color:var(--learning-text-3)}.board-metric strong{font-size:20px;color:var(--learning-text-1);line-height:1}.board-table-wrap{border:1px solid var(--learning-line);border-radius:12px;background:var(--learning-surface);overflow:hidden}.board-table{width:100%;border-collapse:separate;border-spacing:0;min-width:0;table-layout:fixed}.board-table-abc .col-stu{width:clamp(190px,30%,320px)}.board-table-jisuan .col-stu{width:clamp(190px,34%,340px)}.board-table th,.board-table td{padding:10px 8px;text-align:center;font-size:12px;border-bottom:1px solid var(--learning-line);vertical-align:middle;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-table th{color:var(--learning-text-3);font-weight:700;background:var(--learning-surface-soft);white-space:nowrap;position:sticky;top:0;z-index:2}.board-table th.col-sort{cursor:pointer;-webkit-user-select:none;user-select:none}.board-table td{color:var(--learning-text-1)}.board-table th:first-child,.board-table td:first-child{text-align:left;padding-left:16px}.board-table tbody tr{cursor:pointer;transition:background .15s ease}.board-table tbody tr:hover{background:var(--learning-surface-soft)}.col-stu{min-width:0}.board-table th.col-stu,.board-table td.col-stu{white-space:normal;overflow:visible;text-overflow:clip}.stu-cell{display:flex;align-items:center;gap:10px;min-width:0}.stu-avatar{width:32px;height:32px;border-radius:10px;background:linear-gradient(135deg,color-mix(in srgb,var(--learning-primary) 12%,var(--learning-surface)) 0%,var(--learning-primary-soft) 100%);color:var(--learning-primary);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;flex-shrink:0}.stu-text{min-width:0;overflow:visible;flex:1}.stu-name{font-size:13px;font-weight:700;color:var(--learning-text-1);white-space:nowrap;line-height:1.25}.stu-grade{font-size:10px;color:var(--learning-text-3);margin-top:1px}.acc-val{font-weight:700;font-size:13px;font-variant-numeric:tabular-nums}.acc-val.acc-good{color:var(--learning-success)}.acc-val.acc-mid{color:var(--learning-warning)}.acc-val.acc-low{color:var(--learning-danger)}.acc-val.acc-none{color:var(--learning-text-3);font-weight:500}.clickable-acc,.clickable-val{cursor:pointer}.clickable-acc:hover,.clickable-val:hover{text-decoration:underline}.clickable-val{color:var(--learning-primary);font-weight:700}.board-popover{min-width:200px}.board-pop-title{font-size:14px;font-weight:700;color:var(--learning-text-1);margin-bottom:8px}.board-pop-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--learning-line)}.board-pop-row:last-child{border-bottom:none}.board-pop-row span{color:var(--learning-text-3);font-size:12px}.board-pop-row strong{color:var(--learning-text-1);font-size:13px;font-weight:700}.board-pop-empty{padding:8px 0;color:var(--learning-text-3);font-size:12px}.board-level-btn{display:inline-flex;align-items:center;justify-content:center;min-width:34px;padding:2px 10px;border-radius:999px;border:1px solid var(--learning-line);background:var(--learning-surface-soft);color:var(--learning-text-2);font-size:12px;font-weight:700;cursor:pointer;transition:all .15s ease}.board-level-btn:hover{border-color:color-mix(in srgb,var(--learning-primary) 34%,var(--learning-line));background:var(--learning-primary-soft);color:var(--learning-primary)}.level-popover{min-width:220px}.board-level-log-list{max-height:260px;overflow-y:auto}.board-level-log-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid var(--learning-line);color:var(--learning-text-2);font-size:12px;font-weight:700}.board-level-log-row:last-child{border-bottom:none}.board-level-log-row.up{color:var(--learning-success)}.board-level-log-row.down{color:var(--learning-danger)}.board-level-log-time{color:var(--learning-text-3);font-size:11px;font-weight:500;white-space:nowrap}.growth-up{color:var(--learning-success)!important}.growth-down{color:var(--learning-danger)!important}.board-status{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700}.board-status.status-running{color:#0f766e;background:#ccfbf1}.board-status.status-paused{color:#b45309;background:#fef3c7}.board-status.status-pending{color:#92400e;background:#ffedd5}.board-status.status-completed{color:#1d4ed8;background:#dbeafe}.board-status.status-not_generated{color:#475569;background:#e2e8f0}.trend-actions{margin-bottom:10px}.trend-summary{display:flex;align-items:center;justify-content:space-between;color:#64748b;font-size:12px;margin-bottom:8px}.trend-svg-wrap{height:300px;border:1px solid #edf2f7;border-radius:12px;background:#fff;overflow:hidden}.trend-svg{width:100%;height:100%}.trend-grid line{stroke:#e5e7eb;stroke-width:1}.trend-grid text{fill:#94a3b8;font-size:11px}.trend-main-line{fill:none;stroke:#ff6b35;stroke-width:2.5}.trend-avg-line{fill:none;stroke:#94a3b8;stroke-width:1.5;stroke-dasharray:6 4}.trend-points circle{fill:#ff6b35}.trend-foot-list{margin-top:10px;display:grid;gap:6px}.trend-foot-item{border:1px solid #edf2f7;border-radius:8px;padding:7px 10px;display:grid;grid-template-columns:88px 1fr 1fr;gap:8px;align-items:center;color:#64748b;font-size:12px}.trend-foot-item strong{color:#0f172a;font-size:13px;font-weight:700}.stage-card .ant-card-head{min-height:52px;border-bottom:1px solid #eef2f6;padding:0 16px}.stage-card .ant-card-head-title{font-size:16px;font-weight:700}.stage-card .ant-card-extra{color:#64748b;font-size:12px}.task-list{display:grid;gap:10px}.task-card{border:1px solid #edf2f7}.task-head{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-bottom:8px}.task-title{font-size:14px;font-weight:700}.task-meta{font-size:12px;color:var(--learning-text-3)}.task-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:10px}.task-summary-item{border:1px solid var(--learning-line);border-radius:var(--learning-radius-sm);padding:6px 8px;display:flex;flex-direction:column;gap:2px;background:var(--learning-surface)}.task-summary-item span{font-size:11px;color:var(--learning-text-3);line-height:1.1}.task-summary-item strong{font-size:13px;color:var(--learning-text-1);line-height:1.1}.drawer-block{margin-bottom:10px;border:1px solid var(--learning-line)}.summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.summary-item{border:1px solid var(--learning-line);border-radius:var(--learning-radius-sm);padding:8px 10px;display:flex;justify-content:space-between;color:var(--learning-text-3);font-size:12px}.summary-item strong{color:var(--learning-text-1)}.worksheet-list{display:grid;gap:8px}.worksheet-item{border:1px solid var(--learning-line)}.worksheet-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}.worksheet-no{font-size:13px;font-weight:700;color:var(--learning-text-1)}.timeline-row{display:flex;justify-content:space-between;gap:8px;color:var(--learning-text-3);font-size:12px}@media(max-width:767px){.main-content{padding:12px}.board-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.student-profile-top,.profile-top{flex-wrap:wrap}.student-profile-actions{width:100%;justify-items:start}.profile-epoch-control{width:100%;justify-content:flex-start}.profile-toolbar{align-items:stretch}.profile-primary-action{width:100%;justify-content:center}.profile-card{padding:14px}.stats-row{grid-template-columns:repeat(2,minmax(0,1fr))}.chart-area{min-height:0}.report-metrics{grid-template-columns:1fr}.report-rings{grid-template-columns:repeat(2,minmax(0,1fr))}}
