eduevidence 5.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 (312) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +506 -0
  3. package/README.zh-CN.md +434 -0
  4. package/SKILL.md +195 -0
  5. package/bin/eduevidence.js +127 -0
  6. package/domains/education/manifest.json +183 -0
  7. package/domains/education/outcome_taxonomy.json +127 -0
  8. package/domains/manifest.json +26 -0
  9. package/domains/policy/frame.schema.json +234 -0
  10. package/domains/policy/manifest.json +10 -0
  11. package/domains/policy/methodology_checklist.json +109 -0
  12. package/domains/policy/outcome_taxonomy.json +53 -0
  13. package/domains/policy/references/causal-identification.md +45 -0
  14. package/domains/policy/references/cost-evidence.md +44 -0
  15. package/domains/policy/references/equity.md +42 -0
  16. package/domains/policy/references/evidence-hierarchy.md +41 -0
  17. package/domains/policy/references/implementation-evidence.md +47 -0
  18. package/eduevidence_cli.py +26 -0
  19. package/engine/__init__.py +11 -0
  20. package/engine/__pycache__/__init__.cpython-312.pyc +0 -0
  21. package/engine/__pycache__/analysis.cpython-312.pyc +0 -0
  22. package/engine/__pycache__/bias.cpython-312.pyc +0 -0
  23. package/engine/__pycache__/briefs.cpython-312.pyc +0 -0
  24. package/engine/__pycache__/capabilities.cpython-312.pyc +0 -0
  25. package/engine/__pycache__/citation_check.cpython-312.pyc +0 -0
  26. package/engine/__pycache__/contracts.cpython-312.pyc +0 -0
  27. package/engine/__pycache__/datasets.cpython-312.pyc +0 -0
  28. package/engine/__pycache__/events.cpython-312.pyc +0 -0
  29. package/engine/__pycache__/evidence_graph.cpython-312.pyc +0 -0
  30. package/engine/__pycache__/evidence_review.cpython-312.pyc +0 -0
  31. package/engine/__pycache__/evidencecore.cpython-312.pyc +0 -0
  32. package/engine/__pycache__/gap_lens.cpython-312.pyc +0 -0
  33. package/engine/__pycache__/gaps.cpython-312.pyc +0 -0
  34. package/engine/__pycache__/graph_store.cpython-312.pyc +0 -0
  35. package/engine/__pycache__/graph_validate.cpython-312.pyc +0 -0
  36. package/engine/__pycache__/ids.cpython-312.pyc +0 -0
  37. package/engine/__pycache__/library.cpython-312.pyc +0 -0
  38. package/engine/__pycache__/library_builtin.cpython-312.pyc +0 -0
  39. package/engine/__pycache__/living.cpython-312.pyc +0 -0
  40. package/engine/__pycache__/log.cpython-312.pyc +0 -0
  41. package/engine/__pycache__/meta_analysis.cpython-312.pyc +0 -0
  42. package/engine/__pycache__/meta_synthesis.cpython-312.pyc +0 -0
  43. package/engine/__pycache__/migration.cpython-312.pyc +0 -0
  44. package/engine/__pycache__/mode_router.cpython-312.pyc +0 -0
  45. package/engine/__pycache__/paths.cpython-312.pyc +0 -0
  46. package/engine/__pycache__/pilot.cpython-312.pyc +0 -0
  47. package/engine/__pycache__/planner.cpython-312.pyc +0 -0
  48. package/engine/__pycache__/project.cpython-312.pyc +0 -0
  49. package/engine/__pycache__/projections.cpython-312.pyc +0 -0
  50. package/engine/__pycache__/robustness.cpython-312.pyc +0 -0
  51. package/engine/__pycache__/run.cpython-312.pyc +0 -0
  52. package/engine/__pycache__/semantics.cpython-312.pyc +0 -0
  53. package/engine/__pycache__/study_design.cpython-312.pyc +0 -0
  54. package/engine/__pycache__/synthesis.cpython-312.pyc +0 -0
  55. package/engine/__pycache__/tribunal.cpython-312.pyc +0 -0
  56. package/engine/__pycache__/update.cpython-312.pyc +0 -0
  57. package/engine/__pycache__/versions.cpython-312.pyc +0 -0
  58. package/engine/analysis.py +308 -0
  59. package/engine/bias.py +178 -0
  60. package/engine/briefs.py +106 -0
  61. package/engine/capabilities.py +99 -0
  62. package/engine/citation_check.py +192 -0
  63. package/engine/contracts.py +117 -0
  64. package/engine/datasets.py +165 -0
  65. package/engine/events.py +67 -0
  66. package/engine/evidence_graph.py +571 -0
  67. package/engine/evidence_review.py +88 -0
  68. package/engine/evidencecore.py +182 -0
  69. package/engine/gap_lens.py +132 -0
  70. package/engine/gaps.py +169 -0
  71. package/engine/graph_store.py +335 -0
  72. package/engine/graph_validate.py +87 -0
  73. package/engine/ids.py +77 -0
  74. package/engine/library.py +268 -0
  75. package/engine/library_builtin.py +301 -0
  76. package/engine/living.py +671 -0
  77. package/engine/log.py +39 -0
  78. package/engine/meta_analysis.py +333 -0
  79. package/engine/meta_synthesis.py +111 -0
  80. package/engine/migration.py +397 -0
  81. package/engine/mode_router.py +72 -0
  82. package/engine/paths.py +15 -0
  83. package/engine/pilot.py +368 -0
  84. package/engine/planner.py +126 -0
  85. package/engine/project.py +118 -0
  86. package/engine/projections.py +240 -0
  87. package/engine/robustness.py +109 -0
  88. package/engine/run.py +85 -0
  89. package/engine/semantics.py +135 -0
  90. package/engine/study_design.py +87 -0
  91. package/engine/synthesis.py +187 -0
  92. package/engine/tribunal.py +408 -0
  93. package/engine/update.py +113 -0
  94. package/engine/versions.py +12 -0
  95. package/install.sh +510 -0
  96. package/integrations/__init__.py +1 -0
  97. package/integrations/__pycache__/__init__.cpython-312.pyc +0 -0
  98. package/integrations/__pycache__/agent_mcp.cpython-312.pyc +0 -0
  99. package/integrations/__pycache__/smart_web_fetch.cpython-312.pyc +0 -0
  100. package/integrations/agent_mcp.py +856 -0
  101. package/integrations/smart_web_fetch.py +59 -0
  102. package/package.json +50 -0
  103. package/pyproject.toml +55 -0
  104. package/references/applicability-policy.md +88 -0
  105. package/references/education-framing.md +132 -0
  106. package/references/effect_size_formulas.md +35 -0
  107. package/references/evaluation-design.md +111 -0
  108. package/references/evidence-quality.md +79 -0
  109. package/references/grade_framework.md +29 -0
  110. package/references/intervention-design.md +98 -0
  111. package/references/methodology-audit.md +103 -0
  112. package/references/outcome-taxonomy.md +106 -0
  113. package/references/retrieval-protocol.md +142 -0
  114. package/references/skeptic-protocol.md +93 -0
  115. package/references/social_science_pitfalls.md +48 -0
  116. package/references/source-validity.md +140 -0
  117. package/references/tribunal-policy.md +112 -0
  118. package/references/wwc_standards.md +29 -0
  119. package/retrieval/__init__.py +1 -0
  120. package/retrieval/__pycache__/__init__.cpython-312.pyc +0 -0
  121. package/retrieval/__pycache__/corpus_store.cpython-312.pyc +0 -0
  122. package/retrieval/__pycache__/dedupe.cpython-312.pyc +0 -0
  123. package/retrieval/__pycache__/failures.cpython-312.pyc +0 -0
  124. package/retrieval/__pycache__/fetch.cpython-312.pyc +0 -0
  125. package/retrieval/__pycache__/search.cpython-312.pyc +0 -0
  126. package/retrieval/__pycache__/source.cpython-312.pyc +0 -0
  127. package/retrieval/__pycache__/validate.cpython-312.pyc +0 -0
  128. package/retrieval/corpus_store.py +181 -0
  129. package/retrieval/dedupe.py +127 -0
  130. package/retrieval/failures.py +90 -0
  131. package/retrieval/fetch.py +435 -0
  132. package/retrieval/search.py +493 -0
  133. package/retrieval/source.py +160 -0
  134. package/retrieval/validate.py +257 -0
  135. package/schemas/agent-mcp-approval.schema.json +57 -0
  136. package/schemas/chart-spec.schema.json +88 -0
  137. package/schemas/cross-model-review.schema.json +28 -0
  138. package/schemas/education-frame.schema.json +106 -0
  139. package/schemas/evaluation.schema.json +35 -0
  140. package/schemas/evidence.schema.json +81 -0
  141. package/schemas/fetch-result.schema.json +119 -0
  142. package/schemas/intervention.schema.json +46 -0
  143. package/schemas/methodology.schema.json +102 -0
  144. package/schemas/report-result.schema.json +381 -0
  145. package/schemas/report-spec.schema.json +130 -0
  146. package/schemas/source.schema.json +311 -0
  147. package/schemas/v2/analysis-plan.schema.json +28 -0
  148. package/schemas/v2/analysis-run.schema.json +33 -0
  149. package/schemas/v2/claim.schema.json +26 -0
  150. package/schemas/v2/dataset-asset.schema.json +40 -0
  151. package/schemas/v2/decision-snapshot.schema.json +53 -0
  152. package/schemas/v2/evidence-link.schema.json +38 -0
  153. package/schemas/v2/finding.schema.json +47 -0
  154. package/schemas/v2/graph-revision.schema.json +30 -0
  155. package/schemas/v2/knowledge-gap.schema.json +40 -0
  156. package/schemas/v2/methodology-audit.schema.json +30 -0
  157. package/schemas/v2/outcome.schema.json +18 -0
  158. package/schemas/v2/project.schema.json +31 -0
  159. package/schemas/v2/research-intent.schema.json +24 -0
  160. package/schemas/v2/run.schema.json +43 -0
  161. package/schemas/v2/source.schema.json +24 -0
  162. package/schemas/v2/study-design.schema.json +67 -0
  163. package/schemas/v2/study.schema.json +37 -0
  164. package/schemas/v3/pilot-outcome.schema.json +132 -0
  165. package/schemas/v3/run-manifest.schema.json +193 -0
  166. package/schemas/v3/synthesis.schema.json +86 -0
  167. package/schemas/v4/drift-report.schema.json +66 -0
  168. package/schemas/v4/evidence-library.schema.json +42 -0
  169. package/schemas/v4/living-subscription.schema.json +55 -0
  170. package/schemas/v4/meta-analysis.schema.json +152 -0
  171. package/schemas/verdict.schema.json +56 -0
  172. package/scripts/__init__.py +0 -0
  173. package/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
  174. package/scripts/__pycache__/benchmark.cpython-312.pyc +0 -0
  175. package/scripts/__pycache__/benchmark_evaluator.cpython-312.pyc +0 -0
  176. package/scripts/__pycache__/benchmark_judge.cpython-312.pyc +0 -0
  177. package/scripts/__pycache__/benchmark_routing.cpython-312.pyc +0 -0
  178. package/scripts/__pycache__/benchmark_v2.cpython-312.pyc +0 -0
  179. package/scripts/__pycache__/benchmark_v3.cpython-312.pyc +0 -0
  180. package/scripts/__pycache__/build_result.cpython-312.pyc +0 -0
  181. package/scripts/__pycache__/claim_audit.cpython-312.pyc +0 -0
  182. package/scripts/__pycache__/complexity_gate.cpython-312.pyc +0 -0
  183. package/scripts/__pycache__/compute_confidence.cpython-312.pyc +0 -0
  184. package/scripts/__pycache__/dashboard_server.cpython-312.pyc +0 -0
  185. package/scripts/__pycache__/did_regression.cpython-312.pyc +0 -0
  186. package/scripts/__pycache__/effect_calculator.cpython-312.pyc +0 -0
  187. package/scripts/__pycache__/evidence_matrix.cpython-312.pyc +0 -0
  188. package/scripts/__pycache__/evidence_score.cpython-312.pyc +0 -0
  189. package/scripts/__pycache__/evidence_semantics.cpython-312.pyc +0 -0
  190. package/scripts/__pycache__/fetch_benchmark.cpython-312.pyc +0 -0
  191. package/scripts/__pycache__/lint_report_layout.cpython-312.pyc +0 -0
  192. package/scripts/__pycache__/orchestrator.cpython-312.pyc +0 -0
  193. package/scripts/__pycache__/pre_verdict_gate.cpython-312.pyc +0 -0
  194. package/scripts/__pycache__/recompute_demo_quality.cpython-312.pyc +0 -0
  195. package/scripts/__pycache__/render_report.cpython-312.pyc +0 -0
  196. package/scripts/__pycache__/render_report_html.cpython-312.pyc +0 -0
  197. package/scripts/__pycache__/run_workspace.cpython-312.pyc +0 -0
  198. package/scripts/__pycache__/skill_lint.cpython-312.pyc +0 -0
  199. package/scripts/__pycache__/startup_probe.cpython-312.pyc +0 -0
  200. package/scripts/__pycache__/sync_killer_demo_report.cpython-312.pyc +0 -0
  201. package/scripts/__pycache__/test_adversarial_empirical.cpython-312-pytest-9.0.2.pyc +0 -0
  202. package/scripts/__pycache__/test_adversarial_empirical.cpython-312-pytest-9.1.1.pyc +0 -0
  203. package/scripts/__pycache__/validate_schema.cpython-312.pyc +0 -0
  204. package/scripts/audit_dois.py +292 -0
  205. package/scripts/bake_pack.sh +37 -0
  206. package/scripts/benchmark.py +183 -0
  207. package/scripts/benchmark_evaluator.py +371 -0
  208. package/scripts/benchmark_judge.py +535 -0
  209. package/scripts/benchmark_routing.py +120 -0
  210. package/scripts/benchmark_v2.py +304 -0
  211. package/scripts/benchmark_v3.py +552 -0
  212. package/scripts/build_esl_artifacts.py +1921 -0
  213. package/scripts/build_evidence_library.py +307 -0
  214. package/scripts/build_killer_demo.py +295 -0
  215. package/scripts/build_result.py +311 -0
  216. package/scripts/check_version_consistency.py +96 -0
  217. package/scripts/citation_check.py +123 -0
  218. package/scripts/claim_audit.py +157 -0
  219. package/scripts/complexity_gate.py +180 -0
  220. package/scripts/compute_confidence.py +176 -0
  221. package/scripts/dashboard_server.py +536 -0
  222. package/scripts/did_regression.py +315 -0
  223. package/scripts/effect_calculator.py +99 -0
  224. package/scripts/enrich_projects_human_and_lieflat.py +315 -0
  225. package/scripts/evidence_matrix.py +129 -0
  226. package/scripts/evidence_score.py +234 -0
  227. package/scripts/evidence_semantics.py +87 -0
  228. package/scripts/fetch_benchmark.py +177 -0
  229. package/scripts/generate_metrics.py +99 -0
  230. package/scripts/generate_new_projects.py +686 -0
  231. package/scripts/generate_promo.py +192 -0
  232. package/scripts/lint_report_layout.py +182 -0
  233. package/scripts/orchestrator.py +1456 -0
  234. package/scripts/pre_verdict_gate.py +513 -0
  235. package/scripts/quickstart.py +121 -0
  236. package/scripts/rebake_all_5themes.py +88 -0
  237. package/scripts/recompute_demo_quality.py +205 -0
  238. package/scripts/render_report.py +270 -0
  239. package/scripts/render_report_html.py +356 -0
  240. package/scripts/retraction_watch.py +110 -0
  241. package/scripts/run_workspace.py +337 -0
  242. package/scripts/serve_web.py +54 -0
  243. package/scripts/skill_lint.py +150 -0
  244. package/scripts/startup_probe.py +265 -0
  245. package/scripts/sync_killer_demo_report.py +270 -0
  246. package/scripts/test_adversarial_empirical.py +541 -0
  247. package/scripts/validate_schema.py +256 -0
  248. package/skill/agents/education-planner.md +80 -0
  249. package/skill/agents/evaluation-designer.md +74 -0
  250. package/skill/agents/evidence-analyst.md +106 -0
  251. package/skill/agents/evidence-judge.md +111 -0
  252. package/skill/agents/evidence-retriever.md +80 -0
  253. package/skill/agents/intervention-designer.md +82 -0
  254. package/skill/agents/method-reviewer.md +104 -0
  255. package/skill/agents/skeptic.md +89 -0
  256. package/skill/sub-skills/aihot-trend-analysis/SKILL.md +31 -0
  257. package/skill/sub-skills/contradiction-analysis/SKILL.md +17 -0
  258. package/skill/sub-skills/data-analysis/SKILL.md +23 -0
  259. package/skill/sub-skills/ethics-review/SKILL.md +25 -0
  260. package/skill/sub-skills/evidence-extraction/SKILL.md +19 -0
  261. package/skill/sub-skills/evidence-review/SKILL.md +18 -0
  262. package/skill/sub-skills/gap-analysis/SKILL.md +25 -0
  263. package/skill/sub-skills/literature-review/SKILL.md +21 -0
  264. package/skill/sub-skills/methodology-audit/SKILL.md +20 -0
  265. package/skill/sub-skills/report-generation/SKILL.md +51 -0
  266. package/skill/sub-skills/research-planning/SKILL.md +21 -0
  267. package/skill/sub-skills/study-design/SKILL.md +16 -0
  268. package/skill/task-briefs/adjudicate.md +17 -0
  269. package/skill/task-briefs/audit.md +15 -0
  270. package/skill/task-briefs/challenge.md +15 -0
  271. package/skill/task-briefs/evaluate.md +13 -0
  272. package/skill/task-briefs/extract.md +16 -0
  273. package/skill/task-briefs/frame.md +17 -0
  274. package/skill/task-briefs/intervene.md +14 -0
  275. package/skill/task-briefs/present.md +16 -0
  276. package/skill/task-briefs/retrieve.md +15 -0
  277. package/visualization/eduevidence-report/assets/base.css +337 -0
  278. package/visualization/eduevidence-report/motion/motion.css +157 -0
  279. package/visualization/eduevidence-report/motion/motion.js +107 -0
  280. package/visualization/eduevidence-report/references/bilingual-style.md +7 -0
  281. package/visualization/eduevidence-report/references/component-catalog.md +145 -0
  282. package/visualization/eduevidence-report/references/evidence-expansion.md +65 -0
  283. package/visualization/eduevidence-report/references/full-report-outline.md +86 -0
  284. package/visualization/eduevidence-report/references/layout-constraints.md +63 -0
  285. package/visualization/eduevidence-report/references/lieflat-composition.md +79 -0
  286. package/visualization/eduevidence-report/references/motion-system.md +31 -0
  287. package/visualization/eduevidence-report/schemas/adapter-envelope.schema.json +22 -0
  288. package/visualization/eduevidence-report/schemas/visual-layout.schema.json +87 -0
  289. package/visualization/eduevidence-report/scripts/__pycache__/adapter_contract.cpython-312.pyc +0 -0
  290. package/visualization/eduevidence-report/scripts/__pycache__/build_artifact_manifest.cpython-312.pyc +0 -0
  291. package/visualization/eduevidence-report/scripts/__pycache__/build_charts.cpython-312.pyc +0 -0
  292. package/visualization/eduevidence-report/scripts/__pycache__/build_figures.cpython-312.pyc +0 -0
  293. package/visualization/eduevidence-report/scripts/__pycache__/build_infographics.cpython-312.pyc +0 -0
  294. package/visualization/eduevidence-report/scripts/__pycache__/build_report.cpython-312.pyc +0 -0
  295. package/visualization/eduevidence-report/scripts/__pycache__/charts_data.cpython-312.pyc +0 -0
  296. package/visualization/eduevidence-report/scripts/__pycache__/lieflat_engine.cpython-312.pyc +0 -0
  297. package/visualization/eduevidence-report/scripts/__pycache__/zh_labels.cpython-312.pyc +0 -0
  298. package/visualization/eduevidence-report/scripts/adapter_contract.py +72 -0
  299. package/visualization/eduevidence-report/scripts/build_artifact_manifest.py +70 -0
  300. package/visualization/eduevidence-report/scripts/build_charts.py +283 -0
  301. package/visualization/eduevidence-report/scripts/build_figures.py +515 -0
  302. package/visualization/eduevidence-report/scripts/build_infographics.py +268 -0
  303. package/visualization/eduevidence-report/scripts/build_report.py +3211 -0
  304. package/visualization/eduevidence-report/scripts/charts_data.py +617 -0
  305. package/visualization/eduevidence-report/scripts/check_mobile_layout.js +220 -0
  306. package/visualization/eduevidence-report/scripts/lieflat_engine.py +852 -0
  307. package/visualization/eduevidence-report/scripts/zh_labels.py +245 -0
  308. package/visualization/eduevidence-report/themes/academic.css +94 -0
  309. package/visualization/eduevidence-report/themes/claude.css +96 -0
  310. package/visualization/eduevidence-report/themes/datalab-dark.css +147 -0
  311. package/visualization/eduevidence-report/themes/datalab.css +151 -0
  312. package/visualization/eduevidence-report/themes/presentation.css +140 -0
