/*
 * 曜石虹彩主题（opal_obsidian）
 * 只覆盖颜色、材质、边框、阴影、图标表现和动效；结构尺寸继续由 style.css 管理。
 */

body[data-theme="opal_obsidian"] {
    color-scheme: light;
    --opal-canvas: #f5f6f8;
    --opal-panel: #ffffff;
    --opal-panel-secondary: #f8f9fb;
    --opal-obsidian: #0c1119;
    --opal-obsidian-card: #131a25;
    --opal-obsidian-raised: #182231;
    --opal-text: #18202a;
    --opal-text-on-dark: #f5f7fa;
    --opal-muted: #6b7684;
    --opal-muted-on-dark: #a8b3c2;
    --opal-line: #e2e6ec;
    --opal-line-strong: #cfd6df;
    --opal-line-dark: #2b3748;
    --opal-ice: #55bff0;
    --opal-copper: #f0a36a;
    --opal-violet: #9a83c5;
    --opal-success: #35b56b;
    --opal-warning: #e99a32;
    --opal-danger: #d64545;
    --opal-radius: 8px;
    --opal-shadow-1: 0 1px 2px rgba(12, 17, 25, .04), 0 4px 9px rgba(12, 17, 25, .035);
    --opal-shadow-2: 0 3px 7px rgba(12, 17, 25, .075), 0 8px 14px rgba(12, 17, 25, .05);
    --opal-shadow-dark: 0 2px 5px rgba(0, 0, 0, .26), 0 9px 18px rgba(0, 0, 0, .18);
    --opal-shadow-pressed: 0 1px 2px rgba(12, 17, 25, .13);
    --opal-motion-fast: 170ms;
    --opal-motion-card: 200ms;
    --opal-motion-sweep: 560ms;
    --opal-ease: cubic-bezier(.2, .72, .2, 1);
    --theme-browser-color: var(--opal-canvas);

    /* 让既有结构类继续使用同一套布局，只替换其视觉令牌。 */
    --bg: var(--opal-canvas);
    --panel: var(--opal-panel);
    --text: var(--opal-text);
    --muted: var(--opal-muted);
    --line: var(--opal-line-strong);
    --line-soft: var(--opal-line);
    --primary: #2588ba;
    --primary-strong: #17668e;
    --green-soft: #eaf7ef;
    --blue-soft: #eaf6fb;
    --amber-soft: #fff3e9;
    --rose-soft: #fff0f0;
    --danger: var(--opal-danger);
    --success: var(--opal-success);
    --shadow: var(--opal-shadow-2);
    --shadow-soft: var(--opal-shadow-1);
    --shadow-pop: var(--opal-shadow-2);
    --glass: var(--opal-panel);

    --titanium-canvas: var(--opal-canvas);
    --titanium-surface: var(--opal-panel-secondary);
    --titanium-panel: var(--opal-panel);
    --titanium-line: var(--opal-line);
    --titanium-line-strong: var(--opal-line-strong);
    --titanium-graphite: var(--opal-text);
    --titanium-muted: var(--opal-muted);
    --titanium-blue: #2588ba;
    --titanium-blue-soft: #eaf6fb;
    --titanium-mint: var(--opal-success);
    --titanium-mint-soft: #eaf7ef;
    --titanium-champagne: #bf7441;
    --titanium-champagne-soft: #fff3e9;
    --titanium-rose-soft: #fff0f0;
    --titanium-brush: var(--opal-panel-secondary);
    --titanium-brush-blue: var(--opal-panel-secondary);
    --titanium-brush-mint: var(--opal-panel-secondary);
    --titanium-brush-champagne: var(--opal-panel-secondary);
    --titanium-radius: var(--opal-radius);
    --titanium-shadow-1: var(--opal-shadow-1);
    --titanium-shadow-2: var(--opal-shadow-2);
    --titanium-press-shadow: var(--opal-shadow-pressed);
    --titanium-motion: var(--opal-motion-card);
    --titanium-ease: var(--opal-ease);
    --titanium-device-canvas: var(--opal-canvas);
    --titanium-device-panel: var(--opal-panel);
    --titanium-metal-edge: #344154;
    --titanium-metal-edge-soft: #536174;
    --titanium-metal-surface: linear-gradient(145deg, rgba(255, 255, 255, .025), rgba(255, 255, 255, 0) 48%), var(--opal-obsidian-card);
    --titanium-metal-rim: inset 0 1px 0 rgba(255, 255, 255, .055), inset 0 -1px 0 rgba(0, 0, 0, .26);
    --titanium-metal-rest: var(--opal-shadow-dark);
    --titanium-metal-hover: 0 3px 6px rgba(0, 0, 0, .28), 0 10px 18px rgba(0, 0, 0, .2);
    --titanium-metal-down: 0 1px 2px rgba(0, 0, 0, .3), 0 5px 9px rgba(0, 0, 0, .2);
    --titanium-icon-filter: none;
    --titanium-icon-filter-hover: none;
    --titanium-polarization: none;

    background: var(--opal-canvas);
    color: var(--opal-text);
}

body[data-theme="opal_obsidian"] .app-shell {
    animation: opal-page-enter 180ms var(--opal-ease);
}

@media (prefers-reduced-motion: no-preference) {
    body[data-theme="opal_obsidian"] .app-shell > section,
    body[data-theme="opal_obsidian"] .notice {
        animation: none;
    }
}

body[data-theme="opal_obsidian"] .topbar,
body[data-theme="opal_obsidian"] .panel,
body[data-theme="opal_obsidian"] .class-command-deck,
body[data-theme="opal_obsidian"] .tools-command-deck,
body[data-theme="opal_obsidian"] .tool-maintenance-drawer,
body[data-theme="opal_obsidian"] .bottom-nav {
    border-color: var(--opal-line);
    border-radius: var(--opal-radius);
    background: var(--opal-panel);
    box-shadow: var(--opal-shadow-1);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}

body[data-theme="opal_obsidian"] .topbar {
    position: relative;
    overflow: hidden;
}

body[data-theme="opal_obsidian"] .topbar-date {
    color: var(--opal-muted-on-dark);
}

body[data-theme="opal_obsidian"] .topbar::before {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    height: 1px;
    content: "";
    background: linear-gradient(90deg, transparent 3%, rgba(85, 191, 240, .48) 22%, rgba(207, 214, 223, .72) 52%, rgba(240, 163, 106, .35) 78%, rgba(154, 131, 197, .34) 92%, transparent);
    pointer-events: none;
}

body[data-theme="opal_obsidian"] .desktop-side-nav {
    border-color: var(--opal-line);
    background: var(--opal-panel);
    box-shadow: 2px 0 10px rgba(12, 17, 25, .055);
}

body[data-theme="opal_obsidian"] .desktop-side-brand img,
body[data-theme="opal_obsidian"] .topbar-logo {
    border-radius: var(--opal-radius);
    box-shadow: none;
}

body[data-theme="opal_obsidian"] .desktop-side-links a {
    color: var(--opal-muted);
    transition: background var(--opal-motion-fast) ease, border-color var(--opal-motion-fast) ease, color var(--opal-motion-fast) ease, transform var(--opal-motion-fast) ease;
}

body[data-theme="opal_obsidian"] .desktop-side-links a.active {
    border-color: #d9e0e7;
    background: #f0f3f6;
    color: var(--opal-text);
    box-shadow: inset 2px 0 0 var(--opal-ice), inset 0 -1px 0 rgba(240, 163, 106, .24);
}

body[data-theme="opal_obsidian"] .desktop-side-links a:hover {
    border-color: var(--opal-line);
    background: var(--opal-panel-secondary);
    color: var(--opal-text);
    transform: none;
}

body[data-theme="opal_obsidian"] .bottom-nav a.active {
    color: var(--opal-text);
    box-shadow: inset 0 -2px 0 var(--opal-ice);
}

body[data-theme="opal_obsidian"] .app-shell :where(h1, h2, h3, p, span, strong, small, em, a, button, label) {
    text-shadow: none;
}

body[data-theme="opal_obsidian"] .page-help-body,
body[data-theme="opal_obsidian"] .recovery-code-box,
body[data-theme="opal_obsidian"] .backup-table-list > div,
body[data-theme="opal_obsidian"] .system-check-list > div,
body[data-theme="opal_obsidian"] .list-row,
body[data-theme="opal_obsidian"] .stat-card {
    border-color: var(--opal-line);
    background: var(--opal-panel-secondary);
    box-shadow: none;
}

