/* ==========================================================================
   农药信息网 · 前台主题 "nongyao" —— 主题层
   ==========================================================================
   依赖：vendor/bootstrap/bootstrap.min.css  (Bootstrap v5.3.8, MIT)
        vendor/bootstrap/bootstrap.bundle.min.js (含 Popper)

   本文件只做三件事，组件本身一律用 Bootstrap 原生类，不重复造：
     1. 品牌变量覆盖（颜色 / 字体 / 圆角），跟随 BS5 的 --bs-* 变量体系
     2. BS5 里硬编码蓝色的组件（按钮、分页激活态、焦点态）做品牌色对齐
     3. 内容特有组件：登记证基本信息表、农药类别色标、官方内嵌数据表兜底
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. 品牌变量覆盖
   -------------------------------------------------------------------------- */
:root {
    /* ---------------------------------------------------------------------
       颜色体系（问题 2 统一）
       ---------------------------------------------------------------------
       原先的问题是：同一个语义在不同位置写成了不同的硬编码色值，
       例如主色既写 #1f7a4d 又写 #145c39、经过色写成 #1f7a4d 又写 #7fb79b、
       悬停底色写成 #e9f5ef 又写 #e6f4ed，色标则直接用旧站 BS4 的原色
       （纯红 #c62828、正蓝 #1d4ed8、亮黄 #f5c518），与深绿主色系不在一套调性上。
       现在全部收敛为下面的变量，改色只改这一处。
       --------------------------------------------------------------------- */

    /* 品牌主色阶（深绿，农业语境，避开高饱和荧光绿） */
    --ny-brand-900: #0e3f28;   /* 最深：页脚、正文重色 */
    --ny-brand-700: #145c39;   /* 深：链接、强调文字、按钮 hover */
    --ny-brand-600: #1f7a4d;   /* 主色：按钮、激活态、图标底 */
    --ny-brand-400: #7fb79b;   /* 浅：输入框聚焦边框 */
    --ny-brand-100: #e9f5ef;   /* 极浅：悬停底、图标底 */
    --ny-brand-050: #f2f9f5;   /* 最浅：hero 渐变过渡 */

    /* 中性阶（带一点绿灰，与主色同源，不显脏） */
    --ny-ink: #14201a;         /* 正文 */
    --ny-ink-soft: #22302a;    /* 长正文 */
    --ny-muted: #46524b;       /* 次要文字 */
    --ny-faint: #7d8a83;       /* 弱化文字 */
    --ny-line: #e4e9e6;        /* 描边 */
    --ny-surface: #ffffff;     /* 卡片面 */
    --ny-canvas: #f5f7f6;      /* 页面底 */
    --ny-canvas-soft: #fafbfa; /* 斑马纹、表头 */

    /* 经过色（accent）：登记证号等关键数据。暖橙，与深绿互补但不刺眼 */
    --ny-accent: #b45309;
    --ny-accent-bg: #fef3e2;
    --ny-accent-border: #f2ddb8;

    /* 农药类别色标：统一压暗、统一饱和度，使五色与深绿主色系协调
       （旧站的纯红/正蓝/亮黄是 BS4 原色，放在深绿体系里非常跳） */
    --ny-nylb-default: #5f6e66;  /* 未映射类别的兜底 */
    --ny-nylb-2:  #a83232;       /* 杀虫剂：压暗的红 */
    --ny-nylb-4:  #2b3742;       /* 杀菌剂：墨黑偏冷 */
    --ny-nylb-7:  #2a5b8f;       /* 除草剂：降饱和的蓝 */
    --ny-nylb-12: #d9a520;       /* → 见下方注：此色需深字 */
    --ny-nylb-15: #1f7a4d;       /* 其他：与主色一致 */

    /* 语义色（与品牌色同调性，不用 BS 默认的纯色） */
    --ny-warn-bg: #fff3bf;
    --ny-warn-fg: #7a4b00;

    /* 页脚（深底，与主色同源；单独一组变量便于整体调深浅） */
    --ny-footer-bg: #16211c;
    --ny-footer-fg: #a9b6b0;        /* 常规链接/正文 */
    --ny-footer-fg-strong: #ffffff; /* 标题、hover */
    --ny-footer-fg-dim: #7f8d87;    /* 版权行 */

    /* 阴影 */
    --ny-shadow-sm: 0 1px 2px rgba(20, 32, 26, .06);
    --ny-shadow: 0 2px 8px rgba(20, 32, 26, .08);
    --ny-shadow-lg: 0 6px 18px rgba(20, 32, 26, .1);
    --ny-shadow-menu: 0 8px 24px rgba(20, 32, 26, .12);

    /* ---------------- 以下转发给 Bootstrap 的 --bs-* 变量 ----------------
       放在最后，让 BS5 的组件（按钮/分页/表单/导航）自动跟随上面的色阶，
       避免"同一个绿色在 BS 组件里和自定义组件里不一致"。
       --------------------------------------------------------------------- */
    --bs-primary: var(--ny-brand-600);
    --bs-primary-rgb: 31, 122, 77;
    --bs-primary-text-emphasis: var(--ny-brand-700);
    --bs-primary-bg-subtle: var(--ny-brand-100);
    --bs-primary-border-subtle: #c9e5d7;

    --bs-link-color: var(--ny-brand-700);
    --bs-link-color-rgb: 20, 92, 57;
    --bs-link-hover-color: var(--ny-brand-600);
    --bs-link-hover-color-rgb: 31, 122, 77;

    /* 版面 */
    --bs-body-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
        "Hiragino Sans GB", "Microsoft YaHei", "Source Han Sans SC", sans-serif;
    --bs-body-font-size: 0.9375rem;          /* 15px */
    --bs-body-line-height: 1.7;
    --bs-body-color: var(--ny-ink);
    --bs-body-color-rgb: 20, 32, 26;
    --bs-secondary-color: var(--ny-muted);
    --bs-tertiary-color: var(--ny-faint);
    --bs-body-bg: var(--ny-canvas);
    --bs-border-color: var(--ny-line);
    --bs-border-radius: 0.5rem;
    --bs-border-radius-sm: 0.25rem;
    --bs-emphasis-color: var(--ny-ink);

    --ny-header-shadow: var(--ny-shadow-sm);
}

