/* ============================================================
   OpsDaily \u524D\u7AEF\u6837\u5F0F v3.1 \u2014\u2014 Cool Dark Intelligence
   \u89C6\u89C9\u8BED\u8A00\uFF1A\u6DF1\u84DD\u7070\u5E95\uFF08\u4E0D\u662F\u7EAF\u9ED1\uFF09\u30011px \u51B7\u8272\u8FB9\u6846\u3001\u5C0F\u5706\u89D2\uFF086\u201312px\uFF09\u3001\u65E0\u6E10\u53D8\u3001\u65E0\u73BB\u7483\u6548\u679C\u3002
   \u989C\u8272\u8BED\u4E49\uFF1A\u6280\u672F=\u79D1\u6280\u7D2B / \u8D8B\u52BF=\u9752 / \u63A8\u6F14=\u91D1 / \u98CE\u9669=\u7EA2 / \u4EA4\u4E92=\u4E3B\u84DD / \u666E\u901A\u4FE1\u606F=\u7070\u84DD\u3002
   \u7ED3\u6784\uFF1A\u2460 \u8BBE\u8BA1\u4EE4\u724C \u2461 \u57FA\u7840\u4E0E\u6392\u7248 \u2462 \u9876\u680F \u2463 \u7248\u5FC3\u4E0E\u5361\u7247 \u2464 \u8868\u5355\u4E0E\u6309\u94AE
         \u2465 \u9996\u9875\u60C5\u62A5\u5361 \u2466 \u901A\u7528\u5C0F\u4EF6 \u2467 \u6298\u53E0\u4E0E\u8BC1\u636E \u2468 \u51B2\u51FB / \u5DE5\u4F5C / \u4F01\u4E1A
         \u2469 \u8D8B\u52BF \u246A \u539F\u59CB\u8D44\u8BAF \u246B 2.1 \u6280\u672F\u77ED\u5361 / \u884C\u4E1A / \u63A8\u6F14 \u246C 2.2 \u9605\u8BFB\u9875
         \u246D 2.3 Industry Watch + \u9996\u9875\u4E24\u680F Editorial Layout \u246E \u7A7A\u6001\u4E0E\u5DE5\u5177\u7C7B \u246F \u54CD\u5E94\u5F0F
         \u2470 Light \u4E3B\u9898\uFF08Phase 2B-1 \u65B0\u589E\uFF09
   \u6CE8\u610F\uFF1A\u6240\u6709\u6805\u683C\u4E0E flex \u5B50\u9879\u5747\u8BBE min-width:0\uFF0C\u957F\u82F1\u6587\u6280\u672F\u540D\u8BCD\u91C7\u7528
         overflow-wrap:anywhere \u6362\u884C\uFF0C\u7ED3\u6784\u6027\u4FEE\u590D\u6A2A\u5411\u6EA2\u51FA\uFF08\u4E0D\u88C1\u526A\u5185\u5BB9\uFF09\u3002
   ============================================================ */

/* ============================================================
   \u2460 \u8BBE\u8BA1\u4EE4\u724C\uFF08Design Tokens\uFF09\u2014\u2014 Cool Dark Intelligence
   ------------------------------------------------------------
   \u4E3B\u9898\u7CFB\u7EDF\uFF08OpsDaily 3.0 \u00B7 Phase 2B-1\uFF09\uFF1A
   - \u672C\u5757\u662F **Dark\uFF08\u5F53\u524D 2.4 \u57FA\u51C6\uFF09**\uFF0C\u4E5F\u662F\u65E0 JS \u65F6\u7684\u9ED8\u8BA4\uFF1B
   - Light \u8986\u76D6\u5728\u6587\u4EF6\u672B\u5C3E\u300C\u2470 Light \u4E3B\u9898\u300D\u4E00\u8282\uFF0C**\u53EA\u8986\u76D6\u989C\u8272 token**\uFF0C
     \u5E03\u5C40 / \u5B57\u53F7 / \u5706\u89D2 / \u5BBD\u5EA6\u7B49\u975E\u989C\u8272 token \u5168\u90E8\u7EE7\u627F\uFF0C\u56E0\u6B64\u5E03\u5C40\u96F6\u56DE\u5F52\uFF1B
   - \u751F\u6548\u4F18\u5148\u7EA7\uFF1A\u663E\u5F0F\u5C5E\u6027 > \u7CFB\u7EDF\u504F\u597D > Dark \u9ED8\u8BA4
       \u2460 :root[data-theme="dark"]  \u7528\u6237\u624B\u52A8\u9009 Dark
       \u2461 :root[data-theme="light"] \u7528\u6237\u624B\u52A8\u9009 Light
       \u2462 @media (prefers-color-scheme: light) + :root:not([data-theme])
                                \u7528\u6237\u4ECE\u672A\u624B\u52A8\u9009\u62E9 \u2192 \u8DDF\u968F\u7CFB\u7EDF
   - data-theme \u7531\u5404\u9875\u9762 <head> \u5185\u8054\u7684\u4E00\u5C0F\u6BB5\u811A\u672C\u5728 CSS \u4E4B\u524D\u8BBE\u7F6E\uFF0C
     \u5E76\u7528 localStorage \u952E opsdaily-theme \u8BB0\u4F4F\u7528\u6237\u9009\u62E9\uFF08\u8BE6\u89C1 static/theme.js\uFF09\u3002

   \u26A0 \u6B64\u6587\u4EF6\u7684\u4E2D\u6587\u6CE8\u91CA\u5728 Phase 2B-1 \u671F\u95F4\u66FE\u88AB PowerShell
     \u7684 CP936 \u4EE3\u7801\u9875\u5F80\u8FD4\u8BFB\u5199\u635F\u574F\uFF0C\u7EA6 444 \u4E2A\u5B57\u7B26\u4E0D\u53EF\u9006\u5730\u53D8\u4E3A U+FFFD\u3002
     \u672C\u8282\u4E0E\u6587\u4EF6\u5934\u5DF2\u6539\u5199\u4E3A ASCII \u8F6C\u4E49\u4EE5\u907F\u514D\u518D\u6B21\u53D7\u635F\uFF1B
     \u5176\u4F59\u6BB5\u843D\u6CE8\u91CA\u5927\u4F53\u4ECD\u53EF\u8BFB\uFF0C\u5C11\u6570\u4F4D\u7F6E\u6709 U+FFFD\u3002
     **\u4EE3\u7801\u672C\u8EAB\uFF08\u9009\u62E9\u5668 / \u5C5E\u6027 / \u503C\uFF09\u672A\u53D7\u5F71\u54CD\uFF0C\u5DF2\u9010\u884C\u6821\u9A8C\u3002**
   ============================================================ */

:root {
  color-scheme: dark;

  /* 底色与表�n��深蓝灰，避免� ��压抑感） */
  --bg: #0F1115;
  --surface: #151922;
  --surface-raised: #1B202B;
  --surface-hover: #222938;

  /* 文本（冷调高对比�?*/
  --text-primary: #F1F5F9;
  --text-secondary: #B8C1CF;
  --text-muted: #7D8796;

  /* �]��色（克制使用：�色即吡���?*/
  --accent: #5EA2FF;   /* 交互 / 主蓝 */
  --tech: #8B8FF7;     /* 技�$��科技紬�� */
  --trend: #42CDB7;    /* 趋势（青�?*/
  --forecast: #E8B84A; /* 推演 / 预测（金�?*/
  --danger: #E76F79;   /* 风险 / 成本上升（红�?*/

  /* 边� （冷蓝，比纯白透明度更贴合深蓝底） */
  --border: #273040;

  /* 追加令牌 */
  --border-strong: #35415A;

  --text-link: #8CBCFF;
  --success: #4ED2A6;

  /* 文本色别名（兼�旧类名与�]��写法�?*/
  --ink: var(--text-secondary);
  --ink-strong: var(--text-primary);
  --ink-soft: var(--text-muted);
  --muted: var(--text-muted);
  --line: var(--border);
  --card: var(--surface-raised);

  /* \u6D45\u8272\u53E0\u5C42\uFF08\u7528\u4E8E hover / \u5185\u5D4C\u5757\uFF09
     \u26A0 \u8FD9\u4E09\u4E2A\u503C\u7684**\u8BED\u4E49\u662F\u300C\u53E0\u5728 surface \u4E0A\u7684\u6781\u6DE1\u4E00\u5C42\u300D**\uFF0C\u4E0D\u662F\u300C\u767D\u8272\u300D\u3002
     Dark \u4E0B\u662F\u767D\u8272\u53E0\u52A0\uFF1BLight \u4E0B\u5FC5\u987B\u6362\u6210\u9ED1\u8272\u53E0\u52A0\uFF08\u89C1 \u2470 Light \u4E3B\u9898\uFF09\u3002
     \u5168\u7AD9 42 \u5904 var(--tint-*) \u5168\u90E8\u7528\u5728 background \u4E0A\uFF0C\u6240\u4EE5\u53EA\u8981\u6362\u8FD9\u4E09\u4E2A\u503C\uFF0C
     Light \u4E0B\u6240\u6709 hover / \u5185\u5D4C\u5757 / \u8868\u5934 / \u5076\u6570\u884C\u90FD\u4F1A\u81EA\u52A8\u6B63\u786E\uFF08\u4E0D\u4F1A\u767D\u5E95\u767D\u5361\uFF09\u3002 */
  --tint-1: rgba(255,255,255,.03);
  --tint-2: rgba(255,255,255,.05);
  --tint-3: rgba(255,255,255,.08);

  /* \u8BED\u4E49\u8272\u53E0\u5C42\u4E0E\u63CF\u8FB9 */
  --accent-soft: rgba(96,165,250,.12);
  --accent-line: rgba(96,165,250,.34);
  --tech-soft: rgba(139,124,246,.14);
  --tech-line: rgba(139,124,246,.36);
  --trend-soft: rgba(56,214,195,.12);
  --trend-line: rgba(56,214,195,.32);
  --forecast-soft: rgba(244,201,93,.12);
  --forecast-line: rgba(244,201,93,.32);
  --danger-soft: rgba(240,113,120,.12);
  --danger-line: rgba(240,113,120,.32);
  --success-soft: rgba(79,209,165,.12);
  --success-line: rgba(79,209,165,.34);

  /* \u9876\u680F\u80CC\u666F\uFF1A\u534A\u900F\u660E + backdrop-filter\uFF0C\u9700\u8981\u968F\u4E3B\u9898\u5207\u6362\uFF08\u539F\u4E3A\u786C\u7F16\u7801\u503C\uFF09 */
  --header-bg: rgba(15,16,17,.92);

  /* \u4E3B\u6309\u94AE\u524D\u666F\u8272\uFF08\u539F\u4E3A #FFFFFF \u786C\u7F16\u7801\uFF09 */
  --on-accent: #FFFFFF;

  /* \u8BED\u4E49\u8272\u7684\u300C\u4EAE\u8272\u53D8\u4F53\u300D\uFF1A\u7528\u4E8E\u5C0F\u5B57\u53F7\u5FBD\u7AE0 / \u6807\u7B7E\uFF0C\u9700\u8981\u6BD4\u4E3B\u8272\u66F4\u4EAE\u624D\u591F\u5BF9\u6BD4
     \uFF08\u539F\u4E3A 6 \u5904 #9BA6F2 \u786C\u7F16\u7801\uFF1BLight \u4E0B\u5FC5\u987B\u6362\u6210\u66F4\u6DF1\u7684\u503C\uFF09 */
  --tech-bright: #9BA6F2;
  /* \u6DF1\u8272 callout \u4E13\u7528\u6587\u5B57\uFF08\u9700\u8981\u6BD4\u4E3B\u8272\u66F4\u6D45\uFF0C\u539F\u4E3A\u786C\u7F16\u7801\uFF09 */
  --danger-text: #F0D3D6;
  --forecast-text: #EDDDBB;

  /* \u9886\u57DF\u8BC6\u522B\u6761\u989C\u8272\uFF08\u6280\u672F\u5361\u4E13\u7528\uFF09 */
  --cat-ai: #8B7BF0;
  --cat-cloudnative: #5B9BF0;
  --cat-security: #E06A72;
  --cat-database: #4FBF95;
  --cat-devops: #D9915A;
  --cat-programming: #8FA0F2;
  --cat-hardware: #98A2AE;
  --cat-infrastructure: #4FB3C7;

  /* 字号 / 行高 / 圆�W / 读数宽度 */
  --fs-body: 15px;
  --fs-body-lg: 16px;
  --lh-body: 1.8;
  --fs-small: .82rem;
  --fs-micro: .74rem;
  --r-sm: 6px;
  --r-md: 8px;
  --r-lg: 12px;
  /* 版心上限：1140 -> 1320，让 1920px 左右的大屏不再把内容挤在正中间（仍不是全宽） */
  --maxw-page: 1320px;
  --maxw-read: 760px;
}

/* ============================================================
   �?基� 与排�?   ============================================================ */
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
               "Helvetica Neue", Arial, "PingFang SC", "Hiragino Sans GB",
               "Microsoft YaHei", sans-serif;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text-secondary);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, h5, h6 {
  color: var(--text-primary);
  font-weight: 650;
  letter-spacing: -.01em;
  line-height: 1.35;
  overflow-wrap: anywhere;
  word-break: break-word;
  hyphens: auto;
}

p, li, dd, dt, blockquote, figcaption, td, th, label, summary, span.note {
  overflow-wrap: anywhere;
  word-break: break-word;
}

strong, b { color: var(--text-primary); font-weight: 650; }
code, kbd, samp, pre {
  font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
               "Liberation Mono", monospace;
}
hr { border: none; border-top: 1px solid var(--border); margin: 22px 0; }
.kv b { color: var(--text-primary); }
[hidden] { display: none !important; }

/* 正文链接：安静、可辨、悬停才出现下划�?*/
main a { color: var(--text-link); text-decoration: none; }
main a:hover { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }

/* ============================================================
   �?顶栏（技� ��体式：品�?+ 安静内联导航 + 右侧登录�?   ============================================================ */
.header,
header {
  display: flex;
  align-items: center;
  gap: 20px;
  flex-wrap: wrap;
  padding: 10px 22px;
  background: var(--header-bg);
  border-bottom: 1px solid var(--border);
  position: sticky;
  top: 0;
  z-index: 20;
  backdrop-filter: saturate(140%) blur(8px);
}
header a { color: var(--text-secondary); text-decoration: none; font-size: .9rem; }
header a:hover { color: var(--text-primary); }

.brand {
  font-weight: 700;
  font-size: 1rem;
  color: var(--text-primary);
  letter-spacing: -.01em;
  white-space: nowrap;
}
.brand small {
  font-weight: 400;
  color: var(--text-muted);
  margin-left: 8px;
  font-size: var(--fs-micro);
  letter-spacing: .01em;
}

/* 导航：普通链接，不是�]��胶囊按钮 */
.nav { display: flex; gap: 4px; align-items: center; flex-wrap: wrap; min-width: 0; }
.nav a {
  display: inline-block;
  padding: 5px 9px;
  border-radius: var(--r-sm);
  border: 1px solid transparent;
  font-size: .875rem;
  color: var(--text-secondary);
  transition: color .15s, background .15s;
}
.nav a:hover { color: var(--text-primary); background: var(--tint-1); text-decoration: none; }
.nav a.active {
  color: var(--accent);
  font-weight: 600;
  background: var(--tint-1);
  border-bottom: 1px solid var(--accent);
  border-radius: var(--r-sm) var(--r-sm) 0 0;
}
.nav a.active:hover { color: var(--accent); background: var(--tint-1); }

.spacer { flex: 1 1 auto; }

.user-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--text-secondary);
  font-size: var(--fs-small);
  white-space: nowrap;
  min-width: 0;
}
#manage-login,
#logout,
header .user-chip a {
  display: inline-block;
  padding: 5px 11px;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  background: transparent;
  font-size: var(--fs-small);
  color: var(--text-secondary);
  white-space: nowrap;
  transition: background .15s, border-color .15s, color .15s;
}
#manage-login:hover,
#logout:hover,
header .user-chip a:hover {
  background: var(--surface-hover);
  border-color: var(--border-strong);
  color: var(--text-primary);
}

/* ============================================================
   �?版心 / 区块 / 卡片
   ============================================================ */
main {
  max-width: var(--maxw-page);
  margin: 0 auto;
  padding: 24px 20px 72px;
  min-width: 0;
}

.hero,
section.block {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 20px 22px;
  margin-bottom: 16px;
  box-shadow: none;
  min-width: 0;
}
.hero {
  background: var(--surface);
  border-top: 1px solid var(--border);
}
.hero h1 {
  margin: 0 0 8px;
  font-size: 1.6rem;
  color: var(--text-primary);
  line-height: 1.28;
  max-width: 34ch;
}
.hero p { margin: 0; color: var(--text-secondary); font-size: .95rem; max-width: 78ch; }

/* 宽表格等内部内�允�容器内横滑，但不裁剪正文 */
section.block { overflow-x: auto; }
section.block h2 {
  margin: 0 0 12px;
  font-size: 1.08rem;
  color: var(--text-primary);
  padding-left: 10px;
  border-left: 2px solid var(--accent);
}

/* ---------- 数据统�x条（首页已降级为轻量呈现�?---------- */
.stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 10px;
  margin-top: 16px;
}
.stat {
  background: var(--tint-1);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 10px 12px;
  text-align: center;
  min-width: 0;
}
.stat .n { font-size: 1.35rem; font-weight: 700; color: var(--text-primary); }
.stat .l { font-size: var(--fs-micro); color: var(--text-muted); }

/* ---------- 双栏 ---------- */
.grid2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  align-items: start;
  min-width: 0;
}
.grid2 > * { min-width: 0; }

/* ============================================================
   �?表单 / 按钮 / 工具�?   ============================================================ */
.toolbar { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-bottom: 12px; }
input[type=text],
input[type=password],
input[type=search],
input[type=email],
textarea,
select {
  font: inherit;
  padding: 8px 11px;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  background: var(--surface-raised);
  color: var(--text-primary);
  outline: none;
  min-width: 0;
}
input::placeholder, textarea::placeholder { color: var(--text-muted); }
input:focus, textarea:focus, select:focus {
  border-color: var(--accent-line);
  box-shadow: 0 0 0 3px var(--accent-soft);
}
textarea { width: 100%; }
.toolbar input[type=text] { flex: 1 1 180px; min-width: 0; }

button {
  font: inherit;
  font-size: .9rem;
  padding: 8px 15px;
  border: 1px solid transparent;
  border-radius: var(--r-sm);
  background: var(--accent);
  color: var(--on-accent);
  cursor: pointer;
  box-shadow: none;
  transition: background .15s, border-color .15s, opacity .15s;
}
button:hover { background: var(--accent); filter: brightness(1.08); }
button:active { filter: brightness(.94); }
button.secondary {
  background: transparent;
  color: var(--text-secondary);
  border: 1px solid var(--border);
  box-shadow: none;
}
button.secondary:hover { background: var(--surface-hover); border-color: var(--border-strong); color: var(--text-primary); }
button:disabled { opacity: .5; cursor: not-allowed; filter: none; }

/* ---------- 文章 / 工具卡片 ---------- */
.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 13px 16px;
  margin-bottom: 12px;
  min-width: 0;
  transition: border-color .15s, background .15s;
}
.card:hover { border-color: var(--border-strong); background: var(--surface-hover); }
.card h3 { margin: 0 0 5px; font-size: 1rem; color: var(--text-primary); }
.card h3 a { color: var(--text-primary); text-decoration: none; }
.card h3 a:hover { color: var(--accent); text-decoration: none; }
.meta { font-size: var(--fs-small); color: var(--text-muted); margin-bottom: 5px; }
.tags span {
  display: inline-block;
  background: var(--tint-2);
  color: var(--text-secondary);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  font-size: var(--fs-micro);
  padding: 1px 8px;
  margin: 2px 6px 0 0;
}
.summary { color: var(--text-secondary); font-size: .9rem; margin: 5px 0 0; line-height: var(--lh-body); }

