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.
- package/LICENSE +21 -0
- package/README.md +506 -0
- package/README.zh-CN.md +434 -0
- package/SKILL.md +195 -0
- package/bin/eduevidence.js +127 -0
- package/domains/education/manifest.json +183 -0
- package/domains/education/outcome_taxonomy.json +127 -0
- package/domains/manifest.json +26 -0
- package/domains/policy/frame.schema.json +234 -0
- package/domains/policy/manifest.json +10 -0
- package/domains/policy/methodology_checklist.json +109 -0
- package/domains/policy/outcome_taxonomy.json +53 -0
- package/domains/policy/references/causal-identification.md +45 -0
- package/domains/policy/references/cost-evidence.md +44 -0
- package/domains/policy/references/equity.md +42 -0
- package/domains/policy/references/evidence-hierarchy.md +41 -0
- package/domains/policy/references/implementation-evidence.md +47 -0
- package/eduevidence_cli.py +26 -0
- package/engine/__init__.py +11 -0
- package/engine/__pycache__/__init__.cpython-312.pyc +0 -0
- package/engine/__pycache__/analysis.cpython-312.pyc +0 -0
- package/engine/__pycache__/bias.cpython-312.pyc +0 -0
- package/engine/__pycache__/briefs.cpython-312.pyc +0 -0
- package/engine/__pycache__/capabilities.cpython-312.pyc +0 -0
- package/engine/__pycache__/citation_check.cpython-312.pyc +0 -0
- package/engine/__pycache__/contracts.cpython-312.pyc +0 -0
- package/engine/__pycache__/datasets.cpython-312.pyc +0 -0
- package/engine/__pycache__/events.cpython-312.pyc +0 -0
- package/engine/__pycache__/evidence_graph.cpython-312.pyc +0 -0
- package/engine/__pycache__/evidence_review.cpython-312.pyc +0 -0
- package/engine/__pycache__/evidencecore.cpython-312.pyc +0 -0
- package/engine/__pycache__/gap_lens.cpython-312.pyc +0 -0
- package/engine/__pycache__/gaps.cpython-312.pyc +0 -0
- package/engine/__pycache__/graph_store.cpython-312.pyc +0 -0
- package/engine/__pycache__/graph_validate.cpython-312.pyc +0 -0
- package/engine/__pycache__/ids.cpython-312.pyc +0 -0
- package/engine/__pycache__/library.cpython-312.pyc +0 -0
- package/engine/__pycache__/library_builtin.cpython-312.pyc +0 -0
- package/engine/__pycache__/living.cpython-312.pyc +0 -0
- package/engine/__pycache__/log.cpython-312.pyc +0 -0
- package/engine/__pycache__/meta_analysis.cpython-312.pyc +0 -0
- package/engine/__pycache__/meta_synthesis.cpython-312.pyc +0 -0
- package/engine/__pycache__/migration.cpython-312.pyc +0 -0
- package/engine/__pycache__/mode_router.cpython-312.pyc +0 -0
- package/engine/__pycache__/paths.cpython-312.pyc +0 -0
- package/engine/__pycache__/pilot.cpython-312.pyc +0 -0
- package/engine/__pycache__/planner.cpython-312.pyc +0 -0
- package/engine/__pycache__/project.cpython-312.pyc +0 -0
- package/engine/__pycache__/projections.cpython-312.pyc +0 -0
- package/engine/__pycache__/robustness.cpython-312.pyc +0 -0
- package/engine/__pycache__/run.cpython-312.pyc +0 -0
- package/engine/__pycache__/semantics.cpython-312.pyc +0 -0
- package/engine/__pycache__/study_design.cpython-312.pyc +0 -0
- package/engine/__pycache__/synthesis.cpython-312.pyc +0 -0
- package/engine/__pycache__/tribunal.cpython-312.pyc +0 -0
- package/engine/__pycache__/update.cpython-312.pyc +0 -0
- package/engine/__pycache__/versions.cpython-312.pyc +0 -0
- package/engine/analysis.py +308 -0
- package/engine/bias.py +178 -0
- package/engine/briefs.py +106 -0
- package/engine/capabilities.py +99 -0
- package/engine/citation_check.py +192 -0
- package/engine/contracts.py +117 -0
- package/engine/datasets.py +165 -0
- package/engine/events.py +67 -0
- package/engine/evidence_graph.py +571 -0
- package/engine/evidence_review.py +88 -0
- package/engine/evidencecore.py +182 -0
- package/engine/gap_lens.py +132 -0
- package/engine/gaps.py +169 -0
- package/engine/graph_store.py +335 -0
- package/engine/graph_validate.py +87 -0
- package/engine/ids.py +77 -0
- package/engine/library.py +268 -0
- package/engine/library_builtin.py +301 -0
- package/engine/living.py +671 -0
- package/engine/log.py +39 -0
- package/engine/meta_analysis.py +333 -0
- package/engine/meta_synthesis.py +111 -0
- package/engine/migration.py +397 -0
- package/engine/mode_router.py +72 -0
- package/engine/paths.py +15 -0
- package/engine/pilot.py +368 -0
- package/engine/planner.py +126 -0
- package/engine/project.py +118 -0
- package/engine/projections.py +240 -0
- package/engine/robustness.py +109 -0
- package/engine/run.py +85 -0
- package/engine/semantics.py +135 -0
- package/engine/study_design.py +87 -0
- package/engine/synthesis.py +187 -0
- package/engine/tribunal.py +408 -0
- package/engine/update.py +113 -0
- package/engine/versions.py +12 -0
- package/install.sh +510 -0
- package/integrations/__init__.py +1 -0
- package/integrations/__pycache__/__init__.cpython-312.pyc +0 -0
- package/integrations/__pycache__/agent_mcp.cpython-312.pyc +0 -0
- package/integrations/__pycache__/smart_web_fetch.cpython-312.pyc +0 -0
- package/integrations/agent_mcp.py +856 -0
- package/integrations/smart_web_fetch.py +59 -0
- package/package.json +50 -0
- package/pyproject.toml +55 -0
- package/references/applicability-policy.md +88 -0
- package/references/education-framing.md +132 -0
- package/references/effect_size_formulas.md +35 -0
- package/references/evaluation-design.md +111 -0
- package/references/evidence-quality.md +79 -0
- package/references/grade_framework.md +29 -0
- package/references/intervention-design.md +98 -0
- package/references/methodology-audit.md +103 -0
- package/references/outcome-taxonomy.md +106 -0
- package/references/retrieval-protocol.md +142 -0
- package/references/skeptic-protocol.md +93 -0
- package/references/social_science_pitfalls.md +48 -0
- package/references/source-validity.md +140 -0
- package/references/tribunal-policy.md +112 -0
- package/references/wwc_standards.md +29 -0
- package/retrieval/__init__.py +1 -0
- package/retrieval/__pycache__/__init__.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/corpus_store.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/dedupe.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/failures.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/fetch.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/search.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/source.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/validate.cpython-312.pyc +0 -0
- package/retrieval/corpus_store.py +181 -0
- package/retrieval/dedupe.py +127 -0
- package/retrieval/failures.py +90 -0
- package/retrieval/fetch.py +435 -0
- package/retrieval/search.py +493 -0
- package/retrieval/source.py +160 -0
- package/retrieval/validate.py +257 -0
- package/schemas/agent-mcp-approval.schema.json +57 -0
- package/schemas/chart-spec.schema.json +88 -0
- package/schemas/cross-model-review.schema.json +28 -0
- package/schemas/education-frame.schema.json +106 -0
- package/schemas/evaluation.schema.json +35 -0
- package/schemas/evidence.schema.json +81 -0
- package/schemas/fetch-result.schema.json +119 -0
- package/schemas/intervention.schema.json +46 -0
- package/schemas/methodology.schema.json +102 -0
- package/schemas/report-result.schema.json +381 -0
- package/schemas/report-spec.schema.json +130 -0
- package/schemas/source.schema.json +311 -0
- package/schemas/v2/analysis-plan.schema.json +28 -0
- package/schemas/v2/analysis-run.schema.json +33 -0
- package/schemas/v2/claim.schema.json +26 -0
- package/schemas/v2/dataset-asset.schema.json +40 -0
- package/schemas/v2/decision-snapshot.schema.json +53 -0
- package/schemas/v2/evidence-link.schema.json +38 -0
- package/schemas/v2/finding.schema.json +47 -0
- package/schemas/v2/graph-revision.schema.json +30 -0
- package/schemas/v2/knowledge-gap.schema.json +40 -0
- package/schemas/v2/methodology-audit.schema.json +30 -0
- package/schemas/v2/outcome.schema.json +18 -0
- package/schemas/v2/project.schema.json +31 -0
- package/schemas/v2/research-intent.schema.json +24 -0
- package/schemas/v2/run.schema.json +43 -0
- package/schemas/v2/source.schema.json +24 -0
- package/schemas/v2/study-design.schema.json +67 -0
- package/schemas/v2/study.schema.json +37 -0
- package/schemas/v3/pilot-outcome.schema.json +132 -0
- package/schemas/v3/run-manifest.schema.json +193 -0
- package/schemas/v3/synthesis.schema.json +86 -0
- package/schemas/v4/drift-report.schema.json +66 -0
- package/schemas/v4/evidence-library.schema.json +42 -0
- package/schemas/v4/living-subscription.schema.json +55 -0
- package/schemas/v4/meta-analysis.schema.json +152 -0
- package/schemas/verdict.schema.json +56 -0
- package/scripts/__init__.py +0 -0
- package/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_evaluator.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_judge.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_routing.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_v2.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_v3.cpython-312.pyc +0 -0
- package/scripts/__pycache__/build_result.cpython-312.pyc +0 -0
- package/scripts/__pycache__/claim_audit.cpython-312.pyc +0 -0
- package/scripts/__pycache__/complexity_gate.cpython-312.pyc +0 -0
- package/scripts/__pycache__/compute_confidence.cpython-312.pyc +0 -0
- package/scripts/__pycache__/dashboard_server.cpython-312.pyc +0 -0
- package/scripts/__pycache__/did_regression.cpython-312.pyc +0 -0
- package/scripts/__pycache__/effect_calculator.cpython-312.pyc +0 -0
- package/scripts/__pycache__/evidence_matrix.cpython-312.pyc +0 -0
- package/scripts/__pycache__/evidence_score.cpython-312.pyc +0 -0
- package/scripts/__pycache__/evidence_semantics.cpython-312.pyc +0 -0
- package/scripts/__pycache__/fetch_benchmark.cpython-312.pyc +0 -0
- package/scripts/__pycache__/lint_report_layout.cpython-312.pyc +0 -0
- package/scripts/__pycache__/orchestrator.cpython-312.pyc +0 -0
- package/scripts/__pycache__/pre_verdict_gate.cpython-312.pyc +0 -0
- package/scripts/__pycache__/recompute_demo_quality.cpython-312.pyc +0 -0
- package/scripts/__pycache__/render_report.cpython-312.pyc +0 -0
- package/scripts/__pycache__/render_report_html.cpython-312.pyc +0 -0
- package/scripts/__pycache__/run_workspace.cpython-312.pyc +0 -0
- package/scripts/__pycache__/skill_lint.cpython-312.pyc +0 -0
- package/scripts/__pycache__/startup_probe.cpython-312.pyc +0 -0
- package/scripts/__pycache__/sync_killer_demo_report.cpython-312.pyc +0 -0
- package/scripts/__pycache__/test_adversarial_empirical.cpython-312-pytest-9.0.2.pyc +0 -0
- package/scripts/__pycache__/test_adversarial_empirical.cpython-312-pytest-9.1.1.pyc +0 -0
- package/scripts/__pycache__/validate_schema.cpython-312.pyc +0 -0
- package/scripts/audit_dois.py +292 -0
- package/scripts/bake_pack.sh +37 -0
- package/scripts/benchmark.py +183 -0
- package/scripts/benchmark_evaluator.py +371 -0
- package/scripts/benchmark_judge.py +535 -0
- package/scripts/benchmark_routing.py +120 -0
- package/scripts/benchmark_v2.py +304 -0
- package/scripts/benchmark_v3.py +552 -0
- package/scripts/build_esl_artifacts.py +1921 -0
- package/scripts/build_evidence_library.py +307 -0
- package/scripts/build_killer_demo.py +295 -0
- package/scripts/build_result.py +311 -0
- package/scripts/check_version_consistency.py +96 -0
- package/scripts/citation_check.py +123 -0
- package/scripts/claim_audit.py +157 -0
- package/scripts/complexity_gate.py +180 -0
- package/scripts/compute_confidence.py +176 -0
- package/scripts/dashboard_server.py +536 -0
- package/scripts/did_regression.py +315 -0
- package/scripts/effect_calculator.py +99 -0
- package/scripts/enrich_projects_human_and_lieflat.py +315 -0
- package/scripts/evidence_matrix.py +129 -0
- package/scripts/evidence_score.py +234 -0
- package/scripts/evidence_semantics.py +87 -0
- package/scripts/fetch_benchmark.py +177 -0
- package/scripts/generate_metrics.py +99 -0
- package/scripts/generate_new_projects.py +686 -0
- package/scripts/generate_promo.py +192 -0
- package/scripts/lint_report_layout.py +182 -0
- package/scripts/orchestrator.py +1456 -0
- package/scripts/pre_verdict_gate.py +513 -0
- package/scripts/quickstart.py +121 -0
- package/scripts/rebake_all_5themes.py +88 -0
- package/scripts/recompute_demo_quality.py +205 -0
- package/scripts/render_report.py +270 -0
- package/scripts/render_report_html.py +356 -0
- package/scripts/retraction_watch.py +110 -0
- package/scripts/run_workspace.py +337 -0
- package/scripts/serve_web.py +54 -0
- package/scripts/skill_lint.py +150 -0
- package/scripts/startup_probe.py +265 -0
- package/scripts/sync_killer_demo_report.py +270 -0
- package/scripts/test_adversarial_empirical.py +541 -0
- package/scripts/validate_schema.py +256 -0
- package/skill/agents/education-planner.md +80 -0
- package/skill/agents/evaluation-designer.md +74 -0
- package/skill/agents/evidence-analyst.md +106 -0
- package/skill/agents/evidence-judge.md +111 -0
- package/skill/agents/evidence-retriever.md +80 -0
- package/skill/agents/intervention-designer.md +82 -0
- package/skill/agents/method-reviewer.md +104 -0
- package/skill/agents/skeptic.md +89 -0
- package/skill/sub-skills/aihot-trend-analysis/SKILL.md +31 -0
- package/skill/sub-skills/contradiction-analysis/SKILL.md +17 -0
- package/skill/sub-skills/data-analysis/SKILL.md +23 -0
- package/skill/sub-skills/ethics-review/SKILL.md +25 -0
- package/skill/sub-skills/evidence-extraction/SKILL.md +19 -0
- package/skill/sub-skills/evidence-review/SKILL.md +18 -0
- package/skill/sub-skills/gap-analysis/SKILL.md +25 -0
- package/skill/sub-skills/literature-review/SKILL.md +21 -0
- package/skill/sub-skills/methodology-audit/SKILL.md +20 -0
- package/skill/sub-skills/report-generation/SKILL.md +51 -0
- package/skill/sub-skills/research-planning/SKILL.md +21 -0
- package/skill/sub-skills/study-design/SKILL.md +16 -0
- package/skill/task-briefs/adjudicate.md +17 -0
- package/skill/task-briefs/audit.md +15 -0
- package/skill/task-briefs/challenge.md +15 -0
- package/skill/task-briefs/evaluate.md +13 -0
- package/skill/task-briefs/extract.md +16 -0
- package/skill/task-briefs/frame.md +17 -0
- package/skill/task-briefs/intervene.md +14 -0
- package/skill/task-briefs/present.md +16 -0
- package/skill/task-briefs/retrieve.md +15 -0
- package/visualization/eduevidence-report/assets/base.css +337 -0
- package/visualization/eduevidence-report/motion/motion.css +157 -0
- package/visualization/eduevidence-report/motion/motion.js +107 -0
- package/visualization/eduevidence-report/references/bilingual-style.md +7 -0
- package/visualization/eduevidence-report/references/component-catalog.md +145 -0
- package/visualization/eduevidence-report/references/evidence-expansion.md +65 -0
- package/visualization/eduevidence-report/references/full-report-outline.md +86 -0
- package/visualization/eduevidence-report/references/layout-constraints.md +63 -0
- package/visualization/eduevidence-report/references/lieflat-composition.md +79 -0
- package/visualization/eduevidence-report/references/motion-system.md +31 -0
- package/visualization/eduevidence-report/schemas/adapter-envelope.schema.json +22 -0
- package/visualization/eduevidence-report/schemas/visual-layout.schema.json +87 -0
- package/visualization/eduevidence-report/scripts/__pycache__/adapter_contract.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_artifact_manifest.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_charts.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_figures.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_infographics.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_report.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/charts_data.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/lieflat_engine.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/zh_labels.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/adapter_contract.py +72 -0
- package/visualization/eduevidence-report/scripts/build_artifact_manifest.py +70 -0
- package/visualization/eduevidence-report/scripts/build_charts.py +283 -0
- package/visualization/eduevidence-report/scripts/build_figures.py +515 -0
- package/visualization/eduevidence-report/scripts/build_infographics.py +268 -0
- package/visualization/eduevidence-report/scripts/build_report.py +3211 -0
- package/visualization/eduevidence-report/scripts/charts_data.py +617 -0
- package/visualization/eduevidence-report/scripts/check_mobile_layout.js +220 -0
- package/visualization/eduevidence-report/scripts/lieflat_engine.py +852 -0
- package/visualization/eduevidence-report/scripts/zh_labels.py +245 -0
- package/visualization/eduevidence-report/themes/academic.css +94 -0
- package/visualization/eduevidence-report/themes/claude.css +96 -0
- package/visualization/eduevidence-report/themes/datalab-dark.css +147 -0
- package/visualization/eduevidence-report/themes/datalab.css +151 -0
- package/visualization/eduevidence-report/themes/presentation.css +140 -0
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""zh_labels.py — 显示层中文标签映射(v5 §10:格式化显示属于渲染器权限)。
|
|
3
|
+
|
|
4
|
+
只映射枚举/标签类字段(outcome_type、study_type、authority_level、状态、置信度等),
|
|
5
|
+
绝不改写数据内容(Evidence 文本、Claim 文本、Verdict 文本保持 result.json 原文,
|
|
6
|
+
以维持 Claim-Evidence-Source 可追溯性与 Scientific Integrity)。
|
|
7
|
+
|
|
8
|
+
三个适配器 + Composer 共用,保证全报告语言一致。
|
|
9
|
+
"""
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
OUTCOME_ZH = {
|
|
13
|
+
"knowledge_gain": "知识获得",
|
|
14
|
+
"concept_understanding": "概念理解",
|
|
15
|
+
"retention": "记忆保持",
|
|
16
|
+
"transfer": "迁移能力",
|
|
17
|
+
"independent_problem_solving": "独立问题解决",
|
|
18
|
+
"completion_time": "完成时间",
|
|
19
|
+
"accuracy": "正确率",
|
|
20
|
+
"code_quality": "代码质量",
|
|
21
|
+
"assignment_score": "作业成绩",
|
|
22
|
+
"engagement": "参与度",
|
|
23
|
+
"motivation": "学习动机",
|
|
24
|
+
"cognitive_load": "认知负荷",
|
|
25
|
+
"help_seeking": "求助行为",
|
|
26
|
+
"metacognition": "元认知",
|
|
27
|
+
"ai_dependency": "AI 依赖",
|
|
28
|
+
"over_reliance": "过度依赖",
|
|
29
|
+
"reduced_effort": "努力下降",
|
|
30
|
+
"reduced_transfer": "迁移下降",
|
|
31
|
+
"academic_integrity_risk": "学术诚信风险",
|
|
32
|
+
"false_confidence": "虚假自信",
|
|
33
|
+
"learning_gain": "学习收获",
|
|
34
|
+
"task_performance": "任务表现",
|
|
35
|
+
"programming_skill": "编程技能",
|
|
36
|
+
"writing_skill": "写作技能",
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
STUDY_ZH = {
|
|
40
|
+
"rct": "随机对照试验",
|
|
41
|
+
"randomized_controlled_trial": "随机对照试验",
|
|
42
|
+
"randomized controlled trial (rct)": "随机对照试验",
|
|
43
|
+
"quasi_experiment": "准实验",
|
|
44
|
+
"quasi_experimental": "准实验",
|
|
45
|
+
"quasi-experimental did": "准实验(双重差分)",
|
|
46
|
+
"did": "双重差分",
|
|
47
|
+
"literature_review": "文献综述",
|
|
48
|
+
"literature review": "文献综述",
|
|
49
|
+
"systematic_review": "系统综述",
|
|
50
|
+
"observational": "观察性研究",
|
|
51
|
+
"mixed_methods": "混合方法",
|
|
52
|
+
"case_study": "案例研究",
|
|
53
|
+
"longitudinal": "纵向研究",
|
|
54
|
+
"meta_analysis": "元分析",
|
|
55
|
+
"systematic_review": "系统综述",
|
|
56
|
+
"survey": "调查",
|
|
57
|
+
"qualitative": "质性研究",
|
|
58
|
+
"correlational": "相关研究",
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
AUTHORITY_ZH = {
|
|
62
|
+
"tier1_paper_doi": "T1 DOI 可验证论文",
|
|
63
|
+
"tier1_peer_reviewed": "T1 同行评议论文",
|
|
64
|
+
"tier1_peer_reviewed_journal": "T1 同行评议期刊",
|
|
65
|
+
"tier2_peer_reviewed": "T2 同行评议论文",
|
|
66
|
+
"tier2_peer_reviewed_conference": "T2 同行评议会议",
|
|
67
|
+
"tier3_peer_reviewed": "T3 专业机构成果",
|
|
68
|
+
"tier3_professional_institution": "T3 专业机构",
|
|
69
|
+
"tier4_reputable_media": "T4 权威媒体",
|
|
70
|
+
"tier5_unverified": "T5 未验证",
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
CLAIM_STATUS_ZH = {
|
|
74
|
+
"SUPPORTED": "已支持",
|
|
75
|
+
"supported": "已支持",
|
|
76
|
+
"UNSUPPORTED": "无支撑",
|
|
77
|
+
"unsupported": "无支撑",
|
|
78
|
+
"DOWNGRADE_CONFIDENCE": "降级置信度",
|
|
79
|
+
"downgrade_confidence": "降级置信度",
|
|
80
|
+
"CONTRADICT": "被反驳",
|
|
81
|
+
"contradicted": "被反驳",
|
|
82
|
+
"uncertain": "不确定",
|
|
83
|
+
"missing": "缺失",
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
VERDICT_ZH = {
|
|
87
|
+
"met": "通过",
|
|
88
|
+
"partial": "部分",
|
|
89
|
+
"not_applicable": "不适用",
|
|
90
|
+
"missing": "缺失",
|
|
91
|
+
"concern": "关注",
|
|
92
|
+
"CONCERN": "关注",
|
|
93
|
+
"PASS": "通过",
|
|
94
|
+
"FAIL": "失败",
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
CONFIDENCE_ZH = {
|
|
98
|
+
"High": "高",
|
|
99
|
+
"Moderate": "中",
|
|
100
|
+
"Low": "低",
|
|
101
|
+
"Insufficient": "不足",
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
MODE_ZH = {
|
|
105
|
+
"platform_native": "平台原生",
|
|
106
|
+
"agent_mcp_enhanced": "Agent MCP 增强",
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
ACTION_ZH = {
|
|
110
|
+
"adopt": "全面采用",
|
|
111
|
+
"ADOPT": "全面采用",
|
|
112
|
+
"pilot": "试点验证",
|
|
113
|
+
"PILOT": "试点验证",
|
|
114
|
+
"reject": "不建议采用",
|
|
115
|
+
"REJECT": "不建议采用",
|
|
116
|
+
"insufficient_evidence": "证据不足",
|
|
117
|
+
"INSUFFICIENT": "证据不足",
|
|
118
|
+
"INSUFFICIENT_EVIDENCE": "证据不足",
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
# 英文可读标签(lang=en 时显示;无映射时显示原始枚举值)
|
|
123
|
+
OUTCOME_EN = {
|
|
124
|
+
"knowledge_gain": "Knowledge gain",
|
|
125
|
+
"concept_understanding": "Concept understanding",
|
|
126
|
+
"retention": "Retention",
|
|
127
|
+
"transfer": "Transfer",
|
|
128
|
+
"independent_problem_solving": "Independent problem solving",
|
|
129
|
+
"completion_time": "Completion time",
|
|
130
|
+
"accuracy": "Accuracy",
|
|
131
|
+
"code_quality": "Code quality",
|
|
132
|
+
"assignment_score": "Assignment score",
|
|
133
|
+
"engagement": "Engagement",
|
|
134
|
+
"motivation": "Motivation",
|
|
135
|
+
"cognitive_load": "Cognitive load",
|
|
136
|
+
"help_seeking": "Help seeking",
|
|
137
|
+
"metacognition": "Metacognition",
|
|
138
|
+
"ai_dependency": "AI dependency",
|
|
139
|
+
"over_reliance": "Over-reliance",
|
|
140
|
+
"reduced_effort": "Reduced effort",
|
|
141
|
+
"reduced_transfer": "Reduced transfer",
|
|
142
|
+
"academic_integrity_risk": "Academic integrity risk",
|
|
143
|
+
"false_confidence": "False confidence",
|
|
144
|
+
"learning_gain": "Learning gain",
|
|
145
|
+
"task_performance": "Task performance",
|
|
146
|
+
"programming_skill": "Programming skill",
|
|
147
|
+
"writing_skill": "Writing skill",
|
|
148
|
+
}
|
|
149
|
+
STUDY_EN = {
|
|
150
|
+
"rct": "Randomized controlled trial",
|
|
151
|
+
"quasi_experiment": "Quasi-experiment",
|
|
152
|
+
"quasi_experimental": "Quasi-experimental",
|
|
153
|
+
"observational": "Observational",
|
|
154
|
+
"mixed_methods": "Mixed methods",
|
|
155
|
+
"case_study": "Case study",
|
|
156
|
+
"longitudinal": "Longitudinal",
|
|
157
|
+
"meta_analysis": "Meta-analysis",
|
|
158
|
+
"systematic_review": "Systematic review",
|
|
159
|
+
"survey": "Survey",
|
|
160
|
+
"qualitative": "Qualitative",
|
|
161
|
+
"correlational": "Correlational",
|
|
162
|
+
}
|
|
163
|
+
AUTHORITY_EN = {
|
|
164
|
+
"tier1_paper_doi": "Tier 1 DOI-verified paper",
|
|
165
|
+
"tier1_peer_reviewed_journal": "Tier 1 peer-reviewed journal",
|
|
166
|
+
"tier2_peer_reviewed_conference": "Tier 2 peer-reviewed conference",
|
|
167
|
+
"tier3_professional_institution": "Tier 3 professional institution",
|
|
168
|
+
"tier4_reputable_media": "Tier 4 reputable media",
|
|
169
|
+
"tier5_unverified": "Tier 5 unverified",
|
|
170
|
+
}
|
|
171
|
+
STATUS_EN = {
|
|
172
|
+
"SUPPORTED": "Supported",
|
|
173
|
+
"UNSUPPORTED": "Unsupported",
|
|
174
|
+
"DOWNGRADE_CONFIDENCE": "Confidence downgraded",
|
|
175
|
+
"CONTRADICT": "Contradicted",
|
|
176
|
+
}
|
|
177
|
+
VERDICT_EN = {
|
|
178
|
+
"met": "Met", "partial": "Partial", "not_applicable": "N/A",
|
|
179
|
+
"concern": "Concern", "CONCERN": "Concern", "PASS": "Pass", "FAIL": "Fail",
|
|
180
|
+
}
|
|
181
|
+
CONFIDENCE_EN = {
|
|
182
|
+
"High": "High", "Moderate": "Moderate", "Low": "Low", "Insufficient": "Insufficient",
|
|
183
|
+
}
|
|
184
|
+
MODE_EN = {
|
|
185
|
+
"platform_native": "Platform native", "agent_mcp_enhanced": "Agent MCP enhanced",
|
|
186
|
+
}
|
|
187
|
+
ACTION_EN = {
|
|
188
|
+
"adopt": "Adopt", "pilot": "Pilot", "reject": "Reject",
|
|
189
|
+
"insufficient_evidence": "Insufficient evidence",
|
|
190
|
+
}
|
|
191
|
+
DIR_EN = {"support": "Support", "contradict": "Contradict", "neutral": "Neutral"}
|
|
192
|
+
DIR_ZH = {"support": "支持", "contradict": "反驳", "neutral": "中性"}
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def label(lang: str, kind: str, value: str) -> str:
|
|
196
|
+
"""按语言取枚举可读标签:zh → 中文;en → 英文(无映射时返回原值)。"""
|
|
197
|
+
if lang == "zh":
|
|
198
|
+
table = {"outcome": OUTCOME_ZH, "study": STUDY_ZH, "authority": AUTHORITY_ZH,
|
|
199
|
+
"status": CLAIM_STATUS_ZH, "verdict": VERDICT_ZH, "confidence": CONFIDENCE_ZH,
|
|
200
|
+
"mode": MODE_ZH, "action": ACTION_ZH, "dir": DIR_ZH}
|
|
201
|
+
else:
|
|
202
|
+
table = {"outcome": OUTCOME_EN, "study": STUDY_EN, "authority": AUTHORITY_EN,
|
|
203
|
+
"status": STATUS_EN, "verdict": VERDICT_EN, "confidence": CONFIDENCE_EN,
|
|
204
|
+
"mode": MODE_EN, "action": ACTION_EN, "dir": DIR_EN}
|
|
205
|
+
table = table.get(kind, {})
|
|
206
|
+
if value is None:
|
|
207
|
+
return value
|
|
208
|
+
if value in table:
|
|
209
|
+
return table[value]
|
|
210
|
+
lowered = value.lower()
|
|
211
|
+
if lowered in table:
|
|
212
|
+
return table[lowered]
|
|
213
|
+
return value
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
def zh_outcome(value: str) -> str:
|
|
217
|
+
return OUTCOME_ZH.get(value, value)
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
def zh_study(value: str) -> str:
|
|
221
|
+
return STUDY_ZH.get(value, value)
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
def zh_authority(value: str) -> str:
|
|
225
|
+
return AUTHORITY_ZH.get(value, value)
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
def zh_status(value: str) -> str:
|
|
229
|
+
return CLAIM_STATUS_ZH.get(value, value)
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
def zh_verdict(value: str) -> str:
|
|
233
|
+
return VERDICT_ZH.get(value, value)
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
def zh_confidence(value: str) -> str:
|
|
237
|
+
return CONFIDENCE_ZH.get(value, value)
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
def zh_mode(value: str) -> str:
|
|
241
|
+
return MODE_ZH.get(value, value)
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
def zh_action(value: str) -> str:
|
|
245
|
+
return ACTION_ZH.get(value, value)
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/* Theme 02 — Academic Paper.
|
|
2
|
+
Formal review-paper reading and print: serif body, document rules, compact figures,
|
|
3
|
+
minimal decorative cards, strong provenance and grayscale-friendly structure. */
|
|
4
|
+
:root[data-theme="academic"] {
|
|
5
|
+
--bg:#FFFFFF; --surface:#FFFFFF; --surface2:#FAFAF8; --text:#151515;
|
|
6
|
+
--text-muted:#555; --primary:#234B57; --primary-soft:#EEF2F3;
|
|
7
|
+
--support:#2F6B3A; --support-soft:#EDF4EE; --contradict:#8A3A2F;
|
|
8
|
+
--contradict-soft:#F5ECEA; --uncertain:#806727; --uncertain-soft:#F5F1E5;
|
|
9
|
+
--insufficient:#666; --border:#BFC1C2; --radius:0; --radius-sm:0; --shadow:none;
|
|
10
|
+
--font-head:'Times New Roman','Songti SC','STSong',serif;
|
|
11
|
+
--font-ui:'Times New Roman','Songti SC','STSong',serif; --font-mono:'Courier New',Consolas,monospace;
|
|
12
|
+
}
|
|
13
|
+
:root[data-theme="academic"] body { font-size:15px; line-height:1.58; }
|
|
14
|
+
:root[data-theme="academic"] .report-shell { max-width:980px; padding-top:22px; }
|
|
15
|
+
:root[data-theme="academic"] .report-header { border-bottom:2px solid #222; margin-bottom:34px; }
|
|
16
|
+
:root[data-theme="academic"] .report-header h1 { font-size:2rem; line-height:1.18; text-align:center; }
|
|
17
|
+
:root[data-theme="academic"] .report-header .meta { text-align:center; }
|
|
18
|
+
:root[data-theme="academic"] .report-section { background:transparent; border:0; box-shadow:none; padding:0; margin-bottom:34px; }
|
|
19
|
+
:root[data-theme="academic"] .report-section>h2 { font-size:1.08rem; border-bottom:1px solid #444; border-radius:0; padding:0 0 5px; }
|
|
20
|
+
:root[data-theme="academic"] .section-lead { background:transparent; border:0; padding:0; margin:4px 0 14px; font-style:italic; }
|
|
21
|
+
:root[data-theme="academic"] .decision-hero { border:1px solid #444; background:#fff; border-radius:0; padding:22px 24px; }
|
|
22
|
+
:root[data-theme="academic"] .hero-insight,
|
|
23
|
+
:root[data-theme="academic"] .tribunal-card,
|
|
24
|
+
:root[data-theme="academic"] .trace-chain-card,
|
|
25
|
+
:root[data-theme="academic"] .action-node,
|
|
26
|
+
:root[data-theme="academic"] .outcome-group { border-radius:0; background:#fff; box-shadow:none; }
|
|
27
|
+
:root[data-theme="academic"] .hero-insights { gap:0; border-top:1px solid #999; border-left:1px solid #999; }
|
|
28
|
+
:root[data-theme="academic"] .hero-insight { border:0; border-right:1px solid #999; border-bottom:1px solid #999; min-height:0; }
|
|
29
|
+
:root[data-theme="academic"] .data-table { font-size:.82rem; }
|
|
30
|
+
:root[data-theme="academic"] .data-table th,
|
|
31
|
+
:root[data-theme="academic"] .data-table td { border-left:0; border-right:0; border-color:#A8A8A8; padding:6px 8px; }
|
|
32
|
+
:root[data-theme="academic"] .data-table thead th { border-top:1.5px solid #222; border-bottom:1px solid #222; background:#fff; }
|
|
33
|
+
:root[data-theme="academic"] .data-table tbody tr:last-child td { border-bottom:1.5px solid #222; }
|
|
34
|
+
:root[data-theme="academic"] figcaption,
|
|
35
|
+
:root[data-theme="academic"] .chart-summary { font-family:var(--font-ui); font-size:.8rem; font-style:italic; color:#333; }
|
|
36
|
+
:root[data-theme="academic"] .dir { border:1px solid currentColor; background:transparent !important; color:#222 !important; border-radius:0; }
|
|
37
|
+
:root[data-theme="academic"] .quality-meter i { background:#333; }
|
|
38
|
+
/* Dual-layer reader — formal paper / review article. */
|
|
39
|
+
:root[data-theme="academic"] .report-brand-row { justify-content:center; }
|
|
40
|
+
:root[data-theme="academic"] .report-brand { font-variant:small-caps; letter-spacing:.12em; }
|
|
41
|
+
:root[data-theme="academic"] .generated-theme-chip { border:0; padding:0; }
|
|
42
|
+
: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; }
|
|
43
|
+
:root[data-theme="academic"] .report-view-btn { border:0; border-radius:0; background:transparent; padding:3px 2px; font-family:var(--font-ui); }
|
|
44
|
+
:root[data-theme="academic"] .report-view-btn.active { background:transparent; color:#000; box-shadow:none; text-decoration:underline; text-underline-offset:4px; }
|
|
45
|
+
:root[data-theme="academic"] .brief-block { max-width:790px; margin-bottom:48px; }
|
|
46
|
+
:root[data-theme="academic"] .brief-block-header { max-width:none; border-bottom:1px solid #777; padding-bottom:6px; }
|
|
47
|
+
:root[data-theme="academic"] .brief-block-header h2 { font-size:1.16rem; }
|
|
48
|
+
:root[data-theme="academic"] .brief-decision .decision-hero { border:1px solid #444; padding:20px 24px; }
|
|
49
|
+
:root[data-theme="academic"] .brief-outcomes,
|
|
50
|
+
:root[data-theme="academic"] .brief-sources { max-width:930px; }
|
|
51
|
+
:root[data-theme="academic"] .brief-source-grid { gap:0; border-top:1px solid #777; }
|
|
52
|
+
:root[data-theme="academic"] .brief-source { border-width:0 0 1px 0; padding:10px 4px; }
|
|
53
|
+
:root[data-theme="academic"] .full-report-intro { max-width:740px; margin-bottom:22px; text-align:center; }
|
|
54
|
+
:root[data-theme="academic"] .full-report-intro h2 { font-size:1.45rem; }
|
|
55
|
+
:root[data-theme="academic"] .full-report-layout { grid-template-columns:175px minmax(0,1fr); gap:34px; }
|
|
56
|
+
:root[data-theme="academic"] .full-report-toc { border-right:1px solid #777; padding-right:14px; }
|
|
57
|
+
:root[data-theme="academic"] .full-report-toc a { border:0; border-bottom:1px dotted #bbb; padding:7px 0; font-size:.77rem; }
|
|
58
|
+
:root[data-theme="academic"] .full-report-toc a.active { border-left:0; background:transparent; font-weight:700; color:#000; }
|
|
59
|
+
@media (max-width:980px) {
|
|
60
|
+
:root[data-theme="academic"] .full-report-layout { grid-template-columns:minmax(0,1fr); }
|
|
61
|
+
}
|
|
62
|
+
:root[data-theme="academic"] .full-report-content { max-width:740px; }
|
|
63
|
+
:root[data-theme="academic"] .full-chapter { border-bottom:0; margin-bottom:50px; padding-bottom:0; }
|
|
64
|
+
:root[data-theme="academic"] .full-chapter-header { max-width:none; border-bottom:1px solid #444; padding-bottom:7px; margin-bottom:18px; }
|
|
65
|
+
:root[data-theme="academic"] .full-chapter-header h2 { font-size:1.22rem; }
|
|
66
|
+
:root[data-theme="academic"] .full-chapter-lead { font-style:italic; color:#444; }
|
|
67
|
+
:root[data-theme="academic"] .scope-card,
|
|
68
|
+
:root[data-theme="academic"] .retrieval-grid>article,
|
|
69
|
+
:root[data-theme="academic"] .retrieval-coverage,
|
|
70
|
+
:root[data-theme="academic"] .method-audit-item,
|
|
71
|
+
:root[data-theme="academic"] .brief-source,
|
|
72
|
+
:root[data-theme="academic"] .detail-body { border-radius:0; background:#fff; box-shadow:none; }
|
|
73
|
+
:root[data-theme="academic"] .method-audit-grid { grid-template-columns:minmax(0,1fr); gap:0; }
|
|
74
|
+
:root[data-theme="academic"] .method-audit-item { border-width:0 0 1px 0; padding:9px 0; }
|
|
75
|
+
:root[data-theme="academic"] .evidence-detail-grid dt,
|
|
76
|
+
:root[data-theme="academic"] .evidence-detail-grid dd { border-color:#999; }
|
|
77
|
+
@media print {
|
|
78
|
+
:root[data-theme="academic"] .generated-theme { display:none; }
|
|
79
|
+
:root[data-theme="academic"] .report-section { break-inside:auto; }
|
|
80
|
+
:root[data-theme="academic"] .data-table { font-size:8.5pt; }
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* Typography pass: journal rules for the Lieflat gallery + print scale. */
|
|
84
|
+
:root[data-theme="academic"] .lieflat-card { border:1px solid #444; border-radius:0; background:#fff; padding:18px 22px 14px; }
|
|
85
|
+
:root[data-theme="academic"] .lieflat-title { font-size:1.05rem; }
|
|
86
|
+
:root[data-theme="academic"] .lieflat-sub { font-size:.82rem; }
|
|
87
|
+
:root[data-theme="academic"] .lieflat-caption { font-style:italic; font-size:.78rem; }
|
|
88
|
+
:root[data-theme="academic"] .lieflat-src { letter-spacing:.06em; }
|
|
89
|
+
:root[data-theme="academic"] .lieflat-figure svg { border:1px solid #999; border-radius:0; background:#fff; }
|
|
90
|
+
@media print {
|
|
91
|
+
:root[data-theme="academic"] body { font-size:8.5pt; }
|
|
92
|
+
:root[data-theme="academic"] .lieflat-card { border:1px solid #444; }
|
|
93
|
+
:root[data-theme="academic"] .lieflat-title { font-size:10pt; }
|
|
94
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/* Theme 01 — Claude Research.
|
|
2
|
+
Calm long-form research reading: warm paper, restrained accents, sparse cards,
|
|
3
|
+
wide data breakouts and generous section rhythm. */
|
|
4
|
+
:root[data-theme="claude"] {
|
|
5
|
+
--bg:#F7F4ED; --surface:#FFFFFF; --surface2:#FCFAF6; --text:#3A3833;
|
|
6
|
+
--text-muted:#8A867E; --primary:#B8694A; --primary-soft:#F3E4DC;
|
|
7
|
+
--support:#5E8A6A; --support-soft:#E4EDE5; --contradict:#A85B53;
|
|
8
|
+
--contradict-soft:#F0E0DE; --uncertain:#C99A4A; --uncertain-soft:#F4EADA;
|
|
9
|
+
--insufficient:#8A867E; --border:#E5DFD3; --radius:12px; --radius-sm:8px;
|
|
10
|
+
--shadow:0 1px 3px rgba(60,56,48,.07); --font-head:'Georgia','Songti SC','STSong',serif;
|
|
11
|
+
--font-ui:'Helvetica Neue','PingFang SC','Noto Sans CJK SC',Arial,sans-serif; --font-mono:'SF Mono',Menlo,Consolas,monospace;
|
|
12
|
+
}
|
|
13
|
+
:root[data-theme="claude"] .report-shell { max-width:1240px; padding-top:34px; }
|
|
14
|
+
:root[data-theme="claude"] .report-header { max-width:900px; margin:0 auto 42px; padding-bottom:22px; }
|
|
15
|
+
:root[data-theme="claude"] .report-header h1 { font-size:clamp(1.9rem,4vw,3rem); line-height:1.18; font-weight:500; }
|
|
16
|
+
:root[data-theme="claude"] .report-section { background:transparent; border:0; box-shadow:none; padding:0; }
|
|
17
|
+
:root[data-theme="claude"] .report-section>h2 { border:0; font-size:1.4rem; padding:0; margin-bottom:7px; }
|
|
18
|
+
:root[data-theme="claude"] .section-lead { background:transparent; border:0; padding:0; max-width:760px; margin-bottom:24px; }
|
|
19
|
+
:root[data-theme="claude"] .decision-hero { background:var(--surface); box-shadow:0 10px 30px rgba(60,56,48,.06); }
|
|
20
|
+
:root[data-theme="claude"] .hero-insight { border-radius:8px; box-shadow:0 1px 0 rgba(60,56,48,.03); }
|
|
21
|
+
:root[data-theme="claude"] .section-data>.table-wrap,
|
|
22
|
+
:root[data-theme="claude"] .section-data>.matrix-controls,
|
|
23
|
+
:root[data-theme="claude"] .section-data>.outcome-separation,
|
|
24
|
+
:root[data-theme="claude"] .section-data>.trace-chain { width:min(1180px,calc(100vw - 48px)); margin-left:50%; transform:translateX(-50%); }
|
|
25
|
+
:root[data-theme="claude"] .data-table th { font-weight:600; }
|
|
26
|
+
:root[data-theme="claude"] .tribunal-card,
|
|
27
|
+
:root[data-theme="claude"] .trace-chain-card,
|
|
28
|
+
:root[data-theme="claude"] .action-node { background:var(--surface); }
|
|
29
|
+
|
|
30
|
+
/* Dual-layer reader — calm research workspace. */
|
|
31
|
+
:root[data-theme="claude"] .report-header { max-width:940px; }
|
|
32
|
+
:root[data-theme="claude"] .report-brand { color:var(--primary); }
|
|
33
|
+
:root[data-theme="claude"] .report-view-switcher { display:inline-flex; padding:4px; background:#EFEAE0; border-radius:999px; }
|
|
34
|
+
:root[data-theme="claude"] .report-view-btn { border:0; background:transparent; padding:7px 15px; }
|
|
35
|
+
:root[data-theme="claude"] .report-view-btn.active { background:var(--surface); color:var(--text); box-shadow:0 1px 4px rgba(60,56,48,.09); }
|
|
36
|
+
:root[data-theme="claude"] .brief-block { max-width:980px; }
|
|
37
|
+
:root[data-theme="claude"] .brief-block-header { margin-bottom:26px; }
|
|
38
|
+
:root[data-theme="claude"] .brief-block-header h2 { font-size:1.55rem; font-weight:500; }
|
|
39
|
+
:root[data-theme="claude"] .brief-decision { max-width:1040px; }
|
|
40
|
+
:root[data-theme="claude"] .brief-outcomes .brief-block-body,
|
|
41
|
+
:root[data-theme="claude"] .brief-tribunal .brief-block-body { width:min(1120px,calc(100vw - 48px)); margin-left:50%; transform:translateX(-50%); }
|
|
42
|
+
:root[data-theme="claude"] .brief-source { background:var(--surface); box-shadow:0 1px 3px rgba(60,56,48,.04); }
|
|
43
|
+
:root[data-theme="claude"] .full-report-intro { max-width:880px; margin-left:250px; }
|
|
44
|
+
:root[data-theme="claude"] .full-report-layout { grid-template-columns:210px minmax(0,1fr); gap:56px; }
|
|
45
|
+
:root[data-theme="claude"] .full-report-toc { border-right:0; padding-right:0; }
|
|
46
|
+
:root[data-theme="claude"] .full-report-toc a { border-left:1px solid var(--border); padding:8px 0 8px 13px; background:transparent; }
|
|
47
|
+
:root[data-theme="claude"] .full-report-toc a.active { border-left:2px solid var(--primary); background:transparent; color:var(--text); }
|
|
48
|
+
:root[data-theme="claude"] .full-report-content { max-width:900px; }
|
|
49
|
+
@media (max-width:980px) {
|
|
50
|
+
:root[data-theme="claude"] .full-report-layout { grid-template-columns:minmax(0,1fr); gap:28px; }
|
|
51
|
+
}
|
|
52
|
+
:root[data-theme="claude"] .full-chapter { border-bottom:0; margin-bottom:72px; padding-bottom:0; }
|
|
53
|
+
:root[data-theme="claude"] .full-chapter-header { max-width:760px; margin-bottom:30px; }
|
|
54
|
+
:root[data-theme="claude"] .full-chapter-header h2 { font-size:1.8rem; font-weight:500; }
|
|
55
|
+
:root[data-theme="claude"] .scope-card,
|
|
56
|
+
:root[data-theme="claude"] .retrieval-grid>article,
|
|
57
|
+
:root[data-theme="claude"] .retrieval-coverage,
|
|
58
|
+
:root[data-theme="claude"] .method-audit-item { background:var(--surface); }
|
|
59
|
+
:root[data-theme="claude"] .detail-body { background:#FBF8F2; }
|
|
60
|
+
|
|
61
|
+
/* Header chrome: keep language controls inside the reading measure instead of a full-width strip. */
|
|
62
|
+
:root[data-theme="claude"] .controls {
|
|
63
|
+
max-width:940px; margin:16px auto 0; padding:8px 2px 12px;
|
|
64
|
+
border-bottom:1px solid var(--border); background:transparent;
|
|
65
|
+
}
|
|
66
|
+
:root[data-theme="claude"] .generated-theme {
|
|
67
|
+
margin-right:auto; color:var(--text-muted); font-family:var(--font-ui);
|
|
68
|
+
font-size:.76rem; font-weight:700; letter-spacing:.075em; text-transform:uppercase;
|
|
69
|
+
}
|
|
70
|
+
:root[data-theme="claude"] .lang-switcher {
|
|
71
|
+
gap:6px; padding:3px; border:1px solid var(--border); border-radius:999px;
|
|
72
|
+
background:rgba(255,255,255,.62);
|
|
73
|
+
}
|
|
74
|
+
:root[data-theme="claude"] .lang-switcher>span { margin-left:6px; font-size:.72rem; }
|
|
75
|
+
:root[data-theme="claude"] .lang-btn { border:0; background:transparent; padding:4px 11px; }
|
|
76
|
+
:root[data-theme="claude"] .lang-btn.active { background:var(--primary); color:#fff; }
|
|
77
|
+
:root[data-theme="claude"] .report-brand-row { margin-bottom:12px; }
|
|
78
|
+
:root[data-theme="claude"] .generated-theme-chip {
|
|
79
|
+
background:#F1ECE3; border-color:#E2D8C9; color:#736D64; text-transform:none;
|
|
80
|
+
}
|
|
81
|
+
@media (max-width:980px) {
|
|
82
|
+
:root[data-theme="claude"] .full-report-intro { margin-left:0; }
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* Typography pass: reading measure stays inside the serif breathing room;
|
|
86
|
+
Lieflat cards inherit the warm-paper identity (no letter-spacing on CJK). */
|
|
87
|
+
:root[data-theme="claude"] .full-chapter-body p,
|
|
88
|
+
:root[data-theme="claude"] .section-narrative p { max-width:68ch; }
|
|
89
|
+
:root[data-theme="claude"] .brief-block-header p,
|
|
90
|
+
:root[data-theme="claude"] .full-chapter-lead,
|
|
91
|
+
:root[data-theme="claude"] .section-lead { max-width:62ch; }
|
|
92
|
+
:root[data-theme="claude"] .lieflat-card { background:var(--surface); border-radius:16px; padding:26px 28px 20px; }
|
|
93
|
+
:root[data-theme="claude"] .lieflat-title { font-weight:500; font-size:1.28rem; line-height:1.3; }
|
|
94
|
+
:root[data-theme="claude"] .lieflat-sub { max-width:720px; }
|
|
95
|
+
:root[data-theme="claude"] .lieflat-figure svg { border-radius:12px; background:transparent; }
|
|
96
|
+
:root[data-theme="claude"] .lieflat-suppressed { background:var(--surface2); }
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/* Theme 04 — DataLab Dark.
|
|
2
|
+
Same information architecture as DataLab Light, rendered as a focused dark analytical workspace. */
|
|
3
|
+
:root[data-theme="datalab-dark"] {
|
|
4
|
+
--bg:#0F131A; --surface:#171C24; --surface2:#1D2430; --text:#E9EDF3;
|
|
5
|
+
--text-muted:#98A3B3; --primary:#6EA8FF; --primary-soft:#1B3152;
|
|
6
|
+
--support:#58C79B; --support-soft:#18372C; --contradict:#F08282;
|
|
7
|
+
--contradict-soft:#422426; --uncertain:#E4B45F; --uncertain-soft:#3B3020;
|
|
8
|
+
--insufficient:#8D98A8; --border:#2D3745; --radius:8px; --radius-sm:6px;
|
|
9
|
+
--shadow:0 8px 24px rgba(0,0,0,.22); --font-head:'Helvetica Neue',Arial,'PingFang SC',sans-serif;
|
|
10
|
+
--font-ui:'Helvetica Neue',Arial,'PingFang SC',sans-serif; --font-mono:'SF Mono',Menlo,Consolas,monospace;
|
|
11
|
+
}
|
|
12
|
+
:root[data-theme="datalab-dark"] body { font-size:15.5px; }
|
|
13
|
+
:root[data-theme="datalab-dark"] .controls {
|
|
14
|
+
max-width:1480px; margin-top:12px; padding:9px 12px; border:1px solid var(--border);
|
|
15
|
+
border-radius:10px; background:rgba(23,28,36,.94); box-shadow:var(--shadow); backdrop-filter:blur(12px);
|
|
16
|
+
}
|
|
17
|
+
:root[data-theme="datalab-dark"] .generated-theme { color:var(--primary); font-weight:750; letter-spacing:.06em; }
|
|
18
|
+
:root[data-theme="datalab-dark"] .lang-btn { background:var(--surface2); border-color:var(--border); color:var(--text); }
|
|
19
|
+
:root[data-theme="datalab-dark"] .lang-btn.active { background:var(--primary); border-color:var(--primary); color:#0D1420; }
|
|
20
|
+
:root[data-theme="datalab-dark"] .report-shell { width:100%; max-width:1480px; padding:18px clamp(16px,2.4vw,30px) 72px; }
|
|
21
|
+
:root[data-theme="datalab-dark"] .report-header {
|
|
22
|
+
width:100%; max-width:none; margin:0 0 22px; padding:18px 20px;
|
|
23
|
+
border:1px solid var(--border); border-radius:12px; background:var(--surface); box-shadow:var(--shadow);
|
|
24
|
+
}
|
|
25
|
+
:root[data-theme="datalab-dark"] .report-header h1 { max-width:1100px; font-size:clamp(1.55rem,2.6vw,2.15rem); line-height:1.22; }
|
|
26
|
+
:root[data-theme="datalab-dark"] .report-header .meta { margin:8px 0 0; font-size:.85rem; color:var(--text-muted); }
|
|
27
|
+
:root[data-theme="datalab-dark"] .report-brand-row { margin-bottom:8px; }
|
|
28
|
+
:root[data-theme="datalab-dark"] .report-brand { color:var(--primary); text-transform:uppercase; letter-spacing:.08em; font-size:.83rem; }
|
|
29
|
+
: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; }
|
|
30
|
+
:root[data-theme="datalab-dark"] .report-view-switcher { margin-top:14px; gap:0; }
|
|
31
|
+
: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); }
|
|
32
|
+
:root[data-theme="datalab-dark"] .report-view-btn + .report-view-btn { border-radius:0 6px 6px 0; margin-left:-1px; }
|
|
33
|
+
:root[data-theme="datalab-dark"] .report-view-btn.active { background:var(--primary); border-color:var(--primary); color:#0D1420; }
|
|
34
|
+
|
|
35
|
+
: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; }
|
|
36
|
+
: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); }
|
|
37
|
+
:root[data-theme="datalab-dark"] .brief-decision,
|
|
38
|
+
:root[data-theme="datalab-dark"] .brief-lieflat,
|
|
39
|
+
:root[data-theme="datalab-dark"] .brief-outcomes,
|
|
40
|
+
:root[data-theme="datalab-dark"] .brief-sources { grid-column:1/-1; }
|
|
41
|
+
:root[data-theme="datalab-dark"] .brief-tribunal,
|
|
42
|
+
:root[data-theme="datalab-dark"] .brief-action { grid-column:span 2; }
|
|
43
|
+
: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; }
|
|
44
|
+
: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; }
|
|
45
|
+
: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); }
|
|
46
|
+
:root[data-theme="datalab-dark"] .brief-decision { padding:0; overflow:hidden; }
|
|
47
|
+
:root[data-theme="datalab-dark"] .brief-decision .brief-block-header { padding:18px 20px 0; }
|
|
48
|
+
: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); }
|
|
49
|
+
:root[data-theme="datalab-dark"] .brief-decision .hero-decision { align-content:start; margin:0; }
|
|
50
|
+
: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; }
|
|
51
|
+
:root[data-theme="datalab-dark"] .brief-decision .hero-insights { grid-column:1/-1; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
|
|
52
|
+
: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); }
|
|
53
|
+
:root[data-theme="datalab-dark"] .brief-outcomes .brief-block-body { display:grid; gap:18px; }
|
|
54
|
+
:root[data-theme="datalab-dark"] .brief-outcomes .outcome-groups { grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr)); gap:10px; }
|
|
55
|
+
:root[data-theme="datalab-dark"] .brief-outcomes .outcome-group { padding:13px 14px; background:var(--surface2); }
|
|
56
|
+
:root[data-theme="datalab-dark"] .brief-chart { margin:0; background:var(--surface2); }
|
|
57
|
+
:root[data-theme="datalab-dark"] .brief-chart svg,
|
|
58
|
+
:root[data-theme="datalab-dark"] .report-section svg { background:#FFFFFF; }
|
|
59
|
+
:root[data-theme="datalab-dark"] .brief-tribunal,
|
|
60
|
+
:root[data-theme="datalab-dark"] .brief-action { min-height:100%; }
|
|
61
|
+
:root[data-theme="datalab-dark"] .tribunal-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
|
|
62
|
+
:root[data-theme="datalab-dark"] .tribunal-card { min-height:0; padding:13px 14px; background:var(--surface2); }
|
|
63
|
+
:root[data-theme="datalab-dark"] .evidence-to-action { gap:7px; padding-bottom:8px; margin-bottom:0; }
|
|
64
|
+
:root[data-theme="datalab-dark"] .action-node { min-width:150px; padding:12px 13px; background:var(--surface2); }
|
|
65
|
+
:root[data-theme="datalab-dark"] .brief-source-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
|
|
66
|
+
:root[data-theme="datalab-dark"] .brief-source { min-width:0; padding:12px 14px; background:var(--surface2); }
|
|
67
|
+
:root[data-theme="datalab-dark"] .brief-source h3 { font-size:.88rem; line-height:1.45; overflow-wrap:anywhere; }
|
|
68
|
+
|
|
69
|
+
: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); }
|
|
70
|
+
:root[data-theme="datalab-dark"] .full-report-intro h2 { font-family:var(--font-ui); font-size:1.35rem; }
|
|
71
|
+
:root[data-theme="datalab-dark"] .full-report-layout { grid-template-columns:minmax(210px,270px) minmax(0,1fr); gap:18px; }
|
|
72
|
+
: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); }
|
|
73
|
+
@media (max-width:980px) {
|
|
74
|
+
:root[data-theme="datalab-dark"] .full-report-layout { grid-template-columns:minmax(0,1fr); }
|
|
75
|
+
:root[data-theme="datalab-dark"] .full-report-toc { position:relative; top:auto; max-height:none; }
|
|
76
|
+
}
|
|
77
|
+
: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); }
|
|
78
|
+
:root[data-theme="datalab-dark"] .full-report-toc a.active { border-left-color:var(--primary); background:var(--primary-soft); color:var(--text); }
|
|
79
|
+
:root[data-theme="datalab-dark"] .full-report-content { max-width:none; }
|
|
80
|
+
: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); }
|
|
81
|
+
: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; }
|
|
82
|
+
:root[data-theme="datalab-dark"] .full-chapter-header h2 { font-family:var(--font-ui); font-size:1.18rem; line-height:1.35; }
|
|
83
|
+
:root[data-theme="datalab-dark"] .full-chapter-lead { font-size:.88rem; line-height:1.55; color:var(--text-muted); }
|
|
84
|
+
:root[data-theme="datalab-dark"] .scope-grid { grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr)); }
|
|
85
|
+
:root[data-theme="datalab-dark"] .method-audit-grid { grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr)); gap:9px; }
|
|
86
|
+
:root[data-theme="datalab-dark"] .scope-card,
|
|
87
|
+
:root[data-theme="datalab-dark"] .retrieval-grid>article,
|
|
88
|
+
:root[data-theme="datalab-dark"] .retrieval-coverage,
|
|
89
|
+
:root[data-theme="datalab-dark"] .method-audit-item,
|
|
90
|
+
:root[data-theme="datalab-dark"] .detail-body,
|
|
91
|
+
:root[data-theme="datalab-dark"] .visual-suppressed { background:var(--surface2); border-color:var(--border); }
|
|
92
|
+
: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; }
|
|
93
|
+
:root[data-theme="datalab-dark"] .matrix-tools input,
|
|
94
|
+
:root[data-theme="datalab-dark"] .matrix-tools select { min-height:36px; padding:6px 9px; background:var(--surface2); border-color:var(--border); color:var(--text); }
|
|
95
|
+
:root[data-theme="datalab-dark"] .data-table { font-size:.82rem; }
|
|
96
|
+
:root[data-theme="datalab-dark"] .data-table th,
|
|
97
|
+
:root[data-theme="datalab-dark"] .data-table td { padding:7px 8px; border-color:var(--border); }
|
|
98
|
+
:root[data-theme="datalab-dark"] .table-wrap .data-table th { background:var(--surface2); }
|
|
99
|
+
:root[data-theme="datalab-dark"] .data-table tbody tr:nth-child(even) { background:#141A22; }
|
|
100
|
+
:root[data-theme="datalab-dark"] .data-table tbody tr:hover { background:var(--primary-soft); }
|
|
101
|
+
:root[data-theme="datalab-dark"] .claim-cell { max-width:none; min-width:260px; }
|
|
102
|
+
:root[data-theme="datalab-dark"] code { font-size:.78em; background:var(--surface2); }
|
|
103
|
+
|
|
104
|
+
/* Lieflat gallery — dark workbench density; figure surface keeps the dark
|
|
105
|
+
card_bg and labels hold ≥4.5:1 contrast against it. */
|
|
106
|
+
:root[data-theme="datalab-dark"] .lieflat-gallery-container {
|
|
107
|
+
display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px;
|
|
108
|
+
}
|
|
109
|
+
:root[data-theme="datalab-dark"] .lieflat-card { padding:16px 18px 12px; border-radius:10px; background:var(--surface2); }
|
|
110
|
+
:root[data-theme="datalab-dark"] .lieflat-title { font-family:var(--font-ui); font-size:.98rem; line-height:1.35; }
|
|
111
|
+
:root[data-theme="datalab-dark"] .lieflat-sub { font-size:.8rem; line-height:1.5; }
|
|
112
|
+
:root[data-theme="datalab-dark"] .lieflat-figure svg { border-radius:6px; background:transparent; }
|
|
113
|
+
:root[data-theme="datalab-dark"] .lieflat-caption { font-size:.75rem; }
|
|
114
|
+
:root[data-theme="datalab-dark"] .lieflat-src { font-size:.62rem; }
|
|
115
|
+
:root[data-theme="datalab-dark"] .lieflat-suppressed { font-size:.78rem; }
|
|
116
|
+
:root[data-theme="datalab-dark"] .lang-btn { min-height:36px; }
|
|
117
|
+
:root[data-theme="datalab-dark"] .lang-switcher { align-items:center; }
|
|
118
|
+
|
|
119
|
+
@media (max-width:1100px) {
|
|
120
|
+
:root[data-theme="datalab-dark"] .brief-decision .hero-insights { grid-template-columns:repeat(2,minmax(0,1fr)); }
|
|
121
|
+
:root[data-theme="datalab-dark"] .brief-source-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
|
|
122
|
+
:root[data-theme="datalab-dark"] .lieflat-gallery-container { grid-template-columns:1fr; }
|
|
123
|
+
}
|
|
124
|
+
@media (max-width:980px) {
|
|
125
|
+
:root[data-theme="datalab-dark"] .report-page-brief { grid-template-columns:minmax(0,1fr); }
|
|
126
|
+
:root[data-theme="datalab-dark"] .brief-block { grid-column:1 !important; }
|
|
127
|
+
:root[data-theme="datalab-dark"] .brief-block-header { display:block; }
|
|
128
|
+
:root[data-theme="datalab-dark"] .brief-block-header p { margin-top:6px; max-width:none; text-align:left; }
|
|
129
|
+
:root[data-theme="datalab-dark"] .brief-decision .decision-hero { grid-template-columns:1fr; }
|
|
130
|
+
:root[data-theme="datalab-dark"] .brief-decision .hero-insights { grid-column:1; }
|
|
131
|
+
:root[data-theme="datalab-dark"] .full-chapter-header { grid-template-columns:1fr; }
|
|
132
|
+
}
|
|
133
|
+
@media (max-width:720px) {
|
|
134
|
+
:root[data-theme="datalab-dark"] .controls { width:calc(100% - 24px); padding:8px 10px; }
|
|
135
|
+
:root[data-theme="datalab-dark"] .report-shell { padding-left:14px; padding-right:14px; }
|
|
136
|
+
:root[data-theme="datalab-dark"] .report-header { padding:15px 14px; }
|
|
137
|
+
:root[data-theme="datalab-dark"] .report-header h1 { font-size:1.45rem; }
|
|
138
|
+
:root[data-theme="datalab-dark"] .brief-block { padding:15px 14px; }
|
|
139
|
+
:root[data-theme="datalab-dark"] .brief-decision { padding:0; }
|
|
140
|
+
:root[data-theme="datalab-dark"] .brief-decision .brief-block-header { padding:15px 14px 0; }
|
|
141
|
+
:root[data-theme="datalab-dark"] .brief-decision .decision-hero { padding:18px 14px; }
|
|
142
|
+
:root[data-theme="datalab-dark"] .brief-decision .hero-insights,
|
|
143
|
+
:root[data-theme="datalab-dark"] .brief-source-grid,
|
|
144
|
+
:root[data-theme="datalab-dark"] .tribunal-grid { grid-template-columns:1fr; }
|
|
145
|
+
:root[data-theme="datalab-dark"] .full-chapter { padding:16px 14px; }
|
|
146
|
+
:root[data-theme="datalab-dark"] .data-table { font-size:.8rem; }
|
|
147
|
+
}
|