/* 智慧课堂 · 课堂驾驶舱主题
   视觉目标：内容舞台优先、状态一眼可读、操作有明确层级。
   仅覆盖 live 页面，不改变业务结构和接口。 */
:root {
  --classroom-ink: #eaf1ff;
  --classroom-muted: #9eb0c9;
  --classroom-line: rgba(161,185,225,.16);
  --classroom-panel: rgba(20,34,60,.82);
  --classroom-panel-strong: rgba(25,43,75,.94);
  --classroom-blue: #5d8cff;
  --classroom-cyan: #56d8e8;
  --classroom-green: #50dfa0;
  --classroom-orange: #ffbd73;
}
body.classroom-page {
  color: var(--classroom-ink);
  background:
    radial-gradient(800px 500px at 12% -12%, rgba(66,124,255,.28), transparent 70%),
    radial-gradient(780px 520px at 95% 4%, rgba(60,218,211,.12), transparent 65%),
    radial-gradient(660px 430px at 52% 112%, rgba(116,72,214,.16), transparent 72%),
    #091322;
}
body.classroom-page::before {
  content: ""; position: fixed; inset: 0; pointer-events: none; opacity: .22;
  background-image: linear-gradient(rgba(255,255,255,.025) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px);
  background-size: 34px 34px; mask-image: linear-gradient(to bottom, #000, transparent 92%);
}
.classroom-page .topbar {
  padding: 17px clamp(18px, 4vw, 52px); background: rgba(7,15,29,.72);
  border-bottom: 1px solid var(--classroom-line); box-shadow: 0 16px 36px rgba(0,0,0,.24);
}
.classroom-page .topbar h1 { letter-spacing: .8px; font-size: clamp(18px, 2vw, 22px); }
.classroom-page .topbar h1::after {
  content: "  ·  课堂互动"; color: rgba(158,176,201,.72); font-size: 10px; letter-spacing: 2px; vertical-align: 2px;
}
.classroom-page .topbar .who { color: var(--classroom-muted); }
.classroom-page .wrap { max-width: 1240px; margin: 30px auto 80px; padding: 0 clamp(14px, 3vw, 30px); position: relative; }
.classroom-page .wrap::before {
  content: ""; display: block; height: 4px; width: 92px; border-radius: 8px; margin: 0 0 18px;
  background: linear-gradient(90deg, var(--classroom-cyan), var(--classroom-blue), #a978ff); box-shadow: 0 0 20px rgba(93,140,255,.58);
}
.classroom-page .card {
  background: linear-gradient(145deg, rgba(25,44,76,.9), rgba(13,27,49,.87));
  border: 1px solid var(--classroom-line); border-radius: 22px; padding: clamp(18px, 2.5vw, 28px);
  box-shadow: 0 24px 70px rgba(0,0,0,.27), inset 0 1px 0 rgba(255,255,255,.055);
  backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px);
}
.classroom-page .classroom-board {
  display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(300px, .85fr); gap: 18px; align-items: start;
}
.classroom-page .classroom-board > * { min-width: 0; }
.classroom-page .board-options { display:flex; flex-wrap:wrap; gap:8px; margin:14px 0 4px; }
.classroom-page .classroom-empty { text-align:center; padding:clamp(36px,8vw,84px) 24px; }
.classroom-page .classroom-empty h2 { margin:0 0 8px; }
.classroom-page .classroom-board > .classroom-hero-card { grid-column: 1; grid-row: 1 / span 2; min-height: 290px; }
.classroom-page .classroom-board > .classroom-stats-card { grid-column: 2; grid-row: 1; }
.classroom-page .classroom-board > .classroom-team-card,
.classroom-page .classroom-board > .classroom-rank-card,
.classroom-page .classroom-board > .classroom-roster-card { grid-column: 2; }
.classroom-page .classroom-board > .classroom-roster-card { grid-column: 1 / -1; }
.classroom-page .classroom-board[data-live-status="open"] > .classroom-hero-card { border-top: 3px solid var(--classroom-green); }
.classroom-page .classroom-board[data-live-status="closed"] > .classroom-hero-card { border-top: 3px solid var(--classroom-orange); }
.classroom-page .classroom-hero-card > p:first-of-type { max-width: 760px; font-size: clamp(19px, 2.3vw, 28px) !important; line-height: 1.7 !important; }
.classroom-page .classroom-hero-card::after { content: "课堂主舞台"; display: block; margin-top: 26px; color: rgba(158,176,201,.55); font-size: 11px; letter-spacing: 2px; text-transform: uppercase; }

/* 教室投屏专注模式：老师一键放大主舞台，侧栏数据继续保留在页面中供退出后查看。 */
.classroom-page.projector-mode .classroom-board { display: block; }
.classroom-page.projector-mode .classroom-board > *:not(.classroom-hero-card) { display: none; }
.classroom-page.projector-mode .classroom-hero-card { min-height: calc(100vh - 150px); display: flex; flex-direction: column; justify-content: center; padding: clamp(28px, 6vw, 76px); border-top: 4px solid var(--classroom-blue); }
.classroom-page.projector-mode .classroom-hero-card > p:first-of-type { max-width: 1100px; font-size: clamp(26px, 4vw, 56px) !important; line-height: 1.55 !important; }
.classroom-page.projector-mode .classroom-hero-card h2 { font-size: clamp(22px, 3vw, 38px); }
.classroom-page.projector-mode .classroom-hero-card .q-image img { max-height: 52vh; }
.classroom-page.projector-mode .classroom-hero-card::after { content: "投屏专注模式 · 点击右上角退出"; color: rgba(158,176,201,.72); }
.classroom-page .card:hover { transform: translateY(-2px); border-color: rgba(112,166,255,.34); box-shadow: 0 28px 80px rgba(0,0,0,.34), inset 0 1px 0 rgba(255,255,255,.08); }
.classroom-page .card h2 { font-size: clamp(17px, 2vw, 21px); letter-spacing: .2px; }
.classroom-page .card h2::before { color: var(--classroom-cyan); text-shadow: 0 0 14px rgba(86,216,232,.65); }
.classroom-page .muted, .classroom-page .field { color: var(--classroom-muted); }
.classroom-page .btn { min-height: 44px; padding: 10px 17px; border-radius: 12px; font-weight: 700; letter-spacing: .1px; }
.classroom-page .topbar a { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 8px; }
.classroom-page #classroom-ux-help { min-width: 44px; min-height: 44px; }
/* 帮助按钮加高后，面板仍留出间距；旧增强层把底边写在行内样式里。 */
.classroom-page #classroom-ux-help-panel { bottom: 112px !important; }
.classroom-page .btn-primary { background: linear-gradient(135deg, #6a92ff, #536ce8 58%, #7556da); box-shadow: 0 10px 28px rgba(83,108,232,.34); }
.classroom-page .btn-primary:hover { filter: brightness(1.08); transform: translateY(-1px); }
.classroom-page .btn-ghost { background: rgba(255,255,255,.07); border: 1px solid rgba(175,199,239,.18); }
.classroom-page .btn-close { background: linear-gradient(135deg, #ffcb80, #f79557); color: #351e16; }
.classroom-page input, .classroom-page select, .classroom-page textarea {
  background: rgba(2,12,27,.42); border-color: rgba(157,184,229,.22); color: var(--classroom-ink); min-height: 44px;
}
.classroom-page textarea { line-height: 1.65; }
.classroom-page input:focus, .classroom-page select:focus, .classroom-page textarea:focus, .classroom-page button:focus-visible {
  outline: 3px solid rgba(86,216,232,.27); outline-offset: 2px; border-color: var(--classroom-cyan);
}
.classroom-page .chip { border: 1px solid rgba(171,197,240,.14); background: rgba(255,255,255,.065); }
.classroom-page .chip.ok { background: rgba(80,223,160,.13); border-color: rgba(80,223,160,.38); }
.classroom-page .chip.bad { background: rgba(255,111,129,.13); border-color: rgba(255,111,129,.38); }
.classroom-page .live-dot { background: var(--classroom-green); box-shadow: 0 0 0 5px rgba(80,223,160,.09), 0 0 18px rgba(80,223,160,.9); }
.classroom-page .stat-row { gap: 14px; margin: 6px 0 2px; }
.classroom-page .stat-box { min-height: 108px; display: flex; flex-direction: column; justify-content: center; background: linear-gradient(145deg, rgba(255,255,255,.075), rgba(255,255,255,.035)); border-color: rgba(167,193,235,.14); }
.classroom-page .stat-box .n { font-size: clamp(27px, 4vw, 42px); line-height: 1; text-shadow: 0 4px 20px rgba(0,0,0,.25); }
.classroom-page .stat-box .l { margin-top: 9px; letter-spacing: .4px; }
.classroom-page .dist { height: 205px; padding: 20px 16px 0; border-radius: 16px; background: rgba(2,13,29,.28); }
.classroom-page .dist-bar { border-radius: 9px 9px 3px 3px; background: linear-gradient(180deg, #72a8ff, #4c6ee8); }
.classroom-page .dist-bar.correct { background: linear-gradient(180deg, #64e8ab, #25af78); }
.classroom-page .student-grid { gap: 10px; padding: 13px; border: 1px solid rgba(164,190,231,.11); border-radius: 16px; background: rgba(2,13,29,.22); }
.classroom-page .student-grid .chip { min-height: 36px; padding: 8px 12px; }
.classroom-page .lq-tabs { padding: 5px; border-radius: 15px; background: rgba(2,13,29,.3); }
.classroom-page .lq-tab { border: 0; border-radius: 11px; min-height: 45px; }
.classroom-page .lq-tab.active { background: linear-gradient(135deg, #5d8cff, #566ae5); box-shadow: 0 8px 22px rgba(82,108,232,.3); }
.classroom-page .mq-q, .classroom-page .bk-item, .classroom-page .rv-row { background: rgba(3,14,30,.29); border-color: rgba(158,187,232,.16); }
.classroom-page .mq-q { border-radius: 16px; }
.classroom-page .bk-item.sel { background: rgba(93,140,255,.15); border-color: rgba(111,163,255,.7); box-shadow: 0 12px 28px rgba(40,93,213,.18); }
.classroom-page .rv-row.projecting { border-color: var(--classroom-orange); box-shadow: 0 0 0 2px rgba(255,189,115,.2), 0 0 38px rgba(255,156,83,.16); }
.classroom-page .rv-nav { background: linear-gradient(90deg, rgba(255,189,115,.16), rgba(255,140,96,.06)); border-color: rgba(255,189,115,.42); }
.classroom-page .answer-reveal { background: linear-gradient(90deg, rgba(80,223,160,.14), rgba(80,223,160,.05)); border: 1px solid rgba(80,223,160,.26); }
.classroom-page .opt-btn { min-height: 54px; background: linear-gradient(145deg, rgba(255,255,255,.09), rgba(255,255,255,.045)); border-color: rgba(165,193,236,.18); font-size: 17px; }
.classroom-page .opt-btn.sel { background: linear-gradient(135deg, #4e72e7, #5d8cff); border-color: #8eb5ff; }
.classroom-page .opt-btn.right { background: linear-gradient(135deg, #249d6c, #4bdc9e); border-color: #79efbd; color: #082319; }
.classroom-page .opt-btn.wrong { background: linear-gradient(135deg, #c14b65, #ee6b7e); border-color: #ff9bab; }
.classroom-page .qnav { padding: 10px 12px; border-radius: 15px; background: rgba(2,13,29,.3); }
.classroom-page .qnav-dot { width: 42px; height: 42px; background: rgba(255,255,255,.07); }
.classroom-page .qnav-dot.cur { background: rgba(93,140,255,.23); }
.classroom-page .ux-progress { height: 7px; background: rgba(255,255,255,.09); box-shadow: inset 0 1px 3px rgba(0,0,0,.35); }
.classroom-page .ux-progress > i { background: linear-gradient(90deg, var(--classroom-cyan), var(--classroom-blue), #a978ff); box-shadow: 0 0 13px rgba(86,216,232,.5); }
.classroom-page .proj-banner { background: linear-gradient(90deg, rgba(255,189,115,.2), rgba(93,140,255,.12)); border-color: rgba(255,189,115,.48); }
.classroom-page .proj-stem { max-width: 900px; margin-inline: auto; font-size: clamp(20px, 3vw, 30px); font-weight: 650; text-align: center; }
.classroom-page .rv-expl { background: linear-gradient(145deg, rgba(93,140,255,.16), rgba(93,140,255,.05)); border-color: rgba(111,163,255,.34); }
.classroom-page .modal-mask { background: rgba(1,8,18,.76); backdrop-filter: blur(8px); }
@media (min-width: 960px) {
  body[data-role="teacher"] .wrap > #app > .card:nth-child(n+2) { }
  body[data-role="teacher"] .wrap #app > .card:has(.stat-row) { border-top: 3px solid rgba(86,216,232,.42); }
}
@media (max-width: 1000px) {
  .classroom-page .classroom-board { display: block; }
  .classroom-page .classroom-board > .card { margin-bottom: 14px; }
  .classroom-page .stat-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  .classroom-page .topbar h1::after { display: none; }
  .classroom-page .wrap { margin-top: 18px; }
  .classroom-page .stat-row { grid-template-columns: repeat(2, 1fr); }
  .classroom-page .card { border-radius: 17px; padding: 17px; }
  .classroom-page .classroom-board { display: block; }
  .classroom-page .classroom-board > .card { margin-bottom: 14px; }
  .classroom-page .proj-stem { font-size: 21px; }
}
@media (prefers-reduced-motion: reduce) {
  .classroom-page .card, .classroom-page .btn, .classroom-page .opt-btn { transition: none !important; }
}

/* 校园基础视觉。学生页只加载这一套主题，业务模块继续管理各自布局。
   token 供老师、家长和伙伴组件复用；live 的课堂主题仍限定在 classroom-page。 */
:root {
  --campus-bg: #f3f5ed;
  --campus-surface: #fffef9;
  --campus-ink: #203a36;
  --campus-muted: #51675e;
  --campus-green: #17755b;
  --campus-line: #d6e1d8;
  --campus-accent: #eeb856;
  --campus-radius: 16px;
}
body.student-theme {
  color-scheme: light;
  --canvas: var(--campus-bg); --surface: var(--campus-surface);
  --surface-0: var(--campus-bg); --surface-1: var(--campus-surface);
  --surface-2: #edf3e9; --surface-3: #e2eddc; --surface-inset: #e5ede1;
  --ink: var(--campus-ink); --ink-strong: #18332d;
  --muted: var(--campus-muted); --muted-weak: #60746a;
  --line: var(--campus-line); --line-strong: #b7cdbf;
  --orange: var(--campus-green); --orange-dark: #105b45; --orange-soft: #e5f0e8;
  --accent: var(--campus-green); --accent-solid: var(--campus-green); --accent-solid-2: #105b45;
  --on-accent: #fff; --accent-soft: #e5f0e8; --on-accent-soft: #12563f;
  --green: #206c48; --green-soft: #e5f1e4; --blue: #235b72; --blue-soft: #eaf2f4;
  --success: #206c48; --success-soft: #e5f1e4;
  --warn: #8a5817; --warn-soft: #fbefce; --danger: #a53c34; --danger-soft: #fcebe6;
  --warm: #8a5817; --warm-solid: #8a5817; --warm-soft: #fbefce; --warm-line: #ddcda7;
  --media-bg: #fff; --on-media: #203a36;
  --radius: var(--campus-radius);
  --shadow: 0 4px 18px rgba(38,68,46,.055);
  --shadow-1: var(--shadow); --shadow-2: 0 8px 26px rgba(38,68,46,.09); --shadow-3: 0 20px 70px rgba(21,45,35,.19);
  background: var(--canvas); color: var(--ink);
}
body.student-theme::before { content: none; }
.student-app { line-height: 1.75; }
.student-app .spark { display: none; }
.student-app .sidebar { width: 214px; padding: 26px 16px 20px; background: var(--surface); border-color: var(--line); box-shadow: none; }
.student-app .brand { padding: 0 9px; margin-bottom: 28px; font-size: 20px; color: var(--ink); }
.student-app .brand-mark { width: 36px; height: 38px; flex-basis: 36px; border-radius: 12px 12px 12px 4px; background: var(--accent); font-size: 22px; }
.student-app .brand-sub { color: var(--muted); font-size: 11px; }
.student-app .nav-button { border-radius: 12px; color: var(--muted); min-height: 46px; font-weight: 550; gap: 12px; }
.student-app .nav-button:hover { background: #f0f4eb; color: var(--ink); }
.student-app .nav-button[aria-current="page"] { background: var(--accent-soft); color: var(--on-accent-soft); box-shadow: inset 3px 0 var(--accent); font-weight: 750; }
.student-app .nav-button small { background: #d5e6d8; color: #245a43; border-radius: 6px; }
.student-app .sidebar-foot, .student-app .sidebar-foot .student-account-name { color: var(--muted); border-color: var(--line); }
.student-app .workspace { margin-left: 214px; }
.student-app .topbar { height: 64px; padding-inline: 32px; background: rgba(255,254,249,.94); border-color: var(--line); }
.student-app .breadcrumb, .student-app .breadcrumb strong { color: var(--muted); }
.student-app .avatar { background: #dfebdf; color: #225b43; width: 34px; height: 34px; }
.student-app .grade-lock { border: 1px solid var(--line); border-radius: 9px; padding: 5px 10px; font-size: 11px; color: var(--muted); background: #f1f5ed; }
.student-app .page { max-width: 1250px; padding: 30px 36px 54px; }
.student-app h1 { color: var(--ink); background: none; -webkit-text-fill-color: currentColor; font-size: 29px; letter-spacing: -.5px; font-weight: 780; }
.student-app h2, .student-app h3 { color: var(--ink); }
.student-app .page-heading { margin-bottom: 24px; }
.student-theme .student-app :is(.muted,.field,.page-heading p,.stat-label,.row-meta,.card-meta,.card-footer>.muted,.student-date,.student-section-heading>span,.student-subject,.student-question-source,.student-paper-name small,.student-inline-status,.paper-metadata,.paper-description>p:last-child,.paper-source-info,.tutor-heading .muted,.tutor-welcome p,.tutor-status,.tutor-history summary,.tutor-context,.tutor-speaker) { color: var(--muted); }
.student-theme .student-app :is(.question-stem,.detail-stem,.student-question-preview,.student-home-question-row strong,.student-paper-name strong,.student-next-body h3,.tutor-answer-text) { color: var(--ink); }
.student-theme .student-app :is(.panel,.stat-card,.wrong-card,.review-card,.tutor-conversation,.hero-card) { border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow); }
.student-theme .student-app .panel { padding: 24px; }
.student-theme .student-app .btn { border-radius: 10px; min-height: 44px; padding: 10px 16px; font-size: 13px; font-weight: 700; box-shadow: none; }
.student-theme .student-app .btn.primary { background: var(--accent); color: #fff; border-color: var(--accent); }
.student-theme .student-app .btn.primary:hover:not(:disabled) { background: #105b45; border-color: #105b45; }
.student-theme .student-app .btn.secondary { background: var(--surface); border-color: var(--line-strong); color: var(--ink); }
.student-theme .student-app .btn.ghost { color: #315a46; }
.student-theme .student-app .btn:hover:not(:disabled) { transform: none; box-shadow: none; }
.student-theme .student-app .btn.small { min-height: 38px; padding: 7px 12px; }
.student-theme .student-app .btn svg { width: 18px; height: 18px; flex: none; }
.student-theme .student-app :is(input,textarea,select) { background: var(--surface); border-color: var(--line-strong); color: var(--ink); border-radius: 10px; font-size: 14px; }
.student-theme .student-app :is(input,textarea)::placeholder { color: #60746a; opacity: 1; }
.student-theme .student-app :is(input,textarea,select):focus { border-color: var(--accent); outline: 2px solid #17755b; outline-offset: 2px; box-shadow: none; }
.student-theme .student-app :focus-visible { outline: 3px solid #17755b; outline-offset: 3px; }
.student-theme .student-app :is(.chip,.badge) { background: #edf3e9; border-color: var(--line); color: #3d5c4a; border-radius: 8px; }
.student-theme .student-app .chip { min-height: 42px; }
.student-theme .student-app .chip.active { background: var(--accent-soft); border-color: var(--accent); color: var(--on-accent-soft); }
.student-theme .student-app .badge.orange { color: #815513; background: var(--warn-soft); }
.student-theme .student-app .badge.green { color: #206c48; background: var(--success-soft); }
.student-theme .student-app :is(.answer-box,.hint-box,.reflection-box,.solution-upload) { border-radius: 12px; border-color: var(--line); background: #f1f5eb; color: var(--ink); }
.student-theme .student-app .support-notice { color: var(--muted); border-color: var(--line); }
.student-theme .student-app .option { border-radius: 10px; border-color: var(--line-strong); color: var(--ink); }
.student-theme .student-app .option.selected { border-color: var(--accent); background: var(--accent-soft); }
.student-theme .student-app .empty-state { background: var(--surface); color: var(--muted); border-color: var(--line-strong); }
.student-theme .student-app .empty-state :is(h2,h3) { color: var(--ink); }
.student-theme .student-app .empty-icon { background: #eaf1df; color: #467341; }
.student-theme .student-app :is(.modal,.school-modal) { border-radius: 18px; background: var(--surface); color: var(--ink); }
.student-home-heading { align-items: center; margin-bottom: 20px; }
.student-date { font-size: 12px; font-weight: 600; margin-bottom: 5px; }
.student-date>span { padding: 0 5px; color: var(--muted); }
.student-home-intro { color: var(--muted); margin-top: 6px; font-size: 13px; }
.student-stat-strip { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)) auto; gap: 18px; align-items: center; padding: 17px 22px; margin-bottom: 20px; border: 1px solid var(--line); border-radius: 14px; background: var(--surface); }
.student-stat { display: flex; gap: 4px; flex-direction: column; }
.student-stat-num { font-size: 27px; line-height: 1.2; font-weight: 780; color: var(--accent); font-variant-numeric: tabular-nums; }
.student-stat-num small { font-size: 12px; font-weight: 550; color: var(--muted); }
.student-stat-label { font-size: 12px; color: var(--muted); }
.student-strip-link { display: flex; align-items: center; gap: 12px; min-height: 44px; padding: 8px 0 8px 18px; background: none; border: 0; border-left: 1px solid var(--line); font-size: 13px; font-weight: 650; color: #285e46; }
.student-strip-link svg { width: 18px; height: 18px; }
.student-desk { grid-template-columns: minmax(0,1.25fr) minmax(260px,1fr); gap: 18px; margin: 16px 0 0; }
.student-next, .student-question-box { border-radius: var(--radius); border-color: var(--line); padding: 24px; background: var(--surface); box-shadow: var(--shadow); }
.student-next { border-top: 3px solid var(--accent); }
.student-question-box { background: #f8faf2; }
.student-section-heading { margin-bottom: 15px; gap: 12px; }
.student-section-heading h2 { font-size: 17px; font-weight: 750; color: var(--ink); }
.student-section-heading>span { font-size: 12px; }
.student-next-body { padding: 5px 0 19px; }
.student-next-body h3 { font-size: 23px; margin-bottom: 12px; line-height: 1.5; }
.student-question-preview { font-size: 15px; line-height: 1.9; -webkit-line-clamp: 3; }
.student-subject { margin-bottom: 8px; font-size: 12px; }
.student-first-question>p:last-child, .student-question-box label { font-size: 13px; color: var(--muted); }
.student-question-box textarea { min-height: 116px; border-radius: 10px; font-size: 14px; padding: 12px; }
.student-next-actions { border-color: var(--line); padding-top: 15px; gap: 8px; }
.student-question-actions { gap: 8px; padding-top: 12px; }
.student-preferences { margin: 16px 0 22px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); padding: 0 17px; }
.student-preferences summary { padding-block: 14px; color: var(--ink); }
.student-preference-value, .student-preference-toggle { color: var(--muted); font-size: 12px; }
.student-preferences form { gap: 12px; padding-bottom: 16px; }
.student-preferences .field { color: var(--muted); font-size: 12px; }
.student-preferences select { min-height: 44px; font-size: 13px; }
.student-next-list, .student-library { margin-bottom: 22px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); padding: 18px 22px; }
.student-home-question-row, .student-paper-row { border-color: var(--line); min-height: 64px; gap: 15px; padding-block: 15px; }
.student-home-question-row:last-child, .student-paper-row:last-child { border-bottom: 0; }
.student-home-question-row:hover, .student-paper-row:hover { background: #f0f5e9; }
.student-paper-kind { width: 42px; min-height: 42px; border-radius: 10px; background: #eaf0df; color: #4a643a; }
.student-paper-name strong { font-weight: 650; font-size: 14px; }
.student-paper-name small { font-size: 12px; }
.student-paper-count, .student-paper-arrow, .student-row-subject { color: var(--muted); }
.student-home-shortcuts { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; margin-top: 20px; }
.student-home-shortcuts button { display: flex; align-items: center; gap: 13px; min-width: 0; padding: 15px 17px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); text-align: left; }
.student-home-shortcuts button:hover { border-color: #8dae91; background: #f8faf0; }
.student-home-shortcuts button>svg { width: 23px; height: 23px; color: #47714b; flex: none; }
.student-home-shortcuts button>svg:last-child { width: 17px; margin-left: auto; }
.student-home-shortcuts button>span { min-width: 0; }
.student-home-shortcuts strong { display: block; font-size: 14px; color: var(--ink); }
.student-home-shortcuts small { display: block; font-size: 12px; color: var(--muted); line-height: 1.6; margin-top: 3px; }
.student-app .student-courtyard { grid-template-columns: 170px minmax(0,1fr); margin: 20px 0; border-color: #ccd9bc; background: #eef3e3 url('/assets/qwen21-20261001/courtyard-background.webp?v=qwen21-20261001') center 18% / cover; box-shadow: none; border-radius: var(--radius); padding: 20px 24px; }
.student-app .student-courtyard .today-buddy-progress { padding: 16px; border: 1px solid #d6e1d8; border-radius: 12px; background: #fffef9; }
.student-app .student-courtyard .today-buddy-petinfo { padding: 8px; border: 1px solid #d6e1d8; border-radius: 10px; background: #fffef9; }
.student-app .student-courtyard .today-buddy-avatar { width: 130px; }
.student-app .student-courtyard .today-buddy-bubble { background: rgba(255,254,249,.9); border-color: var(--line); color: var(--ink); box-shadow: none; }
.student-app .student-courtyard .today-buddy-bubble::after { display: none; }
.student-app .student-courtyard :is(.today-buddy-stage,.today-buddy-hint,.today-buddy-concepts-label,.today-buddy-stats) { color: var(--muted); }
.student-app .student-courtyard .today-buddy-petinfo strong { color: var(--ink); }
.student-app .student-courtyard .today-buddy-lv { color: #3b632b; background: #e0edcb; }
.student-app .student-courtyard .today-buddy-hunger { background: #d8e3c8; }
.student-app .student-courtyard .today-buddy-hunger i { background: #658846; }
.student-app .student-courtyard .today-buddy-concept { background: var(--surface); color: #3b5d3e; border-color: #c8d8bb; }
.student-app .student-courtyard .today-buddy-hint { font-size: 12px; margin-top: 7px; }
.student-app .student-courtyard .today-buddy-stats { margin-top: 13px; gap: 14px; flex-wrap: wrap; }
.student-app :is(.teacher-push-card,.teacher-push-box,.badges-card) { border-color: var(--line); background: var(--surface); border-radius: 14px; }
.student-app :is(.teacher-push-row,.teacher-push-q) { background: #f5f8ef; border-color: var(--line); color: var(--ink); }
.student-app :is(.teacher-push-main small,.teacher-push-meta,.badges-card summary .muted,.badge-prog) { color: var(--muted); }
.student-app .teacher-push-main { min-width: 0; }
.student-app .teacher-push-row strong { overflow-wrap: anywhere; }
.student-app .teacher-push-dot { background: var(--accent); }
.student-app .teacher-push-dot.read { background: #8d9b8f; }
.student-app .student-live-link { display: flex; justify-content: space-between; align-items: center; gap: 12px; background: #e7f0e4; border-color: #cadcc7; color: #2d6241; min-height: 52px; padding: 12px 17px; box-shadow: none; }
.student-app .student-live-link .muted { color: #416a4a; }
.student-app .student-live-banner { background: #185d45; box-shadow: none; color: #fff; }
.student-app .badges-card summary { flex-wrap: wrap; }
.student-app .badges-card summary b { color: #815513; }
.student-app .badge-item { opacity: 1; background: #f2f5ed; border-color: var(--line); }
.student-app .badge-item.earned { background: #fbf2d7; border-color: #ddcda7; box-shadow: none; }
.student-app .badge-check { color: #206c48; }
.student-app .tutor-history { border-radius: 12px; background: #eaf0e2; padding: 15px; }
.student-app .tutor-history-item { border-radius: 9px; }
.student-app .tutor-history-item.active { background: #dae7d3; }
.student-app .tutor-conversation { border-radius: var(--radius); }
.student-app .tutor-user>div { border-radius: 13px 3px 13px 13px; background: #e4efdf; }
.student-app .tutor-composer { background: var(--surface); border-color: var(--line); }
.student-app .tutor-status { font-size: 12px; }
.student-app .report-table { color: var(--ink); }
.student-app .report-table :is(th,td) { border-color: var(--line); }
.student-app .report-table th { background: #ecf2e5; color: #3c5d45; }
.student-app .report-table-wrap { border-radius: 10px; }
.student-app .stat-grid { gap: 12px; }
.student-app .stat-card { padding: 20px; }
.student-app .stat-value { color: var(--accent); }
.student-app .option-key { color: #46604e; border-color: #c8d7c8; background: #f0f5eb; }
.student-app .option.selected .option-key { color: #fff; background: var(--accent); }
.student-app .option.correct .option-key { color: #fff; background: #286d49; }
.student-app .option.incorrect .option-key { color: #fff; background: #a53c34; }
.student-app .school-empty p, .student-app .tutor-history summary span { color: var(--muted); }
.student-app #report-content .panel>.muted { color: var(--muted); }
.student-app #report-content ul { color: var(--muted); }
.student-app .paper-type-tab small { color: var(--muted); }
.student-app .student-pack-sections .chip { max-width: 100%; white-space: normal; text-align: left; overflow-wrap: anywhere; }
.student-app :is(.student-pack-row,.student-pack-sections,.paper-type-tab) { min-width: 0; }
.student-app .result-screen { background: var(--surface); border-color: var(--line); border-radius: var(--radius); }
.student-app .result-screen p { color: var(--muted); }
.student-app .result-icon { background: #e5efda; color: var(--accent); }
.student-app .school-stats>div { background: var(--surface); border-color: var(--line); border-radius: 14px; }
.student-app .school-stats :is(span,small) { color: var(--muted); }
.student-app .school-stats strong { color: var(--ink); }
.student-app .game-card { background: var(--surface); border-color: var(--line); border-radius: 12px; }
.student-app .game-card:hover { border-color: var(--accent); transform: none; }
.student-home-shortcuts [data-home-route="games"] { grid-column: 1 / -1; }
@media (max-width: 1080px) {
  .student-app .sidebar { width: 188px; padding-inline: 12px; }
  .student-app .workspace { margin-left: 188px; }
  .student-app .page { padding: 26px; }
  .student-desk { grid-template-columns: minmax(0,1fr); }
  .student-stat-strip { grid-template-columns: repeat(3,minmax(0,1fr)); gap: 16px; }
  .student-strip-link { grid-column: 1 / -1; border-left: 0; border-top: 1px solid var(--line); padding: 10px 0 0; min-height: 36px; justify-content: space-between; }
}
@media (max-width: 720px) {
  .student-app { padding-bottom: calc(100px + env(safe-area-inset-bottom)); }
  .student-app .workspace { margin-left: 0; }
  .student-app .sidebar { width: 100%; height: calc(72px + env(safe-area-inset-bottom)); padding: 6px 8px calc(6px + env(safe-area-inset-bottom)); border-top: 1px solid var(--line-strong); box-shadow: 0 -3px 15px rgba(33,62,35,.07); }
  .student-app .nav-items { gap: 4px; }
  .student-app .nav-items>.nav-button { min-height: 52px; padding: 5px 0; gap: 4px; font-size: 12px; border-radius: 10px; }
  .student-app .nav-button[aria-current="page"] { box-shadow: none; }
  .student-app .student-more-nav>summary { border-radius: 10px; color: var(--muted); min-height: 52px; font-size: 12px; gap: 4px; }
  .student-app .student-more-nav>summary.active, .student-app .student-more-nav[open]>summary { background: var(--accent-soft); color: var(--on-accent-soft); }
  .student-app .student-more-nav>div { bottom: calc(100% + 10px); width: 196px; padding: 8px; border-radius: 14px; background: var(--surface); border-color: var(--line-strong); box-shadow: var(--shadow-3); }
  .student-app .student-more-nav .nav-button { min-height: 48px; font-size: 14px; }
  .student-app .topbar { height: 60px; padding-inline: 16px; }
  .student-app .breadcrumb { font-size: 12px; gap: 6px; }
  .student-app .top-actions { gap: 7px; }
  .student-app .grade-lock { display: none; }
  .student-app .avatar { width: 32px; height: 32px; }
  .student-app .page { padding: 22px 16px 30px; }
  .student-app h1 { font-size: 26px; }
  .student-app .page-heading { flex-wrap: wrap; gap: 14px; }
  .student-app .page-heading .page-actions { width: 100%; }
  .student-app .page-heading p { font-size: 13px; }
  .student-home-heading { gap: 10px; align-items: flex-start; }
  .student-home-heading>.btn { margin-top: 22px; min-height: 40px; font-size: 12px; padding: 8px 10px; }
  .student-date { font-size: 11px; line-height: 1.65; max-width: 230px; }
  .student-home-intro { font-size: 12px; max-width: 240px; }
  .student-stat-strip { padding: 16px; gap: 12px; margin-bottom: 16px; }
  .student-stat-num { font-size: 26px; }
  .student-stat-label { font-size: 11px; }
  .student-next, .student-question-box { padding: 19px; }
  .student-next-body h3 { font-size: 21px; }
  .student-next-actions .btn.primary { flex: 1; min-width: 0; }
  .student-question-actions .btn { font-size: 13px; }
  .student-preferences { padding-inline: 13px; }
  .student-preferences summary { gap: 9px; }
  .student-preference-value { font-size: 11px; }
  .student-next-list, .student-library { padding: 17px 16px; }
  .student-section-heading { gap: 8px; flex-wrap: wrap; }
  .student-section-heading h2 { font-size: 16px; }
  .student-library .btn { padding-inline: 8px; }
  .student-paper-row { gap: 10px; align-items: flex-start; }
  .student-paper-kind { width: 35px; min-height: 36px; font-size: 11px; }
  .student-paper-name strong { font-size: 13px; }
  .student-paper-name small { font-size: 11px; }
  .student-paper-count { font-size: 11px; }
  .student-home-shortcuts { gap: 10px; }
  .student-home-shortcuts button { padding: 13px 12px; gap: 9px; align-items: flex-start; }
  .student-home-shortcuts button>svg { width: 20px; height: 20px; margin-top: 3px; }
  .student-home-shortcuts button>svg:last-child { display: none; }
  .student-home-shortcuts strong { font-size: 13px; }
  .student-home-shortcuts small { font-size: 11px; }
  .student-app .student-courtyard { grid-template-columns: 92px minmax(0,1fr); gap: 12px; padding: 17px 13px; }
  .student-app .student-courtyard .today-buddy-avatar { width: 88px; }
  .student-app .student-courtyard .today-buddy-hunger { width: 78px; }
  .student-app .student-courtyard .today-buddy-pet { padding: 2px; }
  .student-app .student-courtyard .today-buddy-stats { grid-column: 1 / -1; gap: 8px; font-size: 11px; }
  .student-app .student-courtyard .today-buddy-stats .btn { padding-inline: 9px; font-size: 12px; }
  .student-app .student-courtyard .today-buddy-concepts { gap: 5px; }
  .student-app .student-courtyard .today-buddy-concept { font-size: 11px; }
  .student-theme .student-app .panel { padding: 19px; }
  .student-app .stat-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .student-theme .student-app .stat-card { padding: 17px; }
  .student-app .section-heading { flex-wrap: wrap; }
  .student-app .tutor-composer-actions { flex-wrap: wrap; }
  .student-app .tutor-history { padding: 13px; }
  .student-app .tutor-user>div { color: var(--ink); }
  .student-app .paper-numbers { grid-template-columns: repeat(6,minmax(0,1fr)); }
  .student-app .wrong-card { min-height: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .student-app *, .student-app *::before, .student-app *::after { animation-duration: .01ms; animation-iteration-count: 1; transition-duration: .01ms; scroll-behavior: auto; }
}

/* 课堂锁屏是业务入口约束，旧主题移除后仍完整保留。 */
html.class-locked,html.class-locked body{overflow:hidden}
#class-lock{position:fixed;inset:0;z-index:9000;display:flex;padding:24px 16px;overflow-y:auto;overscroll-behavior:contain;background:rgba(24,17,10,.86);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
html.has-app-titlebar #class-lock{top:38px}
#class-lock .class-lock-card{box-sizing:border-box;width:100%;max-width:440px;margin:auto;padding:32px 24px 24px;border-radius:24px;background:#fffaf3;color:#2f2619;color-scheme:light;text-align:center;box-shadow:0 24px 70px rgba(0,0,0,.45);overflow-wrap:anywhere;animation:class-lock-in .28s ease-out}
#class-lock h2{margin:0 0 14px;font-size:clamp(22px,6.4vw,28px);line-height:1.35;font-weight:800;letter-spacing:0;color:#2f2619;background:none;-webkit-text-fill-color:currentColor}
#class-lock .class-lock-class{margin:0 0 4px;font-size:17px;font-weight:700;color:#4a3d31}
#class-lock .class-lock-time{margin:0 0 16px;font-size:20px;font-weight:800;color:#a3401f;font-variant-numeric:tabular-nums}
#class-lock .class-lock-tip{margin:0 0 20px;padding:12px 14px;border-radius:14px;background:#ffeedd;color:#4a3d31;font-size:15px;line-height:1.7}
#class-lock .class-lock-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}
#class-lock .class-lock-actions button{flex:1 1 128px;min-width:44px;min-height:48px;padding:12px 20px;border-radius:14px;border:2px solid #a3401f;font:inherit;font-size:16px;font-weight:700;line-height:1.3;cursor:pointer;opacity:1}
#class-lock .class-lock-main{background:#a3401f;color:#fff}
#class-lock .class-lock-main:hover:not(:disabled){background:#8a3519;border-color:#8a3519}
#class-lock .class-lock-sub{background:#fff;color:#4a3d31}
#class-lock .class-lock-sub:hover:not(:disabled){background:#fff1e0}
#class-lock .class-lock-actions button:focus-visible{outline:3px solid #1f4fbf;outline-offset:3px}
#class-lock .class-lock-actions button:disabled{cursor:progress;opacity:.75}
#class-lock [hidden]{display:none!important}
#class-lock .class-lock-msg{margin:12px 0 0;font-size:14px;font-weight:600;color:#9b2c1c}
#class-lock .class-lock-msg:empty{margin:0}
#class-lock .class-lock-note{margin:14px 0 0;font-size:13px;line-height:1.6;color:#6b5a48}
@keyframes class-lock-in{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){#class-lock .class-lock-card{animation:none}}

.student-app .growth-nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-bottom:20px}
.student-app .growth-nav .btn{min-width:0;min-height:44px;white-space:normal}
.student-theme .student-app .growth-nav .btn.active,.student-theme .student-app .growth-nav .btn.active:hover:not(:disabled){background:#17755b;border-color:#17755b;color:#fff}
.student-app .growth-content{min-width:0}
/* 原组件按余额/领取状态写入行内 opacity；只淡化动作会更清楚，商品和任务说明仍需可读。 */
.student-app .growth-content .panel[style*="opacity"]{opacity:1!important}
.student-app .growth-content :is(.page-heading,.section-heading){flex-wrap:wrap}
.student-app .growth-content .school-assignment-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:720px){.student-app .growth-nav{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.student-app .growth-content .school-assignment-grid{grid-template-columns:minmax(0,1fr)}.student-app .student-home-heading{flex-wrap:wrap;gap:12px}}

/* 登录入口与校园界面共用色值，身份选择和家长入口都保留完整触控区。 */
body.auth-dark{color-scheme:light;color:#203a36;background:#f3f5ed}
.school-auth{--ink:#203a36;--muted:#51675e;--line:#d6e1d8}
.school-auth .auth-card{background:#fffef9;border-color:#d6e1d8}
.school-auth .auth-intro p,.school-auth .muted,.school-auth .field,.school-auth .eyebrow{color:#51675e}
.school-auth .auth-role-tabs button,.school-auth .auth-tabs button{min-height:44px;min-width:44px;background:#edf3e8;border:1px solid #d6e1d8;color:#203a36;box-shadow:none}
.school-auth .auth-role-tabs button.active,.school-auth .auth-tabs button.active,.school-auth .btn.primary{background:#17755b;border-color:#17755b;color:#fff;box-shadow:none}
.school-auth .auth-role-tabs button:hover,.school-auth .auth-tabs button:hover{background:#dce9d9;color:#203a36}
.school-auth .auth-role-tabs button.active:hover,.school-auth .auth-tabs button.active:hover,.school-auth .btn.primary:hover{background:#125f4a;color:#fff}
.school-auth :is(input,select,textarea){min-height:44px;font-size:16px;color:#203a36;background:#fff;border-color:#b5c8bb}
.school-auth .btn{min-height:44px}
.school-auth #auth-form button{min-height:44px;grid-column:1/-1;width:100%;white-space:normal}
.school-auth .brand-mark{background:#17755b;color:#fff}
.school-auth .auth-role-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;padding:8px 10px;color:#17755b;vertical-align:middle}
.school-auth .auth-role-link:hover{color:#125f4a}
.school-auth .school-hero-mark,.school-auth .school-hero-mark span{color:#365c83}