/* ---------- 今日重��情报 ---------- */
#digest-list { margin-top: 2px; }
.ditem {
  display: flex;
  gap: 10px;
  padding: 9px 2px;
  border-bottom: 1px solid var(--border);
  min-width: 0;
}
.ditem:last-child { border-bottom: none; }
.dico { font-size: 1.15rem; line-height: 1.6; color: var(--trend); flex: 0 0 auto; }
.dbody { flex: 1; min-width: 0; }
.dbody a { font-weight: 600; color: var(--text-primary); }
.dbody a:hover { color: var(--accent); }
.hot-tag {
  display: inline-block;
  margin-left: 8px;
  background: var(--danger-soft);
  color: var(--danger);
  border: 1px solid var(--danger-line);
  font-size: var(--fs-micro);
  border-radius: var(--r-sm);
  padding: 1px 7px;
  vertical-align: 1px;
  white-space: nowrap;
}
.dsum { font-size: var(--fs-small); color: var(--text-muted); margin: 2px 0 0; line-height: 1.7; }

/* ---------- 表格 ---------- */
table { border-collapse: collapse; width: 100%; font-size: .88rem; }
th, td { border: 1px solid var(--border); padding: 8px 10px; text-align: left; vertical-align: top; overflow-wrap: anywhere; }
th { background: var(--tint-1); color: var(--text-secondary); font-weight: 600; white-space: nowrap; }
tbody tr:nth-child(even) { background: var(--tint-1); }
.meta-table { margin-top: 12px; }
.meta-table td:first-child { width: 132px; color: var(--text-muted); white-space: nowrap; }

/* ---------- 代码 / 输出�?---------- */
pre.out {
  white-space: pre-wrap;
  word-break: break-word;
  overflow-wrap: anywhere;
  background: var(--surface-raised);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 12px 14px;
  font-size: var(--fs-small);
  color: var(--text-secondary);
}

/* ---------- 页脚 ---------- */
footer {
  color: var(--text-muted);
  font-size: var(--fs-small);
  text-align: center;
  padding: 24px 16px 36px;
  border-top: 1px solid var(--border);
  margin-top: 24px;
}
footer a { color: var(--text-secondary); text-decoration: none; }
footer a:hover { color: var(--accent); text-decoration: underline; }

/* ============================================================
   �?首页情报卡（�?技� ���?/ 定位�?/ 层级�?   ============================================================ */
.intel-hero .kicker {
  margin: 0 0 6px;
  font-size: var(--fs-micro);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--accent);
  font-weight: 700;
}
.intel-hero h1 { font-size: 1.8rem; }
.intel-hero p { font-size: .96rem; color: var(--text-secondary); }
.intel-hero .analyzed {
  margin-top: 12px;
  font-size: var(--fs-small);
  font-weight: 500;
  color: var(--text-muted);
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 5px 10px;
  display: inline-block;
}

/* ---------- 层级标�} ---------- */
.layer-head { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; min-width: 0; }
.layer-head h2 { margin-bottom: 8px; }
.layer-tag {
  font-size: var(--fs-micro);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-muted);
  background: var(--tint-1);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 2px 8px;
  margin-bottom: 8px;
  white-space: nowrap;
}
.layer .hint { margin: 0 0 14px; font-size: var(--fs-small); color: var(--text-muted); line-height: 1.75; }
/* 四层结构用「��义色」轻量区分，仅一�?2px 顶边 */
.layer-1 { border-top: 2px solid var(--tech); }
.layer-2 { border-top: 2px solid var(--trend); }
.layer-3 { border-top: 2px solid var(--forecast); }
.raw-zone { border-top: 2px solid var(--border-strong); }

/* ============================================================
   �?通用小件：chip / badge / pill / row-lbl
   ============================================================ */
.chip {
  display: inline-block;
  background: var(--tint-2);
  color: var(--text-secondary);
  border: 1px solid transparent;
  border-radius: var(--r-sm);
  font-size: var(--fs-micro);
  padding: 1px 8px;
  margin: 2px 5px 2px 0;
  white-space: nowrap;
  max-width: 100%;
  overflow-wrap: anywhere;
}
.chip-gray { background: var(--tint-1); color: var(--text-muted); border-color: var(--border); }
.chip-domain { background: var(--accent-soft); color: var(--text-link); border-color: var(--accent-line); }
.chip-ind { background: var(--tech-soft); color: var(--tech-bright); border-color: var(--tech-line); }
.chip-src { background: var(--tint-2); color: var(--text-secondary); border-color: var(--border); }
.chip-horizon { background: var(--forecast-soft); color: var(--forecast); border-color: var(--forecast-line); }

.row-lbl {
  display: inline-block;
  font-size: var(--fs-micro);
  font-weight: 700;
  color: var(--text-muted);
  margin-right: 8px;
  min-width: 62px;
  letter-spacing: .02em;
}

.badge {
  display: inline-block;
  font-size: var(--fs-micro);
  border-radius: var(--r-sm);
  padding: 1px 8px;
  margin-right: 6px;
  border: 1px solid var(--border);
  background: var(--tint-1);
  color: var(--text-secondary);
  white-space: nowrap;
  max-width: 100%;
  overflow-wrap: anywhere;
}
.badge-sig { font-weight: 600; }
.sig-high { background: var(--danger-soft); color: var(--danger); border-color: var(--danger-line); }
.sig-transformative { background: var(--accent-soft); color: var(--accent); border-color: var(--accent-line); font-weight: 700; }
.sig-medium { background: var(--tint-2); color: var(--text-secondary); border-color: var(--border); }
.badge-mat { background: var(--tech-soft); color: var(--tech-bright); border-color: var(--tech-line); }
.badge-conf { background: var(--trend-soft); color: var(--trend); border-color: var(--trend-line); }
.badge-date { background: transparent; color: var(--text-muted); }

/* ---------- 情报列表与卡�?---------- */
.insight-list { display: flex; flex-direction: column; gap: 14px; }
.insight {
  border: 1px solid var(--border);
  border-left: 3px solid var(--accent);
  border-radius: var(--r-lg);
  background: var(--surface);
  padding: 16px 18px 14px;
  box-shadow: none;
  min-width: 0;
  transition: border-color .15s, background .15s;
}
.insight:hover { border-color: var(--border-strong); background: var(--surface-hover); }
.ins-head {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  justify-content: space-between;
  flex-wrap: wrap;
  min-width: 0;
}
.ins-head > * { min-width: 0; }
.ins-title { min-width: 0; flex: 1 1 60%; }
.ins-title h3 {
  margin: 4px 0 0;
  font-size: 1.14rem;
  color: var(--text-primary);
  line-height: 1.45;
  overflow-wrap: anywhere;
  word-break: break-word;
  hyphens: auto;
}
.cat-badge {
  display: inline-block;
  font-size: var(--fs-micro);
  font-weight: 700;
  letter-spacing: .04em;
  color: var(--accent);
  background: var(--accent-soft);
  border: 1px solid var(--accent-line);
  border-radius: var(--r-sm);
  padding: 1px 7px;
  white-space: nowrap;
}
.gauge {
  flex: 0 0 auto;
  width: 84px;
  text-align: center;
  border-radius: var(--r-md);
  padding: 8px 6px;
  border: 1px solid var(--border);
  background: var(--tint-1);
}
.gauge-num { font-size: 1.65rem; font-weight: 700; line-height: 1.15; }
.gauge-lbl { font-size: .68rem; color: var(--text-muted); }
.gauge.g-high .gauge-num { color: var(--danger); }
.gauge.g-mid .gauge-num { color: var(--forecast); }
.gauge.g-low .gauge-num { color: var(--text-muted); }
.gauge.g-high { border-color: var(--danger-line); background: var(--danger-soft); }
.gauge.g-mid { border-color: var(--forecast-line); background: var(--forecast-soft); }

.ins-status { margin: 10px 0 2px; }
.ins-headline {
  margin: 8px 0 10px;
  font-size: .98rem;
  font-weight: 650;
  color: var(--text-primary);
  background: var(--tint-1);
  border-left: 2px solid var(--accent);
  border-radius: 0 var(--r-sm) var(--r-sm) 0;
  padding: 9px 12px;
  line-height: 1.75;
  overflow-wrap: anywhere;
}
.ins-sec { margin: 12px 0 0; }
.ins-sec h4, .impact-col h4 {
  margin: 0 0 4px;
  font-size: var(--fs-small);
  color: var(--text-primary);
  letter-spacing: .02em;
  font-weight: 650;
}
.ins-sec h4::before {
  content: "";
  display: inline-block;
  width: 5px; height: 5px;
  background: var(--accent);
  border-radius: 1px;
  margin-right: 6px;
  vertical-align: 2px;
}
.ins-sec p { margin: 0; font-size: .92rem; line-height: var(--lh-body); color: var(--text-secondary); }
.lim-box {
  background: var(--tint-1);
  border: 1px solid var(--border);
  border-left: 2px solid var(--text-muted);
  border-radius: var(--r-sm);
  padding: 8px 12px;
}
.ins-row { margin: 12px 0 0; }

.cap-list, .cons-list, .work-list { margin: 2px 0 0; padding-left: 0; list-style: none; }
.cap-list li, .cons-list li, .work-list li {
  font-size: .9rem;
  line-height: 1.75;
  color: var(--text-secondary);
  padding-left: 16px;
  position: relative;
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.cap-list li { padding-left: 18px; }
.cap-list li::before {
  content: "+";
  position: absolute;
  left: 2px;
  color: var(--accent);
  font-weight: 700;
}
.cap-dot {
  position: absolute;
  left: 0;
  color: var(--accent);
  font-weight: 700;
}
.cons-list li::before {
  content: "!";
  position: absolute;
  left: 2px;
  color: var(--danger);
  font-weight: 700;
}
.work-list li::before {
  content: "\2014";
  position: absolute;
  left: 2px;
  color: var(--text-muted);
}

.ind-row { display: flex; gap: 8px; align-items: flex-start; min-width: 0; }
.ind-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(220px, 100%), 1fr));
  gap: 8px;
  flex: 1;
  min-width: 0;
}
.ind {
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 8px 10px;
  background: var(--tint-1);
  min-width: 0;
}
.ind-name { font-size: var(--fs-small); font-weight: 650; color: var(--text-primary); overflow-wrap: anywhere; }
.ind-case { margin: 4px 0 0; font-size: var(--fs-micro); color: var(--text-muted); line-height: 1.7; }

.impact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 14px; min-width: 0; }
.impact-grid > * { min-width: 0; }
.impact-col {
  background: var(--tint-1);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 10px 12px;
}
.impact-col p { margin: 0; font-size: var(--fs-small); line-height: var(--lh-body); color: var(--text-secondary); }

.ins-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 12px;
  padding-top: 8px;
  border-top: 1px solid var(--border);
  min-width: 0;
}
.detail-link {
  font-size: var(--fs-small);
  font-weight: 600;
  color: var(--text-link);
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 4px 11px;
  text-decoration: none;
  white-space: nowrap;
}
.detail-link:hover {
  background: var(--surface-hover);
  border-color: var(--accent-line);
  color: var(--accent);
  text-decoration: none;
}

/* ---------- 详情�?---------- */
.detail-nav { margin-bottom: 12px; font-size: var(--fs-small); color: var(--text-muted); }
.detail-block { margin-top: 16px; min-width: 0; }
.detail-block h4 { margin: 0 0 6px; font-size: .94rem; color: var(--text-primary); }
.detail-block p { margin: 0; font-size: .93rem; line-height: var(--lh-body); color: var(--text-secondary); }

/* ============================================================
   �?折叠区（技� ���?/ Evidence / 原�P资��?   ============================================================ */
.fold { margin-top: 12px; border-top: 1px solid var(--border); padding-top: 8px; min-width: 0; }
.fold > summary {
  cursor: pointer;
  font-size: var(--fs-small);
  font-weight: 600;
  color: var(--text-secondary);
  list-style: none;
  padding: 3px 0;
  overflow-wrap: anywhere;
}
.fold > summary::-webkit-details-marker { display: none; }
.fold > summary::before { content: "\25B8"; color: var(--text-muted); }
.fold[open] > summary::before { content: "\25BE"; color: var(--accent); }
.fold > summary:hover { color: var(--text-primary); text-decoration: underline; text-underline-offset: 2px; }

.fold-dis { margin-top: 6px; }
.fold-evi { margin-top: 10px; }
.fold-raw { margin-top: 10px; }

.evi {
  border-radius: var(--r-sm);
  padding: 8px 12px;
  margin: 8px 0;
  border: 1px solid var(--border);
  border-left: 2px solid var(--text-muted);
  background: var(--tint-1);
  min-width: 0;
}
.evi-fact { border-left-color: var(--trend); }
.evi-inference { border-left-color: var(--tech); }
.evi-forecast { border-left-color: var(--forecast); }
.evi-head { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; min-width: 0; }
.evi-type { font-size: var(--fs-micro); font-weight: 700; color: var(--text-secondary); letter-spacing: .03em; }
.evi-fact .evi-type { color: var(--trend); }
.evi-inference .evi-type { color: var(--tech-bright); }
.evi-forecast .evi-type { color: var(--forecast); }
.evi-text { margin: 4px 0 0; font-size: var(--fs-small); line-height: 1.75; color: var(--text-secondary); }
.evi-quote {
  margin: 6px 0 0;
  padding: 6px 10px;
  border-left: 2px solid var(--border-strong);
  background: var(--surface-raised);
  border-radius: var(--r-sm);
  font-size: var(--fs-small);
  color: var(--text-muted);
  font-style: italic;
  word-break: break-word;
  overflow-wrap: anywhere;
}

/* ============================================================
   �?技� ���?/ 工作方式 / 企业�?��
   ============================================================ */
.sub-block { margin-top: 18px; min-width: 0; }
.sub-title {
  margin: 0 0 4px;
  font-size: 1rem;
  color: var(--text-primary);
  padding-left: 8px;
  border-left: 2px solid var(--accent);
}
.dis-list { display: flex; flex-direction: column; gap: 10px; }
.dis-wrap {
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 10px 14px;
  background: var(--tint-1);
  min-width: 0;
}
.dis-from { margin-bottom: 6px; min-width: 0; }
.dis-top { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; min-width: 0; }
.chip-transform { font-weight: 700; }

/* 冲击类型：用�]��色表达「动作强度�?*/
.t-displace { background: var(--danger-soft); color: var(--danger); border-color: var(--danger-line); }
.t-automate { background: var(--tech-soft); color: var(--tech-bright); border-color: var(--tech-line); }
.t-augment { background: var(--trend-soft); color: var(--trend); border-color: var(--trend-line); }
.t-shift { background: var(--forecast-soft); color: var(--forecast); border-color: var(--forecast-line); }
.t-enable { background: var(--accent-soft); color: var(--accent); border-color: var(--accent-line); }

.dis-score { display: inline-flex; align-items: baseline; gap: 3px; margin-left: 4px; }
.dis-score-n { font-size: 1.05rem; font-weight: 700; color: var(--text-primary); }
.dis-score-l { font-size: .7rem; color: var(--text-muted); }
.dis-target {
  margin: 6px 0 0;
  font-size: .95rem;
  font-weight: 650;
  color: var(--text-primary);
  overflow-wrap: anywhere;
}
.dis-target::before { content: "\51B2\51FB\5BF9\8C61\FF1A"; font-weight: 400; color: var(--text-muted); font-size: var(--fs-small); }
.dis-exp { margin: 6px 0 0; font-size: .9rem; line-height: var(--lh-body); color: var(--text-secondary); }
.dis-sub { margin-top: 8px; }
.dis-sub .work-list li, .dis-sub .cons-list li { font-size: var(--fs-small); }

/* ---------- Work Transformation ---------- */
.wt {
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 10px 14px;
  background: var(--surface);
  margin-bottom: 10px;
  min-width: 0;
}
.wt-tech { margin: 0 0 8px; font-size: .92rem; color: var(--text-primary); overflow-wrap: anywhere; }
.wt-steps {
  display: grid;
  grid-template-columns: 1fr 26px 1fr;
  gap: 8px;
  align-items: start;
  min-width: 0;
}
.wt-steps > * { min-width: 0; }
.wt-col { border-radius: var(--r-sm); padding: 8px 10px; min-width: 0; }
.wt-before { background: var(--tint-1); border: 1px solid var(--border); }
.wt-after { background: var(--accent-soft); border: 1px solid var(--accent-line); }
.wt-tag {
  font-size: var(--fs-micro);
  font-weight: 700;
  color: var(--text-muted);
  margin-bottom: 4px;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.wt-after .wt-tag { color: var(--accent); }
.wt-arrow { text-align: center; font-size: 1.05rem; color: var(--text-muted); padding-top: 22px; }
.wt .work-list li, .wt .cap-list li { font-size: var(--fs-small); }

/* ---------- Enterprise Transformation ---------- */
.et {
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 10px 14px;
  background: var(--surface);
  margin-bottom: 10px;
  min-width: 0;
}
.et-tech { margin: 0 0 8px; font-size: .92rem; color: var(--text-primary); overflow-wrap: anywhere; }
.et-chain { display: flex; flex-direction: column; min-width: 0; }
.et-step { display: flex; gap: 8px; align-items: flex-start; min-width: 0; }
.et-lbl {
  flex: 0 0 116px;
  font-size: var(--fs-micro);
  font-weight: 600;
  color: var(--text-secondary);
  background: var(--tint-2);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 2px 8px;
  text-align: center;
}
.et-val { font-size: var(--fs-small); line-height: 1.75; color: var(--text-secondary); flex: 1; min-width: 0; }
.et-arrow { text-align: center; color: var(--text-muted); font-size: var(--fs-small); line-height: 1.4; padding-left: 56px; }
.et-risk { margin-top: 8px; }
.et-risk .cons-list li { font-size: var(--fs-small); }

/* ============================================================
   �?技� ��势（trend = 青色�?   ============================================================ */
.trend-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(230px, 100%), 1fr));
  gap: 12px;
  min-width: 0;
}
.trend {
  border: 1px solid var(--border);
  border-top: 2px solid var(--trend);
  border-radius: var(--r-md);
  padding: 12px 14px;
  background: var(--surface);
  min-width: 0;
}
.trend-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-width: 0; }
.trend-cat { font-size: 1rem; font-weight: 700; color: var(--text-primary); overflow-wrap: anywhere; }
.trend-count {
  font-size: var(--fs-micro);
  color: var(--trend);
  background: var(--trend-soft);
  border: 1px solid var(--trend-line);
  border-radius: var(--r-sm);
  padding: 1px 8px;
  white-space: nowrap;
  flex: 0 0 auto;
}
.trend-meter { margin: 8px 0 6px; }
.trend-fill {
  height: 4px;
  border-radius: 2px;
  background: var(--trend);
  opacity: .75;
  min-width: 6px;
}
.trend-gain { display: block; font-size: var(--fs-micro); color: var(--text-muted); margin-top: 3px; }
.trend-list { margin: 6px 0 0; padding: 0; list-style: none; }
.trend-list li {
  font-size: var(--fs-small);
  line-height: 1.7;
  padding-left: 14px;
  position: relative;
  color: var(--text-secondary);
  overflow-wrap: anywhere;
}
.trend-dot {
  position: absolute;
  left: 2px; top: 9px;
  width: 4px; height: 4px;
  border-radius: 50%;
  background: var(--trend);
}
.trend-note { margin: 8px 0 0; font-size: var(--fs-micro); color: var(--text-muted); }

/* ============================================================
   �?原�P资� / 线索（降级区 + mini 列表�?   ============================================================ */
