/* ============================================================================
 * [GEO-F7] GEO landing 基础层 —— 单一真源（2026-09-16）
 * 此前 12 个 landing 模板（faq / keyword / landing_*）各自在 <head> 内嵌一份
 * chrome（body / topbar / wrap / foot / geo-answer）与基础排版，逐字复制 12 份，
 * 任一修正需同步 12 文件 → 风格漂移根因。现集中于此，模板仅 <link> 引用。
 * 仅收口「全站一致」的部分；各模板独有的 hero / cta / card 标题条 / 参数表列宽 / shot
 * 等仍留在各自模板内（带本类目主题色，保持原有视觉，零回归）。
 * 导航色约定：面包屑/页脚链接统一为品牌红 #e4393c（全站一致），内容区 hero/cta
 * 保留类目主题色（各 landing 类型一色，属有意设计）。
 * 引用方式（自动破缓存，无需手动清缓存）：
 *   <link rel="stylesheet" href="/static/geo/geo_landing.css?v={:filemtime(...)}">
 * 兼容：已建立本文件内的 :root 设计变量层（见文末 [GEO149]），并采用
 *   「字面量 + var() 双声明」写法 —— 不支持 CSS 变量的老旧内核会整条丢弃 var()
 *   声明、回退到前一条字面量声明，故老旧内核亦安全、零视觉回归。
 * ========================================================================== */

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;
  background: #f5f6f8;
  background: var(--geo-bg-lp, #f5f6f8);
  color: #1f2329;
  color: var(--geo-text-strong, #1f2329);
  line-height: 1.8;
}

.topbar {
  background: #fff;
  background: var(--geo-surface-lp, #fff);
  border-bottom: 1px solid #eee;
  border-bottom: 1px solid var(--geo-border-lp, #eee);
  padding: 12px 16px;
  font-size: 14px;
  color: #888;
  color: var(--geo-text-label-lp, #888);
}
.topbar a { color: #e4393c; color: var(--geo-brand-lp, #e4393c); text-decoration: none; }

.wrap { max-width: 720px; margin: 0 auto; padding: 16px; }

.foot { text-align: center; color: #aaa; color: var(--geo-text-faint-lp, #aaa); font-size: 12px; padding: 20px; }
.foot a { color: #e4393c; color: var(--geo-brand-lp, #e4393c); text-decoration: none; }

/* geo-answer：AI 答案高亮块。全站固定品牌红左边框（与类目主题色无关，故字面量固定），
   保证 12 模板视觉一致；此前各模板此块完全一致，现单一真源。 */
.geo-answer {
  background: #f7f8fa;
  background: var(--geo-surface-2-lp, #f7f8fa);
  border-left: 3px solid #e4393c;
  border-left: 3px solid var(--geo-brand-lp, #e4393c);
  border-radius: 6px;
  padding: 10px 12px;
  margin: 12px 0 14px;
  font-size: 14px;
  line-height: 1.8;
}
.geo-answer-sum { color: #333; color: var(--geo-text, #333); margin: 0; }
.geo-answer-facts { list-style: none; margin: 6px 0 0; padding: 0; }
.geo-answer-facts li { color: #666; color: var(--geo-text-sub, #666); }
.geo-answer-facts li span { color: #999; color: var(--geo-text-mute, #999); margin-right: 6px; }
.geo-answer-facts li b { color: #1f2329; color: var(--geo-text-strong, #1f2329); font-weight: 600; }

/* [GEO-P0-1] 可见新鲜度：更新时间以语义 <time datetime="ISO8601"> 输出。
   样式与所在事实行一致（继承 b 的字色/字重），仅规整数字宽度避免日期跳动。 */
.geo-answer-facts li time { color: inherit; font-weight: inherit; font-variant-numeric: tabular-nums; }

/* [GEO-P1-1] 语义化参数表（<table>/<th scope="row">/<caption>）。
   视觉与旧 .info-row 键值行等价（左键右值 + 虚线分隔），故零视觉回归；
   而 AI Overviews / 生成式引擎对 <table> 的结构化抽取优于等价的 div 布局。
   各模板仅在本文件之后覆盖 th 列宽（见各模板 residual）。 */
.geo-cmp { width: 100%; border-collapse: collapse; font-size: 14px; }
.geo-cmp caption { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.geo-cmp th { text-align: left; font-weight: 400; color: #999; color: var(--geo-text-mute, #999); vertical-align: top; padding: 9px 0; }
.geo-cmp td { color: #333; color: var(--geo-text, #333); vertical-align: top; padding: 9px 0; }
.geo-cmp tbody tr + tr th, .geo-cmp tbody tr + tr td { border-top: 1px dashed #f0f0f0; border-top: 1px dashed var(--geo-divider-lp, #f0f0f0); }
.geo-cmp a { color: #e4393c; color: var(--geo-brand-lp, #e4393c); text-decoration: none; }

/* [GEO-P0-2] 实体页「常见问题」区块。数据全部取自该实体自身已公开的真实字段
   （价格 / 库存 / 品牌 / 时间等，与 .geo-answer 同一取数），零虚构；
   同步发射 schema.org FAQPage，满足「问答内容必须在页面上可见」的合规前提。
   键值关系沿用 .geo-cmp 的视觉语言，保持与页面其他参数区一致。 */
.geo-faq h2 { font-size: 16px; margin-bottom: 10px; }
.geo-faq .geo-faq-q { font-size: 14px; font-weight: 600; color: #1f2329; color: var(--geo-text-strong, #1f2329); margin: 12px 0 4px; }
.geo-faq .geo-faq-a { font-size: 14px; color: #444; color: var(--geo-text-2, #444); margin: 0; }
/* [F-C] 独立 .geo-faq-a：方法论页快照区有 2 处 .geo-faq-a 不在 .geo-faq 容器内，补独立规则命中；字面量+var() 双声明同 F1 约定。 */
.geo-faq-a { font-size: 14px; color: #444; color: var(--geo-text-2, #444); margin: 0; }

/* [GEO-P1-2] 文章页「参考来源」区块。URL 全部取自正文真实外链（非本站域），零虚构；
   与外链统一 rel="nofollow noopener"（沿用站点既有链接策略）。视觉沿用 .geo-faq 卡片语言。 */
.geo-cite h2 { font-size: 16px; margin-bottom: 10px; }
.geo-cite .geo-cite-list { margin: 0; padding-left: 20px; }
.geo-cite .geo-cite-list li { font-size: 14px; line-height: 1.9; color: #444; color: var(--geo-text-2, #444); }
.geo-cite .geo-cite-list a { color: #e4393c; color: var(--geo-brand-lp, #e4393c); text-decoration: none; word-break: break-all; }
.geo-cite .geo-cite-list a:hover { text-decoration: underline; }

/* ============================================================================
 * [GEO149] 前台 landing 设计变量层 —— 对齐后台 geo_admin.css 命名范式
 *
 * 定性（重要）：后台管理面板层 out/view_base/static/geo_admin.css:14-34 早已建立
 * 完整的 :root --geo-* 变量体系（[GEO143]/[GEO149]）；前台 landing 层此前零变量，
 * 导致前后台两套前端风格割裂。本层把前台「补齐到与后台同构的命名范式」，
 * 属等价抽提（值 = 替换前原字面量，逐处等值），不是重新设计。
 *
 * 与后台 geo_admin.css 的对应关系：
 *   复用（同名同值，零冲突）：
 *     --geo-text-sub   = #666  ←→ geo_admin.css:32  --geo-text-sub: #666
 *     --geo-text-mute  = #999  ←→ geo_admin.css:31  --geo-text-mute: #999
 *   规避重名（后台存在语义近似但取值不同者，加 -lp 后缀隔离）：
 *     --geo-text-label-lp = #888  ←→ 后台 --geo-text-meta: #8c8c8c（值不同，故不共用名）
 *
 * 同页变量冲突评估：本文件是前台 landing 层，仅由 12 个前台模板（view_mod/geo/*.html）
 *   <link> 引用；后台 geo_admin.css 仅由后台页（yingxiao_geo/*、geo_publish/*）引用。
 *   两者「互不共载」（无任何页面同时加载），故 :root 变量名在物理上不存在冲突。
 *
 * 兼容：CSS 自定义属性需 Chrome51+ / Firefox31+ / Safari9.1+ / Edge15+。
 *   为兑现本文件原注释「老旧内核亦安全」的承诺，正文中每一处引用均采用
 *   「先字面量 → 后 var(带原值 fallback)」的双声明写法：不支持 var() 的老内核会
 *   整条丢弃第二条声明、回退到第一条字面量 ⇒ 与改造前逐字节等值，零视觉回归。
 * ========================================================================== */
:root {
  /* —— 品牌色（前台独有：后台品牌为绿 #16baaa，语义不同，故加 -lp 避免将来共载歧义）—— */
  --geo-brand-lp:      #e4393c;  /* 前台商城品牌红：面包屑/页脚/表内链接/答案块左边框（与 <meta theme-color> 同源） */

  /* —— 文本层级（语义名对齐后台；取值前台自有）—— */
  --geo-text-strong:   #1f2329;  /* 一级标题/正文（前台独有：后台无此层级） */
  --geo-text:          #333;     /* 二级正文（前台独有） */
  --geo-text-2:        #444;     /* FAQ/引用正文（前台独有） */
  --geo-text-sub:      #666;     /* ✅ 复用后台同名同值（geo_admin.css:32 = #666，零冲突） */
  --geo-text-label-lp: #888;     /* topbar/副标题（后台 --geo-text-meta=#8c8c8c 取值不同 → 加 -lp） */
  --geo-text-mute:     #999;     /* ✅ 复用后台同名同值（geo_admin.css:31 = #999，零冲突） */
  --geo-text-faint-lp: #aaa;     /* 页脚（后台无此层级 → 加 -lp） */

  /* —— 背景与描边（后台无对应语义 → 前台独有）—— */
  --geo-bg-lp:         #f5f6f8;  /* 页面底色 */
  --geo-surface-lp:    #fff;     /* 卡片/顶栏（后台亦用 #fff 但无变量名，故加 -lp） */
  --geo-surface-2-lp:  #f7f8fa;  /* 答案块底 */
  --geo-border-lp:     #eee;     /* 顶栏下边框 */
  --geo-divider-lp:    #f0f0f0;  /* 虚线分隔/底边框/占位底（后台亦有 #f0f0f0 硬编码，但无变量名） */
}

/* ============================================================================
 * [GEO-UI2026] 前台落地页视觉对齐主站商城 —— 只增不改层（2026-09-26）
 * 纪律：① 13 个模板零改动（结构标记 .geo-answer/.geo-cite/.geo-faq/JSON-LD 不碰，
 *        保 W1-4 就绪度评分判据）；② 本层全部置于文件末尾，靠后行规则覆盖同名属性
 *        （同特异性后行胜出），原有逐字规则零字节改动 ⇒ 可整层回滚；
 *      ③ 模板 residual 内嵌样式（hero 类目色/cta 类目色）属有意设计，不覆盖其色值。
 * 对齐点：卡片阴影层次 / 占位底统一 / 按压反馈 / 滚动条 / topbar 常驻 / 胶囊标签 / 焦点可达性。
 * ========================================================================== */

/* —— 卡片阴影升级：0 1px 3px → 主站商城同族「0 2px 8px」柔和双层感（覆盖 13 模板同名 .card） —— */
.card { box-shadow: 0 2px 8px rgba(0,0,0,.05); }

/* —— 图片占位底统一：#f0f0f0 / #f2f3f5 两种并存 → 统一 #f2f3f5（中性浅灰） —— */
.cover, .shot, .gallery img { background: #f2f3f5; }

/* —— CTA 主按钮：过渡 + 按压反馈 + 通用轻阴影（类目色由模板 residual 保留，此处不染色） —— */
.cta {
  transition: opacity .15s ease, transform .15s ease;
  box-shadow: 0 4px 12px rgba(0,0,0,.08);
  -webkit-tap-highlight-color: transparent;
}
.cta:active { opacity: .85; transform: scale(.985); }
.cta-disabled { box-shadow: none; }
.cta-disabled:active { opacity: 1; transform: none; }   /* 失效态不反馈按压 */

/* —— 全站链接：移动端去高亮闪烁 + 按压反馈 + 键盘焦点可达性 —— */
a { -webkit-tap-highlight-color: rgba(0,0,0,0); }
.topbar a:active, .foot a:active, .geo-cmp a:active, .geo-cite a:active, ul.links a:active { opacity: .7; }
a:focus-visible { outline: 2px solid #e4393c; outline: 2px solid var(--geo-brand-lp, #e4393c); outline-offset: 2px; border-radius: 4px; }

/* —— topbar 面包屑常驻（对齐主站商城顶部导航常驻行为）—— */
.topbar { position: sticky; top: 0; z-index: 20; }

/* —— 横向图集滚动条隐藏（对齐主站横滑组件无滚动条语言）—— */
.gallery, .shots { scrollbar-width: none; }
.gallery::-webkit-scrollbar, .shots::-webkit-scrollbar { display: none; }

/* —— 标签胶囊化：keyword 页 .tag 4px 方角 → 主站标签胶囊语言（collage 页 12px 胶囊不受影响） —— */
.tag { border-radius: 999px; }

/* —— 排版微调：标题字距 + 正文行长舒适度 —— */
h1 { letter-spacing: .2px; }
.geo-answer-sum { line-height: 1.85; }
