dsh-aris-panel 0.1.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 (442) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +98 -0
  3. package/README_CN.md +87 -0
  4. package/dsh/checkout.patch.yml +38 -0
  5. package/dsh/client.js +634 -0
  6. package/dsh/cordis.patch.yml +44 -0
  7. package/dsh/index.mjs +76 -0
  8. package/dsh/run-status.mjs +182 -0
  9. package/dsh/scope-limits.mjs +50 -0
  10. package/dsh/workbench.mjs +291 -0
  11. package/mcp-servers/claude-review/README.md +93 -0
  12. package/mcp-servers/claude-review/run_with_claude_aws.sh +49 -0
  13. package/mcp-servers/claude-review/server.py +718 -0
  14. package/mcp-servers/codex-image2/README.md +65 -0
  15. package/mcp-servers/codex-image2/server.py +893 -0
  16. package/mcp-servers/feishu-bridge/requirements.txt +1 -0
  17. package/mcp-servers/feishu-bridge/server.py +240 -0
  18. package/mcp-servers/gemini-review/README.md +171 -0
  19. package/mcp-servers/gemini-review/server.py +1856 -0
  20. package/mcp-servers/llm-chat/requirements.txt +1 -0
  21. package/mcp-servers/llm-chat/server.py +664 -0
  22. package/mcp-servers/manual-review/README.md +133 -0
  23. package/mcp-servers/manual-review/server.py +910 -0
  24. package/mcp-servers/manual-review/ui.html +279 -0
  25. package/mcp-servers/minimax-chat/requirements.txt +1 -0
  26. package/mcp-servers/minimax-chat/server.py +381 -0
  27. package/package.json +51 -0
  28. package/skills/ablation-planner/SKILL.md +123 -0
  29. package/skills/alphaxiv/SKILL.md +196 -0
  30. package/skills/analyze-results/SKILL.md +46 -0
  31. package/skills/arxiv/SKILL.md +248 -0
  32. package/skills/auto-paper-improvement-loop/SKILL.md +651 -0
  33. package/skills/auto-review-loop/SKILL.md +1137 -0
  34. package/skills/auto-review-loop-llm/SKILL.md +259 -0
  35. package/skills/auto-review-loop-minimax/SKILL.md +302 -0
  36. package/skills/citation-audit/SKILL.md +502 -0
  37. package/skills/claims-drafting/SKILL.md +227 -0
  38. package/skills/comm-lit-review/SKILL.md +297 -0
  39. package/skills/deepxiv/SKILL.md +263 -0
  40. package/skills/dse-loop/SKILL.md +296 -0
  41. package/skills/embodiment-description/SKILL.md +129 -0
  42. package/skills/exa-search/SKILL.md +205 -0
  43. package/skills/experiment-audit/SKILL.md +311 -0
  44. package/skills/experiment-bridge/SKILL.md +376 -0
  45. package/skills/experiment-plan/SKILL.md +249 -0
  46. package/skills/experiment-queue/SKILL.md +431 -0
  47. package/skills/experiment-queue/scripts/build_manifest.py +142 -0
  48. package/skills/experiment-queue/scripts/queue_manager.py +433 -0
  49. package/skills/feishu-notify/SKILL.md +156 -0
  50. package/skills/figure-description/SKILL.md +138 -0
  51. package/skills/figure-spec/SKILL.md +262 -0
  52. package/skills/figure-spec/scripts/figure_renderer.py +799 -0
  53. package/skills/formula-derivation/SKILL.md +280 -0
  54. package/skills/gemini-search/SKILL.md +231 -0
  55. package/skills/grant-proposal/SKILL.md +698 -0
  56. package/skills/idea-creator/SKILL.md +542 -0
  57. package/skills/idea-discovery/SKILL.md +521 -0
  58. package/skills/idea-discovery-robot/SKILL.md +363 -0
  59. package/skills/integrity-forensics/SKILL.md +284 -0
  60. package/skills/interview-cheatsheet/SKILL.md +245 -0
  61. package/skills/invention-structuring/SKILL.md +188 -0
  62. package/skills/jurisdiction-format/SKILL.md +192 -0
  63. package/skills/kill-argument/SKILL.md +437 -0
  64. package/skills/mermaid-diagram/SKILL.md +419 -0
  65. package/skills/meta-apply/SKILL.md +141 -0
  66. package/skills/meta-optimize/SKILL.md +437 -0
  67. package/skills/monitor-experiment/SKILL.md +140 -0
  68. package/skills/novelty-check/SKILL.md +101 -0
  69. package/skills/openalex/SKILL.md +237 -0
  70. package/skills/overleaf-sync/SKILL.md +220 -0
  71. package/skills/paper-claim-audit/SKILL.md +348 -0
  72. package/skills/paper-compile/SKILL.md +266 -0
  73. package/skills/paper-figure/SKILL.md +312 -0
  74. package/skills/paper-illustration/SKILL.md +736 -0
  75. package/skills/paper-illustration-image2/SKILL.md +391 -0
  76. package/skills/paper-illustration-image2/scripts/paper_illustration_image2.py +255 -0
  77. package/skills/paper-plan/SKILL.md +386 -0
  78. package/skills/paper-poster/SKILL.md +19 -0
  79. package/skills/paper-poster-html/DESIGN_FINAL.md +176 -0
  80. package/skills/paper-poster-html/IMPLEMENTATION_CONVENTIONS.md +161 -0
  81. package/skills/paper-poster-html/LICENSES/posterly-MIT.txt +21 -0
  82. package/skills/paper-poster-html/NOTICE.md +57 -0
  83. package/skills/paper-poster-html/SKILL.md +323 -0
  84. package/skills/paper-poster-html/scripts/_posterly/__init__.py +0 -0
  85. package/skills/paper-poster-html/scripts/_posterly/canvas.py +200 -0
  86. package/skills/paper-poster-html/scripts/_posterly/measure.py +588 -0
  87. package/skills/paper-poster-html/scripts/_posterly/polish.py +498 -0
  88. package/skills/paper-poster-html/scripts/_posterly/preflight.py +489 -0
  89. package/skills/paper-poster-html/scripts/_posterly/render.py +215 -0
  90. package/skills/paper-poster-html/scripts/_posterly/textutil.py +16 -0
  91. package/skills/paper-poster-html/scripts/_posterly/verify_final.py +171 -0
  92. package/skills/paper-poster-html/scripts/asset_check.py +897 -0
  93. package/skills/paper-poster-html/scripts/extract_pdf_figures.py +666 -0
  94. package/skills/paper-poster-html/scripts/poster_check.py +251 -0
  95. package/skills/paper-poster-html/scripts/preprocess_figures.py +238 -0
  96. package/skills/paper-poster-html/scripts/render_preview.py +217 -0
  97. package/skills/paper-poster-html/scripts/run_gates.py +556 -0
  98. package/skills/paper-poster-html/scripts/style_check.py +1324 -0
  99. package/skills/paper-poster-html/templates/COMPONENTS.md +462 -0
  100. package/skills/paper-poster-html/templates/README.md +170 -0
  101. package/skills/paper-poster-html/templates/landscape_4col.html +1032 -0
  102. package/skills/paper-poster-html/templates/landscape_hero.html +1046 -0
  103. package/skills/paper-poster-html/templates/portrait_2col.html +947 -0
  104. package/skills/paper-poster-html/templates/tokens/acl.json +9 -0
  105. package/skills/paper-poster-html/templates/tokens/cvpr.json +9 -0
  106. package/skills/paper-poster-html/templates/tokens/generic.json +9 -0
  107. package/skills/paper-poster-html/templates/tokens/iclr.json +9 -0
  108. package/skills/paper-poster-html/templates/tokens/icml.json +9 -0
  109. package/skills/paper-poster-html/templates/tokens/neurips.json +9 -0
  110. package/skills/paper-slides/SKILL.md +635 -0
  111. package/skills/paper-talk/SKILL.md +381 -0
  112. package/skills/paper-write/SKILL.md +604 -0
  113. package/skills/paper-write/templates/IEEEtran.bst +2409 -0
  114. package/skills/paper-write/templates/IEEEtran.cls +6347 -0
  115. package/skills/paper-write/templates/iclr2026.tex +84 -0
  116. package/skills/paper-write/templates/icml2025.tex +87 -0
  117. package/skills/paper-write/templates/ieee_conference.tex +89 -0
  118. package/skills/paper-write/templates/ieee_journal.tex +93 -0
  119. package/skills/paper-write/templates/math_commands.tex +48 -0
  120. package/skills/paper-write/templates/neurips2025.tex +80 -0
  121. package/skills/paper-writing/SKILL.md +916 -0
  122. package/skills/patent-novelty-check/SKILL.md +153 -0
  123. package/skills/patent-pipeline/SKILL.md +344 -0
  124. package/skills/patent-review/SKILL.md +203 -0
  125. package/skills/pixel-art/SKILL.md +137 -0
  126. package/skills/prior-art-search/SKILL.md +146 -0
  127. package/skills/proof-checker/SKILL.md +866 -0
  128. package/skills/proof-orchestrator/NOTICE.md +24 -0
  129. package/skills/proof-orchestrator/SKILL.md +254 -0
  130. package/skills/proof-orchestrator/references/audit-output-contract.md +126 -0
  131. package/skills/proof-orchestrator/references/deepseek-routing.md +74 -0
  132. package/skills/proof-orchestrator/references/dispatch-prompts.md +227 -0
  133. package/skills/proof-orchestrator/references/notation-audit.md +135 -0
  134. package/skills/proof-orchestrator/references/proof-audit-rubric.md +70 -0
  135. package/skills/proof-orchestrator/references/stress-tests.md +38 -0
  136. package/skills/proof-writer/SKILL.md +223 -0
  137. package/skills/qzcli/SKILL.md +324 -0
  138. package/skills/rebuttal/SKILL.md +376 -0
  139. package/skills/render-html/SKILL.md +316 -0
  140. package/skills/render-html/scripts/render_html.py +1006 -0
  141. package/skills/render-html/scripts/templates/academic.html +703 -0
  142. package/skills/render-html/scripts/templates/dashboard.html +333 -0
  143. package/skills/research-lit/SKILL.md +756 -0
  144. package/skills/research-pipeline/SKILL.md +384 -0
  145. package/skills/research-refine/SKILL.md +770 -0
  146. package/skills/research-refine-pipeline/SKILL.md +186 -0
  147. package/skills/research-review/SKILL.md +198 -0
  148. package/skills/research-wiki/SKILL.md +461 -0
  149. package/skills/resubmit-pipeline/SKILL.md +447 -0
  150. package/skills/result-to-claim/SKILL.md +311 -0
  151. package/skills/run-experiment/SKILL.md +313 -0
  152. package/skills/semantic-scholar/SKILL.md +236 -0
  153. package/skills/serverless-modal/SKILL.md +335 -0
  154. package/skills/shared-references/acceptance-gate.md +324 -0
  155. package/skills/shared-references/assurance-contract.md +248 -0
  156. package/skills/shared-references/capture-antipatterns.md +78 -0
  157. package/skills/shared-references/citation-discipline.md +583 -0
  158. package/skills/shared-references/compute-env-contract.md +163 -0
  159. package/skills/shared-references/effort-contract.md +183 -0
  160. package/skills/shared-references/evidence-precheck.md +65 -0
  161. package/skills/shared-references/experiment-integrity.md +49 -0
  162. package/skills/shared-references/external-cadence.md +326 -0
  163. package/skills/shared-references/fan-out-pattern.md +366 -0
  164. package/skills/shared-references/injection-hygiene.md +127 -0
  165. package/skills/shared-references/integration-contract.md +461 -0
  166. package/skills/shared-references/output-composition.md +93 -0
  167. package/skills/shared-references/output-language.md +45 -0
  168. package/skills/shared-references/output-manifest.md +49 -0
  169. package/skills/shared-references/output-versioning.md +111 -0
  170. package/skills/shared-references/patent-format-cn.md +199 -0
  171. package/skills/shared-references/patent-format-ep.md +173 -0
  172. package/skills/shared-references/patent-format-us.md +161 -0
  173. package/skills/shared-references/patent-writing-principles.md +197 -0
  174. package/skills/shared-references/prior-art-databases.md +141 -0
  175. package/skills/shared-references/resumable-runs.md +109 -0
  176. package/skills/shared-references/review-scope-limits.md +81 -0
  177. package/skills/shared-references/review-tracing.md +391 -0
  178. package/skills/shared-references/reviewer-independence.md +79 -0
  179. package/skills/shared-references/reviewer-routing.md +852 -0
  180. package/skills/shared-references/skill-governance.md +104 -0
  181. package/skills/shared-references/taste-calibration.md +85 -0
  182. package/skills/shared-references/venue-checklists.md +114 -0
  183. package/skills/shared-references/wiki-helper-resolution.md +134 -0
  184. package/skills/shared-references/writing-principles.md +525 -0
  185. package/skills/skills-codex/README.md +102 -0
  186. package/skills/skills-codex/README_CN.md +100 -0
  187. package/skills/skills-codex/ablation-planner/SKILL.md +126 -0
  188. package/skills/skills-codex/alphaxiv/SKILL.md +186 -0
  189. package/skills/skills-codex/analyze-results/SKILL.md +45 -0
  190. package/skills/skills-codex/arxiv/SKILL.md +210 -0
  191. package/skills/skills-codex/auto-paper-improvement-loop/SKILL.md +574 -0
  192. package/skills/skills-codex/auto-review-loop/SKILL.md +500 -0
  193. package/skills/skills-codex/auto-review-loop-llm/SKILL.md +247 -0
  194. package/skills/skills-codex/auto-review-loop-minimax/SKILL.md +290 -0
  195. package/skills/skills-codex/citation-audit/SKILL.md +504 -0
  196. package/skills/skills-codex/claims-drafting/SKILL.md +239 -0
  197. package/skills/skills-codex/comm-lit-review/SKILL.md +299 -0
  198. package/skills/skills-codex/comm-lit-review/references/domain-taxonomy.md +57 -0
  199. package/skills/skills-codex/comm-lit-review/references/output-template.md +37 -0
  200. package/skills/skills-codex/comm-lit-review/references/source-policy.md +99 -0
  201. package/skills/skills-codex/comm-lit-review/references/venue-tiering.md +112 -0
  202. package/skills/skills-codex/deepxiv/SKILL.md +142 -0
  203. package/skills/skills-codex/dse-loop/SKILL.md +285 -0
  204. package/skills/skills-codex/embodiment-description/SKILL.md +129 -0
  205. package/skills/skills-codex/exa-search/SKILL.md +192 -0
  206. package/skills/skills-codex/experiment-audit/SKILL.md +286 -0
  207. package/skills/skills-codex/experiment-bridge/SKILL.md +356 -0
  208. package/skills/skills-codex/experiment-plan/SKILL.md +249 -0
  209. package/skills/skills-codex/experiment-queue/SKILL.md +401 -0
  210. package/skills/skills-codex/feishu-notify/SKILL.md +155 -0
  211. package/skills/skills-codex/figure-description/SKILL.md +138 -0
  212. package/skills/skills-codex/figure-spec/SKILL.md +252 -0
  213. package/skills/skills-codex/formula-derivation/SKILL.md +280 -0
  214. package/skills/skills-codex/gemini-search/SKILL.md +205 -0
  215. package/skills/skills-codex/grant-proposal/SKILL.md +626 -0
  216. package/skills/skills-codex/idea-creator/SKILL.md +405 -0
  217. package/skills/skills-codex/idea-discovery/SKILL.md +475 -0
  218. package/skills/skills-codex/idea-discovery-robot/SKILL.md +362 -0
  219. package/skills/skills-codex/integrity-forensics/SKILL.md +106 -0
  220. package/skills/skills-codex/interview-cheatsheet/SKILL.md +245 -0
  221. package/skills/skills-codex/invention-structuring/SKILL.md +188 -0
  222. package/skills/skills-codex/jurisdiction-format/SKILL.md +192 -0
  223. package/skills/skills-codex/kill-argument/SKILL.md +403 -0
  224. package/skills/skills-codex/mermaid-diagram/SKILL.md +379 -0
  225. package/skills/skills-codex/meta-apply/SKILL.md +154 -0
  226. package/skills/skills-codex/meta-optimize/SKILL.md +348 -0
  227. package/skills/skills-codex/monitor-experiment/SKILL.md +98 -0
  228. package/skills/skills-codex/novelty-check/SKILL.md +89 -0
  229. package/skills/skills-codex/openalex/SKILL.md +228 -0
  230. package/skills/skills-codex/overleaf-sync/SKILL.md +220 -0
  231. package/skills/skills-codex/paper-claim-audit/SKILL.md +350 -0
  232. package/skills/skills-codex/paper-compile/SKILL.md +253 -0
  233. package/skills/skills-codex/paper-figure/SKILL.md +311 -0
  234. package/skills/skills-codex/paper-illustration/SKILL.md +690 -0
  235. package/skills/skills-codex/paper-illustration-image2/SKILL.md +383 -0
  236. package/skills/skills-codex/paper-illustration-image2/scripts/paper_illustration_image2.py +255 -0
  237. package/skills/skills-codex/paper-plan/SKILL.md +278 -0
  238. package/skills/skills-codex/paper-poster/SKILL.md +19 -0
  239. package/skills/skills-codex/paper-poster-html/SKILL.md +377 -0
  240. package/skills/skills-codex/paper-slides/SKILL.md +571 -0
  241. package/skills/skills-codex/paper-talk/SKILL.md +381 -0
  242. package/skills/skills-codex/paper-write/SKILL.md +411 -0
  243. package/skills/skills-codex/paper-write/templates/IEEEtran.bst +2409 -0
  244. package/skills/skills-codex/paper-write/templates/IEEEtran.cls +6347 -0
  245. package/skills/skills-codex/paper-write/templates/aaai2026.bst +1493 -0
  246. package/skills/skills-codex/paper-write/templates/aaai2026.sty +315 -0
  247. package/skills/skills-codex/paper-write/templates/aaai2026.tex +952 -0
  248. package/skills/skills-codex/paper-write/templates/acl.sty +312 -0
  249. package/skills/skills-codex/paper-write/templates/acl2026.tex +377 -0
  250. package/skills/skills-codex/paper-write/templates/acl_natbib.bst +1940 -0
  251. package/skills/skills-codex/paper-write/templates/acm.bst +3081 -0
  252. package/skills/skills-codex/paper-write/templates/acm_mm2026.tex +204 -0
  253. package/skills/skills-codex/paper-write/templates/acmart.cls +3520 -0
  254. package/skills/skills-codex/paper-write/templates/cvpr.bst +1448 -0
  255. package/skills/skills-codex/paper-write/templates/cvpr.sty +508 -0
  256. package/skills/skills-codex/paper-write/templates/cvpr2026.tex +63 -0
  257. package/skills/skills-codex/paper-write/templates/iclr2026.tex +84 -0
  258. package/skills/skills-codex/paper-write/templates/iclr2026_conference.bst +1440 -0
  259. package/skills/skills-codex/paper-write/templates/iclr2026_conference.sty +246 -0
  260. package/skills/skills-codex/paper-write/templates/icml2026.sty +767 -0
  261. package/skills/skills-codex/paper-write/templates/icml2026.tex +662 -0
  262. package/skills/skills-codex/paper-write/templates/ieee_conference.tex +89 -0
  263. package/skills/skills-codex/paper-write/templates/ieee_journal.tex +93 -0
  264. package/skills/skills-codex/paper-write/templates/math_commands.tex +48 -0
  265. package/skills/skills-codex/paper-write/templates/neurips2026.tex +493 -0
  266. package/skills/skills-codex/paper-write/templates/neurips_2026.sty +437 -0
  267. package/skills/skills-codex/paper-writing/SKILL.md +731 -0
  268. package/skills/skills-codex/patent-novelty-check/SKILL.md +153 -0
  269. package/skills/skills-codex/patent-pipeline/SKILL.md +344 -0
  270. package/skills/skills-codex/patent-review/SKILL.md +202 -0
  271. package/skills/skills-codex/pixel-art/SKILL.md +139 -0
  272. package/skills/skills-codex/prior-art-search/SKILL.md +146 -0
  273. package/skills/skills-codex/proof-checker/SKILL.md +554 -0
  274. package/skills/skills-codex/proof-orchestrator/SKILL.md +260 -0
  275. package/skills/skills-codex/proof-orchestrator/references/audit-output-contract.md +126 -0
  276. package/skills/skills-codex/proof-orchestrator/references/deepseek-routing.md +76 -0
  277. package/skills/skills-codex/proof-orchestrator/references/dispatch-prompts.md +227 -0
  278. package/skills/skills-codex/proof-orchestrator/references/notation-audit.md +135 -0
  279. package/skills/skills-codex/proof-orchestrator/references/proof-audit-rubric.md +70 -0
  280. package/skills/skills-codex/proof-orchestrator/references/stress-tests.md +38 -0
  281. package/skills/skills-codex/proof-writer/SKILL.md +222 -0
  282. package/skills/skills-codex/qzcli/SKILL.md +324 -0
  283. package/skills/skills-codex/rebuttal/SKILL.md +305 -0
  284. package/skills/skills-codex/render-html/SKILL.md +305 -0
  285. package/skills/skills-codex/render-html/scripts/__pycache__/render_html.cpython-314.pyc +0 -0
  286. package/skills/skills-codex/render-html/scripts/render_html.py +909 -0
  287. package/skills/skills-codex/render-html/scripts/templates/academic.html +342 -0
  288. package/skills/skills-codex/render-html/scripts/templates/dashboard.html +333 -0
  289. package/skills/skills-codex/research-lit/SKILL.md +464 -0
  290. package/skills/skills-codex/research-pipeline/SKILL.md +340 -0
  291. package/skills/skills-codex/research-refine/SKILL.md +721 -0
  292. package/skills/skills-codex/research-refine-pipeline/SKILL.md +186 -0
  293. package/skills/skills-codex/research-review/SKILL.md +135 -0
  294. package/skills/skills-codex/research-wiki/SKILL.md +421 -0
  295. package/skills/skills-codex/resubmit-pipeline/SKILL.md +444 -0
  296. package/skills/skills-codex/result-to-claim/SKILL.md +246 -0
  297. package/skills/skills-codex/run-experiment/SKILL.md +236 -0
  298. package/skills/skills-codex/semantic-scholar/SKILL.md +219 -0
  299. package/skills/skills-codex/serverless-modal/SKILL.md +335 -0
  300. package/skills/skills-codex/shared-references/acceptance-gate.md +336 -0
  301. package/skills/skills-codex/shared-references/assurance-contract.md +139 -0
  302. package/skills/skills-codex/shared-references/capture-antipatterns.md +84 -0
  303. package/skills/skills-codex/shared-references/citation-discipline.md +452 -0
  304. package/skills/skills-codex/shared-references/compute-env-contract.md +163 -0
  305. package/skills/skills-codex/shared-references/effort-contract.md +143 -0
  306. package/skills/skills-codex/shared-references/evidence-precheck.md +73 -0
  307. package/skills/skills-codex/shared-references/experiment-integrity.md +49 -0
  308. package/skills/skills-codex/shared-references/external-cadence.md +334 -0
  309. package/skills/skills-codex/shared-references/fan-out-pattern.md +375 -0
  310. package/skills/skills-codex/shared-references/injection-hygiene.md +132 -0
  311. package/skills/skills-codex/shared-references/integration-contract.md +372 -0
  312. package/skills/skills-codex/shared-references/output-composition.md +98 -0
  313. package/skills/skills-codex/shared-references/output-language.md +45 -0
  314. package/skills/skills-codex/shared-references/output-manifest.md +40 -0
  315. package/skills/skills-codex/shared-references/output-versioning.md +111 -0
  316. package/skills/skills-codex/shared-references/patent-format-cn.md +199 -0
  317. package/skills/skills-codex/shared-references/patent-format-ep.md +173 -0
  318. package/skills/skills-codex/shared-references/patent-format-us.md +161 -0
  319. package/skills/skills-codex/shared-references/patent-writing-principles.md +197 -0
  320. package/skills/skills-codex/shared-references/prior-art-databases.md +141 -0
  321. package/skills/skills-codex/shared-references/resumable-runs.md +125 -0
  322. package/skills/skills-codex/shared-references/review-scope-limits.md +81 -0
  323. package/skills/skills-codex/shared-references/review-tracing.md +144 -0
  324. package/skills/skills-codex/shared-references/reviewer-independence.md +66 -0
  325. package/skills/skills-codex/shared-references/reviewer-routing.md +128 -0
  326. package/skills/skills-codex/shared-references/skill-governance.md +119 -0
  327. package/skills/skills-codex/shared-references/taste-calibration.md +90 -0
  328. package/skills/skills-codex/shared-references/venue-checklists.md +73 -0
  329. package/skills/skills-codex/shared-references/wiki-helper-resolution.md +69 -0
  330. package/skills/skills-codex/shared-references/writing-principles.md +525 -0
  331. package/skills/skills-codex/slides-polish/SKILL.md +563 -0
  332. package/skills/skills-codex/specification-writing/SKILL.md +211 -0
  333. package/skills/skills-codex/system-profile/SKILL.md +103 -0
  334. package/skills/skills-codex/training-check/SKILL.md +83 -0
  335. package/skills/skills-codex/vast-gpu/SKILL.md +394 -0
  336. package/skills/skills-codex/web-debug-search/SKILL.md +334 -0
  337. package/skills/skills-codex/wiki-enrich/SKILL.md +255 -0
  338. package/skills/skills-codex/writing-systems-papers/SKILL.md +184 -0
  339. package/skills/skills-codex-claude-review/README.md +79 -0
  340. package/skills/skills-codex-claude-review/README_CN.md +78 -0
  341. package/skills/skills-codex-claude-review/auto-paper-improvement-loop/SKILL.md +581 -0
  342. package/skills/skills-codex-claude-review/auto-review-loop/SKILL.md +510 -0
  343. package/skills/skills-codex-claude-review/novelty-check/SKILL.md +102 -0
  344. package/skills/skills-codex-claude-review/paper-figure/SKILL.md +319 -0
  345. package/skills/skills-codex-claude-review/paper-plan/SKILL.md +287 -0
  346. package/skills/skills-codex-claude-review/paper-write/SKILL.md +420 -0
  347. package/skills/skills-codex-claude-review/research-refine/SKILL.md +732 -0
  348. package/skills/skills-codex-claude-review/research-review/SKILL.md +149 -0
  349. package/skills/skills-codex-gemini-review/README.md +176 -0
  350. package/skills/skills-codex-gemini-review/README_CN.md +175 -0
  351. package/skills/skills-codex-gemini-review/auto-paper-improvement-loop/SKILL.md +331 -0
  352. package/skills/skills-codex-gemini-review/auto-review-loop/SKILL.md +304 -0
  353. package/skills/skills-codex-gemini-review/grant-proposal/SKILL.md +630 -0
  354. package/skills/skills-codex-gemini-review/idea-creator/SKILL.md +263 -0
  355. package/skills/skills-codex-gemini-review/idea-discovery/SKILL.md +275 -0
  356. package/skills/skills-codex-gemini-review/idea-discovery-robot/SKILL.md +365 -0
  357. package/skills/skills-codex-gemini-review/novelty-check/SKILL.md +92 -0
  358. package/skills/skills-codex-gemini-review/paper-figure/SKILL.md +289 -0
  359. package/skills/skills-codex-gemini-review/paper-plan/SKILL.md +265 -0
  360. package/skills/skills-codex-gemini-review/paper-poster-html/SKILL.md +102 -0
  361. package/skills/skills-codex-gemini-review/paper-slides/SKILL.md +582 -0
  362. package/skills/skills-codex-gemini-review/paper-write/SKILL.md +346 -0
  363. package/skills/skills-codex-gemini-review/paper-writing/SKILL.md +312 -0
  364. package/skills/skills-codex-gemini-review/research-refine/SKILL.md +674 -0
  365. package/skills/skills-codex-gemini-review/research-review/SKILL.md +112 -0
  366. package/skills/slides-polish/SKILL.md +565 -0
  367. package/skills/specification-writing/SKILL.md +211 -0
  368. package/skills/system-profile/SKILL.md +103 -0
  369. package/skills/training-check/SKILL.md +132 -0
  370. package/skills/vast-gpu/SKILL.md +394 -0
  371. package/skills/web-debug-search/SKILL.md +334 -0
  372. package/skills/wiki-enrich/SKILL.md +257 -0
  373. package/skills/writing-systems-papers/SKILL.md +184 -0
  374. package/templates/CLAUDE_MD_TEMPLATE.md +29 -0
  375. package/templates/EXPERIMENT_LOG_TEMPLATE.md +47 -0
  376. package/templates/EXPERIMENT_PLAN_TEMPLATE.md +51 -0
  377. package/templates/EXPERIMENT_PLAN_TEMPLATE_CN.md +53 -0
  378. package/templates/FINDINGS_TEMPLATE.md +52 -0
  379. package/templates/IDEA_CANDIDATES_TEMPLATE.md +47 -0
  380. package/templates/IDEA_CANDIDATES_TEMPLATE_CN.md +47 -0
  381. package/templates/INVENTION_BRIEF_TEMPLATE.md +87 -0
  382. package/templates/MANIFEST_TEMPLATE.md +7 -0
  383. package/templates/NARRATIVE_REPORT_TEMPLATE.md +49 -0
  384. package/templates/PAPER_PLAN_TEMPLATE.md +47 -0
  385. package/templates/PATENT_CLAIMS_TEMPLATE.md +78 -0
  386. package/templates/PATENT_SPECIFICATION_TEMPLATE.md +68 -0
  387. package/templates/README.md +57 -0
  388. package/templates/RESEARCH_BRIEF_TEMPLATE.md +35 -0
  389. package/templates/RESEARCH_BRIEF_TEMPLATE_CN.md +41 -0
  390. package/templates/RESEARCH_CONTRACT_TEMPLATE.md +60 -0
  391. package/templates/claude-hooks/corpus_write_guard.json +16 -0
  392. package/templates/claude-hooks/corpus_write_guard.py +85 -0
  393. package/templates/claude-hooks/meta_logging.json +74 -0
  394. package/templates/gitignore-trace.txt +3 -0
  395. package/tools/__pycache__/check_skills_inventory.cpython-314.pyc +0 -0
  396. package/tools/arxiv_fetch.py +311 -0
  397. package/tools/capture_filter.py +126 -0
  398. package/tools/check_skills_inventory.py +273 -0
  399. package/tools/convert_skills_to_llm_chat.py +282 -0
  400. package/tools/copilot_native_evidence.py +818 -0
  401. package/tools/deepxiv_fetch.py +213 -0
  402. package/tools/evidence_check.py +212 -0
  403. package/tools/exa_search.py +425 -0
  404. package/tools/experiment_queue/README.md +118 -0
  405. package/tools/experiment_queue/build_manifest.py +44 -0
  406. package/tools/experiment_queue/queue_manager.py +44 -0
  407. package/tools/extract_paper_style.py +560 -0
  408. package/tools/figure_renderer.py +69 -0
  409. package/tools/forensics_gate.py +669 -0
  410. package/tools/generate_codex_claude_review_overrides.py +299 -0
  411. package/tools/idea_discovery_gate.py +256 -0
  412. package/tools/install_aris.ps1 +1372 -0
  413. package/tools/install_aris.sh +1370 -0
  414. package/tools/install_aris_codex.sh +1023 -0
  415. package/tools/install_aris_copilot.sh +1052 -0
  416. package/tools/iteration_log.py +143 -0
  417. package/tools/lint_skills_helpers.sh +84 -0
  418. package/tools/meta_opt/check_ready.sh +80 -0
  419. package/tools/meta_opt/log_event.sh +91 -0
  420. package/tools/meta_opt/trigger_eval.py +280 -0
  421. package/tools/meta_opt/trigger_evals.sample.json +28 -0
  422. package/tools/openalex_fetch.py +326 -0
  423. package/tools/overleaf_audit.sh +104 -0
  424. package/tools/overleaf_setup.sh +150 -0
  425. package/tools/paper_illustration_image2.py +62 -0
  426. package/tools/provenance.py +294 -0
  427. package/tools/research_wiki.py +1720 -0
  428. package/tools/review_gate.py +502 -0
  429. package/tools/run_state.py +399 -0
  430. package/tools/save_trace.sh +477 -0
  431. package/tools/semantic_scholar_fetch.py +438 -0
  432. package/tools/skill-groups.tsv +116 -0
  433. package/tools/skill_picker.py +238 -0
  434. package/tools/smart_update.ps1 +521 -0
  435. package/tools/smart_update.sh +591 -0
  436. package/tools/smart_update_codex.sh +419 -0
  437. package/tools/smart_update_copilot.sh +605 -0
  438. package/tools/threat_scan.py +222 -0
  439. package/tools/verify_paper_audits.sh +487 -0
  440. package/tools/verify_papers.py +613 -0
  441. package/tools/verify_wiki_coverage.sh +176 -0
  442. package/tools/watchdog.py +485 -0
