/* 深圳国资公开招采项目分析平台 — 样式
   ────────────────────────────────────────────────────────────
   整体框架复用 szzf-ai(主站 szzf.online)的前端:
     · 页头/加载动画/品牌资产 = /assets/ 下从主站原样搬来的 sitehead.js
       + site-loader.*(页头的导航表已改成本站版本, 见该文件顶部注释)
     · 配色 token 与主站「系统台账」(/system) 同一套:深色为默认的深海军蓝,
       浅色由页头右上角按钮切换(写 localStorage szzf_theme:zc)
   本文件只负责页头以下的内容区。改配色改这里的 :root 两块就够, 页头自带配色。

   颜色 token(与主站同名, 便于两边互抄组件):
     --page/--surface  页面底 / 卡片底
     --ink-1/2/3       正文 / 次要 / 轴与弱化
     --series          线条与文字用主色(压在页面底色上, 对比度 ≥4.5:1)
     --series-solid    实心填充用主色, 其上文字用 --on-series
     --series-2/3      第二/第三色位(仅用于必须区分身份的多序列图) */

:root {
  color-scheme: dark;
  --page: #070b12;   --surface: #0e1622;
  --ink-1: #f8fafc;  --ink-2: #9fb0c8;  --ink-3: #71839c;
  --grid: #1c2839;   --axis: #2b3a50;   --border: rgba(150, 172, 205, .16);
  --series: #5b9ceb; --series-solid: #2f74c4; --on-series: #ffffff;
  --series-2: #2ce6a6; --series-3: #ffd24d;
  --hover: rgba(91, 156, 235, .14);
  --active: rgba(91, 156, 235, .22);
  --critical: #ff6b7d; --good: #2ce6a6;
}

:root[data-theme="light"] {
  color-scheme: light;
  --page: #f9f9f7;   --surface: #fcfcfb;
  --ink-1: #0b0b0b;  --ink-2: #52514e;  --ink-3: #6b6963;
  --grid: #e1e0d9;   --axis: #c3c2b7;   --border: rgba(11, 11, 11, .10);
  --series: #1a63b8; --series-solid: #1a63b8; --on-series: #ffffff;
  --series-2: #0f7a5a; --series-3: #b45309;
  --hover: rgba(26, 99, 184, .08);
  --active: rgba(26, 99, 184, .14);
  --critical: #c02b3c; --good: #0f7a5a;
}

/* 键盘焦点始终可见;不靠悬停单独传达状态 */
:focus-visible { outline: 2px solid var(--series); outline-offset: 2px; border-radius: 6px; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; }
}

* { box-sizing: border-box; }

/* hidden 属性必须压得住组件自己的 display —— 层叠里作者样式表永远赢过浏览器
   默认的 [hidden]{display:none}, 所以 .drawer{display:flex} 这类规则会让
   hidden 彻底失效(抽屉从加载起就一直摆在那儿, 点关闭也没反应)。
   统一在这里兜住, 省得每加一个组件就踩一次。 */
[hidden] { display: none !important; }

body {
  margin: 0;
  background: var(--page);
  color: var(--ink-1);
  font: 14.5px/1.6 system-ui, -apple-system, "Segoe UI", "PingFang SC",
        "Microsoft YaHei", sans-serif;
  -webkit-font-smoothing: antialiased;
}

