@import "https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700;900&family=ZCOOL+XiaoWei&display=swap";

:root {
  --ink: #1a1f1a;
  --ink-soft: #6b6352;
  --paper: #f5f0e4;
  --paper-deep: #e8dcc8;
  --paper-light: #faf6ee;
  --bronze: #2d4a3e;
  --bronze-deep: #1a3328;
  --bronze-dark: #0f1f18;
  --jade: #6b8f82;
  --cinnabar: #8b2e22;
  --cinnabar-light: #a84030;
  --gold: #b8963e;
  --gold-light: #d4b86a;
  --gold-pale: #f0e4c8;
  --gold-glow: #f5d98a;
  --paper-texture:
    radial-gradient(circle at 18% 22%, #b8963e14 0 1px, transparent 1.5px),
    radial-gradient(circle at 72% 68%, #2d4a3e0b 0 1px, transparent 1.5px),
    repeating-linear-gradient(0deg, #78644607 0 1px, transparent 1px 4px);
  --line: #a08c6438;
  --line-strong: #78644659;
  --font-serif: "Noto Serif SC", "Songti SC", "SimSun", serif;
  --font-display: "ZCOOL XiaoWei", "Noto Serif SC", "STKaiti", "KaiTi", serif;
  --sidebar-w: 112px;
  --topbar-h: 68px;
  --radius: 10px;
  --radius-sm: 6px;
  --radius-lg: 14px;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; font-synthesis: none; overflow-x: clip; }
body {
  background: var(--paper);
  min-width: 320px;
  color: var(--ink);
  font-family: var(--font-serif);
  overflow-x: clip;
}
button, input, select, textarea { font: inherit; }
button { cursor: pointer; background: none; border: none; }
a { color: inherit; text-decoration: none; }
img { display: block; }
button:focus-visible, input:focus-visible, select:focus-visible, a:focus-visible, textarea:focus-visible {
  outline: 2px solid var(--gold); outline-offset: 2px;
}
::selection { background: rgba(139, 46, 34, .18); }

/* 图片占位 */
.seal-fallback {
  width: 100%; height: 100%;
  display: grid; place-items: center;
  background: linear-gradient(135deg, #e8dcc8, #f0e4c8);
}
.seal-fallback-inner {
  width: 46px; height: 46px; border-radius: 50%;
  background: var(--cinnabar); color: #fff5dd;
  display: grid; place-items: center;
  font: bold 19px var(--font-display);
  border: 1px solid var(--gold-light);
  box-shadow: 0 4px 12px #8b2e224d;
}

/* 轮播条 */
.slide-overlay {
  position: absolute; left: 0; right: 0; bottom: 0;
  background: linear-gradient(transparent, rgba(15, 31, 24, .85));
  color: #fff5dd; padding: 30px 14px 12px;
  display: flex; flex-direction: column;
}
.slide-item:hover { border-color: var(--gold-light); box-shadow: 0 8px 24px #0000001f; }
.slide-item img, .slide-item .seal-fallback { transition: transform .4s; }
.slide-item:hover img, .slide-item:hover .seal-fallback { transform: scale(1.05); }

/* ============ 滚动条 ============ */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--paper); }
::-webkit-scrollbar-thumb { background: #a08c6466; border-radius: 5px; border: 2px solid var(--paper); }
::-webkit-scrollbar-thumb:hover { background: var(--bronze); }

/* ============ 布局骨架 ============ */
.app-shell { display: flex; min-height: 100vh; }

/* ============ 侧边栏 ============ */
.sidebar {
  background: linear-gradient(180deg, var(--bronze-dark) 0%, var(--bronze-deep) 50%, var(--bronze) 100%);
  z-index: 100;
  overscroll-behavior: contain;
  flex-direction: column;
  align-items: center;
  width: var(--sidebar-w);
  min-height: 100vh;
  padding: 20px 0 16px;
  display: flex;
  position: fixed;
  top: 0; bottom: 0; left: 0;
  overflow-y: auto;
  box-shadow: 3px 0 24px #0000002e;
}
.sidebar-logo { text-align: center; margin-bottom: 8px; }
.sidebar-logo-text { font: 15px var(--font-display); color: #fff5dd; letter-spacing: .06em; margin-bottom: 2px; display: block; }
.logo-icon {
  background: var(--cinnabar); color: #fff5dd;
  width: 30px; height: 30px;
  font: bold 13px var(--font-display);
  vertical-align: middle;
  border: 1px solid #fff5dd33; border-radius: 50%;
  place-items: center; margin-left: 2px; display: inline-grid;
  box-shadow: 0 2px 6px #8b2e2266;
}
.sidebar-nav { flex-direction: column; flex: 1; gap: 2px; width: 100%; padding: 8px 8px 0; display: flex; }
.sidebar-nav button {
  color: #fff5dd66; letter-spacing: .02em; border-radius: 8px;
  flex-direction: column; align-items: center; gap: 3px;
  width: 100%; padding: 12px 4px 10px;
  font-size: 10px;
  transition: all .25s; display: flex; position: relative;
}
.sidebar-nav button:hover { color: #fff5ddbf; background: #ffffff0d; }
.sidebar-nav button.active { color: #fff5dd; background: #ffffff14; }
.sidebar-nav button.active:before {
  content: ""; background: var(--gold-light);
  border-radius: 0 2px 2px 0;
  width: 3px; height: 20px;
  position: absolute; top: 50%; left: 0;
  transform: translateY(-50%);
}
.nav-icon { font-size: 18px; line-height: 1; display: inline-flex; align-items: center; justify-content: center; }
.nav-svg { width: 20px; height: 20px; display: block; color: #fff5dd; opacity: .82; transition: color .2s, opacity .2s; }
.sidebar-nav button:hover .nav-svg { opacity: 1; }
.sidebar-nav button.active .nav-svg { color: var(--gold-light); opacity: 1; }
.nav-label { white-space: nowrap; font-size: 10px; }
.nav-sublabel { color: #fff5dd4d; white-space: nowrap; font-size: 8px; line-height: 1.2; }
.sidebar-nav button.active .nav-sublabel { color: #fff5dd80; }
.sidebar-bottom { text-align: center; padding: 12px 8px 8px; }
.sidebar-bottom-text {
  color: #fff5dd4d; letter-spacing: .12em;
  writing-mode: vertical-rl; font-size: 9px; line-height: 1.8;
  display: inline-block;
}
.sidebar-bottom-seal { color: var(--gold-light); font: 18px var(--font-display); opacity: .65; margin-top: 10px; display: block; }

/* ============ 主区域 ============ */
.main-wrapper {
  margin-left: var(--sidebar-w);
  background: var(--paper-texture), var(--paper);
  flex: 1; min-width: 0; min-height: 100vh;
  position: relative;
}

/* ============ 顶栏 ============ */
.topbar {
  height: var(--topbar-h);
  background: var(--paper);
  border-bottom: 1px solid var(--line);
  z-index: 50;
  justify-content: space-between; align-items: center;
  padding: 0 32px;
  display: flex;
  position: sticky; top: 0;
  overflow: visible;
  background: rgba(245, 240, 228, .92);
  backdrop-filter: blur(8px);
}
.topbar-left { align-items: center; gap: 12px; display: flex; cursor: pointer; user-select: none; transition: opacity .2s; }
.topbar-left:hover { opacity: .82; }
.topbar-left:focus-visible { outline: 2px solid var(--gold); outline-offset: 4px; border-radius: 4px; }
.site-title { font: 28px var(--font-display); color: var(--bronze-deep); letter-spacing: .1em; white-space: nowrap; }
.site-seal {
  background: var(--cinnabar); color: #fff5dd;
  width: 38px; height: 38px;
  font: bold 14px var(--font-display);
  border: 2px solid var(--gold-light); border-radius: 50%;
  place-items: center; display: inline-grid;
  box-shadow: 0 2px 6px #8b2e224d;
  position: relative; overflow: hidden;
}
.site-seal::after {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0; bottom: 0;
  background: linear-gradient(105deg, transparent 33%, rgba(255, 245, 221, .38) 45%, transparent 58%);
  transform: translate(-145%) rotate(14deg);
  animation: sealGlint 3.2s ease-in-out infinite;
}
.topbar-nav, .site-utility-nav { align-items: center; gap: 28px; display: flex; }
.topbar-nav button {
  color: var(--ink-soft); letter-spacing: .06em;
  padding: 6px 2px; font-size: 13px;
  transition: color .2s;
  position: relative;
}
.topbar-nav button:hover { color: var(--bronze-deep); }
.topbar-nav button.active { color: var(--cinnabar); font-weight: 600; }
.topbar-nav button.active:after {
  content: ""; background: var(--cinnabar);
  width: 100%; height: 2px;
  position: absolute; bottom: 0; left: 0;
}
.topbar-right { align-items: center; gap: 16px; display: flex; }
.topbar-search {
  border: 1px solid var(--line); border-radius: 20px;
  background: #fff9;
  align-items: center; gap: 6px;
  padding: 6px 14px; display: flex;
  transition: border-color .2s, box-shadow .2s;
  position: relative;
}
.topbar-search:focus-within { border-color: var(--gold); box-shadow: 0 0 0 3px #b8963e22; }
.topbar-search input { border: none; background: none; outline: none; width: 160px; font-size: 12px; color: var(--ink); }
.topbar-search .search-icon { color: var(--ink-soft); opacity: .8; transition: color .2s, transform .2s; flex-shrink: 0; }
.topbar-search:hover .search-icon { color: var(--gold); }
.topbar-search:focus-within .search-icon { color: var(--cinnabar); transform: scale(1.08); }
.topbar-search input::placeholder { color: var(--ink-soft); opacity: .6; }
/* 搜索下拉 */
.search-dropdown {
  position: absolute; top: calc(100% + 8px); left: 0;
  width: 360px; max-height: 420px; overflow-y: auto;
  background: var(--paper-light); border: 1px solid var(--line);
  border-radius: 12px; box-shadow: 0 14px 40px #182f3726;
  z-index: 200; padding: 8px;
}
.sd-loading, .sd-empty { padding: 18px; text-align: center; color: var(--ink-soft); font-size: 12px; }
.sd-group { padding: 4px 0; }
.sd-group + .sd-group { border-top: 1px dashed var(--line); margin-top: 4px; padding-top: 8px; }
.sd-group-title { font: 10px var(--font-display); letter-spacing: .1em; color: var(--cinnabar); padding: 0 10px 6px; }
.sd-item {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 10px; border-radius: 8px; cursor: pointer;
  transition: background .15s;
}
.sd-item:hover { background: #2d4a3e0d; }
.sd-icon { flex: 0 0 auto; font-size: 16px; }
.sd-body { flex: 1; min-width: 0; }
.sd-body b { display: block; font-size: 13px; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sd-body small { display: block; font-size: 11px; color: var(--ink-soft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
html[data-theme="dark"] .search-dropdown { background: #12140f; border-color: var(--line-strong); }
html[data-theme="dark"] .sd-item:hover { background: #2d4a3e30; }
html[data-theme="dark"] .sd-body b { color: #fff5dd; }
@media (max-width: 760px) {
  .search-dropdown { width: calc(100vw - 32px); left: auto; right: 0; }
}
.admin-entry {
  color: var(--gold); font-size: 12px;
  border: 1px solid var(--gold-light);
  border-radius: 4px;
  padding: 5px 12px;
  transition: all .2s;
}
.admin-entry:hover { background: var(--gold); color: #fff5dd; }

/* ============ 区块标题 ============ */
.section-header { justify-content: space-between; align-items: center; margin: 32px 32px 0; display: flex; }
.section-header-left { align-items: center; gap: 12px; display: flex; }
.section-header h2 { font: 26px var(--font-display); color: var(--bronze-deep); letter-spacing: .06em; }
.section-header .seal-icon {
  background: var(--cinnabar); color: #fff5dd; border-radius: 50%;
  place-items: center; width: 28px; height: 28px; font-size: 12px; font-weight: 700;
  display: inline-grid;
}
.section-header .more-link { color: var(--cinnabar); cursor: pointer; letter-spacing: .02em; font-size: 12px; font-weight: 600; }
.section-header .more-link:hover { text-decoration: underline; }

/* ============ 升级版国风印章区块标题图标 ============ */
.section-header .section-icon {
  position: relative;
  display: inline-grid;
  place-items: center;
  flex-shrink: 0;
  width: 38px; height: 38px;
  border-radius: 50%;
  background:
    radial-gradient(circle at 32% 28%, rgba(255, 245, 221, .22), transparent 52%),
    linear-gradient(140deg, var(--cinnabar) 0%, var(--cinnabar-light) 55%, #6f2019 100%);
  border: 1.5px solid var(--gold-light);
  box-shadow:
    0 4px 10px rgba(139, 46, 34, .28),
    inset 0 1px 0 rgba(255, 245, 221, .18),
    inset 0 -1.5px 0 rgba(0, 0, 0, .22);
  color: #fff5dd;
}
.section-header .section-icon::before {
  content: ''; position: absolute; inset: 2.5px;
  border-radius: 50%; border: 1px dashed rgba(255, 245, 221, .22);
  pointer-events: none;
}
.section-header .section-icon svg {
  width: 22px; height: 22px; display: block;
  filter: drop-shadow(0 1px 0 rgba(0, 0, 0, .18));
}
.section-header .section-icon:hover {
  transform: translateY(-1px);
  box-shadow:
    0 6px 14px rgba(139, 46, 34, .34),
    inset 0 1px 0 rgba(255, 245, 221, .2),
    inset 0 -1.5px 0 rgba(0, 0, 0, .22);
}
.section-header .section-icon-archive { background:
    radial-gradient(circle at 32% 28%, rgba(255, 245, 221, .22), transparent 52%),
    linear-gradient(140deg, #1a3328 0%, var(--bronze) 55%, #0f1f18 100%); }

/* ============ Hero 横幅 ============ */
.hero-banner {
  border-radius: var(--radius-lg);
  background: var(--paper-light);
  border: 1px solid #b8963e8c;
  height: 440px;
  margin: 24px 32px 0;
  position: relative;
  overflow: hidden;
  box-shadow: 0 16px 36px #2d4a3e1f;
}
.hero-bg {
  background:
    var(--asset-hero, none) center / cover no-repeat,
    linear-gradient(90deg,
      #faf6eef5 0%, #faf6eef0 24%, #faf6ee7a 34%,
      #faf6ee00 38%, #faf6ee00 66%, #faf6ee4a 78%, #faf6ee94 100%);
  opacity: .88;
  filter: saturate(.78) brightness(.96) contrast(.94);
  position: absolute; inset: 0;
}
.hero-bg:after {
  content: ""; background:
    linear-gradient(90deg, #faf6eec7 0%, #faf6ee70 34%, transparent 60%, #8b2e2210 100%),
    var(--paper-texture);
  mix-blend-mode: multiply;
  position: absolute; inset: 0;
  clip-path: polygon(0 0, 34% 0, 34% 100%, 0 100%);
}
.hero-content {
  z-index: 2; height: 100%;
  color: var(--bronze-deep);
  flex-direction: column; justify-content: center;
  min-width: 270px; max-width: 44%;
  padding: 0 48px;
  display: flex; position: relative;
}
.hero-content::before {
  content: "";
  background:
    radial-gradient(ellipse at left center, #faf6eef5 0%, #faf6eec7 55%, #faf6ee00 92%),
    linear-gradient(90deg, #faf6eef0 0%, #faf6eec8 42%, transparent 78%);
  pointer-events: none;
  position: absolute;
  inset: -28px 0 -28px -48px;
  z-index: -1;
  filter: blur(8px);
  opacity: .92;
}
.hero-title-row { align-items: center; gap: 16px; margin-bottom: 8px; display: flex; }
.hero-title-row h1 {
  font: 38px var(--font-display); letter-spacing: .12em;
  color: var(--bronze-deep); text-shadow: 0 2px #ffffffb3;
}
@keyframes sealPulse {
  0%, 100% { box-shadow: 0 3px 12px #8b2e2280; transform: scale(1); }
  50% { box-shadow: 0 3px 20px #8b2e22b3; transform: scale(1.04); }
}
.hero-subtitle { letter-spacing: .28em; color: var(--bronze-deep); margin-bottom: 20px; font-size: 18px; }
.hero-desc p { color: var(--ink-soft); letter-spacing: .08em; font-size: 15px; line-height: 1.8; white-space: pre-line; }
.hero-tagline { margin-bottom: 4px; font-weight: 600; color: var(--cinnabar) !important; white-space: pre-line; }
.hero-desc-sub { margin-top: 8px; color: var(--ink-soft) !important; font-size: 13px !important; white-space: pre-line; }
.hero-explore-btn {
  background: var(--bronze-deep); color: #fff5dd;
  border-radius: var(--radius-sm); letter-spacing: .06em;
  cursor: pointer; border: 1px solid #fff5dd26;
  align-items: center; gap: 6px;
  margin-top: 24px; padding: 10px 20px;
  font-size: 13px; font-weight: 600;
  white-space: nowrap;
  align-self: flex-start;
  transition: all .2s; display: inline-flex;
}
.hero-explore-btn:hover { background: var(--bronze); border-color: var(--gold-light); transform: translateY(-2px); box-shadow: 0 8px 20px #2d4a3e33; }
/* Hero 首页探索按钮：加长显大气 */
.hero-explore-btn--lg {
  padding: 13px 42px;
  font-size: 15px;
  gap: 9px;
  letter-spacing: .1em;
  border-radius: 8px;
  border-width: 1.5px;
  margin-top: 28px;
}

/* Hero 统计 */
.hero-stats { display: flex; gap: 0; margin-top: 26px; }
.hero-stat {
  padding: 0 22px;
  border-left: 1px solid var(--line-strong);
  position: relative;
}
.hero-stat:first-child { border-left: none; padding-left: 0; }
.hero-stat-value { font: 26px var(--font-display); color: var(--cinnabar); letter-spacing: .03em; }
.hero-stat-label { font-size: 11px; color: var(--ink-soft); letter-spacing: .12em; margin-top: 2px; }

/* Hero 右侧装饰山水 */
.hero-deco {
  position: absolute; right: 0; top: 0; bottom: 0;
  width: 56%;
  display: flex; align-items: center; justify-content: center;
  pointer-events: none;
}
.hero-deco svg { width: 100%; height: 100%; opacity: .5; }
.hero-deco-caption {
  position: absolute; bottom: 26px; right: 24px;
  color: var(--bronze-deep); letter-spacing: .2em;
  font: 12px var(--font-display);
  background: rgba(245, 240, 228, .7);
  padding: 6px 14px; border-radius: 4px;
  border: 1px solid var(--gold-light);
}

/* ============ 游记档案页 ============ */
.posts-archive-hero { margin: 16px 32px 0; min-height: 190px; padding: 30px 38px 26px; position: relative; overflow: hidden; color: #fff5dd; background: linear-gradient(120deg, #8b2e22 0%, #a84030 48%, #b77a55 100%); border: 1px solid #d4b86a99; border-radius: var(--radius-lg); box-shadow: 0 18px 36px #8b2e2230; }
.posts-archive-seal { display: none !important; }
.posts-archive-hero::before { content: ""; position: absolute; width: 360px; height: 360px; right: 8%; top: -185px; border: 1px solid #fff5dd42; border-radius: 50%; box-shadow: 0 0 0 28px #fff5dd0e, 0 0 0 56px #fff5dd09; }
.posts-archive-copy { position: relative; z-index: 1; }
.posts-kicker { color: #fff5ddb8; font-size: 10px; letter-spacing: .2em; }
.posts-archive-copy h1 { margin: 13px 0 7px; font: 36px var(--font-display); letter-spacing: .12em; }
.posts-archive-copy p { color: #fff5ddc7; font-size: 13px; letter-spacing: .08em; }
.posts-archive-seal { position: absolute; top: 28px; right: 38%; z-index: 1; width: 48px; height: 48px; display: grid; place-items: center; color: #fff5dd; border: 1px solid #fff5dda8; border-radius: 50%; font: 21px var(--font-display); transform: rotate(9deg); }
.posts-archive-stats { position: absolute; right: 38px; bottom: 26px; z-index: 1; display: flex; gap: 26px; }
.posts-archive-stats div { min-width: 68px; padding-left: 18px; border-left: 1px solid #fff5dd66; text-align: center; }
.posts-archive-stats b { display: block; color: #fff5dd; font: 23px var(--font-display); }
.posts-archive-stats span { color: #fff5ddad; font-size: 10px; letter-spacing: .1em; }
.posts-control-panel { margin: 22px 32px 0; padding: 18px 20px 16px; background: #fffdf7cc; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 8px 24px #2d4a3e0d; }
.posts-control-head, .posts-control-row, .posts-search-row { display: flex; align-items: center; gap: 12px; }
.posts-control-head { justify-content: space-between; margin-bottom: 14px; }
.posts-control-label { display: block; color: var(--cinnabar); font-size: 10px; letter-spacing: .16em; }
.posts-control-head strong { display: block; margin-top: 4px; color: var(--bronze-deep); font: 19px var(--font-display); }
.posts-result-count { color: var(--ink-soft); font-size: 11px; }
.posts-control-row { justify-content: space-between; }
.posts-category-control { display: flex; flex-wrap: wrap; overflow: visible; gap: 3px; flex: 1; }
.posts-category-control button { flex: 0 0 auto; }
.posts-order-control { flex: 0 0 auto; display: flex; align-items: stretch; border: 1px solid var(--line); border-radius: 5px; overflow: hidden; background: #fffaf0; }
.posts-order-label { display: flex; align-items: center; padding: 0 9px; color: var(--ink-soft); background: #f5f0e4; border-right: 1px solid var(--line); font-size: 10px; letter-spacing: .1em; }
.posts-order-control button { min-height: 34px; padding: 0 11px; color: var(--bronze-deep); background: transparent; border: none; border-right: 1px solid var(--line); font-size: 12px; cursor: pointer; transition: .2s; }
.posts-order-control button:last-child { border-right: none; }
.posts-order-control button b { margin-right: 4px; color: var(--gold); font: 10px var(--font-display); }
.posts-order-control button:hover { background: #b8963e14; }
.posts-order-control button.active { color: #fff5dd; background: var(--bronze-deep); }
.posts-order-control button.active b { color: var(--gold-light); }
.posts-search-row { margin-top: 13px; padding-top: 13px; border-top: 1px solid var(--line); }
.posts-search-row .search-input {
  flex: 1; min-width: 120px;
  border: 1px solid var(--line); border-radius: 8px;
  background: var(--paper-light); padding: 8px 14px;
}
.posts-search-row .search-input:focus { border-color: var(--gold); box-shadow: 0 0 0 3px #b8963e1f; outline: none; }
.posts-search-mark { color: var(--cinnabar); font-size: 22px; line-height: 1; }
.posts-search-btn { padding: 8px 16px; color: #fff5dd; background: var(--bronze-deep); border: 1px solid var(--bronze-deep); border-radius: 4px; font-size: 12px; cursor: pointer; }
.posts-search-btn:hover { background: var(--cinnabar); border-color: var(--cinnabar); }
.posts-province-filter { color: var(--ink-soft); font-size: 11px; white-space: nowrap; }
.posts-province-filter b { color: var(--cinnabar); }
.posts-province-filter a { margin-left: 8px; color: var(--gold); cursor: pointer; }
/* 省份大图 banner（合并自原山河页） */
.posts-province-banner { display: flex; gap: 16px; align-items: stretch; margin-top: 16px; }
.ppb-cover { position: relative; flex: 1; min-height: 150px; border-radius: 10px; overflow: hidden; background: var(--bronze-dark); background-image: var(--ppb-cover); background-size: cover; background-position: center; }
.ppb-cover-shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(10,20,16,.82) 0%, rgba(10,20,16,.35) 60%, rgba(10,20,16,.1) 100%); }
.ppb-cover-copy { position: relative; z-index: 1; display: flex; align-items: center; gap: 14px; height: 100%; padding: 20px 24px; }
.ppb-seal { flex: 0 0 46px; width: 46px; height: 46px; border-radius: 50%; border: 1.5px solid var(--gold-light); display: grid; place-items: center; color: var(--gold-light); font: 20px var(--font-display); background: rgba(255,245,221,.08); }
.ppb-cover-copy p { margin: 0; color: #fff5dda8; font-size: 11px; letter-spacing: .1em; }
.ppb-cover-copy h3 { margin: 4px 0; color: #fff5dd; font: 26px var(--font-display); letter-spacing: .06em; }
.ppb-cover-copy small { color: #fff5ddb0; font-size: 12px; line-height: 1.6; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ppb-meta { flex: 0 0 140px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; padding: 16px; border: 1px solid var(--line); border-radius: 10px; background: var(--paper-light); }
.ppb-meta span { color: var(--cinnabar); font: 30px var(--font-display); }
.ppb-meta small { color: var(--ink-soft); font-size: 11px; }
.ppb-meta button { margin-top: 6px; padding: 5px 12px; border: 1px solid var(--line); border-radius: 14px; background: transparent; color: var(--ink-soft); font-size: 11px; cursor: pointer; transition: all .2s; }
.ppb-meta button:hover { border-color: var(--cinnabar); color: var(--cinnabar); }
@media (max-width: 760px) {
  .posts-province-banner { flex-direction: column; gap: 10px; }
  .ppb-cover { min-height: 120px; }
  .ppb-meta { flex: 0 0 auto; flex-direction: row; gap: 10px; padding: 12px; }
  .ppb-meta span { font-size: 24px; }
  .ppb-meta button { margin-top: 0; margin-left: auto; }
}
.posts-archive-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 24px; gap: 18px; }
.posts-archive-card { border-radius: 5px; }
.posts-archive-img { height: 210px; }
.posts-archive-img::after { content: ""; position: absolute; inset: auto 0 0; height: 44%; background: linear-gradient(transparent, #101e18a8); pointer-events: none; }
.posts-read-label { position: absolute; right: 13px; bottom: 12px; z-index: 2; color: #fff5dd; font-size: 10px; letter-spacing: .06em; opacity: .9; }
.posts-card-top { display: flex; align-items: center; justify-content: space-between; }
.posts-card-date { color: var(--ink-soft); font-size: 10px; }
.posts-archive-body { padding: 16px; }
.posts-archive-body h3 { margin: 10px 0 7px; font-size: 17px; }
.posts-archive-body .post-city { color: var(--cinnabar); letter-spacing: .04em; }
.posts-archive-body .post-desc { min-height: 33px; line-height: 1.65; }
.posts-archive-body .post-meta { padding-top: 10px; border-top: 1px solid var(--line); }
/* 卡片季节/出行方式小标签 */
.posts-archive-body .posts-card-tags {
  display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0 8px;
}
.posts-archive-body .pc-tag {
  display: inline-flex; align-items: center;
  padding: 2px 9px; border-radius: 10px;
  font-size: 11px; line-height: 1.4; letter-spacing: .04em;
  border: 1px solid transparent; white-space: nowrap;
}
.posts-archive-body .pc-season { color: var(--bronze-deep); background: #e3ece7; border-color: #c8d8cf; }
.posts-archive-body .pc-mode  { color: var(--cinnabar);    background: #f4e3e0; border-color: #e6c6c0; }
.posts-archive-body .pc-type  { color: #8a6d2f;            background: var(--gold-pale); border-color: #e3d3a8; }
.posts-pagination { margin-top: 34px; }

/* ============ 键盘可访问性焦点样式 ============ */
[role="button"], article[tabindex="0"], figure[tabindex="0"] { outline: none; }
[role="button"]:focus-visible, article[tabindex="0"]:focus-visible, figure[tabindex="0"]:focus-visible {
  outline: 2px solid var(--cinnabar);
  outline-offset: 3px;
  border-radius: 8px;
}

/* ============ 精选游记省份筛选 ============ */
.featured-province-filter {
  display: flex; flex-wrap: wrap; gap: 8px;
  margin: 14px 32px 0;
}
.featured-province-filter button {
  padding: 5px 14px; border-radius: 16px;
  border: 1px solid var(--line); background: var(--paper-light);
  color: var(--ink-soft); font-size: 12px; cursor: pointer;
  transition: all .2s;
}
.featured-province-filter button:hover { border-color: var(--gold); color: var(--bronze-deep); }
.featured-province-filter button.active {
  background: var(--cinnabar); border-color: var(--cinnabar);
  color: #fff5dd; box-shadow: 0 3px 10px rgba(139,46,34,.2);
}
@media (max-width: 760px) {
  .featured-province-filter { margin: 12px 16px 0; gap: 6px; }
  .featured-province-filter button { padding: 4px 11px; font-size: 11px; }
}

/* ============ 卡片 ============ */
.featured-cards, .post-grid, .province-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 16px;
  margin: 20px 32px 0;
}
.featured-card, .post-card, .province-card {
  text-align: left; border-radius: var(--radius);
  border: 1px solid var(--line);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  background: #ffffffd9;
  width: 100%;
  transition: all .25s;
  display: block; overflow: hidden;
  cursor: pointer;
}
.featured-card:hover, .post-card:hover, .province-card:hover {
  border-color: var(--gold-light);
  transform: translateY(-3px);
  box-shadow: 0 10px 32px #0000001a;
}
.featured-img, .post-img, .province-img {
  background: var(--paper-deep); height: 170px; overflow: hidden; position: relative;
}
.featured-img img, .post-img img, .province-img img { object-fit: cover; width: 100%; height: 100%; transition: transform .5s; }
.featured-card:hover .featured-img img, .post-card:hover .post-img img, .province-card:hover .province-img img { transform: scale(1.06); }
.featured-body, .post-body { padding: 14px; }
.featured-tag, .post-tag {
  color: var(--gold); background: #b8963e26;
  border-radius: 3px; margin-bottom: 6px;
  padding: 2px 8px; font-size: 10px; font-weight: 600;
  display: inline-block;
}
.featured-body h3, .post-body h3 {
  font: 15px var(--font-display); color: var(--bronze-deep);
  letter-spacing: .04em; margin-bottom: 4px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.featured-city, .post-city { color: var(--ink-soft); margin-bottom: 6px; font-size: 11px; }
.featured-desc, .post-desc {
  color: var(--ink-soft); margin-bottom: 8px; font-size: 11px; line-height: 1.5;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.featured-meta, .post-meta { display: flex; align-items: center; gap: 12px; color: var(--ink-soft); font-size: 10px; }
.post-meta .read-time { color: var(--bronze-deep); opacity: .8; margin-left: auto; }
.featured-rating { align-items: center; gap: 8px; display: flex; }
.featured-rating .stars { color: var(--gold); font-size: 12px; }
.featured-rating .score { color: var(--cinnabar); font-size: 12px; font-weight: 700; }

/* 图章角标 */
.img-badge {
  position: absolute; top: 10px; left: 10px;
  background: var(--cinnabar); color: #fff5dd;
  border-radius: 4px; padding: 3px 10px;
  font-size: 10px; font-weight: 700;
  box-shadow: 0 2px 8px #8b2e224d;
  z-index: 2;
}

/* 热门卡片布局 */
.hot-recommendations { margin: 20px 32px 0; }
.hot-recommendations > .section-header { margin: 0 0 16px; }
.hot-cards { grid-template-columns: 1.5fr repeat(4, minmax(0, 1fr)); gap: 16px; display: grid; }
.hot-card, .hot-card-small {
  text-align: left; border-radius: var(--radius);
  border: 1px solid var(--line); background: #ffffffe0;
  width: 100%; transition: all .25s;
  display: block; overflow: hidden; cursor: pointer;
}
.hot-card:hover, .hot-card-small:hover { border-color: var(--gold-light); transform: translateY(-2px); box-shadow: 0 8px 24px #00000012; }
.hot-card-img { background: linear-gradient(135deg, var(--paper-deep), var(--gold-pale)); height: 90px; position: relative; overflow: hidden; }
.hot-card-img img { object-fit: cover; object-position: center top; width: 100%; height: 100%; display: block; }
.hot-card:first-child .hot-card-img { height: 100px; }
.hot-card-body { padding: 10px 12px; }
.hot-card-body h4, .hot-card-small h4 { font: 13px var(--font-display); color: var(--bronze-deep); letter-spacing: .02em; margin-bottom: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hot-card-body p, .hot-card-small p { color: var(--ink-soft); font-size: 10px; line-height: 1.5; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ============ 省份网格 ============ */
.province-grid { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.province-img { height: 130px; }
.province-card .province-body { padding: 12px 14px; display: flex; justify-content: space-between; align-items: center; }
.province-name { font: 18px var(--font-display); color: var(--bronze-deep); letter-spacing: .1em; }
.province-count { color: var(--ink-soft); font-size: 10px; }
.province-card .seal-mini {
  background: var(--cinnabar); color: #fff5dd;
  width: 26px; height: 26px; border-radius: 50%;
  font: bold 11px var(--font-display);
  place-items: center; display: inline-grid;
}

/* ============ 相册 ============ */
.gallery-grid {
  columns: 4; column-gap: 12px;
  margin: 20px 32px 0;
}
@media (max-width: 1200px) { .gallery-grid { columns: 3; } }
@media (max-width: 900px) { .gallery-grid { columns: 2; } }
@media (max-width: 560px) { .gallery-grid { columns: 1; } }
.gallery-item {
  break-inside: avoid; margin-bottom: 12px;
  border-radius: var(--radius); overflow: hidden;
  border: 1px solid var(--line);
  position: relative; cursor: zoom-in;
  transition: all .25s;
  background: var(--paper-light);
}
.gallery-item:hover { transform: translateY(-2px); box-shadow: 0 10px 26px #00000014; }
.gallery-item img { width: 100%; display: block; }
.gallery-item .gallery-cap {
  position: absolute; left: 0; right: 0; bottom: 0;
  background: linear-gradient(transparent, rgba(15, 31, 24, .8));
  color: #fff5dd; font-size: 11px; letter-spacing: .05em;
  padding: 26px 12px 10px;
  opacity: 0; transition: opacity .25s;
}
.gallery-item:hover .gallery-cap { opacity: 1; }

/* 灯箱 */
.lightbox {
  position: fixed; inset: 0; z-index: 200;
  background: rgba(10, 16, 13, .93);
  display: flex; align-items: center; justify-content: center;
  padding: 40px; cursor: zoom-out;
  animation: fadeIn .25s;
}
.lightbox img { max-width: 90vw; max-height: 85vh; border-radius: 8px; box-shadow: 0 20px 60px #0009; }
.lb-nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  opacity: .75;
  background: rgba(0,0,0,.35); border-radius: 50%;
  width: 46px; height: 46px; display: grid; place-items: center;
  transition: opacity .2s, background .2s;
  border: none; cursor: pointer;
}
.lb-prev { left: 24px; }
.lb-next { right: 24px; }
.lb-nav:hover { opacity: 1; background: rgba(0,0,0,.6); }
/* CSS 绘制箭头，保证任何字体/设备下完美居中不偏移 */
.lb-arrow {
  display: block; width: 12px; height: 12px;
  border-top: 2px solid #fff5dd; border-right: 2px solid #fff5dd;
  transform: rotate(-135deg);
}
.lb-prev .lb-arrow { transform: rotate(-135deg); }
.lb-next .lb-arrow { transform: rotate(45deg); }
.lb-close {
  position: absolute; top: 20px; right: 24px;
  color: #fff5dd; font-size: 20px; opacity: .7;
  background: rgba(0,0,0,.35); border-radius: 50%;
  width: 40px; height: 40px; display: grid; place-items: center;
}
.lb-close:hover { opacity: 1; }
.lightbox .lb-cap {
  position: absolute; bottom: 30px; left: 50%; transform: translateX(-50%);
  color: #fff5dd; font-size: 14px; letter-spacing: .08em;
  background: rgba(0,0,0,.55); padding: 12px 22px; border-radius: 12px;
  max-width: 80vw; text-align: center; cursor: default;
  display: flex; flex-direction: column; align-items: center; gap: 5px;
  backdrop-filter: blur(4px);
}
.lightbox .lb-cap-main { font-size: 14px; letter-spacing: .08em; }
.lightbox .lb-cap-sub { font-size: 11px; opacity: .82; letter-spacing: .05em; }
.lightbox .lb-post-btn {
  margin-top: 6px; padding: 7px 16px; border: 1px solid var(--gold-light);
  border-radius: 18px; background: transparent; color: #fff5dd;
  font: 12px var(--font-display); letter-spacing: .08em; cursor: pointer;
  transition: all .2s;
  display: inline-flex; align-items: center; gap: 5px;
}
.lightbox .lb-post-btn:hover { background: var(--cinnabar); border-color: var(--cinnabar); }
/* 灯箱印章图标 */
.lb-seal {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  border: 1px solid rgba(255,245,221,.5);
  border-radius: 2px;
  font: 700 9px/1 var(--font-serif);
  color: rgba(255,245,221,.8);
  flex-shrink: 0;
}
.lightbox .lb-count { font-size: 10px; opacity: .6; font-family: var(--font-mono); letter-spacing: .1em; }

/* ============ 分页 ============ */
.pagination { display: flex; justify-content: center; gap: 8px; margin: 32px; align-items: center; }
.pagination button {
  border: 1px solid var(--line); background: #fff9;
  color: var(--bronze-deep); border-radius: 6px;
  min-width: 34px; height: 34px;
  font-size: 12px; transition: all .2s;
}
.pagination button:hover:not(:disabled) { border-color: var(--gold-light); }
.pagination button.active { background: var(--bronze-deep); color: #fff5dd; border-color: var(--bronze-deep); }
.pagination button:disabled { opacity: .4; cursor: not-allowed; }
.pagination .page-info { font-size: 12px; color: var(--ink-soft); margin: 0 8px; }

/* ============ 筛选栏 ============ */
.filter-bar {
  display: flex; gap: 10px; flex-wrap: wrap; align-items: center;
  margin: 20px 32px 0;
}
.segmented-control {
  scrollbar-width: thin; background: #fff9;
  border: 1px solid #dfcda7; border-radius: 8px;
  gap: 0; max-width: 100%; padding: 2px;
  display: inline-flex; overflow-x: auto;
}
.segmented-control button {
  color: #5e4a29; cursor: pointer; white-space: nowrap;
  background: none; border: none; border-radius: 6px;
  align-items: center; gap: 5px;
  padding: 6px 16px; font-size: 13px;
  transition: all .2s; display: inline-flex;
}
.segmented-control button:hover { color: #3a2e1a; background: #d9b76e26; }
.segmented-control button.active { color: #fff; background: #c9a560; font-weight: 500; }
.search-input {
  border: 1px solid var(--line); border-radius: 8px;
  background: #fff9; padding: 8px 14px;
  font-size: 13px; color: var(--ink);
  width: 240px; outline: none;
  transition: border-color .2s;
}
.search-input:focus { border-color: var(--gold); }
.search-input::placeholder { color: var(--ink-soft); opacity: .6; }

/* ============ 详情页 ============ */
.detail-wrap { margin: 24px 32px; }
.detail-breadcrumb { font-size: 12px; color: var(--ink-soft); margin-bottom: 16px; }
.detail-breadcrumb a:hover { color: var(--cinnabar); }
.detail-head {
  border-radius: var(--radius-lg); overflow: hidden;
  border: 1px solid var(--line);
  background: var(--paper-light);
  position: relative; height: 380px;
}
.detail-head-bg { position: absolute; inset: 0; }
.detail-head-bg img { object-fit: cover; width: 100%; height: 100%; }
.detail-head-overlay {
  background:
    linear-gradient(90deg, #0a1410d1 0%, #0a141026 60%),
    linear-gradient(#0000 55%, #0a141099 100%);
  position: absolute; inset: 0;
}
.detail-head-content {
  z-index: 2; color: #fff8e7;
  flex-direction: column; justify-content: flex-end;
  height: 100%; padding: 40px;
  display: flex; position: relative;
}
.detail-kicker { color: var(--gold-light); letter-spacing: .2em; font-size: 12px; margin-bottom: 8px; }
.detail-head h1 { font: 34px var(--font-display); letter-spacing: .08em; margin-bottom: 8px; text-shadow: 0 2px 12px #0008; }
.detail-head .subtitle { color: #fff5ddcc; font-size: 14px; letter-spacing: .06em; margin-bottom: 14px; }
.detail-meta-row { display: flex; gap: 20px; flex-wrap: wrap; font-size: 12px; color: #fff5ddb3; }
.detail-meta-row span { display: inline-flex; align-items: center; gap: 5px; }

.detail-layout { display: grid; grid-template-columns: 1fr 300px; gap: 24px; margin-top: 24px; align-items: start; }
.detail-main { min-width: 0; }  /* 防止 grid 子项被内容撑开导致移动端爆边 */
@media (max-width: 1100px) { .detail-layout { grid-template-columns: 1fr; } }

/* 正文 */
.article-card {
  background: #ffffffd9; border: 1px solid var(--line);
  border-radius: var(--radius); padding: 32px 36px;
}
.article-content { font-size: 15px; line-height: 2; color: var(--ink); }
.article-content p { margin-bottom: 18px; text-indent: 2em; }
.article-content h2, .article-content h3, .article-content h4 { scroll-margin-top: 84px; }
.article-content h2, .article-content h3 {
  font-family: var(--font-display); color: var(--bronze-deep);
  margin: 30px 0 14px; letter-spacing: .04em;
}
.article-content h2 { font-size: 22px; padding-left: 12px; border-left: 3px solid var(--gold); }
.article-content h3 { font-size: 18px; }
.article-content h4 { font-size: 16px; font-family: var(--font-display); color: var(--bronze-deep); margin: 24px 0 12px; letter-spacing: .03em; }
.article-content a { color: var(--cinnabar); text-decoration: underline; text-underline-offset: 3px; transition: color .18s; }
.article-content a:hover { color: var(--bronze-deep); }
.article-content hr {
  border: none; height: 1px; margin: 32px 0;
  background: linear-gradient(90deg, transparent, var(--gold) 50%, transparent);
  position: relative;
}
.article-content hr::after {
  content: "◆"; position: absolute; left: 50%; top: 50%;
  transform: translate(-50%, -50%); color: var(--gold);
  font-size: 11px; background: var(--paper-light);
  padding: 0 10px;
}
.article-content img {
  max-width: 100%; border-radius: 8px; margin: 16px 0;
  box-shadow: 0 8px 24px #0000001a;
}
.article-content blockquote {
  border-left: 3px solid var(--cinnabar);
  background: #f5f0e47a; color: var(--ink-soft);
  margin: 18px 0; padding: 12px 18px;
  border-radius: 0 6px 6px 0; font-size: 14px;
}
.article-content ul, .article-content ol { margin: 0 0 18px 2em; }
.article-content li { margin-bottom: 6px; }
.article-content .photo-figure { margin: 24px 0; text-align: center; }
.article-content .photo-figure img { cursor: zoom-in; }
.article-content .photo-figure figcaption { font-size: 12px; color: var(--ink-soft); margin-top: 8px; letter-spacing: .05em; }

/* 家庭档案块（行程表 / 开销 / 贴士） */
.family-archive { margin-top: 32px; }
.archive-block { border: 1px solid var(--line); border-radius: 12px; padding: 20px; background: var(--paper-light); margin-bottom: 16px; }
.archive-title { font: 700 16px var(--font-display); color: var(--bronze-deep); margin: 0 0 14px; letter-spacing: .03em; display: flex; align-items: center; justify-content: space-between; }
.archive-total { font-size: 13px; color: var(--cinnabar); font-weight: 600; }

/* 行程表 */
.itinerary-table { width: 100%; font-size: 13px; }
.itinerary-row { display: grid; grid-template-columns: 64px 70px 1.4fr 1fr 1fr; gap: 10px; align-items: center; padding: 10px 6px; border-bottom: 1px dashed var(--line); }
.itinerary-row:last-child { border-bottom: none; }
.itinerary-head { color: var(--ink-soft); font-size: 12px; font-weight: 600; }
.itinerary-row:not(.itinerary-head) .it-col-day { color: var(--cinnabar); font-weight: 600; }
.it-col-route, .it-col-stay, .it-col-note { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* 开销 */
.expense-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.expense-item { display: flex; align-items: center; justify-content: space-between; padding: 12px 14px; border-radius: 8px; background: #fff; border: 1px solid var(--line); }
.expense-label { color: var(--ink-soft); font-size: 13px; }
.expense-amount { color: var(--bronze-deep); font-weight: 700; font: 16px var(--font-display); }

/* 贴士 */
.tips-list { display: flex; flex-direction: column; gap: 12px; }
.tip-item { padding: 12px 14px; border-left: 3px solid var(--gold); background: #fff; border-radius: 0 8px 8px 0; }
.tip-title { font-weight: 600; color: var(--bronze-deep); font-size: 14px; display: flex; align-items: center; gap: 8px; }
.tip-num { color: var(--cinnabar); font: 13px var(--font-display); }
.tip-content { margin: 6px 0 0; font-size: 13px; color: var(--ink); line-height: 1.7; }

/* 照片画廊 */
.photo-section { margin-top: 32px; }
.photo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.photo-grid .photo-item {
  border-radius: 8px; overflow: hidden; cursor: zoom-in;
  border: 1px solid var(--line); position: relative;
  aspect-ratio: 4/3;
}
.photo-grid .photo-item img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s; }
.photo-grid .photo-item:hover img { transform: scale(1.05); }
.photo-grid .photo-item figcaption {
  position: absolute; left: 0; right: 0; bottom: 0;
  background: linear-gradient(transparent, rgba(15,31,24,.75));
  color: #fff5dd; font-size: 11px; padding: 20px 10px 8px;
  opacity: 0; transition: opacity .25s;
}
.photo-grid .photo-item:hover figcaption { opacity: 1; }

/* 旅途短视频 */
.video-section { margin-top: 32px; }
.video-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; }
.video-item {
  border-radius: 8px; overflow: hidden;
  border: 1px solid var(--line); background: #ffffffd9;
}
.video-item video { width: 100%; aspect-ratio: 16/9; background: #1a1512; display: block; object-fit: contain; }
.video-item figcaption {
  display: flex; justify-content: space-between; align-items: center;
  padding: 8px 10px; font-size: 12px; color: var(--ink);
}
.video-item figcaption em { font-style: normal; font-size: 11px; color: var(--ink-soft); }
@media (max-width: 640px) {
  .video-grid { grid-template-columns: 1fr; }
}

/* 景点卡片 */
.spots-section { margin-top: 32px; }
.spot-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; }
.spot-card {
  border-radius: var(--radius); overflow: hidden;
  border: 1px solid var(--line); background: #ffffffd9;
  transition: all .25s; display: flex; flex-direction: column;
}
.spot-card:hover { border-color: var(--gold-light); transform: translateY(-3px); box-shadow: 0 10px 30px #00000014; }
.spot-card-img { height: 150px; background: var(--paper-deep); overflow: hidden; }
.spot-card-img img { width: 100%; height: 100%; object-fit: cover; }
.spot-card-body { padding: 14px; flex: 1; }
.spot-card-body h3 { font: 16px var(--font-display); color: var(--bronze-deep); margin-bottom: 8px; display: flex; align-items: center; gap: 6px; }
.spot-card-body h3 .spot-num {
  background: var(--cinnabar); color: #fff5dd; border-radius: 3px;
  font-size: 10px; padding: 1px 6px;
}
.spot-card-body .spot-intro { font-size: 12px; color: var(--ink-soft); line-height: 1.7; }
.spot-card-body .spot-tips {
  margin-top: 10px; font-size: 11px; color: var(--bronze-deep);
  background: #2d4a3e0f; border-radius: 4px; padding: 6px 10px;
}
.spot-card-body .spot-tips b { color: var(--gold); }

/* 右侧侧栏：sticky 吸顶，位于双列 Grid 第二列（右侧留 24px 给进度条/返回顶部） */
.detail-side {
  position: sticky;
  top: 88px;
  width: 276px;
  margin-right: 24px;
  max-height: calc(100vh - 100px);
  overflow-y: auto;
  display: flex; flex-direction: column; gap: 16px;
}
@media (max-width: 1100px) { .detail-side { display: none; } }
.side-card {
  background: #ffffffd9; border: 1px solid var(--line);
  border-radius: var(--radius); padding: 18px;
}
.side-card h3 { font: 16px var(--font-display); color: var(--bronze-deep); letter-spacing: .05em; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--line); }
.side-card h3 .seal-icon { width: 22px; height: 22px; font-size: 10px; margin-right: 6px; }
.side-info-list { font-size: 12px; color: var(--ink-soft); display: flex; flex-direction: column; gap: 10px; }
.side-info-list .row { display: flex; justify-content: space-between; gap: 10px; }
.side-info-list .row b { color: var(--bronze-deep); font-weight: 600; }
.tag-list { display: flex; flex-wrap: wrap; gap: 6px; }
.tag-list .tag {
  font-size: 11px; color: var(--bronze-deep);
  border: 1px solid var(--line); border-radius: 14px;
  padding: 3px 10px; transition: all .2s;
}
.tag-list .tag:hover { border-color: var(--gold); color: var(--cinnabar); background: #b8963e14; }
.like-btn {
  width: 100%; padding: 10px;
  border: 1px solid var(--cinnabar); color: var(--cinnabar);
  border-radius: 6px; font-size: 13px; font-weight: 600;
  display: flex; justify-content: center; gap: 8px; align-items: center;
  transition: all .25s;
}
.like-btn:hover { background: var(--cinnabar); color: #fff5dd; }
.like-btn.liked { background: var(--cinnabar); color: #fff5dd; }
.like-btn .like-count { font-weight: 700; }
/* 分享按钮组 */
.share-btns { display: flex; gap: 8px; margin-top: 10px; }
.share-btn {
  flex: 1; padding: 7px 0;
  border: 1px solid var(--line); border-radius: 8px;
  background: var(--paper-light); color: var(--ink-soft);
  font-size: 12px; cursor: pointer; transition: all .2s;
}
.share-btn:hover { border-color: var(--gold); color: var(--bronze-deep); }
.share-weibo:hover { background: #f7e8e4; border-color: #e6162d; color: #e6162d; }
.share-wechat:hover { background: #e8f5ec; border-color: #07c160; color: #07c160; }
.share-copy:hover { background: #2d4a3e12; border-color: var(--bronze-deep); color: var(--bronze-deep); }
/* 同省份其他游记 */
.same-province-list { display: flex !important; flex-direction: column; gap: 10px; }
.same-province-item {
  display: flex !important; gap: 10px; align-items: center;
  text-decoration: none; padding: 6px; border-radius: 8px;
  transition: background .15s;
}
.same-province-item:hover { background: #2d4a3e0d; }
.sp-img { flex: 0 0 52px; width: 52px; height: 52px; border-radius: 6px; overflow: hidden; background: var(--paper-deep); }
.sp-img img, .sp-img .seal-fallback { width: 100%; height: 100%; object-fit: cover; }
.sp-body { flex: 1; min-width: 0; }
.sp-body b { display: block; font-size: 13px; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sp-body small { display: block; font-size: 11px; color: var(--ink-soft); margin-top: 2px; }
html[data-theme="dark"] .sp-body b { color: #fff5dd; }
.nav-adjacent { display: flex; flex-direction: column; gap: 8px; }
.nav-adjacent a {
  font-size: 12px; color: var(--ink-soft); line-height: 1.6;
  padding: 8px 10px; border-radius: 6px;
  transition: all .2s;
}
.nav-adjacent a:hover { background: #2d4a3e0d; color: var(--bronze-deep); }
.nav-adjacent a .dir { color: var(--gold); font-size: 10px; display: block; margin-bottom: 2px; }

/* 文章底部：标签 + 点赞分享 */
.article-foot {
  margin-top: 28px; padding-top: 20px;
  border-top: 1px dashed var(--line-strong);
}
.article-foot-tags { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 18px; }
.article-foot-label {
  font: 600 12px var(--font-display); color: var(--bronze-deep);
  letter-spacing: .12em; margin-right: 4px; white-space: nowrap;
}
.article-foot-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.article-foot-actions .like-btn { width: auto; padding: 9px 24px; }
.article-foot-actions .article-share-main { border-color: var(--bronze-deep); color: var(--bronze-deep); padding: 9px 18px; }
.article-foot-actions .article-share-main:hover { background: var(--bronze-deep); border-color: var(--bronze-deep); color: #fff5dd; }
.article-foot-actions .share-btns { margin-top: 0; flex: 1; justify-content: flex-end; min-width: 200px; }
.article-foot-actions .share-btn { flex: 0 0 auto; padding: 9px 16px; min-width: 66px; }
@media (max-width: 640px) {
  .article-foot-actions .share-btns { flex: none; width: 100%; justify-content: flex-start; }
}

/* 上一篇 / 下一篇 */
.post-nav {
  display: grid; grid-template-columns: 1fr 1fr; gap: 14px;
  margin-top: 20px;
}
.post-nav a {
  display: block; padding: 14px 18px;
  background: var(--paper-light); border: 1px solid var(--line);
  border-radius: var(--radius); transition: all .2s;
}
.post-nav a:hover { border-color: var(--gold); transform: translateY(-2px); box-shadow: 0 6px 16px #00000014; }
.post-nav a.next { text-align: right; }
.post-nav .pn-dir { display: block; font: 600 10px var(--font-display); color: var(--gold); letter-spacing: .14em; margin-bottom: 5px; }
.post-nav b { display: block; font: 600 13px var(--font-serif); color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 640px) { .post-nav { grid-template-columns: 1fr; } }
html[data-theme="dark"] .post-nav a { background: var(--paper-light); }
html[data-theme="dark"] .post-nav b { color: #fff5dd; }
html[data-theme="dark"] .article-foot-label { color: var(--gold-light); }
html[data-theme="dark"] .article-foot-actions .article-share-main { border-color: var(--gold); color: var(--gold-light); }
html[data-theme="dark"] .article-foot-actions .article-share-main:hover { background: var(--gold); border-color: var(--gold); color: var(--bronze-deep); }

/* ============ 关于页 ============ */
.about-hero {
  border-radius: var(--radius-lg); overflow: hidden;
  margin: 24px 32px 0; position: relative;
  background:
    radial-gradient(circle at 18% 22%, #d4b86a 0 1px, transparent 1.5px),
    radial-gradient(circle at 72% 68%, #2d4a3e14 0 1px, transparent 1.5px),
    repeating-linear-gradient(0deg, #78644607 0 1px, transparent 1px 4px),
    linear-gradient(135deg, var(--bronze-dark), var(--bronze-deep));
  padding: 70px 48px; text-align: center; color: #fff5dd;
}
.about-hero .seal-big {
  width: 64px; height: 64px; border-radius: 50%;
  background: var(--cinnabar); color: #fff5dd;
  font: bold 26px var(--font-display);
  border: 2px solid var(--gold-light);
  place-items: center; display: inline-grid;
  margin-bottom: 18px;
  box-shadow: 0 8px 24px #8b2e2266;
  animation: sealPulse 3s ease-in-out infinite;
}
.about-hero h1 { font: 34px var(--font-display); letter-spacing: .16em; margin-bottom: 12px; }
.about-hero p { color: #fff5ddb3; letter-spacing: .1em; font-size: 14px; }
.about-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin: 24px 32px 0; }
@media (max-width: 900px) { .about-cards { grid-template-columns: 1fr; } }
.about-stat-card {
  text-align: center; padding: 30px 20px;
  background: #ffffffd9; border: 1px solid var(--line);
  border-radius: var(--radius); transition: all .25s;
}
.about-stat-card:hover { border-color: var(--gold-light); transform: translateY(-3px); box-shadow: 0 10px 30px #00000012; }
.about-stat-card .num { font: 40px var(--font-display); color: var(--cinnabar); }
.about-stat-card .label { font-size: 12px; color: var(--ink-soft); letter-spacing: .15em; margin-top: 6px; }
.about-content {
  margin: 24px 32px; padding: 36px 44px;
  background: #ffffffd9; border: 1px solid var(--line);
  border-radius: var(--radius);
  font-size: 15px; line-height: 2.1; color: var(--ink);
}
.about-content p { margin-bottom: 14px; text-indent: 2em; }
.about-quote {
  font-family: var(--font-display); font-size: 22px; color: var(--bronze-deep);
  text-align: center; letter-spacing: .2em; margin: 30px 0;
  position: relative; padding: 20px 0;
}
.about-quote:before, .about-quote:after {
  content: "◆"; color: var(--gold); font-size: 12px;
  display: block; margin: 6px 0;
}

/* ============ 页脚 ============ */
.site-footer {
  text-align: center; border-top: 1px solid var(--line);
  margin-top: 40px; padding: 40px 32px 32px;
}
.site-footer p { font: 16px var(--font-display); color: var(--bronze-deep); letter-spacing: .08em; margin-bottom: 8px; }
.site-footer .footer-sub { font: 11px var(--font-serif); color: var(--ink-soft); letter-spacing: .02em; margin-bottom: 4px; }
.footer-decoration { justify-content: center; align-items: center; gap: 16px; margin-bottom: 12px; display: flex; }
.footer-decoration .deco-icon { background: var(--gold-pale); border-radius: 50%; place-items: center; width: 24px; height: 24px; font-size: 12px; display: grid; }

/* 备案信息 */
.footer-beian {
  display: flex; align-items: center; justify-content: center; gap: 14px;
  margin-top: 12px; flex-wrap: wrap;
}
.beian-link {
  display: inline-flex; align-items: center; gap: 5px;
  font: 11px var(--font-serif); color: var(--ink-soft);
  letter-spacing: .02em; text-decoration: none;
  transition: color .2s;
}
.beian-link:hover { color: var(--bronze-deep); }
.beian-icon {
  display: inline-block;
  width: 16px; height: 16px;
  vertical-align: middle; object-fit: contain;
}
html[data-theme="dark"] .beian-link { color: #fff5dd99; }
html[data-theme="dark"] .beian-link:hover { color: #fff5dd; }

/* ============ 加载状态（国风印章骨架屏） ============ */
.page-loading {
  position: relative;
  padding: 46px 0 40px;
  min-height: 360px;
}
/* 顶部加载提示：印章 + 文案 */
.page-loading .loading-head {
  display: flex; align-items: center; justify-content: center; gap: 12px;
  margin-bottom: 28px;
}
.page-loading .loading-seal {
  width: 44px; height: 44px; border-radius: 50%;
  border: 1.5px solid var(--cinnabar);
  color: var(--cinnabar);
  font: 20px var(--font-display);
  display: grid; place-items: center;
  background: var(--paper-light);
  box-shadow: 0 4px 14px rgba(139,46,34,.12);
  animation: sealPulse 1.6s ease-in-out infinite;
}
.page-loading .loading-seal::after {
  content: ''; position: absolute; inset: -4px; border-radius: 50%;
  border: 1px solid var(--gold-light);
  opacity: 0;
  animation: sealRing 1.6s ease-out infinite;
}
.page-loading .loading-tip {
  font-size: 12px; letter-spacing: .28em; color: var(--ink-soft);
}
.page-loading .loading-tip i {
  display: inline-block; width: 5px; height: 5px; border-radius: 50%;
  background: var(--gold); margin: 0 3px; vertical-align: middle;
  animation: tipDot 1.2s ease-in-out infinite;
}
.page-loading .loading-tip i:nth-child(2) { animation-delay: .2s; }
.page-loading .loading-tip i:nth-child(3) { animation-delay: .4s; }

/* 骨架卡片网格 */
.page-loading .sk-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 20px;
}
.page-loading .ink-loading {
  position: relative; overflow: hidden; min-height: 300px;
  background: var(--paper-light); border: 1px solid var(--line);
  border-radius: 14px;
  opacity: .65;
}
/* 骨架卡片内占位块：封面图 + 标题行 + 两行文字 + 日期 */
.page-loading .ink-loading::before {
  content: '';
  position: absolute; inset: 0;
  background:
    linear-gradient(var(--line), var(--line)) 14px 14px / calc(100% - 28px) 55% no-repeat,
    linear-gradient(var(--line), var(--line)) 14px calc(55% + 28px) / 72% 16px no-repeat,
    linear-gradient(var(--line), var(--line)) 14px calc(55% + 56px) / 92% 11px no-repeat,
    linear-gradient(var(--line), var(--line)) 14px calc(55% + 76px) / 58% 11px no-repeat;
}
/* 流光扫过效果 */
.page-loading .ink-loading::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(90deg, transparent, rgba(212,175,55,.08), transparent);
  animation: skShimmer 1.3s ease-in-out infinite;
}
@keyframes skShimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } }
@keyframes sealPulse {
  0%, 100% { transform: scale(1); box-shadow: 0 4px 14px rgba(139,46,34,.12); }
  50% { transform: scale(1.08); box-shadow: 0 6px 20px rgba(139,46,34,.2); }
}
@keyframes sealRing {
  0% { transform: scale(1); opacity: .7; }
  100% { transform: scale(1.5); opacity: 0; }
}
@keyframes tipDot {
  0%, 100% { opacity: .2; transform: translateY(0); }
  50% { opacity: 1; transform: translateY(-2px); }
}

@media (max-width: 760px) {
  .page-loading { padding: 30px 0 24px; min-height: 280px; }
  .page-loading .loading-seal { width: 38px; height: 38px; font-size: 17px; }
  .page-loading .loading-tip { font-size: 11px; letter-spacing: .2em; }
  .page-loading .sk-grid { grid-template-columns: 1fr; gap: 14px; }
  .page-loading .ink-loading { min-height: 220px; }
}

/* ============ 空状态 ============ */
.empty-state { text-align: center; padding: 80px 0; color: var(--ink-soft); }
.empty-state .empty-seal {
  width: 56px; height: 56px; border-radius: 50%;
  border: 1px dashed var(--gold-light); color: var(--gold);
  font: 24px var(--font-display);
  place-items: center; display: inline-grid; margin-bottom: 16px;
}
.empty-state p { font-size: 13px; letter-spacing: .1em; }

/* ============ 动画 ============ */
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes fadeInUp { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: translateY(0); } }
@keyframes slideInLeft { from { opacity: 0; transform: translateX(-24px); } to { opacity: 1; transform: translateX(0); } }
@keyframes slideInRight { from { opacity: 0; transform: translateX(24px); } to { opacity: 1; transform: translateX(0); } }
@keyframes scaleIn { from { opacity: 0; transform: scale(.92); } to { opacity: 1; transform: scale(1); } }
@keyframes heroReveal {
  from { opacity: 0; transform: translateY(24px); filter: blur(6px); }
  to { opacity: 1; transform: translateY(0); filter: blur(0); }
}
@keyframes toastIn { from { opacity: 0; transform: translateY(-12px); } to { opacity: 1; transform: translateY(0); } }

.fade-in { animation: fadeIn .5s ease both; }
.fade-in-up { animation: fadeInUp .55s cubic-bezier(.2,.78,.34,1) both; }
.hero-reveal { animation: heroReveal .7s cubic-bezier(.2,.78,.34,1) both; }
.stagger > * { animation: fadeInUp .55s cubic-bezier(.2,.78,.34,1) both; }
.stagger > *:nth-child(1) { animation-delay: .04s; }
.stagger > *:nth-child(2) { animation-delay: .1s; }
.stagger > *:nth-child(3) { animation-delay: .16s; }
.stagger > *:nth-child(4) { animation-delay: .22s; }
.stagger > *:nth-child(5) { animation-delay: .28s; }
.stagger > *:nth-child(6) { animation-delay: .34s; }
.stagger > *:nth-child(7) { animation-delay: .4s; }
.stagger > *:nth-child(8) { animation-delay: .46s; }

/* 滚动渐显 */
.reveal-observe { opacity: 0; transform: translateY(24px); transition: opacity .6s ease, transform .6s ease; }
.reveal-observe.is-visible { opacity: 1; transform: translateY(0); }

/* 呼吸光晕 */
.glow-ring {
  border: 1px solid rgba(180, 150, 62, .35);
  box-shadow: 0 0 0 0 rgba(180, 150, 62, .25);
  animation: glowPulse 2.4s infinite;
}

/* 家庭行迹舆图 */
.map-archive-hero {
  margin: 16px 32px 0;
  min-height: 188px;
  padding: 28px 36px 24px;
  position: relative;
  overflow: hidden;
  color: #fff5dd;
  background: linear-gradient(115deg, #1a3328 0%, #2d4a3e 64%, #496454 100%);
  border: 1px solid #b8963e88;
  border-radius: var(--radius-lg);
  box-shadow: 0 18px 36px #1a33282b;
}
.map-archive-hero::after { content: ""; position: absolute; width: 310px; height: 310px; right: 7%; top: -150px; border: 1px solid #f5d98a35; border-radius: 50%; box-shadow: 0 0 0 28px #f5d98a0b, 0 0 0 56px #f5d98a08; }
.map-archive-copy { position: relative; z-index: 1; }
.map-kicker { color: #f5d98a; font-size: 10px; letter-spacing: .2em; }
.map-archive-copy h1 { margin: 12px 0 6px; font: 34px var(--font-display); letter-spacing: .12em; }
.map-archive-copy p { color: #fff5ddb8; font-size: 13px; letter-spacing: .08em; }
.map-archive-seal { position: absolute; left: 210px; top: 18px; width: 44px; height: 44px; display: grid; place-items: center; border: 1px solid #f5d98a99; border-radius: 50%; color: #f5d98a; font: 20px var(--font-display); transform: rotate(-12deg); }
.map-archive-stats { position: absolute; right: 36px; bottom: 26px; z-index: 1; display: flex; gap: 30px; }
.map-archive-stats div { min-width: 70px; text-align: center; border-left: 1px solid #f5d98a55; padding-left: 22px; }
.map-archive-stats b { display: block; color: #f5d98a; font: 28px var(--font-display); }
.map-archive-stats span { color: #fff5dd99; font-size: 10px; letter-spacing: .1em; }
.map-toolbar { margin: 22px 32px 0; display: flex; align-items: center; justify-content: space-between; gap: 18px; }
.map-toolbar-label, .map-section-heading span { display: block; color: var(--cinnabar); font-size: 10px; letter-spacing: .16em; }
.map-toolbar strong { display: block; margin-top: 5px; color: var(--bronze-deep); font: 20px var(--font-display); letter-spacing: .05em; }
.map-toolbar-actions { display: flex; align-items: center; gap: 10px; }
.map-back-btn { color: var(--bronze-deep); background: transparent; border: 1px solid var(--line); padding: 8px 14px; border-radius: 4px; font-size: 12px; cursor: pointer; }
/* 年份/季节筛选 + 全屏 */
.map-filter-row { margin: 14px 32px 0; display: flex; align-items: center; gap: 22px; flex-wrap: wrap; }
.map-filter-group { display: flex; align-items: center; gap: 6px; }
.map-filter-label { font: 12px var(--font-display); color: var(--ink-soft); letter-spacing: .08em; margin-right: 4px; }
.map-filter-group button {
  padding: 4px 12px; border: 1px solid var(--line); border-radius: 14px;
  background: var(--paper-light); color: var(--ink-soft); font-size: 12px;
  cursor: pointer; transition: all .2s;
}
.map-filter-group button:hover { border-color: var(--gold); color: var(--bronze-deep); }
.map-filter-group button.active { background: var(--bronze-deep); border-color: var(--bronze-deep); color: #fff5dd; }
.map-fullscreen-btn {
  margin-left: auto; padding: 5px 14px;
  border: 1px solid var(--gold); border-radius: 14px;
  background: transparent; color: var(--bronze-deep); font-size: 12px;
  cursor: pointer; transition: all .2s;
}
.map-fullscreen-btn:hover { background: var(--bronze-deep); border-color: var(--bronze-deep); color: #fff5dd; }
.map-container.is-fullscreen {
  position: fixed; inset: 0; z-index: 999;
  margin: 0 !important; border-radius: 0; border: none;
  height: 100vh !important; max-height: 100vh;
  background: var(--paper-light);
}
.map-container.is-fullscreen .map-chart { height: 100%; }
/* 足迹时间线 */
.map-timeline-heading { align-items: center; }
/* 折叠态：醒目的大展开按钮区域 */
.map-timeline-collapsed {
  margin-top: 16px; padding: 20px 24px;
  border: 1px dashed var(--gold); border-radius: 10px;
  background: linear-gradient(135deg, #2d4a3e08, #d4b86a14);
  cursor: pointer; transition: all .25s;
}
.map-timeline-collapsed:hover {
  border-color: var(--cinnabar); border-style: solid;
  background: linear-gradient(135deg, #2d4a3e12, #d4b86a20);
  box-shadow: 0 6px 18px #182f3714;
}
.mtc-inner { display: flex; align-items: center; gap: 14px; }
.mtc-seal {
  flex: 0 0 42px; width: 42px; height: 42px; border-radius: 50%;
  border: 1.5px solid var(--gold-light); background: var(--paper-light);
  display: grid; place-items: center; font: 18px var(--font-display); color: var(--cinnabar);
}
.mtc-copy { flex: 1; min-width: 0; }
.mtc-copy b { display: block; font: 15px var(--font-display); color: var(--bronze-deep); letter-spacing: .04em; }
.mtc-copy small { display: block; margin-top: 3px; font-size: 12px; color: var(--ink-soft); }
.mtc-arrow { flex: 0 0 auto; color: var(--cinnabar); font-size: 16px; transition: transform .25s; }
.map-timeline-collapsed:hover .mtc-arrow { transform: translateY(3px); }
.map-heading-right { display: flex; align-items: center; gap: 14px; }
.map-timeline-toggle {
  padding: 5px 16px; border: 1px solid var(--gold); border-radius: 16px;
  background: transparent; color: var(--bronze-deep); font-size: 12px;
  cursor: pointer; transition: all .2s; white-space: nowrap;
}
.map-timeline-toggle:hover { background: var(--bronze-deep); border-color: var(--bronze-deep); color: #fff5dd; }
/* 滚动容器：最多显示约 6 条高度，超出滚动 */
.map-timeline-scroll {
  max-height: 560px; overflow-y: auto; padding-right: 8px;
  scrollbar-width: thin; scrollbar-color: var(--gold) transparent;
  -webkit-overflow-scrolling: touch;
}
.map-timeline-scroll::-webkit-scrollbar { width: 5px; }
.map-timeline-scroll::-webkit-scrollbar-thumb { background: var(--gold); border-radius: 3px; }
.map-timeline-scroll::-webkit-scrollbar-track { background: transparent; }
.map-timeline { position: relative; padding-left: 54px; }
.map-timeline-line { position: absolute; left: 21px; top: 10px; bottom: 10px; width: 1px; background: linear-gradient(180deg, var(--cinnabar), var(--gold-light), var(--jade)); opacity: .5; }
.map-timeline-item { position: relative; display: flex; gap: 16px; margin-bottom: 16px; }
.mti-dot {
  position: absolute; left: -54px; top: 8px;
  width: 42px; height: 42px; border-radius: 50%;
  display: grid; place-items: center;
  background: var(--paper); border: 1px solid var(--gold);
  color: var(--bronze-deep); font: 11px var(--font-display);
  z-index: 2;
}
.mti-dot.s-春 { border-color: #7abf7a; }
.mti-dot.s-夏 { border-color: #e0a03a; }
.mti-dot.s-秋 { border-color: #d4a05a; }
.mti-dot.s-冬 { border-color: #8fa8c8; }
.mti-body { flex: 1; min-width: 0; padding: 12px 16px; background: var(--paper-light); border: 1px solid var(--line); border-radius: 6px; transition: border-color .2s; }
.mti-body:hover { border-color: var(--gold); }
.mti-meta { display: flex; align-items: center; gap: 8px; font-size: 11px; color: var(--ink-soft); }
.mti-meta b { color: var(--bronze-deep); font: 13px var(--font-display); }
.mti-season { padding: 1px 8px; border-radius: 8px; background: var(--paper-deep); font-size: 10px; }
.mti-meta em { font-style: normal; margin-left: auto; }
.mti-body h3 { margin: 8px 0 0; color: var(--bronze-deep); font: 16px var(--font-display); letter-spacing: .03em; }
html[data-theme="dark"] .mti-body { background: #12140f; }
html[data-theme="dark"] .mti-body h3, html[data-theme="dark"] .mti-meta b { color: #fff5dd; }
.map-back-btn:hover { border-color: var(--gold); color: var(--cinnabar); }
.map-container { min-height: 480px; background: var(--paper-light); }
.map-archive-canvas { margin: 16px 32px 0; height: 540px; overflow: hidden; position: relative; border: 1px solid var(--line); border-radius: var(--radius-lg); box-shadow: inset 0 0 50px #2d4a3e0b; }
.map-archive-canvas::before { content: ""; position: absolute; inset: 0; pointer-events: none; background-image: linear-gradient(#b8963e0e 1px, transparent 1px), linear-gradient(90deg, #b8963e0e 1px, transparent 1px); background-size: 44px 44px; }
.map-chart { width: 100%; height: 100%; position: relative; z-index: 1; }
.map-breadcrumb, .map-visit-count { position: absolute; z-index: 3; background: #fffaf0e8; border: 1px solid var(--gold-light); color: var(--bronze-deep); font-size: 12px; padding: 7px 12px; border-radius: 4px; box-shadow: 0 5px 14px #2d4a3e14; }
.map-breadcrumb { top: 16px; left: 18px; display: flex; gap: 8px; }
.map-breadcrumb a { color: var(--ink-soft); }
.map-breadcrumb span { color: var(--gold); }
.map-visit-count { left: 18px; bottom: 16px; }
.map-visit-count b { color: var(--cinnabar); }
.map-canvas-caption { position: absolute; right: 18px; bottom: 16px; z-index: 2; color: var(--ink-soft); font-size: 11px; letter-spacing: .06em; }
.map-caption-dot { display: inline-block; width: 6px; height: 6px; margin-right: 6px; border-radius: 50%; background: var(--cinnabar); }
.map-record-section { margin: 34px 32px 0; }
.map-section-heading { display: flex; align-items: end; justify-content: space-between; margin-bottom: 16px; }
.map-section-heading h2 { margin-top: 5px; color: var(--bronze-deep); font: 24px var(--font-display); letter-spacing: .06em; }
.map-section-heading em { color: var(--ink-soft); font-size: 11px; font-style: normal; }
.map-city-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.map-city-card { min-height: 150px; padding: 18px; position: relative; cursor: pointer; background: #fffdf7; border: 1px solid var(--line); border-radius: 5px; transition: .25s; }
.map-city-card:hover, .map-province-card:hover { border-color: var(--gold-light); transform: translateY(-3px); box-shadow: 0 10px 24px #2d4a3e14; }
.map-card-index { color: var(--gold); font: 12px var(--font-display); letter-spacing: .08em; }
.map-city-card h3 { margin: 15px 0 4px; color: var(--bronze-deep); font: 20px var(--font-display); }
.map-city-card > b { color: var(--cinnabar); font: 17px var(--font-display); }
.map-city-card small, .map-province-card small { color: var(--ink-soft); font: 10px var(--font-body); margin-left: 3px; }
.map-city-card p { margin: 10px 0 12px; color: var(--ink-soft); font-size: 11px; line-height: 1.7; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.map-card-link { color: var(--cinnabar); font-size: 11px; }
.map-province-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px 14px; }
.map-province-card { display: flex; align-items: center; gap: 16px; padding: 15px 18px; cursor: pointer; background: #fffdf7; border: 1px solid var(--line); border-radius: 5px; transition: .25s; }
.map-province-card h3 { color: var(--bronze-deep); font: 18px var(--font-display); }
.map-province-card p { margin-top: 4px; color: var(--ink-soft); font-size: 10px; }
.map-province-card > b { margin-left: auto; color: var(--cinnabar); font: 22px var(--font-display); }
.map-card-actions { margin-left: auto; display: flex; align-items: center; gap: 10px; }
.map-card-btn { padding: 4px 11px; border: 1px solid var(--line); border-radius: 14px; background: var(--paper-light); color: var(--bronze-deep); font-size: 11px; transition: .2s; }
.map-card-btn:hover { background: var(--cinnabar); color: #fff5dd; border-color: var(--cinnabar); }
.map-arrow { color: var(--gold); font-size: 18px; }
/* 兼容旧调用 */
.map-switcher { display: flex; align-items: center; gap: 12px; margin: 20px 32px 0; }

/* 时间轴卡片 */
.timeline-card:hover {
  border-color: var(--gold-light) !important;
  transform: translateX(4px);
  box-shadow: 0 8px 24px #00000012;
}
@keyframes glowPulse {
  0% { box-shadow: 0 0 0 0 rgba(180, 150, 62, .28); }
  70% { box-shadow: 0 0 0 12px rgba(180, 150, 62, 0); }
  100% { box-shadow: 0 0 0 0 rgba(180, 150, 62, 0); }
}

/* 印章光泽扫过动画（目标网站还原） */
@keyframes sealGlint {
  0%, 68%, 100% { transform: translate(-145%) rotate(14deg); }
  82% { transform: translate(270%) rotate(14deg); }
}

/* 环境漂移动画（目标网站还原） */
@keyframes ambientDrift {
  0% { transform: translate(0, 0) scale(.94); }
  25% { transform: translate(4px, -6px) scale(.96); }
  50% { transform: translate(-2px, 4px) scale(.93); }
  75% { transform: translate(-6px, -2px) scale(.95); }
  100% { transform: translate(0, 0) scale(.94); }
}

/* 内容上升动画（目标网站还原） */
@keyframes contentRise {
  0% { opacity: 0; transform: translateY(16px); }
  100% { opacity: 1; transform: translateY(0); }
}



/* 环境漂移背景 */
.ambient-layer {
  position: absolute; inset: 0;
  pointer-events: none;
  animation: ambientDrift 12s ease-in-out infinite;
  opacity: .3;
}

/* 统计栏（目标网站还原） */
.stats-bar {
  border-radius: var(--radius);
  border: 1px solid var(--line);
  backdrop-filter: blur(8px);
  background: #ffffffbf;
  gap: 0; margin: 24px 32px 0;
  display: flex; overflow: hidden;
}
.stat-item {
  border-right: 1px solid var(--line);
  flex-direction: column; flex: 1;
  align-items: center; gap: 6px;
  padding: 22px 20px; display: flex;
}
.stat-item:last-child { border-right: none; }
.stat-item .stat-value { font: 28px var(--font-display); color: var(--cinnabar); letter-spacing: .04em; }
.stat-item .stat-label { font-size: 11px; color: var(--ink-soft); letter-spacing: .1em; }

/* 玻璃质感增强 */
.surface-glass {
  background: #fffdf7b8;
  backdrop-filter: blur(12px);
  box-shadow: 0 18px 42px #22362b24, 0 2px 0 #ffffffad inset;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
}

/* 移动端底部导航 */
.mobile-bottom-nav {
  display: none;
}
@media (max-width: 900px) {
  .mobile-bottom-nav {
    z-index: 120;
    min-height: 60px;
    background: #0f1f18f7;
    border-top: 1px solid #d4b86a85;
    align-items: stretch;
    display: flex;
    position: fixed;
    bottom: 0; left: 0; right: 0;
    max-width: 100vw;
    touch-action: manipulation;
  }
  .mobile-bottom-nav button {
    flex: 1 1 0;
    min-width: 0;
    color: #fff5dd66;
    flex-direction: column;
    align-items: center; justify-content: center; gap: 3px;
    padding: 7px 2px 8px;
    font-size: 10px;
    line-height: 1.1;
    transition: all .2s;
    display: flex;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
  }
  .mobile-bottom-nav button.active { color: var(--gold-light); }
  .mobile-bottom-nav .nav-icon { font-size: 17px; line-height: 1; }
  .mobile-bottom-nav .nav-svg { width: 19px; height: 19px; }
  .main-wrapper { padding-bottom: 72px; }
}
@media (max-width: 480px) {
  .mobile-bottom-nav button { padding: 6px 1px 7px; font-size: 9px; }
  .mobile-bottom-nav .nav-icon { font-size: 15px; }
  .mobile-bottom-nav .nav-svg { width: 17px; height: 17px; }
}

/* ============ Toast ============ */
.toast-wrap { position: fixed; top: 20px; right: 20px; z-index: 300; display: flex; flex-direction: column; gap: 10px; }
.toast {
  background: var(--bronze-deep); color: #fff5dd;
  border-left: 3px solid var(--gold);
  border-radius: 6px; padding: 12px 20px;
  font-size: 13px; letter-spacing: .03em;
  box-shadow: 0 10px 30px #00000033;
  animation: toastIn .3s ease both;
}
.toast.error { border-left-color: var(--cinnabar); }

/* ============ 返回顶部 ============ */
.back-top {
  position: fixed; right: 4px; bottom: 96px; z-index: 90;
  width: 44px; height: 44px; border-radius: 50%;
  background: var(--bronze-deep); color: #fff5dd;
  font-size: 18px; border: 1px solid var(--gold-light);
  box-shadow: 0 8px 24px #2d4a3e4d;
  opacity: 0; pointer-events: none; transition: all .3s;
  display: grid; place-items: center;
}
.back-top.show { opacity: 1; pointer-events: auto; }
.back-top:hover { background: var(--bronze); transform: translateY(-3px); }

/* 移动端：返回顶部避开音乐播放器与底部导航 */
@media (max-width: 640px) {
  .back-top { right: 16px; bottom: 150px; }
}

/* ============ 响应式 ============ */
@media (max-width: 900px) {
  .sidebar { display: none; }
  .main-wrapper { margin-left: 0; }
  .topbar { padding: 0 16px; }
  .topbar-search { max-width: 140px; }
  .time-display, .itinerary-btn { display: none; }
  .topbar-right { gap: 6px; }
  .topbar-nav { display: none; }
  .topbar-menu-btn { display: grid; }
}
@media (max-width: 480px) {
  .topbar { padding: 0 10px; }
  .topbar-search { display: none; }
  .topbar-left .site-title { font-size: 20px; }
  .theme-toggle-btn { width: 30px; height: 30px; font-size: 14px; }
  .topbar-menu-btn { width: 30px; height: 30px; }
  .hero-banner { margin: 16px 16px 0; height: auto; min-height: 460px; }
  .hero-content { max-width: 100%; padding: 48px 24px !important; }
  .hero-deco { opacity: .3; width: 40%; }
  .section-header { margin: 24px 16px 0; }
  .hot-cards { grid-template-columns: repeat(2, 1fr); }
  .hot-card:first-child { grid-column: span 2; }
  .featured-cards, .post-grid, .province-grid, .gallery-grid { margin-left: 16px; margin-right: 16px; }
  .detail-wrap { margin: 16px; }
  .article-card { padding: 20px; }
  .about-hero { padding: 40px 20px; margin: 16px 16px 0; }
  .about-content { margin: 16px; padding: 24px 20px; }
  .hero-stats { flex-wrap: wrap; }
  .hero-stat { padding: 0 14px; }
  .map-archive-hero, .map-toolbar, .map-archive-canvas, .map-record-section, .map-filter-row { margin-left: 16px; margin-right: 16px; }
  .map-archive-hero { min-height: 214px; padding: 24px 22px; }
  .map-archive-copy h1 { font-size: 28px; }
  .map-archive-seal { left: auto; right: 22px; top: 25px; }
  .map-archive-stats { left: 22px; right: 22px; bottom: 20px; justify-content: space-between; gap: 0; }
  .map-archive-stats div { min-width: 0; flex: 1; padding-left: 10px; }
  .map-archive-stats b { font-size: 23px; }
  .map-archive-canvas { height: 430px; }
  .map-toolbar { align-items: flex-start; flex-direction: column; gap: 12px; }
  .map-toolbar-actions { width: 100%; justify-content: space-between; }
  .map-city-grid { grid-template-columns: repeat(2, 1fr); }
  .posts-archive-hero, .posts-control-panel, .posts-archive-grid { margin-left: 16px; margin-right: 16px; }
  .posts-archive-hero { min-height: 218px; padding: 25px 22px; }
  .posts-archive-copy h1 { font-size: 30px; }
  .posts-archive-seal { top: 24px; right: 24px; }
  .posts-archive-stats { left: 22px; right: 22px; bottom: 20px; justify-content: space-between; gap: 0; }
  .posts-archive-stats div { min-width: 0; flex: 1; padding-left: 8px; }
  .posts-control-panel { padding: 16px; }
  .posts-control-row { align-items: stretch; flex-direction: column; }
  .posts-category-control, .posts-order-control { width: 100%; }
}

/* 省份 tab：全部展示，放不下自动换行 */
.posts-category-control { flex-wrap: wrap; }
.posts-category-control button { flex: 0 0 auto; white-space: nowrap; }

/* 热门搜索词 */
.posts-hot-keywords {
  display: flex !important; align-items: center; flex-wrap: wrap; gap: 8px;
  margin-top: 12px; padding-top: 12px;
  border-top: 1px dashed var(--line);
}
.posts-hot-keywords .hk-label { font-size: 12px; color: var(--ink-soft); }
.hk-tag {
  padding: 3px 12px; border: 1px solid var(--line); border-radius: 14px;
  background: #fffaf0; color: var(--ink-soft); font-size: 12px;
  cursor: pointer; transition: all .2s;
}
.hk-tag:hover { border-color: var(--gold); color: var(--bronze-deep); background: #fffdf5; }

/* 多维筛选：年份 / 季节 */
.posts-filter-row {
  display: flex !important; align-items: center; gap: 24px; flex-wrap: wrap;
  margin-top: 14px;
}
.posts-filter-group {
  display: flex !important; align-items: center; gap: 6px; flex-wrap: wrap;
}
.posts-filter-label {
  font: 12px var(--font-display); color: var(--ink-soft);
  letter-spacing: .08em; margin-right: 4px;
  flex-shrink: 0; white-space: nowrap;
}
.posts-filter-group button {
  padding: 4px 12px; border: 1px solid var(--line); border-radius: 14px;
  background: var(--paper-light); color: var(--ink-soft); font-size: 12px;
  cursor: pointer; transition: all .2s;
  white-space: nowrap; flex-shrink: 0;
}
.posts-filter-group button:hover { border-color: var(--gold); color: var(--bronze-deep); }
.posts-filter-group button.active {
  background: var(--bronze-deep); border-color: var(--bronze-deep);
  color: #fff5dd;
}

/* 视图切换（网格 / 列表） */
.posts-view-toggle { margin-left: auto; display: flex; gap: 6px; }
.posts-view-toggle button {
  width: 34px; height: 30px; display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--line); border-radius: 8px; background: var(--paper-light);
  color: var(--ink-soft); font-size: 15px; cursor: pointer; transition: all .2s;
}
.posts-view-toggle button:hover { border-color: var(--gold); color: var(--bronze-deep); }
.posts-view-toggle button.active { background: var(--bronze-deep); border-color: var(--bronze-deep); color: #fff5dd; }

/* 列表视图 */
.posts-list-view { display: flex; flex-direction: column; gap: 14px; }
.post-list-item {
  display: flex; gap: 18px; padding: 16px; border: 1px solid var(--line);
  border-radius: 12px; background: var(--paper-light); cursor: pointer;
  transition: all .25s;
}
.post-list-item:hover { border-color: var(--gold); box-shadow: 0 8px 24px #00000014; transform: translateY(-2px); }
.post-list-thumb { flex: none; width: 180px; height: 120px; border-radius: 8px; overflow: hidden; }
.post-list-thumb .seal-img, .post-list-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.post-list-body { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.post-list-top { display: flex; align-items: center; gap: 12px; }
.post-list-top .post-tag { margin: 0; }
.post-list-top .posts-card-date { color: var(--ink-soft); font-size: 12px; }
.post-list-tags { display: flex; gap: 6px; flex-wrap: wrap; }
.post-list-tags i { font-style: normal; padding: 1px 8px; border-radius: 10px; background: var(--gold-pale); color: var(--bronze-deep); font-size: 11px; }
.post-list-body h3 { font: 700 17px var(--font-display); color: var(--bronze-deep); margin: 8px 0 6px; letter-spacing: .02em; }
.post-list-meta { display: flex; gap: 14px; flex-wrap: wrap; font-size: 12px; color: var(--ink-soft); margin-bottom: 6px; }
.post-list-meta span { position: relative; }
.post-list-meta span + span::before { content: '·'; position: absolute; left: -9px; color: var(--line); }
.post-list-body .post-desc {
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; font-size: 13px; color: var(--ink-soft); line-height: 1.7; margin: 0;
}

/* 卡片 hover 标签预览 */
.post-tags-preview {
  position: absolute; left: 12px; bottom: 12px; right: 12px;
  display: flex; flex-wrap: wrap; gap: 5px;
  opacity: 0; transform: translateY(6px);
  transition: opacity .25s, transform .25s;
  pointer-events: none;
}
.post-card:hover .post-tags-preview, .post-card:focus-within .post-tags-preview {
  opacity: 1; transform: translateY(0);
}
.post-tags-preview span {
  padding: 2px 8px; border-radius: 10px;
  background: rgba(15, 31, 24, .78); color: #fff5dd;
  font-size: 10px; backdrop-filter: blur(3px);
}
@media (max-width: 760px) {
  .posts-filter-row { gap: 14px; }
  .posts-filter-label { font-size: 11px; }
  .posts-order-control { justify-content: center; }
  .posts-search-row { flex-wrap: wrap; }
  .posts-search-row .search-input { flex: 1 1 calc(100% - 35px); }
  .posts-search-btn { margin-left: 27px; }
  .posts-province-filter { width: 100%; }
}
@media (max-width: 560px) { 
  .topbar-search input { width: 100px; }
  .site-title { font-size: 22px; }
  .hero-title-row h1 { font-size: 28px; }
  .map-archive-hero { min-height: 230px; }
  .map-archive-copy p { max-width: 210px; line-height: 1.7; }
  .map-archive-stats span { font-size: 9px; }
  .map-archive-canvas { height: 355px; }
  .map-canvas-caption { right: 12px; bottom: 12px; font-size: 10px; }
  .map-breadcrumb, .map-visit-count { left: 12px; }
  .map-record-section { margin-top: 28px; }
  .map-section-heading h2 { font-size: 21px; }
  .map-city-grid, .map-province-grid { grid-template-columns: 1fr; }
  .map-city-card { min-height: 0; }
  .map-province-card { gap: 10px; padding: 13px 12px; }
  .map-province-card h3 { font-size: 16px; }
  .map-province-card p { max-width: 150px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
}

/* 手机端：省域行迹档案改为垂直卡片布局，元素不再挤在一行 */
@media (max-width: 560px) {
  .map-province-card {
    flex-direction: column; align-items: flex-start; gap: 8px;
    padding: 14px 14px;
  }
  .map-province-card > b { margin-left: 0; font-size: 18px; }
  .map-card-actions { margin-left: 0; width: 100%; justify-content: space-between; }
  .map-card-btn { flex: 1; text-align: center; padding: 6px 11px; }
  .map-arrow { display: none; }
  .map-card-index { font-size: 11px; }
  .map-province-card h3 { font-size: 16px; }
  .map-province-card p { max-width: 100%; white-space: normal; }
}
@media (max-width: 560px) {
  .topbar-search input { width: 100px; }
  .site-title { font-size: 22px; }
  .hero-title-row h1 { font-size: 28px; }
}

/* Hero 中间地图区域 */
.hero-map-shell {
  z-index: 4;
  background: rgba(245, 240, 228, .15);
  border: 1px solid #b8963e44;
  position: absolute;
  inset: 22px 28% 18px;
  box-shadow: inset 0 0 24px #2d4a3e10;
  border-radius: 8px; overflow: hidden;
}
.hero-map-echarts { width: 100% !important; height: 100% !important; position: absolute; inset: 0; }
.hero-map-caption {
  color: var(--bronze-deep); letter-spacing: .12em;
  pointer-events: none; white-space: nowrap;
  font-size: 11px; position: absolute;
  bottom: 10px; left: 50%; transform: translate(-50%);
}

/* Hero 右侧城市面板 */
.hero-city-panel {
  z-index: 3; border-radius: var(--radius);
  border: 1px solid var(--line); backdrop-filter: blur(12px);
  background: #ffffffeb; width: 320px;
  padding: 16px 18px; position: absolute;
  top: 16px; bottom: 16px; right: 24px;
  overflow-y: auto; overflow-x: hidden;
  box-shadow: 0 8px 32px #0000001a;
}
.hero-city-panel::-webkit-scrollbar { width: 4px; }
.hero-city-panel::-webkit-scrollbar-thumb { background: #b8963e66; border-radius: 2px; }
.hero-city-panel-header { justify-content: space-between; align-items: center; margin-bottom: 10px; display: flex; }
.hero-city-panel-header span { color: var(--cinnabar); letter-spacing: .14em; font-size: 11px; font-weight: 600; }
.city-nav-btns { display: flex; gap: 4px; }
.city-nav-btns button { width: 26px; height: 26px; border-radius: 50%; background: var(--bronze-deep); color: #fff5dd; font-size: 12px; display: grid; place-items: center; transition: all .2s; border: none; cursor: pointer; }
.city-nav-btns button:hover { background: var(--cinnabar); transform: scale(1.08); }
.hero-city-name { font: 22px var(--font-display); color: var(--bronze-deep); align-items: center; gap: 9px; margin-bottom: 3px; display: flex; }
.hero-city-seal { background: var(--cinnabar); color: #fff5dd; border: 1.5px solid var(--gold); border-radius: 50%; place-items: center; width: 34px; height: 34px; font-size: 12px; display: inline-grid; box-shadow: 0 2px 8px #8b2e224d; }
.hero-city-subtitle { color: var(--cinnabar); letter-spacing: .14em; margin-bottom: 8px; font-size: 11px; font-weight: 600; }
.hero-city-summary { color: var(--ink-soft); margin: 0 0 12px; font-size: 11.5px; line-height: 1.7; }
.hero-city-highlights { flex-wrap: wrap; gap: 6px; margin-bottom: 12px; display: flex; }
.hl-item {
  background: #2d4a3e0a; color: var(--bronze-deep);
  border: 1px solid #b8963e40; border-radius: 14px;
  padding: 3px 10px; font-size: 11px;
  letter-spacing: .04em; cursor: pointer;
  transition: all .2s;
}
.hl-item:hover { background: var(--cinnabar); color: #fff5dd; border-color: var(--cinnabar); transform: translateY(-1px); }
.hero-city-stats { display: flex; gap: 10px; margin-bottom: 12px; }
.hero-city-stat { flex: 1; text-align: center; background: #2d4a3e0a; border: 1px solid #b8963e33; border-radius: 6px; padding: 7px 6px; }
.hero-city-stat-value { font: 22px var(--font-display); color: var(--cinnabar); }
.hero-city-stat-label { font-size: 10px; color: var(--ink-soft); letter-spacing: .08em; margin-top: 1px; }
.hero-city-trip-btn { width: 100%; padding: 10px; background: var(--bronze-deep); color: #fff5dd; border-radius: 6px; font-size: 13px; font-weight: 600; letter-spacing: .04em; transition: all .2s; border: 1px solid transparent; cursor: pointer; }
.hero-city-trip-btn:hover { background: var(--bronze); border-color: var(--gold-light); transform: translateY(-1px); box-shadow: 0 6px 16px #2d4a3e26; }

/* 通知铃铛 */
.notification-wrap { display: inline-flex; position: relative; }
.notification-bell { color: var(--ink-soft); padding: 4px; transition: color .2s; display: flex; align-items: center; }
.notification-bell:hover { color: var(--cinnabar); }
.notification-popover { background: var(--bronze-deep); color: #fff5dd; border: 1px solid var(--gold); border-radius: var(--radius-sm); z-index: 60; width: min(280px, 100vw - 24px); padding: 12px 14px; font-size: 11px; line-height: 1.7; position: absolute; top: calc(100% + 8px); right: 0; box-shadow: 0 10px 24px #00000029; }
.notify-title { font-weight: 600; color: var(--gold-light); margin-bottom: 6px; font-size: 12px; }

/* 行程按钮 */
.itinerary-btn { display: inline-flex; align-items: center; gap: 6px; padding: 6px 14px; border: 1px solid var(--line); border-radius: 20px; font-size: 12px; color: var(--ink-soft); transition: all .2s; }
.itinerary-btn:hover { border-color: var(--gold-light); color: var(--bronze-deep); }
.itinerary-btn b { color: var(--cinnabar); font-size: 14px; }

/* 时间显示（可点击展开日历） */
.calendar-wrap { position: relative; display: inline-flex; }
.time-display { text-align: right; color: var(--bronze-deep); line-height: 1.3; display: grid; cursor: pointer; padding: 2px 4px; border-radius: 6px; transition: background .2s; }
.time-display:hover { background: var(--gold-pale); }
.time-display strong { font: 18px var(--font-display); letter-spacing: .04em; }
.time-display span { font-size: 11px; color: var(--ink-soft); letter-spacing: .06em; }

/* 日历弹层 */
.calendar-popover {
  position: absolute; top: calc(100% + 8px); right: 0; z-index: 70;
  width: 320px; background: var(--card-bg, #fffdf6); border: 1px solid var(--gold);
  border-radius: 12px; box-shadow: 0 12px 32px #00000026; padding: 14px 16px;
}
.cal-head { display: flex; align-items: center; justify-content: space-between; gap: 4px; margin-bottom: 10px; }
.cal-nav { width: 28px; height: 28px; border: 1px solid var(--line); border-radius: 6px; color: var(--bronze-deep); font-size: 14px; line-height: 1; display: inline-flex; align-items: center; justify-content: center; transition: all .2s; background: transparent; }
.cal-nav:hover { border-color: var(--gold); color: var(--cinnabar); background: var(--gold-pale); }
.cal-title { flex: 1; text-align: center; font: 15px var(--font-display); color: var(--bronze-deep); letter-spacing: .06em; cursor: pointer; }
.cal-title:hover { color: var(--cinnabar); }
.cal-week { display: grid; grid-template-columns: repeat(7, 1fr); margin-bottom: 4px; }
.cal-week span { text-align: center; font-size: 11px; color: var(--ink-soft); padding: 4px 0; }
.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.cal-cell { position: relative; aspect-ratio: 1; display: inline-flex; align-items: center; justify-content: center; border-radius: 6px; cursor: default; }
.cal-cell .cal-day { font-size: 13px; color: var(--ink); }
.cal-cell.out .cal-day { color: #c9c2b2; opacity: .5; }
.cal-cell:hover { background: var(--gold-pale); }
.cal-cell.today { background: var(--gold-pale); }
.cal-cell.today .cal-day { color: var(--cinnabar); font-weight: 700; }
.cal-cell.has { cursor: pointer; }
.cal-cell.has .cal-day { color: var(--cinnabar); font-weight: 600; }
.cal-dot { position: absolute; bottom: 5px; left: 50%; transform: translateX(-50%); width: 5px; height: 5px; border-radius: 50%; background: var(--cinnabar); }
.cal-cell.has:hover { background: var(--cinnabar); }
.cal-cell.has:hover .cal-day { color: #fff; }
.cal-cell.has:hover .cal-dot { background: #fff; }
.cal-foot { display: flex; align-items: center; justify-content: space-between; margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--line); }
.cal-legend { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; color: var(--ink-soft); }
.cal-legend .cal-dot { position: static; transform: none; }
.cal-today-btn { font-size: 11px; color: var(--bronze-deep); border: 1px solid var(--line); border-radius: 6px; padding: 3px 10px; transition: all .2s; background: transparent; }
.cal-today-btn:hover { border-color: var(--gold); color: var(--cinnabar); }

/* Hero 响应式 */
@media (max-width: 1200px) {
  .hero-map-shell { inset: 22px 320px 18px 42%; }
  .hero-content { max-width: 38%; padding: 0 28px; }
}
@media (max-width: 900px) {
  .hero-map-shell { display: none; }
  .hero-city-panel { display: none; }
  .hero-content { max-width: 100%; }
}

/* ============ 国风悬浮音乐播放器 ============ */
.music-player {
  position: fixed;
  right: 22px;
  bottom: 24px;
  z-index: 600;
}
.mp-fab {
  width: 54px; height: 54px;
  border-radius: 50%;
  background: linear-gradient(150deg, var(--bronze-deep), var(--bronze));
  color: #f5d98a;
  display: grid; place-items: center;
  border: 1.5px solid var(--gold-light);
  box-shadow: 0 8px 24px #2d4a3e55, inset 0 0 12px #f5d98a26;
  cursor: pointer;
  position: relative;
  transition: transform .25s cubic-bezier(.2,.78,.34,1), box-shadow .25s;
}
.mp-fab:hover { transform: translateY(-3px) rotate(8deg); box-shadow: 0 12px 30px #2d4a3e66, inset 0 0 14px #f5d98a38; }
.mp-fab svg { filter: drop-shadow(0 1px 2px #00000033); }
/* 播放时胶囊旁的停止小按钮 */
.mp-stop-dot {
  position: absolute; top: -4px; left: -4px;
  width: 20px; height: 20px; border-radius: 50%;
  background: var(--cinnabar); color: #fff5dd;
  border: 1.5px solid #fff5dd; cursor: pointer;
  font-size: 9px; line-height: 1; display: grid; place-items: center;
  box-shadow: 0 2px 8px #8b2e2266; z-index: 2;
  transition: transform .18s;
}
.mp-stop-dot:hover { transform: scale(1.15); }
.mp-fab-word {
  font: bold 26px var(--font-display);
  color: #f5d98a;
  text-shadow: 0 2px 4px #00000033;
  line-height: 1;
  margin-top: 2px;
}
/* 均衡器小动画 */
.mp-eq { position: absolute; right: -4px; bottom: -4px; display: flex; gap: 2px; align-items: flex-end; height: 14px; }
.mp-eq i {
  width: 3px; background: var(--cinnabar); border-radius: 1px;
  animation: mpEq 1s ease-in-out infinite;
}
.mp-eq i:nth-child(2) { animation-delay: .2s; }
.mp-eq i:nth-child(3) { animation-delay: .4s; }
@keyframes mpEq {
  0%, 100% { height: 4px; } 50% { height: 14px; }
}

/* 展开面板 */
.mp-panel {
  width: 320px;
  background: linear-gradient(165deg, #fffaf0, #f0e4c8);
  border: 1px solid var(--gold-light);
  border-radius: 14px;
  box-shadow: 0 18px 46px #2d4a3e44;
  overflow: hidden;
  animation: mpPanelIn .3s cubic-bezier(.2,.78,.34,1);
}
@keyframes mpPanelIn {
  from { opacity: 0; transform: translateY(16px) scale(.96); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
.mp-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 16px;
  background: linear-gradient(90deg, var(--bronze-deep), var(--bronze));
  color: #fff5dd;
}
.mp-title { font: 15px var(--font-display); letter-spacing: .3em; }
.mp-close { background: none; border: none; color: #fff5ddaa; font-size: 20px; cursor: pointer; line-height: 1; padding: 2px 4px; }
.mp-close:hover { color: #f5d98a; }
.mp-head-actions { display: flex; align-items: center; gap: 10px; }
.mp-stop-btn { background: rgba(255,245,221,.14); border: 1px solid #fff5dd88; color: #fff5dd; width: 24px; height: 24px; border-radius: 6px; cursor: pointer; font-size: 11px; line-height: 1; display: grid; place-items: center; transition: all .18s; }
.mp-stop-btn:hover { background: var(--cinnabar); border-color: var(--cinnabar); }

/* 当前播放 */
.mp-now { display: flex; align-items: center; gap: 12px; padding: 14px 16px 8px; }
.mp-cover {
  width: 52px; height: 52px; flex: none;
  border-radius: 50%;
  background: linear-gradient(150deg, var(--cinnabar), var(--cinnabar-light));
  color: #fff5dd;
  border: 2px solid var(--gold-light);
  display: grid; place-items: center;
  font: 20px var(--font-display);
  box-shadow: 0 4px 12px #8b2e224d;
  overflow: hidden;
}
.mp-cover-img { width: 100%; height: 100%; object-fit: cover; display: block; }
.mp-cover.spinning { animation: mpSpin 8s linear infinite; }
@keyframes mpSpin { to { transform: rotate(360deg); } }
.mp-now-meta { flex: 1; min-width: 0; }
.mp-song { font: 15px var(--font-display); color: var(--bronze-deep); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mp-artist { font-size: 11px; color: var(--ink-soft); letter-spacing: .06em; margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mp-play {
  width: 40px; height: 40px; flex: none;
  border-radius: 50%;
  background: var(--cinnabar); color: #fff5dd;
  border: 1.5px solid var(--gold-light);
  display: grid; place-items: center; cursor: pointer;
  transition: transform .2s;
}
.mp-play:hover { transform: scale(1.08); }
.mp-play:disabled { opacity: .4; cursor: not-allowed; }

/* 进度条 */
.mp-progress {
  height: 4px; border-radius: 2px;
  background: #b8963e33;
  margin: 6px 16px 2px; cursor: pointer;
  position: relative;
}
.mp-progress-fill {
  height: 100%; border-radius: 2px;
  background: linear-gradient(90deg, var(--gold), var(--cinnabar));
  width: 0;
}
.mp-time { display: flex; justify-content: space-between; padding: 0 16px; font-size: 10px; color: var(--ink-soft); letter-spacing: .04em; }

/* 控制条 */
.mp-controls {
  display: flex; align-items: center; gap: 6px;
  padding: 6px 16px 12px;
}
.mp-btn {
  width: 34px; height: 34px; border-radius: 50%;
  background: #2d4a3e0d; color: var(--bronze-deep);
  border: 1px solid #b8963e44;
  display: grid; place-items: center; cursor: pointer;
  transition: all .2s;
}
.mp-btn:hover { background: var(--bronze-deep); color: #f5d98a; border-color: var(--gold-light); transform: translateY(-1px); }
.mp-btn:disabled { opacity: .35; cursor: not-allowed; transform: none; }
.mp-volume { display: flex; align-items: center; gap: 6px; flex: 1; margin-left: 4px; color: var(--ink-soft); }
.mp-volume input[type=range] {
  flex: 1; height: 3px; -webkit-appearance: none; appearance: none;
  background: #b8963e44; border-radius: 2px; cursor: pointer; accent-color: var(--cinnabar);
}
.mp-volume input[type=range]::-webkit-slider-thumb {
  -webkit-appearance: none; width: 11px; height: 11px; border-radius: 50%;
  background: var(--cinnabar); border: 1.5px solid var(--gold-light); cursor: pointer;
}

/* 播放列表 */
.mp-list { border-top: 1px dashed var(--gold-light); padding: 8px 0 12px; max-height: 180px; overflow-y: auto; }
.mp-list-head { padding: 2px 16px 6px; font-size: 11px; color: var(--ink-soft); letter-spacing: .16em; }
.mp-list-head span { color: var(--cinnabar); font-weight: 600; }
.mp-list-item {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 16px; cursor: pointer;
  transition: background .15s;
}
.mp-list-item:hover { background: #2d4a3e0a; }
.mp-list-item.mp-active { background: #2d4a3e14; }
.mp-list-idx { font-size: 11px; color: var(--gold); font-family: var(--font-display); }
.mp-list-name { flex: 1; font-size: 13px; color: var(--bronze-deep); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mp-list-item.mp-active .mp-list-name { color: var(--cinnabar); font-weight: 600; }
.mp-list-artist { font-size: 10px; color: var(--ink-soft); }
.mp-empty { padding: 20px; text-align: center; font-size: 12px; color: var(--ink-soft); }

/* 播放器响应式 */
@media (max-width: 640px) {
  .music-player { right: 14px; bottom: 74px; }
  .mp-panel { width: 290px; }
}

/* =====================================================
   第二批新增组件样式
   ===================================================== */
/* 阅读进度条：位于右侧返回顶部按钮正上方（竖向轨道 + 圆形百分比） */
.rp-wrap {
  position: fixed; right: 4px; bottom: calc(96px + 44px + 12px);
  display: flex; flex-direction: column; align-items: center; gap: 7px;
  pointer-events: none;
  z-index: 95;
}
.rp-track {
  width: 4px; height: 150px;
  background: #fff5dd22;
  border-radius: 3px;
  display: flex; flex-direction: column; justify-content: flex-end;
  overflow: hidden;
}
.rp-fill {
  width: 100%;
  background: linear-gradient(180deg, var(--gold-light), var(--cinnabar-light, #a84030));
  border-radius: 3px;
  transition: height .12s ease;
  box-shadow: 0 0 8px var(--gold);
  min-height: 0;
}
.rp-circle {
  width: 42px; height: 42px;
  background: var(--bronze-dark);
  border: 2px solid var(--gold-light);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font: 700 12px var(--font-display);
  color: var(--gold-light);
  letter-spacing: .02em;
  box-shadow: 0 4px 12px #0000004d, 0 2px 4px #00000033;
  flex-direction: column; line-height: 1;
}
.rp-circle span { font-size: 9px; font-weight: 400; color: #fff5dd99; margin-top: 1px; }
/* 窄屏：跟随返回顶部按钮的移动端位置 */
@media (max-width: 640px) {
  .rp-wrap { right: 16px; bottom: calc(150px + 44px + 12px); }
}
/* 文章目录 */
.side-toc { display: flex; flex-direction: column; gap: 6px; max-height: 340px; overflow: auto; }
.side-toc a {
  font-size: 12px; color: var(--ink-soft); text-decoration: none; line-height: 1.5;
  padding: 3px 6px; border-radius: 5px; transition: all .15s;
}
.side-toc a:hover { background: #2d4a3e0d; color: var(--bronze-deep); }
.side-toc a.toc-2 { font-weight: 600; color: var(--bronze-deep); padding-left: 4px; }
.side-toc a.toc-3 { padding-left: 18px; }
.side-toc a.toc-4 { padding-left: 30px; font-size: 11.5px; }

/* 相关游记 */
.related-section { margin-top: 28px; }

/* 评论区 */
.comment-section { margin-top: 28px; }
.comment-box {
  background: var(--paper-light); border: 1px solid var(--line);
  border-radius: var(--radius-lg); padding: 20px;
}
.comment-form { display: flex; flex-direction: column; gap: 10px; margin-bottom: 20px; padding-bottom: 18px; border-bottom: 1px dashed var(--line-strong); }
.comment-form-row { display: flex; gap: 10px; flex-wrap: wrap; }
.comment-form-row + .comment-form-row { margin-top: 10px; }
.comment-contact-row .comment-input { flex: 1 1 130px; min-width: 0; }
.comment-contact-type { flex: 0 0 90px; }
.comment-contact-type .comment-input { width: 100%; flex: none; }
.comment-input {
  flex: 1; min-width: 0; padding: 9px 12px; border: 1px solid var(--line); border-radius: var(--radius-sm);
  font-size: 13px; background: #fff; color: var(--ink); outline: none; transition: border .15s;
}
.comment-textarea {
  width: 100%; min-height: 90px; padding: 10px 12px; border: 1px solid var(--line);
  border-radius: var(--radius-sm); font-size: 13px; background: #fff; color: var(--ink);
  resize: vertical; outline: none; font-family: inherit; transition: border .15s;
}
.comment-input:focus, .comment-textarea:focus { border-color: var(--gold); }
/* 表情选择器 */
.emoji-picker-wrap { position: relative; }
.emoji-trigger-btn {
  position: absolute; right: 8px; bottom: 8px;
  display: flex; align-items: center; gap: 4px;
  padding: 4px 10px; border-radius: 16px;
  background: var(--paper-deep); border: 1px solid var(--line);
  font-size: 11px; color: var(--ink-soft); cursor: pointer;
  transition: all .2s;
}
.emoji-trigger-btn:hover { background: var(--gold-pale); border-color: var(--gold); color: var(--bronze-deep); }
.emoji-trigger-btn span { font-size: 14px; }
.emoji-trigger-btn em { font-style: normal; }
.emoji-picker-panel {
  position: absolute; left: 0; right: 0; top: 100%; margin-top: 6px;
  background: var(--paper-light); border: 1px solid var(--line);
  border-radius: var(--radius); box-shadow: 0 8px 24px -12px rgba(0,0,0,.2);
  z-index: 100; overflow: hidden;
}
.emoji-picker-header {
  display: flex; justify-content: space-between; align-items: center;
  padding: 8px 12px; background: var(--paper-deep); border-bottom: 1px solid var(--line);
  font-size: 11px; color: var(--ink-soft);
}
.emoji-picker-close {
  width: 22px; height: 22px; border-radius: 50%;
  background: transparent; border: none; cursor: pointer;
  color: var(--ink-soft); font-size: 12px;
  display: grid; place-items: center;
  transition: all .15s;
}
.emoji-picker-close:hover { background: var(--cinnabar); color: #fff; }
.emoji-picker-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(32px, 1fr));
  gap: 2px; padding: 8px; max-height: 200px; overflow-y: auto;
}
.emoji-item {
  width: 32px; height: 32px; border: none; background: transparent;
  border-radius: 6px; cursor: pointer; font-size: 20px;
  display: grid; place-items: center;
  transition: all .15s;
}
.emoji-item:hover { background: var(--gold-pale); transform: scale(1.2); }
.comment-captcha-row { display: flex; gap: 10px; align-items: center; }
.comment-captcha-row .comment-input { max-width: 140px; }
.captcha-box {
  width: 110px; height: 40px; flex: none; cursor: pointer; overflow: hidden;
  border: 1px solid var(--line); border-radius: var(--radius-sm); background: #faf6ec;
  display: inline-flex; align-items: center; justify-content: center;
}
.captcha-box svg { display: block; width: 100%; height: 100%; }
.captcha-box:hover { border-color: var(--gold); }
.comment-form-actions { display: flex; align-items: center; justify-content: space-between; }
.comment-hint { font-size: 11px; color: var(--ink-soft); }
.comment-list { display: flex; flex-direction: column; gap: 14px; }
.comment-item { border-bottom: 1px dashed var(--line); padding-bottom: 12px; }
.comment-item:last-child { border-bottom: none; padding-bottom: 0; }
.comment-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; min-width: 0; margin-bottom: 6px; }
.comment-avatar {
  width: 28px; height: 28px; border-radius: 50%; background: var(--bronze-deep); color: #fff5dd;
  font: 13px var(--font-display); display: grid; place-items: center; flex-shrink: 0;
}
.comment-avatar-img { width: 30px; height: 30px; border-radius: 50%; object-fit: cover; flex-shrink: 0; border: 1px solid var(--line-strong); }
/* 评论区头像选择 */
.comment-avatar-row { align-items: flex-start; flex-wrap: wrap; }
/* 评论区头像选择：触发器按钮 + 折叠面板 */
.comment-nick-row { align-items: stretch; }
.comment-avatar-trigger {
  flex-shrink: 0; display: inline-flex; align-items: center; gap: 7px;
  padding: 3px 10px 3px 4px;
  border: 1px solid var(--line); border-radius: 8px; background: var(--paper-light);
  color: var(--ink-soft); cursor: pointer;
  transition: border-color .2s, color .2s, background .2s;
}
.comment-avatar-trigger:hover { border-color: var(--gold); color: var(--bronze-deep); }
.comment-avatar-trigger.active { border-color: var(--cinnabar); color: var(--cinnabar); background: #8b2e2208; }
.comment-avatar-trigger-avatar { width: 30px; height: 30px; border-radius: 6px; overflow: hidden; display: grid; place-items: center; flex-shrink: 0; }
.comment-avatar-trigger-img { width: 100%; height: 100%; object-fit: cover; display: block; }
.comment-avatar-trigger-icon { display: grid; place-items: center; width: 100%; height: 100%; }
.comment-avatar-trigger-text { font-size: 12px; white-space: nowrap; letter-spacing: .03em; }
.comment-avatar-panel {
  margin-top: 10px; padding: 10px 12px;
  background: var(--paper-light); border: 1px dashed var(--line-strong); border-radius: 8px;
  display: flex; flex-direction: column; gap: 10px;
}
.comment-avatar-group { display: flex; flex-direction: column; gap: 4px; }
.comment-avatar-group-label { font-size: 11px; color: var(--bronze-deep); letter-spacing: .06em; }
.comment-avatar-opts { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.comment-avatar-opt {
  width: 30px; height: 30px; padding: 0; border: 2px solid transparent; border-radius: 50%;
  background: none; cursor: pointer; overflow: hidden; transition: all .18s;
}
.comment-avatar-opt img { width: 100%; height: 100%; object-fit: cover; display: block; }
.comment-avatar-opt:hover { transform: scale(1.12); }
.comment-avatar-opt.active { border-color: var(--cinnabar); box-shadow: 0 0 0 2px #8b2e2226; }
.comment-avatar-random { font-size: 11px; color: var(--ink-soft); padding-top: 8px; letter-spacing: .03em; }
.comment-name { font: 13px var(--font-display); color: var(--bronze-deep); }
/* 评论者信息：国风标签（描边小图标 + 文字） */
.comment-site, .comment-mail {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 11px; color: var(--bronze-deep); background: var(--gold-pale);
  padding: 1px 7px; border-radius: 9px; text-decoration: none; letter-spacing: .02em;
  transition: all .18s;
}
.comment-site::before, .comment-mail::before {
  content: ""; width: 11px; height: 11px; flex-shrink: 0;
  background-repeat: no-repeat; background-position: center; background-size: contain;
}
.comment-site::before { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b6352' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><path d='M9 15l6-6'/><path d='M11 6l1-1a4 4 0 0 1 6 6l-1 1'/><path d='M13 18l-1 1a4 4 0 0 1-6-6l1-1'/></svg>"); }
.comment-mail::before { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b6352' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='5' width='18' height='14' rx='2'/><path d='M3 7l9 6 9-6'/></svg>"); }
.comment-site:hover, .comment-mail:hover { color: var(--cinnabar); background: #8b2e2212; transform: translateY(-1px); }
.comment-region {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 11px; color: var(--cinnabar); background: #f4e3e0;
  padding: 1px 8px 1px 6px; border-radius: 9px; letter-spacing: .02em;
}
.comment-region::before {
  content: ""; width: 10px; height: 10px; flex-shrink: 0;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238b2e22' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 21s7-6.1 7-11a7 7 0 1 0-14 0c0 4.9 7 11 7 11Z'/><circle cx='12' cy='10' r='2.5'/></svg>") no-repeat center / contain;
}
.comment-ua {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 11px; color: var(--ink-soft); background: var(--paper-deep);
  padding: 1px 7px; border-radius: 9px;
}
.comment-ua::before {
  content: ""; width: 11px; height: 11px; flex-shrink: 0;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b6352' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><rect x='2' y='4' width='20' height='13' rx='2'/><path d='M8 21h8M12 17v4'/></svg>") no-repeat center / contain;
}
.comment-date { font-size: 11px; color: var(--ink-soft); margin-left: auto; }
.comment-body { font-size: 13px; color: var(--ink); line-height: 1.7; }
.comment-replies { margin-left: 36px; margin-top: 12px; padding-left: 12px; border-left: 2px solid var(--line); display: flex; flex-direction: column; gap: 12px; }
.comment-empty { display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 32px 0; color: var(--ink-soft); font-size: 13px; }
.comment-empty .empty-seal {
  width: 58px; height: 58px; border-radius: 50%;
  border: 1.5px dashed var(--gold); color: var(--cinnabar);
  font: 26px var(--font-display); letter-spacing: 0;
  display: grid; place-items: center;
  background: radial-gradient(circle, var(--gold-pale) 0%, transparent 72%);
  box-shadow: 0 6px 16px #8b2e2214;
}
.comment-empty .empty-seal:hover { background: var(--gold-pale); }
.comment-empty p { margin: 0; letter-spacing: .06em; }

/* 标签云 */
.tag-cloud { display: flex; flex-wrap: wrap; gap: 10px 14px; align-items: baseline; }
.cloud-tag {
  background: transparent; border: none; cursor: pointer; color: #fff5dd; line-height: 1;
  font-family: var(--font-display); letter-spacing: .04em; padding: 4px 2px;
  transition: transform .15s, color .15s;
}
.cloud-tag:hover { transform: translateY(-2px); color: var(--gold-glow); }
.cloud-tag.tag-sm { font-size: 13px; opacity: .75; }
.cloud-tag.tag-md { font-size: 17px; opacity: .85; }
.cloud-tag.tag-lg { font-size: 22px; }
.cloud-tag.tag-xl { font-size: 28px; color: var(--gold-glow); }

/* 主题切换按钮 */
.theme-toggle-btn {
  display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%;
  border: 1px solid var(--line); background: transparent; cursor: pointer; font-size: 15px;
  transition: all .2s;
}
/* 移动端导航汉堡按钮（默认隐藏，移动端显示） */
.topbar-menu-btn {
  display: none; place-items: center; width: 32px; height: 32px; border-radius: 50%;
  border: 1px solid var(--line); background: transparent; cursor: pointer;
  color: var(--ink-soft); transition: all .2s;
}
.topbar-menu-btn:hover { color: var(--bronze-deep); border-color: var(--gold-light); }
/* 移动端导航下拉面板 */
.topbar-menu-panel {
  position: fixed; top: var(--topbar-h); left: 0; right: 0; z-index: 1290;
  display: flex; flex-direction: column;
  background: var(--paper); border-bottom: 1px solid var(--line-strong);
  box-shadow: 0 12px 24px #0001;
  padding: 8px 16px calc(8px + env(safe-area-inset-bottom));
}
.topbar-menu-panel button {
  display: flex; align-items: center; text-align: left;
  padding: 14px 6px; border: none; background: none; border-bottom: 1px dashed var(--line);
  font: 15px var(--font-body); letter-spacing: .1em; color: var(--ink-soft); cursor: pointer;
}
.topbar-menu-panel button:last-child { border-bottom: none; }
.topbar-menu-panel button:hover { color: var(--bronze-deep); }
.topbar-menu-panel button.active { color: var(--cinnabar); font-weight: 600; }
.theme-toggle-btn:hover { border-color: var(--gold); transform: rotate(20deg); }

/* =====================================================
   暗色模式（html[data-theme="dark"]）
   ===================================================== */
:root { --dark-bg: #12140f; --dark-paper: #1a1d16; --dark-paper-deep: #242820; --dark-ink: #e8e2d0; --dark-ink-soft: #9b937f; }
html[data-theme="dark"] {
  --ink: #e8e2d0;
  --ink-soft: #9b937f;
  --paper: #1a1d16;
  --paper-deep: #242820;
  --paper-light: #20231b;
  --bronze: #6b8f82;
  --bronze-deep: #a8c0b2;
  --bronze-dark: #3a4f45;
  --line: #a08c6438;
  --line-strong: #78644659;
  --gold-pale: #2a2d24;
  --paper-texture:
    radial-gradient(circle at 18% 22%, #b8963e0a 0 1px, transparent 1.5px),
    radial-gradient(circle at 72% 68%, #2d4a3e06 0 1px, transparent 1.5px),
    repeating-linear-gradient(0deg, #78644604 0 1px, transparent 1px 4px);
  color-scheme: dark;
}
html[data-theme="dark"] body {
  background: var(--paper-texture), var(--paper);
  color: var(--ink);
}
html[data-theme="dark"] .sidebar,
html[data-theme="dark"] .topbar { background: var(--paper-deep); }
html[data-theme="dark"] .sidebar-nav button { color: var(--ink-soft); }
html[data-theme="dark"] .sidebar-nav button:hover { color: var(--ink); }
html[data-theme="dark"] .topbar-nav button { color: var(--ink-soft); }
html[data-theme="dark"] .topbar-nav button:hover { color: var(--ink); }
html[data-theme="dark"] .topbar-search input,
html[data-theme="dark"] .search-input,
html[data-theme="dark"] .comment-input,
html[data-theme="dark"] .comment-textarea { background: #12140f; color: var(--ink); border-color: var(--line); }
html[data-theme="dark"] .posts-search-row .search-input { background: #12140f; border-color: var(--line-strong); }
html[data-theme="dark"] .time-display strong,
html[data-theme="dark"] .time-display span { color: var(--ink-soft); }
html[data-theme="dark"] .topbar-search,
html[data-theme="dark"] .segmented-control { background: #12140f; border-color: var(--line-strong); }
html[data-theme="dark"] .segmented-control button { color: var(--ink-soft); }
html[data-theme="dark"] .segmented-control button.active { color: var(--ink); }
html[data-theme="dark"] .topbar-menu-btn { border-color: var(--line-strong); color: #cfc6ab; }
html[data-theme="dark"] .topbar-menu-btn:hover { color: var(--gold-light); }
html[data-theme="dark"] .topbar-menu-panel { background: #171a14; }
html[data-theme="dark"] .topbar-menu-panel button { color: #cfc6ab; border-color: #2a2d24; }
html[data-theme="dark"] .topbar-menu-panel button:hover { color: var(--gold-light); }
html[data-theme="dark"] .topbar-menu-panel button.active { color: #e0705f; }

/* 卡片 */
html[data-theme="dark"] .article-card,
html[data-theme="dark"] .side-card,
html[data-theme="dark"] .comment-box,
html[data-theme="dark"] .featured-card,
html[data-theme="dark"] .post-card,
html[data-theme="dark"] .province-card,
html[data-theme="dark"] .hot-card,
html[data-theme="dark"] .spot-card,
html[data-theme="dark"] .about-stat-card,
html[data-theme="dark"] .slide-item { background: var(--paper-light); }

/* 区块 */
html[data-theme="dark"] .hero-banner,
html[data-theme="dark"] .gallery-item,
html[data-theme="dark"] .hero-city-panel,
html[data-theme="dark"] .province-hero,
html[data-theme="dark"] .map-container,
html[data-theme="dark"] .filter-bar { background: var(--paper-light); border-color: var(--line); }

/* 图片占位 */
html[data-theme="dark"] .seal-fallback,
html[data-theme="dark"] .featured-img,
html[data-theme="dark"] .post-img,
html[data-theme="dark"] .hot-card-img,
html[data-theme="dark"] .province-img,
html[data-theme="dark"] .spot-card-img { background: var(--paper-deep); }

html[data-theme="dark"] .timeline-card { background: #1c1f17d9; }

/* 文字链接与标签 */
html[data-theme="dark"] .article-content,
html[data-theme="dark"] .featured-desc,
html[data-theme="dark"] .post-desc,
html[data-theme="dark"] .spot-intro,
html[data-theme="dark"] .comment-body { color: var(--ink); }
html[data-theme="dark"] .article-content a { color: var(--gold-light); }
html[data-theme="dark"] .nav-adjacent a,
html[data-theme="dark"] .tag,
html[data-theme="dark"] .breadcrumb a { color: var(--ink-soft); }
html[data-theme="dark"] .nav-adjacent a:hover { color: var(--ink); }

/* 播放器 */
html[data-theme="dark"] .mp-panel { background: #1a1d16; border-color: var(--line); }
html[data-theme="dark"] .mp-list-item:hover { background: #2d4a3e22; }
html[data-theme="dark"] .mp-list-item.mp-active { background: #2d4a3e33; }
html[data-theme="dark"] .mp-list-name { color: var(--ink); }

/* 分页/按钮 */
html[data-theme="dark"] .pagination button { background: var(--paper-light); color: var(--ink-soft); border-color: var(--line); }
html[data-theme="dark"] .pagination button.active { background: var(--bronze-deep); color: #12140f; }
html[data-theme="dark"] .like-btn { background: var(--paper-light); }

html[data-theme="dark"] img { filter: brightness(.9); }

/* 404 页 */
.nf-page { min-height: 70vh; display: grid; place-items: center; padding: 60px 24px; }
.nf-wrap { text-align: center; }
.nf-code {
  font: 900 96px var(--font-display); letter-spacing: .06em; line-height: 1; margin-bottom: 12px;
  background: linear-gradient(135deg, var(--cinnabar), var(--gold)); -webkit-background-clip: text; background-clip: text; color: transparent;
}
.nf-seal {
  font: 900 60px var(--font-display); display: inline-block; transform: translateY(-6px); margin: 0 6px;
  color: var(--bronze-deep); background: none; -webkit-text-fill-color: currentColor;
}
.nf-wrap h1 { font: 700 24px var(--font-display); color: var(--ink); margin: 8px 0; }
.nf-wrap p { color: var(--ink-soft); font-size: 13px; margin: 6px 0 26px; }
.nf-actions { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }

/* 家庭成员 + 愿望清单 */
.about-section { margin: 40px 32px 0; }
.member-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; }
.member-card {
  display: flex; align-items: center; gap: 20px;
  background: var(--paper-light); border: 1px solid var(--line); border-radius: var(--radius-lg);
  padding: 22px 22px; transition: transform .25s, box-shadow .25s, border-color .25s;
  min-height: 0;
}
.member-card:hover { transform: translateY(-4px); border-color: var(--gold); box-shadow: 0 12px 30px -18px rgba(45,74,62,.5); }
.member-avatar {
  width: 86px; height: 110px; flex: 0 0 auto;
  border-radius: 6px; overflow: hidden;
  background: linear-gradient(135deg, var(--cinnabar), var(--bronze-deep));
  display: grid; place-items: center;
  border: 1.5px solid var(--gold-light);
  box-shadow: 0 6px 16px -8px var(--cinnabar);
  position: relative;
}
.member-avatar::before {
  content: ''; position: absolute; inset: 4px;
  border: 1px solid rgba(255,245,221,.35);
  border-radius: 4px; pointer-events: none;
}
.member-avatar .member-sigil {
  color: #fff5dd;
  font: 38px var(--font-display); letter-spacing: .04em;
  display: grid; place-items: center;
}
.member-avatar.has-photo { background: var(--paper-deep); }
.member-photo { width: 100%; height: 100%; object-fit: cover; display: block; }
.member-body { flex: 1; min-width: 0; }
.member-body h3 { font: 600 18px var(--font-display); color: var(--bronze-deep); margin: 0 0 4px; }
.member-name { font-size: 12px; color: var(--gold); margin-bottom: 8px; letter-spacing: .12em; }
.member-body p { font-size: 12.5px; color: var(--ink-soft); line-height: 1.75; margin: 0; }
/* 成员旅行偏好标签 */
.member-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.member-tag {
  display: inline-block; padding: 3px 10px; font-size: 11px;
  background: var(--gold-pale); color: var(--bronze-deep);
  border: 1px solid var(--gold-light); border-radius: 20px;
  letter-spacing: .04em;
}

/* 成长足迹 */
.milestones-wrap { display: flex; flex-direction: column; gap: 28px; }
.milestone-age-group { position: relative; padding-left: 80px; }
.milestone-age-label {
  position: absolute; left: 0; top: 0;
  width: 64px; height: 64px; border-radius: 50%;
  background: linear-gradient(135deg, var(--cinnabar), var(--bronze-deep));
  color: #fff5dd; font: 600 16px var(--font-display);
  display: grid; place-items: center;
  box-shadow: 0 4px 14px -6px var(--cinnabar);
}
.milestone-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.milestone-card {
  background: var(--paper-light); border: 1px solid var(--line); border-radius: var(--radius);
  overflow: hidden; transition: transform .25s, border-color .25s;
}
.milestone-card:hover { transform: translateY(-3px); border-color: var(--gold); }
.milestone-photo {
  height: 120px; background-size: cover; background-position: center;
  border-bottom: 1px solid var(--line);
}
.milestone-content { padding: 14px 16px; }
.milestone-content h4 { font: 600 15px var(--font-display); color: var(--bronze-deep); margin: 0 0 6px; }
.milestone-content p { font-size: 12.5px; color: var(--ink-soft); line-height: 1.65; margin: 0 0 8px; }
.milestone-date { font-size: 11px; color: var(--gold); letter-spacing: .08em; }

.wish-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
.wish-card {
  display: flex; gap: 14px; align-items: flex-start; padding: 18px 16px;
  background: var(--paper-light); border: 1px solid var(--line); border-radius: var(--radius-md);
  transition: transform .25s, border-color .25s;
}
.wish-card:hover { transform: translateY(-3px); border-color: var(--gold); }
.wish-check {
  width: 32px; height: 32px; border-radius: 50%; flex-shrink: 0;
  background: var(--paper-deep); color: var(--gold); border: 1px dashed var(--gold);
  display: grid; place-items: center; font-size: 14px;
}
.wish-body h3 { font: 600 15px var(--font-display); color: var(--bronze-deep); margin: 0 0 4px; }
.wish-body p { font-size: 12px; color: var(--ink-soft); margin: 0; line-height: 1.6; }

/* 暗色 - 边缘组件精细化 */
html[data-theme="dark"] .hero-overlay,
html[data-theme="dark"] .hero-content h1 { text-shadow: 0 2px 12px rgba(0,0,0,.5); }
html[data-theme="dark"] .empty-state,
html[data-theme="dark"] .empty-tip { color: var(--ink-soft); }
html[data-theme="dark"] .section-header h2,
html[data-theme="dark"] .section-header-left h2,
html[data-theme="dark"] .about-stat-card .num { color: var(--ink); }
html[data-theme="dark"] .about-stat-card .label { color: var(--ink-soft); }
html[data-theme="dark"] .detail-breadcrumb,
html[data-theme="dark"] .breadcrumb { color: var(--ink-soft); }
html[data-theme="dark"] .nav-adjacent { border-color: var(--line); }
html[data-theme="dark"] .spot-card,
html[data-theme="dark"] .timeline-item .time-dot { background: var(--paper-light); }
html[data-theme="dark"] .spot-card h3,
html[data-theme="dark"] .timeline-card h3,
html[data-theme="dark"] .member-card h3 { color: var(--ink); }
html[data-theme="dark"] .footer,
html[data-theme="dark"] .site-footer { background: var(--paper-deep); color: var(--ink-soft); }
html[data-theme="dark"] .map-switcher,
html[data-theme="dark"] .segmented-control button.active { color: var(--ink); }
html[data-theme="dark"] ::-webkit-scrollbar-thumb { background: var(--bronze-dark); }
html[data-theme="dark"] .wish-card { background: var(--paper-light); }
html[data-theme="dark"] .comment-replies { border-color: var(--line-strong); }

/* ---- 暗色：Hero 板块全面修复 ---- */
html[data-theme="dark"] .hero-bg {
  background:
    var(--asset-hero, none) center / cover no-repeat,
    linear-gradient(90deg,
      rgba(18,20,15,.95) 0%, rgba(18,20,15,.88) 24%, rgba(18,20,15,.5) 34%,
      rgba(18,20,15,0) 38%, rgba(18,20,15,0) 66%, rgba(18,20,15,.25) 78%, rgba(18,20,15,.55) 100%);
  opacity: .7;
  filter: saturate(.6) brightness(.55) contrast(1.1);
}
html[data-theme="dark"] .hero-bg:after {
  background:
    linear-gradient(90deg, rgba(18,20,15,.75) 0%, rgba(18,20,15,.35) 34%, transparent 60%, rgba(139,46,34,.06) 100%),
    var(--paper-texture);
  mix-blend-mode: normal;
}
html[data-theme="dark"] .hero-content::before {
  background:
    radial-gradient(ellipse at left center, rgba(18,20,15,.9) 0%, rgba(18,20,15,.5) 55%, transparent 92%),
    linear-gradient(90deg, rgba(18,20,15,.85) 0%, rgba(18,20,15,.45) 42%, transparent 78%);
}
html[data-theme="dark"] .hero-content { color: var(--ink); }
html[data-theme="dark"] .hero-title-row h1 { color: var(--ink); text-shadow: 0 2px 12px rgba(0,0,0,.5); }
html[data-theme="dark"] .hero-subtitle { color: var(--ink-soft); }
html[data-theme="dark"] .hero-tagline { color: var(--gold-light) !important; }
html[data-theme="dark"] .hero-desc-sub { color: var(--ink-soft) !important; }
html[data-theme="dark"] .hero-explore-btn {
  background: var(--paper-deep); color: var(--gold-light); border-color: var(--line-strong);
}
html[data-theme="dark"] .hero-explore-btn:hover {
  background: var(--cinnabar); color: #fff5dd; border-color: var(--cinnabar);
}
html[data-theme="dark"] .hero-stat-value { color: var(--gold-light); }
html[data-theme="dark"] .hero-stat-label { color: var(--ink-soft); }

/* ---- 暗色：城市面板 & 地图壳 ---- */
html[data-theme="dark"] .hero-city-panel {
  background: rgba(26,29,22,.92); backdrop-filter: blur(14px);
  border-color: var(--line-strong);
}
html[data-theme="dark"] .hero-city-name { color: var(--ink); }
html[data-theme="dark"] .hero-city-summary { color: var(--ink-soft); }
html[data-theme="dark"] .hero-map-shell { background: rgba(26,29,22,.35); border-color: var(--line-strong); }
html[data-theme="dark"] .hero-map-caption { color: var(--ink-soft); }
html[data-theme="dark"] .city-nav-btns button { background: var(--paper-deep); color: var(--gold-light); }
html[data-theme="dark"] .city-nav-btns button:hover { background: var(--cinnabar); color: #fff5dd; }
html[data-theme="dark"] .hero-city-trip-btn { background: var(--paper-deep); color: var(--gold-light); border-color: var(--line-strong); }
html[data-theme="dark"] .hero-city-trip-btn:hover { background: var(--cinnabar); color: #fff5dd; border-color: var(--cinnabar); }
html[data-theme="dark"] .hl-item { color: var(--ink-soft); background: rgba(184,150,62,.06); border-color: var(--line-strong); }

/* ---- 暗色：全页面白色/浅色背景统一修复 ---- */
html[data-theme="dark"] .hot-card,
html[data-theme="dark"] .hot-card-small { background: var(--paper-light); }
html[data-theme="dark"] .video-item { background: var(--paper-light); }
html[data-theme="dark"] .expense-item { background: var(--paper-light); border-color: var(--line); color: var(--ink); }
html[data-theme="dark"] .tip-item { background: var(--paper-light); color: var(--ink); }
html[data-theme="dark"] .posts-control-panel { background: rgba(26,29,22,.85); }
html[data-theme="dark"] .posts-order-control { background: var(--paper-deep); }
html[data-theme="dark"] .posts-order-label { background: var(--paper-deep); color: var(--ink-soft); }
html[data-theme="dark"] .gallery-item { background: var(--paper-light); }
html[data-theme="dark"] .seal-fallback { background: linear-gradient(135deg, var(--paper-deep), var(--paper-light)); }
html[data-theme="dark"] .member-card { background: var(--paper-light); }
html[data-theme="dark"] .milestone-card { background: var(--paper-light); }
html[data-theme="dark"] .member-body h3 { color: var(--ink); }
html[data-theme="dark"] .member-tag { background: rgba(184,150,62,.12); color: var(--gold-light); border-color: var(--line-strong); }
html[data-theme="dark"] .wish-card { background: var(--paper-light); }
html[data-theme="dark"] .wish-body h3 { color: var(--ink); }
html[data-theme="dark"] .about-section-label { color: var(--ink-soft); }
html[data-theme="dark"] .about-card-lead b { color: var(--ink); }
html[data-theme="dark"] .about-prov-pin { color: var(--ink-soft); border-color: var(--line-strong); background: rgba(184,150,62,.06); }
html[data-theme="dark"] .about-prov-pin:hover { background: var(--cinnabar); border-color: var(--cinnabar); color: #fff5dd; }
html[data-theme="dark"] .about-year-label { color: var(--ink-soft); }
html[data-theme="dark"] .spot-card-body h3 { color: var(--ink); }
html[data-theme="dark"] .hot-card-body h4, html[data-theme="dark"] .hot-card-small h4 { color: var(--ink); }
html[data-theme="dark"] .featured-province-filter button { background: var(--paper-light); color: var(--ink-soft); border-color: var(--line-strong); }
html[data-theme="dark"] .featured-province-filter button:hover { border-color: var(--gold); color: var(--ink); }
html[data-theme="dark"] .featured-province-filter button.active { background: var(--cinnabar); color: #fff5dd; border-color: var(--cinnabar); }

/* =====================================================
   关于页 - 家庭旅行档案版
   ===================================================== */
.about-hero-new {
  min-height: 340px;
  padding: 0;
  text-align: left;
  background-color: #29433a;
  background-image:
    repeating-linear-gradient(90deg, transparent 0 45px, rgba(245,240,228,.035) 45px 46px),
    repeating-linear-gradient(0deg, transparent 0 45px, rgba(245,240,228,.035) 45px 46px);
  border: 1px solid rgba(212,184,106,.34);
}
.about-hero-inner { min-height: 340px; padding: 34px 44px 28px; display: flex; flex-direction: column; }
.about-kicker { display: flex; align-items: center; gap: 10px; color: rgba(255,245,221,.66); font: 11px var(--font-mono); letter-spacing: .12em; }
.about-kicker span { width: 24px; height: 1px; background: var(--gold-light); }
.about-kicker b { font-weight: 400; color: rgba(255,245,221,.43); margin-left: auto; }
.about-hero-main { display: flex; justify-content: space-between; align-items: center; gap: 48px; flex: 1; padding: 28px 0 20px; }
.about-hero-title { display: flex; align-items: center; gap: 22px; }
.about-hero-new .seal-big { flex: 0 0 auto; width: 76px; height: 76px; margin: 0; font-size: 31px; box-shadow: 0 10px 24px rgba(10,20,15,.32); }
.about-eyebrow { margin: 0 0 7px !important; color: rgba(255,245,221,.68) !important; font-size: 12px !important; letter-spacing: .18em !important; }
.about-hero-new h1 { margin: 0; font-size: 40px; line-height: 1.1; letter-spacing: .12em; }
.about-subtitle { margin: 9px 0 0 !important; color: var(--gold-light) !important; font-size: 13px !important; letter-spacing: .12em !important; }
.about-hero-note { width: min(310px, 36%); padding: 15px 0 15px 21px; border-left: 1px solid rgba(212,184,106,.56); position: relative; }
.about-hero-note p { margin: 0 !important; color: #fff5dd !important; font: 18px/1.75 var(--font-display); letter-spacing: .08em !important; }
.note-mark { position: absolute; top: -13px; left: 13px; color: var(--gold-light); font: 34px/1 Georgia, serif; }
.about-hero-bottom { display: flex; align-items: center; gap: 14px; color: rgba(255,245,221,.56); font-size: 11px; letter-spacing: .1em; }
.about-hero-bottom span:last-child { white-space: nowrap; font-family: var(--font-mono); font-size: 10px; }
.hero-line { display: block; height: 1px; flex: 1; background: rgba(255,245,221,.24); }

.about-overview { margin: 26px 32px 0; display: grid; grid-template-columns: minmax(0, 1fr) minmax(340px, .34fr); column-gap: 32px; align-items: start; border-top: 1px solid var(--line-strong); border-bottom: 1px solid var(--line); }
.about-story { padding: 30px 50px 30px 0; width: 100%; max-width: none; }
.about-section-label { display: flex; align-items: center; gap: 11px; margin-bottom: 17px; color: var(--bronze-deep); font: 12px var(--font-display); letter-spacing: .16em; }
.about-section-label span { color: var(--cinnabar); font: 600 13px var(--font-mono); }
.about-story-lead { margin: 0; color: var(--ink); font: 17px/1.9 var(--font-display); letter-spacing: .04em; }
.about-story-ending { width: 100%; margin: 15px 0 0; color: var(--ink-soft); font-size: 13px; line-height: 1.9; }
/* 关于页富文本（复用 .article-content 样式，微调以贴合关于页排版） */
.about-story-lead.article-content, .about-story-ending.article-content { font-size: 15px; line-height: 2; }
.about-story-lead.article-content p, .about-story-ending.article-content p { margin: 0 0 14px; text-indent: 0; }
.about-story-lead.article-content p:last-child, .about-story-ending.article-content p:last-child { margin-bottom: 0; }
.about-story-lead.article-content h2, .about-story-ending.article-content h2 { font-size: 20px; }
.about-story-lead.article-content h3, .about-story-ending.article-content h3 { font-size: 17px; }
.about-story-lead.article-content h4, .about-story-ending.article-content h4 { font-size: 15px; }
.about-stats { border-left: 1px solid var(--line); display: flex; flex-direction: column; }
.about-stat-row { min-height: 68px; padding: 12px 0 12px 28px; display: flex; align-items: baseline; gap: 8px; border-bottom: 1px solid var(--line); }
.about-stat-row:last-child { border-bottom: 0; }
.about-stat-row span { color: var(--ink-soft); font-size: 12px; letter-spacing: .08em; margin-right: auto; }
.about-stat-row strong { color: var(--cinnabar); font: 32px/1 var(--font-display); }
.about-stat-row em { padding-right: 25px; color: var(--bronze-deep); font-style: normal; font-size: 12px; }
.about-stat-row.about-stat-primary strong { font-size: 44px; color: var(--cinnabar); text-shadow: 0 2px 0 #8b2e2212; }
.about-stat-row.about-stat-primary em { padding-right: 30px; font-size: 13px; }
/* 侧栏：我们一家人 */
.about-family { padding: 22px 22px 24px; position: relative; }
.about-family::before { content: ''; display: block; height: 2px; margin: 0 0 16px; background: linear-gradient(90deg, transparent, var(--gold) 18%, var(--cinnabar) 50%, var(--gold) 82%, transparent); opacity: .55; }
.about-family-label { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; color: var(--bronze-deep); font: 700 16px var(--font-display); letter-spacing: .18em; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.about-family-label .seal-icon {
  position: relative;
  width: 36px; height: 36px;
  border-radius: 50%;
  background:
    radial-gradient(circle at 32% 28%, rgba(255, 245, 221, .22), transparent 52%),
    linear-gradient(140deg, var(--cinnabar) 0%, var(--cinnabar-light) 55%, #6f2019 100%);
  border: 1.5px solid var(--gold-light);
  box-shadow: 0 4px 10px rgba(139, 46, 34, .32), inset 0 1px 0 rgba(255, 245, 221, .2);
  color: #fff5dd;
  font-size: 14px; font-weight: 700;
  display: inline-grid; place-items: center;
  flex: 0 0 auto;
}
.about-family-label .seal-icon::before {
  content: ''; position: absolute; inset: 3px;
  border-radius: 50%; border: 1px dashed rgba(255, 245, 221, .32);
  pointer-events: none;
}
.about-family-label .label-side { flex: 1; min-width: 0; }
.about-family-label .label-meta { display: block; font-size: 10.5px; font-weight: 400; color: var(--ink-soft); letter-spacing: .22em; margin-top: 3px; }
.about-family-list { display: flex; flex-direction: column; gap: 4px; }
.about-family-item { display: flex; align-items: stretch; gap: 16px; padding: 16px 0 14px; border-bottom: 1px dashed var(--line); position: relative; }
.about-family-item:last-child { border-bottom: 0; padding-bottom: 4px; }
.about-family-item::before { content: counter(family-no); position: absolute; top: 14px; right: 2px; font: italic 700 32px/1 Georgia, serif; color: var(--gold); opacity: .28; pointer-events: none; }
.about-family-list { counter-reset: family-no; }
.about-family-item { counter-increment: family-no; }
.about-family-avatar { position: relative; width: 88px; height: 88px; flex: 0 0 auto; border-radius: 8px; overflow: hidden; background: linear-gradient(135deg, var(--cinnabar), var(--bronze-deep)); display: grid; place-items: center; box-shadow: 0 5px 14px rgba(139,46,34,.26), inset 0 1px 0 rgba(255,245,221,.18); border: 1.5px solid var(--gold-light); }
.about-family-avatar::before { content: ''; position: absolute; inset: 5px; border: 1px dashed rgba(255,245,221,.4); border-radius: 4px; pointer-events: none; }
.about-family-avatar.has-photo { background: var(--paper-deep); box-shadow: 0 5px 14px rgba(0,0,0,.12); }
.about-family-photo { width: 100%; height: 100%; object-fit: cover; display: block; }
.about-family-sigil { color: #fff5dd; font: 42px var(--font-display); text-shadow: 0 2px 4px rgba(0,0,0,.25); }
.about-family-body { flex: 1; min-width: 0; padding-top: 2px; }
.about-family-body b { display: flex; align-items: center; gap: 8px; font: 700 17px var(--font-display); color: var(--cinnabar); letter-spacing: .06em; margin-bottom: 6px; padding-right: 48px; }
.about-family-body b::after { content: ''; flex: 1; height: 1px; background: linear-gradient(90deg, var(--gold-light), transparent); margin-left: 4px; }
.about-family-desc { font: 600 13.5px/1.7 var(--font-display); color: var(--ink); letter-spacing: .04em; margin-bottom: 5px; }
.about-family-intro { font-size: 12px; color: var(--ink-soft); line-height: 1.8; margin-bottom: 8px; }
.about-family-tags { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 4px; }
.about-family-tags .member-tag { padding: 2px 9px; font-size: 11px; background: var(--gold-pale); color: var(--bronze-deep); border: 1px solid var(--gold-light); border-radius: 20px; letter-spacing: .03em; }
/* 侧栏：下一站 · 愿望清单 */
.about-wish-list { display: flex; flex-direction: column; gap: 0; counter-reset: wish-no; position: relative; }
.about-wish-item { display: flex; align-items: flex-start; gap: 14px; padding: 14px 0 12px; border-bottom: 1px dashed var(--line); position: relative; }
.about-wish-item:last-child { border-bottom: 0; padding-bottom: 4px; }
.about-wish-item::before { content: counter(wish-no); position: absolute; top: 12px; right: 4px; font: italic 700 28px/1 Georgia, serif; color: var(--gold); opacity: .28; pointer-events: none; }
.about-wish-item { counter-increment: wish-no; }
.about-wish-item .wish-check { flex: 0 0 auto; width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center; font-size: 18px; color: #fff5dd; background: linear-gradient(140deg, var(--cinnabar), var(--cinnabar-light)); box-shadow: 0 4px 10px rgba(139,46,34,.28), inset 0 1px 0 rgba(255,245,221,.18); border: 1.5px solid var(--gold-light); position: relative; margin-top: 2px; }
.about-wish-item .wish-check::before { content: ''; position: absolute; inset: 3px; border-radius: 50%; border: 1px dashed rgba(255,245,221,.42); pointer-events: none; }
.about-wish-body { flex: 1; min-width: 0; padding-top: 2px; }
.about-wish-body b { display: flex; align-items: center; gap: 8px; font: 700 15.5px var(--font-display); color: var(--cinnabar); letter-spacing: .05em; margin-bottom: 5px; padding-right: 44px; }
.about-wish-body b::after { content: ''; flex: 1; height: 1px; background: linear-gradient(90deg, var(--gold-light), transparent); margin-left: 4px; }
.about-wish-body span { display: block; font-size: 12.5px; color: var(--ink-soft); line-height: 1.75; }

/* 旅途掠影面板 */
.about-visual { margin: 26px 32px 0; padding: 26px 0; border-top: 1px solid var(--line-strong); border-bottom: 1px solid var(--line); }
.about-visual-head { display: flex; align-items: baseline; gap: 18px; margin-bottom: 18px; }
.about-visual-tip { color: var(--ink-soft); font-size: 12px; letter-spacing: .04em; }
.about-visual-grid { display: grid; grid-template-columns: 1fr 1fr 1.4fr; gap: 16px; }
.about-card-lead { display: flex; align-items: center; gap: 10px; padding-bottom: 12px; margin-bottom: 12px; border-bottom: 1px dashed var(--line); }
.about-card-lead .seal-icon { width: 28px; height: 28px; font-size: 12px; flex: 0 0 auto; }
.about-card-lead div { flex: 1; min-width: 0; }
.about-card-lead b { display: block; color: var(--bronze-deep); font: 13px var(--font-display); letter-spacing: .08em; }
.about-card-lead small { display: block; margin-top: 2px; color: var(--ink-soft); font-size: 10px; }
.about-card-lead .about-card-arrow { color: var(--gold); font-size: 16px; font-style: normal; transition: transform .2s; font-weight: 700; }
.about-year-chart, .about-prov-card, .about-photo-wall { background: var(--paper-light); border: 1px solid var(--line); padding: 14px 16px; cursor: pointer; transition: all .22s; }
.about-year-chart:hover, .about-prov-card:hover, .about-photo-wall:hover { border-color: var(--gold); box-shadow: 0 10px 26px #2d4a3e18; transform: translateY(-3px); }
.about-year-chart:hover .about-card-arrow, .about-prov-card:hover .about-card-arrow, .about-photo-wall:hover .about-card-arrow { transform: translateX(4px); color: var(--cinnabar); }
.about-year-empty, .about-prov-empty { padding: 20px 0; text-align: center; color: var(--ink-soft); font-size: 11px; }
.about-year-bars { display: flex; align-items: flex-end; gap: 10px; height: 110px; padding: 4px 0 0; }
.about-year-bar { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 4px; height: 100%; justify-content: flex-end; }
.about-year-count { font: 10px var(--font-mono); color: var(--cinnabar); }
.about-year-col { width: 100%; max-width: 26px; background: linear-gradient(180deg, var(--gold-light), var(--cinnabar)); border-radius: 4px 4px 0 0; min-height: 8px; transition: height .6s cubic-bezier(.2,.8,.3,1.1); }
.about-year-label { font: 11px var(--font-mono); color: var(--bronze-deep); letter-spacing: .04em; }
.about-prov-mini { display: flex; flex-wrap: wrap; gap: 5px; padding: 4px 0; }
.about-prov-pin { display: inline-flex; align-items: center; padding: 3px 9px; border: 1px solid var(--gold); border-radius: 12px; background: #d4b86a14; color: var(--bronze-deep); font-size: 11px; letter-spacing: .05em; transition: all .18s; }
.about-prov-pin:hover { background: var(--cinnabar); border-color: var(--cinnabar); color: #fff5dd; }
.about-photo-grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: 60px 60px; gap: 4px; }
.about-photo-cell { background-size: cover; background-position: center; background-color: var(--paper-deep); border-radius: 3px; position: relative; overflow: hidden; }
.about-photo-cell::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 60%, rgba(10,20,15,.6)); opacity: 0; transition: opacity .22s; }
.about-photo-cell:hover::after { opacity: 1; }
.about-photo-cap { position: absolute; bottom: 4px; left: 4px; z-index: 2; padding: 1px 6px; border-radius: 6px; background: rgba(10,20,15,.55); color: #fff5dd; font-size: 9px; letter-spacing: .05em; }

html[data-theme="dark"] .about-hero-new { background-color: #263b32; border-color: rgba(212,184,106,.3); }
html[data-theme="dark"] .about-overview { border-color: var(--line-strong); }
html[data-theme="dark"] .about-story-lead { color: var(--ink); }
html[data-theme="dark"] .about-stats { border-color: var(--line-strong); }
html[data-theme="dark"] .about-visual { border-color: var(--line-strong); }
html[data-theme="dark"] .about-year-chart, html[data-theme="dark"] .about-prov-card, html[data-theme="dark"] .about-photo-wall { background: var(--paper-light); }

@media (max-width: 900px) {
  .about-hero-inner { padding: 28px; }
  .about-hero-main { gap: 26px; }
  .about-hero-note { width: 42%; }
  .about-overview { grid-template-columns: 1fr; }
  .about-story { padding: 28px 0; }
  .about-stats { border-left: 0; border-top: 1px solid var(--line); display: grid; grid-template-columns: repeat(3, 1fr); }
  .about-stat-row { min-height: 88px; padding: 16px; display: flex; flex-direction: column; gap: 3px; border-bottom: 0; border-right: 1px solid var(--line); }
  .about-stat-row:last-child { border-right: 0; }
  .about-stat-row span { margin: 0; }
  .about-stat-row strong { font-size: 30px; }
  .about-stat-row em { padding: 0; }
  /* 移动端：家庭成员区横跨整行，成员两列排列 */
  .about-family { grid-column: 1 / -1; padding: 16px; border-top: 1px solid var(--line); }
  .about-family-list { display: grid; grid-template-columns: 1fr 1fr; gap: 0 20px; }
  .about-family-avatar { width: 70px; height: 70px; }
  .about-family-sigil { font-size: 34px; }
  .about-wish-list { display: grid; grid-template-columns: 1fr 1fr; gap: 0 20px; }
}
@media (max-width: 480px) {
  .about-family-list { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .about-hero-new { margin: 16px 16px 0; min-height: 0; }
  .about-hero-inner { min-height: 0; padding: 22px 20px 18px; }
  .about-kicker { font-size: 9px; letter-spacing: .07em; }
  .about-kicker b { display: none; }
  .about-hero-main { display: block; padding: 30px 0 22px; }
  .about-hero-title { gap: 14px; }
  .about-hero-new .seal-big { width: 60px; height: 60px; font-size: 25px; }
  .about-eyebrow { font-size: 10px !important; letter-spacing: .11em !important; }
  .about-hero-new h1 { font-size: 28px; }
  .about-subtitle { font-size: 11px !important; }
  .about-hero-note { width: auto; margin-top: 28px; padding: 11px 0 11px 15px; }
  .about-hero-note p { font-size: 15px !important; }
  .about-hero-bottom span:first-child { font-size: 10px; }
  .about-hero-bottom span:last-child { display: none; }
  .about-overview { margin: 20px 16px 0; }
  .about-story { padding: 24px 0; }
  .about-story-lead { font-size: 15px; line-height: 1.85; }
  .about-story-ending { font-size: 12px; }
  .about-stats { grid-template-columns: 1fr; }
  .about-stat-row { min-height: 0; padding: 14px 0; flex-direction: row; align-items: baseline; border-right: 0; border-bottom: 1px solid var(--line); }
  .about-stat-row:last-child { border-bottom: 0; }
  .about-stat-primary strong { font-size: 36px; }
  .about-visual { margin: 22px 16px 0; padding: 20px 0; }
  .about-visual-grid { grid-template-columns: 1fr; gap: 12px; }
  .about-year-bars { height: 90px; gap: 8px; }
  .about-photo-grid { grid-template-columns: repeat(4, 1fr); grid-template-rows: 50px 50px; }
  .about-stat-row span { margin-right: auto; }
  .about-stat-row strong { font-size: 27px; }
  .about-stat-row em { padding-right: 0; }
  .about-family { padding: 14px 4px 16px; }
  .about-family-list { grid-template-columns: 1fr; }
  .member-grid { grid-template-columns: 1fr; gap: 14px; }
  .member-card { padding: 18px 18px; gap: 16px; }
  .member-avatar { width: 72px; height: 92px; }
  .member-avatar .member-sigil { font-size: 32px; }
}

/* =====================================================
   相册页 - 家庭影像档案版
   ===================================================== */

/* ==== 屏风档横幅统一：内框装裱（与素笺档 archive-hero 同构） ==== */
.gallery-masthead::after, .specialties-masthead::after, .timeline-masthead::after,
.province-masthead::after, .plans-masthead::after, .pland-hero::after {
  content: ""; position: absolute; z-index: 1;
  width: auto; height: auto; inset: 10px;
  border: 1px solid rgba(255, 245, 221, .22);
  border-radius: 8px;
  pointer-events: none;
}

.gallery-masthead {
  position: relative; min-height: 280px; margin: 20px 32px 0; overflow: hidden;
  display: flex; align-items: stretch; justify-content: space-between;
  background: #29433a; border: 1px solid rgba(212,184,106,.34); color: #fff5dd;
}
.gallery-masthead::before {
  content: ''; position: absolute; inset: 0; opacity: .3;
  background: repeating-linear-gradient(90deg, transparent 0 42px, rgba(255,245,221,.06) 42px 43px), repeating-linear-gradient(0deg, transparent 0 42px, rgba(255,245,221,.06) 42px 43px);
}
.gallery-masthead-copy { position: relative; z-index: 1; padding: 34px 40px; align-self: center; }
.gallery-kicker { display: flex; align-items: center; gap: 9px; color: rgba(255,245,221,.62); font: 10px var(--font-mono); letter-spacing: .14em; }
.gallery-kicker span { width: 24px; height: 1px; background: var(--gold-light); }
.gallery-masthead h1 { margin: 23px 0 8px; font: 700 40px/1.1 var(--font-display); letter-spacing: .12em; }
.gallery-masthead-copy > p { margin: 0; color: rgba(255,245,221,.7); font-size: 13px; letter-spacing: .08em; }
.gallery-masthead-meta { display: flex; align-items: baseline; gap: 7px; margin-top: 30px; color: rgba(255,245,221,.55); font-size: 11px; letter-spacing: .08em; }
.gallery-masthead-meta b { color: var(--gold-light); font: 30px var(--font-display); }
.gallery-masthead-meta i { width: 28px; height: 1px; margin: 0 8px; background: rgba(255,245,221,.3); }
.gallery-masthead-preview { position: relative; z-index: 1; width: 34%; min-height: 280px; overflow: hidden; border-left: 1px solid rgba(212,184,106,.35); }
.gallery-masthead-preview::after { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, #29433a 0%, transparent 32%), linear-gradient(0deg, rgba(18,29,23,.45), transparent 45%); }
.gallery-masthead-preview img { width: 100%; height: 100%; object-fit: cover; display: block; filter: saturate(.82); }
.gallery-masthead-preview span { position: absolute; z-index: 2; right: 18px; bottom: 15px; color: #fff5dd; font: 10px var(--font-mono); letter-spacing: .12em; }
.gallery-seal { position: absolute; z-index: 2; right: 35%; top: 30px; width: 56px; height: 56px; border: 1px solid rgba(212,184,106,.7); color: var(--gold-light); display: grid; place-items: center; font: 25px var(--font-display); transform: rotate(8deg); opacity: .8; }
.gallery-toolbar { margin: 22px 32px 0; min-height: 62px; padding: 10px 16px 10px 18px; display: flex; align-items: center; gap: 20px; border-top: 1px solid var(--line-strong); border-bottom: 1px solid var(--line); }
.gallery-toolbar-label { display: flex; align-items: center; gap: 9px; color: var(--bronze-deep); white-space: nowrap; font: 12px var(--font-display); letter-spacing: .08em; }
.gallery-toolbar-label .seal-icon { width: 27px; height: 27px; font-size: 12px; }
.gallery-search { min-width: 200px; max-width: 430px; flex: 1; height: 37px; display: flex; align-items: center; gap: 8px; padding: 0 10px; border: 1px solid var(--line); background: var(--paper-light); border-radius: 4px; }
.gallery-search > span { color: var(--bronze-deep); font-size: 21px; line-height: 1; }
.gallery-search input { min-width: 0; flex: 1; border: 0; outline: 0; background: transparent; color: var(--ink); font-size: 12px; }
.gallery-search input::placeholder { color: var(--ink-soft); }
.gallery-search button { border: 0; background: transparent; color: var(--ink-soft); cursor: pointer; font-size: 19px; line-height: 1; }
.gallery-count { margin-left: auto; color: var(--ink-soft); white-space: nowrap; font-size: 11px; }
.gallery-count b { color: var(--cinnabar); font-size: 16px; }
.gallery-province-bar { margin: 14px 32px 0; padding: 11px 0; display: flex; align-items: center; gap: 18px; border-bottom: 1px solid var(--line); }
.gallery-province-label { display: flex; align-items: center; gap: 8px; color: var(--bronze-deep); white-space: nowrap; font: 12px var(--font-display); letter-spacing: .08em; }
.gallery-province-label .seal-icon { width: 26px; height: 26px; font-size: 12px; }
.gallery-province-tabs { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; }
.gallery-province-tabs button { display: inline-flex; align-items: center; gap: 5px; padding: 5px 10px; border: 1px solid transparent; background: transparent; color: var(--ink-soft); cursor: pointer; font-size: 11px; letter-spacing: .04em; transition: all .18s; }
.gallery-province-tabs button:hover { color: var(--bronze-deep); background: #2d4a3e0a; }
.gallery-province-tabs button.active { border-color: var(--gold); background: #d4b86a18; color: var(--bronze-deep); font-weight: 600; }
.gallery-province-tabs button em { min-width: 15px; padding: 1px 4px; border-radius: 8px; background: var(--paper-deep); color: var(--ink-soft); font: 9px var(--font-mono); font-style: normal; }
.gallery-province-tabs button.active em { background: var(--cinnabar); color: #fff5dd; }
.gallery-grid-new { columns: 4; column-gap: 16px; margin-left: 32px; margin-right: 32px; }
.gallery-grid-new .gallery-item { margin-bottom: 16px; border-radius: 2px; border-color: var(--line); box-shadow: 0 3px 12px rgba(45,74,62,.06); }
.gallery-grid-new .gallery-item::before { content: ''; position: absolute; z-index: 1; top: 10px; left: 10px; width: 7px; height: 7px; border: 1px solid rgba(255,245,221,.75); transform: rotate(45deg); opacity: 0; transition: opacity .2s; }
.gallery-grid-new .gallery-item:hover::before { opacity: 1; }
.gallery-grid-new .gallery-item:hover { transform: translateY(-4px); box-shadow: 0 15px 30px rgba(24,47,37,.16); }
.gallery-grid-new .gallery-item img { transition: transform .5s ease, filter .3s ease; }
.gallery-grid-new .gallery-item:hover img { transform: scale(1.035); filter: saturate(1.05); }
.gallery-grid-new .gallery-cap { opacity: 0; padding: 40px 13px 12px; font-size: 11px; }
.gallery-grid-new .gallery-item:hover .gallery-cap { opacity: 1; }

html[data-theme="dark"] .gallery-masthead { background: #263b32; }
html[data-theme="dark"] .gallery-masthead-preview::after { background: linear-gradient(90deg, #263b32 0%, transparent 32%), linear-gradient(0deg, rgba(8,14,11,.5), transparent 45%); }
html[data-theme="dark"] .gallery-toolbar { border-color: var(--line-strong); }
html[data-theme="dark"] .gallery-search { background: #12140f; }
html[data-theme="dark"] .gallery-province-bar { border-color: var(--line-strong); }

/* ============ 加载更多按钮 ============ */
.load-more-btn {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 11px 30px;
  border: 1px solid var(--gold); border-radius: 24px;
  background: transparent; color: var(--bronze-deep);
  font: 13px var(--font-display); letter-spacing: .1em;
  cursor: pointer; transition: all .25s;
}
.load-more-btn:hover { background: var(--bronze-deep); border-color: var(--bronze-deep); color: #fff5dd; }
.load-more-btn:disabled { opacity: .5; cursor: not-allowed; }
.load-more-btn.ghost { margin-left: 10px; border-color: var(--line-strong); color: var(--ink-soft); font: 12px var(--font-mono); letter-spacing: .06em; }
.load-more-btn.ghost:hover { background: transparent; border-color: var(--gold); color: var(--bronze-deep); }
html[data-theme="dark"] .load-more-btn { color: #fff5dd; }
html[data-theme="dark"] .load-more-btn.ghost { color: #fff5dd99; }

/* ============ 相册分页 ============ */
.gallery-pagination {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  margin: 30px 32px 10px; padding: 18px 0;
  border-top: 1px solid var(--line);
}
.gpage-btn {
  min-width: 38px; height: 38px; padding: 0 10px;
  border: 1px solid var(--line); border-radius: 4px;
  background: var(--paper-light); color: var(--bronze-deep);
  font: 13px var(--font-display); letter-spacing: .03em;
  cursor: pointer; transition: all .2s;
  display: inline-flex; align-items: center; justify-content: center;
}
.gpage-btn:hover:not(:disabled):not(.active) {
  border-color: var(--gold); color: var(--cinnabar);
}
.gpage-btn.active {
  background: var(--cinnabar); border-color: var(--cinnabar);
  color: #fff5dd; box-shadow: 0 4px 12px rgba(139,46,34,.22);
}
.gpage-btn:disabled { opacity: .4; cursor: not-allowed; }
.gpage-ellipsis { border: none; background: transparent; cursor: default; }
html[data-theme="dark"] .gpage-btn { background: #12140f; }

@media (max-width: 650px) {
  .gallery-pagination { margin: 22px 16px 6px; padding: 14px 0; gap: 6px; }
  .gpage-btn { min-width: 34px; height: 34px; padding: 0 8px; font-size: 12px; }
}

@media (max-width: 1200px) { .gallery-grid-new { columns: 3; } }
@media (max-width: 900px) {
  .gallery-masthead { margin-left: 24px; margin-right: 24px; }
  .gallery-masthead-preview { width: 38%; }
  .gallery-seal { right: 38%; }
  .gallery-toolbar { margin-left: 24px; margin-right: 24px; }
  .gallery-grid-new { margin-left: 24px; margin-right: 24px; columns: 3; }
}
@media (max-width: 650px) {
  .gallery-masthead { min-height: 330px; margin: 16px 16px 0; display: block; }
  .gallery-masthead-copy { padding: 28px 22px 20px; }
  .gallery-masthead h1 { margin-top: 20px; font-size: 31px; }
  .gallery-masthead-meta { margin-top: 20px; }
  .gallery-masthead-preview { position: absolute; right: 0; bottom: 0; width: 53%; height: 155px; min-height: 0; border-left: 0; border-top: 1px solid rgba(212,184,106,.3); }
  .gallery-masthead-preview::after { background: linear-gradient(90deg, #29433a 0%, transparent 40%), linear-gradient(0deg, rgba(18,29,23,.4), transparent 55%); }
  .gallery-seal { top: 26px; right: 24px; width: 43px; height: 43px; font-size: 20px; }
  .gallery-toolbar { margin: 18px 16px 0; padding: 13px 0; display: grid; grid-template-columns: 1fr auto; gap: 11px 12px; border-top: 0; }
  .gallery-toolbar-label { grid-column: 1 / -1; }
  .gallery-search { max-width: none; width: auto; }
  .gallery-count { margin-left: 0; align-self: center; }
  .gallery-province-bar { margin: 12px 16px 0; padding: 10px 0; }
  .gallery-province-tabs { gap: 3px; }
  .gallery-province-tabs button { padding: 5px 8px; font-size: 11px; }
  .gallery-grid-new { margin: 18px 16px 0; columns: 2; column-gap: 10px; }
  .gallery-grid-new .gallery-item { margin-bottom: 10px; }
  .gallery-grid-new .gallery-cap { display: none; }
}

/* 移动端顶栏收束：底部已有导航，隐藏冗余时间与行程入口，保留主题切换 */
@media (max-width: 650px) {
  .topbar-right { margin-left: auto; gap: 8px; }
  .topbar-right .itinerary-btn,
  .topbar-right .time-display { display: none; }
  .topbar-right .theme-toggle-btn { width: 30px; height: 30px; }
}

/* 旅行风物 - 地方风物图鉴版 */
.specialties-masthead { position: relative; min-height: 280px; margin: 20px 32px 0; overflow: hidden; color: #fff5dd; background: #29433a; border: 1px solid rgba(212,184,106,.36); }
.specialties-masthead::before { content: ''; position: absolute; inset: 0; opacity: .28; background: repeating-linear-gradient(90deg, transparent 0 44px, rgba(255,245,221,.055) 44px 45px), repeating-linear-gradient(0deg, transparent 0 44px, rgba(255,245,221,.055) 44px 45px); }
.specialties-masthead-copy { position: relative; z-index: 1; min-height: 280px; padding: 33px 42px 26px; display: flex; flex-direction: column; }
.specialties-kicker { display: flex; align-items: center; gap: 10px; color: rgba(255,245,221,.63); font: 10px var(--font-mono); letter-spacing: .14em; }
.specialties-kicker > span { width: 24px; height: 1px; background: var(--gold-light); }
.specialties-kicker b { margin-left: auto; color: rgba(255,245,221,.45); font-weight: 400; }
.specialties-title-row { display: flex; align-items: center; gap: 20px; flex: 1; padding: 22px 0; }
.specialties-seal { width: 76px; height: 76px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 50%; background: var(--cinnabar); border: 2px solid var(--gold-light); box-shadow: 0 10px 24px rgba(15,28,22,.32); color: #fff5dd; font: 31px var(--font-display); }
.specialties-title-row p { margin: 0 0 7px; color: rgba(255,245,221,.67); font-size: 12px; letter-spacing: .15em; }
.specialties-title-row h1 { margin: 0; color: #fff5dd; font: 700 40px/1.1 var(--font-display); letter-spacing: .13em; }
.specialties-masthead-footer { display: flex; align-items: center; gap: 13px; color: rgba(255,245,221,.54); font-size: 11px; letter-spacing: .1em; }
.specialties-masthead-footer i { flex: 1; height: 1px; background: rgba(255,245,221,.25); }
.specialties-masthead-footer span:last-child { font: 10px var(--font-mono); white-space: nowrap; }
.specialties-orbit { position: absolute; right: 60px; top: 50%; z-index: 1; width: 170px; height: 170px; margin-top: -70px; border: 1px solid rgba(212,184,106,.36); border-radius: 50%; transform: rotate(-14deg); }
.specialties-orbit::before, .specialties-orbit::after { content: ''; position: absolute; border: 1px solid rgba(212,184,106,.2); border-radius: 50%; }
.specialties-orbit::before { inset: 18px; }.specialties-orbit::after { inset: 43px; }
.specialties-orbit span { position: absolute; color: var(--gold-light); font: 18px var(--font-display); transform: rotate(14deg); }
.specialties-orbit span:nth-child(1) { top: -13px; left: 72px; }.specialties-orbit span:nth-child(2) { top: 69px; right: -13px; }.specialties-orbit span:nth-child(3) { bottom: -13px; left: 74px; }.specialties-orbit span:nth-child(4) { top: 68px; left: -13px; }
.specialties-nav { margin: 22px 32px 0; padding: 15px 0; display: flex; align-items: center; gap: 24px; border-top: 1px solid var(--line-strong); border-bottom: 1px solid var(--line); }
.specialties-nav-lead { display: flex; align-items: center; gap: 9px; min-width: 150px; }.specialties-nav-lead .seal-icon { width: 29px; height: 29px; font-size: 13px; }
.specialties-nav-lead b { display: block; color: var(--bronze-deep); font: 13px var(--font-display); letter-spacing: .08em; }.specialties-nav-lead small { display: block; margin-top: 2px; color: var(--ink-soft); font-size: 10px; }
.specialties-tabs { display: flex; align-items: center; flex: 1; gap: 4px; overflow-x: auto; padding-bottom: 2px; scrollbar-width: none; }.specialties-tabs::-webkit-scrollbar { display: none; }
.specialties-tabs button { display: inline-flex; align-items: center; gap: 5px; flex: 0 0 auto; padding: 8px 11px; border: 1px solid transparent; background: transparent; color: var(--ink-soft); cursor: pointer; font-size: 12px; transition: all .18s; }.specialties-tabs button span { font-size: 15px; filter: grayscale(.25); }
.specialties-tabs button:hover { color: var(--bronze-deep); background: #2d4a3e0a; }.specialties-tabs button.active { border-color: var(--gold); background: #d4b86a18; color: var(--bronze-deep); font-weight: 600; }.specialties-tabs button.active span { filter: none; }.specialties-tabs button em { min-width: 17px; padding: 1px 5px; border-radius: 8px; background: var(--paper-deep); color: var(--ink-soft); font: 10px var(--font-mono); font-style: normal; }.specialties-tabs button.active em { background: var(--cinnabar); color: #fff5dd; }
.specialties-search { margin: 14px 32px 0; }.specialties-search-inner { position: relative; display: flex; align-items: center; gap: 8px; padding: 10px 12px; border: 1px solid var(--line); background: var(--paper-light); transition: border-color .2s; }.specialties-search-inner:focus-within { border-color: var(--gold); }.specialties-search-mark { color: var(--gold); font-size: 18px; line-height: 1; }.specialties-search-input { flex: 1; min-width: 0; border: 0; background: transparent; color: var(--ink); font-size: 13px; letter-spacing: .04em; outline: none; }.specialties-search-input::placeholder { color: var(--ink-soft); }.specialties-search-btn { padding: 8px 16px; border: 1px solid var(--gold); border-radius: 18px; background: transparent; color: var(--bronze-deep); cursor: pointer; font: 12px var(--font-display); letter-spacing: .08em; transition: all .2s; }.specialties-search-btn:hover { background: var(--bronze-deep); border-color: var(--bronze-deep); color: #fff5dd; }.specialties-search-clear { width: 26px; height: 26px; border: 0; border-radius: 50%; background: var(--paper-deep); color: var(--ink-soft); cursor: pointer; font-size: 16px; line-height: 1; transition: all .18s; }.specialties-search-clear:hover { background: var(--cinnabar); color: #fff5dd; }
.specialties-province-nav { margin: 14px 32px 0; padding: 12px 0; display: flex; align-items: center; gap: 22px; border-bottom: 1px solid var(--line); }.specialties-province-lead { display: flex; align-items: center; gap: 9px; min-width: 150px; }.specialties-province-lead .seal-icon { width: 26px; height: 26px; font-size: 12px; }.specialties-province-lead b { display: block; color: var(--bronze-deep); font: 12px var(--font-display); letter-spacing: .08em; }.specialties-province-lead small { display: block; margin-top: 2px; color: var(--ink-soft); font-size: 10px; }.specialties-province-tabs { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; }.specialties-province-tabs button { display: inline-flex; align-items: center; gap: 5px; padding: 5px 10px; border: 1px solid transparent; background: transparent; color: var(--ink-soft); cursor: pointer; font-size: 11px; letter-spacing: .04em; transition: all .18s; }.specialties-province-tabs button:hover { color: var(--bronze-deep); background: #2d4a3e0a; }.specialties-province-tabs button.active { border-color: var(--gold); background: #d4b86a18; color: var(--bronze-deep); font-weight: 600; }.specialties-province-tabs button em { min-width: 15px; padding: 1px 4px; border-radius: 8px; background: var(--paper-deep); color: var(--ink-soft); font: 9px var(--font-mono); font-style: normal; }.specialties-province-tabs button.active em { background: var(--cinnabar); color: #fff5dd; }.specialties-province-tabs button.empty { color: var(--ink-soft); opacity: .55; }.specialties-province-tabs button.empty em { background: transparent; color: var(--ink-soft); opacity: .7; }.specialties-province-tabs button.specialties-province-more { border-color: var(--line); color: var(--bronze-deep); font: 11px var(--font-display); letter-spacing: .05em; }.specialties-province-tabs button.specialties-province-more:hover { border-color: var(--gold); background: #d4b86a10; }
.specialties-collection { margin: 26px 32px 0; }.specialties-collection-head { display: flex; justify-content: space-between; align-items: baseline; padding-bottom: 14px; border-bottom: 1px solid var(--line); }.specialties-collection-head > div { display: flex; align-items: baseline; gap: 11px; }
.specialties-collection-head span { color: var(--cinnabar); font: 600 13px var(--font-mono); }.specialties-collection-head h2 { margin: 0; color: var(--ink); font: 22px var(--font-display); letter-spacing: .08em; }.specialties-collection-head p { margin: 0; color: var(--ink-soft); font-size: 11px; }
.specialties-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; margin-top: 18px; }
.specialty-card { overflow: hidden; border: 1px solid var(--line); background: var(--paper-light); cursor: pointer; transition: transform .25s, box-shadow .25s, border-color .25s; }.specialty-card:hover { transform: translateY(-5px); border-color: var(--gold); box-shadow: 0 15px 30px rgba(24,47,37,.13); }
.specialty-card-photo { position: relative; height: 200px; overflow: hidden; background: var(--paper-deep); }.specialty-card-photo > .seal-img, .specialty-card-photo > .seal-fallback { width: 100%; height: 100%; }.specialty-card-photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .55s ease, filter .25s; }.specialty-card:hover .specialty-card-photo img { transform: scale(1.05); filter: saturate(1.08); }
.specialty-card-photo::after { content: ''; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(0deg, rgba(15,27,21,.54), transparent 50%); }.specialty-index { position: absolute; z-index: 2; left: 12px; top: 12px; padding: 4px 6px; border: 1px solid rgba(255,245,221,.7); color: #fff5dd; font: 10px var(--font-mono); letter-spacing: .08em; }.specialty-card-place { position: absolute; z-index: 2; bottom: 11px; left: 13px; color: #fff5dd; font-size: 12px; letter-spacing: .08em; }
.specialty-card-body { padding: 16px 16px 13px; }.specialty-type { color: var(--cinnabar); font-size: 10px; letter-spacing: .13em; }.specialty-card-body h3 { margin: 7px 0 8px; color: var(--bronze-deep); font: 19px var(--font-display); letter-spacing: .04em; }.specialty-card-body p { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; min-height: 40px; margin: 0; color: var(--ink-soft); font-size: 12px; line-height: 1.7; }
.specialty-card-action { display: flex; align-items: center; justify-content: space-between; margin-top: 14px; padding-top: 10px; border-top: 1px dashed var(--line); color: var(--ink-soft); font-size: 11px; }.specialty-card-action b { color: var(--cinnabar); font-size: 17px; transition: transform .2s; }.specialty-card:hover .specialty-card-action b { transform: translateX(4px); }
.specialty-tags { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 10px; }.specialty-tags span { padding: 2px 8px; border: 1px solid var(--line); border-radius: 10px; background: var(--paper-deep); color: var(--ink-soft); font-size: 10px; letter-spacing: .03em; }
.specialty-modal { position: fixed; inset: 0; z-index: 2000; display: flex; align-items: center; justify-content: center; padding: 20px; background: rgba(10,20,16,.68); backdrop-filter: blur(4px); animation: specialty-fade .2s ease; }.specialty-modal-panel { position: relative; display: grid; grid-template-columns: 300px minmax(0, 1fr); max-width: 820px; width: 100%; max-height: 86vh; overflow: hidden; border: 1px solid var(--gold); background: var(--paper-light); box-shadow: 0 30px 60px rgba(10,20,16,.45); animation: specialty-pop .25s cubic-bezier(.2,.8,.3,1.2); }.specialty-modal-close { position: absolute; z-index: 3; right: 12px; top: 12px; width: 34px; height: 34px; border: 1px solid rgba(255,245,221,.5); border-radius: 50%; background: rgba(10,20,16,.45); color: #fff5dd; font-size: 20px; line-height: 1; cursor: pointer; transition: all .2s; }.specialty-modal-close:hover { background: var(--cinnabar); border-color: var(--cinnabar); transform: rotate(90deg); }.specialty-modal-photo { position: relative; min-height: 320px; background: var(--paper-deep); }.specialty-modal-photo > .seal-img, .specialty-modal-photo > .seal-fallback { width: 100%; height: 100%; }.specialty-modal-photo img { width: 100%; height: 100%; object-fit: cover; }.specialty-modal-type { position: absolute; left: 12px; bottom: 12px; padding: 4px 10px; border: 1px solid rgba(255,245,221,.7); color: #fff5dd; font-size: 11px; letter-spacing: .08em; }.specialty-modal-body { padding: 28px 30px 24px; overflow-y: auto; }.specialty-modal-place { color: var(--cinnabar); font-size: 11px; letter-spacing: .1em; }.specialty-modal-body h2 { margin: 8px 0 10px; color: var(--bronze-deep); font: 26px var(--font-display); letter-spacing: .06em; }.specialty-modal-intro { margin: 0; color: var(--ink-soft); font-size: 13px; line-height: 1.85; }.specialty-modal-story { display: flex; gap: 12px; margin-top: 20px; padding: 16px 18px; border-left: 3px solid var(--gold); background: #2d4a3e08; }.specialty-modal-story .seal-icon { width: 32px; height: 32px; flex: 0 0 auto; font-size: 14px; }.specialty-modal-story b { display: block; color: var(--bronze-deep); font: 13px var(--font-display); letter-spacing: .08em; }.specialty-modal-story p { margin: 7px 0 0; color: var(--ink-soft); font-size: 13px; line-height: 1.9; }.specialty-modal-body .specialty-tags { margin-top: 18px; }.specialty-modal-link { display: inline-flex; align-items: center; gap: 8px; margin-top: 20px; padding: 10px 18px; border: 1px solid var(--gold); background: transparent; color: var(--bronze-deep); cursor: pointer; font: 13px var(--font-display); letter-spacing: .08em; transition: all .22s; }.specialty-modal-link b { color: var(--cinnabar); font-size: 17px; transition: transform .2s; }.specialty-modal-link:hover { background: var(--bronze-deep); border-color: var(--bronze-deep); color: #fff5dd; }.specialty-modal-link:hover b { transform: translateX(4px); color: var(--gold-light); }.specialty-modal-link.disabled { display: inline-flex; align-items: center; gap: 8px; margin-top: 20px; padding: 10px 18px; border: 1px dashed var(--line-strong); background: transparent; color: var(--ink-soft); font: 12px var(--font-display); letter-spacing: .06em; cursor: default; }@keyframes specialty-fade { from { opacity: 0; } }@keyframes specialty-pop { from { opacity: 0; transform: translateY(20px) scale(.96); } }
html[data-theme="dark"] .specialties-masthead { background: #263b32; }html[data-theme="dark"] .specialty-card { background: var(--paper-light); }html[data-theme="dark"] .specialties-nav, html[data-theme="dark"] .specialties-collection-head { border-color: var(--line-strong); }html[data-theme="dark"] .specialties-province-nav { border-color: var(--line-strong); }html[data-theme="dark"] .specialty-modal-panel { background: #1c1f17; }html[data-theme="dark"] .specialty-modal-story { background: #2d4a3e1c; }
@media (max-width: 1050px) { .specialties-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .specialties-orbit { right: 38px; } }
@media (max-width: 760px) {
  .specialties-masthead { margin: 16px 16px 0; min-height: 300px; }.specialties-masthead-copy { min-height: 300px; padding: 26px 21px 19px; }.specialties-kicker { font-size: 9px; letter-spacing: .08em; }.specialties-kicker b { display: none; }.specialties-title-row { gap: 14px; padding: 20px 0; }.specialties-seal { width: 61px; height: 61px; font-size: 25px; }.specialties-title-row p { font-size: 10px; letter-spacing: .1em; }.specialties-title-row h1 { font-size: 30px; }
  .specialties-orbit { width: 108px; height: 108px; right: -20px; top: 49%; margin-top: -30px; opacity: .62; }.specialties-orbit::before { inset: 13px; }.specialties-orbit::after { inset: 30px; }.specialties-orbit span { font-size: 13px; }.specialties-orbit span:nth-child(1) { top: -11px; left: 46px; }.specialties-orbit span:nth-child(2) { top: 43px; right: -11px; }.specialties-orbit span:nth-child(3) { bottom: -11px; left: 47px; }.specialties-orbit span:nth-child(4) { top: 43px; left: -11px; }
  .specialties-masthead-footer span:first-child { font-size: 10px; }.specialties-masthead-footer span:last-child { display: none; }.specialties-nav { margin: 18px 16px 0; display: block; padding: 13px 0; }.specialties-nav-lead { margin-bottom: 12px; }.specialties-tabs { gap: 2px; }.specialties-tabs button { padding: 7px 9px; font-size: 11px; }.specialties-tabs button em { min-width: 14px; padding: 1px 4px; }.specialties-search { margin: 12px 16px 0; }.specialties-search-inner { padding: 8px 10px; }.specialties-search-input { font-size: 12px; }.specialties-search-btn { padding: 7px 12px; font-size: 11px; }.specialties-province-nav { margin: 12px 16px 0; display: block; padding: 11px 0; }.specialties-province-lead { margin-bottom: 10px; }.specialties-province-tabs { gap: 3px; }.specialties-province-tabs button { padding: 5px 8px; font-size: 11px; }.specialties-collection { margin: 20px 16px 0; }.specialties-collection-head { padding-bottom: 12px; }.specialties-collection-head h2 { font-size: 19px; }.specialties-collection-head p { font-size: 10px; }
  .specialties-grid { grid-template-columns: 1fr; gap: 13px; margin-top: 14px; }.specialty-card { display: grid; grid-template-columns: 42% 58%; }.specialty-card-photo { height: 100%; min-height: 155px; }.specialty-card-body { padding: 14px 13px 11px; }.specialty-card-body h3 { font-size: 17px; margin: 6px 0; }.specialty-card-body p { -webkit-line-clamp: 3; min-height: 0; font-size: 11px; }.specialty-card-action { margin-top: 9px; padding-top: 8px; }
  .specialty-modal { padding: 12px; align-items: flex-end; }.specialty-modal-panel { grid-template-columns: 1fr; max-height: 92vh; overflow-y: auto; }.specialty-modal-photo { min-height: 200px; max-height: 240px; }.specialty-modal-body { padding: 20px 18px 22px; }.specialty-modal-body h2 { font-size: 22px; }.specialty-modal-story { padding: 13px 14px; }
}

/* 旅行时间轴 - 家庭旅程编年册版 */
.timeline-masthead { position: relative; min-height: 280px; margin: 20px 32px 0; overflow: hidden; color: #fff5dd; background: #29433a; border: 1px solid rgba(212,184,106,.36); }
.timeline-masthead::before { content: ''; position: absolute; inset: 0; opacity: .28; background: repeating-linear-gradient(90deg, transparent 0 44px, rgba(255,245,221,.055) 44px 45px), repeating-linear-gradient(0deg, transparent 0 44px, rgba(255,245,221,.055) 44px 45px); }
.timeline-masthead-inner { position: relative; z-index: 1; min-height: 280px; padding: 33px 42px 25px; display: flex; flex-direction: column; }
.timeline-kicker { display: flex; align-items: center; gap: 10px; color: rgba(255,245,221,.63); font: 10px var(--font-mono); letter-spacing: .14em; }.timeline-kicker > span { width: 24px; height: 1px; background: var(--gold-light); }.timeline-kicker b { margin-left: auto; color: rgba(255,245,221,.45); font-weight: 400; }
.timeline-masthead-main { display: flex; align-items: center; justify-content: space-between; flex: 1; padding: 20px 0; }.timeline-title-row { display: flex; align-items: center; gap: 20px; }.timeline-seal { width: 76px; height: 76px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 50%; background: var(--cinnabar); border: 2px solid var(--gold-light); box-shadow: 0 10px 24px rgba(15,28,22,.32); color: #fff5dd; font: 31px var(--font-display); }.timeline-title-row p { margin: 0 0 7px; color: rgba(255,245,221,.67); font-size: 12px; letter-spacing: .15em; }.timeline-title-row h1 { margin: 0; color: #fff5dd; font: 700 40px/1.1 var(--font-display); letter-spacing: .13em; }
.timeline-masthead-stats { display: flex; align-items: center; gap: 20px; margin-right: 130px; }.timeline-masthead-stats div { display: flex; flex-direction: column; align-items: center; gap: 3px; }.timeline-masthead-stats b { color: var(--gold-light); font: 32px var(--font-display); }.timeline-masthead-stats span { color: rgba(255,245,221,.55); font-size: 11px; }.timeline-masthead-stats i { width: 1px; height: 42px; background: rgba(255,245,221,.28); }
.timeline-masthead-footer { display: flex; align-items: center; gap: 13px; color: rgba(255,245,221,.54); font-size: 11px; letter-spacing: .1em; }.timeline-masthead-footer i { flex: 1; height: 1px; background: rgba(255,245,221,.25); }.timeline-masthead-footer span:last-child { font: 10px var(--font-mono); white-space: nowrap; }
.timeline-compass { position: absolute; z-index: 1; right: 60px; top: 50%; width: 150px; height: 150px; margin-top: -75px; border: 1px solid rgba(212,184,106,.35); border-radius: 50%; transform: rotate(12deg); }.timeline-compass::before { content: '✦'; position: absolute; inset: 42px; display: grid; place-items: center; color: var(--gold-light); font-size: 26px; }.timeline-compass span { position: absolute; color: var(--gold-light); font: 15px var(--font-display); transform: rotate(-12deg); cursor: pointer; transition: color .18s, text-shadow .18s; }.timeline-compass span:nth-child(1) { top: -11px; left: 67px; }.timeline-compass span:nth-child(2) { right: -11px; top: 66px; }.timeline-compass span:nth-child(3) { bottom: -11px; left: 67px; }.timeline-compass span:nth-child(4) { left: -11px; top: 66px; }.timeline-compass span:hover { color: #fff5dd; text-shadow: 0 0 10px var(--gold-light); }.timeline-compass span.active { color: var(--cinnabar); text-shadow: 0 0 12px rgba(255,245,221,.7); font-weight: 700; }
.timeline-filter { margin: 22px 32px 0; padding: 15px 0; display: flex; align-items: center; gap: 24px; border-top: 1px solid var(--line-strong); border-bottom: 1px solid var(--line); }.timeline-filter-lead { display: flex; align-items: center; gap: 9px; min-width: 150px; }.timeline-filter-lead .seal-icon { width: 29px; height: 29px; font-size: 13px; }.timeline-filter-lead b { display: block; color: var(--bronze-deep); font: 13px var(--font-display); letter-spacing: .08em; }.timeline-filter-lead small { display: block; margin-top: 2px; color: var(--ink-soft); font-size: 10px; }.timeline-filter-tabs { display: flex; align-items: center; gap: 4px; }.timeline-filter-tabs button { display: inline-flex; align-items: center; gap: 5px; padding: 8px 12px; border: 1px solid transparent; background: transparent; color: var(--ink-soft); cursor: pointer; font-size: 12px; transition: all .18s; }.timeline-filter-tabs button span { color: var(--gold); font-size: 14px; }.timeline-filter-tabs button:hover { color: var(--bronze-deep); background: #2d4a3e0a; }.timeline-filter-tabs button.active { border-color: var(--gold); background: #d4b86a18; color: var(--bronze-deep); font-weight: 600; }.timeline-filter-tabs button em { min-width: 17px; padding: 1px 5px; border-radius: 8px; background: var(--paper-deep); color: var(--ink-soft); font: 10px var(--font-mono); font-style: normal; }.timeline-filter-tabs button.active em { background: var(--cinnabar); color: #fff5dd; }.timeline-season-tabs { display: flex; align-items: center; gap: 3px; margin-left: auto; }.timeline-season-tabs button { padding: 6px 10px; border: 1px solid transparent; background: transparent; color: var(--ink-soft); cursor: pointer; font-size: 11px; letter-spacing: .05em; transition: all .18s; }.timeline-season-tabs button:hover { color: var(--bronze-deep); background: #2d4a3e0a; }.timeline-season-tabs button.active { border-color: var(--gold); background: #d4b86a18; color: var(--bronze-deep); font-weight: 600; }.timeline-year-nav { margin: 18px 32px 0; padding: 11px 14px; display: flex; align-items: center; gap: 12px; border: 1px solid var(--line); background: var(--paper-light); }.timeline-year-nav .seal-icon { width: 28px; height: 28px; font-size: 12px; flex: 0 0 auto; }.timeline-year-chips { display: flex; flex-wrap: wrap; gap: 6px; }.timeline-year-chips button { padding: 5px 11px; border: 1px solid var(--line); background: transparent; color: var(--ink-soft); cursor: pointer; font: 11px var(--font-mono); letter-spacing: .05em; transition: all .18s; }.timeline-year-chips button:hover { border-color: var(--gold); color: var(--bronze-deep); background: #d4b86a10; }
/* 时间轴：旅行明信片长卷 */
.chronicle-shell { position: relative; margin-top: 26px; }
.chronicle-shell::before, .chronicle-shell::after { content: ''; position: absolute; top: 0; bottom: 0; z-index: 3; width: 44px; pointer-events: none; }
.chronicle-shell::before { left: 0; background: linear-gradient(90deg, var(--paper), transparent); }
.chronicle-shell::after { right: 0; background: linear-gradient(270deg, var(--paper), transparent); }
.chronicle-hint { position: absolute; z-index: 4; top: 46px; right: 52px; display: flex; align-items: center; gap: 9px; color: var(--bronze-deep); font-size: 11px; letter-spacing: .14em; opacity: .85; pointer-events: none; }
.chronicle-hint b { color: var(--cinnabar); font-size: 14px; animation: chronicleHint 1.6s ease-in-out infinite; }
@keyframes chronicleHint { 0%, 100% { transform: translateX(0); opacity: .9; } 50% { transform: translateX(7px); opacity: .45; } }
.chronicle-wrap { overflow-x: auto; scroll-snap-type: x proximity; scroll-behavior: auto; scrollbar-width: thin; scrollbar-color: var(--bronze) transparent; }
.chronicle-wrap::-webkit-scrollbar { height: 6px; }
.chronicle-wrap::-webkit-scrollbar-thumb { background: var(--bronze); border-radius: 3px; }
.chronicle-wrap::-webkit-scrollbar-track { background: transparent; }
.chronicle-inner { position: relative; display: flex; align-items: stretch; gap: 22px; width: max-content; min-width: 100%; padding: 84px 36px 30px; background: var(--paper-texture); }
.chronicle-line { position: absolute; z-index: 0; top: 52px; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, var(--cinnabar) 0%, var(--gold-light) 38%, var(--jade) 74%, var(--cinnabar) 100%); opacity: .55; box-shadow: 0 0 10px rgba(184,150,62,.35); }
.chronicle-year { position: relative; z-index: 1; flex: 0 0 auto; min-width: 96px; display: flex; flex-direction: column; align-items: center; padding-top: 8px; scroll-snap-align: start; }
.cy-knot, .cc-knot { position: absolute; z-index: 2; top: -38px; left: 50%; width: 14px; height: 14px; margin-left: -7px; border-radius: 50%; }
.cy-knot { background: var(--gold-light); border: 3px solid var(--cinnabar); box-shadow: 0 0 0 4px rgba(184,150,62,.18); }
.chronicle-year b { color: var(--bronze-deep); font: 700 44px/1 var(--font-display); letter-spacing: .05em; }
.chronicle-year .cy-cn { margin-top: 10px; writing-mode: vertical-rl; color: var(--cinnabar); font: 12px var(--font-display); letter-spacing: .4em; font-style: normal; }
.chronicle-year .cy-tail { width: 1px; min-height: 40px; margin-top: 10px; background: linear-gradient(var(--gold), transparent); }
.chronicle-card { position: relative; z-index: 1; flex: 0 0 320px; margin: 0; display: flex; flex-direction: column; background: var(--paper-light); border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 2px 10px rgba(24,47,37,.06); transition: transform .22s, box-shadow .22s, border-color .22s; scroll-snap-align: start; }
.chronicle-card.clickable { cursor: pointer; }
.chronicle-card.clickable:hover { transform: translateY(-6px); box-shadow: 0 18px 34px rgba(24,47,37,.18); border-color: var(--gold); }
.cc-stem { position: absolute; top: -32px; left: 50%; width: 2px; height: 32px; margin-left: -1px; background: linear-gradient(var(--gold-light), var(--line-strong)); }
.cc-knot { background: var(--cinnabar); border: 2px solid var(--gold-light); box-shadow: 0 0 0 4px rgba(139,46,34,.14); }
.chronicle-photo { position: relative; height: 186px; overflow: hidden; border-radius: 11px 11px 0 0; background: var(--paper-deep); }
.chronicle-photo .seal-img, .chronicle-photo .seal-fallback { width: 100%; height: 100%; }
.chronicle-photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s cubic-bezier(.2,.7,.3,1); }
.chronicle-card.clickable:hover .chronicle-photo img { transform: scale(1.06); }
.cc-veil { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(15,25,20,.38), transparent 32%, transparent 56%, rgba(15,25,20,.55)); }
.cc-stamp { position: absolute; top: 12px; left: 12px; padding: 5px 10px; transform: rotate(-2deg); background: var(--cinnabar); border: 1px solid rgba(240,228,200,.55); border-radius: 6px; color: #fff5dd; font: 13px var(--font-display); letter-spacing: .08em; box-shadow: 0 3px 8px rgba(15,25,20,.3); }
.cc-badge { position: absolute; top: 12px; right: 12px; padding: 4px 10px; border-radius: 999px; background: rgba(15,25,20,.55); border: 1px solid rgba(240,228,200,.3); color: var(--gold-pale); font-size: 10px; letter-spacing: .1em; }
.cc-badge.is-memory { color: #cfe6da; }
.cc-place { position: absolute; bottom: 10px; left: 14px; color: #fff; font-size: 11px; letter-spacing: .08em; text-shadow: 0 1px 6px rgba(0,0,0,.5); }
.chronicle-copy { position: relative; min-width: 0; padding: 15px 18px 14px; }
.chronicle-copy::before, .chronicle-copy::after { content: ''; position: absolute; width: 16px; height: 16px; opacity: .75; }
.chronicle-copy::before { bottom: 8px; left: 8px; border-bottom: 1px solid var(--gold); border-left: 1px solid var(--gold); }
.chronicle-copy::after { bottom: 8px; right: 8px; border-bottom: 1px solid var(--gold); border-right: 1px solid var(--gold); }
.cc-date { display: flex; align-items: baseline; gap: 8px; }
.cc-date b { position: relative; padding-left: 15px; color: var(--bronze-deep); font: 16px var(--font-display); letter-spacing: .05em; }
.cc-date b::before { content: ''; position: absolute; left: 0; top: 50%; width: 7px; height: 7px; margin-top: -4px; transform: rotate(45deg); background: var(--cinnabar); }
.cc-date small { color: var(--ink-soft); font: 10px var(--font-mono); }
.chronicle-copy h3 { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; margin: 8px 0 6px; color: var(--ink); font: 18px/1.45 var(--font-display); letter-spacing: .04em; }
.chronicle-copy p { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 3; margin: 0; color: var(--ink-soft); font-size: 12px; line-height: 1.75; }
.cc-foot { display: flex; align-items: center; justify-content: space-between; margin-top: 12px; padding-top: 10px; border-top: 1px dashed var(--line-strong); }
.chronicle-action { display: inline-flex; align-items: center; gap: 8px; color: var(--bronze-deep); font-size: 11px; letter-spacing: .06em; }
.chronicle-action b { color: var(--cinnabar); font-size: 15px; transition: transform .2s; }
.chronicle-card.clickable:hover .chronicle-action b { transform: translateX(4px); }
.cc-idle { color: var(--ink-soft); font: 10px var(--font-mono); letter-spacing: .08em; }
html[data-theme="dark"] .timeline-masthead { background: #263b32; }
html[data-theme="dark"] .timeline-filter { border-color: var(--line-strong); }
html[data-theme="dark"] .chronicle-card { background: #1d3129; border-color: var(--line-strong); box-shadow: 0 2px 10px rgba(0,0,0,.25); }
html[data-theme="dark"] .chronicle-card.clickable:hover { background: #24392f; }
html[data-theme="dark"] .chronicle-copy h3 { color: var(--gold-pale); }
html[data-theme="dark"] .cc-date b, html[data-theme="dark"] .chronicle-hint { color: var(--gold-light); }
html[data-theme="dark"] .chronicle-year b { color: var(--gold-pale); }
@media (max-width: 760px) {
  .timeline-masthead { min-height: 300px; margin: 16px 16px 0; }.timeline-masthead-inner { min-height: 300px; padding: 26px 21px 19px; }.timeline-kicker { font-size: 9px; letter-spacing: .08em; }.timeline-kicker b { display: none; }.timeline-masthead-main { padding: 19px 0; }.timeline-title-row { gap: 14px; }.timeline-seal { width: 61px; height: 61px; font-size: 25px; }.timeline-title-row p { font-size: 10px; letter-spacing: .1em; }.timeline-title-row h1 { font-size: 30px; }.timeline-masthead-stats { gap: 12px; margin: 19px 0 0 76px; }.timeline-masthead-stats b { font-size: 25px; }.timeline-masthead-stats i { height: 34px; }.timeline-compass { width: 106px; height: 106px; right: -20px; top: 48%; margin-top: -22px; opacity: .64; }.timeline-compass::before { inset: 28px; font-size: 19px; }.timeline-compass span { font-size: 12px; }.timeline-compass span:nth-child(1) { top: -10px; left: 47px; }.timeline-compass span:nth-child(2) { top: 46px; right: -10px; }.timeline-compass span:nth-child(3) { bottom: -10px; left: 47px; }.timeline-compass span:nth-child(4) { top: 46px; left: -10px; }.timeline-masthead-footer span:first-child { font-size: 10px; }.timeline-masthead-footer span:last-child { display: none; }
  .timeline-filter { margin: 18px 16px 0; display: block; padding: 13px 0; }.timeline-filter-lead { margin-bottom: 12px; }.timeline-filter-tabs { overflow-x: auto; padding-bottom: 2px; }.timeline-filter-tabs button { flex: 0 0 auto; padding: 7px 10px; font-size: 11px; }.timeline-filter-tabs button em { min-width: 15px; padding: 1px 4px; }.timeline-season-tabs { margin: 12px 0 0; }.timeline-season-tabs button { flex: 0 0 auto; padding: 6px 9px; font-size: 11px; }.timeline-year-nav { margin: 16px 16px 0; padding: 9px 11px; gap: 9px; }.timeline-year-nav .seal-icon { width: 25px; height: 25px; font-size: 11px; }.timeline-year-chips { gap: 5px; }.timeline-year-chips button { padding: 4px 9px; font-size: 10px; }
  .chronicle-shell { margin-top: 18px; }.chronicle-shell::before, .chronicle-shell::after { width: 20px; }.chronicle-hint { display: none; }.chronicle-inner { gap: 14px; padding: 74px 18px 22px; }.chronicle-year { min-width: 78px; }.chronicle-year b { font-size: 34px; }.chronicle-year .cy-cn { font-size: 10px; }.chronicle-card { flex-basis: 252px; }.chronicle-photo { height: 148px; }.cc-stamp { padding: 4px 8px; font-size: 11px; }.cc-badge { padding: 3px 8px; font-size: 9px; }.chronicle-copy { padding: 12px 14px 12px; }.chronicle-copy h3 { font-size: 16px; }.chronicle-copy p { font-size: 11px; }
}

/* 省份页 - 中国行迹档案版 */
.province-masthead{position:relative;min-height:280px;margin:20px 32px 0;overflow:hidden;color:#fff5dd;background:#29433a;border:1px solid rgba(212,184,106,.36)}
.province-masthead::before{content:'';position:absolute;inset:0;opacity:.28;background:repeating-linear-gradient(90deg,transparent 0 44px,rgba(255,245,221,.055) 44px 45px),repeating-linear-gradient(0deg,transparent 0 44px,rgba(255,245,221,.055) 44px 45px)}
.province-masthead-inner{position:relative;z-index:1;min-height:280px;padding:33px 42px 25px;display:flex;flex-direction:column}.province-kicker{display:flex;align-items:center;gap:10px;color:#fff5dda1;font:10px var(--font-mono);letter-spacing:.14em}.province-kicker>span{width:24px;height:1px;background:var(--gold-light)}.province-kicker b{margin-left:auto;color:#fff5dd73;font-weight:400}.province-masthead-main{display:flex;align-items:center;justify-content:space-between;flex:1;padding:20px 0}.province-title-row{display:flex;align-items:center;gap:20px}.province-seal{width:76px;height:76px;display:grid;place-items:center;flex:0 0 auto;border-radius:50%;background:var(--cinnabar);border:2px solid var(--gold-light);box-shadow:0 10px 24px #0f1c1652;color:#fff5dd;font:31px var(--font-display)}.province-title-row p{margin:0 0 7px;color:#fff5dda8;font-size:12px;letter-spacing:.15em}.province-title-row h1{margin:0;color:#fff5dd;font:700 40px/1.1 var(--font-display);letter-spacing:.13em}.province-masthead-note{width:245px;padding:11px 0 11px 18px;border-left:1px solid #d4b86a8f}.province-masthead-note span{color:var(--gold-light);font:25px var(--font-display)}.province-masthead-note p{margin:5px 0 0;color:#fff5ddc4;font:16px/1.7 var(--font-display);letter-spacing:.08em}.province-masthead-footer{display:flex;align-items:center;gap:13px;color:#fff5dd8a;font-size:11px;letter-spacing:.1em}.province-masthead-footer i{flex:1;height:1px;background:#fff5dd40}.province-masthead-footer span:last-child{font:10px var(--font-mono);white-space:nowrap}.province-map-mark{position:absolute;z-index:1;right:65px;top:42px;width:110px;height:152px;border:1px solid #d4b86a59;border-radius:46% 54% 43% 57%;transform:rotate(12deg);display:grid;place-items:center;color:#d4b86a73;font:38px var(--font-display);line-height:.7}.province-map-mark small{font-size:18px}.province-selector{margin:22px 32px 0;padding:15px 0;display:flex;align-items:center;gap:24px;border-top:1px solid var(--line-strong);border-bottom:1px solid var(--line)}.province-selector-lead{display:flex;align-items:center;gap:9px;min-width:150px}.province-selector-lead .seal-icon{width:29px;height:29px;font-size:13px}.province-selector-lead b{display:block;color:var(--bronze-deep);font:13px var(--font-display);letter-spacing:.08em}.province-selector-lead small{display:block;margin-top:2px;color:var(--ink-soft);font-size:10px}.province-tabs{display:flex;align-items:center;align-content:center;gap:5px;flex:1;flex-wrap:wrap;overflow:visible;padding-bottom:2px}.province-tabs::-webkit-scrollbar{display:none}.province-tabs button{display:inline-flex;align-items:center;gap:5px;flex:0 0 auto;padding:7px 10px;border:1px solid transparent;background:transparent;color:var(--ink-soft);cursor:pointer;font-size:12px;transition:all .18s}.province-tabs button span{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:var(--paper-deep);color:var(--bronze-deep);font:11px var(--font-display)}.province-tabs button:hover{color:var(--bronze-deep);background:#2d4a3e0a}.province-tabs button.active{border-color:var(--gold);background:#d4b86a18;color:var(--bronze-deep);font-weight:600}.province-tabs button.active span{background:var(--cinnabar);color:#fff5dd}
.province-collection{margin:27px 32px 0}.province-region-head{display:flex;align-items:center;justify-content:space-between;padding-bottom:14px;border-bottom:1px solid var(--line)}.province-region-title{display:flex;align-items:center;gap:13px}.province-region-index{color:var(--cinnabar);font:600 14px var(--font-mono)}.province-region-title p{margin:0 0 3px;color:var(--ink-soft);font-size:10px;letter-spacing:.1em}.province-region-title h2{margin:0;color:var(--ink);font:24px var(--font-display);letter-spacing:.1em}.province-region-meta{display:flex;align-items:baseline;gap:6px}.province-region-meta>span{color:var(--cinnabar);font:28px var(--font-display)}.province-region-meta small{color:var(--ink-soft);font-size:11px}.province-region-meta button{margin-left:12px;border:0;border-bottom:1px solid var(--gold);background:transparent;color:var(--bronze-deep);cursor:pointer;font-size:11px;padding:4px 0}.province-region-cover{position:relative;height:210px;margin-top:17px;overflow:hidden;background:var(--bronze-dark);background-image:var(--province-cover);background-size:cover;background-position:center;cursor:pointer;transition:transform .3s,box-shadow .3s}.province-region-cover:hover{box-shadow:0 12px 28px #182f3728}.province-region-cover:focus-visible{outline:2px solid var(--cinnabar);outline-offset:4px}.province-region-cover:hover .province-region-cover-copy span{background:rgba(0,0,0,.4);border-color:var(--gold-light);transform:scale(1.05)}.province-region-cover::before{content:'';position:absolute;inset:0;background:var(--province-cover);background-size:cover;background-position:center;opacity:.55}.province-region-cover-shade{position:absolute;inset:0;background:linear-gradient(90deg,#0a1410d9 0%,#0a14105e 55%,#0a14101f 100%)}.province-region-cover-copy{position:relative;z-index:1;height:100%;display:flex;align-items:center;gap:18px;padding:0 34px;color:#fff5dd}.province-region-cover-copy>span{width:58px;height:58px;display:grid;place-items:center;flex:0 0 auto;border:1px solid var(--gold-light);border-radius:50%;color:var(--gold-light);font:27px var(--font-display)}.province-region-cover-copy p{margin:0 0 6px;color:#fff5ddaa;font-size:11px;letter-spacing:.13em}.province-region-cover-copy h3{margin:0;color:#fff5dd;font:32px var(--font-display);letter-spacing:.12em}.province-region-cover-copy small{display:block;max-width:540px;margin-top:9px;color:#fff5ddc7;font-size:12px;line-height:1.75;letter-spacing:.04em}.province-journal-head{display:flex;align-items:center;gap:10px;margin-top:22px;color:var(--ink-soft);font-size:10px;letter-spacing:.1em}.province-journal-head i{height:1px;flex:1;background:var(--line-strong)}.province-journal-head b{color:var(--bronze-deep);font:13px var(--font-display);letter-spacing:.08em}.province-journal-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px;margin-top:14px}.province-journal-card{overflow:hidden;border:1px solid var(--line);background:var(--paper-light);cursor:pointer;transition:transform .25s,box-shadow .25s,border-color .25s}.province-journal-card:hover{transform:translateY(-5px);border-color:var(--gold);box-shadow:0 15px 30px #182f3721}.province-journal-photo{position:relative;height:178px;overflow:hidden;background:var(--paper-deep)}.province-journal-photo>.seal-img,.province-journal-photo>.seal-fallback{width:100%;height:100%}.province-journal-photo img{width:100%;height:100%;object-fit:cover;transition:transform .5s}.province-journal-card:hover .province-journal-photo img{transform:scale(1.05)}.province-journal-index{position:absolute;z-index:2;left:11px;top:11px;padding:4px 6px;border:1px solid #fff5ddb3;color:#fff5dd;font:10px var(--font-mono);letter-spacing:.08em}.province-journal-body{padding:14px 15px 12px}.province-journal-body>span{color:var(--cinnabar);font-size:10px;letter-spacing:.08em}.province-journal-body h3{margin:7px 0;color:var(--bronze-deep);font:18px var(--font-display);letter-spacing:.04em}.province-journal-body p{display:-webkit-box;overflow:hidden;min-height:40px;margin:0;color:var(--ink-soft);font-size:12px;line-height:1.7;-webkit-box-orient:vertical;-webkit-line-clamp:2}.province-journal-body>div{display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding-top:9px;border-top:1px dashed var(--line);color:var(--ink-soft);font-size:11px}.province-journal-body b{color:var(--cinnabar);font-size:16px;transition:transform .2s}.province-journal-card:hover .province-journal-body b{transform:translateX(4px)}.province-journal-head small{margin-left:4px;color:var(--cinnabar);font-size:10px;font-weight:400;letter-spacing:.06em}.province-journal-skeleton{overflow:hidden;border:1px solid var(--line);background:var(--paper-light);animation:province-skeleton-pulse 1.35s ease-in-out infinite}.province-journal-skeleton>div{height:178px;background:linear-gradient(110deg,var(--paper-deep) 20%,#fffdf7 42%,var(--paper-deep) 65%);background-size:220% 100%;animation:province-skeleton-shine 1.35s linear infinite}.province-journal-skeleton span,.province-journal-skeleton b,.province-journal-skeleton i{display:block;height:10px;margin:14px 15px 0;background:var(--paper-deep)}.province-journal-skeleton b{width:62%;height:16px;margin-top:11px}.province-journal-skeleton i{width:78%;margin-top:10px;margin-bottom:17px}@keyframes province-skeleton-shine{to{background-position:-220% 0}}@keyframes province-skeleton-pulse{50%{opacity:.7}}.province-empty{padding:44px 0!important}html[data-theme="dark"] .province-masthead{background:#263b32}html[data-theme="dark"] .province-selector,html[data-theme="dark"] .province-region-head{border-color:var(--line-strong)}html[data-theme="dark"] .province-journal-card{background:var(--paper-light)}
@media(max-width:850px){.province-journal-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.province-map-mark{right:34px}}
@media(max-width:760px){.province-masthead{min-height:300px;margin:16px 16px 0}.province-masthead-inner{min-height:300px;padding:26px 21px 19px}.province-kicker{font-size:9px;letter-spacing:.08em}.province-kicker b{display:none}.province-masthead-main{padding:20px 0}.province-title-row{gap:14px}.province-seal{width:61px;height:61px;font-size:25px}.province-title-row p{font-size:10px;letter-spacing:.1em}.province-title-row h1{font-size:30px}.province-masthead-note{display:none}.province-map-mark{right:-15px;top:84px;width:98px;height:138px;font-size:33px;opacity:.62}.province-map-mark{right:14px;top:78px;width:84px;height:120px;font-size:28px;opacity:.55}.province-map-mark small{font-size:16px}.province-masthead-footer span:first-child{font-size:10px}.province-masthead-footer span:last-child{display:none}.province-selector{display:block;margin:18px 16px 0;padding:13px 0}.province-selector-lead{margin-bottom:12px}.province-tabs{gap:2px}.province-tabs button{padding:7px 8px;font-size:11px}.province-collection{margin:20px 16px 0}.province-region-head{padding-bottom:12px}.province-region-title h2{font-size:21px}.province-region-meta>span{font-size:24px}.province-region-meta small{font-size:10px}.province-region-meta button{display:none}.province-region-cover{height:184px;margin-top:14px}.province-region-cover-copy{gap:13px;padding:0 20px}.province-region-cover-copy>span{width:46px;height:46px;font-size:22px}.province-region-cover-copy p{font-size:10px}.province-region-cover-copy h3{font-size:26px}.province-region-cover-copy small{font-size:11px;line-height:1.6}.province-journal-head{margin-top:18px}.province-journal-grid{grid-template-columns:1fr;gap:12px;margin-top:12px}.province-journal-card{display:grid;grid-template-columns:42% 58%}.province-journal-photo{height:100%;min-height:150px}.province-journal-body{padding:13px 12px 10px}.province-journal-body h3{font-size:17px;margin:6px 0}.province-journal-body p{min-height:0;font-size:11px;-webkit-line-clamp:3}.province-journal-body>div{margin-top:8px;padding-top:7px}}

/* =====================================================
   旅行计划 - 计划列表 + 详情（进度 / 节点 / 路线地图）
   ===================================================== */
/* 计划列表页 */
.plans-masthead{position:relative;min-height:240px;margin:20px 32px 0;overflow:hidden;color:#fff5dd;background:#29433a;border:1px solid rgba(212,184,106,.36);display:flex;align-items:center;justify-content:space-between;gap:30px;padding:30px 42px}
.plans-masthead::before{content:'';position:absolute;inset:0;opacity:.28;background:repeating-linear-gradient(90deg,transparent 0 44px,rgba(255,245,221,.055) 44px 45px),repeating-linear-gradient(0deg,transparent 0 44px,rgba(255,245,221,.055) 44px 45px)}
.plans-masthead-copy{position:relative;z-index:1}
.plans-title-row{display:flex;align-items:center;gap:20px;margin-top:14px}
.plans-seal{width:76px;height:76px;display:grid;place-items:center;flex:0 0 auto;border-radius:50%;background:var(--cinnabar);border:2px solid var(--gold-light);box-shadow:0 10px 24px rgba(15,28,22,.32);color:#fff5dd;font:31px var(--font-display)}
.plans-title-row p{margin:0 0 7px;color:#fff5dda8;font-size:12px;letter-spacing:.15em}
.plans-title-row h1{margin:0;color:#fff5dd;font:700 40px/1.1 var(--font-display);letter-spacing:.13em}
.plans-lead{margin:14px 0 0;color:#fff5ddb8;font-size:12px;letter-spacing:.08em;max-width:520px}
.plans-masthead-stats{position:relative;z-index:1;display:flex;align-items:center;gap:20px;flex:0 0 auto}
.plans-masthead-stats div{display:flex;flex-direction:column;align-items:center;gap:3px}
.plans-masthead-stats b{color:var(--gold-light);font:32px var(--font-display)}
.plans-masthead-stats span{color:#fff5dd8a;font-size:11px}
.plans-masthead-stats i{width:1px;height:42px;background:rgba(255,245,221,.28)}
.plans-list-section{margin:28px 32px 0}
.plans-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px;margin-top:18px}
.plans-filter-bar{margin-bottom:20px;padding:14px 16px;background:var(--paper-light);border:1px solid var(--line);display:flex;align-items:center;gap:20px}
.plans-filter-lead{display:flex;align-items:center;gap:9px;min-width:150px}
.plans-filter-lead .seal-icon{width:29px;height:29px;font-size:13px}
.plans-filter-lead b{display:block;color:var(--bronze-deep);font:13px var(--font-display);letter-spacing:.08em}
.plans-filter-lead small{display:block;margin-top:2px;color:var(--ink-soft);font-size:10px}
.plans-filter-controls{flex:1;display:flex;align-items:center;gap:16px;min-width:0}
.plans-search{flex:1;min-width:180px;display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--line);background:var(--paper);border-radius:4px}
.plans-search span{color:var(--gold);font-size:16px}
.plans-search input{flex:1;min-width:0;border:0;background:transparent;color:var(--ink);font-size:13px;outline:none}
.plans-search input::placeholder{color:var(--ink-soft)}
.plans-search button{width:22px;height:22px;border:0;border-radius:50%;background:var(--paper-deep);color:var(--ink-soft);cursor:pointer;font-size:14px;line-height:1}
.plans-search button:hover{background:var(--cinnabar);color:#fff5dd}
.plans-status-tabs{display:flex;align-items:center;gap:4px;flex:0 0 auto}
.plans-status-tabs button{display:inline-flex;align-items:center;gap:5px;padding:6px 11px;border:1px solid transparent;background:transparent;color:var(--ink-soft);cursor:pointer;font-size:11px;letter-spacing:.04em;transition:all .18s;white-space:nowrap}
.plans-status-tabs button:hover{color:var(--bronze-deep);background:#2d4a3e0a}
.plans-status-tabs button.active{border-color:var(--gold);background:#d4b86a18;color:var(--bronze-deep);font-weight:600}
.plans-status-tabs button em{min-width:15px;padding:1px 4px;border-radius:8px;background:var(--paper-deep);color:var(--ink-soft);font:9px var(--font-mono);font-style:normal}
.plans-status-tabs button.active em{background:var(--cinnabar);color:#fff5dd}
.plan-card{overflow:hidden;border:1px solid var(--line);background:var(--paper-light);cursor:pointer;transition:transform .25s,box-shadow .25s,border-color .25s}
.plan-card:hover{transform:translateY(-5px);border-color:var(--gold);box-shadow:0 15px 30px #182f3721}
.plan-card-cover{position:relative;height:170px;overflow:hidden;background:var(--paper-deep)}
.plan-card-cover>.seal-img,.plan-card-cover>.seal-fallback{width:100%;height:100%}
.plan-card-cover img{width:100%;height:100%;object-fit:cover;transition:transform .5s}
.plan-card:hover .plan-card-cover img{transform:scale(1.05)}
.plan-status{position:absolute;right:12px;top:12px;padding:4px 10px;border-radius:12px;font-size:10px;letter-spacing:.05em;background:rgba(15,31,24,.7);color:#fff5dd}
.plan-status.ongoing{background:var(--bronze);color:#fff5dd}
.plan-status.finished{background:var(--cinnabar);color:#fff5dd}
.plan-card-body{padding:15px 17px 14px}
.plan-card-index{color:var(--cinnabar);font:10px var(--font-mono);letter-spacing:.1em}
.plan-card-body h3{margin:8px 0 5px;color:var(--bronze-deep);font:20px var(--font-display);letter-spacing:.04em}
.plan-card-sub{color:var(--ink-soft);font-size:12px;margin:0 0 8px}
.plan-card-dates{color:var(--ink-soft);font-size:11px;margin-bottom:12px;display:flex;align-items:center;gap:5px}
.plan-progress{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.plan-progress-bar{flex:1;height:6px;border-radius:3px;background:var(--paper-deep);overflow:hidden}
.plan-progress-bar i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,var(--gold),var(--cinnabar));transition:width .4s}
.plan-progress span{color:var(--ink-soft);font:10px var(--font-mono);white-space:nowrap}
.plan-card-link{color:var(--bronze-deep);font-size:11px}
.plan-card-link b{color:var(--cinnabar)}

/* 计划详情页 */
.pland-hero{position:relative;min-height:260px;margin:20px 32px 0;overflow:hidden;color:#fff5dd;background:#29433a;background-image:var(--asset-hero);background-size:cover;background-position:center}
.pland-hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(10,20,16,.88) 0%,rgba(10,20,16,.55) 55%,rgba(10,20,16,.25) 100%)}
.pland-hero-copy{position:relative;z-index:1;min-height:260px;padding:36px 42px;display:flex;flex-direction:column;justify-content:center}
.pland-hero-copy h1{margin:12px 0 6px;color:#fff5dd;font:700 38px/1.15 var(--font-display);letter-spacing:.12em}
.pland-sub{color:#fff5ddb8;font-size:13px;letter-spacing:.08em}
.pland-dates{margin-top:12px;color:#fff5ddb8;font-size:12px;letter-spacing:.06em;display:flex;align-items:center;gap:6px}
.pland-progress-panel{margin:24px 32px 0;padding:22px 24px;background:var(--paper-light);border:1px solid var(--line);display:flex;gap:28px;align-items:center;justify-content:space-between}
.pland-progress-main{flex:1;min-width:0}
.pland-progress-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.pland-progress-head .seal-icon{width:32px;height:32px;font-size:14px}
.pland-progress-head b{display:block;color:var(--bronze-deep);font:14px var(--font-display);letter-spacing:.06em}
.pland-progress-head small{display:block;margin-top:2px;color:var(--ink-soft);font-size:10px}
.pland-progress-track{height:10px;border-radius:5px;background:var(--paper-deep);overflow:hidden}
.pland-progress-fill{height:100%;border-radius:5px;background:linear-gradient(90deg,var(--gold),var(--cinnabar));transition:width .5s}
.pland-progress-meta{display:flex;justify-content:space-between;margin-top:8px;color:var(--ink-soft);font-size:11px}
.pland-progress-meta b{color:var(--cinnabar);font:16px var(--font-display)}
.pland-progress-stats{display:flex;gap:24px;flex:0 0 auto}
.pland-progress-stats div{display:flex;flex-direction:column;align-items:center;gap:3px}
.pland-progress-stats b{color:var(--bronze-deep);font:26px var(--font-display)}
.pland-progress-stats span{color:var(--ink-soft);font-size:10px}
.pland-progress-ring-wrap{flex:0 0 auto;display:flex;align-items:center}
.pland-progress-ring{width:96px;height:96px;border-radius:50%;display:grid;place-items:center}
.pland-progress-ring-inner{width:76px;height:76px;border-radius:50%;background:var(--paper-light);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px}
.pland-progress-ring-inner b{color:var(--cinnabar);font:24px var(--font-display);line-height:1}
.pland-progress-ring-inner b i{font-style:normal;font-size:13px;margin-left:1px}
.pland-progress-ring-inner span{color:var(--ink-soft);font-size:10px;letter-spacing:.05em}
.pland-progress-seg{display:flex;gap:6px;margin-top:12px;height:24px;border-radius:6px;overflow:hidden;font-size:11px}
.pland-progress-seg span{display:flex;align-items:center;justify-content:center;gap:6px;min-width:0;white-space:nowrap;color:#fff5dd;padding:0 10px}
.pland-progress-seg span i{width:7px;height:7px;border-radius:50%;background:#fff5dd;flex:0 0 auto}
.pland-progress-seg .pland-seg-done{background:linear-gradient(90deg,var(--cinnabar),#a83328)}
.pland-progress-seg .pland-seg-pending{background:var(--paper-deep);color:var(--ink-soft)}
.pland-progress-seg .pland-seg-pending i{background:var(--ink-soft)}
.pland-summary{margin:24px 32px 0;padding:18px 22px;border-left:3px solid var(--gold);background:#2d4a3e0a;color:var(--ink-soft);font-size:13px;line-height:1.9;letter-spacing:.04em}
.pland-map-section,.pland-timeline-section{margin:34px 32px 0}
.pland-map-wrap{position:relative;height:420px;border:1px solid var(--line);background:var(--paper-light);overflow:hidden}
.pland-map-chart{width:100%;height:100%}
.pland-map-empty{position:absolute;inset:0;display:grid;place-items:center;color:var(--ink-soft);font-size:12px;text-align:center;padding:0 20px}
.pland-timeline{position:relative;padding-left:44px}
.pland-timeline-line{position:absolute;left:15px;top:6px;bottom:6px;width:1px;background:linear-gradient(180deg,var(--cinnabar),var(--gold-light),var(--jade));opacity:.5}
.pland-node{position:relative;display:flex;gap:16px;margin-bottom:16px}
.pland-node.clickable{cursor:pointer}
.pland-node-marker{position:absolute;left:-44px;top:14px;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--paper);border:1px solid var(--gold);color:var(--bronze-deep);font:13px var(--font-display);z-index:2}
.pland-node.done .pland-node-marker{background:var(--cinnabar);border-color:var(--gold-light);color:#fff5dd}
.pland-node-card{flex:1;min-width:0;padding:16px 18px;background:var(--paper-light);border:1px solid var(--line);border-radius:6px;transition:border-color .2s,box-shadow .2s}
.pland-node.done .pland-node-card{border-color:var(--gold);box-shadow:0 6px 18px #182f3714}
.pland-node.clickable:hover .pland-node-card{border-color:var(--gold)}
.pland-node.focused .pland-node-card{border-color:var(--cinnabar);box-shadow:0 0 0 2px var(--cinnabar),0 8px 22px #8b2e2218;background:#8b2e2206}
.pland-node.focused .pland-node-marker{border-color:var(--cinnabar);box-shadow:0 0 0 3px #8b2e2222}
.pland-node-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.pland-node-head h3{margin:0;color:var(--bronze-deep);font:19px var(--font-display);letter-spacing:.04em}
.pland-node-tag{display:inline-block;margin-left:8px;padding:1px 7px;border-radius:8px;font-size:9px;background:var(--paper-deep);color:var(--ink-soft)}
.pland-node-tag.spot{background:#8b2e2215;color:var(--cinnabar)}
.pland-node-head em{margin-left:8px;color:var(--ink-soft);font-size:11px;font-style:normal}
.pland-node-status{flex:0 0 auto;padding:3px 10px;border-radius:11px;font-size:10px;background:var(--paper-deep);color:var(--ink-soft)}
.pland-node-status.done{background:var(--bronze);color:#fff5dd}
.pland-node-meta{display:flex;flex-wrap:wrap;gap:12px;margin-top:10px;color:var(--ink-soft);font-size:11px}
.pland-node-note{margin:10px 0 0;color:var(--ink-soft);font-size:12px;line-height:1.7}
.pland-node-post{display:inline-flex;align-items:center;gap:10px;margin-top:12px;padding:8px 10px 8px 8px;border-top:1px dashed var(--line);color:var(--bronze-deep);font-size:12px;width:100%;background:#2d4a3e08}
.pland-node-post-thumb{width:46px;height:46px;flex:0 0 auto;border:1px solid var(--line);overflow:hidden;background:var(--paper-deep);display:block}
.pland-node-post-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.pland-node-post-mark{width:46px;height:46px;flex:0 0 auto;display:grid;place-items:center;border:1px solid var(--line);background:var(--paper-deep);color:var(--gold);font-size:22px}
.pland-node-post-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.pland-node-post-body b{color:var(--bronze-deep);font:13px var(--font-display);letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pland-node-post-body small{color:var(--ink-soft);font-size:10px;letter-spacing:.04em}
.pland-node-post-arrow{color:var(--cinnabar);font-size:18px;font-weight:700;flex:0 0 auto;transition:transform .2s}
.pland-node.clickable:hover .pland-node-post-arrow{transform:translateX(4px)}
.pland-node-filter{margin:14px 0 18px;padding:14px 16px;background:var(--paper-light);border:1px solid var(--line);display:flex;flex-direction:column;gap:10px}
.pland-node-filter-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pland-node-filter-label{color:var(--bronze-deep);font:12px var(--font-display);letter-spacing:.08em;margin-right:6px;min-width:36px}
.pland-node-filter-row button{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border:1px solid transparent;background:transparent;color:var(--ink-soft);cursor:pointer;font-size:11px;letter-spacing:.04em;transition:all .18s}
.pland-node-filter-row button:hover{color:var(--bronze-deep);background:#2d4a3e0a}
.pland-node-filter-row button.active{border-color:var(--gold);background:#d4b86a18;color:var(--bronze-deep);font-weight:600}
.pland-node-filter-row button em{min-width:15px;padding:1px 4px;border-radius:8px;background:var(--paper-deep);color:var(--ink-soft);font:9px var(--font-mono);font-style:normal}
.pland-node-filter-row button.active em{background:var(--cinnabar);color:#fff5dd}
.pland-empty{margin:24px 0 8px;padding:30px 20px;border:1px dashed var(--line-strong);text-align:center;color:var(--ink-soft);font-size:12px}
.pland-empty button{margin-left:8px;padding:5px 12px;border:1px solid var(--gold);background:transparent;color:var(--bronze-deep);cursor:pointer;font-size:11px;letter-spacing:.04em}
.pland-empty button:hover{background:var(--bronze-deep);color:#fff5dd}
html[data-theme="dark"] .plans-masthead,html[data-theme="dark"] .pland-hero{background-color:#263b32}
html[data-theme="dark"] .plan-card,html[data-theme="dark"] .pland-progress-panel,html[data-theme="dark"] .pland-map-wrap,html[data-theme="dark"] .pland-node-card,html[data-theme="dark"] .pland-node-filter,html[data-theme="dark"] .plans-filter-bar{background:var(--paper-light)}
html[data-theme="dark"] .pland-node-post{background:#2d4a3e1a}
html[data-theme="dark"] .pland-progress-ring-inner{background:var(--paper-light)}
html[data-theme="dark"] .plans-search{background:#12140f}

@media (max-width: 760px) {
  .plans-masthead{min-height:0;margin:16px 16px 0;padding:24px 21px;flex-direction:column;align-items:flex-start;gap:16px}
  .plans-title-row{gap:14px}
  .plans-seal{width:61px;height:61px;font-size:25px}
  .plans-title-row p{font-size:10px}
  .plans-title-row h1{font-size:30px}
  .plans-lead{font-size:11px}
  .plans-masthead-stats{gap:12px}
  .plans-masthead-stats b{font-size:25px}
  .plans-masthead-stats i{height:34px}
  .plans-list-section{margin:22px 16px 0}
  .plans-grid{grid-template-columns:1fr;gap:14px;margin-top:14px}
  .plans-filter-bar{flex-direction:column;align-items:stretch;gap:12px;padding:12px}
  .plans-filter-lead{min-width:0}
  .plans-filter-controls{flex-direction:column;align-items:stretch;gap:10px}
  .plans-search{min-width:0}
  .plans-status-tabs{flex-wrap:wrap}
  .plan-card-cover{height:150px}
  .pland-progress-ring-wrap{justify-content:center}
  .pland-progress-ring{width:84px;height:84px}
  .pland-progress-ring-inner{width:66px;height:66px}
  .pland-hero{min-height:220px;margin:16px 16px 0}
  .pland-hero-copy{min-height:220px;padding:26px 21px}
  .pland-hero-copy h1{font-size:28px}
  .pland-progress-panel{margin:18px 16px 0;padding:16px;flex-direction:column;gap:16px;align-items:stretch}
  .pland-progress-stats{justify-content:space-around;gap:0}
  .pland-summary{margin:18px 16px 0;padding:14px 16px}
  .pland-map-section,.pland-timeline-section{margin:26px 16px 0}
  .pland-map-wrap{height:300px}
  .pland-timeline{padding-left:40px}
  .pland-timeline-line{left:14px}
  .pland-node-marker{left:-40px;width:27px;height:27px;font-size:12px}
  .pland-node-card{padding:13px 14px}
  .pland-node-head{flex-direction:column;align-items:flex-start;gap:6px}
  .pland-node-status{align-self:flex-start}
  .pland-node-meta{gap:9px}
  .pland-node-filter{padding:11px 12px;gap:7px}
  .pland-node-filter-row{gap:4px}
  .pland-node-filter-label{min-width:32px;font-size:11px}
  .pland-node-filter-row button{padding:4px 8px;font-size:11px}
  .pland-node-post{padding:7px 9px;gap:8px}
  .pland-node-post-thumb,.pland-node-post-mark{width:38px;height:38px}
  .pland-node-post-mark{font-size:18px}
}

/* ============ 照片集相册卡片 ============ */
.album-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 20px;
  margin: 20px 32px 40px;
}
@media (max-width: 900px) { .album-grid { margin: 20px 24px 30px; gap: 16px; } }
@media (max-width: 560px) { .album-grid { margin: 16px 16px 24px; grid-template-columns: 1fr; } }

.album-card {
  position: relative;
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--paper-light);
  border: 1px solid var(--line);
  cursor: pointer;
  transition: transform .25s, box-shadow .25s;
}
.album-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 32px rgba(0,0,0,.1);
}
.album-card-cover {
  position: relative;
  height: 200px;
  overflow: hidden;
  background: linear-gradient(135deg, #29433a 0%, #1a3328 100%);
}
.album-card-cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .4s;
}
.album-card:hover .album-card-cover img { transform: scale(1.05); }
.album-card-placeholder {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}
/* 无封面相册的印章占位 */
.album-placeholder-seal {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border: 2px solid rgba(212,184,106,.35);
  border-radius: 6px;
  font: 700 28px/1 var(--font-display);
  color: rgba(212,184,106,.5);
  letter-spacing: .05em;
}
.album-card-badge {
  position: absolute;
  top: 10px;
  right: 10px;
  background: rgba(0,0,0,.45);
  padding: 3px 6px;
  border-radius: 4px;
  line-height: 1;
}
/* 隐私徽章印章 */
.badge-seal {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border: 1.5px solid rgba(255,245,221,.6);
  border-radius: 3px;
  font: 700 12px/1 var(--font-serif);
  color: #fff5dd;
}
.album-card-info {
  padding: 16px;
}
.album-card-info h3 {
  font: 600 16px/1.3 var(--font-display);
  margin-bottom: 6px;
  color: var(--ink);
}
.album-card-info p {
  font-size: 12px;
  color: var(--ink-soft);
  line-height: 1.5;
  margin-bottom: 10px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.album-card-meta {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 11px;
  color: var(--ink-soft);
}
.album-card-type {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: var(--gold-pale);
  padding: 2px 8px 2px 4px;
  border-radius: 3px;
  color: var(--bronze);
}
/* 卡片分类小印章 */
.type-seal-mini {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  border: 1px solid var(--cinnabar);
  border-radius: 2px;
  font: 700 9px/1 var(--font-serif);
  color: var(--cinnabar);
  flex-shrink: 0;
}
.album-card-count {
  font-weight: 600;
  color: var(--cinnabar);
}

/* 相册筛选栏 */
.gallery-filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 16px 32px 0;
  padding: 12px 0;
  border-top: 1px solid var(--line);
}
.gallery-filter-bar button {
  padding: 6px 14px;
  border: 1px solid var(--line);
  border-radius: 20px;
  font: 12px var(--font-serif);
  color: var(--ink-soft);
  background: var(--paper-light);
  transition: all .2s;
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.gallery-filter-bar button:hover { border-color: var(--gold); color: var(--cinnabar); }
.gallery-filter-bar button.active {
  background: var(--cinnabar);
  border-color: var(--cinnabar);
  color: #fff5dd;
}
.gallery-filter-bar button.active .filter-seal {
  border-color: rgba(255,245,221,.5);
  color: #fff5dd;
}
/* 筛选按钮印章图标 */
.filter-seal {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border: 1.5px solid var(--cinnabar);
  border-radius: 3px;
  font: 600 11px/1 var(--font-serif);
  color: var(--cinnabar);
  flex-shrink: 0;
}
@media (max-width: 650px) {
  .gallery-filter-bar { margin: 14px 16px 0; padding: 10px 0; gap: 6px; }
  .gallery-filter-bar button { padding: 5px 10px; font-size: 11px; }
}

/* 相册返回按钮 */
.album-back-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 6px 14px;
  border: 1px solid rgba(212,184,106,.4);
  border-radius: 4px;
  font: 12px var(--font-serif);
  color: rgba(255,245,221,.7);
  background: transparent;
  margin-bottom: 16px;
  transition: all .2s;
}
.album-back-btn:hover {
  border-color: var(--gold);
  color: #fff5dd;
  background: rgba(255,245,221,.08);
}
.back-arrow-icon {
  flex-shrink: 0;
}

/* 密码验证表单 */
.album-password-form {
  max-width: 400px;
  margin: 30px auto;
  padding: 30px;
  background: var(--paper-light);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  text-align: center;
}
.album-password-form input {
  width: 100%;
  padding: 10px 14px;
  border: 1px solid var(--line);
  border-radius: 4px;
  font: 14px var(--font-serif);
  margin-bottom: 12px;
}
.album-password-form button {
  padding: 8px 20px;
  background: var(--cinnabar);
  color: #fff5dd;
  border-radius: 4px;
  font: 13px var(--font-serif);
}
.album-password-form button:hover { background: var(--cinnabar-light); }

/* 照片说明小印章 */
.cap-seal {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  border: 1px solid rgba(255,245,221,.45);
  border-radius: 2px;
  font: 700 9px/1 var(--font-serif);
  color: rgba(255,245,221,.7);
  vertical-align: middle;
  margin-right: 2px;
}

/* 后台相册照片网格 */
html[data-theme="dark"] .album-card { background: #1a1d17; border-color: #2a2d24; }
html[data-theme="dark"] .album-card-info h3 { color: #e8dcc8; }
html[data-theme="dark"] .album-card-type { background: #2a2d24; color: #d4b86a; }

/* =====================================================
   家庭出行工具箱
   ===================================================== */
.toolbox-page { padding-bottom: 40px; }

/* 标签切换 */
.toolbox-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 22px 32px 0;
  padding: 14px 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.toolbox-tabs button {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 18px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--paper-light);
  font: 13px var(--font-serif);
  color: var(--ink-soft);
  letter-spacing: .05em;
  transition: all .22s;
}
.toolbox-tabs button:hover { border-color: var(--gold); color: var(--cinnabar); }
.toolbox-tabs button.active {
  background: var(--cinnabar);
  border-color: var(--cinnabar);
  color: #fff5dd;
}
.toolbox-tabs button.active .toolbox-tab-seal {
  border-color: rgba(255,245,221,.5);
  color: #fff5dd;
}
.toolbox-tab-seal {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border: 1.5px solid var(--cinnabar);
  border-radius: 3px;
  font: 700 12px/1 var(--font-display);
  color: var(--cinnabar);
}
@media (max-width: 650px) {
  .toolbox-tabs { margin: 16px 16px 0; gap: 8px; }
  .toolbox-tabs button { padding: 7px 12px; font-size: 12px; }
}

/* 二级筛选 */
.tool-subfilter {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 18px 32px 0;
}
.tool-subfilter button {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 14px;
  border: 1px solid var(--line);
  border-radius: 20px;
  font: 12px var(--font-serif);
  color: var(--ink-soft);
  background: var(--paper-light);
  transition: all .2s;
}
.tool-subfilter button:hover { border-color: var(--gold); color: var(--cinnabar); }
.tool-subfilter button.active { background: var(--bronze); border-color: var(--bronze); color: #f0e8d5; }
.tool-subfilter button.active.rec { background: #3d6b4f; border-color: #3d6b4f; }
.tool-subfilter button.active.danger { background: var(--cinnabar); border-color: var(--cinnabar); color: #fff5dd; }
.tool-subfilter button.active .filter-seal { border-color: rgba(255,255,255,.5); color: #fff5dd; }
@media (max-width: 650px) { .tool-subfilter { margin: 14px 16px 0; } }

/* 列表容器 */
.toolbox-list { margin: 22px 32px 0; display: flex; flex-direction: column; gap: 16px; }
.toolbox-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 18px;
  margin: 22px 32px 0;
}
@media (max-width: 650px) {
  .toolbox-list { margin: 16px 16px 0; }
  .toolbox-grid { margin: 16px 16px 0; grid-template-columns: 1fr; }
}

/* 列表型条目（清单 / 自驾） */
.tool-item {
  background: var(--paper-light);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
  transition: box-shadow .2s;
}
.tool-item:hover { box-shadow: 0 6px 22px -12px rgba(45,74,62,.35); }
.tool-item-head {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 18px;
  cursor: pointer;
}
.tool-item-head.no-fold { cursor: default; }
.tool-item-seal {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 2px solid var(--gold);
  border-radius: 6px;
  font: 700 20px/1 var(--font-display);
  color: var(--bronze);
  background: var(--gold-pale);
}
.tool-item-main { flex: 1; min-width: 0; }
.tool-item-main h3 { font: 600 16px var(--font-serif); color: var(--ink); letter-spacing: .03em; }
.tool-item-main p { font-size: 12px; color: var(--ink-soft); margin-top: 3px; }
.tool-item-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 6px; }
.tool-tag {
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 3px;
  background: var(--gold-pale);
  color: var(--bronze);
}
.tool-count { font-size: 11px; color: var(--ink-soft); }
.tool-item-arrow {
  font-size: 20px;
  color: var(--gold);
  transition: transform .25s;
  flex-shrink: 0;
}
.tool-item-arrow.open { transform: rotate(90deg); }
.tool-print-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 14px;
  border: 1px solid var(--gold);
  border-radius: 4px;
  background: transparent;
  color: var(--bronze);
  font: 12px var(--font-serif);
  transition: all .2s;
  flex-shrink: 0;
}
.tool-print-btn:hover { background: var(--cinnabar); border-color: var(--cinnabar); color: #fff5dd; }
.tool-reset-btn {
  padding: 6px 14px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: transparent;
  color: var(--ink-soft);
  font: 12px var(--font-serif);
}
.tool-reset-btn:hover { border-color: var(--cinnabar); color: var(--cinnabar); }

/* 清单展开内容 */
.tool-item-body { border-top: 1px dashed var(--line); padding: 18px; }
.tool-item-body.always { border-top: none; padding-top: 0; }
.tool-group { margin-bottom: 18px; }
.tool-group-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font: 600 14px var(--font-display);
  color: var(--bronze);
  margin-bottom: 10px;
  letter-spacing: .05em;
}
.tool-checks { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; }
.tool-check {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--paper);
  cursor: pointer;
  transition: all .18s;
  user-select: none;
}
.tool-check:hover { border-color: var(--gold); }
.tool-check input { display: none; }
.tool-checkbox {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  border: 1.5px solid var(--gold);
  border-radius: 3px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--paper-light);
  color: #fff;
}
.tool-check.done .tool-checkbox { background: var(--cinnabar); border-color: var(--cinnabar); }
.tool-check.done .tool-check-text { text-decoration: line-through; opacity: .55; }
.tool-check-text { font-size: 13px; color: var(--ink); }
.tool-item-foot { display: flex; gap: 10px; margin-top: 4px; }
.tool-drive-content { font-size: 13px; line-height: 1.8; color: var(--ink-soft); white-space: pre-line; }

/* 卡片型（住宿 / 美食） */
.tool-card {
  background: var(--paper-light);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  transition: transform .2s, box-shadow .2s;
}
.tool-card:hover { transform: translateY(-3px); box-shadow: 0 10px 26px -14px rgba(45,74,62,.4); }
.tool-card.verdict-avoid { border-left: 3px solid var(--cinnabar); }
.tool-card.verdict-recommend { border-left: 3px solid #3d6b4f; }
.tool-card.verdict-neutral { border-left: 3px solid var(--gold); }
.tool-card h3 { font: 600 16px var(--font-serif); color: var(--ink); }
.tool-card-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.tool-verdict {
  font-size: 11px;
  padding: 3px 10px;
  border-radius: 3px;
  font-weight: 600;
  letter-spacing: .05em;
}
.tool-verdict.recommend { background: #e3efe6; color: #2f5f42; }
.tool-verdict.avoid { background: #f5e0dc; color: var(--cinnabar); }
.tool-verdict.neutral { background: var(--gold-pale); color: var(--bronze); }
.tool-stars { color: var(--gold); font-size: 13px; letter-spacing: 2px; }
.tool-card-loc {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--ink-soft);
}
.cap-seal.light {
  border-color: var(--gold);
  color: var(--bronze);
  width: 18px;
  height: 18px;
  font-size: 10px;
}
.tool-card-notes { font-size: 12px; line-height: 1.7; color: var(--ink-soft); }
.tool-card-foot { display: flex; align-items: center; gap: 12px; }
.tool-price { font-size: 12px; color: var(--bronze); font-weight: 600; background: var(--gold-pale); padding: 2px 8px; border-radius: 3px; }
.tool-kid { font-size: 12px; color: #2f5f42; }
.tool-card-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.tool-tag-sm {
  font-size: 10px;
  padding: 2px 8px;
  border: 1px solid var(--line);
  border-radius: 20px;
  color: var(--ink-soft);
}

/* =====================================================
   打印区（仅打印时可见）
   ===================================================== */
.print-area { display: none; }
@media print {
  body * { visibility: hidden; }
  .print-area, .print-area * { visibility: visible; }
  .print-area {
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    padding: 24px;
    background: #fff;
    color: #1a1a1a;
  }
  .no-print { display: none !important; }
}
.print-head { text-align: center; border-bottom: 2px solid #8b2e22; padding-bottom: 14px; margin-bottom: 22px; }
.print-head h2 { font: 700 24px var(--font-display); letter-spacing: .05em; }
.print-head p { font-size: 13px; color: #555; margin-top: 6px; }
.print-brand { display: inline-block; margin-top: 8px; font-size: 11px; color: #999; letter-spacing: .1em; }
.print-groups { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 22px; }
.print-group { page-break-inside: avoid; }
.print-group-title {
  font: 700 16px var(--font-display);
  color: #8b2e22;
  border-bottom: 1px solid #ddd;
  padding-bottom: 6px;
  margin-bottom: 10px;
}
.print-item {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  padding: 5px 0;
}
.print-checkbox {
  width: 15px;
  height: 15px;
  border: 1.5px solid #8b2e22;
  border-radius: 2px;
  flex-shrink: 0;
}
.print-close {
  margin-top: 26px;
  padding: 8px 20px;
  border: 1px solid var(--gold);
  border-radius: 4px;
  background: var(--paper-light);
  color: var(--bronze);
  font: 13px var(--font-serif);
}

/* ============ 行迹路线视图 ============ */
.route-layout {
  display: grid;
  grid-template-columns: 340px minmax(0, 1fr);
  gap: 16px;
  margin: 16px 32px 0;
  align-items: stretch;
}
/* 侧栏：路线历史 + 未来日程 + 统计，内部滚动 */
.route-sidebar {
  display: flex;
  flex-direction: column;
  gap: 14px;
  min-width: 0;
  max-height: 640px;
  overflow-y: auto;
  padding: 16px;
  background: var(--paper-light);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  scrollbar-width: thin;
  scrollbar-color: var(--gold) transparent;
  -webkit-overflow-scrolling: touch;
}
.route-sidebar::-webkit-scrollbar { width: 5px; }
.route-sidebar::-webkit-scrollbar-thumb { background: var(--gold); border-radius: 3px; }
.route-sidebar::-webkit-scrollbar-track { background: transparent; }
.route-side-heading { display: flex; align-items: baseline; gap: 10px; margin-bottom: 10px; }
.route-side-heading span { color: var(--cinnabar); font-size: 10px; letter-spacing: .16em; }
.route-side-heading h3 { margin: 2px 0 0; color: var(--bronze-deep); font: 18px var(--font-display); letter-spacing: .06em; }
.route-side-heading em { margin-left: auto; color: var(--ink-soft); font-size: 11px; font-style: normal; white-space: nowrap; }
/* 接下来的日程 */
.route-plan-card {
  padding: 12px 14px;
  background: linear-gradient(135deg, #2d4a3e08, #d4b86a14);
  border: 1px dashed var(--gold);
  border-radius: 8px;
  cursor: pointer;
  transition: .2s;
}
.route-plan-card + .route-plan-card { margin-top: 10px; }
.route-plan-card:hover {
  border-color: var(--cinnabar);
  border-style: solid;
  transform: translateY(-2px);
  box-shadow: 0 8px 20px #2d4a3e14;
}
.rpc-head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.rpc-head b { color: var(--bronze-deep); font: 15px var(--font-display); }
.rpc-head em { color: var(--ink-soft); font-size: 11px; font-style: normal; white-space: nowrap; }
.rpc-node { display: flex; align-items: center; gap: 8px; margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--line); font-size: 12px; }
.rpc-node i { color: var(--cinnabar); font-style: normal; font-size: 11px; white-space: nowrap; }
.rpc-node b { color: var(--ink); font-weight: 600; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rpc-node span { margin-left: auto; color: #8b6f1f; font-size: 11px; white-space: nowrap; }
.rpc-link { display: inline-block; margin-top: 10px; color: var(--cinnabar); font-size: 11px; }
/* 旅行路线历史列表 */
.route-station-item {
  display: flex;
  gap: 10px;
  padding: 10px 12px;
  background: #fffdf7;
  border: 1px solid var(--line);
  border-radius: 6px;
  cursor: pointer;
  transition: .2s;
}
.route-station-item + .route-station-item { margin-top: 8px; }
.route-station-item:hover { border-color: var(--gold); transform: translateX(3px); }
.route-station-item.active { border-color: var(--cinnabar); background: #fff8ec; box-shadow: 0 6px 16px #8b2e221e; }
.rs-index {
  flex: 0 0 22px; width: 22px; height: 22px;
  display: grid; place-items: center;
  border: 1px solid var(--gold);
  border-radius: 50%;
  color: var(--cinnabar);
  font: 11px var(--font-display);
}
.route-station-item.active .rs-index { background: var(--cinnabar); border-color: var(--cinnabar); color: #fff5dd; }
.rs-cover { flex: 0 0 54px; width: 54px; height: 54px; object-fit: cover; border-radius: 4px; border: 1px solid var(--line); }
.rs-main { flex: 1; min-width: 0; }
.rs-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rs-meta b { color: var(--bronze-deep); font: 12px var(--font-display); }
.rs-meta em { color: var(--ink-soft); font-size: 11px; font-style: normal; }
.rs-main h4 {
  margin: 5px 0 0;
  color: var(--ink);
  font-size: 12px;
  font-weight: 500;
  line-height: 1.5;
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.rs-main h4:hover { color: var(--cinnabar); }
.rs-main h4 i { font-style: normal; margin-right: 4px; }
.rs-tags { display: flex; gap: 6px; margin-top: 6px; flex-wrap: wrap; }
.rs-tags span { padding: 1px 8px; border-radius: 9px; background: var(--paper-deep); border: 1px solid var(--line); color: var(--ink-soft); font-size: 10px; }
.rs-go { flex: 0 0 auto; align-self: center; color: var(--gold); font-size: 14px; }
.route-empty { padding: 22px 10px; color: var(--ink-soft); font-size: 12px; text-align: center; border: 1px dashed var(--line); border-radius: 8px; }
/* 统计条 */
.route-stats { display: flex; align-items: center; gap: 18px; padding-top: 12px; border-top: 1px solid var(--line); flex-wrap: wrap; }
.route-stats b { display: block; color: var(--cinnabar); font: 20px var(--font-display); text-align: center; }
.route-stats span { color: var(--ink-soft); font-size: 10px; letter-spacing: .08em; }
.rs-modes { display: flex; gap: 6px; flex-wrap: wrap; margin-left: auto; }
.rs-modes span { padding: 2px 9px; border-radius: 10px; background: var(--paper-deep); border: 1px solid var(--line); color: var(--ink-soft); font-size: 10px; }
/* 地图区 */
.route-map-wrap {
  position: relative;
  height: 640px;
  min-height: 480px;
  background: var(--paper-light);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: inset 0 0 50px #2d4a3e0b;
}
.route-map-wrap::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image: linear-gradient(#b8963e0e 1px, transparent 1px), linear-gradient(90deg, #b8963e0e 1px, transparent 1px);
  background-size: 44px 44px;
}
.route-map-wrap .map-chart { position: absolute; inset: 0; z-index: 1; }
.route-legend {
  position: absolute;
  top: 14px;
  left: 16px;
  z-index: 3;
  display: flex;
  gap: 12px;
  padding: 7px 12px;
  background: #fffaf0e8;
  border: 1px solid var(--gold-light);
  border-radius: 6px;
  color: var(--ink-soft);
  font-size: 11px;
  box-shadow: 0 5px 14px #2d4a3e14;
  flex-wrap: wrap;
}
.route-legend i { display: inline-block; margin-right: 5px; vertical-align: -1px; }
.rl-line { width: 18px; height: 0; border-top: 2px dashed; }
.rl-hist { border-color: #8b2e22; }
.rl-future { border-color: #d4b86a; }
.rl-dot { width: 8px; height: 8px; border-radius: 50%; }
.rl-done { background: #8b2e22; }
.rl-todo { width: 9px; height: 9px; background: transparent; border: 2px solid #d4b86a; box-sizing: border-box; }
.route-map-mask {
  position: absolute;
  inset: 0;
  z-index: 4;
  display: grid;
  place-items: center;
  background: #f5f0e4cc;
  color: var(--bronze-deep);
  font: 14px var(--font-display);
  letter-spacing: .1em;
}
.route-map-mask.is-error { color: var(--cinnabar); }
/* 行迹路线 · 深色主题 */
html[data-theme="dark"] .route-sidebar,
html[data-theme="dark"] .route-map-wrap { background: var(--paper-light); border-color: var(--line); }
html[data-theme="dark"] .route-station-item { background: #12140f; }
html[data-theme="dark"] .route-station-item.active { background: #1c1f17; }
html[data-theme="dark"] .rs-main h4 { color: var(--ink); }
html[data-theme="dark"] .route-map-mask { background: #12140fcc; }
html[data-theme="dark"] .route-legend { background: #12140fd9; border-color: var(--line); }
/* 行迹路线 · 响应式：平板及以下地图在上、侧栏在下 */
@media (max-width: 960px) {
  .route-layout { grid-template-columns: 1fr; }
  .route-map-wrap { order: -1; height: 440px; }
  .route-sidebar { max-height: none; }
}
@media (max-width: 760px) {
  .route-layout { margin-left: 16px; margin-right: 16px; }
  .route-map-wrap { height: 380px; min-height: 380px; }
  .route-legend { gap: 8px; padding: 6px 10px; font-size: 10px; }
  .route-side-heading h3 { font-size: 16px; }
}

/* =====================================================
   游记详情页体验升级（速览卡 / TOC 高亮 / 正文灯箱 /
   移动端悬浮栏与目录面板 / 正文内容块）
   ===================================================== */
/* ---- 速览卡 ---- */
.pd-glance {
  margin: 20px 0 4px;
  padding: 20px 22px 16px;
  background: var(--paper-light);
  border: 1px solid var(--line);
  border-left: 3px solid var(--gold);
  border-radius: var(--radius-lg);
  box-shadow: 0 6px 20px #0000000a;
}
.pd-glance-summary {
  margin: 0 0 10px; font-size: 14.5px; line-height: 1.85;
  color: var(--ink-soft); letter-spacing: .02em;
}
.pd-glance-meta {
  display: flex; flex-wrap: wrap; gap: 8px 18px;
  font-size: 12px; color: var(--ink-soft); opacity: .85;
}
.pd-glance-nums {
  display: flex; flex-wrap: wrap; gap: 12px;
  margin: 14px 0; padding: 12px 0;
  border-top: 1px dashed var(--line-strong); border-bottom: 1px dashed var(--line-strong);
}
.pd-glance-nums > div {
  flex: 1; min-width: 96px; text-align: center;
  padding: 4px 8px;
}
.pd-glance-nums b {
  display: block; font: 600 22px var(--font-display);
  color: var(--cinnabar); letter-spacing: .03em;
}
.pd-glance-nums span { font-size: 11px; color: var(--ink-soft); letter-spacing: .08em; }
.pd-glance-toc { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.pd-glance-toc-label {
  font-size: 11px; color: var(--bronze); letter-spacing: .1em;
  padding-right: 4px; border-right: 1px solid var(--line-strong);
}
.pd-glance-toc a {
  font-size: 12px; color: var(--bronze-deep); text-decoration: none;
  padding: 4px 12px; border: 1px solid var(--line-strong);
  border-radius: 999px; background: var(--paper);
  transition: all .18s;
}
.pd-glance-toc a:hover { border-color: var(--gold); color: var(--bronze); background: var(--gold-pale); }

/* ---- 侧栏 TOC 当前章节高亮 ---- */
.toc-progress {
  font: 400 11px var(--font-body); font-style: normal;
  color: var(--gold); margin-left: auto; letter-spacing: .05em;
}
.side-toc a.active {
  background: #8b2e220f; color: var(--cinnabar);
  box-shadow: inset 2px 0 0 var(--cinnabar);
  font-weight: 600;
}

/* ---- 正文图片点击放大 + 悬停图注 ---- */
.article-content img.pd-zoomable { cursor: zoom-in; transition: transform .2s, box-shadow .2s; }
.article-content img.pd-zoomable:hover { transform: translateY(-2px); box-shadow: 0 12px 32px #00000026; }
.article-content img.pd-zoomable:not([alt=""])::after {
  content: attr(alt);
  position: absolute; left: 8px; bottom: 24px;
  max-width: 80%; padding: 4px 10px;
  background: #1a1f1acc; color: #f5f0e4;
  font-size: 12px; line-height: 1.5; letter-spacing: .04em;
  border-radius: 4px; pointer-events: none;
  opacity: 0; transition: opacity .2s;
}
.article-content img.pd-zoomable:not([alt=""]):hover::after { opacity: 1; }

/* ---- 移动端悬浮操作栏（≤960px） ---- */
.pd-fabbar {
  display: none;
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 900;
  padding: 8px 14px calc(8px + env(safe-area-inset-bottom));
  background: var(--paper-light);
  border-top: 1px solid var(--line);
  box-shadow: 0 -6px 18px #00000014;
  justify-content: space-around;
}
.pd-fab {
  display: flex; flex-direction: column; align-items: center; gap: 2px;
  min-width: 56px; padding: 4px 10px;
  background: none; border: none; cursor: pointer;
  color: var(--bronze-deep); font-family: var(--font-body);
}
.pd-fab .fab-icon { display: grid; place-items: center; }
.pd-fab .fab-svg { width: 22px; height: 22px; }
.pd-fab em { font-style: normal; font-size: 10px; letter-spacing: .06em; color: var(--ink-soft); }
.pd-fab.liked { color: var(--cinnabar); }
.pd-fab.liked .fab-svg { fill: currentColor; }
/* ---- 移动端目录面板 ---- */
.pd-toc-mask {
  position: fixed; inset: 0; z-index: 1240;
  background: #0f1f1866; backdrop-filter: blur(2px);
}
.pd-toc-sheet {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 1250;
  max-height: 62vh; overflow-y: auto;
  display: flex; flex-direction: column; gap: 4px;
  padding: 14px 18px calc(18px + env(safe-area-inset-bottom));
  background: var(--paper-light);
  border-top: 2px solid var(--gold);
  border-radius: 16px 16px 0 0;
  box-shadow: 0 -10px 32px #00000030;
  transform: translateY(105%); transition: transform .28s ease;
  visibility: hidden;
}
.pd-toc-sheet.open { transform: translateY(0); visibility: visible; }
.pd-toc-sheet-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 8px; padding-bottom: 10px;
  border-bottom: 1px dashed var(--line-strong);
}
.pd-toc-sheet-head b { font: 600 15px var(--font-display); color: var(--bronze-deep); letter-spacing: .08em; }
.pd-toc-sheet-head button {
  width: 28px; height: 28px; border: 1px solid var(--line-strong);
  border-radius: 50%; background: none; color: var(--ink-soft);
  cursor: pointer; font-size: 12px;
}
.pd-toc-sheet a {
  font-size: 13px; color: var(--ink-soft); text-decoration: none;
  padding: 9px 10px; border-radius: 6px; line-height: 1.5;
}
.pd-toc-sheet a.toc-2 { font-weight: 600; color: var(--bronze-deep); }
.pd-toc-sheet a.toc-3 { padding-left: 26px; }
.pd-toc-sheet a.toc-4 { padding-left: 36px; font-size: 12.5px; }
.pd-toc-sheet a.active { background: #8b2e220f; color: var(--cinnabar); box-shadow: inset 2px 0 0 var(--cinnabar); }

/* ---- 移动端分享面板 ---- */
.pd-share-mask {
  position: fixed; inset: 0; z-index: 1240;
  background: #0008;
}
.pd-share-sheet {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 1250;
  display: flex; flex-direction: column;
  padding: 14px 18px calc(18px + env(safe-area-inset-bottom));
  background: var(--paper); border-radius: 18px 18px 0 0;
  box-shadow: 0 -8px 30px #0003;
  transform: translateY(100%); visibility: hidden;
  transition: transform .25s ease, visibility .25s;
}
.pd-share-sheet.open { transform: translateY(0); visibility: visible; }
.pd-share-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 14px; padding-bottom: 12px;
  border-bottom: 1px dashed var(--line-strong);
}
.pd-share-head b { font: 600 15px var(--font-display); color: var(--bronze-deep); letter-spacing: .08em; }
.pd-share-head button {
  width: 28px; height: 28px; border: 1px solid var(--line-strong);
  border-radius: 50%; background: none; color: var(--ink-soft);
  cursor: pointer; font-size: 12px;
}
.pd-share-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px;
}
.pd-share-item {
  display: flex; flex-direction: column; align-items: center; gap: 6px;
  padding: 12px 6px; border: none; background: none; cursor: pointer;
  font-family: var(--font-body); color: var(--ink-soft);
}
/* 国风印章式分享图标：浅纸色底 + 深色单字 + 双圈钤印，字色深、清晰可见 */
.pd-share-item .pd-share-icon {
  width: 48px; height: 48px; border-radius: 50%;
  display: grid; place-items: center; position: relative;
  box-shadow: 0 4px 10px #0002;
}
.pd-share-item .pd-share-icon::before {
  content: ""; position: absolute; inset: 2px;
  border-radius: 50%; border: 1px solid currentColor; opacity: .4;
}
.pd-share-item .pd-share-icon::after {
  content: ""; position: absolute; inset: 7px;
  border-radius: 50%; border: 1px solid currentColor; opacity: .22;
}
.pd-share-item .pd-share-icon i {
  position: relative; z-index: 1; font-style: normal;
  font-family: var(--font-display); font-weight: 700;
  font-size: 20px; line-height: 1; letter-spacing: 0;
}
.pd-share-item em { font-style: normal; font-size: 11px; letter-spacing: .04em; }
/* 印章色：浅纸色底 + 对应渠道的国风深色文字 */
.pd-share-wx .pd-share-icon { color: #1f4a3a; background: #e3ece7; }
.pd-share-wb .pd-share-icon { color: var(--cinnabar); background: #f4e3e0; }
.pd-share-qq .pd-share-icon { color: #274a66; background: #e0eaf2; }
.pd-share-qz .pd-share-icon { color: #8a6d2f; background: var(--gold-pale); }
.pd-share-copy .pd-share-icon { color: #143428; background: #e2e9e4; }
.pd-share-more .pd-share-icon { color: #3c4038; background: #edeae2; }
.pd-share-item:active { transform: scale(.95); }
.pd-share-item:active .pd-share-icon { box-shadow: none; }

/* ---- 正文内容块：国风表格 ---- */
.article-content table {
  width: 100%; border-collapse: collapse;
  margin: 18px 0; font-size: 13.5px;
  border: 1px solid var(--line-strong); border-radius: 8px;
  overflow: hidden;
}
.article-content th,
.article-content td {
  border: 1px solid var(--line); padding: 9px 14px;
}
.article-content th {
  background: var(--paper-deep); color: var(--bronze-deep);
  font-family: var(--font-display); font-weight: 600; letter-spacing: .05em;
  border-bottom: 2px solid var(--gold);
  text-align: left;
}
.article-content td {
  color: var(--ink-soft);
}
.article-content tr:last-child td { border-bottom: none; }
.article-content tbody tr:hover { background: #b8963e0d; }

/* ---- 正文内容块：提示 callout ---- */
.article-content blockquote.tip,
.article-content blockquote.info,
.article-content blockquote.warn {
  position: relative; padding-left: 44px;
}
.article-content blockquote p { text-indent: 0; }
.article-content blockquote.tip { border-left-color: var(--gold); background: var(--gold-pale); }
.article-content blockquote.info { border-left-color: #4a7bb5; background: #e8f0fa; }
.article-content blockquote.warn { border-left-color: var(--cinnabar); background: #f9e9e5; }
.article-content blockquote.tip::before,
.article-content blockquote.info::before,
.article-content blockquote.warn::before {
  position: absolute; left: 14px; top: 12px; font-size: 16px;
}
.article-content blockquote.tip::before { content: "✅"; }
.article-content blockquote.info::before { content: "💡"; }
.article-content blockquote.warn::before { content: "⚠️"; }
.article-content blockquote.tip b,
.article-content blockquote.info b,
.article-content blockquote.warn b { display: block; color: var(--bronze-deep); margin-bottom: 4px; letter-spacing: .03em; }
.article-content blockquote.tip p,
.article-content blockquote.info p,
.article-content blockquote.warn p { margin: 0; }

/* ---- 正文内容块：FAQ 折叠（details/summary） ---- */
.article-content details {
  margin: 12px 0; border: 1px solid var(--line-strong);
  border-radius: 8px; background: var(--paper-light);
  overflow: hidden;
}
.article-content summary {
  position: relative; cursor: pointer; list-style: none;
  padding: 12px 40px 12px 16px;
  font-weight: 600; color: var(--bronze-deep);
  font-family: var(--font-display); letter-spacing: .03em;
  transition: background .18s;
}
.article-content summary::-webkit-details-marker { display: none; }
.article-content summary::after {
  content: "▾"; position: absolute; right: 16px; top: 50%;
  transform: translateY(-50%); color: var(--gold);
  transition: transform .2s;
}
.article-content details[open] summary::after { transform: translateY(-50%) rotate(180deg); }
.article-content summary:hover { background: #b8963e0d; }
.article-content details[open] summary { border-bottom: 1px dashed var(--line-strong); background: var(--paper-deep); }
.article-content details > *:not(summary) { padding: 0 16px; }
.article-content details > p { margin: 12px 16px; }

/* ---- 正文内容块：代码块 ---- */
.article-content pre {
  background: #1e2430; color: #dce4f0; border-radius: 8px;
  padding: 16px 18px; margin: 20px 0; overflow-x: auto;
  font-family: 'JetBrains Mono', 'Fira Code', Consolas, Menlo, monospace;
  font-size: 13px; line-height: 1.7; white-space: pre;
  box-shadow: 0 6px 18px #0000001a;
}
.article-content pre code { background: transparent; color: inherit; font-family: inherit; }
.article-content :not(pre) > code {
  background: var(--gold-pale); color: var(--cinnabar);
  padding: 2px 6px; border-radius: 4px; font-size: .9em;
  font-family: 'JetBrains Mono', Consolas, Menlo, monospace;
}

/* ---- 正文内容块：编号步骤 ---- */
.article-content ol.steps { list-style: none; margin: 18px 0; counter-reset: step; }
.article-content ol.steps > li {
  position: relative; counter-increment: step;
  margin: 0 0 16px; padding: 2px 0 2px 52px;
}
.article-content ol.steps > li::before {
  content: counter(step);
  position: absolute; left: 0; top: 0;
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  background: var(--bronze); color: var(--gold-light);
  font: 600 16px var(--font-display);
  border-radius: 50%; border: 1px solid var(--gold);
}

/* ---- 悬浮栏显示 + 底部预留（移动端） ---- */
@media (max-width: 960px) {
  .pd-fabbar { display: flex; }
  .detail-wrap { padding-bottom: 72px; }
  .pd-glance { padding: 16px; }
  .pd-glance-nums b { font-size: 18px; }
  .pd-glance-toc a { padding: 3px 10px; }
  .article-content table { font-size: 12.5px; display: block; overflow-x: auto; }
}

/* ---- 深色主题适配 ---- */
html[data-theme="dark"] .pd-glance { background: #171a14; border-color: var(--line-strong); }
html[data-theme="dark"] .pd-glance-summary { color: #e8e0cc; }
html[data-theme="dark"] .pd-glance-meta { color: #cfc6ab; }
html[data-theme="dark"] .pd-glance-nums span { color: #cfc6ab; }
html[data-theme="dark"] .pd-glance-nums b { color: #e0705f; }
html[data-theme="dark"] .pd-glance-toc a { background: #20241b; color: #e8e0cc; border-color: var(--line-strong); }
html[data-theme="dark"] .pd-glance-toc a:hover { background: #38352a; color: var(--gold-light); border-color: var(--gold); }
html[data-theme="dark"] .pd-glance-toc-label { color: var(--gold-light); }
html[data-theme="dark"] .side-toc a.active { background: #8b2e2226; color: #e0705f; }
html[data-theme="dark"] .pd-fabbar { background: #14170f; border-top-color: var(--line-strong); }
html[data-theme="dark"] .pd-fab { color: #e8e0cc; }
html[data-theme="dark"] .pd-fab em { color: #a89f85; }
html[data-theme="dark"] .pd-toc-sheet { background: #171a14; }
html[data-theme="dark"] .pd-toc-sheet-head b { color: var(--gold-light); }
html[data-theme="dark"] .pd-toc-sheet a { color: #cfc6ab; }
html[data-theme="dark"] .pd-toc-sheet a.toc-2 { color: #e8e0cc; }
html[data-theme="dark"] .pd-toc-sheet a.active { background: #8b2e2226; color: #e0705f; }
html[data-theme="dark"] .pd-share-sheet { background: #171a14; }
html[data-theme="dark"] .pd-share-head b { color: var(--gold-light); }
html[data-theme="dark"] .pd-share-item { color: #cfc6ab; }
html[data-theme="dark"] .article-content th { background: #20241b; color: var(--gold-light); }
html[data-theme="dark"] .article-content td { color: #cfc6ab; }
html[data-theme="dark"] .article-content tbody tr:hover { background: #b8963e14; }
html[data-theme="dark"] .article-content details { background: #171a14; border-color: var(--line-strong); }
html[data-theme="dark"] .article-content summary { color: #e8e0cc; }
html[data-theme="dark"] .article-content details[open] summary { background: #20241b; }
html[data-theme="dark"] .article-content blockquote.tip { background: #3a3220; }
html[data-theme="dark"] .article-content blockquote.info { background: #1e2a38; }
html[data-theme="dark"] .article-content blockquote.warn { background: #3a2420; }
html[data-theme="dark"] .article-content blockquote.tip b,
html[data-theme="dark"] .article-content blockquote.info b,
html[data-theme="dark"] .article-content blockquote.warn b { color: var(--gold-light); }
html[data-theme="dark"] .article-content a { color: #e0705f; }
html[data-theme="dark"] .article-content hr { background: linear-gradient(90deg, transparent, var(--gold) 50%, transparent); }
html[data-theme="dark"] .article-content hr::after { background: #171a14; }
html[data-theme="dark"] .article-content ol.steps > li::before { background: var(--bronze-deep); }

/* =====================================================================
   扩展主题（站点级默认主题，由管理后台 settings.theme 控制）
   用户仍可通过右上角按钮在日/夜间切换；此处主题作为初始基调
   ===================================================================== */
/* 落日橙 —— 温暖旅行风 */
html[data-theme="sunset"] {
  --ink: #3a2418; --ink-soft: #8a6a52;
  --paper: #fdf3e7; --paper-deep: #f5e2cc; --paper-light: #fffaf2;
  --bronze: #c25e2e; --bronze-deep: #9a4520; --bronze-dark: #6e3014;
  --jade: #d98e4a;
  --cinnabar: #b3401f; --cinnabar-light: #cf5a35;
  --gold: #d98e2b; --gold-light: #edb45e; --gold-pale: #fbe8c8; --gold-glow: #ffd98a;
  --line: #c08a5038;
}
html[data-theme="ocean"] {
  --ink: #14283a; --ink-soft: #56718a;
  --paper: #eef5fa; --paper-deep: #dceaf4; --paper-light: #f8fcff;
  --bronze: #22668e; --bronze-deep: #174a69; --bronze-dark: #0e3046;
  --jade: #4a94b8;
  --cinnabar: #1f7a8c; --cinnabar-light: #3499ab;
  --gold: #3a86ad; --gold-light: #6fb3d4; --gold-pale: #d8ecf7; --gold-glow: #a5d5ee;
  --line: #4a7a9a38;
}
html[data-theme="sakura"] {
  --ink: #40222e; --ink-soft: #8a6070;
  --paper: #fdf0f4; --paper-deep: #f7dde6; --paper-light: #fff8fa;
  --bronze: #b05674; --bronze-deep: #8e3d59; --bronze-dark: #66293f;
  --jade: #d48aa4;
  --cinnabar: #a03a58; --cinnabar-light: #bd5575;
  --gold: #c76e92; --gold-light: #e39cb8; --gold-pale: #fadbe6; --gold-glow: #ffc2d6;
  --line: #b06a8838;
}
html[data-theme="forest"] {
  --ink: #1c2e20; --ink-soft: #5f7563;
  --paper: #eff5ec; --paper-deep: #dfeadb; --paper-light: #f8fcf5;
  --bronze: #3d7048; --bronze-deep: #2a5534; --bronze-dark: #1a3a23;
  --jade: #6ba377;
  --cinnabar: #4a7a3d; --cinnabar-light: #69995a;
  --gold: #5a8a4a; --gold-light: #8ab574; --gold-pale: #dcedd2; --gold-glow: #b8dfa2;
  --line: #5a7a5a38;
}

/* =====================================================================
 * 国风特色功能样式（guofeng-extras）
 * —— 节气落款 / 古籍阅读模式 / 背景纹理 / 时序挂件 ——
 * 依赖既有设计令牌（--paper/--ink/--bronze/--cinnabar/--gold...），
 * 明暗主题（html[data-theme="dark"]）自动适配。
 * ===================================================================== */

/* ---------- 1. 国风背景纹理（纯 CSS 低饱和层，不加载图片） ---------- */
/* 纹理统一定义成变量：
   - body::before 负责内容区之外的底纹；
   - .main-wrapper 必须同步叠加，因为它有不透明底色且铺满内容区，
     会把 body::before 完全遮住（实测纹理可见面积 0%，切换后画面几乎无变化）。 */
[data-gf-tex="xuanzhi"] {
  --gf-tex-img:
    radial-gradient(circle at 22% 28%, rgba(184,150,62,.24) 0 1px, transparent 1.6px),
    radial-gradient(circle at 74% 66%, rgba(45,74,62,.2) 0 1.2px, transparent 1.8px),
    repeating-linear-gradient(105deg, rgba(120,100,70,.11) 0 2px, transparent 2px 7px);
  --gf-tex-size: auto;
  --gf-tex-op: .9;
}
[data-gf-tex="yama"] {
  --gf-tex-img:
    repeating-linear-gradient(0deg, rgba(120,100,70,.2) 0 1px, transparent 1px 4px),
    repeating-linear-gradient(90deg, rgba(120,100,70,.17) 0 1px, transparent 1px 5px);
  --gf-tex-size: auto;
  --gf-tex-op: .85;
}
/* 云纹 · 重设计：传统「勾云卷」——同心卷云环 + 云尾雾带（旧版只是模糊色块） */
[data-gf-tex="yunwen"] {
  --gf-tex-img:
    radial-gradient(circle at 36px 44px,
      transparent 0 7px, rgba(45,74,62,.19) 7px 9.5px, transparent 9.5px 12.5px,
      rgba(45,74,62,.13) 12.5px 14.5px, transparent 14.5px 17px,
      rgba(45,74,62,.08) 17px 18.5px, transparent 18.5px),
    radial-gradient(circle at 128px 92px,
      transparent 0 5px, rgba(184,150,62,.21) 5px 7px, transparent 7px 10px,
      rgba(184,150,62,.12) 10px 11.5px, transparent 11.5px),
    radial-gradient(circle at 78px 152px,
      transparent 0 11px, rgba(45,74,62,.10) 11px 14px, transparent 14px 19px,
      rgba(45,74,62,.07) 19px 21px, transparent 21px),
    radial-gradient(ellipse 46px 14px at 30px 60px, rgba(45,74,62,.05), transparent 75%),
    radial-gradient(ellipse 54px 16px at 140px 110px, rgba(184,150,62,.055), transparent 75%);
  --gf-tex-size: 180px 200px;
  --gf-tex-op: .9;
}
/* 竹纹 · 重设计：竹竿（带竹节）+ 竹叶簇（旧版是无结构散点） */
[data-gf-tex="zhuwen"] {
  --gf-tex-img:
    linear-gradient(90deg, transparent calc(26% - 1.3px), rgba(45,74,62,.15) calc(26% - 1.3px) calc(26% + 1.3px), transparent calc(26% + 1.3px)),
    linear-gradient(90deg, transparent calc(69% - 1px), rgba(45,74,62,.10) calc(69% - 1px) calc(69% + 1px), transparent calc(69% + 1px)),
    radial-gradient(ellipse 7px 1.6px at 26% 24%, rgba(45,74,62,.22), transparent 72%),
    radial-gradient(ellipse 7px 1.6px at 26% 68%, rgba(45,74,62,.17), transparent 72%),
    radial-gradient(ellipse 5.5px 1.3px at 69% 46%, rgba(45,74,62,.15), transparent 72%),
    radial-gradient(ellipse 15px 3.2px at 20% 10%, rgba(45,74,62,.18), transparent 74%),
    radial-gradient(ellipse 12px 2.6px at 33% 7%, rgba(45,74,62,.12), transparent 74%),
    radial-gradient(ellipse 14px 3px at 76% 55%, rgba(45,74,62,.15), transparent 74%),
    radial-gradient(ellipse 11px 2.4px at 62% 60%, rgba(45,74,62,.09), transparent 74%),
    radial-gradient(ellipse 13px 2.8px at 28% 90%, rgba(184,150,62,.11), transparent 74%);
  --gf-tex-size: 360px 440px;
  --gf-tex-op: .9;
}
/* 水波 · 新增：三组疏密相间的涟漪细线 */
[data-gf-tex="shuiwen"] {
  --gf-tex-img:
    repeating-linear-gradient(0deg, transparent 0 15px, rgba(45,74,62,.065) 15px 16.5px, transparent 16.5px 34px),
    repeating-linear-gradient(0deg, transparent 0 24px, rgba(184,150,62,.055) 24px 25.2px, transparent 25.2px 48px),
    repeating-linear-gradient(0deg, transparent 0 34px, rgba(45,74,62,.04) 34px 35px, transparent 35px 68px);
  --gf-tex-size: auto;
  --gf-tex-op: .9;
}
/* 冰裂 · 新增：多角度交错细裂纹（文人案头冰裂纹意趣） */
[data-gf-tex="binglie"] {
  --gf-tex-img:
    linear-gradient(71deg, transparent 30.8%, rgba(45,74,62,.10) 30.8% 31.6%, transparent 31.6%),
    linear-gradient(-38deg, transparent 62.2%, rgba(45,74,62,.09) 62.2% 63%, transparent 63%),
    linear-gradient(118deg, transparent 15.5%, rgba(45,74,62,.08) 15.5% 16.2%, transparent 16.2%),
    linear-gradient(12deg, transparent 74.5%, rgba(45,74,62,.09) 74.5% 75.2%, transparent 75.2%),
    linear-gradient(155deg, transparent 47.5%, rgba(184,150,62,.08) 47.5% 48.2%, transparent 48.2%),
    linear-gradient(-102deg, transparent 84.5%, rgba(45,74,62,.07) 84.5% 85.1%, transparent 85.1%);
  --gf-tex-size: 300px 340px;
  --gf-tex-op: .9;
}
/* 落英 · 新增：简笔梅花两丛 + 零散花瓣 */
[data-gf-tex="luoying"] {
  --gf-tex-img:
    radial-gradient(circle at 50px 42px, rgba(176,86,116,.15) 0 2.8px, transparent 3.4px),
    radial-gradient(circle at 42.5px 47px, rgba(176,86,116,.12) 0 2.4px, transparent 3px),
    radial-gradient(circle at 57.5px 47px, rgba(176,86,116,.12) 0 2.4px, transparent 3px),
    radial-gradient(circle at 45.5px 54px, rgba(176,86,116,.10) 0 2.2px, transparent 2.8px),
    radial-gradient(circle at 54.5px 54px, rgba(176,86,116,.10) 0 2.2px, transparent 2.8px),
    radial-gradient(circle at 50px 50px, rgba(184,150,62,.20) 0 1.3px, transparent 1.7px),
    radial-gradient(circle at 128px 118px, rgba(176,86,116,.09) 0 2px, transparent 2.6px),
    radial-gradient(circle at 122px 124px, rgba(176,86,116,.07) 0 1.7px, transparent 2.3px),
    radial-gradient(circle at 133px 123px, rgba(176,86,116,.07) 0 1.7px, transparent 2.3px),
    radial-gradient(circle at 127px 128px, rgba(184,150,62,.12) 0 1px, transparent 1.4px),
    radial-gradient(ellipse 6px 2.2px at 96px 76px, rgba(176,86,116,.09), transparent 75%);
  --gf-tex-size: 170px 180px;
  --gf-tex-op: .85;
}
/* 锦格 · 新增：斜向菱格织锦（45° 两组细线 + 淡金错格） */
[data-gf-tex="jinge"] {
  --gf-tex-img:
    repeating-linear-gradient(45deg, transparent 0 21px, rgba(45,74,62,.075) 21px 22.2px, transparent 22.2px 42px),
    repeating-linear-gradient(-45deg, transparent 0 21px, rgba(45,74,62,.075) 21px 22.2px, transparent 22.2px 42px),
    repeating-linear-gradient(45deg, transparent 0 42px, rgba(184,150,62,.06) 42px 43px, transparent 43px 84px);
  --gf-tex-size: auto;
  --gf-tex-op: .9;
}
body::before {
  content: '';
  position: fixed; inset: 0;
  z-index: -1;
  pointer-events: none;
  opacity: var(--gf-tex-op, 0);
  background-image: var(--gf-tex-img, none);
  background-size: var(--gf-tex-size, auto);
  transition: opacity .5s ease;
}
/* 整屏极淡滤镜：内容卡片多为不透明，纯背景层只露出约 12% 面积，
   单靠背景层切换时几乎察觉不到；这里再叠一层极淡全屏纹理（不拦截交互），
   让任意滚动位置都能感知到纹理变化，同时不影响文字可读性。 */
body::after {
  content: '';
  position: fixed; inset: 0;
  z-index: 1;
  pointer-events: none;
  opacity: 0;
  background-image: var(--gf-tex-img, none);
  background-size: var(--gf-tex-size, auto);
  transition: opacity .5s ease;
}
[data-gf-tex] body::after { opacity: calc(var(--gf-tex-op, .9) * .22); }

/* 内容区：把纹理叠在 .main-wrapper 自身背景之上（保留模板自带的 --paper-texture） */
[data-gf-tex] .main-wrapper {
  background-image: var(--gf-tex-img, none), var(--paper-texture, none);
  background-size: var(--gf-tex-size, auto), auto;
}
/* 多层纹理的逐层尺寸（N 层渐变 + 1 层纸纹；auto 型纹理靠列表循环天然正确，无需单列） */
[data-gf-tex="yunwen"] .main-wrapper { background-size: 180px 200px, 180px 200px, 180px 200px, 180px 200px, 180px 200px, auto; }
[data-gf-tex="zhuwen"] .main-wrapper {
  background-size: 360px 440px, 360px 440px, 360px 440px, 360px 440px, 360px 440px,
                   360px 440px, 360px 440px, 360px 440px, 360px 440px, 360px 440px, auto;
}
[data-gf-tex="binglie"] .main-wrapper {
  background-size: 300px 340px, 300px 340px, 300px 340px, 300px 340px, 300px 340px, 300px 340px, auto;
}
[data-gf-tex="luoying"] .main-wrapper {
  background-size: 170px 180px, 170px 180px, 170px 180px, 170px 180px, 170px 180px,
                   170px 180px, 170px 180px, 170px 180px, 170px 180px, 170px 180px, 170px 180px, auto;
}
@media (prefers-reduced-motion: reduce) {
  body::before, body::after { transition: none; }
}

/* ---------- 2. 古籍式阅读模式（在游记详情页生效） ---------- */
.gf-reading .article-card {
  background-color: var(--paper-light, #faf6ee);
}
html[data-theme="dark"] .gf-reading .article-card { background-color: #16201a; }
.gf-reading .article-content {
  font-size: 18.5px;
  line-height: 2.15;
  letter-spacing: .04em;
  max-width: 44em;
  margin-left: auto;
  margin-right: auto;
  padding-left: 8px;
  padding-right: 8px;
}
.gf-reading .article-content p { margin: 1.15em 0; }
.gf-reading .article-content img { border-radius: 10px; }
.gf-reading .detail-head-bg img,
.gf-reading .pd-glance { filter: saturate(.92); }

/* ---------- 3. 文章时序落款卡 ---------- */
.gf-signature {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  margin: 34px auto 6px;
  max-width: 560px;
  padding: 18px 22px;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  position: relative;
}
.gf-signature::after {
  content: '';
  position: absolute; left: 50%; bottom: -3.5px;
  width: 34px; height: 1px;
  transform: translateX(-50%);
  background: var(--gold);
  opacity: .55;
}
.gf-signature-seal {
  flex-shrink: 0;
  display: grid; place-items: center;
  width: 42px; height: 42px;
  border-radius: 8px;
  background: var(--cinnabar);
  color: #fff5dd;
  font-family: var(--font-display);
  font-size: 21px;
  line-height: 1;
  box-shadow: inset 0 0 0 2px rgba(255,245,221,.4), 0 4px 12px rgba(139,46,34,.25);
}
.gf-signature-body { min-width: 0; text-align: center; flex: 1; }
.gf-signature-title {
  font-family: var(--font-display);
  font-size: 17px;
  letter-spacing: .22em;
  color: var(--ink);
  margin: 2px 0 4px;
}
.gf-signature-quote {
  font-size: 13.5px;
  color: var(--ink-soft);
  letter-spacing: .08em;
  margin: 0 0 4px;
}
.gf-signature-sub {
  font-size: 11.5px;
  color: var(--ink-soft);
  opacity: .75;
  letter-spacing: .12em;
  margin: 0;
}

/* ---------- 4. 时序挂件 ---------- */
.gf-wrap { position: relative; display: inline-flex; }
.gf-topbtn {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 3px 10px 3px 3px;
  border-radius: 999px;
  background: var(--card-bg, #fffdf6);
  border: 1px solid var(--gold-light);
  cursor: pointer;
  transition: border-color .2s, box-shadow .2s, background .2s;
}
.gf-topbtn:hover { border-color: var(--gold); background: var(--gold-pale); }
.gf-topbtn.on { border-color: var(--cinnabar); }
.gf-topbtn-seal {
  display: grid; place-items: center;
  width: 24px; height: 24px;
  border-radius: 7px;
  background: var(--cinnabar);
  color: #fff5dd;
  font-family: var(--font-display);
  font-size: 13px;
  line-height: 1;
  box-shadow: inset 0 0 0 1px rgba(255,245,221,.45);
}
.gf-topbtn-name {
  font: 13px var(--font-display);
  letter-spacing: .14em;
  color: var(--bronze-deep);
}
.gf-topbtn.on .gf-topbtn-name { color: var(--cinnabar); }

/* 面板 */
.gf-panel {
  position: absolute; top: calc(100% + 10px); right: 0; z-index: 80;
  width: min(86vw, 280px);
  background: var(--paper-light);
  border: 1px solid var(--gold);
  border-radius: 14px;
  box-shadow: 0 18px 48px rgba(15,31,24,.22);
  overflow: hidden;
}
.gf-panel-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 14px;
  background: linear-gradient(180deg, rgba(184,150,62,.14), transparent);
  border-bottom: 1px solid var(--line);
}
.gf-panel-title {
  font-family: var(--font-display);
  font-size: 14px;
  letter-spacing: .3em;
  color: var(--bronze-deep);
}
.gf-panel-close {
  border: none; background: none;
  font-size: 17px; line-height: 1;
  color: var(--ink-soft);
  cursor: pointer; padding: 2px 6px;
}
.gf-panel-close:hover { color: var(--cinnabar); }
.gf-panel-body { padding: 12px 14px 14px; }

.gf-now { text-align: left; }
.gf-now-main { display: flex; align-items: baseline; gap: 8px; }
.gf-now-main b {
  font-family: var(--font-display);
  font-size: 24px;
  letter-spacing: .16em;
  color: var(--cinnabar);
}
.gf-now-main i {
  font-style: normal;
  font-size: 11px;
  color: #fff5dd;
  background: var(--bronze);
  border-radius: 4px;
  padding: 2px 7px;
  letter-spacing: .1em;
}
.gf-now-sub { font-size: 12.5px; color: var(--ink); opacity: .85; margin-top: 4px; letter-spacing: .06em; }
.gf-now-quote {
  margin-top: 8px;
  font-size: 12.5px;
  color: var(--ink-soft);
  letter-spacing: .05em;
}
.gf-now-next { margin-top: 6px; font-size: 11.5px; color: var(--ink-soft); opacity: .8; }

.gf-group-label {
  margin: 14px 0 8px;
  font-size: 11px;
  letter-spacing: .3em;
  color: var(--ink-soft);
}
.gf-tex-row { display: flex; gap: 6px; flex-wrap: wrap; }
.gf-chip {
  border: 1px solid var(--line-strong);
  background: var(--paper);
  color: var(--ink-soft);
  border-radius: 999px;
  padding: 5px 12px;
  font-size: 12px;
  letter-spacing: .1em;
  cursor: pointer;
  transition: all .2s;
}
.gf-chip:hover { border-color: var(--gold); color: var(--ink); }
.gf-chip.act {
  background: var(--cinnabar);
  border-color: var(--cinnabar);
  color: #fff5dd;
}

.gf-read-switch {
  width: 100%;
  display: flex; align-items: center; justify-content: space-between;
  border: 1px solid var(--line-strong);
  background: var(--paper);
  border-radius: 10px;
  padding: 10px 12px;
  cursor: pointer;
  font-size: 13px;
  letter-spacing: .08em;
  color: var(--ink);
  transition: all .2s;
}
.gf-read-switch i {
  width: 34px; height: 19px;
  border-radius: 999px;
  background: #cfc6b2;
  position: relative;
  transition: background .2s;
  flex-shrink: 0;
}
.gf-read-switch i::after {
  content: '';
  position: absolute; top: 2px; left: 2px;
  width: 15px; height: 15px;
  border-radius: 50%;
  background: #fffdf6;
  box-shadow: 0 1px 3px rgba(0,0,0,.25);
  transition: transform .2s;
}
.gf-read-switch.act { border-color: var(--cinnabar); }
.gf-read-switch.act i { background: var(--cinnabar); }
.gf-read-switch.act i::after { transform: translateX(15px); }

.gf-hint {
  margin: 10px 0 0;
  font-size: 10.5px;
  color: var(--ink-soft);
  opacity: .65;
  text-align: right;
  letter-spacing: .08em;
}

/* 面板出入场 */
.gf-pop-enter-active, .gf-pop-leave-active { transition: opacity .22s ease, transform .22s ease; }
.gf-pop-enter-from, .gf-pop-leave-to { opacity: 0; transform: translateY(8px) scale(.97); }
@media (prefers-reduced-motion: reduce) {
  .gf-pop-enter-active, .gf-pop-leave-active { transition: none; }
  .gf-topbtn { transition: none; }
}

/* 移动端顶栏：仅保留印章图标 */
@media (max-width: 900px) {
  .gf-topbtn { padding: 3px; border-radius: 9px; }
  .gf-topbtn-name { display: none; }
}

/* 暗色主题适配 */
html[data-theme="dark"] .gf-signature { border-color: #ffffff1f; }
html[data-theme="dark"] .gf-signature-title { color: #fff5dd; }
html[data-theme="dark"] .gf-signature-quote,
html[data-theme="dark"] .gf-signature-sub { color: #d8d2be; }
html[data-theme="dark"] .gf-topbtn { background: #1a1d16; border-color: #3a3d33; }
html[data-theme="dark"] .gf-topbtn-name { color: #e6dfc8; }
html[data-theme="dark"] .gf-topbtn.on .gf-topbtn-name { color: var(--cinnabar); }
html[data-theme="dark"] .gf-panel {
  background: #12140f;
  box-shadow: 0 18px 48px rgba(0,0,0,.5);
}
html[data-theme="dark"] .gf-panel-title { color: var(--gold-light); }
html[data-theme="dark"] .gf-now-sub { color: #e6dfc8; }
html[data-theme="dark"] .gf-now-quote,
html[data-theme="dark"] .gf-now-next { color: #b8b09a; }
html[data-theme="dark"] .gf-chip { background: #1a1f1a; color: #cfc8b4; }
html[data-theme="dark"] .gf-chip.act { background: var(--cinnabar); color: #fff5dd; }
html[data-theme="dark"] .gf-read-switch { background: #1a1f1a; color: #e6dfc8; }
html[data-theme="dark"] .gf-group-label { color: #a89f88; }
html[data-theme="dark"] [data-gf-tex="xuanzhi"] {
  --gf-tex-img:
    radial-gradient(circle at 22% 28%, rgba(212,180,106,.1) 0 1px, transparent 1.6px),
    radial-gradient(circle at 74% 66%, rgba(107,143,130,.11) 0 1.2px, transparent 1.8px),
    repeating-linear-gradient(105deg, rgba(216,210,190,.045) 0 2px, transparent 2px 7px);
}
/* 暗色下的纹理统一换为暖白 / 淡金 / 淡粉的低饱和亮线（深绿底色在暗底上不可见） */
html[data-theme="dark"] [data-gf-tex="yama"] {
  --gf-tex-img:
    repeating-linear-gradient(0deg, rgba(216,210,190,.05) 0 1px, transparent 1px 4px),
    repeating-linear-gradient(90deg, rgba(216,210,190,.04) 0 1px, transparent 1px 5px);
}
html[data-theme="dark"] [data-gf-tex="yunwen"] {
  --gf-tex-img:
    radial-gradient(circle at 36px 44px,
      transparent 0 7px, rgba(216,210,190,.10) 7px 9.5px, transparent 9.5px 12.5px,
      rgba(216,210,190,.07) 12.5px 14.5px, transparent 14.5px 17px,
      rgba(216,210,190,.045) 17px 18.5px, transparent 18.5px),
    radial-gradient(circle at 128px 92px,
      transparent 0 5px, rgba(196,164,96,.12) 5px 7px, transparent 7px 10px,
      rgba(196,164,96,.07) 10px 11.5px, transparent 11.5px),
    radial-gradient(circle at 78px 152px,
      transparent 0 11px, rgba(216,210,190,.06) 11px 14px, transparent 14px 19px,
      rgba(216,210,190,.04) 19px 21px, transparent 21px),
    radial-gradient(ellipse 46px 14px at 30px 60px, rgba(216,210,190,.03), transparent 75%),
    radial-gradient(ellipse 54px 16px at 140px 110px, rgba(196,164,96,.035), transparent 75%);
}
html[data-theme="dark"] [data-gf-tex="zhuwen"] {
  --gf-tex-img:
    linear-gradient(90deg, transparent calc(26% - 1.3px), rgba(216,210,190,.08) calc(26% - 1.3px) calc(26% + 1.3px), transparent calc(26% + 1.3px)),
    linear-gradient(90deg, transparent calc(69% - 1px), rgba(216,210,190,.05) calc(69% - 1px) calc(69% + 1px), transparent calc(69% + 1px)),
    radial-gradient(ellipse 7px 1.6px at 26% 24%, rgba(216,210,190,.12), transparent 72%),
    radial-gradient(ellipse 7px 1.6px at 26% 68%, rgba(216,210,190,.09), transparent 72%),
    radial-gradient(ellipse 5.5px 1.3px at 69% 46%, rgba(216,210,190,.08), transparent 72%),
    radial-gradient(ellipse 15px 3.2px at 20% 10%, rgba(216,210,190,.10), transparent 74%),
    radial-gradient(ellipse 12px 2.6px at 33% 7%, rgba(216,210,190,.06), transparent 74%),
    radial-gradient(ellipse 14px 3px at 76% 55%, rgba(216,210,190,.08), transparent 74%),
    radial-gradient(ellipse 11px 2.4px at 62% 60%, rgba(216,210,190,.05), transparent 74%),
    radial-gradient(ellipse 13px 2.8px at 28% 90%, rgba(196,164,96,.06), transparent 74%);
}
html[data-theme="dark"] [data-gf-tex="shuiwen"] {
  --gf-tex-img:
    repeating-linear-gradient(0deg, transparent 0 15px, rgba(216,210,190,.04) 15px 16.5px, transparent 16.5px 34px),
    repeating-linear-gradient(0deg, transparent 0 24px, rgba(196,164,96,.035) 24px 25.2px, transparent 25.2px 48px),
    repeating-linear-gradient(0deg, transparent 0 34px, rgba(216,210,190,.025) 34px 35px, transparent 35px 68px);
}
html[data-theme="dark"] [data-gf-tex="binglie"] {
  --gf-tex-img:
    linear-gradient(71deg, transparent 30.8%, rgba(216,210,190,.06) 30.8% 31.6%, transparent 31.6%),
    linear-gradient(-38deg, transparent 62.2%, rgba(216,210,190,.05) 62.2% 63%, transparent 63%),
    linear-gradient(118deg, transparent 15.5%, rgba(216,210,190,.05) 15.5% 16.2%, transparent 16.2%),
    linear-gradient(12deg, transparent 74.5%, rgba(216,210,190,.05) 74.5% 75.2%, transparent 75.2%),
    linear-gradient(155deg, transparent 47.5%, rgba(196,164,96,.05) 47.5% 48.2%, transparent 48.2%),
    linear-gradient(-102deg, transparent 84.5%, rgba(216,210,190,.04) 84.5% 85.1%, transparent 85.1%);
}
html[data-theme="dark"] [data-gf-tex="luoying"] {
  --gf-tex-img:
    radial-gradient(circle at 50px 42px, rgba(224,150,170,.10) 0 2.8px, transparent 3.4px),
    radial-gradient(circle at 42.5px 47px, rgba(224,150,170,.08) 0 2.4px, transparent 3px),
    radial-gradient(circle at 57.5px 47px, rgba(224,150,170,.08) 0 2.4px, transparent 3px),
    radial-gradient(circle at 45.5px 54px, rgba(224,150,170,.06) 0 2.2px, transparent 2.8px),
    radial-gradient(circle at 54.5px 54px, rgba(224,150,170,.06) 0 2.2px, transparent 2.8px),
    radial-gradient(circle at 50px 50px, rgba(196,164,96,.12) 0 1.3px, transparent 1.7px),
    radial-gradient(circle at 128px 118px, rgba(224,150,170,.05) 0 2px, transparent 2.6px),
    radial-gradient(circle at 122px 124px, rgba(224,150,170,.04) 0 1.7px, transparent 2.3px),
    radial-gradient(circle at 133px 123px, rgba(224,150,170,.04) 0 1.7px, transparent 2.3px),
    radial-gradient(circle at 127px 128px, rgba(196,164,96,.07) 0 1px, transparent 1.4px),
    radial-gradient(ellipse 6px 2.2px at 96px 76px, rgba(224,150,170,.05), transparent 75%);
}
html[data-theme="dark"] [data-gf-tex="jinge"] {
  --gf-tex-img:
    repeating-linear-gradient(45deg, transparent 0 21px, rgba(216,210,190,.045) 21px 22.2px, transparent 22.2px 42px),
    repeating-linear-gradient(-45deg, transparent 0 21px, rgba(216,210,190,.045) 21px 22.2px, transparent 22.2px 42px),
    repeating-linear-gradient(45deg, transparent 0 42px, rgba(196,164,96,.04) 42px 43px, transparent 43px 84px);
}

/* ---------- 打赏弹层 ---------- */
.reward-modal {
  position: fixed; inset: 0; z-index: 1260;
  display: flex; align-items: center; justify-content: center;
  padding: 20px;
}
.reward-card {
  position: relative; width: 300px; max-width: 88vw;
  background: var(--paper); border-radius: 18px;
  box-shadow: 0 12px 40px #0004;
  padding: 26px 22px 20px; text-align: center;
}
.reward-close {
  position: absolute; top: 10px; right: 12px;
  border: 0; background: none; color: var(--text-3);
  font-size: 16px; cursor: pointer;
}
.reward-title { font: 600 17px var(--font-display); color: var(--bronze-deep); letter-spacing: .06em; }
.reward-text { font-size: 13px; color: var(--text-2); margin: 8px 0 14px; line-height: 1.7; }
.reward-qrcode {
  width: 210px; height: 210px; object-fit: contain;
  border-radius: 12px; background: #fff;
  border: 1px dashed var(--line-strong); padding: 6px;
}
.reward-hint { font-size: 12px; color: var(--text-3); margin-top: 12px; }
.reward-btn { color: var(--bronze-deep); }

/* ==== 页面头部横幅统一尺寸（桌面 220 / 移动 190；首页大图与详情封面除外） ==== */
:root { --banner-min-h: 220px; }
.posts-archive-hero, .map-archive-hero, .gallery-masthead,
.specialties-masthead, .timeline-masthead, .province-masthead,
.plans-masthead, .pland-hero, .about-hero, .about-hero-new {
  min-height: var(--banner-min-h);
}
.about-hero-inner, .gallery-masthead-preview { min-height: var(--banner-min-h); }
@media (max-width: 720px) {
  :root { --banner-min-h: 190px; }
}

/* ==== 风物罗盘可点击（按 6 分类切换，等价于时光轴的四季罗盘） ==== */
.specialties-orbit.interactive span { cursor: pointer; transition: color .18s, text-shadow .18s; }
.specialties-orbit.interactive span:not(.orbit-core):hover { color: #fff5dd; text-shadow: 0 0 10px rgba(212, 184, 106, .7); }
.specialties-orbit.interactive span:not(.orbit-core).active { color: var(--cinnabar); text-shadow: 0 0 12px rgba(255, 245, 221, .7); }
/* 中心：当前分类图标（抵消父级 -14° 旋转） */
.specialties-orbit.interactive .orbit-core {
  position: absolute; left: 50%; top: 50%;
  transform: translate(-50%, -50%) rotate(14deg);
  color: var(--cinnabar); font-size: 22px; pointer-events: none;
  filter: drop-shadow(0 2px 6px rgba(255, 245, 221, .35));
}
/* 6 坐标定位（child2-7）：统一锚在圆心，rotate(θ+14°) translateY(-R) rotate(-θ°)
   —— 字心精确落在圆周点上，且抵消父级 -14° 旋转保持正立，不再错位 */
.specialties-orbit.interactive span:not(.orbit-core) { left: 50%; top: 50%; }
.specialties-orbit.interactive span:nth-child(2) { transform: translate(-50%, -50%) rotate(14deg)  translateY(-88px) rotate(0deg); }    /* 食 · 顶 */
.specialties-orbit.interactive span:nth-child(3) { transform: translate(-50%, -50%) rotate(74deg)  translateY(-88px) rotate(-60deg); }  /* 产 · 右上 */
.specialties-orbit.interactive span:nth-child(4) { transform: translate(-50%, -50%) rotate(134deg) translateY(-88px) rotate(-120deg); } /* 号 · 右下 */
.specialties-orbit.interactive span:nth-child(5) { transform: translate(-50%, -50%) rotate(194deg) translateY(-88px) rotate(-180deg); } /* 文 · 底 */
.specialties-orbit.interactive span:nth-child(6) { transform: translate(-50%, -50%) rotate(254deg) translateY(-88px) rotate(-240deg); } /* 艺 · 左下 */
.specialties-orbit.interactive span:nth-child(7) { transform: translate(-50%, -50%) rotate(314deg) translateY(-88px) rotate(-300deg); } /* 节 · 左上 */
@media (max-width: 760px) {
  .specialties-orbit.interactive .orbit-core { font-size: 16px; }
  .specialties-orbit.interactive span:nth-child(2) { transform: translate(-50%, -50%) rotate(14deg)  translateY(-56px) rotate(0deg); }
  .specialties-orbit.interactive span:nth-child(3) { transform: translate(-50%, -50%) rotate(74deg)  translateY(-56px) rotate(-60deg); }
  .specialties-orbit.interactive span:nth-child(4) { transform: translate(-50%, -50%) rotate(134deg) translateY(-56px) rotate(-120deg); }
  .specialties-orbit.interactive span:nth-child(5) { transform: translate(-50%, -50%) rotate(194deg) translateY(-56px) rotate(-180deg); }
  .specialties-orbit.interactive span:nth-child(6) { transform: translate(-50%, -50%) rotate(254deg) translateY(-56px) rotate(-240deg); }
  .specialties-orbit.interactive span:nth-child(7) { transform: translate(-50%, -50%) rotate(314deg) translateY(-56px) rotate(-300deg); }
}

/* 图片加载失败占位：由 js/core.js 的 installImageFallback() 打上 .img-broken，
   换成内置占位图（不再显示浏览器裂图），鼠标悬停可看到提示 */
img.img-broken { object-fit: contain !important; background: #efe6d2; }
