eduevidence 5.2.0 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. package/CONTRIBUTING.md +105 -0
  2. package/README.md +142 -75
  3. package/README.zh-CN.md +73 -30
  4. package/SKILL.md +397 -131
  5. package/agents/openai.yaml +4 -0
  6. package/assets/readme/controlled-execution.svg +34 -0
  7. package/assets/readme/landing-tour.gif +0 -0
  8. package/assets/readme/logo.png +0 -0
  9. package/assets/readme/research-workflow.svg +56 -0
  10. package/assets/readme/studio-graph.png +0 -0
  11. package/assets/readme/studio-overview.png +0 -0
  12. package/assets/readme/studio-reports.png +0 -0
  13. package/assets/readme/studio-tour.gif +0 -0
  14. package/autoevolve/config.yaml +17 -0
  15. package/autoevolve/program.md +25 -0
  16. package/autoevolve/protected.manifest.yaml +34 -0
  17. package/benchmarks/adversarial/cases.jsonl +7 -0
  18. package/benchmarks/evidence-library.json +5268 -0
  19. package/benchmarks/partitions.json +8 -0
  20. package/bin/eduevidence.js +2 -1
  21. package/docs/architecture.md +496 -0
  22. package/docs/autoresearch-evolution-plan.md +2903 -0
  23. package/docs/autoresearch-implementation-status.md +101 -0
  24. package/docs/demo-storyboard.md +20 -0
  25. package/docs/demo-workplace-ai.md +92 -0
  26. package/docs/demo.md +32 -0
  27. package/docs/install-guide.md +150 -0
  28. package/docs/orchestration-role-model.md +1254 -0
  29. package/docs/release-closeout/README.md +17 -0
  30. package/docs/release-closeout/frontend-acceptance.md +23 -0
  31. package/docs/release-closeout/issues.md +19 -0
  32. package/docs/release-closeout/verification.md +28 -0
  33. package/docs/release-contract.md +108 -0
  34. package/docs/research-studio-guide.zh-CN.md +166 -0
  35. package/docs/sciverse-api.md +125 -0
  36. package/eduevidence_cli.py +29 -13
  37. package/engine/_resources.py +13 -0
  38. package/engine/autoevolve/__init__.py +3 -0
  39. package/engine/autoevolve/agent_view.py +167 -0
  40. package/engine/autoevolve/core.py +357 -0
  41. package/engine/autoevolve/events.py +11 -0
  42. package/engine/autoevolve/git_workspace.py +77 -0
  43. package/engine/autoevolve/projection.py +23 -0
  44. package/engine/autoevolve/runner.py +413 -0
  45. package/engine/autoevolve/trust.py +146 -0
  46. package/engine/autoresearch/__init__.py +6 -0
  47. package/engine/autoresearch/commit.py +132 -0
  48. package/engine/autoresearch/contracts.py +126 -0
  49. package/engine/autoresearch/controller.py +207 -0
  50. package/engine/autoresearch/events.py +12 -0
  51. package/engine/autoresearch/gap_priority.py +168 -0
  52. package/engine/autoresearch/projection.py +30 -0
  53. package/engine/autoresearch/research_memory.py +59 -0
  54. package/engine/autoresearch/saturation.py +91 -0
  55. package/engine/briefs.py +2 -1
  56. package/engine/capabilities.py +1 -0
  57. package/engine/contracts.py +3 -1
  58. package/engine/decision_policy.py +96 -0
  59. package/engine/evidence_graph.py +14 -10
  60. package/engine/evidencecore.py +7 -5
  61. package/engine/gaps.py +132 -73
  62. package/engine/ids.py +2 -0
  63. package/engine/judge_pack.py +65 -0
  64. package/engine/library.py +6 -2
  65. package/engine/library_builtin.py +3 -1
  66. package/engine/living.py +36 -5
  67. package/engine/meta_synthesis.py +3 -1
  68. package/engine/migration.py +88 -3
  69. package/engine/orchestration.py +460 -0
  70. package/engine/paths.py +2 -0
  71. package/engine/pilot.py +36 -33
  72. package/engine/project.py +2 -2
  73. package/engine/research_service.py +113 -0
  74. package/engine/studio_read_model.py +400 -0
  75. package/engine/taxonomy.py +211 -0
  76. package/engine/tribunal.py +44 -33
  77. package/engine/update.py +1 -0
  78. package/engine/versions.py +1 -1
  79. package/engine/worker_result.py +109 -0
  80. package/engine/workflows.py +70 -0
  81. package/examples/ai-coding-assistant-evidence/EduEvidence_Report.html +2934 -0
  82. package/examples/ai-coding-assistant-evidence/artifact_manifest.json +15 -0
  83. package/examples/ai-coding-assistant-evidence/citation_check.json +79 -0
  84. package/examples/ai-coding-assistant-evidence/claims.jsonl +12 -0
  85. package/examples/ai-coding-assistant-evidence/evaluation.json +35 -0
  86. package/examples/ai-coding-assistant-evidence/evidence.jsonl +12 -0
  87. package/examples/ai-coding-assistant-evidence/final_verdict.json +107 -0
  88. package/examples/ai-coding-assistant-evidence/frame.json +48 -0
  89. package/examples/ai-coding-assistant-evidence/gate_report.json +101 -0
  90. package/examples/ai-coding-assistant-evidence/intervention.json +51 -0
  91. package/examples/ai-coding-assistant-evidence/methodology.json +36 -0
  92. package/examples/ai-coding-assistant-evidence/raw_verdict.json +86 -0
  93. package/examples/ai-coding-assistant-evidence/report_spec.json +230 -0
  94. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_academic.html +2934 -0
  95. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_claude.html +2934 -0
  96. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_datalab-dark.html +2934 -0
  97. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_datalab.html +2934 -0
  98. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_presentation.html +2934 -0
  99. package/examples/ai-coding-assistant-evidence/reports-5themes/report_academic.html +2934 -0
  100. package/examples/ai-coding-assistant-evidence/reports-5themes/report_claude.html +2934 -0
  101. package/examples/ai-coding-assistant-evidence/reports-5themes/report_datalab-dark.html +2934 -0
  102. package/examples/ai-coding-assistant-evidence/reports-5themes/report_datalab.html +2934 -0
  103. package/examples/ai-coding-assistant-evidence/reports-5themes/report_presentation.html +2934 -0
  104. package/examples/ai-coding-assistant-evidence/result.json +1457 -0
  105. package/examples/ai-coding-assistant-evidence/result.zh.json +1457 -0
  106. package/examples/ai-coding-assistant-evidence/skeptic.json +72 -0
  107. package/examples/ai-coding-assistant-evidence/sources.jsonl +8 -0
  108. package/examples/ai-coding-assistant-evidence/verdict.json +107 -0
  109. package/examples/spaced-retrieval-practice/applicability.json +14 -0
  110. package/examples/spaced-retrieval-practice/artifact_manifest.json +15 -0
  111. package/examples/spaced-retrieval-practice/claims.jsonl +3 -0
  112. package/examples/spaced-retrieval-practice/evidence.jsonl +6 -0
  113. package/examples/spaced-retrieval-practice/final_verdict.json +93 -0
  114. package/examples/spaced-retrieval-practice/frame.json +58 -0
  115. package/examples/spaced-retrieval-practice/gate_report.json +101 -0
  116. package/examples/spaced-retrieval-practice/methodology.json +78 -0
  117. package/examples/spaced-retrieval-practice/report_spec.json +212 -0
  118. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_academic.html +2728 -0
  119. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_claude.html +2728 -0
  120. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_datalab-dark.html +2728 -0
  121. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_datalab.html +2728 -0
  122. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_presentation.html +2728 -0
  123. package/examples/spaced-retrieval-practice/reports-5themes/report_academic.html +2728 -0
  124. package/examples/spaced-retrieval-practice/reports-5themes/report_claude.html +2728 -0
  125. package/examples/spaced-retrieval-practice/reports-5themes/report_datalab-dark.html +2728 -0
  126. package/examples/spaced-retrieval-practice/reports-5themes/report_datalab.html +2728 -0
  127. package/examples/spaced-retrieval-practice/reports-5themes/report_presentation.html +2728 -0
  128. package/examples/spaced-retrieval-practice/result.json +942 -0
  129. package/examples/spaced-retrieval-practice/result.zh.json +942 -0
  130. package/examples/spaced-retrieval-practice/skeptic.json +70 -0
  131. package/examples/spaced-retrieval-practice/sources.jsonl +7 -0
  132. package/examples/spaced-retrieval-practice/verdict.json +93 -0
  133. package/examples/workplace-ai-assistant/artifact_manifest.json +15 -0
  134. package/examples/workplace-ai-assistant/claims.jsonl +4 -0
  135. package/examples/workplace-ai-assistant/evaluation.json +19 -0
  136. package/examples/workplace-ai-assistant/evidence.jsonl +4 -0
  137. package/examples/workplace-ai-assistant/evidence_graph.json +444 -0
  138. package/examples/workplace-ai-assistant/final_verdict.json +78 -0
  139. package/examples/workplace-ai-assistant/frame.json +41 -0
  140. package/examples/workplace-ai-assistant/gate_report.json +101 -0
  141. package/examples/workplace-ai-assistant/intervention.json +27 -0
  142. package/examples/workplace-ai-assistant/legacy-link-check.json +16 -0
  143. package/examples/workplace-ai-assistant/methodology.json +60 -0
  144. package/examples/workplace-ai-assistant/report_spec.json +224 -0
  145. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_academic.html +2814 -0
  146. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_claude.html +2814 -0
  147. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_datalab-dark.html +2814 -0
  148. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_datalab.html +2814 -0
  149. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_presentation.html +2814 -0
  150. package/examples/workplace-ai-assistant/reports-5themes/report_academic.html +2814 -0
  151. package/examples/workplace-ai-assistant/reports-5themes/report_claude.html +2814 -0
  152. package/examples/workplace-ai-assistant/reports-5themes/report_datalab-dark.html +2814 -0
  153. package/examples/workplace-ai-assistant/reports-5themes/report_datalab.html +2814 -0
  154. package/examples/workplace-ai-assistant/reports-5themes/report_presentation.html +2814 -0
  155. package/examples/workplace-ai-assistant/result.json +615 -0
  156. package/examples/workplace-ai-assistant/result.zh.json +615 -0
  157. package/examples/workplace-ai-assistant/search_log.json +19 -0
  158. package/examples/workplace-ai-assistant/skeptic.json +72 -0
  159. package/examples/workplace-ai-assistant/sources.jsonl +3 -0
  160. package/examples/workplace-ai-assistant/validation_result.json +9 -0
  161. package/examples/workplace-ai-assistant/verdict.json +78 -0
  162. package/install.sh +7 -7
  163. package/integrations/agent_mcp.py +2 -2
  164. package/integrations/orchestration_dispatch.py +146 -0
  165. package/package.json +46 -3
  166. package/pyproject.toml +14 -22
  167. package/references/autoresearch.md +30 -0
  168. package/references/evaluation-policy.md +24 -0
  169. package/references/orchestration.md +22 -0
  170. package/references/report-copy-style.md +67 -0
  171. package/references/retrieval-compliance.md +75 -0
  172. package/references/retrieval-protocol.md +20 -0
  173. package/references/scientific-invariants.md +19 -0
  174. package/retrieval/audit.py +178 -0
  175. package/retrieval/fetch.py +96 -0
  176. package/retrieval/sciverse.py +398 -0
  177. package/retrieval/search.py +47 -7
  178. package/schemas/applicability.schema.json +94 -0
  179. package/schemas/chart-spec.schema.json +10 -3
  180. package/schemas/evidence.schema.json +316 -43
  181. package/schemas/fetch-result.schema.json +2 -1
  182. package/schemas/intervention.schema.json +106 -21
  183. package/schemas/report-result.schema.json +12 -4
  184. package/schemas/report-spec.schema.json +98 -100
  185. package/schemas/skeptic.schema.json +86 -0
  186. package/schemas/source.schema.json +21 -2
  187. package/schemas/v2/finding.schema.json +5 -1
  188. package/schemas/v2/methodology-audit.schema.json +5 -1
  189. package/schemas/v2/outcome.schema.json +28 -5
  190. package/schemas/v2/project.schema.json +2 -2
  191. package/schemas/v2/run.schema.json +1 -1
  192. package/schemas/v2/study.schema.json +5 -1
  193. package/schemas/vNext/autoevolve-session.schema.json +34 -0
  194. package/schemas/vNext/eval-snapshot.schema.json +77 -0
  195. package/schemas/vNext/execution-plan.schema.json +50 -0
  196. package/schemas/vNext/gap-priority.schema.json +54 -0
  197. package/schemas/vNext/negative-search-record.schema.json +68 -0
  198. package/schemas/vNext/research-iteration.schema.json +87 -0
  199. package/schemas/vNext/research-strategy.schema.json +62 -0
  200. package/schemas/vNext/skill-experiment.schema.json +90 -0
  201. package/schemas/vNext/task-spec.schema.json +156 -0
  202. package/schemas/vNext/worker-result.schema.json +60 -0
  203. package/schemas/verdict.schema.json +164 -28
  204. package/scripts/benchmark_judge.py +2 -2
  205. package/scripts/benchmark_v3.py +26 -43
  206. package/scripts/build_esl_artifacts.py +4 -4
  207. package/scripts/build_evidence_library.py +2 -2
  208. package/scripts/build_gh_pages.py +98 -0
  209. package/scripts/build_readme_diagrams.py +72 -0
  210. package/scripts/build_report_variants.py +101 -0
  211. package/scripts/build_result.py +74 -9
  212. package/scripts/check_autoresearch_invariants.py +95 -0
  213. package/scripts/check_package_parity.py +85 -0
  214. package/scripts/check_protocol_alignment.py +375 -0
  215. package/scripts/check_versioned_schemas.py +254 -0
  216. package/scripts/claim_audit.py +13 -8
  217. package/scripts/compute_confidence.py +10 -0
  218. package/scripts/daily_evolve.py +30 -0
  219. package/scripts/dashboard_server.py +130 -101
  220. package/scripts/did_regression.py +17 -32
  221. package/scripts/enrich_projects_human_and_lieflat.py +1 -1
  222. package/scripts/evidence_score.py +5 -2
  223. package/scripts/generate_metrics.py +4 -3
  224. package/scripts/generate_new_projects.py +5 -5
  225. package/scripts/orchestrator.py +286 -36
  226. package/scripts/pre_verdict_gate.py +224 -26
  227. package/scripts/quickstart.py +18 -2
  228. package/scripts/rebake_all_5themes.py +1 -2
  229. package/scripts/research_auto_cli.py +475 -0
  230. package/scripts/run_workspace.py +24 -8
  231. package/scripts/search_provenance.py +64 -0
  232. package/scripts/serve_web.py +9 -10
  233. package/scripts/skill_lint.py +1 -1
  234. package/scripts/skill_payload.py +81 -0
  235. package/scripts/test_adversarial_empirical.py +26 -19
  236. package/scripts/validate_schema.py +46 -2
  237. package/scripts/vnext_cli.py +133 -0
  238. package/setup.py +12 -0
  239. package/skill/agents/evaluation-designer.md +20 -4
  240. package/skill/agents/evidence-analyst.md +19 -3
  241. package/skill/agents/evidence-judge.md +50 -2
  242. package/skill/agents/evidence-retriever.md +20 -3
  243. package/skill/agents/intervention-designer.md +20 -4
  244. package/skill/agents/method-reviewer.md +18 -2
  245. package/skill/agents/{education-planner.md → research-planner.md} +19 -3
  246. package/skill/agents/skeptic.md +18 -2
  247. package/skill/roles/registry.yaml +45 -0
  248. package/skill/sub-skills/aihot-trend-analysis/SKILL.md +28 -9
  249. package/skill/sub-skills/contradiction-analysis/SKILL.md +31 -11
  250. package/skill/sub-skills/data-analysis/SKILL.md +34 -15
  251. package/skill/sub-skills/ethics-review/SKILL.md +33 -10
  252. package/skill/sub-skills/evidence-extraction/SKILL.md +29 -11
  253. package/skill/sub-skills/evidence-review/SKILL.md +31 -12
  254. package/skill/sub-skills/gap-analysis/SKILL.md +31 -9
  255. package/skill/sub-skills/literature-review/SKILL.md +35 -14
  256. package/skill/sub-skills/methodology-audit/SKILL.md +29 -12
  257. package/skill/sub-skills/report-generation/SKILL.md +40 -6
  258. package/skill/sub-skills/research-planning/SKILL.md +41 -14
  259. package/skill/sub-skills/study-design/SKILL.md +30 -9
  260. package/skill/task-briefs/adjudicate.md +32 -7
  261. package/skill/task-briefs/applicability.md +38 -0
  262. package/skill/task-briefs/audit.md +32 -7
  263. package/skill/task-briefs/challenge.md +34 -5
  264. package/skill/task-briefs/evaluate.md +30 -5
  265. package/skill/task-briefs/extract.md +31 -8
  266. package/skill/task-briefs/frame.md +39 -10
  267. package/skill/task-briefs/intervene.md +32 -6
  268. package/skill/task-briefs/present.md +32 -8
  269. package/skill/task-briefs/projection.md +37 -0
  270. package/skill/task-briefs/retrieve.md +36 -6
  271. package/skill/workflows/decision-and-pilot.md +85 -0
  272. package/skill/workflows/evaluate-and-update.md +93 -0
  273. package/skill/workflows/evidence-review.md +117 -0
  274. package/visualization/eduevidence-report/assets/base.css +2 -2
  275. package/visualization/eduevidence-report/assets/reader.css +752 -0
  276. package/visualization/eduevidence-report/assets/reader.js +132 -0
  277. package/visualization/eduevidence-report/references/chart-selection-catalog.md +109 -0
  278. package/visualization/eduevidence-report/references/lieflat-composition.md +3 -1
  279. package/visualization/eduevidence-report/scripts/build_figures.py +25 -3
  280. package/visualization/eduevidence-report/scripts/build_infographics.py +5 -1
  281. package/visualization/eduevidence-report/scripts/build_report.py +561 -121
  282. package/visualization/eduevidence-report/scripts/charts_data.py +2 -0
  283. package/visualization/eduevidence-report/scripts/lieflat_engine.py +371 -136
  284. package/visualization/eduevidence-report/scripts/zh_labels.py +80 -1
  285. package/visualization/eduevidence-report/themes/academic.css +1 -1
  286. package/visualization/eduevidence-report/themes/claude.css +1 -1
  287. package/visualization/eduevidence-report/themes/datalab-dark.css +2 -2
  288. package/visualization/eduevidence-report/themes/datalab.css +2 -2
  289. package/visualization/eduevidence-report/themes/presentation.css +2 -2
  290. package/web/README.md +18 -0
  291. package/web/architecture.html +14885 -0
  292. package/web/index.html +53 -0
  293. package/web/studio/THIRD_PARTY_LICENSES.txt +146 -0
  294. package/web/studio/assets/index-B8tkF44Q.css +1 -0
  295. package/web/studio/assets/index-CQ6Keoyc.js +230 -0
  296. package/web/studio/config.json +1 -0
  297. package/web/studio/index.html +14 -0
  298. package/engine/__pycache__/__init__.cpython-312.pyc +0 -0
  299. package/engine/__pycache__/analysis.cpython-312.pyc +0 -0
  300. package/engine/__pycache__/bias.cpython-312.pyc +0 -0
  301. package/engine/__pycache__/briefs.cpython-312.pyc +0 -0
  302. package/engine/__pycache__/capabilities.cpython-312.pyc +0 -0
  303. package/engine/__pycache__/citation_check.cpython-312.pyc +0 -0
  304. package/engine/__pycache__/contracts.cpython-312.pyc +0 -0
  305. package/engine/__pycache__/datasets.cpython-312.pyc +0 -0
  306. package/engine/__pycache__/events.cpython-312.pyc +0 -0
  307. package/engine/__pycache__/evidence_graph.cpython-312.pyc +0 -0
  308. package/engine/__pycache__/evidence_review.cpython-312.pyc +0 -0
  309. package/engine/__pycache__/evidencecore.cpython-312.pyc +0 -0
  310. package/engine/__pycache__/gap_lens.cpython-312.pyc +0 -0
  311. package/engine/__pycache__/gaps.cpython-312.pyc +0 -0
  312. package/engine/__pycache__/graph_store.cpython-312.pyc +0 -0
  313. package/engine/__pycache__/graph_validate.cpython-312.pyc +0 -0
  314. package/engine/__pycache__/ids.cpython-312.pyc +0 -0
  315. package/engine/__pycache__/library.cpython-312.pyc +0 -0
  316. package/engine/__pycache__/library_builtin.cpython-312.pyc +0 -0
  317. package/engine/__pycache__/living.cpython-312.pyc +0 -0
  318. package/engine/__pycache__/log.cpython-312.pyc +0 -0
  319. package/engine/__pycache__/meta_analysis.cpython-312.pyc +0 -0
  320. package/engine/__pycache__/meta_synthesis.cpython-312.pyc +0 -0
  321. package/engine/__pycache__/migration.cpython-312.pyc +0 -0
  322. package/engine/__pycache__/mode_router.cpython-312.pyc +0 -0
  323. package/engine/__pycache__/paths.cpython-312.pyc +0 -0
  324. package/engine/__pycache__/pilot.cpython-312.pyc +0 -0
  325. package/engine/__pycache__/planner.cpython-312.pyc +0 -0
  326. package/engine/__pycache__/project.cpython-312.pyc +0 -0
  327. package/engine/__pycache__/projections.cpython-312.pyc +0 -0
  328. package/engine/__pycache__/robustness.cpython-312.pyc +0 -0
  329. package/engine/__pycache__/run.cpython-312.pyc +0 -0
  330. package/engine/__pycache__/semantics.cpython-312.pyc +0 -0
  331. package/engine/__pycache__/study_design.cpython-312.pyc +0 -0
  332. package/engine/__pycache__/synthesis.cpython-312.pyc +0 -0
  333. package/engine/__pycache__/tribunal.cpython-312.pyc +0 -0
  334. package/engine/__pycache__/update.cpython-312.pyc +0 -0
  335. package/engine/__pycache__/versions.cpython-312.pyc +0 -0
  336. package/integrations/__pycache__/__init__.cpython-312.pyc +0 -0
  337. package/integrations/__pycache__/agent_mcp.cpython-312.pyc +0 -0
  338. package/integrations/__pycache__/smart_web_fetch.cpython-312.pyc +0 -0
  339. package/retrieval/__pycache__/__init__.cpython-312.pyc +0 -0
  340. package/retrieval/__pycache__/corpus_store.cpython-312.pyc +0 -0
  341. package/retrieval/__pycache__/dedupe.cpython-312.pyc +0 -0
  342. package/retrieval/__pycache__/failures.cpython-312.pyc +0 -0
  343. package/retrieval/__pycache__/fetch.cpython-312.pyc +0 -0
  344. package/retrieval/__pycache__/search.cpython-312.pyc +0 -0
  345. package/retrieval/__pycache__/source.cpython-312.pyc +0 -0
  346. package/retrieval/__pycache__/validate.cpython-312.pyc +0 -0
  347. package/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
  348. package/scripts/__pycache__/benchmark.cpython-312.pyc +0 -0
  349. package/scripts/__pycache__/benchmark_evaluator.cpython-312.pyc +0 -0
  350. package/scripts/__pycache__/benchmark_judge.cpython-312.pyc +0 -0
  351. package/scripts/__pycache__/benchmark_routing.cpython-312.pyc +0 -0
  352. package/scripts/__pycache__/benchmark_v2.cpython-312.pyc +0 -0
  353. package/scripts/__pycache__/benchmark_v3.cpython-312.pyc +0 -0
  354. package/scripts/__pycache__/build_result.cpython-312.pyc +0 -0
  355. package/scripts/__pycache__/claim_audit.cpython-312.pyc +0 -0
  356. package/scripts/__pycache__/complexity_gate.cpython-312.pyc +0 -0
  357. package/scripts/__pycache__/compute_confidence.cpython-312.pyc +0 -0
  358. package/scripts/__pycache__/dashboard_server.cpython-312.pyc +0 -0
  359. package/scripts/__pycache__/did_regression.cpython-312.pyc +0 -0
  360. package/scripts/__pycache__/effect_calculator.cpython-312.pyc +0 -0
  361. package/scripts/__pycache__/evidence_matrix.cpython-312.pyc +0 -0
  362. package/scripts/__pycache__/evidence_score.cpython-312.pyc +0 -0
  363. package/scripts/__pycache__/evidence_semantics.cpython-312.pyc +0 -0
  364. package/scripts/__pycache__/fetch_benchmark.cpython-312.pyc +0 -0
  365. package/scripts/__pycache__/lint_report_layout.cpython-312.pyc +0 -0
  366. package/scripts/__pycache__/orchestrator.cpython-312.pyc +0 -0
  367. package/scripts/__pycache__/pre_verdict_gate.cpython-312.pyc +0 -0
  368. package/scripts/__pycache__/recompute_demo_quality.cpython-312.pyc +0 -0
  369. package/scripts/__pycache__/render_report.cpython-312.pyc +0 -0
  370. package/scripts/__pycache__/render_report_html.cpython-312.pyc +0 -0
  371. package/scripts/__pycache__/run_workspace.cpython-312.pyc +0 -0
  372. package/scripts/__pycache__/skill_lint.cpython-312.pyc +0 -0
  373. package/scripts/__pycache__/startup_probe.cpython-312.pyc +0 -0
  374. package/scripts/__pycache__/sync_killer_demo_report.cpython-312.pyc +0 -0
  375. package/scripts/__pycache__/test_adversarial_empirical.cpython-312-pytest-9.0.2.pyc +0 -0
  376. package/scripts/__pycache__/test_adversarial_empirical.cpython-312-pytest-9.1.1.pyc +0 -0
  377. package/scripts/__pycache__/validate_schema.cpython-312.pyc +0 -0
  378. package/visualization/eduevidence-report/scripts/__pycache__/adapter_contract.cpython-312.pyc +0 -0
  379. package/visualization/eduevidence-report/scripts/__pycache__/build_artifact_manifest.cpython-312.pyc +0 -0
  380. package/visualization/eduevidence-report/scripts/__pycache__/build_charts.cpython-312.pyc +0 -0
  381. package/visualization/eduevidence-report/scripts/__pycache__/build_figures.cpython-312.pyc +0 -0
  382. package/visualization/eduevidence-report/scripts/__pycache__/build_infographics.cpython-312.pyc +0 -0
  383. package/visualization/eduevidence-report/scripts/__pycache__/build_report.cpython-312.pyc +0 -0
  384. package/visualization/eduevidence-report/scripts/__pycache__/charts_data.cpython-312.pyc +0 -0
  385. package/visualization/eduevidence-report/scripts/__pycache__/lieflat_engine.cpython-312.pyc +0 -0
  386. package/visualization/eduevidence-report/scripts/__pycache__/zh_labels.cpython-312.pyc +0 -0
@@ -0,0 +1,2814 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN" data-theme="claude">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data:; font-src data:; connect-src 'none'; base-uri 'none'; object-src 'none'; form-action 'none'">
6
+ <meta name="eduevidence-result-sha256" content="c26e7e1d60d3cf94bcba29233fbda453626aed47f77ea35b425c2535185316e7">
7
+ <meta name="viewport" content="width=device-width, initial-scale=1">
8
+ <title>企业客服团队是否应引入生成式 AI 助手?</title>
9
+ <style>
10
+ /* Theme 01 — Claude Research.
11
+ Calm long-form research reading: warm paper, restrained accents, sparse cards,
12
+ wide data breakouts and generous section rhythm. */
13
+ :root[data-theme="claude"] {
14
+ --bg:#F7F4ED; --surface:#FFFFFF; --surface2:#FCFAF6; --text:#3A3833;
15
+ --text-muted:#8A867E; --primary:#B8694A; --primary-soft:#F3E4DC;
16
+ --support:#5E8A6A; --support-soft:#E4EDE5; --contradict:#A85B53;
17
+ --contradict-soft:#F0E0DE; --uncertain:#C99A4A; --uncertain-soft:#F4EADA;
18
+ --insufficient:#8A867E; --border:#E5DFD3; --radius:12px; --radius-sm:8px;
19
+ --shadow:0 1px 3px rgba(60,56,48,.07); --font-head:'Georgia','Songti SC','STSong',serif;
20
+ --font-ui:'Helvetica Neue','PingFang SC','Noto Sans CJK SC',Arial,sans-serif; --font-mono:'SF Mono',Menlo,Consolas,monospace;
21
+ }
22
+ :root[data-theme="claude"] .report-shell { max-width:1240px; padding-top:34px; }
23
+ :root[data-theme="claude"] .report-header { max-width:900px; margin:0 auto 42px; padding-bottom:22px; }
24
+ :root[data-theme="claude"] .report-header h1 { font-size:clamp(1.55rem,2.8vw,2.25rem); line-height:1.18; font-weight:500; }
25
+ :root[data-theme="claude"] .report-section { background:transparent; border:0; box-shadow:none; padding:0; }
26
+ :root[data-theme="claude"] .report-section>h2 { border:0; font-size:1.4rem; padding:0; margin-bottom:7px; }
27
+ :root[data-theme="claude"] .section-lead { background:transparent; border:0; padding:0; max-width:760px; margin-bottom:24px; }
28
+ :root[data-theme="claude"] .decision-hero { background:var(--surface); box-shadow:0 10px 30px rgba(60,56,48,.06); }
29
+ :root[data-theme="claude"] .hero-insight { border-radius:8px; box-shadow:0 1px 0 rgba(60,56,48,.03); }
30
+ :root[data-theme="claude"] .section-data>.table-wrap,
31
+ :root[data-theme="claude"] .section-data>.matrix-controls,
32
+ :root[data-theme="claude"] .section-data>.outcome-separation,
33
+ :root[data-theme="claude"] .section-data>.trace-chain { width:min(1180px,calc(100vw - 48px)); margin-left:50%; transform:translateX(-50%); }
34
+ :root[data-theme="claude"] .data-table th { font-weight:600; }
35
+ :root[data-theme="claude"] .tribunal-card,
36
+ :root[data-theme="claude"] .trace-chain-card,
37
+ :root[data-theme="claude"] .action-node { background:var(--surface); }
38
+
39
+ /* Dual-layer reader — calm research workspace. */
40
+ :root[data-theme="claude"] .report-header { max-width:940px; }
41
+ :root[data-theme="claude"] .report-brand { color:var(--primary); }
42
+ :root[data-theme="claude"] .report-view-switcher { display:inline-flex; padding:4px; background:#EFEAE0; border-radius:999px; }
43
+ :root[data-theme="claude"] .report-view-btn { border:0; background:transparent; padding:7px 15px; }
44
+ :root[data-theme="claude"] .report-view-btn.active { background:var(--surface); color:var(--text); box-shadow:0 1px 4px rgba(60,56,48,.09); }
45
+ :root[data-theme="claude"] .brief-block { max-width:980px; }
46
+ :root[data-theme="claude"] .brief-block-header { margin-bottom:26px; }
47
+ :root[data-theme="claude"] .brief-block-header h2 { font-size:1.55rem; font-weight:500; }
48
+ :root[data-theme="claude"] .brief-decision { max-width:1040px; }
49
+ :root[data-theme="claude"] .brief-outcomes .brief-block-body,
50
+ :root[data-theme="claude"] .brief-tribunal .brief-block-body { width:min(1120px,calc(100vw - 48px)); margin-left:50%; transform:translateX(-50%); }
51
+ :root[data-theme="claude"] .brief-source { background:var(--surface); box-shadow:0 1px 3px rgba(60,56,48,.04); }
52
+ :root[data-theme="claude"] .full-report-intro { max-width:880px; margin-left:250px; }
53
+ :root[data-theme="claude"] .full-report-layout { grid-template-columns:210px minmax(0,1fr); gap:56px; }
54
+ :root[data-theme="claude"] .full-report-toc { border-right:0; padding-right:0; }
55
+ :root[data-theme="claude"] .full-report-toc a { border-left:1px solid var(--border); padding:8px 0 8px 13px; background:transparent; }
56
+ :root[data-theme="claude"] .full-report-toc a.active { border-left:2px solid var(--primary); background:transparent; color:var(--text); }
57
+ :root[data-theme="claude"] .full-report-content { max-width:900px; }
58
+ @media (max-width:980px) {
59
+ :root[data-theme="claude"] .full-report-layout { grid-template-columns:minmax(0,1fr); gap:28px; }
60
+ }
61
+ :root[data-theme="claude"] .full-chapter { border-bottom:0; margin-bottom:72px; padding-bottom:0; }
62
+ :root[data-theme="claude"] .full-chapter-header { max-width:760px; margin-bottom:30px; }
63
+ :root[data-theme="claude"] .full-chapter-header h2 { font-size:1.8rem; font-weight:500; }
64
+ :root[data-theme="claude"] .scope-card,
65
+ :root[data-theme="claude"] .retrieval-grid>article,
66
+ :root[data-theme="claude"] .retrieval-coverage,
67
+ :root[data-theme="claude"] .method-audit-item { background:var(--surface); }
68
+ :root[data-theme="claude"] .detail-body { background:#FBF8F2; }
69
+
70
+ /* Header chrome: keep language controls inside the reading measure instead of a full-width strip. */
71
+ :root[data-theme="claude"] .controls {
72
+ max-width:940px; margin:16px auto 0; padding:8px 2px 12px;
73
+ border-bottom:1px solid var(--border); background:transparent;
74
+ }
75
+ :root[data-theme="claude"] .generated-theme {
76
+ margin-right:auto; color:var(--text-muted); font-family:var(--font-ui);
77
+ font-size:.76rem; font-weight:700; letter-spacing:.075em; text-transform:uppercase;
78
+ }
79
+ :root[data-theme="claude"] .lang-switcher {
80
+ gap:6px; padding:3px; border:1px solid var(--border); border-radius:999px;
81
+ background:rgba(255,255,255,.62);
82
+ }
83
+ :root[data-theme="claude"] .lang-switcher>span { margin-left:6px; font-size:.72rem; }
84
+ :root[data-theme="claude"] .lang-btn { border:0; background:transparent; padding:4px 11px; }
85
+ :root[data-theme="claude"] .lang-btn.active { background:var(--primary); color:#fff; }
86
+ :root[data-theme="claude"] .report-brand-row { margin-bottom:12px; }
87
+ :root[data-theme="claude"] .generated-theme-chip {
88
+ background:#F1ECE3; border-color:#E2D8C9; color:#736D64; text-transform:none;
89
+ }
90
+ @media (max-width:980px) {
91
+ :root[data-theme="claude"] .full-report-intro { margin-left:0; }
92
+ }
93
+
94
+ /* Typography pass: reading measure stays inside the serif breathing room;
95
+ Lieflat cards inherit the warm-paper identity (no letter-spacing on CJK). */
96
+ :root[data-theme="claude"] .full-chapter-body p,
97
+ :root[data-theme="claude"] .section-narrative p { max-width:68ch; }
98
+ :root[data-theme="claude"] .brief-block-header p,
99
+ :root[data-theme="claude"] .full-chapter-lead,
100
+ :root[data-theme="claude"] .section-lead { max-width:62ch; }
101
+ :root[data-theme="claude"] .lieflat-card { background:var(--surface); border-radius:16px; padding:26px 28px 20px; }
102
+ :root[data-theme="claude"] .lieflat-title { font-weight:500; font-size:1.28rem; line-height:1.3; }
103
+ :root[data-theme="claude"] .lieflat-sub { max-width:720px; }
104
+ :root[data-theme="claude"] .lieflat-figure svg { border-radius:12px; background:transparent; }
105
+ :root[data-theme="claude"] .lieflat-suppressed { background:var(--surface2); }
106
+
107
+ /* Theme 02 — Academic Paper.
108
+ Formal review-paper reading and print: serif body, document rules, compact figures,
109
+ minimal decorative cards, strong provenance and grayscale-friendly structure. */
110
+ :root[data-theme="academic"] {
111
+ --bg:#FFFFFF; --surface:#FFFFFF; --surface2:#FAFAF8; --text:#151515;
112
+ --text-muted:#555; --primary:#234B57; --primary-soft:#EEF2F3;
113
+ --support:#2F6B3A; --support-soft:#EDF4EE; --contradict:#8A3A2F;
114
+ --contradict-soft:#F5ECEA; --uncertain:#806727; --uncertain-soft:#F5F1E5;
115
+ --insufficient:#666; --border:#BFC1C2; --radius:0; --radius-sm:0; --shadow:none;
116
+ --font-head:'Times New Roman','Songti SC','STSong',serif;
117
+ --font-ui:'Times New Roman','Songti SC','STSong',serif; --font-mono:'Courier New',Consolas,monospace;
118
+ }
119
+ :root[data-theme="academic"] body { font-size:15px; line-height:1.58; }
120
+ :root[data-theme="academic"] .report-shell { max-width:980px; padding-top:22px; }
121
+ :root[data-theme="academic"] .report-header { border-bottom:2px solid #222; margin-bottom:34px; }
122
+ :root[data-theme="academic"] .report-header h1 { font-size:clamp(1.5rem,2.2vw,1.7rem); line-height:1.18; text-align:center; }
123
+ :root[data-theme="academic"] .report-header .meta { text-align:center; }
124
+ :root[data-theme="academic"] .report-section { background:transparent; border:0; box-shadow:none; padding:0; margin-bottom:34px; }
125
+ :root[data-theme="academic"] .report-section>h2 { font-size:1.08rem; border-bottom:1px solid #444; border-radius:0; padding:0 0 5px; }
126
+ :root[data-theme="academic"] .section-lead { background:transparent; border:0; padding:0; margin:4px 0 14px; font-style:italic; }
127
+ :root[data-theme="academic"] .decision-hero { border:1px solid #444; background:#fff; border-radius:0; padding:22px 24px; }
128
+ :root[data-theme="academic"] .hero-insight,
129
+ :root[data-theme="academic"] .tribunal-card,
130
+ :root[data-theme="academic"] .trace-chain-card,
131
+ :root[data-theme="academic"] .action-node,
132
+ :root[data-theme="academic"] .outcome-group { border-radius:0; background:#fff; box-shadow:none; }
133
+ :root[data-theme="academic"] .hero-insights { gap:0; border-top:1px solid #999; border-left:1px solid #999; }
134
+ :root[data-theme="academic"] .hero-insight { border:0; border-right:1px solid #999; border-bottom:1px solid #999; min-height:0; }
135
+ :root[data-theme="academic"] .data-table { font-size:.82rem; }
136
+ :root[data-theme="academic"] .data-table th,
137
+ :root[data-theme="academic"] .data-table td { border-left:0; border-right:0; border-color:#A8A8A8; padding:6px 8px; }
138
+ :root[data-theme="academic"] .data-table thead th { border-top:1.5px solid #222; border-bottom:1px solid #222; background:#fff; }
139
+ :root[data-theme="academic"] .data-table tbody tr:last-child td { border-bottom:1.5px solid #222; }
140
+ :root[data-theme="academic"] figcaption,
141
+ :root[data-theme="academic"] .chart-summary { font-family:var(--font-ui); font-size:.8rem; font-style:italic; color:#333; }
142
+ :root[data-theme="academic"] .dir { border:1px solid currentColor; background:transparent !important; color:#222 !important; border-radius:0; }
143
+ :root[data-theme="academic"] .quality-meter i { background:#333; }
144
+ /* Dual-layer reader — formal paper / review article. */
145
+ :root[data-theme="academic"] .report-brand-row { justify-content:center; }
146
+ :root[data-theme="academic"] .report-brand { font-variant:small-caps; letter-spacing:.12em; }
147
+ :root[data-theme="academic"] .generated-theme-chip { border:0; padding:0; }
148
+ :root[data-theme="academic"] .report-view-switcher { justify-content:center; border-top:1px solid #222; border-bottom:1px solid #222; padding:5px 0; gap:22px; }
149
+ :root[data-theme="academic"] .report-view-btn { border:0; border-radius:0; background:transparent; padding:3px 2px; font-family:var(--font-ui); }
150
+ :root[data-theme="academic"] .report-view-btn.active { background:transparent; color:#000; box-shadow:none; text-decoration:underline; text-underline-offset:4px; }
151
+ :root[data-theme="academic"] .brief-block { max-width:790px; margin-bottom:48px; }
152
+ :root[data-theme="academic"] .brief-block-header { max-width:none; border-bottom:1px solid #777; padding-bottom:6px; }
153
+ :root[data-theme="academic"] .brief-block-header h2 { font-size:1.16rem; }
154
+ :root[data-theme="academic"] .brief-decision .decision-hero { border:1px solid #444; padding:20px 24px; }
155
+ :root[data-theme="academic"] .brief-outcomes,
156
+ :root[data-theme="academic"] .brief-sources { max-width:930px; }
157
+ :root[data-theme="academic"] .brief-source-grid { gap:0; border-top:1px solid #777; }
158
+ :root[data-theme="academic"] .brief-source { border-width:0 0 1px 0; padding:10px 4px; }
159
+ :root[data-theme="academic"] .full-report-intro { max-width:740px; margin-bottom:22px; text-align:center; }
160
+ :root[data-theme="academic"] .full-report-intro h2 { font-size:1.45rem; }
161
+ :root[data-theme="academic"] .full-report-layout { grid-template-columns:175px minmax(0,1fr); gap:34px; }
162
+ :root[data-theme="academic"] .full-report-toc { border-right:1px solid #777; padding-right:14px; }
163
+ :root[data-theme="academic"] .full-report-toc a { border:0; border-bottom:1px dotted #bbb; padding:7px 0; font-size:.77rem; }
164
+ :root[data-theme="academic"] .full-report-toc a.active { border-left:0; background:transparent; font-weight:700; color:#000; }
165
+ @media (max-width:980px) {
166
+ :root[data-theme="academic"] .full-report-layout { grid-template-columns:minmax(0,1fr); }
167
+ }
168
+ :root[data-theme="academic"] .full-report-content { max-width:740px; }
169
+ :root[data-theme="academic"] .full-chapter { border-bottom:0; margin-bottom:50px; padding-bottom:0; }
170
+ :root[data-theme="academic"] .full-chapter-header { max-width:none; border-bottom:1px solid #444; padding-bottom:7px; margin-bottom:18px; }
171
+ :root[data-theme="academic"] .full-chapter-header h2 { font-size:1.22rem; }
172
+ :root[data-theme="academic"] .full-chapter-lead { font-style:italic; color:#444; }
173
+ :root[data-theme="academic"] .scope-card,
174
+ :root[data-theme="academic"] .retrieval-grid>article,
175
+ :root[data-theme="academic"] .retrieval-coverage,
176
+ :root[data-theme="academic"] .method-audit-item,
177
+ :root[data-theme="academic"] .brief-source,
178
+ :root[data-theme="academic"] .detail-body { border-radius:0; background:#fff; box-shadow:none; }
179
+ :root[data-theme="academic"] .method-audit-grid { grid-template-columns:minmax(0,1fr); gap:0; }
180
+ :root[data-theme="academic"] .method-audit-item { border-width:0 0 1px 0; padding:9px 0; }
181
+ :root[data-theme="academic"] .evidence-detail-grid dt,
182
+ :root[data-theme="academic"] .evidence-detail-grid dd { border-color:#999; }
183
+ @media print {
184
+ :root[data-theme="academic"] .generated-theme { display:none; }
185
+ :root[data-theme="academic"] .report-section { break-inside:auto; }
186
+ :root[data-theme="academic"] .data-table { font-size:8.5pt; }
187
+ }
188
+
189
+ /* Typography pass: journal rules for the Lieflat gallery + print scale. */
190
+ :root[data-theme="academic"] .lieflat-card { border:1px solid #444; border-radius:0; background:#fff; padding:18px 22px 14px; }
191
+ :root[data-theme="academic"] .lieflat-title { font-size:1.05rem; }
192
+ :root[data-theme="academic"] .lieflat-sub { font-size:.82rem; }
193
+ :root[data-theme="academic"] .lieflat-caption { font-style:italic; font-size:.78rem; }
194
+ :root[data-theme="academic"] .lieflat-src { letter-spacing:.06em; }
195
+ :root[data-theme="academic"] .lieflat-figure svg { border:1px solid #999; border-radius:0; background:#fff; }
196
+ @media print {
197
+ :root[data-theme="academic"] body { font-size:8.5pt; }
198
+ :root[data-theme="academic"] .lieflat-card { border:1px solid #444; }
199
+ :root[data-theme="academic"] .lieflat-title { font-size:10pt; }
200
+ }
201
+
202
+ /* Theme 03 — DataLab Light.
203
+ Analytical workspace with readable density: strong hierarchy, compact controls,
204
+ full-width decision/outcome surfaces, paired tribunal/action panels and traceable sources. */
205
+ :root[data-theme="datalab"] {
206
+ --bg:#F3F5F8; --surface:#FFFFFF; --surface2:#F7F9FC; --text:#1F2530;
207
+ --text-muted:#687386; --primary:#2563EB; --primary-soft:#EAF0FD;
208
+ --support:#17805E; --support-soft:#E8F5EF; --contradict:#C94343;
209
+ --contradict-soft:#FBEDED; --uncertain:#B86D12; --uncertain-soft:#FBF1E5;
210
+ --insufficient:#7A8493; --border:#D9DEE7; --radius:8px; --radius-sm:6px;
211
+ --shadow:0 1px 2px rgba(16,24,40,.05);
212
+ --font-head:'Helvetica Neue','PingFang SC','Noto Sans CJK SC',Arial,sans-serif;
213
+ --font-ui:'Helvetica Neue','PingFang SC','Noto Sans CJK SC',Arial,sans-serif;
214
+ --font-mono:'SF Mono',Menlo,Consolas,monospace;
215
+ }
216
+ :root[data-theme="datalab"] body { font-size:15.5px; }
217
+ :root[data-theme="datalab"] .controls {
218
+ max-width:1480px; margin-top:12px; padding:9px 12px; border:1px solid var(--border);
219
+ border-radius:10px; background:rgba(255,255,255,.92); box-shadow:var(--shadow); backdrop-filter:blur(10px);
220
+ }
221
+ :root[data-theme="datalab"] .generated-theme { color:var(--primary); font-weight:750; letter-spacing:.06em; }
222
+ :root[data-theme="datalab"] .report-shell { width:100%; max-width:1480px; padding:18px clamp(16px,2.4vw,30px) 72px; }
223
+ :root[data-theme="datalab"] .report-header {
224
+ width:100%; max-width:none; margin:0 0 22px; padding:18px 20px;
225
+ border:1px solid var(--border); border-radius:12px; background:var(--surface); box-shadow:var(--shadow);
226
+ }
227
+ :root[data-theme="datalab"] .report-header h1 { max-width:1100px; font-size:clamp(1.4rem,2vw,1.75rem); line-height:1.22; }
228
+ :root[data-theme="datalab"] .report-header .meta { margin:8px 0 0; font-size:.85rem; }
229
+ :root[data-theme="datalab"] .report-brand-row { margin-bottom:8px; }
230
+ :root[data-theme="datalab"] .report-brand { color:var(--primary); text-transform:uppercase; letter-spacing:.08em; font-size:.83rem; }
231
+ :root[data-theme="datalab"] .generated-theme-chip { border-radius:5px; background:var(--surface2); font-size:.72rem; }
232
+ :root[data-theme="datalab"] .report-view-switcher { margin-top:14px; gap:0; }
233
+ :root[data-theme="datalab"] .report-view-btn { min-height:36px; border-radius:6px 0 0 6px; padding:7px 14px; font-size:.86rem; }
234
+ :root[data-theme="datalab"] .report-view-btn + .report-view-btn { border-radius:0 6px 6px 0; margin-left:-1px; }
235
+ :root[data-theme="datalab"] .report-view-btn.active { background:var(--primary); color:#fff; }
236
+
237
+ /* Visual Brief: 4-column workbench grid — decision/outcomes span the row,
238
+ tribunal and action pair at half width, chapter headers stay two-column. */
239
+ :root[data-theme="datalab"] .report-page-brief {
240
+ width:100%; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:18px; align-items:start;
241
+ }
242
+ :root[data-theme="datalab"] .brief-block {
243
+ width:100%; max-width:none; margin:0; padding:18px 20px;
244
+ border:1px solid var(--border); border-radius:12px; background:var(--surface); box-shadow:var(--shadow);
245
+ }
246
+ :root[data-theme="datalab"] .brief-decision,
247
+ :root[data-theme="datalab"] .brief-lieflat,
248
+ :root[data-theme="datalab"] .brief-outcomes,
249
+ :root[data-theme="datalab"] .brief-sources { grid-column:1/-1; }
250
+ :root[data-theme="datalab"] .brief-tribunal,
251
+ :root[data-theme="datalab"] .brief-action { grid-column:span 2; }
252
+ :root[data-theme="datalab"] .brief-block-header {
253
+ max-width:none; margin-bottom:16px; display:flex; justify-content:space-between; align-items:flex-start; gap:24px;
254
+ }
255
+ :root[data-theme="datalab"] .brief-block-header h2 {
256
+ margin:0; font-family:var(--font-ui); font-size:1.02rem; line-height:1.35; text-transform:uppercase; letter-spacing:.055em;
257
+ }
258
+ :root[data-theme="datalab"] .brief-block-header p { max-width:680px; margin:0; font-size:.86rem; line-height:1.55; text-align:right; }
259
+ :root[data-theme="datalab"] .brief-decision { padding:0; overflow:hidden; }
260
+ :root[data-theme="datalab"] .brief-decision .brief-block-header { padding:18px 20px 0; }
261
+ :root[data-theme="datalab"] .brief-decision .decision-hero {
262
+ border-width:1px 0 0; border-radius:0; display:grid; grid-template-columns:minmax(210px,.7fr) minmax(0,2fr); gap:18px 28px; padding:24px 20px;
263
+ }
264
+ :root[data-theme="datalab"] .brief-decision .hero-decision { align-content:start; margin:0; }
265
+ :root[data-theme="datalab"] .brief-decision .hero-rationale { margin:0; font-family:var(--font-ui); font-size:1.08rem; line-height:1.55; }
266
+ :root[data-theme="datalab"] .brief-decision .hero-insights { grid-column:1/-1; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
267
+ :root[data-theme="datalab"] .brief-decision .hero-insight { min-height:96px; padding:12px 14px; border:1px solid var(--border); border-top-width:3px; border-radius:7px; }
268
+ :root[data-theme="datalab"] .brief-outcomes .brief-block-body { display:grid; gap:18px; }
269
+ :root[data-theme="datalab"] .brief-outcomes .outcome-groups { grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr)); gap:10px; }
270
+ :root[data-theme="datalab"] .brief-outcomes .outcome-group { padding:13px 14px; }
271
+ :root[data-theme="datalab"] .brief-chart { margin:0; }
272
+ :root[data-theme="datalab"] .brief-tribunal,
273
+ :root[data-theme="datalab"] .brief-action { min-height:100%; }
274
+ :root[data-theme="datalab"] .tribunal-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
275
+ :root[data-theme="datalab"] .tribunal-card { min-height:0; padding:13px 14px; }
276
+ :root[data-theme="datalab"] .evidence-to-action { gap:7px; padding-bottom:8px; margin-bottom:0; }
277
+ :root[data-theme="datalab"] .action-node { min-width:150px; padding:12px 13px; }
278
+ :root[data-theme="datalab"] .brief-source-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
279
+ :root[data-theme="datalab"] .brief-source { min-width:0; padding:12px 14px; background:var(--surface2); }
280
+ :root[data-theme="datalab"] .brief-source h3 { font-size:.88rem; line-height:1.45; overflow-wrap:anywhere; }
281
+
282
+ /* Full report: compact analytical reader. */
283
+ :root[data-theme="datalab"] .full-report-intro { max-width:none; margin:24px 0 16px; padding:16px 18px; border:1px solid var(--border); border-radius:10px; background:var(--surface); }
284
+ :root[data-theme="datalab"] .full-report-intro h2 { font-family:var(--font-ui); font-size:1.35rem; }
285
+ :root[data-theme="datalab"] .full-report-layout { grid-template-columns:minmax(210px,270px) minmax(0,1fr); gap:18px; }
286
+ :root[data-theme="datalab"] .full-report-toc { top:12px; padding:12px; border:1px solid var(--border); border-radius:10px; background:var(--surface); box-shadow:var(--shadow); }
287
+ @media (max-width:980px) {
288
+ :root[data-theme="datalab"] .full-report-layout { grid-template-columns:minmax(0,1fr); }
289
+ :root[data-theme="datalab"] .full-report-toc { position:relative; top:auto; max-height:none; }
290
+ }
291
+ :root[data-theme="datalab"] .full-report-toc a { border-left:3px solid transparent; border-radius:5px; padding:8px 9px; font-size:.82rem; }
292
+ :root[data-theme="datalab"] .full-report-toc a.active { border-left-color:var(--primary); background:var(--primary-soft); color:var(--text); }
293
+ :root[data-theme="datalab"] .full-report-content { max-width:none; }
294
+ :root[data-theme="datalab"] .full-chapter { margin:0 0 18px; padding:20px; border:1px solid var(--border); border-radius:12px; background:var(--surface); box-shadow:var(--shadow); }
295
+ :root[data-theme="datalab"] .full-chapter-header { max-width:none; margin-bottom:18px; display:grid; grid-template-columns:minmax(220px,.65fr) minmax(0,1fr); gap:20px; align-items:start; }
296
+ :root[data-theme="datalab"] .full-chapter-header h2 { font-family:var(--font-ui); font-size:1.18rem; line-height:1.35; }
297
+ :root[data-theme="datalab"] .full-chapter-lead { font-size:.88rem; line-height:1.55; }
298
+ :root[data-theme="datalab"] .scope-grid { grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr)); }
299
+ :root[data-theme="datalab"] .method-audit-grid { grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr)); gap:9px; }
300
+ :root[data-theme="datalab"] .matrix-controls { position:sticky; top:0; z-index:5; padding:9px; background:rgba(255,255,255,.94); backdrop-filter:blur(8px); border:1px solid var(--border); border-radius:7px; }
301
+ :root[data-theme="datalab"] .matrix-tools input,
302
+ :root[data-theme="datalab"] .matrix-tools select { min-height:36px; padding:6px 9px; }
303
+ :root[data-theme="datalab"] .data-table { font-size:.82rem; }
304
+ :root[data-theme="datalab"] .data-table th,
305
+ :root[data-theme="datalab"] .data-table td { padding:7px 8px; }
306
+ :root[data-theme="datalab"] .claim-cell { max-width:none; min-width:260px; }
307
+ :root[data-theme="datalab"] code { font-size:.78em; }
308
+
309
+ /* Lieflat gallery — analytical workbench density: compact cards, uppercase
310
+ micro labels, controlled figure surface. */
311
+ :root[data-theme="datalab"] .lieflat-gallery-container {
312
+ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px;
313
+ }
314
+ :root[data-theme="datalab"] .lieflat-card { padding:16px 18px 12px; border-radius:10px; background:var(--surface2); }
315
+ :root[data-theme="datalab"] .lieflat-title { font-family:var(--font-ui); font-size:.98rem; line-height:1.35; }
316
+ :root[data-theme="datalab"] .lieflat-sub { font-size:.8rem; line-height:1.5; }
317
+ :root[data-theme="datalab"] .lieflat-figure svg { border-radius:6px; background:var(--surface); }
318
+ :root[data-theme="datalab"] .lieflat-caption { font-size:.75rem; }
319
+ :root[data-theme="datalab"] .lieflat-src { font-size:.62rem; }
320
+ :root[data-theme="datalab"] .lieflat-suppressed { font-size:.78rem; }
321
+ :root[data-theme="datalab"] .lang-btn { min-height:36px; }
322
+ :root[data-theme="datalab"] .lang-switcher { align-items:center; }
323
+
324
+ @media (max-width:1100px) {
325
+ :root[data-theme="datalab"] .brief-decision .hero-insights { grid-template-columns:repeat(2,minmax(0,1fr)); }
326
+ :root[data-theme="datalab"] .brief-source-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
327
+ :root[data-theme="datalab"] .lieflat-gallery-container { grid-template-columns:1fr; }
328
+ }
329
+ @media (max-width:980px) {
330
+ :root[data-theme="datalab"] .report-page-brief { grid-template-columns:minmax(0,1fr); }
331
+ :root[data-theme="datalab"] .brief-block { grid-column:1 !important; }
332
+ :root[data-theme="datalab"] .brief-block-header { display:block; }
333
+ :root[data-theme="datalab"] .brief-block-header p { margin-top:6px; max-width:none; text-align:left; }
334
+ :root[data-theme="datalab"] .brief-decision .decision-hero { grid-template-columns:1fr; }
335
+ :root[data-theme="datalab"] .brief-decision .hero-insights { grid-column:1; }
336
+ :root[data-theme="datalab"] .full-chapter-header { grid-template-columns:1fr; }
337
+ }
338
+ @media (max-width:720px) {
339
+ :root[data-theme="datalab"] .controls { width:calc(100% - 24px); padding:8px 10px; }
340
+ :root[data-theme="datalab"] .report-shell { padding-left:14px; padding-right:14px; }
341
+ :root[data-theme="datalab"] .report-header { padding:15px 14px; }
342
+ :root[data-theme="datalab"] .report-header h1 { font-size:1.3rem; }
343
+ :root[data-theme="datalab"] .brief-block { padding:15px 14px; }
344
+ :root[data-theme="datalab"] .brief-decision { padding:0; }
345
+ :root[data-theme="datalab"] .brief-decision .brief-block-header { padding:15px 14px 0; }
346
+ :root[data-theme="datalab"] .brief-decision .decision-hero { padding:18px 14px; }
347
+ :root[data-theme="datalab"] .brief-decision .hero-insights,
348
+ :root[data-theme="datalab"] .brief-source-grid,
349
+ :root[data-theme="datalab"] .tribunal-grid { grid-template-columns:1fr; }
350
+ :root[data-theme="datalab"] .full-chapter { padding:16px 14px; }
351
+ :root[data-theme="datalab"] .data-table { font-size:.8rem; }
352
+ }
353
+
354
+ /* Theme 04 — DataLab Dark.
355
+ Same information architecture as DataLab Light, rendered as a focused dark analytical workspace. */
356
+ :root[data-theme="datalab-dark"] {
357
+ --bg:#0F131A; --surface:#171C24; --surface2:#1D2430; --text:#E9EDF3;
358
+ --text-muted:#98A3B3; --primary:#6EA8FF; --primary-soft:#1B3152;
359
+ --support:#58C79B; --support-soft:#18372C; --contradict:#F08282;
360
+ --contradict-soft:#422426; --uncertain:#E4B45F; --uncertain-soft:#3B3020;
361
+ --insufficient:#8D98A8; --border:#2D3745; --radius:8px; --radius-sm:6px;
362
+ --shadow:0 8px 24px rgba(0,0,0,.22); --font-head:'Helvetica Neue',Arial,'PingFang SC',sans-serif;
363
+ --font-ui:'Helvetica Neue',Arial,'PingFang SC',sans-serif; --font-mono:'SF Mono',Menlo,Consolas,monospace;
364
+ }
365
+ :root[data-theme="datalab-dark"] body { font-size:15.5px; }
366
+ :root[data-theme="datalab-dark"] .controls {
367
+ max-width:1480px; margin-top:12px; padding:9px 12px; border:1px solid var(--border);
368
+ border-radius:10px; background:rgba(23,28,36,.94); box-shadow:var(--shadow); backdrop-filter:blur(12px);
369
+ }
370
+ :root[data-theme="datalab-dark"] .generated-theme { color:var(--primary); font-weight:750; letter-spacing:.06em; }
371
+ :root[data-theme="datalab-dark"] .lang-btn { background:var(--surface2); border-color:var(--border); color:var(--text); }
372
+ :root[data-theme="datalab-dark"] .lang-btn.active { background:var(--primary); border-color:var(--primary); color:#0D1420; }
373
+ :root[data-theme="datalab-dark"] .report-shell { width:100%; max-width:1480px; padding:18px clamp(16px,2.4vw,30px) 72px; }
374
+ :root[data-theme="datalab-dark"] .report-header {
375
+ width:100%; max-width:none; margin:0 0 22px; padding:18px 20px;
376
+ border:1px solid var(--border); border-radius:12px; background:var(--surface); box-shadow:var(--shadow);
377
+ }
378
+ :root[data-theme="datalab-dark"] .report-header h1 { max-width:1100px; font-size:clamp(1.4rem,2vw,1.75rem); line-height:1.22; }
379
+ :root[data-theme="datalab-dark"] .report-header .meta { margin:8px 0 0; font-size:.85rem; color:var(--text-muted); }
380
+ :root[data-theme="datalab-dark"] .report-brand-row { margin-bottom:8px; }
381
+ :root[data-theme="datalab-dark"] .report-brand { color:var(--primary); text-transform:uppercase; letter-spacing:.08em; font-size:.83rem; }
382
+ :root[data-theme="datalab-dark"] .generated-theme-chip { border-radius:5px; background:var(--surface2); border-color:var(--border); color:var(--text-muted); font-size:.72rem; }
383
+ :root[data-theme="datalab-dark"] .report-view-switcher { margin-top:14px; gap:0; }
384
+ :root[data-theme="datalab-dark"] .report-view-btn { min-height:36px; border-radius:6px 0 0 6px; padding:7px 14px; font-size:.86rem; background:var(--surface2); border-color:var(--border); }
385
+ :root[data-theme="datalab-dark"] .report-view-btn + .report-view-btn { border-radius:0 6px 6px 0; margin-left:-1px; }
386
+ :root[data-theme="datalab-dark"] .report-view-btn.active { background:var(--primary); border-color:var(--primary); color:#0D1420; }
387
+
388
+ :root[data-theme="datalab-dark"] .report-page-brief { width:100%; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:18px; align-items:start; }
389
+ :root[data-theme="datalab-dark"] .brief-block { width:100%; max-width:none; margin:0; padding:18px 20px; border:1px solid var(--border); border-radius:12px; background:var(--surface); box-shadow:var(--shadow); }
390
+ :root[data-theme="datalab-dark"] .brief-decision,
391
+ :root[data-theme="datalab-dark"] .brief-lieflat,
392
+ :root[data-theme="datalab-dark"] .brief-outcomes,
393
+ :root[data-theme="datalab-dark"] .brief-sources { grid-column:1/-1; }
394
+ :root[data-theme="datalab-dark"] .brief-tribunal,
395
+ :root[data-theme="datalab-dark"] .brief-action { grid-column:span 2; }
396
+ :root[data-theme="datalab-dark"] .brief-block-header { max-width:none; margin-bottom:16px; display:flex; justify-content:space-between; align-items:flex-start; gap:24px; }
397
+ :root[data-theme="datalab-dark"] .brief-block-header h2 { margin:0; font-family:var(--font-ui); font-size:1.02rem; line-height:1.35; text-transform:uppercase; letter-spacing:.055em; }
398
+ :root[data-theme="datalab-dark"] .brief-block-header p { max-width:680px; margin:0; font-size:.86rem; line-height:1.55; text-align:right; color:var(--text-muted); }
399
+ :root[data-theme="datalab-dark"] .brief-decision { padding:0; overflow:hidden; }
400
+ :root[data-theme="datalab-dark"] .brief-decision .brief-block-header { padding:18px 20px 0; }
401
+ :root[data-theme="datalab-dark"] .brief-decision .decision-hero { border-width:1px 0 0; border-radius:0; display:grid; grid-template-columns:minmax(210px,.7fr) minmax(0,2fr); gap:18px 28px; padding:24px 20px; background:var(--surface2); }
402
+ :root[data-theme="datalab-dark"] .brief-decision .hero-decision { align-content:start; margin:0; }
403
+ :root[data-theme="datalab-dark"] .brief-decision .hero-rationale { margin:0; font-family:var(--font-ui); font-size:1.08rem; line-height:1.55; color:#F0F3F8; }
404
+ :root[data-theme="datalab-dark"] .brief-decision .hero-insights { grid-column:1/-1; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
405
+ :root[data-theme="datalab-dark"] .brief-decision .hero-insight { min-height:96px; padding:12px 14px; border:1px solid var(--border); border-top-width:3px; border-radius:7px; background:var(--surface); }
406
+ :root[data-theme="datalab-dark"] .brief-outcomes .brief-block-body { display:grid; gap:18px; }
407
+ :root[data-theme="datalab-dark"] .brief-outcomes .outcome-groups { grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr)); gap:10px; }
408
+ :root[data-theme="datalab-dark"] .brief-outcomes .outcome-group { padding:13px 14px; background:var(--surface2); }
409
+ :root[data-theme="datalab-dark"] .brief-chart { margin:0; background:var(--surface2); }
410
+ :root[data-theme="datalab-dark"] .brief-chart svg,
411
+ :root[data-theme="datalab-dark"] .report-section svg { background:#FFFFFF; }
412
+ :root[data-theme="datalab-dark"] .brief-tribunal,
413
+ :root[data-theme="datalab-dark"] .brief-action { min-height:100%; }
414
+ :root[data-theme="datalab-dark"] .tribunal-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
415
+ :root[data-theme="datalab-dark"] .tribunal-card { min-height:0; padding:13px 14px; background:var(--surface2); }
416
+ :root[data-theme="datalab-dark"] .evidence-to-action { gap:7px; padding-bottom:8px; margin-bottom:0; }
417
+ :root[data-theme="datalab-dark"] .action-node { min-width:150px; padding:12px 13px; background:var(--surface2); }
418
+ :root[data-theme="datalab-dark"] .brief-source-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
419
+ :root[data-theme="datalab-dark"] .brief-source { min-width:0; padding:12px 14px; background:var(--surface2); }
420
+ :root[data-theme="datalab-dark"] .brief-source h3 { font-size:.88rem; line-height:1.45; overflow-wrap:anywhere; }
421
+
422
+ :root[data-theme="datalab-dark"] .full-report-intro { max-width:none; margin:24px 0 16px; padding:16px 18px; border:1px solid var(--border); border-radius:10px; background:var(--surface); }
423
+ :root[data-theme="datalab-dark"] .full-report-intro h2 { font-family:var(--font-ui); font-size:1.35rem; }
424
+ :root[data-theme="datalab-dark"] .full-report-layout { grid-template-columns:minmax(210px,270px) minmax(0,1fr); gap:18px; }
425
+ :root[data-theme="datalab-dark"] .full-report-toc { top:12px; padding:12px; border:1px solid var(--border); border-radius:10px; background:var(--surface); box-shadow:var(--shadow); }
426
+ @media (max-width:980px) {
427
+ :root[data-theme="datalab-dark"] .full-report-layout { grid-template-columns:minmax(0,1fr); }
428
+ :root[data-theme="datalab-dark"] .full-report-toc { position:relative; top:auto; max-height:none; }
429
+ }
430
+ :root[data-theme="datalab-dark"] .full-report-toc a { border-left:3px solid transparent; border-radius:5px; padding:8px 9px; font-size:.82rem; color:var(--text-muted); }
431
+ :root[data-theme="datalab-dark"] .full-report-toc a.active { border-left-color:var(--primary); background:var(--primary-soft); color:var(--text); }
432
+ :root[data-theme="datalab-dark"] .full-report-content { max-width:none; }
433
+ :root[data-theme="datalab-dark"] .full-chapter { margin:0 0 18px; padding:20px; border:1px solid var(--border); border-radius:12px; background:var(--surface); box-shadow:var(--shadow); }
434
+ :root[data-theme="datalab-dark"] .full-chapter-header { max-width:none; margin-bottom:18px; display:grid; grid-template-columns:minmax(220px,.65fr) minmax(0,1fr); gap:20px; align-items:start; }
435
+ :root[data-theme="datalab-dark"] .full-chapter-header h2 { font-family:var(--font-ui); font-size:1.18rem; line-height:1.35; }
436
+ :root[data-theme="datalab-dark"] .full-chapter-lead { font-size:.88rem; line-height:1.55; color:var(--text-muted); }
437
+ :root[data-theme="datalab-dark"] .scope-grid { grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr)); }
438
+ :root[data-theme="datalab-dark"] .method-audit-grid { grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr)); gap:9px; }
439
+ :root[data-theme="datalab-dark"] .scope-card,
440
+ :root[data-theme="datalab-dark"] .retrieval-grid>article,
441
+ :root[data-theme="datalab-dark"] .retrieval-coverage,
442
+ :root[data-theme="datalab-dark"] .method-audit-item,
443
+ :root[data-theme="datalab-dark"] .detail-body,
444
+ :root[data-theme="datalab-dark"] .visual-suppressed { background:var(--surface2); border-color:var(--border); }
445
+ :root[data-theme="datalab-dark"] .matrix-controls { position:sticky; top:0; z-index:5; padding:9px; background:rgba(23,28,36,.95); backdrop-filter:blur(8px); border:1px solid var(--border); border-radius:7px; }
446
+ :root[data-theme="datalab-dark"] .matrix-tools input,
447
+ :root[data-theme="datalab-dark"] .matrix-tools select { min-height:36px; padding:6px 9px; background:var(--surface2); border-color:var(--border); color:var(--text); }
448
+ :root[data-theme="datalab-dark"] .data-table { font-size:.82rem; }
449
+ :root[data-theme="datalab-dark"] .data-table th,
450
+ :root[data-theme="datalab-dark"] .data-table td { padding:7px 8px; border-color:var(--border); }
451
+ :root[data-theme="datalab-dark"] .table-wrap .data-table th { background:var(--surface2); }
452
+ :root[data-theme="datalab-dark"] .data-table tbody tr:nth-child(even) { background:#141A22; }
453
+ :root[data-theme="datalab-dark"] .data-table tbody tr:hover { background:var(--primary-soft); }
454
+ :root[data-theme="datalab-dark"] .claim-cell { max-width:none; min-width:260px; }
455
+ :root[data-theme="datalab-dark"] code { font-size:.78em; background:var(--surface2); }
456
+
457
+ /* Lieflat gallery — dark workbench density; figure surface keeps the dark
458
+ card_bg and labels hold ≥4.5:1 contrast against it. */
459
+ :root[data-theme="datalab-dark"] .lieflat-gallery-container {
460
+ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px;
461
+ }
462
+ :root[data-theme="datalab-dark"] .lieflat-card { padding:16px 18px 12px; border-radius:10px; background:var(--surface2); }
463
+ :root[data-theme="datalab-dark"] .lieflat-title { font-family:var(--font-ui); font-size:.98rem; line-height:1.35; }
464
+ :root[data-theme="datalab-dark"] .lieflat-sub { font-size:.8rem; line-height:1.5; }
465
+ :root[data-theme="datalab-dark"] .lieflat-figure svg { border-radius:6px; background:transparent; }
466
+ :root[data-theme="datalab-dark"] .lieflat-caption { font-size:.75rem; }
467
+ :root[data-theme="datalab-dark"] .lieflat-src { font-size:.62rem; }
468
+ :root[data-theme="datalab-dark"] .lieflat-suppressed { font-size:.78rem; }
469
+ :root[data-theme="datalab-dark"] .lang-btn { min-height:36px; }
470
+ :root[data-theme="datalab-dark"] .lang-switcher { align-items:center; }
471
+
472
+ @media (max-width:1100px) {
473
+ :root[data-theme="datalab-dark"] .brief-decision .hero-insights { grid-template-columns:repeat(2,minmax(0,1fr)); }
474
+ :root[data-theme="datalab-dark"] .brief-source-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
475
+ :root[data-theme="datalab-dark"] .lieflat-gallery-container { grid-template-columns:1fr; }
476
+ }
477
+ @media (max-width:980px) {
478
+ :root[data-theme="datalab-dark"] .report-page-brief { grid-template-columns:minmax(0,1fr); }
479
+ :root[data-theme="datalab-dark"] .brief-block { grid-column:1 !important; }
480
+ :root[data-theme="datalab-dark"] .brief-block-header { display:block; }
481
+ :root[data-theme="datalab-dark"] .brief-block-header p { margin-top:6px; max-width:none; text-align:left; }
482
+ :root[data-theme="datalab-dark"] .brief-decision .decision-hero { grid-template-columns:1fr; }
483
+ :root[data-theme="datalab-dark"] .brief-decision .hero-insights { grid-column:1; }
484
+ :root[data-theme="datalab-dark"] .full-chapter-header { grid-template-columns:1fr; }
485
+ }
486
+ @media (max-width:720px) {
487
+ :root[data-theme="datalab-dark"] .controls { width:calc(100% - 24px); padding:8px 10px; }
488
+ :root[data-theme="datalab-dark"] .report-shell { padding-left:14px; padding-right:14px; }
489
+ :root[data-theme="datalab-dark"] .report-header { padding:15px 14px; }
490
+ :root[data-theme="datalab-dark"] .report-header h1 { font-size:1.3rem; }
491
+ :root[data-theme="datalab-dark"] .brief-block { padding:15px 14px; }
492
+ :root[data-theme="datalab-dark"] .brief-decision { padding:0; }
493
+ :root[data-theme="datalab-dark"] .brief-decision .brief-block-header { padding:15px 14px 0; }
494
+ :root[data-theme="datalab-dark"] .brief-decision .decision-hero { padding:18px 14px; }
495
+ :root[data-theme="datalab-dark"] .brief-decision .hero-insights,
496
+ :root[data-theme="datalab-dark"] .brief-source-grid,
497
+ :root[data-theme="datalab-dark"] .tribunal-grid { grid-template-columns:1fr; }
498
+ :root[data-theme="datalab-dark"] .full-chapter { padding:16px 14px; }
499
+ :root[data-theme="datalab-dark"] .data-table { font-size:.8rem; }
500
+ }
501
+
502
+ /* Theme 05 — Presentation / Judge [Dark].
503
+ Review-first presentation mode: strong decision framing without dashboard-scale typography,
504
+ readable evidence panels and an audit-ready full report. */
505
+ :root[data-theme="presentation"] {
506
+ --bg:#121419; --surface:#1B1F26; --surface2:#232933; --text:#F2F4F7;
507
+ --text-muted:#A2A9B4; --primary:#E8A87C; --primary-soft:#382E27;
508
+ --support:#7BC48F; --support-soft:#203229; --contradict:#E28B7E;
509
+ --contradict-soft:#392522; --uncertain:#E4C07A; --uncertain-soft:#38301F;
510
+ --insufficient:#9299A4; --border:#343B46; --radius:14px; --radius-sm:9px;
511
+ --shadow:0 12px 34px rgba(0,0,0,.25); --font-head:'Helvetica Neue','PingFang SC',Arial,sans-serif;
512
+ --font-ui:'Helvetica Neue','PingFang SC',Arial,sans-serif; --font-mono:'SF Mono',Menlo,Consolas,monospace;
513
+ }
514
+ :root[data-theme="presentation"] body { font-size:16px; }
515
+ :root[data-theme="presentation"] .controls {
516
+ width:calc(100% - 36px); max-width:1180px; margin:16px auto 0; padding:9px 12px;
517
+ border:1px solid var(--border); border-radius:12px; background:rgba(25,29,35,.94);
518
+ box-shadow:0 8px 24px rgba(0,0,0,.18); backdrop-filter:blur(12px);
519
+ }
520
+ :root[data-theme="presentation"] .generated-theme { margin-right:auto; color:var(--primary); font-size:.76rem; font-weight:800; letter-spacing:.075em; }
521
+ :root[data-theme="presentation"] .lang-switcher { gap:6px; }
522
+ :root[data-theme="presentation"] .lang-switcher>span { color:var(--text-muted); font-size:.74rem; }
523
+ :root[data-theme="presentation"] .lang-btn { min-height:34px; border-color:#3C4450; background:#20252D; color:#DCE1E8; padding:5px 11px; }
524
+ :root[data-theme="presentation"] .lang-btn.active { background:var(--primary); border-color:var(--primary); color:#15181D; }
525
+
526
+ :root[data-theme="presentation"] .report-shell { width:100%; max-width:1220px; padding:24px clamp(16px,2.8vw,30px) 88px; }
527
+ :root[data-theme="presentation"] .report-header {
528
+ width:100%; max-width:1120px; margin:0 auto 36px; padding:24px 26px;
529
+ border:1px solid var(--border); border-radius:16px; background:linear-gradient(145deg,#1A1E25,#20252E);
530
+ box-shadow:var(--shadow);
531
+ }
532
+ :root[data-theme="presentation"] .report-brand-row { margin-bottom:12px; }
533
+ :root[data-theme="presentation"] .report-brand { color:var(--primary); text-transform:uppercase; letter-spacing:.1em; font-size:.8rem; }
534
+ :root[data-theme="presentation"] .generated-theme-chip { background:#242A33; border-color:#3C4450; color:#B8C0CB; }
535
+ :root[data-theme="presentation"] .report-header h1 { max-width:980px; font-size:clamp(1.35rem,2vw,1.7rem); line-height:1.08; letter-spacing:-.022em; }
536
+ :root[data-theme="presentation"] .report-header .meta { margin:10px 0 0; color:var(--text-muted); font-size:.86rem; overflow-wrap:anywhere; }
537
+ :root[data-theme="presentation"] .report-view-switcher { display:inline-flex; margin-top:18px; padding:4px; border:1px solid var(--border); border-radius:999px; background:#12151A; }
538
+ :root[data-theme="presentation"] .report-view-btn { min-height:36px; border:0; background:transparent; color:#BBC2CC; padding:7px 15px; }
539
+ :root[data-theme="presentation"] .report-view-btn.active { background:var(--primary); color:#15181D; box-shadow:none; }
540
+
541
+ :root[data-theme="presentation"] .report-page-brief { width:100%; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; align-items:start; }
542
+ :root[data-theme="presentation"] .brief-block { width:100%; max-width:none; margin:0; padding:22px 24px; border:1px solid var(--border); border-radius:16px; background:var(--surface); box-shadow:var(--shadow); }
543
+ :root[data-theme="presentation"] .brief-decision,
544
+ :root[data-theme="presentation"] .brief-outcomes,
545
+ :root[data-theme="presentation"] .brief-sources { grid-column:1/-1; }
546
+ :root[data-theme="presentation"] .brief-decision { padding:0; border:0; background:transparent; box-shadow:none; }
547
+ :root[data-theme="presentation"] .brief-decision .brief-block-header { display:none; }
548
+ :root[data-theme="presentation"] .brief-decision .decision-hero {
549
+ min-height:360px; display:flex; flex-direction:column; justify-content:center;
550
+ border:1px solid var(--border); border-radius:18px; background:linear-gradient(145deg,var(--surface),var(--surface2));
551
+ box-shadow:0 18px 50px rgba(0,0,0,.30); padding:clamp(28px,4vw,48px);
552
+ }
553
+ :root[data-theme="presentation"] .decision-value { font-size:clamp(2rem,4vw,2.9rem); line-height:.98; letter-spacing:-.04em; color:var(--primary); }
554
+ :root[data-theme="presentation"] .confidence-badge { font-size:.92rem; padding:6px 13px; color:#15181D; }
555
+ :root[data-theme="presentation"] .hero-rationale { max-width:900px; font-family:var(--font-ui); font-size:clamp(0.95rem,1.4vw,1.12rem); line-height:1.5; color:#E5E8ED; }
556
+ :root[data-theme="presentation"] .hero-insights { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
557
+ :root[data-theme="presentation"] .hero-insight { min-height:112px; background:#191D23; border-radius:11px; padding:16px 18px; }
558
+ :root[data-theme="presentation"] .brief-block-header h2 { font-size:1.15rem; line-height:1.2; }
559
+ :root[data-theme="presentation"] .brief-block-header p { color:#ABB3BE; font-size:.86rem; line-height:1.55; }
560
+ :root[data-theme="presentation"] .outcome-separation .visual-heading h3 { font-size:1.05rem; }
561
+ :root[data-theme="presentation"] .outcome-groups { grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr)); gap:12px; }
562
+ :root[data-theme="presentation"] .outcome-group,
563
+ :root[data-theme="presentation"] .tribunal-card,
564
+ :root[data-theme="presentation"] .trace-chain-card,
565
+ :root[data-theme="presentation"] .action-node { background:var(--surface2); border-color:var(--border); }
566
+ :root[data-theme="presentation"] .tribunal-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
567
+ :root[data-theme="presentation"] .tribunal-card { min-height:0; }
568
+ :root[data-theme="presentation"] .evidence-to-action { gap:8px; }
569
+ :root[data-theme="presentation"] .action-node { min-width:160px; }
570
+ :root[data-theme="presentation"] .brief-source-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
571
+ :root[data-theme="presentation"] .brief-source { min-width:0; background:#191D23; border-color:#353D48; }
572
+ :root[data-theme="presentation"] .brief-source h3 { overflow-wrap:anywhere; }
573
+ :root[data-theme="presentation"] .report-section svg,
574
+ :root[data-theme="presentation"] .academic-figure svg { background:#fff; }
575
+
576
+ :root[data-theme="presentation"] .full-report-intro { width:100%; max-width:1060px; margin:44px auto 26px; }
577
+ :root[data-theme="presentation"] .full-report-intro h2 { font-size:clamp(1.5rem,2.2vw,1.9rem); line-height:1.08; }
578
+ :root[data-theme="presentation"] .full-report-layout { width:100%; max-width:1160px; margin:0 auto; grid-template-columns:minmax(190px,230px) minmax(0,1fr); gap:28px; }
579
+ :root[data-theme="presentation"] .full-report-toc { top:16px; padding:14px; border:1px solid var(--border); border-radius:12px; background:#171B21; box-shadow:0 10px 28px rgba(0,0,0,.22); }
580
+ :root[data-theme="presentation"] .full-report-toc a { border-radius:7px; border-left:0; padding:9px 10px; color:#AEB6C1; font-size:.84rem; }
581
+ :root[data-theme="presentation"] .full-report-toc a.active { border-left:0; background:#282E38; color:#fff; box-shadow:inset 3px 0 0 var(--primary); }
582
+ :root[data-theme="presentation"] .full-report-content { max-width:none; }
583
+ :root[data-theme="presentation"] .full-chapter { margin-bottom:28px; padding:clamp(22px,3vw,30px); border:1px solid var(--border); border-radius:16px; background:var(--surface); box-shadow:0 12px 30px rgba(0,0,0,.20); }
584
+ :root[data-theme="presentation"] .full-chapter-header { max-width:900px; margin-bottom:24px; }
585
+ :root[data-theme="presentation"] .full-chapter-header h2 { font-size:clamp(1.2rem,1.9vw,1.5rem); line-height:1.12; }
586
+ :root[data-theme="presentation"] .full-chapter-lead { color:#AEB6C1; font-size:.96rem; line-height:1.6; }
587
+ :root[data-theme="presentation"] .scope-card,
588
+ :root[data-theme="presentation"] .retrieval-grid>article,
589
+ :root[data-theme="presentation"] .retrieval-coverage,
590
+ :root[data-theme="presentation"] .method-audit-item,
591
+ :root[data-theme="presentation"] .detail-body,
592
+ :root[data-theme="presentation"] .visual-suppressed { background:#242A33; border-color:#3B4450; }
593
+ :root[data-theme="presentation"] .data-table { font-size:.86rem; }
594
+ :root[data-theme="presentation"] .data-table td,
595
+ :root[data-theme="presentation"] .data-table th { border-color:#3B4450; }
596
+
597
+ /* 移动端安全(主题规则特异性高于基座断点:必须自带响应式覆写) */
598
+ @media (max-width:980px) {
599
+ :root[data-theme="presentation"] .full-report-layout { grid-template-columns:minmax(0,1fr); }
600
+ :root[data-theme="presentation"] .full-report-toc { position:relative; top:auto; max-height:none; }
601
+ }
602
+ @media (max-width:720px) {
603
+ :root[data-theme="presentation"] .outcome-groups { grid-template-columns:1fr; }
604
+ :root[data-theme="presentation"] .tribunal-grid,
605
+ :root[data-theme="presentation"] .brief-source-grid { grid-template-columns:1fr; }
606
+ }
607
+ :root[data-theme="presentation"] .table-wrap .data-table th { background:#242A33; }
608
+
609
+ @media (max-width:980px) {
610
+ :root[data-theme="presentation"] .report-page-brief { grid-template-columns:minmax(0,1fr); }
611
+ :root[data-theme="presentation"] .brief-block { grid-column:1 !important; }
612
+ :root[data-theme="presentation"] .full-report-layout { max-width:none; }
613
+ }
614
+ @media (max-width:720px) {
615
+ :root[data-theme="presentation"] .controls { width:calc(100% - 24px); border-radius:10px; }
616
+ :root[data-theme="presentation"] .report-shell { padding-left:14px; padding-right:14px; }
617
+ :root[data-theme="presentation"] .report-header { padding:18px 16px; border-radius:12px; }
618
+ :root[data-theme="presentation"] .report-header h1 { font-size:1.2rem; }
619
+ :root[data-theme="presentation"] .brief-block { padding:18px 16px; }
620
+ :root[data-theme="presentation"] .brief-decision { padding:0; }
621
+ :root[data-theme="presentation"] .brief-decision .decision-hero { min-height:0; padding:24px 18px; border-radius:13px; }
622
+ :root[data-theme="presentation"] .decision-value { font-size:2rem; }
623
+ :root[data-theme="presentation"] .hero-insights,
624
+ :root[data-theme="presentation"] .tribunal-grid,
625
+ :root[data-theme="presentation"] .brief-source-grid { grid-template-columns:1fr; }
626
+ :root[data-theme="presentation"] .full-chapter { padding:18px 16px; border-radius:12px; }
627
+ }
628
+
629
+ /* Typography pass: verdict type scale + insight padding + dark-court gallery.
630
+ Gold/orange accents keep ≥4.5:1 contrast on the dark surfaces. */
631
+ :root[data-theme="presentation"] .hero-decision .decision-value { line-height:.96; }
632
+ :root[data-theme="presentation"] .hero-rationale { color:#E9ECF1; }
633
+ :root[data-theme="presentation"] .hero-insight { padding:18px 20px; }
634
+ :root[data-theme="presentation"] .brief-decision .hero-insight { padding:16px 18px; }
635
+ :root[data-theme="presentation"] .lieflat-card { background:var(--surface); border-radius:16px; padding:22px 24px 16px; }
636
+ :root[data-theme="presentation"] .lieflat-title { font-size:1.08rem; line-height:1.3; }
637
+ :root[data-theme="presentation"] .lieflat-sub { font-size:.82rem; }
638
+ :root[data-theme="presentation"] .lieflat-figure svg { border-radius:10px; background:transparent; }
639
+ :root[data-theme="presentation"] .lieflat-caption { font-size:.76rem; }
640
+ :root[data-theme="presentation"] .lieflat-src { font-size:.64rem; }
641
+ :root[data-theme="presentation"] .lieflat-suppressed { background:var(--surface2); font-size:.78rem; }
642
+
643
+ /* EduEvidence base stylesheet — extracted verbatim from build_report.py
644
+ (plan E2: templates/styles live outside the renderer; loaded at build time). */
645
+ :root {
646
+ --bg:#F7F4ED; --surface:#FFFFFF; --surface2:#FCFAF6;
647
+ --text:#3A3833; --primary:#B8694A; --support:#5E8A6A;
648
+ --contradict:#A85B53; --uncertain:#C99A4A; --insufficient:#8A867E;
649
+ --border:#E5DFD3; --radius:10px; --shadow:0 1px 3px rgba(60,56,48,.08);
650
+ --font-head:'Georgia','Songti SC','Noto Serif CJK SC',serif;
651
+ --font-ui:'Helvetica Neue','PingFang SC','Noto Sans CJK SC',Arial,sans-serif;
652
+ }
653
+ * { box-sizing:border-box; }
654
+ html, body { max-width:100%; overflow-x:hidden; }
655
+ body { margin:0; background:var(--bg); color:var(--text);
656
+ font-family:var(--font-ui); line-height:1.65;
657
+ font-variant-numeric:tabular-nums; }
658
+ .report-shell { width:100%; max-width:1200px; margin:0 auto; padding:24px clamp(18px,3vw,32px) 80px; }
659
+ .controls { width:calc(100% - 36px); max-width:1200px; margin:0 auto 16px; padding:12px clamp(0px,1vw,12px); display:flex; gap:18px; flex-wrap:wrap; align-items:center;
660
+ border-bottom:1px solid var(--border); }
661
+ .report-header { border-bottom:1px solid var(--border); padding-bottom:16px; margin-bottom:24px; }
662
+ .report-header h1 { font-family:var(--font-head); font-size:1.55rem; margin:0 0 8px; color:var(--text); }
663
+ .report-header .meta { color:var(--insufficient); font-size:.85rem; }
664
+ .lang-switcher { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
665
+ .lang-switcher span { font-size:.82rem; color:var(--insufficient); }
666
+ .lang-btn { background:var(--surface); border:1px solid var(--border); border-radius:999px;
667
+ padding:4px 12px; font-size:.8rem; cursor:pointer; color:var(--text); }
668
+ .lang-btn.active { background:var(--primary); color:#fff; border-color:var(--primary); }
669
+ .report-section { background:var(--surface); border:1px solid var(--border);
670
+ border-radius:var(--radius); box-shadow:var(--shadow);
671
+ padding:20px 24px; margin-bottom:20px; }
672
+ .report-section h2 { font-family:var(--font-head); font-size:1.25rem; margin:0 0 6px;
673
+ border-bottom:1px solid var(--border); padding-bottom:8px; }
674
+ .section-lead { font-size:.88rem; color:var(--insufficient); margin:0 0 14px;
675
+ background:var(--surface2); border-radius:6px; padding:8px 12px;
676
+ border-left:3px solid var(--primary); }
677
+ .report-section h3 { font-size:.95rem; margin:14px 0 6px; }
678
+ .decision-card { padding:18px 20px; border-radius:10px;
679
+ border-left:6px solid var(--insufficient); background:var(--surface2);
680
+ box-shadow:var(--shadow); }
681
+ .decision-card.adopt { border-left-color:var(--support); }
682
+ .decision-card.pilot { border-left-color:var(--uncertain); }
683
+ .decision-card.reject { border-left-color:var(--contradict); }
684
+ .kpi-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px 18px; }
685
+ .kpi-label { display:block; font-size:.72rem; color:var(--insufficient); text-transform:uppercase; letter-spacing:.05em; margin-bottom:2px; }
686
+ .kpi-value { font-size:1.05rem; font-weight:600; }
687
+ .decision-value { font-family:var(--font-head); font-size:1.5rem; font-weight:700; }
688
+ .confidence-badge { background:var(--uncertain); color:#fff; border-radius:999px; padding:3px 12px; font-size:.82rem; }
689
+ .rationale { color:var(--text); font-size:.92rem; margin-top:12px; border-top:1px dashed var(--border);
690
+ padding-top:10px; }
691
+ .exec-summary { background:var(--surface2); border:1px solid var(--border);
692
+ border-radius:10px; padding:16px 20px; margin-bottom:18px; }
693
+ .exec-summary h3 { margin:0 0 10px; color:var(--primary); }
694
+ .summary-row { display:flex; gap:12px; margin:8px 0; }
695
+ .summary-k { flex:0 0 64px; font-weight:700; color:var(--insufficient); font-size:.88rem; }
696
+ .summary-v { flex:1; font-size:.95rem; }
697
+ .summary-list { margin:4px 0 0; padding-left:18px; }
698
+ .summary-tag { display:inline-block; border-radius:999px; padding:0 10px; font-size:.75rem; color:#fff; }
699
+ .summary-tag.pos { background:var(--support); }
700
+ .summary-tag.neg { background:var(--contradict); }
701
+ ul.can li { border-left:3px solid var(--support); }
702
+ ul.uncertain li { border-left:3px solid var(--uncertain); }
703
+ ul.cannot li { border-left:3px solid var(--contradict); }
704
+ ul.can li, ul.uncertain li, ul.cannot li { list-style:none; margin:6px 0; padding:6px 10px;
705
+ background:var(--surface2); border-radius:6px; font-size:.9rem; }
706
+ .report-section svg { max-width:100%; height:auto; border:1px solid var(--border);
707
+ border-radius:var(--radius-sm); background:#fff; }
708
+ .table-wrap { overflow-x:auto; -webkit-overflow-scrolling:touch; border:1px solid var(--border);
709
+ border-radius:var(--radius-sm); max-width:100%; }
710
+ .table-wrap .data-table { border:none; }
711
+ .data-table { width:100%; border-collapse:collapse; font-size:.88rem; }
712
+ .table-wrap .data-table th { background:var(--surface2); position:sticky; top:0; white-space:nowrap; }
713
+ .data-table th, .data-table td { border:1px solid var(--border); padding:7px 10px; text-align:left;
714
+ vertical-align:top; }
715
+ .data-table th { background:var(--surface2); white-space:nowrap; }
716
+ .data-table td.cell-main { max-width:280px; overflow:hidden; text-overflow:ellipsis;
717
+ white-space:nowrap; }
718
+ .data-table tbody tr:nth-child(even) { background:var(--surface2); }
719
+ .data-table tbody tr:hover { background:var(--primary-soft, #F3E4DC); }
720
+ .cite-badge { display:inline-block; margin-left:6px; padding:1px 7px; border-radius:999px; font-size:.66rem; border:1px solid var(--border); vertical-align:middle; }
721
+ .cite-badge.cite-ok { color:#166534; border-color:#16a34a55; background:rgba(22,163,74,.08); }
722
+ .cite-badge.cite-retracted { color:#991b1b; border-color:#dc262688; background:rgba(220,38,38,.10); font-weight:700; }
723
+ .raw-tag { display:inline-block; margin-left:6px; font-size:.68rem; color:var(--insufficient);
724
+ background:var(--surface2); border:1px solid var(--border); border-radius:4px;
725
+ padding:0 5px; vertical-align:1px; font-family:'SF Mono',Menlo,monospace; }
726
+ .num { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
727
+ .dir { display:inline-block; border-radius:999px; padding:1px 9px; font-size:.78rem; }
728
+ .dir.pos { background:var(--support); color:#fff; }
729
+ .dir.neg { background:var(--contradict); color:#fff; }
730
+ .dir.neu { background:var(--uncertain); color:#fff; }
731
+ .method-verdict { font-weight:700; }
732
+ .phase { border-left:3px solid var(--primary); padding:4px 0 4px 14px; margin:12px 0;
733
+ background:var(--surface2); border-radius:6px; }
734
+ .phase h3 { margin-top:4px; }
735
+ .conflict-card { border-left:3px solid var(--contradict); background:var(--surface2);
736
+ padding:10px 14px; margin:8px 0; border-radius:6px; }
737
+ .trace-row { margin:2px 0; font-size:.88rem; }
738
+ .trace-decision { font-weight:700; padding:4px 0; }
739
+ .trace-claim { margin-left:16px; padding:3px 0; }
740
+ .trace-evidence { margin-left:36px; color:var(--text); padding:2px 0; }
741
+ .chart-mount { display:none; width:100%; height:320px; margin-top:10px; }
742
+ .chart-mount.is-mounted { display:block; }
743
+ .chart-summary { color:var(--insufficient); font-size:.85rem; }
744
+ .academic-figure { margin:14px 0; }
745
+ .academic-figure svg { max-width:100%; height:auto; }
746
+ .academic-figure figcaption { font-size:.82rem; color:var(--insufficient); margin-top:6px; }
747
+ .matrix-tools { display:flex; gap:10px; flex-wrap:wrap; margin:8px 0; }
748
+ .matrix-tools input, .matrix-tools select { padding:5px 10px; font-size:.85rem;
749
+ border:1px solid var(--border); border-radius:6px; background:var(--surface); color:var(--text); }
750
+ .matrix-controls summary { cursor:pointer; color:var(--primary); font-size:.88rem; }
751
+ details.matrix-controls { margin-bottom:8px; }
752
+ code { font-family:'SF Mono',Menlo,monospace; font-size:.82em; background:var(--surface2);
753
+ padding:1px 4px; border-radius:4px; }
754
+ a { color:var(--primary); word-break:break-word; }
755
+ button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, summary:focus-visible {
756
+ outline:3px solid color-mix(in srgb, var(--primary) 45%, transparent); outline-offset:3px;
757
+ }
758
+ .generated-theme { font-size:.76rem; letter-spacing:.08em; text-transform:uppercase; color:var(--insufficient); margin-right:auto; }
759
+ .report-section { margin-bottom:clamp(28px,4vw,58px); }
760
+ .section-narrative { width:100%; max-width:820px; margin-left:auto; margin-right:auto; }
761
+ .section-data { width:100%; max-width:1180px; margin-left:auto; margin-right:auto; }
762
+ .section-decision { width:100%; max-width:1040px; margin-left:auto; margin-right:auto; }
763
+ .decision-hero { position:relative; overflow:hidden; padding:clamp(22px,4vw,42px); border:1px solid var(--border);
764
+ border-radius:calc(var(--radius) + 4px); background:var(--surface2); }
765
+ .hero-decision { display:flex; gap:12px 18px; flex-wrap:wrap; align-items:center; margin-bottom:18px; }
766
+ .eyebrow, .hero-insight>span, .action-node>span { display:block; font-size:.72rem; font-weight:700; letter-spacing:.08em;
767
+ text-transform:uppercase; color:var(--insufficient); }
768
+ .hero-rationale { max-width:860px; font-family:var(--font-head); font-size:clamp(1.05rem,2vw,1.35rem); line-height:1.5; margin:0 0 28px; }
769
+ .hero-insights { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
770
+ .hero-insight { min-height:112px; padding:16px 18px; border-top:2px solid var(--border); background:var(--surface); }
771
+ .hero-insight.support { border-top-color:var(--support); } .hero-insight.uncertain { border-top-color:var(--uncertain); }
772
+ .hero-insight.risk { border-top-color:var(--contradict); } .hero-insight.next { border-top-color:var(--primary); }
773
+ .hero-insight p { margin:7px 0 0; font-size:.94rem; }
774
+ .hero-provenance { margin:18px 0 0; color:var(--insufficient); font-size:.82rem; }
775
+ .visual-heading { max-width:760px; margin-bottom:18px; } .visual-heading h3 { font-size:1.15rem; margin-bottom:6px; }
776
+ .visual-heading p { color:var(--insufficient); margin:0; }
777
+ .outcome-separation { margin:10px 0 24px; }
778
+ .outcome-groups { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr)); gap:14px; }
779
+ .outcome-group { padding:16px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface2); }
780
+ .outcome-group h3 { margin:0 0 10px; } .outcome-group ul { list-style:none; margin:0; padding:0; }
781
+ .outcome-group li { display:flex; flex-direction:column; gap:7px; padding:9px 0; border-top:1px solid var(--border); }
782
+ .outcome-group li:first-child { border-top:0; } .outcome-states { display:flex; gap:6px; flex-wrap:wrap; }
783
+ .visual-surface { margin:22px 0; padding:16px; border:1px solid var(--border); background:var(--surface2); border-radius:var(--radius); }
784
+ .matrix-controls { margin:0 0 12px; } .matrix-tools { align-items:center; }
785
+ .matrix-tools input { min-width:min(360px,100%); flex:1; }
786
+ .evidence-matrix th:nth-child(1) { width:72px; } .evidence-matrix th:nth-child(3) { width:110px; }
787
+ .evidence-matrix th:nth-child(4) { width:130px; } .evidence-matrix th:nth-child(6) { width:92px; }
788
+ .claim-cell { min-width:320px; max-width:520px; } .claim-cell>p { margin:0 0 6px; }
789
+ .matrix-row-detail { font-size:.78rem; color:var(--insufficient); } .matrix-row-detail summary { color:var(--primary); cursor:pointer; }
790
+ .matrix-row-detail p { margin:4px 0; }
791
+ .quality-cell { display:flex; align-items:center; gap:8px; min-width:90px; }
792
+ .quality-meter { display:block; width:64px; height:5px; border-radius:99px; background:var(--border); overflow:hidden; }
793
+ .quality-meter i { display:block; height:100%; background:var(--primary); border-radius:inherit; }
794
+ .evidence-tribunal { margin-top:8px; } .tribunal-summary { margin:0 0 18px; }
795
+ .tribunal-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
796
+ .tribunal-card { padding:16px 18px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface2); }
797
+ .tribunal-card header { display:flex; gap:9px; align-items:center; } .tribunal-card header>span { font-weight:800; }
798
+ .tribunal-card.supported { border-top:3px solid var(--support); } .tribunal-card.uncertain { border-top:3px solid var(--uncertain); }
799
+ .tribunal-card.contradicted { border-top:3px solid var(--contradict); } .tribunal-card.missing { border-top:3px solid var(--insufficient); }
800
+ .tribunal-card ul { margin:10px 0 0; padding-left:18px; } .tribunal-card li { margin:7px 0; }
801
+ .supporting-visual { margin-top:16px; } .supporting-visual summary { cursor:pointer; color:var(--primary); }
802
+ .trace-chain { display:grid; gap:14px; } .trace-chain-card { padding:16px 18px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface2); }
803
+ .trace-claim-node p { margin:5px 0 0; } .trace-arrow { color:var(--insufficient); text-align:center; }
804
+ .trace-evidence-list { display:grid; gap:7px; } .trace-evidence-node { display:flex; flex-wrap:wrap; gap:7px 10px; align-items:center; padding:8px 10px; background:var(--surface); border-radius:var(--radius-sm); }
805
+ .evidence-to-action { display:flex; gap:10px; align-items:stretch; overflow-x:auto; padding:6px 0 20px; margin-bottom:22px; }
806
+ .action-node { flex:1 0 165px; padding:14px 15px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface2); }
807
+ .action-node p { margin:7px 0 0; font-size:.84rem; } .flow-arrow { align-self:center; color:var(--insufficient); }
808
+ .relation-note { display:block; margin-top:5px; font-size:.68rem; color:var(--insufficient); line-height:1.35; }
809
+ .semantic-note, .chart-interpretation { margin:9px 0 0; color:var(--insufficient); font-size:.82rem; }
810
+ .detail-expander { margin-top:7px; } .detail-expander>summary { cursor:pointer; color:var(--primary); font-size:.78rem; }
811
+ .detail-body { margin-top:8px; padding:10px 12px; border-left:2px solid var(--border); background:var(--surface2); }
812
+ .detail-body p { margin:0; white-space:normal; }
813
+ .evidence-detail-grid, .source-detail-grid { margin:10px 0 0; display:grid; grid-template-columns:minmax(120px,170px) 1fr; gap:0; }
814
+ .evidence-detail-row, .source-detail-row { display:contents; }
815
+ .evidence-detail-grid dt, .evidence-detail-grid dd, .source-detail-grid dt, .source-detail-grid dd { margin:0; padding:7px 8px; border-top:1px solid var(--border); }
816
+ .evidence-detail-grid dt, .source-detail-grid dt { color:var(--insufficient); font-size:.75rem; }
817
+ .evidence-detail-grid dd, .source-detail-grid dd { font-size:.8rem; overflow-wrap:anywhere; }
818
+ .tribunal-count { margin-left:auto; min-width:24px; height:24px; display:inline-grid; place-items:center; border-radius:999px; background:var(--surface); color:var(--insufficient); font-size:.72rem; }
819
+ .tribunal-evidence-refs { display:flex; gap:5px; flex-wrap:wrap; margin-top:5px; }
820
+ .tribunal-more>summary { margin-top:10px; cursor:pointer; color:var(--primary); font-size:.8rem; }
821
+ .method-review-group { margin:0 0 26px; }
822
+ .method-review-title { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; margin-bottom:12px; }
823
+ .method-review-title h3 { margin:0; }
824
+ .method-audit-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:10px; }
825
+ .method-audit-item { border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface2); padding:12px; }
826
+ .method-audit-head { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
827
+ .method-audit-item p { margin:7px 0 0; font-size:.82rem; } .method-status { font-size:.7rem; color:var(--insufficient); white-space:nowrap; }
828
+ .method-guard-wrap { margin-top:12px; padding:12px 14px; border-left:3px solid var(--primary); background:var(--surface2); }
829
+ .scope-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
830
+ .scope-card, .retrieval-grid>article, .retrieval-coverage, .boundary-block, .visual-suppressed { border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface2); padding:15px 16px; }
831
+ .scope-card h3, .retrieval-grid h3, .retrieval-coverage h3, .boundary-block h3 { margin:0 0 8px; }
832
+ .retrieval-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-bottom:12px; }
833
+ .retrieval-coverage code { margin-right:5px; }
834
+
835
+ /* Two-layer report shell: the content contract is shared by all five themes. */
836
+ .report-brand-row { display:flex; align-items:center; gap:10px; margin-bottom:10px; }
837
+ .report-brand { font-weight:750; letter-spacing:.02em; }
838
+ .generated-theme-chip { font-size:.7rem; color:var(--insufficient); border:1px solid var(--border); border-radius:999px; padding:2px 8px; }
839
+ .data-origin-chip { font-size:.7rem; border:1px solid var(--border); border-radius:999px; padding:2px 8px; color:var(--insufficient); margin-left:8px; overflow-wrap:anywhere; }
840
+ .data-origin-chip[data-origin="synthetic"], .data-origin-chip[data-origin="hybrid"] { border-color:#b45309; color:#92400e; background:rgba(217,119,6,.10); font-weight:600; }
841
+ .report-view-switcher { display:flex; gap:8px; margin-top:18px; }
842
+ .report-view-btn { border:1px solid var(--border); background:var(--surface); color:var(--text); border-radius:999px; padding:7px 14px; cursor:pointer; font-size:.82rem; }
843
+ .report-view-btn.active { background:var(--primary); border-color:var(--primary); color:#fff; }
844
+ .report-page[hidden] { display:none !important; }
845
+ .brief-block { width:100%; max-width:1040px; margin:0 auto clamp(42px,6vw,76px); }
846
+ .brief-block-header { max-width:760px; margin-bottom:22px; }
847
+ .brief-block-header h2 { margin:0 0 7px; font-family:var(--font-head); font-size:1.45rem; }
848
+ .brief-block-header p { margin:0; color:var(--insufficient); }
849
+ .brief-source-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
850
+ .brief-source { border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface2); padding:14px 15px; }
851
+ .brief-source h3 { margin:7px 0 4px; font-size:.9rem; } .brief-source p, .brief-source-more { color:var(--insufficient); font-size:.78rem; }
852
+ .full-report-intro { width:100%; max-width:900px; margin:0 auto 30px; }
853
+ .full-report-intro h2 { font-family:var(--font-head); margin:0 0 7px; font-size:1.8rem; }
854
+ .full-report-intro p { margin:0; color:var(--insufficient); }
855
+ .full-report-layout { position:relative; display:grid; width:100%; grid-template-columns:minmax(180px,240px) minmax(0,1fr); gap:clamp(24px,3vw,42px); align-items:start; }
856
+ /* 桌面双栏:内容列收口残余的行内可滚动溢出(clip 不产生滚动条也不破坏 sticky)。 */
857
+ @media (min-width:981px) { .full-report-content { overflow-x:clip; } }
858
+ .full-report-toc { position:sticky; top:18px; max-height:calc(100vh - 36px); overflow:auto; border-right:1px solid var(--border); padding-right:18px; }
859
+ .toc-head { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:12px; }
860
+ .toc-head strong { font-size:.78rem; text-transform:uppercase; letter-spacing:.08em; color:var(--insufficient); }
861
+ .toc-collapse { border:0; background:transparent; color:var(--primary); cursor:pointer; font-size:.72rem; padding:2px; }
862
+ .full-report-toc nav { display:grid; gap:4px; }
863
+ .full-report-toc a { display:block; color:var(--insufficient); text-decoration:none; padding:7px 8px; border-left:2px solid transparent; font-size:.8rem; line-height:1.4; }
864
+ .full-report-toc a.active { color:var(--text); border-left-color:var(--primary); background:var(--surface2); }
865
+ :root .full-report-layout.toc-collapsed { grid-template-columns:minmax(0,1fr); gap:0; }
866
+ .full-report-layout.toc-collapsed .full-report-toc nav, .full-report-layout.toc-collapsed .toc-head strong { display:none; }
867
+ .full-report-layout.toc-collapsed .full-report-toc { position:absolute; left:0; top:0; width:0; max-height:none; padding:0; border:0; overflow:visible; z-index:6; }
868
+ .full-report-layout.toc-collapsed .toc-head { margin:0; }
869
+ .full-report-layout.toc-collapsed .toc-collapse { position:sticky; top:18px; writing-mode:horizontal-tb; white-space:nowrap; border:1px solid var(--border); border-radius:999px; padding:7px 10px; background:var(--surface); box-shadow:var(--shadow); transform:translateX(-6px); }
870
+ .full-report-content { width:100%; min-width:0; max-width:960px; }
871
+ .full-report-layout.toc-collapsed .full-report-content { max-width:none; }
872
+ .full-chapter { scroll-margin-top:24px; padding:0 0 54px; margin:0 0 54px; border-bottom:1px solid var(--border); }
873
+ .full-chapter:last-child { border-bottom:0; }
874
+ .full-chapter-header { max-width:760px; margin-bottom:24px; }
875
+ .full-chapter-header h2 { margin:0 0 8px; font-family:var(--font-head); font-size:1.55rem; line-height:1.25; }
876
+ .full-chapter-lead { margin:0; color:var(--insufficient); }
877
+ .full-chapter-body>*+* { margin-top:20px; }
878
+ .report-footer { margin-top:64px; padding-top:18px; border-top:1px solid var(--border); color:var(--insufficient); font-size:.76rem; }
879
+
880
+ /* Lieflat gallery cards — AI-composed, data-driven charts.
881
+ Card four-piece set: conclusion title (700) + subtitle (legend, `·`
882
+ separated) + themed inline SVG + uppercase source line; caption optional.
883
+ Themes tune surface/radius/typography; identity lives in themes/*.css. */
884
+ .lieflat-gallery-container { display:flex; flex-direction:column; gap:22px; margin:6px 0 0; }
885
+ .lieflat-card { margin:0; padding:22px 24px 18px; border:1px solid var(--border);
886
+ border-radius:calc(var(--radius) + 6px); background:var(--surface);
887
+ box-shadow:var(--shadow); }
888
+ .lieflat-title { margin:0 0 8px; font-family:var(--font-head); font-size:1.12rem;
889
+ font-weight:700; line-height:1.35; }
890
+ .lieflat-sub { margin:0 0 14px; color:var(--insufficient); font-size:.85rem; line-height:1.55; }
891
+ .lieflat-figure svg { display:block; width:100%; height:auto; border:1px solid var(--border);
892
+ border-radius:var(--radius-sm); background:var(--surface2); }
893
+ .lieflat-caption { margin:10px 0 0; font-size:.8rem; color:var(--insufficient); line-height:1.5; }
894
+ .lieflat-src { margin:10px 0 0; font-size:.68rem; font-weight:600; letter-spacing:.08em;
895
+ text-transform:uppercase; color:var(--insufficient); }
896
+ .lieflat-suppressed { margin:0; padding:12px 16px; border:1px dashed var(--border);
897
+ border-radius:var(--radius-sm); background:var(--surface2);
898
+ font-size:.82rem; color:var(--insufficient); }
899
+ .lieflat-suppressed ul { margin:8px 0 0; padding-left:18px; }
900
+ .lieflat-suppressed li { margin:3px 0; }
901
+
902
+ @media print { body { background:#fff; } .controls, .report-view-switcher, .full-report-toc { display:none !important; }
903
+ .report-shell { max-width:none !important; padding:0 !important; }
904
+ .report-page-brief { display:none !important; } .report-page-full { display:block !important; }
905
+ .full-report-layout { display:block !important; } .full-report-content { max-width:none !important; }
906
+ .full-chapter { break-before:auto; break-inside:auto; }
907
+ .report-section { box-shadow:none !important; border:none !important; break-inside:avoid-page; }
908
+ .report-section svg { border:none; } .table-wrap { overflow:visible; }
909
+ .lieflat-card { box-shadow:none !important; break-inside:avoid; }
910
+ .lieflat-figure svg { border:none; }
911
+ details>summary { display:none !important; } details>*:not(summary) { display:block !important; }
912
+ .decision-hero, .tribunal-card, .trace-chain-card, .action-node, .method-audit-item { box-shadow:none !important; background:#fff !important; }
913
+ a { color:#000; text-decoration:underline; } }
914
+ @media (max-width:980px) {
915
+ /* 网格 item 收缩安全:阻止子内容 min-content 把 1fr 轨道撑破(移动端/平板横向裁切)。 */
916
+ .full-report-layout { grid-template-columns:minmax(0,1fr); gap:18px; }
917
+ .brief-block-body > *, .outcome-separation, .visual-surface,
918
+ .tribunal-grid > *, .hero-insights > *, .brief-source-grid > * { min-width:0; }
919
+ /* 章节直接子元素(table-wrap / evidence-to-action 等)默认 min-width:auto,
920
+ 会把来源表等宽内容的 min-content 一路传给 shell —— 显式放开收缩。
921
+ 注意用 .table-wrap .data-table 同强度选择器,否则压不过基座 nowrap。 */
922
+ .full-chapter-body > *, .table-wrap, .evidence-to-action { min-width:0; max-width:100%; }
923
+ .table-wrap .data-table th { white-space:normal; }
924
+ .table-wrap .data-table th, .table-wrap .data-table td { overflow-wrap:anywhere; word-break:break-word; }
925
+ /* 窄屏放弃 nowrap+省略号:让主单元格换行,否则行 min-content 撑破表格容器。 */
926
+ .table-wrap .data-table td.cell-main { white-space:normal; max-width:none; }
927
+ /* 定义网格/范围卡片里的 snake_case 枚举值(如 frame.json 的
928
+ first_programming_course_no_prior_text_based_programming)是不可断行长
929
+ token,必须允许任意断行,否则 min-content 直接撑破窄屏。 */
930
+ .scope-card, .scope-text, .scope-grid dt, .scope-grid dd,
931
+ .evidence-detail-grid dd, .source-detail-grid dd,
932
+ .retrieval-grid article, .retrieval-grid li { min-width:0;
933
+ overflow-wrap:anywhere; }
934
+ .full-report-toc { position:relative; top:auto; max-height:none; border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px; }
935
+ .full-report-toc nav { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
936
+ :root .full-report-layout.toc-collapsed { grid-template-columns:1fr; }
937
+ .full-report-layout.toc-collapsed .full-report-toc { position:relative; width:100%; padding:10px 12px; border:1px solid var(--border); }
938
+ .full-report-layout.toc-collapsed .toc-collapse { position:static; transform:none; padding:4px 8px; box-shadow:none; }
939
+ .full-report-layout.toc-collapsed .full-report-toc nav { display:none; }
940
+ }
941
+ @media (max-width:720px) {
942
+ .controls { width:calc(100% - 24px); margin-bottom:10px; padding-left:8px; padding-right:8px; }
943
+ .report-shell { width:100%; padding:12px 14px 56px; }
944
+ .report-header { width:100%; }
945
+ .report-header h1 { font-size:1.3rem; overflow-wrap:anywhere; }
946
+ .report-header .meta, .brief-source h3, .claim-cell, .detail-body, .source-detail-grid dd { overflow-wrap:anywhere; word-break:break-word; }
947
+ .data-table { font-size:.78rem; }
948
+ .hero-insights, .tribunal-grid, .scope-grid, .retrieval-grid, .brief-source-grid, .method-audit-grid { grid-template-columns:1fr; }
949
+ /* 网格收缩安全:1fr 轨道 min 改 0、auto-fit 轨道 min 随容器收缩(min(180px,100%)),
950
+ 阻断固定 px 最小值 -> min-content 爆炸 -> 移动端横向溢出 的链条。 */
951
+ .full-report-content, .full-chapter, .full-chapter-body, .brief-block-body,
952
+ .outcome-separation, .visual-surface, .report-page-full, .report-page-brief { min-width:0; }
953
+ .outcome-groups { grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr)); }
954
+ .report-view-switcher { width:100%; }
955
+ .report-view-btn { flex:1; min-height:42px; }
956
+ .lang-btn, .toc-collapse { min-height:40px; }
957
+ .lang-btn { min-width:46px; }
958
+ .detail-expander>summary, .matrix-controls summary, .supporting-visual summary, .tribunal-more>summary { padding:7px 0; min-height:38px; display:flex; align-items:center; }
959
+ .full-report-toc nav { grid-template-columns:1fr; }
960
+ .full-chapter { width:100%; margin-bottom:38px; padding-bottom:38px; }
961
+ .full-chapter-header, .brief-block-header, .visual-heading { max-width:100%; }
962
+ .evidence-detail-grid, .source-detail-grid { grid-template-columns:1fr; }
963
+ .evidence-detail-grid dt, .evidence-detail-grid dd,
964
+ .source-detail-grid dt, .source-detail-grid dd { min-width:0; overflow-wrap:anywhere; }
965
+ .evidence-detail-grid dt, .source-detail-grid dt { padding-bottom:2px; }
966
+ .evidence-detail-grid dd, .source-detail-grid dd { padding-top:2px; }
967
+ .decision-hero { padding:20px 16px; }
968
+ .section-data, .section-decision, .section-narrative { width:100%; max-width:100%; }
969
+ .visual-surface, .outcome-separation, .trace-chain { max-width:100%; }
970
+ .chart-mount { height:clamp(240px,62vw,320px); }
971
+ .evidence-to-action { flex-direction:column; overflow:visible; }
972
+ .flow-arrow { transform:rotate(90deg); }
973
+ .matrix-wrap { width:100%; border:0; overflow:visible; }
974
+ .evidence-matrix thead { display:none; }
975
+ .evidence-matrix, .evidence-matrix tbody, .evidence-matrix tr, .evidence-matrix td { display:block; width:100%; }
976
+ .evidence-matrix tr { border:1px solid var(--border); border-radius:var(--radius-sm); margin-bottom:12px; padding:10px; background:var(--surface); }
977
+ .evidence-matrix td { border:0; padding:5px 0; }
978
+ .claim-cell { min-width:0; max-width:none; }
979
+ }
980
+
981
+ /* EduEvidence Motion Template
982
+ Motion explains hierarchy only. It never changes evidence meaning or numeric state. */
983
+
984
+ .motion-ready [data-animate] {
985
+ opacity:0;
986
+ transform:translateY(10px);
987
+ transition:opacity .52s cubic-bezier(.22,.61,.36,1),
988
+ transform .52s cubic-bezier(.22,.61,.36,1);
989
+ transition-delay:var(--motion-delay,0ms);
990
+ }
991
+ .motion-ready [data-animate].is-visible { opacity:1; transform:none; }
992
+
993
+ .motion-ready .quality-meter i,
994
+ .motion-ready .balance-track i {
995
+ transform:scaleX(0);
996
+ transform-origin:left center;
997
+ transition:transform .72s cubic-bezier(.22,.61,.36,1) var(--motion-delay,0ms);
998
+ }
999
+ .motion-ready .quality-meter.is-visible i,
1000
+ .motion-ready .balance-track.is-visible i { transform:scaleX(1); }
1001
+
1002
+ .motion-ready .flow-arrow {
1003
+ opacity:.18;
1004
+ transform:translateX(-4px);
1005
+ transition:opacity .36s ease, transform .36s ease;
1006
+ transition-delay:var(--motion-delay,0ms);
1007
+ }
1008
+ .motion-ready .flow-arrow.is-visible { opacity:1; transform:none; }
1009
+
1010
+ .motion-ready .detail-expander[open] .detail-body {
1011
+ animation:eduevidenceDetailReveal .24s cubic-bezier(.22,.61,.36,1) both;
1012
+ }
1013
+ @keyframes eduevidenceDetailReveal {
1014
+ from { opacity:0; transform:translateY(-4px); }
1015
+ to { opacity:1; transform:none; }
1016
+ }
1017
+
1018
+ .motion-ready .report-page:not([hidden]) {
1019
+ animation:eduevidencePageReveal .24s cubic-bezier(.22,.61,.36,1) both;
1020
+ }
1021
+ @keyframes eduevidencePageReveal {
1022
+ from { opacity:0; transform:translateY(4px); }
1023
+ to { opacity:1; transform:none; }
1024
+ }
1025
+
1026
+ .motion-ready .full-report-toc a {
1027
+ transition:color .18s ease, background-color .18s ease,
1028
+ border-color .18s ease, box-shadow .18s ease;
1029
+ }
1030
+
1031
+ /* ────────────────────────────────────────────────────────────────────────
1032
+ data-lieflat gallery reveal — aligned with the Lieflat mono-tokens spec:
1033
+ lf-pop scale 0→1, cubic-bezier(.2,.7,.3,1.3), 500ms (quarticOut family)
1034
+ lf-fade 900ms ease
1035
+ lf-draw dasharray 1, 1s cubic-bezier(.4,0,.2,1)
1036
+ --motion-delay inline variable carries the per-element stagger
1037
+ (dot matrices 8–15ms, bars 80–130ms — set by the renderer).
1038
+ Gated by .js-lf (added by motion.js only when JS runs and motion is not
1039
+ reduced): without JS everything stays visible — static-first, never broken.
1040
+ .is-live on the [data-lieflat] card starts the one-shot reveal; removing
1041
+ and re-adding it replays (click-to-replay, timers cleared by motion.js).
1042
+ ──────────────────────────────────────────────────────────────────────── */
1043
+ .js-lf [data-lieflat] .lf-pop,
1044
+ .js-lf [data-lieflat] .lf-fade,
1045
+ .js-lf [data-lieflat] .lf-draw { opacity:0; }
1046
+ .js-lf [data-lieflat] .lf-draw { stroke-dasharray:1; stroke-dashoffset:1; }
1047
+
1048
+ .js-lf [data-lieflat].is-live .lf-pop {
1049
+ opacity:1;
1050
+ transform-box:fill-box;
1051
+ transform-origin:center;
1052
+ animation:eduevidenceLfPop .5s cubic-bezier(.2,.7,.3,1.3) both;
1053
+ animation-delay:var(--motion-delay,0ms);
1054
+ }
1055
+ .js-lf [data-lieflat].is-live .lf-fade {
1056
+ opacity:1;
1057
+ animation:eduevidenceLfFade .9s ease both;
1058
+ animation-delay:var(--motion-delay,0ms);
1059
+ }
1060
+ .js-lf [data-lieflat].is-live .lf-draw {
1061
+ animation:eduevidenceLfDraw 1s cubic-bezier(.4,0,.2,1) both;
1062
+ animation-delay:var(--motion-delay,0ms);
1063
+ }
1064
+ @keyframes eduevidenceLfPop {
1065
+ from { transform:scale(0); opacity:0; }
1066
+ to { transform:none; opacity:1; }
1067
+ }
1068
+ @keyframes eduevidenceLfFade {
1069
+ from { opacity:0; }
1070
+ to { opacity:1; }
1071
+ }
1072
+ @keyframes eduevidenceLfDraw {
1073
+ to { stroke-dashoffset:0; }
1074
+ }
1075
+
1076
+ .js-lf [data-lieflat] { cursor:pointer; }
1077
+
1078
+ @media (hover:hover) {
1079
+ .motion-ready .tribunal-card:hover,
1080
+ .motion-ready .trace-chain-card:hover,
1081
+ .motion-ready .outcome-group:hover,
1082
+ .motion-ready .action-node:hover,
1083
+ .motion-ready .method-audit-item:hover {
1084
+ transform:translateY(-2px);
1085
+ }
1086
+ .motion-ready .evidence-matrix tbody tr:hover .dir {
1087
+ transform:translateY(-1px);
1088
+ filter:saturate(1.08);
1089
+ }
1090
+ }
1091
+
1092
+ @media (prefers-reduced-motion:reduce) {
1093
+ .motion-ready [data-animate],
1094
+ .motion-ready .quality-meter i,
1095
+ .motion-ready .balance-track i,
1096
+ .motion-ready .flow-arrow,
1097
+ .motion-ready .dir,
1098
+ .motion-ready .detail-body,
1099
+ .motion-ready .report-page,
1100
+ .motion-ready .full-report-toc a {
1101
+ opacity:1 !important;
1102
+ transform:none !important;
1103
+ transition:none !important;
1104
+ animation:none !important;
1105
+ }
1106
+ .js-lf [data-lieflat] .lf-pop,
1107
+ .js-lf [data-lieflat] .lf-fade {
1108
+ opacity:1 !important;
1109
+ transform:none !important;
1110
+ animation:none !important;
1111
+ }
1112
+ .js-lf [data-lieflat] .lf-draw {
1113
+ opacity:1 !important;
1114
+ animation:none !important;
1115
+ stroke-dasharray:none !important;
1116
+ stroke-dashoffset:0 !important;
1117
+ }
1118
+ html { scroll-behavior:auto; }
1119
+ }
1120
+
1121
+ @media print {
1122
+ [data-animate], .quality-meter i, .balance-track i, .flow-arrow {
1123
+ opacity:1 !important;
1124
+ transform:none !important;
1125
+ transition:none !important;
1126
+ animation:none !important;
1127
+ }
1128
+ [data-lieflat] .lf-pop,
1129
+ [data-lieflat] .lf-fade,
1130
+ [data-lieflat] .lf-draw {
1131
+ opacity:1 !important;
1132
+ transform:none !important;
1133
+ animation:none !important;
1134
+ stroke-dasharray:none !important;
1135
+ stroke-dashoffset:0 !important;
1136
+ }
1137
+ }
1138
+
1139
+ /* Reading system: shared semantics; the five original theme identities remain. */
1140
+ :root {
1141
+ --reader-line: color-mix(in srgb, var(--text) 14%, transparent);
1142
+ --reader-muted: color-mix(in srgb, var(--text) 74%, var(--bg));
1143
+ }
1144
+ html {
1145
+ scroll-padding-top: 100px;
1146
+ }
1147
+ html,
1148
+ body {
1149
+ overflow-x: clip;
1150
+ }
1151
+ button,
1152
+ a,
1153
+ input,
1154
+ select,
1155
+ summary {
1156
+ -webkit-tap-highlight-color: transparent;
1157
+ }
1158
+ button:focus-visible,
1159
+ a:focus-visible,
1160
+ summary:focus-visible,
1161
+ input:focus-visible,
1162
+ select:focus-visible,
1163
+ [tabindex]:focus-visible {
1164
+ outline: 2px solid var(--primary);
1165
+ outline-offset: 4px;
1166
+ }
1167
+ .reader-progress {
1168
+ position: fixed;
1169
+ top: 0;
1170
+ left: 0;
1171
+ right: 0;
1172
+ height: 3px;
1173
+ z-index: 80;
1174
+ pointer-events: none;
1175
+ }
1176
+ .reader-progress > span {
1177
+ display: block;
1178
+ width: 100%;
1179
+ height: 100%;
1180
+ background: var(--primary);
1181
+ transform: scaleX(0);
1182
+ transform-origin: left;
1183
+ }
1184
+ :root[data-theme] .controls.reader-toolbar {
1185
+ position: sticky;
1186
+ top: 0;
1187
+ z-index: 60;
1188
+ display: flex;
1189
+ justify-content: space-between;
1190
+ gap: 16px;
1191
+ align-items: center;
1192
+ width: 100%;
1193
+ max-width: none;
1194
+ min-height: 70px;
1195
+ margin: 0;
1196
+ padding: 12px clamp(18px, 4vw, 60px);
1197
+ border: 0;
1198
+ border-bottom: 1px solid var(--reader-line);
1199
+ border-radius: 0;
1200
+ background: var(--bg);
1201
+ box-shadow: none;
1202
+ backdrop-filter: none;
1203
+ }
1204
+ .reader-home {
1205
+ display: flex;
1206
+ align-items: center;
1207
+ gap: 14px;
1208
+ color: var(--text);
1209
+ text-decoration: none;
1210
+ font-family: var(--font-head);
1211
+ font-size: 17px;
1212
+ font-weight: 600;
1213
+ }
1214
+ .reader-home .generated-theme {
1215
+ font: 10px var(--font-ui);
1216
+ letter-spacing: 0.03em;
1217
+ font-weight: 400;
1218
+ color: var(--reader-muted);
1219
+ padding-left: 14px;
1220
+ border-left: 1px solid var(--reader-line);
1221
+ }
1222
+ .reader-tools,
1223
+ .reader-view-controls {
1224
+ display: flex;
1225
+ align-items: center;
1226
+ gap: 8px;
1227
+ }
1228
+ .reader-tools .lang-switcher {
1229
+ gap: 4px;
1230
+ }
1231
+ .reader-tools .lang-switcher > span {
1232
+ display: none;
1233
+ }
1234
+ .reader-print {
1235
+ font: 12px var(--font-ui);
1236
+ padding: 7px 10px;
1237
+ background: transparent;
1238
+ color: var(--text);
1239
+ border: 1px solid var(--reader-line);
1240
+ border-radius: var(--radius-sm);
1241
+ cursor: pointer;
1242
+ }
1243
+ .reader-view-controls {
1244
+ padding: 3px;
1245
+ background: var(--surface2);
1246
+ border: 1px solid var(--reader-line);
1247
+ border-radius: var(--radius-sm);
1248
+ }
1249
+ :root[data-theme] .reader-view-controls .report-view-btn {
1250
+ margin: 0;
1251
+ border: 0;
1252
+ border-radius: calc(var(--radius-sm) / 2);
1253
+ background: transparent;
1254
+ color: var(--reader-muted);
1255
+ padding: 7px 14px;
1256
+ font: 12px var(--font-ui);
1257
+ min-height: 32px;
1258
+ cursor: pointer;
1259
+ }
1260
+ :root[data-theme] .reader-view-controls .report-view-btn.active {
1261
+ background: var(--surface);
1262
+ color: var(--text);
1263
+ box-shadow: 0 1px 3px #0000000a;
1264
+ }
1265
+ :root[data-theme] .report-shell {
1266
+ padding-top: 52px;
1267
+ padding-bottom: 80px;
1268
+ }
1269
+ :root[data-theme] .report-header {
1270
+ width: 100%;
1271
+ max-width: 100%;
1272
+ margin: 0 auto 36px;
1273
+ border-bottom: 1px solid var(--reader-line);
1274
+ padding: 0 0 30px;
1275
+ background: transparent;
1276
+ box-shadow: none;
1277
+ border-top: 0;
1278
+ border-left: 0;
1279
+ border-right: 0;
1280
+ border-radius: 0;
1281
+ }
1282
+ :root[data-theme] .report-header h1 {
1283
+ font-size: clamp(1.65rem, 2.7vw, 2.55rem);
1284
+ line-height: 1.43;
1285
+ letter-spacing: -0.02em;
1286
+ max-width: 1020px;
1287
+ text-wrap: pretty;
1288
+ margin: 18px 0;
1289
+ font-weight: 500;
1290
+ }
1291
+ :root[data-theme] .report-brand-row {
1292
+ gap: 12px;
1293
+ }
1294
+ .report-brand {
1295
+ font-size: 11px;
1296
+ letter-spacing: 0.12em;
1297
+ }
1298
+ :root[data-theme] .generated-theme-chip {
1299
+ display: none;
1300
+ }
1301
+ :root[data-theme] .data-origin-chip {
1302
+ font-size: 10px;
1303
+ font-family: var(--font-ui);
1304
+ font-weight: 400;
1305
+ background: var(--surface2);
1306
+ border: 1px solid var(--reader-line);
1307
+ color: var(--reader-muted);
1308
+ border-radius: var(--radius-sm);
1309
+ }
1310
+ :root[data-theme] .report-header .meta {
1311
+ font: 12px/1.9 var(--font-ui);
1312
+ color: var(--reader-muted);
1313
+ margin: 0;
1314
+ }
1315
+ :root[data-theme] .report-header .report-view-switcher {
1316
+ display: none;
1317
+ }
1318
+ :root[data-theme] .report-page-brief {
1319
+ display: grid;
1320
+ grid-template-columns: 160px minmax(0, 1fr);
1321
+ gap: 40px;
1322
+ align-items: start;
1323
+ }
1324
+ :root[data-theme] .report-page[hidden] {
1325
+ display: none !important;
1326
+ }
1327
+ .brief-navigation {
1328
+ position: sticky;
1329
+ top: 102px;
1330
+ display: flex;
1331
+ flex-direction: column;
1332
+ gap: 6px;
1333
+ font: 12px/1.6 var(--font-ui);
1334
+ padding-top: 8px;
1335
+ }
1336
+ .brief-navigation a {
1337
+ display: flex;
1338
+ gap: 10px;
1339
+ color: var(--reader-muted);
1340
+ text-decoration: none;
1341
+ padding: 10px 8px;
1342
+ border-left: 2px solid transparent;
1343
+ }
1344
+ .brief-navigation a > span {
1345
+ flex: 0 0 auto;
1346
+ min-width: 18px;
1347
+ white-space: nowrap;
1348
+ font: 10px/1.9 var(--font-mono);
1349
+ opacity: 0.8;
1350
+ }
1351
+ .brief-navigation a:hover,
1352
+ .brief-navigation a.active {
1353
+ color: var(--primary);
1354
+ background: var(--surface2);
1355
+ border-left-color: var(--primary);
1356
+ }
1357
+ .brief-reading-content {
1358
+ min-width: 0;
1359
+ }
1360
+ :root[data-theme] .brief-block {
1361
+ max-width: none;
1362
+ width: 100%;
1363
+ margin: 0 0 60px;
1364
+ border: 0;
1365
+ padding: 0;
1366
+ box-shadow: none;
1367
+ background: transparent;
1368
+ grid-column: auto;
1369
+ }
1370
+ :root[data-theme] .brief-block-header {
1371
+ max-width: none;
1372
+ padding: 0 0 16px;
1373
+ margin: 0 0 22px;
1374
+ border-bottom: 1px solid var(--reader-line);
1375
+ }
1376
+ :root[data-theme] .brief-block-header h2 {
1377
+ font-family: var(--font-head);
1378
+ font-size: 1.35rem;
1379
+ font-weight: 500;
1380
+ margin: 0 0 7px;
1381
+ }
1382
+ :root[data-theme] .brief-block-header p {
1383
+ font-size: 13px;
1384
+ line-height: 1.85;
1385
+ max-width: 76ch;
1386
+ color: var(--reader-muted);
1387
+ }
1388
+ :root[data-theme] .brief-block .brief-block-body {
1389
+ width: 100%;
1390
+ margin: 0;
1391
+ transform: none;
1392
+ }
1393
+ :root[data-theme] .brief-decision .brief-block-header {
1394
+ display: none;
1395
+ }
1396
+ :root[data-theme] .decision-hero {
1397
+ padding: 26px;
1398
+ border: 1px solid var(--reader-line);
1399
+ border-radius: var(--radius);
1400
+ background: var(--surface);
1401
+ box-shadow: none;
1402
+ }
1403
+ :root[data-theme] .hero-decision {
1404
+ align-items: center;
1405
+ gap: 10px 16px;
1406
+ flex-wrap: wrap;
1407
+ }
1408
+ :root[data-theme] .hero-decision .eyebrow {
1409
+ font-size: 10px;
1410
+ letter-spacing: 0.1em;
1411
+ color: var(--reader-muted);
1412
+ }
1413
+ :root[data-theme] .decision-value {
1414
+ font-size: 1.65rem;
1415
+ line-height: 1.35;
1416
+ }
1417
+ :root[data-theme] .confidence-badge {
1418
+ font-size: 11px;
1419
+ color: var(--text);
1420
+ border: 1px solid var(--reader-line);
1421
+ background: var(--uncertain-soft, var(--surface2));
1422
+ padding: 4px 9px;
1423
+ }
1424
+ :root[data-theme] .hero-rationale {
1425
+ font-size: 14px;
1426
+ line-height: 1.9;
1427
+ margin: 20px 0;
1428
+ max-width: 78ch;
1429
+ }
1430
+ :root[data-theme] .hero-insights {
1431
+ display: grid;
1432
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1433
+ gap: 0;
1434
+ border: 0;
1435
+ border-top: 1px solid var(--reader-line);
1436
+ }
1437
+ :root[data-theme] .hero-insight {
1438
+ border: 0;
1439
+ border-radius: 0;
1440
+ padding: 20px 0 12px;
1441
+ min-height: 0;
1442
+ background: transparent;
1443
+ box-shadow: none;
1444
+ }
1445
+ :root[data-theme] .hero-insight:nth-child(2n + 1) {
1446
+ padding-right: 22px;
1447
+ }
1448
+ :root[data-theme] .hero-insight:nth-child(2n) {
1449
+ padding-left: 22px;
1450
+ border-left: 1px solid var(--reader-line);
1451
+ }
1452
+ :root[data-theme] .hero-insight > span {
1453
+ font: 11px/1.6 var(--font-ui);
1454
+ letter-spacing: 0.03em;
1455
+ color: var(--reader-muted);
1456
+ margin-bottom: 9px;
1457
+ }
1458
+ :root[data-theme] .hero-insight-text {
1459
+ font-size: 13px;
1460
+ line-height: 1.85;
1461
+ }
1462
+ :root[data-theme] .hero-provenance {
1463
+ border-top: 1px solid var(--reader-line);
1464
+ padding-top: 16px;
1465
+ margin-bottom: 0;
1466
+ font-size: 11px;
1467
+ color: var(--reader-muted);
1468
+ }
1469
+ :root[data-theme] .tribunal-grid {
1470
+ display: grid;
1471
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1472
+ gap: 14px;
1473
+ }
1474
+ :root[data-theme] .tribunal-card {
1475
+ border: 1px solid var(--reader-line);
1476
+ border-top: 2px solid var(--border);
1477
+ padding: 20px;
1478
+ border-radius: var(--radius-sm);
1479
+ box-shadow: none;
1480
+ }
1481
+ :root[data-theme] .tribunal-card.supported {
1482
+ border-top-color: var(--support);
1483
+ }
1484
+ :root[data-theme] .tribunal-card.uncertain,
1485
+ :root[data-theme] .tribunal-card.missing {
1486
+ border-top-color: var(--uncertain);
1487
+ }
1488
+ :root[data-theme] .tribunal-card.contradicted {
1489
+ border-top-color: var(--contradict);
1490
+ }
1491
+ :root[data-theme] .tribunal-card p {
1492
+ line-height: 1.9;
1493
+ }
1494
+ .tribunal-card li + li {
1495
+ margin-top: 12px;
1496
+ }
1497
+ :root[data-theme] .dir {
1498
+ border-radius: var(--radius-sm);
1499
+ font-size: 11px;
1500
+ border: 1px solid var(--reader-line);
1501
+ }
1502
+ :root[data-theme] .dir.pos {
1503
+ background: color-mix(in srgb, var(--support) 14%, var(--surface));
1504
+ color: var(--text);
1505
+ }
1506
+ :root[data-theme] .dir.neg {
1507
+ background: color-mix(in srgb, var(--contradict) 14%, var(--surface));
1508
+ color: var(--text);
1509
+ }
1510
+ :root[data-theme] .dir.neu {
1511
+ background: color-mix(in srgb, var(--uncertain) 14%, var(--surface));
1512
+ color: var(--text);
1513
+ }
1514
+ :root[data-theme] .full-report-layout {
1515
+ display: grid;
1516
+ grid-template-columns: 180px minmax(0, 1fr);
1517
+ gap: 36px;
1518
+ }
1519
+ :root[data-theme] .full-report-intro {
1520
+ margin: 0 0 30px 216px;
1521
+ max-width: none;
1522
+ }
1523
+ :root[data-theme] .full-report-toc {
1524
+ top: 102px;
1525
+ max-height: calc(100vh - 125px);
1526
+ overflow-y: auto;
1527
+ }
1528
+ :root[data-theme] .full-report-content {
1529
+ min-width: 0;
1530
+ width: 100%;
1531
+ max-width: none;
1532
+ overflow-wrap: anywhere;
1533
+ }
1534
+ :root[data-theme] .report-section {
1535
+ margin-bottom: 56px;
1536
+ }
1537
+ .report-section {
1538
+ scroll-margin-top: 100px;
1539
+ }
1540
+ :root[data-theme] .full-report-content .section-data > .table-wrap,
1541
+ :root[data-theme] .full-report-content .section-data > .matrix-controls,
1542
+ :root[data-theme] .full-report-content .section-data > .trace-chain,
1543
+ :root[data-theme] .full-report-content .section-data > .outcome-separation {
1544
+ width: 100%;
1545
+ margin-left: 0;
1546
+ transform: none;
1547
+ }
1548
+ :root[data-theme] .report-section p,
1549
+ :root[data-theme] .report-section li {
1550
+ line-height: 1.9;
1551
+ }
1552
+ :root[data-theme] .table-wrap {
1553
+ border: 1px solid var(--reader-line);
1554
+ border-radius: var(--radius-sm);
1555
+ overflow-x: auto;
1556
+ overscroll-behavior-inline: contain;
1557
+ }
1558
+ :root[data-theme] .data-table {
1559
+ font-size: 12px;
1560
+ line-height: 1.75;
1561
+ }
1562
+ :root[data-theme] .data-table th {
1563
+ font-size: 11px;
1564
+ font-weight: 600;
1565
+ color: var(--reader-muted);
1566
+ }
1567
+ :root[data-theme] .data-table td,
1568
+ :root[data-theme] .data-table th {
1569
+ border-color: var(--reader-line);
1570
+ padding: 12px;
1571
+ }
1572
+ :root[data-theme] .matrix-controls input,
1573
+ :root[data-theme] .matrix-controls select {
1574
+ background: var(--surface);
1575
+ color: var(--text);
1576
+ border: 1px solid var(--reader-line);
1577
+ border-radius: var(--radius-sm);
1578
+ padding: 10px 12px;
1579
+ font: 12px var(--font-ui);
1580
+ max-width: 100%;
1581
+ }
1582
+ .reader-filter-count {
1583
+ font: 11px var(--font-mono);
1584
+ padding: 8px 0;
1585
+ color: var(--reader-muted);
1586
+ }
1587
+ :root[data-theme] .detail-expander summary,
1588
+ :root[data-theme] .expandable-text summary {
1589
+ font-size: 12px;
1590
+ cursor: pointer;
1591
+ }
1592
+ :root[data-theme] .lieflat-suppressed {
1593
+ font-size: 11px;
1594
+ color: var(--reader-muted);
1595
+ padding: 14px;
1596
+ }
1597
+ :root[data-theme] .lieflat-suppressed ul {
1598
+ margin-bottom: 0;
1599
+ }
1600
+ :root[data-theme] .brief-source {
1601
+ padding: 18px;
1602
+ border: 1px solid var(--reader-line);
1603
+ border-radius: var(--radius-sm);
1604
+ }
1605
+ :root[data-theme] .brief-source h3 {
1606
+ font-size: 14px;
1607
+ line-height: 1.7;
1608
+ }
1609
+ :root[data-theme] .report-footer {
1610
+ margin-top: 44px;
1611
+ font-size: 11px;
1612
+ line-height: 1.8;
1613
+ color: var(--reader-muted);
1614
+ }
1615
+ :root[data-theme="datalab"] .report-page-brief,
1616
+ :root[data-theme="datalab-dark"] .report-page-brief {
1617
+ grid-template-columns: 190px minmax(0, 1fr);
1618
+ }
1619
+
1620
+ :root[data-theme="academic"] .controls.reader-toolbar {
1621
+ font-family: var(--font-ui);
1622
+ border-bottom: 1px solid #222;
1623
+ }
1624
+ :root[data-theme="academic"] .report-header {
1625
+ border-bottom: 2px solid #222;
1626
+ padding-bottom: 24px;
1627
+ }
1628
+ :root[data-theme="academic"] .report-header h1 {
1629
+ font-size: clamp(1.5rem, 2.5vw, 2.1rem);
1630
+ text-align: center;
1631
+ }
1632
+ :root[data-theme="academic"] .report-shell {
1633
+ max-width: 1200px;
1634
+ }
1635
+ :root[data-theme="academic"] .brief-block-header h2 {
1636
+ font-variant: small-caps;
1637
+ }
1638
+ :root[data-theme="academic"] .hero-insight,
1639
+ :root[data-theme="academic"] .tribunal-card {
1640
+ font-family: var(--font-ui);
1641
+ }
1642
+ :root[data-theme="academic"] .decision-hero {
1643
+ border-color: #444;
1644
+ }
1645
+ :root[data-theme="datalab"] .report-shell,
1646
+ :root[data-theme="datalab-dark"] .report-shell {
1647
+ max-width: 1440px;
1648
+ }
1649
+ :root[data-theme="datalab"] .brief-block,
1650
+ :root[data-theme="datalab-dark"] .brief-block {
1651
+ margin-bottom: 36px;
1652
+ }
1653
+ :root[data-theme="datalab"] .brief-block-header h2,
1654
+ :root[data-theme="datalab-dark"] .brief-block-header h2 {
1655
+ font-size: 1.14rem;
1656
+ font-weight: 600;
1657
+ }
1658
+ :root[data-theme="datalab"] .brief-navigation,
1659
+ :root[data-theme="datalab-dark"] .brief-navigation {
1660
+ border: 1px solid var(--reader-line);
1661
+ border-radius: var(--radius-sm);
1662
+ padding: 8px;
1663
+ background: var(--surface);
1664
+ }
1665
+ :root[data-theme="presentation"] .report-shell {
1666
+ max-width: 1320px;
1667
+ }
1668
+ :root[data-theme="presentation"] .report-header h1 {
1669
+ font-size: clamp(1.85rem, 3.5vw, 3rem);
1670
+ line-height: 1.4;
1671
+ max-width: 1000px;
1672
+ }
1673
+ :root[data-theme="presentation"] .brief-decision .decision-hero {
1674
+ padding: 36px;
1675
+ border-left: 3px solid var(--primary);
1676
+ }
1677
+ :root[data-theme="presentation"] .decision-value {
1678
+ font-size: 2.1rem;
1679
+ }
1680
+ :root[data-theme="presentation"] .brief-block {
1681
+ margin-bottom: 72px;
1682
+ }
1683
+ :root[data-theme="presentation"] .brief-block-header h2 {
1684
+ font-size: 1.7rem;
1685
+ }
1686
+ @media (max-width: 1050px) {
1687
+ :root[data-theme] .report-page-brief {
1688
+ grid-template-columns: minmax(0, 1fr);
1689
+ gap: 24px;
1690
+ }
1691
+ .brief-navigation {
1692
+ position: static;
1693
+ flex-direction: row;
1694
+ flex-wrap: wrap;
1695
+ gap: 3px;
1696
+ padding: 0;
1697
+ }
1698
+ .brief-navigation a {
1699
+ border-left: 0;
1700
+ border-bottom: 2px solid transparent;
1701
+ padding: 8px;
1702
+ font-size: 11px;
1703
+ }
1704
+ .brief-navigation a.active {
1705
+ border-bottom-color: var(--primary);
1706
+ border-left: 0;
1707
+ }
1708
+ :root[data-theme] .full-report-layout {
1709
+ grid-template-columns: minmax(0, 1fr);
1710
+ gap: 24px;
1711
+ }
1712
+ :root[data-theme] .full-report-intro {
1713
+ margin: 0 0 24px;
1714
+ }
1715
+ :root[data-theme] .full-report-toc {
1716
+ position: static;
1717
+ max-height: none;
1718
+ }
1719
+ .reader-home .generated-theme {
1720
+ display: none;
1721
+ }
1722
+ }
1723
+ @media (max-width: 640px) {
1724
+ :root[data-theme] .controls.reader-toolbar {
1725
+ gap: 8px;
1726
+ min-height: 60px;
1727
+ padding: 10px 12px;
1728
+ flex-wrap: wrap;
1729
+ }
1730
+ .reader-home {
1731
+ font-size: 14px;
1732
+ }
1733
+ .reader-print {
1734
+ display: none;
1735
+ }
1736
+ :root[data-theme] .reader-view-controls .report-view-btn {
1737
+ font-size: 11px;
1738
+ padding: 5px 8px;
1739
+ }
1740
+ .reader-tools .lang-btn {
1741
+ padding: 5px 8px;
1742
+ min-height: 32px;
1743
+ }
1744
+ :root[data-theme] .report-shell {
1745
+ padding: 28px 16px 60px;
1746
+ }
1747
+ :root[data-theme] .report-header {
1748
+ padding-bottom: 22px;
1749
+ margin-bottom: 20px;
1750
+ }
1751
+ :root[data-theme] .report-header h1 {
1752
+ font-size: 1.6rem;
1753
+ line-height: 1.5;
1754
+ margin: 14px 0;
1755
+ }
1756
+ :root[data-theme] .report-header .meta {
1757
+ font-size: 11px;
1758
+ }
1759
+ :root[data-theme] .decision-hero,
1760
+ :root[data-theme="presentation"] .brief-decision .decision-hero {
1761
+ padding: 20px 18px;
1762
+ }
1763
+ :root[data-theme] .hero-insights {
1764
+ grid-template-columns: minmax(0, 1fr);
1765
+ }
1766
+ :root[data-theme] .hero-insight:nth-child(n) {
1767
+ padding: 16px 0;
1768
+ border: 0;
1769
+ border-bottom: 1px solid var(--reader-line);
1770
+ }
1771
+ :root[data-theme] .hero-insight:last-child {
1772
+ border: 0;
1773
+ }
1774
+ :root[data-theme] .hero-insight-text {
1775
+ font-size: 13px;
1776
+ }
1777
+ :root[data-theme] .tribunal-grid {
1778
+ grid-template-columns: minmax(0, 1fr);
1779
+ }
1780
+ :root[data-theme] .brief-block {
1781
+ margin-bottom: 40px;
1782
+ }
1783
+ :root[data-theme] .report-section {
1784
+ margin-bottom: 40px;
1785
+ }
1786
+ :root[data-theme] .brief-source {
1787
+ padding: 16px;
1788
+ }
1789
+ :root[data-theme] .report-page-brief {
1790
+ gap: 20px;
1791
+ }
1792
+ .brief-navigation a {
1793
+ padding: 7px 6px;
1794
+ font-size: 10px;
1795
+ }
1796
+ .brief-navigation a > span {
1797
+ display: none;
1798
+ }
1799
+ }
1800
+ @media (max-width: 359px) {
1801
+ .reader-home {
1802
+ display: none;
1803
+ }
1804
+ :root[data-theme] .report-header h1 {
1805
+ font-size: 1.45rem;
1806
+ }
1807
+ }
1808
+ @media (prefers-reduced-motion: reduce) {
1809
+ html {
1810
+ scroll-behavior: auto;
1811
+ }
1812
+ .reader-progress > span {
1813
+ transition: none;
1814
+ }
1815
+ }
1816
+ @media print {
1817
+ .reader-toolbar,
1818
+ .reader-progress,
1819
+ .brief-navigation,
1820
+ .reader-filter-count,
1821
+ .reader-print {
1822
+ display: none !important;
1823
+ }
1824
+ :root[data-theme] .report-shell {
1825
+ max-width: none;
1826
+ padding: 0;
1827
+ }
1828
+ :root[data-theme] .report-page-brief {
1829
+ display: block;
1830
+ }
1831
+ :root[data-theme] .hero-insights {
1832
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1833
+ }
1834
+ :root[data-theme] .brief-block {
1835
+ break-inside: auto;
1836
+ }
1837
+ details .detail-body {
1838
+ display: block;
1839
+ }
1840
+ }
1841
+ .reader-view-controls,
1842
+ .reader-tools,
1843
+ .reader-tools .lang-switcher {
1844
+ flex-shrink: 0;
1845
+ }
1846
+ :root[data-theme] .reader-view-controls .report-view-btn {
1847
+ white-space: nowrap;
1848
+ }
1849
+ @media (max-width: 450px) {
1850
+ .reader-home {
1851
+ font-size: 12px;
1852
+ }
1853
+ .reader-tools .lang-btn {
1854
+ font-size: 11px;
1855
+ padding: 5px 7px;
1856
+ }
1857
+ }
1858
+ /* Keep warm terracotta / cool slate identities at readable text contrast. */
1859
+ :root[data-theme="claude"] {
1860
+ --text-muted: #69655d;
1861
+ --primary: #9c5238;
1862
+ }
1863
+ :root[data-theme="datalab"] {
1864
+ --text-muted: #5c6573;
1865
+ }
1866
+ :root[data-theme] .reader-home .generated-theme {
1867
+ color: var(--reader-muted);
1868
+ }
1869
+ .brief-navigation a > span {
1870
+ opacity: 1;
1871
+ }
1872
+ :root[data-theme] .full-report-intro {
1873
+ width: auto;
1874
+ }
1875
+ :root[data-theme] .evidence-to-action {
1876
+ max-width: 100%;
1877
+ flex-wrap: wrap;
1878
+ overflow: visible;
1879
+ }
1880
+ :root[data-theme] .evidence-to-action .action-node {
1881
+ flex: 1 1 140px;
1882
+ min-width: 0;
1883
+ overflow-wrap: anywhere;
1884
+ }
1885
+ :root[data-theme="claude"] {
1886
+ --insufficient: #69655d;
1887
+ }
1888
+ :root[data-theme="datalab"] {
1889
+ --insufficient: #5c6573;
1890
+ }
1891
+
1892
+ </style>
1893
+ </head>
1894
+ <body>
1895
+ <div class="reader-progress" aria-hidden="true"><span></span></div>
1896
+ <div class="controls reader-toolbar">
1897
+ <a class="reader-home" href="#" aria-label="Back to report start">EduEvidence<span class="generated-theme">Claude Research [Light]</span></a>
1898
+ <div class="reader-view-controls" role="group" aria-label="Report view">
1899
+ <button type="button" class="report-view-btn active" data-report-view="brief" data-copy="brief" aria-pressed="true">摘要</button>
1900
+ <button type="button" class="report-view-btn" data-report-view="full" data-copy="full" aria-pressed="false">完整报告</button>
1901
+ </div>
1902
+ <div class="reader-tools"><div class="lang-switcher" role="group" aria-label="语言切换 / Language switch"><span data-lang-label data-zh="语言" data-en="Language">语言</span><button type="button" data-lang-target="zh" class="lang-btn active" aria-pressed="true">中文</button><button type="button" data-lang-target="en" class="lang-btn" aria-pressed="false">EN</button></div><button class="reader-print" type="button" data-copy="print">打印</button></div>
1903
+ </div>
1904
+ <div class="report-shell" data-lang-body="zh">
1905
+ <header class="report-header">
1906
+ <div class="report-brand-row"><span class="report-brand">EduEvidence</span><span class="generated-theme-chip">Claude Research [Light]</span><span class="data-origin-chip" data-origin="manual_curated">数据来源:真实文献 · 人工精编</span></div>
1907
+ <h1>企业客服团队是否应引入生成式 AI 助手?</h1>
1908
+ <p class="meta">模式:平台原生 · 生成时间: · 证据 4 条 · 来源 3 个</p>
1909
+ <nav class="report-view-switcher" aria-label="report view">
1910
+ <button type="button" class="report-view-btn active" data-report-view="brief" aria-pressed="true">可视化摘要</button>
1911
+ <button type="button" class="report-view-btn" data-report-view="full" aria-pressed="false">完整报告</button>
1912
+ </nav>
1913
+ </header>
1914
+ <div class="report-page report-page-brief" data-report-page="brief"><nav class="brief-navigation" aria-label="摘要导航"><a href="#brief-decision-zh"><span>01</span>先看结论</a><a href="#brief-outcomes-zh"><span>02</span>任务表现 ≠ 学习效果</a><a href="#brief-tribunal-zh"><span>03</span>证据裁决</a><a href="#brief-action-zh"><span>04</span>从证据到行动</a><a href="#brief-sources-zh"><span>05</span>关键来源</a></nav><div class="brief-reading-content"><section class="brief-block brief-decision" id="brief-decision-zh"><header class="brief-block-header"><h2>先看结论</h2><p>该不该做、置信度多高、最关键的证据边界在哪。</p></header><div class="brief-block-body">
1915
+ <div class="decision-hero pilot" data-visual="decision-hero">
1916
+ <div class="hero-decision">
1917
+ <span class="eyebrow">建议决策</span>
1918
+ <strong class="decision-value">试点验证</strong>
1919
+ <span class="confidence-badge">置信度 · 中</span>
1920
+ </div>
1921
+ <p class="hero-rationale">建议有监督试点:一项直接现场研究支持效率收益,但同时显示质量效应因人而异。间接实验提示任务边界,而本地安全性与净价值仍未知。</p>
1922
+ <div class="hero-insights">
1923
+ <article class="hero-insight support"><span>最强支持结论</span><p class="hero-insight-text">在人工监督前提下使用 AI 助手,可提升客服处理速度与答复一致性,且质量未见下降。</p></article>
1924
+ <article class="hero-insight uncertain"><span>关键不确定性 / 反例</span><p class="hero-insight-text">现有证据来自写作与咨询等相邻场景,而非客服一线,因此迁移到真实客户对话尚未被证实。</p></article>
1925
+ <article class="hero-insight risk"><span>主要风险</span><p class="hero-insight-text">脱离知识库或缺少人工复核时,可能自信地给出错误答复;长期过度依赖还会削弱坐席自身能力。</p></article>
1926
+ <article class="hero-insight next"><span>下一步</span><p class="hero-insight-text">在已批准知识库上开展人工监督试点,每条回复均经坐席复核,并跟踪升级率与纠错率。</p></article>
1927
+ </div>
1928
+ <p class="hero-provenance"><span>证据 / 来源</span> · 4 / 3</p>
1929
+ </div></div></section><section class="brief-block brief-outcomes" id="brief-outcomes-zh"><header class="brief-block-header"><h2>任务表现 ≠ 学习效果</h2><p>只展示真正有解释力的结果分离;正向、负向与零效应按 effect_direction 编码。</p></header><div class="brief-block-body"><div class="outcome-separation" data-visual="outcome-separation"><div class="visual-heading"><h3>结果分离 · 任务表现 ≠ 学习效果</h3><p>将不同结果类型分开裁决,避免把训练时更快、更高分直接等同于真正学会。</p><p class="semantic-note">效应方向来自 evidence.effect_direction;“支持某个主张”不等于“结果是正向”。</p></div><div class="outcome-groups"><article class="outcome-group outcome-other"><h3>其他结果</h3><ul><li><strong>Policy Effectiveness</strong><span class="outcome-states"><span class="dir pos">正向效应 2</span></span></li><li><strong>Implementation Risk</strong><span class="outcome-states"><span class="dir neg">负向效应 2</span></span></li></ul></article></div></div></div></section><section class="brief-block brief-tribunal" id="brief-tribunal-zh"><header class="brief-block-header"><h2>证据裁决</h2><p>支持、不确定、被反驳与缺失证据分开放置,不把长段落平铺在同一层。</p></header><div class="brief-block-body"><div class="evidence-tribunal" data-visual="evidence-tribunal-grid"><p class="tribunal-summary"><strong>决策:</strong>试点验证 · <strong>置信度:</strong>中</p><div class="tribunal-grid"><article class="tribunal-card supported"><header><span aria-hidden="true">✓</span><h3>可以主张</h3><span class="tribunal-count">4</span></header><ul><li><p>在有边界的客服场景中,AI 辅助可缩短会话处理时间;吞吐量是另一项指标。 — E-001</p><div class="tribunal-evidence-refs"><code>E-001</code></div></li><li><p>ChatGPT 缩短了短篇职业写作任务用时;对客服而言属于间接证据。 — E-002</p><div class="tribunal-evidence-refs"><code>E-002</code></div></li><li><p>在超出能力边界的任务中 AI 可能降低正确率;咨询实验对客服属于间接证据。 — E-003</p><div class="tribunal-evidence-refs"><code>E-003</code></div></li></ul><details class="tribunal-more"><summary>查看其余 1 条</summary><ul><li><p>须单独监测资深高技能客服的质量,不能假定所有岗位群体均受益。 — E-004</p><div class="tribunal-evidence-refs"><code>E-004</code></div></li></ul></details></article><article class="tribunal-card uncertain"><header><span aria-hidden="true">?</span><h3>尚不能主张</h3><span class="tribunal-count">1</span></header><ul><li><p>这组选编证据尚未确立本企业净成本、隐私事件率、亚组服务质量及持续表现 [无直接证据]。</p></li></ul></article><article class="tribunal-card contradicted"><header><span aria-hidden="true">×</span><h3>被反驳的主张</h3><span class="tribunal-count">0</span></header><ul><li>无数据。</li></ul></article><article class="tribunal-card missing"><header><span aria-hidden="true">…</span><h3>缺失证据</h3><span class="tribunal-count">1</span></header><ul><li><p>这组选编证据尚未确立本企业净成本、隐私事件率、亚组服务质量及持续表现 [无直接证据]。</p></li></ul></article></div></div></div></section><section class="brief-block brief-action" id="brief-action-zh"><header class="brief-block-header"><h2>从证据到行动</h2><p>适用性、护栏、停止条件与评价连成一条可执行路径。</p></header><div class="brief-block-body"><div class="evidence-to-action" data-visual="evidence-to-action"><article class="action-node action-evidence"><span>证据</span><p class="action-node-text">在有边界的客服场景中,AI 辅助可缩短会话处理时间;吞吐量是另一项指标。 — E-001</p></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-applicability"><span>适用性</span><p class="action-node-text">从低风险且知识库覆盖的队列开始;客服审查并编辑每条建议回复。; 按资历和基线技能分层;保留专家判断并记录复核工作量。; 试点前落实客户数据最小化与脱敏、访问和留存限制,并审查供应商数据使用条款。; 陌生、模糊、敏感或高风险请求交由合格人员处理;禁止自动作出承诺。</p></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-decision"><span>决策</span><p class="action-node-text">试点验证</p></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-guardrails"><span>护栏</span><p class="action-node-text">从低风险且知识库覆盖的队列开始;客服审查并编辑每条建议回复。</p></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-stop"><span>停止条件</span><p class="action-node-text">一旦核实隐私泄漏、严重不安全建议或越权客户承诺,立即暂停,调查后再决定是否恢复。; 若盲评质量越过预先约定的非劣界值(包括各资历分层),暂停扩展。</p></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-evaluation"><span>评价</span><p class="action-node-text">仅在质量非劣、每付薪工时有效解决量提高、净成本可接受且无未解决严重安全事件时考虑扩展;阈值须在本地预先约定。</p></article></div></div></section><section class="brief-block brief-lieflat" id="brief-lieflat-zh"><header class="brief-block-header"><h2>Lieflat 实证手作画廊</h2><p>AI 按数据形状从 Lieflat 目录选型编排;每张图的数字都可溯源到 result.json。</p></header><div class="brief-block-body"><div class="lieflat-gallery-container"><figure class="lieflat-card" data-lieflat data-visual="lieflat-bubble_almanac" data-chart-id="lieflat-bubble-almanac.svg"><h3 class="lieflat-title">发表年份 × 结果维度文献年历</h3><p class="lieflat-sub">气泡面积 ∝ 该格研究数 · 实心圆 = 有显著结果</p><div class="lieflat-figure"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 540 300" width="100%" height="100%" role="img" aria-label="发表年份 × 结果维度文献年历" style="background:#FFFFFF;">
1930
+ <line x1="44" y1="70.0" x2="520" y2="70.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:0ms"/>
1931
+ <line x1="44" y1="77.0" x2="520" y2="77.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:14ms"/>
1932
+ <line x1="44" y1="84.0" x2="520" y2="84.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:28ms"/>
1933
+ <line x1="44" y1="91.0" x2="520" y2="91.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:42ms"/>
1934
+ <line x1="44" y1="98.0" x2="520" y2="98.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:56ms"/>
1935
+ <line x1="44" y1="105.0" x2="520" y2="105.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:70ms"/>
1936
+ <line x1="44" y1="112.0" x2="520" y2="112.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:84ms"/>
1937
+ <line x1="44" y1="119.0" x2="520" y2="119.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:98ms"/>
1938
+ <line x1="44" y1="126.0" x2="520" y2="126.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:112ms"/>
1939
+ <line x1="44" y1="133.0" x2="520" y2="133.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:126ms"/>
1940
+ <line x1="44" y1="140.0" x2="520" y2="140.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:140ms"/>
1941
+ <line x1="44" y1="147.0" x2="520" y2="147.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:154ms"/>
1942
+ <line x1="44" y1="154.0" x2="520" y2="154.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:168ms"/>
1943
+ <line x1="44" y1="161.0" x2="520" y2="161.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:182ms"/>
1944
+ <line x1="44" y1="168.0" x2="520" y2="168.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:196ms"/>
1945
+ <line x1="44" y1="175.0" x2="520" y2="175.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:210ms"/>
1946
+ <line x1="44" y1="182.0" x2="520" y2="182.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:224ms"/>
1947
+ <line x1="44" y1="189.0" x2="520" y2="189.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:238ms"/>
1948
+ <line x1="44" y1="196.0" x2="520" y2="196.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:252ms"/>
1949
+ <line x1="44" y1="203.0" x2="520" y2="203.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:266ms"/>
1950
+ <line x1="44" y1="210.0" x2="520" y2="210.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:280ms"/>
1951
+ <line x1="44" y1="217.0" x2="520" y2="217.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:294ms"/>
1952
+ <line x1="44" y1="224.0" x2="520" y2="224.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:308ms"/>
1953
+ <line x1="44" y1="231.0" x2="520" y2="231.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:322ms"/>
1954
+ <line x1="44" y1="238.0" x2="520" y2="238.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:336ms"/>
1955
+ <line x1="44" y1="245.0" x2="520" y2="245.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:350ms"/>
1956
+ <line x1="44" y1="252.0" x2="520" y2="252.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:364ms"/>
1957
+ <line x1="44" y1="259.0" x2="520" y2="259.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:378ms"/>
1958
+ <text x="150" y="76" fill="#2A2925" font-size="9" font-weight="600" text-anchor="middle" class="lf-fade" style="--motion-delay:40ms">policy_effecti</text>
1959
+ <text x="484.8" y="76" fill="#2A2925" font-size="9" font-weight="600" text-anchor="middle" class="lf-fade" style="--motion-delay:140ms">implementation</text>
1960
+ <text x="96" y="96.0" fill="#6A6963" font-size="9" font-weight="800" text-anchor="end" class="lf-fade" style="--motion-delay:80ms">2023</text>
1961
+ <text x="96" y="140.0" fill="#6A6963" font-size="9" font-weight="800" text-anchor="end" class="lf-fade" style="--motion-delay:180ms">2025</text>
1962
+ <text x="96" y="184.0" fill="#6A6963" font-size="9" font-weight="800" text-anchor="end" class="lf-fade" style="--motion-delay:280ms">2026</text>
1963
+ <circle cx="150.0" cy="92.0" r="3.6" fill="#B8694A" fill-opacity="0.22" stroke="#B8694A" stroke-width="1.2" class="lf-pop" style="--motion-delay:100ms"><title>policy_effectiveness (2023) — N = 1 篇研究, 显著 = 0</title></circle>
1964
+ <circle cx="150.0" cy="136.0" r="3.6" fill="#B8694A" fill-opacity="0.22" stroke="#B8694A" stroke-width="1.2" class="lf-pop" style="--motion-delay:112ms"><title>policy_effectiveness (2025) — N = 1 篇研究, 显著 = 0</title></circle>
1965
+ <circle cx="520.0" cy="136.0" r="3.6" fill="#B8694A" fill-opacity="0.22" stroke="#B8694A" stroke-width="1.2" class="lf-pop" style="--motion-delay:124ms"><title>implementation_risk (2025) — N = 1 篇研究, 显著 = 0</title></circle>
1966
+ <circle cx="520.0" cy="180.0" r="3.6" fill="#B8694A" fill-opacity="0.22" stroke="#B8694A" stroke-width="1.2" class="lf-pop" style="--motion-delay:136ms"><title>implementation_risk (2026) — N = 1 篇研究, 显著 = 0</title></circle>
1967
+ </svg></div><figcaption class="lieflat-caption">仅当证据集携带发表年份与结果维度时绘制。</figcaption><p class="lieflat-src">L9 Bubble Almanac · Evidence.year X Dimension</p></figure><figure class="lieflat-card" data-lieflat data-visual="lieflat-matrix_heat" data-chart-id="lieflat-matrix-heat.svg"><h3 class="lieflat-title">年份 × 结果维度证据密度</h3><p class="lieflat-sub">每格数字 = 该年份该结果维度的证据条数</p><div class="lieflat-figure"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 540 200" width="100%" height="100%" role="img" aria-label="年份 × 结果维度证据密度" style="background:#FFFFFF;">
1968
+ <text x="211.7" y="66" text-anchor="middle" font-size="9" font-weight="800" fill="#6A6963" class="lf-fade" style="--motion-delay:40ms">2023</text>
1969
+ <text x="335.0" y="66" text-anchor="middle" font-size="9" font-weight="800" fill="#6A6963" class="lf-fade" style="--motion-delay:140ms">2025</text>
1970
+ <text x="458.3" y="66" text-anchor="middle" font-size="9" font-weight="800" fill="#6A6963" class="lf-fade" style="--motion-delay:240ms">2026</text>
1971
+ <text x="138" y="97.0" text-anchor="end" font-size="8" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:60ms">policy effecti</text>
1972
+ <rect x="152.0" y="80.0" width="119.3" height="28" rx="4" fill="#B8694A" fill-opacity="0.90" class="lf-pop" style="--motion-delay:0ms"/>
1973
+ <text x="211.7" y="97.0" text-anchor="middle" font-size="8.0" font-weight="800" fill="#2A2925" class="lf-pop" style="--motion-delay:60ms">1</text>
1974
+ <rect x="275.3" y="80.0" width="119.3" height="28" rx="4" fill="#B8694A" fill-opacity="0.90" class="lf-pop" style="--motion-delay:12ms"/>
1975
+ <text x="335.0" y="97.0" text-anchor="middle" font-size="8.0" font-weight="800" fill="#2A2925" class="lf-pop" style="--motion-delay:72ms">1</text>
1976
+ <rect x="398.7" y="80.0" width="119.3" height="28" rx="4" fill="#E4E3DC" fill-opacity="0.5" class="lf-fade" style="--motion-delay:24ms"/>
1977
+ <text x="458.3" y="97.0" text-anchor="middle" font-size="8.0" font-weight="800" fill="#2A2925" class="lf-pop" style="--motion-delay:84ms">0</text>
1978
+ <text x="138" y="129.0" text-anchor="end" font-size="8" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:160ms">implementation</text>
1979
+ <rect x="152.0" y="112.0" width="119.3" height="28" rx="4" fill="#E4E3DC" fill-opacity="0.5" class="lf-fade" style="--motion-delay:12ms"/>
1980
+ <text x="211.7" y="129.0" text-anchor="middle" font-size="8.0" font-weight="800" fill="#2A2925" class="lf-pop" style="--motion-delay:72ms">0</text>
1981
+ <rect x="275.3" y="112.0" width="119.3" height="28" rx="4" fill="#B8694A" fill-opacity="0.90" class="lf-pop" style="--motion-delay:24ms"/>
1982
+ <text x="335.0" y="129.0" text-anchor="middle" font-size="8.0" font-weight="800" fill="#2A2925" class="lf-pop" style="--motion-delay:84ms">1</text>
1983
+ <rect x="398.7" y="112.0" width="119.3" height="28" rx="4" fill="#B8694A" fill-opacity="0.90" class="lf-pop" style="--motion-delay:36ms"/>
1984
+ <text x="458.3" y="129.0" text-anchor="middle" font-size="8.0" font-weight="800" fill="#2A2925" class="lf-pop" style="--motion-delay:96ms">1</text>
1985
+ </svg></div><figcaption class="lieflat-caption">当证据跨多个年份与结果维度时,展示研究密度的分布。</figcaption><p class="lieflat-src">L16 Matrix Heat · Evidence.year X Outcome Counts</p></figure><figure class="lieflat-card" data-lieflat data-visual="lieflat-hundred_field" data-chart-id="lieflat-hundred-field.svg"><h3 class="lieflat-title">研究设计构成</h3><p class="lieflat-sub">每格 = 1 篇研究 · 显示证据来自哪些研究设计</p><div class="lieflat-figure"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 540 300" width="100%" height="100%" role="img" aria-label="研究设计构成" style="background:#FFFFFF;">
1986
+ <rect x="40.0" y="74.0" width="15.5" height="15.5" rx="3" fill="#B8694A" class="lf-pop" style="--motion-delay:0ms"><title>quasi_experimental — 1 study</title></rect>
1987
+ <rect x="58.0" y="74.0" width="15.5" height="15.5" rx="3" fill="#B8694A" class="lf-pop" style="--motion-delay:12ms"><title>quasi_experimental — 1 study</title></rect>
1988
+ <rect x="76.0" y="74.0" width="15.5" height="15.5" rx="3" fill="#5E8A6A" class="lf-pop" style="--motion-delay:24ms"><title>rct — 1 study</title></rect>
1989
+ <rect x="94.0" y="74.0" width="15.5" height="15.5" rx="3" fill="#5E8A6A" class="lf-pop" style="--motion-delay:36ms"><title>rct — 1 study</title></rect>
1990
+ <text x="30" y="270" font-size="8" font-weight="600" fill="#8F8E88" class="lf-fade" style="--motion-delay:400ms">每格 = 1 篇研究</text>
1991
+ </svg></div><figcaption class="lieflat-caption">当证据包含多种研究设计时,构成图比表格更快暴露设计偏斜。</figcaption><p class="lieflat-src">L14 Hundred Field · Evidence.study Type Composition</p></figure><figure class="lieflat-card" data-lieflat data-visual="lieflat-tick_gauge" data-chart-id="lieflat-tick-gauge.svg"><h3 class="lieflat-title">决策置信度</h3><p class="lieflat-sub">0–100% 单值仪表 · 由确定性置信度公式给出</p><div class="lieflat-figure"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 540 290" width="100%" height="100%" role="img" aria-label="决策置信度" style="background:#FFFFFF;">
1992
+ <line x1="240.0" y1="66.0" x2="240.0" y2="50.0" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:0ms"><title>0%</title></line>
1993
+ <line x1="244.3" y1="66.1" x2="245.1" y2="50.1" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:12ms"><title>1%</title></line>
1994
+ <line x1="248.7" y1="66.4" x2="250.2" y2="50.5" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:24ms"><title>2%</title></line>
1995
+ <line x1="253.0" y1="66.9" x2="255.2" y2="51.1" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:36ms"><title>3%</title></line>
1996
+ <line x1="257.2" y1="67.6" x2="260.2" y2="51.9" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:48ms"><title>4%</title></line>
1997
+ <line x1="261.5" y1="68.5" x2="265.2" y2="53.0" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:60ms"><title>5%</title></line>
1998
+ <line x1="265.7" y1="69.7" x2="270.1" y2="54.3" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:72ms"><title>6%</title></line>
1999
+ <line x1="269.8" y1="71.0" x2="275.0" y2="55.8" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:84ms"><title>7%</title></line>
2000
+ <line x1="273.9" y1="72.5" x2="279.8" y2="57.6" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:96ms"><title>8%</title></line>
2001
+ <line x1="277.9" y1="74.2" x2="284.4" y2="59.6" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:108ms"><title>9%</title></line>
2002
+ <line x1="281.8" y1="76.0" x2="289.0" y2="61.8" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:120ms"><title>10%</title></line>
2003
+ <line x1="285.6" y1="78.1" x2="293.5" y2="64.2" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:132ms"><title>11%</title></line>
2004
+ <line x1="289.3" y1="80.3" x2="297.9" y2="66.8" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:144ms"><title>12%</title></line>
2005
+ <line x1="292.9" y1="82.7" x2="302.1" y2="69.6" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:156ms"><title>13%</title></line>
2006
+ <line x1="296.4" y1="85.3" x2="306.2" y2="72.7" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:168ms"><title>14%</title></line>
2007
+ <line x1="299.7" y1="88.0" x2="310.1" y2="75.9" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:180ms"><title>15%</title></line>
2008
+ <line x1="303.0" y1="90.9" x2="313.9" y2="79.3" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:192ms"><title>16%</title></line>
2009
+ <line x1="306.1" y1="94.0" x2="317.6" y2="82.8" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:204ms"><title>17%</title></line>
2010
+ <line x1="309.0" y1="97.2" x2="321.0" y2="86.6" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:216ms"><title>18%</title></line>
2011
+ <line x1="311.8" y1="100.5" x2="324.3" y2="90.5" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:228ms"><title>19%</title></line>
2012
+ <line x1="314.4" y1="103.9" x2="327.4" y2="94.5" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:240ms"><title>20%</title></line>
2013
+ <line x1="316.9" y1="107.5" x2="330.3" y2="98.7" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:252ms"><title>21%</title></line>
2014
+ <line x1="319.2" y1="111.2" x2="333.0" y2="103.0" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:264ms"><title>22%</title></line>
2015
+ <line x1="321.3" y1="115.0" x2="335.4" y2="107.5" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:276ms"><title>23%</title></line>
2016
+ <line x1="323.2" y1="118.8" x2="337.7" y2="112.0" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:288ms"><title>24%</title></line>
2017
+ <line x1="325.0" y1="122.8" x2="339.8" y2="116.7" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:300ms"><title>25%</title></line>
2018
+ <line x1="326.6" y1="126.8" x2="341.6" y2="121.4" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:312ms"><title>26%</title></line>
2019
+ <line x1="327.9" y1="130.9" x2="343.2" y2="126.2" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:324ms"><title>27%</title></line>
2020
+ <line x1="329.1" y1="135.1" x2="344.6" y2="131.1" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:336ms"><title>28%</title></line>
2021
+ <line x1="330.1" y1="139.3" x2="345.8" y2="136.1" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:348ms"><title>29%</title></line>
2022
+ <line x1="330.9" y1="143.6" x2="346.7" y2="141.1" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:360ms"><title>30%</title></line>
2023
+ <line x1="331.4" y1="147.9" x2="347.3" y2="146.1" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:372ms"><title>31%</title></line>
2024
+ <line x1="331.8" y1="152.2" x2="347.8" y2="151.2" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:384ms"><title>32%</title></line>
2025
+ <line x1="332.0" y1="156.6" x2="348.0" y2="156.3" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:396ms"><title>33%</title></line>
2026
+ <line x1="332.0" y1="160.9" x2="347.9" y2="161.4" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:408ms"><title>34%</title></line>
2027
+ <line x1="331.7" y1="165.2" x2="347.7" y2="166.5" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:420ms"><title>35%</title></line>
2028
+ <line x1="331.3" y1="169.5" x2="347.1" y2="171.5" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:432ms"><title>36%</title></line>
2029
+ <line x1="330.6" y1="173.8" x2="346.4" y2="176.6" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:444ms"><title>37%</title></line>
2030
+ <line x1="329.8" y1="178.1" x2="345.4" y2="181.6" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:456ms"><title>38%</title></line>
2031
+ <line x1="328.7" y1="182.3" x2="344.2" y2="186.5" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:468ms"><title>39%</title></line>
2032
+ <line x1="327.5" y1="186.4" x2="342.7" y2="191.4" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:480ms"><title>40%</title></line>
2033
+ <line x1="326.1" y1="190.5" x2="341.0" y2="196.2" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:492ms"><title>41%</title></line>
2034
+ <line x1="324.4" y1="194.5" x2="339.1" y2="200.9" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:504ms"><title>42%</title></line>
2035
+ <line x1="322.6" y1="198.5" x2="337.0" y2="205.5" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:516ms"><title>43%</title></line>
2036
+ <line x1="320.6" y1="202.3" x2="334.6" y2="210.0" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:528ms"><title>44%</title></line>
2037
+ <line x1="318.4" y1="206.1" x2="332.1" y2="214.4" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:540ms"><title>45%</title></line>
2038
+ <line x1="316.1" y1="209.7" x2="329.3" y2="218.7" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:552ms"><title>46%</title></line>
2039
+ <line x1="313.6" y1="213.2" x2="326.4" y2="222.8" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:564ms"><title>47%</title></line>
2040
+ <line x1="310.9" y1="216.6" x2="323.2" y2="226.8" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:576ms"><title>48%</title></line>
2041
+ <line x1="308.0" y1="219.9" x2="319.9" y2="230.7" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:588ms"><title>49%</title></line>
2042
+ <line x1="305.1" y1="223.1" x2="316.4" y2="234.4" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:600ms"><title>50%</title></line>
2043
+ <line x1="301.9" y1="226.0" x2="312.7" y2="237.9" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:612ms"><title>51%</title></line>
2044
+ <line x1="298.6" y1="228.9" x2="308.8" y2="241.2" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:624ms"><title>52%</title></line>
2045
+ <line x1="295.2" y1="231.6" x2="304.8" y2="244.4" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:636ms"><title>53%</title></line>
2046
+ <line x1="291.7" y1="234.1" x2="300.7" y2="247.3" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:648ms"><title>54%</title></line>
2047
+ <line x1="288.1" y1="236.4" x2="296.4" y2="250.1" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:660ms"><title>55%</title></line>
2048
+ <line x1="284.3" y1="238.6" x2="292.0" y2="252.6" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:672ms"><title>56%</title></line>
2049
+ <line x1="280.5" y1="240.6" x2="287.5" y2="255.0" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:684ms"><title>57%</title></line>
2050
+ <line x1="276.5" y1="242.4" x2="282.9" y2="257.1" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:176ms"><title>58%</title></line>
2051
+ <line x1="272.5" y1="244.1" x2="278.2" y2="259.0" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:178ms"><title>59%</title></line>
2052
+ <line x1="268.4" y1="245.5" x2="273.4" y2="260.7" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:180ms"><title>60%</title></line>
2053
+ <line x1="264.3" y1="246.7" x2="268.5" y2="262.2" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:182ms"><title>61%</title></line>
2054
+ <line x1="260.1" y1="247.8" x2="263.6" y2="263.4" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:184ms"><title>62%</title></line>
2055
+ <line x1="255.8" y1="248.6" x2="258.6" y2="264.4" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:186ms"><title>63%</title></line>
2056
+ <line x1="251.5" y1="249.3" x2="253.5" y2="265.1" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:188ms"><title>64%</title></line>
2057
+ <line x1="247.2" y1="249.7" x2="248.5" y2="265.7" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:190ms"><title>65%</title></line>
2058
+ <line x1="242.9" y1="250.0" x2="243.4" y2="265.9" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:192ms"><title>66%</title></line>
2059
+ <line x1="238.6" y1="250.0" x2="238.3" y2="266.0" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:194ms"><title>67%</title></line>
2060
+ <line x1="234.2" y1="249.8" x2="233.2" y2="265.8" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:196ms"><title>68%</title></line>
2061
+ <line x1="229.9" y1="249.4" x2="228.1" y2="265.3" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:198ms"><title>69%</title></line>
2062
+ <line x1="225.6" y1="248.9" x2="223.1" y2="264.7" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:200ms"><title>70%</title></line>
2063
+ <line x1="221.3" y1="248.1" x2="218.1" y2="263.8" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:202ms"><title>71%</title></line>
2064
+ <line x1="217.1" y1="247.1" x2="213.1" y2="262.6" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:204ms"><title>72%</title></line>
2065
+ <line x1="212.9" y1="245.9" x2="208.2" y2="261.2" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:206ms"><title>73%</title></line>
2066
+ <line x1="208.8" y1="244.6" x2="203.4" y2="259.6" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:208ms"><title>74%</title></line>
2067
+ <line x1="204.8" y1="243.0" x2="198.7" y2="257.8" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:210ms"><title>75%</title></line>
2068
+ <line x1="200.8" y1="241.2" x2="194.0" y2="255.7" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:212ms"><title>76%</title></line>
2069
+ <line x1="197.0" y1="239.3" x2="189.5" y2="253.4" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:214ms"><title>77%</title></line>
2070
+ <line x1="193.2" y1="237.2" x2="185.0" y2="251.0" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:216ms"><title>78%</title></line>
2071
+ <line x1="189.5" y1="234.9" x2="180.7" y2="248.3" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:218ms"><title>79%</title></line>
2072
+ <line x1="185.9" y1="232.4" x2="176.5" y2="245.4" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:220ms"><title>80%</title></line>
2073
+ <line x1="182.5" y1="229.8" x2="172.5" y2="242.3" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:222ms"><title>81%</title></line>
2074
+ <line x1="179.2" y1="227.0" x2="168.6" y2="239.0" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:224ms"><title>82%</title></line>
2075
+ <line x1="176.0" y1="224.1" x2="164.8" y2="235.6" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:226ms"><title>83%</title></line>
2076
+ <line x1="172.9" y1="221.0" x2="161.3" y2="231.9" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:228ms"><title>84%</title></line>
2077
+ <line x1="170.0" y1="217.7" x2="157.9" y2="228.1" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:230ms"><title>85%</title></line>
2078
+ <line x1="167.3" y1="214.4" x2="154.7" y2="224.2" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:232ms"><title>86%</title></line>
2079
+ <line x1="164.7" y1="210.9" x2="151.6" y2="220.1" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:234ms"><title>87%</title></line>
2080
+ <line x1="162.3" y1="207.3" x2="148.8" y2="215.9" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:236ms"><title>88%</title></line>
2081
+ <line x1="160.1" y1="203.6" x2="146.2" y2="211.5" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:238ms"><title>89%</title></line>
2082
+ <line x1="158.0" y1="199.8" x2="143.8" y2="207.0" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:240ms"><title>90%</title></line>
2083
+ <line x1="156.2" y1="195.9" x2="141.6" y2="202.4" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:242ms"><title>91%</title></line>
2084
+ <line x1="154.5" y1="191.9" x2="139.6" y2="197.8" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:244ms"><title>92%</title></line>
2085
+ <line x1="153.0" y1="187.8" x2="137.8" y2="193.0" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:246ms"><title>93%</title></line>
2086
+ <line x1="151.7" y1="183.7" x2="136.3" y2="188.1" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:248ms"><title>94%</title></line>
2087
+ <line x1="150.5" y1="179.5" x2="135.0" y2="183.2" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:250ms"><title>95%</title></line>
2088
+ <line x1="149.6" y1="175.2" x2="133.9" y2="178.2" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:252ms"><title>96%</title></line>
2089
+ <line x1="148.9" y1="171.0" x2="133.1" y2="173.2" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:254ms"><title>97%</title></line>
2090
+ <line x1="148.4" y1="166.7" x2="132.5" y2="168.2" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:256ms"><title>98%</title></line>
2091
+ <line x1="148.1" y1="162.3" x2="132.1" y2="163.1" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:258ms"><title>99%</title></line>
2092
+ <text x="240" y="152" text-anchor="middle" font-size="30" font-weight="800" fill="#2A2925" class="lf-pop" style="--motion-delay:600ms">58%</text>
2093
+ <text x="240" y="180" text-anchor="middle" font-size="10" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:680ms">Moderate</text>
2094
+ </svg></div><figcaption class="lieflat-caption">置信度值来自 result.json 的决策字段,不由模型自评。</figcaption><p class="lieflat-src">F11 Tick Gauge · Decision.confidence Score</p></figure><figure class="lieflat-card" data-lieflat data-visual="lieflat-ballot_tally" data-chart-id="lieflat-ballot-tally.svg"><h3 class="lieflat-title">方法学检查项计票</h3><p class="lieflat-sub">每 tick = 1 条审计结论 · 按检查项统计通过与否</p><div class="lieflat-figure"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 540 300" width="100%" height="100%" role="img" aria-label="方法学检查项计票" style="background:#FFFFFF;">
2095
+ <text x="150" y="102.3" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:40ms">Causal Ident</text>
2096
+ <rect x="162.0" y="95.3" width="8" height="8" rx="2" fill="#B8694A" class="lf-pop" style="--motion-delay:0ms"><title>Causal Identification — verdict 1/1 (flagged)</title></rect>
2097
+ <text x="512" y="102.3" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:300ms">1/1</text>
2098
+ <text x="150" y="117.0" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:140ms">External Val</text>
2099
+ <rect x="162.0" y="110.0" width="8" height="8" rx="2" fill="#B8694A" class="lf-pop" style="--motion-delay:100ms"><title>External Validity — verdict 1/1 (flagged)</title></rect>
2100
+ <text x="512" y="117.0" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:400ms">1/1</text>
2101
+ <text x="150" y="131.7" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:240ms">Cost Evidenc</text>
2102
+ <rect x="162.0" y="124.7" width="8" height="8" rx="2" fill="#B8694A" class="lf-pop" style="--motion-delay:200ms"><title>Cost Evidence — verdict 1/1 (flagged)</title></rect>
2103
+ <text x="512" y="131.7" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:500ms">1/1</text>
2104
+ <text x="150" y="146.3" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:340ms">Stakeholder </text>
2105
+ <rect x="162.0" y="139.3" width="8" height="8" rx="2" fill="#B8694A" class="lf-pop" style="--motion-delay:300ms"><title>Stakeholder Representation — verdict 1/1 (flagged)</title></rect>
2106
+ <text x="512" y="146.3" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:600ms">1/1</text>
2107
+ <text x="150" y="161.0" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:440ms">Implementati</text>
2108
+ <rect x="162.0" y="154.0" width="8" height="8" rx="2" fill="#B8694A" class="lf-pop" style="--motion-delay:400ms"><title>Implementation Evidence — verdict 1/1 (flagged)</title></rect>
2109
+ <text x="512" y="161.0" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:700ms">1/1</text>
2110
+ <text x="150" y="175.7" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:540ms">Equity Analy</text>
2111
+ <rect x="162.0" y="168.7" width="8" height="8" rx="2" fill="#B8694A" class="lf-pop" style="--motion-delay:500ms"><title>Equity Analysis — verdict 1/1 (flagged)</title></rect>
2112
+ <text x="512" y="175.7" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:800ms">1/1</text>
2113
+ <text x="150" y="190.3" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:640ms">Effect Size </text>
2114
+ <rect x="162.0" y="183.3" width="8" height="8" rx="2" fill="#B8694A" class="lf-pop" style="--motion-delay:600ms"><title>Effect Size Reported — verdict 1/1 (flagged)</title></rect>
2115
+ <text x="512" y="190.3" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:900ms">1/1</text>
2116
+ <text x="150" y="205.0" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:740ms">Uncertainty </text>
2117
+ <rect x="162.0" y="198.0" width="8" height="8" rx="2" fill="#B8694A" class="lf-pop" style="--motion-delay:700ms"><title>Uncertainty Quantified — verdict 1/1 (flagged)</title></rect>
2118
+ <text x="512" y="205.0" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:1000ms">1/1</text>
2119
+ <text x="150" y="219.7" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:840ms">Publication </text>
2120
+ <rect x="162.0" y="212.7" width="8" height="8" rx="2" fill="#B8694A" class="lf-pop" style="--motion-delay:800ms"><title>Publication Bias Risk — verdict 1/1 (flagged)</title></rect>
2121
+ <text x="512" y="219.7" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:1100ms">1/1</text>
2122
+ <text x="150" y="234.3" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:940ms">Evidence Lev</text>
2123
+ <rect x="162.0" y="227.3" width="8" height="8" rx="2" fill="#E4E3DC" class="lf-pop" style="--motion-delay:900ms"><title>Evidence Level — verdict 1/1</title></rect>
2124
+ <text x="512" y="234.3" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:1200ms">0/1</text>
2125
+ <text x="150" y="249.0" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:1040ms">Comparator C</text>
2126
+ <rect x="162.0" y="242.0" width="8" height="8" rx="2" fill="#E4E3DC" class="lf-pop" style="--motion-delay:1000ms"><title>Comparator Clarity — verdict 1/1</title></rect>
2127
+ <text x="512" y="249.0" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:1300ms">0/1</text>
2128
+ <text x="150" y="263.7" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:1140ms">Generalizabi</text>
2129
+ <rect x="162.0" y="256.7" width="8" height="8" rx="2" fill="#E4E3DC" class="lf-pop" style="--motion-delay:1100ms"><title>Generalizability Claims — verdict 1/1</title></rect>
2130
+ <text x="512" y="263.7" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:1400ms">0/1</text>
2131
+ <text x="30" y="280" font-size="7.5" font-weight="600" fill="#8F8E88" class="lf-fade" style="--motion-delay:500ms">one tick = one methodology-review verdict; filled = below &#x27;met&#x27;</text>
2132
+ </svg></div><figcaption class="lieflat-caption">让读者一眼看出方法学短板集中在哪些检查项。</figcaption><p class="lieflat-src">L15 Ballot Tally · Methodology.flag Rates</p></figure></div></div></section><section class="brief-block brief-sources" id="brief-sources-zh"><header class="brief-block-header"><h2>关键来源</h2><p>摘要页只列最关键的来源;完整溯源在完整报告中展开。</p></header><div class="brief-block-body"><div class="brief-source-grid"><article class="brief-source"><code>S-001</code><h3><a href="https://academic.oup.com/qje/article/140/2/889/7990658">Generative AI at Work</a></h3><p>T1 DOI 可验证论文 · 2025</p></article><article class="brief-source"><code>S-002</code><h3><a href="https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf">Experimental evidence on the productivity effects of generative artificial intelligence</a></h3><p>T1 DOI 可验证论文 · 2023</p></article><article class="brief-source"><code>S-003</code><h3><a href="https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838">Navigating the Jagged Technological Frontier: Field Experimental Evidence of the Effects of Artificial Intelligence on Knowledge Worker Productivity and Quality</a></h3><p>T1 DOI 可验证论文 · 2026</p></article></div></div></section></div></div>
2133
+ <div class="report-page report-page-full" data-report-page="full" hidden>
2134
+ <div class="full-report-intro"><h2>完整报告</h2><p>结论前置:全部可追溯证据与方法学细节都在这里,关键论证位置穿插有意义的可视化,每个数字都能回查到 result.json。</p></div>
2135
+ <div class="full-report-layout"><aside class="full-report-toc" aria-label="目录"><div class="toc-head"><strong>目录</strong><button type="button" class="toc-collapse" aria-expanded="true" data-label-collapse="收起目录" data-label-expand="展开目录">收起目录</button></div><nav><a href="#full-01-decision" data-toc-target="full-01-decision" data-chapter-key="decision">01 结论、裁决与研究边界</a><a href="#full-02-evidence" data-toc-target="full-02-evidence" data-chapter-key="evidence">02 关键证据与结果分离</a><a href="#full-03-quality" data-toc-target="full-03-quality" data-chapter-key="quality">03 证据可信度、反证与方法审计</a><a href="#full-04-action" data-toc-target="full-04-action" data-chapter-key="action">04 适用范围与教学行动</a><a href="#full-05-evaluation" data-toc-target="full-05-evaluation" data-chapter-key="evaluation">05 试点设计、评估与停止条件</a><a href="#full-06-sources" data-toc-target="full-06-sources" data-chapter-key="sources">06 来源、溯源与附录</a></nav></aside><main class="full-report-content"><section id="full-01-decision" class="full-chapter" data-full-chapter><header class="full-chapter-header"><h2>01 结论、裁决与研究边界</h2><p class="full-chapter-lead">先明确最终裁决与研究边界,再解释为什么。</p></header><div class="full-chapter-body">
2136
+ <div class="decision-hero pilot" data-visual="decision-hero">
2137
+ <div class="hero-decision">
2138
+ <span class="eyebrow">建议决策</span>
2139
+ <strong class="decision-value">试点验证</strong>
2140
+ <span class="confidence-badge">置信度 · 中</span>
2141
+ </div>
2142
+ <p class="hero-rationale">建议有监督试点:一项直接现场研究支持效率收益,但同时显示质量效应因人而异。间接实验提示任务边界,而本地安全性与净价值仍未知。</p>
2143
+ <div class="hero-insights">
2144
+ <article class="hero-insight support"><span>最强支持结论</span><p class="hero-insight-text">在人工监督前提下使用 AI 助手,可提升客服处理速度与答复一致性,且质量未见下降。</p></article>
2145
+ <article class="hero-insight uncertain"><span>关键不确定性 / 反例</span><p class="hero-insight-text">现有证据来自写作与咨询等相邻场景,而非客服一线,因此迁移到真实客户对话尚未被证实。</p></article>
2146
+ <article class="hero-insight risk"><span>主要风险</span><p class="hero-insight-text">脱离知识库或缺少人工复核时,可能自信地给出错误答复;长期过度依赖还会削弱坐席自身能力。</p></article>
2147
+ <article class="hero-insight next"><span>下一步</span><p class="hero-insight-text">在已批准知识库上开展人工监督试点,每条回复均经坐席复核,并跟踪升级率与纠错率。</p></article>
2148
+ </div>
2149
+ <p class="hero-provenance"><span>证据 / 来源</span> · 4 / 3</p>
2150
+ </div><div class="scope-grid"><article class="scope-card"><h3>研究问题</h3><p class="scope-text">企业客服团队是否应引入生成式 AI 助手?</p></article><article class="scope-card"><h3>AI 干预</h3><p class="scope-text">政策名称:人工监督的客服助手;政策类型:机构改革;作用机制:已批准知识库 + 坐席复核</p></article><article class="scope-card"><h3>比较条件</h3><p class="scope-text">不提供生成式 AI 建议的现有客服流程。</p></article><article class="scope-card"><h3>结果构念</h3><p class="scope-text">主要结果:Policy Effectiveness、Implementation Risk;次要结果:Cost Effectiveness、equity、feasibility</p></article><article class="scope-card"><h3>研究范围</h3><p class="scope-text">时间范围:2023–2026;Evidence Types:准实验、随机对照试验</p></article><article class="scope-card"><h3>决策成功条件</h3><p class="scope-text">提高每付薪工时的有效解决量,同时维持服务质量、隐私和员工自主判断。</p></article></div></div></section><section id="full-02-evidence" class="full-chapter" data-full-chapter><header class="full-chapter-header"><h2>02 关键证据与结果分离</h2><p class="full-chapter-lead">把任务表现、真实学习、保持与风险放在同一证据地图中,但不混为一谈。</p></header><div class="full-chapter-body"><div class="retrieval-grid"><article><h3>纳入标准</h3><ul></ul></article><article><h3>排除标准</h3><ul></ul></article></div><div class="retrieval-coverage"><h3>证据来源覆盖</h3><p><code>S-001</code> <code>S-002</code> <code>S-003</code></p><p class="retrieval-note">当前报告只展示 result 中真实存在的检索与来源信息;没有流程计数时不伪造 PRISMA / funnel 数字。</p></div><div class="outcome-separation" data-visual="outcome-separation"><div class="visual-heading"><h3>结果分离 · 任务表现 ≠ 学习效果</h3><p>将不同结果类型分开裁决,避免把训练时更快、更高分直接等同于真正学会。</p><p class="semantic-note">效应方向来自 evidence.effect_direction;“支持某个主张”不等于“结果是正向”。</p></div><div class="outcome-groups"><article class="outcome-group outcome-other"><h3>其他结果</h3><ul><li><strong>Policy Effectiveness</strong><span class="outcome-states"><span class="dir pos">正向效应 2</span></span></li><li><strong>Implementation Risk</strong><span class="outcome-states"><span class="dir neg">负向效应 2</span></span></li></ul></article></div></div><div class='table-wrap outcome-table'><table class='data-table'><thead><tr><th>结果类型</th><th>正向效应</th><th>负向效应</th><th>零效应</th><th>证据</th></tr></thead><tbody><tr><td><strong>Policy Effectiveness</strong><span class='raw-tag' title='原始标识'>policy_effectiveness</span></td><td class='num'>2</td><td class='num'>0</td><td class='num'>0</td><td><code>E-001</code> <code>E-002</code> </td></tr><tr><td><strong>Implementation Risk</strong><span class='raw-tag' title='原始标识'>implementation_risk</span></td><td class='num'>0</td><td class='num'>2</td><td class='num'>0</td><td><code>E-003</code> <code>E-004</code> </td></tr></tbody></table></div><div class='matrix-controls'><div class='matrix-tools'><input id='matrix-search-full-zh' type='search' placeholder='搜索证据…' aria-label='筛选 / 搜索证据'><select id='matrix-direction-full-zh' aria-label='按效应方向筛选'><option value=''>全部效应</option><option value='positive'>正向效应</option><option value='negative'>负向效应</option><option value='null'>零效应</option></select><select id='matrix-outcome-full-zh' aria-label='按结果类型筛选'><option value=''>全部结果</option><option value='implementation_risk'>Implementation Risk</option><option value='policy_effectiveness'>Policy Effectiveness</option></select></div></div><div class='table-wrap matrix-wrap'><table id='evidence-matrix-full-zh' class='data-table evidence-matrix'><thead><tr><th>ID</th><th>结果</th><th>效应</th><th>质量</th><th>主张</th><th>来源</th></tr></thead><tbody><tr data-effect="positive" data-direction="positive" data-outcome="policy_effectiveness" data-search="e-001 st-001 sample-support-all generative ai at work 在有边界的客服场景中,ai 辅助可缩短会话处理时间;吞吐量是另一项指标。 客服人员 positive s-001"><td><code>E-001</code></td><td><strong>Policy Effectiveness</strong></td><td><span class="dir pos">正向效应</span><span class="relation-note">与主张关系: 支持</span></td><td><div class="quality-cell"><span class="num">9</span><span class="quality-meter" aria-hidden="true"><i style="width:90%"></i></span></div></td><td class="claim-cell"><p>在有边界的客服场景中,AI 辅助可缩短会话处理时间;吞吐量是另一项指标。</p><details class="matrix-row-detail"><summary>查看完整证据</summary><dl class="evidence-detail-grid"><div class="evidence-detail-row"><dt>研究 ID</dt><dd>ST-001</dd></div><div class="evidence-detail-row"><dt>样本 ID</dt><dd>SAMPLE-support-all</dd></div><div class="evidence-detail-row"><dt>研究标题</dt><dd>Generative AI at Work</dd></div><div class="evidence-detail-row"><dt>来源标题</dt><dd>Generative AI at Work</dd></div><div class="evidence-detail-row"><dt>年份</dt><dd>2025</dd></div><div class="evidence-detail-row"><dt>研究设计</dt><dd>准实验</dd></div><div class="evidence-detail-row"><dt>研究人群</dt><dd>客服人员</dd></div><div class="evidence-detail-row"><dt>样本量</dt><dd>5172</dd></div><div class="evidence-detail-row"><dt>结果测量</dt><dd>会话处理时间;另列吞吐量摘要:每小时解决问题数约增加 15%。</dd></div><div class="evidence-detail-row"><dt>效应方向</dt><dd>正向效应</dd></div><div class="evidence-detail-row"><dt>与主张关系</dt><dd>支持</dd></div><div class="evidence-detail-row"><dt>局限</dt><dd>单一企业、单一工具、非随机分批上线;因果解释依赖识别假设。</dd></div><div class="evidence-detail-row"><dt>质量维度</dt><dd>D1 研究设计=1 · D2 样本质量=2 · D3 测量效度=2 · D4 时间强度=2 · D5 直接性=2</dd></div><div class="evidence-detail-row"><dt>质量分</dt><dd>9.0</dd></div><div class="evidence-detail-row"><dt>证据状态</dt><dd>已支持</dd></div><div class="evidence-detail-row"><dt>完整主张</dt><dd>在有边界的客服场景中,AI 辅助可缩短会话处理时间;吞吐量是另一项指标。</dd></div><div class="evidence-detail-row"><dt>来源位置</dt><dd>https://academic.oup.com/qje/article/140/2/889/7990658</dd></div><div class="evidence-detail-row"><dt>可验证链接</dt><dd><a href="https://academic.oup.com/qje/article/140/2/889/7990658">https://academic.oup.com/qje/article/140/2/889/7990658</a></dd></div></dl></details></td><td><a class="source-link" href="https://academic.oup.com/qje/article/140/2/889/7990658" title="Generative AI at Work"><code>S-001</code></a></td></tr><tr data-effect="positive" data-direction="positive" data-outcome="policy_effectiveness" data-search="e-002 st-002 sample-writing experimental evidence on the productivity effects of generative artificial intelligence chatgpt 缩短了短篇职业写作任务用时;对客服而言属于间接证据。 受过大学教育的职场人士 positive s-002"><td><code>E-002</code></td><td><strong>Policy Effectiveness</strong></td><td><span class="dir pos">正向效应</span><span class="relation-note">与主张关系: 支持</span></td><td><div class="quality-cell"><span class="num">7</span><span class="quality-meter" aria-hidden="true"><i style="width:70%"></i></span></div></td><td class="claim-cell"><p>ChatGPT 缩短了短篇职业写作任务用时;对客服而言属于间接证据。</p><details class="matrix-row-detail"><summary>查看完整证据</summary><dl class="evidence-detail-grid"><div class="evidence-detail-row"><dt>研究 ID</dt><dd>ST-002</dd></div><div class="evidence-detail-row"><dt>样本 ID</dt><dd>SAMPLE-writing</dd></div><div class="evidence-detail-row"><dt>研究标题</dt><dd>Experimental evidence on the productivity effects of generative artificial intelligence</dd></div><div class="evidence-detail-row"><dt>来源标题</dt><dd>Experimental evidence on the productivity effects of generative artificial intelligence</dd></div><div class="evidence-detail-row"><dt>年份</dt><dd>2023</dd></div><div class="evidence-detail-row"><dt>研究设计</dt><dd>随机对照试验</dd></div><div class="evidence-detail-row"><dt>研究人群</dt><dd>受过大学教育的职场人士</dd></div><div class="evidence-detail-row"><dt>样本量</dt><dd>453</dd></div><div class="evidence-detail-row"><dt>结果测量</dt><dd>自报任务用时约减少 40%;评定写作质量约提高 18% 是另一项指标。</dd></div><div class="evidence-detail-row"><dt>效应方向</dt><dd>正向效应</dd></div><div class="evidence-detail-row"><dt>与主张关系</dt><dd>支持</dd></div><div class="evidence-detail-row"><dt>局限</dt><dd>间接证据,不可直接推广:短时激励写作任务不要求精确事实或客户特定情境。</dd></div><div class="evidence-detail-row"><dt>质量维度</dt><dd>D1 研究设计=2 · D2 样本质量=2 · D3 测量效度=1 · D4 时间强度=1 · D5 直接性=1</dd></div><div class="evidence-detail-row"><dt>质量分</dt><dd>7.0</dd></div><div class="evidence-detail-row"><dt>证据状态</dt><dd>已支持</dd></div><div class="evidence-detail-row"><dt>完整主张</dt><dd>ChatGPT 缩短了短篇职业写作任务用时;对客服而言属于间接证据。</dd></div><div class="evidence-detail-row"><dt>来源位置</dt><dd>https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf</dd></div><div class="evidence-detail-row"><dt>可验证链接</dt><dd><a href="https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf">https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf</a></dd></div></dl></details></td><td><a class="source-link" href="https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf" title="Experimental evidence on the productivity effects of generative artificial intelligence"><code>S-002</code></a></td></tr><tr data-effect="negative" data-direction="negative" data-outcome="implementation_risk" data-search="e-003 st-003 sample-consulting-outside navigating the jagged technological frontier: field experimental evidence of the effects of artificial intelligence on knowledge worker productivity and quality 在超出能力边界的任务中 ai 可能降低正确率;咨询实验对客服属于间接证据。 参与超出能力边界实验的 bcg 顾问 negative s-003"><td><code>E-003</code></td><td><strong>Implementation Risk</strong></td><td><span class="dir neg">负向效应</span><span class="relation-note">与主张关系: 支持</span></td><td><div class="quality-cell"><span class="num">8</span><span class="quality-meter" aria-hidden="true"><i style="width:80%"></i></span></div></td><td class="claim-cell"><p>在超出能力边界的任务中 AI 可能降低正确率;咨询实验对客服属于间接证据。</p><details class="matrix-row-detail"><summary>查看完整证据</summary><dl class="evidence-detail-grid"><div class="evidence-detail-row"><dt>研究 ID</dt><dd>ST-003</dd></div><div class="evidence-detail-row"><dt>样本 ID</dt><dd>SAMPLE-consulting-outside</dd></div><div class="evidence-detail-row"><dt>研究标题</dt><dd>Navigating the Jagged Technological Frontier: Field Experimental Evidence of the Effects of Artificial Intelligence on Knowledge Worker Productivity and Quality</dd></div><div class="evidence-detail-row"><dt>来源标题</dt><dd>Navigating the Jagged Technological Frontier: Field Experimental Evidence of the Effects of Artificial Intelligence on Knowledge Worker Productivity and Quality</dd></div><div class="evidence-detail-row"><dt>年份</dt><dd>2026</dd></div><div class="evidence-detail-row"><dt>研究设计</dt><dd>随机对照试验</dd></div><div class="evidence-detail-row"><dt>研究人群</dt><dd>参与超出能力边界实验的 BCG 顾问</dd></div><div class="evidence-detail-row"><dt>样本量</dt><dd>373</dd></div><div class="evidence-detail-row"><dt>结果测量</dt><dd>商业建议正确率:合并 AI 组约低 19 个百分点;表 7 为 373 人,不是 758 人。</dd></div><div class="evidence-detail-row"><dt>效应方向</dt><dd>负向效应</dd></div><div class="evidence-detail-row"><dt>与主张关系</dt><dd>支持</dd></div><div class="evidence-detail-row"><dt>局限</dt><dd>间接证据,不可直接推广:咨询顾问处理实验商业案例,并非真实客服工单。</dd></div><div class="evidence-detail-row"><dt>质量维度</dt><dd>D1 研究设计=2 · D2 样本质量=2 · D3 测量效度=2 · D4 时间强度=1 · D5 直接性=1</dd></div><div class="evidence-detail-row"><dt>质量分</dt><dd>8.0</dd></div><div class="evidence-detail-row"><dt>证据状态</dt><dd>已支持</dd></div><div class="evidence-detail-row"><dt>完整主张</dt><dd>在超出能力边界的任务中 AI 可能降低正确率;咨询实验对客服属于间接证据。</dd></div><div class="evidence-detail-row"><dt>来源位置</dt><dd>https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838</dd></div><div class="evidence-detail-row"><dt>可验证链接</dt><dd><a href="https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838">https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838</a></dd></div></dl></details></td><td><a class="source-link" href="https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838" title="Navigating the Jagged Technological Frontier: Field Experimental Evidence of the Effects of Artificial Intelligence on Knowledge Worker Productivity and Quality"><code>S-003</code></a></td></tr><tr data-effect="negative" data-direction="negative" data-outcome="implementation_risk" data-search="e-004 st-001 sample-support-all generative ai at work 须单独监测资深高技能客服的质量,不能假定所有岗位群体均受益。 资深高技能客服人员 negative s-001"><td><code>E-004</code></td><td><strong>Implementation Risk</strong></td><td><span class="dir neg">负向效应</span><span class="relation-note">与主张关系: 支持</span></td><td><div class="quality-cell"><span class="num">8</span><span class="quality-meter" aria-hidden="true"><i style="width:80%"></i></span></div></td><td class="claim-cell"><p>须单独监测资深高技能客服的质量,不能假定所有岗位群体均受益。</p><details class="matrix-row-detail"><summary>查看完整证据</summary><dl class="evidence-detail-grid"><div class="evidence-detail-row"><dt>研究 ID</dt><dd>ST-001</dd></div><div class="evidence-detail-row"><dt>样本 ID</dt><dd>SAMPLE-support-all</dd></div><div class="evidence-detail-row"><dt>研究标题</dt><dd>Generative AI at Work</dd></div><div class="evidence-detail-row"><dt>来源标题</dt><dd>Generative AI at Work</dd></div><div class="evidence-detail-row"><dt>年份</dt><dd>2025</dd></div><div class="evidence-detail-row"><dt>研究设计</dt><dd>准实验</dd></div><div class="evidence-detail-row"><dt>研究人群</dt><dd>资深高技能客服人员</dd></div><div class="evidence-detail-row"><dt>结果测量</dt><dd>资历最深、技能最高的客服群体出现小幅质量下降。</dd></div><div class="evidence-detail-row"><dt>效应方向</dt><dd>负向效应</dd></div><div class="evidence-detail-row"><dt>与主张关系</dt><dd>支持</dd></div><div class="evidence-detail-row"><dt>局限</dt><dd>与 E-001 属于同一研究;未提取该亚组样本量,不是独立重复验证。</dd></div><div class="evidence-detail-row"><dt>质量维度</dt><dd>D1 研究设计=1 · D2 样本质量=1 · D3 测量效度=2 · D4 时间强度=2 · D5 直接性=2</dd></div><div class="evidence-detail-row"><dt>质量分</dt><dd>8.0</dd></div><div class="evidence-detail-row"><dt>证据状态</dt><dd>已支持</dd></div><div class="evidence-detail-row"><dt>完整主张</dt><dd>须单独监测资深高技能客服的质量,不能假定所有岗位群体均受益。</dd></div><div class="evidence-detail-row"><dt>来源位置</dt><dd>https://academic.oup.com/qje/article/140/2/889/7990658</dd></div><div class="evidence-detail-row"><dt>可验证链接</dt><dd><a href="https://academic.oup.com/qje/article/140/2/889/7990658">https://academic.oup.com/qje/article/140/2/889/7990658</a></dd></div></dl></details></td><td><a class="source-link" href="https://academic.oup.com/qje/article/140/2/889/7990658" title="Generative AI at Work"><code>S-001</code></a></td></tr></tbody></table></div></div></section><section id="full-03-quality" class="full-chapter" data-full-chapter><header class="full-chapter-header"><h2>03 证据可信度、反证与方法审计</h2><p class="full-chapter-lead">检查证据为什么可信、哪里冲突,以及哪些结论必须降级。</p></header><div class="full-chapter-body"><section class="method-review-group"><header class="method-review-title"><h3>审查目标:overall</h3><span class="method-verdict">关注</span></header><div class="method-audit-grid"><article class="method-audit-item method-met"><div class="method-audit-head"><strong>evidence level</strong><span class="method-status">通过</span></div><p></p></article><article class="method-audit-item method-partial"><div class="method-audit-head"><strong>causal identification</strong><span class="method-status">部分</span></div><p></p></article><article class="method-audit-item method-partial"><div class="method-audit-head"><strong>external validity</strong><span class="method-status">部分</span></div><p></p></article><article class="method-audit-item method-missing"><div class="method-audit-head"><strong>cost evidence</strong><span class="method-status">缺失</span></div><p></p></article><article class="method-audit-item method-partial"><div class="method-audit-head"><strong>stakeholder representation</strong><span class="method-status">部分</span></div><p></p></article><article class="method-audit-item method-partial"><div class="method-audit-head"><strong>implementation evidence</strong><span class="method-status">部分</span></div><p></p></article><article class="method-audit-item method-partial"><div class="method-audit-head"><strong>equity analysis</strong><span class="method-status">部分</span></div><p></p></article><article class="method-audit-item method-partial"><div class="method-audit-head"><strong>effect size reported</strong><span class="method-status">部分</span></div><p></p></article><article class="method-audit-item method-partial"><div class="method-audit-head"><strong>uncertainty quantified</strong><span class="method-status">部分</span></div><p></p></article><article class="method-audit-item method-met"><div class="method-audit-head"><strong>comparator clarity</strong><span class="method-status">通过</span></div><p></p></article><article class="method-audit-item method-partial"><div class="method-audit-head"><strong>publication bias risk</strong><span class="method-status">部分</span></div><p></p></article><article class="method-audit-item method-met"><div class="method-audit-head"><strong>generalizability claims</strong><span class="method-status">通过</span></div><p></p></article></div><div class="method-guard-wrap"><strong>任务 vs 学习护栏:</strong><p class="method-guard">教学结果不适用;生产率并非学生学习效果主张。</p></div></section><p>无数据。</p><div class="evidence-tribunal" data-visual="evidence-tribunal-grid"><p class="tribunal-summary"><strong>决策:</strong>试点验证 · <strong>置信度:</strong>中</p><div class="tribunal-grid"><article class="tribunal-card supported"><header><span aria-hidden="true">✓</span><h3>可以主张</h3><span class="tribunal-count">4</span></header><ul><li><p>在有边界的客服场景中,AI 辅助可缩短会话处理时间;吞吐量是另一项指标。 — E-001</p><div class="tribunal-evidence-refs"><code>E-001</code></div></li><li><p>ChatGPT 缩短了短篇职业写作任务用时;对客服而言属于间接证据。 — E-002</p><div class="tribunal-evidence-refs"><code>E-002</code></div></li><li><p>在超出能力边界的任务中 AI 可能降低正确率;咨询实验对客服属于间接证据。 — E-003</p><div class="tribunal-evidence-refs"><code>E-003</code></div></li><li><p>须单独监测资深高技能客服的质量,不能假定所有岗位群体均受益。 — E-004</p><div class="tribunal-evidence-refs"><code>E-004</code></div></li></ul></article><article class="tribunal-card uncertain"><header><span aria-hidden="true">?</span><h3>尚不能主张</h3><span class="tribunal-count">1</span></header><ul><li><p>这组选编证据尚未确立本企业净成本、隐私事件率、亚组服务质量及持续表现 [无直接证据]。</p></li></ul></article><article class="tribunal-card contradicted"><header><span aria-hidden="true">×</span><h3>被反驳的主张</h3><span class="tribunal-count">0</span></header><ul><li>无数据。</li></ul></article><article class="tribunal-card missing"><header><span aria-hidden="true">…</span><h3>缺失证据</h3><span class="tribunal-count">1</span></header><ul><li><p>这组选编证据尚未确立本企业净成本、隐私事件率、亚组服务质量及持续表现 [无直接证据]。</p></li></ul></article></div><details class="supporting-visual"><summary>EvidenceFlow 协议</summary><svg viewBox="0 0 720 260" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="EvidenceFlow 协议流程"><title>EvidenceFlow 协议流程</title><desc>从问题框架、检索、抓取验证、证据抽取、反方质疑、方法审计、裁决到适用性与干预评价的完整流程。</desc><defs><marker id="arr-zh-full-workflow" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"><path d="M0,0 L6,3 L0,6 Z" fill="#8A867E"/></marker></defs><rect width="720" height="260" fill="#FCFAF6" rx="12"/><text x="24" y="34" font-size="16" font-weight="700" fill="#3A3833">EvidenceFlow 协议</text><rect x="24" y="100" width="64" height="52" rx="8" fill="#B8694A"/><text x="56.0" y="126.0" text-anchor="middle" fill="#FFFFFF" font-size="10" font-weight="600"><tspan x="56.0" y="126.0">问题框架</tspan></text><line x1="88" y1="126" x2="100" y2="126" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-zh-full-workflow)"/><rect x="100" y="100" width="64" height="52" rx="8" fill="#B8694A"/><text x="132.0" y="126.0" text-anchor="middle" fill="#FFFFFF" font-size="10" font-weight="600"><tspan x="132.0" y="126.0">检索</tspan></text><line x1="164" y1="126" x2="176" y2="126" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-zh-full-workflow)"/><rect x="176" y="100" width="64" height="52" rx="8" fill="#B8694A"/><text x="208.0" y="126.0" text-anchor="middle" fill="#FFFFFF" font-size="10" font-weight="600"><tspan x="208.0" y="126.0">抓取</tspan><tspan x="208.0" y="140.0">验证</tspan></text><line x1="240" y1="126" x2="252" y2="126" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-zh-full-workflow)"/><rect x="252" y="100" width="64" height="52" rx="8" fill="#B8694A"/><text x="284.0" y="126.0" text-anchor="middle" fill="#FFFFFF" font-size="10" font-weight="600"><tspan x="284.0" y="126.0">证据抽取</tspan></text><line x1="316" y1="126" x2="328" y2="126" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-zh-full-workflow)"/><rect x="328" y="100" width="64" height="52" rx="8" fill="#5E8A6A"/><text x="360.0" y="126.0" text-anchor="middle" fill="#FFFFFF" font-size="10" font-weight="600"><tspan x="360.0" y="126.0">反方质疑</tspan></text><line x1="392" y1="126" x2="404" y2="126" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-zh-full-workflow)"/><rect x="404" y="100" width="64" height="52" rx="8" fill="#5E8A6A"/><text x="436.0" y="126.0" text-anchor="middle" fill="#FFFFFF" font-size="10" font-weight="600"><tspan x="436.0" y="126.0">方法</tspan><tspan x="436.0" y="140.0">审计</tspan></text><line x1="468" y1="126" x2="480" y2="126" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-zh-full-workflow)"/><rect x="480" y="100" width="64" height="52" rx="8" fill="#C99A4A"/><text x="512.0" y="126.0" text-anchor="middle" fill="#FFFFFF" font-size="10" font-weight="600"><tspan x="512.0" y="126.0">裁决</tspan></text><line x1="544" y1="126" x2="556" y2="126" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-zh-full-workflow)"/><rect x="556" y="100" width="64" height="52" rx="8" fill="#C99A4A"/><text x="588.0" y="126.0" text-anchor="middle" fill="#FFFFFF" font-size="10" font-weight="600"><tspan x="588.0" y="126.0">适用性</tspan></text><line x1="620" y1="126" x2="632" y2="126" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-zh-full-workflow)"/><rect x="632" y="100" width="64" height="52" rx="8" fill="#C99A4A"/><text x="664.0" y="126.0" text-anchor="middle" fill="#FFFFFF" font-size="10" font-weight="600"><tspan x="664.0" y="126.0">干预</tspan><tspan x="664.0" y="140.0">评价</tspan></text></svg></details><details class="supporting-visual"><summary>裁决信息图</summary><svg viewBox="0 0 720 260" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="证据裁决信息图"><title>证据裁决信息图</title><desc>可以主张与不可主张的证据 ID 与建议决策徽章;完整主张文本见下方裁决卡片。</desc><defs><marker id="arr-zh-full-tribunal" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"><path d="M0,0 L6,3 L0,6 Z" fill="#8A867E"/></marker></defs><rect width="720" height="260" fill="#FCFAF6" rx="12"/><text x="24" y="34" font-size="16" font-weight="700" fill="#3A3833">证据裁决</text><text x="24" y="180" font-size="13" font-weight="700" fill="#3A3833">冲突来源</text><text x="24" y="202" font-size="11" fill="#8A867E">详见下方裁决卡片</text><rect x="24" y="216" width="180" height="28" rx="14" fill="#C99A4A"/><text x="114" y="235" text-anchor="middle" font-size="13" font-weight="700" fill="#fff">试点验证</text><text x="250" y="80" font-size="13" font-weight="700" fill="#5E8A6A">可以主张 (4)</text><circle cx="254" cy="100" r="3" fill="#5E8A6A"/><text x="266" y="105" font-size="11" fill="#3A3833">E-001</text><circle cx="254" cy="122" r="3" fill="#5E8A6A"/><text x="266" y="127" font-size="11" fill="#3A3833">E-002</text><circle cx="254" cy="144" r="3" fill="#5E8A6A"/><text x="266" y="149" font-size="11" fill="#3A3833">E-003</text><circle cx="254" cy="166" r="3" fill="#5E8A6A"/><text x="266" y="171" font-size="11" fill="#3A3833">E-004</text><text x="490" y="80" font-size="13" font-weight="700" fill="#A85B53">不可主张 (1)</text><circle cx="494" cy="100" r="3" fill="#A85B53"/><text x="506" y="105" font-size="11" fill="#3A3833">(无)</text></svg></details></div><div class="trace-chain" data-visual="trace-chain"><article class="trace-chain-card"><div class="trace-claim-node"><strong>C-001</strong><p class="trace-claim-text">在有边界的客服场景中,AI 辅助可缩短会话处理时间;吞吐量是另一项指标。</p></div><div class="trace-arrow">↓</div><div class="trace-evidence-list"><div class="trace-evidence-node"><code>E-001</code><span>Policy Effectiveness</span><span class="dir pos">正向效应</span><span class="trace-relation">主张关系: 支持</span><span>Q 9.0</span><span class="trace-arrow">→</span><a href="https://academic.oup.com/qje/article/140/2/889/7990658"><code>S-001</code></a></div></div></article><article class="trace-chain-card"><div class="trace-claim-node"><strong>C-002</strong><p class="trace-claim-text">ChatGPT 缩短了短篇职业写作任务用时;对客服而言属于间接证据。</p></div><div class="trace-arrow">↓</div><div class="trace-evidence-list"><div class="trace-evidence-node"><code>E-002</code><span>Policy Effectiveness</span><span class="dir pos">正向效应</span><span class="trace-relation">主张关系: 支持</span><span>Q 7.0</span><span class="trace-arrow">→</span><a href="https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf"><code>S-002</code></a></div></div></article><article class="trace-chain-card"><div class="trace-claim-node"><strong>C-003</strong><p class="trace-claim-text">在超出能力边界的任务中 AI 可能降低正确率;咨询实验对客服属于间接证据。</p></div><div class="trace-arrow">↓</div><div class="trace-evidence-list"><div class="trace-evidence-node"><code>E-003</code><span>Implementation Risk</span><span class="dir neg">负向效应</span><span class="trace-relation">主张关系: 支持</span><span>Q 8.0</span><span class="trace-arrow">→</span><a href="https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838"><code>S-003</code></a></div></div></article><article class="trace-chain-card"><div class="trace-claim-node"><strong>C-004</strong><p class="trace-claim-text">须单独监测资深高技能客服的质量,不能假定所有岗位群体均受益。</p></div><div class="trace-arrow">↓</div><div class="trace-evidence-list"><div class="trace-evidence-node"><code>E-004</code><span>Implementation Risk</span><span class="dir neg">负向效应</span><span class="trace-relation">主张关系: 支持</span><span>Q 8.0</span><span class="trace-arrow">→</span><a href="https://academic.oup.com/qje/article/140/2/889/7990658"><code>S-001</code></a></div></div></article></div><div id="chart-trace-zh" class="chart-mount" aria-label="主张-证据追溯"></div><p class="chart-interpretation"><strong>这意味着什么:</strong>每个重要主张都必须能追到 Evidence ID 和原始来源。</p></div></section><section id="full-04-action" class="full-chapter" data-full-chapter><header class="full-chapter-header"><h2>04 适用范围与教学行动</h2><p class="full-chapter-lead">把可外推范围、护栏和教学动作连接到具体证据。</p></header><div class="full-chapter-body"><p><strong>目标人群:</strong>企业客服人员,按资历和基线技能分层。</p>
2151
+ <p><strong>目标情境:</strong>使用经审核知识库、由人工监督的客服流程。</p>
2152
+ <p><strong>适用条件:</strong></p><ul><li>从低风险且知识库覆盖的队列开始;客服审查并编辑每条建议回复。</li><li>按资历和基线技能分层;保留专家判断并记录复核工作量。</li><li>试点前落实客户数据最小化与脱敏、访问和留存限制,并审查供应商数据使用条款。</li><li>陌生、模糊、敏感或高风险请求交由合格人员处理;禁止自动作出承诺。</li></ul><div class="boundary-block"><h3>不可外推的结论</h3><ul><li>声称普遍收益或自动部署安全超出证据边界:没有纳入研究测量隐私事件、本地净成本或亚组服务质量。</li></ul></div><div class="evidence-to-action" data-visual="evidence-to-action"><article class="action-node action-evidence"><span>证据</span><p class="action-node-text">在有边界的客服场景中,AI 辅助可缩短会话处理时间;吞吐量是另一项指标。 — E-001</p></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-applicability"><span>适用性</span><p class="action-node-text">从低风险且知识库覆盖的队列开始;客服审查并编辑每条建议回复。; 按资历和基线技能分层;保留专家判断并记录复核工作量。; 试点前落实客户数据最小化与脱敏、访问和留存限制,并审查供应商数据使用条款。; 陌生、模糊、敏感或高风险请求交由合格人员处理;禁止自动作出承诺。</p></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-decision"><span>决策</span><p class="action-node-text">试点验证</p></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-guardrails"><span>护栏</span><p class="action-node-text">从低风险且知识库覆盖的队列开始;客服审查并编辑每条建议回复。</p></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-stop"><span>停止条件</span><p class="action-node-text">一旦核实隐私泄漏、严重不安全建议或越权客户承诺,立即暂停,调查后再决定是否恢复。; 若盲评质量越过预先约定的非劣界值(包括各资历分层),暂停扩展。</p></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-evaluation"><span>评价</span><p class="action-node-text">仅在质量非劣、每付薪工时有效解决量提高、净成本可接受且无未解决严重安全事件时考虑扩展;阈值须在本地预先约定。</p></article></div><p><strong>目标人群:</strong>企业客服人员,按资历和基线技能分层。 · <strong>试点时长:</strong>建议:两周基线和六周试点;尚未执行。</p>
2153
+ <p><strong>AI 使用规则:</strong>从低风险且知识库覆盖的队列开始;客服审查并编辑每条建议回复。</p>
2154
+ <h3>停止条件</h3><ul><li>一旦核实隐私泄漏、严重不安全建议或越权客户承诺,立即暂停,调查后再决定是否恢复。</li><li>若盲评质量越过预先约定的非劣界值(包括各资历分层),暂停扩展。</li></ul>
2155
+ <h3>干预时间线信息图</h3>
2156
+ <svg viewBox="0 0 720 260" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="教学干预时间线"><title>教学干预时间线</title><desc>各试点阶段的短名称与活动数量;完整 AI 使用规则见阶段说明块。</desc><defs><marker id="arr-zh-full-intervention" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"><path d="M0,0 L6,3 L0,6 Z" fill="#8A867E"/></marker></defs><rect width="720" height="260" fill="#FCFAF6" rx="12"/><text x="24" y="34" font-size="16" font-weight="700" fill="#3A3833">教学干预时间线</text><rect x="24" y="100" width="160" height="96" rx="8" fill="#B8694A"/><text x="104.0" y="148.0" text-anchor="middle" fill="#FFFFFF" font-size="12" font-weight="600"><tspan x="104.0" y="148.0">Phase 1</tspan></text></svg></div></section><section id="full-05-evaluation" class="full-chapter" data-full-chapter><header class="full-chapter-header"><h2>05 试点设计、评估与停止条件</h2><p class="full-chapter-lead">用独立学习结果验证试点,并预先写清停止条件。</p></header><div class="full-chapter-body"><p><strong>研究问题:</strong>企业客服团队是否应引入生成式 AI 助手?</p>
2157
+ <p><strong>基线:</strong>分配前记录解决率、付薪工时、重复联系、盲评质量及复核成本。</p>
2158
+ <p><strong>后测:</strong>试点结束时评估相同结果;独立审计隐私与不安全承诺。</p>
2159
+ <p><strong>成功阈值:</strong>仅在质量非劣、每付薪工时有效解决量提高、净成本可接受且无未解决严重安全事件时考虑扩展;阈值须在本地预先约定。</p>
2160
+ <p><strong>分析计划:</strong>入组前预注册意向治疗比较、团队聚类不确定性及亚组估计。根据本地基线变异和业务目标确定样本量与非劣界值。</p>
2161
+ <h3>评价设计信息图</h3>
2162
+ <svg viewBox="0 0 720 260" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="评价设计流程"><title>评价设计流程</title><desc>基线、后测、保持测试与迁移测试的评价流程;完整指标与分析计划见评估章节。</desc><defs><marker id="arr-zh-full-evaluation" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"><path d="M0,0 L6,3 L0,6 Z" fill="#8A867E"/></marker></defs><rect width="720" height="260" fill="#FCFAF6" rx="12"/><text x="24" y="34" font-size="16" font-weight="700" fill="#3A3833">评价设计流程</text><rect x="30" y="110" width="150" height="56" rx="8" fill="#5E8A6A"/><text x="105.0" y="138.0" text-anchor="middle" fill="#FFFFFF" font-size="12" font-weight="600"><tspan x="105.0" y="138.0">基线</tspan></text><text x="105.0" y="148" text-anchor="middle" font-size="9" fill="#fff" opacity="0.95">前测</text><line x1="180" y1="138" x2="192" y2="138" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-zh-full-evaluation)"/><rect x="192" y="110" width="150" height="56" rx="8" fill="#5E8A6A"/><text x="267.0" y="138.0" text-anchor="middle" fill="#FFFFFF" font-size="12" font-weight="600"><tspan x="267.0" y="138.0">后测</tspan></text><text x="267.0" y="148" text-anchor="middle" font-size="9" fill="#fff" opacity="0.95">后测</text><line x1="342" y1="138" x2="354" y2="138" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-zh-full-evaluation)"/><rect x="354" y="110" width="150" height="56" rx="8" fill="#5E8A6A"/><text x="429.0" y="138.0" text-anchor="middle" fill="#FFFFFF" font-size="12" font-weight="600"><tspan x="429.0" y="138.0">保持</tspan></text><text x="429.0" y="148" text-anchor="middle" font-size="9" fill="#fff" opacity="0.95">保持测试</text><line x1="504" y1="138" x2="516" y2="138" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-zh-full-evaluation)"/><rect x="516" y="110" width="150" height="56" rx="8" fill="#5E8A6A"/><text x="591.0" y="138.0" text-anchor="middle" fill="#FFFFFF" font-size="12" font-weight="600"><tspan x="591.0" y="138.0">迁移</tspan></text><text x="591.0" y="148" text-anchor="middle" font-size="9" fill="#fff" opacity="0.95">迁移测试(无 AI)</text></svg><div class="visual-suppressed"><strong>基准图已抑制</strong><p>result.json 未携带 benchmark.baselines,本图不绘制;基准表现见独立基准报告。</p></div></div></section><section id="full-06-sources" class="full-chapter" data-full-chapter><header class="full-chapter-header"><h2>06 来源、溯源与附录</h2><p class="full-chapter-lead">保留原始来源、URL、证据 ID 和获取信息,确保可回查。</p></header><div class="full-chapter-body"><h3>来源列表</h3><div class='table-wrap'><table class='data-table source-table'><thead><tr><th>ID</th><th>标题</th><th>年份</th><th>权威级别</th><th>可验证位置</th></tr></thead><tbody><tr><td><code>S-001</code></td><td class='cell-main source-title-cell'>Generative AI at Work<details class="source-expander detail-expander"><summary>查看来源与溯源</summary><dl class="source-detail-grid"><div class="source-detail-row"><dt>原文标题</dt><dd>Generative AI at Work</dd></div><div class="source-detail-row"><dt>年份</dt><dd>2025</dd></div><div class="source-detail-row"><dt>权威级别</dt><dd>T1 DOI 可验证论文</dd></div><div class="source-detail-row"><dt>获取方式</dt><dd>builtin</dd></div><div class="source-detail-row"><dt>获取状态</dt><dd>FETCH_VALID</dd></div><div class="source-detail-row"><dt>可验证链接</dt><dd><a href="https://academic.oup.com/qje/article/140/2/889/7990658">https://academic.oup.com/qje/article/140/2/889/7990658</a></dd></div></dl></details></td><td>2025</td><td>T1 DOI 可验证论文</td><td class='cell-main'><a href='https://academic.oup.com/qje/article/140/2/889/7990658'>https://academic.oup.com/qje/article/140/2/889/7990658</a></td></tr><tr><td><code>S-002</code></td><td class='cell-main source-title-cell'>Experimental evidence on the productivity effects of generative artificial intelligence<details class="source-expander detail-expander"><summary>查看来源与溯源</summary><dl class="source-detail-grid"><div class="source-detail-row"><dt>原文标题</dt><dd>Experimental evidence on the productivity effects of generative artificial intelligence</dd></div><div class="source-detail-row"><dt>年份</dt><dd>2023</dd></div><div class="source-detail-row"><dt>权威级别</dt><dd>T1 DOI 可验证论文</dd></div><div class="source-detail-row"><dt>获取方式</dt><dd>builtin</dd></div><div class="source-detail-row"><dt>获取状态</dt><dd>FETCH_VALID</dd></div><div class="source-detail-row"><dt>可验证链接</dt><dd><a href="https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf">https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf</a></dd></div></dl></details></td><td>2023</td><td>T1 DOI 可验证论文</td><td class='cell-main'><a href='https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf'>https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf</a></td></tr><tr><td><code>S-003</code></td><td class='cell-main source-title-cell'>Navigating the Jagged Technological Frontier: Field Experimental Evidence of the Effects of Artificial Intelligence on Knowledge Worker Productivity and Quality<details class="source-expander detail-expander"><summary>查看来源与溯源</summary><dl class="source-detail-grid"><div class="source-detail-row"><dt>原文标题</dt><dd>Navigating the Jagged Technological Frontier: Field Experimental Evidence of the Effects of Artificial Intelligence on Knowledge Worker Productivity and Quality</dd></div><div class="source-detail-row"><dt>年份</dt><dd>2026</dd></div><div class="source-detail-row"><dt>权威级别</dt><dd>T1 DOI 可验证论文</dd></div><div class="source-detail-row"><dt>获取方式</dt><dd>builtin</dd></div><div class="source-detail-row"><dt>获取状态</dt><dd>FETCH_VALID</dd></div><div class="source-detail-row"><dt>可验证链接</dt><dd><a href="https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838">https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838</a></dd></div></dl></details></td><td>2026</td><td>T1 DOI 可验证论文</td><td class='cell-main'><a href='https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838'>https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838</a></td></tr></tbody></table></div><h3>Fetch 溯源</h3><div class='table-wrap'><table class='data-table'><thead><tr><th>来源</th><th>Fetch 方式</th><th>状态</th><th>降级</th><th>时间</th></tr></thead><tbody><tr><td><code>S-001</code></td><td>builtin</td><td>FETCH_VALID</td><td></td><td></td></tr><tr><td><code>S-002</code></td><td>builtin</td><td>FETCH_VALID</td><td></td><td></td></tr><tr><td><code>S-003</code></td><td>builtin</td><td>FETCH_VALID</td><td></td><td></td></tr></tbody></table></div></div></section></main></div>
2163
+ </div>
2164
+ <footer class="report-footer"><p>EduEvidence 证据报告 · Schema PASS · Claim Binding PASS · Numeric Consistency PASS · Bilingual Structure PASS · 语言人话化 PASS · 无伪精度 PASS · Lieflat 数据溯源 PASS · 坐标轴无失真 NOT_CHECKED · 色盲安全 NOT_CHECKED · 单文件离线可打开 · 数据源:result.json</p></footer>
2165
+ </div>
2166
+ <div class="report-shell" data-lang-body="en">
2167
+ <header class="report-header">
2168
+ <div class="report-brand-row"><span class="report-brand">EduEvidence</span><span class="generated-theme-chip">Claude Research [Light]</span><span class="data-origin-chip" data-origin="manual_curated">Data: real studies · manually curated</span></div>
2169
+ <h1>Should an enterprise customer-support team introduce a generative AI assistant?</h1>
2170
+ <p class="meta">Mode: Platform native · Generated: · Evidence: 4 · Sources: 3</p>
2171
+ <nav class="report-view-switcher" aria-label="report view">
2172
+ <button type="button" class="report-view-btn active" data-report-view="brief" aria-pressed="true">Visual Brief</button>
2173
+ <button type="button" class="report-view-btn" data-report-view="full" aria-pressed="false">Full Report</button>
2174
+ </nav>
2175
+ </header>
2176
+ <div class="report-page report-page-brief" data-report-page="brief"><nav class="brief-navigation" aria-label="Brief navigation"><a href="#brief-decision-en"><span>01</span>Decision first</a><a href="#brief-outcomes-en"><span>02</span>Task performance ≠ learning</a><a href="#brief-tribunal-en"><span>03</span>Evidence tribunal</a><a href="#brief-action-en"><span>04</span>Evidence to action</a><a href="#brief-sources-en"><span>05</span>Key sources</a></nav><div class="brief-reading-content"><section class="brief-block brief-decision" id="brief-decision-en"><header class="brief-block-header"><h2>Decision first</h2><p>What to do, how confident we are, and the most important evidence boundary.</p></header><div class="brief-block-body">
2177
+ <div class="decision-hero pilot" data-visual="decision-hero">
2178
+ <div class="hero-decision">
2179
+ <span class="eyebrow">Recommended decision</span>
2180
+ <strong class="decision-value">Pilot</strong>
2181
+ <span class="confidence-badge">Confidence · Moderate</span>
2182
+ </div>
2183
+ <p class="hero-rationale">A supervised pilot is warranted because one direct field study supports efficiency gains but also reveals heterogeneous quality effects. Indirect experiments identify task boundaries, while local safety and net value remain unknown.</p>
2184
+ <div class="hero-insights">
2185
+ <article class="hero-insight support"><span>Strongest supported conclusion</span><p class="hero-insight-text">Supervised AI assistance improves handling speed and answer consistency in customer-support work, with quality maintained.</p></article>
2186
+ <article class="hero-insight uncertain"><span>Key uncertainty / contradiction</span><p class="hero-insight-text">Evidence comes from adjacent writing and advisory settings rather than the support floor, so transfer to live customer conversations is unproven.</p></article>
2187
+ <article class="hero-insight risk"><span>Main risk</span><p class="hero-insight-text">Unsupervised or knowledge-base-free use can produce confident wrong answers to customers, and over-reliance erodes agent skill over time.</p></article>
2188
+ <article class="hero-insight next"><span>Next action</span><p class="hero-insight-text">Run a supervised pilot on approved knowledge bases with human review on every reply, and track escalation and correction rates.</p></article>
2189
+ </div>
2190
+ <p class="hero-provenance"><span>Evidence / sources</span> · 4 / 3</p>
2191
+ </div></div></section><section class="brief-block brief-outcomes" id="brief-outcomes-en"><header class="brief-block-header"><h2>Task performance ≠ learning</h2><p>Only informative outcome separation; positive, negative and null effects use effect_direction.</p></header><div class="brief-block-body"><div class="outcome-separation" data-visual="outcome-separation"><div class="visual-heading"><h3>Outcome Separation · Task performance ≠ learning</h3><p>Outcomes are adjudicated separately so faster training performance is not silently treated as evidence of learning.</p><p class="semantic-note">Effect direction comes from evidence.effect_direction; supporting a claim does not imply a positive outcome.</p></div><div class="outcome-groups"><article class="outcome-group outcome-other"><h3>Other outcomes</h3><ul><li><strong>Policy Effectiveness</strong><span class="outcome-states"><span class="dir pos">Positive effect 2</span></span></li><li><strong>Implementation Risk</strong><span class="outcome-states"><span class="dir neg">Negative effect 2</span></span></li></ul></article></div></div></div></section><section class="brief-block brief-tribunal" id="brief-tribunal-en"><header class="brief-block-header"><h2>Evidence tribunal</h2><p>Supported, uncertain, contradicted and missing evidence stay separated instead of flattened into long prose.</p></header><div class="brief-block-body"><div class="evidence-tribunal" data-visual="evidence-tribunal-grid"><p class="tribunal-summary"><strong>Decision: </strong>Pilot · <strong>Confidence: </strong>Moderate</p><div class="tribunal-grid"><article class="tribunal-card supported"><header><span aria-hidden="true">✓</span><h3>Can claim</h3><span class="tribunal-count">4</span></header><ul><li><p>AI assistance can shorten customer chat handling in a bounded support setting; throughput is a separate outcome. — E-001</p><div class="tribunal-evidence-refs"><code>E-001</code></div></li><li><p>ChatGPT reduced time on short professional writing tasks; this is indirect evidence for customer support. — E-002</p><div class="tribunal-evidence-refs"><code>E-002</code></div></li><li><p>AI can reduce correctness on tasks outside its capability frontier; consulting evidence is indirect for support. — E-003</p><div class="tribunal-evidence-refs"><code>E-003</code></div></li></ul><details class="tribunal-more"><summary>View 1 more</summary><ul><li><p>Experienced, high-skill support staff need separate quality monitoring rather than assumed uniform benefits. — E-004</p><div class="tribunal-evidence-refs"><code>E-004</code></div></li></ul></details></article><article class="tribunal-card uncertain"><header><span aria-hidden="true">?</span><h3>Cannot yet claim</h3><span class="tribunal-count">1</span></header><ul><li><p>Local net cost, privacy incident rates, subgroup service quality and sustained performance are not established by this selected evidence set [no direct evidence].</p></li></ul></article><article class="tribunal-card contradicted"><header><span aria-hidden="true">×</span><h3>Contradicted claims</h3><span class="tribunal-count">0</span></header><ul><li>No data.</li></ul></article><article class="tribunal-card missing"><header><span aria-hidden="true">…</span><h3>Missing evidence</h3><span class="tribunal-count">1</span></header><ul><li><p>Local net cost, privacy incident rates, subgroup service quality and sustained performance are not established by this selected evidence set [no direct evidence].</p></li></ul></article></div></div></div></section><section class="brief-block brief-action" id="brief-action-en"><header class="brief-block-header"><h2>Evidence to action</h2><p>Applicability, guardrails, stop conditions and evaluation form one executable path.</p></header><div class="brief-block-body"><div class="evidence-to-action" data-visual="evidence-to-action"><article class="action-node action-evidence"><span>Evidence</span><p class="action-node-text">AI assistance can shorten customer chat handling in a bounded support setting; throughput is a separate outcome. — E-001</p></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-applicability"><span>Applicability</span><div class="action-node-text"><p>Start with low-risk, knowledge-base-covered queues; agents inspect and edit every proposed reply.; Stratify by tenure and baseline skill;…</p><details class="detail-expander"><summary>Expand full explanation</summary><div class="detail-body"><p>Start with low-risk, knowledge-base-covered queues; agents inspect and edit every proposed reply.; Stratify by tenure and baseline skill; retain expert discretion and measure review workload.; Minimize and redact customer data, restrict access and retention, and review supplier data-use terms before a pilot.; Escalate unfamiliar, ambiguous, sensitive or high-stakes requests to qualified humans; no autonomous commitments.</p></div></details></div></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-decision"><span>Decision</span><p class="action-node-text">Pilot</p></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-guardrails"><span>Guardrails</span><p class="action-node-text">Start with low-risk, knowledge-base-covered queues; agents inspect and edit every proposed reply.</p></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-stop"><span>Stop conditions</span><div class="action-node-text"><p>Pause immediately after a verified privacy leak or a serious unsafe or unauthorized customer commitment; investigate before resuming.;…</p><details class="detail-expander"><summary>Expand full explanation</summary><div class="detail-body"><p>Pause immediately after a verified privacy leak or a serious unsafe or unauthorized customer commitment; investigate before resuming.; Pause expansion if blinded quality review crosses a pre-agreed noninferiority margin, including within experience strata.</p></div></details></div></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-evaluation"><span>Evaluation</span><div class="action-node-text"><p>Expand only if quality is noninferior, verified resolutions per paid hour improve, net cost is acceptable and no serious unresolved safety incident re…</p><details class="detail-expander"><summary>Expand full explanation</summary><div class="detail-body"><p>Expand only if quality is noninferior, verified resolutions per paid hour improve, net cost is acceptable and no serious unresolved safety incident remains; thresholds require local agreement.</p></div></details></div></article></div></div></section><section class="brief-block brief-lieflat" id="brief-lieflat-en"><header class="brief-block-header"><h2>Lieflat Editorial Gallery</h2><p>Charts selected and composed by AI from the Lieflat catalog; every number traces back to result.json.</p></header><div class="brief-block-body"><div class="lieflat-gallery-container"><figure class="lieflat-card" data-lieflat data-visual="lieflat-bubble_almanac" data-chart-id="lieflat-bubble-almanac.svg"><h3 class="lieflat-title">Year × dimension evidence almanac</h3><p class="lieflat-sub">Bubble area ∝ study count · solid core = significant results</p><div class="lieflat-figure"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 540 300" width="100%" height="100%" role="img" aria-label="Year × dimension evidence almanac" style="background:#FFFFFF;">
2192
+ <line x1="44" y1="70.0" x2="520" y2="70.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:0ms"/>
2193
+ <line x1="44" y1="77.0" x2="520" y2="77.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:14ms"/>
2194
+ <line x1="44" y1="84.0" x2="520" y2="84.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:28ms"/>
2195
+ <line x1="44" y1="91.0" x2="520" y2="91.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:42ms"/>
2196
+ <line x1="44" y1="98.0" x2="520" y2="98.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:56ms"/>
2197
+ <line x1="44" y1="105.0" x2="520" y2="105.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:70ms"/>
2198
+ <line x1="44" y1="112.0" x2="520" y2="112.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:84ms"/>
2199
+ <line x1="44" y1="119.0" x2="520" y2="119.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:98ms"/>
2200
+ <line x1="44" y1="126.0" x2="520" y2="126.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:112ms"/>
2201
+ <line x1="44" y1="133.0" x2="520" y2="133.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:126ms"/>
2202
+ <line x1="44" y1="140.0" x2="520" y2="140.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:140ms"/>
2203
+ <line x1="44" y1="147.0" x2="520" y2="147.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:154ms"/>
2204
+ <line x1="44" y1="154.0" x2="520" y2="154.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:168ms"/>
2205
+ <line x1="44" y1="161.0" x2="520" y2="161.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:182ms"/>
2206
+ <line x1="44" y1="168.0" x2="520" y2="168.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:196ms"/>
2207
+ <line x1="44" y1="175.0" x2="520" y2="175.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:210ms"/>
2208
+ <line x1="44" y1="182.0" x2="520" y2="182.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:224ms"/>
2209
+ <line x1="44" y1="189.0" x2="520" y2="189.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:238ms"/>
2210
+ <line x1="44" y1="196.0" x2="520" y2="196.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:252ms"/>
2211
+ <line x1="44" y1="203.0" x2="520" y2="203.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:266ms"/>
2212
+ <line x1="44" y1="210.0" x2="520" y2="210.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:280ms"/>
2213
+ <line x1="44" y1="217.0" x2="520" y2="217.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:294ms"/>
2214
+ <line x1="44" y1="224.0" x2="520" y2="224.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:308ms"/>
2215
+ <line x1="44" y1="231.0" x2="520" y2="231.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:322ms"/>
2216
+ <line x1="44" y1="238.0" x2="520" y2="238.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:336ms"/>
2217
+ <line x1="44" y1="245.0" x2="520" y2="245.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:350ms"/>
2218
+ <line x1="44" y1="252.0" x2="520" y2="252.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:364ms"/>
2219
+ <line x1="44" y1="259.0" x2="520" y2="259.0" stroke="#E4E3DC" stroke-width="0.5" class="lf-fade" style="--motion-delay:378ms"/>
2220
+ <text x="150" y="76" fill="#2A2925" font-size="9" font-weight="600" text-anchor="middle" class="lf-fade" style="--motion-delay:40ms">policy_effecti</text>
2221
+ <text x="484.8" y="76" fill="#2A2925" font-size="9" font-weight="600" text-anchor="middle" class="lf-fade" style="--motion-delay:140ms">implementation</text>
2222
+ <text x="96" y="96.0" fill="#6A6963" font-size="9" font-weight="800" text-anchor="end" class="lf-fade" style="--motion-delay:80ms">2023</text>
2223
+ <text x="96" y="140.0" fill="#6A6963" font-size="9" font-weight="800" text-anchor="end" class="lf-fade" style="--motion-delay:180ms">2025</text>
2224
+ <text x="96" y="184.0" fill="#6A6963" font-size="9" font-weight="800" text-anchor="end" class="lf-fade" style="--motion-delay:280ms">2026</text>
2225
+ <circle cx="150.0" cy="92.0" r="3.6" fill="#B8694A" fill-opacity="0.22" stroke="#B8694A" stroke-width="1.2" class="lf-pop" style="--motion-delay:100ms"><title>policy_effectiveness (2023) — N = 1 studies, significant = 0</title></circle>
2226
+ <circle cx="150.0" cy="136.0" r="3.6" fill="#B8694A" fill-opacity="0.22" stroke="#B8694A" stroke-width="1.2" class="lf-pop" style="--motion-delay:112ms"><title>policy_effectiveness (2025) — N = 1 studies, significant = 0</title></circle>
2227
+ <circle cx="520.0" cy="136.0" r="3.6" fill="#B8694A" fill-opacity="0.22" stroke="#B8694A" stroke-width="1.2" class="lf-pop" style="--motion-delay:124ms"><title>implementation_risk (2025) — N = 1 studies, significant = 0</title></circle>
2228
+ <circle cx="520.0" cy="180.0" r="3.6" fill="#B8694A" fill-opacity="0.22" stroke="#B8694A" stroke-width="1.2" class="lf-pop" style="--motion-delay:136ms"><title>implementation_risk (2026) — N = 1 studies, significant = 0</title></circle>
2229
+ </svg></div><figcaption class="lieflat-caption">Drawn only when years and outcome dimensions exist.</figcaption><p class="lieflat-src">L9 Bubble Almanac · Evidence.year X Dimension</p></figure><figure class="lieflat-card" data-lieflat data-visual="lieflat-matrix_heat" data-chart-id="lieflat-matrix-heat.svg"><h3 class="lieflat-title">Year × outcome evidence density</h3><p class="lieflat-sub">Each cell counts evidence items for that year and outcome</p><div class="lieflat-figure"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 540 200" width="100%" height="100%" role="img" aria-label="Year × outcome evidence density" style="background:#FFFFFF;">
2230
+ <text x="211.7" y="66" text-anchor="middle" font-size="9" font-weight="800" fill="#6A6963" class="lf-fade" style="--motion-delay:40ms">2023</text>
2231
+ <text x="335.0" y="66" text-anchor="middle" font-size="9" font-weight="800" fill="#6A6963" class="lf-fade" style="--motion-delay:140ms">2025</text>
2232
+ <text x="458.3" y="66" text-anchor="middle" font-size="9" font-weight="800" fill="#6A6963" class="lf-fade" style="--motion-delay:240ms">2026</text>
2233
+ <text x="138" y="97.0" text-anchor="end" font-size="8" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:60ms">policy effecti</text>
2234
+ <rect x="152.0" y="80.0" width="119.3" height="28" rx="4" fill="#B8694A" fill-opacity="0.90" class="lf-pop" style="--motion-delay:0ms"/>
2235
+ <text x="211.7" y="97.0" text-anchor="middle" font-size="8.0" font-weight="800" fill="#2A2925" class="lf-pop" style="--motion-delay:60ms">1</text>
2236
+ <rect x="275.3" y="80.0" width="119.3" height="28" rx="4" fill="#B8694A" fill-opacity="0.90" class="lf-pop" style="--motion-delay:12ms"/>
2237
+ <text x="335.0" y="97.0" text-anchor="middle" font-size="8.0" font-weight="800" fill="#2A2925" class="lf-pop" style="--motion-delay:72ms">1</text>
2238
+ <rect x="398.7" y="80.0" width="119.3" height="28" rx="4" fill="#E4E3DC" fill-opacity="0.5" class="lf-fade" style="--motion-delay:24ms"/>
2239
+ <text x="458.3" y="97.0" text-anchor="middle" font-size="8.0" font-weight="800" fill="#2A2925" class="lf-pop" style="--motion-delay:84ms">0</text>
2240
+ <text x="138" y="129.0" text-anchor="end" font-size="8" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:160ms">implementation</text>
2241
+ <rect x="152.0" y="112.0" width="119.3" height="28" rx="4" fill="#E4E3DC" fill-opacity="0.5" class="lf-fade" style="--motion-delay:12ms"/>
2242
+ <text x="211.7" y="129.0" text-anchor="middle" font-size="8.0" font-weight="800" fill="#2A2925" class="lf-pop" style="--motion-delay:72ms">0</text>
2243
+ <rect x="275.3" y="112.0" width="119.3" height="28" rx="4" fill="#B8694A" fill-opacity="0.90" class="lf-pop" style="--motion-delay:24ms"/>
2244
+ <text x="335.0" y="129.0" text-anchor="middle" font-size="8.0" font-weight="800" fill="#2A2925" class="lf-pop" style="--motion-delay:84ms">1</text>
2245
+ <rect x="398.7" y="112.0" width="119.3" height="28" rx="4" fill="#B8694A" fill-opacity="0.90" class="lf-pop" style="--motion-delay:36ms"/>
2246
+ <text x="458.3" y="129.0" text-anchor="middle" font-size="8.0" font-weight="800" fill="#2A2925" class="lf-pop" style="--motion-delay:96ms">1</text>
2247
+ </svg></div><figcaption class="lieflat-caption">Shows where the evidence sits across years and outcomes.</figcaption><p class="lieflat-src">L16 Matrix Heat · Evidence.year X Outcome Counts</p></figure><figure class="lieflat-card" data-lieflat data-visual="lieflat-hundred_field" data-chart-id="lieflat-hundred-field.svg"><h3 class="lieflat-title">Study-design composition</h3><p class="lieflat-sub">One cell = one study · shows which designs produced the evidence</p><div class="lieflat-figure"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 540 300" width="100%" height="100%" role="img" aria-label="Study-design composition" style="background:#FFFFFF;">
2248
+ <rect x="40.0" y="74.0" width="15.5" height="15.5" rx="3" fill="#B8694A" class="lf-pop" style="--motion-delay:0ms"><title>quasi_experimental — 1 study</title></rect>
2249
+ <rect x="58.0" y="74.0" width="15.5" height="15.5" rx="3" fill="#B8694A" class="lf-pop" style="--motion-delay:12ms"><title>quasi_experimental — 1 study</title></rect>
2250
+ <rect x="76.0" y="74.0" width="15.5" height="15.5" rx="3" fill="#5E8A6A" class="lf-pop" style="--motion-delay:24ms"><title>rct — 1 study</title></rect>
2251
+ <rect x="94.0" y="74.0" width="15.5" height="15.5" rx="3" fill="#5E8A6A" class="lf-pop" style="--motion-delay:36ms"><title>rct — 1 study</title></rect>
2252
+ <text x="30" y="270" font-size="8" font-weight="600" fill="#8F8E88" class="lf-fade" style="--motion-delay:400ms">one cell = one study</text>
2253
+ </svg></div><figcaption class="lieflat-caption">Reveals design skew faster than a table when several designs are present.</figcaption><p class="lieflat-src">L14 Hundred Field · Evidence.study Type Composition</p></figure><figure class="lieflat-card" data-lieflat data-visual="lieflat-tick_gauge" data-chart-id="lieflat-tick-gauge.svg"><h3 class="lieflat-title">Decision confidence</h3><p class="lieflat-sub">Single 0-100% gauge from the deterministic confidence formula</p><div class="lieflat-figure"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 540 290" width="100%" height="100%" role="img" aria-label="Decision confidence" style="background:#FFFFFF;">
2254
+ <line x1="240.0" y1="66.0" x2="240.0" y2="50.0" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:0ms"><title>0%</title></line>
2255
+ <line x1="244.3" y1="66.1" x2="245.1" y2="50.1" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:12ms"><title>1%</title></line>
2256
+ <line x1="248.7" y1="66.4" x2="250.2" y2="50.5" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:24ms"><title>2%</title></line>
2257
+ <line x1="253.0" y1="66.9" x2="255.2" y2="51.1" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:36ms"><title>3%</title></line>
2258
+ <line x1="257.2" y1="67.6" x2="260.2" y2="51.9" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:48ms"><title>4%</title></line>
2259
+ <line x1="261.5" y1="68.5" x2="265.2" y2="53.0" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:60ms"><title>5%</title></line>
2260
+ <line x1="265.7" y1="69.7" x2="270.1" y2="54.3" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:72ms"><title>6%</title></line>
2261
+ <line x1="269.8" y1="71.0" x2="275.0" y2="55.8" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:84ms"><title>7%</title></line>
2262
+ <line x1="273.9" y1="72.5" x2="279.8" y2="57.6" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:96ms"><title>8%</title></line>
2263
+ <line x1="277.9" y1="74.2" x2="284.4" y2="59.6" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:108ms"><title>9%</title></line>
2264
+ <line x1="281.8" y1="76.0" x2="289.0" y2="61.8" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:120ms"><title>10%</title></line>
2265
+ <line x1="285.6" y1="78.1" x2="293.5" y2="64.2" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:132ms"><title>11%</title></line>
2266
+ <line x1="289.3" y1="80.3" x2="297.9" y2="66.8" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:144ms"><title>12%</title></line>
2267
+ <line x1="292.9" y1="82.7" x2="302.1" y2="69.6" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:156ms"><title>13%</title></line>
2268
+ <line x1="296.4" y1="85.3" x2="306.2" y2="72.7" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:168ms"><title>14%</title></line>
2269
+ <line x1="299.7" y1="88.0" x2="310.1" y2="75.9" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:180ms"><title>15%</title></line>
2270
+ <line x1="303.0" y1="90.9" x2="313.9" y2="79.3" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:192ms"><title>16%</title></line>
2271
+ <line x1="306.1" y1="94.0" x2="317.6" y2="82.8" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:204ms"><title>17%</title></line>
2272
+ <line x1="309.0" y1="97.2" x2="321.0" y2="86.6" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:216ms"><title>18%</title></line>
2273
+ <line x1="311.8" y1="100.5" x2="324.3" y2="90.5" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:228ms"><title>19%</title></line>
2274
+ <line x1="314.4" y1="103.9" x2="327.4" y2="94.5" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:240ms"><title>20%</title></line>
2275
+ <line x1="316.9" y1="107.5" x2="330.3" y2="98.7" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:252ms"><title>21%</title></line>
2276
+ <line x1="319.2" y1="111.2" x2="333.0" y2="103.0" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:264ms"><title>22%</title></line>
2277
+ <line x1="321.3" y1="115.0" x2="335.4" y2="107.5" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:276ms"><title>23%</title></line>
2278
+ <line x1="323.2" y1="118.8" x2="337.7" y2="112.0" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:288ms"><title>24%</title></line>
2279
+ <line x1="325.0" y1="122.8" x2="339.8" y2="116.7" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:300ms"><title>25%</title></line>
2280
+ <line x1="326.6" y1="126.8" x2="341.6" y2="121.4" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:312ms"><title>26%</title></line>
2281
+ <line x1="327.9" y1="130.9" x2="343.2" y2="126.2" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:324ms"><title>27%</title></line>
2282
+ <line x1="329.1" y1="135.1" x2="344.6" y2="131.1" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:336ms"><title>28%</title></line>
2283
+ <line x1="330.1" y1="139.3" x2="345.8" y2="136.1" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:348ms"><title>29%</title></line>
2284
+ <line x1="330.9" y1="143.6" x2="346.7" y2="141.1" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:360ms"><title>30%</title></line>
2285
+ <line x1="331.4" y1="147.9" x2="347.3" y2="146.1" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:372ms"><title>31%</title></line>
2286
+ <line x1="331.8" y1="152.2" x2="347.8" y2="151.2" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:384ms"><title>32%</title></line>
2287
+ <line x1="332.0" y1="156.6" x2="348.0" y2="156.3" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:396ms"><title>33%</title></line>
2288
+ <line x1="332.0" y1="160.9" x2="347.9" y2="161.4" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:408ms"><title>34%</title></line>
2289
+ <line x1="331.7" y1="165.2" x2="347.7" y2="166.5" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:420ms"><title>35%</title></line>
2290
+ <line x1="331.3" y1="169.5" x2="347.1" y2="171.5" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:432ms"><title>36%</title></line>
2291
+ <line x1="330.6" y1="173.8" x2="346.4" y2="176.6" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:444ms"><title>37%</title></line>
2292
+ <line x1="329.8" y1="178.1" x2="345.4" y2="181.6" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:456ms"><title>38%</title></line>
2293
+ <line x1="328.7" y1="182.3" x2="344.2" y2="186.5" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:468ms"><title>39%</title></line>
2294
+ <line x1="327.5" y1="186.4" x2="342.7" y2="191.4" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:480ms"><title>40%</title></line>
2295
+ <line x1="326.1" y1="190.5" x2="341.0" y2="196.2" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:492ms"><title>41%</title></line>
2296
+ <line x1="324.4" y1="194.5" x2="339.1" y2="200.9" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:504ms"><title>42%</title></line>
2297
+ <line x1="322.6" y1="198.5" x2="337.0" y2="205.5" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:516ms"><title>43%</title></line>
2298
+ <line x1="320.6" y1="202.3" x2="334.6" y2="210.0" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:528ms"><title>44%</title></line>
2299
+ <line x1="318.4" y1="206.1" x2="332.1" y2="214.4" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:540ms"><title>45%</title></line>
2300
+ <line x1="316.1" y1="209.7" x2="329.3" y2="218.7" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:552ms"><title>46%</title></line>
2301
+ <line x1="313.6" y1="213.2" x2="326.4" y2="222.8" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:564ms"><title>47%</title></line>
2302
+ <line x1="310.9" y1="216.6" x2="323.2" y2="226.8" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:576ms"><title>48%</title></line>
2303
+ <line x1="308.0" y1="219.9" x2="319.9" y2="230.7" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:588ms"><title>49%</title></line>
2304
+ <line x1="305.1" y1="223.1" x2="316.4" y2="234.4" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:600ms"><title>50%</title></line>
2305
+ <line x1="301.9" y1="226.0" x2="312.7" y2="237.9" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:612ms"><title>51%</title></line>
2306
+ <line x1="298.6" y1="228.9" x2="308.8" y2="241.2" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:624ms"><title>52%</title></line>
2307
+ <line x1="295.2" y1="231.6" x2="304.8" y2="244.4" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:636ms"><title>53%</title></line>
2308
+ <line x1="291.7" y1="234.1" x2="300.7" y2="247.3" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:648ms"><title>54%</title></line>
2309
+ <line x1="288.1" y1="236.4" x2="296.4" y2="250.1" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:660ms"><title>55%</title></line>
2310
+ <line x1="284.3" y1="238.6" x2="292.0" y2="252.6" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:672ms"><title>56%</title></line>
2311
+ <line x1="280.5" y1="240.6" x2="287.5" y2="255.0" stroke="#B8694A" stroke-width="3" stroke-linecap="round" class="lf-pop" style="--motion-delay:684ms"><title>57%</title></line>
2312
+ <line x1="276.5" y1="242.4" x2="282.9" y2="257.1" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:176ms"><title>58%</title></line>
2313
+ <line x1="272.5" y1="244.1" x2="278.2" y2="259.0" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:178ms"><title>59%</title></line>
2314
+ <line x1="268.4" y1="245.5" x2="273.4" y2="260.7" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:180ms"><title>60%</title></line>
2315
+ <line x1="264.3" y1="246.7" x2="268.5" y2="262.2" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:182ms"><title>61%</title></line>
2316
+ <line x1="260.1" y1="247.8" x2="263.6" y2="263.4" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:184ms"><title>62%</title></line>
2317
+ <line x1="255.8" y1="248.6" x2="258.6" y2="264.4" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:186ms"><title>63%</title></line>
2318
+ <line x1="251.5" y1="249.3" x2="253.5" y2="265.1" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:188ms"><title>64%</title></line>
2319
+ <line x1="247.2" y1="249.7" x2="248.5" y2="265.7" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:190ms"><title>65%</title></line>
2320
+ <line x1="242.9" y1="250.0" x2="243.4" y2="265.9" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:192ms"><title>66%</title></line>
2321
+ <line x1="238.6" y1="250.0" x2="238.3" y2="266.0" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:194ms"><title>67%</title></line>
2322
+ <line x1="234.2" y1="249.8" x2="233.2" y2="265.8" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:196ms"><title>68%</title></line>
2323
+ <line x1="229.9" y1="249.4" x2="228.1" y2="265.3" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:198ms"><title>69%</title></line>
2324
+ <line x1="225.6" y1="248.9" x2="223.1" y2="264.7" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:200ms"><title>70%</title></line>
2325
+ <line x1="221.3" y1="248.1" x2="218.1" y2="263.8" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:202ms"><title>71%</title></line>
2326
+ <line x1="217.1" y1="247.1" x2="213.1" y2="262.6" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:204ms"><title>72%</title></line>
2327
+ <line x1="212.9" y1="245.9" x2="208.2" y2="261.2" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:206ms"><title>73%</title></line>
2328
+ <line x1="208.8" y1="244.6" x2="203.4" y2="259.6" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:208ms"><title>74%</title></line>
2329
+ <line x1="204.8" y1="243.0" x2="198.7" y2="257.8" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:210ms"><title>75%</title></line>
2330
+ <line x1="200.8" y1="241.2" x2="194.0" y2="255.7" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:212ms"><title>76%</title></line>
2331
+ <line x1="197.0" y1="239.3" x2="189.5" y2="253.4" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:214ms"><title>77%</title></line>
2332
+ <line x1="193.2" y1="237.2" x2="185.0" y2="251.0" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:216ms"><title>78%</title></line>
2333
+ <line x1="189.5" y1="234.9" x2="180.7" y2="248.3" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:218ms"><title>79%</title></line>
2334
+ <line x1="185.9" y1="232.4" x2="176.5" y2="245.4" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:220ms"><title>80%</title></line>
2335
+ <line x1="182.5" y1="229.8" x2="172.5" y2="242.3" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:222ms"><title>81%</title></line>
2336
+ <line x1="179.2" y1="227.0" x2="168.6" y2="239.0" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:224ms"><title>82%</title></line>
2337
+ <line x1="176.0" y1="224.1" x2="164.8" y2="235.6" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:226ms"><title>83%</title></line>
2338
+ <line x1="172.9" y1="221.0" x2="161.3" y2="231.9" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:228ms"><title>84%</title></line>
2339
+ <line x1="170.0" y1="217.7" x2="157.9" y2="228.1" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:230ms"><title>85%</title></line>
2340
+ <line x1="167.3" y1="214.4" x2="154.7" y2="224.2" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:232ms"><title>86%</title></line>
2341
+ <line x1="164.7" y1="210.9" x2="151.6" y2="220.1" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:234ms"><title>87%</title></line>
2342
+ <line x1="162.3" y1="207.3" x2="148.8" y2="215.9" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:236ms"><title>88%</title></line>
2343
+ <line x1="160.1" y1="203.6" x2="146.2" y2="211.5" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:238ms"><title>89%</title></line>
2344
+ <line x1="158.0" y1="199.8" x2="143.8" y2="207.0" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:240ms"><title>90%</title></line>
2345
+ <line x1="156.2" y1="195.9" x2="141.6" y2="202.4" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:242ms"><title>91%</title></line>
2346
+ <line x1="154.5" y1="191.9" x2="139.6" y2="197.8" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:244ms"><title>92%</title></line>
2347
+ <line x1="153.0" y1="187.8" x2="137.8" y2="193.0" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:246ms"><title>93%</title></line>
2348
+ <line x1="151.7" y1="183.7" x2="136.3" y2="188.1" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:248ms"><title>94%</title></line>
2349
+ <line x1="150.5" y1="179.5" x2="135.0" y2="183.2" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:250ms"><title>95%</title></line>
2350
+ <line x1="149.6" y1="175.2" x2="133.9" y2="178.2" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:252ms"><title>96%</title></line>
2351
+ <line x1="148.9" y1="171.0" x2="133.1" y2="173.2" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:254ms"><title>97%</title></line>
2352
+ <line x1="148.4" y1="166.7" x2="132.5" y2="168.2" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:256ms"><title>98%</title></line>
2353
+ <line x1="148.1" y1="162.3" x2="132.1" y2="163.1" stroke="#E4E3DC" stroke-width="3" stroke-linecap="round" class="lf-fade" style="--motion-delay:258ms"><title>99%</title></line>
2354
+ <text x="240" y="152" text-anchor="middle" font-size="30" font-weight="800" fill="#2A2925" class="lf-pop" style="--motion-delay:600ms">58%</text>
2355
+ <text x="240" y="180" text-anchor="middle" font-size="10" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:680ms">Moderate</text>
2356
+ </svg></div><figcaption class="lieflat-caption">The value comes from the result&#x27;s decision field, never self-rated.</figcaption><p class="lieflat-src">F11 Tick Gauge · Decision.confidence Score</p></figure><figure class="lieflat-card" data-lieflat data-visual="lieflat-ballot_tally" data-chart-id="lieflat-ballot-tally.svg"><h3 class="lieflat-title">Methodology checklist tally</h3><p class="lieflat-sub">One tick = one audit verdict · grouped by checklist item</p><div class="lieflat-figure"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 540 300" width="100%" height="100%" role="img" aria-label="Methodology checklist tally" style="background:#FFFFFF;">
2357
+ <text x="150" y="102.3" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:40ms">Causal Ident</text>
2358
+ <rect x="162.0" y="95.3" width="8" height="8" rx="2" fill="#B8694A" class="lf-pop" style="--motion-delay:0ms"><title>Causal Identification — verdict 1/1 (flagged)</title></rect>
2359
+ <text x="512" y="102.3" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:300ms">1/1</text>
2360
+ <text x="150" y="117.0" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:140ms">External Val</text>
2361
+ <rect x="162.0" y="110.0" width="8" height="8" rx="2" fill="#B8694A" class="lf-pop" style="--motion-delay:100ms"><title>External Validity — verdict 1/1 (flagged)</title></rect>
2362
+ <text x="512" y="117.0" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:400ms">1/1</text>
2363
+ <text x="150" y="131.7" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:240ms">Cost Evidenc</text>
2364
+ <rect x="162.0" y="124.7" width="8" height="8" rx="2" fill="#B8694A" class="lf-pop" style="--motion-delay:200ms"><title>Cost Evidence — verdict 1/1 (flagged)</title></rect>
2365
+ <text x="512" y="131.7" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:500ms">1/1</text>
2366
+ <text x="150" y="146.3" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:340ms">Stakeholder </text>
2367
+ <rect x="162.0" y="139.3" width="8" height="8" rx="2" fill="#B8694A" class="lf-pop" style="--motion-delay:300ms"><title>Stakeholder Representation — verdict 1/1 (flagged)</title></rect>
2368
+ <text x="512" y="146.3" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:600ms">1/1</text>
2369
+ <text x="150" y="161.0" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:440ms">Implementati</text>
2370
+ <rect x="162.0" y="154.0" width="8" height="8" rx="2" fill="#B8694A" class="lf-pop" style="--motion-delay:400ms"><title>Implementation Evidence — verdict 1/1 (flagged)</title></rect>
2371
+ <text x="512" y="161.0" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:700ms">1/1</text>
2372
+ <text x="150" y="175.7" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:540ms">Equity Analy</text>
2373
+ <rect x="162.0" y="168.7" width="8" height="8" rx="2" fill="#B8694A" class="lf-pop" style="--motion-delay:500ms"><title>Equity Analysis — verdict 1/1 (flagged)</title></rect>
2374
+ <text x="512" y="175.7" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:800ms">1/1</text>
2375
+ <text x="150" y="190.3" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:640ms">Effect Size </text>
2376
+ <rect x="162.0" y="183.3" width="8" height="8" rx="2" fill="#B8694A" class="lf-pop" style="--motion-delay:600ms"><title>Effect Size Reported — verdict 1/1 (flagged)</title></rect>
2377
+ <text x="512" y="190.3" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:900ms">1/1</text>
2378
+ <text x="150" y="205.0" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:740ms">Uncertainty </text>
2379
+ <rect x="162.0" y="198.0" width="8" height="8" rx="2" fill="#B8694A" class="lf-pop" style="--motion-delay:700ms"><title>Uncertainty Quantified — verdict 1/1 (flagged)</title></rect>
2380
+ <text x="512" y="205.0" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:1000ms">1/1</text>
2381
+ <text x="150" y="219.7" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:840ms">Publication </text>
2382
+ <rect x="162.0" y="212.7" width="8" height="8" rx="2" fill="#B8694A" class="lf-pop" style="--motion-delay:800ms"><title>Publication Bias Risk — verdict 1/1 (flagged)</title></rect>
2383
+ <text x="512" y="219.7" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:1100ms">1/1</text>
2384
+ <text x="150" y="234.3" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:940ms">Evidence Lev</text>
2385
+ <rect x="162.0" y="227.3" width="8" height="8" rx="2" fill="#E4E3DC" class="lf-pop" style="--motion-delay:900ms"><title>Evidence Level — verdict 1/1</title></rect>
2386
+ <text x="512" y="234.3" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:1200ms">0/1</text>
2387
+ <text x="150" y="249.0" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:1040ms">Comparator C</text>
2388
+ <rect x="162.0" y="242.0" width="8" height="8" rx="2" fill="#E4E3DC" class="lf-pop" style="--motion-delay:1000ms"><title>Comparator Clarity — verdict 1/1</title></rect>
2389
+ <text x="512" y="249.0" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:1300ms">0/1</text>
2390
+ <text x="150" y="263.7" text-anchor="end" font-size="8.5" font-weight="600" fill="#6A6963" class="lf-fade" style="--motion-delay:1140ms">Generalizabi</text>
2391
+ <rect x="162.0" y="256.7" width="8" height="8" rx="2" fill="#E4E3DC" class="lf-pop" style="--motion-delay:1100ms"><title>Generalizability Claims — verdict 1/1</title></rect>
2392
+ <text x="512" y="263.7" text-anchor="end" font-size="9" font-weight="800" fill="#2A2925" class="lf-fade" style="--motion-delay:1400ms">0/1</text>
2393
+ <text x="30" y="280" font-size="7.5" font-weight="600" fill="#8F8E88" class="lf-fade" style="--motion-delay:500ms">one tick = one methodology-review verdict; filled = below &#x27;met&#x27;</text>
2394
+ </svg></div><figcaption class="lieflat-caption">Shows which checklist items concentrate the weaknesses.</figcaption><p class="lieflat-src">L15 Ballot Tally · Methodology.flag Rates</p></figure></div></div></section><section class="brief-block brief-sources" id="brief-sources-en"><header class="brief-block-header"><h2>Key sources</h2><p>Only the key sources in the brief; full traceability expands in the full report.</p></header><div class="brief-block-body"><div class="brief-source-grid"><article class="brief-source"><code>S-001</code><h3><a href="https://academic.oup.com/qje/article/140/2/889/7990658">Generative AI at Work</a></h3><p>Tier 1 DOI-verified paper · 2025</p></article><article class="brief-source"><code>S-002</code><h3><a href="https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf">Experimental evidence on the productivity effects of generative artificial intelligence</a></h3><p>Tier 1 DOI-verified paper · 2023</p></article><article class="brief-source"><code>S-003</code><h3><a href="https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838">Navigating the Jagged Technological Frontier: Field Experimental Evidence of the Effects of Artificial Intelligence on Knowledge Worker Productivity and Quality</a></h3><p>Tier 1 DOI-verified paper · 2026</p></article></div></div></section></div></div>
2395
+ <div class="report-page report-page-full" data-report-page="full" hidden>
2396
+ <div class="full-report-intro"><h2>Full Report</h2><p>Conclusions first: every traceable piece of evidence and method note lives here, with visuals only at points where they add meaning. Every number traces back to result.json.</p></div>
2397
+ <div class="full-report-layout"><aside class="full-report-toc" aria-label="Contents"><div class="toc-head"><strong>Contents</strong><button type="button" class="toc-collapse" aria-expanded="true" data-label-collapse="Collapse contents" data-label-expand="Expand contents">Collapse contents</button></div><nav><a href="#full-01-decision-en" data-toc-target="full-01-decision-en" data-chapter-key="decision">01 Decision, Adjudication &amp; Research Boundary</a><a href="#full-02-evidence-en" data-toc-target="full-02-evidence-en" data-chapter-key="evidence">02 Key Evidence &amp; Outcome Separation</a><a href="#full-03-quality-en" data-toc-target="full-03-quality-en" data-chapter-key="quality">03 Evidence Quality, Counterevidence &amp; Method Audit</a><a href="#full-04-action-en" data-toc-target="full-04-action-en" data-chapter-key="action">04 Applicability &amp; Teaching Action</a><a href="#full-05-evaluation-en" data-toc-target="full-05-evaluation-en" data-chapter-key="evaluation">05 Pilot, Evaluation &amp; Stop Conditions</a><a href="#full-06-sources-en" data-toc-target="full-06-sources-en" data-chapter-key="sources">06 Sources, Traceability &amp; Appendix</a></nav></aside><main class="full-report-content"><section id="full-01-decision-en" class="full-chapter" data-full-chapter><header class="full-chapter-header"><h2>01 Decision, Adjudication &amp; Research Boundary</h2><p class="full-chapter-lead">State the final adjudication and research boundary before explaining why.</p></header><div class="full-chapter-body">
2398
+ <div class="decision-hero pilot" data-visual="decision-hero">
2399
+ <div class="hero-decision">
2400
+ <span class="eyebrow">Recommended decision</span>
2401
+ <strong class="decision-value">Pilot</strong>
2402
+ <span class="confidence-badge">Confidence · Moderate</span>
2403
+ </div>
2404
+ <p class="hero-rationale">A supervised pilot is warranted because one direct field study supports efficiency gains but also reveals heterogeneous quality effects. Indirect experiments identify task boundaries, while local safety and net value remain unknown.</p>
2405
+ <div class="hero-insights">
2406
+ <article class="hero-insight support"><span>Strongest supported conclusion</span><p class="hero-insight-text">Supervised AI assistance improves handling speed and answer consistency in customer-support work, with quality maintained.</p></article>
2407
+ <article class="hero-insight uncertain"><span>Key uncertainty / contradiction</span><p class="hero-insight-text">Evidence comes from adjacent writing and advisory settings rather than the support floor, so transfer to live customer conversations is unproven.</p></article>
2408
+ <article class="hero-insight risk"><span>Main risk</span><p class="hero-insight-text">Unsupervised or knowledge-base-free use can produce confident wrong answers to customers, and over-reliance erodes agent skill over time.</p></article>
2409
+ <article class="hero-insight next"><span>Next action</span><p class="hero-insight-text">Run a supervised pilot on approved knowledge bases with human review on every reply, and track escalation and correction rates.</p></article>
2410
+ </div>
2411
+ <p class="hero-provenance"><span>Evidence / sources</span> · 4 / 3</p>
2412
+ </div><div class="scope-grid"><article class="scope-card"><h3>Research question</h3><p class="scope-text">Should an enterprise customer-support team introduce a generative AI assistant?</p></article><article class="scope-card"><h3>AI intervention</h3><p class="scope-text">Policy: Human Supervised Customer Support Assistant; Policy type: Institutional reform; Mechanism: Approved knowledge base + agent review</p></article><article class="scope-card"><h3>Comparison</h3><p class="scope-text">Existing support workflow without generative AI suggestions.</p></article><article class="scope-card"><h3>Outcome constructs</h3><p class="scope-text">Primary outcomes: Policy Effectiveness, Implementation Risk; Secondary outcomes: Cost Effectiveness, equity, feasibility</p></article><article class="scope-card"><h3>Research scope</h3><p class="scope-text">Time range: 2023–2026; Evidence Types: Quasi-experimental, Randomised controlled trial</p></article><article class="scope-card"><h3>Decision success condition</h3><p class="scope-text">Improve verified resolutions per paid staff hour while preserving service quality, privacy and staff autonomy.</p></article></div></div></section><section id="full-02-evidence-en" class="full-chapter" data-full-chapter><header class="full-chapter-header"><h2>02 Key Evidence &amp; Outcome Separation</h2><p class="full-chapter-lead">Place task performance, actual learning, retention and risk on one evidence map without conflating them.</p></header><div class="full-chapter-body"><div class="retrieval-grid"><article><h3>Inclusion criteria</h3><ul></ul></article><article><h3>Exclusion criteria</h3><ul></ul></article></div><div class="retrieval-coverage"><h3>Source coverage</h3><p><code>S-001</code> <code>S-002</code> <code>S-003</code></p><p class="retrieval-note">This report shows only retrieval metadata present in result; it does not fabricate PRISMA/funnel counts when none exist.</p></div><div class="outcome-separation" data-visual="outcome-separation"><div class="visual-heading"><h3>Outcome Separation · Task performance ≠ learning</h3><p>Outcomes are adjudicated separately so faster training performance is not silently treated as evidence of learning.</p><p class="semantic-note">Effect direction comes from evidence.effect_direction; supporting a claim does not imply a positive outcome.</p></div><div class="outcome-groups"><article class="outcome-group outcome-other"><h3>Other outcomes</h3><ul><li><strong>Policy Effectiveness</strong><span class="outcome-states"><span class="dir pos">Positive effect 2</span></span></li><li><strong>Implementation Risk</strong><span class="outcome-states"><span class="dir neg">Negative effect 2</span></span></li></ul></article></div></div><div class='table-wrap outcome-table'><table class='data-table'><thead><tr><th>Outcome</th><th>Positive effect</th><th>Negative effect</th><th>Null effect</th><th>Evidence</th></tr></thead><tbody><tr><td><strong>Policy Effectiveness</strong><span class='raw-tag' title='raw id'>policy_effectiveness</span></td><td class='num'>2</td><td class='num'>0</td><td class='num'>0</td><td><code>E-001</code> <code>E-002</code> </td></tr><tr><td><strong>Implementation Risk</strong><span class='raw-tag' title='raw id'>implementation_risk</span></td><td class='num'>0</td><td class='num'>2</td><td class='num'>0</td><td><code>E-003</code> <code>E-004</code> </td></tr></tbody></table></div><div class='matrix-controls'><div class='matrix-tools'><input id='matrix-search-full-en' type='search' placeholder='Search evidence…' aria-label='Filter / search evidence'><select id='matrix-direction-full-en' aria-label='Filter by effect direction'><option value=''>All effects</option><option value='positive'>Positive effect</option><option value='negative'>Negative effect</option><option value='null'>Null effect</option></select><select id='matrix-outcome-full-en' aria-label='Filter by outcome type'><option value=''>All outcomes</option><option value='implementation_risk'>Implementation Risk</option><option value='policy_effectiveness'>Policy Effectiveness</option></select></div></div><div class='table-wrap matrix-wrap'><table id='evidence-matrix-full-en' class='data-table evidence-matrix'><thead><tr><th>ID</th><th>Outcome</th><th>Effect</th><th>Quality</th><th>Claim</th><th>Source</th></tr></thead><tbody><tr data-effect="positive" data-direction="positive" data-outcome="policy_effectiveness" data-search="e-001 st-001 sample-support-all generative ai at work ai assistance can shorten customer chat handling in a bounded support setting; throughput is a separate outcome. customer-support agents positive s-001"><td><code>E-001</code></td><td><strong>Policy Effectiveness</strong></td><td><span class="dir pos">Positive effect</span><span class="relation-note">Claim relation: Support</span></td><td><div class="quality-cell"><span class="num">9</span><span class="quality-meter" aria-hidden="true"><i style="width:90%"></i></span></div></td><td class="claim-cell"><p>AI assistance can shorten customer chat handling in a bounded support setting; throughput is a separate outcome.</p><details class="matrix-row-detail"><summary>View full evidence</summary><dl class="evidence-detail-grid"><div class="evidence-detail-row"><dt>Study ID</dt><dd>ST-001</dd></div><div class="evidence-detail-row"><dt>Sample ID</dt><dd>SAMPLE-support-all</dd></div><div class="evidence-detail-row"><dt>Study title</dt><dd>Generative AI at Work</dd></div><div class="evidence-detail-row"><dt>Source title</dt><dd>Generative AI at Work</dd></div><div class="evidence-detail-row"><dt>Year</dt><dd>2025</dd></div><div class="evidence-detail-row"><dt>Study design</dt><dd>Quasi-experimental</dd></div><div class="evidence-detail-row"><dt>Population</dt><dd>Customer-support agents</dd></div><div class="evidence-detail-row"><dt>Sample size</dt><dd>5172</dd></div><div class="evidence-detail-row"><dt>Outcome measure</dt><dd>Chat handling time; separate throughput summary: about 15% more issues resolved per hour.</dd></div><div class="evidence-detail-row"><dt>Effect direction</dt><dd>Positive effect</dd></div><div class="evidence-detail-row"><dt>Relation to claim</dt><dd>Support</dd></div><div class="evidence-detail-row"><dt>Limitations</dt><dd>One firm, one tool and a staggered nonrandom rollout; causal interpretation depends on identification assumptions.</dd></div><div class="evidence-detail-row"><dt>Quality dimensions</dt><dd>D1 Study design = 1 · D2 Sample quality = 2 · D3 Measurement validity = 2 · D4 Temporal strength = 2 · D5 Directness = 2</dd></div><div class="evidence-detail-row"><dt>Quality score</dt><dd>9.0</dd></div><div class="evidence-detail-row"><dt>Evidence status</dt><dd>Supported</dd></div><div class="evidence-detail-row"><dt>Full claim</dt><dd>AI assistance can shorten customer chat handling in a bounded support setting; throughput is a separate outcome.</dd></div><div class="evidence-detail-row"><dt>Source location</dt><dd>https://academic.oup.com/qje/article/140/2/889/7990658</dd></div><div class="evidence-detail-row"><dt>Verifiable link</dt><dd><a href="https://academic.oup.com/qje/article/140/2/889/7990658">https://academic.oup.com/qje/article/140/2/889/7990658</a></dd></div></dl></details></td><td><a class="source-link" href="https://academic.oup.com/qje/article/140/2/889/7990658" title="Generative AI at Work"><code>S-001</code></a></td></tr><tr data-effect="positive" data-direction="positive" data-outcome="policy_effectiveness" data-search="e-002 st-002 sample-writing experimental evidence on the productivity effects of generative artificial intelligence chatgpt reduced time on short professional writing tasks; this is indirect evidence for customer support. college-educated working professionals positive s-002"><td><code>E-002</code></td><td><strong>Policy Effectiveness</strong></td><td><span class="dir pos">Positive effect</span><span class="relation-note">Claim relation: Support</span></td><td><div class="quality-cell"><span class="num">7</span><span class="quality-meter" aria-hidden="true"><i style="width:70%"></i></span></div></td><td class="claim-cell"><p>ChatGPT reduced time on short professional writing tasks; this is indirect evidence for customer support.</p><details class="matrix-row-detail"><summary>View full evidence</summary><dl class="evidence-detail-grid"><div class="evidence-detail-row"><dt>Study ID</dt><dd>ST-002</dd></div><div class="evidence-detail-row"><dt>Sample ID</dt><dd>SAMPLE-writing</dd></div><div class="evidence-detail-row"><dt>Study title</dt><dd>Experimental evidence on the productivity effects of generative artificial intelligence</dd></div><div class="evidence-detail-row"><dt>Source title</dt><dd>Experimental evidence on the productivity effects of generative artificial intelligence</dd></div><div class="evidence-detail-row"><dt>Year</dt><dd>2023</dd></div><div class="evidence-detail-row"><dt>Study design</dt><dd>Randomized controlled trial</dd></div><div class="evidence-detail-row"><dt>Population</dt><dd>College-educated working professionals</dd></div><div class="evidence-detail-row"><dt>Sample size</dt><dd>453</dd></div><div class="evidence-detail-row"><dt>Outcome measure</dt><dd>Self-reported task time: approximately 40% lower; assessed writing quality approximately 18% higher is a separate measure.</dd></div><div class="evidence-detail-row"><dt>Effect direction</dt><dd>Positive effect</dd></div><div class="evidence-detail-row"><dt>Relation to claim</dt><dd>Support</dd></div><div class="evidence-detail-row"><dt>Limitations</dt><dd>Indirect evidence, not directly generalizable: brief incentivized writing tasks did not demand precise factual accuracy or customer-specific context.</dd></div><div class="evidence-detail-row"><dt>Quality dimensions</dt><dd>D1 Study design = 2 · D2 Sample quality = 2 · D3 Measurement validity = 1 · D4 Temporal strength = 1 · D5 Directness = 1</dd></div><div class="evidence-detail-row"><dt>Quality score</dt><dd>7.0</dd></div><div class="evidence-detail-row"><dt>Evidence status</dt><dd>Supported</dd></div><div class="evidence-detail-row"><dt>Full claim</dt><dd>ChatGPT reduced time on short professional writing tasks; this is indirect evidence for customer support.</dd></div><div class="evidence-detail-row"><dt>Source location</dt><dd>https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf</dd></div><div class="evidence-detail-row"><dt>Verifiable link</dt><dd><a href="https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf">https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf</a></dd></div></dl></details></td><td><a class="source-link" href="https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf" title="Experimental evidence on the productivity effects of generative artificial intelligence"><code>S-002</code></a></td></tr><tr data-effect="negative" data-direction="negative" data-outcome="implementation_risk" data-search="e-003 st-003 sample-consulting-outside navigating the jagged technological frontier: field experimental evidence of the effects of artificial intelligence on knowledge worker productivity and quality ai can reduce correctness on tasks outside its capability frontier; consulting evidence is indirect for support. bcg consultants in the outside-frontier experiment negative s-003"><td><code>E-003</code></td><td><strong>Implementation Risk</strong></td><td><span class="dir neg">Negative effect</span><span class="relation-note">Claim relation: Support</span></td><td><div class="quality-cell"><span class="num">8</span><span class="quality-meter" aria-hidden="true"><i style="width:80%"></i></span></div></td><td class="claim-cell"><p>AI can reduce correctness on tasks outside its capability frontier; consulting evidence is indirect for support.</p><details class="matrix-row-detail"><summary>View full evidence</summary><dl class="evidence-detail-grid"><div class="evidence-detail-row"><dt>Study ID</dt><dd>ST-003</dd></div><div class="evidence-detail-row"><dt>Sample ID</dt><dd>SAMPLE-consulting-outside</dd></div><div class="evidence-detail-row"><dt>Study title</dt><dd>Navigating the Jagged Technological Frontier: Field Experimental Evidence of the Effects of Artificial Intelligence on Knowledge Worker Productivity and Quality</dd></div><div class="evidence-detail-row"><dt>Source title</dt><dd>Navigating the Jagged Technological Frontier: Field Experimental Evidence of the Effects of Artificial Intelligence on Knowledge Worker Productivity and Quality</dd></div><div class="evidence-detail-row"><dt>Year</dt><dd>2026</dd></div><div class="evidence-detail-row"><dt>Study design</dt><dd>Randomized controlled trial</dd></div><div class="evidence-detail-row"><dt>Population</dt><dd>BCG consultants in the outside-frontier experiment</dd></div><div class="evidence-detail-row"><dt>Sample size</dt><dd>373</dd></div><div class="evidence-detail-row"><dt>Outcome measure</dt><dd>Correct business recommendation: about 19 percentage points lower across AI arms; Table 7 has 373 participants, not 758.</dd></div><div class="evidence-detail-row"><dt>Effect direction</dt><dd>Negative effect</dd></div><div class="evidence-detail-row"><dt>Relation to claim</dt><dd>Support</dd></div><div class="evidence-detail-row"><dt>Limitations</dt><dd>Indirect evidence, not directly generalizable: consultants solving an experimental business case, not live customer tickets.</dd></div><div class="evidence-detail-row"><dt>Quality dimensions</dt><dd>D1 Study design = 2 · D2 Sample quality = 2 · D3 Measurement validity = 2 · D4 Temporal strength = 1 · D5 Directness = 1</dd></div><div class="evidence-detail-row"><dt>Quality score</dt><dd>8.0</dd></div><div class="evidence-detail-row"><dt>Evidence status</dt><dd>Supported</dd></div><div class="evidence-detail-row"><dt>Full claim</dt><dd>AI can reduce correctness on tasks outside its capability frontier; consulting evidence is indirect for support.</dd></div><div class="evidence-detail-row"><dt>Source location</dt><dd>https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838</dd></div><div class="evidence-detail-row"><dt>Verifiable link</dt><dd><a href="https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838">https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838</a></dd></div></dl></details></td><td><a class="source-link" href="https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838" title="Navigating the Jagged Technological Frontier: Field Experimental Evidence of the Effects of Artificial Intelligence on Knowledge Worker Productivity and Quality"><code>S-003</code></a></td></tr><tr data-effect="negative" data-direction="negative" data-outcome="implementation_risk" data-search="e-004 st-001 sample-support-all generative ai at work experienced, high-skill support staff need separate quality monitoring rather than assumed uniform benefits. experienced and high-skill customer-support agents negative s-001"><td><code>E-004</code></td><td><strong>Implementation Risk</strong></td><td><span class="dir neg">Negative effect</span><span class="relation-note">Claim relation: Support</span></td><td><div class="quality-cell"><span class="num">8</span><span class="quality-meter" aria-hidden="true"><i style="width:80%"></i></span></div></td><td class="claim-cell"><p>Experienced, high-skill support staff need separate quality monitoring rather than assumed uniform benefits.</p><details class="matrix-row-detail"><summary>View full evidence</summary><dl class="evidence-detail-grid"><div class="evidence-detail-row"><dt>Study ID</dt><dd>ST-001</dd></div><div class="evidence-detail-row"><dt>Sample ID</dt><dd>SAMPLE-support-all</dd></div><div class="evidence-detail-row"><dt>Study title</dt><dd>Generative AI at Work</dd></div><div class="evidence-detail-row"><dt>Source title</dt><dd>Generative AI at Work</dd></div><div class="evidence-detail-row"><dt>Year</dt><dd>2025</dd></div><div class="evidence-detail-row"><dt>Study design</dt><dd>Quasi-experimental</dd></div><div class="evidence-detail-row"><dt>Population</dt><dd>Experienced and high-skill customer-support agents</dd></div><div class="evidence-detail-row"><dt>Outcome measure</dt><dd>Small quality declines among the most experienced and highest-skilled support staff.</dd></div><div class="evidence-detail-row"><dt>Effect direction</dt><dd>Negative effect</dd></div><div class="evidence-detail-row"><dt>Relation to claim</dt><dd>Support</dd></div><div class="evidence-detail-row"><dt>Limitations</dt><dd>Same study as E-001; subgroup sample size was not extracted. This is not an independent replication.</dd></div><div class="evidence-detail-row"><dt>Quality dimensions</dt><dd>D1 Study design = 1 · D2 Sample quality = 1 · D3 Measurement validity = 2 · D4 Temporal strength = 2 · D5 Directness = 2</dd></div><div class="evidence-detail-row"><dt>Quality score</dt><dd>8.0</dd></div><div class="evidence-detail-row"><dt>Evidence status</dt><dd>Supported</dd></div><div class="evidence-detail-row"><dt>Full claim</dt><dd>Experienced, high-skill support staff need separate quality monitoring rather than assumed uniform benefits.</dd></div><div class="evidence-detail-row"><dt>Source location</dt><dd>https://academic.oup.com/qje/article/140/2/889/7990658</dd></div><div class="evidence-detail-row"><dt>Verifiable link</dt><dd><a href="https://academic.oup.com/qje/article/140/2/889/7990658">https://academic.oup.com/qje/article/140/2/889/7990658</a></dd></div></dl></details></td><td><a class="source-link" href="https://academic.oup.com/qje/article/140/2/889/7990658" title="Generative AI at Work"><code>S-001</code></a></td></tr></tbody></table></div></div></section><section id="full-03-quality-en" class="full-chapter" data-full-chapter><header class="full-chapter-header"><h2>03 Evidence Quality, Counterevidence &amp; Method Audit</h2><p class="full-chapter-lead">Examine why evidence is credible, where it conflicts, and which conclusions require downgrading.</p></header><div class="full-chapter-body"><section class="method-review-group"><header class="method-review-title"><h3>Audit target: overall</h3><span class="method-verdict">Concern</span></header><div class="method-audit-grid"><article class="method-audit-item method-met"><div class="method-audit-head"><strong>Evidence Level</strong><span class="method-status">Met</span></div><p></p></article><article class="method-audit-item method-partial"><div class="method-audit-head"><strong>Causal Identification</strong><span class="method-status">Partial</span></div><p></p></article><article class="method-audit-item method-partial"><div class="method-audit-head"><strong>External Validity</strong><span class="method-status">Partial</span></div><p></p></article><article class="method-audit-item method-missing"><div class="method-audit-head"><strong>Cost Evidence</strong><span class="method-status">missing</span></div><p></p></article><article class="method-audit-item method-partial"><div class="method-audit-head"><strong>Stakeholder Representation</strong><span class="method-status">Partial</span></div><p></p></article><article class="method-audit-item method-partial"><div class="method-audit-head"><strong>Implementation Evidence</strong><span class="method-status">Partial</span></div><p></p></article><article class="method-audit-item method-partial"><div class="method-audit-head"><strong>Equity Analysis</strong><span class="method-status">Partial</span></div><p></p></article><article class="method-audit-item method-partial"><div class="method-audit-head"><strong>Effect Size Reported</strong><span class="method-status">Partial</span></div><p></p></article><article class="method-audit-item method-partial"><div class="method-audit-head"><strong>Uncertainty Quantified</strong><span class="method-status">Partial</span></div><p></p></article><article class="method-audit-item method-met"><div class="method-audit-head"><strong>Comparator Clarity</strong><span class="method-status">Met</span></div><p></p></article><article class="method-audit-item method-partial"><div class="method-audit-head"><strong>Publication Bias Risk</strong><span class="method-status">Partial</span></div><p></p></article><article class="method-audit-item method-met"><div class="method-audit-head"><strong>Generalizability Claims</strong><span class="method-status">Met</span></div><p></p></article></div><div class="method-guard-wrap"><strong>Task vs learning guard: </strong><p class="method-guard">Teaching outcomes are not applicable; productivity is not a claim about student learning.</p></div></section><p>No data.</p><div class="evidence-tribunal" data-visual="evidence-tribunal-grid"><p class="tribunal-summary"><strong>Decision: </strong>Pilot · <strong>Confidence: </strong>Moderate</p><div class="tribunal-grid"><article class="tribunal-card supported"><header><span aria-hidden="true">✓</span><h3>Can claim</h3><span class="tribunal-count">4</span></header><ul><li><p>AI assistance can shorten customer chat handling in a bounded support setting; throughput is a separate outcome. — E-001</p><div class="tribunal-evidence-refs"><code>E-001</code></div></li><li><p>ChatGPT reduced time on short professional writing tasks; this is indirect evidence for customer support. — E-002</p><div class="tribunal-evidence-refs"><code>E-002</code></div></li><li><p>AI can reduce correctness on tasks outside its capability frontier; consulting evidence is indirect for support. — E-003</p><div class="tribunal-evidence-refs"><code>E-003</code></div></li><li><p>Experienced, high-skill support staff need separate quality monitoring rather than assumed uniform benefits. — E-004</p><div class="tribunal-evidence-refs"><code>E-004</code></div></li></ul></article><article class="tribunal-card uncertain"><header><span aria-hidden="true">?</span><h3>Cannot yet claim</h3><span class="tribunal-count">1</span></header><ul><li><p>Local net cost, privacy incident rates, subgroup service quality and sustained performance are not established by this selected evidence set [no direct evidence].</p></li></ul></article><article class="tribunal-card contradicted"><header><span aria-hidden="true">×</span><h3>Contradicted claims</h3><span class="tribunal-count">0</span></header><ul><li>No data.</li></ul></article><article class="tribunal-card missing"><header><span aria-hidden="true">…</span><h3>Missing evidence</h3><span class="tribunal-count">1</span></header><ul><li><p>Local net cost, privacy incident rates, subgroup service quality and sustained performance are not established by this selected evidence set [no direct evidence].</p></li></ul></article></div><details class="supporting-visual"><summary>EvidenceFlow Protocol</summary><svg viewBox="0 0 720 260" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="EvidenceFlow Protocol"><title>EvidenceFlow Protocol</title><desc>Research flow from framing, retrieval, fetch/verify, extraction, challenge, method audit and adjudication to applicability and intervention evaluation.</desc><defs><marker id="arr-en-full-workflow" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"><path d="M0,0 L6,3 L0,6 Z" fill="#8A867E"/></marker></defs><rect width="720" height="260" fill="#FCFAF6" rx="12"/><text x="24" y="34" font-size="16" font-weight="700" fill="#3A3833">EvidenceFlow Protocol</text><rect x="24" y="100" width="64" height="52" rx="8" fill="#B8694A"/><text x="56.0" y="126.0" text-anchor="middle" fill="#FFFFFF" font-size="10" font-weight="600"><tspan x="56.0" y="126.0">Frame</tspan></text><line x1="88" y1="126" x2="100" y2="126" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-en-full-workflow)"/><rect x="100" y="100" width="64" height="52" rx="8" fill="#B8694A"/><text x="132.0" y="126.0" text-anchor="middle" fill="#FFFFFF" font-size="10" font-weight="600"><tspan x="132.0" y="126.0">Retrieve</tspan></text><line x1="164" y1="126" x2="176" y2="126" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-en-full-workflow)"/><rect x="176" y="100" width="64" height="52" rx="8" fill="#B8694A"/><text x="208.0" y="126.0" text-anchor="middle" fill="#FFFFFF" font-size="10" font-weight="600"><tspan x="208.0" y="126.0">Fetch</tspan><tspan x="208.0" y="140.0">Verify</tspan></text><line x1="240" y1="126" x2="252" y2="126" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-en-full-workflow)"/><rect x="252" y="100" width="64" height="52" rx="8" fill="#B8694A"/><text x="284.0" y="126.0" text-anchor="middle" fill="#FFFFFF" font-size="10" font-weight="600"><tspan x="284.0" y="126.0">Extract</tspan></text><line x1="316" y1="126" x2="328" y2="126" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-en-full-workflow)"/><rect x="328" y="100" width="64" height="52" rx="8" fill="#5E8A6A"/><text x="360.0" y="126.0" text-anchor="middle" fill="#FFFFFF" font-size="10" font-weight="600"><tspan x="360.0" y="126.0">Challenge</tspan></text><line x1="392" y1="126" x2="404" y2="126" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-en-full-workflow)"/><rect x="404" y="100" width="64" height="52" rx="8" fill="#5E8A6A"/><text x="436.0" y="126.0" text-anchor="middle" fill="#FFFFFF" font-size="10" font-weight="600"><tspan x="436.0" y="126.0">Audit</tspan><tspan x="436.0" y="140.0">Method</tspan></text><line x1="468" y1="126" x2="480" y2="126" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-en-full-workflow)"/><rect x="480" y="100" width="64" height="52" rx="8" fill="#C99A4A"/><text x="512.0" y="126.0" text-anchor="middle" fill="#FFFFFF" font-size="10" font-weight="600"><tspan x="512.0" y="126.0">Adjudicate</tspan></text><line x1="544" y1="126" x2="556" y2="126" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-en-full-workflow)"/><rect x="556" y="100" width="64" height="52" rx="8" fill="#C99A4A"/><text x="588.0" y="126.0" text-anchor="middle" fill="#FFFFFF" font-size="10" font-weight="600"><tspan x="588.0" y="126.0">Applicability</tspan></text><line x1="620" y1="126" x2="632" y2="126" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-en-full-workflow)"/><rect x="632" y="100" width="64" height="52" rx="8" fill="#C99A4A"/><text x="664.0" y="126.0" text-anchor="middle" fill="#FFFFFF" font-size="10" font-weight="600"><tspan x="664.0" y="126.0">Intervene</tspan><tspan x="664.0" y="140.0">Evaluate</tspan></text></svg></details><details class="supporting-visual"><summary>Tribunal infographic</summary><svg viewBox="0 0 720 260" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Evidence Tribunal infographic"><title>Evidence Tribunal infographic</title><desc>Evidence IDs for claims that can and cannot be claimed, plus the recommended action badge; full claim text is in the tribunal cards below.</desc><defs><marker id="arr-en-full-tribunal" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"><path d="M0,0 L6,3 L0,6 Z" fill="#8A867E"/></marker></defs><rect width="720" height="260" fill="#FCFAF6" rx="12"/><text x="24" y="34" font-size="16" font-weight="700" fill="#3A3833">Evidence Tribunal</text><text x="24" y="180" font-size="13" font-weight="700" fill="#3A3833">Source of conflict</text><text x="24" y="202" font-size="11" fill="#8A867E">See tribunal cards below</text><rect x="24" y="216" width="180" height="28" rx="14" fill="#C99A4A"/><text x="114" y="235" text-anchor="middle" font-size="13" font-weight="700" fill="#fff">Pilot</text><text x="250" y="80" font-size="13" font-weight="700" fill="#5E8A6A">Can claim (4)</text><circle cx="254" cy="100" r="3" fill="#5E8A6A"/><text x="266" y="105" font-size="11" fill="#3A3833">E-001</text><circle cx="254" cy="122" r="3" fill="#5E8A6A"/><text x="266" y="127" font-size="11" fill="#3A3833">E-002</text><circle cx="254" cy="144" r="3" fill="#5E8A6A"/><text x="266" y="149" font-size="11" fill="#3A3833">E-003</text><circle cx="254" cy="166" r="3" fill="#5E8A6A"/><text x="266" y="171" font-size="11" fill="#3A3833">E-004</text><text x="490" y="80" font-size="13" font-weight="700" fill="#A85B53">Cannot claim (1)</text><circle cx="494" cy="100" r="3" fill="#A85B53"/><text x="506" y="105" font-size="11" fill="#3A3833">(none)</text></svg></details></div><div class="trace-chain" data-visual="trace-chain"><article class="trace-chain-card"><div class="trace-claim-node"><strong>C-001</strong><p class="trace-claim-text">AI assistance can shorten customer chat handling in a bounded support setting; throughput is a separate outcome.</p></div><div class="trace-arrow">↓</div><div class="trace-evidence-list"><div class="trace-evidence-node"><code>E-001</code><span>Policy Effectiveness</span><span class="dir pos">Positive effect</span><span class="trace-relation">claim relation: Support</span><span>Q 9.0</span><span class="trace-arrow">→</span><a href="https://academic.oup.com/qje/article/140/2/889/7990658"><code>S-001</code></a></div></div></article><article class="trace-chain-card"><div class="trace-claim-node"><strong>C-002</strong><p class="trace-claim-text">ChatGPT reduced time on short professional writing tasks; this is indirect evidence for customer support.</p></div><div class="trace-arrow">↓</div><div class="trace-evidence-list"><div class="trace-evidence-node"><code>E-002</code><span>Policy Effectiveness</span><span class="dir pos">Positive effect</span><span class="trace-relation">claim relation: Support</span><span>Q 7.0</span><span class="trace-arrow">→</span><a href="https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf"><code>S-002</code></a></div></div></article><article class="trace-chain-card"><div class="trace-claim-node"><strong>C-003</strong><p class="trace-claim-text">AI can reduce correctness on tasks outside its capability frontier; consulting evidence is indirect for support.</p></div><div class="trace-arrow">↓</div><div class="trace-evidence-list"><div class="trace-evidence-node"><code>E-003</code><span>Implementation Risk</span><span class="dir neg">Negative effect</span><span class="trace-relation">claim relation: Support</span><span>Q 8.0</span><span class="trace-arrow">→</span><a href="https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838"><code>S-003</code></a></div></div></article><article class="trace-chain-card"><div class="trace-claim-node"><strong>C-004</strong><p class="trace-claim-text">Experienced, high-skill support staff need separate quality monitoring rather than assumed uniform benefits.</p></div><div class="trace-arrow">↓</div><div class="trace-evidence-list"><div class="trace-evidence-node"><code>E-004</code><span>Implementation Risk</span><span class="dir neg">Negative effect</span><span class="trace-relation">claim relation: Support</span><span>Q 8.0</span><span class="trace-arrow">→</span><a href="https://academic.oup.com/qje/article/140/2/889/7990658"><code>S-001</code></a></div></div></article></div><div id="chart-trace-en" class="chart-mount" aria-label="Claim-Evidence Trace"></div><p class="chart-interpretation"><strong>What this means: </strong>Every important claim must resolve to Evidence IDs and original sources.</p></div></section><section id="full-04-action-en" class="full-chapter" data-full-chapter><header class="full-chapter-header"><h2>04 Applicability &amp; Teaching Action</h2><p class="full-chapter-lead">Connect applicability, guardrails and teaching actions to specific evidence.</p></header><div class="full-chapter-body"><p><strong>Target population: </strong>Enterprise customer-support staff, stratified by tenure and baseline skill.</p>
2413
+ <p><strong>Target context: </strong>Human-supervised support using an approved knowledge base.</p>
2414
+ <p><strong>Conditions: </strong></p><ul><li>Start with low-risk, knowledge-base-covered queues; agents inspect and edit every proposed reply.</li><li>Stratify by tenure and baseline skill; retain expert discretion and measure review workload.</li><li>Minimize and redact customer data, restrict access and retention, and review supplier data-use terms before a pilot.</li><li>Escalate unfamiliar, ambiguous, sensitive or high-stakes requests to qualified humans; no autonomous commitments.</li></ul><div class="boundary-block"><h3>Claims beyond the evidence boundary</h3><ul><li>Claiming universal gains or that autonomous deployment is safe exceeds the boundary: no included study measures privacy incidents, local net cost or subgroup service quality.</li></ul></div><div class="evidence-to-action" data-visual="evidence-to-action"><article class="action-node action-evidence"><span>Evidence</span><p class="action-node-text">AI assistance can shorten customer chat handling in a bounded support setting; throughput is a separate outcome. — E-001</p></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-applicability"><span>Applicability</span><div class="action-node-text"><p>Start with low-risk, knowledge-base-covered queues; agents inspect and edit every proposed reply.; Stratify by tenure and baseline skill;…</p><details class="detail-expander"><summary>Expand full explanation</summary><div class="detail-body"><p>Start with low-risk, knowledge-base-covered queues; agents inspect and edit every proposed reply.; Stratify by tenure and baseline skill; retain expert discretion and measure review workload.; Minimize and redact customer data, restrict access and retention, and review supplier data-use terms before a pilot.; Escalate unfamiliar, ambiguous, sensitive or high-stakes requests to qualified humans; no autonomous commitments.</p></div></details></div></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-decision"><span>Decision</span><p class="action-node-text">Pilot</p></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-guardrails"><span>Guardrails</span><p class="action-node-text">Start with low-risk, knowledge-base-covered queues; agents inspect and edit every proposed reply.</p></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-stop"><span>Stop conditions</span><div class="action-node-text"><p>Pause immediately after a verified privacy leak or a serious unsafe or unauthorized customer commitment; investigate before resuming.;…</p><details class="detail-expander"><summary>Expand full explanation</summary><div class="detail-body"><p>Pause immediately after a verified privacy leak or a serious unsafe or unauthorized customer commitment; investigate before resuming.; Pause expansion if blinded quality review crosses a pre-agreed noninferiority margin, including within experience strata.</p></div></details></div></article><span class="flow-arrow" aria-hidden="true">→</span><article class="action-node action-evaluation"><span>Evaluation</span><div class="action-node-text"><p>Expand only if quality is noninferior, verified resolutions per paid hour improve, net cost is acceptable and no serious unresolved safety incident re…</p><details class="detail-expander"><summary>Expand full explanation</summary><div class="detail-body"><p>Expand only if quality is noninferior, verified resolutions per paid hour improve, net cost is acceptable and no serious unresolved safety incident remains; thresholds require local agreement.</p></div></details></div></article></div><p><strong>Target population: </strong>Enterprise customer-support staff, stratified by tenure and baseline skill. · <strong>Pilot duration: </strong>Proposed: two baseline weeks and six pilot weeks; not executed.</p>
2415
+ <p><strong>AI usage policy: </strong>Start with low-risk, knowledge-base-covered queues; agents inspect and edit every proposed reply.</p>
2416
+ <h3>Stop conditions</h3><ul><li>Pause immediately after a verified privacy leak or a serious unsafe or unauthorized customer commitment; investigate before resuming.</li><li>Pause expansion if blinded quality review crosses a pre-agreed noninferiority margin, including within experience strata.</li></ul>
2417
+ <h3>Intervention timeline infographic</h3>
2418
+ <svg viewBox="0 0 720 260" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Teaching intervention timeline"><title>Teaching intervention timeline</title><desc>Short phase names and activity counts; full AI usage rules are in the phase blocks.</desc><defs><marker id="arr-en-full-intervention" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"><path d="M0,0 L6,3 L0,6 Z" fill="#8A867E"/></marker></defs><rect width="720" height="260" fill="#FCFAF6" rx="12"/><text x="24" y="34" font-size="16" font-weight="700" fill="#3A3833">Intervention Timeline</text><rect x="24" y="100" width="160" height="96" rx="8" fill="#B8694A"/><text x="104.0" y="148.0" text-anchor="middle" fill="#FFFFFF" font-size="12" font-weight="600"><tspan x="104.0" y="148.0">Phase 1</tspan></text></svg></div></section><section id="full-05-evaluation-en" class="full-chapter" data-full-chapter><header class="full-chapter-header"><h2>05 Pilot, Evaluation &amp; Stop Conditions</h2><p class="full-chapter-lead">Validate the pilot with independent learning outcomes and pre-specified stop conditions.</p></header><div class="full-chapter-body"><p><strong>Research question: </strong>Should an enterprise customer-support team introduce a generative AI assistant?</p>
2419
+ <p><strong>Baseline: </strong>Record resolution rate, paid hours, repeat contacts, blinded quality and review costs before allocation.</p>
2420
+ <p><strong>Post test: </strong>Assess the same outcomes at pilot end; separately audit privacy and unsafe commitments.</p>
2421
+ <p><strong>Success threshold: </strong>Expand only if quality is noninferior, verified resolutions per paid hour improve, net cost is acceptable and no serious unresolved safety incident remains; thresholds require local agreement.</p>
2422
+ <p><strong>Analysis plan: </strong>Preregister an intention-to-treat comparison with team-clustered uncertainty and subgroup estimates. Set sample size and noninferiority margins from local baseline variance and operational priorities before enrollment.</p>
2423
+ <h3>Evaluation design infographic</h3>
2424
+ <svg viewBox="0 0 720 260" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Evaluation design flow"><title>Evaluation design flow</title><desc>Evaluation flow across baseline, post test, retention and transfer; full metrics and analysis plan are in the evaluation section.</desc><defs><marker id="arr-en-full-evaluation" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"><path d="M0,0 L6,3 L0,6 Z" fill="#8A867E"/></marker></defs><rect width="720" height="260" fill="#FCFAF6" rx="12"/><text x="24" y="34" font-size="16" font-weight="700" fill="#3A3833">Evaluation Design Flow</text><rect x="30" y="110" width="150" height="56" rx="8" fill="#5E8A6A"/><text x="105.0" y="138.0" text-anchor="middle" fill="#FFFFFF" font-size="12" font-weight="600"><tspan x="105.0" y="138.0">Baseline</tspan></text><text x="105.0" y="148" text-anchor="middle" font-size="9" fill="#fff" opacity="0.95">pre-test</text><line x1="180" y1="138" x2="192" y2="138" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-en-full-evaluation)"/><rect x="192" y="110" width="150" height="56" rx="8" fill="#5E8A6A"/><text x="267.0" y="138.0" text-anchor="middle" fill="#FFFFFF" font-size="12" font-weight="600"><tspan x="267.0" y="138.0">Post test</tspan></text><text x="267.0" y="148" text-anchor="middle" font-size="9" fill="#fff" opacity="0.95">post-test</text><line x1="342" y1="138" x2="354" y2="138" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-en-full-evaluation)"/><rect x="354" y="110" width="150" height="56" rx="8" fill="#5E8A6A"/><text x="429.0" y="138.0" text-anchor="middle" fill="#FFFFFF" font-size="12" font-weight="600"><tspan x="429.0" y="138.0">Retention</tspan></text><text x="429.0" y="148" text-anchor="middle" font-size="9" fill="#fff" opacity="0.95">retention test</text><line x1="504" y1="138" x2="516" y2="138" stroke="#8A867E" stroke-width="2" marker-end="url(#arr-en-full-evaluation)"/><rect x="516" y="110" width="150" height="56" rx="8" fill="#5E8A6A"/><text x="591.0" y="138.0" text-anchor="middle" fill="#FFFFFF" font-size="12" font-weight="600"><tspan x="591.0" y="138.0">Transfer</tspan></text><text x="591.0" y="148" text-anchor="middle" font-size="9" fill="#fff" opacity="0.95">transfer test (no AI)</text></svg><div class="visual-suppressed"><strong>Benchmark visual suppressed</strong><p>result.json carries no benchmark.baselines, so this visual is omitted; see the standalone benchmark report.</p></div></div></section><section id="full-06-sources-en" class="full-chapter" data-full-chapter><header class="full-chapter-header"><h2>06 Sources, Traceability &amp; Appendix</h2><p class="full-chapter-lead">Preserve original sources, URLs, evidence IDs and retrieval metadata for auditability.</p></header><div class="full-chapter-body"><h3>Source list</h3><div class='table-wrap'><table class='data-table source-table'><thead><tr><th>ID</th><th>Title</th><th>Year</th><th>Authority</th><th>Verifiable location</th></tr></thead><tbody><tr><td><code>S-001</code></td><td class='cell-main source-title-cell'>Generative AI at Work<details class="source-expander detail-expander"><summary>View source &amp; provenance</summary><dl class="source-detail-grid"><div class="source-detail-row"><dt>Original title</dt><dd>Generative AI at Work</dd></div><div class="source-detail-row"><dt>Year</dt><dd>2025</dd></div><div class="source-detail-row"><dt>Authority</dt><dd>Tier 1 DOI-verified paper</dd></div><div class="source-detail-row"><dt>Fetch provider</dt><dd>builtin</dd></div><div class="source-detail-row"><dt>Fetch status</dt><dd>FETCH_VALID</dd></div><div class="source-detail-row"><dt>Verifiable link</dt><dd><a href="https://academic.oup.com/qje/article/140/2/889/7990658">https://academic.oup.com/qje/article/140/2/889/7990658</a></dd></div></dl></details></td><td>2025</td><td>Tier 1 DOI-verified paper</td><td class='cell-main'><a href='https://academic.oup.com/qje/article/140/2/889/7990658'>https://academic.oup.com/qje/article/140/2/889/7990658</a></td></tr><tr><td><code>S-002</code></td><td class='cell-main source-title-cell'>Experimental evidence on the productivity effects of generative artificial intelligence<details class="source-expander detail-expander"><summary>View source &amp; provenance</summary><dl class="source-detail-grid"><div class="source-detail-row"><dt>Original title</dt><dd>Experimental evidence on the productivity effects of generative artificial intelligence</dd></div><div class="source-detail-row"><dt>Year</dt><dd>2023</dd></div><div class="source-detail-row"><dt>Authority</dt><dd>Tier 1 DOI-verified paper</dd></div><div class="source-detail-row"><dt>Fetch provider</dt><dd>builtin</dd></div><div class="source-detail-row"><dt>Fetch status</dt><dd>FETCH_VALID</dd></div><div class="source-detail-row"><dt>Verifiable link</dt><dd><a href="https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf">https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf</a></dd></div></dl></details></td><td>2023</td><td>Tier 1 DOI-verified paper</td><td class='cell-main'><a href='https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf'>https://shakkednoy.com/Noy%20Zhang%20NBER%20SI.pdf</a></td></tr><tr><td><code>S-003</code></td><td class='cell-main source-title-cell'>Navigating the Jagged Technological Frontier: Field Experimental Evidence of the Effects of Artificial Intelligence on Knowledge Worker Productivity and Quality<details class="source-expander detail-expander"><summary>View source &amp; provenance</summary><dl class="source-detail-grid"><div class="source-detail-row"><dt>Original title</dt><dd>Navigating the Jagged Technological Frontier: Field Experimental Evidence of the Effects of Artificial Intelligence on Knowledge Worker Productivity and Quality</dd></div><div class="source-detail-row"><dt>Year</dt><dd>2026</dd></div><div class="source-detail-row"><dt>Authority</dt><dd>Tier 1 DOI-verified paper</dd></div><div class="source-detail-row"><dt>Fetch provider</dt><dd>builtin</dd></div><div class="source-detail-row"><dt>Fetch status</dt><dd>FETCH_VALID</dd></div><div class="source-detail-row"><dt>Verifiable link</dt><dd><a href="https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838">https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838</a></dd></div></dl></details></td><td>2026</td><td>Tier 1 DOI-verified paper</td><td class='cell-main'><a href='https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838'>https://pubsonline.informs.org/doi/10.1287/orsc.2025.21838</a></td></tr></tbody></table></div><h3>Fetch provenance</h3><div class='table-wrap'><table class='data-table'><thead><tr><th>Source</th><th>Fetch method</th><th>Status</th><th>Fallback</th><th>Time</th></tr></thead><tbody><tr><td><code>S-001</code></td><td>builtin</td><td>FETCH_VALID</td><td></td><td></td></tr><tr><td><code>S-002</code></td><td>builtin</td><td>FETCH_VALID</td><td></td><td></td></tr><tr><td><code>S-003</code></td><td>builtin</td><td>FETCH_VALID</td><td></td><td></td></tr></tbody></table></div></div></section></main></div>
2425
+ </div>
2426
+ <footer class="report-footer"><p>EduEvidence Evidence Report · Schema PASS · Claim Binding PASS · Numeric Consistency PASS · Bilingual Structure PASS · Human Language PASS · False Precision PASS · Lieflat Data Bound PASS · Axis Distortion NOT_CHECKED · Colorblind Safe NOT_CHECKED · single-file offline · source: result.json</p></footer>
2427
+ </div>
2428
+ <script>
2429
+ /* EduEvidence Motion Template — one-shot progressive enhancement.
2430
+ The [data-lieflat] gallery block implements the Lieflat mono-tokens
2431
+ obsReveal contract: reveal once when scrolled into view (threshold .3),
2432
+ click to replay (per-id timers cleared first so animations never stack),
2433
+ prefers-reduced-motion downgrade, and static-visible without JS. */
2434
+ (function () {
2435
+ 'use strict';
2436
+ var root = document.documentElement;
2437
+ var reduceMotion = !!(window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches);
2438
+ window.__EDUEVIDENCE_REDUCE_MOTION__ = reduceMotion;
2439
+ if (reduceMotion) return;
2440
+
2441
+ root.classList.add('motion-ready');
2442
+ root.classList.add('js-lf');
2443
+ var groups = [
2444
+ ['.decision-hero', 0], ['.hero-insight', 70], ['.brief-block', 55],
2445
+ ['.outcome-group', 70], ['.tribunal-card', 75], ['.method-audit-item', 45],
2446
+ ['.trace-chain-card', 70], ['.action-node', 60], ['.flow-arrow', 60],
2447
+ ['.phase', 60], ['.full-chapter', 35], ['.brief-source', 40]
2448
+ ];
2449
+ groups.forEach(function (entry) {
2450
+ document.querySelectorAll(entry[0]).forEach(function (el, index) {
2451
+ el.setAttribute('data-animate', '');
2452
+ el.style.setProperty('--motion-delay', Math.min(index * entry[1], 320) + 'ms');
2453
+ });
2454
+ });
2455
+ document.querySelectorAll('.quality-meter,.balance-track').forEach(function (el, index) {
2456
+ el.style.setProperty('--motion-delay', Math.min((index % 8) * 35, 210) + 'ms');
2457
+ });
2458
+
2459
+ var animated = document.querySelectorAll('[data-animate],.quality-meter,.balance-track,.flow-arrow');
2460
+ if (!('IntersectionObserver' in window)) {
2461
+ animated.forEach(function (el) { el.classList.add('is-visible'); });
2462
+ } else {
2463
+ var observer = new IntersectionObserver(function (entries, obs) {
2464
+ entries.forEach(function (entry) {
2465
+ if (!entry.isIntersecting) return;
2466
+ entry.target.classList.add('is-visible');
2467
+ obs.unobserve(entry.target);
2468
+ });
2469
+ }, {threshold:.12, rootMargin:'0px 0px -6% 0px'});
2470
+ animated.forEach(function (el) { observer.observe(el); });
2471
+ }
2472
+
2473
+ // ---- data-lieflat gallery: reveal on scroll, click to replay ----
2474
+ // Per-container timers (mirrors mono-tokens `keep`): every scheduled
2475
+ // replay step is registered under the container id and cleared before the
2476
+ // next replay so staggered animations never stack on rapid clicking.
2477
+ var lfTimers = {};
2478
+ var lfBoxes = Array.prototype.slice.call(document.querySelectorAll('[data-lieflat]'));
2479
+ lfBoxes.forEach(function (box, index) {
2480
+ var base = (box.dataset.chartId || 'figure');
2481
+ var safe = 'lf-' + index + '-' + (window.CSS && CSS.escape ? CSS.escape(base) : base.replace(/[^a-zA-Z0-9_-]/g, '-'));
2482
+ box.dataset.lfId = safe;
2483
+ if (!box.hasAttribute('aria-label')) {
2484
+ box.setAttribute('aria-label', 'Lieflat chart — click to replay the reveal animation');
2485
+ }
2486
+ });
2487
+
2488
+ function clearLfTimers(id) {
2489
+ (lfTimers[id] || []).forEach(function (t) { if (t) clearTimeout(t); });
2490
+ lfTimers[id] = [];
2491
+ }
2492
+
2493
+ // Entrance choreography: cards revealed shortly after load (already in the
2494
+ // viewport) get a short visual stagger so the draw-in is actually seen —
2495
+ // without this, the load-time reveal finishes before the user looks and the
2496
+ // charts appear static until clicked. Scrolled-in and click reveals play
2497
+ // immediately.
2498
+ var bootTime = Date.now();
2499
+ function revealDelay(box, index) {
2500
+ var fresh = Date.now() - bootTime < 1500;
2501
+ if (!fresh) return 40;
2502
+ return 140 + ((index % 6) * 130);
2503
+ }
2504
+
2505
+ function replayLieflat(box, delay) {
2506
+ var id = box.dataset.lfId;
2507
+ delay = (delay === undefined ? 40 : delay);
2508
+ clearLfTimers(id);
2509
+ box.classList.remove('is-live');
2510
+ // force reflow so the re-added class restarts the CSS animations
2511
+ void box.offsetWidth;
2512
+ var tid = setTimeout(function () {
2513
+ box.classList.add('is-live');
2514
+ lfTimers[id] = lfTimers[id].filter(function (t) { return t !== tid; });
2515
+ }, delay);
2516
+ lfTimers[id].push(tid);
2517
+ }
2518
+
2519
+ if (!('IntersectionObserver' in window)) {
2520
+ lfBoxes.forEach(function (box) { box.classList.add('is-live'); });
2521
+ } else {
2522
+ var lfObserver = new IntersectionObserver(function (entries, obs) {
2523
+ entries.forEach(function (entry) {
2524
+ if (!entry.isIntersecting) return;
2525
+ var index = lfBoxes.indexOf(entry.target);
2526
+ replayLieflat(entry.target, revealDelay(entry.target, index));
2527
+ obs.unobserve(entry.target);
2528
+ });
2529
+ }, {threshold:.3});
2530
+ lfBoxes.forEach(function (box) { lfObserver.observe(box); });
2531
+ }
2532
+ lfBoxes.forEach(function (box, index) {
2533
+ box.addEventListener('click', function () { replayLieflat(box, 0); });
2534
+ });
2535
+ })();
2536
+
2537
+ </script>
2538
+ <script>
2539
+
2540
+ (function () {
2541
+ 'use strict';
2542
+ var root = document.documentElement;
2543
+ // ---- Language switcher (zh / en) ----
2544
+ function applyLang(lang) {
2545
+ document.querySelectorAll('.report-shell[data-lang-body]').forEach(function (shell) {
2546
+ shell.style.display = shell.dataset.langBody === lang ? '' : 'none';
2547
+ });
2548
+ document.documentElement.lang = lang === 'en' ? 'en' : 'zh-CN';
2549
+ document.querySelectorAll('.lang-btn').forEach(function (b) {
2550
+ var active = b.dataset.langTarget === lang;
2551
+ b.classList.toggle('active', active);
2552
+ b.setAttribute('aria-pressed', active ? 'true' : 'false');
2553
+ });
2554
+ var langLabel = document.querySelector('[data-lang-label]');
2555
+ if (langLabel) {
2556
+ langLabel.textContent = lang === 'en' ? langLabel.dataset.en : langLabel.dataset.zh;
2557
+ }
2558
+ Object.keys(window.eduevidenceCharts || {}).forEach(function (id) {
2559
+ var ch = window.eduevidenceCharts[id];
2560
+ if (ch && ch.resize) ch.resize();
2561
+ });
2562
+ try { localStorage.setItem('eduevidence-lang', lang); } catch (e) {}
2563
+ }
2564
+ var savedLang = null;
2565
+ try { savedLang = localStorage.getItem('eduevidence-lang'); } catch (e) {}
2566
+ var queryLang = new URLSearchParams(window.location.search).get('lang');
2567
+ applyLang((queryLang || savedLang) === 'en' ? 'en' : 'zh');
2568
+ document.querySelectorAll('.lang-btn').forEach(function (btn) {
2569
+ btn.addEventListener('click', function () { applyLang(btn.dataset.langTarget); });
2570
+ });
2571
+
2572
+ // ---- Top-level Visual Brief / Full Report pagination ----
2573
+ function applyReportView(view) {
2574
+ view = view === 'full' ? 'full' : 'brief';
2575
+ document.querySelectorAll('.report-page[data-report-page]').forEach(function (page) {
2576
+ page.hidden = page.dataset.reportPage !== view;
2577
+ });
2578
+ document.querySelectorAll('.report-view-btn').forEach(function (btn) {
2579
+ var active = btn.dataset.reportView === view;
2580
+ btn.classList.toggle('active', active);
2581
+ btn.setAttribute('aria-pressed', active ? 'true' : 'false');
2582
+ });
2583
+ root.dataset.reportView = view;
2584
+ try { localStorage.setItem('eduevidence-report-view', view); } catch (e) {}
2585
+ }
2586
+ var savedView = null;
2587
+ try { savedView = localStorage.getItem('eduevidence-report-view'); } catch (e) {}
2588
+ var queryView = new URLSearchParams(window.location.search).get('view');
2589
+ applyReportView((queryView || savedView) === 'full' ? 'full' : 'brief');
2590
+ document.querySelectorAll('.report-view-btn').forEach(function (btn) {
2591
+ btn.addEventListener('click', function () { applyReportView(btn.dataset.reportView); });
2592
+ });
2593
+
2594
+ // ---- Collapsible Full Report TOC ----
2595
+ document.querySelectorAll('.full-report-layout').forEach(function (layout) {
2596
+ var button = layout.querySelector('.toc-collapse');
2597
+ if (!button) return;
2598
+ button.addEventListener('click', function () {
2599
+ var collapsed = layout.classList.toggle('toc-collapsed');
2600
+ button.setAttribute('aria-expanded', collapsed ? 'false' : 'true');
2601
+ button.textContent = collapsed ? button.dataset.labelExpand : button.dataset.labelCollapse;
2602
+ });
2603
+ });
2604
+
2605
+ // ---- TOC active chapter tracking ----
2606
+ if ('IntersectionObserver' in window) {
2607
+ document.querySelectorAll('.report-shell').forEach(function (shell) {
2608
+ var links = Array.from(shell.querySelectorAll('[data-toc-target]'));
2609
+ if (!links.length) return;
2610
+ var sections = links.map(function (link) { return shell.querySelector('#' + CSS.escape(link.dataset.tocTarget)); }).filter(Boolean);
2611
+ var activeObserver = new IntersectionObserver(function (entries) {
2612
+ var visible = entries.filter(function (entry) { return entry.isIntersecting; })
2613
+ .sort(function (a,b) { return a.boundingClientRect.top - b.boundingClientRect.top; });
2614
+ if (!visible.length) return;
2615
+ var id = visible[0].target.id;
2616
+ links.forEach(function (link) { link.classList.toggle('active', link.dataset.tocTarget === id); });
2617
+ }, {rootMargin:'-12% 0px -72% 0px', threshold:[0,0.01]});
2618
+ sections.forEach(function (section) { activeObserver.observe(section); });
2619
+ });
2620
+ }
2621
+
2622
+ // ---- Evidence matrix filter / search ----
2623
+ function bindMatrix(matrix) {
2624
+ var suffix = matrix.id.replace(/^evidence-matrix-/, '');
2625
+ var search = document.getElementById('matrix-search-' + suffix);
2626
+ var dirSel = document.getElementById('matrix-direction-' + suffix);
2627
+ var outSel = document.getElementById('matrix-outcome-' + suffix);
2628
+ var rows = matrix.querySelectorAll('tbody tr');
2629
+ function applyFilter() {
2630
+ var q = (search && search.value || '').toLowerCase();
2631
+ var d = dirSel ? dirSel.value : '';
2632
+ var o = outSel ? outSel.value : '';
2633
+ rows.forEach(function (row) {
2634
+ var haystack = (row.dataset.search || row.textContent || '').toLowerCase();
2635
+ var direction = row.dataset.direction || row.dataset.effect || '';
2636
+ var outcome = row.dataset.outcome || '';
2637
+ var show = (!q || haystack.indexOf(q) >= 0)
2638
+ && (!d || direction === d) && (!o || outcome === o);
2639
+ row.style.display = show ? '' : 'none';
2640
+ });
2641
+ }
2642
+ if (search) search.addEventListener('input', applyFilter);
2643
+ if (dirSel) dirSel.addEventListener('change', applyFilter);
2644
+ if (outSel) outSel.addEventListener('change', applyFilter);
2645
+ }
2646
+ document.querySelectorAll('table[id^=evidence-matrix-]').forEach(bindMatrix);
2647
+
2648
+ // ---- Motion preference is owned by the fixed Motion Template. ----
2649
+ var reduceMotion = !!window.__EDUEVIDENCE_REDUCE_MOTION__ ||
2650
+ !!(window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches);
2651
+
2652
+ // ---- ECharts enhancer (only when window.echarts exists) ----
2653
+ // 成功 init 后给容器加 .is-mounted 才显示(6.2:无 ECharts 时不占空白高度)
2654
+ function mountChart(containerId, spec) {
2655
+ var el = document.getElementById(containerId);
2656
+ if (!el || typeof window.echarts === 'undefined') return;
2657
+ var chart = window.echarts.init(el);
2658
+ var option = Object.assign({}, spec.option || {});
2659
+ option.animation = !reduceMotion;
2660
+ if (!reduceMotion) {
2661
+ option.animationDuration = 650;
2662
+ option.animationDurationUpdate = 420;
2663
+ option.animationEasing = 'cubicOut';
2664
+ option.animationEasingUpdate = 'cubicOut';
2665
+ }
2666
+ chart.setOption(option);
2667
+ el.classList.add('is-mounted');
2668
+ window.eduevidenceCharts = window.eduevidenceCharts || {};
2669
+ window.eduevidenceCharts[containerId] = chart;
2670
+ }
2671
+ mountChart('chart-outcome-zh', {"chart_id": "outcome-evidence-overview", "purpose": "interactive_analysis", "engine": "echarts", "chart_type": "diverging_bar", "semantic_basis": "effect_direction", "title": "结果证据概览", "option": {"tooltip": {"trigger": "axis"}, "legend": {"data": ["正向效应", "负向效应", "零效应"]}, "grid": [{"left": 150, "right": 40, "top": 30, "height": "52%"}, {"left": 150, "right": 40, "top": "70%", "height": "18%"}], "xAxis": [{"type": "value", "gridIndex": 0, "minInterval": 1}, {"type": "value", "gridIndex": 1, "min": 0, "max": 2, "minInterval": 1}], "yAxis": [{"type": "category", "data": ["Policy Effectiveness", "Implementation Risk"], "inverse": true, "gridIndex": 0}, {"type": "category", "data": ["Policy Effectiveness", "Implementation Risk"], "inverse": true, "gridIndex": 1, "show": false}], "series": [{"name": "正向效应", "type": "bar", "data": [2, 0], "itemStyle": {"color": "#5E8A6A"}, "xAxisIndex": 0, "yAxisIndex": 0, "lane": "main"}, {"name": "负向效应", "type": "bar", "data": [0, -2], "itemStyle": {"color": "#A85B53"}, "xAxisIndex": 0, "yAxisIndex": 0, "lane": "main"}, {"name": "零效应", "type": "bar", "data": [0, 0], "itemStyle": {"color": "#C99A4A"}, "xAxisIndex": 1, "yAxisIndex": 1, "barWidth": 6, "lane": "neutral"}]}, "summary_text": "各 Outcome 的正向 / 负向 / 零效应证据条数对比。这里展示的是 effect_direction,不是“这条证据是否支持某个主张”。", "integrity": {"numbers_match_result": "NOT_CHECKED", "no_axis_distortion": "NOT_CHECKED", "no_false_precision": "NOT_CHECKED", "colorblind_safe": "NOT_CHECKED"}});
2672
+ mountChart('chart-trace-zh', {"chart_id": "claim-evidence-trace", "purpose": "interactive_analysis", "engine": "echarts", "chart_type": "graph", "title": "主张-证据追溯", "option": {"tooltip": {"trigger": "item"}, "legend": {"data": ["Decision", "Claim", "Evidence", "Source"]}, "series": [{"type": "graph", "layout": "force", "roam": true, "draggable": true, "categories": [{"name": "Decision"}, {"name": "Claim"}, {"name": "Evidence"}, {"name": "Source"}], "data": [{"id": "decision", "name": "PILOT", "category": 0}, {"id": "claim-0", "name": "在有边界的客服场景中,AI 辅助可缩短会话处理时间;吞吐量是另一项指标。", "category": 1}, {"id": "E-001", "name": "E-001", "category": 2}, {"id": "S-001", "name": "S-001", "category": 3}, {"id": "claim-1", "name": "ChatGPT 缩短了短篇职业写作任务用时;对客服而言属于间接证据。", "category": 1}, {"id": "E-002", "name": "E-002", "category": 2}, {"id": "S-002", "name": "S-002", "category": 3}, {"id": "claim-2", "name": "在超出能力边界的任务中 AI 可能降低正确率;咨询实验对客服属于间接证据。", "category": 1}, {"id": "E-003", "name": "E-003", "category": 2}, {"id": "S-003", "name": "S-003", "category": 3}, {"id": "claim-3", "name": "须单独监测资深高技能客服的质量,不能假定所有岗位群体均受益。", "category": 1}, {"id": "E-004", "name": "E-004", "category": 2}], "links": [{"source": "decision", "target": "claim-0"}, {"source": "claim-0", "target": "E-001", "label": "support", "lineStyle": {"color": "#5E8A6A"}}, {"source": "E-001", "target": "S-001"}, {"source": "decision", "target": "claim-1"}, {"source": "claim-1", "target": "E-002", "label": "support", "lineStyle": {"color": "#5E8A6A"}}, {"source": "E-002", "target": "S-002"}, {"source": "decision", "target": "claim-2"}, {"source": "claim-2", "target": "E-003", "label": "support", "lineStyle": {"color": "#5E8A6A"}}, {"source": "E-003", "target": "S-003"}, {"source": "decision", "target": "claim-3"}, {"source": "claim-3", "target": "E-004", "label": "support", "lineStyle": {"color": "#5E8A6A"}}, {"source": "E-004", "target": "S-001"}], "label": {"show": true, "position": "right", "fontSize": 9}, "lineStyle": {"curveness": 0.15}}]}, "summary_text": "决策→结论→证据→来源 的可追溯图谱;点击节点可追踪支持/反驳路径。", "integrity": {"numbers_match_result": "NOT_CHECKED", "no_axis_distortion": "NOT_CHECKED", "no_false_precision": "NOT_CHECKED", "colorblind_safe": "NOT_CHECKED"}});
2673
+ mountChart('chart-benchmark-zh', {"chart_id": "benchmark-panel", "purpose": "interactive_analysis", "engine": "echarts", "chart_type": "composite", "title": "基准测试:B0-B4", "option": {"tooltip": {"trigger": "axis"}, "legend": {"data": ["Citation Support", "Unsupported Rate", "Contradiction"]}, "grid": {"left": 60, "right": 40}, "xAxis": {"type": "category", "data": []}, "yAxis": {"type": "value", "max": 1, "min": 0}, "series": [{"name": "Citation Support", "type": "bar", "data": []}, {"name": "Unsupported Rate", "type": "bar", "data": []}, {"name": "Contradiction", "type": "bar", "data": []}]}, "cost_vs_quality": {"chart_id": "benchmark-quality-cost", "purpose": "interactive_analysis", "engine": "echarts", "chart_type": "scatter", "title": "质量 vs 成本", "option": {"tooltip": {"trigger": "item"}, "xAxis": {"type": "value", "name": "cost (USD)", "min": 0}, "yAxis": {"type": "value", "name": "citation support", "min": 0, "max": 1}, "series": [{"type": "scatter", "data": []}]}}, "summary_text": "B0-B4 基线在引用支持/无支撑率/反方发现上的对比及质量-成本散点。", "integrity": {"numbers_match_result": "NOT_CHECKED", "no_axis_distortion": "NOT_CHECKED", "no_false_precision": "NOT_CHECKED", "colorblind_safe": "NOT_CHECKED"}});
2674
+ mountChart('chart-outcome-en', {"chart_id": "outcome-evidence-overview", "purpose": "interactive_analysis", "engine": "echarts", "chart_type": "diverging_bar", "semantic_basis": "effect_direction", "title": "Outcome Evidence Overview", "option": {"tooltip": {"trigger": "axis"}, "legend": {"data": ["Positive effect", "Negative effect", "Null effect"]}, "grid": [{"left": 150, "right": 40, "top": 30, "height": "52%"}, {"left": 150, "right": 40, "top": "70%", "height": "18%"}], "xAxis": [{"type": "value", "gridIndex": 0, "minInterval": 1}, {"type": "value", "gridIndex": 1, "min": 0, "max": 2, "minInterval": 1}], "yAxis": [{"type": "category", "data": ["Policy Effectiveness", "Implementation Risk"], "inverse": true, "gridIndex": 0}, {"type": "category", "data": ["Policy Effectiveness", "Implementation Risk"], "inverse": true, "gridIndex": 1, "show": false}], "series": [{"name": "Positive effect", "type": "bar", "data": [2, 0], "itemStyle": {"color": "#5E8A6A"}, "xAxisIndex": 0, "yAxisIndex": 0, "lane": "main"}, {"name": "Negative effect", "type": "bar", "data": [0, -2], "itemStyle": {"color": "#A85B53"}, "xAxisIndex": 0, "yAxisIndex": 0, "lane": "main"}, {"name": "Null effect", "type": "bar", "data": [0, 0], "itemStyle": {"color": "#C99A4A"}, "xAxisIndex": 1, "yAxisIndex": 1, "barWidth": 6, "lane": "neutral"}]}, "summary_text": "Positive / negative / null effect-direction evidence counts per outcome. This visual encodes effect_direction, not whether evidence supports a claim.", "integrity": {"numbers_match_result": "NOT_CHECKED", "no_axis_distortion": "NOT_CHECKED", "no_false_precision": "NOT_CHECKED", "colorblind_safe": "NOT_CHECKED"}});
2675
+ mountChart('chart-trace-en', {"chart_id": "claim-evidence-trace", "purpose": "interactive_analysis", "engine": "echarts", "chart_type": "graph", "title": "Claim-Evidence Trace", "option": {"tooltip": {"trigger": "item"}, "legend": {"data": ["Decision", "Claim", "Evidence", "Source"]}, "series": [{"type": "graph", "layout": "force", "roam": true, "draggable": true, "categories": [{"name": "Decision"}, {"name": "Claim"}, {"name": "Evidence"}, {"name": "Source"}], "data": [{"id": "decision", "name": "PILOT", "category": 0}, {"id": "claim-0", "name": "AI assistance can shorten customer chat ", "category": 1}, {"id": "E-001", "name": "E-001", "category": 2}, {"id": "S-001", "name": "S-001", "category": 3}, {"id": "claim-1", "name": "ChatGPT reduced time on short profession", "category": 1}, {"id": "E-002", "name": "E-002", "category": 2}, {"id": "S-002", "name": "S-002", "category": 3}, {"id": "claim-2", "name": "AI can reduce correctness on tasks outsi", "category": 1}, {"id": "E-003", "name": "E-003", "category": 2}, {"id": "S-003", "name": "S-003", "category": 3}, {"id": "claim-3", "name": "Experienced, high-skill support staff ne", "category": 1}, {"id": "E-004", "name": "E-004", "category": 2}], "links": [{"source": "decision", "target": "claim-0"}, {"source": "claim-0", "target": "E-001", "label": "support", "lineStyle": {"color": "#5E8A6A"}}, {"source": "E-001", "target": "S-001"}, {"source": "decision", "target": "claim-1"}, {"source": "claim-1", "target": "E-002", "label": "support", "lineStyle": {"color": "#5E8A6A"}}, {"source": "E-002", "target": "S-002"}, {"source": "decision", "target": "claim-2"}, {"source": "claim-2", "target": "E-003", "label": "support", "lineStyle": {"color": "#5E8A6A"}}, {"source": "E-003", "target": "S-003"}, {"source": "decision", "target": "claim-3"}, {"source": "claim-3", "target": "E-004", "label": "support", "lineStyle": {"color": "#5E8A6A"}}, {"source": "E-004", "target": "S-001"}], "label": {"show": true, "position": "right", "fontSize": 9}, "lineStyle": {"curveness": 0.15}}]}, "summary_text": "Traceable graph Decision → Claim → Evidence → Source; click nodes to follow support/contradict paths.", "integrity": {"numbers_match_result": "NOT_CHECKED", "no_axis_distortion": "NOT_CHECKED", "no_false_precision": "NOT_CHECKED", "colorblind_safe": "NOT_CHECKED"}});
2676
+ mountChart('chart-benchmark-en', {"chart_id": "benchmark-panel", "purpose": "interactive_analysis", "engine": "echarts", "chart_type": "composite", "title": "Benchmark: B0-B4", "option": {"tooltip": {"trigger": "axis"}, "legend": {"data": ["Citation Support", "Unsupported Rate", "Contradiction"]}, "grid": {"left": 60, "right": 40}, "xAxis": {"type": "category", "data": []}, "yAxis": {"type": "value", "max": 1, "min": 0}, "series": [{"name": "Citation Support", "type": "bar", "data": []}, {"name": "Unsupported Rate", "type": "bar", "data": []}, {"name": "Contradiction", "type": "bar", "data": []}]}, "cost_vs_quality": {"chart_id": "benchmark-quality-cost", "purpose": "interactive_analysis", "engine": "echarts", "chart_type": "scatter", "title": "Quality vs Cost", "option": {"tooltip": {"trigger": "item"}, "xAxis": {"type": "value", "name": "cost (USD)", "min": 0}, "yAxis": {"type": "value", "name": "citation support", "min": 0, "max": 1}, "series": [{"type": "scatter", "data": []}]}}, "summary_text": "B0-B4 baselines compared on citation support, unsupported rate and contradiction discovery, plus the quality-cost scatter.", "integrity": {"numbers_match_result": "NOT_CHECKED", "no_axis_distortion": "NOT_CHECKED", "no_false_precision": "NOT_CHECKED", "colorblind_safe": "NOT_CHECKED"}});
2677
+ })();
2678
+
2679
+ /* Offline reader: navigation and display only; no research state mutations. */
2680
+ (function () {
2681
+ "use strict";
2682
+ var root = document.documentElement;
2683
+ var copy = {
2684
+ zh: {
2685
+ brief: "\u6458\u8981",
2686
+ full: "\u5b8c\u6574\u62a5\u544a",
2687
+ print: "\u6253\u5370",
2688
+ matched: "\u6761\u8bc1\u636e",
2689
+ },
2690
+ en: {
2691
+ brief: "Brief",
2692
+ full: "Full report",
2693
+ print: "Print",
2694
+ matched: "findings",
2695
+ },
2696
+ };
2697
+ function labels() {
2698
+ var lang = root.lang.indexOf("en") === 0 ? "en" : "zh";
2699
+ document.querySelectorAll("[data-copy]").forEach(function (el) {
2700
+ el.textContent = copy[lang][el.dataset.copy];
2701
+ });
2702
+ }
2703
+ labels();
2704
+ new MutationObserver(labels).observe(root, {
2705
+ attributes: true,
2706
+ attributeFilter: ["lang"],
2707
+ });
2708
+ document.querySelectorAll(".reader-print").forEach(function (b) {
2709
+ b.addEventListener("click", function () {
2710
+ window.print();
2711
+ });
2712
+ });
2713
+ document.querySelectorAll(".reader-home").forEach(function (a) {
2714
+ a.addEventListener("click", function (e) {
2715
+ e.preventDefault();
2716
+ window.scrollTo({ top: 0, behavior: "instant" });
2717
+ });
2718
+ });
2719
+ var scheduled = false;
2720
+ function progress() {
2721
+ scheduled = false;
2722
+ var max = document.documentElement.scrollHeight - window.innerHeight;
2723
+ var fraction = max > 0 ? Math.min(1, Math.max(0, window.scrollY / max)) : 0;
2724
+ var bar = document.querySelector(".reader-progress>span");
2725
+ if (bar) bar.style.transform = "scaleX(" + fraction + ")";
2726
+ var shell = Array.from(document.querySelectorAll(".report-shell")).find(
2727
+ function (s) {
2728
+ return getComputedStyle(s).display !== "none";
2729
+ },
2730
+ );
2731
+ if (!shell) return;
2732
+ var blocks = Array.from(shell.querySelectorAll(".brief-block[id]"));
2733
+ var current = blocks
2734
+ .filter(function (b) {
2735
+ return b.getBoundingClientRect().top < 150;
2736
+ })
2737
+ .pop();
2738
+ shell.querySelectorAll(".brief-navigation a").forEach(function (a) {
2739
+ var active = current && a.hash === "#" + current.id;
2740
+ a.classList.toggle("active", !!active);
2741
+ if (active) a.setAttribute("aria-current", "location");
2742
+ else a.removeAttribute("aria-current");
2743
+ });
2744
+ }
2745
+ function queue() {
2746
+ if (!scheduled) {
2747
+ scheduled = true;
2748
+ requestAnimationFrame(progress);
2749
+ }
2750
+ }
2751
+ window.addEventListener("scroll", queue, { passive: true });
2752
+ window.addEventListener("resize", queue);
2753
+ document.addEventListener("click", queue);
2754
+ progress();
2755
+ document.querySelectorAll(".report-view-btn").forEach(function (btn) {
2756
+ btn.addEventListener("click", function () {
2757
+ window.scrollTo({ top: 0, behavior: "instant" });
2758
+ });
2759
+ });
2760
+ document
2761
+ .querySelectorAll(".table-wrap,.evidence-to-action")
2762
+ .forEach(function (el) {
2763
+ el.tabIndex = 0;
2764
+ el.setAttribute("role", "region");
2765
+ el.setAttribute(
2766
+ "aria-label",
2767
+ root.lang.indexOf("en") === 0
2768
+ ? "Scrollable data table"
2769
+ : "\u53ef\u6eda\u52a8\u6570\u636e\u8868",
2770
+ );
2771
+ });
2772
+ document
2773
+ .querySelectorAll('table[id^="evidence-matrix-"]')
2774
+ .forEach(function (table) {
2775
+ var suffix = table.id.replace(/^evidence-matrix-/, "");
2776
+ var counter = document.createElement("p");
2777
+ counter.className = "reader-filter-count";
2778
+ counter.setAttribute("role", "status");
2779
+ counter.setAttribute("aria-live", "polite");
2780
+ table.parentElement.insertAdjacentElement("beforebegin", counter);
2781
+ function count() {
2782
+ var rows = Array.from(table.querySelectorAll("tbody tr"));
2783
+ var visible = rows.filter(function (r) {
2784
+ return r.style.display !== "none";
2785
+ }).length;
2786
+ counter.textContent =
2787
+ visible +
2788
+ " / " +
2789
+ rows.length +
2790
+ " " +
2791
+ copy[suffix.endsWith("en") ? "en" : "zh"].matched;
2792
+ }
2793
+ ["matrix-search-", "matrix-direction-", "matrix-outcome-"].forEach(
2794
+ function (prefix) {
2795
+ var input = document.getElementById(prefix + suffix);
2796
+ if (input) {
2797
+ input.addEventListener("input", count);
2798
+ input.addEventListener("change", count);
2799
+ }
2800
+ },
2801
+ );
2802
+ count();
2803
+ });
2804
+ document
2805
+ .querySelectorAll('a[href^="http:"] , a[href^="https:"]')
2806
+ .forEach(function (a) {
2807
+ a.target = "_blank";
2808
+ a.rel = "noopener noreferrer";
2809
+ });
2810
+ })();
2811
+
2812
+ </script>
2813
+ </body>
2814
+ </html>