/* 深色下的城市夜景底:与主站大屏同族的三层径向渐变(浅色主题不加) */
:root:not([data-theme="light"]) body {
  background:
    radial-gradient(820px 420px at 14% -8%, rgba(31, 111, 198, .28), transparent 68%),
    radial-gradient(760px 360px at 84% -6%, rgba(47, 211, 154, .10), transparent 62%),
    radial-gradient(120% 90% at 50% -8%, #0b1422 0%, #06090f 55%, #04060b 100%) fixed;
}

.wrap { max-width: 1560px; margin: 0 auto; padding: 0 28px; }
@media (max-width: 720px) { .wrap { padding: 0 16px; } }

/* ───── 页头贴片:公告量/招标人等芯片, 由 sitehead.js 搬进页头中部空白区 ───── */
.chips { display: flex; gap: 8px 10px; flex-wrap: wrap; font-size: 12.5px; color: #9fb9e4; }
/* 搬进页头后在中部空白区内居中 */
.chips.szh-slot { justify-content: center; }
/* 统计磁贴: 方框内上标签下大数值, 单位跟在数值基线后弱化 */
.chips .chip { display: inline-flex; flex-direction: column;
  align-items: flex-start; gap: 1px; white-space: nowrap;
  padding: 5px 14px 6px; border-radius: 10px;
  border: 1px solid rgba(159, 185, 228, .35);
  background: rgba(255, 255, 255, .05); }
.chips .lbl { font-size: 11px; letter-spacing: .02em; }
.chips b { color: #fff; font-weight: 700; font-size: 19px; line-height: 1.15;
  font-variant-numeric: tabular-nums; letter-spacing: .01em; }
.chips .unit { font-size: 11px; font-weight: 400; opacity: .8; margin-left: 3px; }
/* 贴片没被搬进页头(JS 未跑/被判定放不下)时, 在正文顶部也要好看 */
.chips:not(.szh-slot) { padding: 12px 0 0; color: var(--ink-2); }
.chips:not(.szh-slot) b { color: var(--ink-1); }
.chips:not(.szh-slot) .chip { border-color: var(--border);
  background: transparent; }

/* ───── 卡片 ───── */
.view { padding: 16px 0 44px; }
.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 16px 18px 18px;
  margin-bottom: 16px;
}
.card-hd {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; flex-wrap: wrap; margin-bottom: 2px;
}
.card-hd h2 { margin: 0; font-size: 15.5px; font-weight: 700; letter-spacing: -.01em; }
.note { margin: 5px 0 14px; color: var(--ink-2); font-size: 12.8px; max-width: 82ch; }
.note strong { color: var(--ink-1); font-weight: 700; }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 1000px) { .grid-2 { grid-template-columns: 1fr; } }

/* ───── 总览 · 顶部国企 logo 墙:市属一排跑马灯 + 区属一排静态 ───── */
.ov-layout { display: block; }
.logo-wall { margin-bottom: 12px; padding: 8px 18px 6px; }
.wall-n { font-size: 12px; color: var(--ink-3); white-space: nowrap; }
/* 跑马灯: track 里同一份 tile 连排两份, JS(initMarquee) 逐帧平移并对半宽取模
   实现无缝循环 —— 用 JS 是为了支持拖拽。悬停暂停;两侧渐隐提示还有内容在滚 */
.wall-marquee { overflow: hidden; margin: 2px 0 0;
  cursor: grab; user-select: none; touch-action: pan-y;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent); }
.wall-marquee:active { cursor: grabbing; }
.wall-track { display: flex; width: max-content; will-change: transform; }
.wall-track img { -webkit-user-drag: none; }
/* 无缝拼接要求两半严格等宽 —— 间距全走 margin-right, track 不设 gap */
.wall-track .wall-tile { flex: 0 0 auto; width: 124px; margin-right: 6px; }
/* 静态排: 铺开, 放不下自动换行。格宽 136 是给横条字标留的 ——
   深智城/城安院这类 4:1 以上的横条只能靠宽度撑大 */
.wall-grid { display: grid; gap: 2px 6px;
  grid-template-columns: repeat(auto-fill, minmax(124px, 1fr)); }
/* 区属: 挤成一排 —— 列数跟条目数走、平均分宽; 窄屏放不下时退回自动换行 */
#wall-grid2 { grid-template-columns: none;
  grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 4px 4px; }
@media (max-width: 980px) {
  #wall-grid2 { grid-template-columns: repeat(auto-fill, minmax(124px, 1fr));
    grid-auto-flow: row; grid-auto-columns: unset; }
}
/* 每排: 左侧板块标签列 + 右侧 logo 区, 标签占满行高省掉单独的标题行 */
.wall-row { display: grid; grid-template-columns: 96px minmax(0, 1fr);
  gap: 4px 12px; align-items: center; }
.wall-row + .wall-row { margin-top: 4px; padding-top: 4px;
  border-top: 1px solid var(--border); }
.wall-lbl { display: flex; flex-direction: column;
  align-items: flex-start; gap: 4px; }