.sources-line {
  font-size: var(--fs-small);
  color: var(--text-muted);
  background: var(--tint-1);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 8px 12px;
  margin-bottom: 8px;
  line-height: 1.9;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.src-line {
  font-size: var(--fs-micro);
  color: var(--text-muted);
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.src-lbl { font-weight: 700; margin-right: 6px; color: var(--text-muted); }
.src-name { margin-right: 2px; }
.src-sep { margin: 0 5px; color: var(--text-muted); }
.src-link {
  font-size: var(--fs-micro);
  margin-left: 8px;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.raw-grid { margin-top: 12px; }
.raw-h { margin: 0 0 8px; font-size: var(--fs-small); color: var(--text-primary); }
.mini { border-bottom: 1px solid var(--border); padding: 7px 0; min-width: 0; }
.mini:last-child { border-bottom: none; }
.mini-title {
  font-size: var(--fs-small);
  font-weight: 600;
  color: var(--text-primary);
  text-decoration: none;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.mini-title:hover { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }
.mini-meta { font-size: var(--fs-micro); color: var(--text-muted); }
.mini-sum { margin: 3px 0 0; font-size: var(--fs-small); color: var(--text-muted); line-height: 1.7; }

/* ============================================================
   �?§2.1 模块化技� ��报产�?   ============================================================ */

/* ---------- 通用区块 / 更�?链接 / 生成说明 ---------- */
.v21-sec { margin-top: 20px; min-width: 0; }
.v21-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  border-left: 2px solid var(--accent);
  padding-left: 10px;
  margin-bottom: 12px;
  min-width: 0;
}
.v21-head h2 { margin: 0; font-size: 1.04rem; color: var(--text-primary); border: none; padding: 0; }
.more-link { font-size: var(--fs-small); font-weight: 600; color: var(--text-link); text-decoration: none; white-space: nowrap; }
.more-link:hover { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }
.gen-note {
  font-size: var(--fs-micro);
  color: var(--text-muted);
  text-align: center;
  margin: 14px 0 0;
  line-height: 1.8;
}
.dotsep { margin: 0 5px; color: var(--text-muted); }

.filter-row { display: flex; gap: 8px; flex-wrap: wrap; margin: 10px 0 4px; }
.pill-btn {
  font: inherit;
  font-size: var(--fs-small);
  padding: 4px 11px;
  border-radius: var(--r-sm);
  border: 1px solid var(--border);
  background: transparent;
  color: var(--text-secondary);
  cursor: pointer;
  box-shadow: none;
  transition: background .15s, color .15s, border-color .15s;
}
.pill-btn:hover { background: var(--surface-hover); border-color: var(--border-strong); color: var(--text-primary); filter: none; }
.pill-btn.active {
  background: var(--accent-soft);
  color: var(--accent);
  border-color: var(--accent-line);
  font-weight: 650;
}

/* ---------- 总�M：重点卡 / 指标�?/ 入口 ---------- */
.insight.feat { border-left-width: 3px; border-left-color: var(--accent); }
.insight.feat .ins-title h3 { font-size: 1.26rem; }

.ov-strip {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(130px, 100%), 1fr));
  gap: 10px;
  margin-top: 14px;
  min-width: 0;
}
.ov-cell {
  background: var(--tint-1);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 9px 12px;
  min-width: 0;
}
.ov-k { font-size: var(--fs-micro); color: var(--text-muted); letter-spacing: .02em; }
.ov-v {
  font-size: .95rem;
  font-weight: 700;
  color: var(--text-primary);
  line-height: 1.5;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.ov-trends { display: flex; gap: 10px; flex-wrap: wrap; min-width: 0; }
.ov-trend {
  display: flex;
  align-items: center;
  gap: 10px;
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 8px 14px;
  background: var(--tint-1);
  min-width: 0;
  flex-wrap: wrap;
}

.entry-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(220px, 100%), 1fr));
  gap: 12px;
  margin-top: 18px;
  min-width: 0;
}
.entry {
  display: block;
  border: 1px solid var(--border);
  border-top: 2px solid var(--tech);
  border-radius: var(--r-md);
  padding: 14px 16px;
  background: var(--surface);
  text-decoration: none;
  position: relative;
  min-width: 0;
  transition: border-color .15s, background .15s;
}
.entry:hover { border-color: var(--border-strong); background: var(--surface-hover); text-decoration: none; }
.entry-title { font-size: 1rem; font-weight: 700; color: var(--text-primary); overflow-wrap: anywhere; }
.entry-desc { font-size: var(--fs-small); color: var(--text-secondary); margin-top: 4px; line-height: 1.7; }
.entry-sub { font-size: var(--fs-micro); color: var(--text-muted); margin-top: 6px; }
.entry-badge {
  position: absolute;
  top: 12px; right: 14px;
  font-size: var(--fs-micro);
  font-weight: 650;
  color: var(--text-muted);
  background: var(--tint-2);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 1px 8px;
  white-space: nowrap;
}

/* ---------- 技� ��新：�^���? �?�?2 �?�?1 列，结构性防溢出�?---------- */
.tech-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  min-width: 0;
}
.tech-card {
  border: 1px solid var(--border);
  border-top: 2px solid var(--tech);
  border-radius: var(--r-md);
  padding: 13px 15px 11px;
  background: var(--surface);
  display: flex;
  flex-direction: column;
  gap: 9px;
  min-width: 0;
  transition: border-color .15s, background .15s;
}
.tech-card:hover { border-color: var(--border-strong); background: var(--surface-hover); }
.tc-head { display: flex; align-items: flex-start; gap: 8px; flex-wrap: wrap; min-width: 0; }
.tc-head h3 {
  margin: 3px 0 0;
  font-size: .98rem;
  color: var(--text-primary);
  line-height: 1.5;
  flex: 1 1 60%;
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
  hyphens: auto;
}
.tc-score {
  flex: 0 0 auto;
  text-align: center;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 3px 9px;
  background: var(--tint-1);
  line-height: 1.2;
}
.tc-score b { display: block; font-size: 1.16rem; font-weight: 700; }
.tc-score i { font-style: normal; font-size: .62rem; color: var(--text-muted); }
.tc-score.g-high b { color: var(--danger); }
.tc-score.g-mid b { color: var(--forecast); }
.tc-score.g-low b { color: var(--text-muted); }
.tc-one {
  margin: 0;
  font-size: .92rem;
  font-weight: 650;
  color: var(--text-primary);
  background: var(--tint-1);
  border-left: 2px solid var(--accent);
  border-radius: 0 var(--r-sm) var(--r-sm) 0;
  padding: 7px 10px;
  line-height: 1.7;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.tc-two { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; min-width: 0; }
.tc-two > * { min-width: 0; }
.tc-col { min-width: 0; }
.tc-lbl {
  font-size: var(--fs-micro);
  font-weight: 700;
  color: var(--text-muted);
  letter-spacing: .04em;
  margin-bottom: 3px;
  text-transform: uppercase;
}
.tc-col .cap-list li { font-size: var(--fs-small); line-height: 1.7; }
.tc-lim {
  background: var(--tint-1);
  border: 1px solid var(--border);
  border-left: 2px solid var(--forecast);
  border-radius: var(--r-sm);
  padding: 6px 9px;
}
.tc-lim p { margin: 0; font-size: var(--fs-small); line-height: 1.7; color: var(--text-muted); }
.tc-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: auto;
  padding-top: 8px;
  border-top: 1px solid var(--border);
  min-width: 0;
}
.tc-badges { display: flex; gap: 5px; flex-wrap: wrap; align-items: center; min-width: 0; }
.tc-badges .badge, .tc-badges .chip { font-size: .68rem; }
.tc-links { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; min-width: 0; }
.tc-links .src-line { font-size: .7rem; }

/* 领域识别条：扥K时区分技� k�?*/
.tech-card.cat-ai { border-top-color: var(--cat-ai); }
.tech-card.cat-cloudnative { border-top-color: var(--cat-cloudnative); }
.tech-card.cat-security { border-top-color: var(--cat-security); }
.tech-card.cat-database { border-top-color: var(--cat-database); }
.tech-card.cat-devops { border-top-color: var(--cat-devops); }
.tech-card.cat-programming { border-top-color: var(--cat-programming); }
.tech-card.cat-hardware { border-top-color: var(--cat-hardware); }
.tech-card.cat-infrastructure { border-top-color: var(--cat-infrastructure); }

/* ---------- 行业趋势：� 业模块卡 ---------- */
.ind-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr));
  gap: 14px;
  min-width: 0;
}
.ind-mod {
  border: 1px solid var(--border);
  border-left: 2px solid var(--trend);
  border-radius: var(--r-md);
  padding: 14px 16px;
  background: var(--surface);
  min-width: 0;
}
.im-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  min-width: 0;
}
.im-head h3 {
  margin: 0;
  font-size: 1.04rem;
  color: var(--text-primary);
  overflow-wrap: anywhere;
  word-break: break-word;
  min-width: 0;
}
.im-stats { display: flex; gap: 5px; flex-wrap: wrap; min-width: 0; }
.im-raw { margin: 8px 0 2px; }
.im-block { margin-top: 10px; min-width: 0; }
.im-tech {
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 7px 10px;
  background: var(--tint-1);
  margin-bottom: 7px;
  min-width: 0;
}
.im-tech-top { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; min-width: 0; }
.im-tech-name {
  font-size: var(--fs-small);
  font-weight: 650;
  color: var(--text-primary);
  overflow-wrap: anywhere;
  word-break: break-word;
  min-width: 0;
}
.im-tech-line { margin: 4px 0 0; font-size: var(--fs-small); color: var(--text-muted); line-height: 1.7; }
.im-link { font-size: var(--fs-micro); font-weight: 600; color: var(--text-link); text-decoration: none; }
.im-link:hover { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }
.ind-mod .cap-list li { font-size: var(--fs-small); line-height: 1.7; }
.im-fold { margin-top: 8px; }
.im-impact {
  margin: 6px 0 0;
  font-size: var(--fs-small);
  line-height: 1.75;
  color: var(--text-secondary);
  background: var(--tint-1);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 7px 10px;
}

/* ---------- �E��推演：三层泳�?+ 图例（forecast = 琥珀�?---------- */
.fc-hero { border-top: 2px solid var(--forecast); }
.fc-legend {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(220px, 100%), 1fr));
  gap: 10px;
  margin: 12px 0 4px;
  min-width: 0;
}
.fc-leg {
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 10px 12px;
  padding-right: 46px;
  background: var(--tint-1);
  position: relative;
  min-width: 0;
}
.fc-leg b { display: block; font-size: var(--fs-small); overflow-wrap: anywhere; }
.fc-leg span { display: block; font-size: var(--fs-micro); color: var(--text-muted); line-height: 1.7; margin-top: 3px; }
.fc-leg i {
  position: absolute;
  top: 10px; right: 12px;
  font-style: normal;
  font-size: 1rem;
  font-weight: 700;
}
.fc-leg-fact { border-left: 2px solid var(--trend); }
.fc-leg-fact b, .fc-leg-fact i { color: var(--trend); }
.fc-leg-trend { border-left: 2px solid var(--tech); }
.fc-leg-trend b, .fc-leg-trend i { color: var(--tech-bright); }
.fc-leg-forecast { border-left: 2px solid var(--forecast); background: var(--forecast-soft); }
.fc-leg-forecast b, .fc-leg-forecast i { color: var(--forecast); }

.fc-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr));
  gap: 12px;
  min-width: 0;
}
.fc-card {
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 12px 14px;
  background: var(--surface);
  display: flex;
  flex-direction: column;
  gap: 7px;
  min-width: 0;
}
.fc-card.lane-fact { border-left: 2px solid var(--trend); }
.fc-card.lane-trend { border-left: 2px solid var(--tech); }
.fc-card.lane-forecast { border-left: 2px solid var(--forecast); background: var(--surface); }
.fc-top { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; min-width: 0; }
.chip-fact { background: var(--trend-soft); color: var(--trend); border-color: var(--trend-line); }
.chip-infer { background: var(--tech-soft); color: var(--tech-bright); border-color: var(--tech-line); }
.chip-poss { background: var(--forecast-soft); color: var(--forecast); border-color: var(--forecast-line); font-weight: 650; }
.fc-tech { font-size: var(--fs-small); color: var(--text-muted); min-width: 0; overflow-wrap: anywhere; }
.fc-tech-name { font-weight: 650; color: var(--text-primary); overflow-wrap: anywhere; }
.fc-sep { margin: 0 5px; color: var(--text-muted); }
.fc-text { margin: 0; font-size: .9rem; line-height: var(--lh-body); color: var(--text-secondary); overflow-wrap: anywhere; }
.fc-target { font-size: var(--fs-small); color: var(--text-muted); overflow-wrap: anywhere; }
.fc-assume {
  background: var(--forecast-soft);
  border: 1px solid var(--forecast-line);
  border-radius: var(--r-sm);
  padding: 7px 10px;
  min-width: 0;
}
.fc-assume .cons-list li { font-size: var(--fs-micro); line-height: 1.7; }
.fc-poss {
  margin: 0;
  font-size: var(--fs-micro);
  color: var(--forecast);
  background: var(--forecast-soft);
  border-radius: var(--r-sm);
  padding: 6px 9px;
  line-height: 1.7;
  overflow-wrap: anywhere;
}

/* ---------- 原�P资��?---------- */
.raw-strip { margin-bottom: 12px; }
.raw-strip .ov-v { font-size: 1.06rem; }

/* ============================================================
   �?§2.2 阅��页（长文编辑排版：克制的杂志感，不是�G��盘）
   ============================================================ */
.read-wrap {
  max-width: var(--maxw-read);
  margin: 0 auto;
  padding: 8px 0 56px;
  min-width: 0;
}
.read-back {
  display: inline-block;
  font-size: var(--fs-small);
  color: var(--text-muted);
  text-decoration: none;
  margin-bottom: 22px;
}
.read-back:hover { color: var(--accent); text-decoration: none; }
.read-kicker {
  margin: 0 0 10px;
  font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
  font-size: var(--fs-micro);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--accent);
  font-weight: 600;
}
.read-title {
  margin: 0 0 14px;
  font-size: clamp(1.6rem, 1.15rem + 2vw, 2.15rem);
  line-height: 1.22;
  letter-spacing: -.02em;
  color: var(--text-primary);
  overflow-wrap: anywhere;
  word-break: break-word;
  hyphens: auto;
}
.read-lead {
  margin: 0 0 18px;
  font-size: 1.06rem;
  line-height: 1.85;
  color: var(--text-secondary);
  max-width: 62ch;
}
.read-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  font-size: var(--fs-small);
  color: var(--text-muted);
  padding-bottom: 18px;
  margin-bottom: 26px;
  border-bottom: 1px solid var(--border);
  min-width: 0;
}
.read-body {
  max-width: 68ch;
  font-size: var(--fs-body-lg);
  line-height: var(--lh-body);
  color: var(--text-secondary);
  min-width: 0;
}
.read-body > * { min-width: 0; }
.read-body h2 {
  position: relative;
  margin: 44px 0 14px;
  padding-top: 16px;
  font-size: 1.24rem;
  line-height: 1.4;
  color: var(--text-primary);
  border-top: 1px solid var(--border);
}
.read-body h2::before {
  content: "";
  position: absolute;
  top: -1px; left: 0;
  width: 40px; height: 1px;
  background: var(--accent);
}
.read-body h3 {
  margin: 30px 0 10px;
  font-size: 1.06rem;
  line-height: 1.5;
  color: var(--text-primary);
}
.read-body p { margin: 0 0 20px; line-height: var(--lh-body); }
.read-body ul { margin: 0 0 20px; padding-left: 22px; }
.read-body ol { margin: 0 0 20px; padding-left: 22px; }
.read-body li { margin-bottom: 8px; line-height: 1.85; }
.read-body li::marker { color: var(--text-muted); }
.read-body blockquote {
  margin: 0 0 20px;
  padding: 2px 0 2px 16px;
  border-left: 2px solid var(--border-strong);
  color: var(--text-muted);
  font-style: italic;
}
.read-body code {
  font-size: .88em;
  background: var(--tint-2);
  border: 1px solid var(--border);
  border-radius: 4px;
  padding: 1px 5px;
  color: var(--text-primary);
}

/* 关键�?/ 引文 */
.read-callout {
  margin: 26px 0;
  padding: 16px 18px;
  font-size: 1.02rem;
  line-height: 1.85;
  color: var(--text-primary);
  background: var(--tint-1);
  border: 1px solid var(--border);
  border-left: 2px solid var(--accent);
  border-radius: 0 var(--r-md) var(--r-md) 0;
  overflow-wrap: anywhere;
}
.read-callout.risk {
  background: var(--danger-soft);
  border-color: var(--danger-line);
  border-left-color: var(--danger);
  color: var(--danger-text);
}
.read-callout.possible {
  background: var(--forecast-soft);
  border-color: var(--forecast-line);
  border-left-color: var(--forecast);
  color: var(--forecast-text);
}
.read-note {
  margin: 24px 0 0;
  font-size: var(--fs-small);
  line-height: 1.8;
  color: var(--text-muted);
  padding-top: 12px;
  border-top: 1px solid var(--border);
}

/* 成��内�（过�?/ 现在�?*/
.read-cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  margin: 22px 0;
  min-width: 0;
}
.read-cols > * { min-width: 0; }
.read-card {
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 14px 16px;
  background: var(--surface);
  margin: 20px 0;
  min-width: 0;
}
.read-grid-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  margin: 22px 0;
  min-width: 0;
}
.read-grid-2 > * { min-width: 0; }
.read-grid-2 .read-card { margin: 0; }
.read-card h3, .read-card h4 { margin-top: 0; }
.read-card ul, .read-card ol { margin-bottom: 0; }

/* 时间�?*/
.timeline {
  position: relative;
  margin: 24px 0;
  padding-left: 24px;
  border-left: 1px solid var(--border);
  min-width: 0;
}
.timeline-item {
  position: relative;
  margin-bottom: 24px;
  min-width: 0;
  overflow-wrap: anywhere;
}
.timeline-item:last-child { margin-bottom: 0; }
.timeline-when {
  display: inline-block;
  font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
  font-size: var(--fs-micro);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--forecast);
  background: var(--forecast-soft);
  border: 1px solid var(--forecast-line);
  border-radius: 4px;
  padding: 1px 8px;
  margin-bottom: 6px;
}
.timeline-dot {
  position: absolute;
  left: -30px; top: 7px;
  width: 9px; height: 9px;
  border-radius: 50%;
  background: var(--bg);
  border: 2px solid var(--accent);
}

/* 岗位 / 角色变化 */
.job-list { margin: 20px 0; padding: 0; list-style: none; }
.job-list > li {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  flex-wrap: wrap;
  padding: 12px 0;
  border-bottom: 1px solid var(--border);
  min-width: 0;
}
.job-list > li:last-child { border-bottom: none; }
.job-role {
  flex: 0 0 auto;
  display: inline-block;
  font-size: var(--fs-micro);
  font-weight: 650;
  color: var(--accent);
  background: var(--accent-soft);
  border: 1px solid var(--accent-line);
  border-radius: var(--r-sm);
  padding: 2px 9px;
  white-space: nowrap;
  max-width: 100%;
  overflow-wrap: anywhere;
}
.job-change { flex: 1 1 220px; min-width: 0; font-size: .95rem; line-height: 1.8; color: var(--text-secondary); }

/* 能力清单网格 */
.cap-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(230px, 100%), 1fr));
  gap: 10px;
  margin: 22px 0;
  min-width: 0;
}
.cap-item {
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 10px 12px;
  background: var(--tint-1);
  font-size: .92rem;
  line-height: 1.75;
  color: var(--text-secondary);
  min-width: 0;
  overflow-wrap: anywhere;
}
.cap-item::before {
  content: "+";
  font-weight: 700;
  color: var(--accent);
  margin-right: 8px;
}

/* 成本 / 收益行内标� */
.cost-up {
  display: inline-block;
  font-size: .82em;
  font-weight: 650;
  color: var(--danger);
  background: var(--danger-soft);
  border: 1px solid var(--danger-line);
  border-radius: 4px;
  padding: 0 6px;
  white-space: nowrap;
}
.cost-down {
  display: inline-block;
  font-size: .82em;
  font-weight: 650;
  color: var(--trend);
  background: var(--trend-soft);
  border: 1px solid var(--trend-line);
  border-radius: 4px;
  padding: 0 6px;
  white-space: nowrap;
}