body { background-color: var(--bs-body-bg); }

/* --------------------------------------------------------------------------
   2. BS5 硬编码蓝色的组件对齐品牌色
   -------------------------------------------------------------------------- */
.btn-primary {
    --bs-btn-bg: var(--ny-brand-600);
    --bs-btn-border-color: var(--ny-brand-600);
    --bs-btn-hover-bg: var(--ny-brand-700);
    --bs-btn-hover-border-color: var(--ny-brand-700);
    --bs-btn-active-bg: var(--ny-brand-900);
    --bs-btn-active-border-color: var(--ny-brand-900);
    --bs-btn-disabled-bg: var(--ny-brand-600);
    --bs-btn-disabled-border-color: var(--ny-brand-600);
    --bs-btn-focus-shadow-rgb: 31, 122, 77;
}
.btn-outline-primary {
    --bs-btn-color: var(--ny-brand-600);
    --bs-btn-border-color: var(--ny-brand-600);
    --bs-btn-hover-bg: var(--ny-brand-600);
    --bs-btn-hover-border-color: var(--ny-brand-600);
    --bs-btn-active-bg: var(--ny-brand-700);
    --bs-btn-active-border-color: var(--ny-brand-700);
    --bs-btn-focus-shadow-rgb: 31, 122, 77;
}
.btn-link {
    --bs-btn-color: var(--ny-brand-700);
    --bs-btn-hover-color: var(--ny-brand-600);
}
.text-bg-primary { background-color: var(--ny-brand-600) !important; color: #fff !important; }
.form-control:focus,
.form-select:focus {
    border-color: var(--ny-brand-400);
    box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb), .15);
}
.form-check-input:checked { background-color: var(--ny-brand-600); border-color: var(--ny-brand-600); }
.pagination {
    --bs-pagination-color: var(--ny-muted);
    --bs-pagination-hover-color: var(--ny-brand-600);
    --bs-pagination-hover-bg: var(--ny-brand-100);
    --bs-pagination-hover-border-color: var(--ny-brand-600);
    --bs-pagination-active-bg: var(--ny-brand-600);
    --bs-pagination-active-border-color: var(--ny-brand-600);
    --bs-pagination-focus-color: var(--ny-brand-600);
}
.nav-tabs {
    --bs-nav-tabs-link-active-color: var(--ny-brand-600);
    --bs-nav-tabs-link-active-border-color: var(--ny-line) var(--ny-line) var(--ny-surface);
}
.nav-pills {
    --bs-nav-pills-link-active-bg: var(--ny-brand-600);
}
.navbar {
    --bs-navbar-active-color: var(--ny-brand-600);
    --bs-navbar-hover-color: var(--ny-brand-600);
}