.wall-lbl .wall-n { font-size: 10.5px; padding-left: 2px; }
/* 标签脱离 .card-hd 后自己管 margin 和字号 */
.wall-lbl .sec-tab { margin: 0; font-size: 13.5px; font-weight: 700;
  white-space: nowrap; }
@media (max-width: 700px) {
  .wall-row { grid-template-columns: 1fr; }
  .wall-lbl { flex-direction: row; align-items: center; gap: 8px; }
}
/* 板块标题做成三选一的选项(样式同 cls-tag 的胶囊): 选中哪块,
   下方成交金额折线图和公告列表就切到哪块 */
h2.sec-tab { cursor: pointer; padding: 2px 12px; border-radius: 999px;
  border: 1px solid var(--border); user-select: none; }
h2.sec-tab:hover { background: var(--hover); }
h2.sec-tab.is-on { background: var(--series-solid);
  border-color: var(--series-solid); color: var(--on-series); }
/* 不带边框底色的裸 tile —— 只有 logo + 名字, 悬停时才浮出淡底。
   复用 a.flt 的点击行为, 选择器带上 a 抬高特异性压掉链接蓝 */
a.wall-tile { display: flex; flex-direction: column; align-items: center;
  gap: 2px; text-align: center; padding: 2px;
  border-radius: 10px; color: var(--ink-1);
  text-decoration: none; cursor: pointer; }
a.wall-tile:hover { background: var(--hover); text-decoration: none; }
/* logo 槽位: 透明定高(不垫卡, 免得格中格), 只负责各 tile 上下对齐;
   图片实际宽高由 fitLogo 按面积归一写行内值, JS 跑之前先用 max 值兜底 */
.wall-tile .logo-slot { width: 100%; height: 57px; display: flex;
  align-items: center; justify-content: center; }
.wall-tile .org-logo { max-width: min(120px, 100%); max-height: 51px;
  width: auto; height: auto; border-radius: 8px; object-fit: contain; }
.wall-tile .org-initial { width: 48px; height: 48px; font-size: 17px; }
.wall-tile .nm { font-size: 12px; font-weight: 600; line-height: 1.3;
  overflow: hidden; display: -webkit-box; -webkit-line-clamp: 1;
  -webkit-box-orient: vertical; }
.wall-tile .ct { font-size: 10.5px; color: var(--ink-3);
  font-variant-numeric: tabular-nums; }

/* ───── 指标卡 ───── */
.kpis {
  display: grid; gap: 12px; margin-bottom: 16px;
  grid-template-columns: repeat(auto-fit, minmax(178px, 1fr));
}
.kpi {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 14px; padding: 14px 16px;
}
.kpi .k { color: var(--ink-2); font-size: 12.5px; }
/* 大数字用比例字形, tabular-nums 会让它显得松散 */
.kpi .v { font-size: 26px; font-weight: 700; line-height: 1.25; margin-top: 3px; letter-spacing: -.02em; }
.kpi .u { font-size: 13.5px; font-weight: 400; color: var(--ink-2); margin-left: 3px; }
.kpi .d { color: var(--ink-3); font-size: 12px; margin-top: 3px; }

/* ───── 图表 ───── */
.chart { width: 100%; height: 320px; }
#c-hangye, #c-rate, #c-gz { height: 380px; }

/* ───── 表格 ───── */
.tbl-wrap { overflow-x: auto; }
table { border-collapse: collapse; width: 100%; font-size: 13px; }
th, td {
  text-align: left; padding: 8px 11px;
  border-bottom: 1px solid var(--grid); white-space: nowrap;
}
thead th {
  color: var(--ink-3); font-weight: 700; font-size: 11.5px;
  letter-spacing: .02em; background: var(--surface);
}
td.num, th.num { text-align: right; font-variant-numeric: tabular-nums; }
td.name { white-space: normal; min-width: 220px; max-width: 460px; }
tbody tr:hover { background: var(--hover); }
.rk { color: var(--ink-3); font-variant-numeric: tabular-nums; }
a.ent { color: var(--series); text-decoration: none; cursor: pointer; }
a.ent:hover { text-decoration: underline; }