/* 证据来源 / 空�?*/
.read-source {
  margin-top: 40px;
  padding-top: 18px;
  border-top: 1px solid var(--border);
  font-size: var(--fs-small);
  line-height: 1.9;
  color: var(--text-muted);
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.read-source a { overflow-wrap: anywhere; word-break: break-word; }
.read-empty {
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 30px 24px;
  background: var(--surface);
  text-align: center;
  min-width: 0;
}
.related-tech {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin: 24px 0 0;
  font-size: var(--fs-small);
  color: var(--text-muted);
  min-width: 0;
}
.related-tech a { overflow-wrap: anywhere; }

/* 分�控件（列表筛选） */
.seg {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 2px;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  background: var(--tint-1);
  flex-wrap: wrap;
  min-width: 0;
}
.seg button {
  font: inherit;
  font-size: var(--fs-small);
  padding: 4px 12px;
  border: none;
  border-radius: 4px;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  box-shadow: none;
}
.seg button:hover { background: var(--tint-2); color: var(--text-primary); filter: none; }
.seg button.active { background: var(--surface-hover); color: var(--text-primary); font-weight: 650; }

/* ---------- 首页：头�?/ 章节�?/ 内联指标 ---------- */
.hero-story {
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  background: var(--surface);
  padding: 24px 26px 22px;
  min-width: 0;
}
.hs-kicker {
  margin: 0 0 8px;
  font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
  font-size: var(--fs-micro);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--accent);
  font-weight: 600;
}
.hs-title {
  margin: 0 0 12px;
  font-size: clamp(1.5rem, 1.1rem + 1.6vw, 2rem);
  line-height: 1.24;
  letter-spacing: -.02em;
  color: var(--text-primary);
  max-width: 26ch;
  overflow-wrap: anywhere;
  word-break: break-word;
  hyphens: auto;
}
.hs-standfirst {
  margin: 0 0 16px;
  font-size: 1.02rem;
  line-height: 1.85;
  color: var(--text-secondary);
  max-width: 68ch;
}
.hs-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  font-size: var(--fs-small);
  color: var(--text-muted);
  min-width: 0;
}
.hs-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 18px; min-width: 0; }

.sec-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  padding-bottom: 10px;
  margin-bottom: 16px;
  border-bottom: 1px solid var(--border);
  min-width: 0;
}
.sec-head h2 {
  margin: 0;
  font-size: 1.08rem;
  font-weight: 650;
  color: var(--text-primary);
  letter-spacing: -.01em;
  overflow-wrap: anywhere;
  min-width: 0;
}
.sec-head .sec-more {
  font-size: var(--fs-small);
  font-weight: 600;
  color: var(--text-muted);
  text-decoration: none;
  white-space: nowrap;
}
.sec-head .sec-more:hover { color: var(--accent); text-decoration: none; }

.stat-inline {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  font-size: var(--fs-small);
  color: var(--text-muted);
  min-width: 0;
}
.stat-inline b { color: var(--text-primary); font-weight: 650; }
.stat-inline span { color: var(--text-muted); }

/* ---------- 首页：推演�i告卡（amber 左强调） ---------- */
.teaser-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(280px, 100%), 1fr));
  gap: 12px;
  min-width: 0;
}
.teaser {
  display: flex;
  flex-direction: column;
  gap: 9px;
  border: 1px solid var(--border);
  border-left: 2px solid var(--forecast);
  border-radius: var(--r-md);
  background: var(--surface);
  padding: 15px 16px 13px;
  min-width: 0;
  text-decoration: none;
  transition: border-color .15s, background .15s;
}
.teaser:hover { border-color: var(--border-strong); background: var(--surface-hover); text-decoration: none; }
.teaser-title {
  font-size: 1rem;
  font-weight: 650;
  line-height: 1.5;
  color: var(--text-primary);
  overflow-wrap: anywhere;
  word-break: break-word;
}
.teaser-line {
  margin: 0;
  font-size: .9rem;
  line-height: 1.8;
  color: var(--text-secondary);
  overflow-wrap: anywhere;
}
.teaser-more {
  margin-top: auto;
  font-size: var(--fs-small);
  font-weight: 600;
  color: var(--forecast);
  white-space: nowrap;
}

/* ---------- 首页：� 业入口卡 ---------- */
.ind-entry {
  display: flex;
  flex-direction: column;
  gap: 10px;
  border: 1px solid var(--border);
  border-top: 2px solid var(--trend);
  border-radius: var(--r-md);
  background: var(--surface);
  padding: 16px 18px 14px;
  min-width: 0;
  text-decoration: none;
  transition: border-color .15s, background .15s;
}
.ind-entry:hover { border-color: var(--border-strong); background: var(--surface-hover); text-decoration: none; }
.ie-title { font-size: 1.04rem; font-weight: 700; color: var(--text-primary); overflow-wrap: anywhere; word-break: break-word; }
.ie-trend { margin: 0; font-size: .9rem; line-height: 1.8; color: var(--trend); overflow-wrap: anywhere; }
.ie-list { margin: 0; padding-left: 0; list-style: none; }
.ie-list li {
  position: relative;
  padding-left: 16px;
  font-size: .9rem;
  line-height: 1.8;
  color: var(--text-secondary);
  overflow-wrap: anywhere;
}
.ie-list li::before { content: "\2014"; position: absolute; left: 2px; color: var(--text-muted); }
.ie-more { margin-top: auto; font-size: var(--fs-small); font-weight: 600; color: var(--text-link); white-space: nowrap; }

/* ============================================================
   �?空�?/ 提示 / 工具�?   ============================================================ */
.empty, .muted { color: var(--text-muted); font-size: var(--fs-small); }
.notice {
  color: var(--danger);
  font-weight: 600;
  margin: 8px 0;
  background: var(--danger-soft);
  border: 1px solid var(--danger-line);
  border-radius: var(--r-sm);
  padding: 8px 12px;
}
.pill {
  display: inline-block;
  background: var(--tint-2);
  color: var(--text-secondary);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 0 10px;
  font-size: var(--fs-micro);
}
.pill.gray { background: var(--tint-1); color: var(--text-muted); }
.hint { color: var(--text-muted); font-size: var(--fs-small); line-height: 1.75; }
.empty-state {
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 24px 20px;
  background: var(--surface);
  text-align: center;
  min-width: 0;
}
.empty-title { font-size: 1rem; font-weight: 700; color: var(--text-primary); }
.empty-hint {
  margin: 8px auto 0;
  max-width: 62ch;
  font-size: var(--fs-small);
  color: var(--text-muted);
  line-height: 1.8;
}

/* ============================================================
   �?响应式（�?100px / �?00px / �?40px�?   ============================================================ */
@media (max-width: 1100px) {
  .tech-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 900px) {
  main { padding: 16px 14px 52px; }
  .hero, section.block { padding: 16px 16px; border-radius: var(--r-md); }
  .hero h1 { font-size: 1.4rem; }
  .grid2 { grid-template-columns: 1fr; }
  .tech-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ind-grid, .fc-list, .entry-grid, .fc-legend, .teaser-grid, .cap-grid { grid-template-columns: 1fr; }
  .tc-two { grid-template-columns: 1fr; }
  .read-wrap { padding-bottom: 40px; }
  .read-cols, .read-grid-2 { grid-template-columns: 1fr; }
  .impact-grid { grid-template-columns: 1fr; }
  .ind-row { flex-direction: column; }
  .ind-list { grid-template-columns: 1fr; }
  .wt-steps { grid-template-columns: 1fr; }
  .wt-arrow { padding-top: 0; }
  .et-step { flex-direction: column; gap: 3px; }
  .et-lbl { flex: none; }
  .et-arrow { padding-left: 0; }
  .ins-foot { flex-direction: column; align-items: flex-start; }
}

@media (max-width: 640px) {
  header { padding: 10px 12px; gap: 12px; }
  .header { padding: 10px 12px; }
  .brand { font-size: .95rem; }
  .brand small { display: none; }
  .nav { gap: 2px; }
  .nav a { font-size: .8rem; padding: 4px 6px; }
  #manage-login, #logout, header .user-chip a { font-size: .76rem; padding: 4px 8px; }
  main { padding: 14px 12px 40px; }
  .hero, section.block { padding: 14px 14px; }
  .hero h1 { font-size: 1.22rem; }
  .hero p { font-size: .9rem; }
  section.block h2 { font-size: 1rem; }
  .intel-hero h1 { font-size: 1.26rem; }

  .stats { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .stat { padding: 10px 6px; }
  .stat .n { font-size: 1.15rem; }
  .ov-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ov-trends { flex-direction: column; }
  .entry-grid { grid-template-columns: 1fr; }
  .entry { padding: 12px 13px; }
  .entry-badge { position: static; display: inline-block; margin-top: 6px; }

  .tech-grid { grid-template-columns: 1fr; }
  .ind-grid, .fc-list, .trend-grid, .teaser-grid { grid-template-columns: 1fr; }
  .tech-card, .ind-mod, .fc-card { padding: 11px 12px; }
  .tc-head { align-items: flex-start; }
  .tc-head h3 { font-size: .95rem; flex: 1 1 100%; }
  .tc-two { grid-template-columns: 1fr; }
  .im-head { flex-direction: column; }
  .fc-leg { padding-right: 40px; }
  .fc-legend { grid-template-columns: 1fr; }
  .insight { padding: 12px 12px 10px; border-left-width: 3px; }
  .ins-head { flex-direction: column; gap: 8px; }
  .ins-title { flex: 1 1 auto; }
  .gauge {
    width: 100%;
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 8px;
    padding: 6px;
  }
  .gauge-num { font-size: 1.35rem; }
  .ins-title h3 { font-size: 1.02rem; }
  .ins-headline { font-size: .92rem; }
  .ins-foot { flex-direction: column; align-items: flex-start; }
  .impact-grid { grid-template-columns: 1fr; }
  .ind-row { flex-direction: column; }
  .ind-list { grid-template-columns: 1fr; }
  .wt-steps { grid-template-columns: 1fr; }
  .wt-arrow { padding-top: 0; }
  .et-step { flex-direction: column; gap: 3px; }
  .et-lbl { flex: none; }
  .et-arrow { padding-left: 0; }

  .v21-head h2 { font-size: .98rem; }
  .sources-line { font-size: .76rem; }
  .source-line { font-size: .76rem; }

  .hero-story { padding: 18px 16px 16px; }
  .hs-title { font-size: 1.35rem; max-width: none; }
  .sec-head { gap: 6px; }
  .read-title { font-size: 1.45rem; }
  .read-lead { font-size: 1rem; }
  .read-body { font-size: var(--fs-body); }
  .read-body h2 { margin-top: 34px; font-size: 1.14rem; }
  .read-body h3 { font-size: 1rem; }
  .read-callout { padding: 14px 14px; font-size: .98rem; }
  .read-card { padding: 12px 13px; }
  .timeline { padding-left: 18px; }
  .timeline-dot { left: -24px; }
  .job-role { flex: 1 1 auto; }
  .job-change { flex: 1 1 100%; }

  .toolbar { flex-direction: column; align-items: stretch; }
  .toolbar input[type=text], .toolbar select, .toolbar button { width: 100%; flex: none; }
  .card { padding: 10px 12px; }
  .card h3 { font-size: .95rem; }
  pre.out { font-size: var(--fs-small); padding: 10px; }
  table { font-size: .8rem; }
  th, td { padding: 6px 8px; }
  button { padding: 10px 15px; }

  /* 防�  iOS 聚焦�D��放大 */
  input, select, textarea { font-size: 16px; }
  input[type=text], input[type=password], textarea, select { font-size: 16px; }
}

/* ============================================================
   §2.3 Industry Watch / 行业观察 + 首页两栏 Editorial Layout
   原则：「列表页模块化，详情页文章化」�?   - 首页：左侧技� ��新（Hero Story + �^��），右侧行业观察（固定六�G 业）
   - /watch/<行业>：像一篇� 业短文章，不� ��表盘
   视�N上刻意与 /trends（技�?�?行业）区分：观察页用主蓝 + 杂志式排版，
   趋势页用科技�?+ 分节卡片�?   ============================================================ */

/* ---------- 首页两栏 Editorial Layout ---------- */
.home-lead {
  padding: 30px 0 22px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 26px;
}
.home-lead .kicker {
  font-size: .74rem;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--accent);
  font-weight: 700;
  margin: 0 0 10px;
}

/* \u00A7 Phase 2B-6\uFF1Aabout \u9875\u7684\u300C\u4EA7\u54C1\u5B9A\u4F4D\u300D\u5757\uFF08\u7F16\u8F91\u90E8\u98CE\u683C\uFF0C\u4E0D\u505A\u5361\u7247\u5899\uFF09 */
.product-positioning .kicker {
  font-size: .74rem;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--accent);
  font-weight: 700;
  margin: 0 0 8px;
}
.product-positioning h2 {
  margin: 0 0 12px;
  font-size: clamp(1.3rem, 2.6vw, 1.7rem);
  line-height: 1.35;
}
.product-positioning p {
  margin: 0 0 12px;
  max-width: var(--maxw-read);
}
.product-positioning p:last-child { margin-bottom: 0; }
.home-lead h1 {
  margin: 0 0 12px;
  font-size: clamp(1.55rem, 3.4vw, 2.25rem);
  line-height: 1.28;
  letter-spacing: -.01em;
  color: var(--text-primary);
}
.home-lead p {
  margin: 0;
  max-width: 62ch;
  font-size: 1.02rem;
  line-height: 1.75;
  color: var(--text-secondary);
}
.home-lead .analyzed {
  margin-top: 14px;
  font-size: .84rem;
  color: var(--text-muted);
  letter-spacing: .02em;
}

.two-col {
  display: grid;
  grid-template-columns: minmax(0, 1.62fr) minmax(0, 1fr);
  gap: 34px;
  align-items: start;
}
.col-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 9px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 16px;
}
.col-head h2 {
  margin: 0;
  font-size: 1.04rem;
  letter-spacing: .01em;
  color: var(--text-primary);
}
.col-head .col-more { font-size: .8rem; color: var(--accent); text-decoration: none; white-space: nowrap; }
.col-head .col-more:hover { text-decoration: underline; }
.col-right { border-left: 1px solid var(--border); padding-left: 30px; }

/* ---------- 技� ��新列（主页左侧） ---------- */
.home-tech-list { display: flex; flex-direction: column; gap: 0; }
.home-tech {
  display: block;
  padding: 15px 0;
  border-bottom: 1px solid var(--border);
  text-decoration: none;
}
.home-tech:last-child { border-bottom: none; }
.home-tech:hover { text-decoration: none; }
.home-tech .ht-top { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; margin-bottom: 5px; }
.home-tech .ht-name {
  font-size: 1.02rem;
  font-weight: 700;
  color: var(--text-primary);
  overflow-wrap: anywhere;
  word-break: break-word;
  min-width: 0;
}
.home-tech:hover .ht-name { color: var(--accent); }
.home-tech .ht-gain {
  margin-left: auto;
  font-size: .74rem;
  font-weight: 700;
  color: var(--tech);
  border: 1px solid var(--tech-line);
  background: var(--tech-soft);
  border-radius: 5px;
  padding: 0 7px;
  white-space: nowrap;
}
.home-tech .ht-line {
  margin: 0 0 6px;
  font-size: .92rem;
  line-height: 1.68;
  color: var(--text-secondary);
  overflow-wrap: anywhere;
}
.home-tech .ht-meta { font-size: .75rem; color: var(--text-muted); }
.home-tech .ht-meta .dotsep { margin: 0 6px; color: var(--border-strong); }

/* ---------- 行业观察列（主页右侧�?---------- */
.watch-lead { font-size: .82rem; color: var(--text-muted); line-height: 1.7; margin: 0 0 14px; }
.watch-list { display: flex; flex-direction: column; }
.watch-row {
  display: block;
  padding: 12px 0;
  border-bottom: 1px solid var(--border);
  text-decoration: none;
}
.watch-row:last-child { border-bottom: none; }
.watch-row:hover { text-decoration: none; }
.watch-row .wr-industry {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: .76rem;
  font-weight: 700;
  letter-spacing: .06em;
  color: var(--accent);
  margin-bottom: 4px;
}
.watch-row .wr-industry::before {
  content: "";
  width: 5px; height: 5px;
  background: var(--accent);
  border-radius: 50%;
  flex: 0 0 auto;
}
.watch-row .wr-title {
  font-size: .95rem;
  font-weight: 700;
  line-height: 1.5;
  color: var(--text-primary);
  overflow-wrap: anywhere;
  word-break: break-word;
  margin: 0;
}
.watch-row:hover .wr-title { color: var(--accent); }
.watch-row .wr-impact {
  margin: 5px 0 0;
  font-size: .83rem;
  line-height: 1.62;
  color: var(--text-secondary);
  overflow-wrap: anywhere;
}
.watch-row .wr-empty { font-size: .85rem; color: var(--text-muted); font-style: normal; margin: 0; }
.watch-row .wr-more { font-size: .74rem; color: var(--text-muted); margin-top: 5px; }
.watch-row.is-empty .wr-industry { color: var(--text-muted); }
.watch-row.is-empty .wr-industry::before { background: var(--text-muted); opacity: .5; }

/* ---------- 行业观察列表�?/watch ---------- */
.watch-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(320px, 100%), 1fr));
  gap: 18px;
}
.watch-card {
  display: block;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface-raised);
  padding: 16px 18px;
  text-decoration: none;
  transition: border-color .16s, background .16s;
}
.watch-card:hover { border-color: var(--accent-line); background: var(--surface-hover); text-decoration: none; }
.watch-card .wc-industry {
  font-size: .76rem;
  font-weight: 700;
  letter-spacing: .08em;
  color: var(--accent);
  margin-bottom: 8px;
}
.watch-card .wc-title {
  margin: 0 0 8px;
  font-size: 1.06rem;
  font-weight: 700;
  line-height: 1.45;
  color: var(--text-primary);
  overflow-wrap: anywhere;
  word-break: break-word;
}
.watch-card .wc-summary {
  margin: 0;
  font-size: .88rem;
  line-height: 1.7;
  color: var(--text-secondary);
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.watch-card .wc-foot {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 12px;
  font-size: .74rem;
  color: var(--text-muted);
}
.watch-card.is-empty { background: var(--surface); border-style: dashed; }
.watch-card.is-empty .wc-title { color: var(--text-muted); font-weight: 600; font-size: .95rem; }

/* ---------- 行业观察阅���?/watch/<industry> ---------- */
.watch-article { max-width: 40rem; }
.watch-article .wa-industry {
  font-size: .76rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--accent);
  font-weight: 700;
  margin-bottom: 10px;
}
.watch-article h1.wa-title {
  margin: 0 0 16px;
  font-size: clamp(1.5rem, 3vw, 2rem);
  line-height: 1.32;
  letter-spacing: -.005em;
  color: var(--text-primary);
  overflow-wrap: anywhere;
  word-break: break-word;
}
.watch-article .wa-summary {
  margin: 0 0 18px;
  font-size: 1.06rem;
  line-height: 1.82;
  color: var(--text-secondary);
}
.watch-article .wa-meta {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  padding: 12px 0 18px;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  font-size: .78rem;
  color: var(--text-muted);
}
.watch-article .wa-meta b { color: var(--text-secondary); font-weight: 600; }
.wa-sec { margin: 26px 0 0; }
.wa-sec > h2 {
  margin: 0 0 10px;
  font-size: 1.02rem;
  letter-spacing: .02em;
  color: var(--text-primary);
  padding-left: 11px;
  border-left: 3px solid var(--accent);
  line-height: 1.5;
}
.wa-sec > p { margin: 0; font-size: .96rem; line-height: 1.85; color: var(--text-secondary); }
.wa-sec .wa-overline {
  font-size: .72rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--text-muted);
  margin-bottom: 5px;
}
.wa-quote {
  margin: 0;
  padding: 14px 18px;
  background: var(--surface-raised);
  border-left: 3px solid var(--accent);
  border-radius: 0 8px 8px 0;
  font-size: 1rem;
  line-height: 1.78;
  color: var(--text-primary);
}
.wa-quote.possible { border-left-color: var(--forecast); background: var(--forecast-soft); }
.wa-quote.risk { border-left-color: var(--danger); background: var(--danger-soft); }

