* {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        :root {
            --primary-color: #8b9b7a;
            --secondary-color: #d4c5b9;
            --accent-color: #c4a69d;
            --text-dark: #2c2c2c;
            --text-light: #6b6b6b;
            --light-text: var(--text-light);
            --subtext: var(--ink-muted);
            --bg-light: #f7f2eb;
            --bg-white: #f7f2eb;
            --paper-base: #f7f2eb;
            --paper-warm: rgba(214, 203, 183, 0.06);
            --paper-cool: rgba(178, 175, 166, 0.035);
            --bubble-user: rgba(255, 255, 255, 0.3);
            --bubble-user-border: rgba(180, 150, 150, 0.2);
            --bubble-user-text: #555;
            --bubble-prince: rgba(255, 255, 255, 0.3);
            --bubble-prince-border: rgba(150, 160, 180, 0.2);
            --bubble-prince-text: #555;
            /* 优先使用 Windows 的 Segoe Script；其余为回退 */
            --font-hand: 'Segoe Script', 'Indie Flower', 'Caveat', 'Shadows Into Light', 'Patrick Hand', 'Segoe Print', cursive;
            --font-cn: 'LXGW WenKai', 'STKaiti', 'KaiTi', serif;
            --font-en-title: var(--font-hand), 'Cormorant Garamond', serif;
            --ink: #3d2b1f;
            --ink-muted: #7a6a5a;
            --ink-accent: #8b3a52;
            --rule-gold: #c9a84c;
        }

        body {
            font-family: var(--font-cn);
            font-size: 1rem;
            line-height: 2;
            letter-spacing: 0.06em;
            background-color: #fbf8f2;
            background-image:
                repeating-linear-gradient(
                    -12deg,
                    rgba(132, 118, 94, 0.008) 0px,
                    rgba(132, 118, 94, 0.008) 1px,
                    transparent 1px,
                    transparent 11px
                ),
                repeating-linear-gradient(
                    82deg,
                    rgba(146, 130, 102, 0.012) 0px,
                    rgba(146, 130, 102, 0.012) 1px,
                    transparent 1px,
                    transparent 9px
                ),
                url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1400' height='1400' viewBox='0 0 1400 1400'%3E%3Cdefs%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.92' numOctaves='4' seed='17' stitchTiles='stitch'/%3E%3C/filter%3E%3C/defs%3E%3Crect width='1400' height='1400' filter='url(%23n)' opacity='0.10'/%3E%3C/svg%3E"),
                radial-gradient(1200px 600px at 10% 8%, rgba(255, 255, 255, 0.36), transparent 55%),
                radial-gradient(900px 520px at 92% 22%, rgba(208, 193, 168, 0.03), transparent 62%),
                radial-gradient(820px 540px at 68% 86%, rgba(186, 178, 162, 0.02), transparent 58%),
                linear-gradient(180deg, rgba(255, 255, 255, 0.22), rgba(132, 118, 94, 0.012));
            background-attachment: fixed;
            background-size: 360px 360px, 320px 320px, 700px 700px, auto, auto, auto, auto;
            color: var(--ink);
            min-height: 100vh;
            transition: background-color 0.3s ease, color 0.3s ease;
        }

        body.page-b612 {
            background-color: #f4eee2;
            background-image:
                linear-gradient(rgba(246, 242, 234, 0.24), rgba(246, 242, 234, 0.24)),
                url("b612background.png");
            background-position: center center;
            background-repeat: no-repeat;
            background-size: cover;
            background-attachment: fixed;
        }

        body.page-journey {
            background:
                linear-gradient(rgba(255, 255, 255, 0.28), rgba(255, 255, 255, 0.28)),
                url("journey1.png");
            background-size: cover;
            background-position: center center;
            background-repeat: no-repeat;
            background-attachment: fixed;
        }

        body.page-home {
            background-color: #f8f4ed;
            background-image:
                linear-gradient(rgba(248, 244, 237, 0.62), rgba(248, 244, 237, 0.62)),
                url("b612background.png");
            background-position: center center;
            background-repeat: no-repeat;
            background-size: cover;
            background-attachment: fixed;
        }

        /* Home 统一米色滤镜：让顶部/底部色调一致 */
        body.page-home::before {
            content: "";
            position: fixed;
            inset: 0;
            background: rgba(248, 244, 237, 0.18);
            pointer-events: none;
            z-index: 1;
        }

        body.page-b612::before {
            content: "";
            position: fixed;
            inset: 0;
            background: rgba(255, 255, 255, 0.32);
            pointer-events: none;
            z-index: 1;
        }

        body.page-b612 .container {
            position: relative;
            z-index: 2;
        }

        /* 仅 B612：整体内容轻微缩放，便于与插画对齐 */
        body.page-b612 #b612 .hero {
            transform: scale(0.96);
            transform-origin: top center;
        }

        /* 全局去硬边：统一柔和纸面触感 */
        :where(nav a, .nav-flight-btn, .nav-mailbox-btn, .journey-station-link, .b612-chat__avatar, .b612-mailbox__input-wrap, .modal-content, .reply-slip__panel, .reply-slip__inner, .memory-stage, .memory-modal__panel, input, textarea, button) {
            border-color: transparent !important;
            box-shadow: 0 1px 10px rgba(120, 104, 80, 0.06);
        }

        html, body {
            cursor: auto;
        }

        a, button, [role='button'], .nav-link {
            cursor: pointer;
        }

        /* 沉浸式：自定义鼠标（内联 SVG，避免外部资源缺失） */

        /* 伴生元素层：滚动视差带来空间深度 */
        .companions-layer {
            position: absolute;
            inset: 0;
            z-index: 4;
            pointer-events: none;
            overflow: hidden;
        }

        .companion {
            position: absolute;
            left: var(--left, 10%);
            top: var(--top, 40vh);
            width: var(--w, 28px);
            height: var(--h, 28px);
            opacity: var(--op, 0.32);
            filter: blur(var(--blur, 0px));
            transform: translate3d(var(--parallax-x, 0px), var(--parallax-y, 0px), 0) rotate(var(--rot, 0deg)) scale(var(--scale, 1));
            transform-origin: center;
            will-change: transform;
            background-image: var(--img, none);
            background-repeat: no-repeat;
            background-size: contain;
            background-position: center;
        }

        /* stone.png 裁切占位：你把素材放进 assets/stone.png 后，可按需要微调 bx/by/w/h */
        /* 这张 stone.png 是一整张插画，所以用“裁切窗口”截取其中区域 */
        .companion[data-kind="petal"] {
            --w: 220px;
            --h: 180px;
            --op: 0.22;
            --blur: 0.25px;
            --rot: -6deg;
            --img: url('assets/companions/petals.png');
        }

        .companion[data-kind="cactus"] {
            --w: 240px;
            --h: 220px;
            --op: 0.18;
            --blur: 0.35px;
            --rot: 4deg;
            --img: url('assets/companions/cactus.png');
        }

        .companion[data-kind="pebble"] {
            --w: 360px;
            --h: 260px;
            --op: 0.20;
            --blur: 0.2px;
            --rot: 0deg;
            --img: url('assets/companions/stones.png');
        }

        @media (prefers-reduced-motion: reduce) {
            .companion {
                transform: translate3d(0, 0, 0) rotate(var(--rot, 0deg)) scale(var(--scale, 1));
                transition: none;
            }
        }

        html,
        body {
            scrollbar-width: none;
            -ms-overflow-style: none;
        }

        ::-webkit-scrollbar {
            width: 0 !important;
            height: 0 !important;
            display: none;
        }

        /* 纸张质感：微小噪点 + 纤维 */
        .paper-texture {
            position: fixed;
            inset: 0;
            z-index: 0;
            pointer-events: none;
            background:
                radial-gradient(circle at 12% 16%, rgba(255, 255, 255, 0.16) 0 1px, transparent 1.2px),
                radial-gradient(circle at 78% 66%, rgba(126, 120, 108, 0.08) 0 0.8px, transparent 1.1px),
                radial-gradient(circle at 34% 72%, rgba(255, 255, 255, 0.14) 0 1px, transparent 1.2px),
                repeating-linear-gradient(102deg, rgba(130, 122, 108, 0.018) 0 1px, transparent 1px 7px),
                repeating-linear-gradient(12deg, rgba(255, 255, 255, 0.018) 0 1px, transparent 1px 8px);
            background-size: 140px 140px, 160px 160px, 180px 180px, 12px 12px, 14px 14px;
            opacity: 0.12;
            filter: contrast(120%) brightness(100%);
        }

        /* 极淡纤维暗纹：像干净素描纸的细丝 */
        .paper-fibers {
            position: fixed;
            inset: 0;
            z-index: 0;
            pointer-events: none;
            opacity: 0.05;
            background:
                repeating-linear-gradient(
                    92deg,
                    rgba(120, 110, 92, 0.22) 0px,
                    rgba(120, 110, 92, 0.22) 1px,
                    transparent 1px,
                    transparent 18px
                ),
                repeating-linear-gradient(
                    6deg,
                    rgba(120, 110, 92, 0.18) 0px,
                    rgba(120, 110, 92, 0.18) 1px,
                    transparent 1px,
                    transparent 22px
                ),
                radial-gradient(circle at 38% 46%, rgba(120, 110, 92, 0.08), transparent 52%);
            filter: blur(0.2px) contrast(110%);
            mix-blend-mode: multiply;
        }

        /* 纸张折痕 + 翘边内阴影 */
        .paper-creases {
            position: fixed;
            inset: 0;
            z-index: 0;
            pointer-events: none;
            box-shadow:
                inset 0 0 0 1px rgba(175, 164, 142, 0.08),
                inset 0 0 36px rgba(110, 100, 80, 0.05);
            background:
                linear-gradient(132deg, rgba(124, 112, 90, 0.13), transparent 44%) top left / 130px 130px no-repeat,
                linear-gradient(228deg, rgba(124, 112, 90, 0.11), transparent 45%) top right / 130px 130px no-repeat,
                linear-gradient(42deg, rgba(124, 112, 90, 0.11), transparent 45%) bottom left / 130px 130px no-repeat,
                linear-gradient(-42deg, rgba(124, 112, 90, 0.13), transparent 44%) bottom right / 130px 130px no-repeat;
            opacity: 0.28;
        }

        /* 透气感水印：极低透明大符号 */
        .paper-watermarks {
            position: fixed;
            inset: 0;
            z-index: 0;
            pointer-events: none;
            overflow: hidden;
        }

        .paper-watermark {
            position: absolute;
            user-select: none;
            line-height: 1;
            opacity: 0.03;
            color: #8f8572;
            filter: blur(1.1px);
            transform-origin: center;
            white-space: nowrap;
        }

        .paper-watermark--rose {
            left: 6%;
            top: 12%;
            font-size: clamp(120px, 18vw, 220px);
            transform: rotate(-14deg);
            font-family: var(--font-hand), 'Ma Shan Zheng', 'Noto Serif SC', serif;
        }

        .paper-watermark--b612 {
            right: 4%;
            bottom: 10%;
            font-size: clamp(110px, 16vw, 210px);
            transform: rotate(11deg);
            font-family: var(--font-hand), 'Long Cang', 'Ma Shan Zheng', serif;
            letter-spacing: 0.08em;
        }

        header,
        nav a,
        nav .nav-mailbox-btn,
        .logo,
        .scene-card,
        .scene-title,
        .timeline-card,
        .timeline-card h3,
        .read-more,
        .b612-mailbox__input-wrap {
            transition: color 2.5s ease, border-color 2.5s ease, background-color 2.5s ease, box-shadow 2.5s ease;
        }

        header {
            background: transparent;
            backdrop-filter: none;
            border-bottom: none;
            padding: 1.75rem 0 2rem;
            margin-bottom: 0.95rem;
            position: relative;
            z-index: 100;
            box-shadow: none;
        }

        header::after {
            content: '';
            position: absolute;
            left: 0;
            right: 0;
            bottom: 0;
            height: 1px;
            background: transparent;
            pointer-events: none;
        }

        .header-container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 0 2rem;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }

        .logo {
            font-size: 2.2rem;
            font-weight: 300;
            color: #5f554a;
            letter-spacing: 1.8px;
            font-family: var(--font-hand);
            transform: rotate(-1.2deg);
            line-height: 1.2;
            margin-top: 0.12rem;
        }

        body.page-b612 header {
            padding-top: 0 !important;
        }

        body.page-b612 .header-container {
            padding-left: 2.6rem;
            padding-right: 2.6rem;
            align-items: flex-start;
        }

        body.page-b612 .logo {
            margin-top: 0.55rem;
            color: #5a5148;
            letter-spacing: 2.2px;
            transform: rotate(-0.7deg);
            position: relative;
        }

        body.page-b612 .logo::after {
            content: "A JOURNEY OF LOVE AND RESPONSIBILITY";
            display: block;
            margin-top: 0.35rem;
            font-family: "Cormorant Garamond", serif;
            font-size: 0.8rem;
            letter-spacing: 2px;
            text-transform: uppercase;
            color: rgba(90, 81, 72, 0.55);
            transform: rotate(0.2deg);
        }

        body.page-b612 nav {
            margin-right: 1.2rem;
            gap: 1.4rem;
        }

        body.page-b612 nav a,
        body.page-b612 nav .nav-mailbox-btn {
            letter-spacing: 0.26em;
        }

        body.page-b612 nav a.active {
            position: relative;
            color: rgba(184, 146, 66, 0.92) !important;
        }

        body.page-b612 nav a.active::after {
            display: none;
        }

        nav {
            display: flex;
            gap: 1.2rem;
            align-items: center;
        }

        .nav-flight-btn {
            display: flex;
            align-items: center;
            justify-content: center;
            width: 42px;
            height: 42px;
            margin: -0.25rem 0 -0.25rem 0.25rem;
            padding: 0;
            border: none;
            border-radius: 50%;
            background: transparent;
            box-shadow: none !important;
            color: var(--primary-color);
            cursor: pointer;
            transition: color 0.25s ease, border-color 0.25s ease, transform 0.25s ease, box-shadow 0.25s ease;
        }

        .nav-flight-btn:hover {
            transform: translateY(-2px);
            box-shadow: none;
        }

        .nav-flight-btn svg {
            display: block;
        }

        nav a,
        nav .nav-mailbox-btn {
            text-decoration: none;
            color: var(--ink);
            font-weight: 500;
            padding: 0.28rem 0.72rem;
            border-bottom: none;
            transition: color 0.25s ease, border-color 0.25s ease, background-color 0.25s ease, transform 0.25s ease;
            font-size: 0.9rem;
            font-family: var(--font-cn);
            letter-spacing: 0.2em;
            display: inline-block;
            line-height: 1.6;
            border: none;
            border-radius: 0;
            background: transparent;
            box-shadow: none !important;
        }

        nav .nav-mailbox-btn {
            cursor: pointer;
            transform: rotate(0.6deg);
        }

        nav a:hover,
        nav a.active,
        nav .nav-mailbox-btn:hover {
            /* 点击/激活后的浅金色 */
            color: rgba(206, 171, 101, 0.92);
            background: transparent;
            transform: translateY(-1px);
        }

        nav a.active {
            border-color: transparent;
            text-decoration: none;
        }

        nav a[data-page="home"] {
            transform: rotate(-1.2deg);
        }

        nav a[data-page="journey"] {
            transform: rotate(0.8deg);
        }

        nav a[data-page="b612"] {
            transform: rotate(-0.4deg);
        }

        .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 2rem;
            padding-bottom: 3.25rem;
            position: relative;
            z-index: 2;
        }

        .container::before {
            content: none;
        }

        /* 页面右下角：折角线 + 极淡「未完待续」 */
        .page-corner-fold {
            position: absolute;
            right: 0.65rem;
            bottom: 0.5rem;
            width: 58px;
            height: 58px;
            pointer-events: none;
            z-index: 1;
        }

        .page-corner-fold__svg {
            position: absolute;
            right: 0;
            bottom: 0;
            width: 58px;
            height: 58px;
            overflow: visible;
        }

        .page-corner-fold__hint {
            position: absolute;
            right: 0.05rem;
            bottom: 1.65rem;
            font-family: var(--font-hand), 'Noto Serif SC', 'Songti SC', serif;
            font-size: 0.56rem;
            font-style: italic;
            font-weight: 400;
            letter-spacing: 0.12em;
            color: rgba(82, 78, 70, 0.26);
            white-space: nowrap;
            transform: rotate(-9deg);
            transform-origin: 100% 100%;
        }

        /* 右下角：星际收藏盒入口（简笔画木盒） */
        .memory-trigger {
            position: fixed;
            right: 1.05rem;
            bottom: 0.95rem;
            z-index: 260;
            width: 54px;
            height: 54px;
            border: none;
            background: transparent;
            cursor: pointer;
            padding: 0;
            color: rgba(96, 88, 74, 0.62);
            transition: transform 0.25s ease, color 0.25s ease, filter 0.25s ease;
        }

        .memory-trigger:hover {
            color: rgba(86, 98, 74, 0.86);
            transform: translateY(-2px) rotate(-1.5deg);
            filter: drop-shadow(0 6px 14px rgba(86, 78, 60, 0.14));
        }

        .memory-trigger svg {
            width: 100%;
            height: 100%;
            display: block;
        }

        /* 星际收藏盒：遮罩 + 毛边纸卡片 */
        .memory-modal {
            display: none;
            position: fixed;
            inset: 0;
            z-index: 2400;
            background: rgba(32, 30, 26, 0.26);
            backdrop-filter: blur(8px);
            -webkit-backdrop-filter: blur(8px);
            padding: 5vh 1.25rem;
            box-sizing: border-box;
        }

        .memory-modal.active {
            display: flex;
            align-items: center;
            justify-content: center;
            animation: fadeIn 0.25s ease;
        }

        .memory-card {
            position: relative;
            width: min(860px, 92vw);
            max-height: 86vh;
            overflow: hidden;
            background: #f3efe4;
            color: rgba(56, 52, 46, 0.88);
            padding: 2.1rem 2.2rem 2rem;
            box-shadow: 0 26px 80px rgba(0, 0, 0, 0.28);
            clip-path: polygon(
                1.5% 3%,
                5% 1.2%,
                12% 2%,
                18% 0.8%,
                28% 2.2%,
                36% 1%,
                48% 2.6%,
                58% 1.4%,
                70% 2.4%,
                82% 1.2%,
                95% 2.2%,
                98.5% 6%,
                97.2% 14%,
                99.2% 24%,
                97.6% 34%,
                99% 46%,
                97.3% 58%,
                99.1% 70%,
                97.6% 82%,
                99% 92%,
                95.8% 98%,
                86% 97.2%,
                74% 98.6%,
                62% 97.4%,
                48% 98.4%,
                34% 97.1%,
                20% 98.8%,
                10% 97.6%,
                3% 98.4%,
                1% 94%,
                2.2% 82%,
                0.8% 70%,
                2.4% 58%,
                1.1% 46%,
                2.6% 34%,
                1.3% 22%,
                2.3% 12%
            );
        }

        .memory-card::before {
            content: '';
            position: absolute;
            inset: 0;
            pointer-events: none;
            background:
                radial-gradient(120% 80% at 35% 10%, rgba(255, 255, 255, 0.52), transparent 55%),
                radial-gradient(140% 110% at 82% 76%, rgba(140, 120, 82, 0.07), transparent 56%),
                repeating-linear-gradient(95deg, rgba(120, 110, 92, 0.02) 0 1px, transparent 1px 8px);
            opacity: 0.9;
        }

        .memory-close {
            position: absolute;
            top: 1.05rem;
            right: 1.1rem;
            width: 44px;
            height: 44px;
            border: none;
            background: transparent;
            cursor: pointer;
            color: rgba(88, 80, 68, 0.7);
            z-index: 2;
            transition: transform 0.2s ease, color 0.2s ease;
        }

        .memory-close:hover {
            color: rgba(60, 56, 48, 0.9);
            transform: rotate(-6deg);
        }

        .memory-close svg {
            width: 100%;
            height: 100%;
            display: block;
        }

        .memory-heading {
            position: relative;
            z-index: 1;
            margin: 0 0 1.25rem;
            font-family: var(--font-hand), 'Ma Shan Zheng', 'Long Cang', 'Noto Serif SC', serif;
            font-size: 1.25rem;
            font-weight: 400;
            letter-spacing: 0.16em;
            color: rgba(70, 64, 54, 0.78);
            transform: rotate(-1.2deg);
        }

        .memory-stage {
            position: relative;
            z-index: 1;
            height: min(520px, 56vh);
            overflow: visible;
        }

        .memory-item {
            position: absolute;
            width: 210px;
            transform: rotate(var(--tilt, 3deg));
            transform-origin: center;
            cursor: pointer;
            filter: grayscale(1) saturate(0.1) contrast(1.05);
            transition: transform 220ms ease, filter 260ms ease;
            overflow: visible;
        }

        .memory-item:hover {
            filter: grayscale(0) saturate(0.9) contrast(1.02);
            animation: memoryJitter 0.55s ease-in-out infinite;
        }

        @keyframes memoryJitter {
            0% { transform: rotate(var(--tilt, 3deg)) translate(0, 0); }
            40% { transform: rotate(calc(var(--tilt, 3deg) + 0.5deg)) translate(0.6px, -0.4px); }
            70% { transform: rotate(calc(var(--tilt, 3deg) - 0.4deg)) translate(-0.4px, 0.5px); }
            100% { transform: rotate(var(--tilt, 3deg)) translate(0, 0); }
        }

        .memory-object {
            position: relative;
            width: 100%;
            border-radius: 14px;
            background: rgba(255, 255, 255, 0.35);
            box-shadow: 0 10px 26px rgba(92, 86, 70, 0.12);
            padding: 0.95rem 0.95rem 0.9rem;
            box-sizing: border-box;
        }

        .memory-caption {
            margin-top: 0.45rem;
            font-family: var(--font-hand), 'KaiTi', 'STKaiti', 'Kaiti SC', 'Noto Serif SC', serif;
            font-size: 12px;
            color: #999;
            letter-spacing: 0.06em;
            transform: rotate(-1.2deg);
        }

        .memory-bubble {
            position: absolute;
            left: 50%;
            top: auto;
            bottom: -10px;
            transform: translate(-50%, 100%);
            padding: 0.5rem 0.65rem;
            border-radius: 14px;
            background: rgba(254, 252, 246, 0.92);
            border: 1px solid rgba(142, 151, 121, 0.28);
            color: rgba(56, 52, 46, 0.86);
            font-family: var(--font-hand), 'KaiTi', 'STKaiti', 'Kaiti SC', 'Noto Serif SC', serif;
            font-size: 0.82rem;
            line-height: 1.75;
            letter-spacing: 0.06em;
            white-space: normal;
            width: max-content;
            max-width: 18em;
            box-shadow: 0 10px 22px rgba(60, 54, 46, 0.12);
            opacity: 0;
            animation: bubbleIn 260ms ease forwards;
            pointer-events: none;
            z-index: 3;
        }

        .memory-bubble--above {
            top: -10px;
            bottom: auto;
            transform: translate(-50%, -100%);
        }

        @keyframes bubbleIn {
            from { opacity: 0; transform: translate(-50%, 88%); }
            to { opacity: 1; transform: translate(-50%, 100%); }
        }

        .memory-bubble--above {
            animation: bubbleInAbove 260ms ease forwards;
        }

        @keyframes bubbleInAbove {
            from { opacity: 0; transform: translate(-50%, -88%); }
            to { opacity: 1; transform: translate(-50%, -100%); }
        }

        .memory-bubble.is-fading {
            opacity: 0;
            transition: opacity 900ms ease;
        }

        /* 物件：种子 */
        .seed-dot {
            width: 8px;
            height: 8px;
            border-radius: 999px;
            background: #4b2f1f;
            box-shadow: 0 1px 0 rgba(255, 255, 255, 0.25) inset;
            display: inline-block;
            margin-right: 8px;
            transform: translateY(1px);
        }

        .seed-row {
            display: flex;
            align-items: center;
            gap: 0.35rem;
        }

        .seed-pair-img {
            width: 100%;
            height: 92px;
            display: block;
            object-fit: contain;
            opacity: 0.92;
            filter: contrast(1.03);
        }

        .seed-img {
            width: 86px;
            height: 86px;
            display: block;
            object-fit: contain;
            filter: contrast(1.05);
            opacity: 0.95;
        }

        .memory-item .seed-img {
            background:
                radial-gradient(circle at 22% 18%, rgba(255, 255, 255, 0.55), rgba(243, 239, 228, 0.28) 62%, transparent 100%),
                repeating-linear-gradient(95deg, rgba(120, 110, 92, 0.012) 0 1px, transparent 1px 8px);
            border-radius: 10px;
            padding: 10px;
            box-sizing: border-box;
        }

        .seed-drop {
            width: 14px;
            height: 14px;
            display: inline-block;
        }

        /* 物件：扳手 */
        .wrench-svg {
            width: 100%;
            height: 74px;
            display: block;
        }

        /* 扳手照片“融进纸面” */
        .memory-object--wrench {
            position: relative;
            border-radius: 12px;
            background:
                radial-gradient(circle at 18% 22%, rgba(255, 255, 255, 0.55), rgba(243, 239, 228, 0.22) 62%, transparent 100%),
                repeating-linear-gradient(95deg, rgba(120, 110, 92, 0.012) 0 1px, transparent 1px 8px);
            padding: 10px;
            box-sizing: border-box;
            height: 98px;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .memory-object--wrench::after {
            content: '';
            position: absolute;
            inset: 10px;
            border-radius: 10px;
            pointer-events: none;
            opacity: 0.22;
            background:
                repeating-linear-gradient(
                    102deg,
                    rgba(255, 255, 255, 0.18) 0 1px,
                    rgba(233, 227, 210, 0.05) 1px 3px,
                    transparent 3px 7px
                ),
                radial-gradient(circle at 18% 40%, rgba(255, 255, 255, 0.18) 0 1px, transparent 1.2px),
                radial-gradient(circle at 62% 68%, rgba(165, 154, 132, 0.1) 0 1px, transparent 1.3px);
            mix-blend-mode: multiply;
        }

        .wrench-photo {
            width: 100%;
            height: 100%;
            display: block;
            object-fit: contain;
            /* 统一纸面白与铅笔灰 */
            filter: grayscale(0.22) saturate(0.88) brightness(1.02) contrast(0.86);
            opacity: 0.86;
            mix-blend-mode: multiply;
            /* 柔边：像纸纤维散开，而不是硬切 */
            -webkit-mask-image: radial-gradient(closest-side, #000 60%, transparent 100%);
            mask-image: radial-gradient(closest-side, #000 60%, transparent 100%);
            transform: rotate(-90deg) scale(0.92);
            transform-origin: center center;
        }

        /* 物件：星图 */
        .map-card {
            position: relative;
            width: 100%;
            height: 92px;
            border-radius: 10px;
            background:
                radial-gradient(circle at 10% 20%, rgba(70, 54, 36, 0.18), transparent 22%),
                radial-gradient(circle at 86% 14%, rgba(70, 54, 36, 0.14), transparent 26%),
                radial-gradient(circle at 92% 88%, rgba(70, 54, 36, 0.12), transparent 28%),
                linear-gradient(180deg, rgba(255, 252, 245, 0.9), rgba(245, 238, 224, 0.88));
            box-shadow: 0 0 0 1px rgba(140, 126, 98, 0.16) inset;
            overflow: hidden;
        }

        .map-card::before {
            content: '';
            position: absolute;
            inset: -10px;
            background:
                radial-gradient(circle at 0% 0%, rgba(70, 54, 36, 0.22), transparent 38%),
                radial-gradient(circle at 100% 0%, rgba(70, 54, 36, 0.18), transparent 40%),
                radial-gradient(circle at 100% 100%, rgba(70, 54, 36, 0.2), transparent 42%),
                radial-gradient(circle at 0% 100%, rgba(70, 54, 36, 0.18), transparent 40%);
            opacity: 0.35;
            pointer-events: none;
        }

        .map-lines {
            position: absolute;
            inset: 10px 12px;
        }

        .map-lines svg {
            width: 100%;
            height: 100%;
            display: block;
        }

        .map-lines circle {
            fill: rgba(92, 86, 74, 0.62);
        }

        .map-lines path {
            fill: none;
            stroke: rgba(92, 86, 74, 0.55);
            stroke-width: 1.2;
            stroke-linecap: round;
            stroke-dasharray: 4 6 2 7;
        }

        /* 物件：玻璃罩 */
        .dome {
            position: relative;
            width: 100%;
            height: 92px;
            border-radius: 18px;
            background:
                radial-gradient(circle at 30% 24%, rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0.12) 52%, rgba(120, 110, 92, 0.06) 100%),
                linear-gradient(180deg, rgba(255, 255, 255, 0.22), rgba(210, 198, 170, 0.08));
            box-shadow:
                inset 0 0 0 1px rgba(140, 126, 98, 0.18),
                0 10px 22px rgba(92, 86, 70, 0.1);
            overflow: hidden;
        }

        .dome::before {
            content: '';
            position: absolute;
            left: 18px;
            top: 12px;
            width: 34px;
            height: 64px;
            border-radius: 999px;
            background: rgba(255, 255, 255, 0.22);
            transform: rotate(-12deg);
        }

        .dome-base {
            position: absolute;
            left: 16px;
            right: 16px;
            bottom: 10px;
            height: 12px;
            border-radius: 999px;
            background: rgba(120, 98, 72, 0.22);
            box-shadow: 0 1px 0 rgba(255, 255, 255, 0.3) inset;
        }

        /* 物件：小铃铛 */
        .bell-svg {
            width: 100%;
            height: 86px;
            display: block;
        }

        /* 物件：黄围巾 */
        .scarf {
            position: relative;
            width: 100%;
            height: 86px;
        }

        .scarf svg {
            width: 100%;
            height: 100%;
            display: block;
        }

        /* 背景星空层：落定的小星 */
        .star-field {
            position: fixed;
            inset: 0;
            z-index: 0;
            pointer-events: none;
            overflow: hidden;
        }

        .star-field__star {
            position: absolute;
            width: 15px;
            height: 15px;
            transform: translate(-50%, -50%);
            background: transparent;
            border: none;
            padding: 0;
            cursor: pointer;
            outline: none;
            animation: starTwinkle 5.8s ease-in-out infinite;
            --star-opacity: 0.86;
        }

        .star-field__shape {
            position: absolute;
            inset: 0;
            background: radial-gradient(circle at 40% 33%, #fffce6 0%, #ffe878 36%, #d5a929 78%, #c18f17 100%);
            clip-path: polygon(49% 3%, 62% 33%, 97% 36%, 68% 54%, 74% 92%, 50% 72%, 26% 94%, 31% 55%, 3% 36%, 39% 33%);
            transform: rotate(-8deg);
            box-shadow:
                0 0 10px rgba(255, 220, 130, 0.55),
                0 0 22px rgba(255, 200, 88, 0.3);
            opacity: var(--star-opacity);
        }

        .star-field__shape::before {
            content: '';
            position: absolute;
            inset: 1px;
            clip-path: polygon(48% 6%, 61% 34%, 94% 37%, 66% 54%, 73% 88%, 50% 71%, 28% 90%, 32% 55%, 6% 36%, 38% 34%);
            border: 1px solid rgba(108, 89, 38, 0.45);
            opacity: 0.38;
            transform: rotate(4deg);
        }

        /* 新种下的星：落成极小的 * / · 符号（历史记录仍用立体星） */
        .star-field__shape--glyph {
            background: none !important;
            clip-path: none !important;
            box-shadow: 0 0 12px rgba(255, 210, 130, 0.45) !important;
            display: flex;
            align-items: center;
            justify-content: center;
            font-family: var(--font-hand), 'Kalam', Georgia, 'Times New Roman', serif;
            font-size: 12px;
            line-height: 1;
            font-weight: 400;
            color: rgba(255, 228, 160, 0.95);
            text-shadow:
                0 0 8px rgba(255, 200, 90, 0.75),
                0 0 18px rgba(255, 190, 70, 0.35);
            transform: rotate(-6deg);
        }

        .star-field__shape--glyph::before {
            display: none;
        }

        .star-field__bubble {
            position: absolute;
            left: 18px;
            top: -12px;
            max-width: 230px;
            padding: 0.5rem 0.65rem;
            border-radius: 12px;
            background: rgba(254, 252, 246, 0.84);
            border: 1px solid rgba(142, 151, 121, 0.35);
            color: rgba(50, 50, 45, 0.92);
            font-family: var(--font-hand), 'Noto Serif SC', 'Songti SC', serif;
            font-size: 0.8rem;
            line-height: 1.55;
            text-align: left;
            box-shadow: 0 8px 24px rgba(92, 101, 77, 0.18);
            backdrop-filter: blur(2px);
            pointer-events: none;
            opacity: 0;
            transform: translateY(5px);
            transition: opacity 0.22s ease, transform 0.24s ease;
            z-index: 2;
        }

        .star-field__bubble::before {
            content: '';
            position: absolute;
            left: -6px;
            top: 14px;
            width: 10px;
            height: 10px;
            background: rgba(254, 252, 246, 0.84);
            border-left: 1px solid rgba(142, 151, 121, 0.35);
            border-bottom: 1px solid rgba(142, 151, 121, 0.35);
            transform: rotate(45deg);
        }

        .star-field__star:hover .star-field__bubble,
        .star-field__star:focus-visible .star-field__bubble {
            opacity: 1;
            transform: translateY(0);
        }

        @keyframes starTwinkle {
            0%, 100% { opacity: 1; filter: brightness(1); }
            50% { opacity: 0.82; filter: brightness(1.08); }
        }

        /* 飞星：文字收束为光点 */
        .star-shoot {
            position: fixed;
            left: 0;
            top: 0;
            z-index: 200;
            pointer-events: none;
            will-change: transform;
        }

        .star-shoot__text {
            display: block;
            max-width: 240px;
            padding: 0.15rem 0.35rem;
            font-family: var(--font-hand), 'Noto Serif SC', 'Songti SC', 'Microsoft YaHei', serif;
            font-size: 0.92rem;
            line-height: 1.4;
            color: rgba(42, 40, 36, 0.92);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            text-shadow: 0 0 14px rgba(255, 240, 180, 0.45);
            transform-origin: center center;
            transition: opacity 0.55s ease, transform 0.65s cubic-bezier(0.4, 0, 0.2, 1);
        }

        .star-shoot__core {
            position: absolute;
            left: 50%;
            top: 50%;
            width: 12px;
            height: 12px;
            margin: -6px 0 0 -6px;
            border-radius: 50%;
            opacity: 0;
            transform: scale(0);
            background: radial-gradient(circle at 35% 30%, #fffef5 0%, #ffe566 48%, #c99810 100%);
            box-shadow:
                0 0 18px 6px rgba(255, 215, 100, 0.9),
                0 0 36px 12px rgba(255, 200, 70, 0.28);
            transition: opacity 0.5s ease, transform 0.6s cubic-bezier(0.35, 1.35, 0.5, 1);
        }

        .star-shoot--glow .star-shoot__text {
            opacity: 0;
            transform: scale(0.06);
        }

        .star-shoot--glow .star-shoot__core {
            opacity: 1;
            transform: scale(1);
        }

        /* B612 投递箱 */
        /* B612 页：手帐边注留白填充 */
        #b612.page {
            position: relative;
            min-height: min(72vh, 680px);
            padding-bottom: 2.5rem;
            background: transparent;
        }

        /* 用户提供的 B612 布局样式（作用于现有结构） */
        #b612 {
            --bg: #f6f2ea;
            --text: #494239;
            --gold: #c8a24f;
        }

        #b612 .hero {
            position: relative;
            min-height: 720px;
            margin: 10px;
            padding: 40px 70px;
            border-radius: 18px;
            background: rgba(255, 252, 246, 0.22);
            overflow: hidden;
            z-index: 2;
        }

        #b612 .topbar {
            display: flex;
            justify-content: space-between;
        }

        #b612 .brand-title {
            font-family: "Parisienne", cursive;
            font-size: 80px;
        }

        #b612 .brand-subtitle {
            font-family: "Cormorant Garamond", serif;
            letter-spacing: 2px;
            color: #7d7469;
        }

        #b612 .nav {
            display: flex;
            gap: 30px;
            font-family: "EB Garamond", serif;
        }

        #b612 .nav a {
            text-decoration: none;
            color: #5b5349;
            font-size: 22px;
        }

        #b612 .nav a.active {
            border-bottom: 3px solid var(--gold);
        }

        #b612 .hero-center {
            max-width: 800px;
            margin: 0 auto 0;
            text-align: center;
        }

        #b612 .main-title {
            font-size: 32px;
            line-height: 1.7;
        }

        #b612 .divider {
            display: flex;
            justify-content: center;
            gap: 10px;
            margin: 20px 0;
            align-items: center;
        }

        #b612 .divider span {
            width: 60px;
            height: 1px;
            background: rgba(200, 162, 79, .4);
        }

        #b612 .divider::before {
            content: none;
        }

        #b612 .divider-star {
            display: inline-block;
            margin: 0 6px;
            color: rgba(191, 150, 64, 0.92);
            font-size: 14px;
            line-height: 1;
            font-style: normal;
        }

        #b612 .sub-line {
            font-size: 22px;
            color: #595146;
        }

        #b612 .small-line {
            font-size: 16px;
            color: #8b8174;
        }

        #b612 .hint {
            margin-top: 20px;
            color: #9f9689;
        }

        #b612 .wish-box {
            margin-top: 108px;
        }

        #b612 .wish-label {
            color: #b1844b;
            margin-bottom: 10px;
        }

        #b612 .wish-card {
            border-radius: 16px;
            padding: 20px;
            background: rgba(255, 255, 255, .3);
            position: relative;
        }

        #b612 .wish-card span {
            display: block;
            height: 1px;
            background: rgba(193, 161, 102, .4);
            margin: 15px 0;
        }

        #b612 .wish-card textarea {
            position: static !important;
            inset: auto !important;
            width: 100% !important;
            height: 158px !important;
            padding: 2px 6px !important;
            border: none !important;
            background: transparent !important;
            color: #5a5248 !important;
            resize: none !important;
            outline: none !important;
            font: inherit !important;
            line-height: 26px !important;
            position: relative !important;
            z-index: 2 !important;
        }

        /* 最终覆盖：提示在上，横线在下，避免重叠 */
        #b612 .wish-label {
            font-size: 16px !important;
            line-height: 1.5 !important;
            margin-bottom: 10px !important;
            color: #9f7f49 !important;
            text-align: left !important;
        }

        #b612 .wish-card {
            position: relative !important;
            min-height: 150px !important;
            padding: 12px 14px !important;
            border-radius: 16px !important;
            background: rgba(255, 255, 255, 0.48) !important;
            border: 1px solid rgba(184, 165, 132, 0.2) !important;
            box-shadow: 0 6px 14px rgba(96, 78, 50, 0.04) !important;
        }

        #b612 .wish-card::before {
            content: none !important;
        }

        #b612 .wish-card span {
            display: none !important;
        }

        #b612 .wish-card textarea {
            position: static !important;
            inset: auto !important;
            width: 100% !important;
            height: 122px !important;
            padding: 2px 6px !important;
            border: none !important;
            resize: none !important;
            line-height: 24px !important;
            background:
                repeating-linear-gradient(
                    to bottom,
                    transparent 0,
                    transparent 22px,
                    rgba(193, 161, 102, 0.28) 22px,
                    rgba(193, 161, 102, 0.28) 23px
                ) !important;
            background-color: transparent !important;
            position: relative !important;
            z-index: 2 !important;
        }

        /* 精简输入框横线：统一间距，避免杂乱 */
        #b612 .wish-card {
            min-height: 150px;
            padding: 16px 18px 14px;
            background: rgba(255, 255, 255, 0.5);
            border: 1px solid rgba(186, 165, 130, 0.2);
            box-shadow: 0 6px 14px rgba(96, 78, 50, 0.04);
        }

        #b612 .wish-card span {
            display: none;
        }

        #b612 .wish-card::before {
            content: "" !important;
            position: absolute;
            inset: 14px 16px;
            background: repeating-linear-gradient(
                to bottom,
                rgba(193, 161, 102, 0.28) 0px,
                rgba(193, 161, 102, 0.28) 1px,
                transparent 1px,
                transparent 24px
            );
            pointer-events: none;
            z-index: 1;
        }

        /* 确保横线铺满整个输入区高度（覆盖前面的 content: none） */
        #b612 .wish-card {
            overflow: visible;
        }

        #b612 .wish-card textarea {
            inset: 12px 16px;
            width: calc(100% - 32px);
            height: calc(100% - 24px);
            line-height: 24px;
            background: transparent;
        }

        #b612 .wish-star {
            margin-top: 10px;
            margin-left: auto;
            width: 42px;
            height: 42px;
            border: none;
            border-radius: 50%;
            background: rgba(200, 162, 79, .16);
            color: #8b6f38;
            cursor: pointer;
            display: grid;
            place-items: center;
            font-size: 20px;
        }

        #b612 .wish-star {
            display: none;
        }

        #b612 .hero-illustration {
            position: absolute;
            right: 0;
            bottom: 34px;
            width: 420px;
        }

        #b612 .hero-illustration img {
            width: 100%;
        }

        /* B612 参考图精修（在现有结构上覆盖） */
        #b612 .hero {
            min-height: 760px;
            margin: 0;
            padding: 36px 54px 28px;
            border-radius: 0;
            background: transparent;
        }

        #b612 .hero::before {
            content: none;
            position: absolute;
            inset: 0;
            background:
                radial-gradient(circle at 12% 24%, rgba(167, 152, 125, 0.05) 0 1px, transparent 1px),
                radial-gradient(circle at 78% 40%, rgba(167, 152, 125, 0.04) 0 1px, transparent 1px);
            background-size: 10px 10px, 12px 12px;
            opacity: 0.25;
            pointer-events: none;
        }

        #b612 .topbar {
            position: relative;
            z-index: 3;
            align-items: flex-start;
        }

        #b612 .brand-title {
            font-size: 72px;
            line-height: 1;
            color: #4a4339;
        }

        #b612 .brand-subtitle {
            margin-top: 8px;
            font-size: 14px;
            letter-spacing: 1.8px;
            color: #857b6f;
        }

        #b612 .nav {
            gap: 32px;
            margin-top: 6px;
        }

        #b612 .nav a {
            font-size: 21px;
            color: #6a6055;
            letter-spacing: 1.5px;
            position: relative;
            padding-bottom: 8px;
        }

        #b612 .nav a.active::after {
            display: none;
        }

        #b612 .hero-center {
            position: relative;
            z-index: 3;
            max-width: 760px;
            margin: 0 auto 0;
            text-align: center;
        }

        #b612 .main-title {
            font-size: 44px;
            line-height: 1.5;
            color: #6a6156;
            margin-bottom: 12px;
        }

        #b612 .divider {
            gap: 10px;
            margin: 12px 0 12px;
            color: rgba(194, 160, 89, 0.72);
        }

        #b612 .divider span {
            width: 74px;
            background: rgba(200, 162, 79, 0.3);
        }

        #b612 .sub-line {
            font-size: 24px;
            color: #5f564b;
        }

        #b612 .small-line {
            margin-top: 2px;
            font-size: 16px;
            color: #958a7b;
        }

        #b612 .hint {
            margin-top: 18px;
            color: #a79a8a;
            font-size: 15px;
        }

        #b612 .wish-box {
            margin: 108px auto 0;
            max-width: 560px;
        }

        #b612 .wish-label {
            text-align: left;
            margin-bottom: 10px;
            font-size: 34px;
            color: #9f7f49;
        }

        #b612 .wish-card {
            border-radius: 18px;
            min-height: 150px;
            background: rgba(255, 255, 255, 0.46);
            border: 1px solid rgba(184, 165, 132, 0.2);
            box-shadow: 0 8px 20px rgba(96, 78, 50, 0.06);
        }

        #b612 .wish-card span {
            margin: 17px 0;
            background: rgba(193, 161, 102, 0.28);
        }

        #b612 .wish-star {
            width: 28px;
            height: 28px;
            margin: -2px auto 0;
            background: transparent;
            color: rgba(178, 143, 75, 0.85);
            font-size: 18px;
            border-radius: 0;
            display: block;
        }

        #b612 .hero-illustration {
            right: -6px;
            bottom: 34px;
            width: 510px;
            z-index: 2;
            pointer-events: none;
        }

        #b612 .hero-illustration img {
            width: 100%;
            height: auto;
            display: block;
            mix-blend-mode: multiply;
            opacity: 0.98;
        }

        #b612 .hero-curve {
            display: none;
        }

        #b612 .hero-track {
            display: none;
        }

        #b612 .hero-star {
            display: none;
        }

        #b612 .hero-star--a { left: 18px; top: 112px; }
        #b612 .hero-star--b { display: none; }
        #b612 .hero-star--c { right: 40px; top: 142px; }
        #b612 .hero-star--d { right: 30px; top: 332px; }

        #b612 .showcase {
            background: #e4ddd3;
            padding: 30px;
            border-radius: 14px;
            margin: 24px 10px 0;
        }

        #b612 .grid {
            display: grid;
            grid-template-columns: 1fr 1fr 1fr;
            gap: 30px;
        }

        /* 用户提供的 B612 布局样式（作用于现有结构） */
        #b612 {
            --bg: #f6f2ea;
            --text: #494239;
            --gold: #c8a24f;
        }

        #b612 .hero {
            position: relative;
            min-height: 720px;
            margin: 10px;
            padding: 40px 70px;
            border-radius: 18px;
            background: transparent;
            overflow: hidden;
            z-index: 2;
        }

        #b612 .topbar {
            display: flex;
            justify-content: space-between;
        }

        #b612 .brand-title {
            font-family: "Parisienne", cursive;
            font-size: 80px;
        }

        #b612 .brand-subtitle {
            font-family: "Cormorant Garamond", serif;
            letter-spacing: 2px;
            color: #7d7469;
        }

        #b612 .nav {
            display: flex;
            gap: 30px;
            font-family: "EB Garamond", serif;
        }

        #b612 .nav a {
            text-decoration: none;
            color: #5b5349;
            font-size: 22px;
        }

        #b612 .nav a.active {
            border-bottom: 3px solid var(--gold);
        }

        #b612 .hero-center {
            max-width: 800px;
            margin: 0 auto 0;
            text-align: center;
        }

        #b612 .main-title {
            font-size: 32px;
            line-height: 1.7;
        }

        #b612 .divider {
            display: flex;
            justify-content: center;
            gap: 10px;
            margin: 20px 0;
        }

        #b612 .divider span {
            width: 60px;
            height: 1px;
            background: rgba(200, 162, 79, .4);
        }

        #b612 .sub-line {
            font-size: 22px;
            color: #595146;
        }

        #b612 .small-line {
            font-size: 16px;
            color: #8b8174;
        }

        #b612 .hint {
            margin-top: 20px;
            color: #9f9689;
        }

        #b612 .wish-box {
            margin-top: 108px;
        }

        #b612 .wish-label {
            color: #b1844b;
            margin-bottom: 10px;
        }

        #b612 .wish-card {
            border-radius: 16px;
            padding: 20px;
            background: rgba(255, 255, 255, .3);
            position: relative;
        }

        #b612 .wish-card span {
            display: block;
            height: 1px;
            background: rgba(193, 161, 102, .4);
            margin: 15px 0;
        }

        #b612 .wish-card textarea {
            position: static !important;
            inset: auto !important;
            width: 100% !important;
            height: 158px !important;
            padding: 2px 6px !important;
            border: none !important;
            background: transparent !important;
            color: #5a5248 !important;
            resize: none !important;
            outline: none !important;
            font: inherit !important;
            line-height: 26px !important;
            position: relative !important;
            z-index: 2 !important;
        }

        #b612 .wish-star {
            margin-top: 10px;
            margin-left: auto;
            width: 42px;
            height: 42px;
            border: none;
            border-radius: 50%;
            background: rgba(200, 162, 79, .16);
            color: #8b6f38;
            cursor: pointer;
            display: grid;
            place-items: center;
            font-size: 20px;
        }

        #b612 .hero-illustration {
            position: absolute;
            right: 0;
            bottom: 34px;
            width: 420px;
        }

        #b612 .hero-illustration img {
            width: 100%;
        }

        .b612-marginal {
            position: absolute;
            z-index: 0;
            margin: 0;
            font-family: var(--font-hand), 'Noto Serif SC', 'Songti SC', serif;
            font-size: 0.7rem;
            font-style: italic;
            font-weight: 400;
            letter-spacing: 0.06em;
            line-height: 1.5;
            color: rgba(82, 78, 70, 0.22);
            max-width: 12em;
            pointer-events: none;
            user-select: none;
        }

        .b612-marginal--rose {
            display: none;
        }

        .b612-marginal--desert {
            display: none;
        }

        .b612-marginal--sunset {
            bottom: clamp(5rem, 18vh, 9rem);
            left: clamp(0.25rem, 3vw, 2rem);
            transform: rotate(-12deg);
            transform-origin: left bottom;
        }

        .b612-section {
            position: relative;
            z-index: 1;
            max-width: 520px;
            margin: 2.5rem auto 4rem;
            padding: 0 0.5rem;
            display: flex;
            flex-direction: column;
            align-items: stretch;
        }

        /* 侧注：小字 + 星号，不居中 */
        .b612-section__note {
            display: flex;
            flex-direction: column;
            align-items: flex-start;
            gap: 0.12rem;
            align-self: flex-end;
            margin-right: 6%;
            margin-bottom: 1.35rem;
            width: fit-content;
        }

        .b612-section__glyph {
            display: inline-block;
            width: 3px;
            height: 3px;
            border-radius: 999px;
            background: radial-gradient(circle at 36% 32%, rgba(255, 255, 255, 0.7), rgba(240, 236, 224, 0.46) 62%, rgba(226, 216, 194, 0.22) 100%);
            box-shadow:
                0 0 3px rgba(255, 255, 255, 0.3),
                0 0 6px rgba(255, 245, 220, 0.18);
            transform: rotate(-11deg) translate(0.2em, 0.05em);
            opacity: 0.58;
            user-select: none;
        }

        .b612-section__tape {
            position: relative;
            display: inline-block;
            padding: 0.22rem 0.5rem 0.32rem;
            margin-top: 0.06rem;
            transform: rotate(-2deg);
        }

        .b612-section__tape::before {
            content: '';
            position: absolute;
            z-index: -1;
            left: -7px;
            right: -7px;
            top: -3px;
            bottom: -5px;
            background: linear-gradient(188deg, rgba(255, 248, 212, 0.5), rgba(248, 236, 195, 0.38));
            clip-path: polygon(
                4% 0%,
                94% 0%,
                100% 6%,
                98% 20%,
                100% 38%,
                97% 54%,
                100% 70%,
                98% 86%,
                99% 100%,
                6% 100%,
                0% 94%,
                2% 78%,
                0% 58%,
                3% 42%,
                0% 24%,
                2% 8%,
                4% 0%
            );
            box-shadow: 0 1px 2px rgba(70, 64, 48, 0.05);
        }

        .b612-section__tape h2 {
            font-family: var(--font-hand), 'Noto Serif SC', 'Songti SC', serif;
            font-size: 0.68rem;
            font-weight: 500;
            color: rgba(90, 86, 72, 0.62);
            letter-spacing: 0.28em;
            margin: 0;
            text-align: left;
            position: relative;
            z-index: 0;
        }

        .b612-section__lead {
            font-size: 0.88rem;
            color: rgba(60, 50, 40, 0.72);
            text-align: center;
            margin: 0 auto 2rem;
            max-width: min(90vw, 30rem);
            min-height: 8.8rem;
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            gap: 0.52rem;
            line-height: 1.82;
            letter-spacing: 0.03em;
            animation: b612HeroFadeIn 1.1s ease-out both, b612HeroBreath 3s ease-in-out 1.2s infinite;
        }

        .b612-section__lead-line {
            display: block;
        }

        .b612-section__lead-main {
            font-family: var(--font-hand), 'Noto Serif SC', 'Songti SC', 'STSong', serif;
            font-size: clamp(0.98rem, 2vw, 1.2rem);
            font-weight: 400;
            color: rgba(60, 50, 40, 0.8);
            letter-spacing: 0.025em;
        }

        .b612-section__lead-sub {
            font-family: var(--font-hand), 'Noto Serif SC', 'Songti SC', 'STSong', serif;
            font-size: clamp(0.9rem, 1.8vw, 1.06rem);
            color: rgba(60, 50, 40, 0.76);
            letter-spacing: 0.03em;
        }

        .b612-section__lead-quote {
            font-family: var(--font-hand), 'Noto Serif SC', 'Songti SC', serif;
            font-style: italic;
            font-size: clamp(0.7rem, 1.2vw, 0.8rem);
            color: rgba(108, 100, 88, 0.58);
            letter-spacing: 0.06em;
            margin-top: 0.18rem;
        }

        .b612-glow-word {
            display: inline-block;
            color: #b7a25d;
            text-shadow: 0 0 0 rgba(224, 193, 95, 0);
            animation: b612MicroGlow 3s ease-in-out infinite;
        }

        @keyframes b612HeroFadeIn {
            from {
                opacity: 0;
                transform: translateY(8px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        @keyframes b612HeroBreath {
            0%, 100% {
                opacity: 0.92;
            }
            50% {
                opacity: 1;
            }
        }

        @keyframes b612MicroGlow {
            0%, 62%, 100% {
                text-shadow: 0 0 0 rgba(224, 193, 95, 0);
                filter: brightness(1);
            }
            70% {
                text-shadow:
                    0 0 6px rgba(236, 205, 112, 0.38),
                    0 0 12px rgba(236, 205, 112, 0.2);
                filter: brightness(1.06);
            }
            82% {
                text-shadow:
                    0 0 3px rgba(236, 205, 112, 0.22),
                    0 0 8px rgba(236, 205, 112, 0.14);
                filter: brightness(1.02);
            }
        }

        @media (prefers-reduced-motion: reduce) {
            .b612-section__lead {
                animation: b612HeroFadeIn 0.25s ease-out both;
            }

            .b612-glow-word {
                animation: none;
            }
        }

        .b612-chat {
            position: relative;
            margin: 0 auto 1.5rem;
            max-width: 520px;
            width: 100%;
            box-sizing: border-box;
            padding: 0;
        }

        .b612-chat__list {
            max-height: min(40vh, 320px);
            overflow-y: scroll;
            overflow-x: hidden;
            width: 100%;
            box-sizing: border-box;
            padding: 0.25rem 0.15rem;
            display: flex;
            flex-direction: column;
            gap: 12px;
            scrollbar-width: thin;
            scrollbar-gutter: stable;
        }

        .b612-chat__list:empty {
            overflow-y: hidden;
        }

        .b612-chat__side-avatar {
            display: none;
        }

        .b612-chat__side-avatar--left {
            left: 0;
        }

        .b612-chat__side-avatar--right {
            right: 0;
        }

        .b612-chat__side-avatar img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            display: block;
        }

        .b612-chat__empty {
            margin: 0.25rem 0 0;
            font-size: 0.78rem;
            color: rgba(120, 114, 102, 0.58);
            letter-spacing: 0.08em;
            text-align: center;
            user-select: none;
        }

        .b612-chat__msg {
            display: flex;
            align-items: start;
            gap: 0.72rem;
            width: 100%;
        }

        .b612-chat__msg--user {
            justify-content: flex-start;
            flex-direction: row-reverse;
        }

        .b612-chat__msg--assistant {
            justify-content: flex-start;
        }

        .b612-chat__avatar {
            width: 44px;
            height: 44px;
            flex: 0 0 44px;
            border-radius: 999px;
            overflow: hidden;
            border: 1px solid rgba(140, 132, 116, 0.22);
            box-shadow: none;
            background: transparent;
            display: grid;
            place-items: center;
        }

        .b612-chat__avatar img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            object-position: center;
            display: block;
        }

        /* 用户侧玫瑰圆图（letter3 等）：仅显示圆内画意，去掉方形画布边角 */
        .b612-chat__avatar--user {
            overflow: hidden;
            background: radial-gradient(circle closest-side, rgba(255, 252, 245, 0.95), rgba(253, 248, 236, 0.88));
        }

        .b612-chat__avatar--user img {
            border-radius: 50%;
            object-fit: cover;
            object-position: center center;
            transform: scale(1.06);
            transform-origin: center center;
            clip-path: circle(50% at 50%);
        }

        .b612-chat__avatar-fallback {
            font-family: var(--font-hand), 'Ma Shan Zheng', 'Noto Serif SC', serif;
            font-size: 22px;
            color: rgba(95, 86, 72, 0.62);
            transform: rotate(-6deg);
        }

        .b612-chat__text {
            display: block;
            white-space: pre-wrap;
            word-break: break-word;
        }

        /* 气泡：共用排版，背景/宽度/内边距由角色选择器承担 */
        .b612-chat__bubble {
            box-sizing: border-box;
            border: none;
            box-shadow: none;
            backdrop-filter: none;
            -webkit-backdrop-filter: none;
            font-family: var(--font-hand), 'Noto Serif SC', 'Songti SC', 'Microsoft YaHei', serif;
            letter-spacing: 0.02em;
            color: rgba(72, 62, 48, 0.9);
            white-space: pre-wrap;
            word-break: break-word;
            position: relative;
        }

        .b612-chat__bubble::before {
            content: none;
        }

        .b612-chat__msg--assistant .b612-chat__bubble {
            background: #F3ECDD;
            border-radius: 16px;
            padding: 14px 18px;
            font-size: 14px;
            line-height: 1.7;
            max-width: 70%;
            width: fit-content;
        }

        .b612-chat__msg--user .b612-chat__bubble {
            background: #FFF6DF;
            border-radius: 16px;
            padding: 12px 16px;
            max-width: 65%;
            width: fit-content;
            font-size: 14px;
            line-height: 1.7;
        }

        .b612-chat__msg--user .b612-chat__bubble::before {
            content: none;
        }

        .b612-chat__meta {
            font-size: 10px;
            color: rgba(126, 116, 102, 0.42);
            letter-spacing: 0.06em;
            margin-top: 0.25rem;
            opacity: 0.0;
            transition: opacity 0.25s ease;
        }

        .b612-chat__bubble:hover .b612-chat__meta,
        .b612-chat__bubble:focus-within .b612-chat__meta {
            opacity: 1;
        }

        .b612-chat__list::-webkit-scrollbar {
            width: 6px !important;
            height: 6px !important;
            display: block !important;
        }

        .b612-chat__list::-webkit-scrollbar-thumb {
            background: rgba(120, 110, 92, 0.20);
            border-radius: 999px;
        }

        .b612-chat__list::-webkit-scrollbar-track {
            background: transparent;
        }

        .b612-chat__list::-webkit-scrollbar-button,
        .b612-chat__list::-webkit-scrollbar-corner {
            display: none;
            width: 0;
            height: 0;
            background: transparent;
        }

        .b612-chat__msg--enter {
            animation: b612FadeIn 0.5s ease both;
        }

        .b612-chat__msg--enter.b612-chat__msg--assistant {
            animation-duration: 0.62s;
        }

        @keyframes b612FadeIn {
            from {
                opacity: 0;
                transform: translateY(6px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        .b612-mailbox {
            text-align: center;
        }

        .b612-mailbox__label {
            display: block;
            font-size: 0.8rem;
            letter-spacing: 0.2em;
            color: rgba(60, 58, 52, 0.55);
            margin-bottom: 0.65rem;
            text-transform: uppercase;
        }

        .b612-mailbox__input-wrap {
            position: relative;
            padding: 0.35rem 0 1.1rem;
            margin-bottom: 1.25rem;
            text-align: left;
            background: transparent;
            border: none;
            box-shadow: none;
            backdrop-filter: none;
            border-radius: 0;
        }

        /* 稿纸感：输入区下方几条长短不一的淡横线 */
        .b612-mailbox__input-wrap::before {
            content: '';
            position: absolute;
            left: 0;
            right: 0;
            bottom: 0;
            height: 5.5rem;
            pointer-events: none;
            background-repeat: no-repeat;
            background-image:
                linear-gradient(to right, rgba(120, 115, 100, 0.2) 0 72%, transparent 72%),
                linear-gradient(to right, rgba(120, 115, 100, 0.14) 0 94%, transparent 94%),
                linear-gradient(to right, rgba(120, 115, 100, 0.17) 0 58%, transparent 58%),
                linear-gradient(to right, rgba(120, 115, 100, 0.13) 0 86%, transparent 86%),
                linear-gradient(to right, rgba(120, 115, 100, 0.16) 0 79%, transparent 79%);
            background-size:
                100% 1px,
                100% 1px,
                100% 1px,
                100% 1px,
                100% 1px;
            background-position:
                0 0.2rem,
                0 1.35rem,
                0 2.5rem,
                0 3.65rem,
                0 4.8rem;
        }

        .b612-mailbox textarea {
            width: 100%;
            min-height: 108px;
            border: none;
            outline: none;
            resize: vertical;
            background: transparent;
            box-shadow: none;
            font-family: var(--font-hand), 'Noto Serif SC', 'Songti SC', 'Microsoft YaHei', serif;
            font-size: 0.98rem;
            line-height: 1.75;
            color: rgba(136, 136, 136, 0.6);
            position: relative;
            z-index: 3;
            pointer-events: auto;
            caret-color: rgba(122, 96, 62, 0.9);
        }

        .b612-mailbox textarea::placeholder {
            color: rgba(136, 136, 136, 0.6);
            opacity: 1;
            font-style: italic;
        }

        .b612-mailbox textarea::-webkit-input-placeholder {
            color: rgba(136, 136, 136, 0.6);
            opacity: 1;
        }

        .b612-mailbox textarea::-moz-placeholder {
            color: rgba(136, 136, 136, 0.6);
            opacity: 1;
        }

        .b612-mailbox textarea.b612-message-input--flying {
            opacity: 0.2;
            transition: opacity 0.55s ease;
            pointer-events: none;
        }

        .b612-mailbox__btn {
            position: relative;
            display: none !important;
            align-items: center;
            justify-content: center;
            padding: 0.95rem 1.85rem;
            margin-top: 0.15rem;
            font-family: var(--font-hand), 'Noto Serif SC', 'Songti SC', serif;
            font-size: 0.95rem;
            letter-spacing: 0.12em;
            color: rgba(61, 69, 56, 0.88);
            background: transparent;
            border: none;
            box-shadow: none;
            cursor: pointer;
            transition: color 0.35s ease, transform 0.35s ease;
        }

        .b612-mailbox__btn-text {
            position: relative;
            z-index: 1;
            display: inline-flex;
            align-items: center;
            justify-content: center;
        }

        .b612-mailbox__btn-icon {
            display: block;
            transform: rotate(-4deg);
            opacity: 0.9;
        }

        /* 手绘圈：略扁、断续、带轻微毛刺（SVG filter） */
        .b612-mailbox__btn-ring {
            position: absolute;
            left: 50%;
            top: 50%;
            width: calc(100% + 28px);
            height: calc(100% + 14px);
            transform: translate(-50%, -50%);
            pointer-events: none;
            overflow: visible;
            color: rgba(88, 82, 68, 0.42);
        }

        .b612-mailbox__btn-ring path {
            stroke: currentColor;
            stroke-width: 1.35;
            fill: none;
            stroke-linecap: round;
            stroke-linejoin: round;
            stroke-dasharray: 18 5 9 6 14 4 22 5 11 7;
        }

        .b612-mailbox__btn:hover:not(:disabled) {
            color: rgba(61, 82, 52, 0.92);
            transform: translateY(-1px);
        }

        .b612-mailbox__btn:hover:not(:disabled) .b612-mailbox__btn-ring {
            color: rgba(107, 122, 88, 0.55);
            animation: b612-ring-ritual 0.52s ease-in-out infinite alternate;
        }

        @keyframes b612-ring-ritual {
            0% {
                transform: translate(-50%, -50%) rotate(-1.4deg);
            }
            35% {
                transform: translate(calc(-50% + 1px), calc(-50% - 0.5px)) rotate(1.2deg);
            }
            70% {
                transform: translate(calc(-50% - 0.5px), calc(-50% + 0.5px)) rotate(-1deg);
            }
            100% {
                transform: translate(-50%, -50%) rotate(1.5deg);
            }
        }

        .b612-mailbox__btn:focus-visible {
            outline: 2px solid rgba(139, 155, 122, 0.5);
            outline-offset: 5px;
            border-radius: 2px;
        }

        .b612-mailbox__btn:focus-visible .b612-mailbox__btn-ring {
            color: rgba(107, 122, 88, 0.65);
        }

        .b612-mailbox__btn:disabled {
            opacity: 0.5;
            cursor: wait;
        }

        .b612-mailbox__btn:disabled .b612-mailbox__btn-ring {
            animation: none;
            color: rgba(88, 82, 68, 0.22);
        }

        .b612-story-modal,
        .b612-chat-modal {
            position: fixed;
            inset: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 1.2rem;
            background: rgba(58, 52, 44, 0.38);
            backdrop-filter: blur(10px);
            -webkit-backdrop-filter: blur(10px);
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.3s ease;
            z-index: 1200;
        }

        .b612-story-modal.active,
        .b612-chat-modal.active {
            opacity: 1;
            pointer-events: auto;
        }

        .b612-story-modal__panel {
            width: min(520px, calc(100vw - 2rem));
            background: #F8F4ED;
            border-radius: 20px;
            box-shadow: 0 24px 52px rgba(42, 33, 20, 0.24);
            padding: 1.55rem 1.45rem 1.35rem;
            text-align: center;
            transform: scale(0.94);
            opacity: 0;
            transition: transform 0.3s ease, opacity 0.3s ease;
            overflow: hidden;
        }

        .b612-story-modal.active .b612-story-modal__panel,
        .b612-chat-modal.active .b612-chat-modal__panel {
            transform: scale(1);
            opacity: 1;
        }

        .b612-story-modal__chapter {
            margin: 0;
            color: rgba(168, 135, 70, 0.88);
            font-size: 0.78rem;
            letter-spacing: 0.18em;
            text-transform: uppercase;
        }

        .b612-story-modal__title {
            margin: 0.4rem 0 0;
            color: rgba(86, 70, 48, 0.94);
            font-size: 1.5rem;
            font-family: var(--font-serif), 'Noto Serif SC', serif;
            font-weight: 500;
            letter-spacing: 0.03em;
        }

        .b612-story-modal__illustration {
            margin: 0.95rem auto 0.9rem;
            width: min(370px, 90%);
            line-height: 0;
            position: relative;
            overflow: hidden;
        }

        .b612-story-modal__illustration img {
            width: 100%;
            display: block;
            height: auto;
            background: transparent;
            filter: none;
            mix-blend-mode: normal;
            transform: translateX(56px) scale(2);
            transform-origin: left bottom;
        }

        .b612-story-modal__sparkle {
            position: absolute;
            color: rgba(230, 196, 118, 0.82);
            text-shadow: 0 0 10px rgba(232, 197, 120, 0.42);
            animation: b612Sparkle 3.2s ease-in-out infinite;
            user-select: none;
            pointer-events: none;
        }

        .b612-story-modal__sparkle--s1 { left: 12%; top: 14%; font-size: 0.75rem; }
        .b612-story-modal__sparkle--s2 { right: 16%; top: 8%; font-size: 0.9rem; animation-delay: 1s; }
        .b612-story-modal__sparkle--s3 { left: 22%; bottom: 16%; font-size: 0.68rem; animation-delay: 1.8s; }
        .b612-story-modal__sparkle--s4 { right: 12%; bottom: 10%; font-size: 0.72rem; animation-delay: 2.2s; }

        @keyframes b612Sparkle {
            0%, 100% { opacity: 0.35; transform: scale(0.94); }
            50% { opacity: 1; transform: scale(1.06); }
        }

        .b612-story-modal__guide {
            margin: 0;
            color: rgba(86, 70, 48, 0.88);
            font-size: 0.98rem;
            letter-spacing: 0.03em;
        }

        .b612-story-modal__composer {
            margin-top: 1rem;
            display: flex;
            flex-direction: column;
            gap: 0.75rem;
            align-items: center;
        }

        .b612-story-modal__input {
            width: min(460px, 94%);
            height: 52px;
            border-radius: 16px;
            border: 1px solid rgba(168, 148, 102, 0.18);
            background: #f7f2e9;
            color: rgba(88, 70, 45, 0.88);
            padding: 0 0.95rem;
            outline: none;
            font-size: 0.96rem;
            transition: border-color 0.2s ease, box-shadow 0.2s ease;
        }

        .b612-story-modal__input::placeholder {
            color: rgba(128, 114, 90, 0.58);
        }

        .b612-story-modal__input:focus {
            border-color: rgba(203, 171, 101, 0.68);
            box-shadow: 0 0 0 3px rgba(225, 196, 129, 0.2);
        }

        .b612-story-modal__send {
            border: none;
            border-radius: 999px;
            padding: 0.66rem 1.28rem;
            font-family: inherit;
            font-size: 0.92rem;
            color: #9A7F4A;
            background: linear-gradient(180deg, #FCF4E4 0%, #F3E4BC 100%);
            box-shadow: 0 6px 14px rgba(196, 168, 108, 0.16);
            cursor: pointer;
            transition: transform 0.22s ease, box-shadow 0.22s ease, background 0.22s ease;
        }

        .b612-story-modal__send:hover:not(:disabled) {
            transform: translateY(-2px);
            background: linear-gradient(180deg, #FAF0DC 0%, #EFE0B8 100%);
            box-shadow: 0 10px 18px rgba(196, 168, 108, 0.2);
        }

        .b612-story-modal__send:active:not(:disabled) {
            transform: scale(0.97);
        }

        .b612-story-modal__send:focus-visible {
            outline: 2px solid rgba(167, 133, 70, 0.55);
            outline-offset: 2px;
        }

        .b612-chat-modal__send {
            box-sizing: border-box;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            height: 40px;
            padding: 0 14px;
            border: none;
            border-radius: 20px;
            font-family: inherit;
            font-size: 14px;
            color: #9A7F4A;
            background: linear-gradient(180deg, #FCF4E4 0%, #F3E4BC 100%);
            box-shadow: 0 4px 10px rgba(196, 168, 108, 0.14);
            cursor: pointer;
            transition: background 0.2s ease, box-shadow 0.2s ease;
            flex-shrink: 0;
        }

        .b612-chat-modal__send:hover:not(:disabled) {
            background: linear-gradient(180deg, #FAF0DC 0%, #EFE0B8 100%);
            box-shadow: 0 6px 12px rgba(196, 168, 108, 0.18);
        }

        .b612-chat-modal__send:active:not(:disabled) {
            background: linear-gradient(180deg, #F5EBD4 0%, #E9D9B0 100%);
        }

        .b612-chat-modal__send:focus-visible {
            outline: 2px solid rgba(140, 110, 60, 0.55);
            outline-offset: 2px;
        }

        .b612-chat-modal__panel {
            width: min(560px, calc(100vw - 32px));
            max-height: min(68vh, 488px);
            background-color: #f7f2e7;
            background-image: url('bb.png');
            background-position: center;
            background-size: cover;
            background-repeat: no-repeat;
            border-radius: 20px;
            box-shadow: 0 24px 48px rgba(70, 50, 30, 0.16);
            padding: 16px 20px;
            display: flex;
            flex-direction: column;
            gap: 12px;
            box-sizing: border-box;
            transform: scale(0.94);
            opacity: 0;
            transition: transform 0.3s ease, opacity 0.3s ease;
        }

        .b612-chat-modal__header {
            display: flex;
            justify-content: flex-end;
            align-items: center;
            flex-shrink: 0;
            gap: 12px;
            margin: 0;
            padding: 0;
            min-height: 32px;
        }

        .b612-chat-modal__close {
            border: none;
            background: transparent;
            width: 32px;
            height: 32px;
            border-radius: 50%;
            cursor: pointer;
            color: rgba(98, 82, 56, 0.72);
            font-size: 20px;
            line-height: 1;
            flex-shrink: 0;
        }

        .b612-chat-modal__close:hover {
            background: rgba(209, 187, 142, 0.16);
        }

        .b612-chat-modal__messages {
            flex: 1;
            min-height: 0;
            display: flex;
            flex-direction: column;
            gap: 8px;
        }

        .b612-chat-modal__gen-status {
            font-size: 13px;
            color: rgba(100, 88, 72, 0.78);
            text-align: center;
            margin: 0;
            min-height: 0;
            letter-spacing: 0.04em;
        }

        .b612-chat-modal__gen-status:not([hidden]) {
            margin-bottom: 0;
        }

        .b612-chat-modal__messages-scroll {
            flex: 1;
            min-height: 0;
            display: flex;
            flex-direction: column;
            overflow: hidden;
        }

        .b612-chat-modal__messages-scroll .b612-chat__list {
            flex: 1;
            min-height: 0;
            overflow-x: hidden;
            overflow-y: auto;
            padding: 0 8px 8px 0;
            -webkit-overflow-scrolling: touch;
            overscroll-behavior: contain;
            touch-action: pan-y;
        }

        .b612-chat-modal__messages-scroll .b612-chat__empty {
            flex-shrink: 0;
            padding: 8px 0 0;
            margin: 0;
        }

        .b612-chat-modal__footer {
            flex-shrink: 0;
            margin: 0;
            padding: 0;
            display: flex;
            flex-direction: column;
            gap: 0;
            width: 100%;
            box-sizing: border-box;
        }

        .b612-chat-modal__toolbar {
            flex-shrink: 0;
            box-sizing: border-box;
            height: 40px;
            margin: 0;
            padding: 0 16px;
            display: flex;
            align-items: center;
            justify-content: space-between;
            background: #f1efe8;
            border-top: 0.5px solid rgba(0, 0, 0, 0.08);
        }

        .b612-chat-modal__tool-btn {
            margin: 0;
            padding: 0;
            border: none;
            background: transparent;
            font-family: inherit;
            font-size: 12px;
            color: #ba7517;
            letter-spacing: 0.04em;
            cursor: pointer;
            transition: opacity 0.2s ease;
        }

        .b612-chat-modal__tool-btn:hover {
            opacity: 0.7;
        }

        .b612-chat-modal__tool-btn:focus-visible {
            outline: 2px solid rgba(186, 117, 23, 0.45);
            outline-offset: 2px;
            border-radius: 4px;
        }

        .b612-chat-modal__composer {
            display: flex;
            flex-direction: row;
            gap: 12px;
            align-items: center;
            margin: 0;
            padding: 0;
            width: 100%;
            box-sizing: border-box;
        }

        .b612-chat-modal__composer .b612-chat-modal__send {
            flex-shrink: 0;
        }

        .b612-chat-modal__input {
            flex: 1;
            min-width: 0;
            width: auto;
            height: 44px;
            min-height: 44px;
            border-radius: 28px;
            border: 1px solid rgba(182, 168, 130, 0.45);
            background: #F3ECDD;
            color: rgba(88, 70, 45, 0.88);
            padding: 0 16px;
            outline: none;
            font-size: 14px;
            line-height: 1.35;
            box-sizing: border-box;
            font-family: inherit;
        }

        .b612-chat-modal__input::placeholder {
            color: #B8A98A;
            opacity: 1;
        }

        .b612-chat-modal__input::-webkit-input-placeholder {
            color: #B8A98A;
        }

        .b612-chat-modal__input:focus {
            border-color: rgba(168, 140, 88, 0.55);
            box-shadow: 0 0 0 3px rgba(232, 201, 143, 0.35);
        }

        /* 单行输入横条：占满剩余宽度 */
        #b612ChatModal .b612-chat-modal__input {
            flex: 1;
            min-width: 0;
        }

        .b612-open-dialog {
            margin: 0.65rem auto 0.25rem;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 0.45rem;
            border-radius: 999px;
            padding: 0.56rem 1.05rem;
            border: 1px solid rgba(210, 175, 95, 0.22);
            background: rgba(248, 242, 231, 0.62);
            color: rgba(96, 74, 34, 0.9);
            letter-spacing: 0.08em;
            cursor: pointer;
            transition: transform 0.22s ease, box-shadow 0.22s ease, background 0.22s ease;
        }

        .b612-open-dialog:hover {
            transform: translateY(-1px);
            background: rgba(248, 242, 231, 0.8);
            box-shadow: 0 10px 20px rgba(154, 116, 40, 0.12);
        }

        .b612-open-dialog:active {
            transform: scale(0.98);
        }

        .b612-open-dialog:focus-visible {
            outline: 2px solid rgba(203, 171, 101, 0.55);
            outline-offset: 3px;
        }

        .b612-inline-entry {
            margin: 30px auto 0.25rem;
            width: min(520px, 94%);
            display: flex;
            flex-direction: column;
            gap: 16px;
            align-items: center;
            justify-content: center;
            padding: 0;
        }

        .b612-inline-entry__wrap {
            position: relative;
            width: 420px;
            border-radius: 18px;
            border: 1px solid rgba(208, 171, 102, 0.16);
            background: rgba(255, 253, 247, 0.72);
            overflow: hidden;
            box-shadow:
                inset 0 0 18px rgba(255, 255, 255, 0.7),
                0 10px 28px rgba(120, 90, 50, 0.08);
            backdrop-filter: blur(4px);
            -webkit-backdrop-filter: blur(4px);
            transition: all 0.3s ease;
        }

        .b612-inline-entry__wrap::before {
            content: none;
        }

        .b612-inline-entry__input {
            width: 100%;
            height: 96px;
            border: none;
            background: transparent;
            color: #6b5a45;
            padding: 18px 22px;
            outline: none;
            font-size: 16px;
            resize: none;
            line-height: 1.5;
            font-family: "KaiTi", "STKaiti", serif;
            box-sizing: border-box;
        }

        .b612-inline-entry__input::placeholder {
            color: rgba(110, 90, 65, 0.45);
        }

        .b612-inline-entry__wrap:focus-within {
            border-color: rgba(198, 145, 54, 0.45);
            box-shadow:
                0 0 0 4px rgba(214, 166, 77, 0.08),
                0 14px 32px rgba(120, 90, 50, 0.12);
        }

        .b612-inline-entry__send {
            border: none;
            border-radius: 999px;
            padding: 10px 26px;
            font-family: inherit;
            font-size: 15px;
            color: #9A7F4A;
            background: linear-gradient(135deg, #FCF4E4 0%, #F3E4BC 100%);
            box-shadow: 0 6px 16px rgba(196, 168, 108, 0.14);
            cursor: pointer;
            transition: all 0.25s ease;
            white-space: nowrap;
        }

        .b612-inline-entry__send:hover:not(:disabled) {
            transform: translateY(-2px);
            background: linear-gradient(135deg, #FAF0DC 0%, #EFE0B8 100%);
            box-shadow: 0 10px 20px rgba(196, 168, 108, 0.18);
        }

        .b612-inline-entry__send:active:not(:disabled) {
            transform: scale(0.97);
        }

        .b612-inline-entry__send:focus-visible {
            outline: 2px solid rgba(167, 133, 70, 0.55);
            outline-offset: 2px;
        }

        .b612-inline-history-link {
            margin: 4px 0 0;
            padding: 4px 10px;
            border: none;
            background: transparent;
            color: rgba(110, 92, 62, 0.72);
            font-family: inherit;
            font-size: 14px;
            letter-spacing: 0.08em;
            cursor: pointer;
            text-decoration: underline;
            text-underline-offset: 4px;
            text-decoration-color: rgba(198, 166, 98, 0.45);
        }

        .b612-inline-history-link:hover {
            color: rgba(88, 70, 45, 0.92);
        }

        .b612-inline-history-link:focus-visible {
            outline: 2px solid rgba(167, 133, 70, 0.55);
            outline-offset: 3px;
            border-radius: 8px;
        }

        /* B612 对话历史：右侧抽屉 */
        .b612-history-drawer {
            position: fixed;
            inset: 0;
            z-index: 1260;
            pointer-events: none;
            opacity: 0;
            transition: opacity 0.28s ease;
        }

        .b612-history-drawer.active {
            pointer-events: auto;
            opacity: 1;
        }

        .b612-history-drawer__backdrop {
            position: absolute;
            inset: 0;
            background: rgba(58, 52, 44, 0.35);
            backdrop-filter: blur(6px);
            -webkit-backdrop-filter: blur(6px);
        }

        .b612-history-drawer__panel {
            position: absolute;
            top: 0;
            right: 0;
            bottom: 0;
            width: min(400px, 92vw);
            max-height: 100dvh;
            z-index: 1;
            box-sizing: border-box;
            display: flex;
            flex-direction: column;
            background-color: #f8f4ed;
            background-image:
                repeating-linear-gradient(
                    -12deg,
                    rgba(132, 118, 94, 0.04) 0px,
                    rgba(132, 118, 94, 0.04) 1px,
                    transparent 1px,
                    transparent 11px
                ),
                repeating-linear-gradient(
                    82deg,
                    rgba(146, 130, 102, 0.05) 0px,
                    rgba(146, 130, 102, 0.05) 1px,
                    transparent 1px,
                    transparent 9px
                ),
                url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='700' height='700' viewBox='0 0 1400 1400'%3E%3Cdefs%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.92' numOctaves='4' seed='17' stitchTiles='stitch'/%3E%3C/filter%3E%3C/defs%3E%3Crect width='1400' height='1400' filter='url(%23n)' opacity='0.09'/%3E%3C/svg%3E"),
                radial-gradient(420px 280px at 20% 12%, rgba(255, 255, 255, 0.45), transparent 55%),
                linear-gradient(180deg, rgba(255, 252, 244, 0.97), rgba(245, 238, 226, 0.99));
            background-size: 280px 280px, 240px 240px, 420px 420px, auto, auto;
            background-attachment: local, local, local, local, local;
            border-left: 1px solid rgba(210, 190, 150, 0.35);
            border-radius: 18px 0 0 18px;
            box-shadow: -12px 0 40px rgba(42, 33, 20, 0.18);
            transform: translateX(100%);
            transition: transform 0.32s cubic-bezier(0.22, 1, 0.36, 1);
            padding: 2rem;
        }

        .b612-history-drawer.active .b612-history-drawer__panel {
            transform: translateX(0);
        }

        .b612-history-drawer__toolbar {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 10px;
            flex-shrink: 0;
            margin-bottom: 10px;
            padding-bottom: 8px;
            border-bottom: 1px dashed rgba(200, 175, 130, 0.35);
        }

        .b612-history-drawer__brand {
            font-family: 'Noto Serif SC', 'Songti SC', 'STSong', 'Source Han Serif SC', serif;
            font-size: 18px;
            font-weight: 500;
            color: rgba(90, 81, 72, 0.88);
            letter-spacing: 0.04em;
            line-height: 1.35;
        }

        .b612-history-drawer__tools {
            display: flex;
            align-items: center;
            gap: 6px;
        }

        .b612-history-drawer__clear {
            margin: 0;
            padding: 4px 2px;
            border: none;
            border-radius: 0;
            background: transparent;
            color: rgba(140, 118, 72, 0.72);
            font-family: inherit;
            font-size: 11px;
            font-weight: 400;
            letter-spacing: 0.06em;
            cursor: pointer;
            text-decoration: underline;
            text-underline-offset: 3px;
            text-decoration-color: rgba(191, 160, 100, 0.45);
        }

        .b612-history-drawer__clear:hover {
            color: rgba(110, 88, 48, 0.92);
            text-decoration-color: rgba(168, 130, 72, 0.55);
        }

        .b612-history-drawer__clear:focus-visible {
            outline: 2px solid rgba(167, 133, 70, 0.45);
            outline-offset: 2px;
            border-radius: 4px;
        }

        .b612-history-drawer__x {
            border: none;
            background: transparent;
            width: 32px;
            height: 32px;
            border-radius: 50%;
            cursor: pointer;
            color: rgba(98, 82, 56, 0.72);
            font-size: 20px;
            line-height: 1;
        }

        .b612-history-drawer__x:hover {
            background: rgba(209, 187, 142, 0.16);
        }

        .b612-history-drawer__scroll {
            flex: 1;
            min-height: 0;
            overflow-y: auto;
            -webkit-overflow-scrolling: touch;
            padding-right: 4px;
        }

        .b612-history-drawer__scroll--empty {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            text-align: center;
        }

        .b612-history-drawer__scroll::-webkit-scrollbar {
            width: 6px;
        }

        .b612-history-drawer__scroll::-webkit-scrollbar-thumb {
            background: rgba(180, 160, 120, 0.35);
            border-radius: 99px;
        }

        .b612-history-drawer__hint {
            flex-shrink: 0;
            margin: 12px 0 0;
            font-size: 12px;
            font-style: italic;
            color: rgba(110, 98, 82, 0.62);
            text-align: center;
            letter-spacing: 0.03em;
        }

        .b612-history-drawer__empty {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 14px;
            max-width: 260px;
            padding: 12px 8px;
        }

        .b612-history-drawer__empty-icon {
            width: 72px;
            height: 56px;
            color: rgba(168, 140, 88, 0.55);
            flex-shrink: 0;
        }

        .b612-history-drawer__empty-line1,
        .b612-history-drawer__empty-line2 {
            margin: 0;
            font-size: 14px;
            line-height: 1.55;
            color: rgba(90, 82, 72, 0.78);
            letter-spacing: 0.04em;
        }

        .b612-history-drawer__empty-line2 {
            font-size: 13px;
            color: rgba(110, 98, 82, 0.68);
        }

        .b612-history-group {
            margin-bottom: 18px;
        }

        .b612-history-group:last-child {
            margin-bottom: 0;
        }

        .b612-history-group__title {
            margin: 0 0 8px;
            font-size: 13px;
            font-weight: 500;
            color: rgba(140, 118, 82, 0.9);
            letter-spacing: 0.06em;
        }

        .b612-history-item {
            padding-bottom: 12px;
            margin-bottom: 12px;
            border-bottom: 1px solid rgba(0, 0, 0, 0.06);
        }

        .b612-history-group .b612-history-item:last-child {
            border-bottom: none;
            margin-bottom: 0;
            padding-bottom: 0;
        }

        .b612-history-item__row {
            width: 100%;
            text-align: left;
            box-sizing: border-box;
            display: flex;
            flex-wrap: wrap;
            align-items: flex-start;
            justify-content: space-between;
            gap: 8px;
            padding: 10px 12px;
            border: 1px solid rgba(210, 195, 165, 0.4);
            border-radius: 14px;
            background: rgba(255, 255, 255, 0.88);
            cursor: pointer;
            font-family: inherit;
            color: rgba(72, 62, 48, 0.92);
            transition: box-shadow 0.2s ease, border-color 0.2s ease;
        }

        .b612-history-item__row:hover {
            border-color: rgba(198, 166, 98, 0.55);
            box-shadow: 0 4px 14px rgba(120, 90, 50, 0.08);
        }

        .b612-history-item--open .b612-history-item__row {
            border-color: rgba(198, 166, 98, 0.65);
        }

        .b612-history-item__preview {
            flex: 1;
            min-width: 0;
            font-size: 13px;
            line-height: 1.45;
            word-break: break-word;
        }

        .b612-history-item__meta {
            flex-shrink: 0;
            display: flex;
            flex-direction: column;
            align-items: flex-end;
            gap: 4px;
            font-size: 12px;
            color: rgba(110, 98, 82, 0.7);
        }

        .b612-history-item__link {
            font-size: 11px;
            color: rgba(150, 128, 88, 0.85);
            letter-spacing: 0.04em;
        }

        .b612-history-item__detail {
            margin-top: 8px;
            padding: 10px 12px;
            border-radius: 12px;
            background: rgba(255, 252, 244, 0.95);
            border: 1px dashed rgba(200, 175, 130, 0.4);
            font-size: 13px;
            line-height: 1.55;
            color: rgba(72, 62, 48, 0.92);
        }

        .b612-history-item__detail p {
            margin: 0 0 10px;
        }

        .b612-history-item__detail p:last-child {
            margin-bottom: 0;
        }

        .b612-history-item__label {
            display: block;
            font-size: 11px;
            color: rgba(130, 112, 82, 0.75);
            letter-spacing: 0.08em;
            margin-bottom: 4px;
        }

        .b612-history-confirm {
            position: absolute;
            inset: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 16px;
            background: rgba(58, 52, 44, 0.28);
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.22s ease;
            z-index: 2;
        }

        .b612-history-confirm.active {
            opacity: 1;
            pointer-events: auto;
        }

        .b612-history-confirm__card {
            max-width: 300px;
            width: 100%;
            padding: 20px 18px 16px;
            border-radius: 18px;
            background: #fdf9f2;
            border: 1px solid rgba(210, 190, 150, 0.45);
            box-shadow: 0 18px 40px rgba(42, 33, 20, 0.2);
            text-align: center;
        }

        .b612-history-confirm__card p {
            margin: 0 0 16px;
            font-size: 15px;
            color: rgba(72, 62, 48, 0.92);
            line-height: 1.55;
        }

        .b612-history-confirm__actions {
            display: flex;
            gap: 10px;
            justify-content: center;
            flex-wrap: wrap;
        }

        .b612-history-confirm__actions button {
            min-width: 96px;
            padding: 8px 14px;
            border-radius: 999px;
            font-family: inherit;
            font-size: 14px;
            cursor: pointer;
            border: 1px solid rgba(200, 175, 130, 0.55);
            background: rgba(255, 252, 244, 0.9);
            color: rgba(88, 70, 45, 0.9);
        }

        .b612-history-confirm__forget {
            border-color: rgba(190, 140, 110, 0.45) !important;
            background: rgba(255, 244, 238, 0.95) !important;
        }

        /* 离屏截图模板：宽 400px，高度随正文伸缩（避免短回信大块留白） */
        #b612PostcardCaptureRoot {
            position: absolute;
            left: -9999px;
            top: 0;
            width: 400px;
            height: auto;
            min-height: 0;
            overflow: hidden;
            box-sizing: border-box;
            display: flex;
            flex-direction: column;
            font-family: 'Noto Serif SC', 'Songti SC', 'STSong', serif;
            border-radius: 2px;
            box-shadow: none;
        }

        .b612-postcard-cap__header {
            flex: 0 0 auto;
            box-sizing: border-box;
            background: #f1efe8;
            padding: 8px 14px 7px;
            border-bottom: 0.5px solid rgba(0, 0, 0, 0.08);
            display: flex;
            flex-direction: column;
            justify-content: flex-start;
        }

        .b612-postcard-cap__kicker {
            font-size: 10px;
            color: #888780;
            letter-spacing: 0.12em;
            text-transform: uppercase;
            margin: 0 0 3px;
        }

        .b612-postcard-cap__title {
            margin: 0;
            font-size: 15px;
            font-weight: 500;
            color: #2c2c2a;
            letter-spacing: 0.06em;
            line-height: 1.25;
        }

        .b612-postcard-cap__art {
            flex: 0 0 auto;
            box-sizing: border-box;
            min-height: 88px;
            max-height: 100px;
            height: 96px;
            background: #f1efe8;
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 6px 16px;
        }

        .b612-postcard-cap__art img {
            max-width: 100%;
            max-height: 76px;
            width: auto;
            height: auto;
            object-fit: contain;
            display: block;
        }

        .b612-postcard-cap__body {
            flex: 0 0 auto;
            box-sizing: border-box;
            background: #faf7f0;
            padding: 16px 18px 18px;
            font-size: 14px;
            line-height: 1.72;
            color: #444441;
            white-space: pre-wrap;
            word-break: break-word;
            overflow: visible;
        }

        .b612-postcard-cap__footer {
            flex: 0 0 auto;
            box-sizing: border-box;
            min-height: 36px;
            padding: 8px 14px 9px;
            background: #faf7f0;
            border-top: 0.5px solid rgba(0, 0, 0, 0.08);
            display: flex;
            align-items: center;
            justify-content: space-between;
        }

        .b612-postcard-cap__date {
            font-size: 10px;
            color: #888780;
            letter-spacing: 0.04em;
        }

        .b612-postcard-cap__site {
            font-size: 10px;
            color: #ba7517;
            letter-spacing: 0.04em;
        }

        /* 明信片预览弹窗 */
        .b612-postcard-modal {
            position: fixed;
            inset: 0;
            z-index: 1280;
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 20px;
            box-sizing: border-box;
            background: transparent;
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.22s ease;
        }

        .b612-postcard-modal.active {
            opacity: 1;
            pointer-events: auto;
        }

        .b612-postcard-modal__backdrop {
            position: absolute;
            inset: 0;
            background: rgba(0, 0, 0, 0.5);
        }

        .b612-postcard-modal__panel {
            position: relative;
            z-index: 1;
            width: min(360px, calc(100vw - 32px));
            max-height: min(92vh, 640px);
            overflow: auto;
            box-sizing: border-box;
            background: #fff;
            border-radius: 12px;
            padding: 24px;
            box-shadow: 0 20px 48px rgba(0, 0, 0, 0.2);
        }

        .b612-postcard-modal__title {
            margin: 0 0 16px;
            font-family: 'Noto Serif SC', 'Songti SC', 'STSong', serif;
            font-size: 18px;
            font-weight: 500;
            color: rgba(44, 44, 42, 0.92);
            text-align: center;
            letter-spacing: 0.04em;
        }

        .b612-postcard-modal__preview {
            margin: 0 auto 18px;
            text-align: center;
            min-height: 120px;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .b612-postcard-modal__preview canvas {
            width: 280px;
            height: auto;
            max-width: 100%;
            display: block;
            border-radius: 6px;
            box-shadow: 0 6px 20px rgba(42, 33, 20, 0.12);
        }

        .b612-postcard-modal__preview .b612-postcard-modal__loading {
            font-size: 13px;
            color: rgba(110, 98, 82, 0.75);
            letter-spacing: 0.04em;
        }

        .b612-postcard-modal__actions {
            display: flex;
            gap: 12px;
            justify-content: center;
            flex-wrap: wrap;
        }

        .b612-postcard-modal__actions button {
            min-width: 108px;
            padding: 8px 16px;
            border-radius: 999px;
            font-family: inherit;
            font-size: 14px;
            cursor: pointer;
            border: 1px solid rgba(200, 175, 130, 0.55);
            background: rgba(255, 252, 244, 0.95);
            color: rgba(72, 58, 48, 0.9);
        }

        .b612-postcard-modal__actions .b612-postcard-modal__save {
            border-color: rgba(186, 117, 23, 0.45);
            color: #5a3e11;
            background: linear-gradient(180deg, rgba(247, 221, 145, 0.95), rgba(232, 189, 90, 0.95));
        }

        @media (max-width: 620px) {
            .b612-inline-entry {
                width: min(92vw, 420px);
            }
            .b612-inline-entry__wrap {
                width: 100%;
            }
        }

        .ai-rag-assistant {
            position: relative;
            z-index: 4;
            margin-top: 2rem;
            margin-bottom: 0.5rem;
            max-width: min(92vw, 440px);
            margin-left: auto;
            margin-right: auto;
            text-align: left;
        }

        .ai-rag-assistant__title {
            font-family: var(--font-hand), 'Noto Serif SC', serif;
            font-size: 1rem;
            font-weight: 500;
            color: rgba(72, 64, 52, 0.85);
            letter-spacing: 0.12em;
            margin: 0 0 0.35rem;
            text-align: center;
        }

        .ai-rag-assistant__lead {
            font-size: 0.78rem;
            color: rgba(90, 82, 70, 0.55);
            text-align: center;
            margin: 0 0 1rem;
            line-height: 1.5;
        }

        .ai-rag-assistant__entry.b612-inline-entry {
            margin-top: 0.5rem;
        }

        .ai-rag-assistant__status {
            font-size: 0.78rem;
            color: rgba(72, 58, 48, 0.9);
            text-align: center;
            min-height: 1.2em;
            margin: 0.6rem auto 0;
            max-width: 26rem;
            padding: 0.45rem 0.7rem;
            border-radius: 10px;
            background: rgba(255, 252, 246, 0.94);
            box-shadow: 0 1px 10px rgba(50, 38, 22, 0.08);
            line-height: 1.45;
        }

        .ai-rag-assistant__results {
            margin-top: 1.25rem;
            padding: 1rem 1rem 1.1rem;
            border-radius: 12px;
            background: linear-gradient(165deg, rgba(255, 252, 242, 0.55), rgba(248, 238, 220, 0.35));
            box-shadow: 0 2px 14px rgba(80, 60, 30, 0.06), inset 0 1px 0 rgba(255, 255, 255, 0.5);
            border: 1px solid rgba(200, 180, 140, 0.2);
        }

        .ai-rag-assistant__block {
            margin-bottom: 1rem;
        }

        .ai-rag-assistant__block:last-child {
            margin-bottom: 0;
        }

        .ai-rag-assistant__block h4 {
            font-family: var(--font-hand), 'Noto Serif SC', serif;
            font-size: 0.72rem;
            letter-spacing: 0.22em;
            color: rgba(100, 90, 72, 0.55);
            margin: 0 0 0.4rem;
            font-weight: 500;
        }

        .ai-rag-assistant__block p,
        .ai-rag-assistant__analysis {
            font-size: 0.84rem;
            color: rgba(55, 48, 38, 0.82);
            line-height: 1.65;
            margin: 0;
        }

        .ai-rag-assistant__analysis {
            white-space: pre-wrap;
        }

        .ai-rag-assistant__citations {
            list-style: none;
            padding: 0;
            margin: 0;
        }

        .ai-rag-assistant__citations li {
            font-size: 0.78rem;
            color: rgba(65, 58, 48, 0.78);
            line-height: 1.55;
            padding: 0.45rem 0;
            border-bottom: 1px dashed rgba(180, 160, 120, 0.25);
        }

        .ai-rag-assistant__citations li:last-child {
            border-bottom: none;
        }

        .ai-rag-assistant__cite-preview {
            display: block;
            margin-top: 0.25rem;
            font-size: 0.72rem;
            color: rgba(110, 98, 82, 0.7);
        }

        .ai-rag-assistant__empty {
            color: rgba(110, 100, 88, 0.5);
        }

        @media (prefers-reduced-motion: reduce) {
            .b612-mailbox__btn:hover:not(:disabled) .b612-mailbox__btn-ring {
                animation: none;
            }

            .b612-story-modal,
            .b612-story-modal__panel,
            .b612-chat-modal,
            .b612-chat-modal__panel {
                transition: none;
            }
        }

        .b612-mailbox__toast {
            margin-top: 1.15rem;
            min-height: 1.5rem;
            font-family: var(--font-hand), 'Noto Serif SC', 'Songti SC', serif;
            font-size: 0.78rem;
            color: rgba(126, 116, 102, 0.72);
            letter-spacing: 0.08em;
            text-align: center;
            transition: opacity 0.4s ease;
        }

        .b612-mailbox__toast:empty {
            opacity: 0;
        }

        .page {
            display: none;
            animation: fadeIn 0.5s ease;
        }

        .page.active {
            display: block;
        }

        @keyframes fadeIn {
            from {
                opacity: 0;
                transform: translateY(10px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        /* HOME PAGE — 手帐：主标题胶带 + 卡片胶带 + 诗句式引用 + 边注 */
        #home.page {
            position: relative;
            padding-top: 0;
        }

        body.page-home .container {
            padding-top: 0 !important;
        }

        body.page-home header {
            padding: 0 0 0 !important;
            margin-bottom: 0 !important;
        }

        body.page-home .container {
            margin-top: -1.55rem;
        }

        /* Journey 页面整体上移，贴近导航栏 */
        body.page-journey header {
            padding: 1.1rem 0 0.35rem !important;
            margin-bottom: 0 !important;
        }

        body.page-journey .container {
            padding-top: 0.35rem !important;
        }

        .home-journey-cutout {
            position: absolute;
            left: -150px;
            bottom: -170px;
            width: clamp(480px, 60vw, 920px);
            height: auto;
            display: block;
            object-fit: contain;
            transform: scale(1.3);
            transform-origin: center center;
            pointer-events: none;
            user-select: none;
            z-index: 0;
        }

        .home-right-illustration {
            position: absolute;
            right: -180px;
            bottom: -210px;
            width: clamp(260px, 34vw, 500px);
            height: auto;
            display: block;
            object-fit: contain;
            transform: scale(1.3);
            transform-origin: center center;
            pointer-events: none;
            user-select: none;
            z-index: 0;
        }

        /* 板块连接：手绘地图风「旅程路径动效」 */
        .section-flow {
            position: relative;
            height: 66px;
            margin-top: 1rem;
            pointer-events: none;
            opacity: 0;
            animation: sectionFlowFadeIn 0.6s ease-out forwards;
        }

        .section-flow svg {
            width: 100%;
            height: 100%;
            display: block;
            overflow: visible;
            transform-origin: left center;
            animation: sectionFlowDraw 1.2s ease-out forwards;
        }

        .section-flow__path {
            fill: none;
            stroke: rgba(150, 120, 90, 0.35);
            stroke-width: 1.2;
            stroke-linecap: round;
            stroke-dasharray: 2.2 7.8;
            stroke-opacity: 0.95;
        }

        .section-flow__arrow,
        .section-flow__star {
            fill: none;
            stroke: rgba(150, 120, 90, 0.35);
            stroke-width: 1.1;
            stroke-linecap: round;
            stroke-linejoin: round;
            opacity: 0.65;
        }

        .section-flow__dot {
            fill: rgba(180, 140, 90, 0.85);
            filter: drop-shadow(0 0 8px rgba(180, 140, 90, 0.28)) drop-shadow(0 0 18px rgba(180, 140, 90, 0.16));
        }

        .section-flow__tail {
            fill: rgba(180, 140, 90, 0.22);
            filter: blur(0.6px);
            opacity: 0.9;
        }

        .section-flow__note {
            position: absolute;
            right: 3.4rem;
            bottom: -0.1rem;
            font-family: var(--font-hand), 'KaiTi', 'STKaiti', 'Kaiti SC', 'Noto Serif SC', serif;
            font-size: 0.64rem;
            letter-spacing: 0.06em;
            color: rgba(126, 118, 104, 0.42);
            transform: rotate(-3deg);
            white-space: nowrap;
            z-index: 2;
        }

        @keyframes sectionFlowFadeIn {
            from { opacity: 0; }
            to { opacity: 0.72; }
        }

        @keyframes sectionFlowDraw {
            from { transform: scaleX(0); }
            to { transform: scaleX(1); }
        }

        @media (max-width: 768px) {
            .section-flow__dot,
            .section-flow__tail {
                display: none;
            }
        }

        .home-page__intro {
            text-align: center;
            margin-bottom: 0;
            margin-top: 0;
        }

        .home-top-illustration {
            width: clamp(150px, 18vw, 280px);
            height: auto;
            display: block;
            margin: 0 auto 0;
            object-fit: contain;
            transform: scale(1.3);
            transform-origin: center center;
            pointer-events: none;
            user-select: none;
        }

        .home-page__tape {
            --tape-tilt: -2deg;
            position: relative;
            display: inline-block;
            padding: 0;
            margin: 0;
            transform: none;
            isolation: isolate;
        }

        .home-page__tape::before {
            content: none;
        }

        /* 和纸纤维：极轻噪点与细丝纹理 */
        .home-page__tape::after {
            content: none;
        }

        .home-page__heading {
            margin: 0;
            font-size: 3.3rem;
            font-weight: 400;
            color: rgba(92, 86, 78, 0.7);
            letter-spacing: 0.04em;
            font-family: var(--font-hand);
            transform: none;
            line-height: 1.05;
        }

        .home-page__subtitle {
            margin: 0 0 0;
            font-size: 1.02rem;
            letter-spacing: 0.08em;
            color: rgba(201, 162, 79, 0.72);
            font-style: italic;
            font-family: var(--font-en-title), 'Times New Roman', serif;
        }

        .home-marginal {
            position: absolute;
            z-index: 0;
            margin: 0;
            font-family: var(--font-hand), 'Noto Serif SC', 'Songti SC', serif;
            font-size: 0.68rem;
            font-style: italic;
            color: rgba(82, 78, 70, 0.2);
            max-width: 9em;
            line-height: 1.45;
            pointer-events: none;
            user-select: none;
        }

        .home-marginal--tl {
            top: 0.2rem;
            left: 0;
            transform: rotate(13deg);
            transform-origin: left top;
        }

        .home-marginal--tr {
            top: 0.5rem;
            right: 0;
            text-align: right;
            transform: rotate(-11deg);
            transform-origin: right top;
        }

        .home-grid {
            position: relative;
            z-index: 1;
            display: grid;
            grid-template-columns: repeat(4, minmax(0, 188px));
            justify-content: center;
            gap: 0.95rem;
            margin-top: 10px;
        }

        .scene-card {
            --rotate: 0deg;
            --float-y: 0px;
            background: var(--bg-white);
            border-radius: 12px;
            overflow: hidden;
            cursor: pointer;
            transition:
                transform 0.45s cubic-bezier(0.4, 0, 0.2, 1),
                box-shadow 0.45s cubic-bezier(0.4, 0, 0.2, 1),
                filter 0.45s cubic-bezier(0.4, 0, 0.2, 1),
                opacity 0.45s cubic-bezier(0.4, 0, 0.2, 1),
                border-color 0.45s cubic-bezier(0.4, 0, 0.2, 1);
            box-shadow: 0 6px 18px rgba(0, 0, 0, 0.08);
            border: 1px solid rgba(139, 155, 122, 0.1);
            transform: translateY(var(--float-y)) rotate(var(--rotate));
            filter: brightness(1);
        }

        /* 卡片区域 hover：其余卡片轻淡出 + 微缩小，保持安静不夸张 */
        .home-grid:hover .scene-card {
            opacity: 0.72;
            transform: translateY(var(--float-y)) scale(0.98) rotate(var(--rotate));
            filter: brightness(0.995);
        }

        /* 单卡 hover：被风轻轻托起 */
        .home-grid:hover .scene-card:hover,
        .scene-card:hover {
            opacity: 1;
            transform: translateY(calc(var(--float-y) - 8px)) scale(1.03) rotate(var(--rotate));
            box-shadow: 0 18px 42px rgba(0, 0, 0, 0.14);
            border-color: rgba(206, 171, 101, 0.55);
            filter: brightness(1.04);
        }

        .scene-image img {
            transform: scale(1);
            transform-origin: center;
            transition: transform 0.45s cubic-bezier(0.4, 0, 0.2, 1);
            will-change: transform;
        }

        .scene-card:hover .scene-image img,
        .home-grid:hover .scene-card:hover .scene-image img {
            transform: scale(1.06);
        }

        .scene-card.scene-card--leaving {
            pointer-events: none;
            animation: homeJourneyCardLeave 0.42s ease forwards;
        }

        @keyframes homeJourneyCardLeave {
            0% {
                opacity: 1;
                transform: translateY(var(--float-y)) scale(1) rotate(var(--rotate));
                filter: saturate(1);
            }
            100% {
                opacity: 0;
                transform: translateY(var(--float-y)) scale(1.08) rotate(var(--rotate));
                filter: saturate(0.92);
            }
        }

        /* 首页四张故事卡片：轻微错落漂浮（保持整体居中、横排不乱） */
        .home-grid .scene-card:nth-child(1) { --float-y: -8px; --rotate: -1deg; }
        .home-grid .scene-card:nth-child(2) { --float-y: 6px; --rotate: 0.6deg; }
        .home-grid .scene-card:nth-child(3) { --float-y: -4px; --rotate: -0.4deg; }
        .home-grid .scene-card:nth-child(4) { --float-y: 10px; --rotate: 0.8deg; }

        /* 移动端：错落弱化，避免显乱 */
        @media (max-width: 768px) {
            .home-grid .scene-card { --rotate: 0deg; }
            .home-grid .scene-card:nth-child(1) { --float-y: -4px; }
            .home-grid .scene-card:nth-child(2) { --float-y: 3px; }
            .home-grid .scene-card:nth-child(3) { --float-y: -2px; }
            .home-grid .scene-card:nth-child(4) { --float-y: 5px; }
        }

        .scene-image {
            width: 100%;
            height: 206px;
            background: transparent;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 2.5rem;
            color: var(--primary-color);
            position: relative;
        }

        #home .section-flow {
            margin-top: 32px;
        }

        .scene-content {
            padding: 0.94rem 0.9rem 1.08rem;
            text-align: left;
            background: transparent;
        }

        .scene-title-tape {
            --scene-tape-tilt: -2deg;
            position: relative;
            display: inline-block;
            margin-bottom: 0.55rem;
            transform: rotate(var(--scene-tape-tilt));
        }

        .scene-title-tape::before {
            content: none;
        }

        .scene-title {
            font-size: 1.05rem;
            color: var(--primary-color);
            margin: 0;
            font-weight: 500;
            font-family: var(--font-hand);
            position: relative;
            z-index: 0;
            letter-spacing: 0.02em;
        }

        .scene-quote {
            font-size: 0.88rem;
            color: rgba(107, 105, 98, 0.78);
            font-style: italic;
            line-height: 2.5;
            letter-spacing: 0.02em;
            max-width: 100%;
            min-height: 7.5em;
        }

        .scene-quote-line {
            display: block;
        }

        /* 字体与排版系统（不影响插图/背景纹理） */
        #journey .journey-intro h2 {
            font-size: 2rem;
            letter-spacing: 0.04em;
            font-family: var(--font-en-title);
            color: var(--ink);
        }

        #journey .timeline-card h3 {
            font-size: 0.98rem;
            letter-spacing: 1.1px;
            font-weight: 500;
            font-family: var(--font-cn);
            color: var(--ink);
            line-height: 2em;
            padding-left: 0.85rem;
            margin-bottom: 1.05rem;
        }

        #journey .timeline-card h3::before {
            content: '';
            position: absolute;
            left: 0;
            top: 0.2em;
            bottom: 0.2em;
            width: 2px;
            background: var(--ink-accent);
        }

        #journey .timeline-card h3::after {
            content: '';
            position: absolute;
            left: 0;
            top: -0.6rem;
            width: 2rem;
            height: 1px;
            background: var(--ink-accent);
            opacity: 0.9;
        }

        #journey .timeline-card p,
        #storyModal .modal-text {
            font-family: var(--font-cn);
            font-size: 1rem;
            line-height: 2;
            letter-spacing: 0.06em;
            color: var(--ink);
            text-indent: 0 !important;
            margin: 0 0 1.8em;
        }

        /* 正文区域：控制阅读宽度 */
        #storyModal .modal-content {
            max-width: 680px;
        }

        #storyModal .modal-content.modal-content--rose-story {
            --rose-story-gutter: clamp(22px, 4vw, 48px);
            width: min(825px, calc(100vw - 40px));
            max-width: 825px;
            max-height: min(88vh, 940px);
            padding: 42px var(--rose-story-gutter) 54px;
            border-radius: 0;
            border: none;
            outline: none;
            background: transparent;
            box-shadow: none;
            overflow-y: auto;
            overflow-x: hidden;
        }

        #storyModal .modal-content.modal-content--rose-story::before {
            display: none;
        }

        #storyModal .modal-content.modal-content--rose-story::after {
            display: none;
        }

        #storyModal .modal-content.modal-content--rose-story .modal-header {
            margin-bottom: 0;
            padding-bottom: 0;
            display: none;
        }

        #storyModal .modal-content.modal-content--rose-story .modal-title {
            display: none;
        }

        #storyModal .modal-content.modal-content--rose-story .modal-close {
            display: none;
        }

        #storyModal .rose-modal {
            position: relative;
            width: 100%;
            margin: 0 auto;
        }

        #storyModal .rose-modal__decor {
            position: absolute;
            inset: 0;
            pointer-events: none;
            overflow: hidden;
        }

        #storyModal .rose-modal__star,
        #storyModal .rose-modal__planet {
            position: absolute;
            color: rgba(190, 150, 90, 0.35);
            opacity: 0.7;
        }

        #storyModal .rose-modal__star {
            font-size: clamp(12px, 1vw, 18px);
            line-height: 1;
        }

        #storyModal .rose-modal__planet {
            border-radius: 50%;
            background:
                radial-gradient(circle at 35% 35%, rgba(255, 255, 255, 0.3), transparent 40%),
                radial-gradient(circle at 62% 64%, rgba(196, 160, 112, 0.22), rgba(182, 141, 94, 0.06));
            box-shadow: inset 0 0 0 1px rgba(194, 157, 111, 0.1);
        }

        #storyModal .rose-modal__path {
            position: absolute;
            top: 170px;
            left: 50%;
            width: min(760px, 78%);
            height: calc(100% - 260px);
            transform: translateX(-50%);
            opacity: 0.18;
            pointer-events: none;
        }

        #storyModal .rose-modal__path svg {
            width: 100%;
            height: 100%;
        }

        #storyModal .rose-modal__path path {
            fill: none;
            stroke: rgba(181, 145, 93, 0.42);
            stroke-width: 1.2;
            stroke-dasharray: 5 10;
            stroke-linecap: round;
        }

        #storyModal .rose-modal__hero {
            position: relative;
            min-height: unset;
            display: grid;
            place-items: center;
            text-align: center;
            width: 100%;
            margin-inline: calc(var(--rose-story-gutter) * -1);
            padding: 26px var(--rose-story-gutter) 0;
            overflow: hidden;
        }

        #storyModal .rose-modal__hero::before {
            content: "";
            position: absolute;
            left: 0;
            right: 0;
            top: 0;
            bottom: 0;
            border-radius: 0;
            background:
                linear-gradient(rgba(248, 242, 233, 0.10), rgba(248, 242, 233, 0.22)),
                url("about her.png");
            background-position: center top, center top;
            background-repeat: no-repeat, no-repeat;
            background-size: cover, cover;
            box-shadow: none;
            z-index: -1;
        }

        #storyModal .rose-modal__title {
            font-size: clamp(38px, 4.2vw, 50px);
            font-weight: 400;
            letter-spacing: 8px;
            color: #3f332b;
            line-height: 1.35;
        }

        #storyModal .rose-modal__subtitle {
            margin-top: 14px;
            font-size: 13px;
            letter-spacing: 4px;
            color: rgba(120, 90, 65, 0.65);
        }

        #storyModal .rose-modal__divider {
            margin-top: 10px;
            font-size: 13px;
            letter-spacing: 4px;
            color: rgba(170, 136, 92, 0.48);
        }

        #storyModal .rose-modal__story {
            position: relative;
            z-index: 1;
            margin-top: 0;
            width: 100%;
        }

        #storyModal .rose-modal__section {
            position: relative;
            min-height: unset;
            display: grid;
            grid-template-columns: 1fr;
            align-items: center;
            justify-items: start;
            gap: 0;
            margin-top: 0;
            padding: 16px 6px;
            width: 100%;
            margin-left: 0;
            margin-right: 0;
        }

        #storyModal .rose-modal__section--meeting {
            margin-top: 0;
            margin-inline: calc(var(--rose-story-gutter) * -1);
            padding: 0 var(--rose-story-gutter) 20px;
            border-radius: 0;
            background:
                linear-gradient(rgba(248, 242, 233, 0.16), rgba(248, 242, 233, 0.30)),
                url("1.jpg");
            background-position: center center, center center;
            background-repeat: no-repeat, no-repeat;
            background-size: cover, cover;
        }

        #storyModal .rose-modal__section--bond {
            margin-inline: calc(var(--rose-story-gutter) * -1);
            padding: 26px var(--rose-story-gutter) 20px;
            border-radius: 0;
            background:
                linear-gradient(rgba(248, 242, 233, 0.18), rgba(248, 242, 233, 0.32)),
                url("2.jpg");
            background-position: center center, center center;
            background-repeat: no-repeat, no-repeat;
            background-size: cover, cover;
        }

        #storyModal .rose-modal__section--farewell {
            margin-inline: calc(var(--rose-story-gutter) * -1);
            padding: 26px var(--rose-story-gutter) 20px;
            border-radius: 0;
            background:
                linear-gradient(rgba(248, 242, 233, 0.18), rgba(248, 242, 233, 0.32)),
                url("3.jpg");
            background-position: center center, center center;
            background-repeat: no-repeat, no-repeat;
            background-size: cover, cover;
        }

        #storyModal .rose-modal__section--understand {
            margin-inline: calc(var(--rose-story-gutter) * -1);
            padding: 26px var(--rose-story-gutter) 20px;
            border-radius: 0;
            background:
                linear-gradient(rgba(248, 242, 233, 0.18), rgba(248, 242, 233, 0.32)),
                url("4.jpg");
            background-position: center center, center center;
            background-repeat: no-repeat, no-repeat;
            background-size: cover, cover;
        }

        #storyModal .rose-modal__section--reverse {
            grid-template-columns: 1fr;
        }

        #storyModal .rose-modal__section::before {
            content: none;
        }

        #storyModal .rose-modal__section--farewell::before {
            background: none;
        }

        #storyModal .rose-modal__section--understand::before {
            background: none;
        }

        #storyModal .rose-modal__text {
            width: 100%;
            justify-self: stretch;
            padding-inline: clamp(4px, 1vw, 16px);
            margin: 0;
            text-align: left !important;
        }

        #storyModal .rose-modal__index {
            margin-bottom: 12px;
            font-size: 14px;
            letter-spacing: 2px;
            color: #9b7b55;
            font-weight: 500;
            text-align: left !important;
        }

        #storyModal .rose-modal__body {
            font-size: clamp(16px, 1.34vw, 19px);
            line-height: 1.78;
            color: #4d3f35;
            font-weight: 400;
            text-align: left !important;
        }

        #storyModal .rose-modal__body p {
            margin: 0;
            text-align: left !important;
        }

        #storyModal .rose-modal__body p + p {
            margin-top: 8px;
        }

        #storyModal .rose-modal__caption {
            margin-top: 12px;
            font-size: 12px;
            line-height: 1.65;
            color: rgba(80, 65, 55, 0.58);
            text-align: left !important;
        }

        #storyModal .rose-modal__art {
            position: relative;
            display: none;
            min-height: 0;
        }

        #storyModal .rose-modal__art::before {
            content: none;
        }

        #storyModal .rose-modal__art--farewell::before {
            background: none;
        }

        #storyModal .rose-modal__art--night::before {
            background: none;
        }

        #storyModal .rose-modal__art img {
            position: relative;
            z-index: 1;
            width: min(100%, 500px);
            max-height: 390px;
            object-fit: contain;
            border-radius: 24px;
            box-shadow: 0 18px 45px rgba(90, 70, 45, 0.08);
            background: transparent;
            -webkit-mask-image: radial-gradient(circle at center, #000 70%, rgba(0, 0, 0, 0.68) 84%, transparent 100%);
            mask-image: radial-gradient(circle at center, #000 70%, rgba(0, 0, 0, 0.68) 84%, transparent 100%);
        }

        #storyModal .modal-content--rose-story .rose-modal__art img {
            display: none;
        }

        #storyModal .rose-modal__art--night img {
            filter: saturate(0.92) brightness(0.9) contrast(1.02);
        }

        #storyModal .rose-modal__ending {
            margin-top: 0;
            text-align: center;
            margin-inline: calc(var(--rose-story-gutter) * -1);
            padding: 26px var(--rose-story-gutter) 20px;
            width: 100%;
            background:
                linear-gradient(rgba(248, 242, 233, 0.24), rgba(248, 242, 233, 0.42)),
                url("about her.png");
            background-position: center bottom, center bottom;
            background-repeat: no-repeat, no-repeat;
            background-size: cover, cover;
        }

        #storyModal .rose-modal__ending p {
            margin: 0;
            font-size: 15px;
            line-height: 1.8;
            color: rgba(80, 65, 55, 0.58);
        }

        #storyModal .rose-modal__ending p:first-child {
            margin-bottom: 10px;
            font-size: 20px;
            color: #4b3d33;
        }

        #storyModal .rose-modal__collapse {
            margin-top: 12px;
            width: 40px;
            height: 40px;
            border: 1px solid rgba(212, 175, 90, 0.38);
            border-radius: 999px;
            background: rgba(232, 200, 120, 0.22);
            color: rgba(150, 112, 44, 0.92);
            display: inline-flex;
            align-items: center;
            justify-content: center;
            font-size: 18px;
            line-height: 1;
            cursor: pointer;
            transition: transform 0.18s ease, background-color 0.18s ease, border-color 0.18s ease, color 0.18s ease;
            -webkit-tap-highlight-color: transparent;
        }

        #storyModal .rose-modal__collapse:hover {
            transform: translateY(-1px);
            background: rgba(232, 200, 120, 0.3);
            border-color: rgba(212, 175, 90, 0.52);
            color: rgba(128, 92, 34, 0.95);
        }

        #storyModal .rose-modal__collapse:active {
            transform: translateY(0);
        }

        @media (max-width: 767px) {
            #storyModal .modal-content.modal-content--rose-story {
                width: calc(100vw - 20px);
                max-height: 88vh;
                padding: 26px 14px 34px;
                border-radius: 24px;
            }

            #storyModal .rose-modal__hero {
                min-height: 230px;
                padding: 8px 8px 4px;
            }

            #storyModal .rose-modal__title {
                font-size: 34px;
                letter-spacing: 4px;
            }

            #storyModal .rose-modal__section,
            #storyModal .rose-modal__section--reverse {
                grid-template-columns: 1fr;
                gap: 18px;
                min-height: unset;
                margin-top: 58px;
                padding: 12px 2px;
            }

            #storyModal .rose-modal__art {
                min-height: unset;
            }

            #storyModal .rose-modal__body {
                font-size: clamp(19px, 5.2vw, 22px);
            }

            #storyModal .rose-modal__art img {
                width: 100%;
                max-height: none;
            }

            #storyModal .rose-modal__path {
                width: 90%;
                top: 140px;
                height: calc(100% - 210px);
            }

            #storyModal .rose-modal__ending {
                margin-top: 72px;
            }
        }

        /* 金句引言 */
        #journey .timeline-thought {
            font-family: var(--font-cn);
            font-size: 1.05rem;
            font-style: italic;
            letter-spacing: 0.12em;
            line-height: 2.2;
            color: var(--ink-muted);
            border-left: none;
            padding: 1.05em 1.55em;
            margin: 0.1em 0 1.8em;
            position: relative;
        }

        #journey .timeline-thought::before,
        #journey .timeline-thought::after {
            content: '';
            display: block;
            width: 3rem;
            height: 1px;
            background: var(--rule-gold);
            margin: 0.85em auto;
        }

        /* MODAL */
        .modal {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            z-index: 1000;
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 1.2rem;
            background: rgba(40, 35, 30, 0);
            opacity: 0;
            visibility: hidden;
            pointer-events: none;
        }

        .modal.active {
            opacity: 1;
            visibility: visible;
            pointer-events: auto;
            animation: overlayFadeIn 0.55s cubic-bezier(0.4, 0, 0.2, 1) forwards;
        }

        .modal.closing {
            animation: overlayFadeOut 0.42s cubic-bezier(0.4, 0, 0.2, 1) forwards;
        }

        .fox-image {
            position: relative;
        }

        .fox-image::after {
            content: "";
            position: absolute;
            inset: 0;
            border-radius: 18px;
            background: radial-gradient(circle, rgba(255, 230, 150, 0.15), transparent);
            pointer-events: none;
        }

        body::before {
            content: "";
            position: fixed;
            inset: 0;
            background-image: url("star.png");
            opacity: 0.3;
            animation: floatStar 20s linear infinite;
            pointer-events: none;
        }

        @keyframes floatStar {
            from {
                transform: translateY(0);
            }

            to {
                transform: translateY(-200px);
            }
        }

        .start-btn {
            background: linear-gradient(135deg, #c69235, #e8c27a);
            border-radius: 999px;
            padding: 12px 28px;
            box-shadow: 0 10px 25px rgba(165, 112, 34, 0.18);
            transition: all 0.3s ease;
        }

        .start-btn:hover {
            transform: translateY(-3px);
            box-shadow: 0 16px 35px rgba(165, 112, 34, 0.28);
        }

        .modal-content {
            background:
                radial-gradient(circle at 18% 22%, rgba(255, 255, 255, 0.16) 0 1px, transparent 1.3px),
                radial-gradient(circle at 78% 66%, rgba(126, 120, 108, 0.04) 0 0.8px, transparent 1.2px),
                repeating-linear-gradient(12deg, rgba(255, 255, 255, 0.018) 0 1px, transparent 1px 10px),
                repeating-linear-gradient(98deg, rgba(118, 97, 70, 0.014) 0 1px, transparent 1px 12px),
                rgba(252, 248, 240, 0.985);
            border: 1px solid rgba(146, 124, 92, 0.24);
            border-radius: 15px;
            max-width: 700px;
            width: 90%;
            max-height: 80vh;
            overflow-y: auto;
            padding: 2.5rem;
            position: relative;
            box-shadow:
                0 16px 36px rgba(110, 90, 66, 0.12),
                0 1px 0 rgba(255, 255, 255, 0.6) inset;
            /* 底图与遮罩由 JS 叠成多层 background，不用 ::before，避免在 overflow 容器里只盖住上半截 */
            transform-origin: center;
            opacity: 0;
            transform: translateY(18px) scale(0.92);
            filter: blur(2px);
            animation: bookOpen 0.55s cubic-bezier(0.4, 0, 0.2, 1) forwards;
        }

        .modal.closing .modal-content {
            animation: bookClose 0.42s cubic-bezier(0.4, 0, 0.2, 1) forwards;
        }

        .modal-header,
        #modalBody {
            opacity: 0;
            transform: translateY(8px);
        }

        .modal.active:not(.closing) .modal-header {
            animation: modalContentFade 0.45s cubic-bezier(0.4, 0, 0.2, 1) 0.12s forwards;
        }

        .modal.active:not(.closing) #modalBody {
            animation: modalContentFade 0.45s cubic-bezier(0.4, 0, 0.2, 1) 0.24s forwards;
        }

        @keyframes overlayFadeIn {
            from { background: rgba(40, 35, 30, 0); }
            to { background: rgba(40, 35, 30, 0.35); }
        }

        @keyframes overlayFadeOut {
            from { background: rgba(40, 35, 30, 0.35); }
            to { background: rgba(40, 35, 30, 0); }
        }

        @keyframes bookOpen {
            from {
                opacity: 0;
                transform: translateY(18px) scale(0.92);
                filter: blur(2px);
            }
            to {
                opacity: 1;
                transform: translateY(0) scale(1);
                filter: blur(0);
            }
        }

        @keyframes bookClose {
            from {
                opacity: 1;
                transform: translateY(0) scale(1);
                filter: blur(0);
            }
            to {
                opacity: 0;
                transform: translateY(16px) scale(0.94);
                filter: blur(2px);
            }
        }

        @keyframes modalContentFade {
            from { opacity: 0; transform: translateY(8px); }
            to { opacity: 1; transform: translateY(0); }
        }
        .modal-content::before {
            content: '';
            position: absolute;
            inset: 0;
            border-radius: inherit;
            pointer-events: none;
            box-shadow:
                inset 18px 0 24px -28px rgba(102, 86, 64, 0.08),
                inset -18px 0 24px -28px rgba(102, 86, 64, 0.06),
                inset 0 18px 24px -28px rgba(102, 86, 64, 0.05),
                inset 0 -22px 28px -32px rgba(102, 86, 64, 0.08);
            opacity: 0.82;
        }

        .modal-content::after {
            content: '';
            position: absolute;
            top: 0;
            right: 0;
            width: 72px;
            height: 72px;
            border-top-right-radius: 15px;
            background:
                linear-gradient(135deg, rgba(221, 210, 185, 0.78) 0%, rgba(248, 243, 232, 0.98) 52%, rgba(235, 226, 206, 0.9) 100%);
            clip-path: polygon(100% 0, 100% 100%, 0 0);
            box-shadow:
                inset 1px -1px 0 rgba(160, 139, 108, 0.12),
                -8px 10px 18px -18px rgba(120, 98, 70, 0.12);
            opacity: 0.58;
            pointer-events: none;
        }

        .modal-close {
            position: absolute;
            top: 1.5rem;
            right: 1.5rem;
            z-index: 2;
            width: 40px;
            height: 40px;
            border: none;
            background: rgba(204, 186, 151, 0.18);
            border-radius: 50%;
            cursor: pointer;
            font-size: 1.5rem;
            color: rgba(188, 168, 114, 0.92);
            transition: all 0.2s ease;
            display: flex;
            align-items: center;
            justify-content: center;
            transform: rotate(0deg);
        }

        .modal-close:hover {
            background: rgba(204, 186, 151, 0.28);
            transform: rotate(90deg);
        }

        .modal-header {
            margin-bottom: 1.5rem;
            border-bottom: none;
            padding-bottom: 1rem;
            position: relative;
        }

        .modal-title {
            font-family: var(--font-hand), 'Ma Shan Zheng', 'KaiTi', 'STKaiti', 'Noto Serif SC', serif;
            font-size: 24px;
            font-weight: 400;
            color: rgba(188, 168, 114, 0.92);
            margin-bottom: 0.5rem;
        }

        .modal-header::after {
            content: '';
            display: block;
            margin-top: 10px;
            height: 8px;
            background: repeating-linear-gradient(
                90deg,
                rgba(136, 113, 83, 0.55) 0 6px,
                transparent 6px 12px
            );
            mask: radial-gradient(12px 8px at 6px 4px, #000 98%, transparent 100%) left/12px 8px repeat-x;
            opacity: 0.6;
        }

        .modal-text {
            color: rgba(95, 88, 78, 0.88);
            font-family: var(--font-hand), 'Noto Serif SC', 'FangSong', 'STFangsong', 'KaiTi', 'STKaiti', serif;
            font-size: 14px;
            line-height: 2.05;
            letter-spacing: 1.6px;
            font-weight: 300;
            opacity: 0.82;
            text-align: left;
            margin-bottom: 1rem;
        }

        /* FOX TAMING MODAL */
        .fox-taming-modal {
            position: fixed;
            inset: 0;
            z-index: 1300;
            display: grid;
            place-items: center;
            padding: 1.25rem;
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.3s ease;
        }

        .fox-taming-modal.active {
            opacity: 1;
            pointer-events: auto;
        }

        .fox-taming-modal__backdrop {
            position: absolute;
            inset: 0;
            background: rgba(48, 40, 31, 0.22);
            backdrop-filter: blur(10px);
            -webkit-backdrop-filter: blur(10px);
        }

        .fox-taming-modal__backdrop::before {
            content: "✦  ✧   ★     ✦   ★    ✧   ★   ✦";
            position: absolute;
            inset: 0;
            color: rgba(230, 180, 80, 0.45);
            font-size: 22px;
            letter-spacing: 55px;
            line-height: 130px;
            animation: starsMove 22s linear infinite, foxSparkle 4.4s ease-in-out infinite;
            pointer-events: none;
        }

        @keyframes starsMove {
            from { transform: translateY(0); }
            to { transform: translateY(-120px); }
        }

        .fox-taming-modal__panel {
            position: relative;
            width: min(633px, 77vw);
            height: min(467px, calc(100vh - 2.5rem));
            min-height: 433px;
            max-height: calc(100vh - 2.5rem);
            border-radius: 34px;
            border: 1px solid rgba(184, 145, 86, 0.2);
            background:
                radial-gradient(circle at 10% 10%, rgba(216, 176, 108, 0.075), transparent 28%),
                radial-gradient(circle at 92% 18%, rgba(216, 176, 108, 0.065), transparent 26%),
                radial-gradient(circle at 88% 92%, rgba(210, 166, 98, 0.065), transparent 30%),
                linear-gradient(rgba(255, 254, 248, 0.32), rgba(255, 254, 248, 0.32)),
                url("card.png") center center / 102% 102% no-repeat;
            box-shadow:
                0 28px 70px rgba(40, 30, 18, 0.28),
                inset 0 0 44px rgba(255, 255, 255, 0.46);
            backdrop-filter: blur(10px);
            -webkit-backdrop-filter: blur(10px);
            overflow: hidden;
            transform: scale(0.96);
            opacity: 0;
            transition: transform 0.3s ease-out, opacity 0.3s ease-out;
        }

        .fox-taming-modal.active .fox-taming-modal__panel {
            transform: scale(1);
            opacity: 1;
            animation: foxPaperRise 0.8s ease both;
        }

        @keyframes foxPaperRise {
            from { opacity: 0; transform: translateY(35px) scale(0.96); }
            to { opacity: 1; transform: translateY(0) scale(1); }
        }

        .fox-taming-modal__panel::before {
            content: '';
            position: absolute;
            inset: 0;
            background-image: repeating-radial-gradient(circle, rgba(120, 90, 50, 0.04) 0 1px, transparent 1px 4px);
            opacity: 0.09;
            pointer-events: none;
        }

        .fox-taming-modal__close {
            position: absolute;
            right: 34px;
            top: 28px;
            width: 38px;
            height: 38px;
            border-radius: 50%;
            border: none;
            background: rgba(216, 173, 88, 0.22);
            color: #6c5637;
            font-size: 20px;
            line-height: 1;
            cursor: pointer;
            transition: background 0.22s ease, color 0.22s ease, transform 0.2s ease;
            z-index: 3;
        }

        .fox-taming-modal__close:hover {
            background: rgba(216, 173, 88, 0.32);
            color: #5f4e3e;
            transform: translateY(-1px);
        }

        .fox-taming-modal__close:active {
            transform: scale(0.98);
        }

        .fox-taming-modal__decor {
            position: absolute;
            color: rgba(201, 154, 69, 0.58);
            pointer-events: none;
            user-select: none;
            z-index: 1;
            animation: foxSparkle 3.2s ease-in-out infinite;
        }

        .fox-taming-modal__decor--star-a { left: 26px; top: 24px; font-size: 0.72rem; opacity: 0.62; }
        .fox-taming-modal__decor--star-b { right: 64px; top: 104px; font-size: 2.55rem; color: rgba(178, 146, 95, 0.34); animation: none; }
        .fox-taming-modal__decor--star-c { right: 40px; bottom: 70px; font-size: 1.45rem; color: rgba(163, 132, 86, 0.34); animation: none; }
        .fox-taming-modal__decor--grain { left: 20px; bottom: 34px; font-size: 2.6rem; color: rgba(176, 118, 92, 0.42); animation: none; opacity: 0.9; }

        @keyframes foxSparkle {
            0%, 100% { opacity: 0.44; transform: translateY(0); }
            50% { opacity: 0.9; transform: translateY(-3px); }
        }

        .fox-taming-modal__content {
            position: relative;
            z-index: 2;
            height: 100%;
            min-height: 0;
            padding: 2.35rem 2.15rem 1.75rem;
            color: #4f3f32;
            overflow-y: auto;
            overflow-x: hidden;
        }

        .fox-step {
            min-height: 378px;
            display: flex;
            flex-direction: column;
            justify-content: space-between;
            animation: foxStepIn 0.26s ease both;
        }

        .fox-step.is-leaving-next,
        .fox-step.is-leaving-prev {
            animation: foxStepOut 0.18s ease both;
        }

        @keyframes foxStepIn {
            from { opacity: 0; transform: translateY(8px); }
            to { opacity: 1; transform: translateY(0); }
        }

        @keyframes foxStepOut {
            from { opacity: 1; transform: translateY(0); }
            to { opacity: 0; transform: translateY(-6px); }
        }

        .fox-step__header {
            display: grid;
            grid-template-columns: 72px 1fr 72px;
            align-items: center;
            color: #8a7050;
            font-family: var(--font-cn);
            margin-bottom: 1.15rem;
        }

        .fox-step__back {
            width: 38px;
            height: 38px;
            border: none;
            border-radius: 50%;
            background: rgba(216, 173, 88, 0.22);
            color: #6c5637;
            font-size: 18px;
            cursor: pointer;
        }

        .fox-step__progress {
            text-align: center;
            letter-spacing: 0.2em;
            font-size: 1.06rem;
        }

        .fox-step__title {
            margin: 0;
            font-family: 'Cormorant Garamond', var(--font-cn), serif;
            font-size: 1.25rem;
            letter-spacing: 0.04em;
            text-align: center;
            color: #4f3f32;
        }

        .fox-step__subtitle {
            margin: 0.6rem 0 0;
            text-align: center;
            color: #8b765f;
            font-size: 1rem;
            letter-spacing: 0.06em;
        }

        .fox-step__quote {
            margin: 1.1rem auto 0;
            max-width: 520px;
            text-align: center;
            color: #7f6955;
            font-style: italic;
            line-height: 1.9;
        }

        .fox-step__scene {
            margin: 1.3rem auto 0;
            width: 280px;
            height: 188px;
            border-radius: 18px;
            overflow: hidden;
            border: 1px solid rgba(200, 160, 90, 0.22);
            box-shadow: 0 14px 26px rgba(120, 94, 62, 0.15);
            background: rgba(255, 255, 255, 0.44);
        }

        .fox-step__scene img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            transform: scale(1.56);
            transform-origin: center center;
        }

        .fox-step__welcome-btn-wrap {
            display: flex;
            justify-content: center;
            margin-top: 0.75rem;
        }

        .fox-step__question {
            margin: 0.75rem 0 1.4rem;
            font-size: 1.58rem;
            letter-spacing: 0.04em;
            color: #6f5a45;
            font-family: var(--font-cn);
            line-height: 1.48;
            white-space: pre-line;
        }

        .fox-step__body {
            display: grid;
            grid-template-columns: 0.9fr 1.4fr;
            gap: 2.35rem;
            align-items: center;
            margin-top: 0.4rem;
        }

        .fox-step__illustration {
            position: relative;
            width: 92%;
            aspect-ratio: 1 / 1;
            height: auto;
            border-radius: 18px;
            overflow: visible;
            border: 1px solid rgba(201, 159, 92, 0.24);
            background: rgba(255, 250, 238, 0.78);
            box-shadow: 0 14px 26px rgba(115, 84, 52, 0.16);
            transform: rotate(-3deg);
            transition: transform 0.25s ease, box-shadow 0.25s ease;
            justify-self: end;
            margin-right: 0.55rem;
            align-self: start;
            margin-top: 0.15rem;
            padding: 8px;
        }

        .fox-step__illustration img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            border-radius: 14px;
            transform: none;
            transform-origin: center center;
        }

        .fox-step__illustration:hover {
            transform: rotate(-3deg) scale(1.04);
            box-shadow: 0 18px 32px rgba(115, 84, 52, 0.2);
        }

        .fox-step__illustration::before {
            content: "";
            position: absolute;
            top: -8px;
            left: 72px;
            width: 90px;
            height: 20px;
            background: rgba(212, 184, 128, 0.6);
            transform: rotate(-3deg);
            border-radius: 4px;
            z-index: 3;
            pointer-events: none;
        }

        .fox-step__input-wrap {
            position: relative;
            display: flex;
            flex-direction: column;
            gap: 0;
            width: min(520px, 100%);
            height: 230px;
            border-radius: 22px;
            border: 1px solid rgba(190, 145, 70, 0.22);
            background: rgba(255, 250, 236, 0.72);
            --paper-pad-top: 1.05rem;
            --paper-pad-x: 1.2rem;
            --paper-pad-bottom: 2.1rem;
            --paper-line-step: 41px;
            box-shadow:
                inset 0 0 0 1px rgba(255, 255, 255, 0.35),
                0 10px 24px rgba(100, 70, 35, 0.06);
            overflow: hidden;
        }

        .fox-step__input-wrap::before {
            content: "";
            position: absolute;
            inset: 0;
            background:
                repeating-linear-gradient(
                    to bottom,
                    transparent 0 calc(var(--paper-line-step) - 1px),
                    rgba(194, 145, 70, 0.1) calc(var(--paper-line-step) - 1px) var(--paper-line-step)
                ),
                radial-gradient(circle at 12% 20%, rgba(174, 133, 70, 0.07), transparent 25%),
                radial-gradient(circle at 90% 85%, rgba(174, 133, 70, 0.07), transparent 28%);
            background-size: auto, auto, auto;
            background-position: 0 var(--paper-pad-top), 0 0, 0 0;
            pointer-events: none;
        }

        .fox-step__input-wrap::after {
            content: "🪶";
            position: absolute;
            right: 14px;
            bottom: 20px;
            font-size: 35px;
            opacity: 0.18;
            transform: rotate(14deg);
            pointer-events: none;
        }

        .fox-step__input {
            width: 100%;
            height: 100%;
            border: none;
            background: transparent;
            min-height: 0;
            padding: var(--paper-pad-top) var(--paper-pad-x) var(--paper-pad-bottom) var(--paper-pad-x);
            color: #5f4c37;
            font-family: "STKaiti", "KaiTi", var(--font-cn), serif;
            font-size: 1rem;
            line-height: var(--paper-line-step);
            resize: none;
            outline: none;
            box-shadow: none;
            position: relative;
            z-index: 1;
        }

        .fox-step__input::placeholder {
            font-size: 0.9rem;
            color: rgba(132, 102, 66, 0.62);
        }

        .fox-step__input:focus {
            box-shadow: inset 0 0 0 1px rgba(201, 154, 69, 0.35);
        }

        .fox-step__meta {
            position: absolute;
            right: 16px;
            bottom: 8px;
            font-size: 0.92rem;
            color: #9b7a4c;
            z-index: 2;
        }

        .fox-step__hint {
            display: none;
        }

        .fox-step__actions {
            margin-top: 1.1rem;
            display: flex;
            justify-content: flex-end;
            align-items: center;
            gap: 0.8rem;
            padding-right: 0.5rem;
        }

        .fox-step__actions .fox-pill-btn,
        .fox-step__actions .fox-pill-btn--ghost {
            padding: 13px 34px;
            border-radius: 999px;
            background: linear-gradient(135deg, #f6e09e, #e9c468);
            color: #6b4a1f;
            font-size: 1.04rem;
            box-shadow: 0 9px 18px rgba(182, 138, 68, 0.18);
            transition: 0.3s ease;
            border: none;
        }

        .fox-step__actions .fox-pill-btn:hover,
        .fox-step__actions .fox-pill-btn--ghost:hover {
            transform: translateY(-3px);
            box-shadow: 0 14px 26px rgba(182, 138, 68, 0.24);
            filter: none;
        }

        .fox-step__actions .fox-pill-btn:active,
        .fox-step__actions .fox-pill-btn--ghost:active {
            transform: translateY(-1px) scale(0.985);
        }

        .fox-pill-btn {
            border: none;
            border-radius: 999px;
            padding: 0.68rem 1.38rem;
            color: rgba(92, 70, 45, 0.92);
            font-family: var(--font-cn);
            font-size: 0.96rem;
            letter-spacing: 0.03em;
            cursor: pointer;
            background: linear-gradient(135deg, #fff8e8 0%, #fbeec7 56%, #f6e4a6 100%);
            box-shadow: 0 8px 16px rgba(204, 170, 110, 0.08);
            transition: transform 0.2s ease, box-shadow 0.2s ease, filter 0.2s ease;
        }

        .fox-pill-btn:hover {
            transform: translateY(-1px);
            box-shadow: 0 11px 18px rgba(204, 170, 110, 0.14);
            filter: saturate(1.03);
        }

        .fox-pill-btn:active {
            transform: scale(0.98);
        }

        .fox-pill-btn--ghost {
            background: linear-gradient(135deg, #f6e09e, #e9c468);
            border: none;
            box-shadow: 0 9px 18px rgba(182, 138, 68, 0.18);
            color: #6b4a1f;
        }

        .fox-loading {
            min-height: 452px;
            display: grid;
            place-items: center;
            text-align: center;
            color: #7a6753;
        }

        .fox-loading__scene {
            width: 218px;
            height: 164px;
            border-radius: 20px;
            overflow: hidden;
            margin: 0 auto 1rem;
            border: 1px solid rgba(200, 160, 90, 0.24);
            animation: foxFloat 2.8s ease-in-out infinite;
            box-shadow: 0 12px 20px rgba(116, 89, 61, 0.16);
        }

        .fox-loading__scene img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        .fox-loading__stars {
            margin-bottom: 0.5rem;
            color: rgba(201, 154, 69, 0.72);
            letter-spacing: 0.55em;
            animation: foxSparkle 2.8s ease-in-out infinite;
        }

        @keyframes foxFloat {
            0%, 100% { transform: translateY(0); }
            50% { transform: translateY(-7px); }
        }

        .fox-result__title {
            margin: 0.6rem 0 1rem;
            text-align: center;
            font-size: 1.6rem;
            color: #4f3f32;
            font-family: var(--font-cn);
        }

        .fox-result__paper {
            background: rgba(255, 255, 255, 0.52);
            border: 1px dashed rgba(190, 150, 90, 0.44);
            border-radius: 16px;
            padding: 1rem 1.05rem;
            line-height: 1.95;
            color: #5a4a3b;
            min-height: 188px;
            white-space: pre-line;
        }

        .fox-result__layout {
            display: grid;
            grid-template-columns: 1fr 190px;
            gap: 1rem;
            align-items: end;
        }

        .fox-result__scene {
            border-radius: 16px;
            overflow: hidden;
            border: 1px solid rgba(200, 160, 90, 0.24);
            height: 150px;
            background: rgba(255, 255, 255, 0.4);
        }

        .fox-result__scene img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        .fox-result__footnote {
            margin-top: 0.8rem;
            text-align: center;
            color: #8b765f;
            font-size: 0.88rem;
        }

        .fox-toast {
            position: absolute;
            left: 50%;
            bottom: 16px;
            transform: translateX(-50%);
            background: rgba(83, 69, 51, 0.86);
            color: #f8ecd5;
            border-radius: 999px;
            padding: 0.35rem 0.8rem;
            font-size: 0.8rem;
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.24s ease;
            z-index: 5;
        }

        .fox-toast.active {
            opacity: 1;
        }

        @media (max-width: 860px) {
            .fox-taming-modal__panel {
                min-height: auto;
            }
            .fox-taming-modal__content {
                min-height: 0;
                padding: 2.65rem 1.2rem 1.1rem;
            }
            .fox-step {
                min-height: 0;
                gap: 0.8rem;
            }
            .fox-step__body,
            .fox-result__layout {
                grid-template-columns: 1fr;
            }
            .fox-step__illustration {
                height: 158px;
            }
            .fox-step__question {
                margin-top: 0.3rem;
            }
        }

        /* JOURNEY CHAPTER MODAL (星图阅读弹窗) */
        .journey-chapter-modal {
            position: fixed;
            inset: 0;
            z-index: 1250;
            display: grid;
            place-items: center;
            padding: 1.2rem;
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.28s ease;
        }

        .journey-chapter-modal.active {
            opacity: 1;
            pointer-events: auto;
        }

        .journey-chapter-modal__backdrop {
            position: absolute;
            inset: 0;
            background:
                radial-gradient(1100px 520px at 14% 18%, rgba(255, 255, 255, 0.55), transparent 62%),
                radial-gradient(900px 520px at 86% 74%, rgba(210, 195, 170, 0.18), transparent 62%),
                repeating-linear-gradient(
                    92deg,
                    rgba(150, 130, 100, 0.028) 0px,
                    rgba(150, 130, 100, 0.028) 1px,
                    transparent 1px,
                    transparent 10px
                ),
                rgba(248, 244, 237, 0.58);
            backdrop-filter: blur(10px);
            -webkit-backdrop-filter: blur(10px);
            opacity: 0;
            transition: opacity 0.28s ease;
        }

        .journey-chapter-modal.active .journey-chapter-modal__backdrop {
            opacity: 1;
        }

        .journey-chapter-modal__panel {
            position: relative;
            width: min(760px, calc(100vw - 2.4rem));
            height: min(520px, calc(100vh - 2.8rem));
            background:
                linear-gradient(rgba(242, 234, 222, 0.86), rgba(242, 234, 222, 0.86)),
                url("chapter02.png") center / cover no-repeat;
            backdrop-filter: blur(18px);
            -webkit-backdrop-filter: blur(18px);
            border-radius: 28px;
            border: 1px solid rgba(176, 150, 110, 0.18);
            box-shadow:
                0 44px 110px rgba(42, 34, 24, 0.12),
                0 18px 40px rgba(42, 34, 24, 0.08),
                inset 0 0 38px rgba(255, 255, 255, 0.38);
            overflow: hidden;
            transform: scale(0.96);
            opacity: 0;
            transition: transform 0.28s ease, opacity 0.28s ease;
        }

        .journey-chapter-modal.journey-chapter-modal--plain-illustration .journey-chapter-modal__image {
            object-fit: contain;
            object-position: center bottom;
            filter: none;
            transform: none;
        }

        .journey-chapter-modal.journey-chapter-modal--plain-illustration .journey-chapter-modal__left {
            width: 42%;
            background: transparent;
        }

        .journey-chapter-modal.journey-chapter-modal--plain-illustration .journey-chapter-modal__right {
            width: 58%;
            padding-left: 30px;
        }

        .journey-chapter-modal.journey-chapter-modal--plain-illustration .journey-chapter-modal__mist {
            display: none;
        }

        .journey-chapter-modal.journey-chapter-modal--plain-illustration .journey-chapter-modal__divider-star,
        .journey-chapter-modal.journey-chapter-modal--plain-illustration .journey-chapter-modal__counter-star {
            display: none;
        }

        /* 章节弹窗统一卡片风格：左插画 + 右侧居中排版（参考 Chapter02） */
        .journey-chapter-modal.journey-chapter-modal--chapter-card .journey-chapter-modal__panel {
            /* 固定统一尺寸：8 个星球弹窗大小一致 */
            width: min(780px, calc(100vw - 2rem));
            height: min(500px, calc(100vh - 2.4rem));
            overflow: hidden;
        }

        .journey-chapter-modal.journey-chapter-modal--chapter-card .journey-chapter-modal__layout {
            height: 100%;
            display: grid;
            grid-template-columns: 1.05fr 1fr;
            column-gap: 10px;
        }

        .journey-chapter-modal.journey-chapter-modal--chapter-card .journey-chapter-modal__left {
            width: auto;
            background: transparent;
            overflow: visible;
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 24px 8px 20px 18px;
        }

        .journey-chapter-modal.journey-chapter-modal--chapter-card .journey-chapter-modal__image {
            object-fit: contain;
            object-position: center center;
            filter: none;
            transform: none;
            width: 100%;
            height: auto;
            max-width: 100%;
            max-height: 100%;
            /* 去掉矩形裁切感：对插画边缘做羽化过渡 */
            -webkit-mask-image: radial-gradient(ellipse 86% 84% at 50% 50%, #000 70%, rgba(0, 0, 0, 0.94) 80%, transparent 100%);
            mask-image: radial-gradient(ellipse 86% 84% at 50% 50%, #000 70%, rgba(0, 0, 0, 0.94) 80%, transparent 100%);
        }

        .journey-chapter-modal.journey-chapter-modal--chapter-card .journey-chapter-modal__mist {
            display: none;
        }

        .journey-chapter-modal.journey-chapter-modal--chapter-card .journey-chapter-modal__right {
            width: auto;
            padding: 36px 28px 26px;
            display: flex;
            flex-direction: column;
            justify-content: center;
            text-align: center;
            min-height: 0;
        }

        .journey-chapter-modal.journey-chapter-modal--chapter-card .journey-chapter-modal__chapter {
            font-size: 0.82rem;
            letter-spacing: 0.22em;
        }

        .journey-chapter-modal.journey-chapter-modal--chapter-card .journey-chapter-modal__title {
            font-size: 2rem;
            letter-spacing: 0.12em;
            margin-top: 2px;
        }

        .journey-chapter-modal.journey-chapter-modal--chapter-card .journey-chapter-modal__subtitle {
            margin-top: 6px;
            letter-spacing: 0.16em;
            color: rgba(120, 104, 84, 0.8);
        }

        .journey-chapter-modal.journey-chapter-modal--chapter-card .journey-chapter-modal__divider {
            margin: 10px auto 0;
            max-width: 460px;
        }

        .journey-chapter-modal.journey-chapter-modal--chapter-card .journey-chapter-modal__content {
            padding-right: 0;
            margin-top: 8px;
            flex: 1;
            min-height: 0;
            overflow-y: auto;
            overflow-x: hidden;
            overscroll-behavior-y: contain;
            -webkit-overflow-scrolling: touch;
        }

        .journey-chapter-modal.journey-chapter-modal--chapter-card .journey-chapter-modal__text p {
            text-align: center;
            line-height: 1.42;
            letter-spacing: 0.03em;
            margin-bottom: 2px;
        }

        .journey-chapter-modal.journey-chapter-modal--chapter-card .journey-chapter-modal__quote {
            margin-top: 6px;
            font-style: normal;
        }

        /* 去掉底部导航（上一颗/下一颗/页码） */
        .journey-chapter-modal.journey-chapter-modal--chapter-card .journey-chapter-modal__footer {
            display: none;
        }

        .journey-chapter-modal__panel::before {
            content: '';
            position: absolute;
            inset: 0;
            border-radius: inherit;
            border: 1px solid rgba(255, 255, 255, 0.42);
            pointer-events: none;
        }

        .journey-chapter-modal__panel::after {
            content: '';
            position: absolute;
            inset: -18%;
            z-index: -1;
            pointer-events: none;
            background: radial-gradient(
                circle at 58% 42%,
                rgba(214, 177, 109, 0.09) 0%,
                rgba(214, 177, 109, 0.045) 28%,
                rgba(214, 177, 109, 0) 68%
            );
        }

        .journey-chapter-modal.active .journey-chapter-modal__panel {
            transform: scale(1);
            opacity: 1;
        }

        .journey-chapter-modal__close {
            position: absolute;
            right: 14px;
            top: 12px;
            width: 36px;
            height: 36px;
            display: grid;
            place-items: center;
            border: none;
            border-radius: 999px;
            background: transparent;
            color: rgba(92, 78, 60, 0.72);
            cursor: pointer;
            transition: color 0.18s ease, background 0.18s ease;
            z-index: 2;
        }

        .journey-chapter-modal__close:hover {
            color: rgba(92, 78, 60, 0.92);
            background: rgba(120, 98, 72, 0.06);
        }

        .journey-chapter-modal__close:focus-visible {
            outline: 2px solid rgba(167, 133, 70, 0.5);
            outline-offset: 2px;
        }

        .journey-chapter-modal__layout {
            height: 100%;
            display: flex;
        }

        .journey-chapter-modal__left {
            width: 45%;
            position: relative;
            background: radial-gradient(circle at 30% 20%, rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0.12) 52%, rgba(120, 110, 92, 0.06) 100%);
            overflow: hidden;
        }

        .journey-chapter-modal__image {
            width: 100%;
            height: 100%;
            object-fit: cover;
            object-position: center;
            filter: saturate(0.98) contrast(0.98);
            transform: scale(1.03);
        }

        .journey-chapter-modal__mist {
            position: absolute;
            left: 0;
            right: 0;
            bottom: 0;
            height: 34%;
            background: linear-gradient(180deg, rgba(248, 242, 232, 0), rgba(248, 242, 232, 0.92));
            pointer-events: none;
        }

        .journey-chapter-modal__right {
            width: 55%;
            padding: 34px 34px 84px;
            display: flex;
            flex-direction: column;
            gap: 10px;
            position: static;
            text-align: center;
            justify-content: center;
        }

        .journey-chapter-modal__chapter {
            margin: 0;
            font-size: 0.78rem;
            letter-spacing: 0.18em;
            color: rgba(168, 135, 70, 0.86);
            text-transform: uppercase;
        }

        .journey-chapter-modal__title {
            margin: 0;
            font-family: var(--font-cn);
            font-size: 1.5rem;
            letter-spacing: 0.08em;
            color: rgba(70, 58, 42, 0.92);
        }

        .journey-chapter-modal__subtitle {
            margin: 0;
            font-size: 0.95rem;
            letter-spacing: 0.1em;
            color: rgba(108, 92, 72, 0.82);
        }

        .journey-chapter-modal__divider {
            display: flex;
            align-items: center;
            gap: 6px;
            margin: 2px 0 0;
        }

        .journey-chapter-modal__divider-line {
            height: 1px;
            flex: 1;
            background: rgba(200, 162, 79, 0.22);
        }

        .journey-chapter-modal__divider-star {
            color: rgba(200, 162, 79, 0.62);
            font-size: 0.82rem;
            transform: translateY(-1px);
        }

        .journey-chapter-modal__content {
            position: relative;
            flex: 1;
            min-height: 0;
            padding-right: 0;
            padding-bottom: 0;
            margin-top: 2px;
            overflow-y: auto;
            overflow-x: hidden;
            overscroll-behavior-y: contain;
            -webkit-overflow-scrolling: touch;
        }

        .journey-chapter-modal__text p {
            margin: 0 auto;
            font-family: var(--font-cn);
            font-size: 0.98rem;
            line-height: 1.86;
            letter-spacing: 0.04em;
            color: rgba(76, 64, 48, 0.82);
            max-width: 26em;
        }

        .journey-chapter-modal__quote {
            margin: 0.55rem auto 0;
            font-family: var(--font-cn);
            font-style: italic;
            letter-spacing: 0.12em;
            line-height: 1.74;
            color: rgba(150, 118, 64, 0.72);
            max-width: 28em;
        }

        /* Journey：章节分页圆点 + 计数 */
        .journey-chapter-modal__pager {
            position: absolute;
            left: 50%;
            bottom: 14px;
            transform: translateX(-50%);
            display: grid;
            place-items: center;
            gap: 10px;
            padding: 0;
            width: max-content;
            z-index: 3;
        }

        .journey-chapter-modal__dots {
            display: flex;
            justify-content: center;
            align-items: center;
            gap: 10px;
            min-height: 12px;
            position: relative;
            z-index: 2;
        }

        .journey-chapter-modal__dot {
            width: 7px;
            height: 7px;
            border-radius: 999px;
            border: none;
            padding: 0;
            background: rgba(80, 65, 55, 0.28);
            cursor: pointer;
            transition: transform 0.22s ease, background 0.22s ease, opacity 0.22s ease;
            opacity: 0.95;
            appearance: none;
            -webkit-appearance: none;
        }

        .journey-chapter-modal__dot.is-active {
            width: 9px;
            height: 9px;
            background: rgba(120, 90, 60, 0.8);
            transform: scale(1.06);
            opacity: 1;
        }

        .journey-chapter-modal__dot:focus-visible {
            outline: 2px solid rgba(167, 133, 70, 0.5);
            outline-offset: 3px;
        }

        .journey-chapter-modal__count {
            font-size: 0.84rem;
            letter-spacing: 0.16em;
            color: rgba(108, 92, 72, 0.68);
            white-space: nowrap;
            font-family: var(--font-cn);
        }

        .journey-chapter-modal__count-star {
            color: rgba(200, 162, 79, 0.52);
            margin: 0 6px;
        }

        /* Journey：卡片外侧左右切换按钮（保证在视口内） */
        .journey-chapter-modal__panel {
            overflow: visible;
        }

        .journey-chapter-modal {
            --journey-panel-left: 50vw;
            --journey-panel-right: 50vw;
            --journey-side-gap: 40px;
        }

        .journey-chapter-modal__side-nav {
            position: fixed;
            inset: 0;
            pointer-events: none;
            z-index: 1300;
        }

        .journey-chapter-modal__side {
            position: absolute;
            top: 50%;
            transform: translateY(-50%);
            display: grid;
            justify-items: center;
            gap: 14px;
            pointer-events: auto;
        }

        .journey-chapter-modal__side--prev {
            left: calc(var(--journey-panel-left) - (58px / 2) - var(--journey-side-gap));
            transform: translate(-50%, -50%);
        }

        .journey-chapter-modal__side--next {
            left: calc(var(--journey-panel-right) + (58px / 2) + var(--journey-side-gap));
            transform: translate(-50%, -50%);
        }

        .journey-chapter-modal__side-btn {
            width: 58px;
            height: 58px;
            border-radius: 999px;
            background: rgba(255, 255, 255, 0.22);
            border: 1px solid rgba(132, 112, 84, 0.36);
            backdrop-filter: blur(10px);
            -webkit-backdrop-filter: blur(10px);
            color: rgba(255, 255, 255, 0.94);
            display: grid;
            place-items: center;
            font-size: 30px;
            font-weight: 700;
            line-height: 1;
            cursor: pointer;
            opacity: 0.92;
            user-select: none;
            transition: opacity 0.28s ease, transform 0.28s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.28s ease;
            box-shadow:
                0 24px 60px rgba(40, 32, 26, 0.14),
                inset 0 0 0 1px rgba(255, 255, 255, 0.42);
            text-shadow:
                0 1px 2px rgba(30, 24, 18, 0.45),
                0 0 8px rgba(255, 255, 255, 0.45);
            appearance: none;
            -webkit-appearance: none;
        }

        .journey-chapter-modal__side-btn:hover:not(:disabled) {
            opacity: 1;
            transform: scale(1.06);
            box-shadow:
                0 30px 78px rgba(40, 32, 26, 0.18),
                inset 0 0 0 1px rgba(255, 255, 255, 0.52);
        }

        .journey-chapter-modal__side-btn:active:not(:disabled) {
            transform: scale(1.03);
        }

        .journey-chapter-modal__side-btn:disabled {
            opacity: 0.38;
            cursor: default;
            transform: none;
            box-shadow: 0 14px 34px rgba(40, 32, 26, 0.06);
            color: rgba(255, 255, 255, 0.7);
            text-shadow: 0 1px 2px rgba(30, 24, 18, 0.28);
        }

        .journey-chapter-modal__side-btn:focus-visible {
            outline: 2px solid rgba(160, 134, 86, 0.48);
            outline-offset: 3px;
        }

        .journey-chapter-modal__side-label {
            font-size: 13px;
            letter-spacing: 2px;
            color: rgba(90, 76, 60, 0.52);
            font-family: var(--font-cn);
            user-select: none;
        }

        @media (max-width: 640px) {
            .journey-chapter-modal { --journey-side-gap: 26px; }
            .journey-chapter-modal__side--prev { left: calc(var(--journey-panel-left) - (48px / 2) - var(--journey-side-gap)); transform: translate(-50%, -50%); }
            .journey-chapter-modal__side--next { left: calc(var(--journey-panel-right) + (48px / 2) + var(--journey-side-gap)); transform: translate(-50%, -50%); }
            .journey-chapter-modal__side-btn { width: 48px; height: 48px; font-size: 24px; }
        }

        @media (max-width: 430px) {
            .journey-chapter-modal { --journey-side-gap: 18px; }
            .journey-chapter-modal__side--prev { left: calc(var(--journey-panel-left) - (44px / 2) - var(--journey-side-gap)); transform: translate(-50%, -50%); }
            .journey-chapter-modal__side--next { left: calc(var(--journey-panel-right) + (44px / 2) + var(--journey-side-gap)); transform: translate(-50%, -50%); }
            .journey-chapter-modal__side-btn { width: 44px; height: 44px; font-size: 22px; }
            .journey-chapter-modal__side-label { display: none; }
        }

        .journey-chapter-modal__footer {
            display: none !important;
        }

        .journey-chapter-modal__counter {
            font-size: 0.9rem;
            letter-spacing: 0.08em;
            color: rgba(108, 92, 72, 0.78);
            white-space: nowrap;
        }

        .journey-chapter-modal__counter-star {
            color: rgba(200, 162, 79, 0.62);
            margin-left: 4px;
        }

        .journey-chapter-modal__nav {
            font-family: var(--font-cn);
            border-radius: 999px;
            padding: 0.52rem 1.05rem;
            font-size: 0.92rem;
            letter-spacing: 0.06em;
            cursor: pointer;
            transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
            user-select: none;
        }

        .journey-chapter-modal__nav--prev {
            justify-self: start;
            background: rgba(255, 255, 255, 0.55);
            border: 1px solid rgba(200, 162, 79, 0.22);
            color: rgba(103, 92, 78, 0.88);
        }

        .journey-chapter-modal__nav--next {
            justify-self: end;
            border: none;
            color: rgba(98, 74, 30, 0.92);
            background: linear-gradient(180deg, rgba(234, 207, 150, 0.82), rgba(222, 186, 119, 0.9));
            box-shadow: 0 8px 18px rgba(123, 93, 42, 0.18);
        }

        .journey-chapter-modal__nav:hover:not([disabled]) {
            transform: translateY(-1px);
        }

        .journey-chapter-modal__nav--next:hover:not([disabled]) {
            box-shadow: 0 10px 20px rgba(123, 93, 42, 0.24);
        }

        .journey-chapter-modal__nav[disabled] {
            opacity: 0.46;
            cursor: default;
            transform: none;
            box-shadow: none;
        }

        /* 内容切换动效：fade + slight slide */
        .journey-chapter-modal__content.is-switching-next {
            animation: journeyContentOutNext 0.22s cubic-bezier(0.4, 0, 0.2, 1) both;
        }
        .journey-chapter-modal__content.is-switching-prev {
            animation: journeyContentOutPrev 0.22s cubic-bezier(0.4, 0, 0.2, 1) both;
        }
        .journey-chapter-modal__content.is-entering-next {
            animation: journeyContentInNext 0.23s cubic-bezier(0.4, 0, 0.2, 1) both;
        }
        .journey-chapter-modal__content.is-entering-prev {
            animation: journeyContentInPrev 0.23s cubic-bezier(0.4, 0, 0.2, 1) both;
        }

        @keyframes journeyContentOutNext {
            from { opacity: 1; transform: translateX(0); }
            to { opacity: 0; transform: translateX(-10px); }
        }
        @keyframes journeyContentOutPrev {
            from { opacity: 1; transform: translateX(0); }
            to { opacity: 0; transform: translateX(10px); }
        }
        @keyframes journeyContentInNext {
            from { opacity: 0; transform: translateX(10px); }
            to { opacity: 1; transform: translateX(0); }
        }
        @keyframes journeyContentInPrev {
            from { opacity: 0; transform: translateX(-10px); }
            to { opacity: 1; transform: translateX(0); }
        }

        body.is-journey-modal-open {
            overflow: hidden;
        }

        body.modal-open {
            overflow: hidden;
        }

        /* 回信：手撕便签条（无半透明框、无滚动条、无 X，仅正文 + 玫瑰章） */
        #replyModal.reply-slip-anchor {
            position: fixed;
            z-index: 1000;
            right: max(0.45rem, env(safe-area-inset-right, 0px));
            bottom: max(0.55rem, env(safe-area-inset-bottom, 0px));
            width: min(94vw, 368px);
            max-height: min(76vh, 520px);
            display: none;
            pointer-events: none;
        }

        #replyModal.reply-slip-anchor.active {
            display: block;
            pointer-events: auto;
        }

        .reply-slip {
            width: 100%;
            transform-origin: 90% 100%;
        }

        .reply-slip__fall {
            transform: translate3d(0, 0, 0) rotate(-2deg);
            opacity: 0;
            filter: drop-shadow(2px 4px 6px rgba(0, 0, 0, 0.1));
        }

        #replyModal.reply-slip-anchor.active:not(.is-leaving) .reply-slip__fall {
            animation: replySlipFall 1.14s cubic-bezier(0.28, 0.82, 0.36, 1) forwards;
        }

        #replyModal.reply-slip-anchor.is-leaving .reply-slip__fall {
            animation: replySlipDriftOut 0.52s ease-in forwards;
        }

        @keyframes replySlipFall {
            0% {
                opacity: 0;
                transform: translate3d(4px, calc(-100vh - 40px), 0) rotate(2deg);
            }
            100% {
                opacity: 1;
                transform: translate3d(0, 0, 0) rotate(-2deg);
            }
        }

        @keyframes replySlipDriftOut {
            0% {
                opacity: 1;
                transform: translate3d(0, 0, 0) rotate(-2deg);
            }
            100% {
                opacity: 0;
                transform: translate3d(72%, 18px, 0) rotate(6deg);
            }
        }

        @media (prefers-reduced-motion: reduce) {
            #replyModal.reply-slip-anchor.active:not(.is-leaving) .reply-slip__fall {
                animation: none;
                opacity: 1;
                transform: translate3d(0, 0, 0) rotate(-2deg);
            }

            #replyModal.reply-slip-anchor.is-leaving .reply-slip__fall {
                animation: none;
                opacity: 0;
            }
        }

        /* 手撕米黄纸：不规则 clip-path，无玻璃态、无外框阴影 */
        .reply-slip__panel {
            position: relative;
            max-height: min(76vh, 520px);
            clip-path: polygon(
                3% 1.2%,
                11% 0%,
                22% 1.8%,
                35% 0.4%,
                48% 2.1%,
                61% 0.2%,
                74% 1.6%,
                88% 0.6%,
                98% 2.4%,
                100% 8%,
                97% 15%,
                100% 24%,
                98% 33%,
                100% 41%,
                97% 50%,
                100% 58%,
                98% 67%,
                100% 76%,
                97% 85%,
                100% 93%,
                94% 100%,
                81% 98.5%,
                66% 100%,
                51% 98%,
                36% 100%,
                22% 97.5%,
                9% 100%,
                0% 96%,
                1.8% 86%,
                0% 74%,
                2.2% 62%,
                0% 50%,
                2% 38%,
                0% 26%,
                1.6% 14%,
                0% 5%
            );
            background: #f4eedf;
        }

        .reply-slip__inner {
            position: relative;
            max-height: min(76vh, 520px);
            overflow: hidden;
            padding: 1.25rem 1.2rem 3.35rem 1.15rem;
            cursor: pointer;
        }

        .reply-slip__letter {
            font-family: var(--font-hand), 'FangSong', 'STFangsong', 'KaiTi', 'STKaiti', 'Noto Serif SC', serif;
            font-size: 0.93rem;
            line-height: 2.08;
            letter-spacing: 0.04em;
            color: rgba(86, 74, 66, 0.92);
        }

        .reply-slip__body {
            margin: 0 0 1rem;
            white-space: pre-wrap;
            word-break: break-word;
            transition: opacity 0.12s ease;
        }

        .reply-slip__body:last-of-type {
            margin-bottom: 0.35rem;
        }

        .reply-slip__body--reply {
            font-style: italic;
            color: rgba(78, 70, 62, 0.9);
        }

        /* 右下角玫瑰章（pure-rose.png）：点击收起便签 */
        .reply-slip__rose {
            position: absolute;
            right: 0;
            bottom: 0;
            width: 80px;
            height: 80px;
            padding: 0;
            border: none;
            background: none;
            cursor: pointer;
            opacity: 0.52;
            transition: opacity 0.2s ease, transform 0.2s ease;
        }

        .reply-slip__rose:hover,
        .reply-slip__rose:focus-visible {
            opacity: 0.88;
            transform: scale(1.04);
            outline: none;
        }

        .reply-slip__rose-img {
            display: block;
            width: 100%;
            height: 100%;
            object-fit: contain;
            object-position: center bottom;
            pointer-events: none;
            image-rendering: auto;
        }

        /* JOURNEY PAGE */
        .journey-intro {
            text-align: center;
            margin-bottom: 3.2rem;
            padding: 0.8rem 1rem 0.6rem;
            position: relative;
            overflow: visible;
        }

        /* Journey 大标题：手撕纸抬头，去除标准卡片感 */
        .journey-intro__tape {
            position: relative;
            display: inline-block;
            padding: 0 0 0.45rem;
            margin-bottom: 0.6rem;
            transform: none;
        }

        .journey-intro__tape::before {
            content: none;
        }

        .journey-intro__tape::after {
            content: none;
            position: absolute;
            left: 50%;
            bottom: -0.18rem;
            transform: translateX(-50%) rotate(-1.2deg);
            width: min(78vw, 320px);
            height: 16px;
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 16' preserveAspectRatio='none'%3E%3Cpath d='M4 9 C 24 15, 44 3, 64 9 C 84 14, 104 4, 124 9 C 146 14, 166 4, 186 9 C 206 13, 226 5, 246 9 C 266 14, 286 4, 316 9' fill='none' stroke='%23b8a083' stroke-width='2.3' stroke-linecap='round' stroke-linejoin='round' stroke-dasharray='2 2' stroke-opacity='0.52'/%3E%3C/svg%3E");
            background-repeat: no-repeat;
            background-size: 100% 100%;
            pointer-events: none;
            opacity: 0.88;
        }

        .journey-intro__tape h2 {
            font-size: 2rem;
            color: rgba(112, 99, 86, 0.92);
            margin: 0 auto;
            max-width: min(92vw, 520px);
            padding: 0 0.35rem;
            box-sizing: border-box;
            position: relative;
            z-index: 0;
            transform: rotate(-1.5deg);
            font-family: var(--font-hand), 'Ma Shan Zheng', 'Long Cang', 'KaiTi', 'STKaiti', 'Noto Serif SC', cursive;
            font-weight: 400;
            letter-spacing: 0.04em;
        }

        .journey-intro p {
            font-size: 1.05rem;
            color: var(--text-light);
            max-width: 600px;
            margin: 0 auto;
        }

        .journey-station-nav {
            max-width: 1060px;
            margin: 0 auto 1.3rem;
            display: none;
            flex-wrap: wrap;
            justify-content: center;
            gap: 0.5rem 0.7rem;
        }

        .journey-station-link {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            padding: 0.24rem 0.62rem;
            border-radius: 999px;
            font-size: 0.82rem;
            color: rgba(110, 92, 64, 0.84);
            text-decoration: none;
            background: rgba(255, 254, 250, 0.5);
            border: 1px dashed rgba(150, 138, 116, 0.26);
            transition: transform 0.2s ease, background-color 0.2s ease, color 0.2s ease;
        }

        .journey-station-link:hover {
            transform: translateY(-1px);
            color: rgba(93, 74, 44, 0.96);
            background: rgba(255, 253, 245, 0.76);
        }

        .journey-map {
            position: relative;
            top: 0;
            width: calc(100% - 20px);
            margin: 0 auto 120px;
            height: 300px;
            --planet-scale: 1.5;
            background: transparent;
            border: none;
            border-radius: 8px;
            padding: 12px 24px;
            box-shadow: none;
            /* 标题比容器宽时不要被裁掉左侧「小王」 */
            overflow: visible;
            z-index: 18;
            box-sizing: border-box;
        }

        /* SVG 手绘航线：曲线路径 + stroke-dasharray，由 JS 写入 d */
        .journey-map__svg {
            position: absolute;
            inset: 0;
            width: 100%;
            height: 100%;
            pointer-events: none;
            z-index: 1;
            overflow: visible;
        }

        .journey-map__star {
            position: absolute;
            color: #c8b89a;
            font-size: 10px;
            line-height: 1;
            z-index: 2;
            pointer-events: none;
        }

        .journey-map__star--tl { top: 8px; left: 10px; }
        .journey-map__star--tr { top: 8px; right: 10px; }
        .journey-map__star--bl { bottom: 8px; left: 10px; }
        .journey-map__star--br { bottom: 8px; right: 10px; }

        .journey-map__nodes {
            position: absolute;
            inset: 8px 10px 12px;
            z-index: 3;
            pointer-events: none;
        }

        .journey-map__ship {
            position: absolute;
            width: 20px;
            height: 20px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 14px;
            color: #8b6f4e;
            transform: translate(-50%, -50%) rotate(-14deg);
            pointer-events: none;
            z-index: 4;
            transition: filter 0.2s ease;
            filter: drop-shadow(0 1px 0 rgba(255, 253, 247, 0.7));
        }

        .journey-map__node {
            position: absolute;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 4px;
            border: none;
            background: transparent;
            padding: 0;
            color: #6b4c35;
            cursor: pointer;
            transform-origin: center center;
            transition: transform 0.2s ease;
            transform: translate(-50%, -50%) rotate(var(--node-tilt, 0deg));
            pointer-events: auto;
        }

        .journey-map__node:hover {
            transform: translate(-50%, -50%) rotate(var(--node-tilt, 0deg)) scale(1.06);
        }

        /* 无圆圈容器：图标直接压在旅程地图纸面上（见 figma / App 图标式圆框已移除） */
        .journey-map__planet {
            width: 96px;
            height: 96px;
            border: none;
            border-radius: 0;
            background: transparent;
            box-shadow: none;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 16px;
            line-height: 1;
            transition: filter 0.2s ease, opacity 0.2s ease;
            overflow: visible;
            padding: 0;
            transform: scale(var(--planet-scale, 1));
        }

        .journey-map__planet-img {
            width: 100%;
            height: 100%;
            object-fit: contain;
            display: block;
            filter: drop-shadow(8px 10px 14px rgba(142, 136, 126, 0.14));
            opacity: 1;
            transform: rotate(var(--icon-tilt, 0deg));
        }

        .journey-map__name {
            font-size: 11px;
            color: #6b4c35;
            line-height: 1.45;
            white-space: nowrap;
            width: 90px;
            overflow: hidden;
            text-overflow: ellipsis;
            text-align: center;
            letter-spacing: 0.08em;
            font-weight: 300;
            font-family: var(--font-hand);
        }

        .journey-map__node[data-target="planet-7"] .journey-map__name {
            margin-top: 12px;
            position: relative;
            z-index: 8;
            color: #5d4432;
            text-shadow: 0 1px 0 rgba(250, 249, 246, 0.92);
        }

        .journey-map__node.is-active .journey-map__planet {
            box-shadow: none;
        }

        .journey-map__node.is-active .journey-map__planet-img {
            filter: drop-shadow(9px 11px 15px rgba(142, 136, 126, 0.16));
        }

        .journey-map__node.is-active .journey-map__name {
            color: #7a4a6a;
        }

        .planet-anchor {
            position: relative;
            height: 0;
            margin: 0;
            padding: 0;
        }

        .timeline {
            position: relative;
            margin: 3rem 0;
        }

        .timeline-curves {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            z-index: 0;
            pointer-events: none;
        }

        .timeline-segment {
            position: absolute;
            width: 56px;
            z-index: 1;
        }

        .timeline-svg {
            width: 56px;
            height: 100%;
            overflow: visible;
        }

        .timeline-svg path {
            fill: none;
            stroke: #c4a96b;
            stroke-width: 2.5;
            stroke-dasharray: 9 7 2 8;
            stroke-linecap: round;
            opacity: 1;
            transition: opacity 0.6s ease, transform 0.6s ease;
        }

        .timeline-svg .timeline-stitch-secondary {
            stroke: rgba(125, 104, 68, 0.58);
            stroke-width: 1.2;
            stroke-dasharray: 2 9 4 8;
            transform: translate(1.2px, -0.8px);
        }

        .timeline-svg.draw path {
            opacity: 1;
        }

        .timeline-plane {
            transform-box: fill-box;
            transform-origin: center;
        }

        .timeline-plane path {
            fill: none;
            stroke: #c4a96b;
            stroke-width: 1.8;
            stroke-linecap: round;
            stroke-linejoin: round;
        }


        .timeline-item {
            margin-bottom: 3.25rem;
            position: relative;
            z-index: 1;
            --planet-color: #9f8f77;
        }

        .timeline-item {
            opacity: 0;
            transform: translateY(30px);
            transition: all 0.6s ease;
        }

        .timeline-item.is-visible {
            opacity: 1;
            transform: translateY(0);
        }

        .timeline-item:nth-child(odd) {
            margin-left: 0;
            text-align: right;
            padding-right: calc(50% + 42px);
        }

        .timeline-item:nth-child(even) {
            margin-left: calc(50% + 42px);
            text-align: left;
            padding-left: 0;
        }

        .timeline-dot {
            position: absolute;
            left: 50%;
            top: 0;
            transform: translateX(calc(-50% + var(--timeline-dot-shift, 0px)));
            width: 14px;
            height: 14px;
            background: rgba(154, 146, 131, 0.86);
            border: none;
            border-radius: 0;
            clip-path: polygon(48% 3%, 66% 12%, 86% 32%, 95% 52%, 84% 75%, 63% 92%, 39% 96%, 16% 84%, 6% 62%, 10% 38%, 24% 17%);
            filter: saturate(0.86);
            z-index: 10;
        }

        .timeline-dot::before {
            content: '';
            position: absolute;
            inset: -3px;
            background: rgba(176, 167, 152, 0.28);
            clip-path: polygon(47% 6%, 69% 14%, 88% 35%, 92% 56%, 80% 79%, 60% 90%, 36% 93%, 16% 82%, 6% 61%, 11% 36%, 27% 14%);
            opacity: 0.9;
            z-index: -1;
        }

        .timeline-dot::after {
            content: '';
            position: absolute;
            left: 3px;
            top: 3px;
            width: 5px;
            height: 5px;
            background: rgba(245, 242, 234, 0.34);
            clip-path: polygon(50% 0%, 72% 18%, 100% 50%, 74% 80%, 44% 100%, 18% 78%, 0% 44%, 24% 18%);
        }

        .timeline-card {
            --note-tilt: 0deg;
            --wash-a: rgba(173, 199, 214, 0.2);
            --wash-b: rgba(237, 226, 199, 0.22);
            background: rgba(248, 242, 232, 0.18);
            padding: 1.7rem 1.55rem 1.55rem;
            border: none;
            cursor: pointer;
            transition: all 0.3s ease;
            position: relative;
            overflow: visible;
            text-align: left;
            transform: rotate(var(--note-tilt));
            max-width: 520px;
        }

        .timeline-item:nth-child(1) .timeline-card { --note-tilt: -0.7deg; }
        .timeline-item:nth-child(2) .timeline-card { --note-tilt: 0.9deg; }
        .timeline-item:nth-child(3) .timeline-card { --note-tilt: -0.4deg; }
        .timeline-item:nth-child(4) .timeline-card { --note-tilt: 0.8deg; }
        .timeline-item:nth-child(5) .timeline-card { --note-tilt: -0.6deg; }
        .timeline-item:nth-child(6) .timeline-card { --note-tilt: 0.55deg; }
        .timeline-item:nth-child(7) .timeline-card { --note-tilt: -0.45deg; }
        .timeline-item:nth-child(8) .timeline-card { --note-tilt: 0.35deg; }

        .timeline-card--overflow {
            overflow: visible;
        }

        .timeline-overflow-note {
            position: absolute;
            right: -10px;
            bottom: -16px;
            margin: 0;
            font-size: 0.62rem;
            color: rgba(138, 130, 116, 0.44);
            transform: rotate(6deg);
            pointer-events: none;
            white-space: nowrap;
        }

        .b612-overflow-note {
            position: absolute;
            right: -0.35rem;
            bottom: -1.05rem;
            margin: 0;
            font-size: 0.64rem;
            color: rgba(132, 124, 108, 0.46);
            transform: rotate(-5deg);
            pointer-events: none;
            white-space: nowrap;
        }

        .timeline-card::before {
            content: none;
        }

        .timeline-card::after {
            content: none;
        }

        .timeline-card:hover {
            transform: rotate(calc(var(--note-tilt) + 0.2deg)) translateY(-2px);
        }

        .timeline-item:nth-child(odd) .timeline-card {
            --wash-a: rgba(177, 205, 219, 0.22);
            --wash-b: rgba(239, 228, 202, 0.18);
        }

        .timeline-item:nth-child(even) .timeline-card {
            --wash-a: rgba(164, 191, 210, 0.16);
            --wash-b: rgba(236, 224, 196, 0.25);
        }

        .timeline-card h3 {
            margin: 0;
            position: relative;
            z-index: 1;
            /* 具体样式在“字体与排版系统”中统一覆盖 */
        }

        .chapter-tape {
            --tape-tilt: -4deg;
            position: relative;
            display: inline-block;
            margin: 0.1rem 0 0.9rem;
            padding: 0.18rem 0.28rem 0.32rem;
            background: transparent;
            border-bottom: 2px solid rgba(200, 180, 150, 0.5);
            border-radius: 7px;
            transform: rotate(var(--tape-tilt));
            box-shadow: none;
            z-index: 2;
        }

        .chapter-tape::before {
            content: none;
        }

        .chapter-tape-note {
            position: absolute;
            right: 0.38rem;
            bottom: 0.04rem;
            font-family: var(--font-hand), 'Noto Serif SC', cursive;
            font-size: 0.56rem;
            font-weight: 400;
            color: rgba(98, 90, 78, 0.72);
            letter-spacing: 0.03em;
            transform: rotate(2deg);
            white-space: nowrap;
            pointer-events: none;
        }

        .timeline-card p {
            position: relative;
            z-index: 1;
            text-align: left;
            /* 具体样式在“字体与排版系统”中统一覆盖 */
        }

        .timeline-card p.narrative {
            text-align: left;
            text-indent: 0;
        }

        .timeline-card p.narrative.no-indent {
            text-indent: 0;
        }

        .chapter-watermark {
            position: absolute;
            right: 0.55rem;
            top: 50%;
            transform: translateY(calc(-50% + var(--chapter-shift, 0px) * var(--wm-rate, 0.22)));
            font-family: var(--font-hand), Georgia, 'Times New Roman', serif;
            font-size: clamp(120px, 10vw, 150px);
            font-weight: 500;
            color: rgba(160, 160, 160, 0.18);
            opacity: 0.05;
            letter-spacing: 0.06em;
            line-height: 0.9;
            pointer-events: none;
            user-select: none;
            z-index: 0;
            transition: transform 0.08s linear;
        }

        .timeline-thought .quote-char {
            opacity: 0;
            transition: opacity 0.3s ease;
        }

        /* Journey：章节改为明信片卡片 */
        #journey .timeline-curves {
            display: none;
        }

        /* 手绘路径：居中贯穿所有卡片 */
        #journey .timeline {
            position: relative;
            margin: 0;
            padding: 0;
        }

        #journey .timeline::before {
            content: '';
            position: absolute;
            top: 0;
            bottom: 0;
            left: 50%;
            width: 1.5px;
            transform: translateX(-50%);
            background:
                repeating-linear-gradient(
                    to bottom,
                    #b8a07a 0px,
                    #b8a07a 6px,
                    transparent 6px,
                    transparent 14px
                );
            border-radius: 999px;
            filter: saturate(0.9);
            pointer-events: none;
            z-index: 0;
        }

        #journey .timeline-item {
            margin-bottom: 48px;
            padding: 0;
            text-align: left;
            padding-left: 0 !important;
            padding-right: 0 !important;
        }

        #journey .timeline-item:first-child {
            margin-top: 24px;
        }

        #journey .timeline-item:nth-child(odd),
        #journey .timeline-item:nth-child(even) {
            margin-left: 0;
            text-align: left;
        }

        #journey {
            background: transparent;
        }

        /* Journey：页面内容容器（居中米色底，无边框分层） */
        #journey .journey-content {
            max-width: 900px;
            margin: 28px auto 56px;
            padding: 28px 44px 56px;
            border-radius: 20px;
        }

        /* 合并设计：隐藏顶部缩略导航，只保留站点内容流 */
        #journey .journey-map {
            display: none;
        }

        #journey .timeline {
            position: relative;
            max-width: 100%;
            margin: 0 auto;
            padding: 0 0 24px;
        }

        #journey .timeline::before {
            display: none;
        }

        #journey .journey-walkpath {
            position: absolute;
            inset: 0;
            width: 100%;
            height: 100%;
            pointer-events: none;
            z-index: 0;
            display: none;
        }

        #journey .timeline-item {
            margin: 0 0 88px;
            position: relative;
        }

        #journey .journey-companions {
            position: absolute;
            inset: -24px -12px;
            pointer-events: none;
            z-index: 0;
        }

        #journey .journey-companion {
            position: absolute;
            opacity: 0;
            --companion-base: rotate(0deg);
            --parallax-x: 0px;
            --parallax-y: 0px;
            transform: translate3d(var(--parallax-x), calc(var(--parallax-y) + 8px), 0) var(--companion-base);
            transition: opacity 0.9s ease, transform 0.9s ease;
            filter: saturate(0.92);
        }

        #journey .timeline-item.is-visible .journey-companion {
            opacity: 1;
            transform: translate3d(var(--parallax-x), var(--parallax-y), 0) var(--companion-base);
        }

        #journey .journey-companion svg {
            display: block;
        }

        #journey .journey-companion img {
            display: block;
            width: 100%;
            height: auto;
            object-fit: contain;
            opacity: 0.95;
        }

        #journey .journey-companion--petal {
            opacity: 0;
            filter: saturate(0.88);
        }

        #journey .journey-companion--petal { width: clamp(58px, 12vw, 120px); }
        #journey .journey-companion--cactus { width: clamp(78px, 14vw, 170px); }
        #journey .journey-companion--stones { width: clamp(96px, 17vw, 210px); }

        /* 放宽前两章正文宽度，避免右侧文字列过窄 */
        #journey #planet-0 .timeline-card p,
        #journey #planet-1 .timeline-card p {
            max-width: none;
        }

        #journey #planet-0 .timeline-card p.narrative,
        #journey #planet-1 .timeline-card p.narrative {
            margin-bottom: 1.2rem;
        }

        #journey .timeline-item::after {
            content: '';
            position: absolute;
            left: 50%;
            bottom: -58px;
            width: 148px;
            height: 52px;
            transform: translateX(-50%) rotate(-18deg);
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.9s ease;
            background-image:
                url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='64' viewBox='0 0 180 64'%3E%3Cg fill='%237c705c' fill-opacity='.42'%3E%3Cellipse cx='18' cy='40' rx='7.2' ry='5.2'/%3E%3Cellipse cx='13' cy='32' rx='2.6' ry='2.1'/%3E%3Cellipse cx='18' cy='29' rx='2.5' ry='2.1'/%3E%3Cellipse cx='23' cy='31' rx='2.4' ry='2.0'/%3E%3Cellipse cx='36' cy='34' rx='6.6' ry='4.8'/%3E%3Cellipse cx='31' cy='27' rx='2.4' ry='1.9'/%3E%3Cellipse cx='36' cy='24' rx='2.3' ry='1.9'/%3E%3Cellipse cx='41' cy='26' rx='2.2' ry='1.8'/%3E%3Cellipse cx='57' cy='42' rx='7.2' ry='5.2'/%3E%3Cellipse cx='52' cy='34' rx='2.6' ry='2.1'/%3E%3Cellipse cx='57' cy='31' rx='2.5' ry='2.1'/%3E%3Cellipse cx='62' cy='33' rx='2.4' ry='2.0'/%3E%3Cellipse cx='77' cy='36' rx='6.6' ry='4.8'/%3E%3Cellipse cx='72' cy='29' rx='2.4' ry='1.9'/%3E%3Cellipse cx='77' cy='26' rx='2.3' ry='1.9'/%3E%3Cellipse cx='82' cy='28' rx='2.2' ry='1.8'/%3E%3Cellipse cx='98' cy='44' rx='7.2' ry='5.2'/%3E%3Cellipse cx='93' cy='36' rx='2.6' ry='2.1'/%3E%3Cellipse cx='98' cy='33' rx='2.5' ry='2.1'/%3E%3Cellipse cx='103' cy='35' rx='2.4' ry='2.0'/%3E%3Cellipse cx='118' cy='38' rx='6.6' ry='4.8'/%3E%3Cellipse cx='113' cy='31' rx='2.4' ry='1.9'/%3E%3Cellipse cx='118' cy='28' rx='2.3' ry='1.9'/%3E%3Cellipse cx='123' cy='30' rx='2.2' ry='1.8'/%3E%3Cellipse cx='139' cy='46' rx='7.2' ry='5.2'/%3E%3Cellipse cx='134' cy='38' rx='2.6' ry='2.1'/%3E%3Cellipse cx='139' cy='35' rx='2.5' ry='2.1'/%3E%3Cellipse cx='144' cy='37' rx='2.4' ry='2.0'/%3E%3Cellipse cx='160' cy='40' rx='6.6' ry='4.8'/%3E%3Cellipse cx='155' cy='33' rx='2.4' ry='1.9'/%3E%3Cellipse cx='160' cy='30' rx='2.3' ry='1.9'/%3E%3Cellipse cx='165' cy='32' rx='2.2' ry='1.8'/%3E%3C/g%3E%3C/svg%3E");
            background-repeat: no-repeat;
            background-size: 100% 100%;
        }

        #journey .timeline-item::before {
            content: '';
            position: absolute;
            left: 50%;
            bottom: -76px;
            width: 188px;
            height: 56px;
            transform: translateX(-50%) rotate(-20deg);
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.9s ease;
            background-image:
                url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='188' height='56' viewBox='0 0 188 56'%3E%3Cg fill='%23756854' fill-opacity='.28'%3E%3Cellipse cx='16' cy='35' rx='7' ry='5'/%3E%3Cellipse cx='11' cy='28' rx='2.4' ry='1.9'/%3E%3Cellipse cx='16' cy='25' rx='2.3' ry='1.9'/%3E%3Cellipse cx='21' cy='27' rx='2.2' ry='1.8'/%3E%3Cellipse cx='34' cy='31' rx='6.4' ry='4.6'/%3E%3Cellipse cx='29' cy='24' rx='2.2' ry='1.8'/%3E%3Cellipse cx='34' cy='21' rx='2.1' ry='1.8'/%3E%3Cellipse cx='39' cy='23' rx='2.0' ry='1.7'/%3E%3Cellipse cx='54' cy='38' rx='7' ry='5'/%3E%3Cellipse cx='49' cy='31' rx='2.4' ry='1.9'/%3E%3Cellipse cx='54' cy='28' rx='2.3' ry='1.9'/%3E%3Cellipse cx='59' cy='30' rx='2.2' ry='1.8'/%3E%3Cellipse cx='74' cy='33' rx='6.4' ry='4.6'/%3E%3Cellipse cx='69' cy='26' rx='2.2' ry='1.8'/%3E%3Cellipse cx='74' cy='23' rx='2.1' ry='1.8'/%3E%3Cellipse cx='79' cy='25' rx='2.0' ry='1.7'/%3E%3Cellipse cx='96' cy='40' rx='7' ry='5'/%3E%3Cellipse cx='91' cy='33' rx='2.4' ry='1.9'/%3E%3Cellipse cx='96' cy='30' rx='2.3' ry='1.9'/%3E%3Cellipse cx='101' cy='32' rx='2.2' ry='1.8'/%3E%3Cellipse cx='116' cy='35' rx='6.4' ry='4.6'/%3E%3Cellipse cx='111' cy='28' rx='2.2' ry='1.8'/%3E%3Cellipse cx='116' cy='25' rx='2.1' ry='1.8'/%3E%3Cellipse cx='121' cy='27' rx='2.0' ry='1.7'/%3E%3Cellipse cx='138' cy='42' rx='7' ry='5'/%3E%3Cellipse cx='133' cy='35' rx='2.4' ry='1.9'/%3E%3Cellipse cx='138' cy='32' rx='2.3' ry='1.9'/%3E%3Cellipse cx='143' cy='34' rx='2.2' ry='1.8'/%3E%3Cellipse cx='158' cy='37' rx='6.4' ry='4.6'/%3E%3Cellipse cx='153' cy='30' rx='2.2' ry='1.8'/%3E%3Cellipse cx='158' cy='27' rx='2.1' ry='1.8'/%3E%3Cellipse cx='163' cy='29' rx='2.0' ry='1.7'/%3E%3Cellipse cx='178' cy='44' rx='7' ry='5'/%3E%3Cellipse cx='173' cy='37' rx='2.4' ry='1.9'/%3E%3Cellipse cx='178' cy='34' rx='2.3' ry='1.9'/%3E%3Cellipse cx='183' cy='36' rx='2.2' ry='1.8'/%3E%3C/g%3E%3C/svg%3E");
            background-repeat: no-repeat;
            background-size: 100% 100%;
        }

        #journey .timeline-item:nth-child(even)::after {
            transform: translateX(-50%) rotate(16deg) scaleX(-1);
        }

        #journey .timeline-item:nth-child(even)::before {
            transform: translateX(-50%) rotate(18deg) scaleX(-1);
        }

        #journey .timeline-item.is-visible::after {
            opacity: 0.22;
        }

        #journey .timeline-item.is-visible::before {
            opacity: 0.12;
        }

        #journey .timeline-item:last-child::after {
            display: none;
        }

        #journey .timeline-item:last-child::before {
            display: none;
        }

        #journey .timeline-dot {
            display: none;
        }

        @media (max-width: 720px) {
            #journey .journey-content {
                margin-top: 60px;
                margin-bottom: 60px;
                padding: 28px;
                border-radius: 18px;
            }

            #journey .timeline {
                padding-bottom: 18px;
            }
        }

        #journey .timeline-card {
            width: min(980px, 100%);
            min-height: 0;
            max-width: none;
            box-sizing: border-box;
            background: rgba(248, 242, 232, 0.14);
            border: none;
            border-radius: 0;
            padding: 0;
            position: relative;
            overflow: visible;
            cursor: default;
            transition: all 0.8s ease;
            transition-delay: 0.1s;
            opacity: 0;
            transform: translateY(30px);
            z-index: 1;
            display: grid;
            grid-template-columns: minmax(230px, 360px) minmax(280px, 1fr);
            column-gap: clamp(30px, 5vw, 86px);
            align-items: center;
        }

        #journey .timeline-item:nth-child(even) .timeline-card {
            grid-template-columns: minmax(280px, 1fr) minmax(230px, 360px);
        }

        #journey .timeline-item.is-visible .timeline-card {
            opacity: 1;
            transform: translateY(0);
        }

        /* 章节分隔线 */
        #journey .chapter-divider {
            display: none;
            justify-content: center;
            align-items: center;
            gap: 1.2rem;
            color: #c9a84c;
            font-size: 0.8rem;
            margin: 4rem 0;
            letter-spacing: 0.05em;
            opacity: 0.95;
            pointer-events: none;
        }

        /* 第一章：图左文右（float left），280px + 右侧 3rem */
        #journey #planet-0 .timeline-card {
            display: block;
            overflow: hidden;
        }

        #journey #planet-0 .journey-card-media {
            float: left;
            width: 380px;
            height: auto;
            margin: 0 3rem 0 0;
        }

        #journey #planet-0 .journey-card-media img {
            width: 380px;
            height: auto;
        }

        #journey #planet-0 .journey-card-media--chapter1 .chapter-figure-caption {
            margin-top: 0.35rem;
            text-align: center;
            font-size: 0.75rem;
            color: #9a8a7a;
        }

        /* 第二章：图右文左（float right），240px + shape-outside */
        #journey #planet-1 .timeline-card {
            display: block;
            overflow: hidden;
        }

        #journey #planet-1 .journey-card-media {
            float: right;
            width: 400px;
            height: 400px;
            margin: 0.9rem 0 0 3rem;
            shape-outside: circle(50%);
            shape-margin: 0.35rem;
            border-radius: 50%;
            overflow: visible;
        }

        #journey #planet-1 .journey-card-media img {
            width: 100%;
            height: 100%;
            object-fit: contain;
        }

        /* 第三章：左侧插图下移、260px、间距 2.5rem */
        #journey #planet-2 .timeline-card {
            display: block;
            overflow: hidden;
        }

        #journey #planet-2 .journey-card-media {
            float: left;
            width: 360px;
            height: 360px;
            margin: 0.65rem 2.5rem 0 0;
        }

        #journey #planet-2 .journey-card-media img {
            width: 100%;
            height: 100%;
            object-fit: contain;
            /* 第三章单独减阴影并提亮，避免“发深、陷进去”的观感 */
            filter: drop-shadow(4px 6px 10px rgba(144, 138, 128, 0.08))
                    saturate(0.9)
                    brightness(1.08)
                    contrast(0.9);
        }

        /* 移动端：单栏竖排，关闭 float 与 shape-outside */
        @media (max-width: 768px) {
            #journey .timeline-card {
                display: flex;
                flex-direction: column;
                align-items: center;
                grid-template-columns: none !important;
                column-gap: 0;
            }

            #journey .journey-card-media {
                float: none !important;
                width: min(100%, 320px);
                height: auto;
                margin: 0 0 2rem 0;
                shape-outside: none !important;
                clip-path: none !important;
                border-radius: 0 !important;
            }

            #journey .journey-card-media img {
                width: 100%;
                height: auto;
            }

            #journey #planet-0 .timeline-card,
            #journey #planet-1 .timeline-card,
            #journey #planet-2 .timeline-card {
                overflow: visible;
            }

            #journey #planet-0 .journey-card-media,
            #journey #planet-1 .journey-card-media,
            #journey #planet-2 .journey-card-media {
                height: auto;
            }

            #journey #planet-1 .journey-card-media {
                height: auto;
            }

            #journey #planet-0 .journey-card-media--chapter1 .chapter-figure-caption {
                margin-top: 0.6rem;
            }
        }

        #journey .timeline-card:hover {
            transform: translateY(-1px);
        }

        #journey .timeline-dot::after {
            content: none !important;
        }

        /* 去掉旧邮戳/邮票/折角装饰 */
        #journey .chapter-watermark,
        #journey .chapter-tape-note,
        #journey .timeline-overflow-note,
        #journey .postcard-mark,
        #journey .postcard-sticker,
        #journey .postcard-footer,
        #journey .timeline-card::after {
            display: none !important;
        }

        #journey .journey-card-media {
            height: clamp(190px, 30vw, 300px);
            display: flex;
            align-items: center;
            justify-content: center;
            margin: 0;
            border: none;
            background: transparent;
        }

        #journey .journey-card-media img {
            width: 100%;
            height: 100%;
            object-fit: contain;
            display: block;
            filter: drop-shadow(14px 16px 24px rgba(144, 138, 128, 0.16))
                    drop-shadow(4px 6px 10px rgba(156, 149, 138, 0.12));
            animation: journeyFloat 6.8s ease-in-out infinite;
        }

        #journey .timeline-item:nth-child(odd) .journey-card-media img {
            animation-duration: 7.4s;
            animation-delay: -0.9s;
        }

        #journey .timeline-item:nth-child(even) .journey-card-media img {
            animation-duration: 6.2s;
            animation-delay: -0.45s;
        }

        #journey #planet-7 .journey-card-media {
            position: relative;
        }

        #journey #planet-7 .journey-card-media::before {
            content: '';
            position: absolute;
            right: 10%;
            bottom: -20px;
            width: 90px;
            height: 34px;
            opacity: 0.3;
            pointer-events: none;
            background-image:
                url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='46' viewBox='0 0 120 46'%3E%3Cg fill='%23786a54' fill-opacity='.46'%3E%3Cellipse cx='14' cy='28' rx='7.6' ry='5.4'/%3E%3Cellipse cx='9' cy='20' rx='2.5' ry='2.0'/%3E%3Cellipse cx='14' cy='17' rx='2.4' ry='2.0'/%3E%3Cellipse cx='19' cy='19' rx='2.3' ry='1.9'/%3E%3Cellipse cx='42' cy='30' rx='7.2' ry='5.2'/%3E%3Cellipse cx='37' cy='22' rx='2.4' ry='1.9'/%3E%3Cellipse cx='42' cy='19' rx='2.3' ry='1.9'/%3E%3Cellipse cx='47' cy='21' rx='2.2' ry='1.8'/%3E%3Cellipse cx='69' cy='33' rx='6.8' ry='5.0'/%3E%3Cellipse cx='64' cy='26' rx='2.3' ry='1.9'/%3E%3Cellipse cx='69' cy='23' rx='2.2' ry='1.8'/%3E%3Cellipse cx='74' cy='25' rx='2.1' ry='1.7'/%3E%3Cellipse cx='95' cy='36' rx='6.5' ry='4.8'/%3E%3Cellipse cx='90' cy='29' rx='2.2' ry='1.8'/%3E%3Cellipse cx='95' cy='26' rx='2.1' ry='1.7'/%3E%3Cellipse cx='100' cy='28' rx='2.0' ry='1.6'/%3E%3C/g%3E%3C/svg%3E");
            background-repeat: no-repeat;
            background-size: 100% 100%;
        }

        #journey #planet-7 .journey-card-media::after {
            content: '';
            position: absolute;
            left: 50%;
            bottom: 6%;
            width: 58px;
            height: 58px;
            transform: translateX(-50%);
            border-radius: 50%;
            pointer-events: none;
            background: radial-gradient(circle, rgba(245, 232, 190, 0.18) 0%, rgba(245, 232, 190, 0.08) 44%, transparent 70%);
            filter: blur(1px);
        }

        @keyframes journeyFloat {
            0%, 100% { transform: translateY(0) rotate(-0.18deg); }
            50% { transform: translateY(-2px) rotate(0.18deg); }
        }

        @media (prefers-reduced-motion: reduce) {
            #journey .journey-card-media img {
                animation: none !important;
            }
            #journey .timeline-card,
            #journey .journey-companion,
            #journey .timeline-item::before,
            #journey .timeline-item::after {
                transition: none !important;
            }
        }

        #journey .journey-card-media-emoji {
            font-size: 64px;
            line-height: 1;
        }

        #journey .timeline-card h3 {
            margin: 0 0 12px;
            font-size: clamp(1.1rem, 2vw, 1.42rem);
            font-family: var(--font-hand);
            color: var(--planet-color, #c17bd9);
            text-align: left;
            font-style: italic;
            font-weight: 400;
            letter-spacing: 0.03em;
            transition: color 0.45s ease, transform 0.45s ease, text-shadow 0.45s ease;
            transform: translateY(4px);
            text-shadow: none;
        }

        #journey .timeline-item.is-visible .timeline-card h3 {
            transform: translateY(0);
            color: color-mix(in srgb, var(--planet-color, #c17bd9) 72%, #7a6f61 28%);
            text-shadow: 0 1px 0 rgba(255, 252, 245, 0.78);
        }

        #journey .timeline-card p.narrative {
            margin: 0;
            text-indent: 0;
            font-size: clamp(0.98rem, 1.7vw, 1.08rem);
            color: #8b7355;
            line-height: 2;
            letter-spacing: 0.02em;
            font-family: var(--font-hand), 'Noto Serif SC', 'Songti SC', serif;
        }

        #journey .timeline-thought {
            margin: 16px 0 0;
            font-style: italic;
            font-size: clamp(0.88rem, 1.45vw, 1rem);
            color: #8f7860;
            line-height: 1.82;
            letter-spacing: 0.02em;
            border-left: none;
            padding: 0.45rem 0.75rem;
            opacity: 1;
            background: linear-gradient(180deg, rgba(186, 176, 160, 0.12), rgba(186, 176, 160, 0.07));
            border-radius: 10px;
            position: relative;
            display: inline-block;
            width: fit-content;
            max-width: min(100%, 40em);
            vertical-align: top;
        }

        #journey .timeline-thought::before,
        #journey .timeline-thought::after {
            position: absolute;
            color: rgba(143, 120, 96, 0.42);
            font-size: 1.1em;
            line-height: 1;
            pointer-events: none;
        }

        #journey .timeline-thought::before {
            content: "“";
            left: 0.22rem;
            top: 0.26rem;
        }

        #journey .timeline-thought::after {
            content: "”";
            right: 0.24rem;
            bottom: 0.22rem;
        }

        #journey .timeline-item:nth-child(odd) .journey-card-media {
            grid-column: 1;
        }

        #journey .timeline-item:nth-child(odd) .timeline-card h3,
        #journey .timeline-item:nth-child(odd) .timeline-card p {
            grid-column: 2;
        }

        #journey .timeline-item:nth-child(even) .journey-card-media {
            grid-column: 2;
        }

        #journey .timeline-item:nth-child(even) .timeline-card h3,
        #journey .timeline-item:nth-child(even) .timeline-card p {
            grid-column: 1;
        }

        /* 统一章节图文宽度：避免后续章节因网格规则显得过窄 */
        #journey .timeline-item .timeline-card {
            display: block;
            overflow: hidden;
        }

        #journey .timeline-item .journey-card-media {
            float: left;
            width: 360px;
            height: auto;
            margin: 0.2rem 3rem 0 0;
        }

        /* （保留）章节弹窗默认仍是左右布局，这里不再全局隐藏左侧插画 */


        #journey .timeline-item .journey-card-media img {
            width: 100%;
            height: auto;
            object-fit: contain;
        }

        #journey .timeline-item .timeline-card h3,
        #journey .timeline-item .timeline-card p {
            max-width: none;
        }

        /* 保留第二章右侧图文关系 */
        #journey #planet-1 .journey-card-media {
            float: right;
            width: 400px;
            height: 400px;
            margin: 0.9rem 0 0 3rem;
            shape-outside: circle(50%);
            shape-margin: 0.35rem;
            border-radius: 50%;
            overflow: visible;
        }

        /* 第1、3章按前面定制尺寸 */
        #journey #planet-0 .journey-card-media {
            width: 380px;
            margin-right: 3rem;
        }

        #journey #planet-0 .journey-card-media--chapter1 {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: flex-start;
        }

        #journey #planet-2 .journey-card-media {
            width: 360px;
            margin-right: 2.5rem;
            margin-top: 0.65rem;
        }

        /* 章节插图左右交替：1左2右3左4右... */
        #journey #planet-1 .journey-card-media,
        #journey #planet-3 .journey-card-media,
        #journey #planet-5 .journey-card-media,
        #journey #planet-7 .journey-card-media {
            float: right;
            margin: 0.2rem 0 0 3rem;
        }

        #journey #planet-0 .journey-card-media,
        #journey #planet-2 .journey-card-media,
        #journey #planet-4 .journey-card-media,
        #journey #planet-6 .journey-card-media {
            float: left;
            margin: 0.2rem 3rem 0 0;
        }

        /* 保持第三章之前设定的细节间距 */
        #journey #planet-2 .journey-card-media {
            margin-right: 2.5rem;
            margin-top: 0.65rem;
        }

        /* 第六章点灯人：与纸面背景更自然融合 */
        #journey #planet-5 .journey-card-media img {
            filter:
                sepia(0.08)
                saturate(0.9)
                contrast(0.94)
                brightness(0.99)
                drop-shadow(6px 8px 14px rgba(118, 104, 84, 0.14));
        }

        /* 第一章新插图：轻微柔化，融入纸张背景 */
        #journey #planet-0 .journey-card-media img {
            filter:
                sepia(0.05)
                saturate(0.92)
                contrast(0.95)
                brightness(0.995);
        }

        /* 第四章（酒鬼）卡片：应用 chapter 风格但不改结构 */
        #journey #planet-3 .timeline-card {
            position: relative;
            padding: clamp(1.4rem, 2.6vw, 2.1rem);
            border-radius: 20px;
            background:
                radial-gradient(circle at 30% 20%, rgba(255, 255, 255, 0.78), transparent 36%),
                radial-gradient(circle at 80% 72%, rgba(232, 203, 147, 0.16), transparent 42%),
                #fbf4e8;
        }

        #journey #planet-3 .timeline-card::before {
            content: "";
            position: absolute;
            inset: 0;
            border-radius: inherit;
            pointer-events: none;
            opacity: 0.36;
            background-image:
                repeating-radial-gradient(circle, rgba(120, 90, 50, 0.03) 0 1px, transparent 1px 4px);
        }

        #journey #planet-3 .journey-card-media {
            float: left;
            width: clamp(250px, 31vw, 420px);
            margin: 0.15rem 2.4rem 0.5rem 0;
        }

        #journey #planet-3 .journey-card-media img {
            animation: chapterDrunkardFloat 4s ease-in-out infinite;
        }

        #journey #planet-3 .timeline-card h3 {
            letter-spacing: 0.14em;
            font-size: clamp(1.35rem, 2.2vw, 1.9rem);
            margin-bottom: 0.55rem;
        }

        #journey #planet-3 .timeline-card p.narrative {
            line-height: 2;
            margin-bottom: 0.9rem;
        }

        #journey #planet-3 .timeline-card .timeline-thought {
            color: #c28b2c;
            font-size: 1.06rem;
        }

        @keyframes chapterDrunkardFloat {
            0%, 100% { transform: translateY(0); }
            50% { transform: translateY(-10px); }
        }

        .timeline-thought.is-typed .quote-char {
            opacity: 1;
        }

        /* 金句高亮：改为手绘感波浪下划线 */
        .quote-highlight {
            position: relative;
            display: inline;
            padding: 0 0.1em;
            z-index: 1;
            background: transparent;
            text-decoration: none;
        }

        .quote-highlight.pink {
            text-decoration: none;
        }

        #planet-0,
        #planet-1,
        #planet-2,
        #planet-3,
        #planet-4,
        #planet-5,
        #planet-6,
        #planet-7 { --planet-color: #9f8f77; }

        /* FULLSCREEN FLIGHT LOG MODAL */
        .flight-modal {
            display: none;
            position: fixed;
            inset: 0;
            z-index: 1100;
            background: #f2f0e9;
            background-image:
                linear-gradient(175deg, rgba(255, 255, 255, 0.38) 0%, transparent 45%),
                radial-gradient(ellipse 85% 45% at 65% 12%, rgba(255, 255, 255, 0.22) 0%, transparent 52%);
        }

        .flight-modal.active {
            display: block;
            animation: fadeIn 0.35s ease;
        }

        .flight-modal__scroll {
            position: relative;
            height: 100vh;
            overflow-y: auto;
            overflow-x: hidden;
            -webkit-overflow-scrolling: touch;
            padding: 4.25rem 1.5rem 3.5rem;
            max-width: 900px;
            margin: 0 auto;
            box-sizing: border-box;
        }

        .flight-modal__close {
            position: fixed;
            top: 1.25rem;
            right: 1.25rem;
            z-index: 1110;
            width: 44px;
            height: 44px;
            border: none;
            border-radius: 50%;
            background: rgba(139, 155, 122, 0.14);
            color: var(--text-dark);
            font-size: 1.5rem;
            line-height: 1;
            cursor: pointer;
            transition: background 0.2s ease, color 0.2s ease;
        }

        .flight-modal__close:hover {
            background: var(--primary-color);
            color: #f0e7d6;
        }

        /* 纸上的收集品：可交互的小贴纸（Unicode 符号） */
        .collectibles {
            position: fixed;
            inset: 0;
            z-index: 1105;
            pointer-events: none;
        }

        .collectible {
            position: absolute;
            font-family: var(--font-hand), 'Noto Serif SC', 'Songti SC', serif;
            font-size: 12px;
            line-height: 1;
            letter-spacing: 0.02em;
            color: rgba(88, 84, 74, 0.28);
            opacity: 0.55;
            transform: translateZ(0) rotate(var(--tilt, 0deg));
            transform-origin: center;
            transition: transform 220ms ease, opacity 220ms ease;
            user-select: none;
            pointer-events: auto;
            cursor: default;
        }

        .collectible--soft {
            opacity: 0.38;
            color: rgba(88, 84, 74, 0.22);
        }

        .collectible:hover {
            opacity: 0.78;
            transform: translateY(-1px) rotate(var(--hover-tilt, 4deg));
        }

        @media (prefers-reduced-motion: reduce) {
            .collectible {
                transition: none;
            }
            .collectible:hover {
                transform: rotate(var(--tilt, 0deg));
            }
        }

        .flight-log-title {
            position: relative;
            display: block;
            max-width: 28em;
            margin: 0 auto 2.75rem;
            font-family: var(--font-hand), 'Ma Shan Zheng', 'Long Cang', 'Noto Serif SC', serif;
            font-size: 0.95rem;
            font-weight: 400;
            letter-spacing: 0.22em;
            color: rgba(72, 68, 58, 0.62);
            text-align: center;
            padding-bottom: 0.55rem;
        }

        .flight-log-title-line {
            display: block;
            line-height: 1.55;
        }

        .flight-log-title-line + .flight-log-title-line {
            margin-top: 0.2rem;
        }

        .flight-log-title::after {
            content: '';
            position: absolute;
            left: 50%;
            bottom: 0;
            transform: translateX(-50%);
            width: min(92%, 340px);
            height: 8px;
            background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 8' preserveAspectRatio='none'%3E%3Cpath d='M2 5 Q 35 2 70 5 T 130 4 T 198 5.5' fill='none' stroke='rgba(120,112,96,0.28)' stroke-width='1' stroke-linecap='round'/%3E%3C/svg%3E")
                center / 100% 100% no-repeat;
            pointer-events: none;
        }

        .flight-log-marginal {
            position: fixed;
            z-index: 1104;
            margin: 0;
            font-family: var(--font-hand), 'KaiTi', 'STKaiti', 'Kaiti SC', 'Noto Serif SC', serif;
            font-size: 12px;
            color: rgba(204, 204, 204, 0.62);
            line-height: 1.55;
            letter-spacing: 0.04em;
            max-width: 14em;
            pointer-events: none;
            user-select: none;
        }

        .flight-log-marginal--l1 { left: 0.85rem; top: 20vh; transform: rotate(-8deg); }
        .flight-log-marginal--l2 { left: 0.95rem; top: 42vh; transform: rotate(-5deg); }
        .flight-log-marginal--l3 { left: 1.05rem; top: 66vh; transform: rotate(-7deg); }
        .flight-log-marginal--r1 { right: 0.9rem; top: 28vh; transform: rotate(7deg); text-align: right; }
        .flight-log-marginal--r2 { right: 0.95rem; top: 56vh; transform: rotate(6deg); text-align: right; }

        .flight-timeline-wrap {
            position: relative;
            margin: 0 auto;
            padding-bottom: 2rem;
        }

        .flight-center-line {
            position: absolute;
            left: 50%;
            top: 0.5rem;
            bottom: 2rem;
            width: 28px;
            transform: translateX(-50%);
            z-index: 0;
            pointer-events: none;
            display: none;
        }

        .flight-center-line svg {
            display: block;
            width: 100%;
            height: 100%;
        }

        .flight-node {
            position: relative;
            z-index: 1;
            display: flex;
            margin-bottom: clamp(2.75rem, 8vw, 4.25rem);
        }

        .flight-node:last-of-type {
            margin-bottom: 1rem;
        }

        .flight-node--left {
            justify-content: flex-end;
            padding-right: calc(50% + 22px);
        }

        .flight-node--right {
            justify-content: flex-start;
            padding-left: calc(50% + 22px);
        }

        .flight-node__marker {
            position: absolute;
            left: 50%;
            top: 1.35rem;
            width: 12px;
            height: 12px;
            transform: translate(-50%, -50%);
            z-index: 2;
            pointer-events: none;
            opacity: 0.72;
        }

        .flight-node__inner {
            max-width: 400px;
            display: flex;
            align-items: flex-start;
            gap: 1rem 1.15rem;
            will-change: opacity, transform, filter;
        }

        .flight-node--left .flight-node__inner {
            flex-direction: row;
        }

        .flight-node--right .flight-node__inner {
            flex-direction: row-reverse;
        }

        /* 让图一（右侧节点）也做到“图文挨着”：插图在左、文字在右 */
        .flight-node--right .flight-node__inner {
            flex-direction: row;
            gap: 0.4rem 0.45rem;
            align-items: flex-start;
        }

        @media (prefers-reduced-motion: no-preference) {
            .flight-node__inner {
                opacity: 0;
                filter: blur(12px);
                transition:
                    opacity 1.2s cubic-bezier(0.22, 0.99, 0.35, 1),
                    transform 1.25s cubic-bezier(0.22, 0.99, 0.35, 1),
                    filter 1.35s cubic-bezier(0.25, 0.9, 0.35, 1);
            }

            .flight-node--left .flight-node__inner {
                transform: translate(-22px, 36px);
            }

            .flight-node--right .flight-node__inner {
                transform: translate(22px, 36px);
            }

            .flight-node__inner.flight-node__inner--visible {
                opacity: 1;
                filter: blur(0);
                transform: translate(0, 0);
            }
        }

        @media (prefers-reduced-motion: reduce) {
            .flight-node__inner {
                opacity: 1;
                filter: none;
                transform: none;
            }
        }

        .flight-node__sketch {
            flex: 0 0 auto;
            position: relative;
            width: 150px;
            padding: 0.65rem 0.4rem;
            margin: 0.4rem 0.2rem 0 0;
            border: none;
            background: rgba(255, 253, 248, 0.55);
            transform-origin: center center;
        }

        /* 图一：右侧节点插图更靠上，和标题更贴近 */
        .flight-node--right .flight-node__sketch {
            margin-top: 0.1rem;
            margin-right: 0;
        }

        /* 半透明纸胶带：压在插图上方 */
        .flight-node__sketch::before {
            content: '';
            position: absolute;
            z-index: 3;
            left: 6%;
            width: 58%;
            height: 12px;
            top: -6px;
            background: linear-gradient(95deg, rgba(255, 244, 198, 0.55), rgba(248, 232, 175, 0.42));
            transform: rotate(-1.2deg);
            clip-path: polygon(3% 0%, 97% 0%, 100% 45%, 97% 100%, 3% 100%, 0% 48%);
            box-shadow: 0 1px 2px rgba(72, 62, 48, 0.07);
            pointer-events: none;
        }

        /* 手绘感抖动边框（不规则圆角模拟笔误） */
        .flight-node__sketch::after {
            content: '';
            position: absolute;
            inset: -3px;
            z-index: 1;
            border-radius: 10px;
            box-shadow:
                0 0 0 1px rgba(74, 68, 56, 0.18),
                0 0 0 1px rgba(74, 68, 56, 0.06) inset;
            pointer-events: none;
            opacity: 0.45;
        }

        .flight-node--left .flight-node__sketch {
            transform: rotate(-2.5deg);
        }

        .flight-node--right .flight-node__sketch {
            transform: rotate(2.5deg);
        }

        .flight-node__sketch svg {
            position: relative;
            z-index: 2;
            width: 100%;
            height: auto;
            display: block;
        }

        .flight-node__sketch img {
            position: relative;
            z-index: 2;
            width: 100%;
            height: auto;
            display: block;
            object-fit: cover;
            filter: saturate(0.92) brightness(1.03) contrast(0.95);
        }

        /* 与上方一致的「纸片贴图」风格（用于第二张替换图） */
        .flight-node__sketch--paper {
            transform: rotate(-1.4deg) !important;
            padding: 0.5rem 0.48rem 0.62rem;
            border-radius: 12px;
            background: linear-gradient(180deg, rgba(255, 253, 248, 0.9), rgba(251, 248, 242, 0.86));
            box-shadow: 0 4px 14px rgba(78, 72, 60, 0.08);
        }

        .flight-node__sketch--paper::before {
            left: 10%;
            width: 54%;
            top: -7px;
            transform: rotate(-2deg);
            opacity: 0.95;
        }

        .flight-node__sketch--paper::after {
            inset: 0;
            border-radius: 12px;
            box-shadow:
                0 0 0 1px rgba(116, 106, 88, 0.16),
                0 0 0 1px rgba(255, 255, 255, 0.45) inset;
            opacity: 1;
        }

        .flight-node__sketch--paper img {
            border-radius: 8px;
            filter: saturate(0.88) brightness(1.02) contrast(0.92);
        }

        .flight-node__sketch-caption {
            margin: 0.4rem 0.1rem 0;
            font-family: var(--font-hand), 'Long Cang', 'Ma Shan Zheng', serif;
            font-size: 0.72rem;
            line-height: 1.65;
            letter-spacing: 0.08em;
            color: rgba(108, 100, 86, 0.62);
            text-align: left;
        }

        .flight-node__sketch img {
            position: relative;
            z-index: 2;
            width: 100%;
            height: auto;
            display: block;
            object-fit: cover;
            border-radius: 6px;
        }

        /* 「撒哈拉的坠落」专属：左图右文 40/60 + 拼贴感 */
        .flight-node--collage .flight-node__inner {
            position: relative;
            width: min(760px, 84vw);
            max-width: none;
            display: grid;
            grid-template-columns: 42% 58%;
            column-gap: 30px;
            align-items: start;
            grid-auto-flow: row;
            grid-auto-rows: min-content;
        }

        /* 图一（1930s）专属：强制图文贴合 */
        .flight-node--cloud.flight-node--right.flight-node--collage .flight-node__inner {
            grid-template-columns: 1fr min(340px, 42%);
            column-gap: 18px;
        }

        .flight-node--cloud.flight-node--right.flight-node--collage .flight-node__sketch {
            justify-self: start;
            position: relative;
            z-index: 1;
        }

        .flight-node--cloud.flight-node--right.flight-node--collage .flight-node__body {
            justify-self: stretch;
            width: 100%;
            position: relative;
            z-index: 2;
            isolation: isolate;
        }

        /* 这条改为整行拼贴，不走左右半栏时间轴 */
        .flight-node--collage {
            justify-content: center;
            padding-left: 0;
            padding-right: 0;
        }

        /* 插画左右交替：right 节点把图放到右侧、文字在左侧 */
        .flight-node--right.flight-node--collage .flight-node__sketch {
            grid-column: 2;
            justify-self: end;
        }

        .flight-node--right.flight-node--collage .flight-node__body {
            grid-column: 1;
            margin-top: -8px;
            justify-self: end;
        }

        .flight-node--right.flight-node--collage .flight-node__bridge-note {
            left: auto;
            right: calc(34% + 8px);
        }

        .flight-node--collage .flight-node__sketch {
            width: 100%;
            margin: 0;
            padding: 6px;
            grid-row: 1;
            border-radius: 14px;
            background:
                radial-gradient(140% 110% at 18% 6%, rgba(255, 255, 255, 0.72), rgba(244, 239, 230, 0.64)),
                linear-gradient(168deg, rgba(241, 233, 219, 0.46), rgba(231, 224, 209, 0.34));
            box-shadow: 0 8px 20px rgba(124, 112, 93, 0.08);
            transform: rotate(-0.7deg);
            position: relative;
            z-index: 2;
        }

        /* 关键：文字永远压在贴纸/插图之上，避免遮挡标题 */
        .flight-node--collage .flight-node__body {
            position: relative;
            z-index: 6;
            isolation: isolate;
        }

        .flight-node--collage .flight-node__sketch {
            z-index: 4;
            transform: rotate(-0.7deg);
            max-width: 512px;
            justify-self: start;
        }

        .flight-node--collage .flight-node__sketch::before {
            left: 14px;
            top: -13px;
            width: 82px;
            height: 22px;
            transform: rotate(-15deg);
            clip-path: none;
            border-radius: 3px;
            background: linear-gradient(180deg, rgba(255, 252, 240, 0.38), rgba(238, 231, 208, 0.28));
            border: 1px solid rgba(214, 202, 170, 0.28);
            box-shadow: 0 1px 2px rgba(110, 100, 78, 0.08);
        }

        .flight-node--collage .flight-node__sketch::after {
            inset: -4px;
            border-radius: 18px 14px 20px 12px / 16px 20px 12px 18px;
            box-shadow: 0 0 0 1px rgba(168, 152, 126, 0.2);
            opacity: 0.58;
        }

        .flight-node--collage .flight-node__body h2 {
            margin-top: -0.3rem;
            margin-left: -6px;
            position: relative;
            z-index: 6;
        }

        .flight-node--collage .flight-node__body {
            overflow-x: visible;
            font-size: 0.97rem;
            letter-spacing: 0.25px;
            align-self: start;
            margin-top: 0;
            grid-row: 1;
        }

        .flight-node__overlap-note {
            position: absolute;
            left: -6px;
            top: 0.1rem;
            margin: 0;
            padding: 0.38rem 0.85rem 0.42rem;
            font-family: var(--font-hand), 'Long Cang', 'Ma Shan Zheng', 'KaiTi', 'STKaiti', 'Kaiti SC', 'Noto Serif SC', serif;
            font-size: 0.78rem;
            letter-spacing: 0.06em;
            color: rgba(84, 80, 72, 0.78);
            transform: rotate(-5deg);
            white-space: nowrap;
            pointer-events: none;
            z-index: 6;
            background: rgba(255, 252, 244, 0.82);
            border: 1px solid rgba(160, 150, 132, 0.18);
            border-radius: 999px;
            box-shadow: 0 6px 18px rgba(120, 110, 92, 0.1);
            backdrop-filter: blur(1.5px);
        }

        /* 纸条下方留白：避免和标题/正文挤在一起 */
        .flight-node__body--has-strip {
            padding-top: 1.9rem;
        }

        .flight-node__bridge-note {
            position: absolute;
            left: calc(40% + 12px);
            top: 52%;
            transform: translateY(-50%);
            writing-mode: vertical-rl;
            text-orientation: mixed;
            font-family: var(--font-hand), 'KaiTi', 'STKaiti', 'Kaiti SC', 'Noto Serif SC', serif;
            font-size: 0.62rem;
            letter-spacing: 0.08em;
            color: rgba(166, 158, 145, 0.42);
            user-select: none;
            pointer-events: none;
        }

        .flight-node__sketch-notes {
            margin-top: 0.45rem;
            font-family: var(--font-hand), 'KaiTi', 'STKaiti', 'Kaiti SC', 'Noto Serif SC', serif;
            font-size: 0.66rem;
            line-height: 1.5;
            color: rgba(126, 120, 108, 0.6);
            letter-spacing: 0.04em;
            transform: rotate(-2deg);
        }

        .flight-node__sketch-notes p {
            margin: 0.15rem 0;
        }

        .flight-node__body {
            flex: 1;
            min-width: 0;
            position: relative;
            z-index: 0;
            overflow-x: hidden;
            overflow-y: visible;
            font-family: var(--font-hand), 'Long Cang', 'Ma Shan Zheng', 'Noto Serif SC', 'Source Han Serif SC', 'Songti SC', serif;
            font-size: 1.02rem;
            line-height: 2.2;
            letter-spacing: 1.5px;
            color: rgba(58, 56, 52, 0.78);
        }

        /* 超大极淡年份水印 */
        .flight-node__body[data-year-wm]::before {
            content: attr(data-year-wm);
            position: absolute;
            left: 50%;
            top: 42%;
            transform: translate(-50%, -50%) rotate(-7deg);
            font-family: var(--font-hand), 'Ma Shan Zheng', 'Long Cang', serif;
            font-size: clamp(4.5rem, 26vw, 7.5rem);
            font-weight: 400;
            letter-spacing: 0.04em;
            color: rgba(110, 102, 88, 0.045);
            white-space: nowrap;
            pointer-events: none;
            z-index: -1;
            user-select: none;
        }

        .flight-node__body > * {
            position: relative;
            z-index: 1;
        }

        /* 手写年份 + 波浪下划线 + 旁注 */
        .flight-node__date {
            margin-bottom: 0.75rem;
        }

        .flight-node--right .flight-node__date {
            text-align: right;
        }

        .flight-node__year-wrap {
            display: inline-block;
            position: relative;
            padding-bottom: 0.4rem;
        }

        .flight-node--right .flight-node__year-wrap {
            margin-left: auto;
        }

        .flight-node__year {
            font-family: var(--font-hand), 'Ma Shan Zheng', 'Long Cang', 'Noto Serif SC', serif;
            font-size: 1.38rem;
            font-weight: 400;
            color: rgba(68, 64, 56, 0.88);
            letter-spacing: 0.06em;
        }

        .flight-node__year-underline {
            position: absolute;
            left: -4px;
            right: -6px;
            bottom: 2px;
            width: calc(100% + 10px);
            height: 10px;
            overflow: visible;
            pointer-events: none;
        }

        .flight-node__year-underline path {
            stroke: rgba(95, 88, 74, 0.38);
            stroke-width: 1.15;
            fill: none;
            stroke-linecap: round;
        }

        .flight-node__whisper {
            display: block;
            margin-top: 0.42rem;
            font-family: var(--font-hand), 'Long Cang', 'Ma Shan Zheng', serif;
            font-size: 0.84rem;
            letter-spacing: 0.14em;
            color: rgba(95, 90, 82, 0.52);
            line-height: 1.65;
        }

        .flight-node--right .flight-node__whisper {
            text-align: right;
        }

        .flight-node__body h2 {
            font-family: var(--font-hand), 'Ma Shan Zheng', 'Long Cang', 'Noto Serif SC', serif;
            font-size: 1.12rem;
            font-weight: 400;
            color: rgba(48, 46, 42, 0.88);
            margin-bottom: 1rem;
            letter-spacing: 0.12em;
            line-height: 1.65;
        }

        .flight-node__text {
            margin: 0 0 1.1em;
            text-align: justify;
            text-justify: inter-ideograph;
        }

        .flight-node__aside {
            position: relative;
            margin: -0.15rem 0 1rem;
            padding-left: 1.1rem;
            font-family: var(--font-hand), 'KaiTi', 'STKaiti', 'Kaiti SC', 'Noto Serif SC', serif;
            font-size: 0.74rem;
            line-height: 1.8;
            letter-spacing: 0.08em;
            color: rgba(94, 90, 84, 0.42);
            font-style: italic;
        }

        .flight-node__aside::before {
            content: '↷';
            position: absolute;
            left: 0;
            top: 0.02rem;
            color: rgba(112, 106, 95, 0.26);
            font-size: 0.86rem;
            transform: rotate(-8deg);
        }

        .flight-node__aside span {
            display: inline-block;
            padding: 0.05rem 0.18rem;
            border-radius: 999px;
            background: rgba(255, 252, 245, 0.34);
        }

        /* 未干的墨迹：进入视口后从浅灰到 #5A5A5A */
        .flight-node__ink-breath {
            display: inline;
            color: rgba(90, 90, 90, 0.22);
            opacity: 0;
            filter: blur(1.6px);
            transition:
                opacity 1.8s cubic-bezier(0.2, 0.7, 0.2, 1),
                filter 1.8s cubic-bezier(0.2, 0.7, 0.2, 1),
                color 1.8s cubic-bezier(0.2, 0.7, 0.2, 1);
        }

        .flight-node__ink-breath.is-inked {
            color: #5A5A5A;
            opacity: 0.8;
            filter: blur(0);
        }

        .flight-node__note {
            margin: 1.35rem 0 0;
            font-family: var(--font-hand), 'Long Cang', 'Ma Shan Zheng', 'Noto Serif SC', serif;
            font-size: 0.82rem;
            line-height: 2.05;
            letter-spacing: 1.2px;
            color: rgba(105, 100, 92, 0.58);
        }

        .flight-log-closing {
            display: block;
            text-align: center;
            margin: 2.4rem auto 0;
            padding: 0.4rem 0 0.8rem;
            color: rgba(96, 90, 80, 0.46);
            font-family: var(--font-hand), 'KaiTi', 'STKaiti', 'Kaiti SC', 'Noto Serif SC', serif;
            font-size: 0.74rem;
            letter-spacing: 0.12em;
            line-height: 1.7;
        }

        /* RESPONSIVE */
        @media (max-width: 768px) {
            .header-container {
                flex-direction: column;
                gap: 1rem;
            }

            nav {
                gap: 1rem;
                justify-content: center;
            }

            nav a,
            nav .nav-mailbox-btn {
                font-size: 0.85rem;
                letter-spacing: 2.1px;
                line-height: 2.1em;
            }

            .home-grid {
                grid-template-columns: 1fr;
            }

            .scene-image {
                height: 210px;
            }

            #home .section-flow {
                margin-top: 44px;
            }

            .timeline-curves {
                left: 0;
            }

            #journey .journey-map {
                display: none;
            }

            #journey .timeline {
                padding: 0 10px 20px;
            }

            #journey .timeline-item,
            #journey .timeline-item:nth-child(odd),
            #journey .timeline-item:nth-child(even) {
                margin: 0 0 72px !important;
                padding: 0 !important;
                text-align: left !important;
            }

            #journey .timeline-item::after {
                width: 96px;
                height: 36px;
                bottom: -44px;
                opacity: 0;
            }

            #journey .timeline-item::before {
                width: 108px;
                height: 34px;
                bottom: -56px;
                opacity: 0;
            }

            #journey .timeline-item.is-visible::after {
                opacity: 0.2;
            }

            #journey .timeline-item.is-visible::before {
                opacity: 0.1;
            }

            #journey #planet-7 .journey-card-media::before {
                width: 66px;
                height: 25px;
                right: 14%;
                bottom: -14px;
                opacity: 0.26;
            }

            #journey #planet-7 .journey-card-media::after {
                width: 48px;
                height: 48px;
                bottom: 8%;
            }

            #journey .timeline-card,
            #journey .timeline-item:nth-child(even) .timeline-card {
                grid-template-columns: 1fr;
                row-gap: 12px;
            }

            #journey .timeline-item:nth-child(odd) .journey-card-media,
            #journey .timeline-item:nth-child(even) .journey-card-media,
            #journey .timeline-item:nth-child(odd) .timeline-card h3,
            #journey .timeline-item:nth-child(odd) .timeline-card p,
            #journey .timeline-item:nth-child(even) .timeline-card h3,
            #journey .timeline-item:nth-child(even) .timeline-card p {
                grid-column: 1;
            }

            #journey .journey-companions {
                inset: -18px -6px;
            }

            #journey #planet-0 .journey-companion--petal {
                transform: scale(0.9);
            }

            #journey #planet-1 .journey-companion--cactus {
                transform: rotate(-6deg) scale(0.88);
            }

            #journey #planet-1 .journey-companion--stones {
                transform: rotate(6deg) scale(0.9);
            }

            .chapter-vertical {
                position: static;
                writing-mode: horizontal-tb;
                text-orientation: mixed;
                display: inline-flex;
                align-items: center;
                gap: 0.28rem;
                margin-bottom: 0.45rem;
                font-size: 0.84rem;
                letter-spacing: 0.08em;
                color: #999999;
            }

            .chapter-vertical::before {
                margin: 0;
            }

            .chapter-watermark {
                font-size: 88px;
                right: 0.35rem;
                top: 52%;
                opacity: 0.045;
                transform: translateY(-50%);
            }

            .modal-content {
                padding: 1.5rem;
            }

            #replyModal.reply-slip-anchor {
                width: min(96vw, 352px);
                max-height: min(78vh, 540px);
                right: max(0.4rem, env(safe-area-inset-right, 0px));
                bottom: max(0.5rem, env(safe-area-inset-bottom, 0px));
            }

            .reply-slip__panel,
            .reply-slip__inner {
                max-height: min(78vh, 540px);
            }

            .reply-slip__inner {
                padding: 1.05rem 1rem 3.25rem 1rem;
            }

            .chapter-tape {
                transform: rotate(var(--tape-tilt));
                width: 100%;
                max-width: 260px;
            }

            .chapter-tape-note {
                font-size: 0.52rem;
            }

            .journey-intro__tape {
                transform: rotate(-1.5deg);
            }

            .journey-intro__tape h2 {
                font-size: 1.5rem;
            }

            .page-corner-fold {
                width: 48px;
                height: 48px;
                right: 0.4rem;
                bottom: 0.35rem;
            }

            .page-corner-fold__svg {
                width: 48px;
                height: 48px;
            }

            .page-corner-fold__hint {
                font-size: 0.5rem;
                bottom: 1.35rem;
            }

            .flight-modal__scroll {
                padding: 4rem 1.15rem 2.5rem;
            }

            .flight-center-line {
                left: 14px;
                transform: none;
            }

            .flight-node--left,
            .flight-node--right {
                padding-left: 42px;
                padding-right: 0;
                justify-content: flex-start;
            }

            .flight-node__marker {
                left: 14px;
            }

            .flight-node--left .flight-node__inner,
            .flight-node--right .flight-node__inner {
                flex-direction: column;
                max-width: none;
            }

            .flight-node__sketch {
                width: 100%;
                max-width: 220px;
            }

            .flight-node--collage .flight-node__inner {
                grid-template-columns: 1fr;
                row-gap: 0.75rem;
                width: 100%;
            }

            /* 只修复那两条“竖着显示”的卡片（非 cloud）：改成和正常那条一样的图文布局 */
            .flight-node--collage:not(.flight-node--cloud) .flight-node__inner {
                grid-template-columns: 1fr min(340px, 42%);
                column-gap: 18px;
                row-gap: 0;
                width: 100%;
            }

            .flight-node--collage:not(.flight-node--cloud) .flight-node__sketch {
                grid-column: 2;
                justify-self: end;
                max-width: none;
            }

            .flight-node--collage:not(.flight-node--cloud) .flight-node__body {
                grid-column: 1;
                justify-self: stretch;
                width: 100%;
                margin-top: 0;
            }

            .flight-node--collage .flight-node__body h2 {
                margin-left: 0;
                margin-top: 0.1rem;
            }

            .flight-node__bridge-note {
                display: none;
            }

            .flight-node__body {
                font-size: 0.98rem;
                letter-spacing: 1.1px;
            }

            .flight-node__aside {
                font-size: 0.68rem;
                padding-left: 0.95rem;
            }

            .flight-node__body[data-year-wm]::before {
                font-size: clamp(3rem, 48vw, 5.5rem);
                top: 38%;
            }

            .flight-node__year {
                font-size: 1.18rem;
            }

            .b612-section {
                margin-top: 1.5rem;
            }

            .b612-marginal {
                font-size: 0.62rem;
                max-width: 10em;
            }

            .b612-marginal--desert {
                top: 11.5rem;
                right: 0.2rem;
                bottom: auto;
                transform: rotate(11deg);
            }

            .b612-marginal--sunset {
                bottom: 5.5rem;
                left: 0.15rem;
            }

            .flight-log-closing {
                margin-top: 2rem;
                font-size: 0.68rem;
                letter-spacing: 0.08em;
            }

            .flight-log-marginal {
                display: none;
            }

            .home-marginal {
                font-size: 0.58rem;
                max-width: 8em;
            }

            .home-marginal--tr {
                top: 0.1rem;
                max-width: 7em;
            }

            .home-page__heading {
                font-size: 1.35rem;
            }

            .home-page__tape {
                padding: 0.38rem 1.1rem 0.5rem;
            }

            .section-flow {
                height: 52px;
                margin-top: 0.7rem;
            }

            .section-flow__note {
                font-size: 0.56rem;
                right: 0.8rem;
            }

            .scene-overflow-note,
            .timeline-overflow-note,
            .b612-overflow-note {
                font-size: 0.56rem;
            }

            .paper-texture {
                opacity: 0.42;
            }

            .paper-creases {
                opacity: 0.2;
            }

            .paper-watermark {
                opacity: 0.02;
            }

        }

        /* ===== 色彩系统统一覆盖（仅颜色） ===== */
        :root {
            --paper-base: #f7f2eb;
            --bg-light: #f7f2eb;
            --bg-white: #f7f2eb;
        }

        body {
            background-color: #f7f2eb;
        }

        .container,
        .page,
        .scene-card,
        .timeline-card,
        .b612-section,
        .b612-chat,
        .b612-mailbox,
        .b612-mailbox__input-wrap,
        .reply-slip__panel,
        .reply-slip__inner,
        .memory-modal__panel,
        .memory-stage,
        .flight-log-content {
            background-color: transparent;
        }

        /* ===== Journey 星图首页精修（仅覆盖，不改结构） ===== */
        #journey.page {
            position: relative;
            min-height: calc(100vh - 128px);
            overflow: visible;
            padding-bottom: 4.6rem;
            background: transparent;
            isolation: isolate;
            /* 右侧留白：避免星图碰到右下角插画 */
            --journey-safe-right: clamp(120px, 12vw, 240px);
        }

        /* Journey 左下角插画层：非直贴原图，通过遮罩与混合弱化背景 */
        #journey.page .journey-left-illustration {
            position: absolute;
            left: -120px;
            bottom: -16px;
            width: clamp(390px, 42vw, 640px);
            max-width: 52vw;
            display: block;
            object-fit: contain;
            transform: scale(1.3);
            transform-origin: center center;
            filter: drop-shadow(0 14px 22px rgba(133, 113, 82, 0.18)) saturate(0.96);
            opacity: 0.96;
            pointer-events: none;
            user-select: none;
            z-index: 60;
        }

        #journey.page .journey-content {
            position: relative;
            min-height: calc(100vh - 180px);
            max-width: none !important;
            margin: 0 !important;
            padding: 0 !important;
            z-index: 1;
            text-align: center;
        }

        @media (max-width: 900px) {
            #journey.page .journey-left-illustration {
                left: -90px;
                bottom: -16px;
                width: clamp(250px, 54vw, 390px);
                max-width: 64vw;
                opacity: 0.92;
            }
        }

        #journey.page .journey-intro {
            margin-top: 0.1rem;
            margin-bottom: 0.4rem;
            text-align: center;
        }

        #journey.page .journey-intro__tape {
            display: inline-block;
            padding: 0;
            transform: none;
        }

        #journey.page .journey-intro__tape h2 {
            font-family: "Parisienne", "Caveat", var(--font-hand), "Cormorant Garamond", serif;
            font-weight: 400;
            letter-spacing: 0.03em;
            font-size: clamp(2.6rem, 5.5vw, 4rem);
            color: rgba(92, 82, 69, 0.90);
            line-height: 1.05;
        }

        #journey.page .journey-intro__subtitle {
            margin-top: 0.2rem;
            font-family: "Cormorant Garamond", serif;
            font-size: 1rem;
            letter-spacing: 0.09em;
            color: rgba(122, 112, 96, 0.70);
        }

        #journey.page .journey-intro__arc {
            margin: 0.35rem auto 0;
            width: 170px;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 10px;
            color: rgba(196, 163, 98, 0.64);
            font-size: 0.74rem;
        }

        #journey.page .journey-intro__arc span {
            flex: 1;
            height: 1px;
            background: rgba(198, 166, 100, 0.24);
        }

        #journey.page .journey-station-nav,
        #journey.page .timeline,
        #journey.page .section-flow {
            display: none !important;
        }

        #journey.page .journey-map {
            display: block !important;
            position: relative;
            height: clamp(540px, 64vh, 710px);
            margin: 0.45rem auto 0;
            background: transparent;
            border: none;
            box-shadow: none;
            overflow: visible;
            /* 给星图更多横向空间（不改任何插画文件） */
            width: min(1600px, calc(100vw - var(--journey-safe-right)));
            max-width: none;
        }

        #journey.page .journey-map__svg {
            inset: 0;
        }

        #journey.page #journeyMapRouteBase {
            stroke: rgba(186, 158, 104, 0.13) !important;
            stroke-width: 1 !important;
            /* 只保留一条路径线：隐藏底层辅助线 */
            display: none !important;
        }

        #journey.page #journeyMapRoute {
            stroke: rgba(188, 156, 93, 0.40) !important;
            stroke-width: 1.05 !important;
            stroke-dasharray: 4 9 2 10 !important;
        }

        #journey.page .journey-map__ship {
            color: rgba(136, 167, 120, 0.62);
            font-size: 0.92rem;
        }

        #journey.page .journey-map__anchor-prince {
            position: absolute;
            left: -520px !important;
            bottom: -300px;
            width: clamp(230px, 28vw, 380px) !important;
            height: auto !important;
            z-index: 1;
            pointer-events: none;
            user-select: none;
            opacity: 0.94;
            mix-blend-mode: normal;
            clip-path: none;
            filter: none;
            object-fit: contain !important;
            object-position: left bottom !important;
        }

        #journey.page .journey-map__nodes {
            position: absolute;
            inset: 0;
            z-index: 3;
        }

        #journey.page .journey-map__node {
            position: absolute;
            border: none;
            background: transparent;
            display: flex;
            align-items: center;
            gap: 10px;
            transform: translate(-50%, -50%) !important;
            transition: transform 240ms ease, filter 240ms ease;
            box-shadow: none !important;
            outline: none !important;
            border-color: transparent !important;
            -webkit-appearance: none;
            appearance: none;
        }

        #journey.page .journey-map__node:focus,
        #journey.page .journey-map__node:focus-visible,
        #journey.page .journey-map__node:active {
            box-shadow: none !important;
            outline: none !important;
            background: transparent !important;
        }

        #journey.page .journey-map__node:hover {
            transform: translate(-50%, calc(-50% - 4px)) !important;
            filter: drop-shadow(0 8px 15px rgba(117, 100, 70, 0.15));
        }

        #journey.page .journey-map__planet {
            width: var(--node-size, 84px);
            height: var(--node-size, 84px);
            border-radius: 50%;
            background: transparent !important;
            box-shadow: none !important;
            border: none !important;
        }

        #journey.page .journey-map__planet-img {
            width: 100%;
            height: 100%;
            object-fit: contain;
            border-radius: 50%;
            opacity: 0.97;
        }

        #journey.page .journey-map__name {
            font-family: "Cormorant Garamond", "Noto Serif SC", serif;
            color: rgba(107, 97, 84, 0.88);
            letter-spacing: 0.04em;
            font-size: 0.86rem;
            line-height: 1.2;
            white-space: nowrap;
            text-align: left;
        }

        #journey.page .journey-map__name b {
            display: block;
            font-size: 0.62rem;
            letter-spacing: 0.12em;
            color: rgba(147, 132, 111, 0.82);
            margin-bottom: 2px;
            font-weight: 600;
        }

        #journey.page .journey-map__node:hover .journey-map__name {
            color: rgba(178, 143, 75, 0.9);
        }

        /* 去掉节点激活态白色底圈，只保留插画 */
        #journey.page .journey-map__node.is-active .journey-map__planet {
            background: transparent !important;
            box-shadow: none !important;
            border: none !important;
        }

        /* 8 节点：S 型分布（absolute，便于后续手调） */
        #journey.page .journey-map__node:nth-child(1) { left: 18% !important; top: 27% !important; --node-size: 86px; }
        #journey.page .journey-map__node:nth-child(2) { left: 41% !important; top: 30% !important; --node-size: 108px; }
        #journey.page .journey-map__node:nth-child(3) { left: 69% !important; top: 38% !important; --node-size: 84px; }
        #journey.page .journey-map__node:nth-child(4) { left: 94% !important; top: 55% !important; --node-size: 82px; }
        #journey.page .journey-map__node:nth-child(5) { left: 76% !important; top: 79% !important; --node-size: 102px; }
        #journey.page .journey-map__node:nth-child(5) .journey-map__name {
            margin-top: 24px;
            text-align: center;
            color: rgba(95, 77, 56, 0.96);
            font-size: 0.98rem;
            line-height: 1.08;
            text-shadow: 0 1px 0 rgba(255, 251, 242, 0.82);
            position: relative;
            z-index: 6;
        }
        #journey.page .journey-map__node:nth-child(5) .journey-map__name b {
            font-size: 0.76rem;
            margin-bottom: 3px;
            color: rgba(126, 103, 74, 0.95);
        }
        /* 06 放到 05(商人) 与 07(地理学家) 中间 */
        /* 06 点灯人、07 地理学家：缩小 1/6（保留原布局与位置） */
        #journey.page .journey-map__node:nth-child(6) { left: 62% !important; top: 81% !important; --node-size: 57px; }
        #journey.page .journey-map__node:nth-child(7) { left: 46% !important; top: 83% !important; --node-size: 77px; }
        #journey.page .journey-map__node:nth-child(8) { left: 25% !important; top: 77.5% !important; --node-size: 88px; }

        #journey.page .journey-start-btn {
            position: relative;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            margin: 18px auto 0;
            transform: translateY(0);
            border: 1px solid rgba(198, 166, 100, 0.30);
            border-radius: 999px;
            background: rgba(255, 255, 255, 0.62);
            color: rgba(103, 92, 78, 0.88);
            font-family: "Cormorant Garamond", "Noto Serif SC", serif;
            font-size: 1rem;
            letter-spacing: 0.06em;
            padding: 0.55rem 1.42rem;
            box-shadow: 0 8px 18px rgba(114, 98, 68, 0.10);
            cursor: pointer;
            transition: transform 0.22s ease, box-shadow 0.22s ease;
            z-index: 5;
        }

        #journey.page .journey-start-btn:hover {
            transform: translateY(-2px);
            box-shadow: 0 12px 24px rgba(114, 98, 68, 0.14);
        }

        nav a[data-page="journey"].active {
            color: rgba(95, 84, 70, 0.94) !important;
            position: relative;
        }

        nav a[data-page="journey"].active::after {
            display: none;
        }

        /* === B612 投递箱：最终统一样式（避免被重复规则覆盖） === */
        body.page-b612 #b612 .wish-card {
            position: relative !important;
            min-height: 150px !important;
            padding: 14px 16px !important;
            border-radius: 16px !important;
            background: rgba(255, 255, 255, 0.46) !important;
            border: 1px solid rgba(184, 165, 132, 0.20) !important;
            border-top-color: rgba(184, 165, 132, 0.20) !important;
            border-bottom-color: transparent !important;
            box-shadow: 0 8px 20px rgba(96, 78, 50, 0.06) !important;
            overflow: visible !important;
        }

        body.page-b612 #b612 .hero {
            transform: translateY(-108px) scale(0.96);
            transform-origin: top center;
            overflow: visible !important;
            padding-bottom: 120px !important;
        }

        body.page-b612 #b612 .hero-center {
            margin-top: 0 !important;
        }

        body.page-b612 #b612 .sub-line {
            color: rgba(95, 86, 75, 0.78) !important;
            line-height: 1.9 !important;
        }

        body.page-b612 #b612 .small-line {
            color: rgba(149, 138, 123, 0.72) !important;
        }

        body.page-b612 #b612 .hint {
            margin-top: 20px !important;
            color: #9f9689 !important;
        }

        body.page-b612 #b612 .divider {
            margin: 10px 0 10px !important;
            color: rgba(194, 160, 89, 0.45) !important;
        }

        body.page-b612 #b612 .divider span {
            height: 1px !important;
            background: rgba(200, 162, 79, 0.22) !important;
        }

        body.page-b612 #b612 .divider-star {
            color: rgba(191, 150, 64, 0.62) !important;
            font-size: 12px !important;
        }

        body.page-b612 #b612 .wish-box {
            margin-top: 108px !important;
            max-width: 560px !important;
            width: min(560px, 92vw) !important;
            transform: none !important;
        }

        body.page-b612 #b612 .b612-mailbox {
            position: relative;
        }

        body.page-b612 #b612 .wish-card {
            background: rgba(255, 255, 255, 0.56) !important;
            border-color: rgba(184, 165, 132, 0.18) !important;
            box-shadow: 0 10px 26px rgba(96, 78, 50, 0.07) !important;
        }

        body.page-b612 #b612 .wish-card textarea {
            color: rgba(90, 82, 72, 0.82) !important;
            background-image:
                linear-gradient(rgba(193, 161, 102, 0.16), rgba(193, 161, 102, 0.16)),
                linear-gradient(rgba(193, 161, 102, 0.16), rgba(193, 161, 102, 0.16)),
                linear-gradient(rgba(193, 161, 102, 0.16), rgba(193, 161, 102, 0.16)),
                linear-gradient(rgba(193, 161, 102, 0.16), rgba(193, 161, 102, 0.16)),
                linear-gradient(rgba(193, 161, 102, 0.16), rgba(193, 161, 102, 0.16)) !important;
        }

        body.page-b612 #b612 .b612-mailbox__btn {
            display: inline-flex !important;
            position: absolute;
            left: 50%;
            bottom: -30px;
            align-items: center;
            justify-content: center;
            width: auto;
            min-width: 92px;
            height: auto;
            padding: 0.42rem 0.95rem;
            border-radius: 999px;
            background: rgba(233, 211, 161, 0.5);
            color: rgba(122, 101, 68, 0.76);
            font-size: 0.86rem;
            letter-spacing: 0.04em;
            white-space: nowrap;
            border: 1px solid rgba(196, 168, 110, 0.28);
            box-shadow: 0 3px 10px rgba(200, 169, 106, 0.16);
            transition: background-color 0.22s ease, transform 0.22s ease, box-shadow 0.22s ease, filter 0.22s ease;
            transform: translateX(-50%);
            filter: brightness(0.99);
            opacity: 0.62;
        }

        body.page-b612 #b612 .b612-mailbox__btn:hover:not(:disabled) {
            background: rgba(221, 187, 120, 0.56);
            transform: translateX(-50%) translateY(-2px);
            filter: brightness(1.01);
            box-shadow: 0 5px 12px rgba(200, 169, 106, 0.2);
        }

        body.page-b612 #b612 .b612-mailbox__btn:active:not(:disabled) {
            transform: translateX(-50%) translateY(0) scale(0.96);
            filter: brightness(0.99);
            box-shadow: 0 2px 7px rgba(200, 169, 106, 0.14);
        }

        body.page-b612 #b612 .hero-illustration {
            right: -42px !important;
            bottom: -82px !important;
            width: clamp(430px, 54vw, 820px) !important;
            overflow: visible !important;
        }

        body.page-b612 #b612 .hero-illustration img {
            opacity: 0.96 !important;
            background: transparent !important;
            box-shadow: none !important;
            mix-blend-mode: normal !important;
            object-fit: contain !important;
            object-position: center bottom !important;
            -webkit-mask-image: none !important;
            mask-image: none !important;
        }

        /* 只用 textarea 自己画“实线横线”，最稳定也最像稿纸 */
        body.page-b612 #b612 .wish-card::before {
            content: none !important;
        }

        body.page-b612 #b612 .wish-card::after {
            content: "★";
            position: absolute;
            left: 50%;
            bottom: 0;
            transform: translate(-50%, 54%);
            padding: 0 2px;
            background: transparent;
            color: rgba(191, 150, 64, 0.92);
            font-size: 14px;
            line-height: 1;
            z-index: 4;
            pointer-events: none;
        }

        body.page-b612 #b612 .wish-card textarea {
            width: 100% !important;
            height: 122px !important;
            padding: 2px 6px !important;
            border: none !important;
            outline: none !important;
            resize: none !important;
            background-image:
                linear-gradient(rgba(193, 161, 102, 0.24), rgba(193, 161, 102, 0.24)),
                linear-gradient(rgba(193, 161, 102, 0.24), rgba(193, 161, 102, 0.24)),
                linear-gradient(rgba(193, 161, 102, 0.24), rgba(193, 161, 102, 0.24)),
                linear-gradient(rgba(193, 161, 102, 0.24), rgba(193, 161, 102, 0.24)),
                linear-gradient(rgba(193, 161, 102, 0.24), rgba(193, 161, 102, 0.24)) !important;
            background-size: 100% 1px, 100% 1px, 100% 1px, 100% 1px, 100% 1px !important;
            background-repeat: no-repeat !important;
            background-position: 0 24px, 0 48px, 0 72px, 0 96px, 0 120px !important;
            color: rgba(90, 82, 72, 0.92) !important;
            line-height: 24px !important;
            caret-color: rgba(122, 96, 62, 0.9) !important;
        }

        body.page-b612 #b612 .main-title {
            font-size: 30px !important;
            font-weight: 500 !important;
            color: rgba(90, 81, 72, 0.78) !important;
            line-height: 1.7 !important;
        }

        /* ── 用户反馈按钮（手绘风格 SVG 图标）── */
        .b612-feedback {
            display: flex;
            align-items: center;
            gap: 8px;
            margin-top: 10px;
            opacity: 0;
            transition: opacity 0.4s ease;
        }
        .b612-chat__msg--assistant:hover .b612-feedback,
        .b612-feedback.is-visible {
            opacity: 1;
        }
        .b612-feedback__btn {
            position: relative;
            background: rgba(252, 248, 238, 0.5);
            border: 1px solid rgba(150, 130, 90, 0.25);
            border-radius: 11px 14px 10px 13px;
            cursor: pointer;
            width: 34px;
            height: 32px;
            padding: 5px;
            display: grid;
            place-items: center;
            transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
                        border-color 0.25s ease,
                        background 0.25s ease,
                        box-shadow 0.25s ease,
                        color 0.25s ease;
            color: rgba(110, 90, 60, 0.55);
            box-shadow:
                0 1px 2px rgba(120, 100, 70, 0.05),
                inset 0 0 0 0.5px rgba(180, 160, 130, 0.08);
            transform: rotate(-0.8deg);
        }
        .b612-feedback__btn:nth-child(2) {
            border-radius: 13px 11px 14px 12px;
            transform: rotate(0.6deg);
        }
        .b612-feedback__svg {
            width: 18px;
            height: 18px;
            display: block;
            /* 模拟手绘线条的轻微抖动 */
            filter: url(#b612-sketch-filter);
        }
        .b612-feedback__btn:hover {
            transform: scale(1.08) rotate(0deg);
            border-color: rgba(160, 130, 85, 0.45);
            color: rgba(90, 70, 35, 0.78);
            box-shadow:
                0 2px 6px rgba(140, 110, 70, 0.08),
                inset 0 0 0 0.5px rgba(160, 130, 80, 0.12);
        }
        .b612-feedback__btn.is-active {
            background: rgba(241, 222, 165, 0.25);
            border-color: rgba(175, 140, 75, 0.48);
            color: rgba(160, 115, 30, 0.85);
            box-shadow:
                0 1px 3px rgba(160, 120, 60, 0.08),
                inset 0 0 0 0.5px rgba(175, 140, 75, 0.2);
            animation: fbSketchPop 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
        }
        @keyframes fbSketchPop {
            0% { transform: rotate(-0.8deg) scale(1); }
            40% { transform: rotate(3deg) scale(1.15); }
            100% { transform: rotate(-0.8deg) scale(1); }
        }
        .b612-feedback__btn:nth-child(2).is-active {
            animation: fbSketchPop2 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
        }
        @keyframes fbSketchPop2 {
            0% { transform: rotate(0.6deg) scale(1); }
            40% { transform: rotate(-3deg) scale(1.15); }
            100% { transform: rotate(0.6deg) scale(1); }
        }