/* 阶段徽标:颜色之外还有文字, 不靠颜色单独表意 */
.tag {
  display: inline-block; padding: 1px 8px; border-radius: 999px;
  font-size: 11.5px; font-weight: 600;
  border: 1px solid var(--border); color: var(--ink-2);
}
.tag.result { color: var(--good);     border-color: color-mix(in srgb, var(--good) 45%, transparent); }
.tag.abort  { color: var(--critical); border-color: color-mix(in srgb, var(--critical) 45%, transparent); }
.tag.notice { color: var(--series);   border-color: color-mix(in srgb, var(--series) 45%, transparent); }

/* 性质徽标与所属集团 —— 招标人榜的「性质」列 */
.tag.gq { color: var(--series); border-color: color-mix(in srgb, var(--series) 45%, transparent); }
.sub-grp { color: var(--ink-3); font-size: 11.5px; margin-top: 3px; max-width: 220px;
  overflow: hidden; text-overflow: ellipsis; }
a.flt { color: var(--series); text-decoration: none; cursor: pointer; }
a.flt:hover { text-decoration: underline; }

/* ───── 招标人 · 集团折叠树 ───── */
.seg { display: inline-flex; gap: 3px; background: var(--page);
  border: 1px solid var(--border); border-radius: 9px; padding: 3px; }
.seg-btn { appearance: none; border: 0; background: transparent; cursor: pointer;
  color: var(--ink-2); font: inherit; font-size: 12.5px; font-weight: 600;
  padding: 5px 11px; border-radius: 7px; white-space: nowrap; }
.seg-btn:hover { color: var(--ink-1); }
.seg-btn.is-on { background: var(--series-solid); color: var(--on-series); }

.org-sec { margin-top: 14px; }
/* 央企 | 市属 | 区属 三列并排; 列内各自独立折叠, 高度互不牵扯 */
.org-cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0 16px; align-items: start; }
/* 三列下行宽只剩 1/3: 名字占满第一行(仍单行截断), 统计换行缩进到名字底下,
   条形图不再定宽, 吃掉统计行的剩余宽度 */
.org-cols .org-head { padding: 9px 12px; gap: 9px; }
.org-cols .org-logo { width: 28px; height: 28px; }
.org-cols .org-name { font-size: 13px; }
@media (max-width: 1100px) { .org-cols { grid-template-columns: 1fr; } }
.org-sec-hd { display: flex; align-items: baseline; gap: 9px; margin-bottom: 8px;
  font-size: 12.5px; font-weight: 700; color: var(--ink-2); letter-spacing: .02em; }
.org-sec-hd .n { font-weight: 400; color: var(--ink-3); }

.org-group { border: 1px solid var(--border); border-radius: 12px;
  background: var(--page); margin-bottom: 8px; overflow: hidden; }
.org-group.open { border-color: color-mix(in srgb, var(--series) 45%, var(--border)); }
.org-head { width: 100%; display: flex; align-items: center; gap: 12px;
  padding: 11px 14px; background: none; border: 0; cursor: pointer;
  text-align: left; font: inherit; color: var(--ink-1); }
.org-head:hover { background: var(--hover); }
/* 没有一对一集团的平台行(工信部/交易集团): 只展示, 不可展开 */
.org-group.noexpand .org-head { cursor: default; }
.org-group.noexpand .org-head:hover { background: none; }
.org-group.noexpand .caret { visibility: hidden; }
.org-head .caret { flex: 0 0 12px; color: var(--series); font-size: 11px;
  transition: transform .15s; }
.org-group.open .caret { transform: rotate(90deg); }
/* logo 是各家自己的图, 底色深浅不一 —— 统一垫白底圆角, 深色主题下才不至于糊成一团 */
.org-logo { flex: 0 0 auto; width: 34px; height: 34px; border-radius: 8px;
  object-fit: contain; background: #fff; padding: 3px;
  border: 1px solid var(--border); }
.org-initial { display: inline-flex; align-items: center; justify-content: center;
  background: var(--active); color: var(--series); font-size: 12px; font-weight: 700;
  padding: 0; letter-spacing: -.02em; }