/* 现实影响：定义列表式排版（不用卡片堆叠） */
.wa-impact { margin: 0; border-top: 1px solid var(--border); }
.wa-impact-row {
  display: grid;
  grid-template-columns: 11.5rem minmax(0, 1fr);
  gap: 14px;
  padding: 11px 0;
  border-bottom: 1px solid var(--border);
  align-items: start;
}
.wa-impact-row dt {
  font-size: .82rem;
  font-weight: 700;
  color: var(--text-muted);
  letter-spacing: .01em;
}
.wa-impact-row dd { margin: 0; min-width: 0; }
.wa-impact-row dd ul { margin: 0; padding-left: 0; list-style: none; }
.wa-impact-row dd li {
  font-size: .92rem;
  line-height: 1.7;
  color: var(--text-secondary);
  padding-left: 13px;
  position: relative;
  overflow-wrap: anywhere;
}
.wa-impact-row dd li::before {
  content: "\2022";
  position: absolute;
  left: 2px;
  color: var(--accent);
  font-weight: 800;
}
.wa-impact-row dd li.wa-cost-up::before { content: "\2191"; color: var(--danger); font-size: .8rem; }
.wa-impact-row dd li.wa-cost-down::before { content: "\2193"; color: var(--success); font-size: .8rem; }
.wa-impact-row dd p { margin: 0; font-size: .92rem; line-height: 1.7; color: var(--text-secondary); }

/* 值得想一想：观点块，与事实明硼��开 */
.wa-think {
  margin: 30px 0 0;
  padding: 20px 22px;
  border: 1px solid var(--border);
  border-left: 3px solid var(--tech);
  border-radius: 8px;
  background: var(--surface-raised);
}
.wa-think .wt-label {
  font-size: .72rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--tech);
  font-weight: 700;
  margin-bottom: 8px;
}
.wa-think p { margin: 0; font-size: 1.02rem; line-height: 1.85; color: var(--text-primary); }
.wa-think .wt-tag { display: block; margin-top: 10px; font-size: .72rem; color: var(--text-muted); }

.wa-source {
  margin: 30px 0 0;
  padding-top: 16px;
  border-top: 1px solid var(--border);
  font-size: .82rem;
  color: var(--text-muted);
  line-height: 1.85;
  overflow-wrap: anywhere;
}
.wa-source a { color: var(--accent); text-decoration: none; }
.wa-source a:hover { text-decoration: underline; }
.wa-source .src-lbl { color: var(--text-muted); font-weight: 700; margin-right: 6px; }

/* 行业阅��页的历史条目（Related reading�?*/
.wa-related { margin-top: 34px; padding-top: 18px; border-top: 1px solid var(--border); }
.wa-related h3 {
  margin: 0 0 12px;
  font-size: .82rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.wa-related-item {
  display: block;
  padding: 10px 0;
  border-bottom: 1px solid var(--border);
  text-decoration: none;
}
.wa-related-item:last-child { border-bottom: none; }
.wa-related-item .wr-t { font-size: .92rem; font-weight: 600; color: var(--text-primary); overflow-wrap: anywhere; }
.wa-related-item:hover .wr-t { color: var(--accent); }
.wa-related-item .wr-d { font-size: .74rem; color: var(--text-muted); margin-top: 3px; }

/* Evidence 类型标�（FACT / TREND / FORECAST�?*/
.ev-tag {
  display: inline-block;
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .08em;
  border-radius: 4px;
  padding: 1px 7px;
  border: 1px solid transparent;
}
.ev-tag.ev-FACT { color: var(--success); background: var(--success-soft); border-color: var(--success-line); }
.ev-tag.ev-TREND { color: var(--trend); background: var(--trend-soft); border-color: var(--trend-line); }
.ev-tag.ev-FORECAST { color: var(--forecast); background: var(--forecast-soft); border-color: var(--forecast-line); }

/* ---------- 2.3 响应�?---------- */
@media (max-width: 1000px) {
  .two-col { grid-template-columns: minmax(0, 1fr); gap: 30px; }
  .col-right { border-left: none; padding-left: 0; border-top: 1px solid var(--border); padding-top: 22px; }
  .home-lead { padding-top: 22px; }
}
@media (max-width: 640px) {
  .home-lead h1 { font-size: 1.32rem; }
  .home-lead p { font-size: .94rem; }
  .watch-card { padding: 13px 14px; }
  .watch-card .wc-title { font-size: 1rem; }
  .watch-article h1.wa-title { font-size: 1.3rem; }
  .watch-article .wa-summary { font-size: .98rem; }
  .wa-sec > h2 { font-size: .96rem; }
  .wa-sec > p { font-size: .92rem; }
  .wa-impact-row { grid-template-columns: minmax(0, 1fr); gap: 4px; padding: 10px 0; }
  .wa-impact-row dt { font-size: .78rem; }
  .wa-think { padding: 15px 16px; }
  .wa-think p { font-size: .96rem; }
}
/* ============================================================
   §2.4 Homepage & Visual Rebalance
   盽��：Industry Watch 成为首页绝��主�W；整体从「压抑深色技� ��台�?        变成「舒服、清晰、现代的深色技� ��� ��站」�?   原则：列表页信息密度�?/ 详情页阅读体验优�?/ 首页编辑部精选�?        减少「每样东西都� ��张卡片」，改用分割�?+ 留白 + 标�}层级 + 两栏�?   ============================================================ */

/* ---------- 首页 Hero（极简，无装饰�?---------- */
.home-lead {
  padding: 40px 0 30px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 30px;
}
.home-lead h1 {
  font-size: clamp(1.9rem, 4.2vw, 2.9rem);
  line-height: 1.24;
  letter-spacing: -.015em;
  margin: 0 0 16px;
}
.home-lead p { font-size: 1.05rem; line-height: 1.8; max-width: 60ch; }
.home-lead .analyzed {
  margin-top: 16px;
  font-size: .86rem;
  color: var(--accent);
  background: none;
  padding: 0;
  letter-spacing: .01em;
}

/* ---------- �?INDUSTRY WATCH 区块（��页��一主�W�?---------- */
.iw-block { margin-bottom: 40px; }
.iw-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  padding-bottom: 12px;
  border-bottom: 2px solid var(--border-strong);
  margin-bottom: 14px;
}
.iw-head h2 {
  margin: 0;
  font-size: .84rem;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--text-primary);
  font-weight: 800;
}
.iw-sub { margin: 6px 0 0; font-size: .92rem; color: var(--text-muted); }

/* �]��行业入口：文字���N��不是�^��彩色卡片 */
.iw-industries {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 22px;
  padding: 12px 0 16px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 22px;
}
.iw-industry {
  font-size: .95rem;
  font-weight: 600;
  color: var(--text-secondary);
  text-decoration: none;
  padding-bottom: 3px;
  border-bottom: 2px solid transparent;
  transition: color .15s, border-color .15s;
}
.iw-industry:hover { color: var(--accent); border-bottom-color: var(--accent); text-decoration: none; }
.iw-industry.is-empty { color: var(--text-muted); opacity: .7; }

/* 60 / 40 编辑部布局 */
.iw-grid {
  display: grid;
  grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
  gap: 36px;
  align-items: start;
}
.iw-lead { min-width: 0; }
.iw-lead-card { display: block; text-decoration: none; }
.iw-lead-card:hover { text-decoration: none; }
.iw-lead-meta {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 10px;
  font-size: .8rem;
  color: var(--text-muted);
}
.iw-cat {
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .1em;
  color: var(--accent);
}
.iw-lead-title {
  margin: 0 0 12px;
  font-size: clamp(1.5rem, 2.8vw, 2.05rem);
  line-height: 1.3;
  letter-spacing: -.01em;
  color: var(--text-primary);
  overflow-wrap: anywhere;
  word-break: break-word;
}
.iw-lead-card:hover .iw-lead-title { color: var(--accent); }
.iw-lead-summary {
  margin: 0 0 12px;
  font-size: 1.06rem;
  line-height: 1.85;
  color: var(--text-secondary);
}
.iw-lead-why {
  margin: 0 0 14px;
  font-size: .95rem;
  line-height: 1.8;
  color: var(--text-muted);
  padding-left: 13px;
  border-left: 2px solid var(--border-strong);
}
.iw-lead-foot { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.iw-src { font-size: .78rem; color: var(--text-muted); }

.iw-side { min-width: 0; }
.iw-side-list { display: flex; flex-direction: column; }
.iw-side-row {
  display: block;
  padding: 13px 0;
  border-top: 1px solid var(--border);
  text-decoration: none;
}
.iw-side-row:first-child { border-top: none; padding-top: 0; }
.iw-side-row:hover { text-decoration: none; }
.iw-side-cat {
  font-size: .76rem;
  font-weight: 700;
  letter-spacing: .1em;
  color: var(--accent);
  margin-bottom: 4px;
}
.iw-side-title {
  margin: 0;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.55;
  color: var(--text-primary);
  overflow-wrap: anywhere;
  word-break: break-word;
}
.iw-side-row:hover .iw-side-title { color: var(--accent); }
.iw-side-empty { margin: 0; font-size: .9rem; color: var(--text-muted); }
.iw-side-more { margin-top: 5px; font-size: .76rem; color: var(--text-muted); }
.iw-side-row.is-empty .iw-side-cat { color: var(--text-muted); }

/* 内�类型标�（brief / standard / deep_dive / editorial�?/
.ct-tag {
  display: inline-block;
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .06em;
  border-radius: 4px;
  padding: 1px 7px;
  border: 1px solid var(--border-strong);
  color: var(--text-secondary);
  white-space: nowrap;
}
.ct-deep_dive { color: var(--tech); border-color: var(--tech-line); background: var(--tech-soft); }
.ct-editorial { color: var(--forecast); border-color: var(--forecast-line); background: var(--forecast-soft); }
.ct-brief { color: var(--text-muted); }

/* ---------- 首页次级区块（统一节�，不用卡片�~�?---------- */
.hp-sec { margin-bottom: 38px; }
.hp-sec .sec-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 14px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 4px;
}
.hp-sec .sec-head h2 {
  margin: 0;
  font-size: 1.06rem;
  letter-spacing: .01em;
  color: var(--text-primary);
}

/* 深度观察精�?*/
.deep-list { display: flex; flex-direction: column; }
.deep-row {
  display: block;
  padding: 16px 0;
  border-bottom: 1px solid var(--border);
  text-decoration: none;
}
.deep-row:last-child { border-bottom: none; }
.deep-row:hover { text-decoration: none; }
.deep-top { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 6px; }
.deep-min { font-size: .76rem; color: var(--text-muted); }
.deep-title {
  margin: 0 0 6px;
  font-size: 1.2rem;
  line-height: 1.45;
  color: var(--text-primary);
  overflow-wrap: anywhere;
  word-break: break-word;
}
.deep-row:hover .deep-title { color: var(--accent); }
.deep-sum { margin: 0; font-size: .95rem; line-height: 1.8; color: var(--text-secondary); max-width: 78ch; }

/* 技� ��新（首页降级版：极短�?*/
.home-tech { padding: 13px 0; }
.home-tech .ht-break {
  margin: 6px 0 0;
  font-size: .88rem;
  line-height: 1.7;
  color: var(--text-muted);
  overflow-wrap: anywhere;
}
.home-tech .ht-meta { margin-top: 6px; color: var(--accent); font-weight: 600; }

/* 行业趋势入口�? �N�� */
.trend-entry-list { display: flex; flex-direction: column; }
.trend-entry {
  display: block;
  padding: 14px 0;
  border-bottom: 1px solid var(--border);
  text-decoration: none;
}
.trend-entry:last-child { border-bottom: none; }
.trend-entry:hover { text-decoration: none; }
.te-name {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--text-primary);
  margin-bottom: 4px;
}
.trend-entry:hover .te-name { color: var(--accent); }
.te-line { margin: 0 0 6px; font-size: .93rem; line-height: 1.75; color: var(--text-secondary); }
.te-more { font-size: .78rem; color: var(--accent); }

/* �E��推演 teaser */
.fc-teaser-list { display: flex; flex-direction: column; }
.fc-teaser {
  display: block;
  padding: 15px 0;
  border-bottom: 1px solid var(--border);
  text-decoration: none;
}
.fc-teaser:last-child { border-bottom: none; }
.fc-teaser:hover { text-decoration: none; }
.ft-title {
  margin: 0 0 6px;
  font-size: 1.08rem;
  line-height: 1.5;
  color: var(--text-primary);
  overflow-wrap: anywhere;
  word-break: break-word;
}
.fc-teaser:hover .ft-title { color: var(--forecast); }
.ft-line { margin: 0 0 6px; font-size: .92rem; line-height: 1.75; color: var(--text-secondary); }
.ft-more { font-size: .78rem; color: var(--forecast); }

.raw-strip-box {
  padding: 16px 0 4px;
  border-top: 1px solid var(--border);
  font-size: .84rem;
  color: var(--text-muted);
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

/* ---------- /watch 列表页：简单筛选（文字链接，不� ��囊堆叠） ---------- */
.watch-filter { margin-bottom: 26px; }
.wf-row {
  display: flex;
  align-items: baseline;
  gap: 6px 18px;
  flex-wrap: wrap;
  padding: 7px 0;
  border-bottom: 1px solid var(--border);
}
.wf-label {
  font-size: .74rem;
  letter-spacing: .1em;
  color: var(--text-muted);
  min-width: 32px;
}
.wf-item {
  font-size: .92rem;
  color: var(--text-secondary);
  text-decoration: none;
  padding-bottom: 2px;
  border-bottom: 2px solid transparent;
}
.wf-item:hover { color: var(--accent); text-decoration: none; }
.wf-item.active { color: var(--accent); border-bottom-color: var(--accent); font-weight: 700; }
.wf-item.wf-clear { color: var(--text-muted); font-size: .84rem; }
.wf-item.wf-clear:hover { color: var(--danger); }

/* ============================================================
   §2B-8 全局左侧行业导航 GLOBAL SIDEBAR（Phase 2B-8）
   ------------------------------------------------------------
   背景：Phase 2B-7 把 /watch 顶部的 15 个行业横向标签改成了「内容区里的左侧导航」；
   Phase 2B-8 再进一步 —— 首页 `/` 直接就是 Industry Watch，行业导航升级为
   **整个 viewport 布局**的一列：它与 <main> 平级、位于 <main> 之外，
   因此不再被 main 的 --maxw-page 限制，尽量贴近浏览器窗口左侧。

   结构：
     header（sticky，全宽）
     .iw-shell = grid: [ 行业 Sidebar ][ main 内容区 ]   ← 全宽，不居中

   原则：
     - Sidebar 只承担行业导航；地区 / 距离 / 类型 / 人群仍在内容区上方；
     - 只用主题 token（不新增颜色），Light / Dark 自动成立，不碰 theme.js；
     - 不做厚重后台 Sidebar、不加动画、不用 fixed（避免遮挡 header 与内容）；
     - 窄屏（≤900px）折回内容区上方的横向可滚动行业条，不产生整页横向溢出。
   ============================================================ */
.iw-shell {
  display: grid;
  grid-template-columns: 210px minmax(0, 1fr);
  align-items: start;
  min-width: 0;
}
/* Sidebar：贴窗口左侧（内缩由自身 padding 提供，不依赖外层居中容器） */
.iw-industry-nav {
  position: sticky;
  top: 62px;                       /* ≈ 顶栏高度 + 余量，滚动时不被 sticky header 盖住 */
  max-height: calc(100vh - 78px);
  overflow-y: auto;
  padding: 22px 16px 40px 22px;
  border-right: 1px solid var(--border);   /* 稳定但克制的视觉边界 */
  min-width: 0;
}
/* 内容区：脱离全局 main 的居中与最大宽度，右栏自适应 + 编辑部阅读宽度上限。
   Phase 2B-9：上限由 980px 提到 1480px —— 之前 210px Sidebar + 980px 正文会在宽屏右侧
   留下大片空白；现在用满 Sidebar 右侧的可用空间，并用 margin:auto 在可用轨道内居中。 */
.iw-shell > main {
  max-width: 1480px;
  margin: 0 auto;
  padding: 32px 40px 72px;
  min-width: 0;
}
.in-title {
  margin: 0 0 8px;
  padding-bottom: 9px;
  border-bottom: 1px solid var(--border);
  font-size: var(--fs-micro);
  letter-spacing: .14em;
  color: var(--text-muted);
}
.in-list { display: flex; flex-direction: column; min-width: 0; }
.in-list .muted { font-size: var(--fs-small); }
.in-item {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  padding: 6px 0 6px 10px;
  border-left: 2px solid transparent;
  font-size: .92rem;
  line-height: 1.5;
  color: var(--text-secondary);
  text-decoration: none;
}
.in-item:hover {
  color: var(--accent);
  border-left-color: var(--border-strong);
  text-decoration: none;
}
.in-item.active {
  color: var(--accent);
  border-left-color: var(--accent);
  font-weight: 700;
}
.in-item.active:hover { color: var(--accent); }
.in-item.is-empty { color: var(--text-muted); opacity: .7; }
.in-item.is-empty:hover { opacity: 1; }
.in-label { min-width: 0; overflow-wrap: anywhere; }
.in-count {
  flex: 0 0 auto;
  font-size: var(--fs-micro);
  color: var(--text-muted);
  font-variant-numeric: tabular-nums;
}
.in-item.active .in-count { color: var(--accent); }

/* CONTENT HOME：Hero 收得很紧（首页不再是 Landing Page，第一屏就要看到内容） */
.home-lead.home-lead-compact {
  padding: 14px 0 12px;
  margin-bottom: 22px;
}
.home-lead.home-lead-compact h1 {
  margin: 0 0 6px;
  font-size: clamp(1.45rem, 2.6vw, 1.95rem);
  line-height: 1.3;
}
.home-lead.home-lead-compact .kicker { margin-bottom: 6px; }
.home-lead.home-lead-compact .analyzed { margin-top: 8px; }

/* 窄屏：左侧栏折回内容区上方的横向可滚动行业条（不破坏功能、不横向溢出整页） */
@media (max-width: 1180px) {
  /* 平板：Sidebar 适当收窄，把宽度让给内容（spec §12） */
  .iw-shell { grid-template-columns: 182px minmax(0, 1fr); }
  .iw-shell > main { padding: 24px 28px 64px; }
}
@media (max-width: 900px) {
  .iw-shell { display: block; }
  .iw-industry-nav {
    position: static;
    max-height: none;
    overflow: visible;
    padding: 16px 20px 10px;
    border-right: none;
    border-bottom: 1px solid var(--border);
    margin-bottom: 6px;
  }
  .iw-shell > main { max-width: none; padding: 18px 20px 64px; }
  .in-title { margin-bottom: 4px; padding-bottom: 0; border-bottom: none; }
  .in-list {
    flex-direction: row;
    gap: 4px 16px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 2px;
  }
  .in-item {
    flex: 0 0 auto;
    padding: 4px 0;
    border-left: none;
    border-bottom: 2px solid transparent;
    white-space: nowrap;
    justify-content: flex-start;
    gap: 5px;
  }
  .in-item:hover { border-left-color: transparent; border-bottom-color: var(--border-strong); }
  .in-item.active { border-left-color: transparent; border-bottom-color: var(--accent); }
}
@media (max-width: 640px) {
  .home-lead.home-lead-compact h1 { font-size: 1.34rem; }
}

/* ============================================================
   \u2471 Industry Watch 3.0 \u7EF4\u5EA6\uFF08Phase 2B-5\uFF09
   ------------------------------------------------------------
   \u539F\u5219\uFF1A\u514B\u5236\u3001\u6587\u5B57\u4F18\u5148\u3001\u4E0D\u505A\u8272\u5757\u3002
   \u8FD9\u91CC\u53EA\u6709\u4E24\u79CD\u5F62\u6001\uFF1A\u5C0F\u5B57\u6807\u7B7E\uFF08dim-chip\uFF09\u4E0E\u4E00\u884C\u8BF4\u660E\uFF08dim-people\uFF09\u3002
   \u7981\u6B62\uFF1A\u8FDB\u5EA6\u6761 / \u767E\u5206\u6BD4 / \u5927\u8272\u5757 / tag cloud\u3002
   \u6240\u6709\u6587\u6848\u6765\u81EA API\uFF08taxonomy \u5C55\u793A\u540D\uFF09\uFF0C\u524D\u7AEF\u4E0D\u7EF4\u62A4\u8BCD\u8868\u3002
   ============================================================ */
.dim-row {
  display: flex;
  align-items: center;
  gap: 4px 10px;
  flex-wrap: wrap;
  margin-top: 9px;
}
.dim-chip {
  font-size: .74rem;
  line-height: 1.5;
  padding: 1px 7px;
  border-radius: 3px;
  border: 1px solid var(--border);
  background: var(--tint-1);
  color: var(--text-muted);
  white-space: nowrap;
}
.dim-region { color: var(--text-secondary); border-color: var(--border-strong); }
.dim-distance { color: var(--trend); border-color: var(--trend-line); background: var(--trend-soft); }
.dim-topic { color: var(--text-secondary); }
.dim-people {
  font-size: .78rem;
  color: var(--text-muted);
  overflow-wrap: anywhere;
}
/* \u5217\u8868/\u5361\u7247\u91CC\u7684\u300C\u9996\u5148\u53D7\u5230\u5F71\u54CD\u300D\u884C */
.wf-people {
  margin: 8px 0 0;
  font-size: .84rem;
  color: var(--text-muted);
}
/* \u8BE6\u60C5\u9875\uFF1A\u4EBA\u7FA4\u884C\u4E0E\u8DDD\u79BB\u884C */
.wa-people-line {
  font-size: 1.02rem;
  color: var(--text-primary);
  letter-spacing: .01em;
}
.wa-distance-line { color: var(--text-secondary); }
/* EDITORIAL \u58F0\u660E\uFF1A\u660E\u786E\u4E0D\u662F\u4E8B\u5B9E\u62A5\u9053 */
.wa-editorial-flag {
  margin: 14px 0 0;
  padding: 9px 13px;
  font-size: .86rem;
  color: var(--forecast);
  background: var(--forecast-soft);
  border-left: 2px solid var(--forecast);
  border-radius: 0 var(--r-sm) var(--r-sm) 0;
}
.iw-lead-meta .ev-inline { color: var(--text-muted); }

/* /watch 列表页头�?*/
.watch-lead-top {
  display: block;
  padding: 0 0 26px;
  border-bottom: 2px solid var(--border-strong);
  margin-bottom: 26px;
  text-decoration: none;
}
.watch-lead-top:hover { text-decoration: none; }

/* /watch 观察�?*/
.watch-feed { display: flex; flex-direction: column; }
.wf-item-row {
  display: block;
  padding: 20px 0;
  border-bottom: 1px solid var(--border);
  text-decoration: none;
}
.wf-item-row:last-child { border-bottom: none; }
.wf-item-row:hover { text-decoration: none; }
.wf-row-top { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 7px; }
.wf-min { font-size: .76rem; color: var(--text-muted); }
.wf-title {
  margin: 0 0 7px;
  font-size: 1.28rem;
  line-height: 1.42;
  color: var(--text-primary);
  overflow-wrap: anywhere;
  word-break: break-word;
}
.wf-item-row:hover .wf-title { color: var(--accent); }
.wf-sum {
  margin: 0 0 6px;
  font-size: .96rem;
  line-height: 1.8;
  color: var(--text-secondary);
  max-width: 80ch;
}
.wf-why {
  margin: 0 0 8px;
  font-size: .88rem;
  line-height: 1.7;
  color: var(--text-muted);
  padding-left: 12px;
  border-left: 2px solid var(--border-strong);
  max-width: 78ch;
}
.wf-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  font-size: .78rem;
  color: var(--text-muted);
}
.wf-read { color: var(--accent); font-weight: 600; }