/* --------------------------------------------------------------------------
   3. 站头 / 站脚（Bootstrap navbar 之上的一点品牌修饰）
   -------------------------------------------------------------------------- */
.ny-header {
    background: var(--ny-surface);
    border-bottom: 1px solid var(--bs-border-color);
    box-shadow: var(--ny-header-shadow);
}
.ny-logo-mark {
    width: 34px; height: 34px; flex: none;
    border-radius: var(--bs-border-radius-sm);
    background: linear-gradient(135deg, var(--ny-brand-600), var(--ny-brand-700));
    color: #fff; font-weight: 800; font-size: 17px;
    display: inline-flex; align-items: center; justify-content: center;
}
.ny-logo-text { font-size: 1.1875rem; font-weight: 800; color: var(--bs-emphasis-color); letter-spacing: .5px; }
.ny-logo-sub { display: block; font-size: .6875rem; color: var(--bs-tertiary-color); letter-spacing: 1px; font-weight: 400; }

/* 主导航：下划线式激活态 */
.ny-nav .nav-link {
    font-weight: 600; color: var(--bs-emphasis-color);
    padding: .75rem 1.05rem;
    border-bottom: 2px solid transparent;
}
.ny-nav .nav-link:hover,
.ny-nav .nav-link.active,
.ny-nav .nav-link.is-active { color: var(--ny-brand-600); border-bottom-color: var(--ny-brand-600); }
.ny-nav .dropdown-menu {
    border-color: var(--bs-border-color);
    box-shadow: var(--ny-shadow-menu);
}
.ny-nav .dropdown-item { font-size: .875rem; color: var(--ny-muted); }
.ny-nav .dropdown-item:hover,
.ny-nav .dropdown-item:focus { background-color: var(--ny-brand-100); color: var(--ny-brand-700); }
/* 当前所在栏目在下拉里也要有标记（与主导航的激活态呼应） */
.ny-nav .dropdown-item.active,
.ny-nav .dropdown-item.is-active {
    background-color: var(--ny-brand-100); color: var(--ny-brand-700); font-weight: 600;
}

/* 桌面端悬停即展开下拉，移动端仍走 Bootstrap 的点击展开。
   【重要】这里必须显式把定位恢复成 absolute，不能只写 display: block ——
   原因（2026-10-01 真机实测 + 核对 BS5 源码）：
   Bootstrap v5.3.8 为了让移动端下拉能嵌入文档流，写了
       .navbar-nav .dropdown-menu { position: static }
   只在 min-width:992px 的媒体查询里才改回 absolute（依赖 data-bs-popper 属性）；
   而纯 :hover 展开不会触发 JS，节点上没有被赋予 data-bs-popper，
   于是 position 停留在 static —— 菜单按普通文档流占位，
   把下方内容整体顶下去（实测 <main> 从 top:120 被顶到 409，位移 289px）。
   显式声明 absolute 后菜单浮在内容之上，不再撑开文档流。 */
