/* ==========================================================================
   养鲜家 · 药食同源数智平台 — 站点主题（site_theme.css）
   build_pages.py 会原样复制为 site/assets/yxj.css
   设计语言：浅松绿（品牌绿 #17843C 锚）× 米玉白 × 淡金 · 宋体标题 · 大留白 · 圆角卡片
   v2 2026-10-01：全绿系提亮（对齐品牌参考色）；对比度已过 WCAG 校验（do/tools/palette_check.py）
   v2.1 2026-10-15：手机端舒适度（标准 375 基准 · 不为曲屏做特殊处理）——触控目标 ≥40px：导航展开键 /
   汉堡键 44px、品牌标热区、日报名按钮、省份行、品种 chips、官方直达行；页脚链接行距放宽；品牌副标
   9.5→10.5px；官方直达「地标持有」类行手机端改纵向（标签独立行，防挤压折行）。桌面视觉零改动。
   v2.2 2026-10-15：手机端纵向紧凑化（用户直令「手机版屏幕拉的太长了」）——≤640px 收紧段距 / 段头区 /
   卡片内距 / Hero / 数据飘带 / 六卡段（行业动态六卡改 2 列）；首页 8485→6620px（约 −22%）；桌面零改动。
   完整口径与实测见文件尾「手机端紧凑化」总段（单点维护 · 回退 = 删该段）。
   v2.3 2026-10-16：「AI 数据聚合」栏目页（/data/）样式——.dt-* 数据板块卡（桌面 2 列 / ≤900px 单列）＋ #open 机器入口链接着色＋七栏窄桌面导航收紧（921-1080px）；回退 = 删该两段（单点维护）。
   v2.4 2026-10-16：站长模式要素 .adm-only（/data/「机器可读入口」仅站长可见——访客隐藏、令链授权后 .adm-on 放行）；回退 = 删该段（单点维护）。
   v2.5 2026-10-16：关于页「优势特色」区块（.adv-* 两卡）＋ /shops/ 平台服务五项栅格 .svc-grid-5（基础 .svc-grid 仍 4 列，供 /data/ 复用）；回退 = 删 .adv-* 段 / 去掉 svc-grid-5 与规则。
   v2.22 2026-10-18：分享落地（自动优化）——商家卡锚点 .sup-card 加 scroll-margin-top（粘性页头不再遮卡头）
   ＋ .sup-card.sup-hl 轻高亮（受赠者点开 ?fx=sp#sup-xxx 时目标卡亮 3.4s，由 site_app.js 加/删类）；
   回退 = 删「分享落地」两行与 site_app.js 尾段 IIFE。
   v2.23 2026-10-18：商家卡「商家微信」二维码（contact.wechat_qr）——缩略图 .sup-wx ＋ 放大浮层 .wx-*；
   回退 = 删本两段（.sup-wx 段位于分享面板段后）。
   v2.24 2026-10-18：/svc/picks/「交集图」紧凑化（用户直令「这个占的版面太多」）——.vf-t/.vf-body/.vf-lg/.vf-res；
   圆内只留编号、说明归图例（≤640px 落到图下）、结论归结果条；回退 = 删该段（页面同时撤 figs 字段）。
   v2.26 2026-10-18：精选商家「单商家品种 · 两两并排」（用户直令二次修订「只有一个商家的药材，与另一个
   也只有一个商家的药材并放到一行；减少网页长度」）——.pk-pair 两列栅格（相邻两个单商家组合进一行 ·
   各自仍是独立 details 组 · ≤900px 单列）；回退 = 删该段与 build_pages._dir_picks_html 的配对段。
   v2.27 2026-10-18：精选商家「单商家也用完整卡」（用户直令三次修订「地黄要与花椒一样展示」）——
   单商家品种不再用行条，改与多商家组同款大卡（_sup_card）；.pk-pair 栅格同步为 auto-fill 340px / gap 16
   （与 .sup-grid 同规则）——并排时的卡宽＝花椒等组的卡宽；回退 = 本段改回 1fr 1fr 并恢复行条分支。
   v2.28 2026-10-18：精选商家「配对行靠两边」（用户直令四次修订「黄精靠右边，更容易区别是两种药材」）——
   .pk-pair 内第二组 grid-column:-2/-1 贴右（宽屏中间整列留空 · 两组各贴一边）；≤900px 单列重置。
   回退 = 删 .pk-pair > .pk-grp:last-child 一行与 ≤900 段的 grid-column:auto。
   v2.25 2026-10-18：精选商家「单商家品种 · 一行式」（用户直令「如果药材下只有一个商家，就放到一行；
   减少网页长度」）——品种组只有 1 家时不渲染整块大卡，改一行商家条 .sup-row/.sr-*（桌面 ≈62px）；
   信息一字不减（认证 / 道地 / 产地 / 核准公告号 / 主营 / 电话 / 官网 / 转发全在）；回退 = 删本段
   与 build_pages._dir_picks_html 的单商家分支。
   v2.29 2026-10-18：精选商家区「内容优化」（用户直令「精选商家 栏目下的内容…优化一下」）——品种导航改
   **换行全显**（原横滑）・规模条 .pk-stats/.pk-stat（43 家 / 21 品种 / 覆盖省份 / 具备官网）・
   入选口径折叠 .pk-why・品种名改 h3 后的样式重置 .pk-h .pk-nm；回退 = 删本批四段并复原 .pk-chips 单行。
   v2.30 2026-10-18：单商家品种「整行卡 / 两两并排」（用户直令「某种药材下，只有1个商家，右边空的太多，
   网页拉的太长」）——.pk-flow 弹性流（单商家组进流容器 · flex 1 1 460px：两个同排各占一半、
   只剩一个时自动撑满整行）＋ .sup-card.sup-wide（≥901px 左图右文横排，卡高≈190→≈150px）；
   取代 .pk-pair 配对（该段保留待用 · 当前零引用）；≤900px 落回竖卡单列。
   回退 = 删 .pk-flow / .sup-card.sup-wide 两段，并把 _dir_picks_html 改回配对段与 wide=False。
   v2.31 2026-10-18：服务内容卡「主题图标 ＋ 顶部渐变条」（/svc/quality/ · 用户直令「直接把图片放到这几个位置」
   →「你自己定」）——内联 SVG 线性图标 .svc-top/.svc-ico（零图片请求）＋ .svc-card.svc-i 顶部品牌渐变细线；
   仅带图标的卡启用，其余 svc-card（/shops/ · /data/）零漂移；回退 = 删本段（渲染侧见 _feat_html 第 4 位）。
   v2.32 2026-10-19：服务内容卡「标题区预留两行」（/svc/quality/ · 用户直令「根据最新修改，你自己判断修改」）——
   第 2 卡标题「工艺文件 · 生产检验 SOP」桌面折两行，致其首条要点比其余三卡低 24px → .svc-top b 加
   min-height:3.5em（= 2 行 × 1.75 行高）与 flex 居中，四卡要点回到同一基线；≤640px 单列取消预留。
   回退 = 删 .svc-top b 该行与 ≤640px 段内的 min-height:0。
   v2.33 2026-10-19：服务内容卡「图标与标题首行对齐」（/svc/quality/ · 用户直令「图中 SOP 在标题中央」）——
   标题区预留两行后图标竖向居中于两行之间（第 2 卡两行标题时图标悬浮在中间、与哪一行都不齐）→
   .svc-top 与 .svc-top b 两处改 align-items:flex-start，四卡图标均与标题首行同线（不加内边距——两行标题
   已占满预留高度，加 padding 会把卡 2 正文推低 5px）；标题预留两行不变（四卡导语/要点仍同一基线）。
   回退 = 两处 flex-start 改回 center。
   v2.34 2026-10-19：服务内容卡「标题次行居中」（/svc/quality/ · 用户直令「SOP 居中」）——标题支持 \n 断行，
   次行输出块级 .svc-t2 满宽居中（当前仅卡 3「工艺研究 · 生产检验 / SOP」）；.svc-top b 由 flex 改 block
   （flex 会把 .svc-t2 与首行并排成两个 flex 项）；无 .svc-t2 的卡片排版不变。
   回退 = .svc-top b 的 display 改回 flex 并删 .svc-t2 一行。
   v2.36 2026-10-19：页级「转发给微信朋友」（用户直令：是否需要在适当位置添加转发，网页端转发到微信）——
   .pg-srow / .pg-share 胶囊（品种页 / 图鉴 / 地标道地 / 数据聚合 / 问答 / 顾问 / 服务页 / 产品服务）
   ＋ 首页收尾 button.act 重置与图标尺寸；面板与复制逻辑复用 site_app.js（无新增面板）。
   回退 = 删文件尾该段 ＋ build_pages 的 share_btn/share_row 与调用 ＋ site_app.js 的 isPg 分支。
   v2.37 2026-10-19：关于页联系卡手机端（用户直令 q176「能否稍微宽一点，公安备案号放在 1 行」）——
   ≤640px 卡片内距 26→15px（内容区 285→315px）＋ .row 改 flex-wrap（放不下整串换行）＋
   .row-code 值 nowrap（备案号 / ICP 号不断行）；桌面与平板（>640px）零改动。
   回退 = 删 @media(max-width:640px) 该段（渲染侧 row-code 类可留 · 无样式即无效果）。
   v2.38 2026-10-19：品种卡照片区「框内白边」修正（用户直令 q177「框内白边优化一下」）——枸杞子 / 丁香两张
   3:2 插图（300×200）在 4:3 卡框内用 object-fit:contain 整图显示，上下各留 ~11px **纯白**衬底（letterbox），
   与插图自身灰底 #C9C9C9 拼接成生硬白框；改衬底色为插图本色 #C9C9C9（浏览器 canvas 四边八点取样全等 201,201,201），
   白框消失、接缝不可见，**仍为 contain → 标注线 / 比例尺 / 机构水印一字不裁**。
   回退 = 该规则 background 改回 #fff。
   v2.39 2026-10-19：**手机端导航抽屉重做**（用户直令 q179「手机版 地标道地 显示不正常，优化一下」）——
   ① 实底：移除 .site-nav / .site-header（≤920px）的 backdrop-filter —— 部分安卓内核里「模糊层＋overflow 滚动容器」
      合成后，后加的子元素不重绘 → 占位仍在但文字不显示、页底内容透出（正是本次现象）；
   ② 满屏：top:页头高（≤920 = 66px / ≤640 = 60px）＋ bottom:0，不再用 100vh（移动端可视高常小于 100vh，末几项掉出屏外）；
   ③ 进出只改 opacity（去掉 transform，少一层合成，避免重绘丢失）；
   ④ 子菜单改「白卡」：条目两行制（名称＋提示）、提示单行省略、组间分隔线（原为无容器裸列表，与页底内容糊在一起）；
   ⑤ 展开后由 site_app.js 把该栏定位到抽屉顶部，并给 <html> 加 .nav-open 锁背景滚动。
   回退 = 删 @media(max-width:920px) 内本段与 ≤640px 的 .site-nav{top:60px} 一行 ＋ site_app.js 两处。
   v2.41 2026-10-20：**手机端表单与触控目标**（双端浏览体检 t240 自动优化）——
   ① ≤640px 表单控件字号统一 16px（原 14.5–15px，iOS Safari 聚焦会自动放大整页）；
   ② 首页搜索框/搜索键、#dailyGo、a.pv-go、a.geo-more、a.db-chip 补到 40px 触控高。
   桌面（>640px）逐字节零改动。回退 = 删文件尾 v2.41 段。
   v2.40 2026-10-20：**转发给微信朋友按钮明显化**（用户直令「网站中适当位置增加一些『转发给微信朋友』，
   按钮明显」）—— ① .pg-share 由白底细边胶囊改**品牌绿实底**（白字 + 微信双气泡图标 + 44px）；
   ② 新增页尾转发带 .shband（品种页 / 图鉴 / 地标道地 / 数据聚合 / 问答 / 顾问 / 服务页 / 产品服务 / 关于）；
   ③ 新增全局悬浮键 .shfloat（site_app.js 注入 · 滚过首屏出 · 页尾转发带进视收起）；
   ④ 首页收尾 .endband .act.wx 改绿实底。回改 = 删本段四条新增规则与 build_pages.share_band 调用。
   v2.6 2026-10-16：平台服务详情页（/svc/* · 用户直令 q114「栏目中点击进去再有内容」）——/shops/ 服务卡改可点击（a.svc-card ＋ .go 提示行）＋ 详情页「服务流程」四步卡 .svc-steps/.svc-step ＋ .sec-more 补 flex-wrap（修多按钮行手机端溢出）；回退 = 删 .go 与 .svc-steps/.svc-step 段。
   v2.7 2026-10-16：「更多商家」折叠按钮（/shops/ AI 商品精选 · 用户直令 q115「需要有『更多』按钮，可以看其他商家」）——.picks-more 段；回退 = 删该段与 _dir_picks_html 的 more_html。
   注：部分改动以行内注释落点（.sec-more 的 flex-wrap 见基础规则处注释）；回退 = 去 flex-wrap 与注释。
   v2.8 2026-10-17：回到顶部键由「仅手机（≤640px）」改为**桌面同样启用**（用户直令「电脑端做出相应修改」）——
   >640px 位置/尺寸微调（right 26 / bottom 28 / 48px）；回退 = 把 .to-top 基础 display 改回 none 并删桌面媒体查询。
   v2.9 2026-10-17：平台服务详情页「交集图」区块（/svc/picks/ · 用户直令 q125）——.svc-figs 两列图卡
   （≤900px 单列）＋ .svc-fig 图/图注 ＋「点击查看大图」提示 ＋ .svc-fig-foot 一句话条；回退 = 删该段。
   v2.10 2026-10-17：/data/「数据板块」六卡改**横向滑轨**（用户直令 q127「数据板块 栏目下的内容做滚动，内容要齐全」）
   ——.dt-rail/.dt-bar/.dt-btn/.dt-dot/.dt-hint（scroll-snap 吸附 + 圆点分页 + 箭头 + 键盘 ←→；
   桌面一屏 3 张 / 641–1100px 2 张 / ≤640px 1.2 张）；回退 = 恢复 .dt-grid 两列 grid（原两句见 v2.3）。
   v2.11 2026-10-17：/svc/picks/「交集图」由 AI 位图改**内联 SVG 矢量图**（用户直令 q130「效果不好，上网卡」）
   ——.svc-venn 容器、「点击查看大图」退役、≤640px 列表版式 .vsum；回退 = 恢复 .svc-fig-l/.svc-fig img 段。
   v2.12 2026-10-18：/shops/「平台精选商家」按产品分类归集（用户直令「平台精选商家，按照产品分类归集」）
   —— .pk-chips 品种导航（横向滑动 · 含计数）＋ .pk-grp/.pk-h 品种分组节（节头 = 品种名 → 品种页 ＋ N 家）
   ＋ .pk-demo 演示数据末尾折叠（复用 .picks-more）；回退 = 删本段（渲染侧见 _dir_picks_html 注释）。
   v2.13 2026-10-18：商家卡顶部配图角标（用户直令「上方插入[img:2]上方的图片，其他类似」）
   —— .sup-photo 改 position:relative ＋ object-position:center 45%；新增 .sup-ptag「品种图」角标
   （真实商家用主营品种图鉴图 · 标示示意性质）；回退 = 删 .sup-ptag 段并复原 .sup-photo 单行规则。
   v2.15 2026-10-18：精选商家卡顶部改「实景产品照」（content/pick_photos.json）＋ 正文极简行 .sup-src；
   回退 = 删 .sup-src 段（角标与配图由 _sup_card / picks_with_photo 控制）。
   v2.16 2026-10-18：商家卡页脚支持「联系人 / 邮箱」（用户直令补录企业 · content/pick_manual.json
   · contact.person_public / contact.email）；.sup-per / .sup-mail（长邮箱可断词不撑破卡片）；
   v2.17 2026-10-18：每位药材组只列前 3 家商家，其余点组内「更多 N 家」展开（用户直令「每个药材显示
   3 个上商家，其它的点击更多可见」）——.pk-more 段（复用 .picks-more 按钮 · 小一号）；回退 = 删 .pk-more 段
   并将 build_pages.py 的 PICK_HEAD 改大（如 999）。
   回退 = 删这两行（渲染侧 person/email 字段缺值即零输出）。
   v2.18 2026-10-18：/svc/quality/「服务内容」四卡改「一句导语 ＋ 三条要点」三段式（用户直令「四个框内，
   适当调整，网站美观」）——.svc-lead 导语加重、.svc-li 绿点要点逐条列示；仅 3 元组数据启用，其余三页零漂移；
   回退 = 删本段（渲染侧见 write_svc 的 _feat_html）。
   v2.19 2026-10-18：商家卡片「微信转发」按钮（用户直令「每个商家都有微信转发按钮，提高网站流量」）——
   .sup-share 卡脚小胶囊 ＋ .sh-* 分享面板（桌面居中卡 / 手机底部上滑面板）；回退 = 删本段与
   site_app.js 尾段、build_pages._sup_card 的转发按钮。
   v2.20 2026-10-18：商家卡「道地药材」标（用户直令「如果是道地药材，在此处添加」）——
   .sup-cert.sup-dd 描边胶囊（区分于填充式「地理标志核准用标」与地标产品名胶囊）；
   数据源 = content/geo.json items[slug].didao，无记录零渲染；回退 = 删 .sup-dd 规则与 _sup_card 内插段。
   v2.21 2026-10-18：三项微调（用户直令「道地药材前移动一下，颜色与统一；示意图去掉」）——
   ① 道地药材胶囊改与其余认证胶囊同款填充样（删 v2.20 描边规则 · .sup-dd 仅留语义锚）；
   ② 配图「示意圖/品种图」角标停止输出（.sup-ptag 样式保留待用 · 渲染侧见 _sup_card）；
   ③ 道地药材位次前移至「地理标志核准用标」之后（渲染侧 insert(1)）。回退 = 恢复 v2.20 规则 + 角标三元表达式 + append。
   ========================================================================== */

:root{
  --g900:#11492A; --g800:#146035; --g700:#17843C; --g600:#1E9048; --g500:#45A76B;
  --g300:#9CCBAB; --g100:#EAF6EE;
  --gold:#C9A96A; --gold-2:#B6955A; --gold-soft:#EFE3C8; --gold-hi:#E4CF9A;
  --cream:#F7F4EC; --paper:#FFFFFF;
  --ink:#20302A; --ink2:#4D5C54; --ink3:#7E8C84;
  --line:#E5E0D3; --line2:#D8D2C2;
  --r-lg:20px; --r-md:14px; --r-sm:10px;
  --shadow-1:0 6px 24px rgba(17,73,42,.07);
  --shadow-2:0 14px 40px rgba(17,73,42,.13);
  --wrap:1180px;
  --serif:"Source Han Serif SC","Noto Serif SC","Songti SC",STSong,"STZhongsong","SimSun",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--cream);color:var(--ink);font:16px/1.75 var(--sans)}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
p{margin:0 0 1em}
::selection{background:rgba(201,169,106,.35)}

.wrap{max-width:var(--wrap);margin:0 auto;padding:0 22px}

/* ---------- 顶栏 ---------- */
.site-header{position:sticky;top:0;z-index:60;background:rgba(247,244,236,.93);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);transition:box-shadow .25s}
.site-header.scrolled{box-shadow:0 6px 24px rgba(17,73,42,.08)}
.site-header .wrap{display:flex;align-items:center;gap:26px;height:66px}
.brand{display:flex;align-items:center;gap:12px;flex:0 1 auto;min-width:0}
.brand-badge{width:40px;height:40px;flex:0 0 auto;border-radius:12%;display:block;
  /* 2026-10-13 用户直令「甲案（徽章=图标本体＋细描边）」：深绿渐变块+楷体字 → 图标本体图（奶油卡×绿「养」×金点）
     图 = assets/brand-mark.png（make_favicon.py 生成 · 与 favicon 套件同源）；border-radius 12% ≥ 图内卡片圆角 10%，裁净四角 */
  background:#FBF9F1 url("/assets/brand-mark.png") center/100% 100% no-repeat;
  background-origin:border-box;background-clip:border-box;
  border:1px solid rgba(20,96,53,.16);font-size:0;line-height:0}
.brand-text{min-width:0}
.brand-text strong{display:block;font-family:var(--serif);font-size:19px;letter-spacing:3px;line-height:1.25;color:var(--g800);white-space:nowrap}
.brand-text small{display:block;font-size:10.5px;color:var(--ink3);letter-spacing:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bdot{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--gold);vertical-align:middle;margin:0 6px}
/* 主导航（2026-10-09 用户直令 q11：六栏信息架构 + 下拉面板 ≤5 选项·含提示/图） */
.site-nav{margin-left:auto;display:flex;gap:2px;align-items:center}
.nav-item{position:relative}
.nav-link{display:block;padding:8px 15px;border-radius:999px;font-size:15px;color:var(--ink2);transition:.18s;white-space:nowrap}
.nav-link:hover{color:var(--g700);background:var(--g100)}
.nav-link.on{color:var(--g800);font-weight:600;position:relative}
.nav-link.on::after{content:"";position:absolute;left:15px;right:15px;bottom:3px;height:2px;border-radius:2px;background:var(--gold)}
.nav-caret{display:none}
.nav-panel{position:absolute;top:100%;left:50%;transform:translate(-50%,6px);padding-top:12px;
  opacity:0;visibility:hidden;transition:opacity .18s ease,transform .18s ease,visibility .18s;z-index:70}
.nav-item.nr .nav-panel{left:auto;right:0;transform:translate(0,6px)}
.nav-item:hover>.nav-panel,.nav-item:focus-within>.nav-panel{opacity:1;visibility:visible;transform:translate(-50%,0)}
.nav-item.nr:hover>.nav-panel,.nav-item.nr:focus-within>.nav-panel{transform:translate(0,0)}
.np-grid{display:grid;grid-template-columns:172px minmax(240px,1fr);gap:12px;
  background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-2);padding:12px}
.np-lead{display:flex;flex-direction:column;border-radius:12px;overflow:hidden;
  background:var(--g100);border:1px solid var(--line);transition:.18s}