/* ---------- /watch/<行业> 阅��页（� �重点：舒适的�_��阅���?---------- */
.watch-article { max-width: 46rem; }
.watch-article .wa-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; }
.watch-article h1.wa-title {
  font-size: clamp(1.85rem, 3.6vw, 2.6rem);
  line-height: 1.26;
  letter-spacing: -.012em;
  margin: 0 0 18px;
  color: var(--text-primary);
  overflow-wrap: anywhere;
  word-break: break-word;
}
.watch-article .wa-summary {
  margin: 0 0 20px;
  font-size: 1.14rem;
  line-height: 1.85;
  color: var(--text-secondary);
}
.watch-article .wa-meta {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
  padding: 13px 0;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  font-size: .82rem;
  color: var(--text-muted);
}
.wa-sec { margin: 30px 0 0; }
.wa-sec > h2 {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin: 0 0 11px;
  font-size: 1.22rem;
  line-height: 1.5;
  color: var(--text-primary);
  padding-left: 0;
  border-left: none;
}
.wa-no {
  font-size: .8rem;
  font-weight: 800;
  letter-spacing: .08em;
  color: var(--accent);
  font-variant-numeric: tabular-nums;
}
.wa-sec > p {
  margin: 0;
  font-size: 1.02rem;
  line-height: 1.9;
  color: var(--text-secondary);
  max-width: 42rem;
}

/* 深度观察正文 */
.wa-deep {
  margin: 34px 0 0;
  padding: 22px 0 4px;
  border-top: 2px solid var(--border-strong);
}
.wa-deep-head {
  margin: 0 0 18px;
  font-size: .82rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--tech);
  font-weight: 800;
}
.wa-deep-block { margin: 0 0 22px; }
.wa-deep-block h3 {
  margin: 0 0 8px;
  font-size: 1.1rem;
  line-height: 1.5;
  color: var(--text-primary);
  font-weight: 700;
}
.wa-deep-block p {
  margin: 0;
  font-size: 1.02rem;
  line-height: 1.92;
  color: var(--text-secondary);
  max-width: 42rem;
}

/* 现实影响：定义列表式（不用卡片堆叠） */
.wa-impact { margin: 0; border-top: 1px solid var(--border); }
.wa-impact-row {
  display: grid;
  grid-template-columns: 12rem minmax(0, 1fr);
  gap: 16px;
  padding: 13px 0;
  border-bottom: 1px solid var(--border);
  align-items: start;
}
.wa-impact-row dt {
  font-size: .84rem;
  font-weight: 700;
  color: var(--text-muted);
}
.wa-impact-row dd { margin: 0; min-width: 0; }
.wa-impact-row dd ul { margin: 0; padding-left: 0; list-style: none; }
.wa-impact-row dd li {
  font-size: .97rem;
  line-height: 1.78;
  color: var(--text-secondary);
  padding-left: 15px;
  position: relative;
  overflow-wrap: anywhere;
}
.wa-impact-row dd li::before {
  content: "\2022";
  position: absolute;
  left: 3px;
  color: var(--accent);
  font-weight: 800;
}
.wa-impact-row dd li.wa-cost-up::before { content: "\2191"; color: var(--danger); font-size: .82rem; }
.wa-impact-row dd li.wa-cost-down::before { content: "\2193"; color: var(--success); font-size: .82rem; }
.wa-impact-row dd p { margin: 0; font-size: .97rem; line-height: 1.78; color: var(--text-secondary); }

/* 值得想一�?*/
.wa-think {
  margin: 34px 0 0;
  padding: 22px 24px;
  border-left: 3px solid var(--forecast);
  background: var(--surface);
  border-radius: 0 8px 8px 0;
}
.wa-think .wt-label {
  font-size: .74rem;
  letter-spacing: .16em;
  color: var(--forecast);
  font-weight: 800;
  margin-bottom: 9px;
}
.wa-think p { margin: 0; font-size: 1.1rem; line-height: 1.88; color: var(--text-primary); }
.wa-think .wt-tag { display: block; margin-top: 11px; font-size: .74rem; color: var(--text-muted); }

.wa-source {
  margin: 32px 0 0;
  padding-top: 18px;
  border-top: 1px solid var(--border);
  font-size: .86rem;
  color: var(--text-muted);
  line-height: 1.9;
  overflow-wrap: anywhere;
}
.wa-source a { color: var(--accent); text-decoration: none; }
.wa-source a:hover { text-decoration: underline; }
.wa-editorial-note {
  margin: 14px 0 0;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  flex-wrap: wrap;
  font-size: .8rem;
  color: var(--text-muted);
  line-height: 1.7;
}
.wa-related { margin-top: 38px; padding-top: 20px; border-top: 1px solid var(--border); }
.wa-related h3 {
  margin: 0 0 4px;
  font-size: .78rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.wa-related-item { display: block; padding: 13px 0; border-bottom: 1px solid var(--border); text-decoration: none; }
.wa-related-item:last-child { border-bottom: none; }
.wa-related-item .wr-t {
  margin: 0;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.55;
  color: var(--text-primary);
  overflow-wrap: anywhere;
}
.wa-related-item:hover .wr-t { color: var(--accent); }
.wa-related-item .wr-d { font-size: .76rem; color: var(--text-muted); margin-top: 4px; }

/* ---------- 2.4 响应�?---------- */
@media (max-width: 1000px) {
  .iw-grid { grid-template-columns: minmax(0, 1fr); gap: 26px; }
  .iw-side-row:first-child { border-top: 1px solid var(--border); padding-top: 13px; }
  .home-lead { padding: 28px 0 22px; }
}
@media (max-width: 640px) {
  .home-lead h1 { font-size: 1.45rem; }
  .home-lead p { font-size: .96rem; }
  .iw-head h2 { font-size: .78rem; letter-spacing: .14em; }
  .iw-sub { font-size: .86rem; }
  .iw-industries { gap: 4px 16px; padding: 10px 0 13px; }
  .iw-industry { font-size: .9rem; }
  .iw-lead-title { font-size: 1.36rem; }
  .iw-lead-summary { font-size: .99rem; }
  .wa-impact-row { grid-template-columns: minmax(0, 1fr); gap: 5px; padding: 11px 0; }
  .wa-impact-row dt { font-size: .8rem; }
  .watch-article h1.wa-title { font-size: 1.5rem; }
  .watch-article .wa-summary { font-size: 1.04rem; }
  .wa-sec > h2 { font-size: 1.1rem; }
  .wa-sec > p, .wa-deep-block p { font-size: .98rem; line-height: 1.85; }
  .wa-think { padding: 17px 18px; }
  .wa-think p { font-size: 1.02rem; }
  .wf-title { font-size: 1.12rem; }
  .deep-title { font-size: 1.08rem; }
  .iw-block, .hp-sec { margin-bottom: 30px; }
}

/* ============================================================
   \u246F Light \u4E3B\u9898\uFF08OpsDaily 3.0 \u00B7 Phase 2B-1\uFF09
   ------------------------------------------------------------
   \u539F\u5219\uFF1A\u53EA\u8986\u76D6\u989C\u8272 token\uFF0C\u4E0D\u52A8\u5E03\u5C40 / \u5B57\u53F7 / \u5706\u89D2 / \u5BBD\u5EA6\u3002
   \u56E0\u6B64 Light \u4E0E Dark \u7684\u6392\u7248\u5B8C\u5168\u4E00\u81F4\uFF0C\u96F6\u5E03\u5C40\u56DE\u5F52\u3002

   \u751F\u6548\u4F18\u5148\u7EA7\uFF08\u9AD8 \u2192 \u4F4E\uFF09\uFF1A
     1. :root[data-theme="light"]  \u7528\u6237\u624B\u52A8\u9009 Light
     2. :root[data-theme="dark"]   \u7528\u6237\u624B\u52A8\u9009 Dark
     3. @media (prefers-color-scheme: light) + :root:not([data-theme])
        \u7528\u6237\u4ECE\u672A\u624B\u52A8\u9009\u62E9 \u2192 \u8DDF\u968F\u7CFB\u7EDF
     4. \u9ED8\u8BA4\uFF08\u65E0 JS \u4E5F\u65E0\u7CFB\u7EDF\u504F\u597D\uFF09\u2192 Dark

   \u4E3A\u4EC0\u4E48\u7528 `html[...]` \u800C\u4E0D\u662F `:root[...]`\uFF1A
   Tailwind/DaisyUI \u98CE\u683C\u7684 data-theme \u63D2\u4EF6\u4E60\u60EF\u5199\u5230 <html> \u4E0A\uFF0C
   \u8FD9\u91CC\u7528 html \u9009\u62E9\u5668\u53EF\u4EE5\u540C\u65F6\u517C\u5BB9\u5199\u5728 <html> \u6216 <body> \u4E0A\u7684\u60C5\u51B5\u3002
   ============================================================ */

/* \u624B\u52A8\u9009 Light\uFF08\u6700\u9AD8\u4F18\u5148\u7EA7\uFF09 */
html[data-theme="light"] {
  color-scheme: light;

  /* \u9875\u9762\u5E95\uFF1A\u6E29\u548C\u7684\u7C73\u767D\uFF0C\u907F\u514D\u7EAF\u767D\u523A\u773C\uFF08\u7F16\u8F91\u90E8 / \u7EB8\u5F20\u611F\uFF09 */
  --bg: #FBFAF7;
  --surface: #FFFFFF;
  --surface-raised: #FFFFFF;
  --surface-hover: #F1EEE6;

  /* \u6587\u5B57\uFF1A\u8FD1\u9ED1\u6B63\u6587 + \u4E2D\u7070\u6B21\u7EA7\uFF0C\u4FDD\u8BC1\u957F\u65F6\u95F4\u9605\u8BFB */
  --text-primary: #16181D;
  --text-secondary: #3F444D;
  --text-muted: #5F6570;

  /* \u8FB9\u6846\uFF1A\u4E2D\u6027\u6696\u7070\uFF0C\u5728\u7C73\u767D\u5E95\u4E0A\u6E05\u6670\u53EF\u89C1\u4F46\u4E0D\u523A\u773C */
  --border: #E4E0D7;
  --border-strong: #C8C2B4;

  /* \u8BED\u4E49\u8272\uFF1A\u4FDD\u7559\u8272\u76F8\uFF0C\u964D\u4F4E\u9971\u548C\u5EA6\u4E0E\u4EAEE\u5EA6\u4EE5\u9002\u5E94\u6D45\u5E95 */
  --accent: #1F5FBF;
  --tech: #5A55C8;
  --trend: #147A6B;
  --forecast: #8A6410;
  --danger: #B4342C;
  --success: #13755B;

  --text-link: #1B57B0;

  /* \u2605 \u5173\u952E\uFF1A\u53E0\u5C42\u53CD\u8F6C
     \u8FD9\u4E09\u4E2A token \u7684\u8BED\u4E49\u662F\u300C\u53E0\u5728 surface \u4E0A\u7684\u6781\u6DE1\u4E00\u5C42\u300D\u3002
     Dark \u4E0B\u662F\u767D\u8272\u53E0\u52A0\uFF1BLight \u4E0B\u5FC5\u987B\u6362\u6210\u9ED1\u8272\u53E0\u52A0\uFF0C
     \u5426\u5219\u4F1A\u51FA\u73B0\u300C\u767D\u5E95\u767D\u5361\u300D\u4E0E\u300Chover \u6BD4\u9ED8\u8BA4\u8FD8\u4EAE\u300D\u3002
     \u5168\u7AD9 42 \u5904 var(--tint-*) \u5168\u90E8\u7528\u5728 background \u4E0A\uFF0C\u6240\u4EE5\u53EA\u6539\u8FD9\u91CC\u5C31\u591F\u3002 */
  --tint-1: rgba(28,26,20,.035);
  --tint-2: rgba(28,26,20,.055);
  --tint-3: rgba(28,26,20,.085);

  /* \u8BED\u4E49\u8272\u53E0\u5C42 / \u63CF\u8FB9\uFF1A\u5728\u6D45\u5E95\u4E0A\u4E5F\u9700\u8981\u66F4\u9AD8\u4E0D\u900F\u660E\u5EA6\u624D\u770B\u5F97\u89C1 */
  --accent-soft: rgba(31,95,191,.09);
  --accent-line: rgba(31,95,191,.30);
  --tech-soft: rgba(90,85,200,.09);
  --tech-line: rgba(90,85,200,.30);
  --trend-soft: rgba(20,122,107,.09);
  --trend-line: rgba(20,122,107,.28);
  --forecast-soft: rgba(138,100,16,.11);
  --forecast-line: rgba(138,100,16,.30);
  --danger-soft: rgba(180,52,44,.08);
  --danger-line: rgba(180,52,44,.28);
  --success-soft: rgba(21,127,99,.09);
  --success-line: rgba(21,127,99,.28);

  /* \u9876\u680F\uFF1A\u534A\u900F\u660E\u7C73\u767D + \u6BDB\u73BB\u7483\uFF0C\u4E0E --bg \u4E00\u81F4 */
  --header-bg: rgba(251,250,247,.92);

  /* \u4E3B\u6309\u94AE\u524D\u666F\uFF1A\u767D\u5B57\u5728 #1F5FBF \u4E0A\u7EA6 6.2:1\uFF0C\u8FBE WCAG AA */
  --on-accent: #FFFFFF;

  /* \u4EAE\u8272\u53D8\u4F53\uFF1A\u6D45\u5E95\u4E0B\u5FC5\u987B\u53CD\u8FC7\u6765\u53D8**\u6DF1**\uFF08
     \u539F\u6765\u662F #9BA6F2\uFF0C\u5728\u767D\u5E95\u4E0A\u51E0\u4E4E\u4E0D\u53EF\u8BFB\uFF09 */
  --tech-bright: #4A45B8;
  /* \u6DF1\u8272 callout \u4E13\u7528\u6587\u5B57\uFF1A\u6D45\u5E95\u4E0B\u7528\u4E3B\u8272\u5373\u53EF\uFF0C\u65E0\u9700\u989D\u5916\u63D0\u4EAE */
  --danger-text: #A62E27;
  --forecast-text: #7A5810;

  /* \u9886\u57DF\u8BC6\u522B\u8272\uFF1A\u540C\u8272\u76F8\u964D\u9971\u548C\uFF0C\u907F\u514D\u6D45\u5E95\u4E0A\u523A\u773C */
  --cat-ai: #6A5AE0;
  --cat-cloudnative: #2E6FD0;
  --cat-security: #C0433F;
  --cat-database: #17805F;
  --cat-devops: #A9662A;
  --cat-programming: #5566CC;
  --cat-hardware: #5E6672;
  --cat-infrastructure: #227C93;
}

/* \u7528\u6237\u4ECE\u672A\u624B\u52A8\u9009\u62E9 \u2192 \u8DDF\u968F\u7CFB\u7EDF\uFF08\u7CFB\u7EDF Light\uFF09
   \u6CE8\u610F\uFF1A\u53EA\u6709\u5728 :root \u6CA1\u6709 data-theme \u65F6\u624D\u751F\u6548\uFF0C
   \u56E0\u6B64\u7528\u6237\u7684\u624B\u52A8\u9009\u62E9\u6C38\u8FDC\u4E0D\u4F1A\u88AB\u7CFB\u7EDF\u504F\u597D\u8986\u76D6\u3002 */
@media (prefers-color-scheme: light) {
  :root:not([data-theme]) {
    color-scheme: light;

    --bg: #FBFAF7;
    --surface: #FFFFFF;
    --surface-raised: #FFFFFF;
    --surface-hover: #F1EEE6;

    --text-primary: #16181D;
    --text-secondary: #3F444D;
    --text-muted: #5F6570;

    --border: #E4E0D7;
    --border-strong: #C8C2B4;

    --accent: #1F5FBF;
    --tech: #5A55C8;
    --trend: #147A6B;
    --forecast: #8A6410;
    --danger: #B4342C;
    --success: #13755B;

    --text-link: #1B57B0;

    --tint-1: rgba(28,26,20,.035);
    --tint-2: rgba(28,26,20,.055);
    --tint-3: rgba(28,26,20,.085);

    --accent-soft: rgba(31,95,191,.09);
    --accent-line: rgba(31,95,191,.30);
    --tech-soft: rgba(90,85,200,.09);
    --tech-line: rgba(90,85,200,.30);
    --trend-soft: rgba(20,122,107,.09);
    --trend-line: rgba(20,122,107,.28);
    --forecast-soft: rgba(138,100,16,.11);
    --forecast-line: rgba(138,100,16,.30);
    --danger-soft: rgba(180,52,44,.08);
    --danger-line: rgba(180,52,44,.28);
    --success-soft: rgba(21,127,99,.09);
    --success-line: rgba(21,127,99,.28);

    --header-bg: rgba(251,250,247,.92);
    --on-accent: #FFFFFF;

    --tech-bright: #4A45B8;
    --danger-text: #A62E27;
    --forecast-text: #7A5810;

    --cat-ai: #6A5AE0;
    --cat-cloudnative: #2E6FD0;
    --cat-security: #C0433F;
    --cat-database: #17805F;
    --cat-devops: #A9662A;
    --cat-programming: #5566CC;
    --cat-hardware: #5E6672;
    --cat-infrastructure: #227C93;
  }
}

/* \u663E\u5F0F Dark\uFF1A\u7528\u4E8E\u201C\u7528\u6237\u624B\u52A8\u9009 Dark\u201D\u76D6\u8FC7\u7CFB\u7EDF Light\u3002
   \u56E0\u4E3A :root \u9ED8\u8BA4\u5C31\u662F Dark\uFF0C\u8FD9\u91CC\u53EA\u9700\u628A color-scheme \u9489\u6B7B\uFF0C
   token \u4E0D\u518D\u91CD\u590D\uFF08\u4FDD\u6301\u5355\u4E00\u6765\u6E90\uFF0C\u907F\u514D\u4E24\u5904 Dark \u5B9A\u4E49\u8D70\u5206\uFF09\u3002 */
html[data-theme="dark"] {
  color-scheme: dark;
}

/* ------------------------------------------------------------
   \u4E3B\u9898\u5207\u6362\u6309\u94AE\uFF08header \u5185\uFF0C\u6781\u7B80\u6587\u5B57\u6309\u94AE\uFF09
   \u4E0D\u505A\u6210\u72EC\u7ACB\u9762\u677F / \u4E0B\u62C9\u83DC\u5355\uFF0C\u907F\u514D\u628A\u7F16\u8F91\u5A92\u4F53\u6DF7\u6210 SaaS \u540E\u53F0\u3002
   \u9ED8\u8BA4\u9690\u85CF\uFF0C\u7531 theme.js \u5728\u7ED1\u5B9A\u4E8B\u4EF6\u540E\u663E\u793A\uFF1A
   \u65E0 JS \u65F6\u4E0D\u4F1A\u7559\u4E0B\u4E00\u4E2A\u70B9\u4E86\u6CA1\u53CD\u5E94\u7684\u6309\u94AE\u3002 */
#theme-toggle {
  display: none;
  align-items: center;
  gap: 6px;
  padding: 5px 11px;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  background: transparent;
  color: var(--text-secondary);
  font-size: var(--fs-small);
  font-family: inherit;
  line-height: 1.4;
  white-space: nowrap;
  cursor: pointer;
  transition: background .15s, border-color .15s, color .15s;
  box-shadow: none;
  filter: none;
}
#theme-toggle.is-ready { display: inline-flex; }
#theme-toggle:hover {
  background: var(--surface-hover);
  border-color: var(--border-strong);
  color: var(--text-primary);
  filter: none;
}
#theme-toggle:focus-visible {
  outline: none;
  border-color: var(--accent-line);
  box-shadow: 0 0 0 3px var(--accent-soft);
}
#theme-toggle .tt-icon { font-size: .95em; line-height: 1; }