@media (min-width: 992px) {
    .ny-nav .dropdown:hover > .dropdown-menu { display: block; position: absolute; }
    .ny-nav .dropdown:hover > .dropdown-toggle::after { transform: rotate(180deg); }
    .ny-nav .dropdown-toggle::after { transition: transform .15s ease; }
}
@media (prefers-reduced-motion: reduce) {
    .ny-nav .dropdown-toggle::after { transition: none; }
}
@media (max-width: 991.98px) {
    .ny-nav .nav-link { padding: .7rem .25rem; border-bottom: 0; }
    .ny-nav .dropdown-menu { border: 0; padding-left: .75rem; box-shadow: none; background: transparent; }
}

/* 数据来源角标（宽屏显示） */
.ny-source { border-left: 1px solid var(--bs-border-color); padding-left: 1.25rem; line-height: 1.25; }
.ny-source .label { display: block; font-size: .6875rem; color: var(--bs-tertiary-color); }
.ny-source .value { font-size: 1.0625rem; font-weight: 700; color: var(--ny-brand-700); }

/* --------------------------------------------------------------------------
   4. 首页 hero（Bootstrap 之上加一层品牌底色）
   -------------------------------------------------------------------------- */
/* 首屏 hero：数据库站的排法 —— 搜索是唯一主角，占首屏大部分高度；
   内容整体相对居中、垂直略靠上（下内边距 > 上内边距）；
   最新/热点等其他信息一律排到搜索区下方各区块。
   （原先是矮条 + 立刻接两栏，那属资讯门户排法，与本站数据库定位不符） */
.ny-hero {
    background:
        radial-gradient(1100px 340px at 50% -140px, var(--ny-brand-100), transparent),
        linear-gradient(180deg, var(--ny-canvas-soft), var(--ny-brand-050));
    border-bottom: 1px solid var(--bs-border-color);
    display: flex;
    align-items: center;
    min-height: min(62vh, 520px);
    padding: 3rem 0 3.75rem;
}
@media (min-width: 992px) {
    .ny-hero { min-height: min(68vh, 620px); padding: 4.5rem 0 6rem; }
}
.ny-hero-title { font-size: 2.125rem; letter-spacing: -.5px; margin-bottom: .75rem; }
@media (min-width: 992px) { .ny-hero-title { font-size: 2.75rem; } }
.ny-hero-sub { max-width: 620px; margin: 0 auto 1.75rem; color: var(--bs-secondary-color); }

/* 大搜索框：居中时宽度压在 650px 内（再宽按钮会离输入区太远）；
   高度 52px（≥48px 触摸友好）；聚焦时边框变色 + 光晕，给出明确反馈 */