body[data-theme="opal_obsidian"] .icon-link,
body[data-theme="opal_obsidian"] .mini-btn,
body[data-theme="opal_obsidian"] .secondary-btn,
body[data-theme="opal_obsidian"] .page-help summary {
    border-color: var(--opal-line-strong);
    border-radius: var(--opal-radius);
    background: var(--opal-panel);
    color: #42505f;
    box-shadow: 0 1px 2px rgba(12, 17, 25, .045);
    transition: background var(--opal-motion-fast) ease, border-color var(--opal-motion-fast) ease, color var(--opal-motion-fast) ease, box-shadow var(--opal-motion-fast) ease, transform var(--opal-motion-fast) ease;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}

body[data-theme="opal_obsidian"] .primary-btn {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    border: 1px solid transparent;
    border-radius: var(--opal-radius);
    background: linear-gradient(var(--opal-obsidian-card), var(--opal-obsidian-card)) padding-box,
        linear-gradient(105deg, rgba(85, 191, 240, .54), #344154 42%, rgba(240, 163, 106, .36) 76%, rgba(154, 131, 197, .4)) border-box;
    color: var(--opal-text-on-dark);
    box-shadow: 0 2px 4px rgba(12, 17, 25, .19), 0 7px 13px rgba(12, 17, 25, .1), inset 0 1px 0 rgba(255, 255, 255, .055);
    transition: background var(--opal-motion-fast) ease, border-color var(--opal-motion-fast) ease, color var(--opal-motion-fast) ease, box-shadow var(--opal-motion-fast) ease, transform var(--opal-motion-fast) ease;
}

body[data-theme="opal_obsidian"] .primary-btn::after {
    position: absolute;
    z-index: 1;
    top: 0;
    left: 0;
    width: 42%;
    height: 1px;
    content: "";
    background: linear-gradient(90deg, transparent, var(--opal-ice) 32%, var(--opal-copper) 72%, transparent);
    opacity: .9;
    pointer-events: none;
    transform: translateX(-150%);
}

body[data-theme="opal_obsidian"] .primary-btn:hover,
body[data-theme="opal_obsidian"] .primary-btn:focus-visible {
    border-color: transparent;
    background: linear-gradient(var(--opal-obsidian-raised), var(--opal-obsidian-raised)) padding-box,
        linear-gradient(105deg, rgba(85, 191, 240, .68), #435269 42%, rgba(240, 163, 106, .46) 76%, rgba(154, 131, 197, .5)) border-box;
    color: #ffffff;
    box-shadow: 0 3px 6px rgba(12, 17, 25, .2), 0 9px 16px rgba(12, 17, 25, .12), inset 0 1px 0 rgba(255, 255, 255, .075);
    filter: none;
    transform: none;
}

body[data-theme="opal_obsidian"] .primary-btn:hover::after,
body[data-theme="opal_obsidian"] .primary-btn:focus-visible::after,
body[data-theme="opal_obsidian"] .primary-btn.is-save-confirmed::after {
    animation: opal-button-sweep var(--opal-motion-sweep) var(--opal-ease) 1;
}

body[data-theme="opal_obsidian"] .icon-link:hover,
body[data-theme="opal_obsidian"] .mini-btn:hover,
body[data-theme="opal_obsidian"] .secondary-btn:hover,
body[data-theme="opal_obsidian"] .page-help summary:hover {
    border-color: #bdc9d6;
    background: var(--opal-panel-secondary);
    color: var(--opal-text);
    filter: none;
    transform: none;
}

body[data-theme="opal_obsidian"] .primary-btn:active,
body[data-theme="opal_obsidian"] .secondary-btn:active,
body[data-theme="opal_obsidian"] .icon-link:active,
body[data-theme="opal_obsidian"] .mini-btn:active {
    box-shadow: var(--opal-shadow-pressed);
    transform: translateY(1px);
}

body[data-theme="opal_obsidian"] input,
body[data-theme="opal_obsidian"] textarea,
body[data-theme="opal_obsidian"] select {
    border-color: var(--opal-line-strong);
    border-radius: var(--opal-radius);
    background: var(--opal-panel);
    color: var(--opal-text);
    box-shadow: inset 0 1px 2px rgba(12, 17, 25, .035);
    transition: border-color var(--opal-motion-fast) ease, box-shadow var(--opal-motion-fast) ease, background var(--opal-motion-fast) ease;
}

body[data-theme="opal_obsidian"] input:focus,
body[data-theme="opal_obsidian"] textarea:focus,
body[data-theme="opal_obsidian"] select:focus,
body[data-theme="opal_obsidian"] input:focus-visible,
body[data-theme="opal_obsidian"] textarea:focus-visible,
body[data-theme="opal_obsidian"] select:focus-visible {
    border-color: var(--opal-ice);
    outline: none;
    box-shadow: 0 0 0 2px rgba(85, 191, 240, .32), 1px 1px 0 rgba(240, 163, 106, .22);
}

body[data-theme="opal_obsidian"] :where(a, button, summary, [tabindex]):focus-visible {
    outline: 2px solid var(--opal-ice);
    outline-offset: 2px;
    box-shadow: 0 0 0 1px rgba(240, 163, 106, .2);
}

body[data-theme="opal_obsidian"] :where(input, textarea, select)[aria-invalid="true"],
body[data-theme="opal_obsidian"] :where(input, textarea, select):user-invalid {
    border-color: var(--opal-danger);
    box-shadow: 0 0 0 2px rgba(214, 69, 69, .17);
}

body[data-theme="opal_obsidian"] input[type="checkbox"],
body[data-theme="opal_obsidian"] input[type="radio"] {
    accent-color: #2588ba;
}

body[data-theme="opal_obsidian"] .notice {
    border-color: rgba(53, 181, 107, .24);
    background: #edf8f1;
    color: #227c49;
    box-shadow: 0 2px 5px rgba(53, 181, 107, .08);
}

body[data-theme="opal_obsidian"] .notice.success:not(.account-plan-status),
body[data-theme="opal_obsidian"] .whiteboard-save-toast.success {
    animation: none;
}

body[data-theme="opal_obsidian"] .notice.warn {
    border-color: rgba(233, 154, 50, .27);
    background: #fff6ea;
    color: #995e14;
}

body[data-theme="opal_obsidian"] .notice.danger,
body[data-theme="opal_obsidian"] .danger-zone {
    border-color: rgba(214, 69, 69, .28);
    background: #fff2f2;
    color: #a52e2e;
}

body[data-theme="opal_obsidian"] .danger-btn {
    border-color: #c43e3e;
    background: #d64545;
    color: #fff;
    box-shadow: 0 2px 5px rgba(214, 69, 69, .16);
}

body[data-theme="opal_obsidian"] .home-context-card,
body[data-theme="opal_obsidian"] .retention-primary,
body[data-theme="opal_obsidian"] .retention-week,
body[data-theme="opal_obsidian"] .today-card-grid.today-record-strip,
body[data-theme="opal_obsidian"] .class-stat-strip,
body[data-theme="opal_obsidian"] .home-secondary-entry-grid .quick-card,
body[data-theme="opal_obsidian"] .tool-maintenance-grid .quick-card {
    border-color: var(--opal-line);
    background: var(--opal-panel-secondary);
    box-shadow: none;
}

body[data-theme="opal_obsidian"] .today-card {
    border-color: var(--opal-line);
    background: transparent;
}

body[data-theme="opal_obsidian"] .today-card.done {
    background: #edf8f1;
}

body[data-theme="opal_obsidian"] .today-attention-panel {
    border-left-color: var(--opal-copper);
}

body[data-theme="opal_obsidian"] .retention-day-dots i {
    border-color: #cad2dc;
    background: #eef1f4;
}

body[data-theme="opal_obsidian"] .retention-day-dots i.active {
    border-color: #2588ba;
    background: #2588ba;
    box-shadow: 0 0 0 2px rgba(85, 191, 240, .18);
}

body[data-theme="opal_obsidian"] .home-whiteboard-entry,
body[data-theme="opal_obsidian"] .class-bento-card,
body[data-theme="opal_obsidian"] .tool-command-classroom {
    border: 1px solid transparent;
    background: linear-gradient(var(--opal-obsidian-card), var(--opal-obsidian-card)) padding-box,
        linear-gradient(112deg, rgba(85, 191, 240, .42), #344154 43%, rgba(240, 163, 106, .28) 76%, rgba(154, 131, 197, .32)) border-box;
    color: var(--opal-text-on-dark);
    box-shadow: var(--opal-shadow-dark), inset 0 1px 0 rgba(255, 255, 255, .055), inset 0 -1px 0 rgba(0, 0, 0, .26);
    transition: border-color var(--opal-motion-card) var(--opal-ease), box-shadow var(--opal-motion-card) var(--opal-ease), transform var(--opal-motion-card) var(--opal-ease);
}

body[data-theme="opal_obsidian"] .home-whiteboard-entry::before,
body[data-theme="opal_obsidian"] .class-bento-card::before,
body[data-theme="opal_obsidian"] .tool-command-classroom::before,
body[data-theme="opal_obsidian"] .whiteboard-entry::before {
    inset: 0;
    width: auto;
    background: none;
    opacity: 1;
    transform: none;
    transition: none;
}

body[data-theme="opal_obsidian"] .home-whiteboard-entry::after,
body[data-theme="opal_obsidian"] .class-bento-card::after,
body[data-theme="opal_obsidian"] .tool-command-card::after,
body[data-theme="opal_obsidian"] .whiteboard-entry::after {
    top: auto;
    right: auto;
    bottom: 0;
    left: -46%;
    width: 38%;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--opal-ice) 24%, var(--opal-copper) 62%, var(--opal-violet) 82%, transparent);
    opacity: .95;
    pointer-events: none;
    transform: none;
    transition: none;
}

body[data-theme="opal_obsidian"] .home-whiteboard-entry strong,
body[data-theme="opal_obsidian"] .class-bento-card strong,
body[data-theme="opal_obsidian"] .class-bento-card small,
body[data-theme="opal_obsidian"] .tool-command-classroom strong,
body[data-theme="opal_obsidian"] .tool-command-classroom small,
body[data-theme="opal_obsidian"] .tool-command-classroom em {
    color: var(--opal-text-on-dark);
    text-shadow: none;
}

body[data-theme="opal_obsidian"] .class-bento-card small,
body[data-theme="opal_obsidian"] .class-bento-card em,
body[data-theme="opal_obsidian"] .tool-command-classroom small,
body[data-theme="opal_obsidian"] .tool-command-classroom em {
    color: var(--opal-muted-on-dark);
}

body[data-theme="opal_obsidian"] .home-whiteboard-entry .home-whiteboard-arrow {
    color: var(--opal-ice);
    text-shadow: none;
}

body[data-theme="opal_obsidian"] .tool-command-account {
    border-color: var(--opal-line-strong);
    border-bottom-color: var(--opal-line-strong);
    background: var(--opal-panel-secondary);
    color: var(--opal-text);
    box-shadow: var(--opal-shadow-1), inset 0 1px 0 rgba(255, 255, 255, .9);
}

body[data-theme="opal_obsidian"] .tool-command-account::before {
    background: none;
}

body[data-theme="opal_obsidian"] .tool-command-account strong {
    color: var(--opal-text);
    text-shadow: none;
}

body[data-theme="opal_obsidian"] .tool-command-account small,
body[data-theme="opal_obsidian"] .tool-command-account em {
    color: var(--opal-muted);
    text-shadow: none;
}

body[data-theme="opal_obsidian"] .tool-icon-pedestal {
    border-color: #3b4a5d;
    background: var(--opal-obsidian-raised);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .055), 0 2px 5px rgba(12, 17, 25, .16);
}