/* \u7CFB\u7EDF\u4E3B\u9898\u5207\u6362\u65F6\u505A\u4E00\u6B21\u77ED\u6682\u8FC7\u6E21\uFF0C\u907F\u514D\u786C\u5207\u3002
   \u6CE8\u610F\uFF1A\u8FC7\u6E21\u53EA\u52A0\u5728\u201C\u5141\u8BB8\u52A8\u753B\u201D\u7684\u524D\u63D0\u4E0B\uFF0C\u5E76\u9650\u5236\u5230\u989C\u8272\u5C5E\u6027\uFF0C
   \u907F\u514D\u5F71\u54CD\u5E03\u5C40\u4E0E\u957F\u5217\u8868\u6EDA\u52A8\u6027\u80FD\u3002 */
@media (prefers-reduced-motion: no-preference) {
  body,
  .header, header,
  section.block, .hero, .iw-block, .hp-sec, .watch-article,
  .nav a, .chip, .pill, .ev-tag, .ct-tag, .tech-card, .iw-lead-card {
    transition: background-color .18s ease, border-color .18s ease, color .18s ease;
  }
}

/* ============================================================
   §2B-9 Industry Watch 内容展示升级（Phase 2B-9）
   ------------------------------------------------------------
   把首页从「一列窄正文 + 右侧大片空白」改成编辑部内容首页：
     1. 今日最值得看的观察 = 主文章 + 右侧「其他值得看」两栏（62 / 38）
     2. 最新行业观察      = Desktop 两列 editorial grid（细分割线，无卡片 / 无阴影）
     3. 正文有可读宽度上限，靠加宽列数（而不是拉长行宽）消化空间
   原则：
     - 只用主题 token（Light / Dark 自动成立），不新增 hard-coded 颜色；
     - 不做阴影卡片、不做大圆角、不做 Dashboard；
     - ≤1100px 两栏塌成单栏；≤900px 继续走 Phase 2B-7 / 2B-8 的横向行业条。
   ============================================================ */

/* ---------- 今日最值得看的观察：主文章 + 其他值得看 ---------- */
.iw-lead-grid {
  display: grid;
  grid-template-columns: minmax(0, 62fr) minmax(0, 38fr);
  align-items: start;
}
.iw-lead-main { min-width: 0; padding-right: 34px; }
/* 主文章自带的下边框在双栏里会与右栏不齐，这里交给 .sec-head 的统一分割线 */
.iw-lead-main .watch-lead-top {
  border-bottom: none;
  padding-bottom: 0;
  margin-bottom: 0;
}
.iw-lead-main .iw-lead-title { font-size: clamp(1.6rem, 2.3vw, 2.1rem); }
.iw-lead-main .iw-lead-summary { max-width: 62ch; }
.iw-lead-main .iw-lead-why { max-width: 60ch; }

.iw-also {
  min-width: 0;
  padding-left: 30px;
  border-left: 1px solid var(--border);
}
.iw-also-head {
  margin: 0 0 10px;
  font-size: var(--fs-micro);
  letter-spacing: .14em;
  color: var(--text-muted);
}
.iw-also-list { display: flex; flex-direction: column; }
.iw-also-item {
  display: block;
  padding: 14px 0;
  border-top: 1px solid var(--border);
  text-decoration: none;
}
.iw-also-item:first-child { border-top: none; padding-top: 0; }
.iw-also-item:hover { text-decoration: none; }
.iw-also-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 5px;
  font-size: .74rem;
  color: var(--text-muted);
}
.iw-also-cat { font-weight: 700; letter-spacing: .08em; color: var(--accent); }
.iw-also-title {
  margin: 0 0 6px;
  font-size: 1.02rem;
  line-height: 1.5;
  color: var(--text-primary);
  overflow-wrap: anywhere;
  word-break: break-word;
}
.iw-also-item:hover .iw-also-title { color: var(--accent); }
.iw-also-foot { font-size: .74rem; color: var(--text-muted); }

/* ---------- 最新行业观察：Desktop 两列 editorial grid ---------- */
.watch-feed {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 44px;
  row-gap: 0;
}
.wf-item-row {
  display: block;
  padding: 20px 0;
  border-top: 1px solid var(--border);
  border-bottom: none;
  text-decoration: none;
}
.wf-item-row:hover { text-decoration: none; }
.wf-title { font-size: 1.16rem; }
.wf-sum { max-width: 58ch; }

/* 首页截断说明：诚实说明「共多少、去哪里看剩下的」，不做假分页 */
.feed-note {
  margin: 16px 0 0;
  font-size: .8rem;
  color: var(--text-muted);
}

/* ---------- 详情页：正文在可用轨道内居中 ----------
   避免宽屏下「左边一小块正文 + 右边巨大空白」；正文宽度本身不变（保持可读）。 */
.iw-shell > main .watch-article { margin: 0 auto; }

/* ---------- 响应式 ---------- */
@media (max-width: 1100px) {
  .iw-lead-grid { grid-template-columns: minmax(0, 1fr); }
  .iw-lead-main { padding-right: 0; }
  .iw-also {
    margin-top: 24px;
    padding: 18px 0 0;
    border-left: none;
    border-top: 1px solid var(--border);
  }
  .watch-feed { grid-template-columns: minmax(0, 1fr); }
  .wf-item-row { padding: 16px 0; }
  .iw-lead-main .iw-lead-title { font-size: clamp(1.5rem, 4vw, 1.9rem); }
}
@media (max-width: 640px) {
  .iw-also-title { font-size: .98rem; }
}

/* ============================================================
   §2B-11 地区：从「一级筛选」改为「文章语境」（Phase 2B-11）
   ------------------------------------------------------------
   产品决定：**行业 = 一级导航；地区 = 文章里的语境信息**。
   已实测确认地区内容不足以支撑频道（8 个地区里只有 1 个够厚），因此：
     - 用户可见的「地区」筛选行已移除（后端字段与 API 的 region 全部保留）；
     - 地区改为以**纯文本**出现在文章 metadata：
         主文章：行业 · 档位 · 证据 · 地区 · 生活距离（标题之上）
         右栏：  行业 · 档位 · 地区（标题之上）
         列表：  行业 · 档位 · 地区 · 生活距离（第一行，保持不变）
     - **不使用**国旗 / 国家图标 / 彩色块 / 地图 —— 地区是文本语境，不是视觉导航。
     - 删除一行筛选后，窄屏筛选区更短，不产生新的横向溢出。
   ============================================================ */
.iw-also-region { color: var(--text-secondary); }
/* 主文章 metadata 里的地区/距离沿用 dim-chip（纯文本标签，无国旗无图标） */
.iw-lead-meta .dim-chip { vertical-align: middle; }

/* ============================================================
   3.0.1 · Clinical blueprint on frosted paper
   The final layer intentionally consolidates the accumulated phase styles.
   Light is the default; explicit dark remains available as a neutral variant.
   ============================================================ */
:root:not([data-theme]),
html[data-theme="light"] {
  color-scheme: light;
  --bg: #f5f5f5;
  --surface: #ffffff;
  --surface-raised: #ffffff;
  --surface-hover: #fafafa;
  --text-primary: #0a0a0a;
  --text-secondary: #171717;
  --text-muted: #737373;
  --border: #e5e5e5;
  --border-strong: #d4d4d4;
  --accent: #0a0a0a;
  --tech: #404040;
  --trend: #404040;
  --forecast: #404040;
  --success: #404040;
  --danger: #dc2626;
  --text-link: #171717;
  --tint-1: rgba(10,10,10,.025);
  --tint-2: rgba(10,10,10,.045);
  --tint-3: rgba(10,10,10,.075);
  --accent-soft: #f5f5f5;
  --accent-line: #d4d4d4;
  --tech-soft: #f5f5f5;
  --tech-line: #e5e5e5;
  --trend-soft: #f5f5f5;
  --trend-line: #e5e5e5;
  --forecast-soft: #f5f5f5;
  --forecast-line: #e5e5e5;
  --success-soft: #f5f5f5;
  --success-line: #e5e5e5;
  --danger-soft: #fef2f2;
  --danger-line: #fecaca;
  --header-bg: rgba(255,255,255,.86);
  --on-accent: #ffffff;
  --tech-bright: #262626;
  --danger-text: #b91c1c;
  --forecast-text: #404040;
  --cat-ai: #525252;
  --cat-cloudnative: #525252;
  --cat-security: #525252;
  --cat-database: #525252;
  --cat-devops: #525252;
  --cat-programming: #525252;
  --cat-hardware: #525252;
  --cat-infrastructure: #525252;
  --r-sm: 14px;
  --r-md: 18px;
  --r-lg: 24px;
  /* 同上：1280 -> 1440 */
  --maxw-page: 1440px;
  --maxw-read: 760px;
  --paper-shadow: 0 1px 2px rgba(10,10,10,.04), 0 14px 38px rgba(10,10,10,.045);
}

html[data-theme="dark"] {
  color-scheme: dark;
  --bg: #0a0a0a;
  --surface: #171717;
  --surface-raised: #171717;
  --surface-hover: #262626;
  --text-primary: #fafafa;
  --text-secondary: #e5e5e5;
  --text-muted: #a3a3a3;
  --border: #2f2f2f;
  --border-strong: #404040;
  --accent: #fafafa;
  --tech: #d4d4d4;
  --trend: #d4d4d4;
  --forecast: #d4d4d4;
  --success: #d4d4d4;
  --text-link: #fafafa;
  --tint-1: rgba(255,255,255,.03);
  --tint-2: rgba(255,255,255,.055);
  --tint-3: rgba(255,255,255,.085);
  --accent-soft: #262626;
  --accent-line: #525252;
  --tech-soft: #262626;
  --tech-line: #404040;
  --trend-soft: #262626;
  --trend-line: #404040;
  --forecast-soft: #262626;
  --forecast-line: #404040;
  --success-soft: #262626;
  --success-line: #404040;
  --header-bg: rgba(23,23,23,.86);
  --on-accent: #0a0a0a;
  --tech-bright: #e5e5e5;
  --forecast-text: #d4d4d4;
  --paper-shadow: 0 1px 2px rgba(0,0,0,.25), 0 18px 42px rgba(0,0,0,.18);
}

html { scroll-behavior: smooth; }
body {
  min-height: 100vh;
  font-family: Geist, Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont,
               "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  font-size: 14px;
  line-height: 1.65;
  letter-spacing: -.006em;
  background: var(--bg);
}

::selection { color: var(--on-accent); background: var(--accent); }
a, button, input, textarea, select { -webkit-tap-highlight-color: transparent; }
a:focus-visible, button:focus-visible, input:focus-visible,
textarea:focus-visible, select:focus-visible {
  outline: 2px solid var(--text-primary);
  outline-offset: 3px;
}

.skip-link {
  position: fixed;
  z-index: 100;
  top: 10px;
  left: 10px;
  padding: 9px 14px;
  border-radius: 12px;
  color: var(--on-accent);
  background: var(--accent);
  transform: translateY(-160%);
}
.skip-link:focus { transform: translateY(0); }

.header,
header {
  min-height: 64px;
  padding: 10px clamp(18px, 4vw, 48px);
  gap: 12px;
  border-color: color-mix(in srgb, var(--border) 82%, transparent);
  box-shadow: 0 1px 12px rgba(10,10,10,.025);
  backdrop-filter: saturate(115%) blur(18px);
}
.brand { font-size: 1.02rem; font-weight: 720; letter-spacing: -.035em; }
.brand small { color: var(--text-muted); letter-spacing: .01em; }
.nav a,
#manage-login,
#logout,
header .user-chip a,
#theme-toggle {
  min-height: 36px;
  display: inline-flex;
  align-items: center;
  padding: 7px 12px;
  border-radius: 18px;
  border: 1px solid transparent;
  color: var(--text-muted);
}
.nav a:hover,
#manage-login:hover,
#logout:hover,
header .user-chip a:hover,
#theme-toggle:hover {
  color: var(--text-primary);
  border-color: var(--border);
  background: var(--surface-hover);
}
.nav a.active {
  color: var(--text-primary);
  background: var(--surface-hover);
  border: 1px solid var(--border);
  border-radius: 18px;
}
#theme-toggle.is-ready { display: inline-flex; }

main { width: 100%; }
.iw-shell {
  /* 1280 -> 1560：大屏下内容区更舒展，但仍保留左右留白（不是全宽） */
  width: min(100%, 1560px);
  margin: 0 auto;
  padding: 24px clamp(16px, 3vw, 32px) 72px;
  display: grid;
  grid-template-columns: 216px minmax(0, 1fr);
  gap: 24px;
  align-items: start;
}
.iw-shell > main {
  width: 100%;
  max-width: none;
  min-width: 0;
  padding: 0;
}
.iw-industry-nav {
  position: sticky;
  top: 88px;
  max-height: calc(100vh - 112px);
  overflow: auto;
  padding: 18px 12px 14px;
  border: 1px solid var(--border);
  border-radius: 24px;
  background: color-mix(in srgb, var(--surface) 86%, transparent);
  box-shadow: var(--paper-shadow);
  scrollbar-width: thin;
}
.in-title {
  padding: 0 10px 11px;
  color: var(--text-muted);
  font-size: .69rem;
  font-weight: 650;
  letter-spacing: .15em;
}
.in-list { gap: 3px; }
.in-item {
  min-height: 38px;
  padding: 8px 10px;
  border: 1px solid transparent;
  border-radius: 14px;
  color: var(--text-muted);
}
.in-item:hover { color: var(--text-primary); background: var(--surface-hover); }
.in-item.active {
  color: var(--text-primary);
  border-color: var(--border);
  background: var(--surface);
  box-shadow: 0 1px 2px rgba(10,10,10,.04);
}
.in-count {
  min-width: 22px;
  padding: 1px 7px;
  border-radius: 999px;
  color: var(--text-muted);
  background: var(--bg);
}