.ny-search { max-width: 650px; margin: 0 auto; }
.ny-search-box {
    display: flex; align-items: center;
    background: var(--ny-surface);
    border: 2px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    box-shadow: var(--ny-shadow);
    overflow: hidden;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.ny-search-box:focus-within {
    border-color: var(--bs-primary);
    box-shadow: 0 0 0 .2rem rgba(var(--bs-primary-rgb), .16);
}
.ny-search-ico { flex: none; margin: 0 .25rem 0 1rem; color: var(--bs-secondary-color); }
.ny-search-box input[type=search] {
    flex: 1 1 auto; min-width: 0;
    height: 52px; border: 0; outline: 0; background: transparent;
    font-size: 1rem;
}
.ny-search-box input[type=search]::placeholder { color: var(--bs-tertiary-color); }
.ny-search-box .btn { flex: none; height: 52px; border-radius: 0; padding-inline: 1.75rem; font-weight: 600; }
@media (max-width: 575.98px) {
    .ny-search-box input[type=search], .ny-search-box .btn { height: 48px; }
    .ny-search-box .btn { padding-inline: 1rem; }
    .ny-search-ico { margin-left: .75rem; }
}

/* 热门查询词：一次性平铺多个（数据库用户带目的而来，不做单条轮播） */
.ny-hotwords { margin-top: 1.125rem; font-size: .875rem; color: var(--bs-secondary-color); }
.ny-hotwords a { color: var(--bs-body-color); text-decoration: none; }
.ny-hotwords a:hover { color: var(--bs-primary); text-decoration: underline; }
.ny-hotwords a + a::before { content: "·"; margin: 0 .5rem; color: var(--bs-tertiary-color); }

.ny-hero-meta { margin: 1.5rem 0 0; font-size: .8125rem; color: var(--bs-secondary-color); }

/* 首页区块间距 */
.ny-quick-wrap { margin-top: 2rem; margin-bottom: .5rem; }
@media (min-width: 992px) { .ny-quick-wrap { margin-top: 2.5rem; } }
.ny-block { margin-bottom: 2.25rem; }
@media (min-width: 992px) { .ny-block { margin-bottom: 3rem; } }

/* 单行截断（.ny-clamp-2 已有，补一行版） */
.ny-clamp-1 { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* --------------------------------------------------------------------------
   4.5 全局交互态：可点击卡片的 hover 高亮（问题 1）
   --------------------------------------------------------------------------
   起因：原先只有 .ny-quick 这一类卡片写了 hover，其余（列表卡片、文章卡片、
   搜索结果卡片、相关阅读、上下篇等）全都没有 hover 反馈，用户看不出"这个能点"。
   这里统一成一套规则，任何"整卡可点"的卡片自动生效，不再逐处打补丁。

   整卡可点的判定标志：卡片内含有 .stretched-link（Bootstrap 的铺满式链接），
   或卡片本身是 <a>（如首页栏目入口）。
   -------------------------------------------------------------------------- */
.ny-card-hover,
.card:has(.stretched-link),
a.card {
    transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.ny-card-hover:hover,
.card:has(.stretched-link):hover,
a.card:hover {
    border-color: var(--bs-primary) !important;
    box-shadow: var(--ny-shadow-lg);
    transform: translateY(-2px);
}
/* 卡片被 hover 时，卡内标题同步变品牌色（只动位移会显得"没反应"） */
.ny-card-hover:hover .card-title,
.card:has(.stretched-link):hover .card-title,
.card:has(.stretched-link):hover h2 a,
.card:has(.stretched-link):hover h3 a,
a.card:hover .card-title {
    color: var(--bs-primary) !important;
}
/* 键盘可达性：Tab 聚焦到卡内链接时给同等反馈（无障碍要求，不能只服务鼠标） */
.card:has(.stretched-link:focus-visible) {
    border-color: var(--bs-primary) !important;
    box-shadow: 0 0 0 .2rem rgba(var(--bs-primary-rgb), .16);
}
@media (prefers-reduced-motion: reduce) {
    .ny-card-hover, .card:has(.stretched-link), a.card { transition: none; }
    .ny-card-hover:hover, .card:has(.stretched-link):hover, a.card:hover { transform: none; }
}

/* 4.6 列表卡片统一样式（列表页/搜索页/标签页/频道页共用）
   这几个页面的内容卡结构完全一样（缩略图列 + 标题 + 元信息行），
   统一压一遍内边距与元信息行，避免各页各写一套导致节奏不一致。 */
.ny-listcard .card-body { padding-top: .875rem; padding-bottom: .875rem; }
.ny-listcard + .ny-listcard { margin-top: 0; }
/* 元信息行（类别色标 / 登记证号 / 日期 / 阅读数）：统一小字、统一间距、统一弱化色 */
.ny-meta {
    display: flex; flex-wrap: wrap; align-items: center;
    gap: .5rem .875rem;
    font-size: .8125rem; color: var(--bs-secondary-color);
}
.ny-meta .ny-key { font-size: .84375rem; }

/* 4.7 上下篇导航（详情页底部）：与列表卡片同一套 hover 反馈 */
.ny-prevnext .card-body { padding: .875rem 1rem; }
.ny-prevnext .label { font-size: .75rem; color: var(--bs-tertiary-color); display: block; margin-bottom: .125rem; }
.ny-prevnext .title { color: var(--bs-body-color); }

/* 4.8 侧栏卡片头：统一底色为极浅品牌色，替代 BS 的 bg-body-tertiary（灰底偏冷） */
.ny-sider .card-header {
    background: var(--ny-brand-100);
    border-bottom: 1px solid var(--bs-border-color);
    color: var(--ny-brand-700);
    font-weight: 600;
}

/* 4.9 页头卡（列表页/频道页/搜索页顶部的栏目说明卡）
   原先各页都写成 .card > .card-body > h1.h4，但内边距与底色各不相同；
   这里统一为浅底 + 左侧品牌色竖条，与区块头 .ny-section-head 的竖线语言一致。 */
.ny-pagehead {
    background: var(--ny-surface);
    border: 1px solid var(--bs-border-color);
    border-left: 4px solid var(--ny-brand-600);
    border-radius: var(--bs-border-radius);
    padding: 1.25rem 1.375rem;
    margin-bottom: 1.5rem;
}
.ny-pagehead h1 { font-size: 1.375rem; margin: 0 0 .375rem; }
.ny-pagehead p { margin: 0; color: var(--bs-secondary-color); font-size: .9375rem; }
.ny-pagehead .ny-pagehead-note { font-size: .8125rem; color: var(--bs-tertiary-color); margin-top: .375rem; }

/* 4.10 筛选/快捷按钮组（搜索页的"全部/一天内/一周内…"）
   统一为一套 pill 按钮，替代散落的 btn-light border rounded-pill */
.ny-chipbar { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
.ny-chipbar .label { font-size: .8125rem; color: var(--bs-secondary-color); }
.ny-chip {
    display: inline-block;
    padding: .25rem .875rem;
    font-size: .8125rem; line-height: 1.6;
    color: var(--ny-muted); text-decoration: none;
    background: var(--ny-surface);
    border: 1px solid var(--bs-border-color);
    border-radius: 999px;
    transition: color .15s ease, background-color .15s ease, border-color .15s ease;
}
.ny-chip:hover { color: var(--ny-brand-700); border-color: var(--ny-brand-400); background: var(--ny-brand-050); }
.ny-chip.is-active { color: #fff; background: var(--ny-brand-600); border-color: var(--ny-brand-600); }

/* --------------------------------------------------------------------------
   5. 栏目快捷入口（用 Bootstrap card 拼）
   -------------------------------------------------------------------------- */
/* 本区块的 hover 由 4.5 的统一规则接管（a.card:hover），此处不重复定义 */
.ny-quick .card { height: 100%; }
/* 快捷入口卡：横向排版（图标在左、名称占据剩余、箭头在右）。
   本站顶级栏目只有"农药登记证 / 百科"两个，横向长条比正方形宫格更不易显空旷 */
.ny-quick .ny-quick-ico {
    flex: none;
    width: 44px; height: 44px;
    border-radius: var(--bs-border-radius-sm);
    background: var(--ny-brand-100); color: var(--ny-brand-700);
    display: flex; align-items: center; justify-content: center;
    font-size: 1.25rem; font-weight: 800;
}
.ny-quick .card-title { font-size: 1rem; font-weight: 600; }
.ny-quick .ny-quick-arrow {
    flex: none; color: var(--bs-secondary-color);
    font-size: 1.5rem; line-height: 1;
    transition: transform .15s ease, color .15s ease;
}
.ny-quick .card:hover .ny-quick-arrow { color: var(--bs-primary); transform: translateX(3px); }

/* --------------------------------------------------------------------------
   6. 文章卡片（Bootstrap card + 固定比例缩略图）
   -------------------------------------------------------------------------- */
.ny-thumb {
    width: 100%; aspect-ratio: 4 / 3; object-fit: cover;
    border-radius: var(--bs-border-radius-sm); background: var(--bs-body-bg);
}
/* 横向卡片里的缩略图：撑满左侧列高度 */
.ny-thumb-side {
    width: 100%; height: 100%; min-height: 108px; object-fit: cover;
    border-radius: var(--bs-border-radius-sm) 0 0 var(--bs-border-radius-sm);
    background: var(--bs-body-bg);
}
@media (max-width: 575.98px) {
    .ny-thumb { aspect-ratio: 1 / 1; }
}

/* 摘要截断（BS5.3 无 clamp 工具类） */
.ny-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* 区块标题：标题前一条品牌色短竖线 */
.ny-section-head {
    padding-bottom: .75rem; margin-bottom: 1rem;
    border-bottom: 1px solid var(--bs-border-color);
}
.ny-section-head h2 { font-size: 1.1875rem; margin: 0; }
.ny-section-head h2::before {
    content: ""; display: inline-block;
    width: 4px; height: 16px; margin-right: 9px;
    background: var(--ny-brand-600); border-radius: 2px;
    vertical-align: -2px;
}

/* --------------------------------------------------------------------------
   7. 农药类别色标（沿用旧站 nylb_id 映射；模板只在 nylb_id 非空时输出该类）
   -------------------------------------------------------------------------- */
/* 兜底：未映射的类别 id 一律给中性色。
   必须放在下面五条「已映射」规则之前 —— 选择器优先级相同（都是 0,1,0），靠顺序覆盖。
   为什么需要它：BS5 的 .badge 默认「白字 + 无底色」（color: var(--bs-badge-color) 即 #fff），
   旧站用的是 BS4 的 badge-info，自带青底，所以没映射的类别（如 id=5 杀螨剂）仍可见；
   换到 BS5 后如果只写下面五条，未映射类别会变成白字透明底 = 完全看不见。
   2026-10-01 真机实测发现。 */
[class*="ny-nylb-"] { background-color: var(--ny-nylb-default) !important; color: #fff !important; }

/* 已映射的五个主要类别（沿用旧站 lylb-color-* 语义，色值统一压暗见 :root 注释） */
.ny-nylb-2  { background-color: var(--ny-nylb-2)  !important; color: #fff !important; }
.ny-nylb-4  { background-color: var(--ny-nylb-4)  !important; color: #fff !important; }
.ny-nylb-7  { background-color: var(--ny-nylb-7)  !important; color: #fff !important; }
/* 亮黄底白字对比度不足（WCAG AA 要求 ≥4.5），此条必须配深字 */
.ny-nylb-12 { background-color: var(--ny-nylb-12) !important; color: var(--ny-ink) !important; }
.ny-nylb-15 { background-color: var(--ny-nylb-15) !important; color: #fff !important; }

/* 登记证号等关键值 */
.ny-key { font-family: var(--bs-font-monospace); font-weight: 700; color: var(--ny-accent); }

/* --------------------------------------------------------------------------
   8. 登记证基本信息表（定义列表，Bootstrap 没有对应组件）
   -------------------------------------------------------------------------- */
.ny-def { margin-bottom: 0; border: 1px solid var(--bs-border-color); border-radius: var(--bs-border-radius); overflow: hidden; }
.ny-def .ny-def-row { display: flex; border-bottom: 1px solid var(--bs-border-color); background: var(--ny-surface); }
.ny-def .ny-def-row:last-child { border-bottom: 0; }
.ny-def dt {
    flex: 0 0 140px; padding: .7rem 1rem; margin: 0;
    background: var(--ny-canvas-soft); border-right: 1px solid var(--bs-border-color);
    font-size: .84375rem; font-weight: 600; color: var(--bs-secondary-color);
}
.ny-def dd { flex: 1 1 auto; padding: .7rem 1rem; margin: 0; font-size: .90625rem; min-width: 0; }
@media (max-width: 575.98px) {
    .ny-def dt { flex-basis: 100px; padding: .6rem .625rem; font-size: .78125rem; }
    .ny-def dd { padding: .6rem .75rem; }
}

/* --------------------------------------------------------------------------
   9. 搜索结果关键词高亮兜底（cms_highlightKeyword 默认输出行内样式）
   -------------------------------------------------------------------------- */
mark, .hl-keyword { background: var(--ny-warn-bg); color: var(--ny-warn-fg); padding: 0 2px; border-radius: 2px; }

/* --------------------------------------------------------------------------
   10. 面包屑：catpos() 输出的是裸 <a>，没有 Bootstrap 的 .breadcrumb-item
   -------------------------------------------------------------------------- */
.breadcrumb { --bs-breadcrumb-divider: '›'; font-size: .8125rem; margin-bottom: 1rem; }
.breadcrumb > a,
.breadcrumb .crumb-trail a { color: var(--bs-secondary-color); text-decoration: none; }
.breadcrumb > a:hover,
.breadcrumb .crumb-trail a:hover { color: var(--ny-brand-600); text-decoration: underline; }

/* --------------------------------------------------------------------------
   11. 正文排版（Bootstrap 没有 prose，用最小规则补）
   -------------------------------------------------------------------------- */
.ny-prose { font-size: 1rem; line-height: 1.9; color: var(--ny-ink-soft); overflow-wrap: break-word; }
.ny-prose h2 { margin: 1.875rem 0 .75rem; font-size: 1.25rem; }
.ny-prose h3 { margin: 1.5rem 0 .625rem; font-size: 1.0625rem; }
.ny-prose p { margin-bottom: 1rem; }
.ny-prose ul, .ny-prose ol { margin-bottom: 1rem; padding-left: 1.375rem; list-style: revert; }
.ny-prose li { margin-bottom: .375rem; }
.ny-prose img { margin: 1rem auto; display: block; max-width: 100%; height: auto; border-radius: var(--bs-border-radius-sm); }
.ny-prose a { text-decoration: underline; text-underline-offset: 2px; }
.ny-prose blockquote {
    margin: 1.125rem 0; padding: .75rem 1.125rem;
    background: var(--ny-canvas-soft); border-left: 4px solid var(--bs-primary-border-subtle);
    color: var(--bs-secondary-color); border-radius: 0 var(--bs-border-radius-sm) var(--bs-border-radius-sm) 0;
}
.ny-prose pre {
    margin: 1rem 0; padding: .875rem 1rem; overflow-x: auto;
    background: var(--ny-ink); color: var(--ny-line); border-radius: var(--bs-border-radius-sm); font-size: .8125rem;
}
.ny-prose table { margin: 1.125rem 0; font-size: .875rem; width: 100%; }
.ny-prose th, .ny-prose td { padding: .5625rem .75rem; border: 1px solid var(--bs-border-color); }
.ny-prose th { background: var(--ny-canvas-soft); font-weight: 600; }

/* --------------------------------------------------------------------------
   12. 站脚
   -------------------------------------------------------------------------- */
.ny-footer { margin-top: 3rem; background: var(--ny-footer-bg); color: var(--ny-footer-fg); font-size: .875rem; }
.ny-footer a { color: var(--ny-footer-fg); text-decoration: none; }
.ny-footer a:hover { color: var(--ny-footer-fg-strong); }
.ny-footer .ny-footer-title { font-size: .875rem; font-weight: 600; color: var(--ny-footer-fg-strong); letter-spacing: .5px; }
.ny-footer .ny-footer-brand { font-size: 1.1875rem; font-weight: 800; color: var(--ny-footer-fg-strong); letter-spacing: .5px; }
.ny-footer .ny-footer-bottom {
    border-top: 1px solid rgba(255, 255, 255, .1);
    font-size: .78125rem; color: var(--ny-footer-fg-dim);
}

/* --------------------------------------------------------------------------
   13. 打印
   -------------------------------------------------------------------------- */
@media print {
    .ny-header, .ny-footer, .ny-nav, .breadcrumb, .pagination, .ny-no-print { display: none !important; }
    .ny-prose { font-size: 12pt; }
    body { background: #fff; }
}