.org-name { font-size: 14px; font-weight: 600; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* 统计: 与名字同一行并排, 数字加粗、单位灰字紧随; 名字吃剩余宽度、超长省略 */
.org-name { flex: 1 1 0; }
.org-stat { flex: 0 0 auto; display: flex; align-items: baseline; gap: 12px;
  font-variant-numeric: tabular-nums; }
.org-stat .kv { display: inline-flex; align-items: baseline; justify-content: flex-end;
  gap: 3px; white-space: nowrap; }
/* 定宽 + 右对齐: 同列各卡片的数字纵向成列, 扫读时眼睛不用来回找 */
.org-stat .kv:nth-child(1) { min-width: 84px; }
.org-stat .kv:nth-child(2) { min-width: 84px; }
.org-stat .kv:nth-child(3) { min-width: 92px; }
.org-stat .kv b { font-size: 13.5px; font-weight: 700; color: var(--ink-1); }
.org-stat .kv i { font-style: normal; font-size: 11px; color: var(--ink-3); }
.org-stat .kv.amt b { color: var(--series); }
.org-stat .kv + .kv { padding-left: 12px; border-left: 1px solid var(--border); }
.org-body { display: none; border-top: 1px solid var(--border); overflow-x: auto; }
.org-group.open .org-body { display: block; }
.org-body table { font-size: 12.5px; }
.org-body .note { padding: 8px 12px; margin: 0; }

/* 市属集团成员树: 缩进(打在 td 的 padding 上, 长名换行后第二行也对齐) + 逐级展开 */
.t-caret { display: inline-block; width: 16px; border: 0; background: none;
  cursor: pointer; color: var(--series); font-size: 9px; padding: 0;
  transition: transform .15s; }
.t-caret.open { transform: rotate(90deg); }
.t-caret.t-leaf { cursor: default; }
.t-ghost { color: var(--ink-3); }
.t-n { margin-left: 7px; font-size: 11px; color: var(--ink-3); }

/* 市属集团展开后按层级分档: path 接口没就绪时的退路 */
.lvl-group + .lvl-group { border-top: 1px solid var(--border); }
.lvl-head { width: 100%; display: flex; align-items: center; gap: 9px;
  padding: 8px 12px; background: none; border: 0; cursor: pointer;
  text-align: left; font: inherit; font-size: 12.5px; color: var(--ink-1); }
.lvl-head:hover { background: var(--hover); }
.lvl-head .caret { flex: 0 0 12px; color: var(--series); font-size: 10px;
  transition: transform .15s; }
.lvl-group.open > .lvl-head .caret { transform: rotate(90deg); }
.lvl-head .n { color: var(--ink-3); font-variant-numeric: tabular-nums; }
.lvl-body { display: none; border-top: 1px solid var(--border); }
.lvl-group.open > .lvl-body { display: block; }
@media (max-width: 900px) {
  .org-head { flex-wrap: wrap; row-gap: 6px; }
  .org-stat { flex-basis: 100%; margin-left: 24px; }
}

/* 集团限定条: 从总览点集团名跳过来时显示, 带一个清除按钮 */
.filter-chip {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  margin: 10px 0 2px; padding: 8px 12px; font-size: 12.5px; color: var(--ink-2);
  background: var(--active); border: 1px solid var(--border); border-radius: 10px;
}
.filter-chip b { color: var(--ink-1); }

/* ───── 控件 ───── */
.ctrls { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.ctrls:has(.inp-search) { flex: 1 1 auto; margin-left: 16px; }
.inp-search { flex: 1 1 200px; min-width: 200px; }
.inp {
  font: inherit; font-size: 13px; padding: 6px 11px;
  border: 1px solid var(--border); border-radius: 9px;
  background: var(--page); color: var(--ink-1); min-width: 160px;
}
.inp::placeholder { color: var(--ink-3); }
.inp:focus { outline: 2px solid var(--series); outline-offset: -1px; }
.btn, .lnk {
  font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer;
  border: 1px solid var(--border); border-radius: 9px;
  padding: 6px 13px; background: var(--surface); color: var(--ink-2);
  white-space: nowrap;
}
.btn:hover { border-color: var(--series); color: var(--ink-1); }
.btn[disabled] { opacity: .45; cursor: default; }
.btn[disabled]:hover { border-color: var(--border); color: var(--ink-2); }
.btn.pri { background: var(--series-solid); border-color: var(--series-solid); color: var(--on-series); }
.lnk { border: 0; background: none; color: var(--series); padding: 4px 6px; }
.lnk:hover { text-decoration: underline; }

.pager {
  display: flex; gap: 10px; align-items: center;
  margin-top: 14px; color: var(--ink-2); font-size: 12.5px;
}
#p-awards { margin-top: 8px; }

.chk {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 13px; color: var(--ink-2); cursor: pointer;
  padding: 6px 4px; white-space: nowrap;
}

/* ───── 实体画像抽屉 ───── */
.drawer-bg { position: fixed; inset: 0; background: rgba(2, 8, 18, .55); z-index: 40; backdrop-filter: blur(2px); }
.drawer {
  position: fixed; top: 0; right: 0; bottom: 0; width: min(720px, 100vw);
  background: var(--surface); border-left: 1px solid var(--border);
  box-shadow: -18px 0 48px -24px rgba(0, 0, 0, .8);
  z-index: 41; display: flex; flex-direction: column;
}
.drawer-hd {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 12px; padding: 16px 20px 12px; border-bottom: 1px solid var(--border);
}
.drawer-hd h2 { margin: 0; font-size: 15.5px; font-weight: 700; line-height: 1.45; }
.drawer-bd { overflow-y: auto; padding: 16px 20px 40px; }
.x {
  appearance: none; border: 0; background: none; cursor: pointer;
  font-size: 24px; line-height: 1; color: var(--ink-2); padding: 0 4px;
}
.x:hover { color: var(--ink-1); }
.d-sec { margin-bottom: 22px; }
.d-sec h3 { font-size: 12.5px; margin: 0 0 8px; color: var(--ink-3); font-weight: 700; letter-spacing: .02em; }
.d-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(124px, 1fr)); gap: 10px; }
.d-kpis .kpi { padding: 11px 13px; background: var(--page); }
.d-kpis .v { font-size: 20px; }
.d-chart { height: 220px; }