.home-lead.home-lead-compact,
.hero,
section.block,
.hp-sec,
.iw-block {
  border: 1px solid var(--border);
  border-radius: 24px;
  background: var(--surface);
  box-shadow: var(--paper-shadow);
}
.home-lead.home-lead-compact {
  margin: 0 0 16px;
  padding: 28px clamp(22px, 4vw, 38px);
}
.home-lead.home-lead-compact h1 {
  max-width: 780px;
  margin: 4px 0 7px;
  color: var(--text-primary);
  font-size: clamp(1.75rem, 3vw, 2.35rem);
  font-weight: 720;
  line-height: 1.14;
  letter-spacing: -.045em;
}
.home-lead .kicker {
  color: var(--text-muted);
  font-size: .72rem;
  font-weight: 650;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.home-lead.home-lead-compact .analyzed { color: var(--text-muted); }

.watch-filter {
  margin: 0 0 24px;
  padding: 14px 18px;
  border: 1px solid var(--border);
  border-radius: 24px;
  background: var(--surface);
  box-shadow: 0 1px 2px rgba(10,10,10,.025);
}
.wf-row { min-height: 42px; gap: 7px; border-color: var(--border); }
.wf-label { color: var(--text-muted); font-size: .74rem; letter-spacing: .08em; }
.watch-filter .wf-item,
.wf-clear {
  min-height: 32px;
  padding: 5px 11px;
  border: 1px solid transparent;
  border-radius: 16px;
  color: var(--text-muted);
  background: transparent;
}
.watch-filter .wf-item:hover,
.watch-filter .wf-item.active {
  color: var(--text-primary);
  border-color: var(--border);
  background: var(--surface-hover);
}

.sec-head {
  margin: 30px 0 14px;
  padding: 0 3px;
  border: 0;
}
.sec-head h2 { margin: 0; font-size: 1rem; font-weight: 680; letter-spacing: -.02em; }
.layer-tag { color: var(--text-muted); background: transparent; border: 0; }

.iw-lead-grid { gap: 16px; grid-template-columns: minmax(0, 1.58fr) minmax(280px, .92fr); }
.iw-lead-main { padding: 0; }
.iw-lead-main .watch-lead-top,
.iw-also {
  height: 100%;
  padding: clamp(22px, 3vw, 30px);
  border: 1px solid var(--border);
  border-radius: 24px;
  background: var(--surface);
  box-shadow: var(--paper-shadow);
}
.iw-lead-main .watch-lead-top { display: flex; flex-direction: column; }
.iw-lead-main .iw-lead-title {
  margin: 16px 0 10px;
  font-size: clamp(1.55rem, 2.7vw, 2.15rem);
  line-height: 1.17;
  letter-spacing: -.04em;
}
.iw-lead-summary { color: var(--text-secondary); line-height: 1.75; }
.iw-lead-why { color: var(--text-muted); }
.iw-lead-foot { margin-top: auto; padding-top: 18px; }
.iw-also { margin: 0; border-left: 1px solid var(--border); }
.iw-also-head { color: var(--text-muted); font-weight: 650; }
.iw-also-item { padding: 14px 0; border-color: var(--border); }
.iw-also-title { color: var(--text-primary); }
.iw-also-item:hover .iw-also-title { color: var(--text-muted); }

.ev-tag,
.ct-tag,
.dim-chip,
.pill,
.chip,
.status,
.badge {
  border-color: var(--border) !important;
  color: var(--text-muted) !important;
  background: var(--surface-hover) !important;
  box-shadow: none !important;
}
.iw-cat,
.iw-also-cat,
.detail-link,
.wf-read { color: var(--text-primary); }

.watch-feed {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}
.wf-item-row {
  min-width: 0;
  padding: 23px;
  border: 1px solid var(--border);
  border-radius: 24px;
  color: inherit;
  background: var(--surface);
  box-shadow: 0 1px 2px rgba(10,10,10,.025);
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.wf-item-row:last-child { border-bottom: 1px solid var(--border); }
.wf-item-row:hover {
  border-color: var(--border-strong);
  box-shadow: var(--paper-shadow);
  transform: translateY(-2px);
}
.wf-item-row:hover .wf-title { color: var(--text-primary); }
.wf-row-top { gap: 7px; }
.wf-title {
  margin: 15px 0 8px;
  color: var(--text-primary);
  font-size: 1.13rem;
  line-height: 1.42;
  letter-spacing: -.025em;
}
.wf-sum { color: var(--text-secondary); line-height: 1.7; }
.wf-why, .wf-people, .wf-foot, .wf-min { color: var(--text-muted); }

.feed-sentinel {
  min-height: 76px;
  margin-top: 18px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 9px;
  color: var(--text-muted);
  font-size: .8rem;
}
.feed-more,
button,
input[type="submit"] {
  min-height: 42px;
  padding: 9px 16px;
  border: 1px solid var(--accent);
  border-radius: 18px;
  color: var(--on-accent);
  background: var(--accent);
  box-shadow: none;
  font: inherit;
  font-weight: 620;
  cursor: pointer;
}
.feed-more:hover,
button:hover,
input[type="submit"]:hover { filter: none; opacity: .86; }
.feed-more:disabled,
button:disabled { cursor: wait; opacity: .55; }

input,
textarea,
select {
  min-height: 44px;
  padding: 10px 14px;
  border: 1px solid var(--border);
  border-radius: 18px;
  color: var(--text-primary);
  background: var(--surface);
  box-shadow: inset 0 1px 1px rgba(10,10,10,.025);
  font: inherit;
}
input:hover, textarea:hover, select:hover { border-color: var(--border-strong); }

.watch-article {
  max-width: 820px;
  padding: clamp(24px, 5vw, 56px);
  border: 1px solid var(--border);
  border-radius: 24px;
  background: var(--surface);
  box-shadow: var(--paper-shadow);
}
.watch-article h1.wa-title {
  font-size: clamp(2rem, 5vw, 3rem);
  line-height: 1.08;
  letter-spacing: -.05em;
}
.wa-summary { color: var(--text-secondary); }
.wa-sec, .wa-deep, .wa-related { border-color: var(--border); }
.wa-think, .wa-quote, .wa-editorial-note {
  border-color: var(--border);
  border-radius: 18px;
  background: var(--surface-hover);
}

.read-empty,
.notice,
.empty-state {
  border: 1px solid var(--border);
  border-radius: 24px;
  background: var(--surface);
  box-shadow: var(--paper-shadow);
}

.loading-shell { display: grid; gap: 16px; }
.skeleton-hero,
.skeleton-card {
  border: 1px solid var(--border);
  border-radius: 24px;
  background: var(--surface);
  overflow: hidden;
}
.skeleton-hero { height: 230px; }
.skeleton-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 16px; }
.skeleton-card { height: 210px; padding: 24px; }
.skeleton-line {
  height: 11px;
  margin-bottom: 13px;
  border-radius: 8px;
  background: var(--border);
  animation: skeleton-pulse 1.4s ease-in-out infinite;
}
.skeleton-line.short { width: 36%; }
.skeleton-line.medium { width: 68%; }
.skeleton-line.title { width: 88%; height: 20px; margin: 26px 0 18px; }
@keyframes skeleton-pulse { 0%, 100% { opacity: .45; } 50% { opacity: .9; } }

footer {
  max-width: 1280px;
  margin: 0 auto;
  padding: 28px clamp(18px, 4vw, 36px) 46px;
  border: 0;
  color: var(--text-muted);
}
footer a { color: var(--text-secondary); }

@media (max-width: 980px) {
  .iw-shell { display: block; padding-top: 16px; }
  .iw-industry-nav {
    position: static;
    max-height: none;
    margin-bottom: 16px;
    padding: 12px;
    overflow-x: auto;
  }
  .in-title { display: none; }
  .in-list { display: flex; width: max-content; }
  .in-item { white-space: nowrap; }
  .iw-lead-grid { grid-template-columns: minmax(0, 1fr); }
  .iw-also { margin-top: 0; padding: 22px; }
}

@media (max-width: 700px) {
  .header, header { min-height: 58px; padding: 9px 14px; }
  .brand small { display: none; }
  .header, header { gap: 7px; flex-wrap: nowrap; }
  .nav { order: initial; width: auto; flex: 0 0 auto; overflow: visible; flex-wrap: nowrap; }
  .nav a, #manage-login, #theme-toggle { min-height: 34px; padding: 6px 8px; }
  .iw-shell { padding: 12px 12px 56px; }
  .home-lead.home-lead-compact { padding: 22px 20px; }
  .watch-filter { padding: 12px 14px; border-radius: 20px; overflow: hidden; }
  .wf-row { display: flex; align-items: center; overflow-x: auto; flex-wrap: nowrap; }
  .wf-label { position: sticky; left: 0; z-index: 1; flex: 0 0 38px; padding: 7px 10px 7px 0; background: var(--surface); }
  .watch-filter .wf-item, .wf-clear { flex: 0 0 auto; white-space: nowrap; }
  .watch-feed, .skeleton-grid { grid-template-columns: minmax(0, 1fr); }
  .wf-item-row { padding: 20px; border-radius: 20px; }
  .watch-article { padding: 24px 20px; border-radius: 20px; }
  .iw-lead-main .watch-lead-top, .iw-also { border-radius: 20px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .skeleton-line { animation: none; }
  .wf-item-row { transition: none; }
}

/* ============================================================
   3.0.2 · Editorial intelligence workspace
   Industry Watch is a continuous working paper, not a card dashboard.
   Hierarchy comes from type, columns and hairlines; elevation is reserved
   for transient controls only.
   ============================================================ */
body[data-page="watchIndex"],
body[data-page="watchArticle"] {
  background: var(--surface);
}

body[data-page="watchIndex"] .header,
body[data-page="watchIndex"] header,
body[data-page="watchArticle"] .header,
body[data-page="watchArticle"] header {
  border-bottom: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface) 94%, transparent);
  box-shadow: none;
  backdrop-filter: blur(12px);
}

.iw-shell {
  /* 1280 -> 1560：与上面的版心调整一致（1920px 屏幕不再过度居中） */
  width: min(100%, 1560px);
  min-height: calc(100dvh - 64px);
  margin: 0 auto;
  padding: 0;
  grid-template-columns: 220px minmax(0, 1fr);
  gap: 0;
  align-items: stretch;
  border-inline: 1px solid var(--border);
  background: var(--surface);
}

.iw-shell > main {
  padding: 30px clamp(30px, 4.2vw, 56px) 88px;
}

.iw-industry-nav {
  position: sticky;
  top: 64px;
  align-self: start;
  height: calc(100dvh - 64px);
  max-height: none;
  padding: 30px 18px 24px;
  border: 0;
  border-right: 1px solid var(--border);
  border-radius: 0;
  background: var(--surface-hover);
  box-shadow: none;
}

.in-title {
  margin: 0 0 8px;
  padding: 0 10px 16px;
  border-bottom: 1px solid var(--border);
  font-variant-numeric: tabular-nums;
}

.in-list { gap: 0; }
.in-item {
  position: relative;
  min-height: 36px;
  padding: 7px 10px;
  border: 0;
  border-radius: 0;
  background: transparent;
}
.in-item:hover {
  color: var(--text-primary);
  background: color-mix(in srgb, var(--text-primary) 3%, transparent);
}
.in-item.active {
  color: var(--text-primary);
  border: 0;
  background: transparent;
  box-shadow: none;
  font-weight: 650;
}
.in-item.active::before {
  content: "";
  position: absolute;
  top: 8px;
  bottom: 8px;
  left: 0;
  width: 2px;
  background: var(--text-primary);
}
.in-count {
  min-width: 0;
  padding: 0;
  border-radius: 0;
  color: var(--text-muted);
  background: transparent;
  font-variant-numeric: tabular-nums;
}

.home-lead.home-lead-compact {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas: "kicker count" "title count";
  column-gap: 30px;
  margin: 0;
  padding: 10px 0 30px;
  border: 0;
  border-bottom: 1px solid var(--border);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.home-lead.home-lead-compact .kicker {
  grid-area: kicker;
  align-self: end;
  margin: 0 0 8px;
}
.home-lead.home-lead-compact h1 {
  grid-area: title;
  max-width: 780px;
  margin: 0;
  font-size: clamp(2rem, 4vw, 3rem);
  line-height: 1.06;
  letter-spacing: -.05em;
  text-wrap: balance;
}
.home-lead.home-lead-compact .analyzed {
  grid-area: count;
  align-self: end;
  max-width: 18ch;
  margin: 0 0 4px;
  padding-left: 22px;
  border-left: 1px solid var(--border);
  line-height: 1.45;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.watch-filter {
  margin: 0;
  padding: 10px 0 14px;
  border: 0;
  border-bottom: 1px solid var(--border);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.wf-row {
  min-height: 39px;
  gap: 5px;
  border-color: var(--border);
}
.wf-label {
  flex: 0 0 48px;
  color: var(--text-muted);
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .08em;
}
.watch-filter .wf-item,
.wf-clear {
  min-height: 29px;
  padding: 4px 9px;
  border: 0;
  border-radius: 4px;
  color: var(--text-muted);
  background: transparent;
}
.watch-filter .wf-item:hover {
  color: var(--text-primary);
  background: var(--surface-hover);
}
.watch-filter .wf-item.active {
  color: var(--on-accent);
  border: 0;
  background: var(--accent);
}

.sec-head {
  min-height: 45px;
  margin: 38px 0 0;
  padding: 12px 0 11px;
  border-top: 1px solid var(--border-strong);
  border-bottom: 1px solid var(--border);
}
.sec-head h2 {
  font-size: .9rem;
  font-weight: 650;
  letter-spacing: -.01em;
}
.layer-tag {
  font-variant-numeric: tabular-nums;
}

.iw-lead-grid {
  grid-template-columns: minmax(0, 1.72fr) minmax(260px, .86fr);
  gap: 0;
  border-bottom: 1px solid var(--border);
}
.iw-lead-main .watch-lead-top,
.iw-also {
  height: 100%;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.iw-lead-main .watch-lead-top {
  padding: 32px 38px 38px 0;
}
.iw-lead-main .iw-lead-title {
  max-width: 24ch;
  margin: 22px 0 14px;
  font-size: clamp(1.45rem, 2.6vw, 2.2rem);
  line-height: 1.22;
  letter-spacing: -.02em;
  text-wrap: balance;
}
.iw-lead-summary {
  max-width: 58ch;
  font-size: 1rem;
  line-height: 1.75;
  text-wrap: pretty;
}
.iw-lead-why {
  max-width: 58ch;
  margin-top: 16px;
  padding: 12px 0 0 18px;
  border-top: 1px solid var(--border);
  border-left: 2px solid var(--border-strong);
}
.iw-lead-foot { margin-top: 20px; padding-top: 0; }
.iw-also {
  margin: 0;
  padding: 30px 0 30px 30px;
  border-left: 1px solid var(--border);
}
.iw-also-head {
  padding-bottom: 10px;
  border-bottom: 1px solid var(--border);
  font-size: .72rem;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.iw-also-item { padding: 17px 0; }
.iw-also-title { line-height: 1.48; }

.iw-shell .ev-tag,
.iw-shell .ct-tag,
.iw-shell .dim-chip,
.iw-shell .pill,
.iw-shell .chip,
.iw-shell .status,
.iw-shell .badge {
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  color: var(--text-muted) !important;
  background: transparent !important;
}
.iw-lead-meta,
.iw-also-meta {
  gap: 0;
}
.iw-lead-meta > * + *::before,
.iw-also-meta > * + *::before {
  content: "/";
  margin: 0 8px;
  color: var(--border-strong);
  font-weight: 400;
}
.dim-row { gap: 14px; }

.watch-feed {
  display: block;
  border-bottom: 1px solid var(--border);
  counter-reset: watch-entry;
}
.wf-item-row {
  counter-increment: watch-entry;
  display: grid;
  grid-template-columns: 174px minmax(0, 1fr);
  grid-template-areas:
    "meta title"
    "meta summary"
    "meta why"
    "meta people"
    "meta foot";
  column-gap: 30px;
  row-gap: 8px;
  min-width: 0;
  margin: 0;
  padding: 28px 0 30px;
  border: 0;
  border-top: 1px solid var(--border);
  border-radius: 0;
  color: inherit;
  background: transparent;
  box-shadow: none;
  transition: background-color .18s ease;
}
.wf-item-row:first-child { border-top: 0; }
.wf-item-row:last-child { border-bottom: 0; }
.wf-item-row:hover {
  border-color: var(--border);
  background: var(--surface-hover);
  box-shadow: none;
  transform: none;
}
.wf-row-top {
  grid-area: meta;
  align-self: stretch;
  align-items: flex-start;
  flex-direction: column;
  gap: 5px;
  margin: 0;
  padding: 0 24px 0 0;
  border-right: 1px solid var(--border);
  color: var(--text-muted);
  font-size: .76rem;
  line-height: 1.45;
}
.wf-row-top::before {
  content: counter(watch-entry, decimal-leading-zero);
  margin-bottom: 12px;
  color: var(--text-primary);
  font-size: .72rem;
  font-weight: 650;
  letter-spacing: .08em;
  font-variant-numeric: tabular-nums;
}
.wf-row-top .iw-cat {
  color: var(--text-primary);
  font-size: .82rem;
  font-weight: 650;
}
.wf-title {
  grid-area: title;
  max-width: 34ch;
  margin: 0 0 3px;
  font-size: clamp(1.22rem, 2.1vw, 1.55rem);
  line-height: 1.28;
  text-wrap: balance;
}
.wf-sum {
  grid-area: summary;
  max-width: 68ch;
  margin: 0;
  line-height: 1.7;
  text-wrap: pretty;
}
.wf-why { grid-area: why; max-width: 68ch; margin: 2px 0 0; }
.wf-people { grid-area: people; margin: 0; }
.wf-foot {
  grid-area: foot;
  margin-top: 8px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
}
.wf-read { margin-left: auto; }

.feed-sentinel {
  min-height: 88px;
  margin: 0;
  border-bottom: 1px solid var(--border);
}

.watch-article {
  max-width: 780px;
  padding: 10px 0 88px;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.watch-article h1.wa-title {
  max-width: 24ch;
  font-size: clamp(1.65rem, 3.2vw, 2.6rem);
  line-height: 1.18;
  text-wrap: balance;
}
.wa-summary { max-width: 62ch; text-wrap: pretty; }
.wa-think,
.wa-quote,
.wa-editorial-note {
  padding-left: 18px;
  border: 0;
  border-left: 2px solid var(--border-strong);
  border-radius: 0;
  background: transparent;
}

.read-empty,
.notice,
.empty-state {
  padding-inline: 0;
  border: 0;
  border-block: 1px solid var(--border);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.loading-shell { gap: 0; }
.skeleton-hero,
.skeleton-card {
  border: 0;
  border-bottom: 1px solid var(--border);
  border-radius: 0;
  background: transparent;
}
.skeleton-hero { height: 260px; }
.skeleton-grid {
  display: block;
}
.skeleton-card { height: 190px; padding: 28px 0; }

body[data-page="watchIndex"] footer,
body[data-page="watchArticle"] footer {
  border-top: 1px solid var(--border);
  background: var(--surface);
}

@media (max-width: 980px) {
  .iw-shell {
    display: block;
    min-height: 0;
    padding: 0;
    border-inline: 0;
  }
  .iw-industry-nav {
    position: sticky;
    top: 58px;
    z-index: 8;
    width: 100%;
    height: auto;
    margin: 0;
    padding: 8px 16px;
    overflow-x: auto;
    border: 0;
    border-bottom: 1px solid var(--border);
    background: color-mix(in srgb, var(--surface-hover) 96%, transparent);
    backdrop-filter: blur(12px);
  }
  .in-list { display: flex; width: max-content; }
  .in-item { white-space: nowrap; }
  .in-item.active::before {
    top: auto;
    right: 10px;
    bottom: 2px;
    left: 10px;
    width: auto;
    height: 2px;
  }
  .iw-shell > main { padding: 28px clamp(22px, 5vw, 42px) 72px; }
  .iw-lead-grid { grid-template-columns: minmax(0, 1fr); }
  .iw-lead-main .watch-lead-top { padding-right: 0; }
  .iw-also {
    padding: 26px 0 20px;
    border-top: 1px solid var(--border);
    border-left: 0;
  }
}

@media (max-width: 700px) {
  .iw-shell > main { padding: 22px 18px 64px; }
  .home-lead.home-lead-compact {
    display: block;
    padding: 6px 0 24px;
  }
  .home-lead.home-lead-compact h1 {
    font-size: clamp(2rem, 10vw, 2.65rem);
  }
  .home-lead.home-lead-compact .analyzed {
    max-width: none;
    margin-top: 14px;
    padding: 0;
    border: 0;
    text-align: left;
  }
  .watch-filter {
    padding: 9px 0 12px;
    border-radius: 0;
    overflow: hidden;
  }
  .wf-row {
    display: flex;
    align-items: center;
    overflow-x: auto;
    flex-wrap: nowrap;
  }
  .wf-label {
    position: sticky;
    left: 0;
    z-index: 1;
    flex: 0 0 42px;
    padding: 7px 8px 7px 0;
    background: var(--surface);
  }
  .watch-filter .wf-item,
  .wf-clear { flex: 0 0 auto; white-space: nowrap; }
  .sec-head { margin-top: 30px; }
  .iw-lead-main .watch-lead-top { padding: 26px 0 30px; }
  .iw-lead-main .iw-lead-title {
    max-width: none;
    font-size: clamp(1.45rem, 6vw, 1.9rem);
  }
  .watch-feed { display: block; }
  .wf-item-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "meta"
      "title"
      "summary"
      "why"
      "people"
      "foot";
    row-gap: 9px;
    padding: 24px 0 26px;
    border-radius: 0;
  }
  .wf-row-top {
    align-self: auto;
    flex-direction: row;
    align-items: center;
    flex-wrap: wrap;
    gap: 7px;
    padding: 0 0 11px;
    border-right: 0;
    border-bottom: 1px solid var(--border);
  }
  .wf-row-top::before { margin: 0 5px 0 0; }
  .wf-title { max-width: none; font-size: 1.28rem; }
  .wf-foot { align-items: flex-start; gap: 8px; }
  .watch-article {
    max-width: none;
    padding: 6px 0 72px;
    border-radius: 0;
  }
  .watch-article h1.wa-title {
    max-width: none;
    font-size: clamp(1.6rem, 7vw, 2.2rem);
  }
}

/* ============================================================
   §3.0.3 Back to top（右下角「回到顶部」）
   ------------------------------------------------------------
   全站共用的**瞬时控件**（3.0.2 的 elevation 原则只留给这类控件）：
     - 默认隐藏（opacity/visibility + pointer-events），滚动一段距离后由 JS 加
       .is-visible 显示，回到顶部附近再隐藏；
     - position: fixed，不占文档流 —— 桌面端与移动端都不会挤压/遮挡主要内容，
       只浮在右下角留白上；
     - 只用主题 token，不引入任何第三方依赖；动画在 prefers-reduced-motion 下关闭。
   ============================================================ */
.back-to-top {
  position: fixed;
  right: clamp(16px, 3vw, 28px);
  bottom: clamp(16px, 3vh, 28px);
  z-index: 30;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
  color: var(--text-secondary);
  font: inherit;
  font-size: 1rem;
  line-height: 1;
  cursor: pointer;
  box-shadow: var(--paper-shadow, none);
  opacity: 0;
  visibility: hidden;
  transform: translateY(6px);
  pointer-events: none;
  transition: opacity .18s ease, transform .18s ease, visibility .18s ease,
              color .15s ease, border-color .15s ease;
}
.back-to-top.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  pointer-events: auto;
}
.back-to-top:hover {
  color: var(--text-primary);
  border-color: var(--border-strong);
  text-decoration: none;
}
.back-to-top:focus-visible {
  outline: 2px solid var(--text-primary);
  outline-offset: 3px;
}
@media (max-width: 640px) {
  .back-to-top { width: 38px; height: 38px; }
}
@media (prefers-reduced-motion: reduce) {
  .back-to-top { transition: none; transform: none; }
}
