/* ============ 基础 ============ */
:root {
  --bg: #eef1f5;
  --card: #ffffff;
  --line: #e5e9ef;
  --line-soft: #eff2f6;
  --text: #1b1f24;
  --text-2: #4a5361;
  --muted: #79828f;
  --accent: #2b6cf6;
  --w: 1000px;
  --radius: 12px;
}

* { box-sizing: border-box; }

html, body { margin: 0; padding: 0; }

body {
  background: var(--bg);
  color: var(--text);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
    "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
  font-size: 14px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

.wrap { width: var(--w); max-width: calc(100% - 32px); margin: 0 auto; }

ul, ol, p, h1, h2, h3 { margin: 0; padding: 0; }
li { list-style: none; }
img { display: block; }
button { font: inherit; cursor: pointer; }

/* 覆盖 flex 等 display 声明，保证 hidden 生效 */
[hidden] { display: none !important; }

/* ============ 顶栏 ============ */
.topbar {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(255, 255, 255, .92);
  backdrop-filter: saturate(180%) blur(10px);
  border-bottom: 1px solid var(--line);
}

.topbar-inner {
  display: flex;
  align-items: center;
  gap: 18px;
  height: 56px;
}

.brand {
  display: flex;
  align-items: center;
  gap: 9px;
  text-decoration: none;
  color: var(--text);
  flex: 0 0 auto;
}

.brand-mark {
  width: 22px;
  height: 22px;
  border-radius: 7px;
  background: linear-gradient(150deg, #4d8ef7, #2b6cf6);
  position: relative;
}

.brand-mark::after {
  content: "";
  position: absolute;
  right: -3px;
  bottom: -2px;
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: #fff;
  box-shadow: inset 0 0 0 2.5px #8fb9fb;
}

.brand-text { font-size: 17px; font-weight: 600; letter-spacing: .5px; }

/* 功能入口导航（品牌名右侧，当前栏目高亮）；菜单项在 lib/chrome.js 的 MAIN_NAV 维护。
   栏目过多时的两种兜底（见 public/app.js 的顶栏收纳逻辑）：
     · 默认 → 横向可滚动，不会被右侧搜索框盖住（无脚本时也成立）；
     · 脚本算出放不下 → 给 .navwrap 加 has-more，末尾几项搬进「更多」下拉。 */
.navwrap {
  display: flex;
  align-items: center;
  gap: 4px;
  flex: 0 1 auto;
  min-width: 0;
  overflow-x: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.navwrap::-webkit-scrollbar { display: none; }

/* 启用「更多」收纳后要放开溢出，否则下拉菜单会被滚动容器裁掉 */
.navwrap.has-more { overflow: visible; }

.mainnav {
  display: flex;
  align-items: center;
  gap: 4px;
}

/* 「更多」入口（栏目放不下时由脚本显形） */
.nav-more { position: relative; flex: 0 0 auto; }

.nav-more-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 11px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  font-size: 14px;
  color: var(--text-2);
  white-space: nowrap;
  transition: background .15s, color .15s;
}

.nav-more-btn:hover { background: #f1f5fe; color: var(--accent); }
.nav-more-btn.on { background: #eef4ff; color: var(--accent); font-weight: 600; }

.nav-more-btn .caret {
  width: 6px;
  height: 6px;
  margin-top: -3px;
  border-right: 1.7px solid currentColor;
  border-bottom: 1.7px solid currentColor;
  transform: rotate(45deg);
  transition: transform .15s;
}

.nav-more-btn[aria-expanded="true"] .caret { margin-top: 3px; transform: rotate(-135deg); }

.nav-more-menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 60;
  min-width: 116px;
  max-height: 330px;
  overflow-y: auto;
  padding: 5px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 10px;
  box-shadow: 0 12px 30px rgba(20, 30, 50, .12);
}

.nav-more-menu .nav-link { display: block; padding: 7px 12px; }

.nav-link {
  display: inline-block;
  padding: 6px 12px;
  border-radius: 8px;
  font-size: 14px;
  color: var(--text-2);
  text-decoration: none;
  white-space: nowrap;
  transition: background .15s, color .15s;
}

.nav-link:hover { background: #f1f5fe; color: var(--accent); }
.nav-link.on { background: #eef4ff; color: var(--accent); font-weight: 600; }

/* 搜索：靠顶栏最右边 */
.search { position: relative; flex: 0 0 auto; width: 280px; margin-left: auto; }

.search input {
  width: 100%;
  height: 38px;
  padding: 0 14px 0 36px;
  border: 1px solid var(--line);
  border-radius: 19px;
  background: #f6f8fa url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%2379828f' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-3.5-3.5'/%3E%3C/svg%3E") no-repeat 14px center;
  font-size: 14px;
  color: var(--text);
  outline: none;
  transition: border-color .15s, background .15s, box-shadow .15s;
}

.search input::placeholder { color: #9aa3af; }

.search input:focus {
  background-color: #fff;
  border-color: #b9cdfa;
  box-shadow: 0 0 0 3px rgba(43, 108, 246, .1);
}

.suggest {
  position: absolute;
  top: 46px;
  left: auto;
  right: 0;
  min-width: 320px;
  z-index: 20;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 10px;
  box-shadow: 0 12px 30px rgba(20, 30, 50, .12);
  overflow: hidden;
  max-height: 296px;
  overflow-y: auto;
  padding: 5px;
}

.suggest li {
  padding: 8px 12px;
  border-radius: 7px;
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: center;
}

.suggest li:hover, .suggest li.active { background: #f1f5fe; }
.suggest li b { font-weight: 600; }
.suggest li span { color: var(--muted); font-size: 12.5px; flex: 0 0 auto; }
.suggest li .empty { color: var(--muted); cursor: default; }

/* 关注城市：正文顶部的快捷条（原在顶栏，改到这里，把顶栏让给功能入口与搜索框） */
.fav-strip {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 14px;
  margin-bottom: 11px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  min-width: 0;
}

.fav-label { color: var(--muted); font-size: 12.5px; flex: 0 0 auto; white-space: nowrap; }

.fav-list {
  display: flex;
  flex-wrap: nowrap;
  gap: 8px;
  overflow-x: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
  min-width: 0;
}

.fav-list::-webkit-scrollbar { display: none; }

.fav-list li {
  position: relative;
  padding: 4px 26px 4px 12px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: #fff;
  font-size: 13px;
  color: var(--text-2);
  cursor: pointer;
  transition: all .15s;
  white-space: nowrap;
}

.fav-list li:hover { border-color: #b9cdfa; color: var(--accent); }
.fav-list li.on { background: var(--accent); border-color: var(--accent); color: #fff; }

.fav-list li em {
  position: absolute;
  right: 6px;
  top: 50%;
  transform: translateY(-50%);
  width: 15px;
  height: 15px;
  line-height: 13px;
  text-align: center;
  border-radius: 50%;
  font-style: normal;
  font-size: 12px;
  color: #b6bdc7;
  opacity: 0;
  transition: opacity .15s;
}

.fav-list li:hover em { opacity: 1; }
.fav-list li.on em { color: rgba(255, 255, 255, .75); }
.fav-list li em:hover { background: rgba(0, 0, 0, .08); color: #e2554f; }

.fav-empty { color: #a3abb6; font-size: 12px; white-space: normal; }

/* ============ 主区 ============ */
main { padding: 14px 0 30px; }

.card {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 15px 18px;
  margin-bottom: 11px;
}

.card-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
  letter-spacing: .3px;
  margin-bottom: 11px;
  display: flex;
  align-items: center;
  gap: 8px;
}

.card-title::before {
  content: "";
  width: 3px;
  height: 13px;
  border-radius: 2px;
  background: var(--accent);
}

/* 问答区块标题右侧的「问答汇总」入口，跟随当前城市的问答专页 */
.qa-more {
  margin-left: auto;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0;
  color: var(--accent);
  text-decoration: none;
  white-space: nowrap;
}
.qa-more:hover {
  text-decoration: underline;
}

/* ---------- 实况主卡 ---------- */
.hero {
  --c1: #8fa3bd;
  --c2: #a9b8cc;
  --c3: #93a5bf;
  position: relative;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  padding: 18px 24px;
  border-radius: 14px;
  color: #fff;
  background: linear-gradient(118deg, var(--c1) 0%, var(--c2) 52%, var(--c3) 100%);
  box-shadow: 0 10px 26px rgba(28, 40, 62, .13);
  overflow: hidden;
  margin-bottom: 11px;
}

.hero::after {
  content: "";
  position: absolute;
  right: -70px;
  top: -90px;
  width: 260px;
  height: 260px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .09);
}

.hero-left { position: relative; z-index: 2; }

.hero-loc {
  display: flex;
  align-items: baseline;
  gap: 10px;
  font-size: 16px;
  font-weight: 600;
  letter-spacing: .4px;
}

.hero-pub { font-size: 12.5px; font-weight: 400; opacity: .82; }

.hero-star {
  margin-left: 4px;
  padding: 2px 11px;
  border: 1px solid rgba(255, 255, 255, .55);
  border-radius: 12px;
  background: rgba(255, 255, 255, .14);
  color: #fff;
  font-size: 12px;
  font-weight: 400;
  letter-spacing: .3px;
  transition: background .15s, border-color .15s;
}

.hero-star:hover { background: rgba(255, 255, 255, .28); }
.hero-star.on { background: #fff; border-color: #fff; color: #3a4a63; }

.hero-temp {
  font-size: 58px;
  font-weight: 300;
  line-height: 1.08;
  letter-spacing: -1.5px;
  margin: 2px 0 0;
  display: flex;
  align-items: flex-start;
}

.hero-temp i { font-style: normal; font-size: 26px; font-weight: 300; margin: 6px 0 0 2px; }

.hero-desc {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 15px;
  opacity: .95;
}

.hero-desc .sep { width: 1px; height: 12px; background: rgba(255, 255, 255, .5); }

.hero-right {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 18px;
}

.hero-icon { width: 74px; height: 74px; object-fit: contain; }

.hero-meta {
  display: grid;
  grid-template-columns: repeat(2, minmax(74px, auto));
  gap: 9px 22px;
  padding-left: 18px;
  border-left: 1px solid rgba(255, 255, 255, .25);
}

.hero-meta li { display: flex; flex-direction: column; gap: 1px; }
.hero-meta b { font-size: 11.5px; font-weight: 400; opacity: .78; }
.hero-meta span { font-size: 14.5px; font-weight: 500; }

/* ---------- 预警 ---------- */
.alarm-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 16px;
  background: #fff6ed;
  border: 1px solid #fbd9b4;
  border-radius: 10px;
  color: #9a5b12;
  font-size: 13.5px;
  margin-bottom: 11px;
}

.alarm-bar::before {
  content: "!";
  flex: 0 0 auto;
  width: 17px;
  height: 17px;
  line-height: 17px;
  text-align: center;
  border-radius: 50%;
  background: #ee9b3c;
  color: #fff;
  font-size: 12px;
  font-weight: 700;
}

/* ---------- 空气 + 日出双栏 ---------- */
.duo { display: grid; grid-template-columns: 1fr 1fr; gap: 11px; }

.air-body { display: flex; align-items: center; gap: 18px; }

/* AQI 颜色与进度提到卡片上，环形与污染物小条共用 */
.air-card { --aqi-color: #4caf50; --pct: 0; }

.aqi-ring {
  position: relative;
  flex: 0 0 auto;
  width: 88px;
  height: 88px;
  border-radius: 50%;
  background: conic-gradient(var(--aqi-color) calc(var(--pct) * 1%), #edf0f4 0);
  display: flex;
  align-items: center;
  justify-content: center;
}

.aqi-inner {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  background: #fff;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1px;
}

.aqi-inner b { font-size: 22px; font-weight: 600; line-height: 1; color: var(--text); }
.aqi-inner span { font-size: 11.5px; color: var(--muted); }

.pollutants {
  flex: 1 1 auto;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px 11px;
}

.pollutants li { display: flex; flex-direction: column; gap: 3px; }
.pollutants .pl-top { display: flex; align-items: baseline; justify-content: space-between; gap: 4px; }
.pollutants .pl-name { font-size: 11.5px; color: var(--muted); }
.pollutants .pl-val { font-size: 13px; font-weight: 600; color: var(--text-2); }
.pollutants .pl-bar { height: 3px; border-radius: 2px; background: #edf0f4; overflow: hidden; }
.pollutants .pl-bar i { display: block; height: 100%; border-radius: 2px; background: var(--aqi-color); }

.air-rank { margin-top: 10px; font-size: 12.5px; color: var(--muted); }

/* 日出日落 */
/* 注意：这个 svg 是 viewBox 100x76 + xMidYMid meet，
   实际尺寸由**高度**决定（宽度再宽也只会居中留白）。
   压高度会把弧线一起缩小，所以这里保持 76px 不动。 */
.sun-arc { height: 76px; display: flex; align-items: flex-end; justify-content: center; }
.sun-arc svg { width: 100%; height: 76px; }

.sun-times {
  display: flex;
  justify-content: space-around;
  margin-top: 4px;
  padding-top: 9px;
  border-top: 1px solid var(--line-soft);
}

.sun-times div { display: flex; flex-direction: column; align-items: center; gap: 1px; }
.sun-times span { font-size: 11.5px; color: var(--muted); }
.sun-times b { font-size: 16px; font-weight: 600; }

.limit-line {
  margin-top: 9px;
  padding-top: 8px;
  border-top: 1px solid var(--line-soft);
  font-size: 12.5px;
  color: var(--text-2);
}

.limit-line b { color: #d4752a; }

/* ---------- 24 小时 ---------- */
.hourly-scroll { overflow-x: auto; overflow-y: hidden; padding-bottom: 4px; }

.hourly-scroll::-webkit-scrollbar { height: 6px; }
.hourly-scroll::-webkit-scrollbar-thumb { background: #d6dce5; border-radius: 3px; }
.hourly-scroll::-webkit-scrollbar-track { background: transparent; }

.hourly-inner { position: relative; height: 132px; display: flex; }

.hour {
  flex: 0 0 66px;
  width: 66px;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  border-right: 1px solid var(--line-soft);
}

.hour:last-child { border-right: none; }
.hour.now { background: #f5f8ff; border-radius: 8px; }
.hour .ic { margin-top: 70px; height: 32px; }
.hour .ic img { width: 32px; height: 32px; margin: 0 auto; }
.hour .hh { margin-top: 7px; font-size: 12px; color: var(--muted); }
.hour .hh b { display: block; color: var(--accent); font-weight: 600; font-size: 12px; }

.hourly-svg { position: absolute; left: 0; top: 0; pointer-events: none; }

/* ---------- 7 天 ---------- */
.daily-list li {
  display: grid;
  grid-template-columns: 96px 40px 1fr 92px;
  align-items: center;
  gap: 12px;
  padding: 8px 0;
  border-bottom: 1px solid var(--line-soft);
}

.daily-list li:last-child { border-bottom: none; }
.daily-list li.today { background: #f7f9fe; border-radius: 8px; padding-left: 10px; padding-right: 10px; }

.d-date { font-size: 13px; color: var(--text-2); }
.d-date b { display: block; font-size: 13px; color: var(--text); font-weight: 600; }

.d-icon img { width: 28px; height: 28px; }

.d-text { display: flex; align-items: center; gap: 8px; min-width: 0; }
.d-text .d-wx { font-size: 13.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.d-text .d-wind { font-size: 12px; color: var(--muted); white-space: nowrap; flex: 0 0 auto; }
.d-text .aqi-tag {
  flex: 0 0 auto;
  font-size: 11px;
  padding: 1px 6px;
  border-radius: 9px;
  background: #eef4ff;
  color: #3d7bef;
}

.d-temp { display: flex; align-items: center; justify-content: flex-end; gap: 10px; }

.temp-bar {
  position: relative;
  width: 62px;
  height: 5px;
  border-radius: 3px;
  background: #eef1f5;
  flex: 0 0 auto;
}

.temp-bar i {
  position: absolute;
  top: 0;
  height: 100%;
  border-radius: 3px;
  background: linear-gradient(90deg, #7db3f2, #f3b661);
}

.d-temp .t-low { font-size: 13px; color: var(--muted); width: 30px; }
.d-temp .t-high { font-size: 13.5px; font-weight: 600; color: var(--text); width: 30px; text-align: right; }

/* ---------- 生活指数 ---------- */
.index-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 9px; }

.index-grid li {
  display: flex;
  gap: 9px;
  padding: 10px 11px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fcfdfe;
}

.index-grid .ix-img {
  flex: 0 0 auto;
  width: 30px;
  height: 30px;
  object-fit: contain;
}

.index-grid .ix-fallback {
  flex: 0 0 auto;
  width: 30px;
  height: 30px;
  border-radius: 8px;
  background: #eaf1fe;
  color: #3d7bef;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  font-weight: 600;
}

.index-grid .ix-body { min-width: 0; }
.index-grid .ix-head { display: flex; align-items: baseline; gap: 6px; }
.index-grid .ix-name { font-size: 12.5px; color: var(--muted); }
.index-grid .ix-info { font-size: 13px; font-weight: 600; color: var(--text); }
.index-grid .ix-detail {
  margin-top: 1px;
  font-size: 12px;
  color: var(--text-2);
  line-height: 1.45;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ---------- 面包屑 ---------- */
.crumb {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 10px;
  font-size: 12.5px;
  color: var(--muted);
}

.crumb a { color: var(--accent); text-decoration: none; }
.crumb a:hover { text-decoration: underline; }
.crumb i { font-style: normal; color: #c6ccd6; }
.crumb span { color: var(--text-2); }

/* hero 城市名（语义 H1，首页为 H2，视觉沿用原样式） */
.hero-loc h1,
.hero-loc h2 {
  font-size: inherit;
  font-weight: inherit;
  letter-spacing: inherit;
  display: inline;
  margin: 0;
}

/* ---------- 城市索引 / 站内链接 ---------- */
.index-intro {
  margin-bottom: 12px;
  font-size: 13px;
  line-height: 1.75;
  color: var(--muted);
}

/* 首页：全国省市县三级行政区目录 */
#cityIndex { scroll-margin-top: 62px; }

.prov-jump {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 16px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line-soft);
}

.prov-jump a {
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  padding: 3px 10px;
  border: 1px solid var(--line);
  border-radius: 13px;
  font-size: 12.5px;
  color: var(--text-2);
  text-decoration: none;
  transition: border-color .15s, color .15s, background .15s;
}

.prov-jump a:hover { border-color: #b9cdfa; color: var(--accent); background: #f6f9ff; }
.prov-jump em { font-style: normal; font-size: 11px; color: #a3abb6; }

/*
 * 省级块：两列网格。省 / 自治区 / 特别行政区整行占满（grid-column: 1 / -1），
 * 直辖市（.is-municipal）各占一列，两两并排。
 */
.prov-list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
  align-items: start;
}

.prov {
  grid-column: 1 / -1;
  padding: 11px 13px 9px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: #fbfcfe;
  /* 吸顶栏实测 56px（顶栏高度），留 6px 余量，否则块标题会被压住 */
  scroll-margin-top: 62px;
}

/* 直辖市只有一个市，三列网格会把区县列表挤成窄长条，改为一列铺满整块宽度 */
.prov.is-municipal { grid-column: span 1; }
.prov.is-municipal .prov-cities { grid-template-columns: 1fr; }

.prov > h3 {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 8px;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--line-soft);
  font-size: 13.5px;
  font-weight: 600;
  color: var(--text);
}

.prov > h3 a { color: var(--text); text-decoration: none; }
.prov > h3 a:hover { color: var(--accent); text-decoration: underline; }
.prov > h3 em { font-style: normal; font-size: 11.5px; font-weight: 400; color: #a3abb6; }

/* 市 → 区县：三列铺开，保证一屏能看到完整一层 */
.prov-cities {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 10px 20px;
  align-items: start;
}

.pcity h4 {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin-bottom: 4px;
  font-size: 12.5px;
  font-weight: 600;
  line-height: 1.5;
}

.pcity h4 a { color: var(--text); text-decoration: none; }
.pcity h4 a:hover { color: var(--accent); text-decoration: underline; }
.pcity h4 em { font-style: normal; font-size: 11px; font-weight: 400; color: #a3abb6; }

.pcity ul { display: flex; flex-wrap: wrap; gap: 3px 9px; }

.pcity a {
  font-size: 12.5px;
  color: var(--text-2);
  text-decoration: none;
}

.pcity a:hover { color: var(--accent); text-decoration: underline; }

/* 省份页：城市 + 区县索引 */
.city-index {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px 26px;
  align-items: start;
}

.city-group {
  padding-bottom: 10px;
  border-bottom: 1px dashed var(--line-soft);
}

.city-group h3 {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 6px;
  font-size: 13.5px;
  font-weight: 600;
}

.city-group h3 a { color: var(--text); text-decoration: none; }
.city-group h3 a:hover { color: var(--accent); text-decoration: underline; }
.city-group h3 em { font-style: normal; font-size: 11.5px; font-weight: 400; color: #a3abb6; }

.city-group ul { display: flex; flex-wrap: wrap; gap: 4px 10px; }

.city-group a {
  font-size: 12.5px;
  color: var(--text-2);
  text-decoration: none;
}

.city-group a:hover { color: var(--accent); text-decoration: underline; }

.link-list { display: flex; flex-wrap: wrap; gap: 6px; }

.link-list a {
  padding: 4px 11px;
  border: 1px solid var(--line);
  border-radius: 14px;
  font-size: 13px;
  color: var(--text-2);
  text-decoration: none;
  transition: border-color .15s, color .15s;
}

.link-list a:hover { border-color: #b9cdfa; color: var(--accent); }

/* ---------- 全部路线分页列表（/route/list/） ---------- */
.rl-list { display: flex; flex-wrap: wrap; gap: 6px; }

.rl-list a {
  padding: 4px 11px;
  border: 1px solid var(--line);
  border-radius: 14px;
  font-size: 13px;
  color: var(--text-2);
  text-decoration: none;
  transition: border-color .15s, color .15s;
}

.rl-list a:hover { border-color: #b9cdfa; color: var(--accent); }

.rl-seg {
  flex-basis: 100%;
  margin: 14px 0 2px;
  font-size: 14px;
  color: var(--text);
}

.rl-seg:first-child { margin-top: 0; }

.pager {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px solid var(--line-soft);
}

.pager .pg {
  min-width: 34px;
  padding: 5px 11px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 13px;
  text-align: center;
  color: var(--text-2);
  text-decoration: none;
}

.pager .pg:hover { border-color: var(--accent); color: var(--accent); }

.pager .pg.cur {
  border-color: var(--accent);
  background: var(--accent);
  color: #fff;
}

.pager .pg.dis { opacity: .45; pointer-events: none; }

.pager .pg-info { margin-left: auto; font-size: 12.5px; color: var(--muted); }

/* ---------- 两地路线快查（级联选择器） ---------- */
.pk {
  display: flex;
  align-items: stretch;
  gap: 10px;
  margin-top: 4px;
}

.pk-side {
  flex: 1 1 0;
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel, #fafbfc);
}

.pk-side-h {
  margin-bottom: 8px;
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}

.pk-slots { display: flex; flex-direction: column; gap: 8px; }

.pk-sel {
  width: 100%;
  padding: 7px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--bg, #fff);
  font-size: 13.5px;
  color: var(--text);
  cursor: pointer;
}

.pk-sel:focus { outline: none; border-color: var(--accent); }

.pk-sel:disabled { opacity: .5; cursor: not-allowed; }

.pk-mid { display: flex; align-items: center; justify-content: center; }

.pk-swap {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border: 1px solid var(--line);
  border-radius: 50%;
  font-size: 15px;
  color: var(--text-2);
  cursor: pointer;
  user-select: none;
  transition: border-color .15s, color .15s;
}

.pk-swap:hover { border-color: var(--accent); color: var(--accent); }

.pk-foot {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 12px;
}

.pk-go {
  padding: 8px 22px;
  border: none;
  border-radius: 8px;
  background: var(--accent);
  color: #fff;
  font-size: 14px;
  cursor: pointer;
}

.pk-go:hover { filter: brightness(1.06); }

.pk-go:disabled { opacity: .5; cursor: not-allowed; }

.pk-hint { font-size: 13px; color: var(--muted); }

.pk-hint.ok { color: var(--accent); font-weight: 500; }

.pk-hint.warn { color: #d9534f; }

@media (max-width: 560px) {
  .pk { flex-direction: column; }
  .pk-mid { padding: 2px 0; }
}

/* ---------- 折叠区（更多入口） ---------- */
.fold {
  margin-top: 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  overflow: hidden;
}

.fold + .fold { margin-top: 8px; }

.fold > summary {
  padding: 10px 14px;
  background: var(--panel, #fafbfc);
  font-size: 14px;
  font-weight: 500;
  color: var(--text);
  cursor: pointer;
  list-style: none;
}

.fold > summary::-webkit-details-marker { display: none; }

.fold > summary::before {
  content: '▸';
  display: inline-block;
  margin-right: 8px;
  color: var(--muted);
  transition: transform .15s;
}

.fold[open] > summary::before { transform: rotate(90deg); }

.fold > summary:hover { color: var(--accent); }

.fold > .link-list,
.fold > .index-intro,
.fold > .near-row { margin: 0; padding: 12px 14px 0; }

.fold > .near-row:last-child,
.fold > .link-list:last-child { padding-bottom: 12px; }

/* ---------- 世界天气：索引页（大洲 → 国家 → 城市） ---------- */
.wcont-list { display: grid; gap: 22px; }

.wcont {
  scroll-margin-top: 62px; /* 锚点跳转时避开吸顶栏（同 #cityIndex 的留量） */
  padding-top: 14px;
  border-top: 1px solid var(--line-soft);
}
.wcont:first-child { padding-top: 0; border-top: none; }

.wcont h3 {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 12px;
  font-size: 15.5px;
  font-weight: 600;
}
.wcont h3 em {
  font-style: normal;
  font-size: 11.5px;
  font-weight: 400;
  color: #a3abb6;
}

/* 国家块：窄屏 1 列 → 平板 2 列 → 宽屏 3 列 */
.wcountry-list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px 18px;
  align-items: start;
}

.wcountry {
  padding: 10px 12px 9px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: #fbfcfe;
}
.wcountry h4 {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin-bottom: 6px;
  font-size: 13.5px;
  font-weight: 600;
}
.wcountry h4 a { color: var(--text); text-decoration: none; }
.wcountry h4 a:hover { color: var(--accent); text-decoration: underline; }
.wcountry h4 em {
  font-style: normal;
  font-size: 11px;
  font-weight: 400;
  color: #a3abb6;
}
.wcountry ul {
  display: flex;
  flex-wrap: wrap;
  gap: 3px 10px;
}
.wcountry a {
  font-size: 12.5px;
  color: var(--text-2);
  text-decoration: none;
}
.wcountry a:hover { color: var(--accent); text-decoration: underline; }

/* ---------- 页面概况 / 正文 / 问答（SEO 内容区） ---------- */
.page-lead {
  margin: 0 0 11px;
  padding: 0 3px;
  font-size: 13px;
  line-height: 1.78;
  color: var(--text-2);
}

.site-intro h1,
.province-h1 {
  margin-bottom: 10px;
  font-size: 19px;
  font-weight: 600;
  letter-spacing: -.2px;
  color: var(--text);
}

.site-intro p {
  font-size: 13.5px;
  line-height: 1.9;
  color: var(--text-2);
}

.site-intro strong { font-weight: 600; color: var(--text); }

.site-intro-entry { margin-top: 10px; }

.site-intro-entry a {
  color: var(--accent);
  font-weight: 500;
  text-decoration: none;
}

.site-intro-entry a:hover { text-decoration: underline; }

/* 首页「已按访问位置显示」提示条（前端按访客 IP 定位成功后填充） */
.geo-hint {
  margin: 10px 0 0;
  padding: 7px 12px;
  border: 1px solid #d7e4fd;
  border-radius: 9px;
  background: #f2f7ff;
  font-size: 12.5px;
  color: #4a5568;
}

.geo-hint b { font-weight: 600; color: #1c56d6; }

.article-body h3 {
  margin: 14px 0 6px;
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
}

.article-body h3:first-child { margin-top: 2px; }

.article-body p {
  margin-bottom: 7px;
  font-size: 13.5px;
  line-height: 1.82;
  color: var(--text-2);
  text-align: justify;
}

.article-body p:last-child { margin-bottom: 0; }

.faq-list li {
  padding: 10px 0;
  border-bottom: 1px solid var(--line-soft);
}

.faq-list li:last-child { padding-bottom: 0; border-bottom: none; }

.faq-q {
  margin-bottom: 5px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--text);
}

.faq-a {
  font-size: 13px;
  line-height: 1.8;
  color: var(--text-2);
  text-align: justify;
}

/* ---------- 提示 / 页脚 ---------- */
.tip-text { font-size: 13.5px; color: var(--text-2); line-height: 1.75; }

.foot {
  margin-top: 16px;
  padding-top: 13px;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: 12.5px;
  text-align: center;
}

.foot-sub { margin-top: 4px; color: #a3abb6; font-size: 12px; }

.foot-seo {
  /* 宽度与主体 .wrap 一致：页脚在 <main class="wrap"> 内部，本身已是主体宽度，
     这里不能再加 max-width，否则这一段会比上面的正文窄一圈 */
  margin: 3px 0 8px;
  line-height: 1.8;
}

/* 联系方式整行：后台没填电话/邮箱时整段不渲染（见 chrome.js 的 contactLine） */
.foot-contact { margin: 3px 0 8px; }
.foot-contact a { color: var(--accent); text-decoration: none; }
.foot-contact a:hover { text-decoration: underline; }

/* ---------- 遮罩 / 提示 ---------- */
.mask {
  position: fixed;
  inset: 0;
  z-index: 100;
  background: rgba(238, 241, 245, .72);
  backdrop-filter: blur(2px);
  display: flex;
  align-items: center;
  justify-content: center;
}

.mask-box {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  color: var(--text-2);
  font-size: 13.5px;
}

.spin {
  width: 26px;
  height: 26px;
  border: 2.5px solid #cdd8e8;
  border-top-color: var(--accent);
  border-radius: 50%;
  animation: spin .8s linear infinite;
}

@keyframes spin { to { transform: rotate(360deg); } }

.toast {
  position: fixed;
  left: 50%;
  bottom: 40px;
  transform: translateX(-50%);
  z-index: 200;
  background: rgba(27, 31, 36, .9);
  color: #fff;
  font-size: 13px;
  padding: 9px 18px;
  border-radius: 20px;
  animation: rise .2s ease-out;
}

@keyframes rise { from { opacity: 0; transform: translate(-50%, 8px); } }

.skeleton { color: transparent !important; background: #e9edf2; border-radius: 4px; }

/* ============ 访问记录页 /stats ============ */

.stat-brand-note { font-size: 13px; color: var(--muted); }
.stat-back { margin-left: auto; font-size: 12.5px; color: var(--accent); text-decoration: none; }
.stat-back:hover { text-decoration: underline; }

.stat-h1 { font-size: 18px; font-weight: 600; letter-spacing: .3px; margin-bottom: 7px; }

/* 日期切换 */
.stat-nav { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; margin: 12px 0 9px; }

.nav-btn {
  display: inline-flex;
  align-items: center;
  padding: 4px 11px;
  border: 1px solid var(--line);
  border-radius: 13px;
  font-size: 12.5px;
  color: var(--text-2);
  text-decoration: none;
  transition: border-color .15s, color .15s, background .15s;
}

.nav-btn:hover { border-color: #b9cdfa; color: var(--accent); background: #f6f9ff; }
.nav-btn.off { color: #c6ccd5; border-color: var(--line-soft); pointer-events: none; }
.nav-btn.on { border-color: #b9cdfa; color: var(--accent); background: #f2f7ff; font-weight: 600; }

.nav-date { display: inline-flex; align-items: center; gap: 6px; }

.nav-date input {
  height: 27px;
  padding: 0 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font: inherit;
  font-size: 12.5px;
  color: var(--text-2);
  background: #fbfcfe;
}

.nav-date button {
  height: 27px;
  padding: 0 11px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: #fff;
  font-size: 12.5px;
  color: var(--text-2);
}

.nav-date button:hover { border-color: #b9cdfa; color: var(--accent); background: #f6f9ff; }

/* 日期胶囊：复用省份跳转那套 .prov-jump，只去掉分隔线 */
.stat-days { margin-bottom: 0; padding-bottom: 0; border-bottom: none; gap: 5px; }
.stat-days a.on { border-color: #b9cdfa; color: var(--accent); background: #f2f7ff; font-weight: 600; }

.stat-range { font-style: normal; font-size: 11.5px; font-weight: 400; color: #a3abb6; }

/* KPI 方块 */
.stat-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 9px; }

.stat-kpi {
  padding: 9px 12px 10px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: #fbfcfe;
}

.stat-kpi em { display: block; font-style: normal; font-size: 11.5px; color: var(--muted); }
.stat-kpi strong {
  display: block;
  font-size: 20px;
  font-weight: 600;
  line-height: 1.4;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.stat-kpi span { display: block; font-size: 11px; color: #a3abb6; }
.stat-kpi.main { background: #f2f7ff; border-color: #d7e4fd; }
.stat-kpi.main strong { color: #1c56d6; }
.stat-kpi.warn { background: #fff8f5; border-color: #f6ddd2; }
.stat-kpi.warn strong { color: #d2603a; }

/* 近 30 天趋势：爬虫在下、人工在上 */
.stat-trend {
  display: flex;
  align-items: flex-end;
  gap: 3px;
  height: 132px;
  padding-top: 6px;
  border-bottom: 1px solid var(--line);
}

.tcol {
  flex: 1 1 0;
  min-width: 0;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: center;
  text-decoration: none;
  border-radius: 4px 4px 0 0;
  transition: background .15s;
}

.tcol:hover { background: #f4f7fb; }
.tcol.on { background: #eef4ff; }

.tbars {
  flex: 1 1 auto;
  min-height: 0;
  width: 62%;
  display: flex;
  flex-direction: column-reverse;
  justify-content: flex-start;
}

.tseg { display: block; width: 100%; }
.tseg.bot { background: #2b6cf6; }
.tseg.human { background: #a9c4f7; }
.tseg.none { height: 2px; background: var(--line); }

.tcol em { font-style: normal; font-size: 10px; line-height: 1.7; color: #a3abb6; }
.tcol.on em { color: var(--accent); font-weight: 600; }

.stat-legend {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 8px;
  font-size: 11.5px;
  color: var(--muted);
}

.lg { display: inline-block; width: 9px; height: 9px; border-radius: 2px; }
.lg-bot { background: #2b6cf6; }
.lg-human { background: #a9c4f7; }
.stat-trend-cap { margin-left: auto; color: #a3abb6; }

/* URL 类型分布 */
.stat-kinds { display: flex; flex-direction: column; gap: 7px; }

.stat-kind-row {
  display: grid;
  grid-template-columns: 84px 1fr 96px 92px;
  align-items: center;
  gap: 10px;
  font-size: 12.5px;
}

.sk-name { color: var(--text-2); }
.sk-bar { height: 7px; border-radius: 4px; background: #f0f3f7; overflow: hidden; }
.sk-bar i { display: block; height: 100%; border-radius: 4px; background: #b9cdfa; }
.sk-num { text-align: right; color: var(--text); font-variant-numeric: tabular-nums; }
.sk-hit { text-align: right; color: #a3abb6; font-variant-numeric: tabular-nums; }

/* 数据表 */
.stat-table { width: 100%; border-collapse: collapse; font-size: 12.5px; }

.stat-table th {
  text-align: left;
  font-size: 11.5px;
  font-weight: 600;
  color: var(--muted);
  padding: 0 8px 6px 0;
  border-bottom: 1px solid var(--line);
  white-space: nowrap;
}

.stat-table td {
  padding: 6px 8px 6px 0;
  border-bottom: 1px solid var(--line-soft);
  color: var(--text-2);
  vertical-align: top;
}

.stat-table tr:last-child td { border-bottom: none; }
.stat-table .num { text-align: right; font-variant-numeric: tabular-nums; }
.stat-table .dim { color: var(--muted); }
.stat-table .small { font-size: 11.5px; }
.stat-table .u a { color: var(--accent); text-decoration: none; word-break: break-all; }
.stat-table .u a:hover { text-decoration: underline; }

.dot {
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  margin-right: 6px;
  vertical-align: 1px;
  background: #c3cad4;
}

.k-human { background: #4aa96c; }
.k-ai { background: #7b5cf5; }
.k-search { background: #2b6cf6; }
.k-seo { background: #e0a63c; }
.k-social { background: #38b2a0; }
.k-monitor { background: #9aa6b6; }
.k-other { background: #c3cad4; }

/* 筛选 */
.stat-filter { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; margin-bottom: 10px; }

.stat-filter input[type="text"] {
  flex: 0 1 380px;
  height: 30px;
  padding: 0 13px;
  border: 1px solid var(--line);
  border-radius: 15px;
  font: inherit;
  font-size: 12.5px;
  color: var(--text-2);
  background: #f6f8fa;
}

.stat-filter input[type="text"]:focus { outline: none; border-color: #b9cdfa; background: #fff; }

.stat-filter button {
  height: 30px;
  padding: 0 14px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: #fff;
  font-size: 12.5px;
  color: var(--text-2);
}

.stat-filter button:hover { border-color: #b9cdfa; color: var(--accent); background: #f6f9ff; }

.stat-empty { font-size: 12.5px; color: var(--muted); padding: 8px 0; }
.stat-more { margin-top: 8px; font-size: 11.5px; color: #a3abb6; }

/* 蜘蛛访问明细：排行表里的来访者可点下钻 */
.stat-bot-link {
  display: inline-flex;
  align-items: center;
  color: var(--text);
  text-decoration: none;
  transition: color .15s;
}

.stat-bot-link:hover { color: var(--accent); }
.stat-bot-link.on { color: var(--accent); font-weight: 600; }
.stat-bot-go { color: var(--accent); text-decoration: none; white-space: nowrap; font-size: 12px; }
.stat-bot-go:hover { text-decoration: underline; }
.stat-table tr.on { background: #f2f7ff; }

/* 明细页头部 */
.stat-bot-kind {
  margin-left: 7px;
  padding: 1px 8px;
  border-radius: 10px;
  background: #f0f3f7;
  font-size: 11.5px;
  font-weight: 400;
  color: var(--muted);
  vertical-align: 2px;
}

.stat-bot-metrics { display: flex; flex-wrap: wrap; gap: 9px; margin: 11px 0 13px; }

.stat-bot-metric {
  min-width: 132px;
  padding: 9px 14px 10px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: #fbfcfe;
}

.stat-bot-metric em { display: block; font-style: normal; font-size: 11.5px; color: var(--muted); }
.stat-bot-metric strong {
  display: block;
  font-size: 20px;
  font-weight: 600;
  line-height: 1.4;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.stat-bot-metric span { display: block; font-size: 11px; color: #a3abb6; }
.stat-bot-back { margin: 0; }

/* ---------- 窄屏兜底 ---------- */
/* ============ 交通路线页 ============ */
.route-hero { padding-bottom: 16px; }

.route-h1 {
  font-size: 20px;
  font-weight: 600;
  letter-spacing: .3px;
  margin-bottom: 8px;
}

/* 概览 KPI：直线 / 路网 / 方位 / 最快方式 */
.route-kpis {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  margin-top: 13px;
  margin-bottom: 16px;
}

.route-kpi {
  background: #f7f9fc;
  border: 1px solid var(--line-soft);
  border-radius: 9px;
  padding: 10px 12px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.route-kpi-v {
  font-size: 16px;
  font-weight: 600;
  color: var(--text);
  line-height: 1.3;
}

.route-kpi-l {
  font-size: 12px;
  color: var(--muted);
}

/* 交通方式对比 */
.mode-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 9px; }

.mode-item {
  border: 1px solid var(--line);
  border-radius: 9px;
  padding: 11px 13px;
  background: #fcfdfe;
}

.mode-fast { border-color: #b9cdfa; background: #f5f8ff; }

.mode-head { display: flex; align-items: center; gap: 7px; margin-bottom: 5px; }

.mode-name { font-size: 14px; font-weight: 600; }

.mode-badge {
  font-size: 11px;
  color: #fff;
  background: var(--accent);
  border-radius: 9px;
  padding: 1px 7px;
}

.mode-meta { display: flex; gap: 16px; font-size: 13px; color: var(--text-2); margin-bottom: 4px; }
.mode-meta b { color: var(--text); font-weight: 600; }

.mode-note { font-size: 12.5px; color: var(--muted); line-height: 1.55; }

/* 自驾 / 长途客车卡片：整卡可点击进入自驾方案详情页 */
.mode-link { padding: 0; }
.mode-item-link {
  display: block;
  padding: 11px 13px;
  color: inherit;
  text-decoration: none;
  border-radius: 9px;
}
.mode-item-link:hover { background: #f7f9fc; }
.mode-link.mode-fast .mode-item-link { background: #f5f8ff; }
.mode-link.mode-fast .mode-item-link:hover { background: #eef4ff; }

/* 物流方案对比表：视觉沿用 wt-table 那一套（浅底表头、细下划线、无竖线），
   目的是让「方案/时效/报价/场景」的对应关系能被表格解析器直接读出来。 */
.mode-tbl-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }

.mode-tbl { width: 100%; border-collapse: collapse; font-size: 13px; }

.mode-tbl th,
.mode-tbl td { padding: 9px 11px; border-bottom: 1px solid var(--line-soft); text-align: left; vertical-align: top; }

.mode-tbl thead th {
  background: #f8fafc;
  border-bottom: 1px solid var(--line);
  font-size: 12px;
  font-weight: 600;
  color: var(--text-2);
  white-space: nowrap;
}

.mode-tbl tbody th { font-weight: 600; white-space: nowrap; }
.mode-tbl tbody tr:last-child th,
.mode-tbl tbody tr:last-child td { border-bottom: none; }
.mode-tbl tbody tr:hover { background: #f9fbfe; }
.mode-tbl tbody tr.mode-fast { background: #f5f8ff; }
.mode-tbl tbody tr.mode-fast:hover { background: #eef4ff; }

.mode-tbl .mode-badge { display: inline-block; margin-left: 6px; vertical-align: middle; }
.mode-tbl .mode-days,
.mode-tbl .mode-price { white-space: nowrap; font-weight: 600; }
.mode-tbl .mode-note { color: var(--text-2); line-height: 1.6; min-width: 220px; }

/* 物流城市设施页：设施名 + 类型标签 */
.mode-tbl .t-name { font-weight: 600; white-space: normal; }
.mode-tbl .poi-tag {
  display: inline-block;
  margin-left: 7px;
  padding: 1px 7px;
  border-radius: 4px;
  background: #eef4ff;
  color: #3a6ac6;
  font-style: normal;
  font-size: 11px;
  font-weight: 500;
  vertical-align: 1px;
  white-space: nowrap;
}

/* 物流园区详情页：信息表（两列键值）+ 园区名链接 + 电话链接 */
.mode-tbl.kv-tbl { max-width: 760px; }
.mode-tbl.kv-tbl th {
  width: 116px;
  white-space: nowrap;
  color: var(--text-2);
  font-weight: 500;
  background: #fafbfd;
}
.mode-tbl.kv-tbl td { color: var(--text-1); }
a.poi-link { color: var(--accent); text-decoration: none; }
a.poi-link:hover { text-decoration: underline; }
a.tel-link { color: var(--accent); text-decoration: none; }
a.tel-link:hover { text-decoration: underline; }

/* 物流园区详情页：同区县其他园区链接列表 */
.idx-links { list-style: none; margin: 0; padding: 0; }
.idx-links li {
  display: flex;
  align-items: baseline;
  gap: 8px;
  padding: 7px 0;
  border-bottom: 1px dashed var(--line);
  font-size: 13.5px;
}
.idx-links li:last-child { border-bottom: 0; }
.idx-links a { color: var(--accent); text-decoration: none; }
.idx-links a:hover { text-decoration: underline; }
.idx-links .poi-mini-count { margin-left: auto; }

/* 物流园大全索引页：城市标签块 */
.city-tag-list { display: flex; flex-wrap: wrap; gap: 8px; }
.city-tag {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 11px;
  border: 1px solid var(--line-soft);
  border-radius: 7px;
  background: #fbfcfe;
  color: var(--text-1);
  font-size: 13px;
  line-height: 1.4;
  text-decoration: none;
}
.city-tag:hover { border-color: #b9d2f5; background: #eef4ff; color: #2156b0; }
.city-tag em {
  font-style: normal;
  font-size: 11px;
  color: #3a6ac6;
  background: #eef4ff;
  border-radius: 4px;
  padding: 0 5px;
}

/* 起终点概况 */
.ep-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }

.ep-item { border: 1px solid var(--line-soft); border-radius: 9px; padding: 11px 13px; }

.ep-h { font-size: 14px; font-weight: 600; margin-bottom: 4px; }
.ep-meta { font-size: 12.5px; color: var(--muted); margin-bottom: 4px; }
.ep-desc { font-size: 13px; color: var(--text-2); line-height: 1.6; }

/* 途经行政区 */
.along-card { padding-bottom: 13px; }

/* 物流页：途经「区县 / 乡镇」默认折叠（点击展开），避免页面过高 */
details.along-fold { margin-top: 10px; }
details.along-fold > summary.along-sum {
  cursor: pointer;
  list-style: none;
  outline: none;
  display: flex;
  align-items: center;
}
details.along-fold > summary.along-sum::-webkit-details-marker { display: none; }
details.along-fold > summary.along-sum .along-sum-hint {
  font-size: 11.5px;
  font-weight: 400;
  color: var(--muted);
  margin-left: 8px;
}
details.along-fold > summary.along-sum::after {
  content: ' ▸';
  margin-left: 6px;
  color: #2b6cf6;
  font-size: 13px;
}
details.along-fold[open] > summary.along-sum::after { content: ' ▾'; }

.along-list { display: flex; flex-direction: column; gap: 9px; }

.along-item {
  border: 1px solid var(--line-soft);
  border-radius: 9px;
  padding: 10px 13px;
  background: #fcfdfe;
}

/* 物流线路：线路信息卡 */
.logi-info-card .logi-info-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 10px 16px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.logi-info-list li {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 9px 12px;
  background: #fbfcfe;
  border: 1px solid var(--line-soft);
  border-radius: 9px;
}

.logi-info-list .li-k { font-size: 12px; color: var(--muted); }
.logi-info-list .li-v { font-size: 15px; font-weight: 600; color: var(--text); }

/* 物流线路：运费参考估算 */
.cal-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; margin: 12px 0; }

.cal-fld { display: flex; flex-direction: column; gap: 5px; font-size: 13px; color: var(--text-2); }

.cal-fld input {
  width: 130px;
  padding: 7px 10px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: var(--card);
  color: var(--text);
  font-size: 14px;
}

.cal-btn {
  padding: 8px 18px;
  border: 0;
  border-radius: 7px;
  background: var(--accent);
  color: #fff;
  font-size: 14px;
  cursor: pointer;
}

.cal-btn:hover { opacity: .9; }

.cal-out {
  margin: 0;
  padding: 11px 14px;
  background: #f5f8ff;
  border-left: 3px solid var(--accent);
  border-radius: 0 7px 7px 0;
  font-size: 14px;
  color: var(--text);
}

/* 物流线路：运输服务说明 */
.logi-svc {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 11px;
  margin-top: 10px;
}

.logi-svc-item {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 11px 13px;
  border: 1px solid var(--line-soft);
  border-radius: 9px;
  background: #fcfdfe;
}

.logi-svc-item b { font-size: 14px; color: var(--text); }
.logi-svc-item span { font-size: 13px; line-height: 1.7; color: var(--text-2); }

/* 物流子栏目：切换条 / 细分栏目入口 / 方案说明 */
.mode-note { font-size: 13px; line-height: 1.75; color: var(--text-2); margin: 6px 0 0; }

.subnav { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 14px; }
.subnav-item {
  padding: 7px 15px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--card);
  color: var(--text-2);
  font-size: 13px;
  text-decoration: none;
}
.subnav-item:hover { border-color: var(--accent); color: var(--accent); }
.subnav-on { background: var(--accent); border-color: var(--accent); color: #fff; font-weight: 600; }
.subnav-on:hover { color: #fff; }

.logi-types { display: grid; grid-template-columns: repeat(auto-fill, minmax(216px, 1fr)); gap: 12px; }
.logi-type-item {
  display: block;
  padding: 13px 15px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fcfdfe;
  text-decoration: none;
}
.logi-type-item:hover { border-color: var(--accent); background: #f5f8ff; }
.logi-type-item b { display: block; font-size: 15px; color: var(--accent); margin-bottom: 5px; }
.logi-type-item span { display: block; font-size: 12.5px; line-height: 1.7; color: var(--muted); }

.along-h { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }

.along-no {
  flex: none;
  width: 19px;
  height: 19px;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  font-size: 11.5px;
  line-height: 19px;
  text-align: center;
}

.along-name { font-size: 14px; font-weight: 600; }

.along-kind {
  font-size: 11.5px;
  color: var(--accent);
  border: 1px solid #cfddfa;
  border-radius: 9px;
  padding: 0 7px;
}

/* 实时天气位：服务端渲染成「—」，前端脚本取到实况后替换成「晴 24℃」 */
.rw-slot { flex: none; display: inline-flex; align-items: center; }

.rw-slot .rw-now {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  color: var(--muted);
  border: 1px solid var(--line-soft);
  border-radius: 9px;
  padding: 0 7px;
  background: #fbfcfe;
  text-decoration: none;
  white-space: nowrap;
}

.rw-slot a.rw-now:hover { border-color: #b9cdfa; color: var(--accent); }

/* 取到实况后染色，让它在一堆灰色标签里可辨认 */
.rw-slot.rw-on .rw-now { color: var(--accent); border-color: #cfddfa; background: #f5f8ff; }
.rw-slot.rw-on a.rw-now:hover { background: #eef4ff; }

.rw-slot .rw-w { font-weight: 600; }
.rw-slot .rw-d { color: var(--text-2); }

.along-loc { font-size: 12.5px; color: var(--muted); margin-bottom: 5px; }

.along-tags { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 5px; }

/* 工具页「热门线路」快捷入口：表单下方的紧凑标签行（基础页的查询结果入口） */
.qp-box { margin-top: 14px; padding-top: 12px; border-top: 1px dashed var(--line-soft, #e6eaf0); }
.qp-tip { font-size: 12.5px; color: var(--muted); margin: 0 0 8px; }
.qp-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.qp-chip {
  display: inline-block;
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--accent);
  background: #f4f7fd;
  border: 1px solid #dde6f5;
  border-radius: 999px;
  padding: 3px 11px;
  text-decoration: none;
  white-space: nowrap;
}
.qp-chip:hover { background: #e9f1ff; border-color: var(--accent); }

/* 工具页「操作步骤」编号列表（与 HowTo 结构化数据同源） */
.howto-steps { list-style: none; counter-reset: howto; margin: 0; padding: 0; }
.howto-steps li {
  counter-increment: howto;
  position: relative;
  padding: 9px 0 9px 34px;
  border-bottom: 1px dashed var(--line-soft, #e6eaf0);
  font-size: 13.5px;
  line-height: 1.7;
}
.howto-steps li:last-child { border-bottom: 0; }
.howto-steps li::before {
  content: counter(howto);
  position: absolute;
  left: 0;
  top: 10px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #eef4ff;
  color: var(--accent);
  font-size: 12px;
  font-weight: 600;
  line-height: 22px;
  text-align: center;
}
.howto-steps li b { display: block; color: var(--text); font-size: 14px; margin-bottom: 2px; }
.howto-steps li span { display: block; color: var(--text-2); }

@media (max-width: 640px) {
  .qp-chip { font-size: 12px; padding: 3px 9px; }
}

.along-tag {
  font-size: 11.5px;
  color: var(--text-2);
  background: #f2f4f8;
  border-radius: 4px;
  padding: 1px 6px;
}

.along-desc { font-size: 13px; color: var(--text-2); line-height: 1.65; }

/* 紧凑版途经板块（物流线路页）：地级行政区 → 区县 / 乡镇
   每个地级行政区一张浅底卡片：头部保留隶属/坐标/下辖/在途位置等详情，
   下方「途经区县」「途经乡镇」列名称。沿用旧版 along-item 的卡片视觉。 */
.along-city-list { display: flex; flex-direction: column; gap: 14px; margin-top: 4px; }

.along-city {
  border: 1px solid var(--line-soft);
  border-radius: 9px;
  padding: 11px 14px 10px;
  background: #fcfdfe;
}

.along-city-h {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  font-weight: 600;
  margin-bottom: 7px;
}

.along-city-h a { color: var(--text); text-decoration: none; }

.along-city-h a:hover { color: var(--accent); text-decoration: underline; }

.along-names {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 10px;
  font-size: 13px;
  line-height: 1.9;
  margin-bottom: 2px;
  padding-left: 27px;
}

.along-names-lv {
  flex: none;
  font-size: 11.5px;
  color: var(--muted);
  background: var(--line-soft, #eff2f6);
  border-radius: 4px;
  padding: 1px 6px;
}

.along-names a { color: var(--text-2); text-decoration: none; }

.along-names a:hover { color: var(--accent); text-decoration: underline; }

/* 相邻城市路线 / 无途经点路线的两地辖区构成 */
.near-row + .near-row { margin-top: 11px; }

.near-h {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-2);
  margin-bottom: 6px;
}

.ep-area + .ep-area { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line-soft); }

.ep-area .ep-h { margin-bottom: 8px; }

/* ============ 自驾车路线方案页 ============ */
/* 路线页内「自驾 / 长途客车」卡片：点击进入实时自驾方案详情页 */
.rd-cta { border-color: #cfe0ff; background: #f6f9ff; }
.rd-cta .card-title { color: var(--accent); }
.rd-cta-p { margin: 9px 0 0; }
.rd-cta-link {
  display: inline-block;
  font-size: 14px;
  font-weight: 600;
  color: #fff;
  background: var(--accent);
  border-radius: 9px;
  padding: 9px 15px;
  text-decoration: none;
  transition: background-color .15s ease;
}
.rd-cta-link:hover { background: #205ad6; }

/* 实时方案卡片（#rdCard 容器）与占位 */
.rd-card .card-title { margin-bottom: 4px; }
.rd-loading { font-size: 13px; color: var(--muted); padding: 6px 0; }

/* 概览 KPI：行驶距离 / 耗时 / 收费站 / 红绿灯 */
.rd-kpis {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  margin-top: 10px;
}
.rd-kpi {
  background: #f7f9fc;
  border: 1px solid var(--line-soft);
  border-radius: 9px;
  padding: 10px 12px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.rd-kpi-v { font-size: 16px; font-weight: 600; color: var(--text); line-height: 1.3; }
.rd-kpi-l { font-size: 12px; color: var(--muted); }

.rd-sub { font-size: 12.5px; color: var(--text-2); margin: 9px 0 0; line-height: 1.6; }

.rd-h3 {
  font-size: 14.5px;
  font-weight: 600;
  color: var(--text);
  margin: 16px 0 8px;
  padding-bottom: 5px;
  border-bottom: 1px solid var(--line-soft);
}

/* 实时路况提示条：按畅通 / 缓行 / 拥堵染色 */
.rd-traffic {
  font-size: 13px;
  line-height: 1.6;
  border-radius: 9px;
  padding: 9px 12px;
  border: 1px solid var(--line-soft);
}
.rd-traffic-ok { background: #eafaf0; color: #1f8a4c; border-color: #c5ecd3; }
.rd-traffic-slow { background: #fff7e6; color: #b8860b; border-color: #f3e2bd; }
.rd-traffic-jam { background: #fdecec; color: #d23b3b; border-color: #f5c9c9; }

/* 列表：拥堵路段 / 途经道路 */
.rd-list { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.rd-list li {
  font-size: 13px;
  color: var(--text-2);
  background: #fcfdfe;
  border: 1px solid var(--line-soft);
  border-radius: 8px;
  padding: 8px 11px;
  line-height: 1.55;
}
.rd-roads li b { color: var(--text); font-weight: 600; }

.rd-muted { color: var(--muted); font-size: 12.5px; }

/* 拥堵 / 缓行徽标 */
.rd-badge {
  display: inline-block;
  font-size: 11px;
  color: #fff;
  border-radius: 9px;
  padding: 1px 7px;
  margin-right: 4px;
}
.rd-badge-jam { background: #d23b3b; }

/* 沿途转向与主要路口（有序步骤） */
.rd-steps { margin: 8px 0 0; padding-left: 20px; display: flex; flex-direction: column; gap: 7px; }
.rd-steps li { font-size: 13px; color: var(--text-2); line-height: 1.6; }
.rd-steps li b { color: var(--text); font-weight: 600; }

/* 数据来源说明与失败兜底 */
.rd-note { font-size: 12px; color: var(--muted); line-height: 1.7; margin: 14px 0 0; }
.rd-fail {
  font-size: 13px;
  color: #b06a00;
  background: #fff7e6;
  border: 1px solid #f3e2bd;
  border-radius: 9px;
  padding: 10px 13px;
  margin: 0;
  line-height: 1.65;
}

/* ── 火车车次详情页（/train/{车次}/）── */

/* 车次基本信息 KPI：车次 / 类型 / 始发 / 终到 */
.tr-kpis {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  margin-top: 10px;
}
.tr-kpi {
  background: #f7f9fc;
  border: 1px solid var(--line-soft);
  border-radius: 9px;
  padding: 10px 12px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.tr-kpi-v { font-size: 16px; font-weight: 600; color: var(--text); line-height: 1.3; }
.tr-kpi-l { font-size: 12px; color: var(--muted); }

/* 时间轴：始发 → 耗时 → 终到 */
.tr-axis {
  display: flex;
  align-items: stretch;
  gap: 6px;
  margin-top: 10px;
}
.tr-axis-item {
  flex: 1;
  background: #eef4ff;
  border: 1px solid #c9dcf7;
  border-radius: 9px;
  padding: 9px 12px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  text-align: center;
}
.tr-axis-item b { font-size: 16px; font-weight: 600; color: var(--accent); font-variant-numeric: tabular-nums; }
.tr-axis-item span { font-size: 12px; color: var(--muted); }
.tr-axis-arrow {
  display: flex;
  align-items: center;
  color: #a3abb6;
  font-size: 15px;
}

.tr-sub { font-size: 12.5px; color: var(--text-2); margin: 9px 0 0; line-height: 1.6; }

.tr-h3 {
  font-size: 14.5px;
  font-weight: 600;
  color: var(--text);
  margin: 16px 0 8px;
  padding-bottom: 5px;
  border-bottom: 1px solid var(--line-soft);
}

/* 经停站时刻表 */
.tr-stops-wrap { overflow-x: auto; margin-top: 4px; }
.tr-stops-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  min-width: 520px;
}
.tr-stops-table th, .tr-stops-table td {
  padding: 7px 10px;
  text-align: left;
  border-bottom: 1px solid var(--line-soft);
  white-space: nowrap;
}
.tr-stops-table th {
  background: #f7f9fc;
  color: var(--muted);
  font-weight: 600;
  font-size: 12px;
}
.tr-stops-table td { color: var(--text-2); font-variant-numeric: tabular-nums; }
.tr-stops-table tbody tr:hover { background: #f9fbfe; }
.tr-st-name { color: var(--text); font-weight: 600; }
.tr-st-start { color: var(--accent); }
.tr-st-end { color: #d23b3b; }

.tr-muted { color: var(--muted); font-size: 12.5px; }
.tr-note { font-size: 12px; color: var(--muted); line-height: 1.7; margin: 14px 0 0; }
.tr-fail {
  font-size: 13px;
  color: #b06a00;
  background: #fff7e6;
  border: 1px solid #f3e2bd;
  border-radius: 9px;
  padding: 10px 13px;
  margin: 0;
  line-height: 1.65;
}

/* A→B 站站查询表单 */
.tr-query-form {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 10px;
  margin-top: 10px;
}
.tr-query-form label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 12.5px;
  color: var(--muted);
}
.tr-query-form label.tr-check {
  flex-direction: row;
  align-items: center;
  gap: 5px;
  color: var(--text-2);
  font-size: 13px;
}
.tr-query-form input[type="text"] {
  width: 180px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 14px;
  color: var(--text);
  background: #fff;
}
.tr-query-form input[type="text"]:focus { outline: 2px solid #c9dcf7; border-color: var(--accent); }
.tr-query-form button {
  padding: 9px 22px;
  background: var(--accent);
  color: #fff;
  border: 0;
  border-radius: 8px;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
}
.tr-query-form button:hover { background: #2f6fd0; }
.tr-query-err { font-size: 12.5px; color: #b06a00; margin: 9px 0 0; min-height: 18px; }
/* 查询结果顶部的「城市对详情页」入口：整行浅底，与下方的结果列表区分开 */
.tr-query-more {
  margin: 10px 0 0;
  padding: 8px 12px;
  background: #f4f7fc;
  border: 1px solid #e2ebf7;
  border-radius: 8px;
  font-size: 12.5px;
  color: #4b5563;
  line-height: 1.7;
}
.tr-query-more a { color: var(--accent); font-weight: 600; text-decoration: none; }
.tr-query-more a:hover { text-decoration: underline; }

/* 查询结果车次列表 */
.tr-trains { display: flex; flex-direction: column; gap: 7px; margin-top: 8px; }
.tr-train-item {
  display: grid;
  grid-template-columns: 76px minmax(140px, 1.2fr) minmax(120px, 1fr) 92px 100px;
  gap: 12px;
  align-items: center;
  padding: 9px 13px;
  background: #fcfdfe;
  border: 1px solid var(--line-soft);
  border-radius: 9px;
  text-decoration: none;
}
.tr-train-item:hover { border-color: #c9dcf7; background: #f7faff; }
.tr-train-no {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 62px;
  height: 30px;
  padding: 0 10px;
  font-size: 15px;
  font-weight: 600;
  color: var(--accent);
  background: #eef4ff;
  border: 1px solid #c9dcf7;
  border-radius: 8px;
  line-height: 1;
  white-space: nowrap;
}
.tr-train-route { font-size: 13px; color: var(--text); }
.tr-train-time { font-size: 13px; color: var(--text); font-variant-numeric: tabular-nums; font-weight: 600; }
.tr-train-meta { font-size: 12.5px; color: var(--muted); font-variant-numeric: tabular-nums; }

/* 换乘方案（两地之间无直达时，由本地经停时刻表算出） */
.tr-transfers { margin-top: 20px; }
.tr-tf-title { font-size: 15px; font-weight: 600; color: var(--text); margin: 0 0 6px; }
.tr-tf-hint { font-size: 12.5px; color: var(--muted); line-height: 1.75; margin: 0 0 12px; }
.tr-transfer {
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: #fcfdfe;
  padding: 12px 14px 13px;
  margin-bottom: 10px;
}
.tr-tf-head {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  padding-bottom: 9px;
  margin-bottom: 8px;
  border-bottom: 1px solid var(--line-soft);
}
.tr-tf-badge {
  display: inline-flex;
  align-items: center;
  height: 22px;
  padding: 0 9px;
  font-size: 12px;
  font-weight: 600;
  color: #a05a00;
  background: #fef6e7;
  border: 1px solid #f3ddb5;
  border-radius: 6px;
  line-height: 1;
}
.tr-tf-via { font-size: 13.5px; font-weight: 600; color: var(--text); }
.tr-tf-total { font-size: 13px; font-weight: 600; color: var(--accent); font-variant-numeric: tabular-nums; }
.tr-tf-night { font-size: 11.5px; color: var(--muted); }
.tr-tf-leg {
  display: grid;
  grid-template-columns: 76px 134px minmax(140px, 1fr) 104px;
  gap: 12px;
  align-items: center;
  padding: 7px 0;
}
.tr-tf-no {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 62px;
  height: 28px;
  padding: 0 9px;
  font-size: 14px;
  font-weight: 600;
  color: var(--accent);
  background: #eef4ff;
  border: 1px solid #c9dcf7;
  border-radius: 7px;
  text-decoration: none;
  line-height: 1;
  white-space: nowrap;
}
.tr-tf-no:hover { background: #e2ecff; }
.tr-tf-time { font-size: 13.5px; font-weight: 600; color: var(--text); font-variant-numeric: tabular-nums; }
.tr-tf-route { font-size: 13px; color: var(--text-2); }
.tr-tf-cost { font-size: 12.5px; color: var(--muted); font-variant-numeric: tabular-nums; }
/* 左侧留出与车次号列同宽（76 + 12），让经停站与上方行程对齐 */
.tr-tf-mid {
  font-size: 12.5px;
  color: var(--muted);
  line-height: 1.75;
  margin: 0 0 4px 88px;
  word-break: break-word;
}
.tr-tf-wait {
  width: fit-content;
  font-size: 12.5px;
  color: #a05a00;
  background: #fef9ef;
  border-left: 2px solid #f0c674;
  border-radius: 0 6px 6px 0;
  padding: 5px 10px;
  margin: 4px 0;
}

/* 站序列：窄且有底色，方便顺着时间轴往下读 */
.tr-stops-table .tr-st-seq {
  width: 54px;
  text-align: center;
  color: var(--muted);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}
/* 站名加了 data-station 后给个指向性光标，提示可点（站点页接入后会更明确） */
.tr-stops-table .tr-st-name[data-station] { cursor: pointer; }

/* ============ 城市对火车页（/train/{A}-to-{B}/） ============ */
/* 卡片标题右侧的计数小字 */
.tr-count { font-style: normal; font-size: 11.5px; font-weight: 400; color: var(--muted); }

/* 直达车次的沿途经停站：每个车次一段，车次号在最左，站名列表换行折在下方 */
.tr-midrow { padding: 11px 0; border-top: 1px solid var(--line-soft); }
.tr-midrow:first-of-type { border-top: 0; padding-top: 4px; }
.tr-mid-head {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 4px 12px;
}
.tr-mid-times {
  font-size: 13px;
  color: var(--text);
  font-variant-numeric: tabular-nums;
  font-weight: 600;
}
.tr-mid-stops {
  font-size: 12.5px;
  color: var(--text-2);
  line-height: 1.85;
  margin: 7px 0 0;
  word-break: break-word;
}

/* 两地可用车站：左右两块，窄屏自动堆叠 */
.tr-places { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 22px; margin-top: 4px; }
.tr-place .tr-h3 { margin-top: 12px; }
.tr-place-item {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  font-size: 12.5px;
  color: var(--text-2);
  padding: 2px 0;
  border-bottom: 1px dashed var(--line-soft);
}
.tr-place-item em {
  font-style: normal;
  font-size: 11.5px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

/* 紧凑型链接列表（全部车次列表，密度比默认 link-list 高） */
.link-list.tr-tight {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(88px, 1fr));
  gap: 4px 10px;
}
.link-list.tr-tight a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 12.5px;
  padding: 2px 0;
  white-space: nowrap;
}

@media (max-width: 720px) {
  .tr-kpis { grid-template-columns: repeat(2, 1fr); }
  .tr-axis { flex-direction: column; }
  .tr-axis-arrow { transform: rotate(90deg); justify-content: center; }
  .tr-train-item { grid-template-columns: 1fr 1fr; gap: 4px 10px; }
  .tr-train-route { grid-column: 1 / -1; }
  .tr-query-form input[type="text"] { width: 100%; }
  .tr-query-form { flex-direction: column; align-items: stretch; }
  .link-list.tr-tight { grid-template-columns: repeat(auto-fill, minmax(74px, 1fr)); }
  .tr-places { grid-template-columns: 1fr; }
}

@media (max-width: 900px) {
  .duo { grid-template-columns: 1fr; }
  .index-grid { grid-template-columns: repeat(2, 1fr); }
  .prov-cities { grid-template-columns: repeat(2, 1fr); }
  .city-index { grid-template-columns: 1fr; }
  .wcountry-list { grid-template-columns: repeat(2, 1fr); }
  .route-kpis { grid-template-columns: repeat(2, 1fr); }
  .mode-list { grid-template-columns: 1fr; }
  .ep-list { grid-template-columns: 1fr; }
  .hero { flex-direction: column; align-items: flex-start; gap: 16px; }
  .hero-right { padding-left: 0; }
  .hero-meta { border-left: none; padding-left: 0; }
  .daily-list li { grid-template-columns: 76px 34px 1fr 84px; gap: 10px; }
  .topbar-inner { gap: 12px; }
  .nav-link, .nav-more-btn { padding: 6px 9px; font-size: 13.5px; }
  .search { width: 220px; }
  .stat-kpis { grid-template-columns: repeat(2, 1fr); }
  .stat-kind-row { grid-template-columns: 76px 1fr 84px 80px; gap: 8px; font-size: 12px; }
}

@media (max-width: 620px) {
  /* 世界天气索引：窄屏国家块退回单列，保证城市名不换行挤压 */
  .wcountry-list { grid-template-columns: 1fr; }

  /* 窄屏顶栏折成两行：上排品牌 + 搜索框（靠右），下排功能入口（可横向滚动） */
  .topbar-inner {
    flex-wrap: wrap;
    height: auto;
    padding: 9px 0 8px;
    gap: 8px 10px;
  }
  .brand { order: 1; }
  .search {
    order: 2;
    margin-left: auto;
    width: auto;
    flex: 1 1 140px;
    min-width: 140px;
  }
  .search input { padding-left: 32px; font-size: 13px; }
  .suggest { min-width: 0; left: 0; right: 0; }
  /* 窄屏：整行交给导航，横向滑动（脚本不启用「更多」收纳） */
  .navwrap {
    order: 3;
    flex: 1 1 100%;
  }
  .nav-link { padding: 5px 9px; font-size: 13px; }
  .nav-more-btn { padding: 5px 9px; font-size: 13px; }
  .fav-strip { flex-wrap: wrap; }

  .prov-cities { grid-template-columns: 1fr; }
  /* 窄屏下半宽放不下区县列表（重庆 38 个区县会拉出十几行），直辖市回到整行 */
  .prov.is-municipal { grid-column: 1 / -1; }
  /* 访问记录：30 根柱子挤在手机宽度里，日期标签放不下，只留标题与区间说明 */
  .tcol em { display: none; }
  .stat-trend { height: 108px; gap: 2px; }
  .stat-trend-cap { margin-left: 0; }
  .stat-kind-row { grid-template-columns: 70px 1fr 74px; }
  .sk-hit { display: none; }
  /* 表格横向滚动，别把整页撑宽 */
  .stat-table { display: block; overflow-x: auto; white-space: nowrap; }
  .stat-table .u a { white-space: normal; }
}

/* ---------- 农历 / 节气 / 节日 ---------- */
.jieqi-card .jieqi-body { padding-top: 4px; }

.jieqi-date {
  font-size: 13px;
  color: var(--muted);
  margin-bottom: 8px;
  font-variant-numeric: tabular-nums;
}

.jieqi-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 9px; }

.jieqi-tags > span {
  display: inline-flex;
  align-items: center;
  padding: 3px 11px;
  border-radius: 13px;
  font-size: 12.5px;
  line-height: 1.6;
  border: 1px solid var(--line);
  background: #f7f9fc;
  color: var(--text-2);
}

.jt-lunar { border-color: #e3e9f3 !important; }
.jt-term { border-color: #d7e4fd !important; color: #1c56d6 !important; background: #f2f7ff !important; font-weight: 500; }
.jt-fest { border-color: #f6ddd2 !important; color: #d2603a !important; background: #fff8f5 !important; font-weight: 500; }

.jieqi-text {
  font-size: 13.5px;
  line-height: 1.85;
  color: var(--text-2);
  margin: 0;
  text-align: justify;
}

/* 窄屏：标签字号略缩 */
@media (max-width: 620px) {
  .jieqi-tags > span { font-size: 12px; padding: 3px 9px; }
}

/* 往年今日天气 */
.history-card .his-lead {
  color: var(--muted, #6b7280);
  font-size: 13.5px;
  line-height: 1.75;
  margin: 8px 0 14px;
}
.his-list {
  list-style: none;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  padding: 0;
  margin: 0;
}
.his-list li {
  background: var(--bg-soft, #f5f7fa);
  border: 1px solid var(--line, #eef1f5);
  border-radius: 10px;
  padding: 12px 8px;
  text-align: center;
}
.his-year { display: block; font-weight: 600; font-size: 14px; color: var(--text, #1f2937); }
.his-w { display: block; font-size: 13px; color: var(--accent, #2f6df6); margin: 6px 0 4px; }
.his-t { display: block; font-size: 12.5px; color: var(--muted, #6b7280); }

@media (max-width: 620px) {
  .his-list { grid-template-columns: 1fr; }
}

/* ============ 景点页 ============ */
.attr-group { margin-top: 22px; }
.attr-group-title {
  font-size: 17px; font-weight: 700; color: var(--text);
  display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
  padding-bottom: 8px; border-bottom: 1px solid var(--line);
}
.attr-group-desc { font-size: 13px; font-weight: 400; color: var(--muted); }
.attr-list {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; margin-top: 14px;
}
.attr-card {
  background: #f8fafc; border: 1px solid var(--line); border-radius: var(--radius);
  padding: 15px 16px;
}
.attr-name {
  font-size: 15.5px; font-weight: 700; color: var(--text);
  display: flex; align-items: center; gap: 8px; scroll-margin-top: 62px;
}
.attr-stars { font-size: 13px; color: #f5a623; letter-spacing: 1px; font-weight: 400; }
.attr-en { font-size: 12.5px; color: var(--muted); margin: 2px 0 8px; font-style: italic; }
.attr-summary { font-size: 13.5px; color: var(--text-2); line-height: 1.75; margin: 0 0 10px; }
.attr-meta { font-size: 13px; color: var(--text-2); line-height: 1.7; }
.attr-meta p { margin: 4px 0; }
.attr-meta b { color: var(--text); }
.attr-source {
  margin-top: 22px; font-size: 12px; color: var(--muted);
  border-top: 1px dashed var(--line); padding-top: 12px;
}

/* 天气页景点推荐区块 */
.attr-block { margin-top: 22px; }
.attr-block-intro { font-size: 13.5px; color: var(--muted); margin: 8px 0 12px; }
.attr-block-list {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; padding: 0; margin: 0;
}
.attr-block-list li {
  background: #f8fafc; border: 1px solid var(--line); border-radius: 10px;
  padding: 10px 12px; display: flex; align-items: center; justify-content: space-between; gap: 8px;
}
.attr-block-list a { color: var(--text); text-decoration: none; font-weight: 600; font-size: 14px; }
.attr-block-list a:hover { color: var(--accent); }
.attr-mini-stars { font-size: 12px; color: #f5a623; flex: 0 0 auto; }
.attr-block-more {
  display: inline-block; margin-top: 14px; color: var(--accent);
  text-decoration: none; font-weight: 600; font-size: 14px;
}
.attr-block-more:hover { text-decoration: underline; }

/* 景点索引页 */
.attr-index {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; padding: 0; margin: 14px 0 0;
}
.attr-index li {
  background: #f8fafc; border: 1px solid var(--line); border-radius: 10px;
  padding: 11px 14px; display: flex; align-items: center; justify-content: space-between; gap: 8px;
}
.attr-index a { color: var(--text); text-decoration: none; font-weight: 600; }
.attr-index a:hover { color: var(--accent); }
.attr-index em { font-style: normal; font-size: 12.5px; color: var(--muted); flex: 0 0 auto; }

/* 景点名可点（跳转到景点天气详情页） */
.attr-name a { color: inherit; text-decoration: none; }
.attr-name a:hover { color: var(--accent); }

/* ============ 景点天气详情页 /jingdian/{省}/{景点}.html ============ */
.attr-detail-h1 {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  font-size: 24px; line-height: 1.3; margin: 0 0 10px; color: var(--text);
}
.attr-detail-stars { font-size: 14px; color: #f5a623; font-weight: 400; letter-spacing: 1px; }
.attr-detail-loc { color: var(--muted); font-size: 13.5px; line-height: 1.7; margin: 0 0 4px; }
.attr-detail-en { color: var(--text-2); font-size: 13px; margin: 8px 0 12px; }
.attr-hero-figure { margin: 14px 0 16px; }
.attr-hero-img {
  width: 100%; max-height: 420px; object-fit: cover; display: block;
  border-radius: var(--radius); border: 1px solid var(--line); background: var(--line-soft);
}
.attr-img-credit { margin-top: 6px; font-size: 12px; color: var(--muted); }
.attr-detail-summary { font-size: 14.5px; line-height: 1.85; color: var(--text-2); margin: 14px 0 16px; }
.attr-detail-meta { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.attr-detail-item { background: var(--line-soft); border-radius: 10px; padding: 12px 14px; }
.attr-detail-item h3 { font-size: 13px; color: var(--accent); margin: 0 0 6px; font-weight: 600; }
.attr-detail-item p { font-size: 13.5px; line-height: 1.8; color: var(--text-2); margin: 0; }
.attr-relate .link-list { margin-top: 4px; }

/* 窄屏适配 */
@media (max-width: 620px) {
  .attr-list { grid-template-columns: 1fr; }
  .attr-block-list { grid-template-columns: repeat(2, 1fr); }
  .attr-index { grid-template-columns: repeat(2, 1fr); }
  .attr-detail-meta { grid-template-columns: 1fr; }
  .attr-detail-h1 { font-size: 20px; }
}

/* ============ 城市景点页 /jingdian/city/{token}.html（高德 POI） ============ */
.poi-group { margin-top: 26px; }
.poi-group-title {
  display: flex; align-items: baseline; gap: 8px;
  font-size: 16px; font-weight: 600; color: var(--text); margin: 0 0 12px;
}
.poi-group-count { font-size: 12px; font-weight: 400; color: var(--muted); }
.poi-list {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px;
}
.poi-item {
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 12px 14px; display: flex; flex-direction: column; gap: 5px;
}
.poi-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.poi-name { font-size: 14.5px; font-weight: 600; color: var(--text); margin: 0; }
.poi-tag {
  font-size: 11.5px; color: var(--text-2); background: var(--line-soft);
  border-radius: 4px; padding: 1px 6px; white-space: nowrap;
}
.poi-rating { font-size: 12.5px; font-weight: 600; color: #e8890c; margin-left: auto; }
.poi-where { font-size: 12.5px; color: var(--muted); margin: 0; line-height: 1.6; }
.poi-meta { display: flex; flex-wrap: wrap; gap: 12px; font-size: 12px; color: var(--muted); margin: 0; }
.poi-meta span { white-space: nowrap; }

/* 天气页底部区块 */
.poi-block-list { list-style: none; margin: 0; padding: 0; }
.poi-block-item {
  display: flex; align-items: center; gap: 8px;
  padding: 7px 0; border-bottom: 1px dashed var(--line); font-size: 14px;
}
.poi-block-item:last-child { border-bottom: 0; }
.poi-block-name { color: var(--text); font-weight: 500; }
.poi-block-tag { font-size: 11.5px; color: var(--muted); }
.poi-block-item .poi-rating { margin-left: auto; }

/* 城市索引页的数量标注 */
.poi-mini-count { font-size: 12px; color: var(--muted); margin-left: 6px; }

/* 四个直辖市（各 1 个城市）并排成一行，避免各占一整行 */
.poi-muni-row {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px 22px;
  margin-top: 26px;
}
.poi-muni-row .poi-group { margin-top: 0; }
@media (max-width: 720px) {
  .poi-muni-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* 列表里的景点名做成链接后去掉默认下划线 */
.poi-name a { color: inherit; text-decoration: none; }
.poi-name a:hover { color: var(--accent); text-decoration: underline; }
.poi-block-name { text-decoration: none; }
.poi-block-name:hover { color: var(--accent); text-decoration: underline; }

/* ============ 景点详情页（景点 + 天气） ============ */
.poi-spot-head { padding-bottom: 18px; }
.poi-spot-h1 {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  font-size: 22px; font-weight: 700; margin: 0 0 10px;
}
.poi-spot-rating { margin-left: 0; font-size: 14px; }
.poi-spot-loc { font-size: 14px; color: var(--text-2); margin: 0; line-height: 1.8; }

/* 客观信息表：两列网格，用细线分隔，避免一堆竖排键值对显得空 */
.poi-facts {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px; margin: 16px 0 0; padding: 1px;
  background: var(--line); border-radius: 10px; overflow: hidden;
}
.poi-fact { display: flex; gap: 10px; align-items: baseline; background: var(--card); padding: 10px 13px; }
.poi-fact dt { flex: 0 0 64px; margin: 0; font-size: 12.5px; color: var(--muted); }
.poi-fact dd { margin: 0; font-size: 13.5px; color: var(--text-2); word-break: break-word; }

/* 天气建议 */
.poi-tip-list { list-style: none; margin: 12px 0 0; padding: 0; display: grid; gap: 10px; }
.poi-tip-list li {
  border-left: 3px solid var(--accent); background: #f7f9fd;
  border-radius: 0 8px 8px 0; padding: 11px 14px;
}
.poi-tip-list b { display: block; font-size: 13px; color: var(--text); margin-bottom: 3px; }
.poi-tip-list p { margin: 0; font-size: 13.5px; color: var(--text-2); line-height: 1.75; }

/* 周边景点 */
.poi-near-intro { font-size: 13px; color: var(--muted); margin: 6px 0 0; }
.poi-near-list { list-style: none; margin: 10px 0 0; padding: 0; }
.poi-near-list li {
  display: flex; align-items: center; gap: 10px;
  padding: 9px 0; border-bottom: 1px dashed var(--line);
}
.poi-near-list li:last-child { border-bottom: 0; }
.poi-near-list a { color: var(--text); font-weight: 500; text-decoration: none; }
.poi-near-list a:hover { color: var(--accent); text-decoration: underline; }
.poi-near-dist { margin-left: auto; font-size: 12.5px; color: var(--accent); white-space: nowrap; }

/* 位置与交通 */
.poi-loc-text { font-size: 13.5px; color: var(--text-2); margin: 8px 0 0; line-height: 1.8; }
.poi-loc-actions { margin: 12px 0 0; }
.poi-loc-link {
  display: inline-block; font-size: 13.5px; color: var(--accent);
  border: 1px solid #c9dbfd; background: #f5f8ff;
  border-radius: 8px; padding: 7px 14px; text-decoration: none;
}
.poi-loc-link:hover { border-color: var(--accent); }

/* 站内查询框 */
.poi-query-intro { font-size: 13px; color: var(--muted); margin: 6px 0 12px; }
.poi-query-form { display: flex; gap: 8px; flex-wrap: wrap; }
.poi-query-input {
  flex: 1 1 240px; min-width: 0; height: 38px; padding: 0 13px;
  font-size: 14px; color: var(--text); background: var(--card);
  border: 1px solid var(--line); border-radius: 9px; outline: none;
}
.poi-query-input:focus { border-color: var(--accent); }
.poi-query-btn {
  height: 38px; padding: 0 20px; font-size: 14px; font-weight: 600;
  color: #fff; background: var(--accent); border: 0; border-radius: 9px; cursor: pointer;
}
.poi-query-btn:hover { background: #1e5ce0; }
.poi-query-result { margin-top: 14px; }
.poi-query-sub {
  font-size: 12.5px; font-weight: 600; color: var(--muted);
  margin: 14px 0 6px; letter-spacing: 0.4px;
}
.poi-query-sub:first-child { margin-top: 0; }
.poi-query-list { list-style: none; margin: 0; padding: 0; }
.poi-query-list li {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 0; border-bottom: 1px dashed var(--line);
}
.poi-query-list li:last-child { border-bottom: 0; }
.poi-query-list a { color: var(--text); font-weight: 500; text-decoration: none; }
.poi-query-list a:hover { color: var(--accent); text-decoration: underline; }
.poi-query-note { margin-left: auto; font-size: 12px; color: var(--muted); text-align: right; }
.poi-query-empty { font-size: 13.5px; color: var(--muted); margin: 0; }
.poi-query-empty a { color: var(--accent); }

@media (max-width: 620px) {
  .poi-list { grid-template-columns: 1fr; }
  .poi-facts { grid-template-columns: 1fr; }
  .poi-fact dt { flex: 0 0 58px; }
  .poi-spot-h1 { font-size: 19px; }
  .poi-near-list li, .poi-query-list li { flex-wrap: wrap; }
  .poi-near-dist, .poi-query-note { margin-left: 0; }
}

/* ============ 行政区划页（/district/） ============ */
/* 概况做成「小格 + 上下结构」：标题在上、值在下，横向铺开，读起来比传统左右定义表更整齐 */

.dist-h1 { font-size: 21px; font-weight: 700; letter-spacing: .4px; margin-bottom: 9px; }

/* 介绍正文：紧贴 h1 下方，行高放大——这里是要被人和 AI 逐句读的，不是速览信息 */
.dist-head .dist-intro-body p {
  margin: 0 0 9px;
  font-size: 14px;
  line-height: 1.95;
  color: var(--text-2);
}
.dist-head .dist-intro-body p:first-child { color: var(--text); }
.dist-head .dist-intro-body p:last-child { margin-bottom: 0; }

.dist-summary .dist-dl {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 9px;
  margin: 0;
}

.dist-row {
  padding: 10px 12px;
  border: 1px solid var(--line-soft);
  border-radius: 9px;
  background: #fafbfc;
}

.dist-row dt { font-size: 12px; color: var(--muted); margin-bottom: 4px; }

.dist-row dd {
  margin: 0;
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
  line-height: 1.5;
  word-break: break-all;
}

.dist-row dd a { color: var(--accent); text-decoration: none; }
.dist-row dd a:hover { text-decoration: underline; }

.dist-children .dist-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  list-style: none;
  padding: 0;
  margin: 0;
}

.dist-grid li {
  padding: 9px 11px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: #fff;
}

.dist-grid li a { display: block; font-size: 14px; color: var(--text); text-decoration: none; }
.dist-grid li a:hover { color: var(--accent); }

.dist-grid li em {
  display: block;
  margin-top: 3px;
  font-style: normal;
  font-size: 12px;
  color: var(--muted);
}

/* 街道名短、数量多，用更密的标签格 */
.dist-grid-street { grid-template-columns: repeat(6, 1fr); }
.dist-grid-street li { padding: 6px 9px; background: #fafbfc; }
.dist-grid-street li span { font-size: 13px; color: var(--text-2); }
/* 乡镇列表现在是内链：与 .dist-grid li a 同款，只是字号更密 */
.dist-grid-street li a { display: block; font-size: 13px; color: var(--text-2); text-decoration: none; }
.dist-grid-street li a:hover { color: var(--accent); }

/* 概况卡里「（乡镇级沿用所属区县代码）」这类补充说明 */
.dist-hint { margin-left: 6px; font-size: 12px; color: var(--muted); }

.dist-note-body p {
  margin: 0 0 8px;
  font-size: 13px;
  line-height: 1.85;
  color: var(--text-2);
}
.dist-note-body p:last-child { margin-bottom: 0; }

/* 相关查询：竖排一行条，比默认的胶囊标签更适合带说明文字 */
.dist-related .link-list { flex-direction: column; gap: 0; }
.dist-related .link-list li {
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 8px 0;
  border-bottom: 1px solid var(--line-soft);
}
.dist-related .link-list li:last-child { border-bottom: none; }
.dist-related .link-list a { border: none; padding: 0; font-size: 14px; }
.dist-related .link-list em { font-style: normal; font-size: 12px; color: var(--muted); }

@media (max-width: 760px) {
  .dist-summary .dist-dl { grid-template-columns: 1fr 1fr; }
  .dist-children .dist-grid,
  .dist-grid-street { grid-template-columns: 1fr 1fr; }
  .dist-head .dist-intro-body p { font-size: 13px; line-height: 1.9; }
}

/* 首页省目录：城市平铺链接（区县级列表收敛到省份页） */
.prov-cities a {
  font-size: 13px;
  color: var(--text-2);
  text-decoration: none;
  line-height: 2;
  white-space: nowrap;
}
.prov-cities a:hover { color: var(--accent); text-decoration: underline; }

/* ---------- 网站地图页（/map/） ---------- */
.map-section { margin-top: 14px; }

.map-list { list-style: none; margin: 0; padding: 0; }
.map-list li { padding: 8px 2px; border-bottom: 1px dashed var(--line); }
.map-list li:last-child { border-bottom: 0; }
.map-list li a { color: var(--text); text-decoration: none; font-size: 14px; }
.map-list li a:hover { color: var(--accent); }
.map-list li em { display: block; margin-top: 2px; font-style: normal; font-size: 12px; color: var(--muted); }

.map-prov { padding: 10px 0; border-bottom: 1px dashed var(--line); }
.map-prov:last-child { border-bottom: 0; }
.map-prov > b { font-size: 14px; }
.map-prov > b a { color: var(--text); text-decoration: none; }
.map-prov > b a:hover { color: var(--accent); }
.map-citylinks { display: block; margin-top: 6px; line-height: 2.1; }
.map-citylinks a {
  display: inline-block;
  margin-right: 12px;
  font-size: 13px;
  color: var(--text-2);
  text-decoration: none;
  white-space: nowrap;
}
.map-citylinks a:hover { color: var(--accent); }

@media (max-width: 640px) {
  .map-citylinks { line-height: 2.3; }
  .map-citylinks a { margin-right: 10px; }
}

/* 页脚「网站地图」入口 */
.foot-links { margin-top: 6px; }
.foot-links a { color: #a3abb6; font-size: 12px; text-decoration: none; }
.foot-links a:hover { color: var(--accent); }

/* 页脚备案号：颜色跟随页脚正文（不用浏览器默认链接蓝） */
.foot-icp a { color: inherit; text-decoration: none; }
.foot-icp a:hover { color: var(--accent); }

/* 地图页大区行的说明 */
.map-region-note { display: block; margin-top: 2px; font-style: normal; font-size: 12px; color: var(--muted); }

/* 路线页行政区名内链：默认与正文同色，悬停才提示可点 */
.along-name a { color: var(--text); text-decoration: none; }
.along-name a:hover { color: var(--accent); text-decoration: underline; }
.along-loc a { color: var(--muted); text-decoration: none; }
.along-loc a:hover { color: var(--accent); text-decoration: underline; }
.ep-h a { color: var(--text); text-decoration: none; }
.ep-h a:hover { color: var(--accent); text-decoration: underline; }

/* ============================== 世界时间页 /worldtime/ ==============================
 * 主钟 + 时钟墙（每秒刷新）+ 时区换算表 + 全量城市时间表。
 * 数字统一用 tabular-nums 等宽，避免逐秒跳动时宽度抖动。
 * ================================================================================== */

.wt-tip { margin-bottom: 11px; font-size: 12.5px; line-height: 1.7; color: var(--muted); }

/* ---------- 顶部主钟：北京时间 / UTC ---------- */
.wt-main { display: flex; gap: 11px; margin-top: 14px; }

.wt-main-box {
  flex: 1;
  padding: 13px 16px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #f7fafd;
}

.wt-main-utc { background: var(--card); }

.wt-main-label { display: block; margin-bottom: 3px; font-size: 12px; color: var(--muted); }

.wt-main-time {
  display: block;
  font-size: 34px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: -.5px;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

.wt-main-time i { font-style: normal; font-size: 20px; font-weight: 500; color: var(--muted); }
.wt-main-utc .wt-main-time { color: var(--accent); }
.wt-main-meta { display: block; margin-top: 3px; font-size: 12.5px; color: var(--text-2); }

/* ---------- 时钟墙 ---------- */
.wt-wall { display: grid; grid-template-columns: repeat(auto-fill, minmax(148px, 1fr)); gap: 10px; }

.wt-clock {
  display: block;
  padding: 11px 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  color: inherit;
  text-decoration: none;
  transition: border-color .15s, background .15s;
}

a.wt-clock:hover { border-color: #b9cdfa; background: #f6f9ff; }

/* 昼夜小圆点：白天橙、夜间蓝，一眼看出当地是白天还是夜里 */
.wt-clock-head b::before {
  content: "";
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-right: 5px;
  border-radius: 50%;
  background: #f5a623;
  vertical-align: 1px;
}

.wt-clock.is-night .wt-clock-head b::before { background: #5b7cb5; }

.wt-clock-head { display: flex; flex-direction: column; margin-bottom: 5px; }
.wt-clock-head b { font-size: 13.5px; font-weight: 600; color: var(--text); }
.wt-clock-head em { font-style: normal; font-size: 11.5px; color: var(--muted); }

.wt-clock-time {
  font-size: 24px;
  font-weight: 600;
  line-height: 1.15;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

.wt-clock-time i { margin-left: 1px; font-style: normal; font-size: 14px; font-weight: 500; color: var(--muted); }
.wt-clock-meta { display: flex; gap: 6px; margin-top: 2px; font-size: 11.5px; color: var(--text-2); }

.wt-clock-diff {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-top: 7px;
  padding-top: 6px;
  border-top: 1px dashed var(--line-soft);
  font-size: 11.5px;
  color: var(--muted);
}

.wt-zone em {
  margin-left: 4px;
  padding: 0 4px;
  border-radius: 3px;
  background: #fff4e0;
  color: #b26a00;
  font-style: normal;
  font-size: 10.5px;
}

/* ---------- 表格 ---------- */
.wt-cont { margin-top: 16px; scroll-margin-top: 66px; }
.wt-cont h3 { margin-bottom: 8px; font-size: 14px; font-weight: 600; color: var(--text); }
.wt-cont h3 em { margin-left: 6px; font-style: normal; font-size: 11.5px; font-weight: 400; color: var(--muted); }

.wt-table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }

.wt-table { width: 100%; border-collapse: collapse; font-size: 12.5px; }

.wt-table th,
.wt-table td { padding: 6px 9px; border-bottom: 1px solid var(--line-soft); text-align: left; white-space: nowrap; }

.wt-table thead th {
  background: #f8fafc;
  border-bottom: 1px solid var(--line);
  font-size: 12px;
  font-weight: 600;
  color: var(--text-2);
}

.wt-table tbody tr:hover { background: #f9fbfe; }
.wt-table td a { color: var(--accent); text-decoration: none; }
.wt-table td a:hover { text-decoration: underline; }

.wt-td-time { font-weight: 600; font-variant-numeric: tabular-nums; }
.wt-td-tz, .wt-td-off, .wt-td-diff { color: var(--text-2); }
.wt-td-off em { margin-left: 4px; padding: 0 4px; border-radius: 3px; background: #fff4e0; color: #b26a00; font-style: normal; font-size: 10.5px; }
.wt-en { display: block; font-size: 11px; color: #a3abb6; }
.wt-note { margin-left: 5px; padding: 0 4px; border-radius: 3px; background: #eef4ff; color: var(--accent); font-style: normal; font-size: 10.5px; }

/* 换算表：跨日标记 */
.wt-convert th em { display: block; font-style: normal; font-size: 10.5px; font-weight: 400; color: #a3abb6; }
.wt-convert td i { margin-left: 3px; font-style: normal; font-size: 10px; color: #c08b00; }

@media (max-width: 640px) {
  .wt-main { flex-direction: column; }
  .wt-main-time { font-size: 30px; }
  .wt-wall { grid-template-columns: repeat(auto-fill, minmax(136px, 1fr)); }
}

/* ------------------------------ 城市时间页 ------------------------------ */
.wt-city-hero {
  display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px;
  margin-top: 12px; padding: 22px 24px; border-radius: 12px;
  background: linear-gradient(135deg, #3d8ed6, #357fc2); color: #fff;
}
.wt-city-clock { display: flex; flex-direction: column; }
.wt-city-time {
  font-size: 52px; font-weight: 700; line-height: 1.05;
  font-variant-numeric: tabular-nums; letter-spacing: 1px;
}
.wt-city-time i { font-style: normal; font-size: 26px; font-weight: 500; opacity: .85; }
.wt-city-sub { margin-top: 6px; font-size: 14px; opacity: .92; }
.wt-city-day {
  padding: 6px 14px; border-radius: 20px; font-size: 13px; font-weight: 600;
  background: rgba(255, 255, 255, .18);
}
.wt-city-day.is-night { background: rgba(0, 0, 0, .2); }

.wt-city-meta {
  list-style: none; margin: 16px 0 0; padding: 0;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1px;
  background: var(--line-soft); border: 1px solid var(--line-soft);
  border-radius: 10px; overflow: hidden;
}
.wt-city-meta li { display: flex; flex-direction: column; gap: 3px; padding: 10px 14px; background: var(--card); }
.wt-meta-k { font-size: 12px; color: var(--muted); }
.wt-meta-v { font-size: 14px; font-weight: 600; color: var(--text); }

.wt-city-intro { font-size: 14.5px; line-height: 1.9; color: var(--text-2); margin: 0; }
.wt-city-conv { max-width: 420px; }
.wt-city-conv td i { margin-left: 3px; font-style: normal; font-size: 10px; color: #c08b00; }
.province-en { font-size: 16px; font-weight: 400; color: var(--muted); }

@media (max-width: 640px) {
  .wt-city-hero { padding: 16px 18px; }
  .wt-city-time { font-size: 40px; }
  .wt-city-meta { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
}

/* 乡镇页「到同区县其它乡镇的路线」：文案较长，用 3 列 + 更小字号 */
.dist-grid-route { grid-template-columns: repeat(3, 1fr); }
.dist-grid-route li { padding: 7px 10px; background: #fafbfc; }
.dist-grid-route li a { font-size: 13px; color: var(--text-2); }
.dist-grid-route li a em { margin-top: 1px; font-size: 11.5px; }

@media (max-width: 640px) {
  .dist-grid-route { grid-template-columns: 1fr; }
}
