/* Shared full-fidelity scene from the accepted 1.3.2 homepage. */
      .confirmed-ambient {
        position: fixed;
        inset: 0;
        z-index: 0;
        pointer-events: none;
        overflow: hidden;
      }

      /* 场景通用层级与过渡 */
      .scene-stage {
        position: absolute;
        inset: 0;
        opacity: 0;
        visibility: hidden;
        transition: opacity 800ms cubic-bezier(0.22, 1, 0.36, 1), visibility 800ms;
        pointer-events: none;
      }

      html[data-scene="sky-mirror"] .scene-stage--sky-mirror,
      html[data-scene="twilight-platform"] .scene-stage--twilight-platform,
      html[data-scene="forest-fireflies"] .scene-stage--forest-fireflies {
        opacity: 1;
        visibility: visible;
      }

      .scene-ambient {
        position: absolute;
        inset: 0;
        transition: opacity 1000ms cubic-bezier(0.22, 1, 0.36, 1);
      }

      .scene-ambient--day {
        opacity: 1;
      }

      .scene-ambient--night {
        opacity: 0;
      }

      html[data-theme="dark"] .scene-ambient--day {
        opacity: 0;
      }

      html[data-theme="dark"] .scene-ambient--night {
        opacity: 1;
      }

      /* =========================================================
         场景 1：【蓝调湖畔 · 夏日晴湖与远山】(sky-mirror) 白天模式
         - 保持天顶纯净透彻的夏日晨曦蓝调，天际自然通透晕染；
         - 远山与湖湾山势错落有致，告别平行线与死板刻线，空间通透呼吸；
         - 瑞士欧风极简小屋群：严格对齐夜晚三处灯火，白昼见小木屋与尖塔，夜晚现暖窗光；
         - 水陆自然相接、澄澈高山湖水与柔和微波倒影，无任何多余生硬分界线。
         ========================================================= */
      .sm-day-sky {
        position: absolute;
        inset: 0;
        background:
          radial-gradient(ellipse 90% 55% at 50% 64%, rgba(255, 248, 240, 0.65), transparent 75%),
          linear-gradient(180deg, #8dc5f4 0%, #aed9f6 36%, #cde5f8 58%, #e3f1fb 78%, #edf6fd 100%);
      }

      /* 保持前版简约低平山体曲线与前后层次，低调沉静，不干扰网页阅读 */
      .sm-day-mountains {
        position: absolute;
        bottom: 28%;
        left: 0;
        width: 100%;
        height: 130px;
        pointer-events: none;
      }

      /* 瑞士欧风极简湖畔小屋群（坐落在对岸水陆交界处 bottom: 30.5%） */
      .sm-day-cottages {
        position: absolute;
        bottom: 30.5%;
        left: 0;
        width: 100%;
        height: 20px;
        pointer-events: none;
        z-index: 2;
      }

      /* 左侧瑞士村落（严格对齐夜晚左侧 4 盏灯） */
      .sm-day-cluster-left {
        position: absolute;
        left: 17%;
        bottom: 0;
        display: flex;
        gap: 6px;
        align-items: flex-end;
      }

      /* 中央湖湾独栋小屋（对齐夜晚中路 1 盏灯） */
      .sm-day-cluster-mid {
        position: absolute;
        left: 48%;
        bottom: 1px;
        display: flex;
        align-items: flex-end;
      }

      /* 右侧湖畔小屋（对齐夜晚右侧 2 盏灯） */
      .sm-day-cluster-right {
        position: absolute;
        right: 15.5%;
        bottom: 0;
        display: flex;
        gap: 7px;
        align-items: flex-end;
      }

      /* 极简欧式小木屋微缩矢量 */
      .sm-chalet {
        display: block;
        filter: drop-shadow(0 1px 1px rgba(30, 60, 90, 0.15));
      }

      /* 澄澈高山湖面（与山脚自然相接，无生硬人造岸线） */
      .sm-day-water {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        height: 30.5%;
        background: linear-gradient(180deg,
          rgba(152, 205, 240, 0.72) 0%,
          rgba(122, 188, 230, 0.82) 42%,
          rgba(95, 168, 218, 0.92) 100%
        );
        overflow: hidden;
      }

      /* 白天统一水反：物体关系完整，但信息在明亮湖水中迅速消散。 */
      .sm-day-reflection {
        position: absolute;
        inset: 0;
        pointer-events: none;
        overflow: hidden;
        -webkit-mask-image: linear-gradient(180deg,
          rgba(0, 0, 0, 0.92) 0%,
          rgba(0, 0, 0, 0.62) 12%,
          rgba(0, 0, 0, 0.22) 32%,
          rgba(0, 0, 0, 0.04) 50%,
          transparent 70%
        );
        mask-image: linear-gradient(180deg,
          rgba(0, 0, 0, 0.92) 0%,
          rgba(0, 0, 0, 0.62) 12%,
          rgba(0, 0, 0, 0.22) 32%,
          rgba(0, 0, 0, 0.04) 50%,
          transparent 70%
        );
      }

      .sm-day-world--mirrored {
        position: absolute;
        top: auto;
        bottom: 100%;
        margin-bottom: -30.5vh;
        left: 0;
        right: 0;
        height: 100vh;
        pointer-events: none;
        transform-origin: 50% calc(100% - 30.5vh);
        transform: scaleY(-0.74);
        /* Full-viewport SVG turbulence repaints on every cloud frame. Keep the water color without that pass. */
        filter: brightness(0.99) saturate(0.9) contrast(0.9);
        opacity: 0.63;
      }

      .sm-day-world--mirrored .sm-day-sky {
        opacity: 0.09;
      }

      .sm-day-world--mirrored .sm-day-mountains {
        opacity: 0.74;
        filter: blur(1px) saturate(0.88) contrast(0.92);
      }

      /* 白昼房屋只留下暖色色息，不保留窗、墙或屋顶的可辨识边缘。 */
      .sm-day-world--mirrored .sm-day-cottages {
        opacity: 0.31;
        filter: blur(2px) saturate(0.7) contrast(0.62);
      }

      /* 极薄的夏日水面光，只做明暗呼吸，不移动反射几何。 */
      .sm-day-water-surface {
        position: absolute;
        inset: 0;
        background:
          radial-gradient(ellipse 76% 5% at 48% 2%, rgba(255, 255, 255, 0.055) 0%, rgba(225, 246, 255, 0.018) 48%, transparent 76%),
          radial-gradient(ellipse 58% 9% at 54% 76%, rgba(242, 251, 255, 0.032) 0%, transparent 74%);
        mix-blend-mode: screen;
        filter: blur(0.5px);
        opacity: 0.36;
        animation: sm-day-surface-breathe 34s ease-in-out infinite alternate;
        pointer-events: none;
      }

      @keyframes sm-day-surface-breathe {
        0% { opacity: 0.3; }
        50% { opacity: 0.4; }
        100% { opacity: 0.34; }
      }

      /* 白天环境动态：一次性受控随机事件，不形成可识别循环。 */
      .sm-day-cloud-layer,
      .sm-day-bird-layer {
        position: absolute;
        inset: 0;
        overflow: hidden;
        pointer-events: none;
      }

      .sm-day-cloud-layer {
        z-index: 0;
      }

      .sm-day-bird-layer {
        z-index: 1;
      }

      /* 云距岸更远：只把同步的淡冷色变化带入统一镜像，避免可读云朵。 */
      .sm-day-cloud-layer--reflection {
        opacity: 0.12;
        filter: blur(0.8px) saturate(0.72);
        transform: scaleY(0.38);
        transform-origin: 50% 69.5%;
      }

      /* 高空远鸟的水反压到感知阈值以下，保留关系但不出现湖中黑点。 */
      .sm-day-bird-layer--reflection {
        opacity: 0.04;
        filter: blur(0.7px) saturate(0.65);
        transform: scaleY(0.38);
        transform-origin: 50% 69.5%;
      }

      .sm-day-cloud-group,
      .sm-day-bird-group {
        position: absolute;
        top: var(--sm-motion-top);
        left: 0;
        display: block;
        opacity: 0;
        pointer-events: none;
        will-change: transform, opacity;
      }

      .sm-day-cloud-group {
        width: var(--sm-motion-width);
        height: clamp(40px, 8vh, 84px);
        animation: sm-day-cloud-cross var(--sm-motion-duration) linear var(--sm-motion-delay) 1 both;
      }

      .sm-day-cloud-wisp {
        position: absolute;
        left: var(--sm-wisp-left);
        top: var(--sm-wisp-top);
        width: var(--sm-wisp-width);
        height: var(--sm-wisp-height);
        display: block;
        border-radius: 50%;
        background: radial-gradient(ellipse at center,
          rgba(255, 255, 255, 0.88) 0%,
          rgba(248, 252, 255, 0.54) 36%,
          rgba(235, 247, 254, 0.2) 58%,
          transparent 76%
        );
        filter: blur(var(--sm-wisp-blur));
        opacity: var(--sm-wisp-opacity);
      }

      .sm-day-cloud-group--cirrus .sm-day-cloud-wisp {
        transform: scaleY(0.68) skewX(-12deg);
      }

      .sm-day-cloud-group--soft .sm-day-cloud-wisp {
        transform: scaleY(0.92);
      }

      @keyframes sm-day-cloud-cross {
        0% {
          opacity: 0;
          transform: translate3d(var(--sm-motion-from), 0, 0) scale(var(--sm-motion-scale));
        }
        9%, 88% {
          opacity: var(--sm-motion-opacity);
        }
        100% {
          opacity: 0;
          transform: translate3d(var(--sm-motion-to), var(--sm-motion-drift-y), 0) scale(var(--sm-motion-scale));
        }
      }

      .sm-day-bird-group {
        width: 12vw;
        min-width: 110px;
        height: 48px;
        animation: sm-day-birds-cross var(--sm-motion-duration) cubic-bezier(0.3, 0.06, 0.3, 1) 1 both;
      }

      .sm-day-bird {
        position: absolute;
        left: var(--sm-bird-left);
        top: var(--sm-bird-top);
        width: 22px;
        height: 12px;
        display: block;
        transform: scale(var(--sm-bird-scale));
        transform-origin: center;
      }

      .sm-day-bird-wing {
        position: absolute;
        top: 4px;
        width: 13px;
        height: 7px;
        display: block;
        border-top: 1.5px solid rgba(45, 81, 104, 0.78);
        border-radius: 50%;
        animation: sm-day-bird-wing var(--sm-bird-flap) ease-in-out var(--sm-bird-phase) infinite alternate;
      }

      .sm-day-bird-wing--left {
        right: 50%;
        transform-origin: 100% 40%;
      }

      .sm-day-bird-wing--right {
        left: 50%;
        transform-origin: 0 40%;
        animation-direction: alternate-reverse;
      }

      @keyframes sm-day-bird-wing {
        0% { transform: rotate(12deg) translateY(0); }
        100% { transform: rotate(-16deg) translateY(1px); }
      }

      @keyframes sm-day-birds-cross {
        0% {
          opacity: 0;
          transform: translate3d(var(--sm-motion-from), 0, 0) scale(var(--sm-motion-scale));
        }
        12%, 84% {
          opacity: var(--sm-motion-opacity);
        }
        100% {
          opacity: 0;
          transform: translate3d(var(--sm-motion-to), var(--sm-motion-drift-y), 0) scale(var(--sm-motion-scale));
        }
      }

      @media (prefers-reduced-motion: reduce) {
        .sm-day-water-surface {
          animation: none;
        }

        .sm-day-cloud-layer,
        .sm-day-bird-layer {
          display: none;
        }
      }

      /* 夜晚：真实纯净蓝调暮色 (Twilight Blue Hour)
         以 v1 清冽苍穹与稳固体量为基准；
         融入菲涅尔透视湖水、微风毛细微澜、真实流金光道与山水咬合。 */
      /* 场景 1 夜晚视觉世界层（World Layer）：容纳水线以上全部天景、山体、灯火与星宿 */
      .sm-night-world {
        position: absolute;
        inset: 0;
        pointer-events: none;
      }

      .sm-night-sky {
        position: absolute;
        inset: 0;
        background:
          radial-gradient(ellipse 90% 50% at 50% 66%, rgba(26, 68, 118, 0.45) 0%, rgba(16, 42, 78, 0.3) 45%, transparent 75%),
          linear-gradient(180deg, #040915 0%, #08152e 32%, #0e2448 54%, #183765 65%, #0d1e38 68%, #050b18 100%);
      }

      /* 山脊背后的微弱落日余温（暖铜/柔杏色，极其微弱克制） */
      .sm-night-dusk-glow {
        position: absolute;
        bottom: 29%;
        left: -10%;
        width: 120%;
        height: 14%;
        background: radial-gradient(ellipse 65% 50% at 42% 50%, rgba(234, 138, 100, 0.2), rgba(180, 85, 90, 0.08) 45%, transparent 75%);
        filter: blur(20px);
        pointer-events: none;
        animation: sm-dusk-glow-pulse 16s ease-in-out infinite alternate;
      }
      @keyframes sm-dusk-glow-pulse {
        0% { opacity: 0.55; transform: scaleY(0.92); }
        100% { opacity: 0.85; transform: scaleY(1.08); }
      }

      /* 对岸山体地貌（结构清晰、边界明确、扎实立于地平线上） */
      .sm-distant-mountains {
        position: absolute;
        bottom: 28%;
        left: 0;
        width: 100%;
        height: 130px;
        pointer-events: none;
      }

      /* 自然静谧湖水（远岸深蓝、近水沉稳墨蓝，幽深宁静） */
      .sm-lake-water {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        height: 30.2%;
        background: linear-gradient(180deg,
          rgba(10, 22, 42, 0.8) 0%,
          rgba(6, 14, 28, 0.9) 24%,
          #040a16 54%,
          #02050c 100%
        );
        pointer-events: none;
        overflow: hidden;
      }

      /* 岸线山影衔接（对岸山脚自然浸入水中，形成真实地势交界） */
      .sm-water-shore-shadow {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 16px;
        background: linear-gradient(180deg, rgba(2, 6, 14, 0.55) 0%, transparent 100%);
        filter: blur(2px);
      }

      /* 柔和微波粼粼（极克制暗涌，水体呼吸感，绝无生硬条纹或扫描线） */
      .sm-water-wave {
        position: absolute;
        border-radius: 50%;
        pointer-events: none;
      }
      .sm-water-wave-1 {
        top: 16%;
        left: -10%;
        width: 120%;
        height: 32%;
        background: radial-gradient(ellipse 60% 25% at 50% 50%, rgba(135, 190, 235, 0.045), transparent 70%);
        filter: blur(6px);
        animation: sm-wave-drift-1 22s ease-in-out infinite alternate;
      }
      .sm-water-wave-2 {
        top: 44%;
        left: -5%;
        width: 110%;
        height: 26%;
        background: radial-gradient(ellipse 55% 20% at 45% 50%, rgba(160, 205, 250, 0.03), transparent 70%);
        filter: blur(8px);
        animation: sm-wave-drift-2 28s ease-in-out infinite alternate -12s;
      }

      @keyframes sm-wave-drift-1 {
        0% { transform: translateX(-2vw) scaleY(0.95); opacity: 0.5; }
        50% { transform: translateX(2vw) scaleY(1.05); opacity: 0.85; }
        100% { transform: translateX(-1vw) scaleY(0.98); opacity: 0.6; }
      }
      @keyframes sm-wave-drift-2 {
        0% { transform: translateX(1.5vw) scaleY(1.04); opacity: 0.75; }
        50% { transform: translateX(-2vw) scaleY(0.94); opacity: 0.45; }
        100% { transform: translateX(0.5vw) scaleY(1.02); opacity: 0.7; }
      }

      /* 对岸微光聚落（稳稳扎在对岸山脚陆地上，非悬浮空中） */
      .sm-night-city-clusters {
        position: absolute;
        bottom: 30.5%;
        left: 0;
        width: 100%;
        height: 18px;
        pointer-events: none;
        z-index: 1;
      }
      .sm-cluster-left  { position: absolute; left: 18%; bottom: 2px; display: flex; gap: 14px; align-items: flex-end; }
      .sm-cluster-mid   { position: absolute; left: 48%; bottom: 4px; display: flex; }
      .sm-cluster-right { position: absolute; right: 16%; bottom: 3px; display: flex; gap: 20px; align-items: flex-end; }

      .sm-light {
        display: inline-block;
        border-radius: 50%;
        background: #fed7aa;
        box-shadow: 0 0 4px 1.5px rgba(254, 215, 170, 0.9), 0 0 10px 2.5px rgba(249, 115, 22, 0.4);
      }
      .l1 { width: 3px; height: 3px; animation: sm-twinkle 4s ease-in-out infinite alternate; }
      .l2 { width: 4px; height: 4px; background: #fef08a; box-shadow: 0 0 5px 2px rgba(254, 240, 138, 0.9), 0 0 12px 3px rgba(234, 179, 8, 0.4); animation: sm-twinkle 6s ease-in-out infinite alternate -2s; }
      .l3 { width: 2.5px; height: 2.5px; animation: sm-twinkle 5s ease-in-out infinite alternate -3.5s; }
      .l4 { width: 3.5px; height: 3.5px; background: #ffedd5; animation: sm-twinkle 7s ease-in-out infinite alternate -1s; }
      .l5 { width: 2.5px; height: 2.5px; background: #fed7aa; animation: sm-twinkle 8s ease-in-out infinite alternate -4s; }
      .l6 { width: 3.5px; height: 3.5px; background: #fef08a; animation: sm-twinkle 5.5s ease-in-out infinite alternate -2.5s; }
      .l7 { width: 2.5px; height: 2.5px; animation: sm-twinkle 6.5s ease-in-out infinite alternate -5s; }

      @keyframes sm-twinkle {
        0% { opacity: 0.5; transform: scale(0.88); }
        50% { opacity: 1; transform: scale(1.12); }
        100% { opacity: 0.65; transform: scale(0.92); }
      }

      /* 自然微光倒影（柔和纤细的暖光倒影，自然溶于暗水，绝无生硬梯形剪裁与斑马条纹） */
      .sm-water-reflections {
        position: absolute;
        bottom: 0;
        left: 0;
        width: 100%;
        height: 30.2%;
        pointer-events: none;
      }
      .sm-water-refl {
        position: absolute;
        top: 0;
        transform-origin: top center;
      }
      .sm-refl-left {
        left: 18%;
        width: 72px;
        height: 58%;
        background: linear-gradient(180deg,
          rgba(254, 215, 170, 0.35) 0%,
          rgba(249, 115, 22, 0.16) 26%,
          rgba(245, 158, 11, 0.04) 62%,
          transparent 95%
        );
        filter: blur(8px);
        animation: sm-refl-shimmer-left 9s ease-in-out infinite alternate;
      }
      .sm-refl-mid {
        left: 48%;
        width: 22px;
        height: 38%;
        background: linear-gradient(180deg,
          rgba(254, 215, 170, 0.28) 0%,
          rgba(249, 115, 22, 0.1) 28%,
          transparent 90%
        );
        filter: blur(6px);
        animation: sm-refl-shimmer-mid 11s ease-in-out infinite alternate -3s;
      }
      .sm-refl-right {
        right: 16%;
        width: 54px;
        height: 50%;
        background: linear-gradient(180deg,
          rgba(254, 240, 138, 0.3) 0%,
          rgba(234, 179, 8, 0.13) 26%,
          rgba(245, 158, 11, 0.035) 60%,
          transparent 92%
        );
        filter: blur(8px);
        animation: sm-refl-shimmer-right 10s ease-in-out infinite alternate -5s;
      }

      /* 倒影内部微弱的水光核心碎影（随水波微风轻微横向呼吸） */
      .sm-refl-core {
        position: absolute;
        top: 0;
        left: 25%;
        width: 50%;
        height: 60%;
        background: linear-gradient(180deg,
          rgba(255, 255, 255, 0.22) 0%,
          rgba(254, 215, 170, 0.15) 35%,
          transparent 100%
        );
        filter: blur(3px);
      }

      @keyframes sm-refl-shimmer-left {
        0% { transform: scaleX(0.9) skewX(-1.5deg); opacity: 0.55; }
        50% { transform: scaleX(1.1) skewX(1.5deg); opacity: 0.85; }
        100% { transform: scaleX(0.95) skewX(-0.8deg); opacity: 0.65; }
      }
      @keyframes sm-refl-shimmer-mid {
        0% { transform: scaleX(0.85) skewX(-1deg); opacity: 0.45; }
        50% { transform: scaleX(1.15) skewX(1deg); opacity: 0.75; }
        100% { transform: scaleX(0.9) skewX(-0.5deg); opacity: 0.55; }
      }
      @keyframes sm-refl-shimmer-right {
        0% { transform: scaleX(0.92) skewX(-1.2deg); opacity: 0.5; }
        50% { transform: scaleX(1.08) skewX(1.2deg); opacity: 0.8; }
        100% { transform: scaleX(0.96) skewX(-0.6deg); opacity: 0.6; }
      }

      /* =========================================================
         场景 1：【蓝调湖畔 · 暮色星宿】高山深谷纯净星空系统
         设计原则：极低光污染、极轻微银河微晕、天然夏夜大三角、
                  湖面星芒微波倒影联动、约 55s 自然偶遇极细流星
         ========================================================= */
      /* 1. 高山幽微银河微晕（薄如蝉翼，透明度仅 3%~6%，斜跨天际，不挡正文） */
      .sm-night-milkyway {
        position: absolute;
        top: -12%;
        left: 18%;
        width: 75vw;
        height: 60vh;
        transform: rotate(-28deg);
        background: radial-gradient(ellipse 65% 120% at 50% 45%,
          rgba(224, 242, 254, 0.055) 0%,
          rgba(186, 230, 253, 0.035) 40%,
          rgba(147, 197, 253, 0.015) 65%,
          transparent 80%
        );
        filter: blur(32px);
        pointer-events: none;
        opacity: 0.85;
      }

      /* 2. 夏夜大三角与高山星宿（天然恒星呼吸，无连线人工感） */
      .sm-night-stars {
        position: absolute;
        inset: 0;
        pointer-events: none;
      }
      .sm-night-stars .sm-star {
        position: absolute;
        border-radius: 50%;
        background: #ffffff;
        pointer-events: none;
      }

      /* 织女星 Vega（主星 / 承袭原长庚星位 top: 18%, left: 28%） */
      .sm-star-vega {
        top: 18%;
        left: 28%;
        width: 3.5px;
        height: 3.5px;
        box-shadow: 0 0 6px 2px rgba(255, 255, 255, 0.95), 0 0 16px 5px rgba(186, 230, 253, 0.55);
        animation: sm-star-breathe-vega 9s ease-in-out infinite alternate;
      }
      /* 牛郎星 Altair (top: 32%, left: 42%) */
      .sm-star-altair {
        top: 32%;
        left: 42%;
        width: 2.2px;
        height: 2.2px;
        box-shadow: 0 0 5px 1.5px rgba(255, 255, 255, 0.9), 0 0 10px 3px rgba(191, 219, 254, 0.4);
        animation: sm-star-breathe-altair 13s ease-in-out infinite alternate -4s;
      }
      /* 天津四 Deneb (top: 13%, left: 52%) */
      .sm-star-deneb {
        top: 13%;
        left: 52%;
        width: 2px;
        height: 2px;
        box-shadow: 0 0 4px 1.2px rgba(255, 255, 255, 0.85), 0 0 8px 2.5px rgba(191, 219, 254, 0.35);
        animation: sm-star-breathe-deneb 17s ease-in-out infinite alternate -8s;
      }
      /* 高空深邃星尘（极微弱 1.0px~1.5px，如余光微语，2.5s~4.2s 轻盈浮沉，绝无死板固定感） */
      .sm-star-m1 { top: 9%; left: 36%; width: 1.4px; height: 1.4px; animation: sm-star-flutter-1 2.8s ease-in-out infinite alternate -0.6s; }
      .sm-star-m2 { top: 24%; left: 58%; width: 1.2px; height: 1.2px; animation: sm-star-flutter-2 3.4s ease-in-out infinite alternate -1.8s; }
      .sm-star-m3 { top: 7%; left: 66%; width: 1.5px; height: 1.5px; animation: sm-star-flutter-1 3.9s ease-in-out infinite alternate -2.5s; }
      .sm-star-m4 { top: 22%; left: 21%; width: 1.2px; height: 1.2px; animation: sm-star-flutter-2 3.1s ease-in-out infinite alternate -1.1s; }
      .sm-star-m5 { top: 11%; left: 45%; width: 1.1px; height: 1.1px; animation: sm-star-flutter-1 2.6s ease-in-out infinite alternate -1.4s; }
      .sm-star-m6 { top: 29%; left: 33%; width: 1.3px; height: 1.3px; animation: sm-star-flutter-2 4.2s ease-in-out infinite alternate -3.0s; }
      .sm-star-m7 { top: 16%; left: 62%; width: 1.0px; height: 1.0px; animation: sm-star-flutter-1 3.5s ease-in-out infinite alternate -0.9s; }

      @keyframes sm-star-breathe-vega {
        0% { transform: scale(0.85); opacity: 0.7; }
        50% { transform: scale(1.15); opacity: 1; }
        100% { transform: scale(0.9); opacity: 0.78; }
      }
      @keyframes sm-star-breathe-altair {
        0% { transform: scale(0.8); opacity: 0.6; }
        50% { transform: scale(1.2); opacity: 0.95; }
        100% { transform: scale(0.85); opacity: 0.68; }
      }
      @keyframes sm-star-breathe-deneb {
        0% { transform: scale(0.85); opacity: 0.55; }
        50% { transform: scale(1.18); opacity: 0.9; }
        100% { transform: scale(0.88); opacity: 0.65; }
      }
      @keyframes sm-star-flutter-1 {
        0%, 100% { opacity: 0.16; transform: scale(0.85); }
        45% { opacity: 0.68; transform: scale(1.1); }
        65% { opacity: 0.38; transform: scale(0.95); }
        80% { opacity: 0.58; transform: scale(1.05); }
      }
      @keyframes sm-star-flutter-2 {
        0%, 100% { opacity: 0.12; transform: scale(0.8); }
        35% { opacity: 0.62; transform: scale(1.08); }
        52% { opacity: 0.24; transform: scale(0.9); }
        76% { opacity: 0.74; transform: scale(1.15); }
      }

      /* =========================================================
         高山静水之镜（统一世界镜像 + 菲涅尔深度渐隐 + 暗夜琉璃水体）
         - 继承完整天景世界（山体、木屋暖光、星空、流星自然入水）
         - 杜绝多余繁杂波浪，保持平静安详的高山镜水壁纸质感
         - 菲涅尔渐隐与颜色融合，近处墨蓝深黑自然沉降，远离倒置图片感
         ========================================================= */
      .sm-night-lake {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        height: 30.5%;
        pointer-events: none;
        overflow: hidden;
        z-index: 1;
      }

      /* 湖水深邃底色 */
      .sm-night-lake-base {
        position: absolute;
        inset: 0;
        background:
          radial-gradient(ellipse 88% 24% at 50% 0%, rgba(28, 73, 124, 0.1) 0%, rgba(10, 38, 82, 0.025) 54%, transparent 76%),
          linear-gradient(180deg,
            #071a3a 0%,
            #061630 27%,
            #041127 60%,
            #020a18 100%
          );
      }

      /* 统一世界镜像层（包含全景倒影与深度渐隐蒙版） */
      .sm-night-reflection {
        position: absolute;
        inset: 0;
        pointer-events: none;
        overflow: hidden;
        -webkit-mask-image: linear-gradient(180deg,
          rgba(0, 0, 0, 0.94) 0%,
          rgba(0, 0, 0, 0.8) 17%,
          rgba(0, 0, 0, 0.48) 46%,
          rgba(0, 0, 0, 0.2) 72%,
          rgba(0, 0, 0, 0.06) 100%
        );
        mask-image: linear-gradient(180deg,
          rgba(0, 0, 0, 0.94) 0%,
          rgba(0, 0, 0, 0.8) 17%,
          rgba(0, 0, 0, 0.48) 46%,
          rgba(0, 0, 0, 0.2) 72%,
          rgba(0, 0, 0, 0.06) 100%
        );
      }

      /* 镜像世界：以水线（bottom: 30.5%）为基准光学反折 */
      .sm-night-world--mirrored {
        position: absolute;
        top: auto;
        bottom: 100%;
        margin-bottom: -30.5vh;
        left: 0;
        right: 0;
        height: 100vh;
        pointer-events: none;
        transform-origin: 50% calc(100% - 30.5vh);
        transform: scaleY(-0.85);
        /* The reflected lights animate; SVG turbulence here rerasterizes the whole lake every frame. */
        filter: brightness(0.78) saturate(0.82) contrast(0.9);
        opacity: 0.86;
      }

      /* 统一滤镜不变；远山按距离额外衰减，近岸灯火保留更清晰的反射权重。 */
      .sm-night-world--mirrored .v1-sm-night-mountains {
        opacity: 0.58;
      }

      .sm-night-world--mirrored .v1-sm-light {
        opacity: 0.82;
      }

      .sm-night-world--mirrored .sm-star {
        opacity: 0.62;
      }
      .sm-night-world--mirrored .sm-natural-shooting-star {
        opacity: 0.48;
      }

      /* 水色吸收：保留冷蓝亮度，逐步吃掉物体细节而非把近水压成纯黑。 */
      .sm-night-lake-overlay {
        position: absolute;
        inset: 0;
        pointer-events: none;
        background:
          radial-gradient(ellipse 72% 15% at 48% 4%, rgba(37, 93, 151, 0.045) 0%, transparent 68%),
          linear-gradient(180deg,
            rgba(4, 24, 57, 0.035) 0%,
            rgba(3, 17, 43, 0.14) 46%,
            rgba(1, 8, 23, 0.48) 100%
          );
      }

      /* 水面本身的低亮度微光：不画波纹，只给平静湖面一点连续材质。 */
      .sm-night-lake-surface {
        position: absolute;
        inset: 0;
        pointer-events: none;
        background:
          radial-gradient(ellipse 70% 5% at 38% 2%, rgba(90, 159, 211, 0.038) 0%, rgba(48, 112, 174, 0.012) 48%, transparent 76%),
          radial-gradient(ellipse 56% 4% at 69% 34%, rgba(62, 130, 188, 0.016) 0%, transparent 74%),
          radial-gradient(ellipse 64% 5% at 32% 63%, rgba(40, 100, 164, 0.012) 0%, transparent 76%);
        mix-blend-mode: screen;
        filter: blur(0.6px);
        opacity: 0.46;
        animation: sm-night-surface-breathe 21s ease-in-out infinite alternate;
      }

      @keyframes sm-night-surface-breathe {
        0% { opacity: 0.34; transform: scaleX(0.99); }
        50% { opacity: 0.5; transform: scaleX(1.01); }
        100% { opacity: 0.4; transform: scaleX(0.995); }
      }

      /* 岸线微弱暗影（山脚浸入深水） */
      .sm-night-shore-shadow {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 6px;
        pointer-events: none;
        background: linear-gradient(180deg,
          rgba(2, 7, 17, 0.62) 0%,
          rgba(10, 34, 71, 0.035) 48%,
          transparent 100%
        );
      }

      @media (prefers-reduced-motion: reduce) {
        .sm-night-water-noise {
          display: none;
        }

        .sm-night-lake-surface {
          animation: none;
        }
      }

      /* 4. 自然偶遇极细流星（约 55 秒超长静候周期，1.2s 极速掠过，纯自然无交互） */
      .sm-natural-shooting-star {
        position: absolute;
        top: 12%;
        left: 72%;
        width: 110px;
        height: 1.2px;
        background: linear-gradient(90deg,
          rgba(255, 255, 255, 0.95) 0%,
          rgba(224, 242, 254, 0.55) 30%,
          rgba(186, 230, 253, 0.18) 60%,
          transparent 100%
        );
        transform: rotate(-26deg);
        filter: drop-shadow(0 0 5px rgba(255, 255, 255, 0.85));
        opacity: 0;
        animation: sm-shooting-natural 55s cubic-bezier(0.25, 0.1, 0.25, 1) infinite;
        pointer-events: none;
      }
      @keyframes sm-shooting-natural {
        0%, 96.5% {
          opacity: 0;
          transform: translate(0, 0) rotate(-26deg) scaleX(0.1);
        }
        97.2% {
          opacity: 0.95;
          transform: translate(-35px, 17px) rotate(-26deg) scaleX(1);
        }
        98.8% {
          opacity: 0;
          transform: translate(-150px, 73px) rotate(-26deg) scaleX(1.35);
        }
        100% {
          opacity: 0;
        }
      }

      /* =========================================================
         场景 3：【乡野小站 · 驶过夜色】(twilight-platform)
         极简远眺与舒展微缩重构：
         - 纯净辽阔苍穹：彻底移除电线，回归纯粹、深邃、安宁的夏夜苍穹；
         - 舒展小站空间：左右扩展空间，站名牌独立立于月台左侧地面，木椅与路灯错落有致；
         - 悠缓乡村电车：还原悠闲、从容的乡间慢速，进站减速、到站停靠 8 秒、平缓驶离。
         ========================================================= */
      /* 白天：夏日小站清透蓝天（忠实继承前版夏日通透质感：径向晨光、蔚蓝晴空与架空电线） */
      .tp-day-sky {
        position: absolute;
        inset: 0;
        background:
          radial-gradient(ellipse 80% 50% at 30% 45%, rgba(255, 255, 255, 0.75), transparent 70%),
          linear-gradient(180deg, #74bbf3 0%, #a8d5f7 42%, #dceefa 66%, #bfdbfe 72%, #8ec5ee 100%);
        overflow: hidden;
      }

      /* 1. 晨光之呼吸：左上高空柔暖晨光漫射，不干扰中央正文阅读 */
      .tp-day-sky .tp-sun-radiance {
        position: absolute;
        top: 2%;
        left: 12%;
        width: 380px;
        height: 320px;
        background: radial-gradient(ellipse 65% 55% at 45% 45%, rgba(255, 253, 240, 0.4) 0%, rgba(254, 243, 199, 0.2) 40%, rgba(254, 215, 170, 0.06) 65%, transparent 80%);
        filter: blur(28px);
        pointer-events: none;
        animation: tp-sun-breathe 22s ease-in-out infinite alternate;
      }

      @keyframes tp-sun-breathe {
        0% { opacity: 0.72; transform: scale(0.96) translate(-2px, -2px); }
        100% { opacity: 1; transform: scale(1.05) translate(2px, 2px); }
      }

      /* 2. 高空卷云轻丝（万里高空羽卷云，避开正文中央，超长周期悠缓流动） */
      .tp-cirrus-container {
        position: absolute;
        inset: 0;
        overflow: hidden;
        pointer-events: none;
      }

      .tp-cirrus-group-1 {
        position: absolute;
        top: 11%;
        left: 58%;
        width: 420px;
        height: 50px;
        animation: tp-cirrus-breeze-1 72s ease-in-out infinite alternate;
      }
      .tp-cirrus-wisp-1a {
        position: absolute;
        top: 0;
        left: 0;
        width: 320px;
        height: 22px;
        background: radial-gradient(ellipse 75% 50% at 50% 50%, rgba(255, 255, 255, 0.32) 0%, rgba(240, 249, 255, 0.16) 50%, transparent 85%);
        filter: blur(8px);
        border-radius: 50%;
        transform: rotate(-1.5deg);
      }
      .tp-cirrus-wisp-1b {
        position: absolute;
        top: 16px;
        left: 120px;
        width: 170px;
        height: 12px;
        background: radial-gradient(ellipse 80% 50% at 50% 50%, rgba(255, 255, 255, 0.24) 0%, rgba(240, 249, 255, 0.1) 50%, transparent 85%);
        filter: blur(6px);
        border-radius: 50%;
        transform: rotate(-2deg);
      }

      .tp-cirrus-group-2 {
        position: absolute;
        top: 17%;
        left: 8%;
        width: 240px;
        height: 25px;
        animation: tp-cirrus-breeze-2 88s ease-in-out infinite alternate;
      }
      .tp-cirrus-wisp-2 {
        width: 200px;
        height: 16px;
        background: radial-gradient(ellipse 75% 50% at 50% 50%, rgba(255, 255, 255, 0.26) 0%, rgba(240, 249, 255, 0.12) 50%, transparent 85%);
        filter: blur(8px);
        border-radius: 50%;
        transform: rotate(1deg);
      }

      @keyframes tp-cirrus-breeze-1 {
        0% { transform: translate(0, 0) scale(0.98, 0.96); opacity: 0.75; }
        50% { transform: translate(35px, -3px) scale(1.04, 1.02); opacity: 0.92; }
        100% { transform: translate(70px, 1px) scale(1, 0.98); opacity: 0.8; }
      }

      @keyframes tp-cirrus-breeze-2 {
        0% { transform: translate(0, 0) scale(1, 0.98); opacity: 0.7; }
        50% { transform: translate(25px, 2px) scale(1.05, 1.02); opacity: 0.85; }
        100% { transform: translate(50px, -2px) scale(0.97, 0.95); opacity: 0.72; }
      }

      /* 3. 架空电线：夏日乡村铁道微风轻漾线缆 */
      .tp-day-sky .tp-overhead-wires {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 200px;
        background-image:
          radial-gradient(ellipse 100% 100% at 50% 0%, transparent 97.5%, rgba(100, 130, 160, 0.3) 98%, transparent 98.8%),
          radial-gradient(ellipse 120% 90% at 40% 0%, transparent 97.8%, rgba(100, 130, 160, 0.25) 98.2%, transparent 98.9%);
        pointer-events: none;
        animation: tp-wire-breeze 16s ease-in-out infinite alternate;
        transform-origin: 50% 0%;
      }

      @keyframes tp-wire-breeze {
        0% { transform: scaleY(0.98) translateY(-0.5px); }
        50% { transform: scaleY(1.01) translateY(0.5px); }
        100% { transform: scaleY(0.99) translateY(-0.2px); }
      }

      /* 4. 远方晨岚：地平线微暖漫射轻雾 */
      .tp-day-sky .tp-horizon-haze {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        height: 28px;
        background: linear-gradient(180deg, transparent 0%, rgba(254, 243, 199, 0.08) 35%, rgba(186, 220, 245, 0.38) 75%, rgba(219, 234, 254, 0.55) 100%);
        pointer-events: none;
      }

      /* 夜晚：深邃蓝调夜空（无遮挡纯净星空） */
      .tp-night-sky {
        position: absolute;
        inset: 0;
        background:
          radial-gradient(ellipse 85% 45% at 50% 75%, rgba(26, 44, 76, 0.45) 0%, transparent 75%),
          linear-gradient(180deg, #020610 0%, #051022 30%, #0c1e3a 54%, #122442 70%, #0d1b32 78%, #071120 100%);
      }

      /* 高视角统一大地基底（高度 18%，远眺辽阔大地） */
      .tp-ground-base {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        height: 18%;
        background: linear-gradient(180deg, #070e1a 0%, #040912 40%, #02050b 100%);
        pointer-events: none;
        z-index: 1;
      }

      /* 白天大地：低饱和静谧基底 + 顶层道床斜坡微透视（正午受光面与背光面） */
      .tp-ground-base--day {
        background: linear-gradient(180deg, #95acc0 0%, #7d96aa 35%, #60798c 100%);
      }

      /* 道床平铺碎石受光面 (4px) */
      .tp-ground-base--day::before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 4px;
        background: linear-gradient(180deg, #e5eef5 0%, #cbdce8 100%);
      }

      /* 道床斜坡背光微透视层 (5px) */
      .tp-ground-base--day::after {
        content: "";
        position: absolute;
        top: 4px;
        left: 0;
        right: 0;
        height: 5px;
        background: linear-gradient(180deg, #acc1d2 0%, #94abbd 100%);
        box-shadow: 0 1px 2px rgba(15, 23, 42, 0.08);
      }

      /* 高视角双轨铁道（深色碎石道碴与平行双钢轨） */
      .tp-rail-tracks {
        position: absolute;
        bottom: 18%;
        left: 0;
        right: 0;
        height: 6px;
        background: rgba(11, 19, 34, 0.7);
        border-top: 1px solid rgba(148, 163, 184, 0.35);
        border-bottom: 1px solid rgba(100, 116, 139, 0.3);
        pointer-events: none;
        z-index: 2;
      }

      .tp-rail-tracks::after {
        content: "";
        position: absolute;
        left: calc(58vw + 175px);
        width: 90px;
        height: 100%;
        background: linear-gradient(90deg, transparent, rgba(254, 215, 170, 0.3) 50%, transparent);
        filter: blur(1px);
      }

      .tp-rail-tracks--day {
        background: linear-gradient(180deg, #ffffff 0%, #cbd5e1 35%, #64748b 100%);
        border-top: 1.5px solid #ffffff;
        border-bottom: 1px solid #475569;
        box-shadow: 0 2px 4px rgba(15, 23, 42, 0.25);
      }
      .tp-rail-tracks--day::after {
        display: none;
      }

      /* 钢轨动态耀光微澜与日光热浪流动 */
      .tp-rail-shimmer {
        position: absolute;
        top: -1px;
        left: 0;
        right: 0;
        height: 2px;
        background: linear-gradient(90deg,
          transparent 0%,
          rgba(255, 255, 255, 0.2) 20%,
          rgba(255, 255, 255, 0.95) 35%,
          rgba(254, 240, 138, 0.9) 38%,
          rgba(255, 255, 255, 0.95) 41%,
          rgba(255, 255, 255, 0.2) 55%,
          transparent 70%);
        background-size: 200% 100%;
        animation: tp-rail-shimmer 7s ease-in-out infinite;
        pointer-events: none;
      }

      @keyframes tp-rail-shimmer {
        0% { background-position: -200% 0; opacity: 0.75; }
        50% { opacity: 1; }
        100% { background-position: 200% 0; opacity: 0.8; }
      }

      /* 【舒展日式小站区域】位于右侧 58% 处，横向扩展，左右留有自然呼吸感（宽 260px） */
      .tp-station-precinct {
        position: absolute;
        bottom: 18%;
        left: 58%;
        width: 260px;
        height: 16px;
        pointer-events: none;
        z-index: 3;
      }

      /* Q版日式极简小站名牌（独立立在月台左侧延伸出的道旁空地上，双脚稳稳扎根地面） */
      .tp-station-sign {
        position: absolute;
        bottom: 0;
        left: 2px;
        width: 22px;
        height: 24px;
        display: flex;
        flex-direction: column;
        align-items: center;
      }

      /* 经典日式白底蓝带站名牌面 */
      .tp-station-sign::before {
        content: "";
        width: 22px;
        height: 13px;
        background: #f8fafc;
        border: 1px solid #cbd5e1;
        border-radius: 1px;
        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
        background-image: linear-gradient(180deg, #1d4ed8 0%, #1d4ed8 24%, transparent 24%);
      }

      /* 站牌双立柱 */
      .tp-station-sign::after {
        content: "";
        width: 14px;
        height: 11px;
        border-left: 1.5px solid #475569;
        border-right: 1.5px solid #475569;
      }

      /* 月台主体：自左侧 36px 处自然向右延伸，带左侧缓坡 */
      .tp-platform-unit {
        position: absolute;
        bottom: 0;
        left: 36px;
        right: 0;
        height: 16px;
      }

      /* 月台俯瞰上台面（左端有自然缓坡角，深栗暖木色） */
      .tp-platform-deck {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 6px;
        background: linear-gradient(90deg, #3d2b20 0%, #2e2019 70%, #241913 100%);
        border-top: 1px solid #4a3528;
        clip-path: polygon(0 100%, 12px 0, 100% 0, 100% 100%);
      }

      /* 日式醒目暖黄安全警戒线 */
      .tp-platform-safety-line {
        position: absolute;
        bottom: 0;
        left: 12px;
        right: 0;
        height: 2px;
        background: linear-gradient(90deg, #d97706 0%, #f59e0b 25%, #fbbf24 60%, #f59e0b 100%);
        box-shadow: 0 0 5px rgba(245, 158, 11, 0.45);
      }

      /* 月台正面石质基座（带左侧缓坡） */
      .tp-platform-face {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        height: 10px;
        background: linear-gradient(180deg, #221712 0%, #150e0a 100%);
        box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5);
        clip-path: polygon(0 100%, 12px 0, 100% 0, 100% 100%);
      }

      /* 白天月台色彩：敞开式候车雨棚架构 + 正午朝右微偏（8deg）紧凑实体落影 */
      /* 站牌地面实体接触落影（微缩脚底，向右微偏 8deg） */
      .tp-sign-shadow {
        position: absolute;
        bottom: -3px;
        left: 3px;
        width: 14px;
        height: 3px;
        background: linear-gradient(180deg, rgba(15, 23, 42, 0.26) 0%, rgba(15, 23, 42, 0.04) 100%);
        transform: skewX(8deg);
        border-radius: 1px;
        pointer-events: none;
        z-index: 1;
      }

      /* 月台地面实体紧凑收敛落影（高 4px，向右微偏 8deg） */
      .tp-platform-ground-shadow {
        position: absolute;
        top: auto;
        bottom: -4px;
        left: 36px;
        right: 0;
        height: 4px;
        background: linear-gradient(180deg, rgba(15, 23, 42, 0.28) 0%, rgba(15, 23, 42, 0.04) 100%);
        clip-path: polygon(0 0, 100% 0, 100% 100%, 6px 100%);
        transform: skewX(8deg);
        pointer-events: none;
        z-index: 1;
      }

      /* 敞开式候车雨棚总单元（高度 26px，覆盖棚顶与地面站台，昼夜统一） */
      .tp-platform-unit--day,
      .scene-ambient--night .tp-platform-unit {
        position: absolute;
        bottom: 0;
        left: 36px;
        right: 0;
        height: 26px;
        pointer-events: none;
      }

      /* 低矮站台正面石质基座（高 3px） */
      .tp-platform-face {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        height: 3px;
        background: linear-gradient(180deg, #8298a8 0%, #667c8d 100%);
        clip-path: polygon(0 100%, 8px 0, 100% 0, 100% 100%);
        box-shadow: 0 1px 2px rgba(15, 23, 42, 0.15);
      }

      /* 低矮站台行走地面（高 2px）与黄色警戒线 */
      .tp-platform-deck {
        position: absolute;
        bottom: 3px;
        top: auto;
        left: 0;
        right: 0;
        height: 2px;
        background: #e2e8f0;
        clip-path: polygon(0 100%, 8px 0, 100% 0, 100% 100%);
        border-top: 1px solid #ffffff;
        box-shadow: none;
      }

      .tp-platform-safety-line {
        position: absolute;
        bottom: 0;
        left: 8px;
        right: 0;
        height: 1px;
        background: #f59e0b;
        box-shadow: none;
      }

      /* 雨棚在走道地面上的阴凉投影区（Canopy Floor Shadow） */
      .tp-shelter-floor-shade {
        position: absolute;
        bottom: 3px;
        left: 10px;
        width: 132px;
        height: 2px;
        background: rgba(15, 23, 42, 0.15);
        pointer-events: none;
        z-index: 1;
      }

      /* 雨棚半高木制挡风板（腰壁 / Half Windbreak） */
      .tp-shelter-backboard {
        position: absolute;
        bottom: 5px;
        left: 18px;
        width: 118px;
        height: 6px;
        background: linear-gradient(180deg, #788c9b 0%, #596e7d 100%);
        border-top: 1px solid #94a3b8;
        opacity: 0.85;
      }

      /* 遮阳挡雨棚顶（Canopy Roof）：悬在上方，宽 134px，覆盖 8px 到 142px */
      .tp-shelter-canopy {
        position: absolute;
        top: 0;
        left: 8px;
        width: 134px;
        height: 3.5px;
        background: linear-gradient(90deg, #475569 0%, #334155 60%, #475569 100%);
        border-radius: 1px;
        box-shadow: 0 1.5px 3px rgba(15, 23, 42, 0.35);
      }
      .tp-shelter-canopy::before {
        content: "";
        position: absolute;
        top: -1px;
        left: -4px;
        right: -2px;
        height: 1px;
        background: #cbd5e1;
        border-radius: 1px;
      }

      /* 支撑雨棚的三根立柱（支承于 bottom: 5px，高 18px） */
      .tp-shelter-pillar {
        position: absolute;
        bottom: 5px;
        width: 1.5px;
        height: 18px;
        background: #334155;
        box-shadow: 0.5px 0 0 rgba(255, 255, 255, 0.3);
      }
      .tp-shelter-pillar-1 { left: 18px; }
      .tp-shelter-pillar-2 { left: 78px; }
      .tp-shelter-pillar-3 { left: 136px; }

      /* 立柱柱脚倾斜阴影（8deg） */
      .tp-shelter-pillar::after {
        content: "";
        position: absolute;
        bottom: -2px;
        left: 0;
        width: 2px;
        height: 2px;
        background: rgba(15, 23, 42, 0.25);
        transform: skewX(8deg);
      }

      /* 45° 三角木制/钢制斜撑方杖（Knee Braces） */
      .tp-shelter-bracket {
        position: absolute;
        top: 3px;
        width: 6px;
        height: 6px;
        border-top: 1px solid #475569;
        border-left: 1px solid #475569;
        transform: rotate(-45deg);
        pointer-events: none;
      }
      .tp-shelter-bracket-1 { left: 19px; }
      .tp-shelter-bracket-2 { left: 79px; }
      .tp-shelter-bracket-3 { left: 131px; transform: rotate(45deg); }

      /* 点子 A：站台立柱圆形小挂钟（Station Round Clock） */
      .tp-station-clock {
        position: absolute;
        top: 3px;
        left: 75px;
        width: 7.5px;
        height: 7.5px;
        background: #ffffff;
        border: 1px solid #1e293b;
        border-radius: 50%;
        box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
        z-index: 4;
      }
      .tp-station-clock::before {
        content: "";
        position: absolute;
        top: 1.5px;
        left: 2.5px;
        width: 1px;
        height: 2px;
        background: #0f172a;
      }
      .tp-station-clock::after {
        content: "";
        position: absolute;
        top: 2.5px;
        left: 2.5px;
        width: 1.5px;
        height: 1px;
        background: #0f172a;
      }

      /* 候车亭棚顶悬挂裸灯泡（Shelter Pendant Lamp） */
      .tp-shelter-lamp {
        position: absolute;
        top: 3.5px;
        left: 47px;
        width: 1px;
        height: 4px;
        background: #334155;
        z-index: 4;
      }
      .tp-shelter-lamp-bulb {
        position: absolute;
        bottom: -2px;
        left: -1px;
        width: 3px;
        height: 3px;
        border-radius: 50%;
        background: #cbd5e1;
      }

      /* 重塑精致木条候车长椅（Slatted Wooden Bench）- 位于雨棚左开间 */
      .tp-station-bench {
        position: absolute;
        bottom: 5px;
        left: 32px;
        width: 30px;
        height: 8px;
        background: transparent;
        border: none;
        box-shadow: none;
        z-index: 3;
      }
      .tp-station-bench .bench-back {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 2.5px;
        background: #78350f;
        border-top: 0.5px solid #b45309;
        border-radius: 0.5px;
        box-shadow: 0 0.5px 1px rgba(0, 0, 0, 0.3);
      }
      .tp-station-bench .bench-seat {
        position: absolute;
        top: 3.5px;
        left: 0;
        right: 0;
        height: 2px;
        background: #92400e;
        border-top: 0.5px solid #d97706;
        border-radius: 0.5px;
        box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
      }
      .tp-station-bench .bench-leg-left,
      .tp-station-bench .bench-leg-right {
        position: absolute;
        bottom: 0;
        width: 1.5px;
        height: 4.5px;
        background: #1e293b;
      }
      .tp-station-bench .bench-leg-left { left: 2px; }
      .tp-station-bench .bench-leg-right { right: 2px; }
      .tp-station-bench .bench-shadow {
        position: absolute;
        bottom: -1.5px;
        left: 3px;
        width: 28px;
        height: 1.5px;
        background: rgba(15, 23, 42, 0.22);
        transform: skewX(8deg);
      }

      /* 点子 B：日式微型自动贩卖机（移入雨棚室内右开间：left: 92px, 宽 11px, 高 16px） */
      .tp-vending-machine {
        position: absolute;
        bottom: 5px;
        left: 92px;
        width: 11px;
        height: 16px;
        background: linear-gradient(180deg, #f8fafc 0%, #e2e8f0 75%, #cbd5e1 100%);
        border: 1px solid #94a3b8;
        border-radius: 1.5px 1.5px 0.5px 0.5px;
        box-shadow: 0.5px 1px 2px rgba(15, 23, 42, 0.25);
        z-index: 3;
      }
      /* 冠顶宝矿力蓝发光/品牌招牌带 */
      .tp-vm-header {
        position: absolute;
        top: 0.8px;
        left: 0.8px;
        right: 0.8px;
        height: 2.8px;
        background: linear-gradient(90deg, #0284c7 0%, #0ea5e9 100%);
        border-radius: 0.4px;
        border-top: 0.4px solid #7dd3fc;
      }
      /* 饮料展示冷藏橱窗（微缩四罐与选择按键） */
      .tp-vm-window {
        position: absolute;
        top: 4.5px;
        left: 0.8px;
        right: 0.8px;
        height: 5.2px;
        background: #090e17;
        border-radius: 0.4px;
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        padding: 0.6px 0.8px 0.4px;
        box-sizing: border-box;
      }
      /* 罐装饮料陈列 */
      .tp-vm-cans {
        display: flex;
        align-items: flex-end;
        justify-content: space-between;
        width: 100%;
        height: 3.2px;
      }
      .tp-vm-can {
        width: 1.3px;
        height: 3px;
        border-radius: 0.4px;
      }
      .tp-vm-can-coke { background: linear-gradient(180deg, #ef4444 0%, #dc2626 100%); }
      .tp-vm-can-tea { background: linear-gradient(180deg, #10b981 0%, #059669 100%); }
      .tp-vm-can-pocari { background: linear-gradient(180deg, #38bdf8 0%, #0284c7 100%); }
      .tp-vm-can-coffee { background: linear-gradient(180deg, #f59e0b 0%, #b45309 100%); height: 2.4px; }
      /* 选择按钮行（带微小蓝冷光点） */
      .tp-vm-buttons {
        display: flex;
        justify-content: space-between;
        width: 100%;
        height: 0.8px;
        padding: 0 0.2px;
      }
      .tp-vm-btn {
        width: 1.3px;
        height: 0.6px;
        background: #38bdf8;
        border-radius: 0.2px;
      }
      /* 中段操作面板：投币口 + 绿色 IC 卡刷卡区 */
      .tp-vm-panel {
        position: absolute;
        top: 10.5px;
        left: 0.8px;
        right: 0.8px;
        height: 2px;
        display: flex;
        align-items: center;
        justify-content: flex-end;
        gap: 1px;
        padding-right: 0.8px;
      }
      .tp-vm-ic {
        width: 2.2px;
        height: 1.2px;
        background: #22c55e;
        border-radius: 0.2px;
      }
      .tp-vm-coin {
        width: 0.6px;
        height: 1.5px;
        background: #0f172a;
        border-radius: 0.2px;
      }
      /* 下段取物仓 */
      .tp-vm-slot {
        position: absolute;
        bottom: 1px;
        left: 1.5px;
        right: 1.5px;
        height: 1.6px;
        background: #334155;
        border-radius: 0.4px;
        box-shadow: inset 0 0.5px 1px #0f172a;
      }
      /* 黑色防震微型底脚 */
      .tp-vm-feet {
        position: absolute;
        bottom: -0.8px;
        left: 0.8px;
        right: 0.8px;
        height: 0.8px;
        display: flex;
        justify-content: space-between;
      }
      .tp-vm-foot {
        width: 1.8px;
        height: 0.8px;
        background: #1e293b;
      }

      /* 紧挨自贩机的专属【空罐回收箱】(left: 106px, 宽 5px, 高 11px) */
      .tp-vm-recycle {
        position: absolute;
        bottom: 5px;
        left: 106px;
        width: 5px;
        height: 11px;
        background: linear-gradient(180deg, #f8fafc 0%, #e2e8f0 100%);
        border: 1px solid #94a3b8;
        border-radius: 1px 1px 0.5px 0.5px;
        box-shadow: 0.5px 1px 1.5px rgba(15, 23, 42, 0.2);
        z-index: 3;
      }
      /* 回收箱双投掷圆孔 */
      .tp-recycle-holes {
        position: absolute;
        top: 1.5px;
        left: 0.5px;
        right: 0.5px;
        height: 1.5px;
        display: flex;
        justify-content: space-around;
      }
      .tp-recycle-hole {
        width: 1.2px;
        height: 1.2px;
        background: #334155;
        border-radius: 50%;
      }
      .tp-recycle-mark {
        position: absolute;
        bottom: 2px;
        left: 1.2px;
        width: 2.4px;
        height: 2.4px;
        border: 0.6px solid #10b981;
        border-radius: 50%;
      }

      /* 自贩机与回收箱室内落地阴影（8deg 向右） */
      .tp-vm-shadow {
        position: absolute;
        bottom: -2.5px;
        left: 93px;
        width: 11px;
        height: 2.5px;
        background: rgba(15, 23, 42, 0.28);
        transform: skewX(8deg);
        z-index: 2;
      }
      .tp-recycle-shadow {
        position: absolute;
        bottom: -2.5px;
        left: 107px;
        width: 5px;
        height: 2.5px;
        background: rgba(15, 23, 42, 0.25);
        transform: skewX(8deg);
        z-index: 2;
      }

      /* 露天小路灯：立在露天月台端头（bottom: 5px, right: 20px），高 48px */
      .tp-station-lamp {
        position: absolute;
        bottom: 5px;
        right: 20px;
        width: 2px;
        height: 48px;
        z-index: 3;
      }
      .tp-platform-unit--day .tp-station-lamp::after {
        content: "";
        position: absolute;
        bottom: -3px;
        left: 1px;
        width: 2px;
        height: 3px;
        background: rgba(15, 23, 42, 0.28);
        transform: skewX(8deg);
      }

      /* 轨道旁矮型进路道岔信号灯 (Dwarf Shunting Signal) - 立在轨道碎石道碴上 */
      .tp-dwarf-signal {
        position: absolute;
        bottom: 0px;
        left: -18px;
        width: 6px;
        height: 9px;
        z-index: 3;
        pointer-events: none;
      }
      .tp-dwarf-signal-body {
        position: absolute;
        bottom: 0;
        left: 0;
        width: 6px;
        height: 7.5px;
        background: #0f172a;
        border: 0.8px solid #334155;
        border-radius: 1.5px 1.5px 0.5px 0.5px;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 1px;
      }
      .tp-dwarf-signal-lens {
        width: 2.2px;
        height: 2.2px;
        border-radius: 50%;
        background: #475569;
      }
      .tp-dwarf-signal-lens-sub {
        width: 1.5px;
        height: 1.5px;
        border-radius: 50%;
        background: #334155;
      }

      /* =========================================================
         夜间模式小站架构与多源光影渲染
         ========================================================= */
      .scene-ambient--night .tp-platform-face {
        background: linear-gradient(180deg, #1e293b 0%, #0f172a 100%);
      }
      .scene-ambient--night .tp-platform-deck {
        background: #334155;
        border-top: 1px solid #475569;
      }
      .scene-ambient--night .tp-platform-safety-line {
        background: #d97706;
        box-shadow: 0 0 3px rgba(217, 119, 6, 0.4);
      }
      .scene-ambient--night .tp-shelter-canopy {
        background: linear-gradient(90deg, #1e293b 0%, #0f172a 60%, #1e293b 100%);
        box-shadow: 0 1.5px 3px rgba(0, 0, 0, 0.6);
      }
      .scene-ambient--night .tp-shelter-canopy::before {
        background: #475569;
      }
      .scene-ambient--night .tp-shelter-pillar {
        background: #1e293b;
        box-shadow: 0.5px 0 0 rgba(255, 255, 255, 0.08);
      }
      .scene-ambient--night .tp-shelter-bracket {
        border-color: #334155;
      }
      .scene-ambient--night .tp-shelter-backboard {
        background: linear-gradient(180deg, #1e293b 0%, #0f172a 100%);
        border-top-color: #334155;
      }
      .scene-ambient--night .tp-station-clock {
        background: #e2e8f0;
        border-color: #0f172a;
        box-shadow: 0 0 4px rgba(226, 232, 240, 0.3);
      }

      /* 候车亭棚顶夜间暖光裸灯泡 */
      .scene-ambient--night .tp-shelter-lamp {
        background: #475569;
      }
      .scene-ambient--night .tp-shelter-lamp-bulb {
        background: #fde047;
        box-shadow: 0 0 6px 2px rgba(253, 224, 71, 0.95);
      }
      .scene-ambient--night .tp-shelter-lamp-glow {
        position: absolute;
        top: 7px;
        left: 47px;
        transform: translate(-50%, -10%);
        width: 56px;
        height: 50px;
        border-radius: 50%;
        background: radial-gradient(ellipse 70% 65% at 50% 30%, rgba(254, 215, 170, 0.42) 0%, rgba(251, 191, 36, 0.15) 50%, transparent 75%);
        pointer-events: none;
        z-index: 2;
      }

      .scene-ambient--night .tp-station-bench .bench-back {
        background: #451a03; border-top: 0.5px solid #78350f;
      }
      .scene-ambient--night .tp-station-bench .bench-seat {
        background: #451a03; border-top: 0.5px solid #78350f;
      }
      .scene-ambient--night .tp-station-bench .bench-leg-left,
      .scene-ambient--night .tp-station-bench .bench-leg-right {
        background: #0f172a;
      }

      /* 夜间室内自动贩卖机与对标现实照片的清澈冷白/幽蓝氛围光 */
      .scene-ambient--night .tp-vending-machine {
        background: #0b1120;
        border: 1px solid #1e293b;
        box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
      }
      .scene-ambient--night .tp-vm-header {
        background: #0284c7;
        border-top: none;
        box-shadow: 0 0 4px 1px rgba(56, 189, 248, 0.4);
      }
      .scene-ambient--night .tp-vm-window {
        background: #ffffff;
        box-shadow:
          0 0 6px 2px rgba(224, 242, 254, 0.95),
          0 0 14px 4px rgba(56, 189, 248, 0.45),
          0 0 24px 6px rgba(56, 189, 248, 0.2);
      }
      .scene-ambient--night .tp-vm-can-coke { background: #dc2626; }
      .scene-ambient--night .tp-vm-can-tea { background: #059669; }
      .scene-ambient--night .tp-vm-can-pocari { background: #0284c7; }
      .scene-ambient--night .tp-vm-can-coffee { background: #b45309; }
      
      .scene-ambient--night .tp-vm-btn {
        background: #0284c7;
      }
      .scene-ambient--night .tp-vm-ic {
        background: #22c55e;
        box-shadow: 0 0 3px rgba(34, 197, 94, 0.8);
      }
      .scene-ambient--night .tp-vm-coin {
        background: #020617;
      }
      .scene-ambient--night .tp-vm-slot {
        background: #0f172a;
        box-shadow: none;
      }
      .scene-ambient--night .tp-vm-foot {
        background: #020617;
      }
      .scene-ambient--night .tp-vm-recycle {
        background: #1e293b;
        border: 1px solid #334155;
        box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
      }
      .scene-ambient--night .tp-vm-recycle .tp-recycle-hole {
        background: #020617;
      }
      /* 光池：自贩机向前漫溢的清亮地面冷光池（对应室内 left: 92px） */
      .scene-ambient--night .tp-vm-ground-glow {
        position: absolute;
        bottom: 3px;
        left: 76px;
        width: 44px;
        height: 16px;
        border-radius: 50%;
        background: radial-gradient(ellipse at 50% 35%, rgba(255, 255, 255, 0.88) 0%, rgba(224, 242, 254, 0.72) 25%, rgba(56, 189, 248, 0.35) 55%, transparent 75%);
        filter: blur(2px);
        pointer-events: none;
        z-index: 2;
      }

      /* 夜间矮型道岔信号灯发光宝石透镜 */
      .scene-ambient--night .tp-dwarf-signal-lens {
        background: #c084fc;
        box-shadow: 0 0 6px 1.5px rgba(192, 132, 252, 0.95), 0 0 12px 3px rgba(168, 85, 247, 0.5);
      }
      .scene-ambient--night .tp-dwarf-signal-lens-sub {
        background: #38bdf8;
        box-shadow: 0 0 4px 1px rgba(56, 189, 248, 0.8);
      }

      /* 钢轨夜间多源微光反光 */
      .scene-ambient--night .tp-rail-tracks::before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 1px;
        background: linear-gradient(90deg,
          rgba(148, 163, 184, 0.15) 0%,
          rgba(148, 163, 184, 0.2) 40%,
          rgba(224, 242, 254, 0.45) 62%,
          rgba(56, 189, 248, 0.35) 64%,
          rgba(254, 215, 170, 0.45) 72%,
          rgba(251, 191, 36, 0.3) 74%,
          rgba(148, 163, 184, 0.15) 85%,
          transparent 100%
        );
      }

      /* 电车车头夜间探照光束 */
      .tp-train-headlight-beam {
        position: absolute;
        bottom: 1px;
        right: -42px;
        width: 45px;
        height: 12px;
        background: linear-gradient(90deg, rgba(254, 240, 138, 0.5) 0%, rgba(254, 240, 138, 0.18) 45%, transparent 100%);
        clip-path: polygon(0 40%, 100% 0, 100% 100%, 0 65%);
        filter: blur(1.5px);
        pointer-events: none;
        z-index: 1;
      }
      .tp-train-body--day .tp-train-headlight-beam {
        display: none;
      }

      /* 站台遮挡层：当电车在站台后方停靠时，遮挡后方底部的电车阴影，防止漏到底部穿模 */
      .scene-ambient--day .tp-station-precinct::before,
      .scene-ambient--night .tp-station-precinct::before {
        content: "";
        position: absolute;
        bottom: -6px;
        left: 36px;
        right: 0;
        height: 6px;
        background: linear-gradient(180deg, #9fb5c6 0%, #8ea5b7 100%);
        z-index: 0;
      }
      .scene-ambient--night .tp-station-precinct::before {
        background: linear-gradient(180deg, #0f172a 0%, #070e1a 100%);
      }

      /* 灯臂与搪瓷小灯罩 */
      .tp-lamp-head {
        position: absolute;
        top: 0;
        right: -1px;
        width: 14px;
        height: 12px;
      }

      .tp-lamp-head::before {
        content: "";
        position: absolute;
        top: 0;
        right: 1px;
        width: 11px;
        height: 7px;
        border-top: 1.5px solid #3d2b22;
        border-left: 1.5px solid #3d2b22;
        border-top-left-radius: 6px;
      }

      .tp-lamp-head::after {
        content: "";
        position: absolute;
        top: 6px;
        left: 0;
        width: 8px;
        height: 3px;
        background: #1f2d24;
        border-radius: 2px 2px 1px 1px;
      }

      /* 微型灯丝 */
      .tp-lamp-bulb {
        position: absolute;
        top: 8px;
        left: 2.5px;
        width: 3px;
        height: 3px;
        border-radius: 50%;
        background: #fef08a;
        box-shadow: 0 0 6px 2px rgba(254, 240, 138, 0.95);
      }

      /* 柔和微小暖光晕：垂直温润打在木椅与月台地面上 */
      .tp-lamp-glow {
        position: absolute;
        top: 9px;
        left: 4px;
        transform: translate(-50%, -10%);
        width: 76px;
        height: 70px;
        border-radius: 50%;
        background: radial-gradient(ellipse 70% 65% at 50% 30%, rgba(254, 215, 170, 0.42) 0%, rgba(251, 191, 36, 0.15) 45%, transparent 75%);
        animation: tp-lamp-breathe 7s ease-in-out infinite alternate;
        pointer-events: none;
      }

      @keyframes tp-lamp-breathe {
        0% { opacity: 0.75; transform: translate(-50%, -10%) scale(0.96); }
        100% { opacity: 1; transform: translate(-50%, -10%) scale(1.05); }
      }

      .tp-station-lamp--day {
        background: #64748b;
        box-shadow: 0 2px 2px rgba(15, 23, 42, 0.25);
      }
      .tp-station-lamp--day .tp-lamp-head::before {
        border-color: #64748b;
      }
      .tp-station-lamp--day .tp-lamp-head::after {
        background: #475569;
      }
      .tp-station-lamp--day .tp-lamp-bulb--day {
        background: #cbd5e1;
        box-shadow: none;
      }
      /* =========================================================
         场景 3：【乡野小站 · 驶过夜色】夏夜一闪一闪繁星小星空
         设计原则：平原铁道上方极其舒展辽阔，16 颗微小繁星错落闪耀，
                  质数周期一闪一闪呼吸微芒，绝无流星扰乱，与小站灯火共融
         ========================================================= */
      .tp-night-stars {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 52%;
        pointer-events: none;
        overflow: hidden;
      }
      .tp-night-stars .tp-star {
        position: absolute;
        border-radius: 50%;
        background: #ffffff;
        box-shadow: 0 0 3px 0.8px rgba(255, 255, 255, 0.85);
        pointer-events: none;
      }

      @keyframes tp-star-twinkle-a {
        0%, 100% { opacity: 0.22; transform: scale(0.8); }
        50% { opacity: 0.95; transform: scale(1.25); box-shadow: 0 0 5px 1.5px rgba(255, 255, 255, 0.95), 0 0 9px 2px rgba(186, 230, 253, 0.5); }
      }
      @keyframes tp-star-twinkle-b {
        0%, 100% { opacity: 0.18; transform: scale(0.75); }
        50% { opacity: 0.9; transform: scale(1.2); box-shadow: 0 0 4px 1.2px rgba(254, 240, 138, 0.9), 0 0 8px 2px rgba(234, 179, 8, 0.4); }
      }
      @keyframes tp-star-twinkle-c {
        0%, 100% { opacity: 0.28; transform: scale(0.85); }
        50% { opacity: 1; transform: scale(1.3); box-shadow: 0 0 5px 1.5px rgba(224, 242, 254, 0.95); }
      }

      .tp-s1 { top: 12%; left: 8%; width: 1.5px; height: 1.5px; animation: tp-star-twinkle-a 4.2s ease-in-out infinite alternate -1s; }
      .tp-s2 { top: 22%; left: 16%; width: 1.8px; height: 1.8px; animation: tp-star-twinkle-c 5.1s ease-in-out infinite alternate -3.2s; }
      .tp-s3 { top: 8%; left: 24%; width: 1.2px; height: 1.2px; animation: tp-star-twinkle-b 3.7s ease-in-out infinite alternate -0.8s; }
      .tp-s4 { top: 28%; left: 31%; width: 1.5px; height: 1.5px; animation: tp-star-twinkle-a 6.3s ease-in-out infinite alternate -4.5s; }
      .tp-s5 { top: 15%; left: 39%; width: 2px; height: 2px; animation: tp-star-twinkle-c 4.8s ease-in-out infinite alternate -2.1s; }
      .tp-s6 { top: 26%; left: 47%; width: 1.3px; height: 1.3px; animation: tp-star-twinkle-b 5.7s ease-in-out infinite alternate -1.4s; }
      .tp-s7 { top: 9%; left: 53%; width: 1.7px; height: 1.7px; animation: tp-star-twinkle-a 4.5s ease-in-out infinite alternate -3.8s; }
      .tp-s8 { top: 20%; left: 61%; width: 1.2px; height: 1.2px; animation: tp-star-twinkle-c 6.8s ease-in-out infinite alternate -5.2s; }
      .tp-s9 { top: 11%; left: 69%; width: 1.6px; height: 1.6px; animation: tp-star-twinkle-b 3.9s ease-in-out infinite alternate -2.6s; }
      .tp-s10 { top: 27%; left: 77%; width: 1.4px; height: 1.4px; animation: tp-star-twinkle-a 5.4s ease-in-out infinite alternate -1.7s; }
      .tp-s11 { top: 16%; left: 84%; width: 1.8px; height: 1.8px; animation: tp-star-twinkle-c 4.9s ease-in-out infinite alternate -4.1s; }
      .tp-s12 { top: 25%; left: 92%; width: 1.2px; height: 1.2px; animation: tp-star-twinkle-b 6.1s ease-in-out infinite alternate -3.5s; }
      .tp-s13 { top: 7%; left: 88%; width: 1.5px; height: 1.5px; animation: tp-star-twinkle-a 7.3s ease-in-out infinite alternate -2.9s; }
      .tp-s14 { top: 34%; left: 12%; width: 1.3px; height: 1.3px; animation: tp-star-twinkle-c 5.3s ease-in-out infinite alternate -4.7s; }
      .tp-s15 { top: 32%; left: 66%; width: 1.2px; height: 1.2px; animation: tp-star-twinkle-b 4.1s ease-in-out infinite alternate -1.2s; }
      .tp-s16 { top: 18%; left: 24%; width: 2.2px; height: 2.2px; animation: tp-star-twinkle-c 6.5s ease-in-out infinite alternate; }

      /* 【悠缓乡间小电车】（速度改回慢节奏，不疾不徐） */
      .tp-distant-train {
        position: absolute;
        bottom: calc(18% + 2px);
        left: 0;
        width: 140px;
        height: 16px;
        display: flex;
        align-items: flex-end;
        animation: tp-train-route 52s cubic-bezier(0.35, 0, 0.25, 1) infinite;
        pointer-events: none;
        z-index: 2;
      }

      .tp-train-body {
        position: relative;
        width: 100%;
        height: 100%;
        display: flex;
        align-items: flex-end;
        gap: 2px;
      }

      /* 车厢实体（俯角微视车顶与侧窗） */
      .tp-train-car {
        position: relative;
        flex: 1;
        height: 14px;
        background: linear-gradient(180deg, #1e2c44 0%, #0d1624 80%, #070d17 100%);
        border-radius: 2px 2px 1px 1px;
        display: flex;
        align-items: center;
        padding: 0 4px;
        box-shadow: 0 -1px 2px rgba(255, 255, 255, 0.1), 0 2px 5px rgba(0, 0, 0, 0.5);
      }

      /* 微型受电弓 */
      .tp-pantograph {
        position: absolute;
        top: -3px;
        left: 12px;
        width: 8px;
        height: 3px;
        border: 1px solid #64748b;
        border-bottom: none;
      }

      /* 车厢连接器 */
      .tp-train-coupler {
        width: 2px;
        height: 7px;
        background: #090e18;
      }

      /* 温暖小车窗 */
      .tp-train-windows {
        display: flex;
        gap: 3px;
        width: 100%;
      }

      .tp-train-windows i {
        display: block;
        flex: 1;
        height: 5px;
        background: #fef08a;
        box-shadow: 0 0 5px 1.5px rgba(254, 240, 138, 0.9), 0 0 8px 2px rgba(234, 179, 8, 0.4);
        border-radius: 1px;
      }

      /* 电车随行动力实体落影（紧扣铁轨，朝右前方微偏 8deg） */
      .tp-train-ground-shadow {
        position: absolute;
        bottom: -8px;
        left: 6px;
        right: 2px;
        height: 8px;
        background: linear-gradient(180deg, rgba(15, 23, 42, 0.35) 0%, rgba(15, 23, 42, 0.05) 100%);
        transform: skewX(8deg);
        border-radius: 2px;
        pointer-events: none;
        z-index: -1;
      }

      /* 电车车顶强光微澜动效 */
      @keyframes tp-train-glint {
        0% { box-shadow: inset 0 1.5px 0 rgba(255, 255, 255, 0.95), 0 3px 6px rgba(15, 23, 42, 0.35); }
        50% { box-shadow: inset 0 2px 1px rgba(255, 255, 255, 1), 0 3px 6px rgba(15, 23, 42, 0.4); }
        100% { box-shadow: inset 0 1.5px 0 rgba(255, 255, 255, 0.88), 0 3px 6px rgba(15, 23, 42, 0.35); }
      }

      /* 白天电车外观：现代简约浅银白车身 + 动态日光微澜与咬轨扎地底影 */
      .tp-train-body--day .tp-train-car {
        background: linear-gradient(180deg, #f8fafc 0%, #e2e8f0 80%, #cbd5e1 100%);
        border: 1px solid #94a3b8;
        animation: tp-train-glint 4s ease-in-out infinite alternate;
      }
      .tp-train-body--day .tp-train-windows i {
        background: #93c5fd;
        box-shadow: none;
        opacity: 0.85;
      }
      .tp-train-body--day .tp-train-coupler {
        background: #64748b;
      }

      /* 【悠缓动效】悠闲驶入 (~17秒) -> 小站安静停靠 (~8秒) -> 悠闲启程出站 (~17秒) -> 静谧等待循环 */
      @keyframes tp-train-route {
        /* 1. 自极左慢速滑行悠然进站 (耗时约 17 秒，不疾不徐) */
        0% { transform: translateX(-200px); opacity: 0; }
        3% { opacity: 0.95; }
        32% { transform: translateX(calc(58vw + 40px)); opacity: 0.95; }

        /* 2. 在小站平稳停靠！(安静停靠整整约 8 秒，上下客的温暖静谧时光) */
        33%, 48% { transform: translateX(calc(58vw + 40px)); opacity: 0.95; }

        /* 3. 缓缓起步出站，以悠缓车速驶向右方远方 (耗时约 17 秒) */
        49% { transform: translateX(calc(58vw + 44px)); opacity: 0.95; }
        80% { transform: translateX(calc(100vw + 240px)); opacity: 0.95; }

        /* 4. 隐入远方夜色，静谧等待下一趟列车 */
        81%, 100% { transform: translateX(calc(100vw + 240px)); opacity: 0; }
      }

      /* =========================================================
         场景 4：【萤火之森 · 秘境微光 / 夏木绿荫】(forest-fireflies)
         白天：夏木绿荫 · 木漏日 (Komorebi)、丁达尔晨光柱、轻灵落叶与林间微风
         夜晚：幽深林境 · 秘境纵深、多层冷杉暮色、林梢微露月星、7 颗灵动萤火虫翩跹漫舞
         ========================================================= */
      /* 白天：夏日清凉林荫天空 */
      .ff-day-sky {
        position: absolute;
        inset: 0;
        background:
          radial-gradient(ellipse 90% 55% at 50% 25%, rgba(255, 255, 250, 0.75) 0%, transparent 80%),
          linear-gradient(180deg, #eaf6f0 0%, #d8eee1 40%, #e6f6ee 72%, #c9ebd8 100%);
      }

      /* 白昼丁达尔晨光束 (Tyndall Morning Sunbeams) */
      .ff-day-sunbeams {
        position: absolute;
        top: -10%;
        left: -10%;
        width: 120%;
        height: 100%;
        pointer-events: none;
        overflow: hidden;
      }
      .ff-sunbeam {
        position: absolute;
        top: 0;
        height: 120%;
        transform-origin: top center;
        background: linear-gradient(145deg, rgba(255, 255, 245, 0.28) 0%, rgba(255, 255, 255, 0.08) 45%, transparent 75%);
        filter: blur(18px);
        animation: ff-beam-breathe 14s ease-in-out infinite alternate;
      }
      .ff-beam-1 { left: 18%; width: 14vw; transform: rotate(-22deg); animation-delay: 0s; }
      .ff-beam-2 { left: 45%; width: 18vw; transform: rotate(-24deg); animation-delay: -5s; opacity: 0.85; }
      .ff-beam-3 { left: 72%; width: 12vw; transform: rotate(-20deg); animation-delay: -9s; opacity: 0.7; }

      @keyframes ff-beam-breathe {
        0% { opacity: 0.45; transform: rotate(-22deg) scaleX(0.95); }
        50% { opacity: 0.85; transform: rotate(-24deg) scaleX(1.05); }
        100% { opacity: 0.55; transform: rotate(-21deg) scaleX(0.98); }
      }

      /* 白昼夏木绿荫树冠剪影框景 (Delicate summer leafy canopy framing) */
      .ff-day-canopy {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        pointer-events: none;
      }
      .ff-canopy-far {
        opacity: 0.35;
      }
      .ff-canopy-branch-left {
        transform-origin: top left;
        animation: ff-branch-sway-left 18s ease-in-out infinite alternate;
      }
      .ff-canopy-branch-right {
        transform-origin: top right;
        animation: ff-branch-sway-right 22s ease-in-out infinite alternate;
      }
      @keyframes ff-branch-sway-left {
        0% { transform: rotate(0deg) scale(1); }
        100% { transform: rotate(1.2deg) scale(1.015); }
      }
      @keyframes ff-branch-sway-right {
        0% { transform: rotate(0deg) scale(1); }
        100% { transform: rotate(-1.4deg) scale(1.012); }
      }

      /* 白昼木漏日 (Komorebi)：林荫缝隙倾洒的斑驳流动光晕 */
      .ff-day-komorebi {
        position: absolute;
        inset: 0;
        background:
          radial-gradient(circle at 22% 34%, rgba(255, 255, 255, 0.48) 0%, transparent 18%),
          radial-gradient(circle at 72% 42%, rgba(255, 255, 255, 0.42) 0%, transparent 22%),
          radial-gradient(circle at 48% 68%, rgba(255, 255, 255, 0.35) 0%, transparent 24%),
          radial-gradient(circle at 35% 82%, rgba(255, 255, 255, 0.28) 0%, transparent 16%);
        filter: blur(15px);
        animation: ff-komorebi-flow 20s ease-in-out infinite alternate;
        pointer-events: none;
      }
      @keyframes ff-komorebi-flow {
        0% { transform: scale(0.96) translate(0, 0); opacity: 0.55; }
        50% { transform: scale(1.04) translate(1.5vw, -1vh); opacity: 0.9; }
        100% { transform: scale(0.98) translate(-1vw, 1.5vh); opacity: 0.65; }
      }

      /* 随清风翻飞旋转的夏叶 (Tumbling breeze leaves) */
      .ff-drifting-leaf {
        position: absolute;
        width: 8px;
        height: 14px;
        background: radial-gradient(circle at 40% 40%, #7ec69b 0%, #529671 100%);
        border-radius: 60% 0 60% 0;
        box-shadow: 0 1px 3px rgba(60, 120, 85, 0.18);
        pointer-events: none;
      }
      .ff-leaf-1 { top: -6%; left: 24%; animation: ff-leaf-fall-1 26s ease-in-out infinite; }
      .ff-leaf-2 { top: -6%; left: 68%; animation: ff-leaf-fall-2 32s ease-in-out infinite -12s; }
      .ff-leaf-3 { top: -6%; left: 82%; animation: ff-leaf-fall-3 29s ease-in-out infinite -18s; }

      @keyframes ff-leaf-fall-1 {
        0% { transform: translate(0, 0) rotate(0deg) rotateY(0deg); opacity: 0; }
        8% { opacity: 0.75; }
        50% { transform: translate(45px, 50vh) rotate(190deg) rotateY(180deg); }
        90% { opacity: 0.7; }
        100% { transform: translate(90px, 105vh) rotate(380deg) rotateY(360deg); opacity: 0; }
      }
      @keyframes ff-leaf-fall-2 {
        0% { transform: translate(0, 0) rotate(0deg) rotateX(0deg); opacity: 0; }
        8% { opacity: 0.7; }
        50% { transform: translate(-55px, 52vh) rotate(-180deg) rotateX(160deg); }
        90% { opacity: 0.65; }
        100% { transform: translate(-95px, 105vh) rotate(-360deg) rotateX(320deg); opacity: 0; }
      }
      @keyframes ff-leaf-fall-3 {
        0% { transform: translate(0, 0) rotate(30deg); opacity: 0; }
        10% { opacity: 0.65; }
        60% { transform: translate(-40px, 60vh) rotate(220deg); }
        90% { opacity: 0.6; }
        100% { transform: translate(-70px, 105vh) rotate(420deg); opacity: 0; }
      }

      /* 白昼林间轻灵浮尘/微光孢子 (Sunlit forest motes) */
      .ff-day-motes {
        position: absolute;
        inset: 0;
        pointer-events: none;
      }
      .ff-mote {
        position: absolute;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.85);
        box-shadow: 0 0 6px rgba(255, 255, 255, 0.9);
        animation: ff-mote-drift 18s ease-in-out infinite;
      }
      .ff-mote-1 { width: 2.5px; height: 2.5px; top: 45%; left: 32%; animation-duration: 22s; }
      .ff-mote-2 { width: 3px; height: 3px; top: 62%; left: 52%; animation-duration: 19s; animation-delay: -6s; }
      .ff-mote-3 { width: 2px; height: 2px; top: 35%; left: 70%; animation-duration: 25s; animation-delay: -11s; }
      .ff-mote-4 { width: 2.2px; height: 2.2px; top: 75%; left: 25%; animation-duration: 20s; animation-delay: -15s; }
      @keyframes ff-mote-drift {
        0%, 100% { transform: translate(0, 0); opacity: 0.2; }
        50% { transform: translate(25px, -35px); opacity: 0.85; }
      }

      /* ==================== 夜晚：深幽古森与萤火漫舞 ==================== */
      .ff-night-sky {
        position: absolute;
        inset: 0;
        background:
          radial-gradient(ellipse 85% 65% at 50% 35%, rgba(8, 28, 36, 0.65) 0%, transparent 80%),
          linear-gradient(180deg, #02070d 0%, #03111a 35%, #061e2a 68%, #020810 100%);
      }

      /* 夜空树隙间幽微星芒 */
      .ff-night-stars {
        position: absolute;
        inset: 0;
        pointer-events: none;
      }
      .ff-star {
        position: absolute;
        border-radius: 50%;
        background: #e2f4ff;
        box-shadow: 0 0 5px rgba(226, 244, 255, 0.8);
        animation: ff-star-twinkle 6s ease-in-out infinite alternate;
      }
      .ff-star-1 { width: 1.8px; height: 1.8px; top: 12%; left: 32%; animation-delay: 0s; }
      .ff-star-2 { width: 1.5px; height: 1.5px; top: 18%; left: 68%; animation-delay: -2.5s; }
      .ff-star-3 { width: 2px; height: 2px; top: 25%; left: 20%; animation-delay: -4s; }
      @keyframes ff-star-twinkle {
        0% { opacity: 0.3; transform: scale(0.85); }
        100% { opacity: 0.95; transform: scale(1.2); }
      }

      /* 幽深林间月光斜射 (Subtle Moonbeams) */
      .ff-night-moonbeams {
        position: absolute;
        inset: 0;
        pointer-events: none;
      }
      .ff-moonbeam {
        position: absolute;
        top: 0;
        height: 95%;
        background: linear-gradient(145deg, rgba(167, 243, 208, 0.05) 0%, rgba(56, 189, 248, 0.02) 40%, transparent 70%);
        filter: blur(22px);
        transform-origin: top center;
        animation: ff-mbeam-glow 16s ease-in-out infinite alternate;
      }
      .ff-mbeam-1 { left: 22%; width: 22vw; transform: rotate(-24deg); }
      .ff-mbeam-2 { left: 62%; width: 18vw; transform: rotate(-20deg); animation-delay: -8s; }
      @keyframes ff-mbeam-glow {
        0% { opacity: 0.4; }
        100% { opacity: 0.85; }
      }

      /* 林间空地的幽微极光微澜 */
      .ff-aurora-breath {
        position: absolute;
        top: 25%;
        left: 18%;
        width: 64vw;
        height: 50vh;
        border-radius: 50%;
        filter: blur(95px);
        background: radial-gradient(circle, rgba(16, 185, 129, 0.15) 0%, rgba(56, 189, 248, 0.08) 45%, transparent 75%);
        animation: ff-aurora-glow 24s ease-in-out infinite alternate;
        pointer-events: none;
      }
      @keyframes ff-aurora-glow {
        0% { transform: scale(0.92) translate(0, 0); opacity: 0.45; }
        100% { transform: scale(1.12) translate(2vw, -2vh); opacity: 0.9; }
      }

      /* 幽林多重纵深与优雅树冠枝影 (Multi-layered forest depth SVG) */
      .ff-night-forest-depth {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        pointer-events: none;
      }
      .ff-night-branch-left {
        transform-origin: top left;
        animation: ff-branch-sway-left 20s ease-in-out infinite alternate;
      }
      .ff-night-branch-right {
        transform-origin: top right;
        animation: ff-branch-sway-right 24s ease-in-out infinite alternate;
      }

      /* 7 颗灵动呼吸慢舞的萤火虫 (7 Organic, Living Fireflies) */
      .ff-fireflies {
        position: absolute;
        inset: 0;
        pointer-events: none;
      }
      .ff-firefly {
        position: absolute;
        border-radius: 50%;
        background: #bef264;
        box-shadow: 0 0 7px 2px rgba(190, 242, 100, 0.95), 0 0 16px 4px rgba(132, 204, 22, 0.45);
        animation-iteration-count: infinite;
        animation-timing-function: ease-in-out;
      }
      .ff-firefly-1 { width: 3.4px; height: 3.4px; top: 38%; left: 22%; animation: ff-float-1 18s infinite; }
      .ff-firefly-2 { width: 2.8px; height: 2.8px; top: 66%; left: 74%; background: #fef08a; box-shadow: 0 0 7px 2px rgba(254, 240, 138, 0.95), 0 0 15px 4px rgba(250, 204, 21, 0.45); animation: ff-float-2 22s infinite -6s; }
      .ff-firefly-3 { width: 2.2px; height: 2.2px; top: 76%; left: 40%; animation: ff-float-3 15s infinite -3s; }
      .ff-firefly-4 { width: 2.6px; height: 2.6px; top: 26%; left: 62%; animation: ff-float-4 25s infinite -11s; }
      .ff-firefly-5 { width: 3.2px; height: 3.2px; top: 52%; left: 82%; background: #fef08a; box-shadow: 0 0 7px 2px rgba(254, 240, 138, 0.95), 0 0 15px 4px rgba(250, 204, 21, 0.45); animation: ff-float-5 20s infinite -8s; }
      .ff-firefly-6 { width: 2.0px; height: 2.0px; top: 46%; left: 15%; filter: blur(0.6px); opacity: 0.7; animation: ff-float-6 28s infinite -14s; }
      .ff-firefly-7 { width: 3.6px; height: 3.6px; top: 80%; left: 54%; background: #d9f99d; box-shadow: 0 0 9px 3px rgba(217, 249, 157, 0.95), 0 0 18px 5px rgba(163, 230, 53, 0.4); animation: ff-float-7 19s infinite -4s; }

      @keyframes ff-float-1 {
        0%, 100% { transform: translate(0, 0) scale(0.8); opacity: 0.3; }
        25% { transform: translate(32px, -42px) scale(1.2); opacity: 0.95; }
        50% { transform: translate(-20px, -62px) scale(0.85); opacity: 0.35; }
        75% { transform: translate(42px, -22px) scale(1.15); opacity: 0.85; }
      }
      @keyframes ff-float-2 {
        0%, 100% { transform: translate(0, 0) scale(0.7); opacity: 0.25; }
        30% { transform: translate(-38px, 32px) scale(1.2); opacity: 0.95; }
        60% { transform: translate(22px, -48px) scale(0.8); opacity: 0.3; }
        85% { transform: translate(-20px, -20px) scale(1.15); opacity: 0.85; }
      }
      @keyframes ff-float-3 {
        0%, 100% { transform: translate(0, 0) scale(0.9); opacity: 0.4; }
        40% { transform: translate(48px, -38px) scale(1.25); opacity: 1; }
        70% { transform: translate(20px, 22px) scale(0.7); opacity: 0.25; }
      }
      @keyframes ff-float-4 {
        0%, 100% { transform: translate(0, 0) scale(0.75); opacity: 0.25; }
        35% { transform: translate(-42px, -48px) scale(1.2); opacity: 0.95; }
        70% { transform: translate(28px, -22px) scale(0.7); opacity: 0.3; }
      }
      @keyframes ff-float-5 {
        0%, 100% { transform: translate(0, 0) scale(0.8); opacity: 0.2; }
        50% { transform: translate(-50px, -36px) scale(1.25); opacity: 1; }
        80% { transform: translate(-14px, 20px) scale(0.85); opacity: 0.35; }
      }
      @keyframes ff-float-6 {
        0%, 100% { transform: translate(0, 0) scale(0.75); opacity: 0.2; }
        45% { transform: translate(30px, 35px) scale(1.1); opacity: 0.75; }
        80% { transform: translate(-25px, -15px) scale(0.7); opacity: 0.25; }
      }
      @keyframes ff-float-7 {
        0%, 100% { transform: translate(0, 0) scale(0.85); opacity: 0.3; }
        35% { transform: translate(-35px, -30px) scale(1.3); opacity: 0.95; }
        75% { transform: translate(25px, -50px) scale(0.8); opacity: 0.4; }
      }


      /* 湖畔夜景沿用的视觉基底类名 */
      /* 夜晚：真实深邃蓝调 (Twilight Blue Hour) */
      .v1-sm-night-sky {
        position: absolute;
        inset: 0;
        background:
          radial-gradient(ellipse 90% 50% at 50% 66%, rgba(26, 68, 118, 0.45) 0%, rgba(16, 42, 78, 0.3) 45%, transparent 75%),
          linear-gradient(180deg, #040915 0%, #08152e 32%, #0e2448 54%, #183765 65%, #0d1e38 68%, #050b18 100%);
      }

      /* 山脊背后的微弱落日余温（暖铜/柔杏色，极其微弱克制） */
      .v1-sm-night-dusk-glow {
        position: absolute;
        bottom: 29%;
        left: -10%;
        width: 120%;
        height: 14%;
        background: radial-gradient(ellipse 65% 50% at 42% 50%, rgba(234, 138, 100, 0.22), rgba(180, 85, 90, 0.1) 45%, transparent 75%);
        filter: blur(20px);
        pointer-events: none;
        animation: v1-sm-dusk-glow-pulse 16s ease-in-out infinite alternate;
      }

      @keyframes v1-sm-dusk-glow-pulse {
        0% { opacity: 0.55; transform: scaleY(0.92); }
        100% { opacity: 0.85; transform: scaleY(1.08); }
      }

      .v1-sm-night-mountains {
        position: absolute;
        bottom: 28%;
        left: 0;
        width: 100%;
        height: 130px;
        pointer-events: none;
      }

      .v1-sm-night-city-clusters {
        position: absolute;
        bottom: 31%;
        left: 0;
        width: 100%;
        height: 20px;
        pointer-events: none;
      }

      .v1-sm-cluster-left {
        position: absolute;
        left: 18%;
        bottom: 2px;
        display: flex;
        gap: 14px;
        align-items: flex-end;
      }
      .v1-sm-cluster-mid {
        position: absolute;
        left: 48%;
        bottom: 6px;
      }
      .v1-sm-cluster-right {
        position: absolute;
        right: 16%;
        bottom: 4px;
        display: flex;
        gap: 24px;
        align-items: flex-end;
      }

      .v1-sm-light {
        display: inline-block;
        border-radius: 50%;
        background: #fed7aa;
        box-shadow: 0 0 5px 1.5px rgba(254, 215, 170, 0.9), 0 0 12px 3px rgba(249, 115, 22, 0.5);
      }
      .v1-sm-light.v1-l1 { width: 3px; height: 3px; animation: v1-sm-twinkle 4s ease-in-out infinite alternate; }
      .v1-sm-light.v1-l2 { width: 4px; height: 4px; background: #fef08a; box-shadow: 0 0 6px 2px rgba(254, 240, 138, 0.95), 0 0 14px 4px rgba(234, 179, 8, 0.45); animation: v1-sm-twinkle 6s ease-in-out infinite alternate -2s; }
      .v1-sm-light.v1-l3 { width: 2.5px; height: 2.5px; animation: v1-sm-twinkle 5s ease-in-out infinite alternate -3.5s; }
      .v1-sm-light.v1-l4 { width: 3.5px; height: 3.5px; background: #ffedd5; animation: v1-sm-twinkle 7s ease-in-out infinite alternate -1s; }
      .v1-sm-light.v1-l5 { width: 3px; height: 3px; background: #fed7aa; animation: v1-sm-twinkle 8s ease-in-out infinite alternate -4s; }
      .v1-sm-light.v1-l6 { width: 3.5px; height: 3.5px; background: #fef08a; animation: v1-sm-twinkle 5.5s ease-in-out infinite alternate -2.5s; }
      .v1-sm-light.v1-l7 { width: 2.5px; height: 2.5px; animation: v1-sm-twinkle 6.5s ease-in-out infinite alternate -5s; }

      @keyframes v1-sm-twinkle {
        0% { opacity: 0.45; transform: scale(0.85); }
        50% { opacity: 1; transform: scale(1.15); }
        100% { opacity: 0.6; transform: scale(0.9); }
      }


html[data-scene-motion="paused"] .confirmed-ambient *,
html[data-scene-motion="paused"] .confirmed-ambient *::before,
html[data-scene-motion="paused"] .confirmed-ambient *::after {
  animation-play-state: paused !important;
}
@media (prefers-reduced-motion: reduce) {
  .confirmed-ambient *, .confirmed-ambient *::before, .confirmed-ambient *::after { animation: none !important; }
}
