        /*
         * Unit convention for this portfolio:
         * - rem: typography, component spacing, button/control size, layout padding.
         * - px: 1px borders, SVG/logo dimensions, image/canvas constraints, exact visual offsets.
         * Keep new layout work rem-first; use px only when the design needs pixel precision.
         */

        /* === 跨页面切换：快照瞬时替换，无淡入淡出 === */
        @media (prefers-reduced-motion: no-preference) {
            ::view-transition-old(root),
            ::view-transition-new(root) {
                animation: none;
                mix-blend-mode: normal;
            }
        }

        * { margin: 0; padding: 0; box-sizing: border-box; }

        html {
            overflow-y: scroll;
            scroll-behavior: smooth;
        }
        body {
            width: 100vw;
            font-family: var(--font-sans);
            background: var(--bg);
            color: var(--fg-1);
            overflow-x: hidden;
            -webkit-font-smoothing: antialiased;
            transition: opacity var(--dur-fast) ease, transform var(--dur-fast) var(--ease-out);
        }
        /* === 主内容 === */
        .main-content {
            position: relative;
            z-index: 10;
            opacity: 1;
        }
        .main-content.show {
            opacity: 1; transform: none;
        }

        /* === 页 === */
        .page {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: flex-start;
            padding-top: var(--space-8);
            padding-bottom: var(--space-8);
            min-height: auto;
        }
        /* 视口外的整屏段落跳过初始渲染，滚动到时再渲染，缩短首屏完成时间 */
        #page-writes, #page-exp, #page-tools, #page-connect {
            content-visibility: auto;
            contain-intrinsic-size: auto 900px;
        }
        #page-connect {
            min-height: auto;
            padding-bottom: var(--space-7);
        }
        #page-connect .page-inner {
            min-height: auto;
            padding-bottom: 0;
        }
        #page-hero,
        #page-exp,
        #page-ai,
        #page-writes,
        #page-tools,
        #page-connect {
            scroll-margin-top: 80px;
        }
        #page-hero {
            min-height: auto;
            padding-top: calc(var(--nav-height) + var(--space-5));
            padding-bottom: var(--space-6);
        }
        .page-inner {
            max-width: 1200px;
            width: 100%;
            padding: var(--space-5) var(--space-5);
            display: flex;
            flex-direction: column;
            align-items: center;
        }

        .side-toc {
            position: fixed;
            right: var(--space-5);
            top: 50%;
            z-index: 120;
            width: 32px;
            padding: var(--space-2) var(--space-2);
            border-radius: var(--radius-lg);
            background: rgba(255,255,255,0.025);
            border: 1px solid rgba(255,255,255,0.1);
            box-shadow: 0 16px 60px rgba(0,0,0,0);
            backdrop-filter: blur(18px);
            -webkit-backdrop-filter: blur(18px);
            transform: translateY(-50%);
            transition: width var(--dur-fast) var(--ease-out), background var(--dur-fast), border-color var(--dur-fast), box-shadow var(--dur-fast);
        }
        .side-toc:hover,
        .side-toc:focus-within,
        .side-toc.is-expanded {
            width: 104px;
            background: rgba(255,255,255,0.07);
            border-color: rgba(255,255,255,0.24);
            box-shadow: 0 16px 60px rgba(0,0,0,0.22), inset 0 1px 0 rgba(255,255,255,0.08);
        }
        .side-toc-list {
            display: flex;
            flex-direction: column;
            gap: var(--space-2);
        }
        .side-toc-link {
            display: grid;
            grid-template-columns: max-content 16px;
            justify-content: end;
            align-items: center;
            column-gap: var(--space-1);
            min-height: 24px;
            color: var(--fg-3);
            font-size: var(--fs-caption);
            font-weight: var(--fw-medium);
            letter-spacing: 0;
            text-decoration: none;
            outline: none;
        }
        .side-toc-link:focus-visible {
            color: var(--fg-1);
            outline: 1px solid var(--accent);
            outline-offset: 2px;
            border-radius: var(--radius-sm);
        }
        .side-toc-label {
            opacity: 0;
            overflow: hidden;
            max-width: 0;
            transform: translateX(8px);
            transition: opacity 0.16s, max-width var(--dur-fast), transform var(--dur-fast), color var(--dur-fast);
            white-space: nowrap;
        }
        .side-toc:hover .side-toc-label,
        .side-toc:focus-within .side-toc-label,
        .side-toc.is-expanded .side-toc-label {
            opacity: 1;
            max-width: 64px;
            transform: translateX(0);
        }
        .side-toc-marker {
            display: flex;
            justify-content: center;
            align-items: center;
            width: 16px;
            height: 24px;
        }
        .side-toc-dot {
            width: 10px;
            height: 2px;
            border-radius: 999px;
            background: rgba(255,255,255,0.34);
            transition: width var(--dur-fast) var(--ease-out), height var(--dur-fast), background var(--dur-fast), box-shadow var(--dur-fast);
        }
        .side-toc-link:hover,
        .side-toc-link.active { color: var(--fg-1); }
        .side-toc-link:hover .side-toc-dot {
            background: var(--fg-1);
            box-shadow: 0 0 12px rgba(255,255,255,0.24);
        }
        .side-toc-link.active .side-toc-dot {
            width: 18px;
            height: 3px;
            background: var(--accent);
            box-shadow: 0 0 16px rgba(var(--accent-rgb),0.4);
        }
        .side-toc-link.active .side-toc-label {
            color: var(--fg-1);
        }

        /* === Hero 单栏居中布局 === */
        .hero-single {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: var(--space-7);
            width: 100%;
            max-width: 800px;
            margin: 0 auto;
        }
        .hero-desc { max-width: 680px; margin: calc(-1 * var(--space-4)) auto 0; color: var(--fg-3); font-size: var(--fs-body); line-height: var(--lh-normal); text-align: center; }
        .hero-actions { display: flex; justify-content: center; flex-wrap: wrap; gap: var(--space-3); margin-top: calc(-1 * var(--space-3)); }

        /* === Hero 定位胶囊 === */
        .hero-badge {
            display: inline-flex;
            align-items: center;
            gap: var(--space-2);
            padding: var(--space-2) var(--space-4);
            font-size: var(--fs-caption);
            font-weight: var(--fw-regular);
            color: var(--fg-1);
            background: rgba(var(--accent-rgb), 0.05);
            border: 1px solid rgba(var(--accent-rgb), 0.25);
            border-radius: var(--radius-pill);
            transition: all var(--dur-base) var(--ease-out);
        }
        .hero-badge:hover {
            background: rgba(var(--accent-rgb), 0.08);
            border-color: rgba(var(--accent-rgb), 0.35);
        }
        .hero-badge::before {
            content: '';
            width: 6px; height: 6px;
            border-radius: 50%;
            background: var(--accent);
            animation: pulseDot 2s infinite;
        }
        @keyframes pulseDot {
            0% { box-shadow: 0 0 rgba(var(--accent-rgb),0.6); }
            70% { box-shadow: 0 0 0 9px transparent; }
            to { box-shadow: 0 0 0 0 transparent; }
        }

        /* === Hero 标题 === */
        .hero-title {
            font-size: var(--fs-display);
            font-weight: var(--fw-bold);
            line-height: var(--lh-tight);
            letter-spacing: var(--tracking-tight);
        }
        .hero-title .grad { color: var(--accent); }
        .hero-title .white {
            color: var(--fg-1);
        }

        /* === Hero 标题 - 侯欢欢错位底色块 (Mercury 风格) === */
        .hero-title-name-wrap {
            position: relative;
            display: inline-block;
        }
        .hero-title-name.highlight {
            position: relative;
            z-index: 1;
            font-family: var(--font-display);
            font-size: var(--fs-display);
            font-weight: var(--fw-bold);
            letter-spacing: var(--tracking-normal);
            line-height: var(--lh-tight);
            color: #041314;
            padding: 0 var(--space-1);
        }
        .hero-title-name.highlight .bg-tl,
        .hero-title-name.highlight .bg-br {
            position: absolute;
            background: var(--accent);
            border-radius: var(--radius-sm);
            height: 88%;
            width: 84%;
            pointer-events: none;
            z-index: -1;
        }
        .hero-title-name.highlight .bg-tl {
            top: 0;
            left: 0;
        }
        .hero-title-name.highlight .bg-br {
            right: 0;
            bottom: 0;
        }

        /* === Hero 简历按钮 === */
        /* 几何（内边距 / 高度 / 字号）由 shared.css 的 body .hero-cta 统一控制（特异性更高），此处只留外观与布局 */
        .hero-cta {
            display: inline-flex;
            align-items: center;
            gap: var(--space-2);
            font-weight: var(--fw-semibold);
            background: rgba(255, 255, 255, 0.92);
            border: none;
            border-radius: var(--radius-pill);
            text-decoration: none;
            transition: all var(--dur-base) var(--ease-out);
            font-family: var(--font-sans);
            cursor: pointer;
        }
        /* 首屏主 CTA：向下箭头，点击滚到 AI 实践 */
        .hero-cta--down .hero-cta-icon::before {
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M12 5v13M6 12l6 6 6-6' stroke='%23fff' stroke-width='2.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
        }
        .data-cards {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: var(--space-5);
            width: min(45rem, 85vw);
            margin: var(--space-8) auto 0;
        }
        .data-card {
            background: var(--bg-elev);
            border: 1px solid var(--border);
            border-radius: var(--radius-lg);
            padding: var(--space-6) var(--space-5);
            text-align: center;
            transition: all var(--dur-base) var(--ease-out);
            position: relative;
            overflow: hidden;
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: var(--space-3);
            text-decoration: none;
            color: inherit;
            cursor: default;
        }
        a.data-card {
            cursor: pointer;
        }
        .data-card::before {
            content: '';
            position: absolute; top: 0; left: 0; right: 0; height: 1px;
            background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
        }
        a.data-card:hover {
            background: rgba(255,255,255,0.04);
            border-color: rgba(var(--accent-rgb), 0.42);
            transform: translateY(-2px);
        }
        .data-num {
            font-size: var(--fs-data);
            font-weight: var(--fw-semibold);
            font-family: var(--font-display);
            background: linear-gradient(135deg, var(--accent), #fff);
            -webkit-background-clip: text;
            background-clip: text;
            -webkit-text-fill-color: transparent;
            display: inline-block;
            line-height: 1;
            letter-spacing: var(--tracking-tight);
        }
        .data-num sup {
            font-size: 0.38em;
            vertical-align: super;
            -webkit-text-fill-color: transparent;
            background: linear-gradient(135deg, var(--accent), #fff);
            -webkit-background-clip: text;
            background-clip: text;
            margin-left: 1px;
            line-height: 1;
            display: inline;
            font-family: var(--font-sans);
            font-weight: var(--fw-medium);
        }
        .data-label {
            font-size: var(--fs-body);
            color: var(--fg-2);
            font-weight: var(--fw-medium);
        }
        .data-label-en {
            font-size: var(--fs-micro);
            color: var(--fg-4);
            font-family: var(--font-mono);
            opacity: 0.5;
        }

        /* === 板块标题 === */
        .section-keyword {
            font-size: var(--fs-body);
            font-weight: var(--fw-regular);
            color: var(--accent);
            letter-spacing: 0.1em;
            text-transform: uppercase;
            margin-bottom: var(--space-3);
        }
        .section-title {
            font-size: var(--fs-h2);
            font-weight: var(--fw-medium);
            letter-spacing: var(--tracking-tight);
            color: var(--fg-1);
            margin-bottom: var(--space-3);
            line-height: var(--lh-snug);
        }
        .section-interpretation {
            font-size: var(--fs-body);
            font-weight: var(--fw-regular);
            color: var(--fg-3);
            line-height: var(--lh-normal);
            max-width: 40rem;
        }

        /* === 相框风格 - "好奇的产物"图片区域 === */
        /* 2026-09-24 连漪：相框改 16:9，与流程图/轮播短片画幅一致；相框图（ai-projects/相框图.webp，
           原图 3008×1712）作为底图 cover 铺满、位置不动，流程图按 52px 内缩居中压在其上，
           四周留出一圈蓝天＝「相框图比流程图大出一圈」。 */
        .ai-frame {
            position: relative;
            width: 100%;
            aspect-ratio: 16 / 9;
            flex-shrink: 0;
            border-radius: 1.125rem;
            overflow: hidden;
            background: #0d1117;
        }
        .ai-frame-bg {
            position: absolute;
            inset: 0;
            background-image: url('ai-projects/相框图.webp');
            background-size: cover;
            background-position: center;
            background-repeat: no-repeat;
            z-index: 1;
        }
        .ai-frame-viewport {
            position: absolute;
            inset: 0;
            z-index: 2;
            overflow: hidden;
        }
        .ai-frame-viewport img {
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
            max-width: calc(100% - 52px);
            max-height: calc(100% - 52px);
            width: auto;
            height: auto;
            object-fit: contain;
            display: block;
            opacity: 1;
            border-radius: 0.75rem;
            transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1);
        }
        .ai-frame-viewport img.push-out-up {
            transform: translate(-50%, calc(-50% - 100%));
            opacity: 0;
        }
        .ai-frame-viewport img.push-in-down {
            transform: translate(-50%, calc(-50% + 100%));
            opacity: 0;
        }
        .ai-frame-viewport img.push-visible {
            transform: translate(-50%, -50%);
            opacity: 1;
        }
        .ai-frame::after {
            content: '';
            position: absolute;
            inset: 0;
            border-radius: 1.125rem;
            z-index: 10;
            pointer-events: none;
            transition: border-color 0.3s;
        }
        .ai-frame:hover::after {
            border-color: rgba(var(--accent-fill-rgb), 0.2);
        }

        .ai-showcase {
            display: flex;
            justify-content: space-between;
            align-items: flex-end;
            margin-top: var(--space-3);
            width: 100%;
            flex-shrink: 0;
            align-self: flex-start;
            position: relative;
        }
        .ai-showcase-left {
            width: 400px;
            flex-shrink: 0;
            display: flex;
            flex-direction: column;
        }
        .ai-showcase-right {
            width: min(43rem, calc(100% - 26rem));
            flex-shrink: 0;
            display: flex;
            align-items: flex-start;
        }
        .ai-showcase-keyword {
            font-size: var(--fs-body);
            font-weight: var(--fw-regular);
            color: var(--accent);
            letter-spacing: 0.1em;
            text-transform: uppercase;
            margin-bottom: var(--space-2);
        }
        .ai-section-header {
            display: flex;
            flex-direction: column;
            gap: var(--space-1);
            margin-bottom: var(--space-7);
        }
        .ai-section-header .ai-subtitle {
            font-size: var(--fs-body);
            font-weight: var(--fw-regular);
            color: var(--fg-3);
            line-height: var(--lh-snug);
        }
        .ai-project-list {
            list-style: none;
            padding: 0;
            margin: 0;
            display: flex;
            flex-direction: column;
            gap: var(--space-6);
            position: relative;
            cursor: pointer;
        }
        .ai-project-list > li { display: contents; }
        .ai-project-list::after {
            content: '';
            position: absolute;
            left: 0;
            top: 0;
            bottom: 0;
            width: 1px;
            background: rgba(255,255,255,0.18);
        }
        .ai-project-item {
            position: relative;
            display: flex;
            flex-direction: column;
            gap: var(--space-1);
            padding: 0 0 0 var(--space-5);
            border-radius: var(--radius-md);
            cursor: pointer;
            text-decoration: none;
            /* 显式色值：避免移动端 active 态 color: inherit 吃到浏览器默认链接色
               （未访问纯蓝 / 访问后紫红），也和品牌蓝不一致。 */
            color: var(--fg-1);
            -webkit-tap-highlight-color: transparent;
            transition: background-color 0.2s ease;
        }
        .ai-item-header {
            display: flex;
            align-items: center;
            gap: var(--space-2);
        }
        .ai-project-item:hover .ai-item-header .ai-item-title {
            color: var(--accent) !important;
        }
        .ai-project-item:hover .ai-item-desc {
            color: var(--fg-3) !important;
        }
        .ai-project-item.active::before {
            content: '';
            position: absolute;
            left: 0;
            top: 0;
            bottom: 4px;
            width: 2px;
            height: auto;
            background: var(--accent);
            border-radius: 1px;
            box-shadow: 0 0 6px rgba(var(--accent-rgb),0.4);
        }
        .ai-project-item .ai-item-icon {
            flex-shrink: 0;
            width: 24px;
            height: 24px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 16px;
            transition: color var(--dur-fast);
            color: var(--fg-1);
        }
        /* fill-on-hover: SVG 局部填色，跟随 hover / active 变蓝 */
        .ai-project-item .ai-item-icon .fill-on-hover {
            fill: transparent;
            transition: fill var(--dur-fast);
        }
        .ai-project-item:hover .ai-item-icon {
            color: var(--accent);
        }
        /* 2026-09-03 连漪：作品集 AI 实践图标 hover / active 仍触发填充（蓝），保持选中态视觉提示；
           仅打印版简历的 AI 实践图标改为默认态（只保留线条、不填充），改动在 resume-v2.html 的 .print-doc 作用域内。 */
        .ai-project-item:hover .ai-item-icon .fill-on-hover,
        .ai-project-item.active .ai-item-icon .fill-on-hover {
            fill: var(--accent);
        }

        /* 时钟时针：hover / active 时保持白色 */
        .ai-project-item:hover .ai-item-icon .stroke-white-on-hover,
        .ai-project-item.active .ai-item-icon .stroke-white-on-hover {
            stroke: var(--fg-1);
        }
        .ai-project-item.active .ai-item-icon {
            color: var(--accent);
        }
        .ai-item-header .ai-item-title {
            font-size: var(--fs-h3);
            font-weight: var(--fw-medium);
            color: var(--fg-1);
            line-height: var(--lh-snug);
            transition: color var(--dur-fast);
        }
        .ai-project-item.active .ai-item-header .ai-item-title {
            color: var(--accent) !important;
        }
        .ai-project-item .ai-item-desc {
            font-size: var(--fs-body);
            line-height: var(--lh-normal);
            /* 非激活态保持可读下限（≥4.5:1），层级差异交给激活态变亮与左侧蓝条 */
            color: rgba(255, 255, 255, 0.55);
            transition: color var(--dur-fast);
            display: -webkit-box;
            -webkit-line-clamp: 3;
            -webkit-box-orient: vertical;
            overflow: hidden;
            padding-left: 0;
            max-width: none;
            word-break: break-word;
            text-align: justify;
            text-align-last: left;
        }
        .ai-project-item.active .ai-item-desc {
            color: var(--fg-2) !important;
        }
        .ai-project-item .ai-item-desc strong {
            color: inherit;
            background: none;
            -webkit-background-clip: initial;
            background-clip: initial;
            -webkit-text-fill-color: currentColor;
            font-weight: inherit;
            transition: color var(--dur-fast), font-weight var(--dur-fast);
        }
        .ai-project-item:hover .ai-item-desc strong,
        .ai-project-item.active .ai-item-desc strong {
            color: var(--em-color);
            font-weight: var(--em-weight);
        }
.exp-card .exp-card-desc strong {
    color: inherit;
    background: none;
    -webkit-background-clip: initial;
    background-clip: initial;
    -webkit-text-fill-color: currentColor;
    font-weight: inherit;
    transition: color var(--dur-fast), font-weight var(--dur-fast);
}

        /* === 走过的路（横向卡片轮播） === */
        .exp-section {
            display: flex;
            flex-direction: column;
            gap: var(--space-3);
            width: 100%;
            max-width: 1200px;
            margin: -20px 0 0;
            position: relative;
        }
        .exp-header-row {
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        .exp-header {
            flex-shrink: 0;
            width: 420px;
            display: flex;
            flex-direction: column;
            gap: var(--space-3);
            padding-top: var(--space-2);
        }
        .exp-header .exp-subtitle {
            font-size: var(--fs-body);
            color: var(--fg-3);
            line-height: var(--lh-snug);
        }
        .exp-arrows {
            flex-shrink: 0;
            display: flex;
            gap: var(--space-3);
            align-items: center;
        }
        .exp-arrow {
            width: 48px;
            height: 48px;
            border-radius: 50%;
            border: none;
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            transition: all var(--dur-fast) ease;
            color: #fff;
            flex-shrink: 0;
        }
        .exp-arrow.enabled {
            background: var(--accent);
        }
        .exp-arrow.enabled:hover {
            background: var(--accent-strong);
            transform: scale(1.05);
        }
        .exp-arrow.disabled {
            background: transparent;
            border: 1.5px solid rgba(255,255,255,0.2);
            color: rgba(255,255,255,0.2);
            cursor: default;
        }
        .exp-arrow svg {
            display: block;
        }
        .exp-card-row {
            position: relative;
            z-index: 10;
        }
        .exp-carousel-wrapper {
            position: relative;
            width: calc(100% + 80px);
            max-width: none;
            overflow: visible;
            cursor: grab;
            padding: var(--space-5) 0;
            box-sizing: border-box;
        }
        .exp-carousel-wrapper:active {
            cursor: grabbing;
        }
        .exp-carousel-track {
            display: flex;
            gap: var(--space-5);
            transition: transform 0.5s cubic-bezier(0.25, 0.1, 0.25, 1);
            will-change: transform;
        }
        .exp-carousel-track.dragging {
            transition: none;
            user-select: none;
            -webkit-user-select: none;
        }
        .exp-carousel-wrapper.dragging,
        .exp-carousel-wrapper.dragging .exp-card {
            cursor: grabbing;
        }
        .exp-card {
            flex: 0 0 336px;
            height: auto;
            min-height: 300px;
            display: flex;
            flex-direction: column;
            overflow: hidden;
            border-radius: var(--radius-md);
            border: 1px solid rgba(255,255,255,0.08);
            background: var(--bg-elev);
            transition: all var(--dur-base) var(--ease-out);
            cursor: pointer;
            text-decoration: none;
            color: inherit;
            position: relative;
        }
        /* 渐变边框（亮度已压低，避免刺眼） */
        .exp-card::before {
            content: '';
            position: absolute;
            inset: 0;
            border-radius: var(--radius-md);
            padding: 1px;
            background: linear-gradient(135deg, rgba(255,255,255,0.25), rgba(180,213,255,0.3));
            -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
            -webkit-mask-composite: xor;
            mask-composite: exclude;
            opacity: 0;
            transition: opacity var(--dur-base);
            pointer-events: none;
            z-index: 1;
        }
        .exp-card:hover::before {
            opacity: 1;
        }
        .exp-card:hover {
            box-shadow: 0 0 20px rgba(180,213,255,0.08);
            z-index: 10;
        }
        /* 拖动中关闭悬浮光晕，避免跟着鼠标跑 */
        .exp-carousel-wrapper.dragging .exp-card:hover {
            box-shadow: none;
        }
        .exp-carousel-wrapper.dragging .exp-card:hover::before {
            opacity: 0;
        }
        .exp-card .exp-img-wrap {
            position: relative;
            width: 100%;
            height: 224px;
            overflow: hidden;
            padding: var(--space-6) var(--space-6) 0;
            box-sizing: border-box;
            background: transparent;
        }
        .exp-card .exp-img-wrap img {
            width: 100%;
            height: 100%;
            object-fit: contain;
            display: block;
        }
        .exp-card .exp-card-body {
            padding: var(--space-5) var(--space-5) var(--space-5);
            display: flex;
            gap: var(--space-2);
            flex-direction: column;
            flex: 1 1;
            text-align: center;
        }
        .exp-card .exp-card-title {
            font-size: var(--fs-h3);
            line-height: var(--lh-snug);
            font-weight: var(--fw-medium);
            color: var(--fg-1);
            transition: color var(--dur-fast);
        }
.exp-card .exp-card-role {
    font-size: var(--fs-caption);
    line-height: var(--lh-snug);
    color: var(--fg-4);
    transition: color var(--dur-fast), font-weight var(--dur-fast);
}
        .exp-card .exp-card-desc {
            font-size: var(--fs-body);
            line-height: var(--lh-snug);
            color: var(--fg-2);
            text-align: justify;
            transition: color var(--dur-fast);
        }
        .exp-card .exp-card-time {
            font-family: var(--font-sans);
            font-size: var(--fs-caption);
            color: var(--fg-4);
            letter-spacing: var(--tracking-wide);
            margin-bottom: var(--space-1);
            transition: color var(--dur-fast);
        }

        /* 走过的路：悬浮 / 选中态，关键字与关键数据应用强调样式（默认态保持不强调） */
        .exp-card:hover .exp-card-role,
        .exp-card.active .exp-card-role,
        .exp-card:focus-within .exp-card-role,
        .exp-card:hover .exp-card-desc strong,
        .exp-card.active .exp-card-desc strong,
        .exp-card:focus-within .exp-card-desc strong {
            color: var(--em-color);
            font-weight: var(--em-weight);
        }

        .exp-dots {
            display: none;
            justify-content: center;
            gap: var(--space-2);
            margin-top: var(--space-5);
        }
        .exp-dot {
            width: 8px;
            height: 8px;
            border-radius: 50%;
            border: none;
            background: rgba(255,255,255,0.2);
            cursor: pointer;
            padding: 0;
            transition: all var(--dur-base) ease;
        }
        .exp-dot:hover {
            background: rgba(255,255,255,0.35);
        }
        .exp-dot.active {
            width: 8px;
            border-radius: 4px;
            background: var(--fg-1);
        }

        /* === 精选文章静态网格 === */
        .article-marquee {
            width: min(1200px, 100%);
        }
        .article-marquee-track {
            display: grid;
            grid-template-columns: repeat(3, minmax(0, 1fr));
            gap: var(--space-5);
        }
        .article-marquee-wrapper {
            position: relative;
            padding: 0;
        }
        .article-marquee-wrapper .article-marquee-card:hover {
            transform: translateY(-2px);
            border-color: rgba(var(--accent-rgb), 0.42);
            background: rgba(255,255,255,0.04);
        }
        .article-marquee-card {
            position: relative;
            min-width: 0;
            background: var(--bg-elev);
            border: 1px solid var(--border);
            border-radius: var(--radius-lg);
            text-decoration: none;
            color: inherit;
            display: flex;
            flex-direction: column;
            transition: all var(--dur-base) var(--ease-out);
            overflow: hidden;
        }
        .article-marquee-card .card-cover {
            width: 100%;
            aspect-ratio: 900 / 383;
            object-fit: cover;
            display: block;
            background: var(--bg-elev);
            transition: filter var(--dur-base);
            border-radius: var(--radius-lg) var(--radius-lg) 0 0;
        }
        .article-marquee-card:hover .card-cover {
            filter: brightness(1.1);
        }
        .article-marquee-card .card-body {
            padding: var(--space-4) var(--space-3) var(--space-3);
            flex: 1;
            display: flex;
            flex-direction: column;
            gap: var(--space-2);
        }
        .article-marquee-card .card-title {
            font-size: var(--fs-body);
            font-weight: var(--fw-medium);
            line-height: var(--lh-normal);
            color: var(--fg-1);
            display: -webkit-box;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
            overflow: hidden;
        }
        .article-marquee-card:hover .card-title {
            color: var(--accent);
        }
        .article-marquee-card .card-link-text {
            font-size: var(--fs-caption);
            color: var(--accent);
            opacity: 0;
            transition: opacity var(--dur-base);
            margin-top: auto;
        }
        .article-marquee-card:hover .card-link-text {
            opacity: 1;
        }
        @media (max-width: 900px) {
            .article-marquee-track { grid-template-columns: repeat(2, minmax(0, 1fr)); }
        }
        @media (max-width: 600px) {
            /* 手机端 2 列：5 篇精选 + 公众号卡 = 3 行，减少纵向滑动 */
            .article-marquee-track {
                grid-template-columns: repeat(2, minmax(0, 1fr));
                gap: var(--space-3);
            }
            .article-marquee-card .card-body {
                position: relative;
                padding: var(--space-3) var(--space-2) calc(var(--space-3) + 18px);
                gap: var(--space-1);
            }
            .article-marquee-card .card-link-text { display: none; }
            /* 手机端没有 hover，在标题下方给一个常驻小箭头；不压封面文字 */
            a.article-marquee-card .card-body::after {
                content: '→';
                position: absolute;
                right: 8px;
                bottom: 6px;
                z-index: 2;
                width: 22px;
                height: 22px;
                display: flex;
                align-items: center;
                justify-content: center;
                border-radius: 50%;
                border: 1px solid rgba(255, 255, 255, 0.16);
                background: rgba(5, 5, 16, 0.72);
                color: var(--fg-1);
                font-size: 13px;
                line-height: 1;
                pointer-events: none;
            }
            .wechat-inner {
                padding: var(--space-4) var(--space-2);
                gap: var(--space-3);
            }
            .wechat-inner .wechat-qr {
                width: 76px;
                height: 76px;
            }
        }

        /* === 公众号关注卡（内容写作第 9 格，文章卡同尺寸） === */
        .wechat-card {
            justify-content: center;
        }
        .wechat-inner {
            width: 100%;
            height: 100%;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: var(--space-4);
            padding: var(--space-5) var(--space-4);
        }
        .wechat-inner .wechat-qr {
            width: 88px;
            height: 88px;
            border-radius: var(--radius-md);
            background: #ffffff;
            object-fit: contain;
            flex-shrink: 0;
        }
        .wechat-pill {
            display: inline-flex;
            align-items: center;
            gap: var(--space-2);
            padding: var(--space-2) var(--space-3);
            border: 1.5px solid rgba(var(--accent-rgb), 0.6);
            border-radius: var(--radius-pill);
            background: rgba(var(--accent-rgb), 0.08);
            width: fit-content;
            flex-shrink: 0;
        }
        .wechat-pill svg {
            width: 12px;
            height: 12px;
            color: var(--accent);
            flex-shrink: 0;
        }
        .wechat-pill span {
            font-size: var(--fs-caption);
            color: var(--fg-1);
            line-height: 1;
            white-space: nowrap;
        }
        .wechat-card:hover .wechat-pill {
            border-color: rgba(var(--accent-rgb), 0.9);
            background: rgba(var(--accent-rgb), 0.14);
        }
        @media (max-width: 600px) {
            /* 两列时把二维码卡压到和文章卡同一行高；72px 仍可扫 */
            .wechat-inner {
                padding: var(--space-3) var(--space-2);
                gap: var(--space-2);
            }
            .wechat-inner .wechat-qr {
                width: 72px;
                height: 72px;
            }
        }


        /* === 板块标题居中通用 === */
        .section-center {
            text-align: center;
        }

        /* === 公众号署名（编辑式刊头） === */
        .writes-byline {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 14px;
        }
        .writes-byline-divider {
            width: 36px;
            height: 1px;
            background: var(--accent);
        }
        .writes-byline-text {
            display: inline-flex;
            align-items: center;
            gap: 10px;
            font-size: var(--fs-body);
            white-space: nowrap;
        }
        .writes-byline-icon {
            width: 15px;
            height: 15px;
            flex-shrink: 0;
            color: #fff;
        }
        .writes-byline-name {
            color: rgba(255, 255, 255, 0.92);
            font-weight: var(--fw-medium);
        }
        .writes-byline-sep {
            color: var(--fg-4);
        }
        .writes-byline-count {
            color: var(--fg-3);
            font-weight: var(--fw-regular);
        }

        /* === 响应式 === */
        @media (max-width: 1024px) {
            .article-grid { grid-template-columns: repeat(2, 1fr); }
        }
        @media (max-width: 768px) {
            .page {
                padding-top: 1.75rem;
                padding-bottom: 1.75rem;
            }
            #page-hero {
                min-height: auto;
                padding-top: 4rem;
                padding-bottom: 0.75rem;
            }
            #page-writes {
                padding-top: 2rem;
            }
            #page-connect {
                padding-bottom: 1.5rem;
            }
            .page-inner { padding: 14px 18px; }
            .marquee-banner { display: none; }
            .hero-badge {
                padding: 0.32rem 0.8rem;
                font-size: var(--fs-caption);
            }
            .hero-single { gap: 1.45rem; }
            .section-title {
                margin-bottom: var(--space-2);
            }
            .section-interpretation {
                font-size: var(--fs-body);
                line-height: var(--lh-normal);
            }
            .ai-showcase { flex-direction: column; gap: var(--space-6); }
            .ai-showcase-left { width: 100%; max-width: 480px; }
            .ai-showcase-right { width: 100%; }
            .ai-section-header {
                gap: var(--space-1);
                margin-bottom: var(--space-5);
            }
            .ai-section-header .ai-subtitle {
                font-size: var(--fs-body);
                line-height: var(--lh-normal);
            }
            .ai-frame {
                aspect-ratio: 16 / 11;
            }
            .ai-frame-viewport img {
                max-width: calc(100% - 32px);
                max-height: calc(100% - 32px);
            }
            .ai-project-list {
                gap: var(--space-4);
            }
            .ai-project-item {
                gap: var(--space-1);
                padding-left: var(--space-4);
            }
            .ai-item-header .ai-item-title {
                font-size: var(--fs-body);
                line-height: var(--lh-snug);
            }
            .ai-project-item .ai-item-desc {
                max-width: none;
                font-size: var(--fs-caption);
                line-height: var(--lh-normal);
            }
            .hero-title, .hero-subtitle, .hero-desc, .data-cards { text-align: center !important; }
            .article-grid { grid-template-columns: 1fr; max-width: 25rem; }
            .exp-timeline { max-width: 440px; }
            .exp-header-row { flex-direction: row; align-items: flex-start; gap: var(--space-4); }
            .exp-header { width: auto; flex: 1; min-width: 0; }
            .exp-header .exp-subtitle { font-size: var(--fs-body); line-height: var(--lh-normal); }
            .exp-carousel-wrapper {
                width: 100%;
                overflow-x: auto;
                overflow-y: visible;
                scroll-snap-type: x mandatory;
                -webkit-overflow-scrolling: touch;
                scrollbar-width: none;
            }
            .exp-carousel-wrapper::-webkit-scrollbar { display: none; }
            .exp-carousel-track {
                width: max-content;
                transform: none !important;
                transition: none !important;
            }
            .exp-card {
                flex: 0 0 17rem;
                min-height: 16rem;
                scroll-snap-align: start;
            }
            .exp-card .exp-img-wrap {
                height: 10.75rem;
                padding: var(--space-5) var(--space-5) 0;
            }
            .exp-card .exp-card-body {
                padding: var(--space-4);
                gap: var(--space-2);
            }
            .exp-card .exp-card-title { font-size: var(--fs-body); }
            .exp-card .exp-card-role,
            .exp-card .exp-card-desc { font-size: var(--fs-caption); line-height: var(--lh-normal); }
            .exp-arrows { margin-top: var(--space-1); gap: var(--space-2); }
            .exp-arrow { width: 40px; height: 40px; }
            .data-cards {
                grid-template-columns: repeat(3, minmax(0, 1fr));
                width: min(22rem, 92vw);
                gap: var(--space-2);
                margin-top: var(--space-4);
            }
            .data-card { padding: var(--space-4) var(--space-2); border-radius: var(--radius-md); }
            .data-num sup { font-size: 0.34em; }
            .data-label { font-size: var(--fs-caption); margin-bottom: 0; white-space: nowrap; }
            .side-toc { display: none; }
            .article-item .art-title { font-size: var(--fs-body); }
            .article-marquee-card .card-body {
                padding: var(--space-4) var(--space-3) var(--space-3);
            }
            .article-marquee-card .card-title {
                font-size: var(--fs-caption);
                line-height: var(--lh-snug);
                -webkit-line-clamp: 3;
            }
            .hero-cta { white-space: nowrap; }
            .tool-card-group {
                flex-direction: column;
                max-width: 25rem;
            }
            .tool-card {
                min-height: auto;
                padding: var(--space-5);
                gap: var(--space-3);
            }
            .tool-card-title { font-size: var(--fs-body); }
            .tool-card-desc {
                font-size: var(--fs-caption);
                line-height: var(--lh-normal);
            }
            .tool-grid-item {
                padding: var(--space-2) var(--space-1);
            }
            .tool-grid-item span {
                font-size: var(--fs-micro);
            }
            .connect-links {
                display: grid;
                grid-template-columns: repeat(2, 1fr);
                gap: var(--space-6) var(--space-4);
                justify-items: center;
                width: 100%;
                max-width: 280px;
            }
            .connect-icon {
                width: 48px;
                height: 48px;
            }
            .connect-icon svg {
                width: 22px;
                height: 22px;
            }
            .connect-label {
                font-size: var(--fs-caption);
            }
            .connect-email-line {
                display: block;
                grid-column: 1 / -1;
                margin-top: calc(-1 * var(--space-3));
                padding: var(--space-1) var(--space-2);
                border: 0;
                background: none;
                color: var(--fg-3);
                font-family: var(--font-mono);
                font-size: var(--fs-caption);
                letter-spacing: 0.02em;
                cursor: pointer;
            }
            .connect-email-line:active { color: var(--accent); }
            .connect-qr-popup {
                position: fixed;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%) scale(0.9);
                /* 移动端遮罩 z-index 199；弹层必须压在遮罩之上，否则补了点击也点不到 */
                z-index: 200;
            }
            .connect-wechat-trigger.qr-open .connect-qr-popup {
                transform: translate(-50%, -50%) scale(1);
            }
            .connect-wechat-trigger.qr-open::before {
                content: '';
                position: fixed;
                inset: 0;
                background: rgba(0,0,0,0.6);
                backdrop-filter: blur(4px);
                -webkit-backdrop-filter: blur(4px);
                z-index: 199;
            }
        }
        @media (hover: none) {
            .ai-project-item:hover .ai-item-header .ai-item-title,
            .ai-project-item:hover .ai-item-desc,
            .ai-project-item:hover .ai-item-icon {
                color: inherit !important;
            }
            /* 触屏上 hover 会粘在刚点过的卡上；active 必须压过 hover，保持品牌蓝 */
            .ai-project-item.active .ai-item-header .ai-item-title { color: var(--accent) !important; }
            .ai-project-item.active .ai-item-desc { color: var(--fg-2) !important; }
            .ai-project-item.active .ai-item-icon { color: var(--accent) !important; }
            .exp-card-row:hover .exp-card:not(:hover) {
                opacity: 1;
                filter: none;
                transform: none;
            }
            .exp-card:hover,
            .article-marquee-card:hover,
            .data-card:hover,
            .tool-card:hover,
            .connect-item:hover {
                transform: none;
                box-shadow: none;
            }
            .exp-card:hover::before,
            .tool-card:hover::after {
                opacity: 0;
            }
            .tool-grid-item:hover {
                background: transparent;
            }
            .connect-item:hover {
                color: var(--fg-4);
                transform: none;
            }
            .connect-item:hover .connect-icon {
                border-color: rgba(var(--accent-rgb),0.12);
                box-shadow: none;
                background: rgba(var(--accent-rgb),0.03);
            }
            .connect-item:hover .connect-icon svg {
                opacity: 0.75;
            }
            .connect-item:hover .connect-icon::after {
                animation: none;
                opacity: 0;
            }
            .connect-wechat-trigger:hover:not(.qr-open) .connect-qr-popup,
            .connect-email-trigger:hover .connect-email-tooltip {
                opacity: 0;
                visibility: hidden;
                pointer-events: none;
            }
        }
        @media (max-width: 480px) {
            .data-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
            .hero-title {
                display: flex;
                flex-direction: column;
                align-items: center;
                gap: var(--space-1);
                line-height: var(--lh-tight);
                text-align: center;
            }
            .hero-title-name.highlight {
                font-size: inherit;
                line-height: inherit;
            }
        }

        /* === 协作工具：2×2 卡片，每卡内一行 4 图标 === */
        .tool-card-group {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: var(--space-5);
            max-width: 1080px;
            width: 100%;
            margin: 0 auto;
        }
        .tool-card {
            min-width: 0;
            border-radius: var(--radius-lg);
            padding: var(--space-5);
            display: flex;
            flex-direction: column;
            gap: var(--space-5);
            position: relative;
            overflow: hidden;
            transition: all var(--dur-base) var(--ease-out);
            cursor: default;
            justify-content: space-between;
            /* 拟态半透基底（与内容写作/实习卡片一致：bg-elev，可见背景） */
            background: var(--bg-elev);
            border: 1px solid var(--border);
        }
        /* 顶部微高光 */
        .tool-card::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            height: 1px;
            background: linear-gradient(90deg, transparent, rgba(255,255,255,0.15), transparent);
            pointer-events: none;
            z-index: 1;
        }
        .tool-card::after {
            content: '';
            position: absolute;
            inset: 0;
            border-radius: var(--radius-lg);
            padding: 1px;
            background: linear-gradient(135deg, rgba(255,255,255,0.25), rgba(180,213,255,0.3));
            -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
            -webkit-mask-composite: xor;
            mask-composite: exclude;
            opacity: 0;
            transition: opacity var(--dur-base);
            pointer-events: none;
            z-index: 1;
        }
        .tool-card:hover {
            background: rgba(255, 255, 255, 0.04);
            border-color: transparent;
            box-shadow: var(--shadow-md), 0 0 20px rgba(var(--accent-rgb),0.08);
        }
        .tool-card:hover::after {
            opacity: 1;
        }

        /* 卡片内容 */
        .tool-card > * {
            position: relative;
            z-index: 2;
        }

        .tool-card-top {
            display: flex;
            flex-direction: column;
            gap: var(--space-1);
        }
        .tool-card-header-row {
            display: flex;
            align-items: center;
            gap: var(--space-2);
        }
        .tool-card-icon {
            width: 32px;
            height: 32px;
            display: flex;
            align-items: center;
            justify-content: center;
            color: hsla(0, 0%, 100%, 0.95);
        }
        .tool-card-icon svg {
            width: 22px;
            height: 22px;
            fill: none;
            stroke: currentColor;
            stroke-width: 1.5;
            stroke-linecap: round;
            stroke-linejoin: round;
        }
        /* 常用模型图标使用 logo/常用模型图标.svg 的 24px 线稿，与其他标题图标统一。 */
        .tool-card-icon svg.model-icon {
            width: 22px;
            height: 22px;
            fill: none;
            stroke: currentColor;
            display: none;
        }
        .tool-card-icon .model-icon-image {
            width: 22px;
            height: 22px;
            display: block;
            opacity: 0.95;
        }
        .tool-card-title {
            font-size: var(--fs-h3);
            font-weight: var(--fw-medium);
            color: var(--fg-1);
            line-height: var(--lh-snug);
            margin: 0;
        }
        .tool-card-desc {
            font-size: var(--fs-body);
            font-weight: var(--fw-regular);
            color: var(--fg-3);
            line-height: var(--lh-snug);
            margin: 0;
        }

        /* 工具卡内：4 个图标一行 */
        .tool-card-grid {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            column-gap: var(--space-4);
            row-gap: var(--space-2);
        }
        .tool-grid-item {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: var(--space-2);
            padding: 0;
            border-radius: var(--radius-md);
            min-width: 0;
        }
        .tool-grid-item img {
            width: 36px;
            height: 36px;
            object-fit: contain;
            display: block;
        }
        /* 深色/白底 logo 衬白底圆角方块（GPT-6、Typeless、DeepSeek、Seedream、飞书云文档） */
        /* 深色/白底 logo 衬白底圆角方块（GPT-6、Typeless、DeepSeek、Seedream、飞书） */
        .tool-grid-item img.has-bg {
            background: #fff;
            border-radius: 8px;
            padding: 2px;
            box-sizing: border-box;
        }
        .tool-grid-item img.opencode-logo { padding: 2px; border: 1px solid rgba(255,255,255,0.5); border-radius: 4px; background: rgba(255,255,255,0.06); }
        /* logo 尺寸统一（两族分开量）：
           带白底块的 → 以白底块外径为基准 = 36px（方盒即白块），再用 padding 反推块内主体 sqrt(w*h)=24px；
             GitHub 与 ChatGPT（亦用于「常用模型」的 GPT-6）两枚主体轮廓偏小，按「主体最大边 28px」放大，
             两枚填充率同为 77.8%（块内四周留白 4px），故视觉大小一致；其余五枚维持 sqrt(w*h)=24px 基准；
           不带白底块的 → 以 logo 主体为基准，padding 0 直接撑满 36px 方盒（主体最大边 34~36px）。
             Opus-5.5（claude-color.svg，满幅 24×24）归入本族：满幅方形 logo（Claude 彩色），深色背景上清晰可见，
             去白块后直接撑满 36px 方盒，与 Claude Code / 豆包 / Excel / Python 等同族成员并列。
           ⚠️ 满幅/圆形 logo 禁止按「墨迹面积」对齐 —— 面积等值会把直径压小约 1/4。曾按面积取 padding 6.5px，
              实测主体仅 22.3px，肉眼明显小于邻位（GPT 28.0 / DeepSeek 28.0 / Seedream 26.0）。
              满幅或圆形（如 Opus-5.5 / Claude 图标）一律按主体最大边对齐。 */
        .tool-grid-item img[src="logo/processed/gpt5.svg"] { padding: 0.57px; }
        .tool-grid-item img[src="logo/processed/deepseek.svg"] { padding: 0.66px; }
        .tool-grid-item img[src="logo/processed/MiniMax.svg"] { padding: 1.67px; }
        .tool-grid-item img[src="logo/processed/seed.svg"] { padding: 2.02px; }
        .tool-grid-item img[src="logo/processed/typeless.svg"] { padding: 2.63px; }
        .tool-grid-item img[src="logo/processed/feishu.png"] { padding: 1.19px; }
        .tool-grid-item img[src="logo/github-mark.svg"] { padding: 3.45px; }
        .tool-grid-item span {
            font-size: var(--fs-caption);
            font-weight: var(--fw-medium);
            color: var(--fg-2);
            letter-spacing: 0.02em;
            text-align: center;
            line-height: var(--lh-tight);
        }

        /* === 回到顶部按钮 === */
        .back-to-top {
            position: fixed;
            bottom: var(--space-6);
            right: var(--space-6);
            z-index: 200;
            width: 48px;
            height: 48px;
            border-radius: 50%;
            border: 1px solid rgba(255,255,255,0.14);
            background: rgba(8, 8, 7, 0.82);
            backdrop-filter: blur(18px);
            -webkit-backdrop-filter: blur(18px);
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            opacity: 0;
            transform: translateY(12px);
            transition: opacity var(--dur-base), transform var(--dur-base), background var(--dur-fast), border-color var(--dur-fast), box-shadow var(--dur-fast);
            pointer-events: none;
            color: var(--fg-1);
            box-shadow: 0 18px 60px rgba(0,0,0,0.34), 0 0 0 1px rgba(255,255,255,0.04) inset;
        }
        .back-to-top.visible {
            opacity: 1;
            transform: translateY(0);
            pointer-events: auto;
        }
        .back-to-top:hover {
            background: var(--accent);
            color: var(--fg-1);
            border-color: var(--accent);
            box-shadow: 0 18px 60px rgba(0,0,0,0.38), 0 0 0 8px rgba(var(--accent-rgb),0.12);
        }
        .back-to-top svg {
            display: block;
            width: 22px;
            height: 22px;
        }
        @media (max-width: 768px) {
            .tool-card-group {
                grid-template-columns: 1fr;
                max-width: 25rem;
            }
            .tool-card {
                min-height: 0;
            }
            .back-to-top {
                right: var(--space-5);
                bottom: calc(var(--space-6) + env(safe-area-inset-bottom, 0px));
                width: 48px;
                height: 48px;
            }
        }
        #page-tools .section-title {
            margin-bottom: var(--space-3);
        }
        #page-tools .section-keyword {
            margin-bottom: var(--space-2);
        }
        #page-tools .section-interpretation {
            margin-bottom: var(--space-7);
        }

        /* === 板块背景色 === */
        #page-ai, #page-exp, #page-tools {
            background: transparent;
        }
        #page-writes {
            background: transparent;
        }
        #page-exp {
            padding-top: 4.5rem;
        }
        #page-writes .article-card {
            background: rgba(5,5,16,0.4);
            border-color: #2a2926;
        }
        #page-tools {
            background: transparent;
            padding-top: 3.5rem;
            padding-bottom: 3.5rem;
        }

        /* === 联系我页面 === */
        .connect-section {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: var(--space-8);
            padding-top: var(--space-8);
            padding-bottom: var(--space-6);
        }
        .connect-links {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: var(--space-7);
        }
        .connect-item {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: var(--space-3);
            color: var(--fg-4);
            text-decoration: none;
            cursor: pointer;
            transition: color var(--dur-base) ease, transform var(--dur-base) ease;
            position: relative;
        }
        .connect-item:hover {
            color: var(--accent);
            transform: translateY(-4px);
        }
        .connect-item:focus-visible {
            outline: 2px solid var(--accent);
            outline-offset: 6px;
            border-radius: var(--radius-sm);
        }
        .connect-icon {
            position: relative;
            width: 56px;
            height: 56px;
            display: flex;
            align-items: center;
            justify-content: center;
            border-radius: 50%;
            border: 1px solid rgba(var(--accent-rgb),0.12);
            background: rgba(var(--accent-rgb),0.03);
            transition: border-color var(--dur-base) ease, box-shadow var(--dur-base) ease, background var(--dur-base) ease;
        }
        /* 联系图标 hover 涟漪（对齐 stormzhang：单圈外扩淡出，1.5s 一下） */
        .connect-icon::after {
            content: '';
            position: absolute;
            inset: 0;
            border-radius: 50%;
            border: 1px solid transparent;
            pointer-events: none;
        }
        @keyframes iconRipple {
            0% { inset: 0; border-color: rgba(var(--accent-rgb), 0.3); opacity: 1; }
            100% { inset: -14px; border-color: rgba(var(--accent-rgb), 0); opacity: 0; }
        }
        .connect-item:hover .connect-icon::after {
            animation: iconRipple 1.5s ease-out infinite;
        }
        .connect-icon svg {
            opacity: 0.75;
            transition: opacity var(--dur-base) ease;
        }
        .connect-item:hover .connect-icon {
            border-color: rgba(var(--accent-rgb),0.35);
            box-shadow: 0 0 20px rgba(var(--accent-rgb),0.15);
            background: rgba(var(--accent-rgb),0.06);
        }
        .connect-item:hover .connect-icon svg {
            opacity: 1;
        }
        .connect-label {
            font-size: var(--fs-caption);
            letter-spacing: var(--tracking-wide);
            white-space: nowrap;
        }
        /* 移动端直接显示完整邮箱，桌面端仍走 hover tooltip */
        .connect-email-line { display: none; }
        /* 邮箱 tooltip */
        .connect-email-tooltip {
            position: absolute;
            top: calc(100% + var(--space-3));
            left: 50%;
            transform: translateX(-50%) translateY(-6px);
            padding: var(--space-2) var(--space-4);
            background: rgba(8,8,7,0.95);
            backdrop-filter: blur(12px);
            -webkit-backdrop-filter: blur(12px);
            border: 1px solid rgba(var(--accent-rgb),0.2);
            border-radius: var(--radius-sm);
            opacity: 0;
            visibility: hidden;
            transition: opacity var(--dur-base) ease, transform var(--dur-base) ease, visibility var(--dur-base) ease;
            pointer-events: none;
            text-align: center;
            white-space: nowrap;
            z-index: 25;
        }
        .connect-email-tooltip .email-address {
            font-family: var(--font-mono);
            font-size: var(--fs-caption);
            color: #d8d8d5;
            font-weight: var(--fw-medium);
            letter-spacing: var(--tracking-wide);
            display: block;
        }
        .connect-email-tooltip .copy-hint {
            font-size: var(--fs-micro);
            font-family: var(--font-sans);
            color: var(--fg-4);
            display: block;
            margin-top: var(--space-1);
        }
        .connect-email-trigger:hover .connect-email-tooltip {
            opacity: 1;
            visibility: visible;
            transform: translateX(-50%) translateY(0);
        }
        /* 二维码弹窗 */
        .connect-qr-popup {
            position: absolute;
            top: calc(100% + 16px);
            left: 50%;
            transform: translateX(-50%) rotateX(-80deg);
            transform-origin: top center;
            padding: 16px;
            background: rgba(8,8,7,0.94);
            backdrop-filter: blur(12px);
            -webkit-backdrop-filter: blur(12px);
            border: 1px solid rgba(var(--accent-rgb),0.15);
            border-radius: var(--radius-md);
            opacity: 0;
            visibility: hidden;
            transition: opacity var(--dur-base) ease, transform 0.45s var(--ease-in-out), visibility var(--dur-base) ease;
            pointer-events: none;
            text-align: center;
            z-index: 20;
        }
        .connect-qr-popup img {
            display: block;
            border-radius: var(--radius-sm);
            margin-bottom: var(--space-2);
            width: 7rem;
            height: 7rem;
        }
        .connect-qr-popup span {
            font-size: var(--fs-caption);
            color: var(--fg-4);
            letter-spacing: var(--tracking-wide);
        }
        .connect-wechat-trigger:hover .connect-qr-popup,
        .connect-wechat-trigger.qr-open .connect-qr-popup {
            opacity: 1;
            visibility: visible;
            transform: translateX(-50%) rotateX(0);
            pointer-events: auto;
        }
        @media (hover: none) {
            .connect-item:hover {
                color: var(--fg-4);
                transform: none;
            }
            .connect-item:hover .connect-icon {
                border-color: rgba(var(--accent-rgb),0.12);
                box-shadow: none;
                background: rgba(var(--accent-rgb),0.03);
            }
            .connect-item:hover .connect-icon svg {
                opacity: 0.75;
            }
            .connect-item:hover .connect-icon::after {
                animation: none;
                opacity: 0;
            }
            .connect-wechat-trigger:hover:not(.qr-open) .connect-qr-popup,
            .connect-email-trigger:hover .connect-email-tooltip {
                opacity: 0;
                visibility: hidden;
                pointer-events: none;
            }
        }

        /* 版权 — margin-top 必须大于 QR popup 高度（~150px）+ 缓冲，避免二维码遮挡；
           呼吸感：留足图标浮动 + 二维码展开的空间 */
        .connect-copyright {
            text-align: center;
            margin-top: calc(var(--space-10) + var(--space-9));  /* 128 + 96 = 224px */
            padding: 0 var(--space-5);
            font-size: var(--fs-caption);
            letter-spacing: var(--tracking-wide);
            color: var(--fg-4);
        }

        @media (max-width: 768px) {
            .page {
                padding-top: var(--space-6);
                padding-bottom: var(--space-6);
            }
            #page-hero {
                min-height: auto;
                padding-top: var(--space-8);
                padding-bottom: var(--space-5);
            }
            #page-writes,
            #page-exp,
            #page-tools {
                padding-top: var(--space-6);
                padding-bottom: var(--space-6);
            }
            #page-connect {
                padding-bottom: var(--space-5);
            }
            #page-tools .section-interpretation {
                margin-bottom: var(--space-6);
            }
            .connect-section {
                padding-top: var(--space-6);
                padding-bottom: var(--space-6);
            }
        }

        /* 移动端最终覆盖：本段必须放在所有基础规则之后，否则会被后面的
           .connect-qr-popup / .connect-email-line 基础声明按源码顺序压回去。 */
        @media (max-width: 768px) {
            .connect-qr-popup {
                position: fixed;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%) scale(0.9);
                z-index: 200;
            }
            .connect-wechat-trigger.qr-open .connect-qr-popup {
                transform: translate(-50%, -50%) scale(1);
            }
            .connect-email-line {
                display: block;
                margin: calc(-1 * var(--space-6)) auto 0;
                padding: var(--space-1) var(--space-2);
                border: 0;
                background: none;
                color: var(--fg-3);
                font-family: var(--font-mono);
                font-size: var(--fs-caption);
                letter-spacing: 0.02em;
                cursor: pointer;
            }
            .connect-email-line:active { color: var(--accent); }
        }

        /* 文章卡右下角箭头需要额外底部留白，避免压住第三行标题 */
        @media (max-width: 600px) {
            .article-marquee-card .card-body {
                padding-bottom: calc(var(--space-3) + 20px);
            }
        }