.foot { color: var(--ink-3); font-size: 12px; padding: 4px 0 34px; line-height: 1.7; }
.foot a { color: var(--ink-2); }
.empty { color: var(--ink-3); padding: 22px 4px; font-size: 13px; }

/* 滚动条与主站同款细条 */
::-webkit-scrollbar { width: 7px; height: 7px; }
::-webkit-scrollbar-thumb { background: rgba(120, 170, 235, .25); border-radius: 4px; }

/* ───── 总览 · 累计成交金额卡: 左图右最新成交列表 ───── */
/* 卡片标题行: 只放板块三选一(seg); 选中集团时旁边标出集团名 */
.grp-title-row { display: inline-flex; align-items: center; gap: 10px; }
#grp-card-title:empty { display: none; }
/* 标题里的三选一压扁一档(只动这一处, 不影响招标人页的 seg) */
#grp-sector-seg { padding: 2px; }
#grp-sector-seg .seg-btn { padding: 3px 10px; }

.grp-split { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
  gap: 18px; align-items: stretch; }
.grp-split .chart { height: 360px; }
.awards-hd { font-size: 12.5px; font-weight: 700; color: var(--ink-2);
  margin-bottom: 6px; }
/* 列表跟图等高, 内部滚动。列高定死 360, 由滚动区吃剩余 */
.awards-list { display: flex; flex-direction: column; height: 360px; }
.awards-scroll { flex: 1 1 auto; min-height: 0; overflow-y: auto; }
/* 筛选标签聚合区(卡片顶部): 分类行贴着阶段行, 各带一个灰字前缀标识 */
#awards-cls { margin-bottom: 2px; }
/* 写成复合选择器压过后面的 .cls-tags 基础 margin(同特异性按出现顺序会输) */
.cls-tags.stage-tags { margin: 0 0 8px; }
.tags-lbl { flex: 0 0 auto; align-self: center; min-width: 30px;
  font-size: 11.5px; color: var(--ink-3); }
/* 六列固定排版: 时间/阶段/金额定宽, 甲方乙方按比例, 项目名称吃剩余;
   所有单元格 nowrap + 省略号, 面板多宽都不出横向滚动条(极窄时兜底
   min-width, 由外层 tbl-wrap 横滚) */
