/* 低空招投标速报 —— 样式
   全部类名带 bd- 前缀，避免与主站 / 其它子系统冲突
   配色沿用主系统蓝色 #35618F（与 /daily/ /law/ 保持一致的外观） */

:root {
  --bd-blue: #35618F;
  --bd-blue-soft: #EAF0F6;
  --bd-red: #C0392B;
  --bd-orange: #C8791F;
  --bd-amber: #A8862B;
  --bd-green: #2E7D5B;
  --bd-ink: #1F2A36;
  --bd-ink2: #5A6A7A;
  --bd-ink3: #8A99A8;
  --bd-line: #E3E9F0;
  --bd-bg: #F4F7FA;
  --bd-card: #FFFFFF;
}

* { box-sizing: border-box; }

html, body {
  margin: 0; padding: 0;
  background: var(--bd-bg);
  color: var(--bd-ink);
  -webkit-text-size-adjust: 100%;
}

body {
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Helvetica Neue", sans-serif;
  font-size: 14px;
  line-height: 1.6;
  padding-bottom: 30px;
}

/* ---------- 顶部返回门户条 ---------- */
.bd-bar {
  position: sticky; top: 0; z-index: 50;
  display: flex; align-items: center; gap: 10px;
  padding: 10px 14px;
  background: var(--bd-blue); color: #fff;
}
.bd-bar .bd-bk {
  color: #fff; text-decoration: none; font-size: 22px; line-height: 1;
  padding: 0 6px; border-radius: 6px;
}
.bd-bar .bd-tt { font-size: 16px; font-weight: 600; }
.bd-bar .bd-sub {
  margin-left: auto; font-size: 12px; opacity: .85;
  max-width: 46vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* ---------- 过期提示 ---------- */
.bd-stale {
  margin: 10px 12px 0; padding: 9px 12px;
  border-radius: 8px; font-size: 13px;
  background: #FDF3E3; border: 1px solid #F0DCBB; color: #7A5A15;
}
.bd-stale b { color: #6B4B0A; }

/* ---------- 概览 ---------- */
.bd-sum {
  display: flex; flex-wrap: wrap; gap: 10px;
  padding: 12px 12px 0;
}
.bd-sum .bd-cell {
  flex: 1 1 88px; min-width: 88px;
  background: var(--bd-card); border: 1px solid var(--bd-line);
  border-radius: 10px; padding: 9px 11px;
}
.bd-sum .bd-cell b {
  display: block; font-size: 20px; line-height: 1.2; font-weight: 650;
  font-variant-numeric: tabular-nums;
}
.bd-sum .bd-cell span { font-size: 11.5px; color: var(--bd-ink2); }
/* 「当日发布」统计卡可点：一键只看当日条目（再次点击取消） */
.bd-sum .bd-cell.tappable {
  cursor: pointer; position: relative;
  transition: border-color .15s, background .15s, box-shadow .15s;
}
.bd-sum .bd-cell.tappable:hover { border-color: var(--bd-blue); }
.bd-sum .bd-cell.tappable:focus-visible { outline: 2px solid var(--bd-blue); outline-offset: 2px; }
.bd-sum .bd-cell.tappable.on {
  border-color: var(--bd-blue); background: var(--bd-blue-soft);
  box-shadow: inset 0 0 0 1px var(--bd-blue);
}
.bd-sum .bd-cell-hint {
  display: block; margin-top: 2px; font-size: 10.5px; font-style: normal;
  color: var(--bd-blue); opacity: .85;
}

/* ---------- 洞察 ---------- */
.bd-ins {
  margin: 10px 12px 0; padding: 10px 12px;
  border-radius: 8px; font-size: 13px; color: var(--bd-ink2);
  background: var(--bd-blue-soft); border: 1px solid #D6E0EA;
}
.bd-ins b { color: var(--bd-ink); }

/* ---------- 搜索 ---------- */
.bd-search { padding: 10px 12px 0; }
.bd-search input {
  width: 100%; padding: 9px 12px; font-size: 14px; font-family: inherit;
  border: 1px solid var(--bd-line); border-radius: 9px;
  background: var(--bd-card); color: var(--bd-ink); outline: none;
}
.bd-search input:focus { border-color: var(--bd-blue); }

/* ---------- 筛选 chip ---------- */
.bd-fil { padding: 10px 12px 2px; }
.bd-row { display: flex; gap: 7px; overflow-x: auto; padding-bottom: 7px; scrollbar-width: none; }
.bd-row::-webkit-scrollbar { display: none; }
.bd-chip {
  flex: none; padding: 5px 11px; border-radius: 16px; font-size: 12.5px;
  background: var(--bd-card); border: 1px solid var(--bd-line); color: var(--bd-ink2);
  cursor: pointer; white-space: nowrap; user-select: none;
}
.bd-chip.on { background: var(--bd-blue); border-color: var(--bd-blue); color: #fff; }
.bd-chip i { font-style: normal; opacity: .65; margin-left: 5px; font-size: 11px; }

/* ---------- 列表 ---------- */
.bd-main { padding: 6px 12px 0; }

.bd-card {
  background: var(--bd-card); border: 1px solid var(--bd-line);
  border-left: 3px solid var(--bd-line);
  border-radius: 9px; padding: 11px 12px; margin-bottom: 8px;
}
.bd-card .bd-t {
  display: block; color: var(--bd-ink); text-decoration: none;
  font-size: 14.5px; font-weight: 560; line-height: 1.5;
}
.bd-card .bd-t:hover { color: var(--bd-blue); }
.bd-card .bd-t.plain { cursor: default; }
.bd-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.bd-tag {
  font-size: 11px; padding: 2px 8px; border-radius: 5px;
  background: var(--bd-bg); color: var(--bd-ink3); border: 1px solid var(--bd-line);
}
.bd-tag.cat { color: var(--bd-green); border-color: #CBE4D8; background: #EEF7F2; }
.bd-tag.money { color: var(--bd-amber); border-color: #EADCBB; background: #FCF6E8; font-weight: 600; }
.bd-tag.due { color: var(--bd-red); border-color: #EFCFCB; background: #FBEFEE; }
.bd-tag.bad { color: var(--bd-red); border-color: #EFCFCB; background: #FBEFEE; font-weight: 600; }
.bd-foot-c {
  margin-top: 9px; padding-top: 8px; border-top: 1px solid var(--bd-line);
  display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 12px; color: var(--bd-ink3);
}
.bd-foot-c a { color: var(--bd-blue); text-decoration: none; }

/* ---------- 空态 / 报错 ---------- */
.bd-empty { text-align: center; color: var(--bd-ink3); padding: 50px 20px; font-size: 14px; }
.bd-empty .big { font-size: 15px; color: var(--bd-ink2); margin-bottom: 6px; }
.bd-err {
  margin: 16px 12px; padding: 14px; border-radius: 9px; font-size: 13.5px; line-height: 1.75;
  background: #FBEFEE; border: 1px solid #EFCFCB; color: #7A2F26;
}
.bd-err b { display: block; margin-bottom: 6px; color: var(--bd-red); }
.bd-err code { background: #FFF; padding: 1px 5px; border-radius: 4px; font-size: 12px; }

/* ---------- 翻期导航（与低空日报 dl-nav 一致） ---------- */
.bd-nav {
  display: flex; align-items: center; justify-content: center; gap: 12px;
  margin: 16px 12px 0; padding-top: 14px;
  border-top: 1px solid var(--bd-line);
}
.bd-nav button {
  flex: none; padding: 8px 14px; font-size: 13.5px; font-family: inherit;
  background: var(--bd-card); border: 1px solid var(--bd-line); border-radius: 9px;
  color: var(--bd-blue); cursor: pointer; min-width: 92px;
}
.bd-nav button:hover:not(:disabled) { background: var(--bd-blue-soft); border-color: #C9D6E2; }
.bd-nav button:disabled { color: var(--bd-ink3); background: var(--bd-bg); cursor: not-allowed; opacity: .6; }
.bd-nav-i {
  flex: none; font-size: 13px; color: var(--bd-ink2); font-variant-numeric: tabular-nums;
  min-width: 64px; text-align: center;
}

/* ---------- 保留期说明 ---------- */
.bd-keep {
  margin: 10px 12px 0; font-size: 12px; color: var(--bd-ink3);
  text-align: center;
}

/* ---------- 页脚 ---------- */
body > .bd-foot {
  margin: 22px 12px 0; padding-top: 12px; border-top: 1px solid var(--bd-line);
  font-size: 12px; color: var(--bd-ink3); display: flex; flex-direction: column; gap: 3px;
}

/* ============================================================
   低空翼站 Phase-2 可用性增强（2026-10-23）
   仅追加，未修改任何既有规则。回滚 = 删除本块。
   ============================================================ */
/* B3 筛选行由「隐藏滚动条的横滚」改为换行：原实现下 375px 尾部 chip right=1024px，用户不可达 */
.bd-row{flex-wrap:wrap}
/* B1 chip 触控目标 28px → 40px */
.bd-chip{min-height:40px;padding:8px 14px;display:flex;align-items:center}
/* B2 小字 */
.bd-chip i{font-size:12px}
.bd-sum .bd-cell-hint{font-size:12px}
/* B4 返回键 19.6×22 → 40×40 */
.bd-bar .bd-bk{min-width:40px;min-height:40px;display:inline-flex;align-items:center;justify-content:center}
/* B7 搜索框 */
.bd-search input{min-height:40px}
/* L5 iOS 安全区 */
.bd-bar{padding-top:max(10px,calc(10px + env(safe-area-inset-top)))}
/* B6 桌面双栏（先加，验证不通过就整条删掉） */
@media(min-width:900px){
  #bdMain{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:start}
  #bdMain>*{margin-bottom:0}
}

/* ============================================================================
   低空翼站 Phase-3f · 阅读密度候选（2026-10-25）
   —— 纯 CSS 末尾追加，上方既有规则一行未改。回滚 = 删除本块。
   硬边界：不新增「更多」折叠、不删省份/品类/公告类型任何一项、
           不改统计口径、不改默认日期、不改采集状态、不改正文内容
   ============================================================================ */

/* ---- 1) 修：桌面双栏其实一直没生效 -----------------------------------------
   Phase-2 B6 把 grid 写在 #bdMain 上，但 #bdMain 全页只有 .bd-main 一个子元素
   （118 张卡全在它里面），于是整列列表被塞进 2 列网格的左格：
   1440 下真实列表宽只有 715px，右半屏全空，双栏名存实亡。
   把网格下移到 .bd-main 本身，卡片才真正分成两栏。 */
@media (min-width: 900px) {
  #bdMain { display: block; }
  #bdMain > .bd-main {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px 14px;
    align-items: start;
  }
  #bdMain > .bd-main > * { margin-bottom: 0; }
}

/* ---- 2) 筛选区加分组标签（纯 CSS ::before，不加 DOM、不加折叠、不改筛选逻辑）--
   三组 chip 原本没有任何组名，30 个省份与 7 个品类视觉上连成一片。
   标签内联在每组首行左侧，不额外占一行高度。 */
.bd-fil .bd-row { align-items: center; }
  flex: none; align-self: center; white-space: nowrap;
  font-size: 11px; line-height: 1.15; color: var(--bd-ink3);
  letter-spacing: .3px; padding-right: 2px;
}

/* ---- 3) 筛选密度：字号与内边距收紧，换行数下降，触控高度仍 40px -------------
   390 下省份组原本 7 行 / 329px、品类组 3 行 / 141px，把正文顶到 962px 以下。
   只收横向内边距（14→9）与 gap（7→6），每行多放 1 个 chip；
   高度仍由 Phase-2 的 min-height:40px 兜住，不回退触控目标。 */
.bd-fil { padding: 6px 12px 2px; }
.bd-row { gap: 6px; padding-bottom: 4px; }
.bd-chip { padding: 8px 9px; font-size: 12.5px; }
.bd-chip i { font-size: 11.5px; margin-left: 3px; }
.bd-fil .bd-row + .bd-row { margin-top: 2px; }
.bd-chip.on { font-weight: 600; }
.bd-chip:focus-visible,
.bd-card .bd-t:focus-visible,
.bd-foot-c a:focus-visible,
.bd-nav button:focus-visible { outline: 2px solid var(--bd-blue); outline-offset: 2px; }

/* ---- 4) 手机端统计条：5 项收成一行（项数、数值、口径一律不变）--------------
   原本 3+2 两行共 150px，只为 5 个数字。改 5 等分单行，给正文让出 ~85px。 */
@media (max-width: 759px) {
  .bd-sum { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 5px; padding: 6px 12px 0; }
  .bd-sum .bd-cell { min-width: 0; padding: 5px 4px; text-align: center; border-radius: 8px; }
  .bd-sum .bd-cell b { font-size: 16px; line-height: 1.15; }
  .bd-sum .bd-cell span { font-size: 10px; line-height: 1.28; display: block; }
  .bd-sum .bd-cell-hint { font-size: 9.5px; line-height: 1.22; margin-top: 1px; }
}

/* ---- 5) 洞察 / 搜索 / 页头：只收留白与行高，不删字 ------------------------ */
.bd-ins { margin: 7px 12px 0; padding: 7px 10px; font-size: 12.5px; line-height: 1.5; }
.bd-search { padding: 6px 12px 0; }
.bd-bar { padding-top: max(6px, calc(6px + env(safe-area-inset-top))); padding-bottom: max(6px, calc(6px + env(safe-area-inset-bottom))); }
.bd-bar .bd-sub { font-size: 11.5px; }

/* ---- 6) 列表卡：卡片内留白收紧，长标题换行更稳 ---------------------------- */
.bd-card { padding: 9px 11px; margin-bottom: 7px; }
.bd-tags { margin-top: 4px; gap: 5px; }
.bd-foot-c { margin-top: 5px; padding-top: 5px; gap: 2px 12px; }
.bd-card .bd-t { overflow-wrap: break-word; word-break: break-word; }
@media (min-width: 900px) {
  .bd-card { padding: 12px 13px; }
  .bd-card .bd-t { font-size: 15px; line-height: 1.45; }
  .bd-foot-c { gap: 4px 16px; }
}

/* ---- 7) 翻期导航：36px → 40px 触控 ---------------------------------------- */
.bd-nav button { min-height: 40px; }