.np-lead:hover{border-color:var(--gold);transform:translateY(-1px)}
.np-lead .np-ph{display:block}
.np-lead .np-ph img{width:100%;aspect-ratio:1/1;object-fit:cover}
.np-lead .np-t{display:block;padding:10px 12px 12px}
.np-lead.txt{justify-content:center;padding:16px;gap:6px}
.np-lead b{display:block;font-family:var(--serif);font-size:14px;letter-spacing:1.5px;color:var(--g800)}
.np-lead em{display:block;font-style:normal;font-size:11.5px;color:var(--ink3);margin-top:3px;letter-spacing:.3px}
.np-links{list-style:none;margin:0;padding:2px;display:flex;flex-direction:column;gap:2px}
.np-links a{display:block;padding:8px 12px;border-radius:10px;transition:.15s}
.np-links a b{display:block;font-weight:600;font-size:14px;color:var(--ink);letter-spacing:.5px}
.np-links a span{display:block;font-size:11.5px;color:var(--ink3);margin-top:1px;letter-spacing:.2px}
.np-links a:hover{background:var(--g100)}
.np-links a:hover b{color:var(--g700)}
.nav-toggle{display:none;margin-left:auto;width:44px;height:44px;flex:0 0 auto;border:1px solid var(--line2);border-radius:10px;
  background:#fff;cursor:pointer;align-items:center;justify-content:center;flex-direction:column;gap:4px}
.nav-toggle i{display:block;width:18px;height:2px;background:var(--ink2);border-radius:2px}
@media(max-width:920px){
  .nav-toggle{display:flex}
  /* —— 移动端导航抽屉（2026-10-19 用户直令 q179 重做 · 见文件头 v2.39）——
     实底（去 backdrop-filter）/ 满屏（top:页头高 + bottom:0，不用 100vh）/ 只做 opacity 过渡 /
     子菜单白卡两行制。现象对照：部分安卓内核里「模糊层＋overflow 滚动容器」合成后子元素不重绘，
     出现「占位还在、文字不见、页底内容透出」——故此处一律用实底与静态定位，不用滤镜与 transform。 */
  .site-header{background:#F7F4EC;-webkit-backdrop-filter:none;backdrop-filter:none}
  .site-nav{position:fixed;left:0;right:0;top:66px;bottom:0;height:auto;max-height:none;
    background:#F7F4EC;border-top:1px solid var(--line);border-bottom:0;
    box-shadow:0 16px 30px rgba(17,73,42,.10);
    flex-direction:column;align-items:stretch;padding:8px 14px 28px;gap:2px;
    opacity:0;pointer-events:none;transition:opacity .18s ease;
    overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  .site-nav.open{opacity:1;pointer-events:auto}
  html.nav-open,html.nav-open body{overflow:hidden}
  .nav-item{position:relative}
  .nav-link{padding:13px 56px 13px 14px;border-radius:12px;font-size:16px;color:var(--ink)}
  .nav-link.on::after{display:none}
  .nav-link.on,.nav-item.open>.nav-link{background:var(--g100);color:var(--g800);font-weight:600}
  .nav-caret{display:flex;position:absolute;right:6px;top:50%;transform:translateY(-50%);
    width:42px;height:42px;border:1px solid var(--line2);border-radius:12px;background:#fff;
    cursor:pointer;align-items:center;justify-content:center;transition:.2s}
  .nav-caret i{display:block;width:8px;height:8px;border-right:1.8px solid var(--ink2);border-bottom:1.8px solid var(--ink2);
    transform:rotate(45deg) translate(-1px,-1px);transition:transform .2s}
  .nav-item.open .nav-caret{border-color:var(--g500);background:var(--g100)}
  .nav-item.open .nav-caret i{transform:rotate(-135deg) translate(-2px,-2px)}
  .nav-panel{display:none;position:static;transform:none;opacity:1;visibility:visible;padding:5px 0 9px}
  .nav-item.open>.nav-panel{display:block}
  .np-grid{display:block;border:0;box-shadow:none;background:transparent;padding:0}
  .np-lead{display:none}
  .np-links{display:block;margin:0;padding:4px;background:#fff;border:1px solid var(--line);
    border-radius:12px;box-shadow:0 6px 16px rgba(17,73,42,.05)}
  .np-links li+li{border-top:1px solid rgba(20,96,53,.07)}
  .np-links a{display:block;padding:10px 12px 10px 14px;border-radius:9px}
  .np-links a:active{background:var(--g100)}
  .np-links a b{display:block;font-size:15px;line-height:1.5;color:var(--ink)}
  .np-links a span{display:block;font-size:12px;line-height:1.6;color:var(--ink3);margin-top:2px;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  /* 抽屉满屏后底部留白：用一行品牌语收底（纯装饰 · 不占 DOM · 内容超高时自动被推到底部不遮挡） */
  .site-nav::after{content:"药食同源 · 地理标志 · 道地药材";margin-top:auto;padding:22px 6px 2px;
    font-size:12px;letter-spacing:2px;color:var(--ink3);text-align:center}
}

/* ---------- 按钮 ---------- */
.btn{display:inline-flex;align-items:center;gap:9px;padding:13px 27px;border-radius:999px;
  font-size:15.5px;border:1px solid transparent;cursor:pointer;transition:.22s;line-height:1.2}
.btn .ar{transition:transform .22s}
.btn:hover .ar{transform:translateX(3px)}
.btn-solid{background:var(--gold);color:#241B0D;font-weight:600}
.btn-solid:hover{transform:translateY(-1px);box-shadow:0 12px 26px rgba(201,169,106,.38)}
.btn-green{background:var(--g700);color:#F3EFE3;font-weight:600}
.btn-green:hover{transform:translateY(-1px);box-shadow:0 12px 26px rgba(23,132,60,.32);background:var(--g600)}
.btn-ghost{border-color:rgba(243,239,227,.42);color:#F3EFE3}
.btn-ghost:hover{border-color:var(--gold);color:var(--gold-soft)}
.btn-line{border-color:var(--line2);color:var(--ink2);background:#fff}
.btn-line:hover{border-color:var(--g500);color:var(--g700)}

/* ---------- 首页 Hero ---------- */
.hero{position:relative;overflow:hidden;color:#F3EFE3;
  background:
    radial-gradient(1100px 560px at 88% -12%,rgba(201,169,106,.24),transparent 62%),
    radial-gradient(900px 520px at -8% 112%,rgba(69,167,107,.36),transparent 58%),
    linear-gradient(155deg,#1B7541 0%,#156038 58%,#0F4B2C 100%)}
.hero::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:radial-gradient(rgba(255,255,255,.055) 1px,transparent 1px);
  background-size:26px 26px}
.hero .wrap{position:relative;z-index:1;display:grid;grid-template-columns:1.06fr .94fr;gap:52px;align-items:center;
  padding-top:88px;padding-bottom:88px}
.kicker{display:inline-flex;align-items:center;gap:9px;padding:7px 16px;border-radius:999px;
  border:1px solid rgba(201,169,106,.5);color:var(--gold-soft);font-size:12.5px;letter-spacing:3px}
.kicker::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--gold);box-shadow:0 0 10px rgba(201,169,106,.9)}
.hero h1{font-family:var(--serif);font-weight:600;font-size:clamp(31px,4.6vw,52px);
  line-height:1.3;letter-spacing:3px;margin:24px 0 18px}
.hero h1 em{font-style:normal;color:var(--gold-hi)}
.hero .lead{font-size:16.5px;line-height:2.05;color:rgba(243,239,227,.92);max-width:35em;margin:0 0 32px}
.hero .cta{display:flex;gap:14px;flex-wrap:wrap}
/* 服务速览胶囊（2026-10-09 首页内容重编）：五个入口一屏直达 */
.hero .hv{display:flex;flex-wrap:wrap;gap:9px;margin:-14px 0 30px}
.hero .hv a{font-size:13px;letter-spacing:2px;color:var(--gold-hi);border:1px solid rgba(201,169,106,.45);
  border-radius:999px;padding:5px 15px;background:rgba(9,38,22,.35);transition:background .2s,color .2s,border-color .2s}
.hero .hv a:hover{background:rgba(201,169,106,.92);border-color:rgba(201,169,106,.92);color:#113D25}
/* v3.0（2026-10-06 · 用户直令）：Hero 四图 → 四入口卡（药材馆 / 地标馆 / 博士团队 / 行业新闻）·
   方形满显 + 题注下置 + 悬停微升 · 整卡可点（.hp = hero portal） */
.hero-collage{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:480px;margin-left:auto}
.hero-collage .hp{display:flex;flex-direction:column;border-radius:var(--r-lg);overflow:hidden;
  border:1px solid rgba(255,255,255,.16);box-shadow:0 24px 60px rgba(0,0,0,.35);
  background:rgba(9,38,22,.72);text-decoration:none;
  transition:transform .25s,border-color .25s,box-shadow .25s}
.hero-collage .hp:hover{transform:translateY(-3px);border-color:rgba(201,169,106,.6);
  box-shadow:0 28px 64px rgba(0,0,0,.46)}
.hero-collage .hp img{width:100%;height:auto;aspect-ratio:1/1;object-fit:cover;transition:transform .5s ease}
.hero-collage .hp:hover img{transform:scale(1.05)}
.hero-collage .hp-c{display:flex;align-items:center;gap:10px;padding:9px 13px 10px;
  border-top:1px solid rgba(255,255,255,.08);min-width:0}
.hero-collage .hp-t{flex:1;min-width:0}
.hero-collage .hp-t b{display:block;font-family:var(--serif);font-weight:600;font-size:13px;
  letter-spacing:1.5px;line-height:1.4;color:#F3EFE3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hero-collage .hp-t em{display:block;font-style:normal;font-size:10.5px;letter-spacing:1px;
  color:rgba(243,239,227,.62);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hero-collage .hp-ar{flex:0 0 auto;color:var(--gold);font-style:normal;font-size:15px;line-height:1;transition:transform .25s}
.hero-collage .hp:hover .hp-ar{transform:translateX(3px)}
@media(max-width:640px){
  .hero-collage{gap:12px}
  .hero-collage .hp-c{padding:8px 10px 9px;gap:7px}
  .hero-collage .hp-t b{font-size:11px;letter-spacing:.5px}
  .hero-collage .hp-t em{font-size:9px;letter-spacing:.5px}
  .hero-collage .hp-ar{font-size:13px}
}
@media(max-width:960px){
  .hero .wrap{grid-template-columns:1fr;gap:44px;padding-top:60px;padding-bottom:70px}
  .hero-collage{margin:0 auto}
}

/* ---------- 数据飘带 ---------- */
.stats{background:#0D4225;border-top:1px solid rgba(255,255,255,.07);color:#E9E3CF}
.stats .wrap{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;padding-top:24px;padding-bottom:24px}
@media(max-width:1000px){.stats .wrap{grid-template-columns:repeat(3,1fr);gap:14px 8px}}
.stat{text-align:center;padding:6px 4px}
.stat b{display:block;font-family:var(--serif);font-weight:600;font-size:clamp(20px,2.6vw,28px);
  color:var(--gold);letter-spacing:1px;line-height:1.3}
.stat span{font-size:12px;color:rgba(233,227,207,.62);letter-spacing:2.5px}
@media(max-width:640px){.stats .wrap{grid-template-columns:repeat(2,1fr);gap:14px 6px}}

/* ---------- 区块通用 ---------- */
section.block{padding:78px 0}
section.block.tight{padding-top:10px}
section.block.alt{background:#FFFFFF;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.sec-head{max-width:740px;margin:0 auto 46px;text-align:center}
.sec-kicker{display:inline-block;color:var(--gold-2);font-size:12.5px;letter-spacing:5px;margin-bottom:12px}
.sec-head h2{font-family:var(--serif);font-weight:600;font-size:clamp(24px,3vw,33px);
  letter-spacing:3px;margin:0 0 16px;color:var(--g900)}
.sec-head p{color:var(--ink2);font-size:15px;line-height:2;margin:0}
.sec-more{display:flex;flex-wrap:wrap;justify-content:center;margin-top:44px}   /* flex-wrap：2026-10-16 q114——多按钮行（/svc/* 「开始使用」四个入口）手机端不得溢出（曾挤最后一个按钮 5px） */
/* 手机端段距（2026-10-15 起 52→36px · 标题区 32→20px「紧凑化」——完整口径见文件尾「手机端紧凑化」总段） */
@media(max-width:640px){section.block{padding:36px 0}.sec-head{margin-bottom:20px}}

/* ---------- 品种卡 ---------- */
.grid-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
@media(max-width:1080px){.grid-cards{grid-template-columns:repeat(3,1fr)}}
@media(max-width:820px){.grid-cards{grid-template-columns:repeat(2,1fr);gap:13px}}
.card{display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--line);
  border-radius:var(--r-md);overflow:hidden;transition:transform .25s,box-shadow .25s,border-color .25s}
.card:hover{transform:translateY(-4px);box-shadow:var(--shadow-2);border-color:var(--line2)}
.card .ph{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--g100)}
.card .ph img{width:100%;height:100%;object-fit:cover;transition:transform .55s ease}
/* 方图卡片（枸杞子/丁香 300 档·整图显示）：照片适当放小 · 标题/标注/比例尺完整不裁切
   2026-10-19 用户直令 q177「框内白边优化」：contain 的上下衬底原为纯白 → 与插图灰底拼成生硬白框；
   改衬底＝插图本色 #C9C9C9（canvas 取样四边八点全等），白框消失、仍 contain 不裁任何标注。回退 = background:#fff */
.card .ph img[src*="300/枸杞子-ytsy"],.card .ph img[src*="300/丁香-ytsy"]{object-fit:contain;background:#c9c9c9}
.card:hover .ph img{transform:scale(1.055)}
.ph-txt{width:100%;height:100%;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(150deg,#EAF6EE,#D4EBDC);color:#17843C;
  font-family:var(--serif);font-size:34px;letter-spacing:2px}
.card .bd{padding:14px 16px 16px;display:flex;flex-direction:column;gap:4px;flex:1}
.card .nm{font-family:var(--serif);font-size:19px;letter-spacing:1.5px;margin:0;color:var(--g900);line-height:1.4}
.card .lt{font-size:11.5px;font-style:italic;color:var(--ink3);margin:0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card .tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto;padding-top:8px}
.tag{font-size:11.5px;color:var(--g700);background:var(--g100);border-radius:999px;padding:2.5px 11px;letter-spacing:.5px}
.tag.gold{color:#8A6D33;background:#F4EBD6}

/* ---------- 博士卡 ---------- */
.xgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
@media(max-width:900px){.xgrid{grid-template-columns:repeat(2,1fr);gap:13px}}
.xcard{display:block;color:inherit;text-decoration:none;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:30px 20px 26px;
  text-align:center;transition:transform .25s,box-shadow .25s}
.xcard:hover{transform:translateY(-4px);box-shadow:var(--shadow-2)}
.xava{display:block;width:106px;height:106px;border-radius:50%;margin:0 auto 18px;overflow:hidden;
  border:3px solid var(--gold-soft);box-shadow:0 8px 22px rgba(17,73,42,.14);background:#fff}
.xava img{display:block;width:100%;height:100%;object-fit:cover}
.xava.mono{display:flex;align-items:center;justify-content:center;border-color:rgba(201,169,106,.55);
  background:linear-gradient(155deg,#2A9055,#146035);color:#F3EFE3;
  font-family:var(--serif);font-size:42px;letter-spacing:0}
.xcard h3{font-family:var(--serif);font-size:20px;letter-spacing:3px;margin:0 0 5px;color:var(--g900)}
.xcard .t{color:var(--gold-2);font-size:12px;letter-spacing:5px;margin:0 0 11px}
.xcard .f{color:var(--ink2);font-size:13.5px;line-height:1.85;margin:0}
.xcard .xsite{margin:12px 0 0;padding-top:10px;border-top:1px dashed var(--line);
  font-size:11.5px;line-height:1.7;color:var(--g700);letter-spacing:.3px;word-break:break-all}
@media(max-width:900px){
  .xcard{padding:20px 12px 18px}
  .xava{width:76px;height:76px;margin-bottom:12px}
  .xava.mono{font-size:30px}
  .xcard h3{font-size:16.5px;letter-spacing:2px}
  .xcard .t{font-size:10.5px;letter-spacing:2.5px}
  .xcard .f{font-size:12px}
  .xcard .xsite{font-size:10.5px;letter-spacing:.1px;margin-top:10px;padding-top:8px}
}
.xmini{display:grid;grid-template-columns:repeat(6,1fr);gap:16px}
@media(max-width:900px){.xmini{grid-template-columns:repeat(3,1fr);gap:10px}}
.xmini .xcard{padding:20px 10px 18px}
.xmini .xava{width:78px;height:78px;margin-bottom:12px}
.xmini .xava.mono{font-size:30px}
.xmini h3{font-size:16px;letter-spacing:2px}
.xmini .t{font-size:10.5px;letter-spacing:2px;margin-bottom:8px;line-height:1.6}
.xmini .f{font-size:11.5px;line-height:1.7}
/* 首页专家卡「研究方向」行 .f：手机端维持隐藏（2026-10-14 傍晚用户复核点选「回到之前的效果」· 勿当缺陷恢复） */
@media(max-width:640px){.xmini .f{display:none}.xmini .xcard{padding:16px 6px 14px}}

/* ---------- 特色卡 ---------- */
.fgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
@media(max-width:900px){.fgrid{grid-template-columns:repeat(2,1fr);gap:13px}}
.fcard{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:26px 22px;transition:transform .25s,box-shadow .25s}
.fcard:hover{transform:translateY(-3px);box-shadow:var(--shadow-1)}
.fcard .ico{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  background:var(--g100);color:var(--g700);margin-bottom:16px}
.fcard .ico svg{width:24px;height:24px}
.fcard h3{font-family:var(--serif);font-size:17.5px;letter-spacing:1.5px;margin:0 0 8px;color:var(--g900)}
.fcard p{margin:0;font-size:13.5px;color:var(--ink2);line-height:1.9}

/* ---------- 核心功能卡（2026-10-09 首页重编：「在养鲜家，你能做什么」五入口） ---------- */
.sgrid{display:grid;grid-template-columns:repeat(5,1fr);gap:18px}
@media(max-width:1080px){.sgrid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:820px){.sgrid{grid-template-columns:repeat(2,1fr);gap:12px}}
.scard{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);
  padding:24px 20px 18px;transition:transform .25s,box-shadow .25s,border-color .25s}
.scard:hover{transform:translateY(-4px);box-shadow:var(--shadow-2);border-color:var(--line2)}
.scard .vb{width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-size:21px;color:var(--gold-2);background:linear-gradient(150deg,#FBF7EC,#F1E9D3);
  border:1px solid rgba(201,169,106,.5);margin-bottom:14px;letter-spacing:0}
.scard h3{font-family:var(--serif);font-size:17px;letter-spacing:1.5px;margin:0 0 8px;color:var(--g900)}
.scard p{margin:0 0 14px;font-size:13px;color:var(--ink2);line-height:1.9}
.scard .go{margin-top:auto;font-size:12.5px;color:var(--g700);letter-spacing:1px;display:inline-flex;align-items:center;gap:6px}
.scard .go i{font-style:normal;transition:transform .25s}
.scard:hover .go{color:var(--g800)}
.scard:hover .go i{transform:translateX(3px)}

/* ---------- 页头（内页） ---------- */
.pagehead{padding:46px 0 30px}
.crumb{font-size:13px;color:var(--ink3);letter-spacing:1px;margin-bottom:18px}
.crumb a{color:var(--ink3)}
.crumb a:hover{color:var(--g600)}
.crumb i{font-style:normal;margin:0 8px;color:var(--line2)}
.pagehead h1{font-family:var(--serif);font-weight:600;font-size:clamp(26px,3.4vw,38px);
  letter-spacing:4px;color:var(--g900);margin:0 0 14px}
.pagehead .sub{color:var(--ink2);font-size:15px;line-height:2;max-width:62em}
.pagehead .hook{font-size:16.5px;color:var(--ink);font-weight:500;letter-spacing:.4px}
.pagehead .note{display:inline-flex;align-items:center;gap:8px;margin-top:16px;padding:7px 15px;border-radius:999px;
  background:#F4EBD6;color:#8A6D33;font-size:12.5px;letter-spacing:1px}

/* ---------- 工具条（筛选） ---------- */
.toolbar{position:sticky;top:66px;z-index:40;background:rgba(247,244,236,.96);
  -webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:13px 0}
.toolbar .row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.search{flex:1 1 260px;min-width:220px;position:relative}
.search svg{position:absolute;left:15px;top:13px;width:19px;height:19px;color:var(--ink3);pointer-events:none}
.search input{width:100%;height:46px;border:1px solid var(--line2);border-radius:999px;
  padding:0 18px 0 43px;font-size:15px;background:#fff;outline:none;transition:.2s;color:var(--ink)}
.search input:focus{border-color:var(--g500);box-shadow:0 0 0 3.5px rgba(23,132,60,.16)}
.search input::placeholder{color:var(--ink3)}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chips.scroll{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:3px}
.chips.scroll::-webkit-scrollbar{display:none}
.chip{flex:0 0 auto;border:1px solid var(--line2);background:#fff;border-radius:999px;
  padding:7px 15px;font-size:13.5px;color:var(--ink2);cursor:pointer;transition:.16s;user-select:none;letter-spacing:.5px}
.chip:hover{border-color:var(--g500);color:var(--g700)}
.chip.on{background:var(--g700);border-color:var(--g700);color:#fff}
.chips-line{display:flex;align-items:center;gap:10px;margin-top:10px}
.chips-line .lb{flex:0 0 auto;font-size:12px;color:var(--ink3);letter-spacing:2px}
.chips-line .chips{flex:1;min-width:0}

/* ---------- 空态 ---------- */
.empty{display:none;text-align:center;padding:70px 20px;color:var(--ink3)}
.empty.on{display:block}
.empty b{display:block;font-family:var(--serif);font-size:20px;letter-spacing:2px;color:var(--ink2);margin-bottom:8px}

/* ---------- 品种详情 ---------- */
.item-hero{display:grid;grid-template-columns:minmax(0,500px) minmax(0,1fr);gap:48px;align-items:start;padding:34px 0 6px}
@media(max-width:900px){.item-hero{grid-template-columns:1fr;gap:24px;padding-top:20px}}
.item-hero .ph{border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line);
  background:#fff;box-shadow:var(--shadow-1)}
.item-hero .ph img{width:100%;height:auto;cursor:zoom-in}
.item-hero .ph .ph-txt{aspect-ratio:4/3;font-size:64px}
.item-hero h1{font-family:var(--serif);font-weight:600;font-size:clamp(29px,4vw,43px);
  letter-spacing:5px;color:var(--g900);margin:8px 0 8px}
.item-hero .py{color:var(--ink3);font-size:13.5px;letter-spacing:4px;margin:0 0 4px;text-transform:capitalize}
.item-hero .lat{color:var(--ink3);font-style:italic;font-size:14px;margin:0 0 22px}
.item-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 26px;
  border-top:1px solid var(--line);padding-top:20px}
.item-meta div{font-size:14.5px;color:var(--ink);display:flex;gap:10px;align-items:baseline}
.item-meta b{flex:0 0 auto;color:var(--ink3);font-weight:400;font-size:12.5px;letter-spacing:1.5px}
.item-cta{margin-top:26px;display:flex;gap:12px;flex-wrap:wrap}
/* 「一物一源」来源链 · 档案编号（2026-10-14）——品种页静线：依据 → 采集 → 核验 → 收录 ＋ 稳定编号 */
.src-chain{margin:16px 0 0;font-size:12.5px;color:var(--ink3);letter-spacing:.3px;line-height:1.9}
.src-chain a{color:var(--g600);border-bottom:1px solid var(--line2)}
.src-chain a:hover{color:var(--g700);border-bottom-color:var(--g500)}
.src-chain .no{color:var(--ink2);letter-spacing:.6px}

.detail-sec{padding:30px 0 6px;border-top:1px solid var(--line);margin-top:44px}
.detail-sec>h2{font-family:var(--serif);font-weight:600;font-size:22.5px;letter-spacing:3px;
  color:var(--g900);margin:0 0 6px}
.detail-sec>.sub{color:var(--ink3);font-size:13px;letter-spacing:1px;margin-bottom:10px}

.art{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);
  padding:24px 26px;margin:22px 0;box-shadow:var(--shadow-1)}
.art .k{font-size:11.5px;color:var(--gold-2);letter-spacing:4px;margin-bottom:6px}
.art h3{font-family:var(--serif);font-weight:600;font-size:18.5px;letter-spacing:2px;color:var(--g900);margin:0 0 14px}
@media(max-width:640px){.art{padding:18px 15px;border-radius:var(--r-sm)}}

.prose{font-size:15.5px;line-height:2.1;color:var(--ink);overflow-wrap:break-word}
.prose p{margin:0 0 14px}
.prose img{border-radius:10px;margin:16px auto;max-width:min(100%,680px);height:auto;cursor:zoom-in}
.prose pre{white-space:pre-wrap;overflow-wrap:break-word;max-width:100%;font-family:inherit}  /* 防御：pre 入文必换行（2026-10-10） */
.prose table{max-width:100%;border-collapse:collapse}
.prose td,.prose th{padding:4px 6px}
.prose section{display:block}
.prose em,.prose i{font-style:italic}

details.gj{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);
  padding:0 26px;margin:22px 0;box-shadow:var(--shadow-1)}
details.gj summary{cursor:pointer;list-style:none;padding:20px 0;font-family:var(--serif);
  font-size:17px;letter-spacing:2px;color:var(--g900);display:flex;align-items:center;gap:10px}
details.gj summary::-webkit-details-marker{display:none}
details.gj summary::after{content:"＋";margin-left:auto;color:var(--gold-2);font-size:16px}
details.gj[open] summary::after{content:"－"}
details.gj .gj-item{padding:6px 0 18px;border-top:1px dashed var(--line)}
details.gj .gj-item .k{font-size:12px;color:var(--gold-2);letter-spacing:3px;margin:14px 0 8px}
details.gj .prose{font-size:14.5px}
@media(max-width:640px){details.gj{padding:0 16px}}

.samples{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:8px}
@media(max-width:900px){.samples{grid-template-columns:repeat(3,1fr);gap:10px}}
@media(max-width:560px){.samples{grid-template-columns:repeat(2,1fr)}}
.sample{background:#fff;border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;transition:.2s}
.sample:hover{border-color:var(--line2);box-shadow:var(--shadow-1)}
.sample img{width:100%;aspect-ratio:1/1;object-fit:cover;cursor:zoom-in}
.sample .bd{padding:8px 11px 10px}
.sample .nm{font-size:13px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sample .cd{font-size:11px;color:var(--ink3);letter-spacing:1px}

.disclaimer{margin:34px 0 0;padding:14px 18px;border-radius:var(--r-sm);background:#F2EFE4;
  color:var(--ink3);font-size:12.5px;line-height:1.9}

.pager{display:flex;gap:14px;margin:46px 0 8px}
.pager a{flex:1;min-width:0;background:#fff;border:1px solid var(--line);border-radius:var(--r-sm);
  padding:15px 18px;font-size:14px;transition:.2s;color:var(--ink2)}
.pager a:hover{border-color:var(--g500);color:var(--g700)}
.pager a .dir{display:block;font-size:11px;color:var(--ink3);letter-spacing:3px;margin-bottom:3px}
.pager a .nm{font-family:var(--serif);font-size:16px;letter-spacing:1.5px;color:var(--g800);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.pager a.mid{flex:0 0 auto;text-align:center;display:flex;align-items:center;justify-content:center;
  padding:15px 22px;font-size:14px}
.pager a.mid:hover .nm{color:var(--g700)}
@media(max-width:640px){.pager{flex-direction:column}.pager a.mid{order:-1}}

/* ---------- 通知条 ---------- */
.notice{display:flex;gap:14px;align-items:flex-start;background:#F4EBD6;border:1px solid #E7D8B4;
  border-radius:var(--r-md);padding:16px 20px;color:#7A5F2C;font-size:13.5px;line-height:1.9;margin:26px 0}
.notice b{flex:0 0 auto;letter-spacing:2px}

/* ---------- 地理标志产地商家（品种页产地商家板块 · 2026-10-06 · 供应商台维护 · GI 联动标 .sup-gi） ---------- */
/* 2026-10-18 用户直令「某种药材下，只有1个商家，右边空的太多」：组内只列 2 张卡时（如花椒 2 家）
   改用 .sup-grid.n2 两列——两张卡各 560px 并排铺满整行，不再右侧空一格；
   3 张及以上仍为原 auto-fill 三列（逐像素不变；折叠内只剩 1 张时也不会被拉成整行宽——
   故不用 auto-fit）。回退 = 删下面 .sup-grid.n2 一行与渲染侧 n2 判断。 */
.sup-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px;margin-top:16px}
.sup-grid.n2{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:640px){.sup-grid.n2{grid-template-columns:1fr}}
@media(max-width:640px){.sup-grid{grid-template-columns:1fr;gap:12px}}
.sup-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;
  box-shadow:var(--shadow-1);display:flex;flex-direction:column;transition:.2s}
.sup-card:hover{border-color:var(--line2);box-shadow:var(--shadow-2)}
.sup-photo{display:block;position:relative;aspect-ratio:16/6;overflow:hidden;background:var(--g100)}
.sup-photo img{width:100%;height:100%;object-fit:cover;object-position:center 45%}
/* 卡片顶部配图角标（2026-10-18：真实商家用主营品种图鉴图 · 标示示意性质）
   注：2026-10-18 用户直令「示意圖去掉」——渲染侧已停止输出角标（_sup_card 的 ptag 置空），
   本段样式保留待用（恢复 = 渲染侧还原三元表达式）。 */
.sup-ptag{position:absolute;right:8px;bottom:7px;font-style:normal;font-size:10.5px;letter-spacing:1px;
  color:#fff;background:rgba(24,58,42,.52);border-radius:5px;padding:1px 7px;font-family:var(--sans);
  backdrop-filter:blur(2px)}
.sup-body{padding:16px 18px 14px;display:flex;flex-direction:column;gap:9px;flex:1}
.sup-top{display:flex;gap:12px;align-items:center}
.sup-logo{flex:0 0 auto;width:54px;height:54px;border-radius:12px;overflow:hidden;
  border:1px solid var(--line);background:var(--g100);display:flex;align-items:center;justify-content:center}
.sup-logo img{width:100%;height:100%;object-fit:cover}
.sup-logo .ph-txt{font-size:22px}
.sup-id{min-width:0}
.sup-nm{font-family:var(--serif);font-size:16px;letter-spacing:.5px;color:var(--g900);
  line-height:1.5;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.sup-demo{font-style:normal;font-size:10.5px;letter-spacing:1.5px;color:#8A6D33;background:#F4EBD6;
  border-radius:5px;padding:1px 7px;font-family:var(--sans);font-weight:400}
.sup-tier{font-style:normal;font-size:10.5px;letter-spacing:1.5px;color:#fff;background:var(--gold-2);
  border-radius:5px;padding:1px 7px;font-family:var(--sans);font-weight:400}
.sup-gi{font-style:normal;font-size:10.5px;letter-spacing:1.5px;color:var(--g700);background:var(--g100);
  border-radius:5px;padding:1px 7px;font-family:var(--sans);font-weight:400}
.sup-region{font-size:12px;color:var(--ink3);letter-spacing:1px;margin-top:3px}
.sup-intro{margin:0;font-size:13.5px;line-height:1.9;color:var(--ink2)}
/* 精选真实商家卡极简正文行（2026-10-18 用户直令「框内文字太多，极简」）——只留核准公告号 */
.sup-src{margin:0;font-size:11.5px;line-height:1.7;color:var(--ink3);letter-spacing:.5px}
.sup-scale{font-size:12px;color:var(--ink3);letter-spacing:.5px}
.sup-certs{display:flex;flex-wrap:wrap;gap:6px}
.sup-cert{font-size:11.5px;color:var(--g700);background:var(--g100);border-radius:999px;padding:2px 10px;letter-spacing:.5px}
/* v2.21（2026-10-18 用户直令「道地药材前移动一下，颜色与统一」）：道地药材标不再描边，
   与「地理标志核准用标」/ 地标产品名胶囊同款填充样；.sup-dd 仅作语义锚（悬停 title 仍显
   示道地产区全名单 · 数据源 geo.json）。回退 = 恢复 v2.20 的描边规则。 */
.sup-ft{margin-top:auto;padding-top:10px;border-top:1px dashed var(--line);
  display:flex;flex-wrap:wrap;gap:6px 16px;align-items:baseline;font-size:12.5px;color:var(--ink3)}
.sup-ft b{color:var(--ink2);font-weight:400}
.sup-tel{color:var(--g800);letter-spacing:.5px}
.sup-tel a{color:var(--g800)}
.sup-tel i{font-style:normal;color:var(--ink3)}
/* v2.16：联系人 / 邮箱（仅 contact.person_public / contact.email 有值时输出） */
.sup-per{color:var(--ink2)}
.sup-mail a{color:var(--g800);overflow-wrap:anywhere}
.sup-note{margin:14px 0 0;font-size:11.5px;color:var(--ink3);line-height:1.9;letter-spacing:.5px}
.sup-empty{background:#fff;border:1px dashed var(--line2);border-radius:var(--r-md);
  padding:22px 24px;color:var(--ink3);font-size:13.5px;text-align:center;letter-spacing:1px;margin-top:16px}

/* ---------- 商家卡片「微信转发」（2026-10-18 用户直令「每个商家都有微信转发按钮，提高网站流量」） ----------
   卡脚小胶囊 .sup-share（图标＋转发）→ 点击由 site_app.js 弹分享面板（.sh-*）：四行文案一键复制；
   分享链接 = 当前页 + ?fx=sp + #卡片锚点（落到这一张卡）。
   回退 = 删本段与 site_app.js 尾段、build_pages._sup_card 的转发按钮。 */
.sup-share{margin-left:auto;align-self:center;flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;
  border:1px solid var(--line2);background:#fff;color:var(--g700);border-radius:999px;
  padding:5px 12px;font-size:12px;line-height:1.25;font-family:var(--sans);letter-spacing:.5px;
  cursor:pointer;transition:.18s}
.sup-share svg{width:12.5px;height:12.5px;flex:0 0 auto}
.sup-share:hover{border-color:var(--g500);background:var(--g100);color:var(--g800)}
.sup-share:active{transform:scale(.96)}
/* 分享落地（2026-10-18 自动优化）：受赠者点开 ?fx=sp#sup-xxx → 目标卡轻高亮约 3.4s（site_app.js 加/删 .sup-hl，
   .sup-card 自带 transition .2s 故淡出）；scroll-margin-top 让粘性页头（.site-header sticky · ≈86px）不压住卡头。
   回退 = 删本两行与 site_app.js 尾段 IIFE。 */
.sup-card{scroll-margin-top:96px}
.sup-card.sup-hl{border-color:var(--g500);box-shadow:0 0 0 3px rgba(23,132,60,.26),0 12px 32px rgba(16,70,44,.16)}
.sh-mask{position:fixed;inset:0;z-index:120;background:rgba(17,73,42,.42);display:none;
  align-items:center;justify-content:center;padding:20px}
.sh-mask.on{display:flex}
.sh-panel{width:min(94vw,430px);background:#fff;border-radius:16px;padding:20px 20px 18px;
  box-shadow:0 20px 60px rgba(10,40,25,.28)}
.sh-h{display:flex;align-items:center;gap:10px}
.sh-h b{font-family:var(--serif);font-size:16px;color:var(--g900);letter-spacing:1px;font-weight:700}
.sh-x{margin-left:auto;border:0;background:none;color:var(--ink3);font-size:22px;line-height:1;
  padding:2px 6px;cursor:pointer}
.sh-tip{margin:10px 0;font-size:12.5px;line-height:1.75;color:var(--ink3)}
.sh-txt{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:10px;
  background:var(--cream);padding:12px 13px;font-size:13px;line-height:1.85;color:var(--ink);
  font-family:var(--sans);resize:none;overflow-wrap:anywhere}
.sh-btns{margin-top:12px;display:flex;gap:10px}
.sh-copy{flex:1;border:0;border-radius:999px;background:var(--g700);color:#fff;font-size:14px;
  padding:11px 16px;cursor:pointer;font-family:var(--sans);letter-spacing:1px;transition:.18s}
.sh-copy:hover{background:var(--g600)}
/* ---------- 分享面板「名片图」形态（v2.44 · 2026-10-24 用户直令「先把网页转发成发名片图」＋
   「必须符合微信规则，名片尺寸要便于转发，名片文字简洁」） ----------
   面板 = 一张站长微信名片（/assets/wx/wx-add.jpg 原图直链，不裁不缩不改名 → 微信长按识别 / 保存均为原始分辨率）
   ＋ 一句短提示 ＋ 一行次要「复制本页链接」。桌面宽 320px、高上限 52vh；手机上限 46vh
   （矮屏自动缩，不撑破底部上滑面板，不会盖掉关闭键）。
   开关：brand.json share_mode = card / text → build_pages 写入 <html data-share> → site_app.js 分流。
   回退 = 删本段与 site_app.js 的 MODE / CARD_SRC / card 分支。 */
.sh-panel.card .sh-tip{text-align:center;margin:11px 0 0;letter-spacing:.3px}
.sh-card{display:flex;align-items:center;justify-content:center;margin:12px auto 0;max-width:320px}
.sh-card-img{display:block;width:auto;height:auto;max-width:100%;max-height:52vh;
  border:1px solid var(--line);border-radius:12px;background:#fff;
  box-shadow:0 6px 18px rgba(16,70,44,.12)}
/* 2026-10-24 20:2x 用户直令 A+「只二维码，名片文字简洁」→ 面板改为二维码取景窗：
   只显影二维码区，名片上的昵称 / 地区 / 底部提示语一个字不出现。
   参数与 build_pages.py WX_QR_IMG / WX_QR_BOX / WX_QR_PAD 同一组（原图 776×1149；二维码框
   norm-1000 = 169,314,835,759；四周留白 46px）→ 取景框 609.0×603.3px @ 偏移 (85.1,314.8)
   → 相对框：宽 127.5% / 左 -13.9% / 上 -51.7% / 高比 99.1%（与 .wx-frame.cut 同值）。
   ★像素零改动：原图不裁不缩，只是同一张图开一块窗口 → 长按识别仍是原始分辨率。
   ★长按「保存图片」在微信里保存的仍是原图整张（浏览器行为，非本段可控）。
   不用 aspect-ratio：微信内置浏览器老内核不认（框高会塔）。
   回改 = 删本段与 site_app.js 的 <span class="sh-qr"> 包裹。 */
.sh-card.qr{max-width:296px}
.sh-qr{display:block;position:relative;width:100%;height:0;padding-bottom:99.1%;overflow:hidden;
  border:1px solid var(--line);border-radius:12px;background:#fff;
  box-shadow:0 6px 18px rgba(16,70,44,.12)}
.sh-card.qr .sh-card-img{position:absolute;left:0;top:0;width:127.5%;max-width:none;max-height:none;
  height:auto;margin:-51.7% 0 0 -13.9%;border:0;border-radius:0;box-shadow:none;background:none}
.sh-copy.ghost{background:#fff;color:var(--ink2);border:1px solid var(--line);
  font-size:13px;letter-spacing:.5px;padding:9px 14px}
.sh-copy.ghost:hover{background:var(--g100);border-color:var(--g500);color:var(--g800)}
@media(max-width:640px){
  .sup-share{min-height:40px;padding:9px 14px;font-size:12.5px}
  .sh-mask{align-items:flex-end;padding:0}
  .sh-panel{width:100%;border-radius:16px 16px 0 0;padding:18px 16px calc(16px + env(safe-area-inset-bottom))}
  .sh-copy{padding:13px 16px}
  /* 名片图形态（v2.44 · 2026-10-24）：手机底部上滑面板里，名片高上限 46vh，提示与按钮紧跟其后 */
  .sh-panel.card .sh-card{margin-top:10px}
  .sh-card-img{max-height:46vh}
  /* 二维码取景窗在手机上收到 264px（≈3 倍屏 792 设备像素，识别余量充足，且不撑破底部面板） */
  .sh-card.qr{max-width:264px}
}

/* ---------- 商家卡「商家微信」二维码（v2.23 · 2026-10-18 用户直令「商家二维码 放到适当位置，
   用户扫码或点击即可查看商家微信」· 2026-10-24 文案中性化：去「加 / 添加」动作动词） ----------
   数据 = contact.wechat_qr（有值才渲染）；缩略图桌面可用微信「扫一扫」直接扫，
   点击 → site_app.js 弹放大浮层（.wx-*）供手机长按识别 / 桌面大图扫。
   回退 = 删本两段与 build_pages._sup_card 的 .sup-wx 段、site_app.js 尾段。 */
.sup-wx{display:flex;align-items:center;gap:12px;background:var(--cream);border:1px dashed var(--line2);
  border-radius:var(--r-sm);padding:10px 12px}
.sup-wx-b{flex:0 0 auto;padding:0;border:0;background:none;cursor:zoom-in;line-height:0;border-radius:9px}
.sup-wx-b:focus-visible{outline:2px solid var(--g500);outline-offset:3px}
.sup-wx-img{display:block;width:74px;height:74px;object-fit:contain;background:#fff;
  border:1px solid var(--line);border-radius:9px;transition:.18s}
.sup-wx-b:hover .sup-wx-img{border-color:var(--g500);box-shadow:0 4px 14px rgba(16,70,44,.14)}
.sup-wx-tx{min-width:0;display:flex;flex-direction:column;gap:3px}
.sup-wx-tx b{font-size:13.5px;line-height:1.5;font-weight:700;color:var(--g800);letter-spacing:1px}
.sup-wx-tx span{font-size:12px;line-height:1.65;color:var(--ink3);letter-spacing:.4px}
.sup-wx-tx i{font-style:normal;align-self:flex-start;font-size:11.5px;color:var(--g700);
  letter-spacing:.5px;border-bottom:1px dotted var(--g300);padding-bottom:1px}
/* 2026-10-24 用户直令「网站上的 43 家精选商家，如果没有二维码的，先添加站长的二维码用橙色区分」：
   无商家码的卡 → 站长码兜底块（橙系配色 · 一眼区分于商家自己的码）。
   颜色单点：主橙 #B4650C（字）· #E3A34E（框）· #FFF7EC（底）；改色只改本段。
   回退 = 删本段（build_pages._sup_card 的 _stn 分支同步撤）。 */
.sup-wx.st{background:#FFF7EC;border:1px dashed #E3A34E}
.sup-wx.st .sup-wx-tx b{color:#B4650C}
.sup-wx.st .sup-wx-tx span{color:#8A6432}
.sup-wx.st .sup-wx-tx i{color:#B4650C;border-bottom-color:#EFCB98}
.sup-wx.st .sup-wx-b .wxqr{border:1px solid #E3A34E;border-radius:9px;transition:.18s}
.sup-wx.st .sup-wx-b:hover .wxqr{border-color:#B4650C;box-shadow:0 4px 14px rgba(180,101,12,.24)}
.wx-mask{position:fixed;inset:0;z-index:130;background:rgba(17,73,42,.52);display:none;
  align-items:center;justify-content:center;padding:20px}
.wx-mask.on{display:flex}
.wx-panel{width:min(92vw,372px);background:#fff;border-radius:16px;padding:15px 18px 17px;text-align:center;
  box-shadow:0 20px 60px rgba(10,40,25,.3)}
.wx-h{display:flex;align-items:center;gap:10px;margin-bottom:11px;text-align:left}
.wx-h b{font-family:var(--serif);font-size:15.5px;font-weight:700;color:var(--g900);letter-spacing:1px}
.wx-x{margin-left:auto;border:0;background:none;color:var(--ink3);font-size:22px;line-height:1;
  padding:2px 6px;cursor:pointer}
/* 2026-10-24：放大浮层改为「外层框 ＋ 内层图」——商家码走普通框（帧 = 整张图），
   站长码走 .cut 取景窗（只显影二维码区 · 参数与 build_pages._wx_qr_html 同一组：
   框宽 608.8px / 框高 603.3px / 图宽 776px 的等比百分比）。回退 = 恢复 .wx-img 单元素段。 */
.wx-frame{display:block;width:100%;max-width:296px;margin:0 auto}
.wx-img{display:block;width:100%;height:auto;
  background:#fff;border:1px solid var(--line);border-radius:10px}
.wx-frame.cut{position:relative;height:0;padding-bottom:99.1%;overflow:hidden;
  border:1px solid var(--line);border-radius:10px;background:#fff}
.wx-frame.cut .wx-img{position:absolute;left:0;top:0;width:127.5%;max-width:none;height:auto;
  margin:-51.7% 0 0 -13.9%;border:0;border-radius:0}
/* 不用 aspect-ratio：微信内置浏览器老内核不认（框高会塔）。padding-bottom 撑高 + 纯 CSS 保高兼容。 */
.wx-tip{margin:12px 0 0;font-size:12.5px;line-height:1.8;color:var(--ink3);letter-spacing:.3px}
@media(max-width:640px){
  .sup-wx{gap:10px;padding:9px 10px}
  .sup-wx-img{width:66px;height:66px}
  .sup-wx-tx b{font-size:13px}
  .sup-wx-tx span{font-size:11.5px}
  .sup-wx-tx i{font-size:11px}
  .wx-panel{width:100%}
  .wx-frame{max-width:260px}
  .wx-x{font-size:26px;padding:4px 10px}
}

/* ---------- 「更多商家」折叠按钮（/shops/ AI 商品精选 · 2026-10-16 用户直令 q115：
   「需要有『更多』按钮，可以看其他商家」——默认只展示 3 家，点按钮就地展开其余商家；
   纯 CSS <details>（站内折叠同模式）· 无 JS · 内容全留 DOM（大模型 / 搜索引擎照常可读可引） ---------- */
.picks-more{margin-top:16px}
.picks-more > summary{list-style:none;cursor:pointer;width:max-content;max-width:100%;margin:0 auto;
  display:flex;align-items:center;gap:8px;padding:12px 30px;border:1px solid var(--line2);border-radius:999px;
  background:#fff;color:var(--g800);font-family:var(--serif);font-size:14.5px;font-weight:600;letter-spacing:1.5px;
  box-shadow:var(--shadow-1);transition:border-color .22s,color .22s,box-shadow .22s,transform .22s}
.picks-more > summary::-webkit-details-marker{display:none}
.picks-more > summary::marker{content:""}
.picks-more > summary:hover{border-color:var(--g500);color:var(--g700);transform:translateY(-1px);box-shadow:var(--shadow-2)}
.picks-more > summary .pm-c{display:none}
.picks-more[open] > summary .pm-o{display:none}
.picks-more[open] > summary .pm-c{display:inline}
.pm-ar{display:inline-block;width:7px;height:7px;border-right:1.7px solid currentColor;border-bottom:1.7px solid currentColor;
  transform:rotate(45deg) translateY(-2px);transition:transform .25s}
.picks-more[open] .pm-ar{transform:rotate(-135deg) translateY(-2px)}
.picks-more .sup-grid{margin-top:18px}
@media(max-width:640px){.picks-more > summary{padding:11px 22px;font-size:13.5px}}

/* ---------- 「平台精选商家 · 按产品分类归集」（/shops/ AI 商品精选 · 2026-10-18 用户直令：
   「平台精选商家，按照产品分类归集」）—— ① 品种导航 chips（含计数 · 横向滑动 · 锚点直达）
   ② 品种分组节 .pk-grp（节头 = 品种名 → 品种页 ＋ N 家；节序由渲染层定：家数降序）
   ③ 演示数据末尾折叠 .pk-demo（复用 .picks-more 按钮样式）。回退 = 删本段。 ---------- */
/* 2026-10-18 用户直令（「精选商家 栏目下的内容…优化一下」）：品种导航由横向滑动改**换行全显**——
   21 个品种一屏可见（原来要横滑才看得到后半），点哪个一目了然；回退 = 恢复 overflow-x:auto 单行。 */
.pk-chips{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 2px}
.pk-chips .db-chip{flex:0 0 auto;white-space:nowrap}
.pk-chip i{font-style:normal;font-size:11.5px;color:var(--ink3);margin-left:5px}
/* 规模条（同上直令）：多少家 / 多少品种 / 覆盖多少省 / 多少家具备企业官网——数字构建时动态计算，勿硬编码。 */
.pk-stats{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0 4px}
.pk-stat{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:8px 15px;
  font-family:var(--sans);font-size:12.5px;color:var(--ink3);line-height:1.4;letter-spacing:.5px}
.pk-stat b{font-family:var(--serif);font-size:17px;color:var(--g800);margin-right:6px;letter-spacing:.5px}
/* 入选口径折叠（同上直令）：首屏只留一句价值句，说明原文收进折叠（DOM 保留 · 搜索与 AI 照常可读）。 */
.pk-why{margin:8px 0 0}
.pk-why > summary{list-style:none;cursor:pointer;font-family:var(--sans);font-size:12.5px;
  color:var(--ink3);letter-spacing:.5px;display:inline-block}
.pk-why > summary::-webkit-details-marker{display:none}
.pk-why > summary::marker{content:""}
.pk-why > summary::before{content:"＋";display:inline-block;margin-right:6px;color:var(--g500);
  font-size:12px;transition:transform .2s}
.pk-why[open] > summary::before{transform:rotate(45deg)}
.pk-why > summary:hover{color:var(--g700)}
.pk-why > div{margin-top:8px;font-family:var(--sans);font-size:12.5px;line-height:1.85;color:var(--ink3)}
/* 品种名改 h3 后重置（继承 .pk-h —— 视觉与改前一致）。 */
.pk-h .pk-nm{margin:0;font:inherit;letter-spacing:inherit;color:inherit;font-weight:inherit}
.pk-grp{margin-top:22px;scroll-margin-top:86px}
.pk-grp > summary{list-style:none;padding:0}
.pk-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;cursor:pointer;
  font-family:var(--serif);font-size:17px;letter-spacing:2px;color:var(--g900);font-weight:600}
.pk-h::-webkit-details-marker{display:none}
.pk-h::marker{content:""}
.pk-h:hover,.pk-grp[open] > .pk-h{color:var(--g700)}
.pk-h small{font-family:var(--sans);font-size:12px;letter-spacing:1px;color:var(--ink3);font-weight:400}
.pk-lnk{font-family:var(--sans);font-size:12px;letter-spacing:.5px;color:var(--ink3);font-weight:400;
  border-bottom:1px dotted var(--line2)}
.pk-lnk:hover{color:var(--g700)}
.pk-ar{display:inline-block;width:7px;height:7px;border-right:1.7px solid var(--ink3);
  border-bottom:1.7px solid var(--ink3);transform:rotate(45deg) translateY(-2px);
  transition:transform .25s;align-self:center;margin-left:2px}
.pk-grp[open] .pk-ar{transform:rotate(-135deg) translateY(-2px)}
.pk-grp .sup-grid{margin-top:12px}
.pk-demo{margin-top:26px}
/* 组内「更多」（2026-10-18 用户直令：「每个药材显示3个上商家，其它的点击更多可见」）——
   每组只列前 3 张卡，其余收进组内 details；按钮比区末「更多商家」小一号、不抢视觉。回退 = 删本行组。 */
.pk-more{margin-top:14px}
.pk-more > summary{padding:9px 22px;font-size:13px;letter-spacing:1px;box-shadow:none;color:var(--ink2)}
.pk-more > summary:hover{color:var(--g700)}
.pk-more .sup-grid{margin-top:14px}
@media(max-width:640px){.pk-grp{margin-top:18px}.pk-h{font-size:15.5px;letter-spacing:1.5px}
  .pk-more > summary{padding:9px 20px;font-size:12.5px}
  .pk-stats{gap:8px;margin:12px 0 2px}.pk-stat{padding:7px 12px;font-size:12px}.pk-stat b{font-size:16px}
  /* 手机端品种胶囊紧凑一档（一行多放一个 · 少一行高）：特异性 .pk-chips .pk-chip > .db-chip */
  .pk-chips{gap:6px}.pk-chips .pk-chip{padding:5px 11px;font-size:12.5px}
  .pk-chips .pk-chip i{font-size:11px;margin-left:4px}}

/* ---------- 「单商家品种 · 一行式」（/svc/picks/ 精选商家 · 2026-10-18 用户直令：
   「如果药材下只有一个商家，就放到一行；减少网页长度」）——
   某品种只有 1 家精选商家时，不再渲染整块大卡（配图 ＋ 多行信息 约 380–420px），
   改为一行紧凑商家条（桌面 ≈62px）：左 = 企业名（地标产品名）＋ 认证/道地标签 · 产地 · 核准公告号；
   右 = 主营 · 电话 · 官网（· 邮箱）＋ 转发按钮。信息一字不减；手机端自然折成两三行小字。
   渲染侧 = build_pages._sup_row（_dir_picks_html 单商家分支）。回退 = 删本段与该分支。 ---------- */
.sup-list{margin-top:10px}
.sup-row{display:flex;align-items:center;justify-content:space-between;gap:10px 16px;flex-wrap:wrap;
  background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:10px 15px;
  box-shadow:var(--shadow-1);transition:.2s;scroll-margin-top:96px}
.sup-row:hover{border-color:var(--line2);box-shadow:var(--shadow-2)}
.sup-row.sup-hl{border-color:var(--g500);box-shadow:0 0 0 3px rgba(23,132,60,.26),0 12px 32px rgba(16,70,44,.16)}
.sr-l{min-width:0;flex:1 1 340px}
.sr-nm{font-family:var(--serif);font-size:15.5px;letter-spacing:.5px;color:var(--g900);font-weight:600;line-height:1.5}
.sr-nm .sr-pd{font-family:var(--sans);font-size:12.5px;font-weight:400;color:var(--ink3);letter-spacing:0}
.sr-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:5px;
  font-family:var(--sans);font-size:12px;color:var(--ink3);line-height:1.7}
.sr-tag{font-size:11px;letter-spacing:.5px;color:var(--g700);background:var(--g100);border-radius:999px;padding:1px 8px}
.sr-r{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-family:var(--sans);
  font-size:12.5px;line-height:1.7;color:var(--ink2)}
.sr-r b{font-weight:400;color:var(--ink3);margin-right:4px}
.sr-r a{color:var(--g700)}
.sr-r a:hover{text-decoration:underline}
.sup-row .sup-share{margin-left:2px}
@media(max-width:640px){
  .sup-row{padding:10px 12px;gap:8px}
  .sr-l{flex:1 1 100%}.sr-nm{font-size:15px}
  .sr-r{flex:1 1 100%;justify-content:space-between;gap:6px 10px;font-size:12px}
  .sup-row .sup-share{margin-left:auto}
}

/* ---------- 单商家品种「两两并排」（/svc/picks/ 精选商家 · 2026-10-18 用户直令二次修订：
   「如果药材下只有一个商家，就与另一个也只有一个商家药材并放到一行；减少网页长度」）——
   相邻两个「只有 1 家」的品种组合进 .pk-pair 栅格（各列仍是独立 <details> 组，可单独收起）。
   ※ 2026-10-18 用户直令三次修订「地黄要与花椒一样展示」：单商家组不再用一行条，改用完整商家卡；
     本栅格随之与 .sup-grid 同规则（auto-fill 340px · gap 16）——故并排时的卡宽＝多商家组的卡宽
     （同一行只排两个组，第三列空着，与「花椒 2 家」的列宽、卡宽完全一致）。≤900px 落回单列。
   ※ 2026-10-18 用户直令四次修订「黄精靠右边，更容易区别是两种药材」：配对行内**第一组贴左、第二组贴右**——
     第二组 grid-column:-2/-1 落到最后一列（宽屏 3 列位时中间整列留空，两组之间空出一整张卡的宽度，
     一眼可辨是两个不同品种）；列宽仍与 .sup-grid 同规则，故卡宽＝多商家组卡宽（花椒组）不变。
     ≤900px 单列须重置 grid-column（否则两组叠在同一格）。
   渲染侧 = build_pages._dir_picks_html 的配对段。回退 = 删本段与该配对段。 ---------- */
.pk-pair{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:0 16px;align-items:start;margin-top:22px}
.pk-pair > .pk-grp{margin-top:0}
.pk-pair > .pk-grp:last-child{grid-column:-2/-1}
.pk-pair .sup-list{margin-top:8px}
.pk-pair .sup-row{padding:9px 13px;gap:7px 10px}
.pk-pair .sr-l{flex:1 1 100%}
.pk-pair .sr-nm{font-size:14.5px}
.pk-pair .sr-meta{margin-top:3px;font-size:11.5px;gap:6px}
.pk-pair .sr-r{flex:1 1 100%;gap:5px 12px;font-size:12px}
.pk-pair .sup-row .sup-share{margin-left:auto}
@media(max-width:900px){.pk-pair{grid-template-columns:1fr;gap:0}
  .pk-pair > .pk-grp{grid-column:auto}
  .pk-pair > .pk-grp + .pk-grp{margin-top:18px}}

/* ---------- 单商家品种「整行卡 / 两两并排」（/svc/picks/ 精选商家 · 2026-10-18 用户直令：
   「某种药材下，只有1个商家，右边空的太多，网页拉的太长」）——
   旧版单商家组：整组占一整行，卡仍是 368px 竖卡 → 右侧两列全空（空的太多）；12 个单商家品种
   各占一整行（网页拉长）。本版两手：
     ① .pk-flow 弹性流：连续的单商家组进同一流容器，项 flex:1 1 460px——两个同排时各占一半
        （卡宽约 700px），只有一个时自动撑满整行（右侧不再留白）；整行/半行都是卡本身变宽，
        不存在「右侧空一格」。
     ② .sup-card.sup-wide ≥901px：左图右文横排（配图列 min 180 / max 236px）——卡高由竖卡
        ≈340px 降到 ≈150px（同样信息：图 / 名称 / 地区·公告号 / 认证胶囊 / 主营·电话·网址·邮箱 /
        转发按钮全在）；≤900px 自动落回竖卡（图片仍在上）。
   信息一字不减（只改排布）；卡锚点 id 与转发按钮不变（分享落地 / 高亮照旧）。
   回退 = 删本段，并把 build_pages._dir_picks_html 的单商家分支去掉 wide=True、配对段改回 .pk-pair。 ---------- */
.pk-flow{display:flex;flex-wrap:wrap;gap:18px 16px;margin-top:22px;align-items:stretch}
.pk-flow > .pk-grp{flex:1 1 460px;min-width:0;margin-top:0;display:flex;flex-direction:column}
.pk-flow > .pk-grp > summary{flex:0 0 auto}
.pk-flow .sup-grid{margin-top:12px;grid-template-columns:1fr;flex:1 1 auto}
.pk-flow .sup-card{height:100%}
@media(min-width:641px){
  /* 平板/桌面（≥641px）即走「左图右文」；≤640px 手机仍为上图下文（窄屏左图会挤掉正文）。 */
  .sup-card.sup-wide{display:grid;grid-template-columns:minmax(150px,196px) 1fr;align-items:stretch}
  .sup-card.sup-wide .sup-photo{aspect-ratio:auto;height:100%;min-height:128px}
  .sup-card.sup-wide .sup-body{padding:13px 18px 12px;gap:6px}
  .sup-card.sup-wide .sup-logo{width:46px;height:46px;border-radius:10px}
  .sup-card.sup-wide .sup-logo .ph-txt{font-size:19px}
  .sup-card.sup-wide .sup-nm{font-size:15.5px}
  .sup-card.sup-wide .sup-ft{padding-top:8px;font-size:12.5px;gap:4px 14px}
}
@media(max-width:900px){.pk-flow > .pk-grp{flex:1 1 100%}
  /* 两列栅格在 641〜900px 落回单列（宽卡左图已占 196px，再分两列则正文只剩百来像素）。 */
  .sup-grid.n2{grid-template-columns:1fr}}

/* ---------- 官方直达（/shops/ · 2026-10-15 q86 用户直令：106 种官方入口 ①③② + 道地） ---------- */
.hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px;margin-top:16px}
@media(max-width:640px){.hub-grid{grid-template-columns:1fr;gap:10px}}
.hub-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);
  padding:13px 16px 12px;box-shadow:var(--shadow-1);display:flex;flex-direction:column;gap:6px;transition:.2s}
.hub-card:hover{border-color:var(--line2);box-shadow:var(--shadow-2)}
.hub-nm{display:inline-block;font-family:var(--serif);font-size:16px;letter-spacing:1px;color:var(--g900);padding:6px 0}
.hub-nm:hover{color:var(--g700)}
.hub-lk{font-size:12.5px;line-height:1.95;color:var(--ink2);display:flex;gap:8px;align-items:baseline}
.hub-lk b{flex:0 0 auto;font-weight:400;color:var(--g700);letter-spacing:.5px;background:var(--g100);
  border-radius:5px;padding:0 6px;font-size:11.5px;line-height:1.9}
.hub-lk .hv{min-width:0}
.hub-lk a.hl{color:var(--g800);border-bottom:1px dotted rgba(23,132,60,.4)}
.hub-lk a.hl:hover{color:var(--g700);border-bottom-style:solid}
.hub-lk a.hl::after{content:"↗";font-size:10px;margin-left:1px;color:var(--ink3)}
.hub-lk .hl{color:var(--ink2)}
.hub-lk.empty{color:var(--ink3);font-size:12px;letter-spacing:.5px}
.hub-demo{font-style:normal;font-size:10px;color:#8A6D33;background:#F4EBD6;border-radius:4px;padding:0 5px;margin-left:3px}
.hub-gi{font-style:normal;font-size:10px;color:#1E6F3C;background:#E2F2E7;border-radius:4px;padding:0 5px;margin-right:4px}

.hub-nat{font-size:12.5px;color:var(--ink2);margin:8px 0 0}
.hub-nat b{color:var(--g700);font-weight:400;margin-right:8px;letter-spacing:1px}
.hub-nat a{color:var(--g800);border-bottom:1px dotted rgba(23,132,60,.4)}
.hub-nat a::after{content:"↗";font-size:10px;margin-left:1px;color:var(--ink3)}
.hub-nat span{color:var(--ink2)}
.hub-note{margin:12px 0 0;font-size:11.5px;color:var(--ink3);line-height:1.9}

/* ---------- 平台服务（/shops/ · 2026-10-16 用户直令：AI 服务落「产品服务」栏目；q108 扩展五项——＋AI 成果转化） ---------- */
/* 栅格：基础 4 列（/data/ 机器可读入口等复用）/ ≤1080 两列 / ≤640 单列；svc-grid-5 = /shops/ 五项版（桌面 5 列） */
.svc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:16px}
.svc-grid-5{grid-template-columns:repeat(5,1fr)}
@media(max-width:1080px){.svc-grid,.svc-grid-5{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.svc-grid,.svc-grid-5{grid-template-columns:1fr;gap:10px}}

/* ---------- 优势特色（/about/ · 2026-10-16 用户直令 q108：关于面板「优势特色」落点——数据聚合 / 专家指导 两卡） ---------- */
.adv-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:16px}
@media(max-width:900px){.adv-grid{grid-template-columns:1fr;gap:10px}}
.adv-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);
  padding:18px 20px 16px;box-shadow:var(--shadow-1);display:flex;flex-direction:column;gap:7px;transition:.2s}
.adv-card:hover{border-color:var(--line2);box-shadow:var(--shadow-2)}
.adv-card b{font-family:var(--serif);font-size:16.5px;letter-spacing:1.5px;color:var(--g900)}
.adv-card p{margin:0;font-size:13.5px;line-height:1.9;color:var(--ink2)}
.adv-card a{color:var(--g800);border-bottom:1px dotted rgba(23,132,60,.4);font-size:12.5px;align-self:flex-start}
.adv-card a:hover{color:var(--g700);border-bottom-style:solid}
.adv-card a::after{content:"→";font-size:11px;margin-left:3px;color:var(--ink3)}
.svc-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);
  padding:18px 20px 16px;box-shadow:var(--shadow-1);display:flex;flex-direction:column;gap:7px;transition:.2s}
.svc-card:hover{border-color:var(--line2);box-shadow:var(--shadow-2)}
.svc-card b{font-family:var(--serif);font-size:16.5px;letter-spacing:1.5px;color:var(--g900)}
.svc-card p{margin:0;font-size:13.5px;line-height:1.9;color:var(--ink2)}
/* 服务内容卡「导语 ＋ 要点」三段式（/svc/quality/ · 2026-10-18 用户直令「四个框内，适当调整，网站美观」）：
   长段落拆为「一句导语（加重）＋ 三条带绿点要点」——四卡等高、可扫读；仅数据侧 3 元组启用（.svc-lead），
   2 元组页面（picks / promo / transform）零漂移。回退 = 删本段（渲染侧见 write_svc 的 _feat_html）。 */
.svc-card .svc-lead{font-size:13px;line-height:1.85;color:var(--ink);min-height:3.7em}
/* 导语块统一预留两行高（3.7em = 2 × 1.85 行高）——第一张卡导语换行时，四卡要点起始线仍然齐；
   ≤640px 单列不跨卡对齐，取消预留避免多余空白。 */
.svc-card .svc-li{list-style:none;margin:2px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.svc-card .svc-li li{position:relative;padding-left:13px;font-size:12.5px;line-height:1.75;color:var(--ink2);letter-spacing:.2px}
.svc-card .svc-li li::before{content:"";position:absolute;left:0;top:7.5px;width:5px;height:5px;border-radius:50%;background:var(--g300)}
@media(max-width:640px){.svc-card .svc-li{gap:5px}.svc-card .svc-li li{font-size:13px}
  .svc-card .svc-lead{min-height:0}}
/* 服务内容卡「主题图标 ＋ 顶部渐变条」（/svc/quality/ · 2026-10-18 用户直令「直接把图片放到这几个位置」→「你自己定」）：
   配图定为内联 SVG 线性图标——零图片请求、零额外字节、任意分辨率锐利、语义留在 DOM；
   不用位图（微信内置浏览器 / 未建 WebP 镜像的窗口期会退回原图，动辄数百 KB）。
   仅带图标的卡（.svc-i）启用；其余 svc-card（/shops/ 服务卡与 /data/）逐字节不变。
   回退 = 删本段（渲染侧见 write_svc 的 _feat_html 第 4 位）。 */
.svc-card.svc-i{position:relative;overflow:hidden}
.svc-card.svc-i::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;
  background:linear-gradient(90deg,var(--g700),var(--g300) 58%,rgba(156,203,171,0));opacity:.55}
.svc-card .svc-top{display:flex;align-items:flex-start;gap:10px;min-height:34px}
/* v2.32 2026-10-19：标题区预留两行——第 2 卡标题「工艺文件 · 生产检验 SOP」桌面折两行（≈57.75px），
   其余三卡单行（34px 由图标撑高）。不预留则卡 2 首条要点比其余低 24px（四卡等高、基线不齐）。
   3.5em = 2 行 × 1.75 行高（16.5px 字号 → 57.75px）；flex 居中让单行标题与图标竖向对齐；
   ≤640px 单列不跨卡对齐，取消预留避免多余空白。回退 = 删本行与 ≤640px 的 min-height:0。 */
/* v2.33 2026-10-19：图标与标题首行同线（用户直令「图中 SOP 在标题中央」）——标题区预留两行后，
   align-items:center 会把 34px 图标竖向居中到两行之间（第 2 卡两行标题时悬浮中间、与哪行都不齐）；
   改 flex-start 后四卡图标均与标题首行对齐。**不加 padding-top**——两行标题已占满预留高度，
   再加内边距会把卡 2 的正文整体推低 5px（四卡导语/要点基线又岔开）。
   回退 = 两处 align-items 改回 center。 */
/* v2.34 2026-10-19 用户直令（附图「SOP 居中」）：标题第二行整行居中（仅带 \n 的标题输出 .svc-t2）；
   b 由 flex 改 block——flex 容器会把 .svc-t2 与首行文字并排成两个 flex 项，块级才能独占一行并满宽居中。
   无 .svc-t2 的卡片（其余三张 / 其余页）排版与此前一致。回改 = display 改回 flex 并删下行。 */
.svc-card .svc-top b{min-height:3.5em;display:block}
.svc-card .svc-t2{display:block;text-align:center}
.svc-card .svc-ico{flex:0 0 auto;width:34px;height:34px;border-radius:11px;display:inline-flex;
  align-items:center;justify-content:center;color:var(--g700);
  background:linear-gradient(145deg,var(--g100),#fff);border:1px solid rgba(23,132,60,.16);
  box-shadow:inset 0 1px 0 #fff;transition:.2s}
.svc-card .svc-ico svg{width:19px;height:19px;display:block}
.svc-card.svc-i:hover .svc-ico{color:#fff;background:linear-gradient(145deg,var(--g700),var(--g600));border-color:var(--g700)}
@media(max-width:640px){.svc-card .svc-top{gap:9px;min-height:32px}
  .svc-card .svc-top b{min-height:0}
  .svc-card .svc-ico{width:32px;height:32px;border-radius:10px}
  .svc-card .svc-ico svg{width:18px;height:18px}}
/* 平台服务详情页（/svc/* · 2026-10-16 用户直令 q114「栏目中点击进去再有内容」）：
   ① /shops/ 服务卡改 a.svc-card 可点击（.go = 「了解详情 →」提示行 · 贴卡片底部）；
   ② 详情页「服务流程」四步卡 .svc-steps/.svc-step。回退 = 删本段（.go 与 .svc-steps 一并）。 */
a.svc-card{cursor:pointer}
.svc-card .go{font-style:normal;font-size:12px;color:var(--g800);letter-spacing:.5px;margin-top:auto}
a.svc-card:hover .go{color:var(--g700);letter-spacing:1px}
.svc-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:16px}
.svc-step{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px 13px;
  box-shadow:var(--shadow-1);display:flex;flex-direction:column;gap:6px;transition:.2s}
.svc-step:hover{border-color:var(--line2);box-shadow:var(--shadow-2)}
.svc-step i{font-style:normal;width:24px;height:24px;border-radius:50%;background:var(--g100);color:var(--g800);
  font-size:12.5px;display:inline-flex;align-items:center;justify-content:center;font-weight:600}
.svc-step b{font-family:var(--serif);font-size:15px;letter-spacing:1.5px;color:var(--g900);font-weight:600}
.svc-step p{margin:0;font-size:12.5px;line-height:1.85;color:var(--ink2)}
@media(max-width:900px){.svc-steps{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.svc-steps{grid-template-columns:1fr;gap:8px}}
/* 平台服务详情页「交集图」（/svc/picks/）——2026-10-17 q130 位图→内联 SVG；
   2026-10-18 用户直令「这个占的版面太多；修改，手机端、电脑端均能看」：紧凑化——
   圆内只留 ①②③ 编号（文字说明改图右图例，≤640px 图例落到图下方）、结论改图外结果条、图宽固定 148px；
   单卡高约 604→约 250px（桌面）；双端同一套内容，仅图例落位差异。回退 = 删本段（页面同时撤 figs 字段）。 */
.svc-figs{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:14px}
.svc-fig{margin:0;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);
  box-shadow:var(--shadow-1);display:flex;flex-direction:column;gap:9px;padding:13px 15px 12px;transition:.2s}
.svc-fig:hover{border-color:var(--line2);box-shadow:var(--shadow-2)}
.vf-t{font-family:var(--serif);font-size:13.5px;letter-spacing:1.2px;color:var(--g800);font-weight:600}
.vf-body{display:grid;grid-template-columns:132px 1fr;gap:13px;align-items:center}
.svc-venn{background:radial-gradient(120% 90% at 50% 0%,#FCFBF6 0%,#F4F2E9 100%);
  border-radius:var(--r-sm);padding:5px 4px}
.svc-venn svg{display:block;width:100%;height:auto}
.vf-lg{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}
.vf-lg li{display:grid;grid-template-columns:18px 1fr;column-gap:6px;align-items:center}
.vf-lg li i{font-style:normal;width:16px;height:16px;border-radius:50%;border:1px solid;
  font-size:10px;line-height:14px;text-align:center;font-weight:600}
.vf-lg li p{margin:0;font-size:12px;line-height:1.65;color:var(--ink2)}
.vf-lg li b{margin-right:5px;font-family:var(--serif);font-size:12.5px;letter-spacing:.5px;
  color:var(--g900);font-weight:600}
.vf-lg li span::before{content:"· ";color:var(--ink3)}
.vf-res{margin:0;padding:6px 11px;font-size:11.5px;line-height:1.65;color:var(--g800);letter-spacing:.3px;
  background:var(--g100);border-left:3px solid var(--g300);border-radius:0 var(--r-sm) var(--r-sm) 0}
.vf-res b{font-family:var(--serif);font-size:13px;letter-spacing:1px;color:var(--g900);font-weight:600}
.svc-fig figcaption{margin:0;font-size:11.5px;line-height:1.75;color:var(--ink2)}
.svc-fig-foot{margin:12px 0 0;font-size:13px;line-height:1.9;color:var(--g800);letter-spacing:.5px;
  background:var(--g100);border-left:3px solid var(--g300);border-radius:0 var(--r-sm) var(--r-sm) 0;padding:10px 14px}
@media(max-width:900px){.svc-figs{grid-template-columns:1fr;gap:10px}}
/* 手机端：图例落到图下方（与桌面同一套文案 · 字号不缩水） */
@media(max-width:640px){
  .svc-fig{padding:11px 12px 11px;gap:8px}
  .vf-body{grid-template-columns:112px 1fr;gap:10px}
  .svc-venn{width:112px;padding:3px}
  .vf-lg li p{font-size:12px;line-height:1.6}
  .vf-res{font-size:12px;padding:7px 10px}
  .svc-fig figcaption{font-size:11.5px}
  .svc-fig-foot{font-size:12.5px;padding:9px 12px;margin-top:10px}}

/* ---------- 联系方式索引（/shops/ · 2026-10-15 q86d 用户直令） ---------- */
.ct-fold{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-1);margin:12px 0;overflow:hidden;transition:.2s}
.ct-fold:hover{border-color:var(--line2)}
.ct-fold summary{cursor:pointer;padding:12px 18px;font-family:var(--serif);font-size:15px;letter-spacing:1.5px;color:var(--g800);list-style:none;position:relative;user-select:none}
.ct-fold summary::-webkit-details-marker{display:none}
.ct-fold summary::after{content:"展开 ▾";position:absolute;right:16px;font-family:inherit;font-size:11.5px;letter-spacing:.5px;color:var(--ink3);transition:.2s}
.ct-fold[open] summary::after{content:"收起 ▴"}
.ct-fold summary:hover{background:#f7faf6}
.ct-fold[open] summary{border-bottom:1px solid var(--line)}
.ct-list{padding:6px 18px 14px}
.ct-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:5px 12px;padding:8px 0;border-top:1px dashed var(--line);font-size:13px;line-height:1.75}
.ct-row:first-child{border-top:0}
.ct-nm{flex:0 0 auto;max-width:46%;font-weight:600;color:var(--ink2);font-size:13.5px}
.ct-nm a{color:var(--g800);border-bottom:1px dotted rgba(23,132,60,.4)}
.ct-nm a:hover{color:var(--g700);border-bottom-style:solid}
.ct-nm a::after{content:"↗";font-size:10px;margin-left:1px;color:var(--ink3)}
.ct-nw{font-style:normal;font-size:10.5px;color:var(--ink3);margin-left:6px;font-weight:400}
.ct-ph{color:var(--g900);font-weight:600;letter-spacing:.3px}
.ct-pn{background:var(--g100);color:var(--g800);border-radius:6px;padding:1px 8px;font-size:12px;letter-spacing:.3px}   /* 联系人列（站长可见索引 · 2026-10-16 用户直令） */
.ct-em{color:var(--ink3);font-size:12px;word-break:break-all}
.ct-src,.ct-pd{font-style:normal;font-size:10.5px;padding:1px 7px;border-radius:999px;letter-spacing:.5px;white-space:nowrap}
.ct-src{background:var(--g100);color:var(--g700)}
.ct-src.s-registry{background:#f2f4f0;color:#6d7a6f}
.ct-src.s-map{background:#f4f1ea;color:#8a7a55}
.ct-pd{background:#fbf3e3;color:#9a7b2d}
.ct-none{color:var(--ink3);font-size:12px}
.ct-note{flex-basis:100%;color:var(--ink3);font-size:11.5px;letter-spacing:.3px}
.ct-src-note{margin:12px 0 0;font-size:11.5px;color:var(--ink3);line-height:1.9}
.ct-adm{font-style:normal;font-size:11px;font-weight:400;letter-spacing:1px;color:#9a7b2d;background:#fbf3e3;border-radius:999px;padding:2px 9px;vertical-align:middle;margin-left:8px}
/* 站长专属标记 .adm-tag（2026-10-16 用户直令「站长可见的隐藏内容需要标记」）：
   与 .ct-adm 同款「仅站长可见」小标（前置式 · 置于站长可见内容之首——页脚流量计数器 / 机器可读入口）。
   这些元素本身仅站长可见（未授权不可见），故标记只在站长视角出现、访客视野零出现。 */
.adm-tag{font-style:normal;font-size:11px;font-weight:400;letter-spacing:1px;color:#9a7b2d;background:#fbf3e3;border-radius:999px;padding:2px 9px;vertical-align:middle;margin-right:6px}
/* 2026-10-27：标记文案改由 CSS 生成（徽标元素在 HTML 里留空 · 站长视角外观与旧版逐像素一致）。
   理由：raw HTML 被抓取器 / 大模型直读时，「仅站长可见」这类内部备注词会被误当成页面内容
   （同 2026-10-23 /svc/price/ 的 h1 口径：标题不带内部备注词）。令链 / .adm-only 门禁一概不变。
   回改 = 删本条 ＋ site_app.js 的 data-adm-tip 段 ＋ build_pages.write() 的两处替换。 */
.adm-tag::before,.ct-adm::before{content:"仅站长可见"}
.ct-warn{display:block;background:#fbf3e3;border:1px solid #e8d5a8;color:#8a6d3b;border-radius:9px;padding:9px 14px;margin:2px 0 12px;font-size:12.5px;letter-spacing:.4px;text-decoration:none;transition:.2s}
.ct-warn:hover{background:#f7ecd4;border-color:#dcc48c}
@media(max-width:640px){
  .ct-nm{max-width:100%}
  .ct-row{gap:4px 10px;padding:9px 0}
}

/* ---------- 行业目录（/shops/ · 2026-10-16 用户直令 q89：行业协会 / 地理标志持有人 / 药食同源药材 /
   道地药材 / 产地商家——全名单 · 可折叠展开 · 不再截断；五段目录共用一套样式） ---------- */
.dr-nat{font-size:12.5px;color:var(--ink2);margin:8px 0 0;line-height:1.9}
.dr-nat b{color:var(--g700);font-weight:400;margin-right:8px;letter-spacing:1px}
.dr-nat a{color:var(--g800);border-bottom:1px dotted rgba(23,132,60,.4)}
.dr-nat a:hover{color:var(--g700);border-bottom-style:solid}
.dr-nat a::after{content:"↗";font-size:10px;margin-left:1px;color:var(--ink3)}
.dr-nat .sub{color:var(--ink3);font-size:12px;font-style:normal}
.dr-row .sub{color:var(--ink3);font-size:12px;font-style:normal}   /* 行内括注（全国性组织备注等 · 2026-10-16 用户直令批） */
.dr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:10px;margin-top:16px}
@media(max-width:640px){.dr-grid{grid-template-columns:1fr;gap:8px}}
.dr-row{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:11px 15px 10px;
  box-shadow:var(--shadow-1);font-size:13px;line-height:1.9;color:var(--ink2);min-width:0;overflow-wrap:break-word}
.dr-row>b{font-family:var(--serif);font-size:14.5px;letter-spacing:1.5px;color:var(--g900);margin-right:8px;font-weight:600}
.dr-row>b a{color:var(--g900)}
.dr-row>b a:hover{color:var(--g700)}
.dr-row a.hl{color:var(--g800);border-bottom:1px dotted rgba(23,132,60,.4)}
.dr-row a.hl:hover{color:var(--g700);border-bottom-style:solid}
.dr-row a.hl::after{content:"↗";font-size:10px;margin-left:1px;color:var(--ink3)}
/* 行业协会目录 · 全国 / 省级分区（2026-10-16 用户直令「全国/与省级稍作区分，网站美观一些，便于阅读、推广」）：
   全国性组织 = 暖底金沿线「权威卡」（2 列 + 标前金点）；省级 = 素白卡 + 省名软色片（3 列）；
   回改 = 撤本段 + build_pages._dir_assoc_html 恢复单网格。 */
.dr-grid-nat{grid-template-columns:repeat(2,minmax(0,1fr))}
.dr-grid-nat .dr-row{background:linear-gradient(180deg,#FBF7EC,#FFFFFF 78%);border-color:#EBDFC6;
  box-shadow:inset 3px 0 0 0 var(--gold),var(--shadow-1)}
.dr-grid-nat .dr-row>b::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;
  background:var(--gold);margin-right:7px;vertical-align:2px}
.dr-grid-prov .dr-row>b{display:inline-block;background:var(--g100);border:1px solid #DDEBDF;border-radius:7px;
  padding:0 9px;font-size:13px;letter-spacing:1px;line-height:1.8;margin-right:9px}
/* 地（市）县级（2026-10-17 用户直令追加）：省名片改中性灰片，与省级绿片递进区分；回改 = 撤本段。 */
.dr-grid-loc .dr-row>b{background:#F4F5F1;border-color:#E5E7E0}
@media(max-width:900px){.dr-grid-nat{grid-template-columns:1fr}}
.dr-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.dr-h3{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:26px 0 0;
  font-family:var(--serif);font-size:17px;letter-spacing:2px;color:var(--g900);font-weight:600}
.dr-h3 small{font-family:var(--sans);font-size:12px;letter-spacing:1px;color:var(--ink3);font-weight:400}
.dr-fold{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-1);
  margin:10px 0;overflow:hidden;transition:.2s}
.dr-fold:hover{border-color:var(--line2)}
.dr-fold summary{cursor:pointer;list-style:none;position:relative;padding:11px 84px 11px 18px;font-size:13.5px;
  color:var(--ink2);user-select:none;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.dr-fold summary::-webkit-details-marker{display:none}
.dr-fold summary::after{content:"展开 ▾";position:absolute;right:16px;top:50%;transform:translateY(-50%);
  font-size:11.5px;color:var(--ink3);letter-spacing:.5px}
.dr-fold[open] summary::after{content:"收起 ▴"}
.dr-fold summary:hover{background:#f7faf6}
.dr-fold summary b{font-family:var(--serif);font-size:15px;letter-spacing:1.5px;color:var(--g900);font-weight:600}
.dr-fold summary .tt{color:var(--g800);min-width:0}
.dr-fold summary .mt{color:var(--ink3);font-size:12.5px}
.dr-fold[open] summary{border-bottom:1px solid var(--line)}
.dr-fold-2{margin-top:18px}
.dr-body{padding:12px 18px 15px}
.dr-items{margin:0 0 8px;font-size:13px;line-height:2.05;color:var(--ink2);letter-spacing:.3px}
.dr-src{margin:0;font-size:12px;color:var(--ink3);line-height:1.9}
.dr-src .dl{color:var(--g700);border-bottom:1px dotted rgba(23,132,60,.4)}
.dr-src .dl:hover{color:var(--g800);border-bottom-style:solid}
.dr-g{margin:0 0 8px;padding:7px 0 0;border-top:1px dashed var(--line);font-size:13px;line-height:2.05;
  color:var(--ink2);overflow-wrap:break-word}
.dr-g:first-child{border-top:0;padding-top:0}
.dr-g b{color:var(--g800);font-weight:600;letter-spacing:.4px}
.dr-g i{font-style:normal;color:var(--ink3);font-size:11.5px;margin:0 6px 0 4px}
/* 核准用标企业 · 站长模式内联联系方式（/shops/ ⑤目录 · 2026-10-16 q103 用户直令「补齐…仅站长可见」）——
   仅站长模式下由脚本注入 .gi-ct 元素（公开页面零痕迹；此样式定义无害保留） */
.gi-ct{margin-left:2px;font-style:normal;font-size:12px;line-height:1.6;color:var(--g700);letter-spacing:.2px}
/* 标记（2026-10-16 用户直令「站长可见的隐藏内容需要标记」）：每行注入内容前加「仅站长可见」小标——
   行级标记用 CSS ::before（注入数据自带样式，不改数据与脚本） */
.gi-ct::before{content:"仅站长可见";display:inline-block;margin-right:6px;padding:0 7px;border-radius:999px;background:#fbf3e3;color:#9a7b2d;font-size:10px;letter-spacing:.8px;line-height:1.8;font-style:normal;vertical-align:1px}
.gi-ct.pd{color:#9a7b2d}
.gi-ct.none{color:var(--ink3);opacity:.85}
@media(max-width:640px){
  .dr-fold summary{padding:10px 74px 10px 14px}
  .dr-body{padding:10px 14px 12px}
  .dr-chips .db-chip{padding:10px 17px}
  .gi-ct{font-size:11px}
}

/* ---------- 关于页 ---------- */
.about-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,.65fr);gap:44px;align-items:start}
@media(max-width:900px){.about-grid{grid-template-columns:1fr;gap:26px}}
.about-body .prose{font-size:16px;line-height:2.15}
.about-body .prose p:first-child::first-letter{font-family:var(--serif);font-size:1.6em;color:var(--g700)}
.contact-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);
  padding:26px;box-shadow:var(--shadow-1);position:sticky;top:92px}
.contact-card h3{font-family:var(--serif);font-size:18px;letter-spacing:2px;color:var(--g900);margin:0 0 16px}
.contact-card .row{display:flex;gap:10px;padding:9px 0;border-top:1px dashed var(--line);font-size:13.5px;color:var(--ink2)}
.contact-card .row:first-of-type{border-top:0}
.contact-card .row b{flex:0 0 auto;color:var(--ink3);font-weight:400;letter-spacing:1.5px;font-size:12.5px}
.contact-card .icp-slot{margin-top:14px;font-size:12px;color:var(--ink3);letter-spacing:.5px}
@media(max-width:900px){.contact-card{position:static}}
/* 手机端（2026-10-19 用户直令 q176「卡片稍微宽一点 · 公安备案号放在 1 行」）：
   ① 卡片左右内距 26 → 15px（375 屏内容区 285 → 315px，卡片视觉更宽）；
   ② 行改 flex-wrap —— 一行放不下时**整串换到下一行**，而不是把一串号码拆成两截；
   ③ 备案两行（.row-code）的值 nowrap —— 号码永不断行（375/360/320 均在整行宽内放得下）。
   回退 = 删本段（渲染侧 row-code 类可留 · 无样式即无效）。 */
@media(max-width:640px){
  .contact-card{padding:18px 15px}
  .contact-card .row{flex-wrap:wrap;gap:3px 10px;padding:8px 0}
  .contact-card .row-code>span{white-space:nowrap}
}

/* ---------- 页脚 ---------- */
.site-footer{margin-top:96px;background:#0F4A2B;color:rgba(233,227,207,.82)}
.site-footer .top{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:38px;padding:56px 22px 34px}
@media(max-width:860px){.site-footer .top{grid-template-columns:1fr;gap:18px;padding:30px 22px 20px}}
.site-footer h4{font-family:var(--serif);font-weight:600;color:#F3EFE3;font-size:16.5px;
  letter-spacing:3px;margin:0 0 16px}
.site-footer .fbrand{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.site-footer .fbrand .brand-badge{border-color:rgba(255,255,255,.16)}
.site-footer .fbrand strong{font-family:var(--serif);font-size:18px;letter-spacing:3px;color:#F3EFE3}
.site-footer .fbrand small{display:block;font-size:10.5px;letter-spacing:2px;color:rgba(233,227,207,.55);margin-top:2px}
.site-footer p{font-size:13px;line-height:2;color:rgba(233,227,207,.62);margin:0}
.site-footer a.fl{display:block;padding:5px 0;font-size:13.5px;color:rgba(233,227,207,.72);transition:.18s}
.site-footer a.fl:hover{color:var(--gold-soft);padding-left:4px}
/* 桌面端「快速导航」3 列网格（2026-10-10 q23 用户直令：竖排一长列 → 页面过长）；与手机端口径一致 */
.site-footer .fnav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 10px}
/* 页脚四栏结构类（2026-10-22 q219-T3 引入 · q226 重排）：
   .fcols 桌面 display:contents → 内容/服务/关于三组仍是 .top 的栅格项（桌面版式逐像素不变），
   手机端才变成「一行三列」；.fcontact＝地址电话邮编 与 微信二维码（桌面块级＝原顺序，手机并排）；
   .fqr / .faddr 只承担间距（原先 margin-top 内联在 HTML 里，手机端改不了）。 */
.site-footer .fcols{display:contents}
/* q226b：页脚导航开关只在手机上出现（桌面端 .fcols 仍是 display:contents，三组继续做 .top 的栅格项） */
.site-footer .fnav-tog{display:none}
.site-footer .fcols .fnav{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:0 10px}
.site-footer .fqr{margin-top:10px}
.site-footer .faddr p{margin-top:12px}
.site-footer .bottom{border-top:1px solid rgba(255,255,255,.09);padding:20px 22px 26px;
  text-align:center;font-size:12.5px;line-height:2.1;color:rgba(233,227,207,.5);letter-spacing:.5px}
.site-footer .bottom .icp{color:var(--gold-soft)}
.site-footer .bottom .icp a{color:var(--gold-soft)}
.site-footer .bottom .police{color:var(--gold-soft)}
.site-footer .bottom .police a{color:var(--gold-soft)}
/* 页脚访客计数器（站点统计 · 2026-10-12）：数字金色；悬停看本页 / 点击进统计页 */
.site-footer .bottom .pvzone{cursor:pointer;white-space:nowrap}
.site-footer .bottom .pvzone b{color:var(--gold-soft);font-weight:600}
.site-footer .disclaim{padding:0 22px 22px}
.site-footer .disclaim p{max-width:1000px;font-size:11px;line-height:1.9;color:rgba(233,227,207,.55)}
.site-footer .disclaim a{color:var(--gold-soft);text-decoration:none}

/* 手机端页脚紧凑化（2026-10-10 q20 用户直令：手机端页脚过长 → 紧凑排版）
   ① 纵向留白收紧 + 字号/行距微调；②「快速导航」7 条纵列 → 3 列网格（7 行 → 3 行）；
   ③ 底栏改为「版权 ｜ ICP备案号」单行（原先的地址/邮编与「联系我们」栏重复，已整站移除）；
   ④ 横向内边距回归容器口径（≤640：16px；其它：22px），修页脚文字贴屏（padding 简写曾覆盖 .wrap）；
   ⑤「联系我们」邮箱并入「邮编」同一行——隐藏 .br-mail 换行（2026-10-15 用户直令；桌面端不变）。 */
@media(max-width:640px){
  .site-footer{margin-top:48px}
  .site-footer .top{gap:13px;padding:22px 16px 14px}
  .site-footer .fbrand{gap:9px;margin-bottom:9px}
  .site-footer .fbrand .brand-badge{width:32px;height:32px}
  .site-footer .fbrand strong{font-size:16px;letter-spacing:2px}
  .site-footer .fbrand small{font-size:9.5px;letter-spacing:1.2px;margin-top:1px}
  .site-footer h4{font-size:14.5px;letter-spacing:2px;margin:0 0 7px}
  .site-footer p{font-size:12.5px;line-height:1.75}
  .site-footer .br-mail{display:none}
  .site-footer .fnav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 10px}
  .site-footer a.fl{padding:9px 0;font-size:13px}
  .site-footer .disclaim{padding:0 16px 12px}
  .site-footer .disclaim p{font-size:10.5px;line-height:1.75;color:rgba(233,227,207,.66)}  /* q226：手机上这两段是唯一的法律文本，字色由 .55 提到 .66 */
  .site-footer .bottom{padding:12px 16px 16px;font-size:11.5px;line-height:1.8}

  /* ---- 2026-10-22 q226（用户直令「网页最低端，手机浏览不舒服，优化执行」）手机端页脚重排 ----
     ① 地址/电话/邮编 与 微信二维码 并排 —— 二维码原占满一整行 103px；
     ② 内容 / 服务 / 关于 三块由「纵排三大块」改「一行三列」（组内链接竖排），
        顺带消除原来「3 列网格里 5 条链接 3+2 断行」的错位；
     ③ 品牌副行（商标注册号那行）去字距 → 不再出现「中国商标网可核验」单独落一行的断句；
     ④ 底栏去字距 → 备案三行收两行。
     实测 375：页脚 960 → 约 730px，块内铺排由「三大块」变「一横排」。
     回改 = 删本段（含 ④ 之后的 .foot-in 两行）。 */
  .site-footer .fbrand small{letter-spacing:.2px}
  .site-footer .fcontact{display:flex;gap:12px;align-items:center;margin-top:2px}
  .site-footer .faddr{flex:1 1 auto;min-width:0}
  .site-footer .faddr p{margin-top:0}
  .site-footer .fqr{margin-top:0;flex:0 0 auto}
  .site-footer .fcols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 8px;margin-top:5px}
  .site-footer .fcols h4{margin:0 0 3px}
  .site-footer .fcols .fnav{grid-template-columns:1fr;gap:0}
  .site-footer .fcols a.fl{font-size:12.5px;white-space:nowrap}
  .site-footer .bottom{letter-spacing:0;line-height:1.7}
  /* ④ 页脚让位：滚到页脚（底栏进入视口）时，固定悬浮键 .to-top / .shfloat 淡出——
     实测它们原本压在免责声明末行与备案号上（375：shfloat 694–738 / to-top 748–792，
     正好盖住 .bottom 的第 2、3 行）。开关由 site_app.js 尾段给 <html> 挂 .foot-in（仅 ≤640 生效）。 */
  html.foot-in .to-top,html.foot-in .shfloat{opacity:0;visibility:hidden;pointer-events:none}

  /* ---- 2026-10-22 q226b（手机端页脚导航收起 · 自行判断执行）----
     实测 375：页脚 779px（≈1.2 屏），「内容/服务/关于」15 条链接占 268px（34%）——收成一行开关后约 520px。
     链接仍在 DOM（爬虫 / 大模型可读），只是版式折叠；折叠类 .fnav-collapsed 由 site_app.js 挂，
     无 JS 时默认展开，内容不会被锁死。桌面端 .fnav-tog display:none，版式零变化。
     回改 = 删本段 ＋ 顶层 .site-footer .fnav-tog{display:none} ＋ site_app.js 尾段 IIFE ＋ build_pages 的 _fnav_tog。 */
  .site-footer .fnav-tog{display:flex;width:100%;align-items:center;gap:6px;grid-column:1/-1;
    min-height:44px;padding:0 2px;background:none;border:0;border-bottom:1px solid rgba(255,255,255,.10);
    color:#F3EFE3;font-family:inherit;font-size:13px;letter-spacing:1px;cursor:pointer;text-align:left}
  .site-footer .fnav-tog .fnav-n{margin-left:auto;font-size:11.5px;letter-spacing:0;color:rgba(233,227,207,.55)}
  .site-footer .fnav-tog .fnav-ar{width:7px;height:7px;margin:-3px 2px 0 8px;
    border-right:1.5px solid rgba(233,227,207,.65);border-bottom:1.5px solid rgba(233,227,207,.65);
    transform:rotate(45deg);transition:transform .2s}
  .site-footer .fnav-tog[aria-expanded="true"] .fnav-ar{transform:rotate(225deg);margin-top:2px}
  html.fnav-collapsed .site-footer .fcols .fcol{display:none}
}

/* ================= 页脚 v2（2026-10-22 · q232 用户直令「优化一下，看起来更好」） =================
   症状（改前 1280 实测）：.top 的内联 auto-fit 把四栏压成等宽 255px —— 左侧品牌栏（简介＋地址＋
     二维码）约 450px 高，右侧「内容/服务/关于」三组链接只有 124px 高，右半幅整片留白；组内 .fnav
     又是 3 列小网格，5–6 条链接断成 2 列，扫读要左右跳；正文 .62 透明度在 #0F4A2B 上对比只有 4.1（AA 需 4.5）。
   做法：① 品牌块 / 链接区 = 1.18fr / 1.9fr（≈415 + 665px），左右两块视觉高度拉平；
     ② 三组链接单列竖排（h4 下一条金色短线作锚，hover 右移 3px + 转金色）；
     ③ 地址 / 电话 / 邮编 / 邮箱 出品牌栏 → 独立「联系条」（金色小标签 + 值，右侧并排微信码）；
     ④ 深绿底改微渐变 + 顶部 1px 金线；三段之间加发丝线；底栏去字距；
     ⑤ 正文 .62 → .74（对比 4.1 → 4.97，过 WCAG AA）。
   作用域：只认 .sf2（build_pages.footer() 挂的类）——新闻侧 worker.py 的三段式页脚（无 sf2）零漂移。
   回改 = 删本段 ＋ build_pages.footer() 的 return 还原（该函数注释里留了原 HTML）。 */
.site-footer.sf2{background:linear-gradient(180deg,#0F4A2B 0%,#0C4124 55%,#0A3820 100%);
  border-top:1px solid rgba(201,169,106,.30);color:rgba(233,227,207,.80)}
.site-footer.sf2 .top{display:grid;grid-template-columns:minmax(0,1.18fr) minmax(0,1.9fr);
  gap:0 56px;padding:62px 22px 44px;border-bottom:1px solid rgba(255,255,255,.09)}
.site-footer.sf2 .fbrand{margin-bottom:0;align-items:flex-start}
.site-footer.sf2 .fbrand strong{font-size:19.5px;letter-spacing:4px}
.site-footer.sf2 .fbrand small{font-size:11px;letter-spacing:1.3px;color:rgba(233,227,207,.64)}
.site-footer.sf2 .fbrand small+small{font-size:10.5px;letter-spacing:.3px;color:rgba(233,227,207,.55);margin-top:7px}
.site-footer.sf2 .fdesc{margin:18px 0 0;font-size:13px;line-height:2.1;color:rgba(233,227,207,.74);max-width:44ch}
.site-footer.sf2 .fcols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 28px}
.site-footer.sf2 h4{font-size:14.5px;letter-spacing:2px;margin:0 0 14px;padding-bottom:9px;
  position:relative;color:#F3EFE3}
.site-footer.sf2 h4:after{content:"";position:absolute;left:0;bottom:0;width:22px;height:1.5px;
  background:linear-gradient(90deg,var(--gold),rgba(201,169,106,0))}
.site-footer.sf2 .fnav{display:block}
.site-footer.sf2 a.fl{display:block;padding:6.5px 0;font-size:13.5px;color:rgba(233,227,207,.78);
  transition:color .18s ease,transform .18s ease}
.site-footer.sf2 a.fl:hover{color:var(--gold-hi);transform:translateX(3px)}
/* 联系条：地址 / 电话 / 邮编+邮箱（金色小标签 + 值）· 右侧并排微信码 */
.site-footer.sf2 .fcontact{display:flex;align-items:center;gap:32px;padding:16px 22px;
  border-bottom:1px solid rgba(255,255,255,.07)}
.site-footer.sf2 .faddr{flex:1 1 0;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:10px 0}
/* 四项之间加发丝竖线——否则值长短不一，横向扫视时「跳跃」（地址/电话/邮编邮箱三组节律→固定 30px） */
.site-footer.sf2 .faddr>span+span{padding-left:30px;border-left:1px solid rgba(255,255,255,.10)}
.site-footer.sf2 .faddr>span{font-size:13px;line-height:1.9;color:rgba(233,227,207,.78);white-space:nowrap}
.site-footer.sf2 .faddr .lb{font-style:normal;font-size:11.5px;letter-spacing:1.5px;
  color:var(--gold);margin-right:9px}
.site-footer.sf2 .faddr .lb2{margin-left:22px}
.site-footer.sf2 .faddr a{color:rgba(233,227,207,.78);padding-bottom:1px;
  border-bottom:1px solid rgba(233,227,207,.22);transition:.18s}
.site-footer.sf2 .faddr a:hover{color:var(--gold-hi);border-color:var(--gold-hi)}
.site-footer.sf2 .fqr{margin-top:0;flex:0 0 auto}
.site-footer.sf2 .fqr .wxqr{border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.22)}
/* 免责 / AI 参与声明 → 底栏 */
.site-footer.sf2 .disclaim{padding:20px 22px 6px;border-bottom:1px solid rgba(255,255,255,.07)}
.site-footer.sf2 .disclaim p{max-width:none;font-size:11.5px;line-height:1.95;
  color:rgba(233,227,207,.72);margin:0 0 5px}
.site-footer.sf2 .disclaim p:last-child{margin-bottom:0}
.site-footer.sf2 .disclaim a{color:var(--gold-hi)}
.site-footer.sf2 .bottom{border-top:0;padding:18px 22px 24px;letter-spacing:.2px;
  font-size:12.5px;line-height:2;color:rgba(233,227,207,.70);
  display:flex;align-items:center;justify-content:space-between;gap:8px 24px;flex-wrap:wrap;text-align:left}
.site-footer.sf2 .bottom .bleft,.site-footer.sf2 .bottom .bright{display:flex;align-items:center;
  flex-wrap:wrap;gap:2px 0}
.site-footer.sf2 .bottom .sep{font-style:normal;margin:0 10px;color:rgba(233,227,207,.26)}
.site-footer.sf2 .bottom a:hover{color:var(--gold-hi)}
/* 平板：两栏叠成一列 */
@media(max-width:900px){
  .site-footer.sf2 .top{grid-template-columns:1fr;gap:26px;padding:40px 22px 26px}
  .site-footer.sf2 .fdesc{margin-top:12px;max-width:none}
  .site-footer.sf2 .faddr>span+span{padding-left:0;border-left:0}
}
/* 手机：沿用 q226 / q226b 的版式口径（导航一行开关可收起 · 地址与二维码并排） */
@media(max-width:640px){
  .site-footer.sf2 .top{padding:20px 16px 12px;gap:12px}
  .site-footer.sf2 .fbrand strong{font-size:16.5px;letter-spacing:2.5px}
  .site-footer.sf2 .fbrand small{font-size:9.5px;letter-spacing:.6px}
  .site-footer.sf2 .fbrand small+small{font-size:9.5px;letter-spacing:0;margin-top:5px}
  .site-footer.sf2 .fdesc{margin-top:9px;font-size:12.5px;line-height:1.75}
  .site-footer.sf2 .fcols{grid-template-columns:repeat(3,minmax(0,1fr));gap:0 8px;margin-top:4px}
  .site-footer.sf2 .fcols h4{font-size:14px;letter-spacing:1.5px;margin:0 0 9px;padding-bottom:7px}
  .site-footer.sf2 .fcols a.fl{font-size:12.5px;padding:7px 0;white-space:nowrap}
  .site-footer.sf2 .fcols a.fl:hover{transform:none}
  .site-footer.sf2 .fcontact{padding:11px 16px;gap:12px;align-items:center;flex-wrap:nowrap}
  .site-footer.sf2 .faddr{flex:1 1 0;flex-direction:column;align-items:flex-start;gap:1px}
  .site-footer.sf2 .faddr>span{font-size:12.5px;line-height:1.7;white-space:normal}
  .site-footer.sf2 .faddr .lb{font-size:11px;letter-spacing:1px;margin-right:7px}
  .site-footer.sf2 .faddr .lb2{margin-left:14px}
  .site-footer.sf2 .disclaim{padding:14px 16px 4px}
  .site-footer.sf2 .disclaim p{font-size:10.5px;line-height:1.85;color:rgba(233,227,207,.74);margin-bottom:4px}
  /* 底栏：合规信息竖排三行（版权 / ICP / 公安备案）——不再出现备案号被折成半截 */
  .site-footer.sf2 .bottom{padding:10px 16px 14px;font-size:11.5px;line-height:1.7;letter-spacing:0;
    flex-direction:column;align-items:flex-start;gap:2px}
  .site-footer.sf2 .bottom .sep{display:none}
  .site-footer.sf2 .bottom .bleft{flex-direction:column;align-items:flex-start;gap:1px}
}

/* ---------- 灯箱 ---------- */
#lb{position:fixed;inset:0;z-index:300;display:none;align-items:center;justify-content:center;
  background:rgba(8,18,13,.9);padding:30px;cursor:zoom-out}
#lb.on{display:flex}
#lb img{max-width:94vw;max-height:86vh;border-radius:8px;box-shadow:0 34px 90px rgba(0,0,0,.55)}
#lb .x{position:absolute;top:14px;right:24px;color:#F3EFE3;font-size:34px;line-height:1;cursor:pointer;opacity:.85}
#lb .x:hover{opacity:1}

/* ---------- 404 ---------- */
.p404{min-height:52vh;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:90px 20px}
.p404 .big{font-family:var(--serif);font-size:clamp(60px,12vw,120px);letter-spacing:8px;
  color:var(--g700);line-height:1;margin-bottom:20px}
.p404 h1{font-family:var(--serif);font-size:22px;letter-spacing:3px;color:var(--g900);margin:0 0 12px}
.p404 p{color:var(--ink3);font-size:14px;margin:0 0 28px}

/* ---------- 小屏细节 ---------- */
@media(max-width:640px){
  .wrap{padding:0 16px}
  .site-header .wrap{height:60px}
  .site-nav{top:60px}   /* q179：抽屉顶＝页头高（≤640 页头 60px · 原写死 66px 会露出 6px 页底）*/
  .site-header .brand{padding:4px 0}
  .brand-badge{width:36px;height:36px}
  .brand-text strong{font-size:17px;letter-spacing:2.5px}
  .brand-text small{font-size:10.5px;letter-spacing:1.2px}
  .hub-lk{flex-direction:column;gap:2px;align-items:flex-start}
  .toolbar{top:60px}
  .hero h1{letter-spacing:2px}
  .hero .lead{font-size:15px}
  .btn{padding:12px 22px;font-size:14.5px}
  .item-hero h1{letter-spacing:3px}
  .item-meta{grid-template-columns:1fr}
}

/* ---------- 首页 · 今日日报条（2026-10-10 · 链路压缩：首页 → 日报页 1 跳） ---------- */
.dailyband{padding:22px 0 0}
.daily{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:#FBFAF7;
  border:1px solid var(--line);border-radius:var(--r-md);padding:14px 18px;box-shadow:var(--shadow-1)}
.daily .d-badge{flex:none;font-size:12.5px;letter-spacing:2px;color:#fff;background:var(--g700);
  border-radius:999px;padding:3px 12px;box-shadow:0 6px 14px rgba(23,132,60,.18)}
.daily .d-main{flex:1;min-width:220px;display:flex;flex-direction:column;gap:2px}
.daily .d-main b{font-family:var(--serif);font-size:16.5px;letter-spacing:.5px;color:var(--g900)}
.daily .d-main em{font-style:normal;font-size:13px;color:var(--ink3);line-height:1.7}
.daily .d-go{flex:none;font-size:13.5px;color:var(--g800);border:1px solid rgba(23,132,60,.38);
  border-radius:999px;padding:6px 16px;background:#fff;white-space:nowrap}
.daily .d-go:hover{background:var(--g100);border-color:var(--g500);color:var(--g700)}
@media(max-width:640px){.daily .d-go{width:100%;text-align:center;padding:12px 16px}}

/* ---------- 首页 · 行业新闻预览（自动采集） ---------- */
.news-mini{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:26px}
@media(max-width:860px){.news-mini{grid-template-columns:1fr}}
.news-mini .nmi{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);
  padding:16px 18px 14px;box-shadow:var(--shadow-1);transition:.18s;display:block}
.news-mini .nmi:hover{transform:translateY(-2px);box-shadow:var(--shadow-2);border-color:var(--line2)}
.news-mini .m{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:12.5px;color:var(--ink3);margin-bottom:6px}
.news-mini .m b{color:var(--g600);font-weight:600}
.news-mini h3{font-family:var(--serif);font-size:16.5px;line-height:1.6;margin:0 0 6px;font-weight:600;color:var(--ink)}
.news-mini p{margin:0;font-size:13px;line-height:1.8;color:var(--ink3);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.news-mini .chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.news-mini .cg{font-size:11.5px;border:1px solid var(--line2);border-radius:999px;padding:1px 9px;color:var(--ink2)}
#news-band [hidden]{display:none !important}

/* ---------- 道地 · 地标（品种页模块 · 2026-10-06 · 双馆线 · 数据 geo.json） ---------- */
.geo-sec .geo-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0 4px}
.geo-sec .geo-lb{font-size:12px;color:var(--ink3);letter-spacing:2px;margin-right:2px}
.geo-chip{font-size:13px;color:var(--g800);background:var(--g100);border-radius:999px;padding:3px 13px;letter-spacing:.5px}
.geo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-top:14px}
.geo-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px 12px;box-shadow:var(--shadow-1)}
.geo-card .gc-top{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.geo-card .gc-top b{font-family:var(--serif);font-size:16.5px;letter-spacing:1px;color:var(--g900)}
.geo-card .gc-region{font-size:12px;color:var(--ink3)}
.geo-card .gc-tracks{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.tk{font-style:normal;font-size:10.5px;letter-spacing:1px;border-radius:5px;padding:1px 8px;font-family:var(--sans);white-space:nowrap}
.tk-protect{color:var(--g700);background:var(--g100)}
.tk-tm{color:#8A6D33;background:#F4EBD6}
.tk-agri{color:#3E5F52;background:#E4EEE9}
.geo-none{background:#fff;border:1px dashed var(--line2);border-radius:var(--r-md);
  padding:14px 18px;color:var(--ink3);font-size:13px;line-height:1.9;margin-top:12px;letter-spacing:.5px}
.geo-blurb{margin:10px 0 2px;font-size:14.5px;color:var(--ink2);line-height:1.9;letter-spacing:.3px}
.geo-note{margin:12px 0 0;font-size:12.5px;color:var(--ink3);line-height:1.9}
.geo-sec .geo-dref{flex:1 1 260px;min-width:0;font-size:12.5px;color:var(--ink3);line-height:1.9;letter-spacing:.2px}
.geo-rest{margin:10px 0 0;font-size:12.5px;color:var(--ink3);line-height:1.9}
.geo-ft{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:baseline;margin-top:14px}
.geo-more{font-size:13.5px;color:var(--g700);letter-spacing:1px}
.geo-more:hover{color:var(--g800)}
.geo-src{font-size:11.5px;color:var(--ink3);letter-spacing:.3px}

/* ---------- 地标馆（/dibiao/ · 地理标志产品数字馆 · 2026-10-06） ---------- */
.db-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(146px,1fr));gap:14px;margin:8px 0 10px}
@media(max-width:760px){.db-stats{grid-template-columns:repeat(2,1fr);gap:10px}}
.db-stat{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:15px 16px;text-align:center;box-shadow:var(--shadow-1)}
.db-stat b{display:block;font-family:var(--serif);font-size:25px;color:var(--g700);letter-spacing:1px;line-height:1.4}
.db-stat span{font-size:12px;color:var(--ink3);letter-spacing:2px}
.db-jump{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0 2px}
.db-jump a{font-size:13px;color:var(--ink2);background:#fff;border:1px solid var(--line);border-radius:999px;padding:6px 16px;transition:.16s}
.db-jump a:hover{border-color:var(--g500);color:var(--g700)}
@media(max-width:640px){.db-jump a{padding:8px 17px}}
.db-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:16px}
@media(max-width:1000px){.db-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.db-grid{grid-template-columns:minmax(0,1fr);gap:12px}}
.db-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:16px 18px 13px;
  transition:transform .2s,box-shadow .2s,border-color .2s;display:block;min-width:0}
.db-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-2);border-color:var(--line2)}
.db-card .nm{font-family:var(--serif);font-size:18px;letter-spacing:1.5px;color:var(--g900)}
.db-card .dd{margin-top:5px;font-size:12.5px;color:var(--ink3);letter-spacing:.3px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.db-card .dnone{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line);font-size:12.5px;color:var(--ink3);line-height:1.8}
.db-prod{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line);display:flex;flex-direction:column;gap:7px}
.db-prod .p{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline;font-size:13px}
.db-prod .p b{font-weight:600;color:var(--ink);letter-spacing:.5px}
.db-prod .p .rg{font-size:11.5px;color:var(--ink3)}
/* 106 种全览（/dibiao/ · 2026-10-15：道地 + 地标 · 1行1味） */
.db-rows{margin-top:14px;border-top:1px solid var(--line)}
.db-row{display:grid;grid-template-columns:118px minmax(0,1fr);gap:3px 22px;padding:13px 12px 12px;border-bottom:1px solid var(--line);transition:background .15s}
.db-row:hover{background:#F6FAF7}
.db-row .nm{font-family:var(--serif);font-size:16.5px;letter-spacing:1.5px;color:var(--g900);line-height:1.6;padding-top:1px}
.db-row .main{display:flex;flex-direction:column;gap:5px;min-width:0}
.db-row .blurb{margin:0;font-size:13.5px;color:var(--ink2);line-height:1.85}
.db-row .meta{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:12.5px;color:var(--ink3);line-height:1.8}
.db-row .meta .mm b{font-weight:600;color:var(--g700);font-size:12px;letter-spacing:1px;margin-right:6px}
.db-row .meta .mm .tk{margin-left:6px}
.db-row .meta .mm-none{color:var(--ink3)}
.db-seg{display:flex;align-items:baseline;gap:10px;margin:26px 0 0;font-family:var(--serif);font-size:17px;letter-spacing:2px;color:var(--g900)}
.db-seg small{font-family:var(--sans);font-size:12px;letter-spacing:1px;color:var(--ink3);font-weight:400}
@media(max-width:640px){.db-row{grid-template-columns:minmax(0,1fr);gap:6px;padding:12px 4px 11px}}

.db-none{display:flex;flex-wrap:wrap;gap:9px;margin-top:14px}
.db-chip{font-size:13px;color:var(--ink2);background:#fff;border:1px solid var(--line);border-radius:999px;
  padding:5px 15px;letter-spacing:.5px;transition:.16s}
.db-chip:hover{border-color:var(--g500);color:var(--g700)}
.prv{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:16px 20px 14px;box-shadow:var(--shadow-1)}
.prv + .prv{margin-top:12px}
.prv h3{font-family:var(--serif);font-size:16.5px;letter-spacing:2px;color:var(--g900);margin:0 0 10px}
.prv h3 small{font-size:12px;color:var(--ink3);font-family:var(--sans);letter-spacing:1px;margin-left:8px}
.prv-items{display:flex;flex-wrap:wrap;gap:8px}
.prv-item{font-size:13px;color:var(--ink2);border:1px solid var(--line);border-radius:999px;padding:8px 14px;transition:.16s}
.prv-item:hover{border-color:var(--g500);color:var(--g700);background:var(--g100)}
.prv-item i{font-style:normal;font-size:11.5px;color:var(--ink3);margin-left:5px}

/* ---------- 地标馆 · 首页入口条 ---------- */
.geoband{position:relative;overflow:hidden;color:#F3EFE3;
  background:radial-gradient(900px 420px at 88% -20%,rgba(201,169,106,.22),transparent 60%),
  linear-gradient(150deg,#1B7541 0%,#156038 58%,#0F4B2C 100%)}
.geoband::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.45;
  background-image:radial-gradient(rgba(255,255,255,.05) 1px,transparent 1px);background-size:26px 26px}
.geoband .wrap{position:relative;z-index:1}
.geoband .sec-kicker{color:var(--gold-hi)}
.geoband .sec-head h2{color:#F3EFE3}
.geoband .sec-head p{color:rgba(243,239,227,.88)}

/* 锚点定位留白（q11：下拉面板与页内跳转避开吸顶栏） */
#letter,#parts,#sect,#progress,#map,#all106,#prod,#note,#list,#join,#pos,#adv,#data,#legal,#contact,#team,#story,#geo,#suppliers,#svc,#picks,#assoc,#holders,#herbs,#didao,#modules,#open,#method{scroll-margin-top:86px}

/* ---------- 产区地图（/dibiao/ · 2026-10-09 q11 用户直令：视觉化呈现·点击进产区详情） ---------- */
.yxjmap-wrap{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);
  padding:18px 18px 12px;box-shadow:var(--shadow-1);margin-top:14px}
@media(max-width:980px){
  /* 手机/平板/窄窗口地图：保持文字可读 → 地图放大 + 容器内横向滑动查看（2026-10-10 移动端修复 + 电脑版舒适度补全）
     断点 980px：视口 < 980 时地图渲染宽已 < 900px（省名过小），统一切入横滑模式保底 900px 渲染；
     图例与说明 sticky 左粘：横滑地图时保持可见；.mob-only = 仅小屏显示的滑动提示 */
  .yxjmap-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;padding:10px 10px 8px}
  .yxjmap{min-width:900px}
  .yxjmap-wrap .map-legend,.yxjmap-wrap .map-note{position:sticky;left:0}
}
.mob-only{display:none}
@media(max-width:980px){.mob-only{display:inline}}
.yxjmap{display:block;width:100%;height:auto;max-width:1100px;margin:0 auto}
.yxjmap .pv{fill:#EDF0EA;stroke:#C9D4C9;stroke-width:.8;transition:fill .15s}
.yxjmap .pv.lv1{fill:#D3E9DA}
.yxjmap .pv.lv2{fill:#BEE0C6}
.yxjmap .pv.lv3{fill:#8FCBA2}
.yxjmap .pv.lv4{fill:#5CAE77}
.yxjmap .pv.lv5{fill:#2F8F52}
.yxjmap .pvg{cursor:default}
.yxjmap .pvg:has(a){cursor:pointer}
.yxjmap .pvg:hover .pv{stroke:#146035;stroke-width:1.5;filter:brightness(.93)}
.yxjmap .pvl{font-size:10.5px;fill:#2E4A39;text-anchor:middle;pointer-events:none;font-family:var(--sans);
  letter-spacing:1px;paint-order:stroke;stroke:rgba(255,255,255,.85);stroke-width:2.4px}
.yxjmap .pvmini{pointer-events:none}
.yxjmap .pvmini circle{fill:#C9D4C9;stroke:#fff;stroke-width:.8}
.yxjmap .pvml{font-size:8.5px;text-anchor:start;fill:#7E8C84}
.yxjmap .scsbox{fill:none;stroke:#C9BFA6;stroke-width:1;stroke-dasharray:4 3}
.yxjmap .scsline{fill:#9FB8A8;stroke:#9FB8A8;stroke-width:.5}
.yxjmap .pvsl{font-size:9px;fill:#7E8C84;font-family:var(--sans);letter-spacing:1px}
.maptip{position:absolute;pointer-events:none;background:rgba(17,73,42,.94);color:#F3EFE3;
  font-size:12.5px;letter-spacing:.5px;padding:7px 12px;border-radius:9px;opacity:0;visibility:hidden;
  transform:translate(-50%,-130%);transition:opacity .12s;white-space:nowrap;z-index:5}
.maptip.on{opacity:1;visibility:visible}
.maptip em{display:block;font-style:normal;color:var(--gold-hi);font-size:11px;margin-top:2px}
.map-legend{display:flex;align-items:center;gap:6px;justify-content:center;margin:10px 0 4px;flex-wrap:wrap}
.map-legend .ml{width:20px;height:10px;border-radius:3px;display:inline-block}
.map-legend .lv1{background:#D3E9DA}.map-legend .lv2{background:#BEE0C6}.map-legend .lv3{background:#8FCBA2}
.map-legend .lv4{background:#5CAE77}.map-legend .lv5{background:#2F8F52}
.map-legend .ml-s{font-size:12px;color:var(--ink3)}
.map-legend em{font-style:normal;font-size:12px;color:var(--ink3);margin-left:8px}
.map-note{margin:8px 0 0;text-align:center;font-size:12px;color:var(--ink3);letter-spacing:.5px}

/* 「按省份浏览」省份链接头（q11） */
.prv-t{display:flex;align-items:baseline;gap:8px;font-family:var(--serif);font-size:16.5px;
  letter-spacing:2px;color:var(--g900);margin:0 0 10px;padding:7px 0;transition:.16s}
.prv-t:hover{color:var(--g700)}
.prv-t small{font-size:12px;color:var(--ink3);font-family:var(--sans);letter-spacing:1px}
.prv-t i{font-style:normal;font-size:11.5px;color:var(--g600);letter-spacing:1px;margin-left:auto}
.prv-t i:hover{color:var(--g800)}

/* ---------- 省级产区详情页（/dibiao/p/* · q11） ---------- */
.area-nav{display:flex;gap:10px;flex-wrap:wrap;justify-content:space-between;margin:14px 0 2px}
.area-nav a{font-size:13px;color:var(--ink2);background:#fff;border:1px solid var(--line);
  border-radius:999px;padding:6px 16px;transition:.16s}
.area-nav a:hover{border-color:var(--g500);color:var(--g700)}
.area-nav a.mid{color:var(--g700);border-color:var(--g300)}

/* ---------- 专家页（q11 起 · 2026-10-14 改「专家顾问」口径：单顾问特征卡 + 把关闭环，见本段末尾） ---------- */
.xpros{margin-top:16px}
.xprof{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:26px 30px}
.xprof + .xprof{margin-top:16px}
.xp-head{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.xp-head .xava{width:64px;height:64px;margin:0;flex:0 0 auto;border-width:2px;
  box-shadow:0 6px 16px rgba(17,73,42,.12)}
.xp-head .xava.mono{font-size:26px}
.xp-id{min-width:0}
.xp-id h3{font-family:var(--serif);font-size:19px;letter-spacing:2px;margin:0 0 4px;color:var(--g900)}
.xp-body{margin-top:16px;padding-top:16px;border-top:1px dashed var(--line);
  color:var(--ink2);font-size:14px;line-height:2}
.xp-sec{margin-top:20px}
.xp-body>.xp-sec:first-child{margin-top:0}
.xp-sec h4{display:flex;align-items:center;gap:8px;margin:0 0 10px;
  font-family:var(--serif);font-size:15px;font-weight:600;letter-spacing:2px;color:var(--g900)}
.xp-sec h4::before{content:"";flex:0 0 auto;width:4px;height:15px;border-radius:2px;
  background:linear-gradient(180deg,var(--gold),var(--gold-2))}
.xp-info{border:1px solid var(--line);border-radius:12px;background:#FBFCFA;overflow:hidden}
.xi{display:flex;gap:16px;padding:9px 16px;border-top:1px dashed var(--line)}
.xi:first-child{border-top:0}
.xi b{flex:0 0 96px;font-weight:400;font-size:13px;color:var(--ink3);letter-spacing:1.5px;line-height:1.9}
.xi span{flex:1;min-width:0;font-size:13.5px;color:var(--ink);line-height:1.9}
.xi a{color:var(--g600)}
.xp-txt p{margin:0 0 8px;font-size:14px;color:var(--ink2);line-height:2}
.xp-txt p:last-child{margin-bottom:0}
.xp-list{list-style:none;margin:0;padding:0}
.xp-list li{position:relative;padding-left:15px;margin-bottom:7px;font-size:13.5px;
  color:var(--ink2);line-height:1.95}
.xp-list li:last-child{margin-bottom:0}
.xp-list li::before{content:"";position:absolute;left:2px;top:.78em;width:5px;height:5px;
  border-radius:50%;background:var(--gold)}
@media(max-width:640px){
  .xprof{padding:20px 18px}
  .xi{flex-direction:column;gap:0;padding:9px 14px}
  .xi b{flex:none}
}

/* ---------- 专家顾问线（2026-10-14 用户直令：单顾问特征卡 + 把关闭环） ----------
   .xone = 单顾问特征卡（1 人态）；.xloop = 把关闭环五步卡（/experts/ · #loop）；
   .xl-band = 闭环单行条（首页）；多人时回退 .xgrid / .xmini 卡片栅格（接口保留）。 */
.xone{display:flex;align-items:center;gap:26px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);
  border-radius:var(--r-md);padding:28px 32px;box-shadow:0 12px 30px rgba(17,73,42,.07);margin-top:8px}
.xone .xava{width:96px;height:96px;margin:0;flex:0 0 auto}
.xone .xo-id{flex:1 1 260px;min-width:0}
.xone .xo-id h3{font-family:var(--serif);font-size:23px;letter-spacing:3px;margin:0 0 6px;color:var(--g900)}
.xone .xo-id .t{color:var(--gold-2);font-size:12.5px;letter-spacing:4px;margin:0 0 9px}
.xone .xo-id .f{color:var(--ink2);font-size:13.5px;line-height:1.9;margin:0}
.xone .xo-side{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:9px}
.xone .xo-side .xsite{margin:0;font-size:11.5px;letter-spacing:.2px;color:var(--ink3);text-decoration:none;
  border-bottom:1px dashed var(--line2)}
.xl-band{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px}
.xl-band .st{background:#fff;border:1px solid var(--line);border-radius:999px;padding:7px 15px;
  font-size:13px;color:var(--g800);letter-spacing:1px}
.xl-band .ar{font-style:normal;color:var(--gold-2);font-size:13px}
.xl-band .st.loop{background:var(--g100);border-color:rgba(23,132,60,.28);color:var(--g800)}
.xlead{margin:14px 0 0;font-size:14px;color:var(--ink2);letter-spacing:.4px}
.xloop{list-style:none;margin:20px 0 0;padding:0;display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.xloop li{position:relative;background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px 14px 14px}
.xloop li::after{content:"→";position:absolute;top:50%;right:-11px;transform:translateY(-50%);color:var(--gold-2);font-size:13px}
.xloop li:last-child::after{display:none}
.xloop b{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;
  background:var(--g100);color:var(--g800);font-size:12px;font-weight:600;margin-bottom:8px}
.xloop strong{display:block;font-size:14.5px;color:var(--g900);letter-spacing:1px;margin-bottom:6px}
.xloop span{display:block;font-size:12.5px;color:var(--ink3);line-height:1.75}
.xloop-note{margin:14px 0 0;font-size:12.5px;color:var(--ink3);letter-spacing:.4px}
@media(max-width:900px){.xloop{grid-template-columns:repeat(2,1fr)}.xloop li::after{display:none}}
@media(max-width:640px){
  .xone{padding:22px 18px;gap:16px}
  .xone .xava{width:72px;height:72px}
  .xone .xo-side{align-items:flex-start}
  .xloop{grid-template-columns:1fr;gap:10px}
}

/* —————— 语义保留·视觉隐藏 .vh（2026-10-12 用户直令「隐藏，AI可见，读者不能看到」）：
   用于 /food/ 图鉴首页与品种页「资料说明」、品种页与 /shops/「产地商家」说明、/shops/ 合规提示与页尾说明。
   1px 裁剪 + 脱离文档流 → 肉眼不可见；DOM / 文本 / 无障碍树 / 大模型与搜索引擎抽取照常可读
   （收录 / 引用 / 转发不受影响）。口径同报告线 report.css .vh——「看不见」系有意为之，勿当缺陷恢复。 —————— */
.vh{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;
  margin:-1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;
  clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}

/* —————— 站长模式要素 .adm-only（2026-10-16 用户直令「机器可读 隐藏 仅站长可见」）：
   默认（访客）隐藏；站长模式授权（/shops/?adm=<令牌> 一次设置 · cookie + localStorage 双记忆 ·
   与 /shops/ 联系方式同一令牌）由页面内联脚本在 <html> 加 .adm-on → 本类要素正常显示。
   落位：/data/「机器可读入口」区块（#open · 含页内跳转项）。口径：读者不可见；内容仍在
   DOM 文本中——大模型 / 搜索引擎抽取照常可读（只藏视觉、不藏语义 · 与 .vh 同精神，
   区别＝站长模式下可见）。「看不见」系有意为之，勿当缺陷恢复。 —————— */
html:not(.adm-on) .adm-only{display:none!important}

/* ---------- 「AI 数据聚合」栏目页（/data/ · 2026-10-16 用户直令：首栏栏目「AI 数据聚合」· 与行业动态平级） ----------
   数据板块卡 .dt-*（横向滑轨 · 见下段）＋ #open「机器可读入口」链接着色。
   回退 = 删本段（单点维护）。 */

/* —— 数据板块 · 横向滚动（2026-10-17 q127 四轮 · 用户直令「数据板块 栏目下的内容做滚动，内容要齐全；你自己设计」）——
   六卡改单行滑轨：scroll-snap 吸附 ＋ 圆点分页 ＋ 左右箭头 ＋ 键盘 ←→；卡内文字完整不截断，
   六卡始终全在 DOM（SEO / 大模型抽取照常可读）；原生滚动条隐藏，改用圆点指示。
   一屏卡数：桌面 3 张 / 641–1100px 2 张 / ≤640px 1.2 张（露边提示可滑 · 箭头收起 · 保留圆点）。
   回退 = 恢复 .dt-grid 两列 grid 两句（原句见 v2.3 版本记录）并删本段其余规则。 */
.dt-rail{--dtgap:14px;margin-top:16px}
.dt-grid{display:flex;gap:var(--dtgap);overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;
  scroll-behavior:smooth;padding:2px 0 6px;scrollbar-width:none;-ms-overflow-style:none;
  -webkit-overflow-scrolling:touch}
.dt-grid::-webkit-scrollbar{display:none}
.dt-grid:focus-visible{outline:2px solid var(--g300);outline-offset:3px;border-radius:var(--r-md)}
.dt-grid>.dt-card{flex:0 0 calc((100% - 2*var(--dtgap))/3 - 18px);scroll-snap-align:start}
.dt-bar{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:10px}
.dt-btn{width:34px;height:34px;flex:0 0 34px;border-radius:50%;border:1px solid var(--line);background:#fff;
  color:var(--g700);font:400 18px/1 var(--serif);display:flex;align-items:center;justify-content:center;
  padding:0;cursor:pointer;transition:border-color .2s,background .2s,opacity .2s}
.dt-btn:hover:not(:disabled){border-color:var(--g500);background:var(--g100)}
.dt-btn:disabled{opacity:.3;cursor:default}
.dt-dots{display:flex;align-items:center;gap:6px;min-height:12px}
.dt-dot{width:6px;height:6px;border-radius:3px;border:0;padding:0;background:var(--line2);cursor:pointer;
  transition:width .25s,background .25s}
.dt-dot:hover{background:var(--g300)}
.dt-dot.on{width:18px;background:var(--g700)}
.dt-hint{display:none;margin:8px 0 0;text-align:center;font-size:12px;letter-spacing:.5px;color:var(--ink3)}
@media(max-width:1100px){.dt-grid>.dt-card{flex:0 0 calc((100% - var(--dtgap))/2 - 14px)}}
@media(max-width:640px){
  .dt-grid>.dt-card{flex:0 0 82%}
  .dt-btn{display:none}
  .dt-dot{width:5px;height:5px}
  .dt-dot.on{width:14px}
  .dt-hint{display:block}
}
.dt-card{display:flex;flex-direction:column;gap:6px;background:#fff;border:1px solid var(--line);
  border-radius:var(--r-md);padding:17px 19px 15px;transition:transform .2s,box-shadow .2s,border-color .2s;min-width:0}
.dt-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-2);border-color:var(--line2)}
.dt-card .k{font-size:12px;letter-spacing:2px;color:var(--ink3)}
.dt-card .n{font-family:var(--serif);font-size:23px;color:var(--g700);letter-spacing:.5px;line-height:1.35}
.dt-card .n i{font-style:normal;font-size:13px;color:var(--ink3);letter-spacing:1px;margin-left:3px}
.dt-card p{margin:0;font-size:13.5px;line-height:1.9;color:var(--ink2)}
.dt-card .go{margin-top:auto;padding-top:4px;font-size:13px;color:var(--g700);letter-spacing:1px}
.dt-card:hover .go{color:var(--g800)}
#open .svc-card p a{color:var(--g700);border-bottom:1px dotted rgba(23,132,60,.4)}
#open .svc-card p a:hover{color:var(--g800);border-bottom-style:solid}
@media(max-width:640px){.dt-card{padding:15px 15px 13px}.dt-card .n{font-size:21px}}

/* —— 七栏窄桌面适配（2026-10-16 新增首栏「AI 数据聚合」配套）：921-1080px 收紧导航（padding 15→8 ·
   gap 2→0 · 总宽 660→550px ＝ 改前六栏几何），品牌副标截断阈值还原到改前（≈967px）；范围限窄桌面，
   ≤920 手机抽屉与 ≥1081 桌面不受影响。回退 = 删本行。 —— */
@media(min-width:921px) and (max-width:1080px){.nav-link{padding:8px 8px}.site-nav{gap:0}}

/* ---------- 手机端紧凑化（2026-10-15 · 用户直令「手机版屏幕拉的太长了」） ----------
   口径：≤640px 收紧纵向留白（段距 / 标题区 / 卡片内距 / Hero / 数据条 / 六卡段）——
   只动间距与字号微调，不动文案与结构；桌面端（>640px）逐字节零影响。
   预演实测（375×812 · 线上注入法）：首页 8485px → ≈6650px（约 −22%）。
   注意：首页 extra_head（home_style / news_badge_head）位于本文件之后——
   动它已定义的属性须用更高特异性（如 .news-mini .nmi.rot .tt）；
   改节奏 = 调整本段数值；回退 = 删除本段（段距两值另在 .block 基础规则处）。 */
@media(max-width:640px){
  /* 段头区 */
  .sec-kicker{margin-bottom:8px}
  .sec-head h2{margin:0 0 10px}
  .sec-head p{font-size:14px;line-height:1.8}
  .sec-more{margin-top:24px}

  /* Hero */
  .hero .wrap{gap:26px;padding-top:38px;padding-bottom:42px}
  .kicker{padding:5px 14px}
  .hero h1{margin:14px 0 12px}
  .hero .lead{font-size:14.5px;line-height:1.85;margin:0 0 20px}
  .hero .hv{margin:-6px 0 18px}
  .hero-collage{gap:10px}
  .hero-collage .hp img{aspect-ratio:4/3}

  /* 数据飘带（6 项 2×3 → 3×2） */
  .stats .wrap{grid-template-columns:repeat(3,1fr);gap:10px 6px;padding-top:14px;padding-bottom:16px}
  .stat{padding:2px 4px}

  /* 今日日报条 */
  .dailyband{padding:14px 0 0}
  .daily{padding:11px 14px;gap:10px}

  /* 五用卡 */
  .sgrid{gap:10px}
  .scard{padding:16px 14px 13px}
  .scard .vb{width:38px;height:38px;font-size:18px;margin-bottom:9px}
  .scard h3{font-size:16px;letter-spacing:1px;margin:0 0 5px}
  .scard p{line-height:1.75;margin:0 0 9px}
  .scard .go{font-size:12px}

  /* 品种卡 */
  .grid-cards{gap:10px}
  .card .bd{padding:10px 12px 11px;gap:2px}
  .card .nm{font-size:17px}
  .card .tags{padding-top:6px}

  /* 专家特征卡 */
  .xone{padding:16px 14px;gap:12px}
  .xone .xo-id .f{font-size:13px;line-height:1.8}

  /* 行业动态六卡（1 列纵排 → 2 列紧凑） */
  .news-mini{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}
  .news-mini .nmi{padding:10px 11px 9px}
  .news-mini .nmi .m{gap:4px;font-size:11.5px;margin-bottom:3px}
  .news-mini .nmi.rot h3,.news-mini .nmi.rot .tt{font-size:14px;line-height:1.5;margin:0 0 4px}
  .news-mini .nmi p{font-size:12.5px;line-height:1.65}
  .news-mini .nmi .chips{gap:4px;margin-top:4px}
  .news-mini .nmi .cg{font-size:10.5px;padding:1px 7px}
  .news-mini .nmi.rot .dots{margin-top:8px}

  /* 为什么是养鲜家（四卡） */
  .fgrid{gap:10px}
  .fcard{padding:16px 14px}
  .fcard .ico{width:36px;height:36px;border-radius:10px;margin-bottom:10px}
  .fcard .ico svg{width:19px;height:19px}
  .fcard h3{font-size:16px;margin:0 0 6px}
  .fcard p{font-size:13px;line-height:1.8}
}

/* ---------- 手机端阅读优化（2026-10-17 · 用户直令「模仿手机端客户从顶端滑到底端…依据现有内容优化」） ----------
   ① 五用卡 2 列时最后一张（奇数位）跨两列——消除半格悬空；② 首屏入口卡标题/副标题提号（11→12 / 9→10px）；
   ③ 回到顶部悬浮键（≤640 显示 · DOM 由 site_app.js 注入）。桌面端（>640px）逐字节零影响。 */
/* 2026-10-17 q87f14：display 由 none 改 flex —— 回顶键桌面端同样启用（手机端口径见本段末媒体查询） */
.to-top{position:fixed;right:14px;bottom:20px;z-index:60;display:flex;width:44px;height:44px;padding:0;
  align-items:center;justify-content:center;border-radius:50%;cursor:pointer;
  border:1px solid var(--line2,#E3E7E2);background:rgba(255,255,255,.94);color:var(--g700,#177A3C);
  box-shadow:0 8px 22px rgba(17,73,42,.16);font-size:18px;line-height:1;
  opacity:0;transform:translateY(6px);transition:opacity .25s ease,transform .25s ease;pointer-events:none}
.to-top.on{opacity:1;transform:none;pointer-events:auto}
/* 桌面端（>640px）回顶键手感：略大、离边稍远（与手机同款外观 · 仅几何不同） */
@media(min-width:641px){.to-top{right:26px;bottom:28px;width:48px;height:48px;font-size:20px;box-shadow:0 10px 26px rgba(17,73,42,.18)}}
@media(max-width:820px){
  .sgrid > a:last-child:nth-child(odd){grid-column:1/-1}
}
/* 关于页「主体与团队」· 备案互证行（2026-10-17 · q132b · 用户直令：关于页公开 ICP 主办单位全称，与页脚备案号互证）
   口径：不重复备案号（号码在页脚 + 联系卡），本行只给主办单位全称与官方查询入口 */
.team-verify{margin:14px 0 0;padding:11px 15px;border-left:3px solid var(--gold,#C9A96A);
  background:rgba(201,169,106,.10);border-radius:0 8px 8px 0;
  font-size:13.5px;line-height:1.85;color:#4B4A44}
.team-verify b{color:var(--g800,#0F5132)}
/* 2026-10-17（q132f10 · GEO 诊断「地图 POI / 企业标注」）：链接文字不拆词——手机端原会把「企业信用信息公示」
   拆成「企业信 / 用信息公示」两行（下划线断开、辨认变差）。not-nowrap 不影响换行位置（仍在链接之间折）。回改 = 删本行 */
.team-verify a{color:var(--g700,#177A3C);border-bottom:1px solid rgba(23,122,60,.32);text-decoration:none;white-space:nowrap}
.team-verify a:hover{border-bottom-color:var(--g700,#177A3C)}
@media(max-width:640px){
  .team-verify{font-size:13px;padding:9px 12px;line-height:1.8}
}

@media(max-width:640px){
  .hero-collage .hp-t b{font-size:12px;letter-spacing:.5px}
  .hero-collage .hp-t em{font-size:10px;letter-spacing:.3px}
  .to-top{display:flex}
  .ai-svc .svc-more{white-space:nowrap}
}

/* ---------- 家乡（v2.35 · 2026-10-19 用户直令：家乡道地药材 / 药食同源药材） ----------
   档1：省页两个动作按钮（转发给老乡 / 设为我的家乡）；档3：首页家乡条 ＋ 品种页「家乡有记录」提示。
   口径：未设置家乡时首页条与品种页提示均 hidden（零占位、零排版影响）；
   按钮触控目标 ≥40px（手机舒适度基线 ㊼）；新类名以 .ar-/.hp-/.ithome 开头，不碰任何既有选择器。
   回改 = 删本段 ＋ build_pages 的 acts/FAQ/.homeband/.ithome ＋ site_app.js 家乡 IIFE。 */
.ar-acts{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0 2px}
.ar-btn{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 18px;
  border:1px solid var(--line2);border-radius:999px;background:#fff;color:var(--ink2);
  font-family:var(--sans);font-size:14px;font-weight:600;line-height:1;letter-spacing:.4px;
  cursor:pointer;transition:.18s}
.ar-btn:hover{border-color:var(--g500);color:var(--g800)}
.ar-btn.ar-home.on{background:var(--g100);border-color:var(--g300);color:var(--g800)}
.homeband{padding:0 0 10px}
.hp-row{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:var(--r-md);
  background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-1);transition:.18s}
.hp-row:hover{border-color:var(--g300)}
.hp-ic{flex:0 0 auto;width:30px;height:30px;border-radius:9px;background:var(--g100);color:var(--g800);
  display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700}
.hp-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.hp-tx b{font-size:14.5px;font-weight:600;color:var(--ink)}
.hp-tx em{font-style:normal;font-size:12.5px;color:var(--ink3)}
.hp-ar{font-style:normal;font-size:15px;color:var(--g700)}
.ithome{margin:14px 0 0;padding:10px 14px;border-radius:var(--r-sm);background:#F2F8F3;
  border-left:3px solid var(--g500);font-size:13.5px;line-height:1.75;color:var(--ink2)}
.ithome b{color:var(--g800)}
.ithome a{margin-left:6px;color:var(--g800);font-weight:600;white-space:nowrap}
@media(max-width:640px){
  .ar-acts{margin-top:14px;gap:9px}
  .ar-btn{min-height:40px;padding:0 15px;font-size:13.5px}
  .hp-row{padding:11px 13px;gap:10px}
  .hp-tx b{font-size:14px}
  .ithome{font-size:13px;padding:9px 12px}
}

/* ---------- 页级「转发给微信朋友」（v2.40 · 2026-10-20 用户直令「按钮明显」）----------
   沿革：v2.36（2026-10-19）首版为白底细边胶囊——与站内次要胶囊同族，视觉权重低，读者扫一眼就跳过了。
   本版三件事（同一套逻辑，不新增第二套面板）：
     ① .pg-share 改**品牌绿实底**（--g700→--g600 渐变 + 白字 + 微信双气泡图标 + 44px 触控高 / 手机 42px），
        与 /news/ 的「转发给微信朋友」（.btn.btn-green）同一视觉家族；
     ② 新增页尾转发带 .shband（左一句说明 · 右 48px 大按钮；手机整行铺满）——长页面读到末尾再给一次入口；
     ③ 新增全局悬浮键 .shfloat（site_app.js 注入 · 滚过首屏出现 · 页尾转发带入视即收起 · 让出 .to-top 位置）。
   触控目标 ≥40px（手机基线 ㊼）；面板与复制逻辑仍复用 site_app.js 同一实现（改文案只改 site_app.js 的 CTA/TAIL）。
   回改 = 删本段（含 .shband/.shfloat）＋ build_pages 的 share_btn/share_band 与各页面调用 ＋ site_app.js 尾段。 ---------- */
.pg-srow{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0 0}
.pg-share{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 20px;
  border:1px solid var(--g700);border-radius:999px;
  background:linear-gradient(135deg,var(--g700),var(--g600));color:#fff;
  font-family:var(--sans);font-size:14px;font-weight:600;line-height:1;letter-spacing:.5px;
  cursor:pointer;transition:.18s;box-shadow:0 6px 16px rgba(20,96,53,.18)}
.pg-share svg{width:16px;height:16px;flex:0 0 auto;color:#fff}
.pg-share:hover{background:linear-gradient(135deg,var(--g600),var(--g500));border-color:var(--g600);
  box-shadow:0 8px 20px rgba(20,96,53,.26);transform:translateY(-1px)}
.pg-share:active{transform:scale(.98)}
/* 品种页：与「← 返回图鉴」同一按钮行（.btn 高约 45px，胶囊补齐同高） */
.item-cta .pg-share{min-height:46px;padding:0 22px;font-size:14.5px}
/* 首页收尾：.endband .act 原为 <a>，这是首个 <button> —— 重置字体与光标，图标与文字同高 */
.endband button.act{font-family:inherit;cursor:pointer}
.endband .act svg{width:15px;height:15px;flex:0 0 auto}
/* 首页收尾带里的转发钮：品牌绿实底（与三颗白底链接拉开权重 · 2026-10-20 直令「按钮明显」） */
.endband .act.wx{background:linear-gradient(135deg,var(--g700),var(--g600));color:#F3EFE3;border-color:var(--g700);
  box-shadow:0 8px 20px rgba(20,96,53,.22)}
.endband .act.wx:hover{background:linear-gradient(135deg,var(--g600),var(--g500));border-color:var(--g600);color:#fff}
@media(max-width:640px){
  .pg-srow{margin-top:12px;gap:9px}
  .pg-share{min-height:42px;padding:0 16px;font-size:13.5px}
  .item-cta .pg-share{min-height:46px;padding:0 18px;font-size:14px;flex:1 1 100%;justify-content:center}
}

/* ---------- 页尾转发带 .shband（v2.40 · 2026-10-20 用户直令「网站中适当位置增加一些转发」）----------
   落位：品种页 105 张 / 图鉴 / 地标道地 / 数据聚合 / 问答 / 顾问 / 服务页 / 产品服务 / 关于 ——
   正文收尾、页脚之前（读者读到这儿已在“获得感”高点，转发意愿最强）。
   版式：左说明（衬线小标题 + 一句落地方式）· 右 48px 大按钮；≤640px 纵向铺满整行。
   回改 = 删本段 ＋ build_pages.share_band 与各页面调用。 ---------- */
.shband{display:flex;align-items:center;justify-content:space-between;gap:16px 22px;flex-wrap:wrap;
  margin:34px 0 6px;padding:20px 24px;border:1px solid var(--line);border-radius:var(--r-md);
  background:linear-gradient(135deg,#FBF8EE 0%,#FFFFFF 62%);box-shadow:var(--shadow-1)}
.shband-t{min-width:0;flex:1 1 260px}
.shband-t b{display:block;font-family:var(--serif);font-size:17px;font-weight:600;letter-spacing:1.5px;
  color:var(--g900);margin-bottom:5px}
.shband-t span{display:block;font-size:13px;line-height:1.8;color:var(--ink2);letter-spacing:.3px}
.shband .pg-share{flex:0 0 auto;min-height:48px;padding:0 26px;font-size:15px}
@media(max-width:640px){
  .shband{margin:26px 0 4px;padding:16px;gap:12px}
  .shband-t b{font-size:15.5px;letter-spacing:1px;margin-bottom:3px}
  .shband-t span{font-size:12.5px}
  .shband .pg-share{flex:1 1 100%;justify-content:center;min-height:48px;font-size:15px}
}

/* ---------- 悬浮转发键 .shfloat（v2.40 · 2026-10-20 用户直令「按钮明显」）----------
   由 site_app.js 注入（不改 160+ 页 HTML）：滚过首屏 520px 出现；页尾 .shband 进入视口即收起（不重复打扰）；
   点它＝打开本页同一条四行文案（有页级按钮就复用，没有再兜底拼）。
   位置：桌面 right 26 / bottom 88（让出 .to-top 的 48px + 间隙）；手机 right 14 / bottom 74（.to-top 44px）。
   z-index 55 —— 在粘性页头（60）与分享面板（120）之下。回改 = 删本段与 site_app.js 尾段。 ---------- */
.shfloat{position:fixed;right:26px;bottom:88px;z-index:55;display:none;align-items:center;gap:8px;
  min-height:46px;padding:0 20px;border:0;border-radius:999px;
  background:linear-gradient(135deg,var(--g700),var(--g600));color:#fff;
  font-family:var(--sans);font-size:14px;font-weight:600;letter-spacing:.5px;line-height:1;
  cursor:pointer;box-shadow:0 10px 26px rgba(17,73,42,.26);transition:.2s}
.shfloat svg{width:17px;height:17px;flex:0 0 auto}
.shfloat.on{display:inline-flex}
.shfloat:hover{background:linear-gradient(135deg,var(--g600),var(--g500));transform:translateY(-2px)}
.shfloat:active{transform:scale(.97)}
@media(max-width:640px){
  .shfloat{right:14px;bottom:74px;min-height:44px;padding:0 16px;font-size:13px}
  .shfloat svg{width:16px;height:16px}
}

/* ---------- v2.41（2026-10-20 · 双端浏览体检 t240 · 自动优化）· 手机端表单字号与块级触控目标 ----------
   ① **iOS 聚焦自动缩放**：Safari 在 input/select/textarea 字号 < 16px 时会放大整页再回弹
      （实测首页搜索 #hq 15px · 图鉴搜索 #fq 15px · 地标搜索 #dbQ 14.5px）——手机上点搜索框就跳版。
      ≤640px 统一 16px（只改手机；桌面版式与字号逐字节不变）。
   ② **块级触控目标补到 40px**（本站手机基线 ㊼：块级触控 ≥ 40px）——实测：
      首页搜索框 36px / 搜索键 38px、日报名按钮 #dailyGo 22px、地标馆 31 行「产区详情 →」a.pv-go 20px、
      品种页 a.geo-more 24px、精选商家品种胶囊 a.db-chip 34px。
      上述元素父容器实测 52–195px，故加最小高度**不撑高版面**（只放大热区）。
   回改 = 删本段（删除后回到 v2.40 行为）。 ---------- */
@media(max-width:640px){
  input:not([type=button]):not([type=submit]):not([type=checkbox]):not([type=radio]),
  select,textarea{font-size:16px}
  .hsearch input,.hsearch button{min-height:40px}
  #dailyGo,a.pv-go,a.geo-more,a.db-chip{display:inline-flex;align-items:center;min-height:40px}
}

/* ---------- v2.42 手机端视觉语言统一（q238 · 2026-10-22 用户直令「手机端内容首页为准，
   把网站其它地方同步修改」）----------
   基准＝首页 375 实测（内容首页为准）：段距 36px｜章节头 = 金色小标的「线」（24px × 1px 淡金）＋
   标题 24px / 字距 2px / 下留 14px ＋ 导语 14.5px / 行高 1.95，整体居中｜卡内距 9–11px｜页头首屏 36–38px。
   内页对应物：.pagehead（页头）+ .detail-sec（章节段，全站 162 页共用）。
   ★ 只做 ≤640px 覆盖：不动 HTML、不动一句文案、不改任何既有桌面规则 —— >640px 逐字节零影响。
   ★ 两类页面分治：栏目/索引页（无 .item-hero、无 .area-nav）章节头**居中**并带淡金细线；
     详情页（105 品种页 .item-hero / 31 省页 .area-nav）保持左对齐（长文阅读），只套同一套字号与节奏。
     内核不支持 :has() → 自动退回左对齐（不居中，也不会错版）。
   回改 = 删本段（本段只新增覆盖，无结构性副作用）。 ---------- */
@media(max-width:640px){
  /* 1 · 页头：段距对齐首页首屏（46/30 → 36/22），标题提号 26 → 28px；.hook 强调句不受影响 */
  .pagehead{padding:36px 0 22px}
  .pagehead h1{font-size:28px;letter-spacing:2px;line-height:1.35}
  .pagehead .sub:not(.hook){font-size:14.5px;line-height:1.85}

  /* 2 · 章节段：内容→标题 74px 收到 ≈54px；标题套首页字号/字距，上方加 24px 淡金细线（＝首页小标的线） */
  .detail-sec{margin-top:26px;padding:18px 0 0}
  .detail-sec>h2{font-size:22px;letter-spacing:2px;line-height:1.45;margin:0 0 8px}
  .detail-sec>h2::before{content:"";display:block;width:24px;height:1px;
    background:rgba(201,169,106,.72);margin:0 0 9px}
  .detail-sec>.sub{font-size:13.5px;line-height:1.8;letter-spacing:.2px;margin-bottom:12px}

  /* 3 · 栏目/索引页：章节头居中（线与首页小标同色同长），子章节头（.dr-h3）同步居中 */
  main:not(:has(.item-hero)):not(:has(.area-nav)) .detail-sec>h2,
  main:not(:has(.item-hero)):not(:has(.area-nav)) .detail-sec>.sub,
  main:not(:has(.item-hero)):not(:has(.area-nav)) .detail-sec>h3{text-align:center}
  main:not(:has(.item-hero)):not(:has(.area-nav)) .detail-sec>h2::before{margin-left:auto;margin-right:auto}
  main:not(:has(.item-hero)):not(:has(.area-nav)) .dr-h3{justify-content:center;text-align:center}

  /* 4 · 卡内距：与首页卡（9/11/10）同一节奏 —— 商家卡 16/18/14 → 13/14/12；数据卡 17/19/15 → 14/15/13 */
  .sup-body{padding:13px 14px 12px}
  .dt-card{padding:14px 15px 13px}

  /* 5 · 触控目标补到 40px（手机基线 ㊼）：入选口径折叠 / 品种组头 / 品种页链接 / 省页导航 / 轮播圆点
     口径：只放大热区，视觉位置一律不动（padding + 负 margin、或透明伪元素外扩） */
  .pk-why>summary{display:inline-block;padding:10px 0;margin:-10px 0}
  .pk-h{min-height:44px}
  .pk-lnk{position:relative}
  .pk-lnk::after{content:"";position:absolute;inset:-9px -3px}
  .area-nav a{display:inline-flex;align-items:center;min-height:40px}
  .dt-dot{position:relative}
  .dt-dot::after{content:"";position:absolute;inset:-9px -3px}
}

/* ---------- v2.43 手机端「转发」收口（2026-10-23 用户直令）----------
   用户直令：「手机端 全部『转发』取消，太多了，只留『转发给朋友』的按钮（跟着屏幕滑动的那个按钮）」。
   现状（375×812 实测 · 改前）：内页普遍同时挂着 3 个同义入口 —— 页头 .pg-srow（转发给朋友）＋
   页尾 .shband（转发给朋友 ＋ 一段说明）＋ 悬浮键 #shFloat；/svc/picks/ 再叠 43 颗商家卡 .sup-share、
   品种页每页叠 1–3 颗、省页叠「转发给老乡」—— 一屏之内同义催转太多，反而没人点。
   做法：≤640px 把内页五处「转发」入口全部隐藏，**只留 site_app.js 注入的悬浮键 #shFloat**
   （fixed 跟随滚动 · 滚过首屏 520px 出现 · 点它＝本页同一套四行转发文案面板）：
     ① .pg-srow           页头转发行（栏目页 / 索引页 / 服务页 …）
     ② .shband            页尾转发带（整条含带内那颗 .pg-share 与说明文字）
     ③ .item-cta .pg-share 品种页按钮行里的转发钮
     ④ .sup-share         商家卡脚那颗「转发」（/svc/picks/ 43 颗 · 品种页最多 3 颗）
     ⑤ .ar-btn.ar-share   省页「转发给老乡」
   为何只隐藏不删节点：① 悬浮键 openShare() 复用 document.querySelector('[data-pg-share]').click()，
     节点在才有「本页标题 ＋ 本页行动行」的正确文案（display:none 的元素照样能 .click()）；
     ② DOM 全文保留 → 爬虫 / 大模型 / 站内搜索照常可读（与 q226b 折叠同口径）。
   口径：桌面端（>640px）逐字节零影响；手机端唯一转发入口＝悬浮键。
   ⚠ 首页收尾带那颗（.endband .act.wx）已于 2026-10-22 21:42 单点隐藏，本段不重复。
   回改 = 删本段（≤640px 立即恢复上述五个入口）。 ---------- */
@media(max-width:640px){
  .pg-srow,.shband,.item-cta .pg-share,.sup-share,.ar-btn.ar-share{display:none!important}
}

/* ---------- v2.44 品种页「一句话速览」（2026-10-23 · GEO 抽取友好）----------
   位置：item-hero 之下、品种概述之上（首屏可见）。
   设计：左侧一道淡金细线 ＋ 米底，与全站「小标＋细线」的调子同源；不加图标、不加阴影，
   避开与「通知条 .notice」（宓色警告底）混淆。行高 1.95 为长句阅读留白（文本常 80–110 字）。
   口径：只新增本段；旧有选择器零改动（全站像素回归以 .item-hero 区块不受影响）。
   回改 = 删本段（.it-tldr 回退为无样式块，文字仍可读，不影响收录）。 ---------- */
.it-tldr{margin:30px 0 0;padding:16px 20px 15px;background:#F7F4EC;
  border-left:2px solid rgba(201,169,106,.85);border-radius:0 var(--r-md) var(--r-md) 0}
.it-tldr .tl-lb{display:block;font-size:11.5px;letter-spacing:2.4px;color:var(--ink3);margin-bottom:7px}
.it-tldr p{margin:0;font-size:15px;line-height:1.95;letter-spacing:.2px;color:var(--ink)}
@media(max-width:640px){
  .it-tldr{margin:22px 0 0;padding:14px 16px 13px}
  .it-tldr .tl-lb{font-size:11px;letter-spacing:2px;margin-bottom:6px}
  .it-tldr p{font-size:14px;line-height:1.9}
}