.awards-scroll table { font-size: 12px; table-layout: fixed; min-width: 540px; }
.awards-scroll th, .awards-scroll td { padding: 5px 6px; white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis; }
.awards-scroll th:nth-child(1) { width: 88px; }   /* 时间: 完整年月日不截断 */
.awards-scroll th:nth-child(2) { width: 66px; }   /* 阶段 */
.awards-scroll th:nth-child(3),
.awards-scroll th:nth-child(5) { width: 20%; }    /* 甲方 / 乙方 */
.awards-scroll th:nth-child(6) { width: 68px; }   /* 金额 */
.awards-scroll .tag { padding: 1px 6px; font-size: 11px; }
@media (max-width: 1100px) { .grp-split { grid-template-columns: 1fr; } }

/* 项目分类标签: 成交公示列表的筛选器 */
.cls-tags { display: flex; flex-wrap: wrap; gap: 4px 6px; margin: 4px 0 8px; }
.cls-tag { padding: 2px 10px; border-radius: 999px; font-size: 12px;
  border: 1px solid var(--border); background: transparent;
  color: var(--ink-2); cursor: pointer; }
.cls-tag:hover { background: var(--hover); color: var(--ink-1); }
.cls-tag.is-on { background: var(--series-solid); border-color: var(--series-solid);
  color: var(--on-series); font-weight: 600; }
/* 标签内的占比小字: 弱化成注释色, 选中态跟按钮文字同色但降不透明度 */
.cls-tag .pct { margin-left: 5px; font-size: 10px; color: var(--ink-3); }
.cls-tag.is-on .pct { color: var(--on-series); opacity: .75; font-weight: 400; }

/* 外链(跳源站原文): 与实体链接同色, 但悬停带下划线以示离站 */
a.ext { color: var(--series); text-decoration: none; }
a.ext:hover { text-decoration: underline; }

/* 墙上被选中筛选的集团 logo(三个板块通用) */
.logo-wall .wall-tile.is-sel { background: var(--active);
  outline: 2px solid var(--series); outline-offset: -2px; }

/* 成交公示列表头: 标题 + 搜索 + 排序 */
.awards-bar { display: flex; align-items: center; gap: 8px; }
.awards-bar span { flex: 0 0 auto; }
.awards-bar .inp-sm { font-size: 12px; padding: 3px 8px; min-width: 0; }
.awards-bar #q-awards { flex: 1 1 auto; }

/* ── 合作洽谈:页头按钮(与下方视图导航同一套:深底、细边、蓝色高亮)+ 右侧抽屉(二维码) ── */
.coop-btn { display: inline-flex; align-items: center; padding: 7px 17px; border-radius: 10px;
  border: 1px solid rgba(130,178,207,.26); cursor: pointer; color: #fff; font-size: 14px; font-weight: 600;
  white-space: nowrap; background: #2160d3; transition: background .15s, border-color .15s; }
.coop-btn:hover { background: #2a70ea; border-color: rgba(214,228,250,.6); }
/* 返回主站: 与合作洽谈同款, 链接到 szzf.online 主站 */
a.home-btn { text-decoration: none; }
a.home-btn:hover { color: #fff; }
.coop-btn:focus-visible { outline: 2px solid #7dd3fc; outline-offset: 2px; }
.coop-pop { position: fixed; z-index: 1001; width: 240px; padding: 12px; box-sizing: border-box;
  background: #fff; border-radius: 14px; box-shadow: 0 12px 36px rgba(0,0,0,.28), 0 0 0 1px rgba(0,0,0,.05);
  opacity: 0; transform: translateY(-6px); transition: opacity .18s ease, transform .18s ease; }
.coop-pop.is-open { opacity: 1; transform: translateY(0); }
.coop-pop::before { content: ""; position: absolute; top: -7px; left: var(--arrow-x, 50%); margin-left: -7px;
  width: 14px; height: 14px; background: #fff; transform: rotate(45deg); border-radius: 3px 0 0 0;
  box-shadow: -2px -2px 4px rgba(0,0,0,.06); }
.coop-qr { display: block; width: 100%; height: auto; border-radius: 8px; }
@media (max-width: 1280px) { .coop-btn { padding: 7px 12px; } }
@media (max-width: 1000px) { .coop-btn { font-size: 13px; padding: 6px 9px; } }
