:root { color-scheme: light; }
.theme-toggle { font-size: 22px; line-height: 1; }
:root[data-theme="dark"] {
  color-scheme: dark;
  --green: #8dd6b0; --green-dark: #b9efce; --green-light: #203d2f;
  --ink: #e4eee7; --muted: #a7b9ad; --line: #33453b;
  --bg: #111b16; --white: #1b2821; --orange: #e0b873; --blue: #a1c7ec;
  --shadow: 0 4px 20px #0002;
}
[data-theme="dark"] .topbar,
[data-theme="dark"] .btn-secondary,
[data-theme="dark"] .card,
[data-theme="dark"] .stat-card,
[data-theme="dark"] .student-top,
[data-theme="dark"] .modal,
[data-theme="dark"] .notifications,
[data-theme="dark"] .search-results,
[data-theme="dark"] .input,
[data-theme="dark"] input:not([type="radio"]):not([type="checkbox"]),
[data-theme="dark"] select,
[data-theme="dark"] textarea,
[data-theme="dark"] .timer { background: var(--white); color: var(--ink); border-color: var(--line); }
[data-theme="dark"] .workspace,
[data-theme="dark"] .help-card,
[data-theme="dark"] .student-demo-banner,
[data-theme="dark"] .demo-fill,
[data-theme="dark"] .lobby-meta > div,
[data-theme="dark"] .receipt-number,
[data-theme="dark"] .class-mini,
[data-theme="dark"] .class-symbol,
[data-theme="dark"] .option-letter,
[data-theme="dark"] .grade-answer,
[data-theme="dark"] .review-answer,
[data-theme="dark"] .info-box,
[data-theme="dark"] .import-drop,
[data-theme="dark"] .chip { background: #23382b; color: #c5ddca; border-color: var(--line); }
[data-theme="dark"] .welcome-banner { background: #21392b; border-color: #36503f; }
[data-theme="dark"] .welcome-banner h2,
[data-theme="dark"] .join-story h1,
[data-theme="dark"] .student-question h2,
[data-theme="dark"] .receipt h1,
[data-theme="dark"] .timer strong,
[data-theme="dark"] .result-score { color: var(--ink); }
[data-theme="dark"] .welcome-banner p,
[data-theme="dark"] .welcome-badge,
[data-theme="dark"] .crumb,
[data-theme="dark"] .crumb strong,
[data-theme="dark"] .muted,
[data-theme="dark"] small,
[data-theme="dark"] .nav-label,
[data-theme="dark"] .nav a,
[data-theme="dark"] .page-footer,
[data-theme="dark"] .student-footer,
[data-theme="dark"] .join-story p,
[data-theme="dark"] .join-card > p,
[data-theme="dark"] .field > label,
[data-theme="dark"] .field-label,
[data-theme="dark"] .question-kicker,
[data-theme="dark"] .instruction-list,
[data-theme="dark"] .saved-state,
[data-theme="dark"] .lobby .intro,
[data-theme="dark"] .student-exam-head p,
[data-theme="dark"] .map-legend,
[data-theme="dark"] .stat-top,
[data-theme="dark"] .stat-bottom { color: var(--muted); }
[data-theme="dark"] .btn-primary,
[data-theme="dark"] .brand-mark { background: #8dd6b0; color: #12281c; }
[data-theme="dark"] .btn-secondary,
[data-theme="dark"] .btn-ghost,
[data-theme="dark"] .text-link,
[data-theme="dark"] .nav a.active { color: var(--green); }
[data-theme="dark"] .badge { background: #294333; color: #c2e7cb; }
[data-theme="dark"] .badge.pending,
[data-theme="dark"] .badge.scheduled,
[data-theme="dark"] .badge.draft,
[data-theme="dark"] .tip,
[data-theme="dark"] .warning { background: #3b3223; color: #efcf98; border-color: #685538; }
[data-theme="dark"] .badge.in_progress,
[data-theme="dark"] .badge.published { background: #243b4c; color: #b8daf6; }
[data-theme="dark"] .error-box,
[data-theme="dark"] .review-answer.wrong,
[data-theme="dark"] .timer.urgent { background: #482d2b; color: #f4c0b8; border-color: #754a44; }
[data-theme="dark"] th,
[data-theme="dark"] .table-footer,
[data-theme="dark"] .setting-row { background: #1b2821; color: var(--muted); border-color: var(--line); }
[data-theme="dark"] tr:hover,
[data-theme="dark"] .nav a:hover,
[data-theme="dark"] .student-option:hover { background: #253b2d; }
[data-theme="dark"] .student-option,
[data-theme="dark"] .q-dot { background: var(--white); color: var(--ink); border-color: #536d5b; }
[data-theme="dark"] .student-option:has(input:checked),
[data-theme="dark"] .q-dot.answered { background: #274c35; color: #dcf7e3; border-color: #8dd6b0; }
[data-theme="dark"] .q-dot.current { border-color: #c5f3d8; color: #e3f8eb; }
[data-theme="dark"] .help-card p,
[data-theme="dark"] .help-title,
[data-theme="dark"] .tip h3,
[data-theme="dark"] .tip p { color: inherit; }
[data-theme="dark"] .student-shell { background: var(--bg); }
[data-theme="dark"] .modal-footer,
[data-theme="dark"] .add-question,
[data-theme="dark"] .class-choice:has(input:checked),
[data-theme="dark"] .assignment-code,
[data-theme="dark"] .stat-pill,
[data-theme="dark"] .student-option .option-letter { background: #23382b; color: var(--ink); }
[data-theme="dark"] .field-error,
[data-theme="dark"] .import-preview tr.invalid,
[data-theme="dark"] .btn-danger { background: #482d2b; color: #f4c0b8; }
[data-theme="dark"] .btn-secondary:hover,
[data-theme="dark"] .icon-btn:hover,
[data-theme="dark"] tbody tr:hover,
[data-theme="dark"] .search-results a:hover { background: #253b2d; color: var(--ink); }
[data-theme="dark"] .text-danger { color: #ffc4bb; }
[data-theme="dark"] .table-title strong,
[data-theme="dark"] .activity strong { color: var(--ink); }
[data-theme="dark"] .activity p,
[data-theme="dark"] .progress-label,
[data-theme="dark"] .checkbox-label,
[data-theme="dark"] .class-choice small,
[data-theme="dark"] .step-label,
[data-theme="dark"] .score-field,
[data-theme="dark"] .modal-intro,
[data-theme="dark"] .search-results small,
[data-theme="dark"] .exam-progress,
[data-theme="dark"] .student-demo-controls,
[data-theme="dark"] .review-question p { color: var(--muted); }
[data-theme="dark"] .stat-bottom strong,
[data-theme="dark"] .back-link,
[data-theme="dark"] .question-mini-list a,
[data-theme="dark"] .score,
[data-theme="dark"] .student-demo-controls button { color: var(--green); }
[data-theme="dark"] .score.low,
[data-theme="dark"] .saved-state.error,
[data-theme="dark"] .timer.urgent strong { color: #efcf98; }
[data-theme="dark"] .student-option:has(input:checked) .option-letter { background: #365b41; color: #dcf7e3; }
[data-theme="dark"] .welcome-banner .btn { background: #304d3a; color: var(--ink); border-color: #597a63; }
[data-theme="dark"] .activity:not(:last-child):after { background: var(--line); }
[data-theme="dark"] .bar-chart { background: repeating-linear-gradient(to top, transparent 0, transparent 37px, var(--line) 38px, var(--line) 39px); }
@media print { :root[data-theme="dark"] { --ink: #17291f; --muted: #3b4e41; --white: #fff; --bg: #fff; --line: #bbb; color-scheme: light; } }

[data-theme="dark"] .nav a,
[data-theme="dark"] .nav-label,
[data-theme="dark"] .workspace small,
[data-theme="dark"] .sidebar-demo,
[data-theme="dark"] .profile-text small,
[data-theme="dark"] .crumb,
[data-theme="dark"] .stat-top,
[data-theme="dark"] .stat-bottom,
[data-theme="dark"] .class-mini>p,
[data-theme="dark"] .class-mini-foot,
[data-theme="dark"] .class-card .class-description,
[data-theme="dark"] .class-card-stats small,
[data-theme="dark"] .exam-meta,
[data-theme="dark"] .exam-card>p,
[data-theme="dark"] .table-title small,
[data-theme="dark"] .student-cell small,
[data-theme="dark"] .table-footer,
[data-theme="dark"] .small-meta,
[data-theme="dark"] .summary-banner p,
[data-theme="dark"] .detail-item small,
[data-theme="dark"] .detail-item span,
[data-theme="dark"] .chart-summary small,
[data-theme="dark"] .chart-legend,
[data-theme="dark"] .chart-labels,
[data-theme="dark"] .activity small,
[data-theme="dark"] .page-footer,
[data-theme="dark"] .join-story p,
[data-theme="dark"] .join-card>.muted,
[data-theme="dark"] .student-identity small,
[data-theme="dark"] .lobby .intro,
[data-theme="dark"] .lobby-meta small,
[data-theme="dark"] .student-exam-head p,
[data-theme="dark"] .question-kicker,
[data-theme="dark"] .saved-state,
[data-theme="dark"] .map-legend,
[data-theme="dark"] .student-footer,
[data-theme="dark"] .student-demo-banner,
[data-theme="dark"] .demo-fill,
[data-theme="dark"] .receipt-top p,
[data-theme="dark"] .receipt-stats small,
[data-theme="dark"] .grading-meta,
[data-theme="dark"] .settings-nav a,
[data-theme="dark"] .setting-row p,
[data-theme="dark"] .guide-step p,
[data-theme="dark"] .import-drop p,
[data-theme="dark"] .field small,
[data-theme="dark"] .field>label small,
[data-theme="dark"] th { color: var(--muted); }