body[data-theme="opal_obsidian"] .tool-command-classroom .tool-icon-pedestal {
    border-color: #3b4a5d;
    background: var(--opal-obsidian-raised);
    box-shadow: 0 2px 5px rgba(0, 0, 0, .3), inset 0 1px 0 rgba(255, 255, 255, .06);
}

body[data-theme="opal_obsidian"] .tool-maintenance-grid .quick-card {
    border-color: var(--opal-line);
    border-bottom-color: var(--opal-line-strong);
    background: var(--opal-panel);
    background-image: none;
    color: var(--opal-text);
    box-shadow: 0 1px 3px rgba(12, 17, 25, .045);
}

body[data-theme="opal_obsidian"] .tool-maintenance-grid .quick-card span {
    color: var(--opal-text);
    text-shadow: none;
}

body[data-theme="opal_obsidian"] .tool-maintenance-grid .quick-card::after {
    top: 50%;
    right: 17px;
    bottom: auto;
    left: auto;
    width: auto;
    height: auto;
    background: none;
    color: var(--opal-muted);
    opacity: .68;
    transform: translateY(-50%);
    transition: color var(--opal-motion-fast) ease;
}

@media (hover: hover) {
    body[data-theme="opal_obsidian"] .home-whiteboard-entry:hover,
    body[data-theme="opal_obsidian"] .class-bento-card:hover,
    body[data-theme="opal_obsidian"] .tool-command-classroom:hover {
        border-color: transparent;
        background: linear-gradient(var(--opal-obsidian-raised), var(--opal-obsidian-raised)) padding-box,
            linear-gradient(112deg, rgba(85, 191, 240, .62), #46566d 43%, rgba(240, 163, 106, .42) 76%, rgba(154, 131, 197, .46)) border-box;
        box-shadow: 0 3px 6px rgba(0, 0, 0, .28), 0 10px 18px rgba(0, 0, 0, .2), inset 0 1px 0 rgba(255, 255, 255, .07);
        transform: translateY(-3px);
    }

    body[data-theme="opal_obsidian"] .tool-command-account:hover,
    body[data-theme="opal_obsidian"] .tool-maintenance-grid .quick-card:hover {
        border-color: #c2ccd7;
        background: var(--opal-panel-secondary);
        background-image: none;
        box-shadow: var(--opal-shadow-2);
        transform: translateY(-2px);
    }

    body[data-theme="opal_obsidian"] .home-whiteboard-entry:hover::after,
    body[data-theme="opal_obsidian"] .class-bento-card:hover::after,
    body[data-theme="opal_obsidian"] .tool-command-card:hover::after,
    body[data-theme="opal_obsidian"] .whiteboard-entry:hover::after {
        animation: opal-card-edge-sweep var(--opal-motion-sweep) var(--opal-ease) both;
    }
}

body[data-theme="opal_obsidian"] .home-whiteboard-entry:active,
body[data-theme="opal_obsidian"] .class-bento-card:active,
body[data-theme="opal_obsidian"] .tool-command-card:active,
body[data-theme="opal_obsidian"] .tool-maintenance-grid .quick-card:active {
    box-shadow: var(--opal-shadow-pressed);
    transform: translateY(1px);
}

body[data-theme="opal_obsidian"].mode-whiteboard {
    color-scheme: dark;
    --theme-browser-color: var(--opal-obsidian);
    --bg: var(--opal-obsidian);
    --panel: var(--opal-obsidian-card);
    --text: var(--opal-text-on-dark);
    --muted: var(--opal-muted-on-dark);
    --line: #3a485b;
    --line-soft: var(--opal-line-dark);
    --glass: var(--opal-obsidian-card);
    background: var(--opal-obsidian);
    color: var(--opal-text-on-dark);
}

body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-stage {
    border-color: #273446;
    background: linear-gradient(155deg, rgba(85, 191, 240, .025), transparent 32%), var(--opal-obsidian);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .035), 0 10px 24px rgba(0, 0, 0, .22);
}

body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-stage-head h2,
body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-stage-head .eyebrow,
body[data-theme="opal_obsidian"].mode-whiteboard h1,
body[data-theme="opal_obsidian"].mode-whiteboard h2,
body[data-theme="opal_obsidian"].mode-whiteboard h3,
body[data-theme="opal_obsidian"].mode-whiteboard label {
    color: var(--opal-text-on-dark);
}

body[data-theme="opal_obsidian"].mode-whiteboard .muted,
body[data-theme="opal_obsidian"].mode-whiteboard .tiny,
body[data-theme="opal_obsidian"].mode-whiteboard small {
    color: var(--opal-muted-on-dark);
}

body[data-theme="opal_obsidian"].mode-whiteboard .panel,
body[data-theme="opal_obsidian"].mode-whiteboard .list-row,
body[data-theme="opal_obsidian"].mode-whiteboard .stat-card,
body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-after-class,
body[data-theme="opal_obsidian"].mode-whiteboard .classroom-action-bar {
    border-color: var(--opal-line-dark);
    background: var(--opal-obsidian-card);
    color: var(--opal-text-on-dark);
    box-shadow: 0 3px 8px rgba(0, 0, 0, .2);
}

body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-retention {
    border-color: rgba(53, 181, 107, .38);
    background: rgba(53, 181, 107, .095);
    color: #9fe0b8;
    box-shadow: none;
}

body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-retention span,
body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-retention strong,
body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-retention small {
    color: #b9e9ca;
}

body[data-theme="opal_obsidian"].mode-whiteboard input,
body[data-theme="opal_obsidian"].mode-whiteboard textarea,
body[data-theme="opal_obsidian"].mode-whiteboard select {
    border-color: #39485a;
    background: #101722;
    color: var(--opal-text-on-dark);
    box-shadow: inset 0 1px 2px rgba(0, 0, 0, .28);
}