@@ -0,0 +1,1032 @@
1
+ <!DOCTYPE html>
2
+ <!--
3
+ ============================================================
4
+ TEMPLATE: landscape_4col (ARIS fork)
5
+ CANVAS: 60in × 36in landscape (ICML / NeurIPS / generic landscape)
6
+ LAYOUT: header → optional banner → 4 body columns → optional takeaways → footer
7
+ USE WHEN: standard ML conference poster with 3-5 content cards per column,
8
+ mix of figures + equations + small tables.
9
+ HOW TO USE:
10
+ 1. Copy this file to your working directory as `poster.html`.
11
+ 2. Edit the DESIGN TOKENS in `:root` to your lab/venue colors.
12
+ 3. Replace TODO content placeholders (search for "TODO").
13
+ 4. Run `python tools/poster_check.py measure poster.html` to align columns.
14
+ 5. Run `python tools/render_preview.py poster.html` to produce the PDF.
15
+ NOTE: as shipped, this scaffold passes `preflight` (structure) but is
16
+ EXPECTED to FAIL `measure`/`polish` -- figures are commented out and copy
17
+ is TODO stubs, so columns only fill the top of the canvas. Those two gates
18
+ judge a FILLED poster; balance them once you've added real content. See
19
+ templates/README.md ("Scaffolds, not finished posters").
20
+ MEASURE ROLES: every layout-critical element carries `data-measure-role`.
21
+ Generic measurement scripts depend on these — do not remove.
22
+
23
+ CANVAS RETARGETING: to print at another size, change the canvas in exactly
24
+ TWO places that must stay in sync -- the `@page { size: ... }` rule and the
25
+ `.poster { width/height }` (also the `@media print .poster { width/height }`).
26
+ Example: ICLR 2026 main conference uses 185cm 90cm landscape (official print
27
+ service spec) -- set @page to `185cm 90cm`, width to `1850 * var(--u)` and
28
+ height to `900 * var(--u)` (and the print-override .poster to `185cm`/`90cm`).
29
+
30
+ Adapted from posterly (MIT, © 2026 Ruishuo Chen) — see LICENSES/ & NOTICE.md;
31
+ ARIS modifications: flat de-gradient, --fs token scale, zero-inline-style
32
+ utilities, data-source/data-color-exempt contracts.
33
+ ============================================================
34
+ -->
35
+ <html lang="en">
36
+ <head>
37
+ <meta charset="UTF-8">
38
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
39
+ <title>POSTER TITLE — Venue Year</title>
40
+
41
+ <!-- MathJax v3 for inline equations. CDN by default; to go offline,
42
+ download a MathJax v3 release into ./mathjax/ and change the <script>
43
+ `src` below to "mathjax/es5/tex-svg.js". -->
44
+ <script>
45
+ window.MathJax = {
46
+ tex: {
47
+ inlineMath: [['$', '$'], ['\\(', '\\)']],
48
+ displayMath: [['$$', '$$'], ['\\[', '\\]']],
49
+ packages: {'[+]': ['ams']}
50
+ },
51
+ svg: { fontCache: 'global' }
52
+ };
53
+ </script>
54
+ <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
55
+
56
+ <style>
57
+ /* =========================================================
58
+ CANVAS — 60" × 36" landscape
59
+ ========================================================= */
60
+ @page { size: 60in 36in; margin: 0; }
61
+
62
+ :root {
63
+ /* ===== DESIGN TOKENS ===== */
64
+
65
+ /* Primary accent (header underline, card-highlight bar, section nums, .keyword) */
66
+ --accent: #2D5F8B;
67
+ --accent-deep: #1F4566;
68
+ --accent-light: #E8F1F8;
69
+ --accent-soft: #D7E5F0;
70
+
71
+ /* Secondary accent for "ours / best" emphasis (table .ours row, "★" callouts) */
72
+ --gold: #C9A24A;
73
+ --gold-soft: #FFF7E0;
74
+
75
+ /* Text */
76
+ --text-primary: #1A1A1A;
77
+ --text-secondary: #555555;
78
+ --text-muted: #888888;
79
+
80
+ /* Backgrounds */
81
+ --bg-page: #F6F2F0;
82
+ --bg-card: #FFFFFF;
83
+ --bg-card-tint: #FAFAFB;
84
+ --bg-emphasis: var(--accent-light);
85
+
86
+ /* Borders */
87
+ --border-soft: #D8D8D8;
88
+ --border-strong: var(--accent);
89
+
90
+ /* Screen-only dark mat behind the poster (the off-canvas viewport
91
+ background). Print resets html/body to white, so this never reaches
92
+ paper; kept as a token so no color literal lives outside this block. */
93
+ --bg-viewport: #2B2B2B;
94
+
95
+ /* Base unit. Print: 1mm; screen preview: 1.6px (~3.78px = 1mm at 96dpi). */
96
+ --u: 1.6px;
97
+
98
+ /* Font-size scale (9 archetypes). Every `font-size` in this template
99
+ references one of these. `calc(var(--fs-N) * k)` is permitted ONLY for
100
+ a COMPONENTS.md-defined variant (e.g. `.eqn--large`). */
101
+ --fs-1: calc(9 * var(--u)); /* micro label */
102
+ --fs-2: calc(10 * var(--u)); /* small caption */
103
+ --fs-3: calc(11 * var(--u)); /* caption / table */
104
+ --fs-4: calc(12 * var(--u)); /* body text */
105
+ --fs-5: calc(13 * var(--u)); /* equation / emphasis */
106
+ --fs-6: calc(15 * var(--u)); /* subtitle */
107
+ --fs-7: calc(16 * var(--u)); /* section title */
108
+ --fs-8: calc(22 * var(--u)); /* banner number */
109
+ --fs-9: calc(32 * var(--u)); /* main title */
110
+
111
+ /* Fonts. Override at :root if your venue mandates a specific family. */
112
+ --font-serif: "Charter", "Source Serif Pro", "Georgia", serif;
113
+ --font-sans: "Inter", "Helvetica Neue", sans-serif;
114
+
115
+
116
+ /* Shadows & watermark ink — tokenized so rules 1/3 stay literal-free
117
+ (the faint radial page tint is the ONE allowed literal outside this
118
+ block; rule 5 validates it). */
119
+ --shadow-screen: 0 0 60px rgba(0, 0, 0, 0.5);
120
+ --shadow-card: 0 calc(2 * var(--u)) calc(6 * var(--u)) rgba(45, 95, 139, 0.05);
121
+ --ornament-ink: rgba(45, 95, 139, 0.06);
122
+ /* ===== END DESIGN TOKENS ===== */
123
+ }
124
+
125
+ /* =========================================================
126
+ RESET + BASE
127
+ ========================================================= */
128
+ * { box-sizing: border-box; margin: 0; padding: 0; }
129
+
130
+ html, body {
131
+ background: var(--bg-viewport);
132
+ font-family: var(--font-serif);
133
+ color: var(--text-primary);
134
+ -webkit-font-smoothing: antialiased;
135
+ }
136
+
137
+ /* =========================================================
138
+ UTILITY CLASSES — replace inline `style=` in the body markup.
139
+ The template (and any finished poster) must carry ZERO `style=`
140
+ attributes. Use these classes instead. Two documented exceptions
141
+ exist ONLY as examples and may appear in comments, never live:
142
+ - a logo/seal SVG flagged data-color-exempt="logo"
143
+ - a paper figure `<img ... data-source="paper" style="width: NN%">`
144
+ (AR width tweak; prefer the .w-NN classes below where possible)
145
+ ========================================================= */
146
+
147
+ /* Poster container — exact print dimensions; data-measure-role="poster" so poster_check.py
148
+ can verify the canvas size. */
149
+ .poster {
150
+ width: calc(1524 * var(--u));
151
+ height: calc(914 * var(--u));
152
+ background: var(--bg-page);
153
+ /* Page tint kept (radial only, all color stops alpha <= 0.06 per the
154
+ de-gradient policy: linear-gradient is banned, this low-alpha radial
155
+ wash is the single allowed exception). */
156
+ background-image:
157
+ radial-gradient(ellipse at top left, rgba(45, 95, 139, 0.06), transparent 40%),
158
+ radial-gradient(ellipse at bottom right, rgba(201, 162, 74, 0.05), transparent 50%);
159
+ margin: 20px auto;
160
+ padding: calc(10 * var(--u)) calc(14 * var(--u));
161
+ display: grid;
162
+ grid-template-rows: auto auto 1fr auto auto; /* header | banner | body | takeaways | footer */
163
+ gap: calc(6 * var(--u));
164
+ box-shadow: var(--shadow-screen);
165
+ position: relative;
166
+ overflow: hidden;
167
+ }
168
+
169
+ /* Decorative top bar — flat solid accent (de-gradient). */
170
+ .poster::before {
171
+ content: "";
172
+ position: absolute; top: 0; left: 0; right: 0;
173
+ height: calc(8 * var(--u));
174
+ background: var(--accent);
175
+ }
176
+
177
+ /* =========================================================
178
+ HEADER
179
+ ========================================================= */
180
+ .header {
181
+ display: grid;
182
+ grid-template-columns: auto 1fr auto;
183
+ align-items: center;
184
+ gap: calc(16 * var(--u));
185
+ padding: calc(2 * var(--u)) calc(4 * var(--u)) calc(5 * var(--u));
186
+ border-bottom: calc(2 * var(--u)) solid var(--accent);
187
+ }
188
+
189
+ .venue-badge {
190
+ display: flex; flex-direction: column;
191
+ align-items: center; justify-content: center;
192
+ min-width: calc(95 * var(--u));
193
+ text-align: center;
194
+ border-right: calc(1 * var(--u)) solid var(--border-soft);
195
+ padding-right: calc(12 * var(--u));
196
+ }
197
+ .venue-badge .vb-venue {
198
+ font-family: var(--font-sans);
199
+ font-weight: 800;
200
+ font-size: var(--fs-9);
201
+ color: var(--accent-deep);
202
+ line-height: 1;
203
+ letter-spacing: -0.5px;
204
+ }
205
+ .venue-badge .vb-year {
206
+ font-family: var(--font-sans);
207
+ font-size: var(--fs-5);
208
+ color: var(--text-secondary);
209
+ margin-top: calc(3 * var(--u));
210
+ letter-spacing: 1.2px;
211
+ }
212
+ .venue-badge .vb-tag {
213
+ font-family: var(--font-sans);
214
+ font-size: var(--fs-2);
215
+ color: var(--accent);
216
+ font-weight: 700;
217
+ margin-top: calc(2 * var(--u));
218
+ letter-spacing: 1.2px;
219
+ }
220
+
221
+ .title-block { text-align: center; min-width: 0; }
222
+ .title {
223
+ font-family: var(--font-sans);
224
+ font-weight: 800;
225
+ font-size: var(--fs-9);
226
+ line-height: 1.05;
227
+ color: var(--accent-deep);
228
+ letter-spacing: -0.5px;
229
+ }
230
+ .title .accent { color: var(--gold); }
231
+ .subtitle {
232
+ font-family: var(--font-sans);
233
+ font-weight: 500;
234
+ font-size: var(--fs-6);
235
+ color: var(--text-secondary);
236
+ margin-top: calc(2 * var(--u));
237
+ font-style: italic;
238
+ }
239
+ .authors-line {
240
+ font-family: var(--font-sans);
241
+ font-size: var(--fs-4);
242
+ color: var(--accent);
243
+ font-weight: 600;
244
+ margin-top: calc(3 * var(--u));
245
+ }
246
+ .authors-line .author { margin: 0 calc(4 * var(--u)); }
247
+ .authors-line sup { font-size: 0.7em; color: var(--accent); }
248
+ .authors-line .aff {
249
+ color: var(--text-secondary);
250
+ font-weight: 400;
251
+ display: block;
252
+ margin-top: calc(2 * var(--u));
253
+ font-size: var(--fs-4);
254
+ }
255
+
256
+ .right-block {
257
+ display: flex; align-items: center;
258
+ gap: calc(10 * var(--u));
259
+ }
260
+ .qr-block { display: flex; flex-direction: column; align-items: center; gap: calc(2 * var(--u)); }
261
+ .qr-block img {
262
+ width: calc(85 * var(--u));
263
+ height: calc(85 * var(--u));
264
+ border: calc(2 * var(--u)) solid var(--accent);
265
+ border-radius: calc(4 * var(--u));
266
+ background: white;
267
+ padding: calc(2 * var(--u));
268
+ }
269
+ .qr-label {
270
+ font-family: var(--font-sans);
271
+ font-size: var(--fs-3);
272
+ color: var(--accent);
273
+ font-weight: 600;
274
+ }
275
+ /* Optional logo slot — drop your lab logo here. Keep its rendered height
276
+ close to the QR (~85u) so the header doesn't grow disproportionately.
277
+ A raster logo needs no exemption. An inline-SVG logo with brand colors
278
+ must carry data-color-exempt="logo" so style_check skips its fills, e.g.:
279
+ <svg data-color-exempt="logo" ...> ... </svg> */
280
+ .logo-slot img { height: calc(85 * var(--u)); width: auto; display: block; }
281
+ /* logo-row: institution logos in the header right block (REAL logos the
282
+ user provided — never fabricate a seal). Each img MUST carry
283
+ data-color-exempt="logo"; height pairs with the QR. */
284
+ .logo-row { display: flex; align-items: center; gap: calc(5 * var(--u)); }
285
+ .logo-row img { height: calc(68 * var(--u)); width: auto; display: block; }
286
+ /* --boxed variant: each logo in a labeled tile (logo + institution name) —
287
+ more presence at poster distance; white tile + soft border, no new hues. */
288
+ .logo-row .lr-item {
289
+ display: flex; flex-direction: column; align-items: center;
290
+ gap: calc(2 * var(--u));
291
+ background: var(--bg-card);
292
+ border: 1px solid var(--border-soft);
293
+ border-radius: calc(3 * var(--u));
294
+ padding: calc(4 * var(--u)) calc(6 * var(--u));
295
+ }
296
+ .logo-row .lr-item img { height: calc(58 * var(--u)); }
297
+ .logo-row .lr-label {
298
+ font-family: var(--font-sans); font-weight: 600; font-size: var(--fs-1);
299
+ color: var(--text-secondary); text-align: center; line-height: 1.15;
300
+ }
301
+ /* venue badge may carry the official venue logo above its text line */
302
+ .venue-badge img { height: calc(62 * var(--u)); width: auto; display: block; margin: 0 auto calc(2 * var(--u)); }
303
+ .venue-badge .vb-title { font-family: var(--font-sans); font-weight: 800; font-size: var(--fs-5); color: var(--accent-deep); letter-spacing: 0.5px; }
304
+
305
+ /* =========================================================
306
+ OPTIONAL FRAMEWORK BANNER (set display:none if you don't need it)
307
+ ========================================================= */
308
+ .framework-banner {
309
+ display: flex;
310
+ align-items: center;
311
+ gap: calc(16 * var(--u));
312
+ /* Flat solid emphasis fill (de-gradient). */
313
+ background: var(--bg-emphasis);
314
+ border: calc(1 * var(--u)) solid var(--border-soft);
315
+ border-left: calc(6 * var(--u)) solid var(--accent);
316
+ border-radius: calc(6 * var(--u));
317
+ padding: calc(6 * var(--u)) calc(14 * var(--u));
318
+ }
319
+ .framework-banner img { height: calc(120 * var(--u)); width: auto; display: block; }
320
+ .framework-banner .banner-stats {
321
+ flex: 1;
322
+ display: grid;
323
+ grid-template-columns: 1fr 1fr;
324
+ gap: calc(6 * var(--u));
325
+ }
326
+ .framework-banner .bs-item {
327
+ background: white;
328
+ border: calc(1 * var(--u)) solid var(--border-soft);
329
+ border-left: calc(3 * var(--u)) solid var(--accent);
330
+ border-radius: calc(3 * var(--u));
331
+ padding: calc(2 * var(--u)) calc(8 * var(--u));
332
+ text-align: center;
333
+ }
334
+ .framework-banner .bs-num {
335
+ font-family: var(--font-sans);
336
+ font-weight: 800;
337
+ font-size: var(--fs-8);
338
+ color: var(--accent);
339
+ line-height: 1;
340
+ }
341
+ .framework-banner .bs-label {
342
+ font-family: var(--font-sans);
343
+ font-size: var(--fs-3);
344
+ color: var(--text-secondary);
345
+ margin-top: calc(2 * var(--u));
346
+ line-height: 1.2;
347
+ }
348
+ .framework-banner .fb-text {
349
+ flex: 1.6;
350
+ font-family: var(--font-serif);
351
+ font-size: var(--fs-6);
352
+ line-height: 1.5;
353
+ text-wrap: balance;
354
+ text-align: center;
355
+ }
356
+ .framework-banner .fb-text strong { color: var(--accent-deep); }
357
+ .framework-banner .fb-label {
358
+ display: inline-block;
359
+ background: var(--accent);
360
+ color: white;
361
+ font-family: var(--font-sans);
362
+ font-size: var(--fs-5);
363
+ font-weight: 700;
364
+ padding: calc(2 * var(--u)) calc(8 * var(--u));
365
+ border-radius: calc(4 * var(--u));
366
+ text-transform: uppercase;
367
+ letter-spacing: 1px;
368
+ vertical-align: middle;
369
+ line-height: 1;
370
+ position: relative;
371
+ top: calc(-1 * var(--u));
372
+ }
373
+
374
+ /* =========================================================
375
+ BODY: 4 columns, variable-width hint via fr values
376
+ ========================================================= */
377
+ .body-grid {
378
+ display: grid;
379
+ grid-template-columns: 1fr 1.05fr 1.05fr 1fr;
380
+ gap: calc(10 * var(--u));
381
+ /* No overflow:hidden here — it would clip card shadows (pitfall #6).
382
+ .poster already clips at the page boundary; min-height:0 is the
383
+ grid-blowout guard. */
384
+ min-height: 0;
385
+ }
386
+ .column {
387
+ display: flex; flex-direction: column;
388
+ gap: calc(6 * var(--u));
389
+ min-height: 0;
390
+ height: 100%;
391
+ padding-bottom: calc(4 * var(--u)); /* shadow breathing room above takeaways */
392
+ }
393
+
394
+ /* =========================================================
395
+ CARDS
396
+ ========================================================= */
397
+ .card {
398
+ background: var(--bg-card);
399
+ border-radius: calc(5 * var(--u));
400
+ padding: calc(4 * var(--u)) calc(9 * var(--u));
401
+ border: calc(1 * var(--u)) solid var(--border-soft);
402
+ box-shadow: var(--shadow-card);
403
+ position: relative;
404
+ }
405
+ .card.tinted { background: var(--bg-card-tint); }
406
+ .card.highlight {
407
+ border-left: calc(6 * var(--u)) solid var(--accent);
408
+ /* Flat emphasis tint (de-gradient). */
409
+ background: var(--bg-emphasis);
410
+ }
411
+
412
+ .section-title {
413
+ font-family: var(--font-sans);
414
+ font-weight: 700;
415
+ font-size: var(--fs-7);
416
+ color: var(--accent-deep);
417
+ margin-bottom: calc(3 * var(--u));
418
+ display: flex; align-items: center;
419
+ gap: calc(5 * var(--u));
420
+ flex-wrap: wrap;
421
+ }
422
+ .section-title .num {
423
+ display: inline-flex; align-items: center; justify-content: center;
424
+ width: calc(22 * var(--u)); height: calc(22 * var(--u));
425
+ background: var(--accent); color: white;
426
+ border-radius: 50%;
427
+ font-size: var(--fs-5); font-weight: 700;
428
+ flex-shrink: 0;
429
+ }
430
+ /* Inline "★ KEY" / "★ Headline" marker beside a section title. */
431
+ .section-title .key-mark { color: var(--gold); font-size: var(--fs-3); }
432
+
433
+ .body-text, .card p, .card li {
434
+ font-family: var(--font-serif);
435
+ font-size: var(--fs-4);
436
+ line-height: 1.3;
437
+ color: var(--text-primary);
438
+ }
439
+ .card ul, .card ol { padding-left: calc(18 * var(--u)); }
440
+ .card li { margin-bottom: calc(2 * var(--u)); }
441
+
442
+ .keyword { color: var(--accent); font-weight: 700; }
443
+ .keyword-gold { color: var(--gold); font-weight: 700; }
444
+ .highlight-text {
445
+ background: var(--bg-emphasis);
446
+ padding: 0 calc(3 * var(--u));
447
+ border-radius: calc(2 * var(--u));
448
+ }
449
+
450
+ /* Equation block */
451
+ .eqn {
452
+ background: var(--bg-emphasis);
453
+ border-left: calc(3 * var(--u)) solid var(--accent);
454
+ padding: calc(4 * var(--u)) calc(10 * var(--u));
455
+ margin: calc(4 * var(--u)) 0;
456
+ font-size: var(--fs-5);
457
+ overflow-x: hidden;
458
+ }
459
+ /* Predefined variant for a larger / more legible display equation.
460
+ `calc(var(--fs-N) * k)` is allowed here because this is a
461
+ COMPONENTS.md-registered variant (DESIGN_FINAL §A / §10 f). */
462
+ .eqn--large { font-size: calc(var(--fs-5) * 1.25); }
463
+ .eqn .label {
464
+ display: block;
465
+ font-family: var(--font-sans);
466
+ font-size: var(--fs-2);
467
+ color: var(--accent);
468
+ font-weight: 600;
469
+ margin-bottom: calc(2 * var(--u));
470
+ text-transform: uppercase;
471
+ letter-spacing: 1px;
472
+ }
473
+
474
+ /* Callout: solid accent for primary, solid gold for theorems / "★ key" strips */
475
+ .callout {
476
+ background: var(--accent);
477
+ color: white;
478
+ padding: calc(5 * var(--u)) calc(10 * var(--u));
479
+ border-radius: calc(4 * var(--u));
480
+ font-size: var(--fs-4);
481
+ margin: calc(4 * var(--u)) 0;
482
+ }
483
+ .callout strong { color: var(--gold); }
484
+ /* Flat solid gold (de-gradient). */
485
+ .callout.gold {
486
+ background: var(--gold);
487
+ color: var(--accent-deep);
488
+ }
489
+ .callout.gold strong { color: var(--accent-deep); }
490
+
491
+ /* Figure container */
492
+ .figure { margin: calc(4 * var(--u)) 0; text-align: center; }
493
+ .figure img:not([class*="w-"]) { width: 100%; }
494
+ .figure img {
495
+ border-radius: calc(4 * var(--u));
496
+ border: calc(1 * var(--u)) solid var(--border-soft);
497
+ background: white;
498
+ }
499
+ .figure .caption {
500
+ font-family: var(--font-sans);
501
+ font-size: var(--fs-3);
502
+ color: var(--text-secondary);
503
+ margin-top: calc(3 * var(--u));
504
+ line-height: 1.3;
505
+ text-align: left;
506
+ }
507
+ .figure .caption strong { color: var(--accent-deep); }
508
+
509
+ /* Result table with .ours row highlighted gold */
510
+ .result-table {
511
+ width: 100%;
512
+ border-collapse: collapse;
513
+ font-family: var(--font-sans);
514
+ font-size: var(--fs-3);
515
+ margin-top: calc(3 * var(--u));
516
+ }
517
+ .result-table th, .result-table td {
518
+ padding: calc(2 * var(--u)) calc(4 * var(--u));
519
+ text-align: center;
520
+ border-bottom: calc(1 * var(--u)) solid var(--border-soft);
521
+ }
522
+ .result-table thead th {
523
+ background: var(--accent); color: white;
524
+ font-weight: 600; font-size: var(--fs-2);
525
+ }
526
+ .result-table tbody tr.group-row td {
527
+ background: var(--bg-emphasis); font-weight: 700;
528
+ text-align: left;
529
+ color: var(--accent-deep);
530
+ padding-left: calc(8 * var(--u));
531
+ border-bottom: calc(2 * var(--u)) solid var(--accent);
532
+ }
533
+ .result-table tbody tr.ours td { background: var(--gold-soft); font-weight: 700; }
534
+ .result-table tbody tr.ours td:first-child { color: var(--accent-deep); }
535
+ /* Greyed reference row (was inline color:#888). */
536
+ .result-table tbody tr.reference td { color: var(--text-muted); }
537
+ .result-table .method { text-align: left; padding-left: calc(8 * var(--u)); }
538
+ .result-table .best { color: var(--accent); font-weight: 700; }
539
+
540
+ /* 3-up stat box */
541
+ .keybox {
542
+ display: grid;
543
+ grid-template-columns: repeat(3, 1fr);
544
+ gap: calc(4 * var(--u));
545
+ margin: calc(4 * var(--u)) 0 0;
546
+ }
547
+ .keybox .kb-item {
548
+ background: var(--bg-emphasis);
549
+ border-top: calc(2 * var(--u)) solid var(--accent);
550
+ padding: calc(3 * var(--u));
551
+ text-align: center;
552
+ border-radius: 0 0 calc(3 * var(--u)) calc(3 * var(--u));
553
+ }
554
+ .kb-item .kb-num {
555
+ font-family: var(--font-sans);
556
+ font-weight: 800;
557
+ font-size: var(--fs-6);
558
+ color: var(--accent);
559
+ line-height: 1;
560
+ }
561
+ .kb-item .kb-label {
562
+ font-family: var(--font-sans);
563
+ font-size: var(--fs-1);
564
+ color: var(--text-secondary);
565
+ margin-top: calc(2 * var(--u));
566
+ line-height: 1.1;
567
+ }
568
+
569
+ /* Optional takeaways strip (delete the section if not needed) */
570
+ .takeaways-strip {
571
+ display: grid;
572
+ grid-template-columns: auto repeat(4, 1fr);
573
+ align-items: center;
574
+ gap: calc(10 * var(--u));
575
+ /* Flat solid emphasis fill (de-gradient). */
576
+ background: var(--bg-emphasis);
577
+ border: calc(1 * var(--u)) solid var(--border-soft);
578
+ border-radius: calc(5 * var(--u));
579
+ padding: calc(8 * var(--u)) calc(12 * var(--u));
580
+ }
581
+ .takeaways-strip .ts-title {
582
+ font-family: var(--font-sans);
583
+ font-size: var(--fs-6);
584
+ font-weight: 800;
585
+ color: var(--accent-deep);
586
+ display: flex; align-items: center; gap: calc(6 * var(--u));
587
+ }
588
+ .takeaways-strip .ts-title .num {
589
+ display: inline-flex; align-items: center; justify-content: center;
590
+ width: calc(22 * var(--u)); height: calc(22 * var(--u));
591
+ background: var(--accent); color: white;
592
+ border-radius: 50%;
593
+ font-size: var(--fs-5); font-weight: 700;
594
+ }
595
+ .takeaways-strip .ts-item {
596
+ border-left: calc(3 * var(--u)) solid var(--accent);
597
+ padding-left: calc(8 * var(--u));
598
+ line-height: 1.3;
599
+ text-align: center;
600
+ text-wrap: balance;
601
+ }
602
+ .takeaways-strip .ts-key {
603
+ font-family: var(--font-sans);
604
+ font-size: var(--fs-3);
605
+ font-weight: 700;
606
+ color: var(--accent);
607
+ text-transform: uppercase;
608
+ letter-spacing: 1px;
609
+ }
610
+ .takeaways-strip .ts-text {
611
+ font-family: var(--font-serif);
612
+ font-size: var(--fs-4);
613
+ margin-left: calc(4 * var(--u));
614
+ }
615
+
616
+ /* Footer */
617
+ .footer {
618
+ grid-column: 1 / -1;
619
+ display: flex; justify-content: space-between; align-items: center;
620
+ padding-top: calc(8 * var(--u));
621
+ border-top: calc(1 * var(--u)) solid var(--border-soft);
622
+ font-family: var(--font-sans);
623
+ font-size: var(--fs-5);
624
+ color: var(--text-muted);
625
+ }
626
+ .footer .method-name { color: var(--accent-deep); }
627
+ .footer .repo { color: var(--accent); font-weight: 600; }
628
+
629
+ /* Optional watermark */
630
+ .ornament {
631
+ position: absolute;
632
+ right: calc(20 * var(--u));
633
+ bottom: calc(20 * var(--u));
634
+ font-family: var(--font-sans);
635
+ font-size: var(--fs-9);
636
+ color: var(--ornament-ink);
637
+ font-weight: 900;
638
+ letter-spacing: 4px;
639
+ pointer-events: none;
640
+ user-select: none;
641
+ }
642
+
643
+ /* =========================================================
644
+ DENSITY COMPONENTS (catalogued — see COMPONENTS.md).
645
+ Guardrail: no component-local color semantics. Distinction is
646
+ carried by labels, order and typography — never by new hues.
647
+ ========================================================= */
648
+ /* equation-stack: compact multi-row formula stack (denser than one big .eqn) */
649
+ .equation-stack { margin: calc(2 * var(--u)) 0; }
650
+ .equation-stack .eqn { margin: calc(2 * var(--u)) 0; padding: calc(2 * var(--u)) calc(8 * var(--u)); }
651
+
652
+ /* eqn-anatomy: term-by-term anatomy grid (2x2 default; --row variant = 1x4) */
653
+ .eqn-anatomy {
654
+ display: grid; grid-template-columns: 1fr 1fr;
655
+ gap: calc(2.5 * var(--u)); margin: calc(3 * var(--u)) 0;
656
+ }
657
+ .eqn-anatomy.eqn-anatomy--row { grid-template-columns: repeat(4, 1fr); }
658
+ .eqn-anatomy .ea-item {
659
+ background: var(--bg-card-tint);
660
+ border: 1px solid var(--border-soft);
661
+ border-left: calc(2 * var(--u)) solid var(--accent);
662
+ border-radius: calc(2 * var(--u));
663
+ padding: calc(2 * var(--u)) calc(4 * var(--u));
664
+ font-size: var(--fs-2); line-height: 1.3;
665
+ }
666
+ .eqn-anatomy .ea-tag {
667
+ display: inline-block; font-family: var(--font-sans); font-weight: 700;
668
+ font-size: var(--fs-1); color: var(--accent-deep);
669
+ background: var(--accent-light); border-radius: calc(1.5 * var(--u));
670
+ padding: calc(0.5 * var(--u)) calc(2.5 * var(--u));
671
+ margin-right: calc(1.5 * var(--u));
672
+ }
673
+
674
+ /* flow-strip: labeled pipeline, ALL steps the same accent; ONLY the
675
+ final step may carry the gold top bar. Not an "algorithm" unless the
676
+ paper has one — see COMPONENTS.md. */
677
+ .flow-strip { display: flex; align-items: stretch; gap: calc(1.5 * var(--u)); margin: calc(3 * var(--u)) 0; }
678
+ .flow-strip .step {
679
+ flex: 1; background: var(--accent-light);
680
+ border: 1px solid var(--accent-soft); border-radius: calc(2 * var(--u));
681
+ padding: calc(2 * var(--u)) calc(2.5 * var(--u));
682
+ text-align: center; font-size: var(--fs-2); line-height: 1.25;
683
+ }
684
+ .flow-strip .step .step-name {
685
+ display: block; font-family: var(--font-sans); font-weight: 700;
686
+ font-size: var(--fs-1); color: var(--accent-deep);
687
+ letter-spacing: 0.5px; text-transform: uppercase;
688
+ margin-bottom: calc(1 * var(--u));
689
+ }
690
+ .flow-strip .step--final { border-top: calc(1.5 * var(--u)) solid var(--gold); background: var(--gold-soft); }
691
+ .flow-strip .arrow {
692
+ align-self: center; color: var(--accent);
693
+ font-family: var(--font-sans); font-weight: 700; font-size: var(--fs-4);
694
+ flex: 0 0 auto;
695
+ }
696
+
697
+ /* figure--duo: two paper figures sharing one caption; each img MUST be
698
+ a data-source="paper" asset and carry .w-45/.w-50 (42-48% each). */
699
+ .figure--duo { display: flex; gap: calc(3 * var(--u)); align-items: flex-start; justify-content: center; }
700
+ .figure--duo img { max-width: 48%; min-width: 0; } /* hard cap: duo contract is 42-48% each; an oversized w-NN cannot overflow the card */
701
+
702
+ /* result-table derived column (gold-soft = DERIVED arithmetic; label it) */
703
+ .result-table th.derived, .result-table td.derived {
704
+ background: var(--gold-soft); font-family: var(--font-sans); font-weight: 700;
705
+ }
706
+
707
+ /* keybox 4-up variant */
708
+ .keybox.keybox--4 { grid-template-columns: repeat(4, 1fr); }
709
+
710
+ /* algo: compact numbered procedure — ONLY when the paper itself states
711
+ an explicit algorithm/procedure; never invent steps. */
712
+ ol.algo { padding-left: calc(16 * var(--u)); }
713
+ ol.algo li { margin-bottom: calc(1.5 * var(--u)); font-size: var(--fs-3); line-height: 1.3; }
714
+
715
+ /* claim-pills: provenance mini-table (numeric-heavy posters only) */
716
+ .claim-pills { width: 100%; border-collapse: collapse; font-family: var(--font-sans); font-size: var(--fs-2); }
717
+ .claim-pills td {
718
+ border-bottom: 1px solid var(--border-soft);
719
+ padding: calc(1.5 * var(--u)) calc(3 * var(--u));
720
+ }
721
+ .claim-pills .cp-id {
722
+ font-weight: 700; color: var(--accent-deep); background: var(--accent-light);
723
+ border-radius: calc(1.5 * var(--u)); padding: 0 calc(2.5 * var(--u)); white-space: nowrap;
724
+ }
725
+ .claim-pills .cp-fact { color: var(--accent-deep); font-weight: 700; }
726
+ .claim-pills .cp-derived { color: var(--gold); font-weight: 700; }
727
+
728
+ /* Grid-blowout guards: (1) columns may shrink below min-content so a
729
+ wide equation can never widen its track and squeeze siblings;
730
+ (2) over-wide display math scales down to fit its box instead of
731
+ blowing out the card (SVG keeps aspect via height:auto). */
732
+ .body-grid > .column { min-width: 0; }
733
+ .card { min-width: 0; }
734
+ .eqn mjx-container > svg { max-width: 100%; height: auto; }
735
+
736
+ /* ── Utility classes — defined LAST so equal-specificity ties
737
+ resolve in the utility's favor (source order). ── */
738
+ .fs-1 { font-size: var(--fs-1); }
739
+ .fs-2 { font-size: var(--fs-2); }
740
+ .fs-3 { font-size: var(--fs-3); }
741
+ .fs-4 { font-size: var(--fs-4); }
742
+ .fs-5 { font-size: var(--fs-5); }
743
+ .fs-6 { font-size: var(--fs-6); }
744
+ .fs-7 { font-size: var(--fs-7); }
745
+ .fs-8 { font-size: var(--fs-8); }
746
+ .fs-9 { font-size: var(--fs-9); }
747
+
748
+ .mt-1 { margin-top: calc(1 * var(--u)); }
749
+ .mt-2 { margin-top: calc(2 * var(--u)); }
750
+ .mt-3 { margin-top: calc(3 * var(--u)); }
751
+ .mt-4 { margin-top: calc(4 * var(--u)); }
752
+ .mt-5 { margin-top: calc(5 * var(--u)); }
753
+ .mt-6 { margin-top: calc(6 * var(--u)); }
754
+
755
+ .mb-1 { margin-bottom: calc(1 * var(--u)); }
756
+ .mb-2 { margin-bottom: calc(2 * var(--u)); }
757
+ .mb-3 { margin-bottom: calc(3 * var(--u)); }
758
+ .mb-4 { margin-bottom: calc(4 * var(--u)); }
759
+
760
+ .w-45 { width: 45%; }
761
+ .w-50 { width: 50%; }
762
+ .w-55 { width: 55%; }
763
+ .w-60 { width: 60%; }
764
+ .w-65 { width: 65%; }
765
+ .w-70 { width: 70%; }
766
+ .w-75 { width: 75%; }
767
+ .w-80 { width: 80%; }
768
+ .w-85 { width: 85%; }
769
+ .w-90 { width: 90%; }
770
+ .w-95 { width: 95%; }
771
+ .w-100 { width: 100%; }
772
+
773
+ .text-secondary { color: var(--text-secondary); }
774
+ .text-muted { color: var(--text-muted); }
775
+ .nowrap { white-space: nowrap; }
776
+ .text-center { text-align: center; }
777
+
778
+ /* =========================================================
779
+ PRINT OVERRIDE — KEEP LAST so it wins source-order ties.
780
+ ========================================================= */
781
+ @media print {
782
+ html, body { background: white; }
783
+ .poster { margin: 0; box-shadow: none; width: 60in; height: 36in; page-break-after: avoid; }
784
+ :root { --u: 1mm; }
785
+ }
786
+ </style>
787
+ </head>
788
+ <body>
789
+
790
+ <div class="poster" data-measure-role="poster">
791
+
792
+ <!-- =========================== HEADER =========================== -->
793
+ <header class="header" data-measure-role="header">
794
+ <!-- LEFT: venue badge. Replace text or swap for an <img> if your venue allows logos. -->
795
+ <div class="venue-badge">
796
+ <div class="vb-venue">VENUE</div>
797
+ <div class="vb-year">YEAR</div>
798
+ <div class="vb-tag">POSTER</div>
799
+ </div>
800
+
801
+ <!-- CENTER: title block -->
802
+ <div class="title-block">
803
+ <h1 class="title">POSTER TITLE: <span class="accent">Subtitle Keyword</span></h1>
804
+ <div class="subtitle">One-sentence tagline that explains the work in plain English.</div>
805
+ <div class="authors-line">
806
+ <span class="author">Author One</span> &middot;
807
+ <span class="author">Author Two</span> &middot;
808
+ <span class="author">Author Three<sup>&#9993;</sup></span>
809
+ <span class="aff">Lab / Department &middot; Institution &middot; City, Country</span>
810
+ </div>
811
+ </div>
812
+
813
+ <!-- RIGHT: optional logo + QR. Delete .logo-slot if your venue forbids on-poster logos. -->
814
+ <div class="right-block">
815
+ <div class="logo-slot">
816
+ <!-- Affiliation / lab logo goes here:
817
+ <img src="images/lab-logo.png" alt="Lab">
818
+ For an inline-SVG logo with brand colors, mark it exempt so
819
+ style_check skips its fills:
820
+ <svg data-color-exempt="logo" ...> ... </svg>
821
+ No logo? Delete this entire <div class="logo-slot"> instead of
822
+ leaving it empty (an empty slot just adds a stray gap). The .aff
823
+ text line and the corner .ornament still carry attribution. -->
824
+ </div>
825
+ <div class="qr-block">
826
+ <!-- TODO: replace with your real QR code. The default below is an inline
827
+ SVG placeholder so the template renders offline. Generate a real one with
828
+ one of:
829
+ $ qrencode -o qr.png -s 12 -m 0 "https://your-url" # apt install qrencode
830
+ $ python -c "import qrcode; qrcode.make('https://your-url').save('qr.png')"
831
+ then change src to "qr.png" (export at ≥ 2× rendered size for crisp print).
832
+ The placeholder data-URI carries data-color-exempt="logo" so its
833
+ literal fills are exempt from the color gate. -->
834
+ <img data-color-exempt="logo" src="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><rect width='100' height='100' fill='%23fff'/><g fill='%23222'><rect x='4' y='4' width='26' height='26'/><rect x='70' y='4' width='26' height='26'/><rect x='4' y='70' width='26' height='26'/></g><g fill='%23fff'><rect x='10' y='10' width='14' height='14'/><rect x='76' y='10' width='14' height='14'/><rect x='10' y='76' width='14' height='14'/></g><g fill='%23222'><rect x='14' y='14' width='6' height='6'/><rect x='80' y='14' width='6' height='6'/><rect x='14' y='80' width='6' height='6'/><rect x='38' y='10' width='4' height='4'/><rect x='48' y='10' width='4' height='4'/><rect x='58' y='10' width='4' height='4'/><rect x='34' y='34' width='4' height='4'/><rect x='44' y='38' width='4' height='4'/><rect x='54' y='34' width='4' height='4'/><rect x='62' y='40' width='4' height='4'/><rect x='38' y='46' width='4' height='4'/><rect x='50' y='52' width='4' height='4'/><rect x='62' y='56' width='4' height='4'/><rect x='34' y='60' width='4' height='4'/><rect x='44' y='66' width='4' height='4'/><rect x='56' y='62' width='4' height='4'/><rect x='80' y='80' width='4' height='4'/><rect x='88' y='86' width='4' height='4'/></g><text x='50' y='54' text-anchor='middle' font-family='sans-serif' font-size='6' font-weight='bold' fill='%23888'>QR</text></svg>" alt="QR placeholder — replace with your real QR before printing">
835
+ <div class="qr-label">Paper &amp; Code</div>
836
+ </div>
837
+ </div>
838
+ </header>
839
+
840
+ <!-- ===================== OPTIONAL FRAMEWORK BANNER =====================
841
+ Delete this entire <section> if your poster doesn't need a banner.
842
+ (To do so, also remove `auto` from the grid-template-rows above.) -->
843
+ <section class="framework-banner" data-measure-role="banner">
844
+ <!-- Method overview figure from the paper goes here. Mark it as a paper
845
+ asset so asset_check + style_check recognize it:
846
+ <img src="assets/paper_figures/framework.png" data-source="paper"
847
+ data-asset-id="framework" class="w-100"> -->
848
+ <div class="fb-text">
849
+ <span class="fb-label">Framework</span>
850
+ &nbsp;<strong>Method name</strong> in one sentence — what it does, what it improves, what's new.
851
+ </div>
852
+ <div class="banner-stats">
853
+ <div class="bs-item"><div class="bs-num">N&times;</div><div class="bs-label">headline<br>improvement</div></div>
854
+ <div class="bs-item"><div class="bs-num">SOTA</div><div class="bs-label">benchmark<br>positioning</div></div>
855
+ <div class="bs-item"><div class="bs-num">key</div><div class="bs-label">property<br>(e.g. proxy-free)</div></div>
856
+ <div class="bs-item"><div class="bs-num">tag</div><div class="bs-label">domain<br>(e.g. offline RL)</div></div>
857
+ </div>
858
+ </section>
859
+
860
+ <!-- ============================ BODY ============================ -->
861
+ <div class="body-grid" data-measure-role="body">
862
+
863
+ <!-- ============ COLUMN 1 ============ -->
864
+ <div class="column" data-measure-role="column">
865
+
866
+ <div class="card highlight" data-measure-role="card">
867
+ <div class="section-title"><span class="num">1</span> Motivation</div>
868
+ <p class="body-text">
869
+ TODO: 2-3 sentences on the problem. Use <span class="keyword">accent color</span> for terms you want the eye to land on.
870
+ </p>
871
+ <ul class="mt-3 fs-4">
872
+ <li>TODO: pain point 1.</li>
873
+ <li>TODO: pain point 2.</li>
874
+ </ul>
875
+ <div class="callout mt-4">
876
+ <strong>Q:</strong> TODO: the question your paper answers.
877
+ </div>
878
+ </div>
879
+
880
+ <div class="card" data-measure-role="card">
881
+ <div class="section-title"><span class="num">2</span> Key Insight</div>
882
+ <p class="body-text">
883
+ TODO: 2-3 sentences on the central insight.
884
+ </p>
885
+ <div class="figure mt-3">
886
+ <!-- Key-insight figure from the paper:
887
+ <img src="assets/paper_figures/key-figure.png" data-source="paper"
888
+ data-asset-id="key-figure" class="w-95"> -->
889
+ <div class="caption">
890
+ TODO: caption explaining (a) / (b) / (c) panels in one line each.
891
+ </div>
892
+ </div>
893
+ </div>
894
+
895
+ </div>
896
+
897
+ <!-- ============ COLUMN 2 ============ -->
898
+ <div class="column" data-measure-role="column">
899
+
900
+ <div class="card" data-measure-role="card">
901
+ <div class="section-title"><span class="num">3</span> Method Step 1</div>
902
+ <p class="body-text">TODO: how step 1 works.</p>
903
+ <div class="eqn">
904
+ <span class="label">Core equation</span>
905
+ $$f(x) \;=\; \text{TODO}$$
906
+ </div>
907
+ <p class="body-text">TODO: interpretation.</p>
908
+ </div>
909
+
910
+ <div class="card highlight" data-measure-role="card">
911
+ <div class="section-title"><span class="num">4</span> Method Step 2 <span class="key-mark">&#9733; KEY</span></div>
912
+ <p class="body-text">TODO: how step 2 works.</p>
913
+ <div class="eqn eqn--large">
914
+ <span class="label">Step 2 equation</span>
915
+ $$g(x) \;=\; \text{TODO}$$
916
+ </div>
917
+ <div class="callout gold">
918
+ <strong>Theorem.</strong> TODO: one-sentence statement, with $\varepsilon$ bounds if applicable.
919
+ </div>
920
+ </div>
921
+
922
+ </div>
923
+
924
+ <!-- ============ COLUMN 3 ============ -->
925
+ <div class="column" data-measure-role="column">
926
+
927
+ <div class="card highlight" data-measure-role="card">
928
+ <div class="section-title"><span class="num">5</span> Main Result <span class="key-mark">&#9733; Headline</span></div>
929
+ <p class="body-text fs-3 text-secondary mb-1">
930
+ TODO: setup line — dataset, # samples, baselines.
931
+ </p>
932
+ <div class="figure">
933
+ <!-- Main-result figure from the paper:
934
+ <img src="assets/paper_figures/main-result.png" data-source="paper"
935
+ data-asset-id="main-result" class="w-100"> -->
936
+ <div class="caption fs-2">
937
+ <strong>Left:</strong> TODO. <strong>Right:</strong> TODO.
938
+ </div>
939
+ </div>
940
+ <div class="keybox">
941
+ <div class="kb-item"><div class="kb-num">A</div><div class="kb-label">stat 1<br>caption</div></div>
942
+ <div class="kb-item"><div class="kb-num">B</div><div class="kb-label">stat 2<br>caption</div></div>
943
+ <div class="kb-item"><div class="kb-num">C</div><div class="kb-label">stat 3<br>caption</div></div>
944
+ </div>
945
+ </div>
946
+
947
+ <div class="card" data-measure-role="card">
948
+ <div class="section-title"><span class="num">6</span> Robustness / Secondary</div>
949
+ <p class="body-text">TODO: 1-2 sentences on robustness, ablation, or secondary axis.</p>
950
+ <ul class="mt-3">
951
+ <li><strong>Setting A</strong> — TODO.</li>
952
+ <li><strong>Setting B</strong> — TODO.</li>
953
+ </ul>
954
+ <div class="callout mt-3">
955
+ TODO: bottom-line takeaway from the robustness study.
956
+ </div>
957
+ </div>
958
+
959
+ </div>
960
+
961
+ <!-- ============ COLUMN 4 ============ -->
962
+ <div class="column" data-measure-role="column">
963
+
964
+ <div class="card highlight" data-measure-role="card">
965
+ <div class="section-title"><span class="num">7</span> Benchmark Table</div>
966
+ <p class="body-text fs-2 text-secondary mb-1">
967
+ TODO: setup line — samples, seeds, metric description.
968
+ </p>
969
+ <table class="result-table">
970
+ <thead>
971
+ <tr>
972
+ <th class="method">Method</th>
973
+ <th>Metric A &#8593;</th>
974
+ <th>Metric B &#8593;</th>
975
+ <th>Cost &#8595;</th>
976
+ </tr>
977
+ </thead>
978
+ <tbody>
979
+ <tr class="reference"><td class="method"><em>Reference</em></td><td>x.xx</td><td>x.xx</td><td>x.xx</td></tr>
980
+ <tr><td class="method">Baseline 1</td><td>x.xx</td><td>x.xx</td><td>x.xx</td></tr>
981
+ <tr><td class="method">Baseline 2</td><td>x.xx</td><td>x.xx</td><td>x.xx</td></tr>
982
+ <tr class="ours"><td class="method">Ours</td><td class="best">x.xx</td><td class="best">x.xx</td><td class="best">x.xx</td></tr>
983
+ </tbody>
984
+ </table>
985
+ <p class="body-text mt-2 fs-3">
986
+ TODO: one-sentence interpretation.
987
+ </p>
988
+ </div>
989
+
990
+ <div class="card" data-measure-role="card">
991
+ <div class="section-title"><span class="num">8</span> Diversity / Extra View</div>
992
+ <p class="body-text">TODO: 1-sentence framing.</p>
993
+ <div class="figure">
994
+ <!-- Secondary figure from the paper:
995
+ <img src="assets/paper_figures/secondary-figure.png" data-source="paper"
996
+ data-asset-id="secondary-figure" class="w-100"> -->
997
+ <div class="caption fs-2">TODO: caption.</div>
998
+ </div>
999
+ </div>
1000
+
1001
+ </div>
1002
+
1003
+ </div>
1004
+
1005
+ <!-- ============================ OPTIONAL TAKEAWAYS STRIP ============================ -->
1006
+ <section class="takeaways-strip" data-measure-role="footer-strip">
1007
+ <div class="ts-title"><span class="num">9</span> Takeaways</div>
1008
+ <div class="ts-item"><span class="ts-key">Idea.</span><span class="ts-text">TODO: 1-line.</span></div>
1009
+ <div class="ts-item"><span class="ts-key">Method.</span><span class="ts-text">TODO: 1-line.</span></div>
1010
+ <div class="ts-item"><span class="ts-key">Result.</span><span class="ts-text">TODO: 1-line.</span></div>
1011
+ <div class="ts-item"><span class="ts-key">Practical.</span><span class="ts-text">TODO: 1-line.</span></div>
1012
+ </section>
1013
+
1014
+ <!-- ============================ FOOTER ============================ -->
1015
+ <div class="footer" data-measure-role="footer">
1016
+ <div>
1017
+ <strong class="method-name">METHOD NAME</strong> &middot; Venue Year &middot;
1018
+ Acknowledgements: TODO.
1019
+ </div>
1020
+ <div>
1021
+ Code: <span class="repo">github.com/&lt;org&gt;/&lt;repo&gt;</span> &nbsp;&middot;&nbsp;
1022
+ Contact: <span class="repo">presenter@example.com</span>
1023
+ </div>
1024
+ </div>
1025
+
1026
+ <!-- Optional watermark — delete if you don't want it. -->
1027
+ <div class="ornament">LAB &middot; INSTITUTION</div>
1028
+
1029
+ </div>
1030
+
1031
+ </body>
1032
+ </html>