@@ -0,0 +1,151 @@
1
+ /* Theme 03 — DataLab Light.
2
+ Analytical workspace with readable density: strong hierarchy, compact controls,
3
+ full-width decision/outcome surfaces, paired tribunal/action panels and traceable sources. */
4
+ :root[data-theme="datalab"] {
5
+ --bg:#F3F5F8; --surface:#FFFFFF; --surface2:#F7F9FC; --text:#1F2530;
6
+ --text-muted:#687386; --primary:#2563EB; --primary-soft:#EAF0FD;
7
+ --support:#17805E; --support-soft:#E8F5EF; --contradict:#C94343;
8
+ --contradict-soft:#FBEDED; --uncertain:#B86D12; --uncertain-soft:#FBF1E5;
9
+ --insufficient:#7A8493; --border:#D9DEE7; --radius:8px; --radius-sm:6px;
10
+ --shadow:0 1px 2px rgba(16,24,40,.05);
11
+ --font-head:'Helvetica Neue','PingFang SC','Noto Sans CJK SC',Arial,sans-serif;
12
+ --font-ui:'Helvetica Neue','PingFang SC','Noto Sans CJK SC',Arial,sans-serif;
13
+ --font-mono:'SF Mono',Menlo,Consolas,monospace;
14
+ }
15
+ :root[data-theme="datalab"] body { font-size:15.5px; }
16
+ :root[data-theme="datalab"] .controls {
17
+ max-width:1480px; margin-top:12px; padding:9px 12px; border:1px solid var(--border);
18
+ border-radius:10px; background:rgba(255,255,255,.92); box-shadow:var(--shadow); backdrop-filter:blur(10px);
19
+ }
20
+ :root[data-theme="datalab"] .generated-theme { color:var(--primary); font-weight:750; letter-spacing:.06em; }
21
+ :root[data-theme="datalab"] .report-shell { width:100%; max-width:1480px; padding:18px clamp(16px,2.4vw,30px) 72px; }
22
+ :root[data-theme="datalab"] .report-header {
23
+ width:100%; max-width:none; margin:0 0 22px; padding:18px 20px;
24
+ border:1px solid var(--border); border-radius:12px; background:var(--surface); box-shadow:var(--shadow);
25
+ }
26
+ :root[data-theme="datalab"] .report-header h1 { max-width:1100px; font-size:clamp(1.55rem,2.6vw,2.15rem); line-height:1.22; }
27
+ :root[data-theme="datalab"] .report-header .meta { margin:8px 0 0; font-size:.85rem; }
28
+ :root[data-theme="datalab"] .report-brand-row { margin-bottom:8px; }
29
+ :root[data-theme="datalab"] .report-brand { color:var(--primary); text-transform:uppercase; letter-spacing:.08em; font-size:.83rem; }
30
+ :root[data-theme="datalab"] .generated-theme-chip { border-radius:5px; background:var(--surface2); font-size:.72rem; }
31
+ :root[data-theme="datalab"] .report-view-switcher { margin-top:14px; gap:0; }
32
+ :root[data-theme="datalab"] .report-view-btn { min-height:36px; border-radius:6px 0 0 6px; padding:7px 14px; font-size:.86rem; }
33
+ :root[data-theme="datalab"] .report-view-btn + .report-view-btn { border-radius:0 6px 6px 0; margin-left:-1px; }
34
+ :root[data-theme="datalab"] .report-view-btn.active { background:var(--primary); color:#fff; }
35
+
36
+ /* Visual Brief: 4-column workbench grid — decision/outcomes span the row,
37
+ tribunal and action pair at half width, chapter headers stay two-column. */
38
+ :root[data-theme="datalab"] .report-page-brief {
39
+ width:100%; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:18px; align-items:start;
40
+ }
41
+ :root[data-theme="datalab"] .brief-block {
42
+ width:100%; max-width:none; margin:0; padding:18px 20px;
43
+ border:1px solid var(--border); border-radius:12px; background:var(--surface); box-shadow:var(--shadow);
44
+ }
45
+ :root[data-theme="datalab"] .brief-decision,
46
+ :root[data-theme="datalab"] .brief-lieflat,
47
+ :root[data-theme="datalab"] .brief-outcomes,
48
+ :root[data-theme="datalab"] .brief-sources { grid-column:1/-1; }
49
+ :root[data-theme="datalab"] .brief-tribunal,
50
+ :root[data-theme="datalab"] .brief-action { grid-column:span 2; }
51
+ :root[data-theme="datalab"] .brief-block-header {
52
+ max-width:none; margin-bottom:16px; display:flex; justify-content:space-between; align-items:flex-start; gap:24px;
53
+ }
54
+ :root[data-theme="datalab"] .brief-block-header h2 {
55
+ margin:0; font-family:var(--font-ui); font-size:1.02rem; line-height:1.35; text-transform:uppercase; letter-spacing:.055em;
56
+ }
57
+ :root[data-theme="datalab"] .brief-block-header p { max-width:680px; margin:0; font-size:.86rem; line-height:1.55; text-align:right; }
58
+ :root[data-theme="datalab"] .brief-decision { padding:0; overflow:hidden; }
59
+ :root[data-theme="datalab"] .brief-decision .brief-block-header { padding:18px 20px 0; }
60
+ :root[data-theme="datalab"] .brief-decision .decision-hero {
61
+ 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;
62
+ }
63
+ :root[data-theme="datalab"] .brief-decision .hero-decision { align-content:start; margin:0; }
64
+ :root[data-theme="datalab"] .brief-decision .hero-rationale { margin:0; font-family:var(--font-ui); font-size:1.08rem; line-height:1.55; }
65
+ :root[data-theme="datalab"] .brief-decision .hero-insights { grid-column:1/-1; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
66
+ :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; }
67
+ :root[data-theme="datalab"] .brief-outcomes .brief-block-body { display:grid; gap:18px; }
68
+ :root[data-theme="datalab"] .brief-outcomes .outcome-groups { grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr)); gap:10px; }
69
+ :root[data-theme="datalab"] .brief-outcomes .outcome-group { padding:13px 14px; }
70
+ :root[data-theme="datalab"] .brief-chart { margin:0; }
71
+ :root[data-theme="datalab"] .brief-tribunal,
72
+ :root[data-theme="datalab"] .brief-action { min-height:100%; }
73
+ :root[data-theme="datalab"] .tribunal-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
74
+ :root[data-theme="datalab"] .tribunal-card { min-height:0; padding:13px 14px; }
75
+ :root[data-theme="datalab"] .evidence-to-action { gap:7px; padding-bottom:8px; margin-bottom:0; }
76
+ :root[data-theme="datalab"] .action-node { min-width:150px; padding:12px 13px; }
77
+ :root[data-theme="datalab"] .brief-source-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
78
+ :root[data-theme="datalab"] .brief-source { min-width:0; padding:12px 14px; background:var(--surface2); }
79
+ :root[data-theme="datalab"] .brief-source h3 { font-size:.88rem; line-height:1.45; overflow-wrap:anywhere; }
80
+
81
+ /* Full report: compact analytical reader. */
82
+ :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); }
83
+ :root[data-theme="datalab"] .full-report-intro h2 { font-family:var(--font-ui); font-size:1.35rem; }
84
+ :root[data-theme="datalab"] .full-report-layout { grid-template-columns:minmax(210px,270px) minmax(0,1fr); gap:18px; }
85
+ :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); }
86
+ @media (max-width:980px) {
87
+ :root[data-theme="datalab"] .full-report-layout { grid-template-columns:minmax(0,1fr); }
88
+ :root[data-theme="datalab"] .full-report-toc { position:relative; top:auto; max-height:none; }
89
+ }
90
+ :root[data-theme="datalab"] .full-report-toc a { border-left:3px solid transparent; border-radius:5px; padding:8px 9px; font-size:.82rem; }
91
+ :root[data-theme="datalab"] .full-report-toc a.active { border-left-color:var(--primary); background:var(--primary-soft); color:var(--text); }
92
+ :root[data-theme="datalab"] .full-report-content { max-width:none; }
93
+ :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); }
94
+ :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; }
95
+ :root[data-theme="datalab"] .full-chapter-header h2 { font-family:var(--font-ui); font-size:1.18rem; line-height:1.35; }
96
+ :root[data-theme="datalab"] .full-chapter-lead { font-size:.88rem; line-height:1.55; }
97
+ :root[data-theme="datalab"] .scope-grid { grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr)); }
98
+ :root[data-theme="datalab"] .method-audit-grid { grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr)); gap:9px; }
99
+ :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; }
100
+ :root[data-theme="datalab"] .matrix-tools input,
101
+ :root[data-theme="datalab"] .matrix-tools select { min-height:36px; padding:6px 9px; }
102
+ :root[data-theme="datalab"] .data-table { font-size:.82rem; }
103
+ :root[data-theme="datalab"] .data-table th,
104
+ :root[data-theme="datalab"] .data-table td { padding:7px 8px; }
105
+ :root[data-theme="datalab"] .claim-cell { max-width:none; min-width:260px; }
106
+ :root[data-theme="datalab"] code { font-size:.78em; }
107
+
108
+ /* Lieflat gallery — analytical workbench density: compact cards, uppercase
109
+ micro labels, controlled figure surface. */
110
+ :root[data-theme="datalab"] .lieflat-gallery-container {
111
+ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px;
112
+ }
113
+ :root[data-theme="datalab"] .lieflat-card { padding:16px 18px 12px; border-radius:10px; background:var(--surface2); }
114
+ :root[data-theme="datalab"] .lieflat-title { font-family:var(--font-ui); font-size:.98rem; line-height:1.35; }
115
+ :root[data-theme="datalab"] .lieflat-sub { font-size:.8rem; line-height:1.5; }
116
+ :root[data-theme="datalab"] .lieflat-figure svg { border-radius:6px; background:var(--surface); }
117
+ :root[data-theme="datalab"] .lieflat-caption { font-size:.75rem; }
118
+ :root[data-theme="datalab"] .lieflat-src { font-size:.62rem; }
119
+ :root[data-theme="datalab"] .lieflat-suppressed { font-size:.78rem; }
120
+ :root[data-theme="datalab"] .lang-btn { min-height:36px; }
121
+ :root[data-theme="datalab"] .lang-switcher { align-items:center; }
122
+
123
+ @media (max-width:1100px) {
124
+ :root[data-theme="datalab"] .brief-decision .hero-insights { grid-template-columns:repeat(2,minmax(0,1fr)); }
125
+ :root[data-theme="datalab"] .brief-source-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
126
+ :root[data-theme="datalab"] .lieflat-gallery-container { grid-template-columns:1fr; }
127
+ }
128
+ @media (max-width:980px) {
129
+ :root[data-theme="datalab"] .report-page-brief { grid-template-columns:minmax(0,1fr); }
130
+ :root[data-theme="datalab"] .brief-block { grid-column:1 !important; }
131
+ :root[data-theme="datalab"] .brief-block-header { display:block; }
132
+ :root[data-theme="datalab"] .brief-block-header p { margin-top:6px; max-width:none; text-align:left; }
133
+ :root[data-theme="datalab"] .brief-decision .decision-hero { grid-template-columns:1fr; }
134
+ :root[data-theme="datalab"] .brief-decision .hero-insights { grid-column:1; }
135
+ :root[data-theme="datalab"] .full-chapter-header { grid-template-columns:1fr; }
136
+ }
137
+ @media (max-width:720px) {
138
+ :root[data-theme="datalab"] .controls { width:calc(100% - 24px); padding:8px 10px; }
139
+ :root[data-theme="datalab"] .report-shell { padding-left:14px; padding-right:14px; }
140
+ :root[data-theme="datalab"] .report-header { padding:15px 14px; }
141
+ :root[data-theme="datalab"] .report-header h1 { font-size:1.45rem; }
142
+ :root[data-theme="datalab"] .brief-block { padding:15px 14px; }
143
+ :root[data-theme="datalab"] .brief-decision { padding:0; }
144
+ :root[data-theme="datalab"] .brief-decision .brief-block-header { padding:15px 14px 0; }
145
+ :root[data-theme="datalab"] .brief-decision .decision-hero { padding:18px 14px; }
146
+ :root[data-theme="datalab"] .brief-decision .hero-insights,
147
+ :root[data-theme="datalab"] .brief-source-grid,
148
+ :root[data-theme="datalab"] .tribunal-grid { grid-template-columns:1fr; }
149
+ :root[data-theme="datalab"] .full-chapter { padding:16px 14px; }
150
+ :root[data-theme="datalab"] .data-table { font-size:.8rem; }
151
+ }
@@ -0,0 +1,140 @@
1
+ /* Theme 05 — Presentation / Judge [Dark].
2
+ Review-first presentation mode: strong decision framing without dashboard-scale typography,
3
+ readable evidence panels and an audit-ready full report. */
4
+ :root[data-theme="presentation"] {
5
+ --bg:#121419; --surface:#1B1F26; --surface2:#232933; --text:#F2F4F7;
6
+ --text-muted:#A2A9B4; --primary:#E8A87C; --primary-soft:#382E27;
7
+ --support:#7BC48F; --support-soft:#203229; --contradict:#E28B7E;
8
+ --contradict-soft:#392522; --uncertain:#E4C07A; --uncertain-soft:#38301F;
9
+ --insufficient:#9299A4; --border:#343B46; --radius:14px; --radius-sm:9px;
10
+ --shadow:0 12px 34px rgba(0,0,0,.25); --font-head:'Helvetica Neue','PingFang SC',Arial,sans-serif;
11
+ --font-ui:'Helvetica Neue','PingFang SC',Arial,sans-serif; --font-mono:'SF Mono',Menlo,Consolas,monospace;
12
+ }
13
+ :root[data-theme="presentation"] body { font-size:16px; }
14
+ :root[data-theme="presentation"] .controls {
15
+ width:calc(100% - 36px); max-width:1180px; margin:16px auto 0; padding:9px 12px;
16
+ border:1px solid var(--border); border-radius:12px; background:rgba(25,29,35,.94);
17
+ box-shadow:0 8px 24px rgba(0,0,0,.18); backdrop-filter:blur(12px);
18
+ }
19
+ :root[data-theme="presentation"] .generated-theme { margin-right:auto; color:var(--primary); font-size:.76rem; font-weight:800; letter-spacing:.075em; }
20
+ :root[data-theme="presentation"] .lang-switcher { gap:6px; }
21
+ :root[data-theme="presentation"] .lang-switcher>span { color:var(--text-muted); font-size:.74rem; }
22
+ :root[data-theme="presentation"] .lang-btn { min-height:34px; border-color:#3C4450; background:#20252D; color:#DCE1E8; padding:5px 11px; }
23
+ :root[data-theme="presentation"] .lang-btn.active { background:var(--primary); border-color:var(--primary); color:#15181D; }
24
+
25
+ :root[data-theme="presentation"] .report-shell { width:100%; max-width:1220px; padding:24px clamp(16px,2.8vw,30px) 88px; }
26
+ :root[data-theme="presentation"] .report-header {
27
+ width:100%; max-width:1120px; margin:0 auto 36px; padding:24px 26px;
28
+ border:1px solid var(--border); border-radius:16px; background:linear-gradient(145deg,#1A1E25,#20252E);
29
+ box-shadow:var(--shadow);
30
+ }
31
+ :root[data-theme="presentation"] .report-brand-row { margin-bottom:12px; }
32
+ :root[data-theme="presentation"] .report-brand { color:var(--primary); text-transform:uppercase; letter-spacing:.1em; font-size:.8rem; }
33
+ :root[data-theme="presentation"] .generated-theme-chip { background:#242A33; border-color:#3C4450; color:#B8C0CB; }
34
+ :root[data-theme="presentation"] .report-header h1 { max-width:980px; font-size:clamp(1.5rem,2.6vw,2.1rem); line-height:1.08; letter-spacing:-.022em; }
35
+ :root[data-theme="presentation"] .report-header .meta { margin:10px 0 0; color:var(--text-muted); font-size:.86rem; overflow-wrap:anywhere; }
36
+ :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; }
37
+ :root[data-theme="presentation"] .report-view-btn { min-height:36px; border:0; background:transparent; color:#BBC2CC; padding:7px 15px; }
38
+ :root[data-theme="presentation"] .report-view-btn.active { background:var(--primary); color:#15181D; box-shadow:none; }
39
+
40
+ :root[data-theme="presentation"] .report-page-brief { width:100%; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; align-items:start; }
41
+ :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); }
42
+ :root[data-theme="presentation"] .brief-decision,
43
+ :root[data-theme="presentation"] .brief-outcomes,
44
+ :root[data-theme="presentation"] .brief-sources { grid-column:1/-1; }
45
+ :root[data-theme="presentation"] .brief-decision { padding:0; border:0; background:transparent; box-shadow:none; }
46
+ :root[data-theme="presentation"] .brief-decision .brief-block-header { display:none; }
47
+ :root[data-theme="presentation"] .brief-decision .decision-hero {
48
+ min-height:360px; display:flex; flex-direction:column; justify-content:center;
49
+ border:1px solid var(--border); border-radius:18px; background:linear-gradient(145deg,var(--surface),var(--surface2));
50
+ box-shadow:0 18px 50px rgba(0,0,0,.30); padding:clamp(28px,4vw,48px);
51
+ }
52
+ :root[data-theme="presentation"] .decision-value { font-size:clamp(2rem,4vw,2.9rem); line-height:.98; letter-spacing:-.04em; color:var(--primary); }
53
+ :root[data-theme="presentation"] .confidence-badge { font-size:.92rem; padding:6px 13px; color:#15181D; }
54
+ :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; }
55
+ :root[data-theme="presentation"] .hero-insights { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
56
+ :root[data-theme="presentation"] .hero-insight { min-height:112px; background:#191D23; border-radius:11px; padding:16px 18px; }
57
+ :root[data-theme="presentation"] .brief-block-header h2 { font-size:1.15rem; line-height:1.2; }
58
+ :root[data-theme="presentation"] .brief-block-header p { color:#ABB3BE; font-size:.86rem; line-height:1.55; }
59
+ :root[data-theme="presentation"] .outcome-separation .visual-heading h3 { font-size:1.05rem; }
60
+ :root[data-theme="presentation"] .outcome-groups { grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr)); gap:12px; }
61
+ :root[data-theme="presentation"] .outcome-group,
62
+ :root[data-theme="presentation"] .tribunal-card,
63
+ :root[data-theme="presentation"] .trace-chain-card,
64
+ :root[data-theme="presentation"] .action-node { background:var(--surface2); border-color:var(--border); }
65
+ :root[data-theme="presentation"] .tribunal-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
66
+ :root[data-theme="presentation"] .tribunal-card { min-height:0; }
67
+ :root[data-theme="presentation"] .evidence-to-action { gap:8px; }
68
+ :root[data-theme="presentation"] .action-node { min-width:160px; }
69
+ :root[data-theme="presentation"] .brief-source-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
70
+ :root[data-theme="presentation"] .brief-source { min-width:0; background:#191D23; border-color:#353D48; }
71
+ :root[data-theme="presentation"] .brief-source h3 { overflow-wrap:anywhere; }
72
+ :root[data-theme="presentation"] .report-section svg,
73
+ :root[data-theme="presentation"] .academic-figure svg { background:#fff; }
74
+
75
+ :root[data-theme="presentation"] .full-report-intro { width:100%; max-width:1060px; margin:44px auto 26px; }
76
+ :root[data-theme="presentation"] .full-report-intro h2 { font-size:clamp(1.5rem,2.2vw,1.9rem); line-height:1.08; }
77
+ :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; }
78
+ :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); }
79
+ :root[data-theme="presentation"] .full-report-toc a { border-radius:7px; border-left:0; padding:9px 10px; color:#AEB6C1; font-size:.84rem; }
80
+ :root[data-theme="presentation"] .full-report-toc a.active { border-left:0; background:#282E38; color:#fff; box-shadow:inset 3px 0 0 var(--primary); }
81
+ :root[data-theme="presentation"] .full-report-content { max-width:none; }
82
+ :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); }
83
+ :root[data-theme="presentation"] .full-chapter-header { max-width:900px; margin-bottom:24px; }
84
+ :root[data-theme="presentation"] .full-chapter-header h2 { font-size:clamp(1.2rem,1.9vw,1.5rem); line-height:1.12; }
85
+ :root[data-theme="presentation"] .full-chapter-lead { color:#AEB6C1; font-size:.96rem; line-height:1.6; }
86
+ :root[data-theme="presentation"] .scope-card,
87
+ :root[data-theme="presentation"] .retrieval-grid>article,
88
+ :root[data-theme="presentation"] .retrieval-coverage,
89
+ :root[data-theme="presentation"] .method-audit-item,
90
+ :root[data-theme="presentation"] .detail-body,
91
+ :root[data-theme="presentation"] .visual-suppressed { background:#242A33; border-color:#3B4450; }
92
+ :root[data-theme="presentation"] .data-table { font-size:.86rem; }
93
+ :root[data-theme="presentation"] .data-table td,
94
+ :root[data-theme="presentation"] .data-table th { border-color:#3B4450; }
95
+
96
+ /* 移动端安全(主题规则特异性高于基座断点:必须自带响应式覆写) */
97
+ @media (max-width:980px) {
98
+ :root[data-theme="presentation"] .full-report-layout { grid-template-columns:minmax(0,1fr); }
99
+ :root[data-theme="presentation"] .full-report-toc { position:relative; top:auto; max-height:none; }
100
+ }
101
+ @media (max-width:720px) {
102
+ :root[data-theme="presentation"] .outcome-groups { grid-template-columns:1fr; }
103
+ :root[data-theme="presentation"] .tribunal-grid,
104
+ :root[data-theme="presentation"] .brief-source-grid { grid-template-columns:1fr; }
105
+ }
106
+ :root[data-theme="presentation"] .table-wrap .data-table th { background:#242A33; }
107
+
108
+ @media (max-width:980px) {
109
+ :root[data-theme="presentation"] .report-page-brief { grid-template-columns:minmax(0,1fr); }
110
+ :root[data-theme="presentation"] .brief-block { grid-column:1 !important; }
111
+ :root[data-theme="presentation"] .full-report-layout { max-width:none; }
112
+ }
113
+ @media (max-width:720px) {
114
+ :root[data-theme="presentation"] .controls { width:calc(100% - 24px); border-radius:10px; }
115
+ :root[data-theme="presentation"] .report-shell { padding-left:14px; padding-right:14px; }
116
+ :root[data-theme="presentation"] .report-header { padding:18px 16px; border-radius:12px; }
117
+ :root[data-theme="presentation"] .report-header h1 { font-size:1.25rem; }
118
+ :root[data-theme="presentation"] .brief-block { padding:18px 16px; }
119
+ :root[data-theme="presentation"] .brief-decision { padding:0; }
120
+ :root[data-theme="presentation"] .brief-decision .decision-hero { min-height:0; padding:24px 18px; border-radius:13px; }
121
+ :root[data-theme="presentation"] .decision-value { font-size:2rem; }
122
+ :root[data-theme="presentation"] .hero-insights,
123
+ :root[data-theme="presentation"] .tribunal-grid,
124
+ :root[data-theme="presentation"] .brief-source-grid { grid-template-columns:1fr; }
125
+ :root[data-theme="presentation"] .full-chapter { padding:18px 16px; border-radius:12px; }
126
+ }
127
+
128
+ /* Typography pass: verdict type scale + insight padding + dark-court gallery.
129
+ Gold/orange accents keep ≥4.5:1 contrast on the dark surfaces. */
130
+ :root[data-theme="presentation"] .hero-decision .decision-value { line-height:.96; }
131
+ :root[data-theme="presentation"] .hero-rationale { color:#E9ECF1; }
132
+ :root[data-theme="presentation"] .hero-insight { padding:18px 20px; }
133
+ :root[data-theme="presentation"] .brief-decision .hero-insight { padding:16px 18px; }
134
+ :root[data-theme="presentation"] .lieflat-card { background:var(--surface); border-radius:16px; padding:22px 24px 16px; }
135
+ :root[data-theme="presentation"] .lieflat-title { font-size:1.08rem; line-height:1.3; }
136
+ :root[data-theme="presentation"] .lieflat-sub { font-size:.82rem; }
137
+ :root[data-theme="presentation"] .lieflat-figure svg { border-radius:10px; background:transparent; }
138
+ :root[data-theme="presentation"] .lieflat-caption { font-size:.76rem; }
139
+ :root[data-theme="presentation"] .lieflat-src { font-size:.64rem; }
140
+ :root[data-theme="presentation"] .lieflat-suppressed { background:var(--surface2); font-size:.78rem; }