body[data-theme="opal_obsidian"].mode-whiteboard .secondary-btn,
body[data-theme="opal_obsidian"].mode-whiteboard .icon-link,
body[data-theme="opal_obsidian"].mode-whiteboard .mini-btn {
    border-color: #3a485a;
    background: var(--opal-obsidian-card);
    color: #dce5ee;
    box-shadow: 0 2px 4px rgba(0, 0, 0, .24);
}

body[data-theme="opal_obsidian"].mode-whiteboard .secondary-btn:hover,
body[data-theme="opal_obsidian"].mode-whiteboard .icon-link:hover,
body[data-theme="opal_obsidian"].mode-whiteboard .mini-btn:hover {
    border-color: #526176;
    background: var(--opal-obsidian-raised);
    color: #fff;
}

body[data-theme="opal_obsidian"].mode-whiteboard .bottom-nav {
    border-color: var(--opal-line-dark);
    background: #0f1621;
    box-shadow: 0 -3px 9px rgba(0, 0, 0, .22);
}

body[data-theme="opal_obsidian"].mode-whiteboard .bottom-nav a {
    color: var(--opal-muted-on-dark);
}

body[data-theme="opal_obsidian"].mode-whiteboard .bottom-nav a.active {
    background: rgba(85, 191, 240, .1);
    color: var(--opal-text-on-dark);
    box-shadow: inset 0 -2px 0 var(--opal-ice);
}

body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-privacy-btn[aria-pressed="true"] {
    border-color: rgba(85, 191, 240, .68);
    background: rgba(85, 191, 240, .13);
    color: #c6edff;
}

body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-entry {
    --opal-card-edge: #4b5b70;
    border-color: var(--opal-card-edge);
    border-bottom-color: #354255;
    background: linear-gradient(145deg, rgba(255, 255, 255, .025), transparent 48%), var(--opal-obsidian-card);
    color: var(--opal-text-on-dark);
    box-shadow: var(--opal-shadow-dark), inset 0 1px 0 rgba(255, 255, 255, .055), inset 0 -1px 0 rgba(0, 0, 0, .28);
    transition: border-color var(--opal-motion-card) var(--opal-ease), box-shadow var(--opal-motion-card) var(--opal-ease), transform var(--opal-motion-card) var(--opal-ease);
}

body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-entry.blue { --opal-card-edge: rgba(85, 191, 240, .62); }
body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-entry.green { --opal-card-edge: rgba(154, 131, 197, .58); }
body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-entry.amber { --opal-card-edge: rgba(240, 163, 106, .62); }
body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-entry.rose { --opal-card-edge: rgba(154, 131, 197, .56); }

body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-entry-placeholder {
    border-color: rgba(75, 91, 112, .42);
    background: rgba(255, 255, 255, .018);
    box-shadow: none;
}

body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-entry-icon {
    border-color: transparent;
    background: transparent;
    box-shadow: none;
    filter: none;
}

body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-entry-copy > span,
body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-entry-copy strong {
    color: var(--opal-text-on-dark);
    text-shadow: none;
}

@media (hover: hover) {
    body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-entry:hover {
        border-color: rgba(111, 202, 243, .78);
        box-shadow: 0 3px 6px rgba(0, 0, 0, .3), 0 10px 18px rgba(0, 0, 0, .21), inset 0 1px 0 rgba(255, 255, 255, .075);
        transform: translateY(-3px);
    }
}

body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-entry:active {
    box-shadow: 0 1px 2px rgba(0, 0, 0, .36), inset 0 1px 0 rgba(255, 255, 255, .035);
    transform: translateY(1px) scale(.985);
}

body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard {
    --whiteboard-reference-bg: #101821;
    --whiteboard-reference-card: #242c36;
    --whiteboard-reference-card-mid: #1f2731;
    --whiteboard-reference-card-deep: #171f29;
    --whiteboard-reference-line: rgba(136, 153, 174, 0.42);
    --whiteboard-reference-title: #c6ccd4;
    background:
        radial-gradient(circle at 12% 6%, rgba(91, 108, 126, 0.2), transparent 32%),
        radial-gradient(circle at 78% 8%, rgba(55, 68, 83, 0.26), transparent 34%),
        linear-gradient(180deg, #121a24 0%, #0c131b 100%);
}

body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-stage {
    border: 0;
    background: transparent;
    box-shadow: none;
}

body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry,
body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry.blue,
body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry.green,
body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry.amber,
body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry.rose {
    border-color: var(--whiteboard-reference-line);
    background:
        radial-gradient(circle at 46% 4%, rgba(255, 255, 255, 0.11), transparent 43%),
        linear-gradient(145deg, rgba(255, 255, 255, 0.095) 0%, rgba(255, 255, 255, 0.028) 37%, rgba(0, 0, 0, 0.18) 100%),
        linear-gradient(180deg, var(--whiteboard-reference-card) 0%, var(--whiteboard-reference-card-mid) 54%, var(--whiteboard-reference-card-deep) 100%);
    color: var(--opal-text-on-dark);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.14),
        inset 0 0 0 1px rgba(255, 255, 255, 0.025),
        inset 0 -22px 48px rgba(0, 0, 0, 0.18),
        0 32px 58px rgba(0, 0, 0, 0.42),
        0 10px 22px rgba(0, 0, 0, 0.28),
        0 1px 0 rgba(255, 255, 255, 0.045);
}

body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry-icon {
    border: 0;
    background: transparent;
    box-shadow: none;
    filter: none;
}

body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry-copy > span,
body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry-copy strong {
    color: var(--whiteboard-reference-title);
    text-shadow: 0 2px 0 rgba(255, 255, 255, 0.08), 0 12px 24px rgba(0, 0, 0, 0.28);
}

body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry-placeholder {
    visibility: hidden;
    opacity: 0;
}

body[data-theme="opal_obsidian"].mode-whiteboard .notice.success,
body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-save-toast.success {
    border-color: rgba(53, 181, 107, .42);
    background: #12251d;
    color: #a6e4be;
}

body[data-theme="opal_obsidian"].mode-whiteboard .notice.warn {
    border-color: rgba(233, 154, 50, .44);
    background: #2a2014;
    color: #f5bf79;
}

body[data-theme="opal_obsidian"].mode-whiteboard .notice.danger,
body[data-theme="opal_obsidian"].mode-whiteboard .danger-zone {
    border-color: rgba(214, 69, 69, .48);
    background: #2b171a;
    color: #f0a0a0;
}

/* 白板四个高频入口的深色子页面：只替换控件材质和状态色。 */
body[data-theme="opal_obsidian"].mode-whiteboard :is(
    .score-options,
    .recitation-option-row,
    .recitation-page-grid,
    .homework-status-subject-row,
    .homework-status-student-grid,
    .discipline-mode-row
) input:is([type="radio"], [type="checkbox"]) {
    width: 1px;
    height: 1px;
    margin: 0;
    padding: 0;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    overflow: hidden;
}

body[data-theme="opal_obsidian"].mode-whiteboard :is(
    .score-options,
    .recitation-option-row,
    .recitation-page-grid,
    .homework-status-subject-row,
    .discipline-mode-row
) span,
body[data-theme="opal_obsidian"].mode-whiteboard .recitation-title-preview {
    border-color: #39485a;
    background: #101722;
    color: #dce5ee;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .035);
}

body[data-theme="opal_obsidian"].mode-whiteboard :is(
    .score-options,
    .recitation-option-row,
    .recitation-page-grid,
    .homework-status-subject-row,
    .discipline-mode-row
) input:checked + span {
    border-color: rgba(85, 191, 240, .68);
    background: rgba(85, 191, 240, .13);
    color: #c6edff;
    box-shadow: inset 0 0 0 1px rgba(240, 163, 106, .14);
}

body[data-theme="opal_obsidian"].mode-whiteboard :is(
    .score-options,
    .recitation-option-row,
    .recitation-page-grid,
    .homework-status-subject-row,
    .homework-status-student-grid,
    .discipline-mode-row
) input:focus-visible + span {
    outline: 2px solid var(--opal-ice);
    outline-offset: 2px;
}

body[data-theme="opal_obsidian"].mode-whiteboard .recitation-content {
    border-top-color: var(--opal-line-dark);
    color: var(--opal-muted-on-dark);
}

body[data-theme="opal_obsidian"].mode-whiteboard .recitation-student-btn,
body[data-theme="opal_obsidian"].mode-whiteboard .homework-status-student-grid span,
body[data-theme="opal_obsidian"].mode-whiteboard .discipline-student-btn,
body[data-theme="opal_obsidian"].mode-whiteboard .discipline-student-grid.readonly span {
    border: 1px solid #435269;
    box-shadow: 0 2px 5px rgba(0, 0, 0, .22), inset 0 1px 0 rgba(255, 255, 255, .045);
}

