        body {
            background: linear-gradient(180deg, #f7f3eb 0%, #f3efe6 100%);
            color: #2f3441;
        }
        .campus-navbar {
            background: linear-gradient(135deg, #5d7c6f, #7f9c8d) !important;
            box-shadow: 0 12px 24px rgba(87, 79, 63, 0.12);
        }
        .campus-navbar .navbar-brand {
            font-weight: 700;
            letter-spacing: 0.01em;
        }
        .campus-navbar .nav-link {
            color: rgba(255, 251, 245, 0.88) !important;
            border-radius: 999px;
            padding: 0.45rem 0.85rem !important;
        }
        .campus-navbar .nav-link:hover,
        .campus-navbar .nav-link.active {
            background: rgba(255, 250, 241, 0.18);
            color: #fffdf8 !important;
        }
        .hero-card,
        .section-card,
        .plan-card {
            border: 0;
            border-radius: 20px;
            box-shadow: 0 16px 32px rgba(87, 79, 63, 0.08);
        }
        .hero-card {
            background: linear-gradient(135deg, #6d8b7d, #9eb7a7);
            color: #fffdf8;
        }
        .section-card,
        .plan-card {
            background: linear-gradient(180deg, #fffdfa 0%, #f8f4ec 100%);
        }
        .card-body > .text-secondary,
        .lead.text-secondary,
        p.text-secondary {
            color: #667085 !important;
        }
        .tag,
        .plan-chip {
            display: inline-block;
            border-radius: 999px;
            font-size: 0.92rem;
        }
        .tag {
            padding: 0.35rem 0.75rem;
            margin: 0.25rem 0.35rem 0 0;
            background: #edf2ea;
            color: #556b5d;
        }
        .plan-chip {
            padding: 0.3rem 0.7rem;
            margin: 0 0.35rem 0.4rem 0;
            background: #f3eee3;
            color: #5b564b;
        }
        .plan-step {
            border-left: 4px solid #8ea47a;
            padding-left: 1rem;
            margin-bottom: 1.25rem;
        }
        .resource-link {
            text-decoration: none;
        }
        .muted-label {
            color: #64748b;
            font-size: 0.95rem;
        }
        .empty-box {
            border: 1px dashed #d5cab6;
            border-radius: 16px;
            padding: 2rem;
            background: #fffdfa;
            color: #5b5f69;
        }
        .section-title {
            font-size: 0.95rem;
            font-weight: 700;
            color: #334155;
            margin-bottom: 0.75rem;
        }
        .mini-card {
            border: 1px solid #e6dcc8;
            border-radius: 16px;
            padding: 1rem;
            background: #fffdfa;
        }
        .form-control,
        .form-select {
            border-radius: 14px;
            border-color: #d9cfbc;
            background: #fffdfa;
            box-shadow: none;
        }
        .form-control:focus,
        .form-select:focus {
            border-color: #86a595;
            box-shadow: 0 0 0 0.2rem rgba(134, 165, 149, 0.14);
        }
        .btn {
            border-radius: 999px;
            padding-left: 1rem;
            padding-right: 1rem;
            font-weight: 600;
        }
        .btn-primary {
            background: #6d8b7d;
            border-color: #6d8b7d;
        }
        .btn-primary:hover,
        .btn-primary:focus {
            background: #5f7b6f;
            border-color: #5f7b6f;
        }
        .btn-outline-primary {
            color: #5f7b6f;
            border-color: #7e9a8d;
        }
        .btn-outline-primary:hover,
        .btn-outline-primary:focus {
            background: #eef5f1;
            color: #4c6459;
            border-color: #7e9a8d;
        }
        .btn-outline-dark {
            color: #5a5448;
            border-color: #b8ab95;
        }
        .btn-outline-dark:hover,
        .btn-outline-dark:focus {
            background: #f2ece2;
            color: #4d473d;
            border-color: #b8ab95;
        }
        .btn-outline-secondary {
            color: #6c756a;
            border-color: #c6cabb;
        }
        .btn-outline-secondary:hover,
        .btn-outline-secondary:focus {
            background: #f3f5ef;
            color: #566053;
            border-color: #c6cabb;
        }
        .status-box {
            border-radius: 12px;
            padding: 0.85rem 1rem;
            font-size: 0.95rem;
            margin-top: 1rem;
        }
        .status-success {
            background: #ecfdf5;
            color: #166534;
        }
        .status-error {
            background: #fef2f2;
            color: #991b1b;
        }
        .action-feedback {
            position: fixed;
            right: 1.25rem;
            bottom: 1.25rem;
            max-width: min(420px, calc(100vw - 2rem));
            padding: 0.85rem 1rem;
            border-radius: 16px;
            box-shadow: 0 16px 32px rgba(47, 52, 65, 0.18);
            color: #fffdf8;
            background: rgba(47, 52, 65, 0.92);
            font-size: 0.95rem;
            line-height: 1.5;
            opacity: 0;
            transform: translateY(12px);
            pointer-events: none;
            transition: opacity 0.2s ease, transform 0.2s ease;
            z-index: 1085;
        }
        .action-feedback.is-visible {
            opacity: 1;
            transform: translateY(0);
        }
        .action-feedback-success {
            background: rgba(22, 101, 52, 0.94);
        }
        .action-feedback-error {
            background: rgba(153, 27, 27, 0.94);
        }
        .student-shell {
            max-width: 840px;
            margin: 0 auto;
        }
        .prompt-card {
            border: 1px solid #e2d6c2;
            border-radius: 20px;
            background: #fffdfa;
            padding: 1.25rem;
            margin-bottom: 1rem;
            box-shadow: 0 10px 24px rgba(87, 79, 63, 0.06);
        }
        .prompt-sentence {
            font-size: 1.15rem;
            font-weight: 700;
            color: #0f172a;
        }
        .topic-card {
            border: 1px solid #e5dac7;
            border-radius: 16px;
            padding: 1rem;
            background: #fbf7ef;
            margin-bottom: 1rem;
        }
        .fun-badge {
            display: inline-block;
            padding: 0.45rem 0.85rem;
            margin: 0 0.5rem 0.5rem 0;
            border-radius: 999px;
            background: #fff4e3;
            color: #8c5a2b;
            font-size: 0.92rem;
            font-weight: 600;
        }
        .guide-card {
            border: 1px solid #e5dac7;
            border-radius: 18px;
            background: #fffdfa;
            padding: 1rem;
            height: 100%;
        }
        .student-quick-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
            gap: 1rem;
        }
        .student-progress-note {
            border-radius: 14px;
            background: #f3eee3;
            color: #5b564b;
            padding: 0.9rem 1rem;
            font-size: 0.95rem;
        }
        .btn.is-busy {
            opacity: 0.8;
            pointer-events: none;
        }
        .projection-shell {
            max-width: 1280px;
            margin: 0 auto;
        }
        .projection-stage-card {
            border: 0;
            border-radius: 20px;
            background: linear-gradient(180deg, #fffdfa, #f7f2e7);
            box-shadow: 0 14px 28px rgba(87, 79, 63, 0.08);
        }
        .projection-kicker {
            letter-spacing: 0.08em;
            text-transform: uppercase;
            font-size: 0.82rem;
            color: #f6f1df;
        }
        .projection-metric {
            border-radius: 18px;
            background: rgba(255, 250, 241, 0.18);
            padding: 1rem;
            min-height: 100%;
        }
        .projection-call {
            border-left: 4px solid #c7a56b;
            padding-left: 0.9rem;
        }
        .dialog-bubble {
            border-radius: 18px;
            padding: 1rem 1.1rem;
            margin-bottom: 1rem;
        }
        .dialog-student {
            background: #f5efe5;
            border: 1px solid #e1d2ba;
        }
        .dialog-ai {
            background: #eef6ea;
            border: 1px solid #cdddbf;
        }
        .judgement-card {
            border: 1px solid #e1d8c7;
            border-radius: 16px;
            background: #fcf8ef;
            padding: 1rem;
        }
        .judgement-error {
            border-left: 4px solid #d97706;
            background: #fff5e7;
            padding: 0.85rem 1rem;
            border-radius: 12px;
            margin-top: 0.75rem;
        }
        .campus-soft-box {
            background: rgba(255, 253, 248, 0.84);
            border: 1px solid rgba(229, 218, 199, 0.9);
            border-radius: 18px;
        }
        .prep-summary-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
            gap: 12px;
        }
        .prep-summary-item {
            border-radius: 18px;
            padding: 1rem;
            border: 1px solid #e4dbc8;
            background: #fffdfa;
            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8);
        }
        .prep-summary-type {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            min-width: 88px;
            border-radius: 999px;
            padding: 0.28rem 0.75rem;
            font-size: 0.82rem;
            font-weight: 700;
            margin-bottom: 0.65rem;
        }
        .prep-summary-item--lesson {
            border-color: #bfd4c6;
            background: linear-gradient(180deg, #f4fbf6, #eef7f0);
        }
        .prep-summary-item--lesson .prep-summary-type {
            background: #dcefe2;
            color: #486857;
        }
        .prep-summary-item--tool {
            border-color: #d6c9b5;
            background: linear-gradient(180deg, #fff8ee, #fbf2e3);
        }
        .prep-summary-item--tool .prep-summary-type {
            background: #f3e0bf;
            color: #866229;
        }
        .prep-summary-item--citation {
            border-color: #c9d7ea;
            background: linear-gradient(180deg, #f4f8ff, #edf3fb);
        }
        .prep-summary-item--citation .prep-summary-type {
            background: #dce8fb;
            color: #43658d;
        }
        .prep-summary-item--talk {
            border-color: #d7c8e8;
            background: linear-gradient(180deg, #faf5ff, #f4eefb);
        }
        .prep-summary-item--talk .prep-summary-type {
            background: #eadcfb;
            color: #74539a;
        }
        .prep-summary-title {
            font-weight: 700;
            margin-bottom: 0.45rem;
            color: #2f3441;
        }
        .prep-summary-text {
            color: #4e5663;
            line-height: 1.6;
        }
        .mainline-card {
            background: linear-gradient(180deg, #fffdfa 0%, #f6f1e7 100%);
        }
        .mainline-step {
            border: 1px solid #e4dbc8;
            border-radius: 18px;
            background: rgba(255, 253, 248, 0.96);
            padding: 1rem;
            height: 100%;
        }
        .mainline-step-index {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 34px;
            height: 34px;
            border-radius: 999px;
            background: #dcefe2;
            color: #486857;
            font-weight: 700;
            margin-bottom: 0.6rem;
        }
        .teacher-collapsible {
            border: 1px solid #e4dbc8;
            border-radius: 20px;
            background: linear-gradient(180deg, #fffdfa 0%, #f8f4ec 100%);
            box-shadow: 0 12px 24px rgba(87, 79, 63, 0.06);
        }
        .teacher-collapsible summary {
            list-style: none;
            cursor: pointer;
            padding: 1rem 1.25rem;
            font-weight: 700;
            color: #3d4b43;
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 1rem;
        }
        .teacher-collapsible summary::-webkit-details-marker {
            display: none;
        }
        .teacher-collapsible summary::after {
            content: '展开';
            font-size: 0.86rem;
            color: #667085;
            font-weight: 600;
        }
        .teacher-collapsible[open] summary::after {
            content: '收起';
        }
        .teacher-collapsible-body {
            padding: 0 1.25rem 1.25rem;
        }
        .teacher-zone {
            border: 1px solid #d9cfbc;
            border-radius: 22px;
            background: linear-gradient(180deg, #fffdfa 0%, #f8f4ec 100%);
            box-shadow: 0 12px 28px rgba(87, 79, 63, 0.07);
        }
        .teacher-zone > summary {
            list-style: none;
            cursor: pointer;
            padding: 1rem 1.35rem;
            font-weight: 700;
            font-size: 1.05rem;
            color: #3d4b43;
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 1rem;
        }
        .teacher-zone > summary::-webkit-details-marker {
            display: none;
        }
        .teacher-zone > summary::after {
            content: '收起';
            font-size: 0.86rem;
            color: #667085;
            font-weight: 600;
        }
        .teacher-zone:not([open]) > summary::after {
            content: '展开';
        }
        .teacher-zone-body {
            padding: 0 1.15rem 1.15rem;
        }
        .teacher-zone-body > .card:last-child {
            margin-bottom: 0 !important;
        }
        .module-intro-card {
            border: 1px solid #e4dbc8;
            border-radius: 18px;
            background: linear-gradient(180deg, #fffdfa 0%, #f4eee3 100%);
            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.75);
        }
        .module-intro-card .card-body {
            padding: 1rem 1.15rem;
        }
        .module-intro-card .fw-semibold {
            color: #3d4b43;
        }
        .module-panel {
            border-radius: 20px;
            overflow: hidden;
        }
        .module-panel .card-body {
            padding: 1.15rem 1.2rem;
        }
        .module-panel .empty-box {
            min-height: 160px;
        }
        .module-panel--soft {
            background: linear-gradient(180deg, #fffdfa 0%, #f6f1e7 100%);
        }
        .control-cluster {
            display: grid;
            gap: 0.75rem;
        }
        .control-cluster .btn {
            width: 100%;
        }
        .projection-mode-banner {
            border: 1px solid #d9cfbc;
            border-radius: 20px;
            background: linear-gradient(135deg, #fffaf1, #f6f1e7);
            box-shadow: 0 12px 24px rgba(87, 79, 63, 0.08);
        }
        .projection-display-toolbar {
            display: flex;
            flex-wrap: wrap;
            gap: 0.75rem;
            justify-content: flex-end;
        }
        .projection-display-toolbar .btn {
            min-width: 152px;
        }
        .projection-display-focus {
            border: 1px solid #e4dbc8;
            border-radius: 20px;
            background: linear-gradient(180deg, #fffdf9 0%, #f5efe4 100%);
            padding: 1.15rem;
            min-height: 100%;
        }
        .projection-display-focus-label {
            font-size: 0.82rem;
            color: #667085;
            margin-bottom: 0.45rem;
        }
        .projection-display-focus-value {
            color: #2f3441;
            font-weight: 700;
            line-height: 1.6;
        }
        #projection-view[data-screen="display"] .projection-teacher-only {
            display: none !important;
        }
        #projection-view[data-screen="teacher"] .projection-display-only {
            display: none !important;
        }
        /* 投影 display 模式下, 隐藏全站顶栏, 避免占用投影画面 */
        #projection-view[data-screen="display"] ~ #edu-top-nav,
        body.projection-display-mode #edu-top-nav {
            display: none !important;
        }
        /* 投影 display 模式下, 整体 body 取消顶部留白 */
        body.projection-display-mode {
            padding-top: 0 !important;
        }
        #projection-view[data-screen="display"] {
            max-width: none;
            padding-left: 0;
            padding-right: 0;
        }
        #projection-view[data-screen="display"] .projection-shell {
            max-width: none;
            margin: 0;
            padding: 1.25rem 1.5rem 2rem;
            min-height: 100vh;
            background:
                radial-gradient(circle at 12% 8%, rgba(56, 189, 248, 0.18), transparent 28%),
                radial-gradient(circle at 88% 14%, rgba(251, 191, 36, 0.14), transparent 24%),
                linear-gradient(160deg, #0f172a 0%, #111827 42%, #020617 100%);
        }
        #projection-view[data-screen="display"] .hero-card {
            background: linear-gradient(135deg, rgba(15, 118, 110, 0.92), rgba(30, 64, 175, 0.88));
            border: 1px solid rgba(255, 255, 255, 0.14);
            box-shadow: 0 24px 60px rgba(2, 6, 23, 0.35);
        }
        #projection-view[data-screen="display"] .hero-card,
        #projection-view[data-screen="display"] .hero-card .lead,
        #projection-view[data-screen="display"] .hero-card .small,
        #projection-view[data-screen="display"] .projection-kicker {
            color: #f8fafc !important;
        }
        #projection-view[data-screen="display"] .projection-metric {
            background: rgba(255, 255, 255, 0.08);
            border: 1px solid rgba(255, 255, 255, 0.12);
            backdrop-filter: blur(8px);
        }
        #projection-view[data-screen="display"] .fun-badge {
            background: rgba(255, 255, 255, 0.12);
            color: #fef3c7;
            border: 1px solid rgba(255, 255, 255, 0.14);
        }
        #projection-view[data-screen="display"] .projection-stage-card,
        #projection-view[data-screen="display"] .module-panel,
        #projection-view[data-screen="display"] .mini-card,
        #projection-view[data-screen="display"] .empty-box {
            background: rgba(255, 253, 248, 0.96);
            border: 1px solid rgba(226, 214, 194, 0.85);
            box-shadow: 0 18px 40px rgba(2, 6, 23, 0.18);
        }
        #projection-view[data-screen="display"] .projection-stage-card .fs-5 {
            font-size: clamp(1.35rem, 2.2vw, 2rem) !important;
            line-height: 1.55;
            font-weight: 700;
            color: #0f172a;
        }
        #projection-view[data-screen="display"] .projection-call {
            border-left-color: #14b8a6;
            font-size: 1.05rem;
        }
        #projection-view[data-screen="display"] .module-intro-card {
            display: none;
        }
        #projection-view[data-screen="display"] .projection-mode-banner {
            background: rgba(255, 255, 255, 0.06);
            border: 1px solid rgba(255, 255, 255, 0.12);
            border-radius: 20px;
            color: #e2e8f0;
        }
        #projection-view[data-screen="display"] .projection-mode-banner .text-secondary {
            color: #cbd5e1 !important;
        }
        #projection-view[data-screen="display"] .module-intro-card,
        #projection-view[data-screen="display"] .projection-mode-banner .col-lg-7 {
            display: none !important;
        }
        #projection-view[data-screen="display"] .projection-student-hero .projection-metric,
        #projection-view[data-screen="display"] .projection-mode-side-note {
            display: none !important;
        }
        .projection-student-live-panel {
            border-radius: 24px;
            background: linear-gradient(160deg, rgba(255, 253, 248, 0.98), rgba(241, 248, 255, 0.98));
            border: 1px solid rgba(226, 214, 194, 0.85);
            box-shadow: 0 18px 40px rgba(2, 6, 23, 0.12);
        }
        .projection-student-live-panel .student-live-kicker {
            letter-spacing: 0.08em;
            text-transform: uppercase;
            font-size: 0.78rem;
            color: #64748b;
        }
        .projection-student-live-panel .student-live-question {
            font-size: clamp(1.35rem, 2.4vw, 2.1rem);
            line-height: 1.55;
            font-weight: 700;
            color: #0f172a;
        }
        .projection-student-live-panel .student-live-ai {
            font-size: clamp(1.05rem, 1.8vw, 1.35rem);
            line-height: 1.65;
            color: #1e293b;
        }
        .projection-teacher-mirror-shell {
            border-radius: 18px;
            border: 1px dashed #cbd5e1;
            background: #f8fafc;
            padding: 0.85rem 1rem;
            max-height: 420px;
            overflow: auto;
        }
        .projection-teacher-mirror-shell .student-live-question {
            font-size: 1.05rem;
        }
        .projection-teacher-mirror-shell .student-live-ai {
            font-size: 0.98rem;
        }
        #projection-view[data-screen="display"] .projection-prep-summary-card {
            display: none !important;
        }
        #projection-view[data-screen="display"] #projection-stage-row .col-lg-8 {
            flex: 0 0 100%;
            max-width: 100%;
        }
        .saved-lesson-card {
            border: 1px solid #e7e2d8;
            border-radius: 14px;
            padding: 0.65rem 0.85rem;
            background: #fff;
        }
        .saved-lesson-card + .saved-lesson-card {
            margin-top: 0.65rem;
        }
        #projection-view[data-screen="teacher"] {
            max-width: 1120px;
        }
        #projection-view[data-screen="teacher"] .projection-shell {
            padding-top: 0.75rem;
            padding-bottom: 2rem;
        }
        .projection-teacher-shell .control-cluster {
            display: flex;
            flex-wrap: wrap;
            gap: 0.5rem;
        }
        .projection-teacher-shell .control-cluster .btn {
            flex: 1 1 auto;
            min-width: 8.5rem;
        }
        .projection-teacher-shell .teacher-zone > summary,
        .projection-teacher-shell .teacher-collapsible summary {
            font-size: 0.98rem;
        }
        .projection-teacher-shell .mini-card {
            padding: 0.85rem 1rem;
        }
        .launch-strip {
            border: 1px solid #d9cfbc;
            border-radius: 20px;
            background: linear-gradient(135deg, #fffaf1, #f6f1e7);
            box-shadow: 0 12px 24px rgba(87, 79, 63, 0.08);
        }
        .launch-strip-label {
            font-size: 0.82rem;
            color: #667085;
            margin-bottom: 0.3rem;
        }
        .launch-strip-value {
            font-weight: 700;
            color: #2f3441;
        }
        .launch-strip-source {
            display: inline-flex;
            align-items: center;
            padding: 0.18rem 0.55rem;
            border-radius: 999px;
            background: #e9f0ea;
            color: #486857;
            font-size: 0.76rem;
            font-weight: 700;
            margin-top: 0.45rem;
        }
        .launch-strip-link {
            padding: 0;
            border: 0;
            background: transparent;
            text-align: left;
            text-decoration: underline;
            text-decoration-color: #9cb8aa;
            text-underline-offset: 0.16rem;
            cursor: pointer;
        }
        .teacher-core-workflow-step {
            border: 1px solid #d9cfbc;
            border-radius: 16px;
            background: #fffdfa;
            padding: 1rem 1.1rem;
            height: 100%;
        }
        .teacher-core-workflow-step .step-index {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 2rem;
            height: 2rem;
            border-radius: 999px;
            background: #6d8b7d;
            color: #fff;
            font-weight: 700;
            margin-bottom: 0.65rem;
        }
        .teacher-core-workflow-step.is-active {
            border-color: #6d8b7d;
            box-shadow: 0 0 0 3px rgba(109, 139, 125, 0.14);
        }
        .teacher-core-workflow-step.is-done {
            border-color: #9cb8aa;
            background: #f4faf6;
        }
        .teacher-core-workflow-step.is-done .step-index {
            background: #4f7a67;
        }
        .teacher-admin-only {
            opacity: 0.92;
        }
        .teacher-workspace-layout {
            display: grid;
            grid-template-columns: minmax(240px, 280px) minmax(0, 1fr);
            gap: 1.25rem;
            align-items: start;
        }
        .teacher-sidebar-sticky {
            position: sticky;
            top: 1rem;
            max-height: calc(100vh - 2rem);
            overflow-y: auto;
            padding-right: 0.25rem;
        }
        .teacher-sidebar-heading {
            font-size: 0.78rem;
            font-weight: 700;
            letter-spacing: 0.04em;
            text-transform: uppercase;
            color: #667085;
        }
        .teacher-sidebar-guide {
            margin: 0;
            padding-left: 1.1rem;
            color: #475467;
            font-size: 0.86rem;
        }
        .teacher-sidebar-guide li {
            margin-bottom: 0.35rem;
        }
        .teacher-sidebar-guide li.is-current {
            color: #2f5a44;
            font-weight: 600;
        }
        .teacher-sidebar .teacher-collapsible,
        .teacher-sidebar .teacher-zone {
            margin-bottom: 0.55rem;
        }
        .teacher-sidebar .teacher-collapsible summary,
        .teacher-sidebar .teacher-zone > summary {
            font-size: 0.88rem;
            padding: 0.55rem 0.65rem;
        }
        .teacher-sidebar .teacher-collapsible-body,
        .teacher-sidebar .teacher-zone-body {
            padding: 0 0.65rem 0.75rem;
            max-height: 42vh;
            overflow-y: auto;
        }
        .teacher-tool-nav {
            display: flex;
            flex-direction: column;
            gap: 0.35rem;
        }
        .teacher-tool-nav-btn {
            width: 100%;
            text-align: left;
            border: 1px solid #e4dbc8;
            border-radius: 12px;
            padding: 0.55rem 0.7rem;
            background: #fffdfa;
            font-size: 0.84rem;
            font-weight: 600;
            color: #3d4b43;
            cursor: pointer;
            line-height: 1.35;
        }
        .teacher-tool-nav-btn:hover {
            border-color: #c8dccf;
            background: #f7fbf8;
        }
        .teacher-tool-nav-btn.is-active {
            border-color: #6d8b7d;
            background: #f0f6f2;
            color: #2f5a44;
            box-shadow: 0 0 0 2px rgba(109, 139, 125, 0.12);
        }
        .teacher-workspace-tabs {
            display: flex;
            flex-wrap: wrap;
            gap: 0.45rem;
            padding: 0.35rem;
            border: 1px solid #e4dbc8;
            border-radius: 14px;
            background: #fffdfa;
        }
        .teacher-workspace-tab {
            border: 1px solid transparent;
            border-radius: 10px;
            padding: 0.45rem 0.85rem;
            background: transparent;
            font-size: 0.86rem;
            font-weight: 600;
            color: #475467;
            cursor: pointer;
        }
        .teacher-workspace-tab:hover {
            background: #f3f7f4;
        }
        .teacher-workspace-tab.is-active {
            border-color: #c8dccf;
            background: #f0f6f2;
            color: #2f5a44;
        }
        .teacher-tool-stage {
            margin-bottom: 1.25rem;
        }
        .teacher-tool-stage-header {
            border: 1px solid #c8dccf;
            border-radius: 16px 16px 0 0;
            background: linear-gradient(135deg, #f7fbf8, #fffdfa);
            padding: 0.85rem 1.1rem;
        }
        .teacher-tool-stage-body {
            border: 1px solid #e4dbc8;
            border-top: 0;
            border-radius: 0 0 16px 16px;
            background: #fffdfa;
            padding: 1rem 1.1rem 1.25rem;
        }
        .teacher-tool-stage-panel {
            display: none;
        }
        .teacher-tool-stage-panel.is-active {
            display: block;
        }
        .teacher-tool-stage .teacher-collapsible {
            border: none;
            border-radius: 0;
            box-shadow: none;
            background: transparent;
            margin-bottom: 0;
        }
        .teacher-tool-stage .teacher-collapsible > summary {
            display: none;
        }
        .teacher-tool-stage .teacher-collapsible-body {
            max-height: none;
            overflow: visible;
            padding: 0;
        }
        .teacher-main.is-tool-view .teacher-prep-section {
            display: none;
        }
        .teacher-main.is-adopted-view .teacher-prep-section,
        .teacher-main.is-adopted-view .teacher-tool-stage {
            display: none;
        }
        .teacher-workspace-tab--adopted {
            border-color: #d4c4a8;
            background: #fff8ee;
            color: #7a5b2e;
        }
        .teacher-workspace-tab--adopted.is-active {
            border-color: #c9a227;
            background: #fff3d6;
            color: #5c4518;
        }
        .teacher-adopted-panel .teacher-adopted-list {
            display: flex;
            flex-direction: column;
            gap: 0.75rem;
        }
        .teacher-adopted-card {
            border: 1px solid #e4dbc8;
            border-radius: 14px;
            background: #fff;
            padding: 0.85rem 1rem;
        }
        .teacher-adopted-card-kicker {
            font-size: 0.72rem;
            font-weight: 700;
            letter-spacing: 0.04em;
            text-transform: uppercase;
            color: #8a6d3b;
            margin-bottom: 0.2rem;
        }
        .teacher-adopted-detail {
            white-space: pre-wrap;
            font-family: inherit;
            font-size: 0.84rem;
            background: #f8f4ec;
            border-radius: 10px;
            padding: 0.65rem 0.75rem;
            max-height: 220px;
            overflow-y: auto;
        }
        .teacher-tool-stage-header-actions {
            flex-shrink: 0;
        }
        .teacher-prep-guide-card {
            border: 1px solid #c8dccf;
            background: linear-gradient(135deg, #f7fbf8, #fffdfa);
        }
        .teacher-prep-guide-steps {
            display: grid;
            grid-template-columns: repeat(4, minmax(0, 1fr));
            gap: 0.5rem;
        }
        .teacher-prep-guide-step {
            border: 1px solid #dce8df;
            border-radius: 12px;
            padding: 0.65rem 0.75rem;
            background: #fff;
            font-size: 0.84rem;
        }
        .teacher-prep-guide-step strong {
            display: block;
            color: #3d5f4c;
            margin-bottom: 0.2rem;
        }
        .projection-console-layout {
            display: grid;
            grid-template-columns: minmax(280px, 340px) minmax(0, 1fr);
            gap: 1rem;
            align-items: start;
        }
        .projection-console-sidebar-sticky {
            position: sticky;
            top: 0.75rem;
            max-height: calc(100vh - 1.5rem);
            overflow-y: auto;
            padding-right: 0.25rem;
        }
        .projection-console-live-header {
            border: 1px solid #dce8df;
            border-radius: 16px;
            background: #fff;
            padding: 1rem 1.1rem;
            margin-bottom: 0.75rem;
        }
        .projection-attention-live-card {
            border: 1px solid #e7dcc4;
            border-radius: 16px;
            background: linear-gradient(135deg, #fffaf1, #fff);
            padding: 1rem;
            margin-bottom: 0.75rem;
        }
        .projection-attention-live-card.is-alert {
            border-color: #e8b4b4;
            background: linear-gradient(135deg, #fff5f5, #fff);
        }
        .projection-draw-reel {
            min-height: 3.2rem;
            border: 1px dashed #c9b896;
            border-radius: 12px;
            background: #fffdf8;
            display: flex;
            align-items: center;
            justify-content: center;
            font-weight: 700;
            font-size: 1.25rem;
            letter-spacing: 0.04em;
            transition: transform 0.12s ease, background 0.2s ease;
        }
        .projection-draw-reel.is-spinning {
            background: #fff3d6;
            transform: scale(1.02);
        }
        .projection-draw-reel.is-landed {
            background: #e8f6ec;
            border-style: solid;
            border-color: #7cbc8a;
        }
        .projection-segment-controller {
            border: 1px solid #d9cfbc;
            border-radius: 18px;
            background: #fffdfa;
            padding: 1rem 1.1rem;
        }
        .projection-segment-banner {
            border: 1px solid #d9cfbc;
            border-radius: 16px;
            background: #f7f2e8;
            padding: 0.85rem 1rem;
        }
        .projection-segment-btn.active,
        .projection-segment-btn.btn-primary {
            box-shadow: 0 0 0 0.15rem rgba(109, 139, 125, 0.18);
        }
        .projection-live-sync-badge {
            display: inline-flex;
            align-items: center;
            gap: 0.35rem;
            font-size: 0.76rem;
            color: #486857;
            background: #e9f0ea;
            border-radius: 999px;
            padding: 0.15rem 0.55rem;
        }
        .projection-live-sync-badge::before {
            content: '';
            width: 0.45rem;
            height: 0.45rem;
            border-radius: 999px;
            background: #6d8b7d;
            animation: projection-pulse 2s ease-in-out infinite;
        }
        @keyframes projection-pulse {
            0%, 100% { opacity: 1; }
            50% { opacity: 0.35; }
        }
        @media (max-width: 991.98px) {
            .teacher-workspace-layout,
            .projection-console-layout {
                grid-template-columns: 1fr;
            }
            .teacher-workspace-layout .teacher-main {
                order: -1;
            }
            .teacher-workspace-layout .teacher-sidebar {
                order: 1;
            }
            .projection-console-layout .projection-console-main {
                order: -1;
            }
            .projection-console-layout .projection-console-sidebar {
                order: 1;
            }
            .teacher-sidebar-sticky,
            .projection-console-sidebar-sticky {
                position: static;
                max-height: none;
            }
            .teacher-prep-guide-steps {
                grid-template-columns: repeat(2, minmax(0, 1fr));
            }
        }
        .projection-giant-mode #projection-view .card,
        .projection-giant-mode #projection-view .empty-box,
        .projection-giant-mode #projection-view .mini-card {
            font-size: 1.12rem;
        }
        .projection-giant-mode #projection-view .display-5,
        .projection-giant-mode #projection-view .h3,
        .projection-giant-mode #projection-view .h4 {
            transform-origin: left top;
            transform: scale(1.08);
        }
        @media (max-width: 991.98px) {
            .hero-card .card-body,
            .section-card .card-body,
            .plan-card .card-body,
            .projection-stage-card .card-body {
                padding: 1.1rem !important;
            }
            .teacher-collapsible-body {
                padding: 0 0.9rem 0.9rem;
            }
            .module-panel .empty-box {
                min-height: 130px;
                padding: 1.25rem;
            }
        }
        @media (max-width: 767.98px) {
            .container.mt-5 {
                margin-top: 1.25rem !important;
            }
            .hero-card,
            .section-card,
            .plan-card,
            .projection-stage-card,
            .teacher-collapsible,
            .launch-strip {
                border-radius: 16px;
            }
            .mainline-step,
            .mini-card,
            .prompt-card,
            .topic-card,
            .empty-box {
                border-radius: 14px;
            }
            .launch-strip .d-flex.flex-wrap.align-items-center.gap-4 {
                width: 100%;
                gap: 1rem !important;
            }
            .action-feedback {
                right: 0.75rem;
                left: 0.75rem;
                max-width: none;
                bottom: 0.75rem;
            }
        }
    

        .spotlight-active {
            position: relative;
        }
        .spotlight-active::before {
            content: '';
            position: fixed;
            top: 0; left: 0; right: 0; bottom: 0;
            background: rgba(0, 0, 0, 0.7);
            z-index: 1040;
            pointer-events: none;
            transition: background 0.3s;
        }
        .spotlight-target {
            position: relative;
            z-index: 1050;
            background: white;
            box-shadow: 0 0 20px 10px rgba(255, 255, 255, 0.8);
            border-radius: 8px;
            transition: all 0.3s;
        }
    

        .resident-xiaotong {
            position: fixed;
            bottom: 30px;
            right: 40px;
            z-index: 1000;
            text-align: center;
            background: linear-gradient(160deg, #fff8e7 0%, #fff 55%, #ffe8c8 100%);
            border-radius: 22px;
            padding: 12px 14px 10px;
            box-shadow: 0 10px 28px rgba(255, 152, 0, 0.18);
            border: 2px solid #ffb74d;
            transition: all 0.3s ease;
            min-width: 96px;
        }
        .resident-xiaotong:hover {
            transform: translateY(-4px) scale(1.03);
            box-shadow: 0 14px 32px rgba(255, 152, 0, 0.28);
        }
        .resident-xiaotong .xiaotong-avatar {
            width: 72px;
            height: 72px;
            margin: 0 auto 6px;
            border-radius: 50%;
            overflow: hidden;
            border: 3px solid #fff3e0;
            box-shadow: 0 4px 12px rgba(255, 152, 0, 0.25);
            cursor: pointer;
            background: #fff;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .resident-xiaotong .xiaotong-avatar img,
        .xiaoming-avatar img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            display: block;
        }
        .resident-xiaotong .xiaotong-name {
            font-size: 0.95rem;
            font-weight: bold;
            color: #ef6c00;
        }
        .resident-xiaotong .xiaotong-role {
            font-size: 0.72rem;
            color: #8a6a2a;
            margin-top: 2px;
        }
        .resident-xiaotong.is-paused {
            opacity: 0.55;
            filter: grayscale(0.35);
        }
        .xiaoming-avatar {
            width: 2.4rem;
            height: 2.4rem;
            border-radius: 50%;
            overflow: hidden;
            cursor: pointer;
            user-select: none;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            background: #fff8e1;
            border: 2px solid #ffcc80;
            flex-shrink: 0;
        }
        .xiaoming-avatar.emoji-fallback {
            font-size: 1.6rem;
            width: auto;
            height: auto;
            border: none;
            background: transparent;
        }
        @keyframes bounce-anim {
            0%, 100% { transform: translateY(0); }
            50% { transform: translateY(-10px); }
        }
        @keyframes shake-anim {
            0%, 100% { transform: translateX(0); }
            25% { transform: translateX(-5px) rotate(-5deg); }
            75% { transform: translateX(5px) rotate(5deg); }
        }
        .bounce-anim { animation: bounce-anim 2s infinite ease-in-out; }
        .shake-anim { animation: shake-anim 0.5s infinite; }
        
        /* Teacher Console Dark Mode */
        body.teacher-console-mode {
            background-color: #1e1e1e !important;
        }
        body.teacher-console-mode #projection-view {
            background-color: #252526 !important;
            border-radius: 8px;
            box-shadow: 0 4px 12px rgba(0,0,0,0.5);
            padding: 20px;
        }
        body.teacher-console-mode .card {
            background-color: #2d2d30 !important;
            border-color: #3e3e42 !important;
        }
        body.teacher-console-mode .card-body,
        body.teacher-console-mode .text-dark,
        body.teacher-console-mode h1,
        body.teacher-console-mode h2,
        body.teacher-console-mode h3,
        body.teacher-console-mode h4,
        body.teacher-console-mode h5,
        body.teacher-console-mode h6,
        body.teacher-console-mode p {
            color: #d4d4d4 !important;
        }
        body.teacher-console-mode .text-secondary {
            color: #9e9e9e !important;
        }
        body.teacher-console-mode .btn-outline-dark {
            color: #d4d4d4;
            border-color: #d4d4d4;
        }
        body.teacher-console-mode .btn-outline-dark:hover {
            background-color: #d4d4d4;
            color: #1e1e1e;
        }
        body.teacher-console-mode .projection-kicker {
            color: #ff9800 !important;
            border-bottom-color: #ff9800 !important;
        }
        body.teacher-console-mode .form-control {
            background-color: #3e3e42 !important;
            color: #d4d4d4 !important;
            border-color: #555 !important;
        }

        /* —— 新手向导 —— */
        .teacher-onboarding {
            position: fixed;
            inset: 0;
            z-index: 1080;
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 1rem;
            background: rgba(28, 34, 40, 0.55);
            backdrop-filter: blur(4px);
        }
        .teacher-onboarding__card {
            width: min(520px, 100%);
            background: #fffaf3;
            border-radius: 18px;
            box-shadow: 0 18px 48px rgba(30, 40, 30, 0.28);
            padding: 1.5rem 1.6rem 1.25rem;
            border: 1px solid rgba(180, 160, 100, 0.35);
        }
        .teacher-onboarding__step {
            font-size: 0.78rem;
            letter-spacing: 0.08em;
            color: #7a6f5c;
            margin-bottom: 0.35rem;
        }
        .teacher-onboarding__title {
            font-size: 1.25rem;
            font-weight: 700;
            color: #2f3441;
            margin-bottom: 0.5rem;
        }
        .teacher-onboarding__body {
            color: #5a616e;
            font-size: 0.95rem;
            line-height: 1.65;
            margin-bottom: 1.1rem;
        }
        .teacher-onboarding__progress {
            display: flex;
            gap: 0.35rem;
            margin-bottom: 1rem;
        }
        .teacher-onboarding__dot {
            width: 8px;
            height: 8px;
            border-radius: 50%;
            background: #d4c9b0;
        }
        .teacher-onboarding__dot.is-active {
            background: #5d7c6f;
            transform: scale(1.2);
        }
        .projection-segment-btn .seg-quest {
            display: block;
            font-weight: 700;
            line-height: 1.2;
        }
        .projection-segment-btn .seg-pedagogy {
            display: block;
            font-size: 0.72rem;
            opacity: 0.8;
            font-weight: 500;
            margin-top: 0.15rem;
        }

        /* —— 投影全屏沉浸 —— */
        body.projection-display-mode.projection-immersive .projection-mode-banner,
        body.projection-display-mode.projection-immersive .projection-kicker,
        body.projection-display-mode.projection-immersive #projection-usb-placement-hint,
        body.projection-display-mode.projection-immersive footer {
            display: none !important;
        }
        body.projection-display-mode.projection-immersive #projection-view .hero-card {
            background: transparent !important;
            box-shadow: none !important;
            border: none !important;
        }
        body.projection-display-mode.projection-immersive #projection-view .hero-card .card-body {
            padding: 0.5rem 0.75rem 0.25rem !important;
        }
        body.projection-display-mode.projection-immersive #projection-view .projection-metric {
            display: none !important;
        }
        body.projection-display-mode.projection-immersive #projection-stage-row > .col-lg-8 {
            flex: 0 0 100%;
            max-width: 100%;
        }
        body.projection-display-mode.projection-immersive #projection-view .projection-shell {
            padding: 1rem 1.5rem 5.5rem !important;
            min-height: 100vh;
            background:
                radial-gradient(circle at 18% 12%, rgba(255, 220, 150, 0.14), transparent 32%),
                radial-gradient(circle at 88% 18%, rgba(100, 160, 140, 0.12), transparent 28%),
                linear-gradient(180deg, #1a2228 0%, #243039 42%, #1e282f 100%);
            color: #f3efe6;
        }
        body.projection-display-mode.projection-immersive #projection-view .hero-card,
        body.projection-display-mode.projection-immersive #projection-view .hero-card .lead,
        body.projection-display-mode.projection-immersive #projection-view .hero-card .small,
        body.projection-display-mode.projection-immersive #projection-mode-title-display,
        body.projection-display-mode.projection-immersive #projection-mission {
            color: #f7f2e8 !important;
        }
        body.projection-display-mode.projection-immersive #projection-stage-board,
        body.projection-display-mode.projection-immersive #projection-student-live-panel {
            background: rgba(255, 252, 245, 0.06) !important;
            border: 1px solid rgba(255, 230, 180, 0.18) !important;
            color: #f7f2e8 !important;
            border-radius: 18px;
            box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25);
        }
        body.projection-display-mode.projection-immersive #projection-student-live-panel .student-live-question,
        body.projection-display-mode.projection-immersive #projection-student-live-panel .text-secondary {
            color: #e8e0d0 !important;
        }
        .projection-immerse-fab {
            display: none;
            position: fixed;
            right: 1rem;
            top: 1rem;
            z-index: 90;
            gap: 0.4rem;
        }
        body.projection-display-mode .projection-immerse-fab {
            display: flex;
            flex-wrap: wrap;
            justify-content: flex-end;
        }
        body.projection-display-mode.projection-immersive .projection-immerse-fab .btn {
            opacity: 0.55;
        }
        body.projection-display-mode.projection-immersive .projection-immerse-fab:hover .btn {
            opacity: 1;
        }
        body.projection-display-mode #xiaolu-path-bar,
        body.projection-display-mode .xiaolu-path-bar {
            display: block !important;
            position: fixed;
            left: 0;
            right: 0;
            bottom: 0;
            z-index: 80;
            margin: 0;
            border-radius: 0;
            border-left: 0;
            border-right: 0;
            border-bottom: 0;
            background: rgba(18, 24, 28, 0.92);
            color: #f0ebe0;
            border-top: 1px solid rgba(232, 184, 74, 0.35);
            box-shadow: 0 -8px 28px rgba(0, 0, 0, 0.35);
            padding: 0.65rem 1.25rem 0.85rem;
        }
        body.projection-display-mode .xiaolu-path-bar__title {
            color: rgba(240, 220, 170, 0.85);
        }
        body.projection-display-mode .xiaolu-path-node {
            color: rgba(220, 210, 190, 0.55);
        }
        body.projection-display-mode .xiaolu-path-node.is-done,
        body.projection-display-mode .xiaolu-path-node.is-active {
            color: #ffe9b0;
        }
        body.teacher-console-mode .projection-segment-controller {
            border: 1px solid rgba(255, 152, 0, 0.35);
            border-radius: 14px;
            padding: 0.85rem 1rem;
            background: rgba(40, 40, 44, 0.85);
        }
        .school-kpi-grid .school-kpi-card {
            border-radius: 14px;
            background: #fff;
            border: 1px solid rgba(180, 160, 120, 0.28);
            padding: 1rem 1.1rem;
            height: 100%;
            box-shadow: 0 6px 16px rgba(60, 50, 30, 0.05);
        }
        .school-kpi-card .kpi-value {
            font-size: 1.75rem;
            font-weight: 800;
            color: #3d5a5b;
            line-height: 1.1;
        }
        .school-kpi-card .kpi-delta {
            font-size: 0.82rem;
            font-weight: 600;
            color: #2f7d4e;
        }
        .school-kpi-bar {
            height: 10px;
            border-radius: 999px;
            background: rgba(120, 110, 95, 0.15);
            overflow: hidden;
            margin-top: 0.55rem;
        }
        .school-kpi-bar > span {
            display: block;
            height: 100%;
            border-radius: inherit;
            background: linear-gradient(90deg, #5d7c6f, #e8b84a);
        }
        .school-trend-row {
            display: flex;
            align-items: flex-end;
            gap: 0.45rem;
            height: 88px;
            margin-top: 0.75rem;
        }
        .school-trend-row span {
            flex: 1;
            border-radius: 6px 6px 2px 2px;
            background: linear-gradient(180deg, #7f9c8d, #5d7c6f);
            min-height: 8px;
            opacity: 0.85;
        }
        .student-preview-card {
            border-radius: 16px;
            background: linear-gradient(145deg, #1e2a30 0%, #2a3a42 55%, #24343c 100%);
            color: #f4efe6;
            min-height: 180px;
            padding: 1.25rem;
            border: 1px solid rgba(232, 184, 74, 0.25);
        }
        .student-preview-card h3 {
            color: #ffe9b0;
            font-size: 1.05rem;
            font-weight: 700;
        }
        .student-preview-mock {
            margin-top: 0.75rem;
            padding: 0.65rem;
            border-radius: 10px;
            background: rgba(255, 255, 255, 0.06);
            font-size: 0.82rem;
            color: rgba(240, 230, 210, 0.88);
            line-height: 1.55;
        }
        .student-check-chart {
            background: #fff;
            border-radius: 16px;
            border: 1px solid rgba(180, 160, 110, 0.28);
            padding: 1rem 1.1rem;
        }
        .student-check-item {
            border: 1px solid rgba(120, 130, 140, 0.22);
            border-radius: 12px;
            padding: 0.65rem 0.8rem;
            margin-bottom: 0.5rem;
            cursor: pointer;
            background: #faf8f3;
        }
        .student-check-item.is-active {
            border-color: rgba(45, 120, 80, 0.55);
            background: #f1f8f3;
        }
        .student-check-item.is-passed {
            opacity: 0.88;
            background: #f3f7f4;
            cursor: default;
        }
        .student-path-dots {
            font-size: 0.92rem;
            letter-spacing: 0.02em;
        }
        .projection-copilot-panel {
            border: 1px solid rgba(255, 152, 0, 0.35);
            border-radius: 14px;
            padding: 0.85rem 1rem;
            background: rgba(40, 40, 44, 0.55);
        }
        .projection-copilot-card {
            border: 1px solid rgba(180, 160, 120, 0.28);
            border-radius: 12px;
            padding: 0.7rem 0.8rem;
            margin-bottom: 0.55rem;
            background: rgba(255, 250, 240, 0.06);
        }
        .projection-copilot-card.is-teacher-only {
            border-color: rgba(220, 120, 80, 0.45);
        }
        .projection-copilot-card .copilot-kind {
            font-size: 0.72rem;
            letter-spacing: 0.04em;
            color: #c9a227;
            margin-bottom: 0.2rem;
        }
    
