        /* ==========================================
           大语言模型 — 专有样式
           宽度继承全局 85%，风格延续 part3 的温暖杂志风
           ========================================== */

        /* ---- 章节二级标题变体 ---- */
        .chapter-section h3 {
            font-family: 'Noto Serif SC', serif;
            font-size: 1.2rem;
            font-weight: 600;
            color: var(--primary-dark);
            margin: var(--space-lg) 0 var(--space-md);
            padding-left: var(--space-md);
            border-left: 3px solid var(--primary);
        }

        .chapter-section h4 {
            font-family: 'Noto Serif SC', serif;
            font-size: 1.05rem;
            font-weight: 600;
            color: var(--text-primary);
            margin: var(--space-md) 0 var(--space-sm);
        }

        /* ---- 定义卡 ---- */
        .def-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
            gap: var(--space-lg);
            margin-bottom: var(--space-lg);
        }

        .def-card {
            background: var(--bg-card);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-lg);
            padding: var(--space-lg);
            text-align: center;
            transition: all var(--transition-slow);
            box-shadow: var(--shadow-sm);
            position: relative;
            overflow: hidden;
        }

        .def-card::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            height: 3px;
            transition: opacity var(--transition-base);
        }

        .def-card:nth-child(1)::before {
            background: linear-gradient(90deg, #EC4899, #F472B6);
        }

        .def-card:nth-child(2)::before {
            background: linear-gradient(90deg, #3B82F6, #60A5FA);
        }

        .def-card:nth-child(3)::before {
            background: linear-gradient(90deg, #10B981, #34D399);
        }

        .def-card:nth-child(4)::before {
            background: linear-gradient(90deg, #8B5CF6, #A78BFA);
        }

        .def-card:hover {
            transform: translateY(-4px);
            box-shadow: var(--shadow-hover);
        }

        .def-card:hover::before {
            opacity: 1;
        }

        .def-label {
            display: inline-block;
            font-size: 0.65rem;
            letter-spacing: 0.1em;
            padding: 3px 12px;
            border-radius: var(--radius-xl);
            margin-bottom: var(--space-sm);
        }

        .def-card h3 {
            font-family: 'Noto Serif SC', serif;
            font-size: 1.15rem;
            color: var(--text-primary);
            margin-bottom: 2px;
        }

        .def-en {
            font-size: 0.7rem;
            color: var(--text-muted);
            letter-spacing: 0.05em;
            margin-bottom: var(--space-sm);
        }

        .def-body {
            color: var(--text-secondary);
            font-size: 0.85rem;
            line-height: 1.65;
            text-align: left;
        }

        .def-body strong {
            color: var(--primary);
        }

        /* ---- 核心技术卡片 ---- */
        .tech-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
            gap: var(--space-lg);
            margin-bottom: var(--space-lg);
        }

        .tech-card {
            background: var(--bg-card);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-lg);
            padding: var(--space-lg);
            transition: all var(--transition-slow);
            box-shadow: var(--shadow-sm);
            position: relative;
        }

        .tech-card:hover {
            transform: translateY(-4px);
            box-shadow: var(--shadow-hover);
        }

        .tech-card:nth-child(1) { border-top: 3px solid #6366F1; }
        .tech-card:nth-child(2) { border-top: 3px solid #F59E0B; }
        .tech-card:nth-child(3) { border-top: 3px solid #EC4899; }
        .tech-card:nth-child(4) { border-top: 3px solid #10B981; }
        .tech-card:nth-child(5) { border-top: 3px solid #8B5CF6; }
        .tech-card:nth-child(6) { border-top: 3px solid #EF4444; }

        .tech-card h3 {
            font-family: 'Noto Serif SC', serif;
            font-size: 1.1rem;
            color: var(--text-primary);
            margin-bottom: var(--space-sm);
        }

        .tech-desc {
            color: var(--text-secondary);
            font-size: 0.85rem;
            line-height: 1.65;
        }

        /* ---- 工作流步骤 ---- */
        .flow-steps {
            display: flex;
            flex-wrap: wrap;
            gap: var(--space-md);
            justify-content: center;
            margin-bottom: var(--space-lg);
        }

        .flow-step {
            flex: 1;
            min-width: 160px;
            max-width: 220px;
            background: var(--bg-card);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-md);
            padding: var(--space-lg) var(--space-md);
            text-align: center;
            transition: all var(--transition-slow);
            box-shadow: var(--shadow-sm);
            position: relative;
        }

        .flow-step:hover {
            transform: translateY(-3px);
            box-shadow: var(--shadow-hover);
        }

        .flow-step:not(:last-child)::after {
            content: '→';
            position: absolute;
            right: -18px;
            top: 50%;
            transform: translateY(-50%);
            font-size: 1.2rem;
            color: var(--primary);
            font-weight: bold;
        }

        .flow-num {
            display: inline-block;
            width: 28px;
            height: 28px;
            line-height: 28px;
            border-radius: 50%;
            background: linear-gradient(135deg, var(--primary), var(--primary-dark));
            color: #fff;
            font-size: 0.8rem;
            font-weight: 600;
            margin-bottom: var(--space-sm);
        }

        .flow-step h4 {
            font-size: 0.9rem;
            color: var(--text-primary);
            margin-bottom: var(--space-xs);
        }

        .flow-step p {
            font-size: 0.75rem;
            color: var(--text-secondary);
            line-height: 1.5;
        }

        /* ---- 名词定义区块 ---- */
        .term-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
            gap: var(--space-md);
            margin-bottom: var(--space-lg);
        }

        .term-item {
            background: var(--bg-card);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-md);
            padding: var(--space-md) var(--space-lg);
            transition: all var(--transition-base);
            box-shadow: var(--shadow-sm);
        }

        .term-item:hover {
            border-color: var(--border-accent);
            transform: translateX(4px);
            box-shadow: var(--shadow-hover);
        }

        .term-word {
            font-weight: 600;
            color: var(--primary-dark);
            font-size: 0.9rem;
        }

        .term-def {
            color: var(--text-secondary);
            font-size: 0.8rem;
            margin-top: 2px;
            line-height: 1.6;
        }

        /* ---- 应用场景卡片 ---- */
        .scene-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
            gap: var(--space-lg);
            margin-bottom: var(--space-lg);
        }

        .scene-card {
            background: var(--bg-card);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-lg);
            padding: var(--space-lg);
            text-align: center;
            transition: all var(--transition-slow);
            box-shadow: var(--shadow-sm);
        }

        .scene-card:hover {
            transform: translateY(-4px);
            box-shadow: var(--shadow-hover);
            border-color: var(--border-accent);
        }

        .scene-icon {
            font-size: 2rem;
            margin-bottom: var(--space-sm);
        }

        .scene-card h3 {
            font-family: 'Noto Serif SC', serif;
            font-size: 1rem;
            color: var(--text-primary);
            margin-bottom: var(--space-sm);
        }

        .scene-desc {
            color: var(--text-secondary);
            font-size: 0.85rem;
            line-height: 1.6;
        }

        /* ---- 公式块 ---- */
        .formula-box {
            background: var(--bg-card);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-md);
            padding: var(--space-md) var(--space-lg);
            margin-bottom: var(--space-md);
            font-family: 'JetBrains Mono', monospace;
            font-size: 0.85rem;
            color: var(--primary);
            overflow-x: auto;
        }

        .formula-desc {
            color: var(--text-secondary);
            font-size: 0.85rem;
            line-height: 1.65;
            margin-top: var(--space-xs);
            font-family: 'Noto Sans SC', sans-serif;
        }

        /* ---- 算法分类大卡片 ---- */
        .algo-section-card {
            background: var(--bg-card);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-lg);
            padding: var(--space-lg);
            margin-bottom: var(--space-md);
            transition: all var(--transition-slow);
            box-shadow: var(--shadow-sm);
        }

        .algo-section-card:hover {
            border-color: var(--border-accent);
            box-shadow: var(--shadow-hover);
        }

        .algo-section-card h4 {
            font-family: 'Noto Serif SC', serif;
            font-size: 1.05rem;
            color: var(--text-primary);
            margin-bottom: var(--space-sm);
            display: flex;
            align-items: center;
            gap: var(--space-sm);
        }

        .algo-section-card p {
            color: var(--text-secondary);
            font-size: 0.85rem;
            line-height: 1.65;
        }

        /* ---- 两栏布局 ---- */
        .two-col {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: var(--space-lg);
            margin-bottom: var(--space-lg);
        }

        @media (max-width: 768px) {
            .two-col {
                grid-template-columns: 1fr;
            }
            .flow-step:not(:last-child)::after {
                display: none;
            }
        }

        /* ---- 子主题列表 ---- */
        .topic-list {
            list-style: none;
            padding: 0;
        }

        .topic-list li {
            padding: var(--space-sm) var(--space-md);
            margin-bottom: var(--space-xs);
            background: var(--bg-elevated);
            border-radius: var(--radius-sm);
            border-left: 3px solid var(--accent);
            color: var(--text-secondary);
            font-size: 0.85rem;
            transition: all var(--transition-base);
        }

        .topic-list li:hover {
            border-left-color: var(--primary);
            transform: translateX(4px);
        }

        .topic-list li strong {
            color: var(--text-primary);
        }

        /* ---- 训练阶段时间线 ---- */
        .stage-timeline {
            position: relative;
            padding-left: 2rem;
            margin-bottom: var(--space-lg);
        }

        .stage-timeline::before {
            content: '';
            position: absolute;
            left: 0.6rem;
            top: 0;
            bottom: 0;
            width: 2px;
            background: linear-gradient(to bottom, var(--primary), var(--accent));
        }

        .stage-item {
            position: relative;
            margin-bottom: var(--space-lg);
            background: var(--bg-card);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-lg);
            padding: var(--space-lg);
            transition: all var(--transition-slow);
            box-shadow: var(--shadow-sm);
        }

        .stage-item:hover {
            border-color: var(--border-accent);
            box-shadow: var(--shadow-hover);
        }

        .stage-item::before {
            content: '';
            position: absolute;
            left: -1.7rem;
            top: 1.2rem;
            width: 12px;
            height: 12px;
            border-radius: 50%;
            background: var(--primary);
            border: 2px solid var(--bg-canvas);
        }

        .stage-item:nth-child(2)::before { background: #F59E0B; }
        .stage-item:nth-child(3)::before { background: #10B981; }
        .stage-item:nth-child(4)::before { background: #6366F1; }
        .stage-item:nth-child(5)::before { background: #8B5CF6; }

        .stage-item h4 {
            font-family: 'Noto Serif SC', serif;
            font-size: 1.05rem;
            color: var(--text-primary);
            margin-bottom: var(--space-sm);
        }

        .stage-item p {
            color: var(--text-secondary);
            font-size: 0.85rem;
            line-height: 1.65;
        }

        .stage-badge {
            display: inline-block;
            font-size: 0.65rem;
            padding: 2px 10px;
            border-radius: var(--radius-xl);
            margin-left: var(--space-sm);
            vertical-align: middle;
        }

        /* ---- 推理流程可视化 ---- */
        .inference-flow {
            display: flex;
            flex-wrap: wrap;
            gap: var(--space-sm);
            justify-content: center;
            margin-bottom: var(--space-lg);
        }

        .inference-step {
            flex: 1;
            min-width: 140px;
            max-width: 180px;
            background: var(--bg-card);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-lg);
            padding: var(--space-md);
            text-align: center;
            transition: all var(--transition-slow);
            box-shadow: var(--shadow-sm);
        }

        .inference-step:hover {
            transform: translateY(-3px);
            box-shadow: var(--shadow-hover);
        }

        .inference-num {
            display: inline-block;
            width: 26px;
            height: 26px;
            line-height: 26px;
            border-radius: 50%;
            background: linear-gradient(135deg, var(--primary), var(--accent));
            color: #fff;
            font-size: 0.75rem;
            font-weight: 600;
            margin-bottom: var(--space-xs);
        }

        .inference-step h4 {
            font-size: 0.85rem;
            color: var(--text-primary);
            margin-bottom: var(--space-xs);
        }

        .inference-step p {
            font-size: 0.72rem;
            color: var(--text-secondary);
            line-height: 1.5;
        }

        /* ---- 注意力机制卡片 ---- */
        .attention-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
            gap: var(--space-lg);
            margin-bottom: var(--space-lg);
        }

        .attention-card {
            background: var(--bg-card);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-lg);
            padding: var(--space-lg);
            text-align: center;
            transition: all var(--transition-slow);
            box-shadow: var(--shadow-sm);
            border-top: 3px solid #6366F1;
        }

        .attention-card:hover {
            transform: translateY(-4px);
            box-shadow: var(--shadow-hover);
        }

        .attention-card:nth-child(2) { border-top-color: #F59E0B; }
        .attention-card:nth-child(3) { border-top-color: #10B981; }
        .attention-card:nth-child(4) { border-top-color: #EC4899; }

        .attention-card h4 {
            font-family: 'Noto Serif SC', serif;
            font-size: 1rem;
            color: var(--text-primary);
            margin-bottom: var(--space-sm);
        }

        .attention-card p {
            color: var(--text-secondary);
            font-size: 0.83rem;
            line-height: 1.6;
        }

        .attention-card .mono {
            font-family: 'JetBrains Mono', monospace;
            font-size: 0.8rem;
            color: var(--primary);
            background: hsl(var(--primary-hue) 60% 96%);
            padding: 2px 8px;
            border-radius: var(--radius-sm);
            display: inline-block;
            margin: var(--space-xs) 0;
        }

        /* ==========================================
           新增：可视化容器
           ========================================== */
        .viz-section {
            margin: var(--space-2xl) 0;
        }

        .viz-title {
            font-family: 'Noto Serif SC', serif;
            font-size: 1.3rem;
            font-weight: 700;
            color: var(--text-primary);
            margin-bottom: var(--space-sm);
            text-align: center;
        }

        .viz-subtitle {
            color: var(--text-secondary);
            font-size: 0.95rem;
            line-height: 1.8;
            margin-bottom: var(--space-lg);
            text-align: center;
            max-width: 700px;
            margin-left: auto;
            margin-right: auto;
        }

        .viz-card {
            background: var(--bg-card);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-lg);
            padding: var(--space-xl) var(--space-lg);
            margin-bottom: var(--space-2xl);
            transition: all var(--transition-slow);
            box-shadow: var(--shadow-sm);
            position: relative;
            overflow: hidden;
        }

        .viz-card:hover {
            border-color: var(--border-accent);
            box-shadow: var(--shadow-hover);
        }

        .viz-card h3 {
            font-family: 'Noto Serif SC', serif;
            font-size: 1.15rem;
            color: var(--text-primary);
            margin-bottom: var(--space-sm);
            display: flex;
            align-items: center;
            gap: var(--space-sm);
        }

        .viz-card p {
            color: var(--text-secondary);
            font-size: 0.9rem;
            line-height: 1.7;
            margin-bottom: var(--space-md);
        }

        .viz-svg-container {
            background: linear-gradient(135deg, #FAFBFC, #F8FAFC);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-lg);
            padding: var(--space-lg);
            margin: var(--space-lg) 0;
            text-align: center;
            overflow: hidden;
        }

        .viz-svg-container svg {
            display: block;
            width: 100%;
            height: auto;
            max-width: 700px;
            margin: 0 auto;
        }

        .viz-caption {
            font-size: 0.8rem;
            color: var(--text-muted);
            text-align: center;
            margin-top: var(--space-sm);
            font-style: italic;
        }

        /* ==========================================
           神经网络结构动画
           ========================================== */
        @keyframes signalPulse {
            0% { r: 2; opacity: 0; }
            20% { r: 5; opacity: 1; }
            80% { r: 5; opacity: 1; }
            100% { r: 2; opacity: 0; }
        }

        .nn-signal {
            animation: signalPulse 2s ease-in-out infinite;
        }

        .nn-node {
            transition: all 0.3s ease;
        }

        .nn-node:hover {
            filter: brightness(1.2);
        }

        @keyframes weightFlow {
            0% { stroke-dashoffset: 0; }
            100% { stroke-dashoffset: 20; }
        }

        .nn-weight-line {
            stroke-dasharray: 4, 4;
            animation: weightFlow 1s linear infinite;
        }

        @keyframes fadeInUp {
            from { opacity: 0; transform: translateY(10px); }
            to { opacity: 1; transform: translateY(0); }
        }

        .fade-in-up {
            animation: fadeInUp 0.6s ease-out both;
        }

        /* ==========================================
           前向传播 & 反向传播动画
           ========================================== */
        @keyframes forwardSignal {
            0% { opacity: 0; stroke-dashoffset: 300; }
            15% { opacity: 1; }
            85% { opacity: 1; }
            100% { opacity: 0; stroke-dashoffset: 0; }
        }

        .forward-signal {
            animation: forwardSignal 2.5s ease-in-out infinite;
        }

        @keyframes backwardSignal {
            0% { opacity: 0; stroke-dashoffset: 300; }
            15% { opacity: 1; }
            85% { opacity: 1; }
            100% { opacity: 0; stroke-dashoffset: 0; }
        }

        .backward-signal {
            animation: backwardSignal 2.5s ease-in-out infinite reverse;
        }

        @keyframes nodeGlow {
            0%, 100% { r: 10; opacity: 0.8; }
            50% { r: 13; opacity: 1; }
        }

        .node-glow {
            animation: nodeGlow 2s ease-in-out infinite;
        }

        @keyframes lossDrop {
            0% { stroke-dashoffset: 600; }
            100% { stroke-dashoffset: 0; }
        }

        .loss-curve {
            animation: lossDrop 4s ease-out infinite;
        }

        @keyframes ballRoll {
            0% { transform: translate(80px, 30px); }
            30% { transform: translate(200px, 90px); }
            60% { transform: translate(320px, 50px); }
            100% { transform: translate(420px, 130px); }
        }

        .loss-ball {
            animation: ballRoll 4s ease-out infinite;
        }

        @keyframes convSlide {
            0%, 100% { opacity: 0.6; }
            50% { opacity: 1; }
        }

        .conv-kernel {
            animation: convSlide 1.5s ease-in-out infinite;
        }

        @keyframes gateOpen {
            0%, 100% { opacity: 0.5; }
            50% { opacity: 1; }
        }

        .gate-active {
            animation: gateOpen 2s ease-in-out infinite;
        }

        @keyframes ganLoop {
            0% { stroke-dashoffset: 80; }
            100% { stroke-dashoffset: 0; }
        }

        .gan-loop-line {
            stroke-dasharray: 6, 4;
            animation: ganLoop 1.5s linear infinite;
        }

        @keyframes qkvHighlight {
            0%, 100% { fill-opacity: 0.6; }
            50% { fill-opacity: 1; }
        }

        .qkv-highlight {
            animation: qkvHighlight 2s ease-in-out infinite;
        }

        @keyframes attnHeat {
            0%, 100% { opacity: 0.4; }
            50% { opacity: 0.9; }
        }

        .attn-heat {
            animation: attnHeat 1.5s ease-in-out infinite;
        }

        @keyframes residualPulse {
            0%, 100% { stroke-dashoffset: 0; }
            50% { stroke-dashoffset: 10; }
        }

        .residual-line {
            stroke-dasharray: 8, 4;
            animation: residualPulse 1s linear infinite;
        }

        @keyframes skipBounce {
            0%, 100% { transform: translateY(0); }
            50% { transform: translateY(-3px); }
        }

        .skip-bounce {
            animation: skipBounce 1.5s ease-in-out infinite;
        }

        /* ==========================================
           可视化动画（LLM 特定）
           ========================================== */
        @keyframes gateRouting {
            0%, 100% { fill-opacity: 0.4; }
            50% { fill-opacity: 1; }
        }

        .gate-routing {
            animation: gateRouting 1.5s ease-in-out infinite;
        }

        @keyframes expertActive {
            0%, 100% { stroke-width: 1.5; }
            50% { stroke-width: 3; }
        }

        .expert-active {
            animation: expertActive 2s ease-in-out infinite;
        }
    
