/* ============================================================
   travel-sunny.css — 行迹 · 天空蓝 × 日落橙 阳光化覆盖层
   保留旋转画廊 / 堆叠卡 / 漂移墙结构；粉色主色降级为情绪点缀
   依据：DESIGN-SYSTEM.md（Travel = 天空蓝 + 橙 / 自由 / 记忆）
   ============================================================ */
:root{
  --bg:#FAF6EF; --bg-2:#F1E9D7;
  --surface:rgba(255,255,255,.72); --surface-2:rgba(255,255,255,.9);
  --ink:#2F2922; --ink-soft:rgba(47,41,34,.8); --ink-faint:rgba(47,41,34,.68);
  --accent:#E8784A; --accent-2:#3D7FB5; --accent-ink:#FFFDF7;
  --line:rgba(47,41,34,.13); --line-strong:rgba(47,41,34,.25);
}
body{background:var(--bg);color:var(--ink)}
.vignette{display:block;background:radial-gradient(120% 90% at 50% 30%,transparent 62%,rgba(47,41,34,.10) 100%)}
.grain{opacity:.08;mix-blend-mode:soft-light}
/* 背景：天空光晕 + 海风颗粒 */
.tv-bg{background:
  radial-gradient(90% 70% at 50% 8%,rgba(121,207,255,.55),transparent 62%),
  radial-gradient(70% 60% at 82% 88%,rgba(255,190,140,.45),transparent 60%),
  radial-gradient(60% 60% at 12% 78%,rgba(140,205,255,.35),transparent 58%),
  var(--bg)}
.tv-glow-a{background:radial-gradient(circle at 40% 40%,rgba(121,207,255,.5),transparent 66%)}
.tv-glow-b{background:radial-gradient(circle at 50% 50%,rgba(255,190,140,.5),transparent 66%)}
.tv-glow-c{background:radial-gradient(circle at 50% 50%,rgba(140,205,255,.45),transparent 66%)}
.tv-ring{border:1px solid rgba(47,41,34,.12)}
.tv-ring-b{border-color:rgba(255,138,92,.16)}
.tv-particles{background-image:
  radial-gradient(1.4px 1.4px at 20% 30%,rgba(46,143,216,.45),transparent 50%),
  radial-gradient(1.2px 1.2px at 70% 18%,rgba(255,138,92,.4),transparent 50%),
  radial-gradient(1.6px 1.6px at 84% 64%,rgba(46,143,216,.4),transparent 50%),
  radial-gradient(1px 1px at 38% 82%,rgba(47,41,34,.35),transparent 50%),
  radial-gradient(1.4px 1.4px at 55% 46%,rgba(255,138,92,.36),transparent 50%),
  radial-gradient(1.1px 1.1px at 12% 62%,rgba(47,41,34,.3),transparent 50%);
  background-repeat:repeat;background-size:440px 440px;opacity:.4}
/* 旋转画廊舞台：天空 × 橙霞 */
.gallery-hero{background:
  radial-gradient(72% 64% at 50% 42%,rgba(121,207,255,.55),rgba(224,244,255,.3) 74%),
  radial-gradient(60% 60% at 82% 88%,rgba(255,190,140,.4),transparent 60%),
  radial-gradient(50% 50% at 12% 78%,rgba(121,207,255,.4),transparent 58%),
  var(--bg)}
.gallery-grid{background-image:radial-gradient(rgba(47,41,34,.16) 1px,transparent 1px)}
.gallery__shade{background:
  radial-gradient(120% 90% at 50% 30%,transparent 46%,rgba(46,143,216,.10) 100%),
  linear-gradient(180deg,rgba(255,255,255,.25) 0%,transparent 22%,transparent 64%,rgba(47,41,34,.07) 100%)}