body[data-theme="opal_obsidian"].mode-whiteboard .recitation-student-btn.completed,
body[data-theme="opal_obsidian"].mode-whiteboard .homework-status-student-grid span,
body[data-theme="opal_obsidian"].mode-whiteboard .discipline-student-btn.excellent,
body[data-theme="opal_obsidian"].mode-whiteboard .discipline-student-grid.readonly span.excellent {
    border-color: rgba(53, 181, 107, .52);
    background: #183324;
    color: #b9e9ca;
}

body[data-theme="opal_obsidian"].mode-whiteboard .recitation-student-btn.pending {
    border-color: rgba(233, 154, 50, .56);
    background: #3a2918;
    color: #f6c98f;
}

body[data-theme="opal_obsidian"].mode-whiteboard .homework-status-student-grid input:checked + span,
body[data-theme="opal_obsidian"].mode-whiteboard .homework-status-student-grid span.incomplete,
body[data-theme="opal_obsidian"].mode-whiteboard .discipline-student-btn.violation,
body[data-theme="opal_obsidian"].mode-whiteboard .discipline-student-grid.readonly span.violation {
    border-color: rgba(214, 69, 69, .58);
    background: #421d22;
    color: #f3b0b0;
}

body[data-theme="opal_obsidian"].mode-whiteboard .discipline-student-btn.normal,
body[data-theme="opal_obsidian"].mode-whiteboard .discipline-student-grid.readonly span.normal {
    border-color: #435269;
    background: var(--opal-obsidian-raised);
    color: #dce5ee;
}

/* v18.2.1：阻断银钛材质向浅色管理页泄漏，只收紧视觉，不触碰布局。 */
body[data-theme="opal_obsidian"] .titanium-icon {
    filter: none;
}

body[data-theme="opal_obsidian"] .titanium-icon-shell {
    border-color: #3b4a5d !important;
    background: var(--opal-obsidian-raised) !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .055), 0 2px 5px rgba(0, 0, 0, .22) !important;
    color: #dce5ee !important;
}

