/* ===========================================================
   GateRank v3 — 自有视觉：暖白底 + 珊瑚强调色 + 卡片式榜单
   =========================================================== */
:root {
  --bg: #f5f4f0;
  --paper: #fffdfa;
  --card: #ffffff;
  --line: #e6e2d9;
  --line-2: #efece5;
  --ink: #15171c;
  --ink-2: #3c4048;
  --muted: #736f68;
  --dim: #a09a90;
  --coral: #e2542c;
  --coral-soft: #fdeee8;
  --green: #0f7a5f;
  --green-soft: #e8f6f0;
  --amber: #b7791f;
  --red: #cf3b2f;
  --r: 14px;
  --r-lg: 20px;
  --sh: 0 2px 6px rgba(28, 24, 16, .05);
  --sh-2: 0 14px 34px -18px rgba(28, 24, 16, .28);
  --font: "PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei", -apple-system,
          BlinkMacSystemFont, "Segoe UI", "Noto Sans SC", sans-serif;
  --mono: "SFMono-Regular", Consolas, "JetBrains Mono", Menlo, monospace;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0; background: var(--bg); color: var(--ink);
  font-family: var(--font); font-size: 15px; line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
h1, h2, h3, h4 { margin: 0 0 .5em; line-height: 1.25; font-weight: 800; letter-spacing: -.02em; }
h1 { font-size: clamp(28px, 4.2vw, 48px); }
h2 { font-size: clamp(19px, 2.2vw, 25px); }
h3 { font-size: 16.5px; }
p { margin: 0 0 .9em; }
ul { margin: 0 0 1em; padding-left: 1.15em; }
li { margin: .3em 0; }
code, .mono { font-family: var(--mono); font-size: .92em; }
.muted { color: var(--muted); }
.dim { color: var(--dim); }
.small { font-size: 13px; }
.center { text-align: center; }
.ok { color: var(--green); }
.warn { color: var(--amber); }
.grow { flex: 1; }
.wrap { max-width: 1180px; margin: 0 auto; padding: 0 24px; }
.skip { position: absolute; left: -999px; top: 0; background: var(--ink); color: #fff; padding: 10px 16px; }
.skip:focus { left: 0; z-index: 99; }

/* ---------------------------------------------------------- 顶栏 */
.hd {
  position: sticky; top: 0; z-index: 60; background: rgba(245, 244, 240, .9);
  backdrop-filter: blur(12px); border-bottom: 1px solid var(--line);
}
.hd-in { display: flex; align-items: center; gap: 28px; height: 66px; }
.brand { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.brand-mark {
  width: 32px; height: 32px; border-radius: 10px; display: grid; place-items: center;
  background: var(--ink); color: #fff; font-size: 13px; font-weight: 800; letter-spacing: -.03em;
}
.brand-txt { display: flex; flex-direction: column; line-height: 1.1; }
.brand-txt b { font-size: 15.5px; letter-spacing: -.02em; }
.brand-txt em { font-style: normal; font-size: 9.5px; letter-spacing: .22em; color: var(--dim); }
.menu { display: flex; gap: 4px; margin-right: auto; }
.menu a {
  padding: 6px 11px; border-radius: 8px; font-size: 14px; color: var(--ink-2); transition: .15s; white-space: nowrap;
}
.menu a:hover { background: #eceae4; }
.menu a.on { color: var(--ink); font-weight: 700; box-shadow: inset 0 -2px 0 var(--coral); border-radius: 0; }
.hd-act { display: flex; align-items: center; gap: 10px; }
.hd-login { font-size: 14px; color: var(--ink-2); padding: 6px 4px; }
.hd-login:hover { color: var(--coral); }
.btn-solid {
  display: inline-flex; align-items: center; gap: 6px; background: var(--ink); color: #fff;
  border: 1px solid var(--ink); padding: 8px 15px; border-radius: 9px; font-size: 13.5px; font-weight: 600;
  transition: .16s;
}
.btn-solid:hover { background: #000; }
.btn-coral { background: var(--coral); border-color: var(--coral); }
.btn-coral:hover { background: #c8431f; }
.btn-line {
  display: inline-flex; align-items: center; gap: 6px; background: transparent; color: var(--ink-2);
  border: 1px solid var(--line); padding: 8px 15px; border-radius: 9px; font-size: 13.5px; font-weight: 600;
  transition: .16s;
}
.btn-line:hover { border-color: #c9c3b7; color: var(--ink); }
.btn-solid.sm, .btn-line.sm { padding: 5px 11px; font-size: 12.5px; border-radius: 8px; }
.btn-solid.lg, .btn-line.lg { padding: 11px 22px; font-size: 15px; }
.btn-block { display: flex; width: 100%; justify-content: center; margin-top: 8px; }
.nav-toggle { display: none; background: none; border: 0; width: 36px; height: 36px; padding: 8px; cursor: pointer; }
.nav-toggle span { display: block; height: 2px; background: var(--ink); margin: 4px 0; }

/* ---------------------------------------------------------- 首页 */
.intro { padding: 52px 0 8px; }
.intro-grid { display: grid; grid-template-columns: minmax(0, 1.02fr) minmax(0, .98fr); gap: 46px; align-items: start; }
.eyebrow {
  display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--muted);
  border: 1px solid var(--line); background: var(--paper); padding: 4px 11px; border-radius: 999px; margin-bottom: 18px;
}
.eyebrow i { width: 6px; height: 6px; border-radius: 50%; background: var(--coral); }
.intro h1 { letter-spacing: -.035em; margin-bottom: 14px; }
.intro h1 em { font-style: normal; color: var(--coral); }
.intro-lede { color: var(--ink-2); font-size: 15.5px; max-width: 520px; }
.intro-lede b { color: var(--ink); }
.qsearch { display: flex; gap: 8px; margin: 22px 0 12px; max-width: 520px; }
.qsearch input {
  flex: 1; border: 1px solid var(--line); background: var(--card); border-radius: 11px;
  padding: 12px 15px; font-size: 14.5px; font-family: var(--font); color: var(--ink); outline: none;
}
.qsearch input:focus { border-color: var(--coral); }
.qsearch button {
  border: 1px solid var(--ink); background: var(--ink); color: #fff; border-radius: 11px;
  padding: 0 22px; font-size: 14px; font-weight: 700; cursor: pointer;
}
.quicktags { font-size: 13px; color: var(--dim); display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.quicktags a { color: var(--ink-2); border-bottom: 1px dashed var(--line); }
.quicktags a:hover { color: var(--coral); border-color: var(--coral); }

.scen-panel { background: var(--paper); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 18px; box-shadow: var(--sh); }
.scen-panel h2 { font-size: 13px; letter-spacing: .06em; color: var(--muted); font-weight: 700; margin-bottom: 12px; text-transform: uppercase; }
.scen-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.scen-card {
  border: 1px solid var(--line-2); border-radius: 12px; padding: 12px; background: #fff; transition: .16s;
  display: flex; flex-direction: column; gap: 2px;
}
.scen-card:hover { border-color: #d8d1c4; box-shadow: var(--sh-2); transform: translateY(-2px); }
.scen-ico { font-size: 17px; line-height: 1; }
.scen-name { font-weight: 700; font-size: 14px; }
.scen-desc { font-size: 11.5px; color: var(--dim); line-height: 1.4; }

.statbar {
  display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);
  margin: 34px 0 0;
}
.statbar div { padding: 16px 0 17px; border-right: 1px solid var(--line); padding-left: 22px; }
.statbar div:first-child { padding-left: 0; }
.statbar div:last-child { border-right: 0; }
.statbar b { display: block; font-family: var(--mono); font-size: 24px; font-weight: 700; letter-spacing: -.03em; }
.statbar span { font-size: 12px; color: var(--muted); }

/* ---------------------------------------------------------- 区块 */
.block { padding: 40px 0 6px; }
.block-h { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin-bottom: 16px; }
.block-h h2 { margin: 0; }
.block-h p { margin: 5px 0 0; color: var(--muted); font-size: 13.5px; }
.block-more { font-size: 13px; color: var(--coral); white-space: nowrap; }
.block-more:hover { text-decoration: underline; }
.cols-2 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 28px; }
.cols-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }

/* ---------------------------------------------------------- 榜单行（卡片化） */
.rlist { display: flex; flex-direction: column; gap: 10px; }
.rrow {
  display: grid; grid-template-columns: 46px 44px minmax(0, 1fr) auto; gap: 14px; align-items: center;
  background: var(--card); border: 1px solid var(--line); border-radius: var(--r); padding: 14px 16px;
  transition: .16s;
}
.rrow:hover { border-color: #d8d1c4; box-shadow: var(--sh-2); }
.rrow-rank { font-family: var(--mono); font-weight: 700; font-size: 15px; color: var(--dim); }
.rrow.top1 .rrow-rank { color: var(--coral); }
.rrow.top2 .rrow-rank { color: var(--ink); }
.rrow.top3 .rrow-rank { color: var(--amber); }
.rrow-logo {
  width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center;
  background: var(--paper); border: 1px solid var(--line); font-size: 17px; font-weight: 800;
}
.rrow-main { min-width: 0; }
.rrow-title { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rrow-title b { font-size: 15.5px; letter-spacing: -.01em; }
.rrow-title .en { font-size: 11.5px; color: var(--dim); }
.rrow-meta { font-size: 12.5px; color: var(--muted); margin-top: 2px; }
.rrow-meta .dot { color: #d4cec2; margin: 0 4px; }
.rrow-tags { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 6px; }
.pill {
  font-size: 11px; padding: 1px 7px; border-radius: 6px; border: 1px solid var(--line);
  color: var(--muted); background: var(--paper); white-space: nowrap;
}
.pill-ok { color: var(--green); background: var(--green-soft); border-color: #cbe8dc; }
.pill-warn { color: var(--amber); background: #fdf6e7; border-color: #f0e0bb; }
.pill-risk { color: var(--red); background: #fdeeec; border-color: #f5cfc9; }
.pill-dead { color: var(--muted); }
.pill-scen { color: var(--coral); background: var(--coral-soft); border-color: #f7d3c7; }
.score {
  font-family: var(--mono); font-weight: 700; font-size: 13px; padding: 1px 8px; border-radius: 7px;
  background: var(--ink); color: #fff;
}
.score.mid { background: #5c5a52; }
.score.low { background: #b9b2a4; }
.rrow-act { display: flex; gap: 8px; flex-shrink: 0; }

/* ---------------------------------------------------------- 排行页：侧栏 + 列表 */
.rank-wrap { display: grid; grid-template-columns: 268px minmax(0, 1fr); gap: 26px; align-items: start; padding-top: 26px; }
.side { position: sticky; top: 80px; }
.filter-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 16px; box-shadow: var(--sh); }
.filter-card h2 { font-size: 14px; margin-bottom: 10px; display: flex; justify-content: space-between; align-items: center; }
.filter-card h2 a { font-size: 12px; color: var(--coral); font-weight: 500; }
.fsearch { display: flex; gap: 6px; margin-bottom: 10px; }
.fsearch input {
  flex: 1; min-width: 0; border: 1px solid var(--line); border-radius: 9px; padding: 8px 10px;
  font-size: 13px; font-family: var(--font); outline: none; background: var(--paper);
}
.fsearch input:focus { border-color: var(--coral); }
.fsearch button { border: 1px solid var(--ink); background: var(--ink); color: #fff; border-radius: 9px; padding: 0 12px; cursor: pointer; }
.fprices { display: flex; gap: 6px; margin-bottom: 14px; }
.fprices label { flex: 1; display: flex; align-items: center; gap: 4px; border: 1px solid var(--line); border-radius: 9px; padding: 6px 8px; font-size: 12px; color: var(--muted); background: var(--paper); }
.fprices input { width: 100%; min-width: 0; border: 0; background: none; outline: none; font-size: 13px; font-family: var(--font); color: var(--ink); }
.fgroup { border-top: 1px dashed var(--line); padding: 10px 0 4px; }
.fgroup h3 { font-size: 12px; color: var(--muted); font-weight: 600; margin-bottom: 7px; letter-spacing: .02em; }
.fchips { display: flex; flex-wrap: wrap; gap: 5px; }
.fchip {
  font-size: 12px; padding: 3px 9px; border-radius: 7px; border: 1px solid var(--line);
  background: var(--paper); color: var(--ink-2); cursor: pointer; transition: .14s; white-space: nowrap;
}
.fchip:hover { border-color: #cbc4b6; }
.fchip.on { background: var(--coral); border-color: var(--coral); color: #fff; font-weight: 600; }
.fchip input { display: none; }
.fcount { font-size: 12px; color: var(--dim); margin-top: 12px; border-top: 1px solid var(--line); padding-top: 10px; }
.fcount b { color: var(--ink); font-family: var(--mono); }

.list-head {
  display: flex; align-items: baseline; justify-content: space-between; gap: 14px; margin-bottom: 12px;
}
.list-head h1 { font-size: clamp(22px, 2.6vw, 30px); margin: 0; }
.list-head p { margin: 4px 0 0; color: var(--muted); font-size: 13px; }
.sortbar { display: flex; gap: 6px; font-size: 13px; }
.sortbar a { color: var(--muted); padding: 4px 9px; border-radius: 7px; }
.sortbar a.on { background: var(--ink); color: #fff; }

.pager { display: flex; justify-content: center; gap: 6px; margin: 22px 0 8px; flex-wrap: wrap; }
.pg {
  min-width: 34px; height: 34px; display: inline-grid; place-items: center; padding: 0 11px;
  border: 1px solid var(--line); border-radius: 9px; font-size: 13px; color: var(--ink-2); background: var(--card);
}
.pg:hover { border-color: #cbc4b6; }
.pg.active { background: var(--ink); color: #fff; border-color: var(--ink); }
.pg.disabled { opacity: .45; }
.pg.dots { border-color: transparent; background: none; }

/* ---------------------------------------------------------- 场景页 */
.scen-hero {
  display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, .75fr); gap: 30px;
  background: var(--paper); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 28px; margin-top: 22px;
}
.scen-hero h1 { margin-bottom: 10px; }
.scen-hero .big-ico { font-size: 34px; margin-bottom: 8px; display: block; }
.scen-hero ul { margin: 12px 0 0; padding-left: 1.1em; color: var(--ink-2); font-size: 14px; }
.scen-side { border-left: 1px solid var(--line); padding-left: 26px; }
.scen-side h3 { font-size: 12.5px; color: var(--muted); letter-spacing: .04em; text-transform: uppercase; }
.scen-side .kv { font-size: 13px; }
.kv { display: grid; grid-template-columns: 76px 1fr; gap: 7px 10px; margin: 0; }
.kv dt { color: var(--dim); }
.kv dd { margin: 0; color: var(--ink-2); }

/* ---------------------------------------------------------- 详情 */
.page-h { padding: 26px 0 6px; }
.crumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 12px; padding: 0; font-size: 12.5px; color: var(--dim); }
.crumbs li + li::before { content: "/"; margin-right: 6px; color: #d4cec2; }
.crumbs a:hover { color: var(--coral); }
.crumbs li[aria-current] { color: var(--ink-2); }

.ap-hero {
  display: grid; grid-template-columns: minmax(0, 1fr) 210px; gap: 26px; align-items: center;
  background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 24px 26px; margin-bottom: 18px;
  box-shadow: var(--sh);
}
.ap-id { display: flex; gap: 16px; align-items: flex-start; }
.ap-logo {
  width: 64px; height: 64px; border-radius: 16px; display: grid; place-items: center;
  background: var(--paper); border: 1px solid var(--line); font-size: 26px; font-weight: 800; flex-shrink: 0;
}
.ap-hero h1 { font-size: clamp(22px, 2.4vw, 30px); margin: 0 0 4px; }
.ap-en { font-size: 12.5px; color: var(--dim); margin-left: 8px; font-weight: 500; }
.ap-meta { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; font-size: 13px; color: var(--muted); margin: 6px 0 10px; }
.ap-score-box { text-align: center; border-left: 1px solid var(--line); padding-left: 20px; }
.ap-score-box b { display: block; font-family: var(--mono); font-size: 38px; letter-spacing: -.04em; line-height: 1; color: var(--coral); }
.ap-score-box span { font-size: 11.5px; color: var(--muted); }
.ap-score-box .rank { font-size: 12px; color: var(--ink-2); margin-top: 4px; }

.ap-grid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 18px; align-items: start; }
.col-main { min-width: 0; }
.col-side { position: sticky; top: 82px; display: flex; flex-direction: column; gap: 14px; }
.panel { background: var(--card); border: 1px solid var(--line); border-radius: var(--r); padding: 18px 20px; box-shadow: var(--sh); }
.panel h2 { font-size: 15.5px; margin-bottom: 12px; }
.panel-risk { background: #fffaef; border-color: #f0e2c2; }
.lead { color: var(--ink-2); font-size: 15px; margin: 0; }

.bars { display: flex; flex-direction: column; gap: 9px; margin-top: 8px; }
.bar-row { display: grid; grid-template-columns: 58px 1fr 40px; align-items: center; gap: 10px; font-size: 12.5px; }
.bar-label { color: var(--muted); }
.bar-track { height: 6px; border-radius: 99px; background: #eeeae1; overflow: hidden; }
.bar-fill { display: block; height: 100%; border-radius: 99px; background: linear-gradient(90deg, var(--coral), #f0913f); }
.bar-val { font-family: var(--mono); text-align: right; }

.tbl { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.tbl th { text-align: left; color: var(--muted); font-size: 12px; font-weight: 600; padding: 8px 9px; border-bottom: 1px solid var(--line); background: var(--paper); }
.tbl td { padding: 9px; border-bottom: 1px solid var(--line-2); vertical-align: top; }
.tbl tr:last-child td { border-bottom: 0; }
.tbl .dim { display: block; font-size: 11.5px; }

.pc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.pc-grid h3 { font-size: 13px; letter-spacing: .04em; margin-bottom: 6px; }
.pc-grid ul { font-size: 13.5px; color: var(--ink-2); }
.chips { display: flex; flex-wrap: wrap; gap: 6px; }
.chip {
  font-size: 12px; padding: 2px 9px; border-radius: 7px; border: 1px solid var(--line);
  background: var(--paper); color: var(--ink-2);
}
.chip:hover { border-color: #cbc4b6; }
.tag-cloud { display: flex; flex-wrap: wrap; gap: 7px; }
.tag-pill {
  display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--ink-2);
  border: 1px solid var(--line); background: var(--card); padding: 4px 11px; border-radius: 8px;
}
.tag-pill span { font-size: 11px; color: var(--coral); font-family: var(--mono); }
.tag-pill:hover { border-color: #d8d1c4; }
.rel-list { display: flex; flex-direction: column; gap: 2px; }
.rel-item { display: flex; align-items: center; gap: 9px; padding: 6px 7px; border-radius: 9px; font-size: 13.5px; }
.rel-item:hover { background: var(--paper); }
.rel-name { flex: 1; min-width: 0; }
.rel-name b { display: block; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rel-name i { font-style: normal; font-size: 11.5px; color: var(--dim); }
.rel-logo { width: 26px; height: 26px; border-radius: 8px; display: grid; place-items: center; background: var(--paper); border: 1px solid var(--line); font-size: 12px; font-weight: 700; }

/* ---------------------------------------------------------- 文章 */
.article { padding: 26px 30px; }
.art-kind { font-size: 11.5px; color: var(--coral); border: 1px solid #f7d3c7; background: var(--coral-soft); padding: 1px 8px; border-radius: 6px; }
.art-h1 { font-size: clamp(22px, 2.6vw, 31px); margin: 10px 0 10px; }
.art-meta { display: flex; flex-wrap: wrap; gap: 12px; font-size: 12.5px; color: var(--dim); padding-bottom: 14px; border-bottom: 1px solid var(--line); margin-bottom: 18px; }
.art-foot { margin-top: 22px; padding-top: 13px; border-top: 1px dashed var(--line); font-size: 12.5px; color: var(--dim); }
.prose { font-size: 15.5px; line-height: 1.85; color: #26282d; }
.prose h2 { font-size: 18.5px; margin: 26px 0 10px; padding-left: 11px; border-left: 3px solid var(--coral); letter-spacing: -.01em; }
.prose h3 { font-size: 15.5px; margin: 18px 0 8px; }
.prose p { color: #33363c; }
.prose code { background: #f2efe8; padding: 1px 6px; border-radius: 5px; font-size: .88em; }
.prose pre { max-width: 100%; background: #17191e; color: #dfe4ec; padding: 15px 17px; border-radius: 12px; overflow: auto; font-size: 12.8px; line-height: 1.7; }
.prose pre code { background: none; color: inherit; padding: 0; }
.prose .tbl { margin: 14px 0; border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
.prose blockquote { margin: 16px 0; padding: 10px 15px; border-left: 3px solid #d9d3c6; background: var(--paper); color: var(--muted); }

.pcard {
  display: flex; flex-direction: column; background: var(--card); border: 1px solid var(--line);
  border-radius: var(--r); padding: 16px; transition: .16s; height: 100%;
}
.pcard:hover { border-color: #d8d1c4; box-shadow: var(--sh-2); transform: translateY(-2px); }
.pcard-top { display: flex; align-items: center; gap: 8px; margin-bottom: 7px; font-size: 11.5px; }
.pcard h3 { font-size: 15px; line-height: 1.45; margin: 0 0 7px; }
.pcard p { font-size: 13px; color: var(--muted); margin: 0 0 10px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.pcard-foot { margin-top: auto; display: flex; justify-content: space-between; font-size: 11.5px; color: var(--dim); border-top: 1px dashed var(--line); padding-top: 9px; }
.kind { padding: 1px 7px; border-radius: 6px; border: 1px solid transparent; }
.kind-news { color: #1f6fb2; background: #eaf3fb; border-color: #cfe4f6; }
.kind-tech { color: var(--green); background: var(--green-soft); border-color: #cbe8dc; }
.kind-report { color: var(--amber); background: #fdf6e7; border-color: #f0e0bb; }

/* ---------------------------------------------------------- 站点地图页 */
.map-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.map-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--r); padding: 16px 18px; box-shadow: var(--sh); }
.map-card h2 { font-size: 14px; margin-bottom: 10px; display: flex; justify-content: space-between; align-items: baseline; }
.map-card h2 span { font-size: 11.5px; color: var(--dim); font-weight: 500; font-family: var(--mono); }
.map-links { display: flex; flex-direction: column; gap: 3px; font-size: 13px; }
.map-links a { color: var(--ink-2); padding: 2px 0; }
.map-links a:hover { color: var(--coral); }
.map-more { font-size: 12px; color: var(--coral); margin-top: 8px; display: inline-block; }
.map-chips { display: flex; flex-wrap: wrap; gap: 5px; }

/* ---------------------------------------------------------- 提示 / 页脚 */
.notice {
  display: flex; gap: 13px; background: #fffaef; border: 1px solid #f0e2c2; border-radius: var(--r); padding: 16px 18px;
}
.notice-ico { width: 26px; height: 26px; border-radius: 50%; background: #fbeccd; color: var(--amber); display: grid; place-items: center; font-weight: 800; flex-shrink: 0; }
.notice h3 { font-size: 14px; margin: 0 0 3px; color: #8a5a00; }
.notice p { margin: 0; font-size: 13.5px; color: var(--muted); }

.ft { margin-top: 48px; border-top: 1px solid var(--line); background: var(--paper); }
.ft-lkband { border-bottom: 1px solid var(--line-2); padding: 20px 0 18px; }
.ft-lkhead { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
.ft-lkhead h4 { font-size: 12px; color: var(--muted); letter-spacing: .06em; text-transform: uppercase; margin: 0; }
.ft-lkmore { font-size: 12px; color: var(--coral); text-decoration: none; }
.ft-lkmore:hover { text-decoration: underline; }
.ft-lklist { font-size: 12.5px; line-height: 2; color: var(--muted); margin: 0; word-break: break-word; }
.ft .ft-lklist a { display: inline; margin: 0; color: var(--ink-2); text-decoration: none; white-space: nowrap; }
.ft .ft-lklist a:hover { color: var(--coral); }
.ft .ft-lksep { display: inline; margin: 0 7px; color: var(--line-2, #dcd7cd); }
.ft .ft-lklist { display: block; }
.ft-in { display: grid; grid-template-columns: 1.45fr 1fr 1fr 1fr 1fr; gap: 26px; padding: 36px 24px 24px; align-items: start; }
.ft h4 { font-size: 12px; color: var(--muted); letter-spacing: .06em; margin-bottom: 9px; text-transform: uppercase; }
.ft a, .ft p { display: block; font-size: 13px; color: var(--muted); margin: 0 0 6px; }
.ft a:hover { color: var(--ink); }
.ft-brand p { max-width: 300px; }
.ft-risk { color: var(--amber) !important; font-size: 12.5px !important; }
.ft-btm { border-top: 1px solid var(--line-2); }
.ft-btm .wrap { display: flex; justify-content: space-between; gap: 14px; flex-wrap: wrap; padding: 13px 24px 17px; font-size: 12px; color: var(--dim); }

.err-code { font-family: var(--mono); font-size: 60px; font-weight: 800; color: var(--coral); line-height: 1; }
.center-block { text-align: center; padding: 60px 0 80px; }
.empty { text-align: center; color: var(--dim); padding: 30px 0; }

.to-top {
  position: fixed; right: 22px; bottom: 24px; width: 40px; height: 40px; border-radius: 50%;
  border: 1px solid var(--line); background: var(--card); color: var(--ink); font-size: 16px; cursor: pointer;
  opacity: 0; pointer-events: none; transition: .22s; box-shadow: var(--sh-2); z-index: 50;
}
.to-top.show { opacity: 1; pointer-events: auto; }

/* ---------------------------------------------------------- 响应式 */
@media (max-width: 1080px) {
  .intro-grid, .scen-hero { grid-template-columns: 1fr; gap: 24px; }
  .scen-side { border-left: 0; border-top: 1px solid var(--line); padding-left: 0; padding-top: 16px; }
  .rank-wrap { grid-template-columns: 1fr; }
  .side { position: static; }
  .filter-card { display: block; }
  .ap-grid { grid-template-columns: 1fr; }
  .col-side { position: static; }
  .cols-2, .cols-3, .map-grid { grid-template-columns: 1fr 1fr; }
  .ft-in { grid-template-columns: 1fr 1fr 1fr; }
}
@media (max-width: 780px) {
  .menu { display: none; position: absolute; left: 0; right: 0; top: 66px; flex-direction: column;
    background: var(--paper); border-bottom: 1px solid var(--line); padding: 10px 16px 14px; box-shadow: var(--sh-2); }
  .menu.open { display: flex; }
  .nav-toggle { display: block; }
  .hd-login { display: none; }
  .intro { padding-top: 30px; }
  .statbar { grid-template-columns: 1fr 1fr; }
  .statbar div:nth-child(2) { border-right: 0; }
  .statbar div:nth-child(1), .statbar div:nth-child(2) { border-bottom: 1px solid var(--line); }
  .rrow { grid-template-columns: 36px 40px minmax(0, 1fr); }
  .rrow-act { grid-column: 1 / -1; justify-content: flex-end; }
  .scen-grid { grid-template-columns: 1fr 1fr; }
  .cols-2, .cols-3, .map-grid { grid-template-columns: 1fr; }
  .ap-hero { grid-template-columns: 1fr; }
  .ap-score-box { border-left: 0; border-top: 1px solid var(--line); padding-left: 0; padding-top: 12px; text-align: left; display: flex; align-items: baseline; gap: 12px; }
  .ap-score-box b { font-size: 30px; }
  .ap-id { gap: 12px; }
  .pc-grid { grid-template-columns: 1fr; }
  .ft-in { grid-template-columns: 1fr 1fr; gap: 20px; }
  .ft-brand { grid-column: 1 / -1; }
  .ft h4 { margin-top: 6px; }
  .article { padding: 20px 16px; }
}

/* ---------------------------------------------------------- 查询工具 */
.tool-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.tool-card {
  display: flex; gap: 14px; padding: 18px; border: 1px solid var(--line); border-radius: var(--r);
  background: var(--card); transition: .16s; box-shadow: var(--sh);
}
.tool-card:hover { box-shadow: var(--sh-2); border-color: #d8d1c4; transform: translateY(-2px); }
.tool-ico {
  width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center;
  font-size: 20px; background: var(--coral-soft); border: 1px solid #f7d3c7; flex-shrink: 0;
}
.tool-card h3 { font-size: 15.5px; margin: 0 0 4px; }
.tool-card p { font-size: 12.5px; color: var(--muted); margin: 0; line-height: 1.55; }
.tform { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.tform label { display: flex; flex-direction: column; gap: 5px; font-size: 12.5px; color: var(--muted); }
.tform select, .tform input {
  border: 1px solid var(--line); border-radius: 9px; padding: 9px 11px; font-size: 14px;
  font-family: var(--font); background: var(--paper); color: var(--ink); outline: none; width: 100%;
}
.tform select:focus, .tform input:focus { border-color: var(--coral); }
.tform .wide { grid-column: 1 / -1; }
.tform-actions { grid-column: 1 / -1; display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.res-head { display: flex; align-items: baseline; gap: 10px; margin: 24px 0 12px; }
.res-head h2 { font-size: 17px; margin: 0; }
.res-head span { font-size: 12.5px; color: var(--dim); }
.why { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 6px; }
.why span {
  font-size: 11.5px; color: var(--green); background: var(--green-soft);
  border: 1px solid #cbe8dc; border-radius: 6px; padding: 1px 7px;
}
.stat-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin: 14px 0 8px; }
.stat-row div { background: var(--paper); border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; }
.stat-row b { display: block; font-family: var(--mono); font-size: 20px; letter-spacing: -.02em; }
.stat-row span { font-size: 11.5px; color: var(--muted); }
.cmp { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.cmp th, .cmp td { border-bottom: 1px solid var(--line-2); padding: 9px 10px; text-align: left; vertical-align: top; }
.cmp tbody th { background: var(--paper); font-size: 12px; color: var(--muted); width: 132px; font-weight: 600; }
.cmp thead th { font-size: 13.5px; color: var(--ink); background: var(--paper); }
.tbl-zebra tbody tr:nth-child(even) { background: #fbfaf7; }
@media (max-width: 780px) {
  .tool-grid, .tform, .stat-row { grid-template-columns: 1fr; }
  .stat-row { grid-template-columns: 1fr 1fr; }
}

/* ---------------------------------------------------------- 可访问性 / 打印 */
:focus-visible { outline: 2px solid var(--coral); outline-offset: 2px; border-radius: 4px; }
.chip.on { background: var(--ink); border-color: var(--ink); color: #fff; }

@media print {
  .hd, .ft, .side, .filter-card, .pager, .to-top, .tool-card, .rrow-act, .notice, .block-more { display: none !important; }
  body { background: #fff; color: #000; }
  .rrow, .panel, .article { border-color: #ddd; box-shadow: none; page-break-inside: avoid; }
  .article { padding: 0; }
  a[href^="/"]::after { content: " (" attr(href) ")"; font-size: 11px; color: #666; }
}

/* ---------------------------------------------------------- 深色模式（跟随系统） */
@media (prefers-color-scheme: dark) {
  :root {
    --bg: #14151a; --paper: #1b1d23; --card: #1e2027;
    --line: #2c2f38; --line-2: #262931;
    --ink: #f3f1ec; --ink-2: #cfccc6; --muted: #a5a19a; --dim: #7e7a73;
    --coral: #ff7a52; --coral-soft: #33221c;
    --green: #3ecf9a; --green-soft: #1c2b26;
    --amber: #e0a13a; --red: #ff6b5e;
    --sh: 0 1px 3px rgba(0, 0, 0, .45);
    --sh-2: 0 14px 34px -18px rgba(0, 0, 0, .8);
  }
  body { background: var(--bg); color: var(--ink); }
  .hd { background: rgba(20, 21, 26, .92); border-color: var(--line); }
  .brand-mark { background: var(--ink); color: #14151a; }
  .brand-txt em { color: var(--dim); }
  .menu a:hover { background: #24262e; }
  .menu a.on { background: none; }
  .btn-solid { background: var(--ink); color: #14151a; border-color: var(--ink); }
  .btn-solid:hover { background: #fff; color: #000; }
  .btn-line { color: var(--ink-2); border-color: var(--line); }
  .btn-line:hover { border-color: #4b4e58; color: var(--ink); }
  .qsearch input, .fsearch input, .fprices label, .chip, .tag-pill, .fchip { background: var(--paper); color: var(--ink); }
  .fchip.on { background: var(--coral); border-color: var(--coral); color: #1a120e; }
  .scen-card, .pcard, .rrow, .panel, .table-card, .tool-card, .map-card, .filter-card { background: var(--card); }
  .rrow:hover { border-color: #3a3d47; }
  .score { background: #eceae4; color: #15171c; }
  .score.mid { background: #b9b5ad; color: #15171c; }
  .score.low { background: #7d7972; color: #15171c; }
  .pill { background: var(--paper); border-color: var(--line); color: var(--muted); }
  .pill-scen { background: var(--coral-soft); border-color: #51301f; color: var(--coral); }
  .statbar div { border-color: var(--line); }
  .table-card thead th, .tbl th { background: var(--paper); }
  .tbl td { border-color: var(--line-2); }
  .prose pre { background: #0c0d10; }
  .prose code { background: #2a2c33; }
  .prose blockquote { background: var(--paper); border-color: #3a3d47; }
  .notice { background: #2a2418; border-color: #4a3c22; }
  .panel-risk { background: #2a2418; border-color: #4a3c22; }
  .ft, .site-foot { background: var(--paper); }
  .hero-card { background: linear-gradient(125deg, #191c24 0%, #1f2330 50%, #2b3140 100%); }
  .to-top { background: var(--card); color: var(--ink); }
  .art-kind, .kind-news, .kind-tech, .kind-report { filter: brightness(1.15); }
  /* 深色模式下用浅色底 + 深色字的按钮，文字要跟着变深 */
  .qsearch button, .fsearch button, .btn-search, .sortbar a.on, .pg.active, .chip.on,
  .filter-card h2 a:hover, .pager .pg.active { color: #14151a; }
  .qsearch button:hover, .btn-search:hover { background: #fff; }
  .table-card, .cmp tbody th, .cmp thead th { background: var(--card); }
  .cmp tbody th, .cmp thead th { color: var(--muted); }
  .statbar div, .site-foot, .ft-btm { border-color: var(--line); }
}
/* ---------------------------------------------------------- 前台互动表单 */
.fb { margin-top: 18px; }
.fb-title { font-size: 16px; margin: 0 0 10px; font-weight: 700; }
.fb-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 10px; }
.fb input[type=text], .fb textarea {
  width: 100%; border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px;
  font-family: var(--font); font-size: 13.5px; background: var(--paper); color: var(--ink); outline: none;
}
.fb textarea { resize: vertical; line-height: 1.7; }
.fb input:focus, .fb textarea:focus { border-color: var(--coral); background: #fff; }
.fb-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 10px; }
.fb-honey { position: absolute; left: -9999px; opacity: 0; height: 0; width: 0; }
.fb-ok { background: var(--green-soft, #eafaf3); border: 1px solid #bfe9d9; color: #0b8f63;
  padding: 8px 12px; border-radius: 8px; font-size: 13px; margin: 0 0 12px; }
.cmts { margin-top: 22px; border-top: 1px dashed var(--line); padding-top: 16px; }
.cmt { padding: 10px 0; border-bottom: 1px dashed var(--line-2, #eee); }
.cmt:last-child { border-bottom: 0; }
.cmt-h { display: flex; gap: 10px; align-items: baseline; margin-bottom: 4px; font-size: 13px; }
.cmt p { margin: 0; font-size: 13.5px; line-height: 1.75; color: var(--ink-2); }
@media (max-width: 640px) { .fb-row { grid-template-columns: 1fr; } }

/* ---------------------------------------------------------- 下载中心 */
.dl-filter { margin-bottom: 18px; }
.dl-sec { margin-bottom: 26px; }
.dl-h { font-size: 17px; margin: 0 0 10px; font-weight: 800; letter-spacing: .01em; }
.dl-panel { padding: 0; overflow: hidden; }
.dl-tbl { margin: 0; }
.dl-tbl th { font-size: 12px; color: var(--dim); text-transform: none; }
.dl-tbl td { vertical-align: middle; padding: 12px 14px; }
.dl-tbl td.mono { white-space: nowrap; }
.dl-tbl th:nth-child(3), .dl-tbl th:nth-child(4), .dl-tbl th:nth-child(6) { white-space: nowrap; }
.dl-app { display: flex; gap: 12px; align-items: flex-start; }
.dl-ico { border-radius: 8px; background: #fff; object-fit: contain; box-shadow: 0 1px 2px rgba(0,0,0,.08); flex: none; }
.dl-name { font-weight: 700; font-size: 14px; display: flex; gap: 8px; align-items: baseline; }
.dl-en { font-weight: 400; font-size: 11.5px; color: var(--dim); }
.dl-sum { font-size: 12.5px; color: var(--muted); margin-top: 3px; line-height: 1.55; }
.dl-plats { display: flex; flex-wrap: wrap; gap: 4px; max-width: 200px; }
.dl-tbl th:nth-child(2), .dl-tbl td:nth-child(2) { width: 240px; }
.dl-plat-cell { font-size: 12px; color: var(--ink-2); line-height: 1.7; }
.dl-tbl td:nth-child(5) { white-space: nowrap; }
.dl-tbl th:nth-child(7), .dl-tbl td:nth-child(7) { width: 172px; white-space: nowrap; }
.dl-plats .pl { font-size: 11px; padding: 1px 7px; border-radius: 5px; background: var(--paper);
  border: 1px solid var(--line); color: var(--ink-2); white-space: nowrap; }
.dl-tbl .btn-solid.sm, .dl-tbl .btn-line.sm { padding: 5px 10px; font-size: 12px; }
.dl-note { margin-top: 8px; }
.dl-note h3 { font-size: 14px; margin: 0 0 8px; }
.dl-note ul { margin: 0; padding-left: 1.1em; color: var(--muted); font-size: 13px; line-height: 1.9; }
@media (max-width: 820px) {
  .dl-tbl thead { display: none; }
  .dl-tbl tr { display: block; border-bottom: 1px solid var(--line); padding: 10px 0; }
  .dl-tbl td { display: block; border: 0; padding: 3px 14px; }
  .dl-tbl td:nth-child(2)::before { content: "平台："; color: var(--dim); font-size: 11px; }
}

/* ---------------------------------------------------------- 工具详情页 */
.app-hero { display: grid; grid-template-columns: 72px minmax(0, 1fr) 240px; gap: 20px; align-items: start;
  background: var(--card); border: 1px solid var(--line); border-radius: 16px; padding: 22px 24px; box-shadow: var(--sh); }
.app-hero-ico { border-radius: 14px; box-shadow: 0 2px 8px rgba(0,0,0,.12); background: #fff; }
.app-hero h1 { font-size: 26px; margin: 0 0 6px; letter-spacing: -.01em; }
.app-en { font-size: 13px; color: var(--dim); font-weight: 400; margin-left: 8px; }
.app-meta { display: flex; flex-wrap: wrap; gap: 18px; font-size: 12.5px; color: var(--muted); }
.app-meta .am b { color: var(--ink); font-weight: 700; margin-right: 4px; }
.app-hero-act { display: flex; flex-direction: column; gap: 8px; }
.app-sec { margin-top: 26px; }
.shot-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.shot-grid img { width: 100%; border-radius: 12px; border: 1px solid var(--line); background: #fff; }
.shot-mock { border: 1px solid var(--line); border-radius: 14px; overflow: hidden; background: var(--card); box-shadow: var(--sh); }
.sm-bar { display: flex; align-items: center; gap: 6px; padding: 8px 12px; background: var(--paper); border-bottom: 1px solid var(--line); }
.sm-bar span { width: 9px; height: 9px; border-radius: 50%; background: #d8d3c9; }
.sm-bar i { margin-left: 8px; font-style: normal; font-size: 11.5px; color: var(--dim); }
.sm-body { display: flex; gap: 14px; align-items: center; padding: 26px 22px; }
.sm-body b { font-size: 14px; }
.log-panel { padding: 6px 0; }
.log-row { display: grid; grid-template-columns: 110px minmax(0, 1fr) auto; gap: 14px; align-items: start;
  padding: 14px 18px; border-bottom: 1px solid var(--line-2); }
.log-row:last-child { border-bottom: 0; }
.log-row.is-new { background: linear-gradient(90deg, var(--coral-soft), transparent 70%); }
.log-v { font-size: 14px; display: flex; align-items: center; gap: 6px; }
.log-tag { font-size: 10px; padding: 1px 6px; border-radius: 4px; background: var(--coral); color: #fff; }
.log-meta { font-size: 11.5px; color: var(--dim); margin-bottom: 4px; }
.log-notes { font-size: 13px; color: var(--ink-2); line-height: 1.7; }
.cols-4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.app-card { display: flex; gap: 10px; align-items: center; padding: 12px 14px; background: var(--card);
  border: 1px solid var(--line); border-radius: 12px; text-decoration: none; color: var(--ink); }
.app-card:hover { border-color: var(--coral); }
.app-card img { border-radius: 8px; }
@media (max-width: 860px) {
  .app-hero { grid-template-columns: 56px minmax(0, 1fr); }
  .app-hero-act { grid-column: 1 / -1; }
  .cols-4 { grid-template-columns: 1fr 1fr; }
  .log-row { grid-template-columns: 84px minmax(0, 1fr); }
}

/* ---------------------------------------------------------- 选择器 */
.pk-banner { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap;
  background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 14px 18px; margin-bottom: 18px; }
.picker { padding: 8px 20px 20px; }
.pk-step { display: flex; gap: 14px; padding: 16px 0; border-bottom: 1px dashed var(--line); }
.pk-step:last-of-type { border-bottom: 0; }
.pk-no { width: 24px; height: 24px; border-radius: 50%; background: var(--coral); color: #fff; font-size: 12px;
  display: flex; align-items: center; justify-content: center; flex: none; margin-top: 2px; }
.pk-body h3 { font-size: 14px; margin: 0 0 10px; }
.pk-chip { display: inline-flex; align-items: center; gap: 6px; padding: 7px 14px; border-radius: 999px;
  border: 1px solid var(--line); background: var(--paper); font-size: 13px; cursor: pointer; user-select: none; }
.pk-chip input { position: absolute; opacity: 0; width: 0; height: 0; }
.pk-chip.on, .pk-chip:has(input:checked) { background: var(--ink); border-color: var(--ink); color: #fff; }
.pk-act { display: flex; align-items: center; gap: 14px; padding-top: 16px; }
.pk-result { margin-top: 24px; }
.pk-result .cols-2 { padding-top: 8px; }
.pk-card { position: relative; background: var(--card); border: 1px solid var(--line); border-radius: 16px;
  padding: 18px 20px; box-shadow: var(--sh); }
.pk-rank { position: absolute; top: -10px; left: 18px; font-size: 11px; padding: 2px 9px; border-radius: 6px;
  background: var(--coral); color: #fff; }
.pk-head { display: flex; gap: 12px; align-items: center; margin-bottom: 10px; }
.pk-head img { border-radius: 10px; }
.pk-head b { font-size: 16px; }
.pk-sum { font-size: 13px; color: var(--muted); line-height: 1.7; margin: 0; }

/* 品牌色标（替代纯灰字母块） */
.logo-tile { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px;
  border-radius: 12px; color: #fff; font-weight: 700; font-size: 18px; letter-spacing: 0;
  box-shadow: 0 2px 6px rgba(0,0,0,.12), inset 0 1px 0 rgba(255,255,255,.25); }
.rrow-logo .logo-tile { width: 42px; height: 42px; font-size: 17px; }
.reco-badge { display: inline-flex; align-items: center; gap: 3px; font-size: 10.5px; padding: 1px 7px;
  border-radius: 5px; background: var(--coral); color: #fff; font-weight: 600; vertical-align: 2px; }
.dl-reco { font-size: 11px; color: var(--coral); margin-left: 6px; }
.reco-box { border: 1px solid #f3d8ca; background: linear-gradient(180deg,#fff8f4,#fff); border-radius: 14px;
  padding: 16px 18px; margin-top: 18px; }
.reco-box h3 { font-size: 14px; margin: 0 0 8px; color: var(--coral); }
.reco-box ul { margin: 0; padding-left: 1.1em; font-size: 13px; line-height: 1.9; color: var(--ink-2); }

/* ---------------------------------------------------------- 入驻申请页 */
.apply-grid { display: grid; grid-template-columns: 340px minmax(0, 1fr); gap: 22px; align-items: start; }
.apply-steps h2, .apply-note h2, .apply-form h2 { font-size: 15px; margin: 0 0 12px; }
.apply-steps ol { margin: 0; padding: 0; list-style: none; counter-reset: s; }
.apply-steps li { display: flex; flex-direction: column; gap: 3px; padding: 10px 0; border-bottom: 1px dashed var(--line-2); }
.apply-steps li:last-child { border-bottom: 0; }
.apply-steps li span { font-size: 13px; color: var(--muted); }
.apply-steps li span::before { counter-increment: s; content: counter(s) ". "; color: var(--coral); font-weight: 700; }
.apply-steps li b { font-size: 13px; font-weight: 600; }
.apply-note { margin-top: 18px; }
.apply-note p { font-size: 13px; color: var(--ink-2); line-height: 1.8; margin: 0 0 10px; }
.apply-note ul { margin: 0 0 10px; padding-left: 1.1em; font-size: 12.5px; color: var(--muted); line-height: 1.9; }
.afld { display: block; margin-bottom: 14px; }
.afld > span { display: block; font-size: 12.5px; color: var(--muted); margin-bottom: 6px; }
.afld input, .afld select, .afld textarea { width: 100%; border: 1px solid var(--line); border-radius: 10px;
  padding: 11px 13px; font-family: var(--font); font-size: 13.5px; background: var(--paper); color: var(--ink); outline: none; }
.afld input:focus, .afld select:focus, .afld textarea:focus { border-color: var(--coral); background: #fff; }
.afld textarea { resize: vertical; line-height: 1.7; }
.fb-err { background: #fdecec; border: 1px solid #f5cfcf; color: #c0392b; padding: 8px 12px; border-radius: 8px;
  font-size: 13px; margin-bottom: 12px; }
@media (max-width: 900px) { .apply-grid { grid-template-columns: 1fr; } }

/* 下载页细分组标题行 */
.dl-tbl tr.dl-sub td { background: var(--paper); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);
  font-size: 12.5px; font-weight: 700; color: var(--ink); padding: 7px 14px; }
.dl-tbl tr.dl-sub td span { font-weight: 400; margin-left: 8px; }

/* 场景 / 分类图标（SVG 图片，替代 emoji） */
.scen-ico img, img.scen-ico { width: 34px; height: 34px; border-radius: 9px; display: block; }
img.scen-ico { box-shadow: 0 1px 3px rgba(0,0,0,.12); }
.scen-card img.scen-ico { width: 40px; height: 40px; margin-bottom: 8px; }
.cat-ico { vertical-align: -4px; margin-right: 4px; border-radius: 5px; }
.ico-inline { width: 16px; height: 16px; vertical-align: -3px; margin-right: 4px; border-radius: 4px; }

/* 机场品牌标（生成的 SVG） */
img.logo-img { width: 42px; height: 42px; border-radius: 12px; display: block; flex: none;
  box-shadow: 0 1px 3px rgba(0,0,0,.14); background: #fff; }
.rrow-logo img.logo-img { width: 42px; height: 42px; }
.ap-hero-logo img.logo-img { width: 64px; height: 64px; border-radius: 16px; }

.ap-logo img.logo-img { width: 64px; height: 64px; border-radius: 16px; }
.rel-logo img.logo-img { width: 32px; height: 32px; border-radius: 9px; }

/* 友情链接 */
.link-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 12px; }
.link-card { display: flex; flex-direction: column; gap: 4px; padding: 14px 16px; background: var(--card);
  border: 1px solid var(--line); border-radius: 12px; text-decoration: none; color: var(--ink); transition: .15s; }
.link-card:hover { border-color: var(--coral); transform: translateY(-1px); box-shadow: var(--sh-2); }
.link-top { display: flex; align-items: center; gap: 9px; }
.link-ico { border-radius: 9px; flex: none; box-shadow: 0 1px 3px rgba(0,0,0,.12); }
.link-name { font-weight: 700; font-size: 14px; }
.ft-links { display: block; font-size: 12px; color: var(--muted); margin: 12px 0 0; line-height: 1.95;
  max-width: 320px; }
.ft-links a, .ft-links a:visited { display: inline; margin: 0; padding: 0; color: var(--ink-2);
  text-decoration: none; border-bottom: 1px solid transparent; }
.ft-links a:hover { color: var(--coral); border-bottom-color: var(--coral); }
.ft-links .sep { display: inline; margin: 0 5px; color: var(--dim); }
.link-desc { font-size: 12.5px; color: var(--muted); line-height: 1.55; }
.link-host { font-size: 11px; color: var(--dim); margin-top: 2px; }

/* 404 / 500 */
.err-wrap { padding: 48px 0 60px; }
.err-hero { text-align: center; margin-bottom: 30px; }
.err-code { font-size: 92px; font-weight: 800; line-height: 1; letter-spacing: -.03em;
  background: linear-gradient(135deg, var(--coral), #f0a05a); -webkit-background-clip: text; background-clip: text;
  color: transparent; margin-bottom: 6px; }
.err-hero h1 { font-size: 24px; margin: 0 0 8px; }
.err-search { max-width: 520px; margin: 16px auto 0; }
.err-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.err-h { font-size: 14px; margin: 0 0 10px; font-weight: 700; }
.err-rows { display: flex; flex-direction: column; gap: 8px; }
.err-row { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid var(--line);
  border-radius: 10px; text-decoration: none; color: var(--ink); }
.err-row:hover { border-color: var(--coral); }
.err-row-main { flex: 1; display: flex; flex-direction: column; }
.err-row-main em { font-style: normal; }
.err-links { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.err-links a { padding: 9px 12px; border: 1px solid var(--line); border-radius: 10px; text-decoration: none;
  color: var(--ink-2); font-size: 13px; }
.err-links a:hover { border-color: var(--coral); color: var(--ink); }
.err-apps { display: flex; flex-wrap: wrap; gap: 8px; }
.err-apps a { display: flex; flex-direction: column; align-items: center; gap: 4px; width: 74px;
  padding: 8px 4px; border: 1px solid var(--line); border-radius: 10px; text-decoration: none; color: var(--muted); }
.err-apps a:hover { border-color: var(--coral); color: var(--ink); }
.err-apps img { border-radius: 8px; }
.err-apps span { font-size: 10.5px; text-align: center; }
.err-posts { margin: 0; padding-left: 1.1em; font-size: 13px; line-height: 1.9; }
.err-posts a { color: var(--ink-2); text-decoration: none; }
.err-posts a:hover { color: var(--coral); }
.err-acts { display: flex; gap: 10px; justify-content: center; margin-top: 26px; flex-wrap: wrap; }
@media (max-width: 860px) { .err-grid { grid-template-columns: 1fr; } .err-code { font-size: 70px; } }

/* ---------------------------------------------------------- 移动端防溢出 */
@media (max-width: 780px) {
  html, body { overflow-x: hidden; max-width: 100%; }
  .wrap { padding: 0 16px; }
  .intro-lede, .qsearch, .intro p, .hero p, .block > p, .page-h p { max-width: 100% !important; }
  .link-grid, .scen-grid, .cols-2, .cols-3, .map-grid, .err-grid, .err-links,
  .ap-grid, .rank-wrap, .intro-grid, .scen-hero, .fb-row { grid-template-columns: 1fr !important; }
  .qsearch input[type=search], .qsearch input[type=text] { min-width: 0; flex: 1; }
  .rrow { grid-template-columns: 32px 38px minmax(0, 1fr) !important; }
  .ft-in { grid-template-columns: 1fr !important; }
  .ft-links { max-width: 100%; }
  h1 { font-size: 26px; word-break: break-word; }
  .link-name, .link-desc, .link-host { word-break: break-word; }
  img, table { max-width: 100%; }
  .tbl { display: block; overflow-x: auto; }
}

@media (max-width: 480px) {
  .statbar { grid-template-columns: 1fr !important; }
  .statbar div { border-right: 0 !important; border-bottom: 1px solid var(--line); }
  .hd .wrap { gap: 8px; }
}