.gallery-title .card__kicker{color:var(--accent-2)}
.gallery-title__name{color:var(--ink);text-shadow:0 2px 0 rgba(255,255,255,.9),0 6px 26px rgba(255,255,255,.7)}
.gallery-title__desc{color:var(--ink-soft);text-shadow:0 1px 0 rgba(255,255,255,.9),0 2px 12px rgba(255,255,255,.65)}
.stage__hud .hud__meta{text-shadow:0 1px 0 rgba(255,255,255,.85)}
.stage__hud .hud__cur{text-shadow:0 1px 0 rgba(255,255,255,.85)}
/* 3D 卡片 */
.card{background:var(--bg-2);box-shadow:0 40px 90px -40px rgba(47,41,34,.24),inset 0 0 0 1px rgba(47,41,34,.12)}
.card::after{border:1px solid rgba(47,41,34,.1)}
.card__skyline{background:linear-gradient(180deg,transparent,rgba(47,41,34,.42))}
.card__shade{background:
  linear-gradient(180deg,rgba(47,41,34,.12) 0%,rgba(47,41,34,.02) 36%,rgba(47,41,34,.72) 100%),
  radial-gradient(120% 80% at 50% 0%,rgba(255,190,140,.18),transparent 60%)}
.card__kicker{color:var(--accent)}
.card__name{color:#FFFFFF}
.card__desc{color:rgba(255,255,255,.9)}
.card--content{background:
  radial-gradient(90% 80% at 0% 0%,rgba(61,127,181,.16),transparent 60%),
  radial-gradient(80% 80% at 100% 100%,rgba(232,120,74,.16),transparent 55%),
  linear-gradient(150deg,#FBF6EC,#F1E8D3)}
.card--content .card__shade{background:linear-gradient(180deg,rgba(47,41,34,.08),rgba(47,41,34,.02) 40%,rgba(47,41,34,.5) 100%)}
.card--content .card__name{color:#FFFFFF}
.card--content .card__desc{color:rgba(255,255,255,.92)}
.card__shot{border:1px solid rgba(47,41,34,.16);box-shadow:0 28px 70px -28px rgba(47,41,34,.24),inset 0 0 0 1px rgba(47,41,34,.06)}
.card__stats .stat::before{background:var(--accent)}
.card__stats .stat__num{color:var(--accent-2)}
.dl-chip{background:rgba(255,255,255,.55)}
.dl-chip:hover{background:rgba(46,143,216,.12)}
/* Outro / 关于 / 下载 */
.outro__head .card__kicker{color:var(--accent-2)}
.outro__title{color:var(--ink)}
.outro__lead{color:var(--ink-soft)}
.outro-card{
  background:
    radial-gradient(120% 90% at 100% 0%,rgba(255,255,255,.6),transparent 52%),
    radial-gradient(96% 84% at 0% 100%,rgba(61,127,181,.2),transparent 58%),
    linear-gradient(140deg,#FBF7EE,#F0E8D4 55%,#E7DBC2);
}
.outro-card--download{
  background:
    radial-gradient(120% 90% at 100% 0%,rgba(255,255,255,.6),transparent 52%),
    radial-gradient(96% 84% at 0% 100%,rgba(255,190,140,.3),transparent 58%),
    linear-gradient(140deg,#FFF7EE,#FFEAD6 55%,#FFD9B3);
}
.mock--login,.mock--window{background:rgba(255,255,255,.82)}
/* 特性堆叠卡 */
.tfeatures .section__title{color:var(--ink)}
.tfeatures .lede{color:var(--ink-soft)}
.scard{background:rgba(255,255,255,.92);box-shadow:0 46px 96px -54px rgba(47,41,34,.34),0 8px 22px -16px rgba(47,41,34,.2),inset 0 1px 0 rgba(255,255,255,.75)}
.scard__num{color:var(--accent)}
.scard__tag{color:var(--accent)}
.scard__title{color:var(--ink)}
.scard__text{color:var(--ink-soft)}
.scard__chips span{color:var(--accent-2);border:1px solid color-mix(in srgb,var(--accent-2) 32%,transparent);background:color-mix(in srgb,var(--accent-2) 7%,transparent)}
.scard__media{background:var(--bg-2);border:1px solid var(--line)}
.scard__media--ghost{background:radial-gradient(70% 70% at 70% 30%,color-mix(in srgb,var(--accent) 16%,transparent),transparent 70%),var(--bg-2)}
.scard__media--ghost span{color:color-mix(in srgb,var(--accent) 45%,transparent)}
/* 城市足迹胶片带 */
.cityfilm-wrap{background:var(--bg-2)}
.ccard figcaption{color:var(--ink-faint)}
.ccard img{border:1px solid var(--line-strong);box-shadow:0 24px 52px -30px rgba(47,41,34,.4)}
/* 漂移墙 */
.driftband__desc{color:var(--ink-soft)}
.driftband__stage{background:linear-gradient(180deg,transparent,rgba(47,41,34,.18) 12%,rgba(47,41,34,.18) 88%,transparent)}
.drift-wall{filter:saturate(1.04)}
/* 页脚统一品牌壳 */
.footer{background:var(--bg-2)}
.travel-footer-brand{
  margin-top:clamp(28px,4vh,44px);
  display:flex;flex-wrap:wrap;gap:1.2rem 2.2rem;align-items:center;
  color:var(--ink-soft);font-size:.9rem;
}
.travel-footer-brand b{font-family:var(--font-display);font-size:1.05rem;color:var(--ink);letter-spacing:.08em}
.travel-footer-brand a{transition:color .25s}
.travel-footer-brand a:hover{color:var(--accent-2)}
.travel-footer-brand .sep{opacity:.4}
/* 下载弹窗：天空 x 橙 */
.dl-modal__backdrop{background:rgba(47,41,34,.28)}
.dl-modal__panel{background:linear-gradient(180deg,#FFFFFF 0%,#F6F1E6 100%)}
.dl-modal__close{background:rgba(47,41,34,.06);color:var(--ink-soft)}
.dl-modal__close:hover{background:rgba(46,143,216,.16);color:var(--ink)}
.dl-modal__kicker{color:var(--accent-2)}
.dl-modal__version{background:rgba(255,255,255,.75);border:1px solid rgba(46,143,216,.3);color:var(--accent-2)}
.dl-modal__dl{background:linear-gradient(135deg,#2E8FD8 0%,#FF8A5C 100%);color:#fff}
.dl-modal__steps .dl-modal__step-num{background:rgba(46,143,216,.14);color:var(--accent-2)}
.dl-modal__copy{background:rgba(46,143,216,.1);color:var(--accent-2)}
.dl-modal__copy:hover{background:rgba(46,143,216,.2)}
/* 漂移墙：深蓝夜晚 + 橙色点亮（氛围保持，色调换蓝紫） */
.drift-wall__inner{background:#0A1626}
.drift-wall__glow{background:linear-gradient(90deg,#2E8FD8,transparent)}
/* Your World 足迹 */
.worldband{position:relative;z-index:2;padding:clamp(64px,11vh,130px) 0 clamp(40px,6vh,72px)}
.worldband__head{max-width:720px;margin-bottom:clamp(36px,6vh,56px)}
.worldband__head .section__label{color:var(--accent)}
.worldband__desc{margin-top:1.1rem;font-family:var(--font-serif);color:var(--ink-soft);font-size:clamp(1rem,1.5vw,1.16rem);line-height:1.8;max-width:52ch}
.worldband__body{display:grid;grid-template-columns:1.5fr 1fr;gap:clamp(28px,4vw,56px);align-items:center}
.worldmap{position:relative;border-radius:28px;border:1px solid var(--line);background:rgba(255,255,255,.7);box-shadow:0 40px 90px -50px rgba(47,41,34,.28);min-height:300px;overflow:hidden}
.worldmap::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(60% 60% at 80% 12%,rgba(121,207,255,.3),transparent 60%),radial-gradient(46% 52% at 12% 88%,rgba(255,190,140,.24),transparent 60%)}
.worldmap__svg{position:absolute;inset:0;width:100%;height:100%}
.wdot{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:flex-start;font-family:var(--font-serif);font-weight:600;color:var(--ink);z-index:2}
.wdot i{width:11px;height:11px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px rgba(255,138,92,.22),0 6px 14px -4px rgba(47,41,34,.4);margin-bottom:4px;animation:wdotPulse 3.2s ease-in-out infinite}
.wdot em{font:400 .62rem/1 var(--font-mono);font-style:normal;color:var(--ink-faint);letter-spacing:.06em}
.wdot:nth-child(2n) i{animation-delay:-1.4s}
.wdot:nth-child(3n) i{animation-delay:-2.2s}
.worldmap__svg path{animation:dashFlow 12s linear infinite}
@keyframes wdotPulse{0%,100%{transform:scale(1);box-shadow:0 0 0 5px rgba(232,120,74,.22),0 6px 14px -4px rgba(47,41,34,.4)}50%{transform:scale(1.2);box-shadow:0 0 0 11px rgba(232,120,74,.1),0 6px 18px -4px rgba(47,41,34,.55)}}
@keyframes dashFlow{to{stroke-dashoffset:-100}}
.worldband__stats{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.wstat{border-radius:20px;padding:24px 22px;border:1px solid var(--line);background:rgba(255,255,255,.8)}
.wstat b{display:block;font:600 1.8rem/1 var(--font-display);color:var(--accent-2);letter-spacing:-.01em}
.wstat span{display:block;margin-top:8px;font:400 .72rem/1 var(--font-mono);letter-spacing:.12em;color:var(--ink-faint);text-transform:uppercase}
/* Travel Stories 城市故事 */
.tstories{position:relative;z-index:2;padding:clamp(48px,7vh,84px) 0 clamp(64px,10vh,120px)}
.tstories__head{max-width:720px;margin-bottom:clamp(34px,5vh,52px)}
.tstories__head .section__label{color:var(--accent)}
.tstories__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.scard-story{border-radius:26px;overflow:hidden;border:1px solid var(--line);background:rgba(255,255,255,.88);box-shadow:0 36px 80px -46px rgba(47,41,34,.3);transition:transform .45s cubic-bezier(.16,1,.3,1),box-shadow .45s}
.scard-story:hover{transform:translateY(-6px);box-shadow:0 44px 90px -44px rgba(47,41,34,.36)}
.sshot{aspect-ratio:4/3;overflow:hidden}
.sshot img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .9s cubic-bezier(.16,1,.3,1)}
.scard-story:hover .sshot img{transform:scale(1.06)}
.scopy{padding:22px 22px 26px}
.smeta{font:400 .66rem/1.4 var(--font-mono);letter-spacing:.14em;color:#B06A43}
.scopy h3{margin:10px 0 10px;font:600 1.3rem/1.35 var(--font-display);letter-spacing:-.01em;color:var(--ink)}
.scopy p{margin:0;color:var(--ink-soft);font-size:.93rem;line-height:1.85}
/* Memories 记忆档案（Editorial / Film Strip） */
.memories{position:relative;z-index:2;padding:clamp(48px,7vh,84px) 0 clamp(80px,12vh,150px)}
.memories__head{max-width:720px;margin-bottom:clamp(36px,5vh,56px)}
.memories__head .section__label{color:var(--accent)}
.memories__desc{margin-top:1.1rem;font-family:var(--font-serif);color:var(--ink-soft);font-size:clamp(1rem,1.5vw,1.16rem);line-height:1.8;max-width:52ch}
.filmstrip{display:grid;grid-template-columns:repeat(6,minmax(150px,1fr));gap:14px;overflow-x:auto;padding-bottom:16px;scroll-snap-type:x mandatory;scrollbar-width:thin;scrollbar-color:rgba(232,120,74,.4) transparent;counter-reset:frame}
.fstrip{position:relative;margin:0;scroll-snap-align:start;border-radius:14px;overflow:hidden;background:#241c15;padding:20px 12px 14px;box-shadow:0 24px 54px -32px rgba(47,41,34,.55);transform:rotate(-1.2deg);counter-increment:frame}
.fstrip:nth-child(2n){transform:rotate(1.5deg)}
.fstrip:nth-child(3n){transform:rotate(-.8deg)}
.fstrip img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block;border-radius:6px;filter:sepia(.14) saturate(1.06) contrast(1.03)}
.fstrip--wide img{aspect-ratio:4/3}
.fstrip::before,.fstrip::after{content:"";position:absolute;left:13px;right:13px;height:9px;z-index:3;pointer-events:none;background:repeating-linear-gradient(90deg,rgba(244,236,221,.9) 0 6px,transparent 6px 14px);border-radius:2px}
.fstrip::before{top:6px}
.fstrip::after{bottom:6px}
.fstrip figcaption{padding:10px 4px 6px}
.fstrip figcaption b{display:block;font:600 .92rem/1.4 var(--font-sans);color:#F4ECDD}
.fstrip figcaption span{font:400 .62rem/1.4 var(--font-mono);letter-spacing:.1em;color:rgba(244,236,221,.62)}
.fstrip figcaption::after{content:"NO." counter(frame,decimal-leading-zero);float:right;font:600 .56rem/1.2 var(--font-mono);letter-spacing:.08em;color:rgba(244,236,221,.5);margin-top:2px}
@media (max-width:1024px){
  .worldband__body{grid-template-columns:1fr}
  .tstories__grid{grid-template-columns:1fr 1fr}
}
@media (max-width:700px){
  .tstories__grid{grid-template-columns:1fr}
  .worldband__stats{grid-template-columns:1fr 1fr}
  .filmstrip{grid-template-columns:repeat(6,minmax(132px,62vw))}
}
/* 非 WebGL 降级画廊（页面永不空白） */
.gallery-fallback{position:absolute;inset:0;z-index:1;pointer-events:none}
.gallery-fallback__card{position:absolute;inset:6% 10% 8%;margin:0;border-radius:24px;overflow:hidden;
  border:1px solid rgba(47,41,34,.16);box-shadow:0 40px 90px -40px rgba(47,41,34,.5);
  opacity:0;transform:scale(.92) translateY(14px);transition:opacity .6s cubic-bezier(.16,1,.3,1),transform .6s cubic-bezier(.16,1,.3,1)}
.gallery-fallback__card.is-on{opacity:1;transform:none}
.gallery-fallback__card img{width:100%;height:100%;object-fit:cover;display:block}
.gallery-fallback__card figcaption{position:absolute;left:24px;bottom:20px;max-width:70%;pointer-events:none}
.gallery-fallback__card b{display:block;font:600 clamp(1.6rem,3.4vw,2.6rem)/1.1 var(--font-display);letter-spacing:-.02em;color:#fff;text-shadow:0 2px 14px rgba(10,25,40,.5)}
.gallery-fallback__card figcaption span{display:block;margin-top:.45rem;font:400 .68rem/1.5 var(--font-mono);letter-spacing:.1em;color:rgba(255,255,255,.92);text-shadow:0 1px 8px rgba(10,25,40,.5)}
@media (max-width:700px){
  .gallery-fallback__card{inset:12% 4% 10%}
  .gallery-fallback__card figcaption{left:16px;bottom:14px;max-width:84%}
}
/* 锚点滚动偏移（固定导航） */
[id]{scroll-margin-top:84px}

/* ============================================================
   2026-09-05 修复与增强层（P0/P1 + 动效）
   ============================================================ */
/* --- 1. hero 文字玻璃衬底：任何画廊卡片经过都保证可读 --- */
.gallery-title{
  max-width:min(34em,86vw);
  padding:22px 26px;
  border-radius:22px;
  background:linear-gradient(100deg,rgba(253,251,246,.92) 0%,rgba(253,251,246,.78) 62%,rgba(253,251,246,0) 100%);
  backdrop-filter:blur(8px) saturate(1.2);
  -webkit-backdrop-filter:blur(8px) saturate(1.2);
  box-shadow:0 18px 50px -28px rgba(47,41,34,.35);
}
.gallery-title__name{text-shadow:none}
.gallery-title__desc{text-shadow:none;color:#4A4038}
.stage__hud .hud__inner{
  padding:12px 22px;border-radius:18px;
  background:linear-gradient(180deg,rgba(253,251,246,0) 0%,rgba(253,251,246,.88) 34%,rgba(253,251,246,.95) 100%);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
}
.stage__hud .hud__meta,.stage__hud .hud__cur{text-shadow:none}
.stage__hud .hud__desc{color:#4A4038}
/* --- 2. mock 内下载芯片防竖排 --- */
.mock .dl-chip{flex-wrap:nowrap;white-space:nowrap}
.mock .dl-chip span,.mock .dl-chip small{white-space:nowrap}
.mock .dl-chip span{font-size:.92rem}
.mock .dl-chip small{font-size:.64rem}
.shot-pane--desktop .mock__body{display:flex;flex-direction:column;align-items:stretch;gap:10px}
.shot-pane--desktop .dl-chip{justify-content:center}
/* --- 3. 城市故事说明文字对比度 --- */
.scopy p{color:#4A4038}
.smeta{color:#B06A43}
/* --- 4. 移动端 hero 衬底加强 --- */
@media (max-width:760px){
  .gallery-title{
    max-width:none;left:16px;right:16px;
    padding:18px 18px;
    background:linear-gradient(180deg,rgba(253,251,246,.95) 0%,rgba(253,251,246,.88) 100%);
  }
  .gallery-title__desc{font-size:.9rem;line-height:1.75}
  .stage__hud .hud__inner{padding:10px 14px;background:rgba(253,251,246,.94)}
  .hud__desc{display:none}
  .mock .dl-chip{padding:.6rem .7rem}
  .mock .dl-chip span{font-size:.8rem}
  .shot-pane--desktop .mock__status{font-size:.6rem}
}

/* --- 品牌更名与 logo 集成（2026-09-05 晚） --- */
.brand__logo{width:34px;height:34px;border-radius:9px;display:block;box-shadow:0 6px 16px -6px rgba(224,122,79,.45);transition:transform .45s var(--ease, ease)}
.nav__brand:hover .brand__logo{transform:rotate(-8deg) scale(1.06)}
/* --- 滚动进度条 + 回到顶部 --- */
.scroll-progress{position:fixed;top:0;left:0;height:3px;width:0;z-index:200;background:linear-gradient(90deg,#79CFFF,#FFB380,#E86A4A);border-radius:0 3px 3px 0;pointer-events:none;transition:width .12s linear}
.to-top{position:fixed;right:24px;bottom:24px;z-index:90;width:46px;height:46px;border-radius:50%;border:1px solid rgba(47,41,34,.16);background:rgba(253,251,246,.9);backdrop-filter:blur(10px);box-shadow:0 14px 30px -14px rgba(47,41,34,.35);display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transform:translateY(14px);pointer-events:none;transition:opacity .35s,transform .35s cubic-bezier(.16,1,.3,1)}
.to-top.is-on{opacity:1;transform:none;pointer-events:auto}
.to-top:hover{transform:translateY(-3px)}
.to-top svg{width:17px;height:17px;color:#2F2922}
@media (prefers-reduced-motion:reduce){.scroll-progress{transition:none}.nav__brand:hover .brand__logo{transform:none}}

/* ============================================================
   品牌色延伸（暖色统一）：日落橙 × 天空蓝，废弃紫/深蓝/珊瑚
   ============================================================ */
:root{
  --tu-sun:#F28B55;
  --tu-amber:#E9B06A;
  --tu-ember:#E4613F;
  --tu-sky:#3D7FB5;
  --tu-grad:linear-gradient(120deg,var(--tu-sun) 0%,var(--tu-amber) 55%,var(--tu-ember) 100%);
}
/* 登录/主按钮 → 日落橙渐变 */
.btn--solid{
  background:var(--tu-grad);
  color:#FFF9F2;
  box-shadow:0 14px 34px -16px rgba(196,99,58,.55);
}
.btn--solid:hover{
  background:var(--tu-grad);
  box-shadow:0 20px 44px -18px rgba(196,99,58,.65);
}
/* HUD 圆点激活态 → 日落橙发光 */
.hud__dot.is-on{
  background:var(--tu-grad);
  box-shadow:0 0 0 3px rgba(242,139,85,.22),0 0 12px rgba(242,139,85,.5);
  transform:scale(1.15);
  transition:background .3s,transform .3s,box-shadow .3s;
}
/* hero 标签文字 → 日落渐变文字 */
.gallery-title .card__kicker,.outro__head .card__kicker{
  background:var(--tu-grad);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
/* 滚动进度条 → 日落三色 */
.scroll-progress{background:linear-gradient(90deg,var(--tu-sun),var(--tu-amber) 55%,var(--tu-ember))}
/* 回到顶部 hover 呼应日落橙 */
.to-top:hover{border-color:rgba(242,139,85,.6);color:var(--tu-ember)}
@media (prefers-reduced-motion:reduce){.hud__dot.is-on{transform:none}}

/* --- 环形进度回顶 + 拖拽状态 + HUD 滑入（2026-09-05 晚） --- */
.to-top{width:52px;height:52px;position:relative}
.to-top .ring-svg{position:absolute;inset:0;transform:rotate(-90deg)}
.to-top .ring-svg circle{fill:none;stroke-width:3}
.to-top .ring-bg{stroke:rgba(47,41,34,.14)}
.to-top .ring-fg{stroke:var(--tu-ember);stroke-linecap:round;stroke-dasharray:138.2;stroke-dashoffset:138.2}
.to-top svg.arr{width:15px;height:15px;position:relative}
/* 画廊拖拽 */
#galleryTrack{touch-action:pan-y}
#galleryTrack.is-dragging{user-select:none;-webkit-user-select:none;cursor:grabbing}
#galleryTrack.is-dragging .gallery__canvas{pointer-events:none}
/* HUD 城市名滑入 */
.hud__meta.hud-swap .hud__name{animation:hudSwap .34s cubic-bezier(.16,1,.3,1)}
.hud__meta.hud-swap .hud__desc{animation:hudSwap .4s cubic-bezier(.16,1,.3,1)}
@keyframes hudSwap{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){
  .hud__meta.hud-swap .hud__name,.hud__meta.hud-swap .hud__desc{animation:none}
  #galleryTrack{touch-action:auto}
}

/* --- A2：大号城市名浮层（2026-09-06 画廊优化；2026-10 序号语义修复） ---
   修复说明：<i id="cityIdx"> 的内容由 travel-gallery.js 每帧写成「05 / 07」这类
   计数器文本，但下面这条规则把它当成一根装饰性渐变下划线来排版
   （height:3px + width:58px），导致文字被压在 3px 高的条里、四周溢出，
   观感上像一处渲染错误。序号本身是有信息量的，因此按「计数器」而非
   「装饰条」重新排版：去掉固定高度，改为可读的等宽小字 + 品牌色分隔符，
   让「大号城市名 + 序号」形成一组完整的视觉锚点。 */
.stage__cityname{
  position:absolute;left:50%;bottom:118px;transform:translateX(-50%);z-index:2;
  text-align:center;pointer-events:none;
  padding:16px 40px 14px;border-radius:22px;
  background:linear-gradient(180deg,rgba(253,251,246,0) 0%,rgba(253,251,246,.82) 40%,rgba(253,251,246,.92) 100%);
  opacity:0;transition:opacity .45s var(--ease, ease);
}
.stage__cityname.is-on{opacity:1}
.stage__cityname b{display:block;font:900 clamp(1.9rem,4vw,3.4rem)/1.12 var(--font-serif, serif);letter-spacing:.04em;color:#2F2922}
.stage__cityname i{
  display:block;margin:8px auto 0;
  font:600 .72rem/1 var(--font-mono, monospace);
  font-style:normal;letter-spacing:.28em;
  color:var(--accent-2,#3D7FB5);
}
.stage__cityname.swap b{animation:hudSwap .4s cubic-bezier(.16,1,.3,1)}
@media (max-width:760px){
  .stage__cityname{bottom:104px;padding:12px 26px 10px}
  .stage__cityname b{font-size:1.7rem}
}

/* --- 主张句 Hero 标题（两行，略缩字号，保住品牌气质与可读性） --- */
.gallery-title__name{
  font-size:clamp(2.1rem,5.2vw,4.2rem);
  line-height:1.08;
  letter-spacing:-.02em;
}


/* ============================================================
   可读性修正（依据 .tmp-shots/contrast-audit.cjs 实测）
   ------------------------------------------------------------
   .section__label / .footer__back / .eyebrow 为小字号单色橙文字，
   原用 --accent(#E8784A)，在暖白/暖黄底上实测 2.41–2.7:1（AA 需 4.5:1）。
   统一改用 --c-travel-600(#C4633A)，保持同一色相、仅加深明度。
   ============================================================ */
.section__label,
.footer__back,
.eyebrow { color:var(--c-travel-700,#A84E2C); }

/* 足迹地图城市标签：白字压在照片上，补一层柔和暗底保证可读 */
.wdot { text-shadow:0 1px 3px rgba(20,16,12,.55); }


/* ============================================================
   对比度收口（第三批，依据 contrast-audit.cjs 实测）
   ============================================================ */
/* 品牌副标与页脚回链：与 section__label 同批处理，统一深一阶橙 */
.brand__sub { color:var(--c-travel-700,#A84E2C); }
/* 跳转链接：白字压橙底仅 2.86:1，改为深墨底 + 暖白字（保留可见性） */
.skip-link { background:#2F2922; color:#FFFDF7; }
/* 城市胶片带图注：--ink-faint 之外再补一档，确保在暖黄底上达 AA */
.cityfilm figcaption { color:rgba(47,41,34,.68); }
/* 下载弹窗「APK 直装」等橙色标签 */
.dl-modal__dl-meta, .dl-modal__kicker { color:#FFFDF7; }
.dl-modal__kicker { color:var(--c-travel-700,#A84E2C); }


/* ============================================================
   对比度收口（第四批）
   既有实现用 .worldband__head .section__label 这类后代选择器（特异性 0,2,0）
   指定 --accent(#E8784A)，实测 2.7:1 低于 AA(4.5:1)。这里以同级特异性
   显式对齐，颜色统一取 --c-travel-600(#C4633A)：同一色相、仅加深明度，
   视觉上仍是「日落橙」，但小字号文本可读。
   ============================================================ */
.worldband__head .section__label,
.tstories__head .section__label,
.memories__head .section__label,
.tfeatures .section__label,
.cityfilm-wrap .section__label,
.outro .section__label,
.driftband .section__label {
  color: var(--c-travel-700, #A84E2C);
}
.nav__brand .brand__sub { color: var(--c-travel-700, #A84E2C); }
.footer .footer__back { color: var(--c-travel-700, #A84E2C); }
/* 下载卡与功能卡里的小号橙色标签 */
.tfeatures .card__kicker,
.cityfilm-wrap .card__kicker,
.outro .card__kicker { color: var(--c-travel-700, #A84E2C); }

/* ============================================================
   小号文本对比度收口
   ------------------------------------------------------------
   依据 .tmp-shots/ca-cluster.cjs 在 1440px 的实测（背景取半透明层合成后的颜色，
   比旧审计更严）。三类小号文本未达 WCAG AA 4.5:1：

     构件                   原色        实测     改为        实测
     .scard__chips span     #3D7FB5    3.98:1   #3773A4    5.06:1
     .scard__tag            #E8784A    2.70:1   --c-travel-700(#A84E2C)  5.14:1
     .smeta                 #B06A43    3.91:1   #9E5F3C    5.05:1

   色值均为「沿同一色相压暗到刚好达标」的结果，不改变品牌色相。
   放在本文件末尾：travel-sunny.css 最后加载，同级特异性下可稳定覆盖
   travel.css 与 travel-sunny.css 中更靠前的同名规则。
   ============================================================ */
:root{
  /* 卡片功能区标签用的浅蓝：压暗后 #3773A4（浅底 5.06:1） */
  --accent-2:#3773A4;
}
.scard__tag{color:var(--c-travel-700)}
.smeta{color:#9E5F3C}
