report.css 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. /* ==========================================================================
  2. 报告阅读页(v3)
  3. 一份报告 = 一张"纸"(更实的玻璃衬底,保证万字长文清晰)+ 周围的玻璃浮层(目录/封面侧栏)。
  4. 光照仍然只有一种:左上来。表头、封面是"局部实底",正文字色只落在 --ink 上。
  5. ========================================================================== */
  6. .report{position:relative}
  7. body.in-report .search input{width:220px}
  8. /* ---------- 顶部返回条 ---------- */
  9. .r-topbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:-6px 0 16px;font-size:13px}
  10. .r-topbar-note{margin-left:auto;font-size:12px;color:var(--ink-3)}
  11. /* ---------- 目录(吸顶玻璃条) ---------- */
  12. /* 目录条吸顶后贴住顶栏:与筛选条同一套"玻璃顶栏 + 下方玻璃条"的处理 */
  13. .r-toc{
  14. position:sticky;top:calc(var(--topbar) - 1px);z-index:14;
  15. display:flex;align-items:center;gap:4px;
  16. margin:0 0 18px;padding:7px 8px;border-radius:6px 6px 16px 16px;
  17. background:rgba(255,255,255,.50);
  18. -webkit-backdrop-filter:var(--blur-2);backdrop-filter:var(--blur-2);
  19. border:1px solid rgba(255,255,255,.7);
  20. box-shadow:var(--light-top),0 10px 30px -24px rgba(32,48,90,.35);
  21. overflow-x:auto;scrollbar-width:none;
  22. }
  23. .r-toc::-webkit-scrollbar{display:none}
  24. .r-toc ol{display:flex;align-items:center;gap:2px;min-width:0}
  25. .r-toc a{
  26. display:inline-flex;align-items:center;gap:7px;white-space:nowrap;
  27. height:30px;padding:0 11px;border-radius:10px;color:var(--ink-2);font-size:12.5px;
  28. border:1px solid transparent;transition:background .15s,color .15s,box-shadow .15s;
  29. }
  30. .r-toc a:hover{background:rgba(255,255,255,.6);color:var(--ink);text-decoration:none}
  31. .r-toc a.on{
  32. background:rgba(255,255,255,.96);color:var(--ink);border-color:rgba(255,255,255,1);
  33. box-shadow:var(--light-top),0 4px 14px -10px rgba(32,48,90,.45);
  34. }
  35. .r-toc a.on .r-toc-no{color:var(--accent-ink)}
  36. .r-toc-cover{font-weight:500}
  37. .r-toc-no{font-size:11.5px;color:var(--ink-3);font-weight:600}
  38. .r-toc-s{font-size:10.5px;color:var(--ink-3);padding:1px 5px;border-radius:5px;box-shadow:inset 0 0 0 1px var(--rule-strong)}
  39. .r-toc a.on .r-toc-s{color:var(--accent-ink);box-shadow:inset 0 0 0 1px var(--accent-line)}
  40. /* ---------- 纸:正文衬底 ---------- */
  41. .r-paper{
  42. position:relative;max-width:1080px;margin:0 auto;padding:clamp(18px,3vw,40px) clamp(16px,3.4vw,48px) 40px;
  43. border-radius:26px;
  44. background:linear-gradient(170deg,rgba(255,255,255,.78),rgba(255,255,255,.66) 40%,rgba(255,255,255,.62));
  45. -webkit-backdrop-filter:var(--blur-3);backdrop-filter:var(--blur-3);
  46. border:1px solid rgba(255,255,255,.85);
  47. box-shadow:var(--light-top),var(--lift-3);
  48. color:var(--ink);
  49. }
  50. .r-paper::before{
  51. /* 左上角天光落点:呼应全站光源;极淡 */
  52. content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  53. background:radial-gradient(70% 40% at 0% 0%,rgba(255,255,255,.7),rgba(255,255,255,0) 60%);
  54. }
  55. .r-paper > *{position:relative}
  56. /* ---------- 封面 ---------- */
  57. .r-cover{display:grid;grid-template-columns:minmax(0,1fr) 268px;gap:clamp(20px,3vw,40px);align-items:start;padding:6px 0 30px;border-bottom:1px solid var(--rule)}
  58. .r-kicker{display:flex;align-items:center;flex-wrap:wrap;gap:6px 14px;font-size:12px;color:var(--ink-3)}
  59. .r-kicker .r-owner{margin-left:auto}
  60. .r-cover h1{font-size:clamp(24px,3vw,34px);line-height:1.25;letter-spacing:-.6px;font-weight:650;margin-top:14px}
  61. .r-sub{font-size:15px;color:var(--ink-2);margin-top:8px;line-height:1.6}
  62. .r-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px 24px;margin-top:22px}
  63. .r-meta dt{font-size:11px;color:var(--ink-3);letter-spacing:.4px}
  64. .r-meta dd{margin:3px 0 0;font-size:13px;color:var(--ink);line-height:1.55}
  65. /* 数据管线:2727 → 1190 → 730,数字大、单位小,箭头淡 */
  66. .r-pipe{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin-top:24px;padding:14px 16px;border-radius:14px;
  67. background:rgba(255,255,255,.5);box-shadow:inset 0 0 0 1px rgba(255,255,255,.85),var(--light-top)}
  68. .r-pipe-step{display:inline-flex;align-items:baseline;gap:5px}
  69. .r-pipe-step b{font-size:22px;font-weight:600;letter-spacing:-.5px;color:var(--ink)}
  70. .r-pipe-step b.glow,.r-pipe-step:last-of-type b{color:var(--accent-ink);text-shadow:0 0 20px rgba(29,92,240,.22)}
  71. .r-pipe-step span{font-size:12px;color:var(--ink-3)}
  72. .r-pipe-arrow{color:var(--ink-3);font-size:13px}
  73. .r-pipe-rate{margin-left:auto;font-size:12px;color:var(--ink-2);padding:2px 9px;border-radius:99px;background:var(--accent-wash);box-shadow:inset 0 0 0 1px var(--accent-line)}
  74. /* 封面右侧:证据链完整度(玻璃小卡片,L2) */
  75. .r-cover-side{
  76. padding:16px 18px;border-radius:18px;
  77. background:linear-gradient(155deg,rgba(255,255,255,.7),rgba(255,255,255,.42));
  78. -webkit-backdrop-filter:var(--blur-2);backdrop-filter:var(--blur-2);
  79. border:1px solid rgba(255,255,255,.9);box-shadow:var(--light-top),var(--lift-1);
  80. }
  81. .r-side-t{font-size:11.5px;color:var(--ink-3);letter-spacing:.3px;margin-bottom:8px}
  82. .r-side-row{display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;color:var(--ink-2);padding:7px 0;border-bottom:1px solid var(--rule)}
  83. .r-side-row b{font-size:14px;color:var(--ink)}
  84. .r-side-row.warn b{color:var(--warn)}
  85. .r-side-link{display:inline-flex;align-items:center;gap:6px;margin-top:12px;font-size:12.5px}
  86. .r-side-link svg{width:14px;height:14px}
  87. /* ---------- 结构总览 ---------- */
  88. .r-block{margin:34px 0}
  89. .r-block > h2{font-size:15px;font-weight:600;display:flex;align-items:baseline;gap:10px}
  90. .r-block > h2 span{font-size:12px;color:var(--ink-3);font-weight:400}
  91. .r-structure-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}
  92. .r-ch-card{
  93. display:flex;flex-direction:column;gap:6px;padding:15px 16px;border-radius:16px;color:inherit;text-decoration:none;
  94. background:linear-gradient(155deg,rgba(255,255,255,.62),rgba(255,255,255,.34));
  95. -webkit-backdrop-filter:var(--blur-2);backdrop-filter:var(--blur-2);
  96. border:1px solid rgba(255,255,255,.85);box-shadow:var(--light-top),var(--lift-1);
  97. transition:background .18s,transform .18s,box-shadow .18s;
  98. }
  99. .r-ch-card:hover{background:rgba(255,255,255,.85);text-decoration:none;transform:translateY(-1px);box-shadow:var(--light-top),var(--lift-2)}
  100. .r-ch-no{font-size:11px;color:var(--ink-3);font-family:var(--font-num);letter-spacing:.3px}
  101. .r-ch-card b{font-size:14.5px;color:var(--ink)}
  102. .r-ch-card span:last-child{font-size:12px;color:var(--ink-3);line-height:1.55}
  103. /* 执行摘要:四句话,编号用细线 */
  104. .r-exec ol{border-top:1px solid var(--rule-strong);margin-top:12px}
  105. .r-exec li{display:grid;grid-template-columns:40px minmax(0,1fr);gap:10px;padding:13px 0;border-bottom:1px solid var(--rule)}
  106. .r-exec-no{font-size:12px;color:var(--accent-ink);padding-top:3px}
  107. .r-exec p{font-size:14.5px;line-height:1.75;color:var(--ink)}
  108. /* KPI 组:大数字 + 小单位 + 一行解读 */
  109. .r-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:6px 0 8px}
  110. .r-kpi{
  111. padding:16px 18px;border-radius:16px;
  112. background:linear-gradient(155deg,rgba(255,255,255,.64),rgba(255,255,255,.36));
  113. -webkit-backdrop-filter:var(--blur-2);backdrop-filter:var(--blur-2);
  114. border:1px solid rgba(255,255,255,.88);box-shadow:var(--light-top),var(--lift-1);
  115. }
  116. .r-kpi-v{text-align:right;font-family:var(--font-num)}
  117. .r-kpi-v span{font-size:32px;font-weight:600;letter-spacing:-1px;line-height:1;color:var(--ink)}
  118. .r-kpi-v small{font-size:12.5px;color:var(--ink-3);margin-left:4px}
  119. .r-kpi-l{font-size:12.5px;color:var(--ink-2);margin-top:8px;font-weight:500}
  120. .r-kpi-n{font-size:12px;color:var(--ink-3);margin-top:3px;line-height:1.55}
  121. /* ---------- 章节 ---------- */
  122. .r-chapter{padding:40px 0 10px;border-top:1px solid var(--rule);margin-top:28px;scroll-margin-top:120px}
  123. .r-chapter:first-of-type{margin-top:10px}
  124. .r-ch-head{max-width:74ch}
  125. .r-ch-kicker{display:flex;gap:12px;align-items:center;font-size:11.5px;color:var(--accent-ink);letter-spacing:.8px;font-family:var(--font-num)}
  126. .r-ch-en{color:var(--ink-3);letter-spacing:.6px}
  127. .r-ch-head h2{font-size:clamp(22px,2.4vw,28px);font-weight:650;letter-spacing:-.4px;line-height:1.25;margin-top:8px}
  128. .r-ch-sub{font-size:13.5px;color:var(--ink-2);margin-top:6px}
  129. /* 章首导语:本章在回答什么问题——左侧一道极淡的强调线 */
  130. .r-ch-lead{
  131. margin:18px 0 6px;padding:4px 0 4px 16px;max-width:74ch;
  132. font-size:15.5px;line-height:1.85;color:var(--ink);
  133. box-shadow:inset 2px 0 0 var(--accent-line);
  134. }
  135. .r-sec{margin:30px 0}
  136. .r-sec-h{font-size:15px;font-weight:600;margin-bottom:12px;display:flex;gap:10px;align-items:baseline;color:var(--ink)}
  137. .r-sec-h .num{font-size:12.5px;color:var(--ink-3);font-weight:500;min-width:26px}
  138. .r-sec-note{font-size:12px;color:var(--ink-3);margin-top:10px;line-height:1.7}
  139. .r-para{font-size:15px;line-height:1.9;color:var(--ink);max-width:74ch}
  140. .r-muted{color:var(--ink-3)}
  141. /* ---------- 通用表:无竖线,交替极淡底色 ---------- */
  142. .r-tbl-wrap{overflow-x:auto;border-radius:14px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.7)}
  143. .r-tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px;line-height:1.65;min-width:560px}
  144. .r-tbl th{
  145. text-align:left;font-weight:500;font-size:11.5px;color:var(--ink-3);letter-spacing:.3px;
  146. padding:11px 14px;background:rgba(255,255,255,.62);border-bottom:1px solid var(--rule-strong);white-space:nowrap;
  147. }
  148. .r-tbl th.r{text-align:right}
  149. .r-tbl td{padding:12px 14px;border-bottom:1px solid var(--rule);vertical-align:top;color:var(--ink)}
  150. .r-tbl tbody tr:nth-child(even) td{background:rgba(255,255,255,.32)}
  151. .r-tbl tbody tr:hover td{background:rgba(255,255,255,.55)}
  152. .r-tbl tbody tr:last-child td{border-bottom:0}
  153. .r-tbl td.r{text-align:right}
  154. .r-tbl td.num{font-family:var(--font-num);font-variant-numeric:tabular-nums;white-space:nowrap}
  155. .r-tbl td.r-td-k{font-weight:500;color:var(--ink);white-space:nowrap}
  156. .r-tbl td.warn{color:var(--warn);font-weight:600}
  157. .r-fit-flag{white-space:nowrap;font-weight:500}
  158. .r-fit-risk{color:var(--risk);font-weight:500;white-space:nowrap}
  159. /* 交叉表里的产品占比:细条 + 百分比 */
  160. .r-td-pick{min-width:200px}
  161. .r-pick{display:grid;grid-template-columns:96px minmax(60px,1fr) 42px;gap:8px;align-items:center;font-size:12.5px}
  162. .r-pick + .r-pick{margin-top:5px}
  163. .r-pick-n{color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  164. .r-mini{height:4px;border-radius:2px;background:rgba(24,34,56,.08);overflow:hidden}
  165. .r-mini i{display:block;height:100%;border-radius:2px;background:linear-gradient(90deg,rgba(29,92,240,.55),rgba(29,92,240,.85))}
  166. .r-pick b{font-family:var(--font-num);font-size:12px;color:var(--ink-2);text-align:right;font-weight:500}
  167. /* ---------- 漏斗 ---------- */
  168. .r-funnel{border-top:1px solid var(--rule-strong)}
  169. .r-funnel li{display:grid;grid-template-columns:56px minmax(0,1fr) 120px;gap:16px;align-items:center;padding:16px 0;border-bottom:1px solid var(--rule)}
  170. .r-f-stage{font-family:var(--font-num);font-size:12px;color:var(--accent-ink);padding:2px 0}
  171. .r-f-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
  172. .r-f-head b{font-size:14.5px;font-weight:600}
  173. .r-f-scope{font-size:12.5px;color:var(--ink-3);line-height:1.5}
  174. .r-f-bar{height:6px;border-radius:3px;background:rgba(24,34,56,.06);margin-top:10px;overflow:hidden}
  175. .r-f-bar i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,rgba(29,92,240,.35),rgba(29,92,240,.7));box-shadow:0 0 18px rgba(29,92,240,.25)}
  176. .r-f-note{font-size:12px;color:var(--ink-3);margin-top:8px;line-height:1.6}
  177. .r-f-v{text-align:right;font-family:var(--font-num)}
  178. .r-f-v b{font-size:26px;font-weight:600;letter-spacing:-.8px;color:var(--ink)}
  179. .r-f-v small{font-size:12px;color:var(--ink-3);margin-left:3px}
  180. /* ---------- 结论块:带态度 ---------- */
  181. .r-findings{display:grid;gap:12px}
  182. .r-finding{
  183. position:relative;padding:18px 20px 16px 24px;border-radius:16px;
  184. background:linear-gradient(155deg,rgba(255,255,255,.7),rgba(255,255,255,.42));
  185. -webkit-backdrop-filter:var(--blur-2);backdrop-filter:var(--blur-2);
  186. border:1px solid rgba(255,255,255,.9);box-shadow:var(--light-top),var(--lift-1);
  187. }
  188. .r-f-mark{position:absolute;left:0;top:16px;bottom:16px;width:3px;border-radius:3px;background:linear-gradient(180deg,var(--accent),rgba(29,92,240,.25))}
  189. .r-finding h4{font-size:16px;font-weight:650;line-height:1.45;color:var(--ink)}
  190. .r-finding p{font-size:14px;line-height:1.85;color:var(--ink-2);margin-top:8px;max-width:70ch}
  191. .r-finding-ev{display:flex;align-items:center;flex-wrap:wrap;gap:6px 18px;margin-top:12px;font-size:12px;color:var(--ink-3)}
  192. .r-finding-ev > span{display:inline-flex;align-items:baseline;gap:4px}
  193. .r-finding-ev b{font-size:16px;color:var(--ink);font-weight:600}
  194. .r-finding-ev .warn b,.r-finding-ev .warn{color:var(--warn)}
  195. /* 证据锚点按钮 */
  196. .r-anchor{
  197. display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 9px;border-radius:8px;
  198. font-size:12px;color:var(--accent-ink);white-space:nowrap;vertical-align:middle;
  199. background:var(--accent-wash);box-shadow:inset 0 0 0 1px rgba(29,92,240,.18);
  200. transition:background .15s,box-shadow .15s;
  201. }
  202. .r-anchor:hover{background:rgba(29,92,240,.15);box-shadow:inset 0 0 0 1px rgba(29,92,240,.3)}
  203. .r-anchor svg{width:12px;height:12px}
  204. .r-anchor b{font-family:var(--font-num);font-weight:600}
  205. /* ---------- 两栏对照 ---------- */
  206. .r-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  207. .r-two-col{padding:16px 18px;border-radius:16px;background:rgba(255,255,255,.5);box-shadow:inset 0 0 0 1px rgba(255,255,255,.85),var(--light-top)}
  208. .r-two-col h5{font-size:12.5px;font-weight:600;margin-bottom:8px;letter-spacing:.2px}
  209. .r-two-col.yes h5{color:var(--ok)}
  210. .r-two-col.no h5{color:var(--risk)}
  211. .r-two-col ul{display:grid;gap:8px}
  212. .r-two-col li{font-size:13.5px;line-height:1.7;color:var(--ink-2);padding-left:14px;position:relative}
  213. .r-two-col li::before{content:"";position:absolute;left:0;top:.65em;width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.4}
  214. .r-two-col.no li::before{background:var(--risk);opacity:.6}
  215. /* ---------- 机会评分 ---------- */
  216. .r-score-bar{position:relative;display:block;min-width:120px;height:22px;border-radius:6px;background:rgba(24,34,56,.06);overflow:hidden}
  217. .r-score-bar i{display:block;height:100%;background:linear-gradient(90deg,rgba(29,92,240,.3),rgba(29,92,240,.65))}
  218. .r-score-bar b{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:12.5px;color:var(--ink)}
  219. /* ---------- 心智阶梯 ---------- */
  220. .r-ladder{border-left:1px solid var(--rule-strong);margin:0 0 18px 6px;display:grid;gap:0}
  221. .r-ladder li{display:grid;grid-template-columns:34px minmax(0,180px) minmax(0,1fr);gap:12px;align-items:baseline;padding:10px 0 10px 16px;position:relative}
  222. .r-ladder li::before{content:"";position:absolute;left:-4px;top:50%;width:7px;height:7px;border-radius:50%;background:rgba(24,34,56,.25);transform:translateY(-50%)}
  223. .r-ladder li.gap::before{background:var(--accent);box-shadow:var(--accent-glow)}
  224. .r-l-no{font-size:12px;color:var(--ink-3)}
  225. .r-l-name{font-size:14.5px;font-weight:600;color:var(--ink)}
  226. .r-ladder li.gap .r-l-name{color:var(--accent-ink)}
  227. .r-l-note{font-size:13px;color:var(--ink-2);line-height:1.6}
  228. /* ---------- 定位陈述:像一句能印在盒子上话 ---------- */
  229. .r-stmt{margin-top:18px;padding:26px 26px 22px;border-radius:18px;text-align:left;
  230. background:linear-gradient(150deg,rgba(29,92,240,.10),rgba(29,92,240,.04) 60%,rgba(255,255,255,.2));
  231. box-shadow:inset 0 0 0 1px rgba(255,255,255,.85),var(--light-top),0 20px 50px -40px rgba(29,92,240,.6);
  232. }
  233. .r-stmt-k{font-size:12px;color:var(--ink-3)}
  234. .r-stmt-v{font-size:clamp(20px,2.4vw,26px);font-weight:650;letter-spacing:-.3px;line-height:1.45;color:var(--ink);margin-top:10px}
  235. .r-stmt-alt{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:14px;font-size:12.5px;color:var(--ink-3)}
  236. .r-stmt-mini{padding:16px 18px;border-radius:14px;background:rgba(255,255,255,.45);box-shadow:inset 0 0 0 1px rgba(255,255,255,.8)}
  237. .r-stmt-mini .r-stmt-v{font-size:20px;margin-top:0}
  238. .r-stmt-mini .r-muted{font-size:12.5px;margin-top:8px}
  239. /* ---------- 验证里程碑 ---------- */
  240. .r-miles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
  241. .r-mile{padding:16px 18px;border-radius:16px;background:rgba(255,255,255,.5);box-shadow:inset 0 0 0 1px rgba(255,255,255,.85),var(--light-top)}
  242. .r-mile-m{font-family:var(--font-num);font-size:12px;color:var(--accent-ink);font-weight:600}
  243. .r-mile h5{font-size:14.5px;margin-top:4px;font-weight:600}
  244. .r-mile-checks{margin-top:10px;display:grid;gap:5px}
  245. .r-mile-checks li{font-size:13px;color:var(--ink-2);line-height:1.65;padding-left:12px;position:relative}
  246. .r-mile-checks li::before{content:"";position:absolute;left:0;top:.7em;width:4px;height:4px;border-radius:50%;background:var(--ink-3)}
  247. .r-mile-rule{margin-top:12px;padding-top:10px;border-top:1px solid var(--rule);font-size:12px;line-height:1.65;color:var(--ink-3)}
  248. .r-mile-rule span{display:block;font-size:11px;color:var(--ink-3);margin-bottom:2px}
  249. /* ---------- 未知结构:不静默 ---------- */
  250. .r-unknown{padding:14px 16px;border-radius:12px;background:var(--warn-wash);box-shadow:inset 0 0 0 1px rgba(138,90,0,.18)}
  251. .r-unknown dl{display:grid;gap:6px;margin-top:8px}
  252. .r-unknown dl > div{display:grid;grid-template-columns:140px minmax(0,1fr);gap:10px;font-size:12.5px}
  253. .r-unknown dt{color:var(--ink-3)}
  254. .r-unknown dd{margin:0;color:var(--ink);word-break:break-word}
  255. /* ---------- 引用 / 附录 ---------- */
  256. .r-cite{display:inline-flex;flex-direction:column;font-size:12.5px;line-height:1.4;color:var(--accent-ink)}
  257. .r-cite .who{font-size:11px;color:var(--ink-3)}
  258. .r-cite-missing{font-size:12px;color:var(--warn);white-space:nowrap}
  259. .r-linkbtn{text-align:left;color:var(--ink);font-weight:500;font-size:13.5px;line-height:1.5}
  260. .r-linkbtn:hover{color:var(--accent-ink);text-decoration:underline;text-underline-offset:3px}
  261. .r-drawer-claim{font-size:15.5px;font-weight:600;line-height:1.6;color:var(--ink)}
  262. .warn-txt{color:var(--warn)}
  263. .r-foot{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:40px;padding-top:18px;border-top:1px solid var(--rule-strong);font-size:12px;color:var(--ink-3)}
  264. /* ---------- 报告目录页 ---------- */
  265. .r-index{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px}
  266. .r-index-card{
  267. display:flex;flex-direction:column;gap:10px;padding:20px 22px 18px;border-radius:20px;color:inherit;text-decoration:none;
  268. background:linear-gradient(155deg,rgba(255,255,255,.62),rgba(255,255,255,.32));
  269. -webkit-backdrop-filter:var(--blur-2);backdrop-filter:var(--blur-2);
  270. border:1px solid rgba(255,255,255,.85);box-shadow:var(--light-top),var(--lift-1);
  271. transition:transform .18s,box-shadow .18s,background .18s;
  272. }
  273. .r-index-card:hover{transform:translateY(-2px);box-shadow:var(--light-top),var(--lift-2);background:linear-gradient(155deg,rgba(255,255,255,.8),rgba(255,255,255,.5));text-decoration:none}
  274. .r-ic-top{display:flex;align-items:center;justify-content:space-between;font-size:11.5px;color:var(--ink-3)}
  275. .r-ic-kicker{font-family:var(--font-num);letter-spacing:.3px}
  276. .r-index-card h3{font-size:17px;font-weight:650;line-height:1.4;letter-spacing:-.1px}
  277. .r-ic-sub{font-size:12.5px;color:var(--ink-3);line-height:1.65;min-height:2.6em}
  278. .r-ic-stats{display:flex;gap:18px;font-size:12px;color:var(--ink-3);padding-top:10px;border-top:1px solid var(--rule)}
  279. .r-ic-stats b{font-family:var(--font-num);font-size:15px;color:var(--ink);margin-right:3px}
  280. .r-ic-foot{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--ink-3)}
  281. .r-ic-proj{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  282. .r-ic-go{margin-left:auto;color:var(--accent-ink)}
  283. .r-ic-go svg{width:14px;height:14px}
  284. .r-count{font-size:12.5px;color:var(--ink-3)}
  285. .r-count b{color:var(--accent-ink);font-family:var(--font-num);font-size:15px}
  286. /* ---------- 台账 ↔ 报告 的交叉标记 ---------- */
  287. .r-inline-link{color:var(--ink);text-decoration:none}
  288. .r-inline-link:hover{color:var(--accent-ink);text-decoration:underline;text-underline-offset:3px}
  289. .r-dot{display:inline-block;margin-right:6px;padding:0 5px;border-radius:5px;font-size:10.5px;line-height:16px;color:var(--accent-ink);background:var(--accent-wash);box-shadow:inset 0 0 0 1px rgba(29,92,240,.18);vertical-align:1px}
  290. .tbl tbody tr.has-report .ttl{font-weight:600}
  291. .tbl tbody tr.focus-on td{animation:focusRow 2.2s ease-out}
  292. @keyframes focusRow{0%,35%{background:rgba(29,92,240,.14)}100%{background:transparent}}
  293. /* 归纳页:展开"归纳自哪几份报告" */
  294. /* [hidden] 必须压过 .insight-sources 的 display,否则"收起"状态仍会显示 */
  295. .insight-sources[hidden]{display:none !important}
  296. .insight-sources{grid-column:1/-1;margin-top:10px;padding:12px 14px;border-radius:14px;background:rgba(255,255,255,.42);box-shadow:inset 0 0 0 1px rgba(255,255,255,.85),var(--light-top)}
  297. .isrc + .isrc{margin-top:12px;padding-top:12px;border-top:1px solid var(--rule)}
  298. .isrc-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
  299. .isrc-h a{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:500}
  300. .isrc-h svg{width:14px;height:14px}
  301. .isrc-q{margin-top:8px;padding-left:12px;font-size:13px;line-height:1.6;color:var(--ink);box-shadow:inset 2px 0 0 var(--accent-line)}
  302. .isrc-q .tiny{margin-top:3px}
  303. .src-toggle{font-size:12.5px;color:var(--ink-2);display:inline-flex;align-items:center;gap:4px}
  304. .src-toggle:hover{color:var(--accent-ink);text-decoration:underline;text-underline-offset:3px}
  305. .src-toggle svg{width:12px;height:12px;transition:transform .18s}
  306. .src-toggle[aria-expanded="true"] svg{transform:rotate(90deg)}
  307. .detail-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
  308. /* 交叉表:多行文字单元格 */
  309. .r-cell-line{line-height:1.6}
  310. .r-cell-line + .r-cell-line{margin-top:3px;color:var(--ink-2)}
  311. .r-matrix td{min-width:120px}
  312. /* 备选定位方案:淡,不抢主定位 */
  313. .r-alt{margin-top:12px;padding:14px 16px;border-radius:14px;background:rgba(255,255,255,.4);box-shadow:inset 0 0 0 1px rgba(255,255,255,.75)}
  314. .r-alt-t{font-size:11.5px;color:var(--ink-3);letter-spacing:.3px;margin-bottom:6px}
  315. .r-alt-i{font-size:13.5px;color:var(--ink-2);line-height:1.8}
  316. /* 报告结构卡片:由上到下的层级感(更透 → 稍微更实) */
  317. .r-ch-card{position:relative;transition:background .18s,transform .18s,box-shadow .18s,opacity .18s}