body[data-theme="opal_obsidian"] .home-whiteboard-entry:hover .titanium-icon,
body[data-theme="opal_obsidian"] .whiteboard-entry:hover .titanium-icon,
body[data-theme="opal_obsidian"] .class-bento-card:hover .titanium-icon,
body[data-theme="opal_obsidian"] .tool-command-card:hover .titanium-icon,
body[data-theme="opal_obsidian"] .tool-maintenance-grid .quick-card:hover .titanium-icon,
body[data-theme="opal_obsidian"] .home-whiteboard-entry:active .titanium-icon,
body[data-theme="opal_obsidian"] .whiteboard-entry:active .titanium-icon,
body[data-theme="opal_obsidian"] .class-bento-card:active .titanium-icon,
body[data-theme="opal_obsidian"] .tool-command-card:active .titanium-icon,
body[data-theme="opal_obsidian"] .tool-maintenance-grid .quick-card:active .titanium-icon {
    filter: none;
    transform: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) :is(
    .student-card,
    .student-management-card,
    .compact-action-row a,
    .progress-box,
    .must-do-item,
    .mistake-row,
    .score-card,
    .term-review-question-row,
    .term-review-priority,
    .trend-card,
    .weak-row,
    .diagnosis-card,
    .detail-grid div,
    .answer-compare div,
    .student-comment-row,
    .student-score-row,
    .home-school-card,
    .official-flow div,
    .school-contact,
    .school-class-card,
    .research-point-card,
    .teacher-card,
    .closure-card,
    .closure-item,
    .student-recitation-row,
    .recitation-report-row,
    .homework-item,
    .seat-history-row,
    .summary-box,
    .backup-meta div,
    .backup-preview-list div
):not(.done):not(.warn):not(.danger):not(.selected):not(.restored):not(.active):not(.success):not(.error):not(.is-overdue) {
    border-color: var(--opal-line);
    border-radius: var(--opal-radius);
    background: var(--opal-panel-secondary);
    background-image: none;
    box-shadow: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .closure-card.is-overdue {
    border-color: rgba(214, 69, 69, .34);
    background: #fff2f2;
    box-shadow: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .quick-card,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .quick-card.green,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .quick-card.blue,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .quick-card.teal,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .quick-card.lime,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .quick-card.amber,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .quick-card.rose,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .quick-card.indigo,
body[data-theme="opal_obsidian"] .home-secondary-entry-grid .quick-card:nth-child(1),
body[data-theme="opal_obsidian"] .home-secondary-entry-grid .quick-card:nth-child(2),
body[data-theme="opal_obsidian"] .home-secondary-entry-grid .quick-card:nth-child(3),
body[data-theme="opal_obsidian"] .home-secondary-entry-grid .quick-card:nth-child(4) {
    border-color: var(--opal-line) !important;
    background: var(--opal-panel-secondary) !important;
    background-image: none !important;
    color: var(--opal-text);
    box-shadow: none;
}

body[data-theme="opal_obsidian"] .tool-maintenance-grid .quick-card {
    border-color: var(--opal-line);
    border-bottom-color: var(--opal-line-strong);
    background: var(--opal-panel) !important;
}

body[data-theme="opal_obsidian"] .tool-maintenance-icon {
    box-sizing: border-box;
    border: 1px solid #3b4a5d;
    border-radius: var(--opal-radius);
    background: var(--opal-obsidian-raised);
    padding: 8px;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .055), 0 2px 5px rgba(12, 17, 25, .14);
    filter: none;
}

body[data-theme="opal_obsidian"] .system-check-item {
    border-color: var(--opal-line);
    border-left: 2px solid #cfd6df;
    background: var(--opal-panel-secondary);
    box-shadow: none;
}

body[data-theme="opal_obsidian"] .system-check-item.ok { border-left-color: var(--opal-success); }
body[data-theme="opal_obsidian"] .system-check-item.warn { border-left-color: var(--opal-warning); }
body[data-theme="opal_obsidian"] .system-check-item.danger { border-left-color: var(--opal-danger); }

body[data-theme="opal_obsidian"].page-system_check .stats-grid .stat-card:nth-child(1) { border-top-color: rgba(53, 181, 107, .62); }
body[data-theme="opal_obsidian"].page-system_check .stats-grid .stat-card:nth-child(2) { border-top-color: rgba(233, 154, 50, .62); }
body[data-theme="opal_obsidian"].page-system_check .stats-grid .stat-card:nth-child(3) { border-top-color: rgba(214, 69, 69, .58); }
body[data-theme="opal_obsidian"].page-system_check .stats-grid .stat-card:nth-child(4) { border-top-color: rgba(107, 118, 132, .48); }

body[data-theme="opal_obsidian"] .stat-card:hover {
    border-color: var(--opal-line);
    box-shadow: none;
    transform: none;
}

body[data-theme="opal_obsidian"] .list-row:hover,
body[data-theme="opal_obsidian"] .mistake-row:hover {
    border-color: var(--opal-line-strong);
    background: var(--opal-panel);
    box-shadow: none;
    transform: none;
}

body[data-theme="opal_obsidian"] .recovery-code-box {
    border-radius: var(--opal-radius);
}

body[data-theme="opal_obsidian"] .retention-day-list i {
    border-color: #cad2dc;
    background: #eef1f4;
    box-shadow: none;
}

body[data-theme="opal_obsidian"] .retention-day-list span.active {
    color: #2588ba;
}

body[data-theme="opal_obsidian"] .retention-day-list span.active i {
    border-color: #2588ba;
    background: #2588ba;
    box-shadow: 0 0 0 2px rgba(85, 191, 240, .18);
}

/* 浅色管理页也使用固定语义色，不沿用旧主题的皇家蓝与高饱和紫。 */
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .recitation-student-btn.completed,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .homework-status-student-grid span,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .discipline-student-btn.excellent,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .discipline-student-grid.readonly span.excellent,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .recitation-record-status.completed,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .recitation-report-metrics .metric-done {
    border-color: rgba(53, 181, 107, .34);
    background: #edf8f1;
    color: #227c49;
    box-shadow: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .recitation-student-btn.pending,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .recitation-record-status.pending,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .recitation-report-metrics .metric-pending {
    border-color: rgba(233, 154, 50, .34);
    background: #fff6ea;
    color: #995e14;
    box-shadow: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .homework-status-student-grid input:checked + span,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .homework-status-student-grid span.incomplete,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .discipline-student-btn.violation,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .discipline-student-grid.readonly span.violation {
    border-color: rgba(214, 69, 69, .34);
    background: #fff2f2;
    color: #a52e2e;
    box-shadow: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .discipline-student-btn.normal,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .discipline-student-grid.readonly span.normal {
    border-color: var(--opal-line-strong);
    background: var(--opal-panel-secondary);
    color: #42505f;
    box-shadow: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .student-recitation-row.is-completed {
    border-color: rgba(53, 181, 107, .28);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .student-recitation-row.is-pending {
    border-color: rgba(233, 154, 50, .3);
}

/* 管理页遗漏材质：只收口表面、边框与阴影，不改变原有结构和尺寸。 */
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .classroom-tool-result,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .classroom-group-result,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .term-review-import-placeholder {
    border-color: var(--opal-line-strong);
    background: var(--opal-panel-secondary);
    background-image: none;
    color: var(--opal-text);
    box-shadow: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .classroom-group-card,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .followup-card,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .closure-student-card {
    border-color: var(--opal-line);
    background: var(--opal-panel);
    background-image: none;
    box-shadow: none;
}

body[data-theme="opal_obsidian"] .classroom-timer-panel {
    border-color: rgba(104, 201, 255, 0.36);
    background: linear-gradient(145deg, rgba(23, 37, 54, 0.98), rgba(12, 19, 30, 0.98));
}

body[data-theme="opal_obsidian"] .classroom-timer-panel::before {
    background: linear-gradient(118deg, rgba(139, 220, 255, 0.1), transparent 42%);
}

body[data-theme="opal_obsidian"] .classroom-timer-dial {
    background: conic-gradient(from -90deg, #68c9ff 0deg var(--timer-progress), rgba(153, 175, 204, 0.16) var(--timer-progress) 360deg);
    box-shadow: 0 16px 30px rgba(0, 0, 0, 0.3), inset 0 1px 2px rgba(177, 227, 255, 0.18);
}

body[data-theme="opal_obsidian"] .classroom-timer-face {
    border-color: rgba(157, 214, 255, 0.24);
    background: #101a27;
    box-shadow: inset 0 1px 12px rgba(94, 190, 255, 0.08), 0 1px 2px rgba(0, 0, 0, 0.24);
}

body[data-theme="opal_obsidian"] .classroom-timer-face strong {
    color: #ecf7ff;
}

body[data-theme="opal_obsidian"] .classroom-timer-face span {
    color: #a8c8db;
}

body[data-theme="opal_obsidian"] .classroom-timer-presets button {
    border-color: rgba(133, 181, 219, 0.24);
    background: rgba(24, 37, 53, 0.92);
    color: #c5d6e5;
}

body[data-theme="opal_obsidian"] .classroom-timer-presets button[aria-pressed="true"] {
    border-color: #68c9ff;
    background: #167fb5;
    color: #f6fbff;
    box-shadow: 0 5px 14px rgba(45, 173, 231, 0.2);
}

body[data-theme="opal_obsidian"] .classroom-timer-custom {
    color: #a8c8db;
}

body[data-theme="opal_obsidian"] .classroom-timer-custom select {
    border-color: rgba(133, 181, 219, 0.3);
    background: #101a27;
    color: #ecf7ff;
}

body[data-theme="opal_obsidian"] .classroom-timer-panel.is-finished .classroom-timer-dial {
    background: conic-gradient(from -90deg, #ffae36 0deg 360deg);
}

body[data-theme="opal_obsidian"] .classroom-timer-panel.is-finished .classroom-timer-face strong,
body[data-theme="opal_obsidian"] .classroom-timer-panel.is-finished .classroom-timer-face span {
    color: #ffd9a0;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .file-upload-status:not(.has-file):not(.is-danger),
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .homework-upload-status:not(.has-file):not(.is-danger) {
    border-color: var(--opal-line);
    background: var(--opal-panel-secondary);
    color: var(--opal-muted);
    box-shadow: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .seat-front-board {
    border-color: var(--opal-line-strong);
    background: var(--opal-panel-secondary);
    background-image: none;
    color: var(--opal-text);
    box-shadow: inset 0 -1px 0 rgba(85, 191, 240, .16);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .seat-board-cell {
    border-color: var(--opal-line);
    background: var(--opal-panel);
    background-image: none;
    color: var(--opal-text);
    box-shadow: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .seat-board-cell.filled {
    border-color: var(--opal-line-strong);
    background: #f4f6f9;
    background-image: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .seat-board-cell.drag-over,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .seat-board-cell.selected {
    border-color: var(--opal-ice);
    background: #eef8fc;
    background-image: none;
    box-shadow: 0 0 0 2px rgba(85, 191, 240, .22);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .seat-board-cell.locked {
    box-shadow: inset 0 0 0 2px rgba(85, 191, 240, .18);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .seat-board-cell.warning {
    border-color: rgba(214, 69, 69, .38);
    background: #fff2f2;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .seat-board-cell.unavailable {
    border-color: var(--opal-line-strong);
    background: #eef1f4;
    color: var(--opal-muted);
    box-shadow: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .bottom-nav a.active {
    background: #eef2f5;
    color: #17668e;
    box-shadow: inset 0 -2px 0 rgba(85, 191, 240, .62);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .bottom-nav a:hover {
    background: #f2f5f7;
    color: var(--opal-text);
}

body[data-theme="opal_obsidian"] .app-icon {
    border-radius: var(--opal-radius);
    box-shadow: var(--opal-shadow-1);
}

/* 深色白板子页面：清除旧浅蓝组件，并提高小字号状态反馈对比度。 */
body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-after-class summary {
    color: var(--opal-text-on-dark);
}

body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-after-class summary::after {
    border: 1px solid var(--opal-line-dark);
    background: var(--opal-obsidian-raised);
    color: #86d4f7;
}

body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-after-class[open] summary {
    border-bottom-color: var(--opal-line-dark);
}

body[data-theme="opal_obsidian"].mode-whiteboard .summary-box {
    border-color: var(--opal-line-dark);
    background: var(--opal-obsidian-raised);
    background-image: none;
    color: var(--opal-text-on-dark);
    box-shadow: none;
}

body[data-theme="opal_obsidian"].mode-whiteboard .summary-box :is(p, span, strong, small) {
    color: inherit;
}

body[data-theme="opal_obsidian"].mode-whiteboard .lesson-score-badge {
    border: 1px solid #38516a;
    background: var(--opal-obsidian-raised);
    color: #89d6f7;
    box-shadow: none;
}

body[data-theme="opal_obsidian"].mode-whiteboard .classroom-save-state.is-saving { color: #86d4f7; }
body[data-theme="opal_obsidian"].mode-whiteboard .classroom-save-state.is-saved { color: #72d99b; }
body[data-theme="opal_obsidian"].mode-whiteboard .classroom-save-state.is-error { color: #ff9797; }

body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-save-toast,
body[data-theme="opal_obsidian"].mode-whiteboard .whiteboard-stage {
    box-shadow: 0 3px 8px rgba(0, 0, 0, .24);
}

body[data-theme="opal_obsidian"] label {
    color: var(--opal-text);
}

.theme-entry-link {
    align-self: flex-start;
    white-space: nowrap;
}

body[data-theme="opal_obsidian"] .theme-entry-link {
    border-color: transparent;
    background: linear-gradient(var(--opal-obsidian-card), var(--opal-obsidian-card)) padding-box,
        linear-gradient(105deg, rgba(85, 191, 240, .52), #344154 46%, rgba(240, 163, 106, .34) 78%, rgba(154, 131, 197, .38)) border-box;
    color: var(--opal-text-on-dark);
    box-shadow: 0 2px 5px rgba(12, 17, 25, .12);
}

body[data-theme="opal_obsidian"] .theme-entry-link:hover {
    border-color: transparent;
    background: linear-gradient(var(--opal-obsidian-raised), var(--opal-obsidian-raised)) padding-box,
        linear-gradient(105deg, rgba(85, 191, 240, .64), #46566d 46%, rgba(240, 163, 106, .43) 78%, rgba(154, 131, 197, .46)) border-box;
    color: #fff;
}

.theme-setting {
    margin-top: 18px;
    border-top: 1px solid var(--line-soft);
    padding-top: 18px;
}

.theme-setting-head h3 {
    margin-bottom: 4px;
}

.theme-setting-head .muted {
    margin-bottom: 12px;
}

.theme-choice-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.theme-choice {
    display: grid;
    grid-template-columns: 48px minmax(0, 1fr) auto;
    align-items: center;
    gap: 12px;
    min-width: 0;
    min-height: 74px;
    border: 1px solid var(--line-soft);
    border-radius: 8px;
    padding: 10px 12px;
    font: inherit;
    text-align: left;
    cursor: pointer;
    transition: border-color 180ms ease, background 180ms ease, box-shadow 180ms ease, transform 180ms ease;
}

.theme-choice img {
    display: block;
    width: 48px;
    height: 48px;
    border-radius: 8px;
    object-fit: cover;
}

.theme-choice > span {
    display: grid;
    min-width: 0;
    gap: 3px;
}

.theme-choice strong,
.theme-choice small,
.theme-choice em {
    font-style: normal;
}

.theme-choice strong {
    font-size: 15px;
}

.theme-choice small,
.theme-choice em {
    font-size: 12px;
}

.theme-choice-aurora {
    border-color: #cbd1d2;
    background: #f7f8f8;
    color: #263239;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .96), 0 2px 4px rgba(38, 50, 57, .06);
}

.theme-choice-aurora small,
.theme-choice-aurora em {
    color: #68767d;
}

.theme-choice-opal {
    border-color: transparent;
    background: linear-gradient(#131a25, #131a25) padding-box,
        linear-gradient(105deg, rgba(85, 191, 240, .48), #344154 44%, rgba(240, 163, 106, .32) 77%, rgba(154, 131, 197, .36)) border-box;
    color: #f5f7fa;
    box-shadow: 0 3px 7px rgba(12, 17, 25, .18), inset 0 1px 0 rgba(255, 255, 255, .055);
}

.theme-choice-opal small,
.theme-choice-opal em {
    color: #a8b3c2;
}

.theme-choice[aria-pressed="true"] {
    border-color: #55bff0;
    box-shadow: inset 0 -1px 0 rgba(240, 163, 106, .28), 0 1px 3px rgba(12, 17, 25, .08);
}

.theme-choice-opal[aria-pressed="true"] {
    border-color: transparent;
    background: linear-gradient(#131a25, #131a25) padding-box,
        linear-gradient(105deg, rgba(85, 191, 240, .72), #44536a 44%, rgba(240, 163, 106, .5) 77%, rgba(154, 131, 197, .56)) border-box;
}

.theme-choice:hover {
    transform: translateY(-2px);
}

.theme-choice:active {
    box-shadow: 0 1px 2px rgba(12, 17, 25, .16);
    transform: translateY(1px);
}

.theme-setting-status {
    margin: 9px 0 0;
    color: var(--muted);
    font-size: 12px;
    font-weight: 700;
}

@keyframes opal-page-enter {
    from { opacity: .01; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes opal-button-sweep {
    from { transform: translateX(-150%); }
    to { transform: translateX(360%); }
}

@keyframes opal-card-edge-sweep {
    from { left: -46%; }
    to { left: 108%; }
}

@media (max-width: 680px) {
    .theme-choice-grid {
        grid-template-columns: 1fr;
    }
}

/* v18.2.2：管理页与课堂白板统一使用深曜石画布。
 * 仅替换颜色、材质、边框、阴影和图标底座，不改变原有布局与内容。 */
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) {
    color-scheme: dark;
    --opal-canvas: #0c1119;
    --opal-panel: #131a25;
    --opal-panel-secondary: #101722;
    --opal-text: #f5f7fa;
    --opal-muted: #a8b3c2;
    --opal-line: #2b3748;
    --opal-line-strong: #3a485b;
    --opal-shadow-1: 0 2px 5px rgba(0, 0, 0, .22), 0 8px 16px rgba(0, 0, 0, .14);
    --opal-shadow-2: 0 3px 8px rgba(0, 0, 0, .26), 0 12px 22px rgba(0, 0, 0, .18);
    --opal-shadow-pressed: 0 1px 2px rgba(0, 0, 0, .34);
    --theme-browser-color: var(--opal-obsidian);
    --bg: var(--opal-obsidian);
    --panel: var(--opal-obsidian-card);
    --text: var(--opal-text-on-dark);
    --muted: var(--opal-muted-on-dark);
    --line: var(--opal-line-dark);
    --line-soft: #243044;
    --primary: var(--opal-ice);
    --primary-strong: #8bdcff;
    --green-soft: #12251d;
    --blue-soft: rgba(85, 191, 240, .13);
    --amber-soft: #2a2014;
    --rose-soft: #2b171a;
    --glass: var(--opal-obsidian-card);
    --titanium-canvas: var(--opal-obsidian);
    --titanium-surface: var(--opal-obsidian-raised);
    --titanium-panel: var(--opal-obsidian-card);
    --titanium-line: var(--opal-line-dark);
    --titanium-line-strong: var(--opal-line);
    --titanium-graphite: var(--opal-text-on-dark);
    --titanium-muted: var(--opal-muted-on-dark);
    --titanium-blue: var(--opal-ice);
    --titanium-blue-soft: var(--blue-soft);
    --titanium-mint-soft: var(--green-soft);
    --titanium-champagne-soft: var(--amber-soft);
    --titanium-rose-soft: var(--rose-soft);
    background: var(--opal-obsidian);
    color: var(--opal-text-on-dark);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) :is(
    .topbar,
    .panel,
    .class-command-deck,
    .tools-command-deck,
    .tool-maintenance-drawer,
    .bottom-nav,
    .today-hero,
    .apple-workbench,
    .home-context-card,
    .retention-primary,
    .retention-week,
    .today-card-grid.today-record-strip,
    .class-stat-strip,
    .home-secondary-entry-grid .quick-card,
    .tool-maintenance-grid .quick-card,
    .page-help-body,
    .recovery-code-box,
    .backup-table-list > div,
    .system-check-list > div,
    .list-row,
    .stat-card,
    .student-card,
    .student-management-card,
    .compact-action-row a,
    .progress-box,
    .must-do-item,
    .mistake-row,
    .score-card,
    .term-review-question-row,
    .term-review-priority,
    .trend-card,
    .weak-row,
    .diagnosis-card,
    .detail-grid div,
    .answer-compare div,
    .student-comment-row,
    .student-score-row,
    .home-school-card,
    .official-flow div,
    .school-contact,
    .school-class-card,
    .research-point-card,
    .teacher-card,
    .closure-card,
    .closure-item,
    .student-recitation-row,
    .recitation-report-row,
    .homework-item,
    .seat-history-row,
    .summary-box,
    .backup-meta div,
    .backup-preview-list div,
    .classroom-tool-result,
    .classroom-group-result,
    .classroom-group-card,
    .term-review-import-placeholder,
    .followup-card,
    .closure-student-card,
    .file-upload-status,
    .homework-upload-status,
    .seat-front-board,
    .seat-board-cell,
    .whiteboard-cta
) {
    border-color: var(--opal-line-dark);
    background: var(--opal-panel);
    background-image: none;
    color: var(--opal-text-on-dark);
    box-shadow: 0 3px 8px rgba(0, 0, 0, .22);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .desktop-side-nav {
    border-color: var(--opal-line-dark);
    background: #101722;
    box-shadow: 2px 0 12px rgba(0, 0, 0, .24);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .desktop-side-brand,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .desktop-side-brand span,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .desktop-side-links a,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .desktop-side-links a i {
    color: var(--opal-muted-on-dark);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .desktop-side-links a.active {
    border-color: #3b5067;
    background: #182231;
    color: var(--opal-text-on-dark);
    box-shadow: inset 2px 0 0 var(--opal-ice), inset 0 -1px 0 rgba(240, 163, 106, .28);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .desktop-side-links a:hover {
    border-color: #3b5067;
    background: #182231;
    color: var(--opal-text-on-dark);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .app-shell :where(h1, h2, h3, h4, label) {
    color: var(--opal-text-on-dark);
    text-shadow: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .app-shell :where(p, span, strong, small, em, a, button) {
    color: inherit;
    text-shadow: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .app-shell :where(.muted, .tiny, .eyebrow, .teacher-meta, .theme-setting-status) {
    color: var(--opal-muted-on-dark);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) :is(
    .icon-link,
    .mini-btn,
    .secondary-btn,
    .page-help summary
) {
    border-color: #3a485b;
    background: var(--opal-obsidian-raised);
    color: #dce5ee;
    box-shadow: 0 2px 4px rgba(0, 0, 0, .24);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) :is(
    .icon-link:hover,
    .mini-btn:hover,
    .secondary-btn:hover,
    .page-help summary:hover
) {
    border-color: #526176;
    background: #1c2939;
    color: #ffffff;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) input,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) textarea,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) select {
    border-color: #39485a;
    background: #101722;
    color: var(--opal-text-on-dark);
    box-shadow: inset 0 1px 2px rgba(0, 0, 0, .28);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) input:focus,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) textarea:focus,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) select:focus,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) input:focus-visible,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) textarea:focus-visible,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) select:focus-visible {
    background: #131c29;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .bottom-nav {
    border-color: var(--opal-line-dark);
    background: #0f1621;
    box-shadow: 0 -3px 9px rgba(0, 0, 0, .22);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .bottom-nav a {
    color: var(--opal-muted-on-dark);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .bottom-nav a.active {
    background: rgba(85, 191, 240, .1);
    color: var(--opal-text-on-dark);
    box-shadow: inset 0 -2px 0 var(--opal-ice);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .bottom-nav a:hover {
    background: rgba(85, 191, 240, .08);
    color: var(--opal-text-on-dark);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .today-card {
    border-color: var(--opal-line-dark);
    background: #101722;
    color: var(--opal-text-on-dark);
    box-shadow: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .today-card.done {
    border-color: rgba(53, 181, 107, .42);
    background: #12251d;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .today-card.todo {
    border-color: rgba(233, 154, 50, .42);
    background: #2a2014;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .today-card small,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .retention-primary small,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .retention-week small,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .today-attention-card small {
    color: var(--opal-muted-on-dark);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .retention-primary strong,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .retention-week strong {
    color: var(--opal-text-on-dark);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .retention-day-dots i,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .retention-day-list i {
    border-color: #4a586b;
    background: #182231;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .retention-day-dots i.active,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .retention-day-list span.active i {
    border-color: var(--opal-ice);
    background: var(--opal-ice);
    box-shadow: 0 0 0 2px rgba(85, 191, 240, .18);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .retention-day-list span.active {
    color: #8bdcff;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) :is(
    .notice.success,
    .recitation-student-btn.completed,
    .homework-status-student-grid span.completed,
    .discipline-student-btn.excellent,
    .discipline-student-grid.readonly span.excellent,
    .recitation-record-status.completed,
    .recitation-report-metrics .metric-done
) {
    border-color: rgba(53, 181, 107, .46);
    background: #12251d;
    color: #a6e4be;
    box-shadow: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) :is(
    .notice.warn,
    .today-attention-panel,
    .today-attention-card,
    .recitation-student-btn.pending,
    .recitation-record-status.pending,
    .recitation-report-metrics .metric-pending
) {
    border-color: rgba(233, 154, 50, .46);
    background: #2a2014;
    color: #f5bf79;
    box-shadow: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) :is(
    .notice.danger,
    .danger-zone,
    .closure-card.is-overdue,
    .homework-status-student-grid span.incomplete,
    .discipline-student-btn.violation,
    .discipline-student-grid.readonly span.violation,
    .score-paste-preview.is-danger
) {
    border-color: rgba(214, 69, 69, .5);
    background: #2b171a;
    color: #ffb2b2;
    box-shadow: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .student-followup-reasons,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .student-followup-reasons.stable {
    border-color: rgba(233, 154, 50, .42);
    background: #2a2014;
    color: #f5bf79;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .student-followup-reasons.stable {
    border-color: rgba(53, 181, 107, .42);
    background: #12251d;
    color: #a6e4be;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .tool-maintenance-grid .quick-card,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .quick-card {
    border-color: var(--opal-line-dark) !important;
    background: var(--opal-panel) !important;
    color: var(--opal-text-on-dark);
    box-shadow: none;
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .tool-maintenance-grid .quick-card span,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .home-secondary-entry-grid .quick-card span {
    color: var(--opal-text-on-dark);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .theme-setting {
    border-top-color: var(--opal-line-dark);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .theme-choice-aurora {
    border-color: #3a485b;
    background: #101722;
    color: #dce5ee;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .035), 0 2px 5px rgba(0, 0, 0, .18);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .theme-choice-aurora small,
body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .theme-choice-aurora em {
    color: var(--opal-muted-on-dark);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .theme-choice-opal {
    color: var(--opal-text-on-dark);
}

body[data-theme="opal_obsidian"]:not(.mode-whiteboard) .app-icon {
    box-shadow: 0 3px 8px rgba(0, 0, 0, .3);
}

@media (prefers-reduced-motion: reduce) {
    body[data-theme="opal_obsidian"] .app-shell {
        animation: none;
    }

    body[data-theme="opal_obsidian"] .primary-btn,
    body[data-theme="opal_obsidian"] .secondary-btn,
    body[data-theme="opal_obsidian"] .icon-link,
    body[data-theme="opal_obsidian"] .mini-btn,
    body[data-theme="opal_obsidian"] .home-whiteboard-entry,
    body[data-theme="opal_obsidian"] .whiteboard-entry,
    body[data-theme="opal_obsidian"] .class-bento-card,
    body[data-theme="opal_obsidian"] .tool-command-card,
    body[data-theme="opal_obsidian"] .tool-maintenance-grid .quick-card,
    body[data-theme="opal_obsidian"] .theme-choice,
    body[data-theme="opal_obsidian"] .titanium-icon {
        transition-duration: 0.01ms !important;
    }

    body[data-theme="opal_obsidian"] .primary-btn::after {
        animation: none !important;
    }

    body[data-theme="opal_obsidian"] .home-whiteboard-entry::after,
    body[data-theme="opal_obsidian"] .whiteboard-entry::after,
    body[data-theme="opal_obsidian"] .class-bento-card::after,
    body[data-theme="opal_obsidian"] .tool-command-card::after {
        display: none;
    }

    body[data-theme="opal_obsidian"] .home-whiteboard-entry:hover,
    body[data-theme="opal_obsidian"] .whiteboard-entry:hover,
    body[data-theme="opal_obsidian"] .class-bento-card:hover,
    body[data-theme="opal_obsidian"] .tool-command-card:hover,
    body[data-theme="opal_obsidian"] .tool-maintenance-grid .quick-card:hover,
    body[data-theme="opal_obsidian"] .theme-choice:hover {
        transform: none !important;
    }
}

@media print {
    body[data-theme="opal_obsidian"] {
        background: #fff !important;
        color: #000 !important;
    }

    body[data-theme="opal_obsidian"] .home-whiteboard-entry,
    body[data-theme="opal_obsidian"] .whiteboard-entry,
    body[data-theme="opal_obsidian"] .class-bento-card,
    body[data-theme="opal_obsidian"] .tool-command-card,
    body[data-theme="opal_obsidian"].mode-whiteboard .panel {
        border-color: #bbb !important;
        background: #fff !important;
        color: #000 !important;
        box-shadow: none !important;
    }

    body[data-theme="opal_obsidian"] .home-whiteboard-entry strong,
    body[data-theme="opal_obsidian"] .whiteboard-entry-copy > span,
    body[data-theme="opal_obsidian"] .class-bento-card strong,
    body[data-theme="opal_obsidian"] .tool-command-card strong {
        color: #000 !important;
    }

    .theme-setting {
        display: none !important;
    }
}

/* v18.2.9：白板专用的曜石虹彩材质。图片资源和图片路径不在此处改动。 */
body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard {
    background:
        radial-gradient(circle at 12% 6%, rgba(85, 191, 240, .07), transparent 32%),
        linear-gradient(180deg, #101823 0%, var(--opal-obsidian) 100%);
    color: var(--opal-text-on-dark);
}

body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-stage {
    border: 1px solid var(--opal-line-dark);
    border-radius: var(--opal-radius);
    background: var(--opal-obsidian-card);
    box-shadow: var(--opal-shadow-dark);
}

body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-stage-head h2 {
    color: var(--opal-text-on-dark);
}

body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-stage-head .eyebrow,
body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-class-form label {
    color: var(--opal-muted-on-dark);
}

body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-stage-actions .secondary-btn,
body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-class-form select {
    border-color: var(--opal-line-dark);
    background: var(--opal-obsidian-raised);
    color: var(--opal-text-on-dark);
    box-shadow: var(--opal-shadow-dark), inset 0 1px 0 rgba(255, 255, 255, .06);
}

body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry,
body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry.blue,
body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry.green,
body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry.amber,
body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry.rose {
    border-color: var(--opal-card-edge, var(--opal-line-dark));
    border-radius: var(--opal-radius);
    background: linear-gradient(145deg, rgba(255, 255, 255, .025), transparent 48%), var(--opal-obsidian-card);
    color: var(--opal-text-on-dark);
    box-shadow: var(--opal-shadow-dark), inset 0 1px 0 rgba(255, 255, 255, .055), inset 0 -1px 0 rgba(0, 0, 0, .28);
}

body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry::before {
    background: linear-gradient(135deg, rgba(255, 255, 255, .08), transparent 32%), linear-gradient(315deg, rgba(0, 0, 0, .16), transparent 44%);
}

body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry::after {
    display: none;
}

body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry-copy > span,
body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry-copy strong {
    color: var(--opal-text-on-dark);
    text-shadow: none;
}

body[data-theme="opal_obsidian"].page-whiteboard.mode-whiteboard .whiteboard-entry-placeholder {
    border-color: rgba(75, 91, 112, .42);
    background: rgba(255, 255, 255, .018);
}
