:root {
  --kb-brand: #1f2d5a;
  --kb-brand-soft: #3d5a9e;
  --kb-action: #0891b2;
  --kb-action-strong: #0e7490;  /* REQ-112 B 复审：白底不透明承载上的文字链接需 ≥4.5:1（#0891b2 实测 4.10:1 不达标）*/
  --kb-bg: oklch(98.4% 0.019 200.873);  /* REQ-135 色系定版=cyan-50 定版值 */
  --kb-card: #FFFFFF;
  --kb-accent: #E11D48;
  --kb-success: #0e9f6e;
  --kb-success-soft: #34d399;
  --kb-surface-muted: #f4f6fa;
  --kb-text-muted: #64748b;
  --kb-link: var(--kb-action);
  --kb-font-page-title: 1.125rem;
  --kb-font-list-name: 15px;
  --kb-font-supporting: 12px;
  --kb-content-w: 72rem;
  --kb-action-soft: #ecfeff;
  --kb-supply: #047857;  /* REQ-135 demo 定稿语义对：供给=emerald（需求=cyan），REVIEW2 登记为例外 token */
  --kb-supply-soft: rgba(5,150,105,.08);
  --kb-supply-line: rgba(5,150,105,.4);
  --kb-mobile-nav-offset: 0px;
}

/* REQ-079 S4-a: retain the base template class while replacing the page canvas. */
body.bg-cyan-50 { background-color: var(--kb-bg); }  /* REQ-135：body class 随 tw 同步改名 */

/*
 * Card migration target for later page slices:
 * background: var(--kb-card); border: 0; border-radius: 1rem (rounded-2xl);
 * box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05) (shadow-xs).
 */
.kb-text-page-title { font-size: var(--kb-font-page-title); }
.kb-text-list-name { font-size: var(--kb-font-list-name); }
.kb-text-supporting { font-size: var(--kb-font-supporting); }

/* ---------- REQ-079 S4 desktop topbar ---------- */
/* 壳=纵向 flex：顶栏（桌面）+main 吃剩余高内滚；移动端顶栏 display:none 不占高，
   main flex-1 照旧满高内滚（flex-1 只在 flex 容器里生效，壳不能退成 block——
   否则移动端 main 高度=内容高被壳裁剪且不可滚，8068 实测 mainH3081/壳844 抓包）。 */
.kb-shell { display: flex; flex-direction: column; }
.kb-shell > .kb-main { min-height: 0; }
/* REQ-112 J9 单 h1 双端语义（复审修：sr-only+可见双 h1 会让读屏重复播报）：
   移动端视觉隐藏但读屏可达；桌面恢复可见标题。替代 tailwind not-sr-only（未编译，免重建）。 */
