/* DREAMWAY UI 2.0 — shared visual primitives; no application state. */
:root {
 --dw-gold-50:#F7F1E4;--dw-gold-100:#EEE2C8;--dw-gold-300:#D8BF88;--dw-gold-400:#C9AA6A;--dw-gold-500:#B99552;--dw-gold-600:#94733D;
 --dw-black-950:#08090B;--dw-black-900:#0D0E11;--dw-black-850:#111216;--dw-black-800:#16171B;--dw-black-750:#1B1C21;--dw-black-700:#222329;
 --dw-ivory-50:#FAF8F3;--dw-ivory-100:#F5F1E8;--dw-ivory-200:#ECE6DA;
 --dw-text-primary-dark:#F3F0E9;--dw-text-secondary-dark:#A9A59C;--dw-text-tertiary-dark:#73716C;
 --dw-text-primary-light:#1A1917;--dw-text-secondary-light:#69655F;--dw-text-tertiary-light:#969087;
 --dw-success:#6F856F;--dw-success-soft:rgba(111,133,111,.14);--dw-warning:#B38A4D;--dw-warning-soft:rgba(179,138,77,.14);--dw-danger:#985858;--dw-danger-soft:rgba(152,88,88,.13);--dw-info:#687A8C;--dw-info-soft:rgba(104,122,140,.14);
 --dw-radius-xs:8px;--dw-radius-sm:12px;--dw-radius-md:16px;--dw-radius-lg:20px;--dw-radius-xl:26px;
 --dw-space-1:4px;--dw-space-2:8px;--dw-space-3:12px;--dw-space-4:16px;--dw-space-5:20px;--dw-space-6:24px;--dw-space-8:32px;--dw-space-10:40px;--dw-space-12:48px;--dw-space-16:64px;
 --dw-fast:140ms;--dw-normal:200ms;--dw-slow:280ms;--dw-shadow-sm:0 8px 24px rgba(0,0,0,.12);--dw-shadow-md:0 16px 42px rgba(0,0,0,.16);--dw-shadow-lg:0 28px 80px rgba(0,0,0,.22);
 --dw-font:-apple-system,BlinkMacSystemFont,"SF Pro Display","PingFang SC","Microsoft YaHei","Noto Sans SC",sans-serif;
}
.md-theme.dw-theme,.dw-theme body {
 --dw-bg:#F6F3EC;--dw-surface:#fff;--dw-raised:#FAF8F3;--dw-text:var(--dw-text-primary-light);--dw-muted:var(--dw-text-secondary-light);--dw-line:rgba(40,35,28,.09);--dw-accent:var(--dw-gold-600);--dw-soft:var(--dw-gold-50);
 --md-bg:var(--dw-bg);--md-surface:var(--dw-surface);--md-navy:var(--dw-text);--md-primary:var(--dw-accent);--md-primary-hover:var(--dw-gold-600);--md-text:var(--dw-text);--md-muted:var(--dw-muted);--md-line:var(--dw-line);--md-tint:var(--dw-soft);--md-font:var(--dw-font);--md-shadow:none;--md-danger:var(--dw-danger);
 --bg:var(--dw-bg);--surface:var(--dw-surface);--text:var(--dw-text);--text-primary:var(--dw-text);--ink:var(--dw-text);--text-secondary:var(--dw-muted);--text2:var(--dw-muted);--text3:var(--dw-muted);--text-muted:var(--dw-muted);--muted:var(--dw-muted);--border:var(--dw-line);--border-light:var(--dw-line);--line:var(--dw-line);--cream:var(--dw-bg);--white:var(--dw-surface);--gold:var(--dw-accent);--gold2:var(--dw-gold-300);--primary:var(--dw-accent);--primary-dark:var(--dw-gold-600);--primary-bg:var(--dw-soft);--green:var(--dw-success);--red:var(--dw-danger);--danger:var(--dw-danger);--primary-gradient:linear-gradient(135deg,#D2B778,#B99552);--shadow:none;
 color-scheme:light;background:var(--dw-bg);
}
.md-theme.dw-dark,.dw-theme body.dw-dark {
 --dw-bg:var(--dw-black-900);--dw-surface:var(--dw-black-850);--dw-raised:var(--dw-black-800);--dw-text:var(--dw-text-primary-dark);--dw-muted:var(--dw-text-secondary-dark);--dw-line:rgba(255,255,255,.065);--dw-accent:var(--dw-gold-400);--dw-soft:rgba(201,170,106,.08);color-scheme:dark;
}
.dw-theme body.md-ui {font-family:var(--dw-font);background:var(--dw-bg);color:var(--dw-text);font-variant-numeric:tabular-nums;font-size:15px;line-height:1.65}
.dw-theme :is(h1,h2,h3,h4) {font-weight:600!important;letter-spacing:-.025em;color:var(--dw-text)}
.dw-theme h1 {font-size:30px;line-height:1.25}.dw-theme h2 {font-size:23px}.dw-theme h3 {font-size:18px}
.dw-theme :is(button,input,select,textarea) {font-family:var(--dw-font)}
.dw-theme :is(button,a,[role=button]):focus-visible {outline:2px solid var(--dw-gold-400);outline-offset:4px}
.dw-theme :is(button,.btn,.dw-button) {transition:background var(--dw-fast),border-color var(--dw-fast),transform var(--dw-fast);font-weight:500;min-height:44px;box-shadow:none}
.dw-theme :is(.btn,.dw-button,.v5sw-secondary,.v5sw-linkbtn) {background:transparent;color:var(--dw-text);border:1px solid var(--dw-line);border-radius:var(--dw-radius-sm)}
.dw-theme :is(.btn-primary,.primary-btn,.btn-submit,.v5sw-primary,.dw-primary) {background:linear-gradient(135deg,#D2B778,#B99552)!important;color:#111!important;font-weight:600;border:1px solid transparent;box-shadow:none;border-radius:12px}
.dw-theme :is(.btn-outline,.btn-ai,.btn-history,.btn-download,.btn-profile,.tool-btn,.btn-daily,.dw-secondary) {background:var(--dw-surface)!important;border:1px solid var(--dw-line)!important;color:var(--dw-text)!important;box-shadow:none}
.dw-theme :is(.btn-danger,.btn-danger-outline,.dw-danger) {background:var(--dw-danger-soft)!important;color:var(--dw-danger)!important;border-color:transparent!important}
.dw-theme :is(.btn-success,.dw-success) {background:var(--dw-success-soft)!important;color:var(--dw-success)!important;border-color:transparent!important}
.dw-theme :is(button,.dw-button):disabled {opacity:.5;cursor:not-allowed}
.dw-theme :is(input,select,textarea):not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]) {background:var(--dw-raised)!important;border:1px solid var(--dw-line)!important;color:var(--dw-text)!important;border-radius:12px;box-shadow:none;min-height:44px}
.dw-theme :is(input,textarea)::placeholder {color:var(--dw-muted);opacity:.75}.dw-theme :is(input,select,textarea):focus {border-color:var(--dw-gold-400)!important;box-shadow:0 0 0 3px var(--dw-soft)!important}
.dw-theme :is(.card,.panel,.student-card,.attention-card,.class-card,.report-card,.question-card,.result-card,.overview,.weekly-card,.report,.stat-card,.backup-card,.feature,.v5sw-card,.dw-card) {background:var(--dw-surface);border:1px solid var(--dw-line);border-radius:18px;box-shadow:none;color:var(--dw-text)}
.dw-theme .dw-card {padding:24px}.dw-theme .dw-card-emphasis {background:var(--dw-raised);box-shadow:var(--dw-shadow-sm)}
.dw-theme .dw-eyebrow {font-size:11px;line-height:1.6;font-weight:600;letter-spacing:.14em;color:var(--dw-muted);text-transform:uppercase}
.dw-theme .dw-wordmark {font-size:19px;font-weight:600;letter-spacing:.12em;color:var(--dw-accent);line-height:1.5}.dw-theme .dw-brand-caption {font-size:9px;letter-spacing:.16em;color:var(--dw-muted);margin-top:4px}
.dw-theme .dw-muted {color:var(--dw-muted);font-size:13px}.dw-theme .dw-heading {display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:32px}.dw-theme .dw-heading h1 {margin:10px 0 12px}.dw-theme .dw-heading p {margin:0;color:var(--dw-muted)}
.dw-theme .dw-meta {font-size:12px;color:var(--dw-muted);display:flex;gap:16px;align-items:center;flex-wrap:wrap}.dw-theme .dw-status {display:inline-flex;gap:8px;align-items:center}.dw-theme .dw-status::before {content:'';width:6px;height:6px;border-radius:100%;background:var(--dw-success)}
.dw-theme .dw-badge {display:inline-flex;align-items:center;border:1px solid var(--dw-line);border-radius:7px;padding:3px 9px;font-size:12px;background:var(--dw-soft);color:var(--dw-accent)}
.dw-theme .dw-empty {text-align:center;padding:40px 24px;color:var(--dw-muted);font-size:14px}.dw-theme .dw-empty strong {display:block;color:var(--dw-text);font-weight:500;margin-bottom:8px}
.dw-theme :is(.empty,.v5sw-empty) {background:var(--dw-surface);color:var(--dw-muted);line-height:1.85}
.dw-theme :is(.dw-is-loading) {font-size:0;color:transparent;min-height:140px;background:none}.dw-theme :is(.dw-is-loading)>* {display:none}
.dw-theme :is(.dw-is-loading)::after,.dw-skeleton {content:'';display:block;width:100%;height:96px;border-radius:12px;background:linear-gradient(var(--dw-line),var(--dw-line)) 0 0/40% 15px no-repeat,linear-gradient(var(--dw-line),var(--dw-line)) 0 32px/95% 12px no-repeat,linear-gradient(var(--dw-line),var(--dw-line)) 0 60px/75% 12px no-repeat;animation:dw-breathe 1.6s ease-in-out infinite}
@keyframes dw-breathe {50%{opacity:.45}}
.dw-theme :is(.modal-mask,.confirm-overlay,.md-student-actions-dialog::backdrop) {background:rgba(0,0,0,.58);backdrop-filter:blur(8px)}
.dw-theme .md-admin>.modal {background:rgba(0,0,0,.58);backdrop-filter:blur(8px)}
.dw-theme :is(.modal-box,.confirm-box,.modal-mask>.modal,.md-student-actions-dialog) {background:var(--dw-raised);color:var(--dw-text);border:1px solid var(--dw-line);border-radius:20px;box-shadow:var(--dw-shadow-lg);max-width:640px}
.dw-theme :is(.toast,#toast) {background:var(--dw-black-750);color:var(--dw-text-primary-dark);box-shadow:var(--dw-shadow-sm);border:1px solid rgba(255,255,255,.08);border-radius:12px}
.dw-theme table {background:var(--dw-surface);color:var(--dw-text);font-variant-numeric:tabular-nums}.dw-theme th {font-size:12px;font-weight:500;color:var(--dw-muted);background:var(--dw-raised);padding:16px}.dw-theme td {padding:16px;min-height:54px;border-bottom:1px solid var(--dw-line);font-size:14px}.dw-theme tbody tr:hover {background:rgba(127,127,127,.035)}
.dw-theme :is(.table-wrapper,.md-table-scroll) {border-color:var(--dw-line);border-radius:14px}
.dw-theme .dw-section-head {display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}.dw-theme .dw-section-head h2 {margin:0;font-size:19px}.dw-theme .dw-link {border:none;background:none;color:var(--dw-accent);padding:0 4px;font-size:13px;text-decoration:none;min-height:44px;display:inline-flex;align-items:center;cursor:pointer}
.dw-theme .dw-progress {height:4px;border-radius:8px;background:var(--dw-line);overflow:hidden}.dw-theme .dw-progress i {display:block;height:100%;background:var(--dw-gold-400);border-radius:inherit}
.dw-theme .dw-inline-surface {background:var(--dw-raised)!important;color:var(--dw-text)}.dw-theme .dw-inline-text {color:var(--dw-text)!important}.dw-theme .dw-inline-muted {color:var(--dw-muted)!important}.dw-theme .dw-inline-accent {color:var(--dw-accent)!important}.dw-theme .dw-inline-line {border-color:var(--dw-line)!important}.dw-theme .dw-inline-success {color:var(--dw-success)!important}.dw-theme .dw-inline-danger {color:var(--dw-danger)!important}.dw-theme .dw-inline-warning {color:var(--dw-warning)!important}
@media(max-width:767px){.dw-theme .dw-heading{display:block;margin-bottom:24px}.dw-theme .dw-heading .dw-meta{margin-top:18px}.dw-theme h1{font-size:27px}.dw-theme .dw-card{padding:22px}.dw-theme .dw-section-head{gap:12px}}
@media(prefers-reduced-motion:reduce){.dw-theme *, .dw-theme *::before,.dw-theme *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
