:root{
  --ink:#16231f;
  --muted:#64736d;
  --line:#d9e3df;
  --paper:#fff;
  --bg:#edf3f0;
  --blue:#2f66f5;
  --blue-soft:#e7efff;
  --pink:#e85c9a;
  --pink-soft:#ffe8f2;
  --green:#178a62;
  --green-soft:#e6f7f0;
  --shadow:0 16px 42px rgba(24,50,40,.10);
}
*{box-sizing:border-box}
html{background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}
body{margin:0;min-height:100vh}
button,input,select{font:inherit}
button{cursor:pointer}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:24px clamp(20px,4vw,56px);background:#123b31;color:#fff}
.topbar h1{margin:2px 0 0;font-family:Georgia,"Times New Roman",serif;font-size:clamp(24px,3vw,38px)}
.eyebrow,.kicker{font-size:11px;letter-spacing:.16em;font-weight:800;color:inherit;opacity:.72}
.subtitle{margin:6px 0 0;color:inherit;opacity:.72;font-size:13px}
.tabs{display:flex;gap:8px;background:rgba(255,255,255,.12);padding:5px;border-radius:999px}
.tab{border:0;border-radius:999px;padding:9px 18px;background:transparent;color:#fff;font-weight:750}
.tab.is-active{background:#fff;color:#17483d}
.shell{width:min(1440px,100%);margin:0 auto;padding:26px clamp(16px,3vw,40px) 60px}
.role-panel{display:none}
.role-panel.is-active{display:block}
.panel-grid{display:grid;grid-template-columns:minmax(280px,380px) minmax(0,1fr);gap:20px}
.card{background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:20px;box-shadow:var(--shadow)}
.card-head,.workspace-head,.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:16px}
h2{margin:3px 0 16px;font-size:20px}
.form-stack{display:grid;gap:13px}
.form-stack label,.form-grid label{display:grid;gap:6px;color:var(--muted);font-size:13px;font-weight:700}
input,select{width:100%;border:1px solid var(--line);border-radius:11px;background:#fbfdfc;padding:10px 12px;color:var(--ink);outline:none}
input:focus,select:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(47,102,245,.12)}
.check-row{display:grid;gap:8px}
.check{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;gap:8px!important;color:var(--ink)!important;font-size:13px!important}
.check input{width:auto}
.primary,.ghost{border:0;border-radius:12px;padding:10px 14px;font-weight:800}
.primary{background:#17483d;color:#fff}
.primary:hover{background:#0f352d}
.ghost{background:#f0f5f3;color:#29443c}
.message{min-height:18px;margin:0;color:var(--green);font-size:13px}
.list-stack{display:grid;gap:12px}
.assignment-class-group{border:1px solid var(--line);border-radius:16px;background:#fff;overflow:hidden;box-shadow:0 8px 20px rgba(24,50,40,.05)}
.assignment-class-group>summary{cursor:pointer;padding:13px 16px;background:#f3f8f6}
.assignment-class-group[open]>summary{border-bottom:1px solid var(--line)}
.assignment-class-title{display:flex;flex-direction:column;gap:3px}
.assignment-class-title strong{font-size:16px;color:#1f4438}
.assignment-class-title span{font-size:12px;color:var(--muted)}
.assignment-student-groups{display:grid;gap:10px;padding:12px}
.assignment-student-group{border:1px solid var(--line);border-radius:12px;background:#fbfdfc;overflow:hidden}
.assignment-student-group>summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;background:#f8fbfa}
.assignment-student-group[open]>summary{border-bottom:1px solid var(--line)}
.assignment-student-title{display:flex;align-items:baseline;gap:8px}
.assignment-student-title strong{font-size:14px;color:#234b3f}
.assignment-student-title span,.assignment-student-meta{font-size:12px;color:var(--muted)}
.assignment-cards{display:grid;gap:10px;padding:10px}
.assignment-card{box-shadow:none;background:#fff}
.assignment-status{display:inline-block;border-radius:999px;padding:2px 7px;font-size:11px;font-weight:900;margin-right:4px}
.assignment-status.is-done{background:#e8f7f0;color:#12604a}
.assignment-status.is-active{background:#eef4ff;color:#2f66f5}
.assignment-status.is-pending{background:#f2f5f4;color:#68788c}
@media(max-width:720px){.assignment-student-group>summary{align-items:flex-start}.assignment-student-title{align-items:flex-start;flex-direction:column;gap:2px}}
.empty{color:var(--muted);padding:20px;text-align:center}
.assignment-row{border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;align-items:center;justify-content:space-between;gap:14px}
.assignment-row h3{margin:0 0 5px;font-size:16px}
.assignment-row p{margin:0;color:var(--muted);font-size:13px}
.assignment-row .actions{display:flex;gap:8px;flex-wrap:wrap}
.login-card{max-width:720px;margin:0 auto}
.form-grid{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end}
.workspace.is-hidden,.is-hidden{display:none!important}
.workspace-head{margin-bottom:16px}
.homework-layout{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(340px,.95fr);gap:18px;align-items:start}
.homework-layout.is-question-zoomed{grid-template-columns:minmax(0,1fr)}
.homework-layout.is-question-zoomed .passage-panel{display:none}
.homework-layout.is-question-zoomed .question-panel{position:static;max-height:none;width:100%;max-width:1320px;margin:0 auto;padding-right:0}
.homework-layout.is-question-zoomed .question-stem{font-size:21px;line-height:1.6}
.homework-layout.is-question-zoomed .option-text{font-size:19px}
.homework-layout.is-question-zoomed .option-desc{font-size:14px}
.student-question-toolbar{position:sticky;top:0;z-index:6;display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:8px 10px;background:rgba(255,255,255,.94);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 18px rgba(24,50,40,.06);backdrop-filter:blur(10px)}
.student-question-toolbar>span{font-size:12px;font-weight:900;letter-spacing:.08em;color:#557069}
.passage-panel{background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px}
.passage-copy{font-family:Georgia,"Times New Roman",serif;font-size:clamp(17px,1.3vw,21px);line-height:1.85}
.passage-copy p{margin:0 0 15px;text-indent:2em}
.blank{display:inline-flex;align-items:center;justify-content:center;min-width:42px;height:27px;border:0;border-bottom:2px solid #8ea0a0;border-radius:7px 7px 0 0;background:#f4f8f7;color:var(--blue);padding:0 7px;font-weight:900;vertical-align:baseline}
.blank.is-filled{background:var(--blue-soft);border-color:var(--blue)}
.question-panel{position:sticky;top:18px;display:grid;gap:12px;max-height:calc(100vh - 40px);overflow:auto;padding-right:4px}
.question-card{border:1px solid var(--line);border-radius:16px;background:#fff;padding:14px}
.question-card.is-active{border-color:var(--blue);box-shadow:0 0 0 3px rgba(47,102,245,.10)}
.question-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.question-number{font-weight:900}
.option-row{display:grid;grid-template-columns:28px 1fr;gap:8px;align-items:start;width:100%;border:1px solid transparent;border-radius:10px;padding:7px;text-align:left;background:#f8fbfa}
.option-row:hover{background:#eef5f3}
.option-row.is-selected{background:var(--blue-soft);border-color:var(--blue)}
.option-label{font-weight:900;color:var(--blue)}
.option-text{font-weight:800}
.option-desc{margin-top:3px;color:var(--muted);font-size:12px}
.submit-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px}
.result-card{border:1px solid var(--line);border-radius:18px;padding:18px;background:#fff}
.score-large{font-size:42px;font-weight:900;color:var(--green)}
.analysis-block{margin-top:14px;padding:13px;border-radius:14px;background:#f7faf9;border:1px solid var(--line)}
.analysis-block h4{margin:0 0 8px}
.answer-good{color:var(--green)}
.answer-bad{color:#c33}
.dialog{width:min(980px,92vw);border:0;border-radius:20px;padding:20px;box-shadow:0 30px 80px rgba(0,0,0,.24)}
.dialog::backdrop{background:rgba(8,25,20,.42)}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{padding:9px;border-bottom:1px solid var(--line);text-align:left}
th{background:#f4f8f7}
@media(max-width:980px){
  .panel-grid,.homework-layout{grid-template-columns:1fr}
  .question-panel{position:static;max-height:none}
  .form-grid{grid-template-columns:1fr}
  .topbar{display:grid}
  .tabs{width:max-content}
}
@media(max-width:620px){
  .shell{padding:16px 12px 40px}
  .card{padding:15px;border-radius:16px}
  .assignment-row{align-items:flex-start;display:grid}
  .passage-copy{font-size:17px}
}

.submit-success-banner{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  margin:0 0 16px;padding:15px 18px;border:1px solid #9dd8c2;border-radius:16px;
  background:linear-gradient(135deg,#e7f8f1,#f7fffb);color:#135f46;
  box-shadow:0 10px 24px rgba(23,138,98,.10);
}
.submit-success-banner strong{display:block;font-size:18px;margin-bottom:2px}
.submit-success-banner p{margin:0;color:#3a725f;font-size:13px}
.submit-success-score{font-size:28px;font-weight:900;color:#178a62;white-space:nowrap}
.submit-toast{
  position:fixed;z-index:1000;left:50%;top:22px;transform:translateX(-50%) translateY(-18px);
  min-width:min(460px,calc(100vw - 32px));padding:16px 18px;border-radius:16px;
  background:#12523f;color:#fff;box-shadow:0 22px 60px rgba(7,40,30,.28);
  opacity:0;pointer-events:none;transition:.28s ease;display:flex;align-items:center;gap:14px
}
.submit-toast.is-visible{opacity:1;transform:translateX(-50%) translateY(0)}
.submit-toast-icon{width:34px;height:34px;border-radius:50%;background:#d9f6e9;color:#126b4e;display:grid;place-items:center;font-size:20px;font-weight:900;flex:none}
.submit-toast strong{display:block;font-size:16px;margin-bottom:2px}
.submit-toast span{font-size:13px;color:#d7eee5}
.option-row.is-locked{cursor:default;opacity:.88}
.option-row.is-locked:hover{background:#f8fbfa}
.option-row.is-selected.is-locked{background:var(--blue-soft)}
.question-card.is-submitted{border-color:#b7dccc;background:#fcfffd}
.correct-inline-btn{
  margin-top:10px;border:1px solid #7ebc9f;border-radius:10px;background:#edf9f3;
  color:#126b4e;padding:8px 12px;font-weight:850;
}
.correct-inline-btn:hover{background:#dff4e9}
.correct-inline-btn.is-cancel{border-color:#d4b0b0;background:#fff4f4;color:#9b3b3b}
.similar-inline-btn{margin-top:10px;margin-left:8px;border:1px solid #9cbff1;border-radius:10px;background:#eef5ff;color:#275fae;padding:8px 12px;font-weight:850;cursor:pointer}
.similar-inline-btn:hover{background:#dceaff}
.similar-inline-btn:disabled{opacity:.65;cursor:wait}
.submit-success-banner.is-complete{border-color:#75c9a7;background:linear-gradient(135deg,#dff8ec,#f4fffa)}
.submit-success-banner.is-complete strong{color:#0d6548}
.class-card{margin-top:20px}
.class-manager{display:grid;grid-template-columns:minmax(260px,360px) minmax(0,1fr);gap:20px}
.mini-form{display:grid;gap:10px}
.mini-form h3,.student-manager h3{margin:0;font-size:16px}
.mini-form.inline{grid-template-columns:minmax(140px,1fr) minmax(90px,.5fr) auto;align-items:center;margin:12px 0}
.student-manager-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.student-manager-head select{max-width:240px}
.student-list{display:grid;gap:8px}
.student-chip{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:12px;padding:9px 12px;background:#fbfdfc}
.student-chip span{color:var(--muted);font-size:12px}
.student-chip button{border:0;background:#fff0f0;color:#a83b3b;border-radius:9px;padding:7px 10px;font-weight:800}
@media(max-width:800px){.class-manager,.mini-form.inline{grid-template-columns:1fr}.student-manager-head{align-items:flex-start;display:grid}}
.ghost.danger{background:#fff0f0;color:#a83b3b}

.result-subtitle{margin:0 0 10px}
.result-summary{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.result-chip{border:1px solid var(--line);background:#f4f8f7;border-radius:999px;padding:6px 12px;font-size:13px;font-weight:700;color:#2b463d}
.miss-list{margin:0 0 12px;padding:10px 12px;border-radius:12px;background:#fff8e8;border:1px solid #f0dfae;color:#7a5b14;font-size:13px}
.result-note{margin-top:12px}
.muted{color:var(--muted)}
.tag{display:inline-block;border-radius:999px;padding:2px 9px;font-size:12px;font-weight:800}
.tag-good{background:var(--green-soft);color:#126b4e}
.tag-warn{background:#fff3e0;color:#9a6412}
tr.is-absent td{background:#fffdf7}
.submit-success-score{display:flex;flex-direction:column;align-items:flex-end;line-height:1.1}
.submit-success-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap}
.only-wrong-button{background:#fff;color:#17483d;border:1px solid #8fc8b3}
.only-wrong-button:hover{background:#e9f8f1}
.submit-success-score small{font-size:12px;font-weight:700;color:#3a725f;margin-top:5px}
.progress-text{color:#126b4e}
.result-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.result-toolbar .result-subtitle{margin:0}
.student-manager-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.student-manager-actions select{max-width:200px}

.workspace-actions{display:flex;gap:8px;flex-wrap:wrap}
.review-focus-box{background:#f7fbf9;border:1px solid #cfe6db;border-radius:14px;padding:12px 16px;margin-bottom:14px}
.review-focus-box ol{margin:8px 0 0;padding-left:20px;font-size:13px;line-height:1.85}
.focus-source{color:var(--muted);font-size:12px;margin-left:4px}
.review-book{border:1px solid var(--line);border-radius:14px;padding:10px 14px;margin-bottom:12px;background:#fff}
.review-book summary{cursor:pointer;font-weight:800;font-size:14px;color:#1f4438}
.review-book table{margin-top:10px}
.answer-good{color:#178a62;font-weight:800}
.answer-bad{color:#b4442f;font-weight:800}

.question-stem{margin:0 0 10px;font-size:14.5px;line-height:1.65;font-weight:650;color:#1d3a31}
.question-tip{margin:0 0 4px;color:#31695a;font-size:12.5px;font-weight:700}
.analysis-block h4{margin:0 0 6px;font-size:13.5px;color:#235c4a}

.quiz-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.view-switch{display:inline-flex;background:#eef3f1;border-radius:10px;padding:3px}
.view-switch button{border:0;background:transparent;border-radius:8px;padding:7px 15px;font-weight:800;color:#3a5a50;cursor:pointer}
.view-switch button.is-active{background:#17483d;color:#fff}
.view-hint{color:var(--muted);font-size:12.5px}
.answer-sheet{background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px 16px}
.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;font-size:13px;color:var(--muted);flex-wrap:wrap}
.sheet-grid{display:grid;gap:5px}
.sheet-row{display:grid;grid-template-columns:44px 1fr 110px;align-items:center;gap:10px;padding:5px 9px;border-radius:10px;background:#f8fbfa}
.sheet-no{font-weight:900;color:#2c4a41}
.sheet-options{display:flex;gap:6px;flex-wrap:wrap}
.sheet-option{width:42px;height:34px;border:1px solid var(--line);background:#fff;border-radius:9px;font-weight:900;color:#3a5a50;cursor:pointer}
.sheet-option:hover{border-color:#17483d}
.sheet-option.is-selected{background:#17483d;border-color:#17483d;color:#fff}
.sheet-option.is-correct{background:var(--green-soft);border-color:#7fb8a3;color:#12604a}
.sheet-option.is-wrong{background:#fdeeea;border-color:#e0a99b;color:#b4442f}
.sheet-status{font-size:12.5px;color:var(--muted);text-align:right}
.sheet-status.is-done{color:#2f66f5}
.sheet-status.is-correct{color:#178a62;font-weight:800}
.sheet-status.is-wrong{color:#b4442f;font-weight:800}
.kind-badge{display:inline-block;font-size:11px;font-weight:900;border-radius:7px;padding:2px 7px;margin-right:7px;vertical-align:2px}
.kind-preclass{background:#e8f1ff;color:#2f66f5}
.kind-lesson{background:#fff2e0;color:#a56a12}
.kind-homework{background:#e8f7f0;color:#12604a}
.kind-quiz{background:#fdeef5;color:#c9407f}
.kind-other{background:#eef2f1;color:#4c6a60}
@media(max-width:620px){.sheet-row{grid-template-columns:32px 1fr 78px}.sheet-option{width:34px;height:30px}}

.paper-card{margin-top:20px}
.paper-input{width:100%;min-height:250px;margin:12px 0;border:1px solid var(--line);border-radius:12px;padding:12px;background:#fbfdfc;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;line-height:1.6;resize:vertical}
.paper-textarea-note{color:var(--muted);font-size:12px}
.paper-preview{margin-top:12px}
.paper-preview-card{border:1px solid var(--line);border-radius:14px;padding:12px 14px;background:#fbfdfc}
.paper-preview-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.paper-problems{margin-top:8px;background:#fdeeea;border:1px solid #e0a99b;border-radius:10px;padding:8px 12px;color:#a83b3b;font-size:13px}
.paper-problems ul{margin:6px 0 0;padding-left:20px}
.paper-ok{margin-top:8px;background:#e8f7f0;border:1px solid #a7dbc6;border-radius:10px;padding:8px 12px;color:#12604a;font-size:13px;font-weight:700}
.paper-list{display:grid;gap:8px;margin-top:8px;max-height:420px;overflow:auto}
.paper-category-group{border:1px solid var(--line);border-radius:12px;background:#fbfdfc;overflow:hidden}
.paper-category-group>summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;background:#f4f8f7}
.paper-category-group>summary strong{font-size:14px;color:#234b3f}
.paper-category-group>summary span{font-size:12px;color:var(--muted)}
.paper-category-list{display:grid;gap:8px;padding:10px}
.paper-category-badge{display:inline-block;margin-right:7px;border-radius:999px;padding:2px 7px;background:#eef4ff;color:#2f66f5;font-size:11px;font-weight:900}
.paper-tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}
.paper-tag{display:inline-block;border-radius:999px;padding:2px 7px;background:#eef5f3;color:#4b6a60;font-size:10px;font-weight:800}
.paper-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:12px;padding:8px 12px;background:#fbfdfc}
.paper-row strong{font-size:13.5px}
.paper-meta{color:var(--muted);font-size:12px;margin-left:8px}
@media(max-width:620px){.paper-row{align-items:flex-start;display:grid}}

.vault-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end;margin:10px 0 6px}
.vault-row label{display:grid;gap:6px;color:var(--muted);font-size:13px;font-weight:700}
.paper-row-actions{display:flex;gap:8px;flex-wrap:wrap}
@media(max-width:720px){.vault-row{grid-template-columns:1fr}}

.vocab-card{margin-top:20px}
.vocab-card input{margin:12px 0}
.vocab-list{display:grid;gap:4px;max-height:520px;overflow:auto;border:1px solid var(--line);border-radius:12px;padding:8px}
.vocab-row{display:grid;grid-template-columns:26px minmax(90px,1.1fr) 120px 70px minmax(120px,1.4fr) minmax(0,1.6fr);gap:8px;align-items:baseline;font-size:13px;padding:4px 6px;border-bottom:1px solid #f0f5f3}
.vocab-row:last-child{border-bottom:0}
.vocab-word{font-weight:800;color:#1d3a31}
.vocab-phonetic{color:#4c6a60}
.vocab-pos{color:#7b8a84;font-style:italic}
.vocab-chinese{color:#235c4a}
.vocab-example{color:#8a7a4a;font-size:12px}
@media(max-width:900px){.vocab-row{grid-template-columns:24px 1fr 1fr;gap:6px}.vocab-phonetic,.vocab-pos,.vocab-example{grid-column:2/4;color:var(--muted);font-size:12px}}

.analysis-package{border:1px solid var(--line);border-radius:16px;padding:16px;margin:14px 0;background:var(--surface)}
.analysis-package h2{margin:3px 0 5px}
.analysis-package h3{margin:16px 0 8px}
.analysis-priority{margin:0;padding-left:22px}
.analysis-priority li{margin:5px 0}

.analysis-package-entry{border:1px solid var(--line);border-radius:14px;background:var(--surface);overflow:hidden}
.student-analysis-group{border:1px solid var(--line);border-radius:16px;background:var(--surface);overflow:hidden;box-shadow:0 8px 20px rgba(24,50,40,.05)}
.student-analysis-group>summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 16px;background:#fbfdff}
.student-analysis-group[open]>summary{border-bottom:1px solid var(--line)}
.student-group-title{display:flex;flex-direction:column;gap:3px;min-width:0}
.student-group-title strong{font-size:16px;color:#1f4438}
.student-group-title span{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:760px}
.student-group-meta{font-size:12.5px;color:#b4442f;font-weight:800;white-space:nowrap}
.student-analysis-packages{display:grid;gap:12px;padding:12px 12px 12px 32px;background:#f8fbfa}
.student-practice-list{display:grid;gap:8px;margin-top:8px}
.student-practice-card{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#fbfdfc;font-size:13px}
.student-practice-card span{color:var(--muted);font-size:12px;white-space:nowrap}
.student-practice-note{color:var(--muted);font-size:12.5px;margin:8px 0 0}
.analysis-family-group{position:relative;margin-left:12px;border:1px solid var(--line);border-radius:14px;background:#fff;overflow:hidden}
.analysis-family-group::before{content:"";position:absolute;left:-19px;top:14px;bottom:14px;width:2px;border-radius:999px;background:linear-gradient(180deg,#9db9ff,#d8e4ff)}
.analysis-family-group>summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;background:#f4f8f7}
.analysis-family-group[open]>summary{border-bottom:1px solid var(--line)}
.analysis-family-title{display:flex;flex-direction:column;gap:3px;min-width:0}
.analysis-family-title strong{font-size:15px;color:#234b3f}
.analysis-family-title span{font-size:12px;color:var(--muted)}
.analysis-family-meta{font-size:12.5px;font-weight:850;color:#315aab;white-space:nowrap}
.analysis-family-packages{display:grid;gap:12px;padding:12px;background:#fbfdfc}
.practice-level-badge{display:inline-block;margin-right:8px;border-radius:999px;padding:3px 9px;font-size:11.5px;font-weight:900;vertical-align:2px}
.practice-level-badge.level-basic{background:#e8f1ff;color:#2f66f5}
.practice-level-badge.level-advanced{background:#fff2e0;color:#a56a12}
.practice-level-badge.level-pro{background:#f2edff;color:#7652c8}
.assign-review-dialog{width:min(1120px,96vw);max-height:88vh;overflow:auto}
.assign-review-summary{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;margin-bottom:10px;background:#f3f8f6;border:1px solid var(--line);border-radius:12px}
.assign-review-summary>div{display:flex;flex-direction:column;gap:4px}
.assign-review-summary span{font-size:12px;color:var(--muted)}
.assign-review-count{font-size:18px;font-weight:900;color:#2f66f5!important}
.assign-review-note{color:#8a6200;background:#fff8e7;border:1px solid #ead49d;border-radius:10px;padding:8px 10px;font-size:12.5px}
.assign-review-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:12px}
@media(max-width:720px){.student-analysis-packages{padding-left:18px}.analysis-family-group{margin-left:0}.analysis-family-group::before{left:-10px}.analysis-family-group>summary{align-items:flex-start}.analysis-family-title span{white-space:normal}.analysis-family-meta{white-space:normal}}
@media(max-width:720px){.student-analysis-group>summary{align-items:flex-start}.student-group-title span{white-space:normal}.student-group-meta{white-space:normal}}
.analysis-package-entry .assignment-row{border:0;border-radius:0}
.analysis-package-detail{border-top:1px solid var(--line);padding:12px 14px 14px;background:#fbfdff}
.analysis-package-detail summary{cursor:pointer;font-weight:850;color:var(--blue)}
.analysis-package-detail h4{margin:12px 0 6px}
.analysis-package-detail ol{margin:0;padding-left:22px}
.analysis-package-detail table{margin-top:6px}

tr.loss-total td{background:#fff8e7;color:#7a5700;font-weight:900}

.practice-set{border:1px solid var(--line);border-radius:10px;margin:8px 0;background:#fff}
.practice-set>summary{cursor:pointer;padding:9px 11px;font-weight:850;color:#2d4f82}
.practice-items{padding:0 11px 10px}
.practice-question{border-top:1px dashed var(--line);padding:9px 0}
.practice-question-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.practice-answer-text{white-space:pre-wrap;line-height:1.65}
.practice-option-desc{display:block;color:var(--muted);font-size:12.5px;line-height:1.35;margin-top:2px}
.analysis-block p{white-space:pre-wrap;line-height:1.65}
.practice-question-head>div:first-child{flex:1}
.practice-edit-button{border:1px solid #b9d4ca;background:#eef8f4;color:#176048;border-radius:8px;padding:4px 9px;font-size:12px;font-weight:850;white-space:nowrap}
.practice-edit-button:hover{background:#dff1e9}
textarea{width:100%;border:1px solid var(--line);border-radius:11px;background:#fbfdfc;padding:10px 12px;color:var(--ink);outline:none;resize:vertical;font:inherit}
textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(47,102,245,.12)}
#practiceEditDialog .form-stack{max-height:72vh;overflow:auto;padding-right:4px}
#practiceEditDialog .actions{display:flex;gap:8px;justify-content:flex-end}
.practice-options{color:#52647d;margin:4px 0 0}
.practice-answer{margin-top:6px}
.practice-answer summary{cursor:pointer;color:var(--blue);font-weight:750}
.practice-answer div{margin-top:5px;padding:8px;border-radius:8px;background:#f5f9ff;color:#304d77}
.student-practice{margin-top:16px}

.practice-source{margin-top:4px;color:#78869a;font-size:11px}

.short-answer-box{display:flex;gap:8px;align-items:center;margin-top:8px}
.short-answer-input,.sheet-input{border:1px solid var(--line2);border-radius:9px;padding:8px 10px;background:#fff;min-width:0;width:100%}
.short-answer-input:focus,.sheet-input:focus{outline:2px solid rgba(47,102,245,.18);border-color:#8eaff0}
.sheet-input{max-width:160px}

/* iPad/tablet student experience */
@media (pointer: coarse) {
  button,
  input,
  select,
  textarea {
    font-size: 16px;
  }
  button,
  input,
  select {
    min-height: 44px;
  }
  .tab {
    padding: 12px 22px;
  }
  .option-row {
    grid-template-columns: 36px 1fr;
    min-height: 54px;
    padding: 12px;
  }
  .blank {
    min-width: 58px;
    height: 38px;
    font-size: 1.05em;
  }
  .sheet-option {
    width: 46px;
    height: 40px;
  }
  .assignment-row .actions button,
  .workspace-actions button {
    min-height: 44px;
  }
}

@media (max-width: 1366px) and (orientation: landscape) {
  .shell {
    padding-right: 18px;
    padding-left: 18px;
  }
  .homework-layout {
    grid-template-columns: minmax(0, 1.15fr) minmax(360px, 0.85fr);
    gap: 14px;
  }
  .passage-copy {
    font-size: clamp(18px, 1.55vw, 22px);
  }
  .question-panel {
    max-height: calc(100vh - 28px);
  }
}

@media (max-width: 1024px) and (orientation: portrait) {
  .homework-layout {
    grid-template-columns: 1fr;
  }
  .question-panel {
    position: static;
    max-height: none;
    overflow: visible;
    padding-right: 0;
  }
  .passage-panel {
    padding: 16px;
  }
  .workspace-head {
    align-items: flex-start;
  }
  .workspace-actions {
    justify-content: flex-start;
    flex-wrap: wrap;
  }
}

@media (max-width: 860px) {
  .topbar {
    align-items: flex-start;
    flex-direction: column;
    padding: 16px;
  }
  .tabs {
    width: 100%;
  }
  .tab {
    flex: 1;
  }
  .shell {
    padding: 16px 12px 48px;
  }
  .card {
    border-radius: 16px;
    padding: 16px;
  }
  .card-head,
  .workspace-head {
    align-items: flex-start;
  }
  .form-grid {
    grid-template-columns: 1fr;
  }
}

.student-login-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr)) auto;
}

.student-chip {
  align-items: center;
}

.student-chip-main {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.student-chip-meta {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}

.pin-badge {
  display: inline-flex;
  align-items: center;
  border: 1px solid #c8d8f8;
  border-radius: 999px;
  padding: 2px 8px;
  color: #315aab;
  background: #eef4ff;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .06em;
}

.student-chip-actions {
  display: flex;
  gap: 7px;
  flex-wrap: wrap;
}

.student-chip-actions button {
  min-height: 34px;
}

@media (max-width: 980px) {
  .student-login-grid {
    grid-template-columns: 1fr 1fr;
  }
  .student-login-grid button {
    grid-column: 1 / -1;
  }
}

@media (max-width: 620px) {
  .student-login-grid {
    grid-template-columns: 1fr;
  }
  .student-login-grid button {
    grid-column: auto;
  }
  .student-chip {
    align-items: flex-start;
    flex-direction: column;
  }
}

/* 句型暗诵作业：与五步训练模块保持同一套蓝色标识 */
.kind-sentence_memory{background:#eaf1ff;color:#2f66f5}
#sentenceMemoryFields{align-items:flex-end}
#sentenceMemoryFields label{display:grid;gap:6px;min-width:130px;font-size:13px;font-weight:800}
#sentenceMemoryFields input,#sentenceMemoryFields select{min-height:40px;padding:0 10px;border:1px solid var(--line,#d7e0ea);border-radius:10px;background:#fff}
#sentenceMemoryFields[hidden],#sentenceMemoryHint[hidden]{display:none!important}