.kb-page-h1 { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
@media (min-width: 768px) {
  .kb-page-h1 { position: static; width: auto; height: auto; margin: 0; overflow: visible; clip: auto; white-space: normal; font-size: 1.25rem; line-height: 1.75rem; font-weight: 600; color: #0f172a; }
}
.kb-topbar { display: none; height: 3.5rem; flex: none; background: color-mix(in srgb, var(--kb-card) 95%, transparent); border-bottom: 1px solid color-mix(in srgb, var(--kb-brand) 12%, transparent); position: sticky; top: 0; z-index: 30; backdrop-filter: blur(.5rem); }
.kb-topbar-inner { width: min(100% - 2.5rem, var(--kb-content-w)); height: 100%; margin: 0 auto; display: flex; align-items: center; gap: .25rem; min-width: 0; }
.kb-topbar-menu-trigger { display: inline-flex; align-items: center; flex: none; }
.kb-topbar-logo { display: inline-flex; align-items: center; gap: .4rem; margin-right: .75rem; color: var(--kb-brand); font-size: 1rem; font-weight: 700; white-space: nowrap; }
.kb-topbar-logo img { width: 1.25rem; height: 1.25rem; }
.kb-topbar-details > summary { list-style: none; cursor: pointer; }
.kb-topbar-details > summary::-webkit-details-marker { display: none; }
.kb-topbar-nav { min-height: 2.5rem; padding: .5rem .8rem; border-radius: .5rem; color: color-mix(in srgb, var(--kb-brand) 72%, var(--kb-card)); position: relative; display: inline-flex; align-items: center; font-size: .875rem; white-space: nowrap; }
.kb-topbar-nav:hover { background: color-mix(in srgb, var(--kb-brand) 7%, var(--kb-card)); }
.kb-topbar-nav.is-active { color: var(--kb-brand); font-weight: 700; }
.kb-topbar-nav.is-active::after { content: ""; position: absolute; left: .8rem; right: .8rem; bottom: 0; height: .16rem; border-radius: .15rem; background: var(--kb-brand); }
.kb-topbar-nav--toggle { padding-inline: .45rem; }
.kb-topbar-bell { width: 2.5rem; height: 2.5rem; margin-left: .25rem; display: inline-flex; align-items: center; justify-content: center; color: color-mix(in srgb, var(--kb-brand) 70%, var(--kb-card)); position: relative; flex: none; }
.kb-topbar-bell svg { width: 1.2rem; height: 1.2rem; }
.kb-topbar-unread { position: absolute; top: .1rem; right: 0; min-width: 1rem; height: 1rem; padding: 0 .2rem; border-radius: 9999px; background: var(--kb-accent); color: var(--kb-card); display: flex; align-items: center; justify-content: center; font-size: .625rem; line-height: 1; }
.kb-topbar-account { position: relative; margin-left: .25rem; }
.kb-topbar-account > summary { display: flex; align-items: center; gap: .45rem; color: color-mix(in srgb, var(--kb-brand) 72%, var(--kb-card)); font-size: .875rem; white-space: nowrap; }
.kb-topbar-avatar { width: 2rem; height: 2rem; border-radius: 9999px; background: var(--kb-brand); color: var(--kb-card); display: inline-flex; align-items: center; justify-content: center; font-size: .75rem; font-weight: 700; }
.kb-topbar-account-menu { position: absolute; right: 0; top: calc(100% + .65rem); width: 12rem; padding: .5rem; background: var(--kb-card); border: 1px solid color-mix(in srgb, var(--kb-brand) 12%, transparent); border-radius: .5rem; box-shadow: 0 .75rem 2rem color-mix(in srgb, var(--kb-brand) 16%, transparent); z-index: 50; }
.kb-topbar-rankmenu { position: relative; }
.kb-topbar-navmenu { position: absolute; left: 0; top: calc(100% + .65rem); min-width: 8rem; padding: .5rem; background: var(--kb-card); border: 1px solid color-mix(in srgb, var(--kb-brand) 12%, transparent); border-radius: .5rem; box-shadow: 0 .75rem 2rem color-mix(in srgb, var(--kb-brand) 16%, transparent); z-index: 50; }
.kb-topbar-menu-row.is-active { color: var(--kb-brand); font-weight: 700; }
.kb-topbar-menu-row { min-height: 2.5rem; padding: .45rem .7rem; border-radius: .5rem; color: color-mix(in srgb, var(--kb-brand) 72%, var(--kb-card)); display: flex; align-items: center; justify-content: space-between; font-size: .82rem; }
.kb-topbar-menu-row:hover { color: var(--kb-brand); background: color-mix(in srgb, var(--kb-brand) 7%, var(--kb-card)); }
.kb-topbar-menu-row small { color: var(--kb-accent); }
.kb-topbar-menu-row--muted { color: color-mix(in srgb, var(--kb-brand) 45%, var(--kb-card)); }
.kb-topbar-menu-separator { height: 1px; margin: .35rem 0; background: color-mix(in srgb, var(--kb-brand) 9%, transparent); }
@media (min-width: 768px) {
  .kb-topbar { display: block; }
}

@media (min-width: 768px) and (max-width: 900px) {
  .kb-topbar-inner { width: calc(100% - 1.5rem); gap: 0; }
  .kb-topbar-logo { margin-right: .25rem; font-size: .875rem; gap: .25rem; }
  .kb-topbar-nav { padding-inline: .3rem; font-size: .8rem; }
}

/* ---------- REQ-079 S4-a2 内容区宽度与顶部渐变带（卡拉 08-25 拍板 B 方案） ---------- */
/* 移动端底色降饱和（卡拉 08-25：白卡与青瓷蓝底在小屏上对比割裂）：#DFEFF3→#EDF5F7，
   桌面维持定稿色。body.bg-cyan-50 引用 var(--kb-bg) 自动跟随。 */
@media (max-width: 767.98px) {
  :root { --kb-bg: #F2F8FA; }
}
/* 桌面主容器：顶部藏蓝→青瓷蓝渐变带（与 App banner 同色衔接），随 main 内滚滚走，
   消解整页平铺的「医院蓝」；渐变止于 310px，下方维持 --kb-bg。 */
@media (min-width: 768px) {
  .kb-main { background: linear-gradient(to bottom, #b9e7ef 0, #dcf3f7 120px, var(--kb-bg) 280px) no-repeat, var(--kb-bg); }  /* REQ-135：原深蓝光晕改浅青，与 cyan-50 底同族 */
}
/* 列表本体与顶栏同一条左边线（08-25 卡拉：顶栏/横滚条/标题/列表四线不齐显碎）。 */
.kb-content-col { width: min(100% - 2.5rem, var(--kb-content-w)); margin-inline: auto; }
/* 列表吸顶标题条：保持全宽背景带（吸顶防透出），内容经 padding 对齐内容列左缘。 */
@media (min-width: 768px) {
  /* 列表区散件（筛选行/公司条/栏目 chips/列表总容器）：贴边原子类 → 对齐内容列左缘；
     内层再带 px 的子容器用 kb-flush-md 清掉桌面 padding（移动端照旧双 padding 不动）。 */
  .kb-content-pad { padding-inline: max(1.25rem, calc((100% - var(--kb-content-w)) / 2)); }
  .kb-flush-md { padding-inline: 0; }
  /* 瀑布流容器原 max-w 87.5rem 宽出内容列（卡拉 08-25：卡区比横滚条还靠左），收进同一列宽 */
  .kb-style-feed-d { max-width: var(--kb-content-w); }
}

/* ---------- 文章正文 ---------- */
.prose-kb { line-height: var(--kb-lh, 1.85); color: #334155; word-break: break-word; font-size: 16px; }
.prose-kb p { margin: 0.85em 0; }
.prose-kb img { max-width: 100%; height: auto; border-radius: 8px; margin: 0.85em auto; display: block; }
.prose-kb h1, .prose-kb h2, .prose-kb h3, .prose-kb h4 { font-weight: 600; margin: 1.1em 0 0.4em; color: #0f172a; }
.prose-kb blockquote { border-left: 3px solid #cbd5e1; padding-left: 1em; color: #64748b; margin: 0.85em 0; }
.prose-kb ul, .prose-kb ol { margin: 0.6em 0; padding-left: 1.4em; }
.prose-kb ul li { list-style: disc; margin: 0.3em 0; }
.prose-kb ol li { list-style: decimal; margin: 0.3em 0; }
.prose-kb a { color: #0891b2; text-decoration: underline; }
.prose-kb code { background: #f1f5f9; padding: 0.1em 0.3em; border-radius: 4px; font-size: 0.9em; }
.prose-kb table { border-collapse: collapse; margin: 0.85em 0; }
.prose-kb td, .prose-kb th { border: 1px solid #e2e8f0; padding: 0.4em 0.7em; }

/* ---------- 侧栏导航 ---------- */
.navrow { display: flex; align-items: center; justify-content: space-between; gap: .5rem; width: 100%; border-radius: .5rem; padding: .375rem .625rem; color: #334155; }
.navrow:hover { background: #f1f5f9; }
.navon { background: #0f172a; color: #fff; }
.navon:hover { background: #0f172a; }
.navon .navcnt { color: #cbd5e1; }
.navcnt { font-size: .7rem; color: #475569; flex-shrink: 0; }
.tagchip { display: inline-block; font-size: .75rem; border-radius: 9999px; padding: .2rem .6rem; background: #f1f5f9; color: #475569; }
.tagchip:hover { background: #e2e8f0; }
.tagon { background: #4f46e5; color: #fff; }
.tagon:hover { background: #4f46e5; }

/* REQ-072 运营数据·使用页窗口切换器吸顶：滚动发生在 <main overflow-y-auto> 内层，桌面无顶栏贴顶即可；不透明底防内容透出。移动端在下方媒体查询覆盖 top 贴吸顶标题栏下沿。 */
.kb-stats-sticky { position: sticky; top: 0; z-index: 5; background: var(--kb-bg); }
.kb-stats-sticky-flush { margin-bottom: -1rem; }  /* 抵消 space-y 给后续同级加的 1rem 顶距：吸顶条自带不透明 pb-4 充当间距，防间距翻倍 */

/* ---------- 列表三视图（桌面）---------- */
/* 双列按 DOM 顺序逐行排布，确保阅读顺序与服务端排序一致。 */
#kb-list.kb-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: .75rem; max-width: 72rem; margin: 0 auto; align-items: start; }
@media (min-width: 1280px) { #kb-list.kb-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* REQ-046 精选「全部」视图：分组 section 永远通栏单列（不受双列视图把两组挤成左右列），组内卡片版式仍随视图切换。 */
#kb-list.kb-grid > .kb-card { min-width: 0; }
#kb-list.kb-single { display: flex; flex-direction: column; gap: .75rem; max-width: 48rem; margin: 0 auto; }
#kb-list.kb-compact { display: flex; flex-direction: column; max-width: 56rem; margin: 0 auto; background: #fff; border: 1px solid #e2e8f0; border-radius: .75rem; overflow: hidden; }
#kb-list.kb-compact .kb-card { border: 0; border-bottom: 1px solid #f1f5f9; border-radius: 0; padding: .55rem .9rem; box-shadow: none; }
#kb-list.kb-compact .kb-card:hover { background: var(--kb-bg); }
#kb-list.kb-compact .card-summary { display: none; }
#kb-list.kb-compact .kb-title { margin-bottom: .25rem; }

/* ---------- 移动端：永远单列卡片 + 摘要 ---------- */
@media (max-width: 767px) {
  :root { --kb-mobile-nav-offset: calc(3.75rem + env(safe-area-inset-bottom, 0px)); }
  #kb-list, #kb-list.kb-grid, #kb-list.kb-single, #kb-list.kb-compact {
    display: flex !important; flex-direction: column !important; gap: .75rem !important;
    max-width: none !important; background: none !important; border: 0 !important;
  }
  #kb-list .kb-card { border: 1px solid #e2e8f0 !important; border-radius: .75rem !important; padding: 1rem !important; margin-bottom: 0 !important; }
  #kb-list .card-summary { display: block !important; }
}

/* ---------- 一键展开/收起“全部”摘要正文（桌面 + 移动通用）----------
   默认收起：.kb-body(几百字正文)由内联 display:none 藏着；标题 / 黄底一句话(.kb-lead) / 标签 始终可见。
   body.kb-bodyopen：全部展开正文(!important 压过内联)，并隐藏单卡“展开摘要”按钮(.kb-tg)。*/
body.kb-bodyopen #kb-list .kb-body, body.kb-bodyopen #discoverCards .kb-body { display: block !important; }
body.kb-bodyopen #kb-list .kb-tg, body.kb-bodyopen #discoverCards .kb-tg { display: none !important; }

/* ---------- Ranking controls ---------- */
.kb-rank-switches { display: flex; flex-wrap: wrap; gap: .5rem; }
.kb-rank-switch { min-height: 2.25rem; display: inline-flex; align-items: center; justify-content: center; padding: .375rem .875rem; border: 1px solid #dbe3ec; border-radius: .5rem; background: #fff; color: #475569; font-size: .8125rem; line-height: 1; font-weight: 600; }
.kb-rank-switch:hover { background: var(--kb-bg); border-color: #cbd5e1; }
.kb-rank-switch.is-active { border-color: var(--kb-brand); background: var(--kb-brand); color: #fff; }

/* REQ-049：「其他」展示层 details/summary 展开 + 新进说明问号/气泡 */
.kb-rank-other { position: relative; display: inline-flex; }
.kb-rank-other summary.kb-rank-other-btn { list-style: none; cursor: pointer; font-family: inherit; }
.kb-rank-other summary.kb-rank-other-btn::-webkit-details-marker { display: none; }
.kb-rank-caret { font-size: .625rem; opacity: .7; margin-left: .25rem; }
.kb-rank-other-dd { display: none; position: absolute; top: calc(100% + .25rem); left: 0; z-index: 40; min-width: 7.5rem; background: #fff; border: 1px solid #e2e8f0; border-radius: .625rem; box-shadow: 0 .5rem 1.5rem rgba(15,23,42,.14); padding: .375rem; flex-direction: column; }
.kb-rank-other[open] .kb-rank-other-dd { display: flex; }
.kb-rank-other-i { display: flex; align-items: center; justify-content: space-between; padding: .5625rem .75rem; font-size: .8125rem; font-weight: 600; color: #475569; border-radius: .375rem; white-space: nowrap; text-decoration: none; }
.kb-rank-other-i:hover { background: var(--kb-bg); }
.kb-rank-other-i.is-sel { color: var(--kb-brand); }
.kb-rank-ck { font-size: .75rem; margin-left: .75rem; }
.kb-nk-help { display: inline-flex; align-items: center; justify-content: center; width: 1rem; height: 1rem; margin-left: .1875rem; padding: 0; border: 1px solid #e2e8f0; border-radius: 50%; background: #fff; color: #475569; font-size: .625rem; font-weight: 700; line-height: 1; cursor: pointer; vertical-align: 1px; }
.kb-nk-help:hover { border-color: #94a3b8; color: #475569; }
.kb-nk-tip { position: fixed; z-index: 60; width: 18.75rem; max-width: calc(100vw - 1rem); background: #fff; border: 1px solid #e2e8f0; border-radius: .625rem; box-shadow: 0 .5rem 1.5rem rgba(15,23,42,.14); padding: .75rem .875rem; font-size: .75rem; color: #475569; line-height: 1.8; }
.kb-nk-tip-t { font-weight: 700; color: #0f172a; font-size: .8125rem; margin-bottom: .25rem; }
.kb-rank-regions { padding-top: .125rem; }

/* REQ-049 收口：手机宽度收紧间距，争取筛选条一排放下（老板：两排变一排） */
@media (max-width: 30rem) {
  .kb-rank-switches { gap: .25rem; }
  .kb-rank-switch { padding: .375rem .5rem; }
}

/* ---------- Mobile application shell ---------- */
.kb-mobile-nav { display: none; }
.kb-mobile-back { width: 2.25rem; height: 2.25rem; margin-left: -.5rem; display: flex; align-items: center; justify-content: center; color: #475569; }
.kb-mobile-back svg { width: 1.5rem; height: 1.5rem; }
.kb-mobile-action { position: relative; width: 2.25rem; height: 2.25rem; display: flex; align-items: center; justify-content: center; color: #475569; }
.kb-mobile-action svg, .kb-icon-button svg { width: 1.35rem; height: 1.35rem; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.kb-mobile-action.is-active { color: var(--kb-action); }
.kb-action-dot { position: absolute; right: .2rem; top: .2rem; width: .42rem; height: .42rem; border-radius: 50%; background: #dc2626; border: 1px solid #fff; }
.kb-list-tool { width: 2.25rem; height: 2.25rem; display: flex; align-items: center; justify-content: center; flex: none; border: 1px solid #cbd5e1; border-radius: .5rem; background: #fff; color: #475569; }
.kb-list-tool svg { width: 1.15rem; height: 1.15rem; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.kb-mobile-drawer { display: none; }
.kb-me-page { width: min(100%, 48rem); margin: 0 auto; padding: 1.5rem; }
/* 原型头部为 #1F2D5A → #3D5A9E；运行时只使用全站 --kb-brand token。 */
.kb-me-profile-card, .kb-me-grid, .kb-me-admin-card, .kb-me-style-card, .kb-me-feature { background: var(--kb-card); border-radius: 1rem; box-shadow: 0 1px 3px rgb(15 23 42 / .06); }
.kb-me-profile-card { overflow: hidden; background: linear-gradient(135deg, var(--kb-brand), var(--kb-brand-soft)); color: #fff; }
.kb-me-profile { display: flex; align-items: center; gap: .75rem; padding: 1rem; }
.kb-me-avatar { width: 3rem; height: 3rem; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex: none; background: rgb(255 255 255 / .2); color: #fff; font-size: 1.125rem; font-weight: 600; }
.kb-me-profile h1 { color: #fff; font-size: 1rem; line-height: 1.45; font-weight: 700; }
.kb-me-profile p { margin-top: .1rem; color: rgb(255 255 255 / .65); font-size: .6875rem; line-height: 1.45; }
.kb-me-profile-arrow { margin-left: auto; color: rgb(255 255 255 / .55); font-size: 1.4rem; line-height: 1; }
.kb-me-admin-mark { display: inline-block; padding: .1rem .35rem; border-radius: .25rem; background: #fef3c7; color: #92600a; font-size: .625rem; font-weight: 600; vertical-align: middle; }
.kb-me-membership { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin: 0 .75rem .75rem; padding: .65rem .75rem; border-radius: .75rem; background: rgb(255 255 255 / .1); color: rgb(255 255 255 / .9); font-size: .75rem; }
.kb-me-membership b { color: #fde68a; }
.kb-me-membership span:last-child { flex: none; color: rgb(255 255 255 / .7); font-size: .6875rem; }
.kb-me-auth-actions { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; padding: 0 1rem 1rem; }
.kb-me-auth-actions a { min-height: 2.75rem; display: flex; align-items: center; justify-content: center; border: 1px solid #cbd5e1; border-radius: .5rem; background: var(--kb-card); color: #334155; font-weight: 500; }
.kb-me-auth-actions a:first-child { border-color: var(--kb-brand); background: var(--kb-brand); color: #fff; }
.kb-me-auth-actions a:hover { border-color: var(--kb-brand); }
.kb-me-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: .75rem; overflow: hidden; }
.kb-me-grid-cell { position: relative; display: flex; min-height: 4.5rem; flex-direction: column; align-items: center; justify-content: center; gap: .3rem; color: #334155; font-size: .75rem; }
.kb-me-grid-cell + .kb-me-grid-cell { border-left: 1px solid rgb(0 0 0 / .05); }
.kb-me-grid-cell svg { width: 1.375rem; height: 1.375rem; color: var(--kb-brand); }
.kb-me-badge, .kb-me-tail-badge { color: var(--kb-accent); font-size: .625rem; font-variant-numeric: tabular-nums; }
.kb-me-badge { position: absolute; top: .65rem; right: 25%; min-width: .875rem; height: .875rem; padding: 0 .2rem; border-radius: 9999px; background: var(--kb-accent); color: #fff; display: flex; align-items: center; justify-content: center; }
.kb-me-admin-card { margin-top: .75rem; padding: .75rem; }
.kb-me-section-head { display: flex; align-items: center; justify-content: space-between; padding: 0 .35rem .4rem; }
.kb-me-section-head h2 { color: var(--kb-brand); font-size: .75rem; font-weight: 700; }
.kb-me-section-head span { color: #cbd5e1; font-size: .625rem; }
.kb-me-admin-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.kb-me-admincell { display: flex; min-height: 4rem; flex-direction: column; align-items: center; justify-content: center; gap: .25rem; border-radius: .625rem; color: #475569; font-size: .6875rem; text-align: center; }
.kb-me-admincell:hover { background: var(--kb-surface-muted); }
.kb-me-admincell svg { width: 1.125rem; height: 1.125rem; color: #64748b; }
/* /me 顶部突出功能卡(AI 问答/加入微信群,07-27 原型定稿:品牌蓝+绿双色调) */
.kb-me-features { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .625rem; padding-top: .75rem; }
.kb-me-feature { display: flex; min-height: 8rem; flex-direction: column; align-items: flex-start; gap: .15rem; padding: .875rem; border: 0; color: #fff; text-align: left; cursor: pointer; }
button.kb-me-feature { width: 100%; font: inherit; }
.kb-me-feature-icon { width: 2.5rem; height: 2.5rem; margin-bottom: .35rem; border-radius: .75rem; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, var(--kb-brand), var(--kb-brand-soft)); }
.kb-me-feature-icon svg { width: 1.25rem; height: 1.25rem; color: #fff; }
.kb-me-feature strong { color: var(--kb-brand); font-size: .875rem; font-weight: 700; }
.kb-me-feature span:not(.kb-me-feature-icon) { color: #94a3b8; font-size: .6875rem; line-height: 1.35; }
.kb-me-feature-chat { color: #fff; }
/* Legacy solid fallback remains for browsers without gradient support; the token gradient follows. */
.kb-me-feature-group { background: #0f766e; }
.kb-me-feature-group { background-image: linear-gradient(135deg, var(--kb-success), var(--kb-success-soft)); }
.kb-me-feature-group .kb-me-feature-icon { background: linear-gradient(135deg, var(--kb-success), var(--kb-success-soft)); }
.kb-me-feature:hover { filter: brightness(1.04); }
.kb-me-style-card { margin-top: .75rem; overflow: hidden; }
.kb-me-style-card > summary { list-style: none; cursor: pointer; }
.kb-me-style-card > summary::-webkit-details-marker { display: none; }
.kb-me-style-summary { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .8rem 1rem; background: var(--kb-surface-muted); color: #475569; font-size: .8125rem; font-weight: 600; }
.kb-me-style-summary span:last-child { color: #94a3b8; font-size: .6875rem; font-weight: 400; text-align: right; }
.kb-me-arw { display: inline-block; transition: transform .15s; }
.kb-me-style-card[open] .kb-me-arw { transform: rotate(90deg); }
.kb-me-style-body { padding: .75rem 1rem 1rem; }
.kb-me-reading-settings { margin-top: 1rem; padding-top: .75rem; border-top: 1px solid #f1f5f9; }
.kb-me-reading-label { display: flex; align-items: center; justify-content: space-between; margin-bottom: .25rem; color: #94a3b8; font-size: .6875rem; }
.kb-me-reading-settings input[type="range"] { width: 100%; accent-color: #334155; cursor: pointer; }
.kb-me-lh-buttons { display: flex; gap: .25rem; }
.kb-me-lh-buttons button { flex: 1; padding: .125rem .25rem; border-radius: .25rem; background: #f1f5f9; color: #64748b; font-size: .6875rem; }
.kb-me-tail { margin: 1rem .25rem .5rem; }
.kb-me-tail h2 { margin-bottom: .15rem; color: #94a3b8; font-size: .6875rem; font-weight: 600; letter-spacing: .08em; }
.kb-me-tailrow { display: flex; align-items: center; justify-content: space-between; min-height: 2.25rem; padding: .35rem .25rem; border-top: 1px solid rgb(0 0 0 / .04); color: #64748b; font-size: .8125rem; text-align: left; }
button.kb-me-tailrow { width: 100%; font: inherit; cursor: pointer; }
.kb-me-tailrow span:last-child { color: #94a3b8; font-size: 1.1rem; }
.kb-me-tailrow-danger { color: #94a3b8; }
/* App 下载提醒横幅(07-27):桌面/移动同一条,可关闭并记忆;隐藏态类在 html 上避免闪动 */
.kb-app-banner { display: flex; align-items: center; gap: .75rem; padding: .5rem 1rem; background: var(--kb-brand); color: #fff; font-size: .8125rem; }
.kb-app-banner-text { flex: 1; min-width: 0; }
.kb-app-banner-text a { color: #ffd9a8; font-weight: 600; text-decoration: underline; }
.kb-app-banner-x { flex: none; border: 0; background: transparent; color: rgba(255,255,255,.75); font-size: 1.1rem; line-height: 1; padding: .25rem .4rem; cursor: pointer; }
.kb-app-banner-x:hover { color: #fff; }
.kb-app-banner-off .kb-app-banner { display: none; }
/* S4-a2（卡拉 08-25）：桌面横幅内容对齐内容列左缘；必须写在原规则之后（同特异性后者胜） */
@media (min-width: 768px) {
  .kb-app-banner, .kb-phone-banner { padding-inline: max(1.25rem, calc((100% - var(--kb-content-w)) / 2)); }
}
/* REQ-036 D-11：未验证手机用户的轻横幅（可关闭，琥珀色与 App 下载横幅区分） */
.kb-phone-banner { display: flex; align-items: center; gap: .75rem; padding: .5rem 1rem; background: #fff8e6; color: #92600a; font-size: .8125rem; border-bottom: 1px solid #f0e2b6; }
.kb-phone-banner-text { flex: 1; min-width: 0; }
.kb-phone-banner-text a { color: #1f2d5a; font-weight: 600; text-decoration: underline; }
.kb-phone-banner-x { flex: none; border: 0; background: transparent; color: #b98d3e; font-size: 1.1rem; line-height: 1; padding: .25rem .4rem; cursor: pointer; }
.kb-phone-banner-x:hover { color: #92600a; }
.kb-phone-banner-off .kb-phone-banner { display: none; }
/* 全端公告横幅(07-28,data/app_notice.json 驱动):与 App 下载横幅同族视觉,品牌深蓝底;
   两条可同时出(公告在下载横幅之下)。关闭记忆在 _notice_banner.html 内联脚本。 */
.kb-notice-banner { display: flex; align-items: center; gap: .75rem; padding: .5rem 1rem; background: var(--kb-brand); color: #fff; font-size: .8125rem; border-top: 1px solid rgba(255,255,255,.18); }
.kb-notice-banner-text { flex: 1; min-width: 0; }
.kb-notice-banner-text a { color: #ffd9a8; font-weight: 600; text-decoration: underline; }
.kb-notice-banner-x { flex: none; border: 0; background: transparent; color: rgba(255,255,255,.75); font-size: 1.1rem; line-height: 1; padding: .25rem .4rem; cursor: pointer; }
.kb-notice-banner-x:hover { color: #fff; }
.kb-notice-body p, .kb-notice-body ul { margin: 0 0 .75rem; }
.kb-notice-body p:last-child, .kb-notice-body ul:last-child { margin-bottom: 0; }
.kb-notice-body ul { padding-left: 1.25rem; list-style: disc; }
.kb-notice-body li + li { margin-top: .25rem; }
.kb-notice-body a { color: #0891b2; text-decoration: underline; }
.kb-notice-body img { display: block; max-width: 100%; height: auto; margin: .75rem 0; }
.kb-me-logout { width: 100%; min-height: 3rem; margin-top: 2rem; display: flex; align-items: center; justify-content: center; border: 1px solid #fecaca; border-radius: .5rem; background: #fff; color: #b91c1c; font-weight: 500; }
.kb-comments-tabs { display: grid; grid-template-columns: repeat(2, 1fr); border-bottom: 1px solid #e2e8f0; }
.kb-comments-tabs button { height: 2.75rem; border-bottom: 2px solid transparent; color: #64748b; font-size: .875rem; }
.kb-comments-tabs button.is-active { border-color: var(--kb-brand); color: #0f172a; font-weight: 600; }
.kb-comment-row { padding: 1rem 0; border-bottom: 1px solid #e2e8f0; }
.kb-comment-meta { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: .45rem; font-size: .75rem; color: #475569; }
.kb-comment-meta a { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #0e7490; }
.kb-comment-row > p { color: #334155; line-height: 1.65; word-break: break-word; }
.kb-comment-row blockquote { margin-top: .55rem; padding: .5rem .65rem; border-left: 2px solid #cbd5e1; background: var(--kb-bg); color: #64748b; font-size: .8125rem; }
.kb-comment-row > small { display: inline-block; margin-top: .5rem; color: #a16207; }
.kb-empty-state { padding: 4rem 1rem; text-align: center; color: #94a3b8; }
.kb-comments-more { display: block; margin: 1.25rem auto 0; padding: .55rem 1rem; border: 1px solid #cbd5e1; border-radius: .5rem; background: #fff; color: #475569; font-size: .875rem; }
.kb-comments-more.hidden { display: none; }

.kb-chat-page { min-height: 100%; display: flex; flex-direction: column; }
.kb-chat-page-surface { flex: 1; min-height: 0; display: flex; flex-direction: column; background: var(--kb-bg); }

@media (max-width: 767px) {
  body.kb-has-mobile-nav .kb-main { padding-bottom: calc(3.75rem + env(safe-area-inset-bottom, 0px)); }
  .kb-mobile-nav {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 15;
    display: grid; grid-template-columns: repeat(var(--kb-mobile-tab-count), minmax(0, 1fr));
    min-height: calc(3.5rem + env(safe-area-inset-bottom, 0px));
    padding: .125rem .5rem env(safe-area-inset-bottom, 0px);
    border-top: 1px solid #e2e8f0; background: rgba(255,255,255,.98);
    box-shadow: 0 -4px 14px rgba(15,23,42,.06);
  }
  .kb-mobile-tab {
    position: relative; min-width: 0; height: 3.5rem; display: flex; flex-direction: column;
    align-items: center; justify-content: center; gap: .2rem; color: #7c8798;
    font-size: 11px; line-height: 1; font-weight: 500;
  }
  .kb-mobile-tab svg { width: 1.35rem; height: 1.35rem; flex: none; }
  .kb-mobile-tab.is-active { color: var(--kb-brand); font-weight: 600; }
  .kb-mobile-tab.is-active::before {
    content: ""; position: absolute; top: 0; width: 1.5rem; height: 2px;
    border-radius: 999px; background: var(--kb-brand);
  }
  .kb-mobile-tab:active { background: var(--kb-bg); }
  #kbChatFab { display: none !important; }
  body.kb-has-mobile-nav #kbChatPanel { bottom: var(--kb-mobile-nav-offset); }
  body.kb-drawer-open { overflow: hidden; }
  .kb-mobile-root-tools { padding: .75rem 1rem 0; background: #fff; }
  .kb-mobile-search { height: 2.75rem; display: flex; align-items: center; gap: .6rem; padding: 0 .8rem; border: 1px solid #dbe3ec; border-radius: .5rem; background: var(--kb-bg); }
  .kb-mobile-search svg { width: 1.1rem; height: 1.1rem; flex: none; fill: none; stroke: #64748b; stroke-width: 2; stroke-linecap: round; }
  .kb-mobile-search input { width: 100%; min-width: 0; border: 0; outline: 0; background: transparent; color: #0f172a; font-size: 1rem; }
  .kb-mobile-segments { height: 2.85rem; display: flex; align-items: stretch; border-bottom: 1px solid #e2e8f0; background: #fff; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; } .kb-mobile-segments::-webkit-scrollbar { display: none; } .kb-mobile-segments > a { flex: 0 0 auto; min-width: 0; padding: 0 .9rem; white-space: nowrap; }  /* D-15：槽位多了不挤不换行，横向滑动（卡拉 08-18） */
  .kb-mobile-segments a { position: relative; display: flex; align-items: center; justify-content: center; color: #64748b; font-size: .875rem; }
  .kb-mobile-segments a.is-active { color: #0f172a; font-weight: 600; }
  .kb-mobile-segments a.is-active::after { content: ""; position: absolute; left: 25%; right: 25%; bottom: -1px; height: 2px; background: var(--kb-brand); }
  .kb-own-mobile-segments { position: sticky; top: 3.5rem; z-index: 4; }
  /* REQ-031 移动端控制区全吸附：贴已吸顶标题栏(h-14=3.5rem)下方；不透明底防列表透出。仅本媒体查询生效，桌面端零影响。 */
  .kb-mobile-sticky-wrap { position: sticky; top: 3.5rem; z-index: 5; background: var(--kb-bg); }
  .kb-stats-sticky { top: 3.5rem; }
  .kb-mobile-sticky-bleed { margin-left: -1rem; margin-right: -1rem; padding-left: 1rem; padding-right: 1rem; }
  .kb-mobile-drawer:not(.hidden) { position: fixed; inset: 0; z-index: 50; display: block; }
  .kb-mobile-drawer-backdrop { position: absolute; inset: 0; width: 100%; height: 100%; background: rgba(15,23,42,.46); }
  .kb-article-drawer, .kb-rank-drawer { position: absolute; top: 0; right: 0; bottom: 0; width: min(88vw, 24rem); display: flex; flex-direction: column; background: #fff; box-shadow: -8px 0 24px rgba(15,23,42,.16); }
  .kb-mobile-drawer-header { height: 3.5rem; padding: 0 .75rem 0 1rem; display: flex; align-items: center; justify-content: space-between; flex: none; border-bottom: 1px solid #e2e8f0; }
  .kb-mobile-drawer-header h2 { color: #0f172a; font-size: 1rem; font-weight: 600; }
  .kb-icon-button { width: 2.5rem; height: 2.5rem; display: flex; align-items: center; justify-content: center; color: #64748b; }
  .kb-mobile-drawer-body { flex: 1; min-height: 0; overflow-y: auto; padding: 1rem; overscroll-behavior: contain; }
  .kb-filter-section + .kb-filter-section { margin-top: 1.5rem; }
  .kb-filter-section > summary { min-height: 2.75rem; display: flex; align-items: center; justify-content: space-between; list-style: none; border-bottom: 1px solid #e2e8f0; color: #334155; font-size: .875rem; font-weight: 600; cursor: pointer; }
  .kb-filter-section > summary::-webkit-details-marker { display: none; }
  .kb-filter-section > summary::after { content: "›"; color: #94a3b8; font-size: 1.25rem; line-height: 1; transform: rotate(0deg); transition: transform .15s ease; }
  .kb-filter-section[open] > summary::after { transform: rotate(90deg); }
  .kb-filter-section-body { padding-top: .75rem; }
  .kb-filter-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; }
  .kb-filter-grid a, .kb-filter-chip-list a { min-width: 0; padding: .55rem .65rem; border: 1px solid #e2e8f0; border-radius: .375rem; color: #475569; font-size: .8125rem; line-height: 1.25; background: #fff; }
  .kb-filter-grid a { display: flex; align-items: center; justify-content: space-between; gap: .35rem; }
  .kb-filter-grid a.is-active, .kb-filter-chip-list a.is-active { border-color: var(--kb-action); background: var(--kb-action-soft); color: #0e7490; }
  .kb-filter-section details { border-top: 1px solid #edf2f7; }
  .kb-filter-section details summary { min-height: 2.75rem; display: flex; align-items: center; justify-content: space-between; list-style: none; color: #334155; font-size: .875rem; cursor: pointer; }
  .kb-filter-section details summary::-webkit-details-marker { display: none; }
  .kb-filter-section details summary span:last-child, .kb-filter-grid a span, .kb-filter-chip-list a span { color: #94a3b8; font-size: .7rem; }
  .kb-filter-chip-list { display: flex; flex-wrap: wrap; gap: .45rem; padding-bottom: .75rem; }
  .kb-filter-account-list { border-top: 1px solid #e2e8f0; }
  .kb-filter-account-list a { min-height: 2.75rem; display: flex; align-items: center; justify-content: space-between; gap: .75rem; border-bottom: 1px solid #e2e8f0; color: #334155; font-size: .875rem; }
  .kb-filter-account-list a span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .kb-filter-account-list a span:last-child { color: #94a3b8; font-size: .75rem; }
  .kb-filter-account-list a.is-active { color: var(--kb-action); font-weight: 600; }
  .kb-filter-check-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; }
  .kb-filter-check-list label { min-width: 0; min-height: 2.75rem; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: .45rem; padding: .45rem .55rem; border: 1px solid #e2e8f0; border-radius: .375rem; color: #334155; font-size: .8125rem; }
  .kb-filter-check-list input { width: 1rem; height: 1rem; accent-color: var(--kb-action); }
  .kb-filter-check-list span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .kb-filter-check-list small { color: #94a3b8; font-size: .7rem; }
  .kb-mobile-drawer-footer { display: grid; grid-template-columns: 1fr 2fr; gap: .75rem; padding: .75rem 1rem calc(.75rem + env(safe-area-inset-bottom, 0px)); border-top: 1px solid #e2e8f0; background: #fff; }
  .kb-secondary-button, .kb-primary-button { min-height: 2.75rem; border-radius: .5rem; font-size: .875rem; font-weight: 600; }
  .kb-secondary-button { border: 1px solid #cbd5e1; color: #475569; background: #fff; }
  .kb-primary-button { background: var(--kb-brand); color: #fff; }
  .kb-me-page, .kb-comments-page { padding: 1rem 1rem calc(1.5rem + env(safe-area-inset-bottom, 0px)); }
  .kb-chat-page { min-height: calc(100% - 3.5rem); }
}

/* REQ-062 公司（集团）榜：details 原生展开（隐藏默认三角，chev 旋转） */
.kb-cog-summary::-webkit-details-marker{display:none}
.kb-cog-summary::marker{content:""}
.kb-cog-chev{transition:transform .18s}
details[open] .kb-cog-chev{transform:rotate(180deg)}
/* REQ-060 article card styles */
.kb-sidebar-me-card { display: flex; align-items: center; gap: .65rem; margin: .75rem .75rem .25rem; padding: .65rem .75rem; border: 1px solid #e2e8f0; border-radius: .5rem; background: var(--kb-bg); color: #0f172a; }
.kb-sidebar-me-card:hover { border-color: #93c5fd; background: #eff6ff; }
.kb-sidebar-me-avatar { width: 2.25rem; height: 2.25rem; display: flex; align-items: center; justify-content: center; flex: none; border-radius: 50%; background: var(--kb-brand); color: #fff; font-size: .8rem; font-weight: 700; }
.kb-sidebar-me-card strong, .kb-sidebar-me-card small { display: block; }
.kb-sidebar-me-card strong { font-size: .875rem; }
.kb-sidebar-me-card small { margin-top: .1rem; color: #94a3b8; font-size: .7rem; }
.kb-sidebar-me-arrow { margin-left: auto; color: #94a3b8; font-size: 1.1rem; }

.kb-card-style-controls { position: relative; display: inline-flex; align-items: center; gap: .5rem; color: #334155; }
.kb-card-style-toggle { min-height: 2rem; display: inline-flex; align-items: center; gap: .3rem; padding: .3rem .6rem; border: 1px solid #cbd5e1; border-radius: .5rem; background: #fff; color: #334155; white-space: nowrap; }
.kb-card-style-toggle:hover { border-color: #22d3ee; }
.kb-card-style-toggle strong { color: #0f172a; }
.kb-card-style-popover { position: absolute; top: calc(100% + .35rem); right: 0; z-index: 20; width: 18rem; padding: .5rem; border: 1px solid #e2e8f0; border-radius: .5rem; background: #fff; box-shadow: 0 .75rem 2rem rgba(15,23,42,.16); }
.kb-card-style-popover[hidden] { display: none; }
[data-classic-only][hidden] { display: none !important; }
.kb-card-style-option { width: 100%; display: flex; align-items: flex-start; gap: .65rem; padding: .55rem .65rem; border: 0; border-radius: .375rem; background: transparent; color: #334155; text-align: left; }
.kb-card-style-option:hover { background: var(--kb-bg); }
.kb-card-style-option.is-selected { background: #eff6ff; }
.kb-card-style-radio { width: 1rem; height: 1rem; margin-top: .15rem; flex: none; border: 2px solid #cbd5e1; border-radius: 50%; }
.kb-card-style-option.is-selected .kb-card-style-radio { border-color: #2563eb; background: #2563eb; box-shadow: inset 0 0 0 3px #fff; }
.kb-card-style-option strong, .kb-card-style-option small { display: block; }
.kb-card-style-option strong { color: #0f172a; font-size: .84rem; }
.kb-card-style-option small { margin-top: .1rem; color: #475569; font-size: .7rem; line-height: 1.4; }
.kb-card-open-mode-title { margin-top: .4rem; padding: .5rem .65rem .2rem; border-top: 1px solid #f1f5f9; color: #475569; font-size: .68rem; }
.kb-card-style-global-note { margin-top: .25rem; padding: .5rem .65rem .15rem; border-top: 1px dashed #e2e8f0; color: #475569; font-size: .68rem; }
/* REQ-057 尾巴#2：摘要字号滑杆进切换器弹层（移动端无侧栏入口的根治），与侧栏滑杆共用 data-sum-* 同步 */
.kb-card-sum-row { display: flex; align-items: center; gap: .6rem; padding: .35rem .65rem .5rem; }
.kb-card-sum-row input[type="range"] { flex: 1; min-width: 0; accent-color: #334155; cursor: pointer; }
.kb-card-sum-row [data-sum-val] { min-width: 2.6em; text-align: right; color: #64748b; font-size: .72rem; font-variant-numeric: tabular-nums; }
.kb-card-style-fallback { max-width: 15rem; color: #a16207; font-size: .7rem; line-height: 1.35; }

.kb-style-feed { width: 100%; margin: 0 auto; }
.kb-style-feed-a, .kb-style-feed-b, .kb-style-feed-c, .kb-style-feed-e { display: grid; grid-template-columns: minmax(0, 1fr); max-width: 72rem; }
.kb-style-feed-a { gap: .875rem; }
.kb-style-feed-b, .kb-style-feed-c { gap: .625rem; }
.kb-style-feed-e { gap: .5rem; }
/* R3：瀑布流从 CSS multicol 改 JS 分列（multicol 竖向填列=阅读顺序乱+墙块被当卡片，卡拉「崴脚三列」）；
   JS 按视口分列（<1280=2 / >=1280=3 / >=1700=4）按估算高度填最短列，保持横向阅读顺序 */
.kb-style-feed-d { max-width: 87.5rem; margin: 0 auto; }
.kb-style-feed-d > .kb-style-card, .kb-style-feed-d .kb-wf-item { /* 定位由 JS 写内联 */ }
.kb-style-card { position: relative; align-self: start; overflow: hidden; background: #fff; cursor: pointer; transition: left .38s cubic-bezier(.32,.72,0,1), top .38s cubic-bezier(.32,.72,0,1), width .38s cubic-bezier(.32,.72,0,1), height .38s cubic-bezier(.32,.72,0,1), border-radius .38s cubic-bezier(.32,.72,0,1), box-shadow .15s ease; }
.kb-style-card:hover { box-shadow: 0 .15rem .75rem rgba(20,24,40,.09); }
.kb-card-a, .kb-card-c-hero { border-radius: 1rem; box-shadow: 0 .125rem .75rem rgba(20,24,40,.06); }
.kb-card-b, .kb-card-d { border-radius: .75rem; box-shadow: 0 .125rem .625rem rgba(20,24,40,.05); }
.kb-card-e { border-radius: .5rem; box-shadow: 0 .0625rem .2rem rgba(15,23,42,.06); }
.kb-card-d { margin-bottom: 0;  /* R3：瀑布流间距由 JS 布局的 gap 计算提供 */ }
.kb-card-feed-layer { min-height: 100%; transition: opacity .2s ease .06s; }
.kb-card-feed-body { min-width: 0; }
.kb-card-visual-a .kb-card-feed-body { padding: .875rem 1rem; }
.kb-card-visual-a .kb-style-cover-wrap { aspect-ratio: 900 / 383; }
.kb-card-visual-a h2 { display: -webkit-box; overflow: hidden; color: #111827; font-size: 1.05rem; font-weight: 600; line-height: 1.5; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.kb-card-feed-summary { display: -webkit-box; overflow: hidden; color: #475569; -webkit-box-orient: vertical; }
.kb-card-visual-a .kb-card-feed-summary { margin-top: .5rem; font-size: var(--kb-sum, .84rem); line-height: 1.65; -webkit-line-clamp: 3; }  /* G1：字号贯通 kbsum */
.kb-card-visual-b .kb-card-feed-layer, .kb-card-visual-e .kb-card-feed-layer { display: flex; align-items: stretch; gap: .75rem; padding: .75rem; }
.kb-card-visual-b .kb-card-feed-body, .kb-card-visual-e .kb-card-feed-body { flex: 1; display: flex; flex-direction: column; }
.kb-card-visual-b h2, .kb-card-visual-e h2 { display: -webkit-box; overflow: hidden; color: #111827; font-size: .97rem; font-weight: 600; line-height: 1.4; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.kb-card-visual-b .kb-card-feed-summary { margin-top: .3rem; font-size: var(--kb-sum, .78rem); line-height: 1.5; -webkit-line-clamp: 2; }  /* G1 */
.kb-card-visual-b .kb-style-cover-wrap { width: 7rem; height: 5.25rem; flex: none; border-radius: .5rem; }
.kb-card-visual-e .kb-style-cover-wrap { width: 6rem; height: 4.5rem; flex: none; border-radius: .5rem; }
.kb-card-summary-hint { margin-top: .4rem; color: #3b5bfd; font-size: .75rem; }
.kb-card-visual-d .kb-style-cover-wrap { aspect-ratio: 1 / 1; }
.kb-card-visual-d .kb-card-feed-body { padding: .55rem .65rem .65rem; }
.kb-card-visual-d h2 { display: -webkit-box; overflow: hidden; color: #111827; font-size: .84rem; font-weight: 600; line-height: 1.4; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.kb-style-cover-wrap { position: relative; overflow: hidden; background: #e2e8f0; }
.kb-style-cover-wrap > img { width: 100%; height: 100%; display: block; object-fit: cover; }
.kb-style-cover-wrap.is-placeholder > img { display: none; }
.kb-style-cover-placeholder { width: 100%; height: 100%; display: none; flex-direction: column; align-items: center; justify-content: center; gap: .5rem; background: linear-gradient(135deg,#0f172a,#1e3a8a); }
.kb-style-cover-wrap.is-placeholder .kb-style-cover-placeholder { display: flex; }
.kb-style-cover-placeholder img { width: 26%; max-width: 6.5rem; height: auto; border-radius: 18%; }
.kb-style-cover-placeholder span { color: #fff; font-size: .95rem; font-weight: 600; letter-spacing: .15em; opacity: .92; }
.kb-card-featured-label { display: inline-block; margin-bottom: .35rem; padding: .1rem .4rem; border-radius: .25rem; background: #dc5b3e; color: #fff; font-size: .68rem; }
.kb-style-meta { display: flex; align-items: center; flex-wrap: wrap; gap: .35rem; margin-top: .6rem; color: #475569; font-size: .75rem; }
.kb-style-read { color: #a16207; }
.kb-style-meta-tags { display: contents; }
.kb-style-tag { padding: .1rem .35rem; border-radius: .25rem; background: #eef1ff; color: #3b5bfd; font-size: .68rem; }

.kb-card-read-layer { position: absolute; inset: 0; display: flex; flex-direction: column; padding: 1.25rem 1.125rem .875rem; opacity: 0; pointer-events: none; background: #fff; transition: opacity .16s ease; }
.kb-style-card.is-open { border-radius: 1.25rem; box-shadow: 0 .5rem 2.5rem rgba(0,0,0,.18); cursor: default; }
.kb-style-card.is-open .kb-card-feed-layer { opacity: 0; pointer-events: none; transition: opacity .13s ease; }
.kb-style-card.is-open .kb-card-read-layer { opacity: 1; pointer-events: auto; transition: opacity .22s ease .14s; }
.kb-card-read-layer h3 { padding-right: 2.25rem; color: #111827; font-size: 1.18rem; font-weight: 600; line-height: 1.45; }
.kb-card-read-summary { flex: 1 1 auto; min-height: 0; overflow-y: auto; margin-top: .65rem; color: #334155; font-size: var(--kb-sum, 1rem); line-height: var(--kb-lh, 1.9); }  /* G1+G2：阅读层字号+行距贯通 */
.kb-card-close { position: absolute; top: .75rem; right: .75rem; z-index: 2; width: 2rem; height: 2rem; display: flex; align-items: center; justify-content: center; border: 0; border-radius: 50%; background: #f1f5f9; color: #475569; font-size: 1.1rem; }
.kb-card-read-actions { display: flex; align-items: center; gap: .65rem; margin-top: .75rem; padding-top: .75rem; border-top: 1px solid #f1f5f9; }
.kb-card-read-actions > a { flex: 1; padding: .65rem 1rem; border-radius: 999px; background: #3b5bfd; color: #fff; text-align: center; }
.kb-card-placeholder { border-radius: .75rem; }
.kb-card-lock { overflow: hidden; }
.kb-card-expand-mask, .kb-card-sheet-mask { position: fixed; inset: 0; z-index: 55; opacity: 0; pointer-events: none; background: rgba(15,17,22,.55); transition: opacity .3s ease; }
.kb-card-expand-mask.is-open, .kb-card-sheet-mask.is-open { opacity: 1; pointer-events: auto; }
.kb-card-sheet-mask { z-index: 60; background: rgba(0,0,0,.45); }
.kb-card-sheet { position: fixed; left: 50%; bottom: 0; z-index: 61; width: 100%; max-width: 35rem; max-height: 78vh; display: flex; flex-direction: column; overflow: hidden; border-radius: 1rem 1rem 0 0; background: #fff; transform: translateX(-50%) translateY(105%); transition: transform .25s ease; }
.kb-card-sheet.is-open { transform: translateX(-50%) translateY(0); }
.kb-card-sheet-grip { flex: none; padding: .6rem; border: 0; background: #fff; color: #cbd5e1; font-size: 1.1rem; text-align: center; }
.kb-card-sheet-body { min-height: 0; overflow-y: auto; padding: 0 1.125rem 1.125rem; }
.kb-card-sheet-body > img { width: 100%; aspect-ratio: 900 / 383; object-fit: cover; border-radius: .5rem; }
.kb-card-sheet-body h2 { margin-top: .65rem; color: #111827; font-size: 1.05rem; font-weight: 700; line-height: 1.5; }
.kb-card-sheet-summary { margin-top: .65rem; color: #334155; font-size: var(--kb-sum, .875rem); line-height: var(--kb-lh, 1.75); }  /* G1+G2 */
body.kb-coverhide .kb-style-cover-wrap { display: none; }  /* G3：封面开关贯通，与客户端 prefs.coverHide 对齐 */
body.kb-coverhide .kb-style-cover-wrap.is-placeholder { display: block; }  /* R6-m5：卡拉拍板「D 保底图不藏」（品牌占位非文章封面） */
body.kb-coverhide .kb-cover { display: none; }  /* G3 补：classic 发现页等 #kb-list 之外的封面也随偏好隐藏 */
.kb-card-sheet-actions { display: flex; gap: .65rem; padding: .75rem 1.125rem 1rem; border-top: 1px solid #f1f5f9; background: #fff; }
.kb-card-sheet-actions a { flex: 1; padding: .65rem; border-radius: 999px; background: #3b5bfd; color: #fff; text-align: center; }
.kb-card-sheet-actions button { padding: .65rem 1.1rem; border: 1px solid #e2e8f0; border-radius: 999px; background: #fff; color: #475569; }

.kb-card-style-settings-note { margin-bottom: .75rem; color: #475569; font-size: .75rem; }
.kb-card-style-preview-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; }
.kb-card-style-preview { min-width: 0; padding: .75rem; border: 2px solid #e2e8f0; border-radius: .5rem; background: #fff; text-align: left; }
.kb-card-style-preview:hover { border-color: #93c5fd; }
.kb-card-style-preview.is-selected { border-color: #2563eb; background: #eff6ff; }
.kb-card-style-preview strong, .kb-card-style-preview small { display: block; }
.kb-card-style-preview strong { color: #0f172a; font-size: .84rem; }
.kb-card-style-preview small { min-height: 2.2rem; margin-top: .15rem; color: #475569; font-size: .68rem; line-height: 1.45; }
.kb-card-mini { height: 4.5rem; display: grid; gap: .25rem; margin-top: .55rem; padding: .35rem; overflow: hidden; border: 1px solid #e2e8f0; border-radius: .375rem; background: var(--kb-bg); }
.kb-card-mini i { display: block; border-radius: .2rem; background: #cbd5e1; }
.kb-card-mini-a { grid-template-rows: 2fr .6fr .4fr; }
.kb-card-mini-b, .kb-card-mini-e { grid-template-columns: 2fr 1fr; }
.kb-card-mini-c { grid-template: 2fr 1fr / 1fr 1fr; }
.kb-card-mini-c i:first-child { grid-column: 1 / -1; }
.kb-card-mini-d { grid-template-columns: 1fr 1fr; }
.kb-card-mini-classic { grid-template-rows: repeat(3, 1fr); }
.kb-card-style-settings h3 { margin: 1rem 0 .5rem; color: #64748b; font-size: .75rem; font-weight: 600; }
.kb-card-open-mode-settings { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
.kb-card-open-mode-settings button { padding: .7rem .8rem; border: 1px solid #e2e8f0; border-radius: .5rem; background: #fff; text-align: left; }
.kb-card-open-mode-settings button.is-selected { border-color: #2563eb; background: #eff6ff; }
.kb-card-open-mode-settings strong, .kb-card-open-mode-settings small { display: block; }
.kb-card-open-mode-settings strong { color: #0f172a; font-size: .84rem; }
.kb-card-open-mode-settings small { margin-top: .15rem; color: #475569; font-size: .7rem; }

@media (min-width: 1280px) {
  .kb-style-feed-a, .kb-style-feed-b, .kb-style-feed-c, .kb-style-feed-e { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kb-style-feed-c .kb-card-c-hero { grid-column: 1 / -1; }
  .kb-card-c-hero .kb-style-cover-wrap { height: 17.5rem; aspect-ratio: auto; }
}
@media (min-width: 1700px) { /* 列数由 JS 按视口控制 */ }

@media (max-width: 767px) {
  .kb-mobile-segments .kb-card-style-controls { align-self: center; flex: none; margin: 0 .25rem; }
  .kb-mobile-segments .kb-card-style-toggle { min-height: 1.75rem; padding: .2rem .5rem; border-radius: 999px; font-size: .72rem; }
  .kb-card-style-controls.is-mobile .kb-card-style-popover { position: fixed; top: auto; right: 0; bottom: 0; left: 0; width: 100%; max-height: 82vh; overflow-y: auto; border-radius: .75rem .75rem 0 0; padding: .65rem .75rem calc(.75rem + env(safe-area-inset-bottom, 0px)); }
  .kb-card-style-preview-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kb-style-feed-a, .kb-style-feed-b, .kb-style-feed-c, .kb-style-feed-e { grid-template-columns: minmax(0, 1fr); }

  .kb-card-visual-a .kb-style-cover-wrap { aspect-ratio: 900 / 383; }
  .kb-card-visual-b .kb-style-cover-wrap { width: 6.25rem; height: 4.7rem; }
  .kb-card-visual-e .kb-style-cover-wrap { width: 5rem; height: 3.75rem; }
}

/* D-15 体验修正（卡拉 08-18）：chips/tab 行改横向滑动不换行；app.css 在 tw.css 后加载，同优先级后者胜 */
.kb-chip-scroll { flex-wrap: nowrap !important; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.kb-chip-scroll::-webkit-scrollbar { display: none; }
.kb-chip-scroll > * { flex: none; white-space: nowrap; }

/* ===== 活动页族（REQ-079 S3-c1：从 activities.html / activity_detail.html 的 <style> 块原样收敛；.activity-action-icon 两页差 1px=基类 15px+详情 -lg 16px 修饰，视觉零变化）===== */
.activity-tabs-web { -ms-overflow-style: none; scrollbar-width: none; }
.activity-tabs-web::-webkit-scrollbar { display: none; }
.activity-icon { width: 15px; height: 15px; flex: none; color: #94a3b8; }
.activity-detail-icon { width: 18px; height: 18px; flex: none; color: #64748b; }
.activity-action-icon { width: 15px; height: 15px; flex: none; }
.activity-action-icon-lg { width: 16px; height: 16px; }
.activity-location, .activity-related-title { display: -webkit-box; overflow: hidden; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.activity-mark-button:disabled { opacity: .55; cursor: wait; }
.activity-detail-media { background: var(--kb-bg); }
.activity-detail-media img { display: block; width: 100%; height: auto; }
.kb-blur-mask { filter: blur(4px); user-select: none; pointer-events: none; }

/* REQ-135 活动页：焦点优先、进行中网格、已结束时间线。边界用留白与发丝线表达。 */
.activity-page { color: #0f172a; }
.activity-page-header { border-bottom: 1px solid rgba(14,116,144,.14); padding-bottom: 1rem; }
.activity-eyebrow, .activity-section-kicker { color: #0e7490; font-size: .68rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; }
.activity-publish-link { color: #0e7490; font-size: .82rem; font-weight: 600; }
.activity-publish-link:hover { color: #155e75; text-decoration: underline; }
.activity-focus, .activity-current { margin-top: 1.25rem; }
.activity-section-heading { display: flex; align-items: end; justify-content: space-between; gap: .75rem; margin-bottom: .75rem; }
.activity-section-heading h2 { margin-top: .15rem; font-size: 1.2rem; font-weight: 650; letter-spacing: -.01em; }
.activity-section-count { color: #64748b; font-size: .72rem; white-space: nowrap; }
.activity-hero { position: relative; display: grid; grid-template-columns: minmax(0,1.2fr) minmax(0,.8fr); overflow: hidden; min-height: 18rem; background: #fff; box-shadow: 0 10px 30px rgba(15,23,42,.07); }
.activity-hero-visual { width: 100%; height: 100%; min-height: 18rem; display: block; object-fit: cover; background: #e0f2fe; }
.activity-hero-placeholder { display: flex; align-items: center; justify-content: center; padding: 2rem; background: #ecfeff; }
.activity-hero-placeholder > div { width: min(45%, 10rem); aspect-ratio: 1; }
.activity-hero-copy { display: flex; flex-direction: column; justify-content: center; min-width: 0; padding: 1.4rem 1.5rem 1.5rem; }
.activity-focus-label { padding: .24rem .55rem; background: #0e7490; color: #fff; font-size: .68rem; font-weight: 650; letter-spacing: .04em; }
.activity-hero-meta { display: flex; flex-wrap: wrap; gap: .5rem 1rem; margin-top: 1rem; color: #475569; font-size: .75rem; }
.activity-hero-meta span { display: inline-flex; align-items: center; gap: .35rem; min-width: 0; }
.activity-hero-actions, .activity-card-actions { display: flex; flex-wrap: wrap; gap: .45rem; margin-top: 1rem; }
.activity-lock-note { margin-top: .8rem; color: #0e7490; font-size: .78rem; font-weight: 600; }
.activity-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 1rem; }
.activity-card { position: relative; overflow: hidden; min-width: 0; background: #fff; box-shadow: 0 4px 18px rgba(15,23,42,.055); transition: box-shadow .18s ease, transform .18s ease; }
.activity-card:hover, .activity-hero:hover { box-shadow: 0 12px 30px rgba(15,23,42,.1); transform: translateY(-1px); }
.activity-card-media { position: relative; aspect-ratio: 16 / 9; overflow: hidden; background: #e0f2fe; }
.activity-card-media > img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .35s ease; }
.activity-card:hover .activity-card-media > img { transform: scale(1.025); }
.activity-card-media > .activity-category-chip, .activity-card-media > span { position: absolute; left: .7rem; top: .7rem; }
.activity-card-placeholder { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; background: #ecfeff; }
.activity-card-placeholder > div { width: 5.25rem; height: 5.25rem; aspect-ratio: 1; }
.activity-card-body { padding: .85rem .9rem 1rem; }
.activity-card-title { min-width: 0; flex: 1; font-size: .94rem; font-weight: 650; line-height: 1.4; }
.activity-card-title a:hover, .activity-timeline-title a:hover, .activity-hero-copy h3 a:hover { color: #0e7490; }
.activity-card-body > p.flex, .activity-card-detail p { display: flex; align-items: flex-start; gap: .35rem; margin-top: .55rem; color: #64748b; font-size: .72rem; line-height: 1.35; }
.activity-card-detail { display: grid; gap: .25rem; }
.activity-card-actions .activity-action { min-height: 2rem; padding: 0 .65rem; }
.activity-archive { margin-top: 2.25rem; border-top: 1px solid rgba(15,23,42,.12); }
.activity-archive > summary { display: flex; align-items: center; justify-content: space-between; padding: .9rem 0; color: #475569; font-size: .86rem; cursor: pointer; list-style: none; }
.activity-archive > summary::-webkit-details-marker { display: none; }
.activity-archive > summary::after { content: '+'; color: #0e7490; font-size: 1.1rem; }
.activity-archive[open] > summary::after { content: '−'; }
.activity-timeline { margin: 0 0 .5rem; padding: 0; list-style: none; }
.activity-timeline-item { position: relative; display: grid; grid-template-columns: 6.5rem minmax(0,1fr) minmax(7rem, .45fr); align-items: center; gap: .8rem; min-height: 2.8rem; padding: .45rem 0 .45rem 1rem; border-top: 1px solid rgba(15,23,42,.07); color: #64748b; font-size: .78rem; }
.activity-timeline-item::before { content: ''; position: absolute; left: 0; width: .35rem; height: .35rem; border-radius: 50%; background: #67e8f9; }
.activity-timeline-title { min-width: 0; overflow: hidden; color: #475569; text-overflow: ellipsis; white-space: nowrap; }
.activity-timeline-location { overflow: hidden; color: #94a3b8; text-overflow: ellipsis; white-space: nowrap; text-align: right; }
.activity-empty { grid-column: 1 / -1; padding: 4rem 1rem; color: #64748b; text-align: center; font-size: .86rem; }
.activity-row-link { cursor: pointer; }

@media (max-width: 767px) {
  .activity-page-header { padding-top: .75rem; }
  .activity-hero { grid-template-columns: 1fr; }
  .activity-hero-visual { min-height: 11rem; max-height: 15rem; }
  .activity-hero-copy { padding: 1rem 1.1rem 1.2rem; }
  .activity-grid { grid-template-columns: repeat(2, minmax(0,1fr)); gap: .75rem; }
  .activity-card-body { padding: .7rem .7rem .8rem; }
  .activity-card-title { font-size: .86rem; }
  .activity-card-actions { display: none; }
  .activity-timeline-item { grid-template-columns: 5.6rem minmax(0,1fr); gap: .55rem; }
  .activity-timeline-location { display: none; }
}

@media (max-width: 480px) {
  .activity-grid { grid-template-columns: 1fr; }
  .activity-card-media { aspect-ratio: 2 / 1; }
}

/* ===== 榜单详情页商店区块（REQ-079 S3-c2：从 rank_detail.html 的 <style> 块原样收敛，视觉零变化）===== */
details.kb-appdetail>summary{list-style:none}
details.kb-appdetail>summary::-webkit-details-marker{display:none}
.kb-caret::after{content:'▸'}
details.kb-appdetail[open] .kb-caret::after{content:'▾'}
.kb-clamp{display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}
.kb-shots{scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent}
.kb-shots::-webkit-scrollbar{height:6px}
.kb-shots::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:9999px}
.kb-shots::-webkit-scrollbar-track{background:transparent}

/* REQ-093 榜单行游戏收藏心形：放大可点区域+悬停圆底（卡拉 08-25 反馈心形太小） */
.kb-gamefav-btn{font-size:1.25rem;line-height:1;padding:.2rem .35rem;border-radius:.5rem;display:inline-flex;align-items:center;justify-content:center}
.kb-gamefav-btn:hover{background:#fff1f2}
.kb-gamefav-btn:disabled{opacity:.5;cursor:default}

/* REQ-093 收藏页游戏卡：桌面端多列栅格，避免整行拉满全宽（卡拉 08-25 反馈太长） */
.kb-gamefav-grid{display:flex;flex-direction:column;gap:.5rem}
@media (min-width:768px){.kb-gamefav-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}}
@media (min-width:1280px){.kb-gamefav-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* ===== REQ-107 统一锁态钩子组件（卡拉 D-1/D-2：页壳全态渲染+仿真模糊+中央CTA，目的=吸引用户） =====
   复用 kb-blur-mask（上方既有，活动/合作 masked 卡先例）；仿真内容=.kb-skel 灰条替身，禁放真实数据。 */
.kb-lockwall { position: relative; }
.kb-lockwall-cta { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; padding: 1rem; }
.kb-lockwall-card { background: #fff; border: 1px solid #e2e8f0; border-radius: .9rem; box-shadow: 0 10px 30px rgba(15,23,42,.14); padding: 1.25rem 1.5rem; text-align: center; max-width: 20rem; }
.kb-skel { display: block; height: .7rem; border-radius: .25rem; background: #cbd5e1; }
/* 统一失败条（C 类修复：rank 历史区/discover 换一批续拉/me-comments/chat 历史四处接入；重试=重触发原 fetch） */
.kb-failbar { display: flex; align-items: center; justify-content: center; gap: .6rem; padding: .8rem 1rem; font-size: .85rem; color: #64748b; }
.kb-failbar button { color: #0e7490; font-weight: 500; background: none; border: none; cursor: pointer; font-size: inherit; }
.kb-failbar button:hover { text-decoration: underline; }

/* REQ-102 网站详情页「小程序内打开」大卡：视觉对齐 mp 详情页 play-direct 蓝卡（体验版同款） */
.kb-mp-open-card{display:flex;align-items:center;gap:12px;margin:0 0 16px;padding:14px 16px;border-radius:14px;background:linear-gradient(135deg,#4f7cff,#3557e0);box-shadow:0 3px 10px rgba(79,124,255,.28);color:#fff;text-decoration:none}
.kb-mp-open-card:hover{opacity:.92;color:#fff}
.kb-mp-open-l{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.kb-mp-open-t{font-size:15px;font-weight:600;color:#fff}
.kb-mp-open-s{font-size:12px;color:rgba(255,255,255,.82)}
.kb-mp-open-arrow{font-size:22px;line-height:1;color:rgba(255,255,255,.9);flex-shrink:0}

/* REQ-135 personal pages: quiet cyan workspace, open layering, and tighter type hierarchy. */
.kb-personal-page,
.kb-membership-page,
.kb-notifications-page,
.kb-account-page { color: #164e63; }

.kb-personal-page { width: min(100%, 52rem); padding: 2rem 1.25rem 3rem; }
.kb-personal-page > * { animation: kb-personal-rise .35s ease-out both; }
.kb-personal-page > *:nth-child(2) { animation-delay: .04s; }
.kb-personal-page > *:nth-child(3) { animation-delay: .08s; }
.kb-personal-page > *:nth-child(4) { animation-delay: .12s; }
.kb-personal-page > *:nth-child(5) { animation-delay: .16s; }
.kb-me-profile-card,
.kb-me-grid,
.kb-me-admin-card,
.kb-me-style-card { border: 0; border-radius: .75rem; box-shadow: 0 1px 8px rgba(8, 51, 68, .08); }
.kb-me-profile-card { overflow: hidden; background: #0e7490; }
.kb-me-profile { padding: 1.25rem 1.25rem 1rem; }
.kb-me-avatar { width: 3.25rem; height: 3.25rem; background: rgba(255,255,255,.16); }
.kb-me-profile h1 { font-size: 1.125rem; }
.kb-me-profile p { color: rgba(236,254,255,.78); font-size: .75rem; }
.kb-me-membership { margin: 0 .9rem .9rem; padding: .75rem .85rem; background: rgba(8,47,73,.24); border-top: 1px solid rgba(255,255,255,.18); border-radius: .5rem; }
.kb-me-membership b { color: #cffafe; }
.kb-me-grid { margin-top: 1.25rem; background: rgba(236,254,255,.72); box-shadow: none; border-top: 1px solid rgba(14,116,144,.18); border-bottom: 1px solid rgba(14,116,144,.18); }
.kb-me-grid-cell { min-height: 5.25rem; color: #155e75; }
.kb-me-grid-cell + .kb-me-grid-cell { border-left-color: rgba(14,116,144,.14); }
.kb-me-grid-cell svg { color: #0e7490; }
.kb-me-badge { top: .8rem; right: 22%; background: #e11d48; }
.kb-me-admin-card { margin-top: 1.35rem; padding: .85rem .75rem; background: rgba(255,255,255,.58); }
.kb-me-section-head { padding: 0 .45rem .55rem; border-bottom: 1px solid rgba(14,116,144,.12); }
.kb-me-section-head h2 { color: #0e7490; font-size: .8125rem; }
.kb-me-admin-grid { gap: .15rem; padding-top: .35rem; }
.kb-me-admincell { min-height: 4.25rem; color: #155e75; }
.kb-me-admincell:hover { background: rgba(207,250,254,.5); }
.kb-me-admincell svg { color: #0891b2; }
.kb-me-features { gap: .75rem; padding-top: 1.35rem; }
.kb-me-feature { min-height: 7.5rem; border-radius: .75rem; box-shadow: 0 1px 8px rgba(8,51,68,.08); }
.kb-me-feature-chat { background: #0e7490; }
.kb-me-feature-group { background: #0f766e; background-image: none; }
.kb-me-feature-icon { background: rgba(255,255,255,.16); }
.kb-me-feature-group .kb-me-feature-icon { background: rgba(255,255,255,.16); }
.kb-me-feature strong { color: #ecfeff; }
.kb-me-feature span:not(.kb-me-feature-icon) { color: rgba(236,254,255,.78); }
.kb-me-style-card { margin-top: 1.35rem; background: rgba(255,255,255,.6); }
.kb-me-style-summary { padding: .9rem 1rem; background: transparent; color: #155e75; border-bottom: 1px solid rgba(14,116,144,.12); }
.kb-me-style-body { padding: 1rem; }
.kb-me-reading-settings { border-top-color: rgba(14,116,144,.14); }
.kb-me-tail { margin-top: 1.75rem; }
.kb-me-tail h2 { color: #0e7490; font-size: .75rem; }
.kb-me-tailrow { min-height: 2.75rem; border-top-color: rgba(14,116,144,.12); color: #155e75; }

.kb-membership-page { max-width: 48rem; padding-top: 2rem; padding-bottom: 3rem; }
.kb-membership-page > header { margin-bottom: 2rem; }
.kb-membership-page > header h1 { color: #164e63; font-size: 1.5rem; font-weight: 700; }
.kb-membership-page > header p { color: #64748b; }
.kb-membership-page > section { margin-bottom: 1.5rem; border: 0; border-radius: .75rem; background: rgba(255,255,255,.64); box-shadow: 0 1px 8px rgba(8,51,68,.07); overflow: hidden; }
.kb-membership-page > section:first-of-type { background: #164e63; box-shadow: 0 8px 24px rgba(8,51,68,.16); }
.kb-membership-page > section:first-of-type * { color: #ecfeff; }
.kb-membership-page > section:nth-of-type(2) > div:first-child { background: transparent; color: #164e63; border-bottom: 1px solid rgba(14,116,144,.14); }
.kb-membership-page > section:nth-of-type(2) > div:first-child span { background: #f59e0b; color: #fff; }
.kb-membership-page > section:nth-of-type(3) > div:first-child { background: transparent; color: #155e75; border-bottom: 1px solid rgba(14,116,144,.14); }
.kb-membership-page > section:nth-of-type(3) > div:first-child span { background: #0e7490; color: #fff; }
.kb-membership-page section h2 { letter-spacing: 0; }
.kb-membership-page input { border-color: rgba(14,116,144,.25); background: #f8feff; box-shadow: 0 1px 3px rgba(8,51,68,.06); }
.kb-membership-page [data-copy-invite-url],
.kb-membership-page [data-copy-invitation] { border-color: rgba(14,116,144,.25); color: #0e7490; background: #ecfeff; }
.kb-membership-page a.m-4 { border-color: #0e7490; color: #0e7490; background: #ecfeff; }
.kb-membership-page > section:nth-of-type(n+4) { padding: 1.25rem; }
.kb-membership-page > section:nth-of-type(n+4) h2 { color: #164e63; font-size: 1.125rem; }
.kb-membership-page > section:nth-of-type(n+4) li,
.kb-membership-page > section:nth-of-type(n+4) p { color: #475569; }
.kb-membership-page img { border-color: rgba(14,116,144,.2); }
.kb-membership-page #membershipPayModal > div { border: 0; box-shadow: 0 16px 40px rgba(8,51,68,.24); }

.kb-notifications-page { min-height: 100%; }
.kb-notifications-page .border-b { border-bottom-color: rgba(14,116,144,.14); }
.kb-notifications-page > div:nth-child(2) { max-width: 48rem; margin: 0 auto; padding-top: 1.25rem; }
.kb-notifications-page > div:nth-child(2) a { border-radius: .5rem; }
.kb-notifications-page > div:nth-child(2) a[href*="bucket=system"].bg-slate-900,
.kb-notifications-page > div:nth-child(2) a[href*="bucket=follow"].bg-slate-900 { background: #0e7490; }
.kb-notifications-page .divide-y { border-top-color: rgba(14,116,144,.16); border-bottom-color: rgba(14,116,144,.16); }
.kb-notifications-page article { border-color: rgba(14,116,144,.12); }
.kb-notifications-page article.bg-cyan-50\/40 { background: rgba(207,250,254,.5); }
.kb-notifications-page article h2 { color: #164e63; font-size: 1rem; }
.kb-notifications-page .mark-read,
.kb-notifications-page article a { color: #0e7490; }
.kb-notifications-page #read-all { border-color: rgba(14,116,144,.22); color: #155e75; background: rgba(255,255,255,.6); }
.kb-notifications-page #inbox-error { border: 0; border-left: 3px solid #e11d48; background: rgba(255,241,242,.8); }

.kb-account-page { max-width: 42rem; padding-top: 2rem; padding-bottom: 3rem; }
.kb-account-page > div:first-child { padding-bottom: 1rem; border-bottom: 1px solid rgba(14,116,144,.16); }
.kb-account-page > div:first-child h1 { color: #164e63; font-size: 1.5rem; }
.kb-account-page section { border-top-color: rgba(14,116,144,.16); }
.kb-account-page section h2 { color: #155e75; font-size: 1rem; }
.kb-account-page section[data-action="delete"] h2 { color: #be123c; }
.kb-account-page input { min-height: 2.75rem; border-color: rgba(14,116,144,.24); border-radius: .5rem; background: rgba(255,255,255,.72); box-shadow: 0 1px 3px rgba(8,51,68,.05); }
.kb-account-page button { min-height: 2.75rem; border-radius: .5rem; border-color: rgba(14,116,144,.24); color: #0e7490; background: #ecfeff; }
.kb-account-page button.finish { border: 0; background: #0e7490; color: #ecfeff; }
.kb-account-page #delete-account { border-color: #fda4af; color: #be123c; background: #fff1f2; }
.kb-account-page a { color: #0e7490; }

@keyframes kb-personal-rise { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
@media (max-width: 767px) {
  .kb-personal-page { padding: 1.25rem 1rem calc(2rem + env(safe-area-inset-bottom, 0px)); }
  .kb-membership-page, .kb-account-page { padding-top: 1.25rem; }
  .kb-membership-page > header h1 { font-size: 1.25rem; }
  .kb-notifications-page > div:nth-child(2) { padding-left: 1rem; padding-right: 1rem; }
  .kb-me-admin-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* REQ-135 B1：发现/精选高清焦点位。只在封面 load 后确认 naturalWidth>=600 才移动原卡，低清封面继续留在列表。 */
.kb-feed-hero-slot { width: 100%; max-width: 72rem; margin: 0 auto 1.25rem; }
.kb-feed-hero-slot[hidden] { display: none; }
.kb-feed-hero-card { width: 100%; min-width: 0; overflow: hidden; border: 0 !important; border-radius: .75rem !important; background: #fff; box-shadow: 0 .5rem 1.75rem rgba(8,51,68,.1); }
.kb-feed-hero-card:hover { box-shadow: 0 .75rem 2rem rgba(8,51,68,.14); }
.kb-feed-hero-card.kb-card { padding: 0 !important; }
.kb-feed-hero-card.kb-card > a { display: block; }
.kb-feed-hero-card .kb-cover { display: block; width: 100%; height: clamp(14rem, 34vw, 25rem) !important; margin: 0 0 0 !important; border-radius: 0 !important; object-fit: cover; }
.kb-feed-hero-card.kb-card > a > div,
.kb-feed-hero-card.kb-card > a > h2,
.kb-feed-hero-card.kb-card > a > .card-summary,
.kb-feed-hero-card.kb-card > a > .card-tags,
.kb-feed-hero-card.kb-card > a > .card-stats,
.kb-feed-hero-card.kb-card > a > .kb-src { margin-left: 1.25rem; margin-right: 1.25rem; }
.kb-feed-hero-card.kb-card > a > div:first-of-type { padding-top: 1.1rem; }
.kb-feed-hero-card.kb-card > a > .kb-src { margin-bottom: 1.25rem; }
.kb-feed-hero-card.kb-style-card { display: block; }
.kb-feed-hero-card.kb-style-card .kb-card-feed-layer { display: flex; flex-direction: column; gap: 0; padding: 0; }
.kb-feed-hero-card.kb-style-card .kb-style-cover-wrap { order: -1; width: 100%; height: clamp(14rem, 34vw, 25rem); aspect-ratio: auto; border-radius: 0; }
.kb-feed-hero-card.kb-style-card .kb-card-feed-body { padding: 1.15rem 1.35rem 1.25rem; }
.kb-feed-hero-card.kb-style-card h2 { font-size: 1.5rem; line-height: 1.35; }
.kb-feed-hero-card.kb-style-card .kb-card-feed-summary { margin-top: .6rem; font-size: .95rem; line-height: 1.7; -webkit-line-clamp: 4; }
.kb-feed-hero-card.kb-style-card .kb-card-read-layer { border-radius: .75rem; }

@media (max-width: 767px) {
  .kb-feed-hero-slot { margin-bottom: 1rem; }
  .kb-feed-hero-card .kb-cover,
  .kb-feed-hero-card.kb-style-card .kb-style-cover-wrap { height: 12rem !important; }
  .kb-feed-hero-card.kb-card > a > div,
  .kb-feed-hero-card.kb-card > a > h2,
  .kb-feed-hero-card.kb-card > a > .card-summary,
  .kb-feed-hero-card.kb-card > a > .card-tags,
  .kb-feed-hero-card.kb-card > a > .card-stats,
  .kb-feed-hero-card.kb-card > a > .kb-src { margin-left: 1rem; margin-right: 1rem; }
  .kb-feed-hero-card.kb-card > a > div:first-of-type { padding-top: .9rem; }
  .kb-feed-hero-card.kb-card > a > .kb-src { margin-bottom: 1rem; }
  .kb-feed-hero-card.kb-style-card .kb-card-feed-body { padding: .95rem 1rem 1rem; }
  .kb-feed-hero-card.kb-style-card h2 { font-size: 1.15rem; }
}

/* REQ-135 B3 合作页：无框名录+供需墙。主会话手写补齐（codex B3 断流未落 CSS）。 */
.kb-cooperation-page { max-width: 64rem; margin: 0 auto; padding: 1rem 1rem 3rem; }
@media (min-width: 768px) { .kb-cooperation-page { padding: 1.5rem 1.5rem 4rem; } }
.kb-cooperation-toplink { font-size: .875rem; font-weight: 500; color: #334155; }
.kb-cooperation-hero { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 1rem; margin-bottom: 1.25rem; }
.kb-cooperation-hero h1 { font-size: 1.5rem; font-weight: 700; color: #0f172a; margin: .15rem 0 0; }
.kb-eyebrow { font-size: .75rem; font-weight: 600; letter-spacing: .12em; color: var(--kb-action-strong); text-transform: uppercase; margin: 0; }
.kb-cooperation-lede { margin: .5rem 0 0; font-size: .9rem; color: #475569; max-width: 34rem; line-height: 1.6; }
.kb-cooperation-hero-actions { margin-left: auto; display: flex; gap: .6rem; align-items: center; }
.kb-cooperation-primary { display: inline-flex; align-items: center; gap: .3rem; padding: .6rem 1.1rem; border-radius: .65rem; background: var(--kb-action-strong); color: #fff; font-size: .875rem; font-weight: 600; text-decoration: none; }
.kb-cooperation-primary:hover { background: var(--kb-action); }
.kb-cooperation-primary span { font-weight: 400; opacity: .75; font-size: .8rem; }
.kb-cooperation-secondary { font-size: .875rem; font-weight: 500; color: #334155; text-decoration: none; }
.kb-cooperation-secondary:hover { color: var(--kb-action-strong); }
.kb-cooperation-focus { display: grid; gap: 1.25rem; margin: 1.25rem 0 2rem; }
@media (min-width: 900px) { .kb-cooperation-focus { grid-template-columns: 1fr 1fr; } }
.kb-cooperation-focus-column h2 { font-size: .8rem; font-weight: 600; letter-spacing: .08em; color: #64748b; margin: 0 0 .75rem; }
.kb-cooperation-quote { margin: 0 0 .9rem; padding: 0 0 0 .9rem; border-left: 3px solid rgba(14,116,144,.35); }
.kb-cooperation-focus-offering .kb-cooperation-quote { border-left-color: var(--kb-supply-line); }
.kb-cooperation-quote p { margin: 0; font-size: .95rem; line-height: 1.65; color: #1e293b; }
.kb-cooperation-quote footer { margin-top: .3rem; font-size: .78rem; color: #64748b; }
.kb-cooperation-empty { font-size: .85rem; color: #94a3b8; margin: 0 0 .4rem; }
.kb-cooperation-empty-cta { font-size: .82rem; font-weight: 600; color: var(--kb-action-strong); text-decoration: none; }
.kb-cooperation-directory { margin-top: .5rem; }
.kb-section-label { display: flex; align-items: baseline; gap: .6rem; border-bottom: 1px solid rgba(100,116,139,.18); padding-bottom: .5rem; margin-bottom: .25rem; }
.kb-section-label h2 { font-size: 1.02rem; font-weight: 600; color: #0f172a; margin: 0; }
.kb-section-label span { font-size: .78rem; color: #94a3b8; }
.kb-cooperation-people { display: block; }
.kb-cooperation-person { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; align-items: baseline; padding: 1rem 0; border-bottom: 1px solid rgba(100,116,139,.14); }
.kb-cooperation-person:last-child { border-bottom: 0; }
.kb-cooperation-person-main { flex: 1 1 22rem; min-width: 0; }
.kb-cooperation-person-heading { display: flex; align-items: baseline; gap: .55rem; flex-wrap: wrap; }
.kb-cooperation-person-heading h3 { font-size: 1.05rem; font-weight: 600; color: #0f172a; margin: 0; }
.kb-cooperation-person-heading span { font-size: .8rem; color: #64748b; }
.kb-cooperation-headline { margin: .3rem 0 0; font-size: .9rem; font-weight: 500; color: #334155; line-height: 1.55; }
.kb-cooperation-summary { margin: .25rem 0 0; font-size: .85rem; color: #475569; line-height: 1.6; white-space: pre-wrap; word-break: break-word; }
.kb-cooperation-tags { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .5rem; }
.kb-cooperation-tag { font-size: .75rem; padding: .12rem .55rem; border-radius: 999px; }
.kb-cooperation-tag-looking { background: rgba(14,116,144,.08); color: #155e75; }
.kb-cooperation-tag-offering { background: var(--kb-supply-soft); color: var(--kb-supply); }
.kb-cooperation-person-actions { display: flex; gap: .8rem; align-items: center; flex-shrink: 0; }
.kb-cooperation-action-primary { font-size: .85rem; font-weight: 600; color: var(--kb-action-strong); text-decoration: none; }
.kb-cooperation-action { font-size: .82rem; color: #475569; text-decoration: none; }
.kb-cooperation-action:hover { color: var(--kb-action-strong); }
.kb-cooperation-footnote { margin: 1.5rem 0 0; font-size: .8rem; color: #94a3b8; line-height: 1.6; }
.kb-cooperation-empty-directory { padding: 3rem 0; text-align: center; font-size: .85rem; color: #94a3b8; }
.kb-cooperation-placeholder { padding: 4rem 1rem; text-align: center; }
.kb-cooperation-placeholder h2 { font-size: 1.05rem; font-weight: 600; color: #0f172a; margin: .3rem 0; }
.kb-cooperation-placeholder p:last-child { font-size: .85rem; color: #64748b; margin: 0; }

/* REQ-135 C2 Rank G: structured header, controls and large rank rows. */
.kb-rankg { color: #0f172a; }
.kb-rankg-shell { max-width: 72rem; margin: 0 auto; padding: 1.25rem 1rem 3rem; }
.kb-rankg-header { text-align: center; border-bottom: 1px solid rgba(15,23,42,.18); padding: .25rem 0 1.25rem; }
.kb-rankg-eyebrow { margin: 0; color: #0e7490; font-size: .72rem; font-weight: 700; letter-spacing: .24em; }
.kb-rankg-header h1 { margin: .4rem 0 .35rem; font-size: clamp(2rem, 5vw, 3.25rem); line-height: 1.1; font-weight: 800; letter-spacing: -.02em; }
.kb-rankg-meta { margin: 0; color: #64748b; font-size: .8rem; }
.kb-rankg-stats { display: flex; justify-content: center; flex-wrap: wrap; gap: .8rem; margin: .65rem 0 0; color: #64748b; font-size: .76rem; }
.kb-rankg-stats .is-new,.kb-rankg-change .is-first { color: #d97706; }.kb-rankg-stats .is-up,.kb-rankg-change .is-up { color: #e11d48; }.kb-rankg-stats .is-down,.kb-rankg-change .is-down { color: #059669; }
.kb-rankg-tools { position: relative; z-index: 20; display: grid; gap: .7rem; padding: 1rem 0 .8rem; } /* z-index: 修复搜索联想框被后续 fade-up 兄弟(层叠上下文)压盖成透明——卡拉 2026-09-20 实测；取值必须 >fade-up 兄弟且严格小于顶栏 .kb-topbar 的 z-index，同值撞车会盖住顶栏账号菜单——REQ-170 卡拉 2026-09-23 实测（大小关系有 test_css_contract.py 钉着，数值勿写死在此） */
.kb-rankg-search { position: relative; }.kb-rankg-search input { width: 100%; min-height: 2.7rem; padding: .65rem .9rem; border: 1px solid rgba(100,116,139,.25); border-radius: .65rem; background: rgba(255,255,255,.8); font-size: .9rem; }.kb-rankg-suggest { position: absolute; z-index: 20; top: calc(100% + .25rem); left: 0; right: 0; max-height: 24rem; overflow: auto; border: 1px solid rgba(100,116,139,.2); border-radius: .65rem; background: #fff; box-shadow: 0 .75rem 1.75rem rgba(15,23,42,.12); }
.kb-rankg-scroll { display: flex; gap: .4rem; overflow-x: auto; scrollbar-width: none; }.kb-rankg-scroll::-webkit-scrollbar { display: none; }
.kb-rankg-pill,.kb-rankg-chip { flex: 0 0 auto; padding: .38rem .7rem; border-radius: 999px; color: #64748b; font-size: .78rem; text-decoration: none; white-space: nowrap; }.kb-rankg-pill:hover,.kb-rankg-chip:hover { color: #0f172a; background: #f1f5f9; }.kb-rankg-pill.is-active,.kb-rankg-chip.is-active { color: #0e7490; background: #ecfeff; font-weight: 650; }
.kb-rankg .kb-rank-other { position: relative; flex: 0 0 auto; }.kb-rankg .kb-rank-other summary { list-style: none; cursor: pointer; }.kb-rankg .kb-rank-other summary::-webkit-details-marker { display: none; }.kb-rankg .kb-rank-other > span { position: absolute; z-index: 10; top: 2rem; right: 0; display: grid; min-width: 8rem; padding: .35rem; border: 1px solid rgba(100,116,139,.2); border-radius: .55rem; background: #fff; box-shadow: 0 .5rem 1.25rem rgba(15,23,42,.12); }.kb-rankg .kb-rank-other > span a { padding: .4rem .55rem; color: #334155; font-size: .78rem; text-decoration: none; }
.kb-rankg-subnav { padding-top: .1rem; }.kb-rankg-controls { display: flex; align-items: center; flex-wrap: wrap; gap: .55rem; border-top: 1px solid rgba(100,116,139,.14); padding-top: .7rem; }.kb-rankg-tabs,.kb-rankg-periods { display: flex; gap: .2rem; }.kb-rankg-tabs a,.kb-rankg-periods a { padding: .4rem .65rem; color: #64748b; border-bottom: 2px solid transparent; font-size: .8rem; text-decoration: none; }.kb-rankg-tabs a.is-active { color: #0f172a; border-color: #0e7490; font-weight: 700; }.kb-rankg-periods a.is-active { color: #0e7490; background: #ecfeff; border-radius: .4rem; font-weight: 650; }.kb-rankg-controls select { margin-left: auto; min-height: 2rem; max-width: 10rem; border: 1px solid rgba(100,116,139,.25); border-radius: .45rem; background: #fff; padding: .3rem .45rem; color: #475569; font-size: .76rem; }
.kb-rankg-facets { display: grid; gap: .5rem; border-bottom: 1px solid rgba(100,116,139,.16); padding: .3rem 0 .9rem; }.kb-rankg-facet-row { display: flex; align-items: flex-start; gap: .6rem; min-width: 0; }.kb-rankg-facet-row > span { flex: 0 0 2.2rem; padding-top: .42rem; color: #94a3b8; font-size: .75rem; }.kb-rankg-facet-row > .kb-rankg-scroll { flex: 1; }.kb-rankg-chip small { color: #94a3b8; font-size: .68rem; }.kb-rankg-markers { display: flex; gap: .3rem; flex: 0 0 auto; }.kb-rankg-markers .kb-rankg-chip { border: 1px solid rgba(100,116,139,.18); }.kb-rankg-segment { display: flex; gap: .25rem; margin-left: 2.8rem; }.kb-rankg-segment a { padding: .3rem .55rem; border-radius: .35rem; color: #64748b; font-size: .75rem; text-decoration: none; }.kb-rankg-segment a.is-active { background: #e2e8f0; color: #0f172a; font-weight: 650; }
.kb-rankg-list { display: grid; gap: .55rem; padding-top: 1rem; }.kb-rankg-row { display: flex; align-items: center; gap: .75rem; min-height: 5.25rem; padding: .7rem .8rem; border: 1px solid rgba(100,116,139,.15); border-radius: .8rem; background: rgba(255,255,255,.84); color: inherit; text-decoration: none; transition: box-shadow .18s ease, transform .18s ease; }.kb-rankg-row:hover { transform: translateY(-1px); box-shadow: 0 .45rem 1.2rem rgba(15,23,42,.08); }.kb-rankg-rank { flex: 0 0 2.15rem; text-align: center; font-size: 1.65rem; line-height: 1; font-variant-numeric: tabular-nums; }.kb-rankg-total { flex: 0 0 1.8rem; margin-left: -2.2rem; margin-top: 2rem; color: #94a3b8; font-size: .62rem; }.kb-rankg-icon { flex: 0 0 3rem; width: 3rem; height: 3rem; border-radius: .75rem; object-fit: cover; background: #f1f5f9; box-shadow: 0 2px 5px rgba(15,23,42,.08); }.kb-rankg-icon-empty { display: block; }.kb-rankg-main { display: grid; min-width: 0; flex: 1; gap: .18rem; }.kb-rankg-title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .95rem; font-weight: 650; }.kb-rankg-main > small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #64748b; font-size: .72rem; }.kb-rankg-main > small i { margin-right: .25rem; color: #b45309; font-style: normal; }.kb-rankg-tags { display: flex; gap: .3rem; overflow: hidden; }.kb-rankg-tags .kb-rankg-chip { padding: .15rem .4rem; background: #ecfeff; color: #0e7490; font-size: .68rem; }.kb-rankg-tags .kb-rankg-chip.is-muted { background: #f1f5f9; color: #64748b; }.kb-rankg-main .text-xs { color: #64748b; font-size: .68rem; }.kb-rankg-spark { flex: 0 0 6.5rem; width: 6.5rem; height: 2rem; color: #0e7490; opacity: .75; }.kb-rankg-spark polyline { stroke: currentColor; stroke-width: 1.5; stroke-linejoin: round; stroke-linecap: round; }.kb-rankg-spark-empty { display: block; border-bottom: 1px dashed rgba(14,116,144,.3); }.kb-rankg-change { display: flex; align-items: center; justify-content: flex-end; flex: 0 0 7rem; gap: .3rem; color: #64748b; font-size: .74rem; text-align: right; }.kb-rankg-change button { border: 0; background: transparent; color: #0e7490; cursor: pointer; font-size: .95rem; }.kb-rankg-change .is-again { color: #0369a1; }.kb-rankg-empty { padding: 4rem 1rem; color: #64748b; text-align: center; font-size: .85rem; }.kb-rankg-promo { display: flex; align-items: center; gap: .7rem; width: 100%; padding: .75rem .9rem; border: 1px solid rgba(16,185,129,.2); border-radius: .8rem; background: #ecfdf5; color: #065f46; text-align: left; cursor: pointer; }.kb-rankg-promo span { font-size: .85rem; font-weight: 650; }.kb-rankg-promo small { flex: 1; color: #047857; font-size: .72rem; }.kb-rankg-promo b { font-size: 1.4rem; font-weight: 400; }.kb-rankg-history { margin-top: 1.2rem; border-top: 1px solid rgba(100,116,139,.16); padding-top: .8rem; }.kb-rankg-history h2 { margin: 0 0 .6rem; color: #64748b; font-size: .78rem; font-weight: 500; }.kb-rankg-history #kb-rank-history-more { padding: .8rem; color: #64748b; font-size: .75rem; text-align: center; }
.kb-rankg-company-row { border: 1px solid rgba(100,116,139,.15); border-radius: .8rem; background: rgba(255,255,255,.84); overflow: hidden; }.kb-rankg-company-row summary { display: flex; align-items: center; gap: .75rem; padding: .85rem .9rem; cursor: pointer; list-style: none; }.kb-rankg-company-row summary::-webkit-details-marker { display:none; }.kb-rankg-company-row summary .kb-rankg-name { flex: 1; font-weight: 650; }.kb-rankg-company-row summary small { color: #94a3b8; font-size: .72rem; font-weight: 400; }.kb-rankg-company-games { border-top: 1px solid rgba(100,116,139,.12); }.kb-rankg-company-games a { display: flex; align-items: center; gap: .6rem; padding: .55rem .9rem .55rem 3.7rem; color: #334155; text-decoration: none; }.kb-rankg-company-games a + a { border-top: 1px solid rgba(100,116,139,.08); }.kb-rankg-company-games img { width: 2rem; height: 2rem; border-radius: .55rem; object-fit: cover; background: #f1f5f9; }.kb-rankg-company-games a span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .82rem; }.kb-rankg-company-games a span small { display: block; color: #64748b; font-size: .68rem; }.kb-rankg-company-games em { color: #0e7490; font-size: .7rem; font-style: normal; }
.kb-rankg .fade-up { animation: kb-rankg-fade-up .45s ease-out both; animation-delay: var(--kb-rankg-delay, 0ms); }
@keyframes kb-rankg-fade-up { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
@media (prefers-reduced-motion: reduce) { .kb-rankg .fade-up { animation: none; } .kb-rankg-row { transition: none; } }
@media (max-width: 767px) { .kb-rankg-shell { padding: 1rem .75rem 2.5rem; }.kb-rankg-header h1 { font-size: 2rem; }.kb-rankg-tools { position: relative; }.kb-rankg-controls { gap: .35rem; }.kb-rankg-controls select { margin-left: 0; max-width: 9rem; }.kb-rankg-facet-row { align-items: flex-start; }.kb-rankg-markers { display: none; }.kb-rankg-row { gap: .55rem; min-height: 4.6rem; padding: .6rem; }.kb-rankg-rank { flex-basis: 1.8rem; font-size: 1.35rem; }.kb-rankg-icon { flex-basis: 2.7rem; width: 2.7rem; height: 2.7rem; }.kb-rankg-spark { display: none; }.kb-rankg-change { flex-basis: 4.5rem; flex-direction: column; align-items: flex-end; }.kb-rankg-change button { order: -1; }.kb-rankg-title { font-size: .88rem; }.kb-rankg-company-games a { padding-left: 2.8rem; } }

/* REQ-135 C1：工作台首页。 */
.kb-home-page { width: min(100%, 72rem); margin: 0 auto; padding: 1.5rem 1rem 4rem; }
.kb-home-hero { padding-bottom: 2rem; border-bottom: 1px solid rgba(100,116,139,.2); }
.kb-home-eyebrow { margin: 0 0 .75rem; color: var(--kb-action-strong); font-size: .75rem; font-weight: 700; letter-spacing: 0; }
.kb-home-hero h1 { max-width: 42rem; margin: 0; color: #0f172a; font-size: 2.25rem; line-height: 1.25; font-weight: 700; }
.kb-home-lede { max-width: 42rem; margin: .75rem 0 0; color: #475569; font-size: .9375rem; line-height: 1.7; }
.kb-home-tasks { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .75rem; margin-top: 1.5rem; }
.kb-home-task { min-width: 0; min-height: 4.5rem; display: flex; align-items: center; gap: .75rem; padding: .875rem; border: 1px solid rgba(100,116,139,.2); border-radius: .5rem; background: rgba(255,255,255,.62); transition: border-color .16s ease, background-color .16s ease, transform .16s ease; }
.kb-home-task:hover { border-color: rgba(14,116,144,.55); background: rgba(255,255,255,.9); transform: translateY(-1px); }
.kb-home-task > svg { width: 1.25rem; height: 1.25rem; flex: none; color: var(--kb-action-strong); }
.kb-home-task > span { min-width: 0; }
.kb-home-task strong { display: block; overflow: hidden; color: #0f172a; font-size: .875rem; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.kb-home-task small { display: block; overflow: hidden; margin-top: .2rem; color: #64748b; font-size: .75rem; text-overflow: ellipsis; white-space: nowrap; }
.kb-home-secondary-links { display: flex; flex-wrap: wrap; gap: .75rem 1.5rem; margin-top: 1rem; }
.kb-home-secondary-links a { display: inline-flex; align-items: center; gap: .3rem; color: #475569; font-size: .75rem; }
.kb-home-secondary-links a:hover { color: var(--kb-action-strong); }
.kb-home-secondary-links svg { width: .95rem; height: .95rem; flex: none; }
.kb-home-movers { padding-top: 3rem; }
.kb-home-section-head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.kb-home-section-head h2 { margin: 0; color: #0f172a; font-size: 1.25rem; line-height: 1.4; font-weight: 700; }
.kb-home-section-head > span { color: #64748b; font-size: .75rem; }
.kb-home-mover-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; }
.kb-home-mover { min-width: 0; display: flex; align-items: center; gap: .75rem; padding: 1rem; border: 1px solid rgba(100,116,139,.18); border-radius: .5rem; background: rgba(255,255,255,.72); }
.kb-home-mover > img, .kb-home-icon-fallback { width: 2.75rem; height: 2.75rem; flex: none; border-radius: .5rem; object-fit: cover; background: #cffafe; }
.kb-home-icon-fallback { display: inline-flex; align-items: center; justify-content: center; color: #155e75; font-size: 1rem; font-weight: 700; }
.kb-home-mover-copy { min-width: 0; flex: 1; }
.kb-home-mover-copy h3 { overflow: hidden; margin: 0; color: #0f172a; font-size: .875rem; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.kb-home-mover-copy p { overflow: hidden; margin: .25rem 0 0; color: #64748b; font-size: .75rem; text-overflow: ellipsis; white-space: nowrap; }
.kb-home-change { display: inline-flex; align-items: center; gap: .1rem; flex: none; color: #f43f5e; font-size: .8125rem; font-weight: 700; }
.kb-home-change svg { width: 1rem; height: 1rem; }
.kb-home-new-count, .kb-home-no-risers { margin: .875rem 0 0; color: #64748b; font-size: .75rem; }
.kb-home-new-count a { margin-left: .5rem; color: var(--kb-action-strong); font-weight: 600; }

@media (max-width: 899px) {
  .kb-home-tasks { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kb-home-mover-grid { grid-template-columns: 1fr; }
}
@media (max-width: 767px) {
  .kb-home-page { padding-top: 1.25rem; padding-bottom: 2.5rem; }
  .kb-home-hero { padding-bottom: 1.5rem; }
  .kb-home-hero h1 { font-size: 1.75rem; }
  .kb-home-tasks { grid-template-columns: 1fr; margin-top: 1.25rem; }
  .kb-home-task { min-height: 4rem; }
  .kb-home-movers { padding-top: 2.25rem; }
  .kb-home-section-head { align-items: flex-start; flex-direction: column; gap: .25rem; }
}
@media (prefers-reduced-motion: reduce) {
  .kb-home-task { transition: none; }
}

/* ---------- REQ-135 C3：demo 定稿全局骨架壳 ----------
   只调整承载层，不改 base.html 中的 feed/事件委托契约。旧 kb-* 类仍保留给
   既有测试与局部组件；shell2 是本期新增的视觉边界。 */
.kb-shell2 { background: var(--kb-bg); }
.kb-shell2-topbar {
  height: 3.5rem;
  background: color-mix(in srgb, var(--kb-bg) 95%, transparent);
  border-bottom: 1px solid rgba(100,116,139,.18);
  backdrop-filter: blur(.75rem);
}
.kb-shell2-topbar-inner {
  width: min(calc(100% - 2rem), 72rem);
  gap: .25rem;
}
.kb-shell2-logo {
  margin-right: .75rem;
  color: #0f172a;
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0;
}
.kb-shell2-logo:hover { color: var(--kb-action-strong); }
.kb-shell2-nav {
  min-height: 2.25rem;
  padding: .375rem .75rem;
  border-radius: .375rem;
  color: #64748b;
  font-weight: 400;
}
.kb-shell2-nav:hover { background: rgba(14,116,144,.07); color: #334155; }
.kb-shell2-nav.is-active {
  background: #cffafe;
  color: #0e7490;
  font-weight: 500;
}
.kb-shell2-nav.is-active::after { display: none; }
.kb-shell2-search { width: min(11rem, 16vw); }
.kb-shell2-search input:not([type="hidden"]) {
  min-height: 2rem;
  padding: .35rem .65rem;
  border: 1px solid transparent;
  border-radius: .375rem;
  background: rgba(226,232,240,.62);
  color: #334155;
  font-size: .75rem;
}
.kb-shell2-search input:not([type="hidden"]):focus {
  background: rgba(255,255,255,.9);
  border-color: rgba(14,116,144,.28);
}
.kb-shell2-auth { gap: .35rem; margin-left: .35rem; }
.kb-shell2-auth a { min-height: 2.25rem; padding: .4rem .55rem; color: #64748b; font-size: .8rem; }
.kb-shell2-auth a:hover { color: #0e7490; }
.kb-shell2-auth a:last-child { padding-inline: .7rem; background: #0e7490; color: #ecfeff; border-radius: .375rem; }
.kb-shell2-auth a:last-child:hover { background: #155e75; }
.kb-shell2-app-banner {
  border-bottom: 1px solid rgba(14,116,144,.14);
  background: #ecfeff;
  color: #155e75;
  font-size: .75rem;
}
.kb-shell2-app-banner .kb-app-banner-text a { color: #0e7490; font-weight: 600; text-decoration: none; }
.kb-shell2-app-banner .kb-app-banner-text a:hover { text-decoration: underline; }
.kb-shell2-app-banner .kb-app-banner-x { color: #67a3ad; font-size: 1rem; }
.kb-shell2-app-banner .kb-app-banner-x:hover { color: #155e75; }

@media (max-width: 767px) {
  .kb-shell2-topbar-inner { width: calc(100% - 1rem); }
  .kb-shell2-app-banner { padding-inline: 1rem; }
  .kb-mobile-nav { border-top: 1px solid rgba(100,116,139,.18); box-shadow: 0 -3px 12px rgba(15,23,42,.04); }
  .kb-mobile-tab { color: #64748b; }
  .kb-mobile-tab.is-active { color: var(--kb-action-strong); }
  .kb-mobile-tab.is-active::before { background: var(--kb-action-strong); }
}

@media (min-width: 768px) and (max-width: 900px) {
  .kb-shell2-logo { margin-right: .25rem; font-size: .875rem; }
  .kb-shell2-nav { padding-inline: .4rem; font-size: .8rem; }
  .kb-shell2-search { width: 8rem; }
}

@media (min-width: 768px) {
  .kb-shell2-articles-subnav { width: min(calc(100% - 2rem), var(--kb-content-w)); margin-inline: auto; padding-inline: 0; border-bottom-color: rgba(100,116,139,.16); }
  .kb-shell2-articles-subnav a { margin: 0; padding: .375rem .7rem; border: 0; border-radius: .375rem; color: #64748b; }
  .kb-shell2-articles-subnav a:hover { background: #ecfeff; color: #0e7490; }
  .kb-shell2-articles-subnav a.border-cyan-700 { border: 0; background: #cffafe; color: #0e7490; font-weight: 500; }
}

.kb-shell2-nav.is-active { background: rgba(14,116,144,.10); color: #0e7490; font-weight: 500; }
.kb-shell2-articles-subnav a.border-cyan-700 { background: rgba(14,116,144,.10); color: #0e7490; font-weight: 500; }
.kb-shell2-app-banner { padding-block: .3rem; }

/* ---------- REQ-135 C4：顶栏/文章区按 demo 重排（构成级，非换色） ---------- */

/* 文章区页头：左标签 + 右分段控件（demo ArticlesView 胶囊组） */
.kb-articles-head { width: min(calc(100% - 2rem), var(--kb-content-w)); margin: 1rem auto 0; align-items: center; justify-content: space-between; gap: .75rem; }

/* 页头搜索框（demo ArticlesAllView 同位：页头行右侧） */
.kb-pagehead-search { display: flex; align-items: center; gap: .4rem; padding: .35rem .7rem; border: 1px solid rgba(100,116,139,.22); border-radius: .5rem; background: rgba(255,255,255,.8); flex: none; }
.kb-pagehead-search:focus-within { border-color: rgba(14,116,144,.4); background: #fff; }
.kb-pagehead-search svg { width: .85rem; height: .85rem; color: #94a3b8; flex: none; }
.kb-pagehead-search input { width: 9rem; background: transparent; border: 0; outline: none; font-size: .8rem; color: #334155; }

/* 页内筛选面：小字 chips + 行标签（demo 筛选面形态），替代壳上 pill 大横带 */
.kb-filterface { margin-bottom: .9rem; }
/* 筛选条（2026-09-10 卡拉拍板 B：四组收进下拉面板，页面只留一行） */
.kb-facet-bar { display: flex; align-items: center; gap: .45rem; flex-wrap: wrap; }
.kb-facet-dd { position: relative; }
.kb-facet-dd-btn { list-style: none; display: inline-flex; align-items: center; gap: .3rem; min-height: 2rem; padding: .3rem .8rem; border-radius: 9999px; background: rgba(255,255,255,.75); color: #475569; font-size: .8rem; cursor: pointer; user-select: none; }
.kb-facet-dd-btn::-webkit-details-marker { display: none; }
.kb-facet-dd-btn::after { content: ""; width: .45rem; height: .45rem; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg) translateY(-1px); opacity: .55; transition: transform .15s ease; }
.kb-facet-dd[open] > .kb-facet-dd-btn::after { transform: rotate(225deg) translateY(-1px); }
.kb-facet-dd-btn:hover { color: #0e7490; background: #ecfeff; }
.kb-facet-dd-btn.is-on { background: rgba(14,116,144,.12); color: #0e7490; font-weight: 500; }
.kb-facet-dd-btn b { font-weight: 600; max-width: 9em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kb-facet-dd-btn.is-on b::before { content: "· "; color: #94a3b8; font-weight: 400; }
.kb-facet-dd-panel { position: absolute; z-index: 20; top: calc(100% + .35rem); left: 0; min-width: 16rem; max-width: min(34rem, calc(100vw - 2rem)); max-height: 55vh; overflow-y: auto; padding: .7rem .8rem; background: #fff; border-radius: .9rem; box-shadow: 0 12px 32px -12px rgba(15,23,42,.18), 0 0 0 1px rgba(100,116,139,.08); }
.kb-facet-dd-panel .kb-facet-row { margin-bottom: 0; }
.kb-facet-dd-panel .kb-facet-row--sub { margin-top: .55rem; padding-top: .55rem; border-top: 1px dashed rgba(100,116,139,.18); }
.kb-facet-clear { font-size: .75rem; color: #94a3b8; white-space: nowrap; }
.kb-facet-clear:hover { color: #0e7490; }
@media (max-width: 767px) {
  .kb-facet-bar { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; padding-bottom: .1rem; }
  .kb-facet-bar::-webkit-scrollbar { display: none; }
  .kb-facet-dd-panel { position: fixed; left: .75rem; right: .75rem; top: auto; min-width: 0; max-width: none; max-height: 60vh; }
}
.kb-filterface-label { flex: none; width: 2.2rem; padding-top: .3rem; font-size: .75rem; color: #94a3b8; }

/* ---------- REQ-135 C4 final assembly ---------- */
.kb-topbar-inner { gap: .2rem; }
.kb-articles-head { display: flex; }
.kb-articles-label { display: inline-flex; align-items: center; gap: .45rem; color: #0f172a; font-size: .875rem; font-weight: 600; white-space: nowrap; }
.kb-articles-label svg { width: 1rem; height: 1rem; fill: none; stroke: var(--kb-action-strong); stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.kb-articles-segments { display: flex; align-items: center; gap: .15rem; padding: .25rem; border-radius: 9999px; background: rgba(14,116,144,.08); overflow-x: auto; scrollbar-width: none; flex-shrink: 0; }  /* shrink:0=胶囊永不裁切（2026-09-10 卡拉：显示不全）；移动端媒体查询另给 flex:1 1 auto 保持可滚 */
.kb-articles-segments::-webkit-scrollbar { display: none; }
.kb-articles-segments a { min-height: 2rem; display: inline-flex; align-items: center; gap: .2rem; padding: .3rem .75rem; border-radius: 9999px; color: #64748b; font-size: .8rem; white-space: nowrap; }
.kb-articles-segments a:hover { color: #0f172a; }
.kb-articles-segments a.is-active { background: #fff; color: #0f172a; font-weight: 500; box-shadow: 0 1px 2px rgba(15,23,42,.08); }
.kb-articles-segments small { color: var(--kb-action-strong); font-size: .65rem; }
.kb-items-facets { margin-bottom: 1rem; }
.kb-facet-row { display: flex; align-items: flex-start; gap: .6rem; margin-bottom: .45rem; }
.kb-facet-options { min-width: 0; display: flex; flex-wrap: wrap; gap: .3rem; }
.kb-facet-options a { display: inline-flex; align-items: center; min-height: 1.7rem; padding: .25rem .625rem; border-radius: 9999px; color: #64748b; font-size: .75rem; white-space: nowrap; }
.kb-facet-options a:hover { background: #ecfeff; color: #0e7490; }
.kb-facet-options a.is-active { background: rgba(14,116,144,.12); color: #0e7490; font-weight: 500; }
.kb-facet-options .kb-facet-more { color: var(--kb-action-strong); }
.kb-facet-row--sub { margin-top: -.15rem; }
.kb-facet-row--sub .kb-filterface-label { font-size: .72rem; color: #cbd5e1; }
.kb-facet-row--sub .kb-facet-options a small { color: #94a3b8; }
@media (max-width: 767px) {
  .kb-articles-head { width: 100%; margin-top: .5rem; padding-inline: 1rem; gap: .65rem; overflow: hidden; }
  .kb-articles-label { font-size: .8rem; }
  .kb-articles-segments { flex: 1 1 auto; min-width: 0; }
  .kb-articles-segments a { padding-inline: .6rem; }
  .kb-items-facets { padding-inline: 1rem; overflow: hidden; }
  .kb-facet-row { overflow: hidden; }
  .kb-facet-options { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
  .kb-facet-options::-webkit-scrollbar { display: none; }
  .kb-facet-options a { flex: none; }
}

/* ---------- REQ-137：首页合并 demo HomeView 终版（市场动态 hero + 板块预览） ---------- */
.kb-home-brandbar { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.5rem; }
.kb-home-quicktasks { display: flex; flex-wrap: wrap; align-items: center; gap: .15rem; }
.kb-home-quicktasks a { display: inline-flex; align-items: center; gap: .35rem; padding: .3rem .65rem; border-radius: 9999px; font-size: .85rem; color: #64748b; }
.kb-home-quicktasks a:hover { background: rgba(14,116,144,.07); color: #0e7490; }
.kb-home-quicktasks a svg { width: .9rem; height: .9rem; }
.kb-home-quicktasks-sep { width: 1px; height: 1rem; background: rgba(100,116,139,.25); margin-inline: .4rem; }
.kb-home-quicktasks a.kb-home-minor { font-size: .78rem; }

/* 市场动态 hero：淡青横幅带（demo bg-primary/5 border-y），无框 */
.kb-home-pulse { margin: 1.25rem -1rem; padding: 1.75rem 1rem 1.5rem; background: rgba(14,116,144,.05); border-top: 1px solid rgba(14,116,144,.10); border-bottom: 1px solid rgba(14,116,144,.10); }
.kb-home-pulse-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .25rem .75rem; }
.kb-home-pulse-date { font-size: .72rem; color: #94a3b8; }
.kb-home-pulse-headline h1 { margin: .3rem 0 0; display: flex; flex-wrap: wrap; gap: 0 .75rem; font-size: clamp(1.7rem, 4.5vw, 2.6rem); font-weight: 800; letter-spacing: -0.02em; color: #0f172a; }
.kb-home-pulse-kind { font-size: .72rem; font-weight: 700; letter-spacing: .08em; color: #be123c; }
.kb-home-pulse-kind.is-resonance { color: #6d28d9; }
.kb-home-pulse-sub { margin: .4rem 0 0; font-size: .85rem; color: #64748b; }
.kb-home-pulse-stats { margin-top: 1.1rem; padding-top: 1rem; border-top: 1px solid rgba(14,116,144,.10); display: grid; grid-template-columns: repeat(2, 1fr); gap: .75rem; }
@media (min-width: 640px) { .kb-home-pulse-stats { grid-template-columns: repeat(4, 1fr); } }
.kb-home-pulse-stats strong { display: block; font-size: 1.6rem; font-weight: 800; font-variant-numeric: tabular-nums; color: #0f172a; line-height: 1.15; }
.kb-home-pulse-stats strong.is-up { color: #e11d48; }
.kb-home-pulse-stats strong.is-down { color: #047857; }
.kb-home-pulse-stats span { font-size: .72rem; color: #64748b; }
.kb-home-pulse-dayline { margin-top: .9rem; display: flex; flex-wrap: wrap; align-items: center; gap: .35rem 1rem; font-size: .85rem; }
.kb-home-pulse-dayline > svg { width: .85rem; height: .85rem; color: #d97706; }
.kb-home-pulse-dayitem { display: inline-flex; align-items: baseline; gap: .35rem; }
.kb-home-pulse-dayitem small { font-size: .72rem; color: #64748b; }
.kb-home-calm { margin: .9rem 0 0; font-size: .82rem; color: #64748b; }

/* 本周盘面三栏 + 买量边栏（杂志式非对称） */
.kb-home-board { display: grid; gap: 1.75rem; margin-top: 2rem; }
@media (min-width: 1024px) { .kb-home-board { grid-template-columns: 2fr 1fr; } .kb-home-buy { border-left: 1px solid rgba(100,116,139,.16); padding-left: 1.5rem; } }
.kb-home-week h2, .kb-home-section h2 { margin: 0; font-size: 1.05rem; font-weight: 700; letter-spacing: -0.01em; color: #0f172a; }
.kb-home-week-cols { margin-top: .8rem; display: grid; gap: 1.1rem; }
@media (min-width: 640px) { .kb-home-week-cols { grid-template-columns: repeat(3, 1fr); gap: 0; } .kb-home-week-col + .kb-home-week-col { border-left: 1px solid rgba(100,116,139,.14); padding-left: 1.1rem; } .kb-home-week-col:first-child { padding-right: 1.1rem; } }
.kb-home-week-kind { margin: 0 0 .55rem; font-size: .72rem; font-weight: 700; letter-spacing: .08em; color: #0e7490; }
.kb-home-week-kind.is-new { color: #d97706; }
.kb-home-week-kind.is-up { color: #e11d48; }
.kb-home-week-kind.is-down { color: #047857; }
.kb-home-ev { display: flex; align-items: center; gap: .5rem; padding: .22rem 0; min-width: 0; }
.kb-home-ev img { width: 1.5rem; height: 1.5rem; border-radius: .3rem; object-fit: cover; flex: none; }
.kb-home-ev-fb { width: 1.5rem; height: 1.5rem; flex: none; display: inline-flex; align-items: center; justify-content: center; font-size: .68rem; font-weight: 700; color: #94a3b8; }
.kb-home-ev-name, .kb-home-evlink { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .85rem; color: #1e293b; }
.kb-home-evlink:hover { color: #0e7490; }
.kb-home-ev small { flex: none; font-size: .72rem; color: #64748b; }
.kb-home-ev small.is-up { color: #e11d48; font-weight: 600; }
.kb-home-none { margin: 0; font-size: .75rem; color: #94a3b8; }
.kb-home-week-note { margin: .9rem 0 0; font-size: .72rem; color: #94a3b8; }
.kb-home-week-note a { color: #0e7490; }
.kb-home-buy > .kb-home-week-kind { margin-bottom: .4rem; }

/* 通用板块头/更多链接 */
.kb-home-section { margin-top: 2.25rem; }
.kb-home-section-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .2rem .75rem; margin-bottom: .8rem; }
.kb-home-section-head > span { font-size: .75rem; color: #94a3b8; }
.kb-home-more { font-size: .75rem; color: #64748b; }
.kb-home-more:hover { color: #0e7490; }

/* 热门游戏 8 格 */
.kb-home-hot-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: .6rem; }
@media (min-width: 768px) { .kb-home-hot-grid { grid-template-columns: repeat(8, 1fr); } }
.kb-home-hot { display: flex; flex-direction: column; align-items: center; gap: .3rem; padding: .5rem .25rem; border-radius: .75rem; }
a.kb-home-hot:hover { background: rgba(14,116,144,.06); }
.kb-home-hot img { width: 3rem; height: 3rem; border-radius: .9rem; object-fit: cover; }
.kb-home-hot-fb { width: 3rem; height: 3rem; border-radius: .9rem; display: inline-flex; align-items: center; justify-content: center; background: rgba(14,116,144,.08); color: #0e7490; font-weight: 700; }
.kb-home-hot-name { width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: center; font-size: .72rem; color: #1e293b; }
.kb-home-hot small { font-size: .68rem; color: #94a3b8; }

/* 公众号预览：左发丝线无框卡 */
.kb-home-acc-grid { display: grid; gap: .9rem 2rem; }
@media (min-width: 640px) { .kb-home-acc-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .kb-home-acc-grid { grid-template-columns: repeat(3, 1fr); } }
.kb-home-acc { border-left: 2px solid rgba(14,116,144,.25); padding-left: .75rem; min-width: 0; }
.kb-home-acc-name { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .85rem; font-weight: 600; color: #0f172a; }
.kb-home-acc-name:hover { color: #0e7490; }
.kb-home-acc-title { margin: .25rem 0 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .72rem; color: #64748b; }
.kb-home-acc-meta { margin: .15rem 0 0; font-size: .68rem; color: #94a3b8; }

/* 活动/合作双栏行 */
.kb-home-duo { display: grid; gap: 2rem; margin-top: 0; grid-template-columns: minmax(0, 1fr); }  /* minmax(0,·)=防长标题撑列出视口（390 实测活动/合作区溢出 695px） */
@media (min-width: 1024px) { .kb-home-duo { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
.kb-home-lines { border-top: 1px solid rgba(100,116,139,.14); }
.kb-home-line { display: flex; align-items: baseline; gap: .75rem; padding: .6rem 0; border-bottom: 1px solid rgba(100,116,139,.12); min-width: 0; }
a.kb-home-line:hover .kb-home-line-title { color: #0e7490; }
.kb-home-line-date { flex: none; font-size: .72rem; font-weight: 700; font-variant-numeric: tabular-nums; color: #0e7490; }
.kb-home-line-title { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .85rem; color: #1e293b; }
.kb-home-line-title small { font-size: .72rem; color: #64748b; font-weight: 400; }
.kb-home-line-meta { flex: none; font-size: .72rem; color: #94a3b8; max-width: 40%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kb-home-line--coop { flex-wrap: wrap; row-gap: .1rem; }
.kb-home-line--coop .kb-home-line-meta { max-width: 100%; flex-basis: 100%; }

/* 编辑精选沉底 */
.kb-home-feat-grid { display: grid; gap: 1rem; }
@media (min-width: 640px) { .kb-home-feat-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .kb-home-feat-grid { grid-template-columns: repeat(3, 1fr); } }
.kb-home-feat { display: flex; flex-direction: column; gap: .45rem; min-width: 0; }
.kb-home-feat img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: .6rem; }
.kb-home-feat-title { font-size: .85rem; font-weight: 500; line-height: 1.45; color: #0f172a; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
a.kb-home-feat:hover .kb-home-feat-title { color: #0e7490; }
.kb-home-feat small { font-size: .72rem; color: #94a3b8; }

/* 图标叠层 fallback：fb 首字垫底 + img 覆盖，img onerror remove 后露 fb（预览/弱网破图不脏版） */
.kb-home-hot-ic, .kb-home-ev-ic { position: relative; display: inline-block; flex: none; }
.kb-home-hot-ic { width: 3rem; height: 3rem; }
.kb-home-ev-ic { width: 1.5rem; height: 1.5rem; }
.kb-home-hot-ic .kb-home-hot-fb, .kb-home-ev-ic .kb-home-ev-fb { position: absolute; inset: 0; }
.kb-home-hot-ic img, .kb-home-ev-ic img { position: absolute; inset: 0; width: 100%; height: 100%; }

/* ---------- REQ-135 四期半：活动/合作页照 demo 终版构成 ---------- */
/* 活动页头右侧：分类 pills（demo 形态：细边圆 pill，active=雾面青） */
.activity-head-tools { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: .5rem .75rem; }
.activity-catpills { display: flex; flex-wrap: wrap; gap: .35rem; }
.activity-catpill { display: inline-flex; align-items: center; gap: .25rem; padding: .28rem .65rem; border: 1px solid rgba(100,116,139,.22); border-radius: 9999px; font-size: .75rem; color: #64748b; }
.activity-catpill:hover { color: #0f172a; border-color: rgba(100,116,139,.4); }
.activity-catpill.is-active { border-color: rgba(14,116,144,.45); background: rgba(14,116,144,.10); color: #0e7490; font-weight: 500; }
.activity-catpill-n { font-size: .68rem; opacity: .75; }
.activity-publish-link { font-size: .78rem; color: #64748b; }
.activity-publish-link:hover { color: #0e7490; }

/* 工具行：生产搜索/日期功能收成一行小件 */
.activity-toolrow { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: -.5rem 0 1.25rem; }
.activity-toolrow-search { flex: 1 1 16rem; max-width: 24rem; display: flex; align-items: center; gap: .45rem; height: 2.25rem; padding: 0 .75rem; border: 1px solid rgba(100,116,139,.22); border-radius: .5rem; background: rgba(255,255,255,.8); }
.activity-toolrow-search:focus-within { border-color: rgba(14,116,144,.4); background: #fff; }
.activity-toolrow-date { display: flex; align-items: center; gap: .4rem; height: 2.25rem; padding: 0 .65rem; border: 1px solid rgba(100,116,139,.22); border-radius: .5rem; background: rgba(255,255,255,.8); }
.activity-toolrow-clear { font-size: .75rem; color: #64748b; }
.activity-toolrow-clear:hover { color: #0f172a; }

/* 焦点场：整幅 21:9 大图 + 信息区（demo 单栏轻边大卡） */
.activity-hero2 { position: relative; overflow: hidden; border: 1px solid rgba(100,116,139,.16); border-radius: 1.25rem; background: #fff; }
.activity-hero2-visual { aspect-ratio: 21 / 9; width: 100%; overflow: hidden; }
.activity-hero2-visual img { width: 100%; height: 100%; object-fit: cover; display: block; }
.activity-hero2-visual.is-broken { display: none; }
.activity-hero2-copy { padding: 1.25rem 1.5rem 1.5rem; }
.activity-hero2-date { font-weight: 600; font-variant-numeric: tabular-nums; color: #0e7490; }

/* 在跑网格：封面主视觉卡（demo 构成：图+黑浮标+密信息） */
.activity-grid2 { display: grid; gap: 1.25rem; margin-top: 1.5rem; }
@media (min-width: 640px) { .activity-grid2 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .activity-grid2 { grid-template-columns: repeat(3, 1fr); } }
.activity-card2 { position: relative; overflow: hidden; border: 1px solid rgba(100,116,139,.16); border-radius: .9rem; background: #fff; transition: transform .15s ease, box-shadow .15s ease; }
.activity-card2:hover { transform: translateY(-2px); box-shadow: 0 .5rem 1.5rem rgba(15,23,42,.08); }
.activity-card2-media { position: relative; aspect-ratio: 16 / 9; overflow: hidden; }
.activity-card2-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.activity-card2-media.is-broken img { display: none; }
.activity-card2-cat { position: absolute; left: .65rem; top: .65rem; padding: .22rem .6rem; border-radius: 9999px; background: rgba(15,23,42,.55); color: #fff; font-size: .68rem; font-weight: 500; backdrop-filter: blur(4px); }
.activity-card2-body { padding: .8rem .95rem .95rem; }
.activity-card2-title { margin: 0; font-size: .92rem; font-weight: 600; line-height: 1.4; color: #0f172a; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.activity-card2-title a:hover { color: #0e7490; }
.activity-card2-meta { margin: .4rem 0 0; display: flex; flex-wrap: wrap; align-items: center; gap: .2rem .7rem; font-size: .72rem; color: #64748b; }
.activity-card2-date { font-weight: 500; font-variant-numeric: tabular-nums; color: #334155; }
.activity-card2-org { margin: .25rem 0 0; display: flex; align-items: center; gap: .3rem; font-size: .72rem; color: #64748b; }

/* 合作页：页头 demo 构成（H1 大黑+副标+按钮组文档流+border-b） */
.kb-cooperation-hero { display: block; border-bottom: 1px solid rgba(100,116,139,.18); padding-bottom: 1.5rem; }
.kb-cooperation-hero h1 { margin: .3rem 0 0; font-size: clamp(1.6rem, 4vw, 2.25rem); font-weight: 800; letter-spacing: -0.02em; color: #0f172a; }
.kb-cooperation-hero-actions { margin-top: 1rem; display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1.25rem; }
.kb-cooperation-person-actions .kb-cooperation-action-primary,
.kb-cooperation-person-actions .kb-cooperation-action { font-size: .75rem; }
/* 供需墙标题 + 名录找/供 pills 分色（demo CooperationView 口径：找=sky 供=emerald） */
.kb-cooperation-focus-looking > h2 { color: #0369a1; }
.kb-cooperation-focus-offering > h2 { color: #047857; }
.kb-cooperation-tag-looking { background: rgba(2,132,199,.09); color: #0369a1; }
.kb-cooperation-tag-offering { background: rgba(5,150,105,.09); color: #047857; }

/* ---------- REQ-136 热点追踪（demo 定稿 SSR 翻译） ---------- */
.kb-trk-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: .5rem 1.25rem; border-bottom: 2px solid #0f172a; padding-bottom: 1rem; margin-bottom: 1.75rem; }
.kb-trk-head h1 { margin: 0; font-size: 1.875rem; font-weight: 700; letter-spacing: -0.02em; color: #0f172a; }
.kb-trk-headline-stats { margin: 0; font-size: .875rem; color: #64748b; font-variant-numeric: tabular-nums; }
.kb-trk-headline-stats b { color: #0f172a; }
.kb-trk-headline-stats .kb-trk-num-main { color: #0e7490; }
.kb-trk-head-link { margin-left: auto; font-size: .875rem; font-weight: 500; color: #0e7490; }
.kb-trk-head-link:hover { text-decoration: underline; }
.kb-trk-empty { border: 1px dashed rgba(100,116,139,.4); border-radius: .75rem; padding: 1.5rem; font-size: .875rem; color: #64748b; }
.kb-trk-eyebrow { margin: 0; font-size: .72rem; font-weight: 500; text-transform: uppercase; letter-spacing: .22em; color: #0e7490; }
.kb-trk-h2 { margin: 0; font-size: 1.25rem; font-weight: 700; letter-spacing: -0.01em; color: #0f172a; }
.kb-trk-h3 { margin: 0; font-size: 1rem; font-weight: 700; color: #0f172a; }

.kb-trk-cols { display: grid; gap: 2rem; }
@media (min-width: 1024px) { .kb-trk-cols { grid-template-columns: 2fr 1fr; } }
.kb-trk-side { display: flex; flex-direction: column; gap: 2rem; }
.kb-trk-side > section { min-width: 0; }

/* 焦点大卡（demo：白卡 shadow-md 海拔） */
.kb-trk-focus { display: flex; align-items: flex-start; gap: 1.25rem; border-radius: .9rem; background: rgba(255,255,255,.8); padding: 1.5rem; box-shadow: 0 .25rem .8rem rgba(15,23,42,.07); transition: transform .15s ease, box-shadow .15s ease; }
.kb-trk-focus:hover { transform: translateY(-2px); box-shadow: 0 .6rem 1.5rem rgba(15,23,42,.1); }
.kb-trk-focus > img { height: 5rem; width: 5rem; border-radius: 1rem; flex-shrink: 0; }
.kb-trk-focus-titlerow { margin-top: .25rem; display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem .75rem; }
.kb-trk-focus-titlerow h2 { margin: 0; font-size: 1.5rem; font-weight: 700; letter-spacing: -0.02em; color: #0f172a; }
.kb-trk-focus:hover .kb-trk-focus-titlerow h2 { color: #0e7490; }
.kb-trk-rankchip { display: inline-flex; align-items: baseline; gap: .25rem; font-size: .85rem; color: #64748b; }
.kb-trk-rankchip b { color: #0f172a; font-variant-numeric: tabular-nums; }
.kb-trk-rankchip i { font-style: normal; font-size: .72rem; }
.kb-trk-rankchip .is-up { color: #f43f5e; } .kb-trk-rankchip .is-down { color: #059669; } .kb-trk-rankchip .is-flat { color: #94a3b8; }
.kb-trk-focus-headline { margin: .5rem 0 0; font-size: 1rem; line-height: 1.45; color: #334155; }
.kb-trk-focus-why { margin: .4rem 0 0; font-size: .875rem; line-height: 1.6; color: #64748b; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* 次级焦点三卡 */
.kb-trk-seconds { display: grid; gap: 1rem; margin-top: 1.25rem; }
@media (min-width: 640px) { .kb-trk-seconds { grid-template-columns: repeat(3, 1fr); } }
.kb-trk-second { display: block; border-radius: .6rem; background: rgba(255,255,255,.6); padding: 1rem; box-shadow: 0 .1rem .4rem rgba(15,23,42,.05); transition: transform .15s ease, box-shadow .15s ease; }
.kb-trk-second:hover { transform: translateY(-2px); box-shadow: 0 .4rem 1rem rgba(15,23,42,.08); }
.kb-trk-second-name { margin: 0; font-size: .875rem; font-weight: 700; color: #0f172a; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kb-trk-second:hover .kb-trk-second-name { color: #0e7490; }
.kb-trk-second-headline { margin: .5rem 0 0; font-size: .75rem; line-height: 1.45; color: #475569; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* sparkline（方向口径同 views_rank：rank 小=好=在上） */
.kb-trk-spark { width: 96px; height: 26px; stroke: #0e7490; stroke-width: 1.6; }

/* 事件流 */
.kb-trk-feed-pills { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; margin-top: .75rem; }
.kb-trk-pill { padding: .28rem .75rem; border-radius: 9999px; font-size: .75rem; font-weight: 500; background: rgba(100,116,139,.1); color: #64748b; }
.kb-trk-pill:hover { color: #0f172a; }
.kb-trk-pill.is-active { background: #0e7490; color: #fff; }
.kb-trk-pill-sep { width: 1px; height: 1rem; background: rgba(100,116,139,.25); margin: 0 .3rem; }
.kb-trk-feed-day { display: flex; align-items: baseline; gap: .75rem; margin-top: 1.5rem; }
.kb-trk-feed-day time { font-weight: 700; font-size: .875rem; font-variant-numeric: tabular-nums; color: #0f172a; }
.kb-trk-feed-rule { height: 1px; flex: 1; align-self: center; background: rgba(100,116,139,.18); }
.kb-trk-feed { list-style: none; margin: .75rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .8rem; }
.kb-trk-feed > li { display: flex; align-items: flex-start; gap: .75rem; }
.kb-trk-feed-fb { display: flex; align-items: center; justify-content: center; height: 2.25rem; width: 2.25rem; border-radius: .75rem; background: rgba(100,116,139,.12); font-weight: 700; font-size: .875rem; color: #64748b; }
.kb-trk-feed-name { font-weight: 500; font-size: .875rem; color: #0f172a; }
.kb-trk-feed-name:hover { color: #0e7490; }
.kb-trk-feed-summary { margin: .15rem 0 0; font-size: .875rem; line-height: 1.55; color: #64748b; }
.kb-trk-more { display: inline-block; border: 1px solid rgba(100,116,139,.3); border-radius: 9999px; padding: .5rem 1.25rem; font-size: .875rem; color: #64748b; }
.kb-trk-more:hover { border-color: #0e7490; color: #0e7490; }

/* 侧栏 */
.kb-trk-hot { list-style: none; margin: .75rem 0 0; padding: 0; }
.kb-trk-hot > li { border-top: 1px solid rgba(100,116,139,.12); }
.kb-trk-hot > li:first-child { border-top: 0; }
.kb-trk-hot > li > a { display: flex; align-items: center; gap: .6rem; padding: .5rem 0; }
.kb-trk-hot-no { width: 1.25rem; text-align: right; font-size: .875rem; font-weight: 700; font-variant-numeric: tabular-nums; color: #94a3b8; }
.kb-trk-hot-no.is-top { color: #0e7490; }
.kb-trk-hot-name { display: block; font-size: .875rem; font-weight: 500; color: #0f172a; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kb-trk-hot > li > a:hover .kb-trk-hot-name { color: #0e7490; }
.kb-trk-hot-ranks { display: block; font-size: .72rem; color: #64748b; font-variant-numeric: tabular-nums; }
.kb-trk-side-list { list-style: none; margin: .75rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .65rem; }
.kb-trk-side-sub { display: block; margin-top: .15rem; font-size: .75rem; color: #64748b; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kb-trk-side-nav { display: flex; gap: 1rem; border-top: 1px solid rgba(100,116,139,.18); padding-top: 1rem; font-size: .875rem; font-weight: 500; }
.kb-trk-side-nav a { color: #0e7490; }
.kb-trk-side-nav a:hover { text-decoration: underline; }

/* 主体列表卡 */
.kb-trk-card { display: block; border-radius: 1rem; border: 1px solid rgba(100,116,139,.18); background: rgba(255,255,255,.7); padding: 1rem; transition: transform .15s ease, border-color .15s ease; }
.kb-trk-card:hover { transform: translateY(-2px); border-color: rgba(14,116,144,.5); }
.kb-trk-card-fb { display: flex; align-items: center; justify-content: center; height: 2.75rem; width: 2.75rem; border-radius: .75rem; background: rgba(100,116,139,.12); font-weight: 700; color: #64748b; flex-shrink: 0; }

/* 详情·大事记：2026-09-11 主体详情改版——深色巨块退役（与全站浅色语言断裂+占版面 70%，
   卡拉拍板「就先按这个改吧」），改浅色发丝线时间线 kb-trkg-ms-*；
   kb-ms-* 颜色类保留（tracking_archive 档案馆圆点在用）。 */
.kb-ms-surge { background: #f43f5e; } .kb-ms-cooling { background: #059669; } .kb-ms-entry { background: #f59e0b; }
.kb-ms-reentry { background: #0284c7; } .kb-ms-story { background: #8b5cf6; } .kb-ms-spread { background: #0891b2; }
.kb-ms-company { background: #64748b; }

/* 主体详情 v2（原型 audit/trk-game-proto-v2）：文字叙事+发丝线，零卡片零色块 */
.kb-trkg-back { font-size: .8rem; color: #94a3b8; text-decoration: none; }
.kb-trkg-back:hover { color: #0e7490; }
.kb-trkg-sec { font-size: .72rem; letter-spacing: .18em; color: #94a3b8; font-weight: 600; }
.kb-trkg-secblk { margin-top: 2.5rem; padding-top: 2rem; border-top: 1px solid #e2e8f0; }
.kb-trkg-phases { margin-top: 1.5rem; display: flex; flex-wrap: wrap; gap: .5rem 0; font-size: .78rem; color: #475569; }
.kb-trkg-ph { display: flex; align-items: center; gap: .5rem; }
.kb-trkg-ph-dot { width: 6px; height: 6px; border-radius: 50%; background: #0e7490; flex-shrink: 0; }
.kb-trkg-ph-dot--spread { background: #8b5cf6; }
.kb-trkg-ph time { color: #94a3b8; font-variant-numeric: tabular-nums; }
.kb-trkg-ph-conn { width: 2.5rem; height: 1px; background: #e2e8f0; margin: 0 .75rem; align-self: center; }
.kb-trkg-ranks { margin-top: 2.25rem; padding-top: 1.75rem; border-top: 1px solid #e2e8f0; display: flex; gap: 2.5rem; flex-wrap: wrap; align-items: flex-end; }
.kb-trkg-num { font-size: 2.4rem; font-weight: 800; letter-spacing: -.03em; font-variant-numeric: tabular-nums; line-height: 1; color: #0f172a; }
.kb-trkg-num small { font-size: 1.1rem; font-weight: 600; color: #94a3b8; margin-right: .15rem; }
.kb-trkg-lbl { margin-top: .4rem; font-size: .78rem; color: #475569; }
.kb-trkg-chg { font-size: .72rem; margin-left: .4rem; color: #94a3b8; }
.kb-trkg-rank-sub { font-size: .8rem; color: #94a3b8; line-height: 1.9; padding-bottom: .3rem; }
.kb-trkg-rank-sub b { color: #475569; font-variant-numeric: tabular-nums; }
.kb-trkg-trends { margin-top: 2.25rem; }
.kb-trkg-trend-row { margin-top: 1.1rem; display: grid; grid-template-columns: 4.5rem 1fr 6rem; gap: 1rem; align-items: center; }
.kb-trkg-trend-name { font-size: .8rem; color: #475569; }
.kb-trkg-trend-row svg { width: 100%; height: 44px; display: block; }
.kb-trkg-trend-row svg polyline { fill: none; stroke: #0e7490; stroke-width: 1.5; vector-effect: non-scaling-stroke; opacity: .85; }
.kb-trkg-trend-meta { font-size: .72rem; color: #94a3b8; text-align: right; font-variant-numeric: tabular-nums; line-height: 1.5; }
.kb-trkg-trend-note { margin-top: .75rem; font-size: .72rem; color: #94a3b8; }
.kb-trkg-xplat { margin-top: 2.25rem; }
.kb-trkg-xplat-grid { margin-top: 1.1rem; display: grid; grid-template-columns: 1fr 1fr; gap: .2rem 2rem; }
.kb-trkg-xplat-row { display: flex; align-items: baseline; gap: .75rem; padding: .35rem 0; border-bottom: 1px dashed #e2e8f0; font-size: .82rem; }
.kb-trkg-xplat-plat { color: #475569; width: 5.5rem; flex-shrink: 0; }
.kb-trkg-xplat-boards { color: #94a3b8; font-size: .72rem; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kb-trkg-xplat-rk { font-weight: 700; font-variant-numeric: tabular-nums; }
.kb-trkg-xplat-rk.is-top { color: #0e7490; }
.kb-trkg-xplat-date { font-size: .68rem; color: #94a3b8; font-variant-numeric: tabular-nums; }
.kb-trkg-media-row { margin-top: .8rem; display: grid; grid-template-columns: 5rem 1fr 3rem; gap: .75rem; align-items: center; font-size: .8rem; }
.kb-trkg-media-name { color: #475569; }
.kb-trkg-bar { height: 4px; border-radius: 2px; background: #e2e8f0; overflow: hidden; }
.kb-trkg-bar i { display: block; height: 100%; background: #0e7490; opacity: .55; }
.kb-trkg-pct { text-align: right; color: #475569; font-variant-numeric: tabular-nums; }
.kb-trkg-adnote { margin-top: .75rem; font-size: .75rem; color: #94a3b8; }
.kb-trkg-ms-list { margin-top: 1.25rem; list-style: none; padding: 0 0 0 1.1rem; border-left: 1px solid #e2e8f0; }
.kb-trkg-ms { position: relative; padding: .65rem 0 .65rem .75rem; }
.kb-trkg-ms::before { content: ""; position: absolute; left: calc(-1.1rem - 4px); top: 1.15rem; width: 7px; height: 7px; border-radius: 50%; background: #cbd5e1; }
.kb-trkg-ms.k-surge::before { background: #f43f5e; }
.kb-trkg-ms.k-cooling::before { background: #059669; }
.kb-trkg-ms.k-reentry::before, .kb-trkg-ms.k-entry::before { background: #0e7490; }
.kb-trkg-ms.k-spread::before, .kb-trkg-ms.k-story::before { background: #8b5cf6; }
.kb-trkg-ms-meta { font-size: .72rem; color: #94a3b8; display: flex; gap: .6rem; align-items: baseline; }
.kb-trkg-ms-meta time { font-variant-numeric: tabular-nums; }
.kb-trkg-ms-kind { font-weight: 600; color: #475569; }
.kb-trkg-ms-title { margin-top: .2rem; font-size: .88rem; line-height: 1.6; color: #1e293b; }
.kb-trkg-ms-ev { font-size: .72rem; color: #94a3b8; text-decoration: none; opacity: 0; transition: opacity .15s; margin-left: .5rem; }
.kb-trkg-ms:hover .kb-trkg-ms-ev, .kb-trkg-ms-ev:focus-visible { opacity: 1; }
.kb-trkg-ms-ev:hover { color: #0e7490; }
.kb-trkg-press { margin-top: 1rem; list-style: none; padding: 0; }
.kb-trkg-press li { padding: .45rem 0; border-bottom: 1px dashed #e2e8f0; font-size: .84rem; line-height: 1.6; }
.kb-trkg-press li time { color: #94a3b8; font-size: .72rem; font-variant-numeric: tabular-nums; margin-right: .6rem; }
.kb-trkg-press li a { color: #1e293b; text-decoration: none; }
.kb-trkg-press li a:hover { color: #0e7490; }
.kb-trkg-official { margin-top: 1.25rem; display: flex; gap: .6rem; align-items: baseline; font-size: .84rem; }
.kb-trkg-official-tag { font-size: .68rem; color: #0e7490; border: 1px solid #0e7490; border-radius: 3px; padding: .1rem .4rem; opacity: .75; flex-shrink: 0; }
.kb-trkg-official a { color: #0e7490; text-decoration: none; }
.kb-trkg-official a:hover { text-decoration: underline; }
.kb-trkg-official time { color: #94a3b8; font-size: .72rem; }
@media (min-width: 1024px) { .kb-trkg-narr { display: grid; grid-template-columns: 1.5fr 1fr; gap: 2rem; } }
@media (max-width: 1023px) { .kb-trkg-narr > div + div { margin-top: 2rem; } }
@media (max-width: 640px) {
  .kb-trkg-ranks { gap: 1.5rem; }
  .kb-trkg-num { font-size: 2rem; }
  .kb-trkg-trend-row { grid-template-columns: 3.5rem 1fr 4.5rem; gap: .6rem; }
  .kb-trkg-xplat-grid { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) { .kb-trkg-ms-ev { transition: none; } }

/* 赛道 */
.kb-trk-track { border: 1px solid rgba(100,116,139,.18); border-radius: 1rem; background: rgba(255,255,255,.7); padding: 1.25rem; }
.kb-trk-track-summary { display: flex; align-items: center; gap: 1rem; cursor: pointer; list-style: none; }
.kb-trk-track-summary::-webkit-details-marker { display: none; }
.kb-trk-rel { display: inline-flex; align-items: center; gap: .35rem; border: 1px solid rgba(100,116,139,.25); border-radius: 9999px; padding: .3rem .75rem; font-size: .8rem; color: #334155; transition: border-color .15s ease, color .15s ease; }
.kb-trk-rel:hover { border-color: rgba(14,116,144,.5); color: #0e7490; }

/* 档案馆章节目点复用 kb-ms-* 彩点 */

/* REQ-136 补丁：arbitrary 类的原生替代（预编译 tw.css 不含） */
.kb-trk-dot { position: absolute; left: -26px; top: .45rem; height: .65rem; width: .65rem; border-radius: 9999px; border: 2px solid #fff; }
.kb-trk-chapter { position: relative; margin-top: 3rem; }
.kb-trk-chapter:first-child { margin-top: 0; }
.kb-trk-rule { height: 2px; width: 6rem; background: #0f172a; margin: 1.5rem auto 0; }
.kb-trk-close-hint { display: none; }
details[open] .kb-trk-open-hint { display: none; }
details[open] .kb-trk-close-hint { display: inline; }

/* ===== REQ-149 切片2：首页下载渠道栏（kb-home-mover 同款视觉语言，卡拉 09-15 原型 v2 拍板）===== */
.kb-getapp-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; }
.kb-getapp-cell { min-width: 0; display: flex; align-items: center; gap: .75rem; padding: 1rem; border: 1px solid rgba(100,116,139,.18); border-radius: .5rem; background: rgba(255,255,255,.72); text-decoration: none; color: inherit; }
a.kb-getapp-cell:hover { background: rgba(14,116,144,.06); }
.kb-getapp-qr { width: 4.5rem; height: 4.5rem; flex: none; border-radius: .5rem; object-fit: contain; background: #fff; cursor: zoom-in; }
.kb-getapp-ic { width: 2.75rem; height: 2.75rem; flex: none; border-radius: .5rem; display: inline-flex; align-items: center; justify-content: center; color: #fff; font-weight: 800; font-size: .8rem; }
.kb-getapp-ic--android { background: #16a34a; }
.kb-getapp-ic--ios { background: #0f172a; }
.kb-getapp-copy { min-width: 0; flex: 1; }
.kb-getapp-copy h3 { margin: 0; overflow: hidden; color: #0f172a; font-size: .875rem; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.kb-getapp-copy p { margin: .25rem 0 0; overflow: hidden; color: #64748b; font-size: .75rem; text-overflow: ellipsis; white-space: nowrap; }
.kb-getapp-actions a, .kb-getapp-go { color: var(--kb-action-strong); font-weight: 600; font-size: .75rem; text-decoration: none; }
.kb-getapp-linkbtn { margin-left: .6rem; padding: 0; border: 0; background: none; color: var(--kb-action-strong); font-weight: 600; font-size: .75rem; cursor: pointer; }
.kb-getapp-overlay { position: fixed; inset: 0; z-index: 80; display: flex; align-items: center; justify-content: center; padding: 1.5rem; background: rgba(15,23,42,.55); }
.kb-getapp-overlay[hidden] { display: none; }
.kb-getapp-overlay-box { max-width: 22rem; padding: 1.25rem; border-radius: .75rem; background: #fff; text-align: center; }
.kb-getapp-overlay-box img { display: block; width: 16rem; height: 16rem; margin: 0 auto; object-fit: contain; }
.kb-getapp-overlay-box p { margin: .6rem 0 0; color: #64748b; font-size: .75rem; }
@media (max-width: 900px) { .kb-getapp-grid { grid-template-columns: 1fr; } }

/* REQ-159 搜索命中高亮+上下文行（ Tailwind 裁剪坑教训：不用新工具类，住 app.css ） */
mark { background: #fde68a; border-radius: .15rem; padding: 0 .08rem; }
.kb-match-ctx { margin-top: .35rem; padding: .3rem .55rem; border: 1px solid #fde68a; border-radius: .45rem; background: #fffbeb; color: #92400e; font-size: .74rem; line-height: 1.5; }
