@litfamily/litopencode 1.0.31 → 1.0.33

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 (282) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README-Ko-KR.md +6 -6
  3. package/README.md +6 -6
  4. package/TRADEMARK.md +12 -0
  5. package/dist/activation-primary-prompts.js +5 -1
  6. package/dist/activation-probe.js +1 -0
  7. package/dist/activation-prompt-utils.d.ts +1 -1
  8. package/dist/activation-reentry.d.ts +20 -0
  9. package/dist/activation-reentry.js +110 -1
  10. package/dist/activation-routing.d.ts +2 -1
  11. package/dist/activation-routing.js +100 -11
  12. package/dist/activation-workflow-prompts.d.ts +4 -0
  13. package/dist/activation-workflow-prompts.js +30 -0
  14. package/dist/activation.d.ts +1 -1
  15. package/dist/activation.js +44 -5
  16. package/dist/adhd-next.d.ts +51 -0
  17. package/dist/adhd-next.js +150 -0
  18. package/dist/agents/defaults.js +1 -1
  19. package/dist/cli/managed-skill-assets.d.ts +1 -1
  20. package/dist/cli/managed-skill-assets.js +7 -1
  21. package/dist/cli/native-skill-integrity.js +1 -1
  22. package/dist/cli.js +7 -1
  23. package/dist/commands.d.ts +28 -1
  24. package/dist/commands.js +58 -5
  25. package/dist/durable-plan.d.ts +5 -1
  26. package/dist/durable-plan.js +14 -2
  27. package/dist/features.d.ts +80 -1
  28. package/dist/features.js +105 -1
  29. package/dist/hooks.js +3 -0
  30. package/dist/ledger.js +12 -1
  31. package/dist/plan-scope-roots.d.ts +23 -0
  32. package/dist/plan-scope-roots.js +116 -0
  33. package/dist/restart-notice.d.ts +7 -0
  34. package/dist/restart-notice.js +40 -0
  35. package/dist/secret-shapes.js +5 -5
  36. package/dist/server.js +4 -0
  37. package/dist/session-liveness.d.ts +20 -0
  38. package/dist/session-liveness.js +99 -0
  39. package/dist/skills.d.ts +22 -1
  40. package/dist/skills.js +36 -0
  41. package/dist/start-work-typed.d.ts +34 -0
  42. package/dist/start-work-typed.js +167 -0
  43. package/dist/state.d.ts +3 -0
  44. package/dist/state.js +3 -0
  45. package/dist/tools.js +22 -2
  46. package/dist/tui/mission-band.d.ts +22 -1
  47. package/dist/tui/mission-band.js +75 -16
  48. package/dist/tui/mission-looks.d.ts +38 -0
  49. package/dist/tui/mission-looks.js +73 -0
  50. package/dist/tui/mission-model.d.ts +2 -0
  51. package/dist/tui/mission-model.js +3 -1
  52. package/dist/tui/mission-rainbow.d.ts +33 -0
  53. package/dist/tui/mission-rainbow.js +90 -0
  54. package/dist/tui/mission-source.d.ts +49 -0
  55. package/dist/tui/mission-source.js +217 -2
  56. package/dist/tui/mission-text.d.ts +2 -0
  57. package/dist/tui/mission-text.js +9 -1
  58. package/dist/tui/mission-threads.d.ts +58 -0
  59. package/dist/tui/mission-threads.js +128 -0
  60. package/dist/tui.js +112 -7
  61. package/dist/uiux-visual-catalog.js +8 -1
  62. package/dist/v2/events.js +3 -0
  63. package/dist/v2/session-hooks.js +38 -5
  64. package/dist/workflow-stack.d.ts +53 -0
  65. package/dist/workflow-stack.js +196 -0
  66. package/docs/assets/readme/badge-version.svg +1 -1
  67. package/docs/assets/skills/lit-schematic.webp +0 -0
  68. package/docs/reference-Ko-KR.md +48 -3
  69. package/docs/reference.md +54 -3
  70. package/package.json +1 -1
  71. package/skills/frontend-ui-ux/SKILL.md +3 -2
  72. package/skills/frontend-ui-ux/kit/components.css +414 -0
  73. package/skills/frontend-ui-ux/kit/fonts.json +22 -0
  74. package/skills/frontend-ui-ux/kit/layouts/landing.html +164 -0
  75. package/skills/frontend-ui-ux/kit/layouts/settings.html +114 -0
  76. package/skills/frontend-ui-ux/kit/layouts/workspace.html +115 -0
  77. package/skills/frontend-ui-ux/kit/styles/computational-brutalism.json +227 -0
  78. package/skills/frontend-ui-ux/kit/styles/field-notes.json +205 -0
  79. package/skills/frontend-ui-ux/kit/styles/graphite.json +200 -0
  80. package/skills/frontend-ui-ux/kit/styles/meadow.json +199 -0
  81. package/skills/frontend-ui-ux/kit/styles/neo-brutalism.json +222 -0
  82. package/skills/frontend-ui-ux/kit/ui.js +226 -0
  83. package/skills/frontend-ui-ux/references/brand-and-imagery.md +2 -2
  84. package/skills/frontend-ui-ux/references/complete-contract.md +2 -1
  85. package/skills/frontend-ui-ux/references/craft-floor.md +6 -2
  86. package/skills/frontend-ui-ux/references/default-editorial-pixel.json +3 -0
  87. package/skills/frontend-ui-ux/references/house-styles.md +236 -0
  88. package/skills/frontend-ui-ux/references/motion-guide.md +2 -2
  89. package/skills/frontend-ui-ux/references/production.md +3 -1
  90. package/skills/frontend-ui-ux/references/slop-register.md +4 -4
  91. package/skills/frontend-ui-ux/scripts/design-lock.mjs +400 -0
  92. package/skills/frontend-ui-ux/scripts/pixel-art.mjs +60 -0
  93. package/skills/frontend-ui-ux/scripts/probe-lock.mjs +235 -0
  94. package/skills/frontend-ui-ux/scripts/probe-page.mjs +34 -12
  95. package/skills/frontend-ui-ux/scripts/probe-static.mjs +16 -3
  96. package/skills/frontend-ui-ux/scripts/probe-thresholds.json +8 -2
  97. package/skills/frontend-ui-ux/scripts/probe.mjs +35 -7
  98. package/skills/lit-adhd/SKILL.md +209 -0
  99. package/skills/lit-adhd/references/brief-format.md +46 -0
  100. package/skills/lit-adhd/references/card-examples.md +103 -0
  101. package/skills/lit-adhd/references/status-taxonomy.md +34 -0
  102. package/skills/lit-adhd/scripts/rewind.mjs +933 -0
  103. package/skills/lit-diagram-drawer/SKILL.md +4 -3
  104. package/skills/lit-diagram-drawer/references/style-guide.md +20 -11
  105. package/skills/lit-diagram-drawer/references/type-architecture.md +3 -3
  106. package/skills/lit-diagram-drawer/references/type-dependency.md +1 -1
  107. package/skills/lit-diagram-drawer/references/type-tree.md +3 -3
  108. package/skills/lit-diagram-drawer/references/type-wardley.md +1 -1
  109. package/skills/lit-diagram-drawer/references/verifier-guide.md +1 -0
  110. package/skills/lit-diagram-drawer/scripts/craft-thresholds.json +1 -2
  111. package/skills/lit-diagram-drawer/scripts/visual-quality.mjs +1 -2
  112. package/skills/lit-docx/SKILL.md +2 -1
  113. package/skills/lit-handoff/SKILL.md +2 -0
  114. package/skills/lit-hijack/SKILL.md +422 -0
  115. package/skills/lit-hijack/references/capture-and-provenance.md +87 -0
  116. package/skills/lit-hijack/references/clean-room-build.md +111 -0
  117. package/skills/lit-hijack/references/distil-and-licence.md +100 -0
  118. package/skills/lit-hijack/references/gap-and-port-design.md +126 -0
  119. package/skills/lit-hijack/references/parity-and-report.md +110 -0
  120. package/skills/lit-hijack/scripts/hijack.mjs +993 -0
  121. package/skills/lit-plan/SKILL.md +8 -0
  122. package/skills/lit-pptx/SKILL.md +27 -11
  123. package/skills/lit-pptx/fonts/jetbrains-mono/JetBrainsMono-Bold.ttf +0 -0
  124. package/skills/lit-pptx/fonts/jetbrains-mono/JetBrainsMono-Regular.ttf +0 -0
  125. package/skills/lit-pptx/fonts/jetbrains-mono/OFL.txt +93 -0
  126. package/skills/lit-pptx/fonts/jetbrains-mono/SOURCE.md +17 -0
  127. package/skills/lit-pptx/references/density-and-fill.md +9 -3
  128. package/skills/lit-pptx/references/direction-step.md +21 -6
  129. package/skills/lit-pptx/references/examples/04-lecture-chalk-ko.md +3 -6
  130. package/skills/lit-pptx/references/examples/05-research-talk-paper-en.md +1 -5
  131. package/skills/lit-pptx/references/examples/08-reliability-keynote-night-en.md +0 -4
  132. package/skills/lit-pptx/references/examples/09-status-update-ledger-en.md +2 -2
  133. package/skills/lit-pptx/references/examples/11-forecast-review-night-ko.md +4 -7
  134. package/skills/lit-pptx/references/examples/13-engineering-review-computational-brutalism-ko.md +173 -0
  135. package/skills/lit-pptx/references/examples/14-launch-pitch-neo-brutalism-ko.md +154 -0
  136. package/skills/lit-pptx/references/examples/15-design-lecture-bauhaus-ko.md +139 -0
  137. package/skills/lit-pptx/references/examples/16-community-programme-riso-ko.md +158 -0
  138. package/skills/lit-pptx/references/examples/17-public-data-briefing-newsroom-ko.md +179 -0
  139. package/skills/lit-pptx/references/layout-families.md +65 -47
  140. package/skills/lit-pptx/references/title-treatments.md +83 -134
  141. package/skills/lit-pptx/references/tonalities/atlas.md +3 -3
  142. package/skills/lit-pptx/references/tonalities/bauhaus.md +140 -0
  143. package/skills/lit-pptx/references/tonalities/chalk.md +7 -6
  144. package/skills/lit-pptx/references/tonalities/computational-brutalism.md +150 -0
  145. package/skills/lit-pptx/references/tonalities/gazette.md +1 -1
  146. package/skills/lit-pptx/references/tonalities/ledger.md +1 -1
  147. package/skills/lit-pptx/references/tonalities/neo-brutalism.md +161 -0
  148. package/skills/lit-pptx/references/tonalities/newsroom.md +144 -0
  149. package/skills/lit-pptx/references/tonalities/night.md +1 -1
  150. package/skills/lit-pptx/references/tonalities/paper.md +2 -2
  151. package/skills/lit-pptx/references/tonalities/riso.md +137 -0
  152. package/skills/lit-pptx/references/tonalities/signal.md +3 -3
  153. package/skills/lit-pptx/references/tonalities/studio.md +7 -6
  154. package/skills/lit-pptx/run.mjs +2 -1
  155. package/skills/lit-pptx/scripts/compile-deck.js +1 -1
  156. package/skills/lit-pptx/scripts/craft-thresholds.json +4 -8
  157. package/skills/lit-pptx/scripts/craft_extras.py +56 -3
  158. package/skills/lit-pptx/scripts/deck_output.py +75 -90
  159. package/skills/lit-pptx/scripts/embed_fonts.py +13 -1
  160. package/skills/lit-pptx/scripts/layout_inventory.py +12 -5
  161. package/skills/lit-pptx/scripts/lib/grid-resolver.js +101 -110
  162. package/skills/lit-pptx/scripts/lib/layout-resolver.js +9 -15
  163. package/skills/lit-pptx/scripts/lib/render-pack.js +373 -566
  164. package/skills/lit-pptx/scripts/lib/slide-grid.js +104 -0
  165. package/skills/lit-pptx/scripts/lib/template-registry.js +57 -6
  166. package/skills/lit-pptx/scripts/qa_deck.py +10 -11
  167. package/skills/lit-pptx/scripts/render_pages.py +118 -0
  168. package/skills/lit-pptx/templates/tonalities/atlas/pack.yaml +1 -1
  169. package/skills/lit-pptx/templates/tonalities/bauhaus/pack.yaml +98 -0
  170. package/skills/lit-pptx/templates/tonalities/chalk/pack.yaml +1 -1
  171. package/skills/lit-pptx/templates/tonalities/computational-brutalism/pack.yaml +99 -0
  172. package/skills/lit-pptx/templates/tonalities/gazette/pack.yaml +1 -1
  173. package/skills/lit-pptx/templates/tonalities/ledger/pack.yaml +1 -1
  174. package/skills/lit-pptx/templates/tonalities/neo-brutalism/pack.yaml +107 -0
  175. package/skills/lit-pptx/templates/tonalities/newsroom/pack.yaml +99 -0
  176. package/skills/lit-pptx/templates/tonalities/night/pack.yaml +1 -1
  177. package/skills/lit-pptx/templates/tonalities/paper/pack.yaml +1 -1
  178. package/skills/lit-pptx/templates/tonalities/riso/pack.yaml +99 -0
  179. package/skills/lit-pptx/templates/tonalities/signal/pack.yaml +2 -2
  180. package/skills/lit-pptx/templates/tonalities/studio/pack.yaml +1 -1
  181. package/skills/lit-recap/SKILL.md +4 -0
  182. package/skills/lit-schematic/SKILL.md +118 -0
  183. package/skills/lit-schematic/examples/iso-heat-exchanger/build.mjs +38 -0
  184. package/skills/lit-schematic/examples/iso-heat-exchanger/scene.mjs +133 -0
  185. package/skills/lit-schematic/examples/journal-adsorption-rig/build.mjs +87 -0
  186. package/skills/lit-schematic/examples/pid-dosing-skid/build.mjs +85 -0
  187. package/skills/lit-schematic/references/cutaway-outputs.md +70 -0
  188. package/skills/lit-schematic/references/isometric-craft.md +101 -0
  189. package/skills/lit-schematic/references/journal-figures.md +72 -0
  190. package/skills/lit-schematic/references/kit-api.md +134 -0
  191. package/skills/lit-schematic/references/pfd-and-layout.md +53 -0
  192. package/skills/lit-schematic/references/pid-drafting.md +103 -0
  193. package/skills/lit-schematic/references/pid-symbols.md +163 -0
  194. package/skills/lit-schematic/references/verification.md +100 -0
  195. package/skills/lit-schematic/scripts/doctor.mjs +57 -0
  196. package/skills/lit-schematic/scripts/lib/figure.mjs +81 -0
  197. package/skills/lit-schematic/scripts/lib/fonts.mjs +25 -0
  198. package/skills/lit-schematic/scripts/lib/geom.mjs +113 -0
  199. package/skills/lit-schematic/scripts/lib/interactive.mjs +292 -0
  200. package/skills/lit-schematic/scripts/lib/isa.mjs +115 -0
  201. package/skills/lit-schematic/scripts/lib/iso.mjs +719 -0
  202. package/skills/lit-schematic/scripts/lib/legend-sheet.mjs +162 -0
  203. package/skills/lit-schematic/scripts/lib/pid.mjs +937 -0
  204. package/skills/lit-schematic/scripts/lib/png.mjs +132 -0
  205. package/skills/lit-schematic/scripts/lib/qa-core.mjs +658 -0
  206. package/skills/lit-schematic/scripts/lib/route.mjs +218 -0
  207. package/skills/lit-schematic/scripts/lib/sheet.mjs +890 -0
  208. package/skills/lit-schematic/scripts/lib/svg.mjs +82 -0
  209. package/skills/lit-schematic/scripts/lib/theme.mjs +115 -0
  210. package/skills/lit-schematic/scripts/motion.mjs +129 -0
  211. package/skills/lit-schematic/scripts/qa.mjs +92 -0
  212. package/skills/lit-schematic/scripts/render.mjs +233 -0
  213. package/skills/lit-schematic/scripts/scaffold.mjs +60 -0
  214. package/skills/lit-scientific-visualization/SKILL.md +27 -4
  215. package/skills/lit-typographic-motion/SKILL.md +19 -17
  216. package/skills/lit-typographic-motion/THIRD_PARTY_NOTICES +9 -0
  217. package/skills/lit-typographic-motion/engine/accents.mjs +6 -0
  218. package/skills/lit-typographic-motion/engine/assets.mjs +282 -0
  219. package/skills/lit-typographic-motion/engine/blender/runner.py +228 -0
  220. package/skills/lit-typographic-motion/engine/blender.mjs +126 -0
  221. package/skills/lit-typographic-motion/engine/board.mjs +138 -0
  222. package/skills/lit-typographic-motion/engine/cover/assets.mjs +11 -8
  223. package/skills/lit-typographic-motion/engine/cover/capture.mjs +6 -6
  224. package/skills/lit-typographic-motion/engine/cover/render.mjs +20 -7
  225. package/skills/lit-typographic-motion/engine/cover/treatment.mjs +30 -3
  226. package/skills/lit-typographic-motion/engine/fill.mjs +54 -0
  227. package/skills/lit-typographic-motion/engine/gallery.mjs +118 -0
  228. package/skills/lit-typographic-motion/engine/house.mjs +42 -0
  229. package/skills/lit-typographic-motion/engine/look.mjs +65 -8
  230. package/skills/lit-typographic-motion/engine/loudness.mjs +101 -0
  231. package/skills/lit-typographic-motion/engine/scaffold.mjs +219 -0
  232. package/skills/lit-typographic-motion/engine/score.mjs +594 -0
  233. package/skills/lit-typographic-motion/engine/sound.mjs +9 -57
  234. package/skills/lit-typographic-motion/engine/stage/capture.mjs +23 -9
  235. package/skills/lit-typographic-motion/engine/stage/clock.js +8 -2
  236. package/skills/lit-typographic-motion/engine/stage/cover-init.js +12 -1
  237. package/skills/lit-typographic-motion/engine/stage/frame-worker.mjs +15 -7
  238. package/skills/lit-typographic-motion/engine/stage/gate.mjs +48 -4
  239. package/skills/lit-typographic-motion/engine/stage/qa-page.js +16 -5
  240. package/skills/lit-typographic-motion/engine/stage/qa.mjs +148 -7
  241. package/skills/lit-typographic-motion/engine/stage/render.mjs +69 -7
  242. package/skills/lit-typographic-motion/engine/stage/scan.mjs +20 -1
  243. package/skills/lit-typographic-motion/engine/stage/stage-kit.js +85 -4
  244. package/skills/lit-typographic-motion/engine/stills.mjs +1 -1
  245. package/skills/lit-typographic-motion/engine/styles.mjs +221 -0
  246. package/skills/lit-typographic-motion/engine/text.mjs +1 -1
  247. package/skills/lit-typographic-motion/engine/treatment.mjs +190 -6
  248. package/skills/lit-typographic-motion/engine/vendor/three/LICENSE +21 -0
  249. package/skills/lit-typographic-motion/engine/vendor/three/addons/environments/RoomEnvironment.js +144 -0
  250. package/skills/lit-typographic-motion/engine/vendor/three/addons/geometries/RoundedBoxGeometry.js +155 -0
  251. package/skills/lit-typographic-motion/engine/vendor/three/three.module.js +54571 -0
  252. package/skills/lit-typographic-motion/gate.mjs +18 -2
  253. package/skills/lit-typographic-motion/probe.mjs +13 -1
  254. package/skills/lit-typographic-motion/recipes/hero-3d/expected.json +64 -0
  255. package/skills/lit-typographic-motion/recipes/hero-3d/index.html +132 -0
  256. package/skills/lit-typographic-motion/recipes/orbit-loop/expected.json +2 -0
  257. package/skills/lit-typographic-motion/recipes/painted-light/expected.json +2 -0
  258. package/skills/lit-typographic-motion/recipes/weight-tide/expected.json +2 -0
  259. package/skills/lit-typographic-motion/references/cover.md +56 -13
  260. package/skills/lit-typographic-motion/references/craft-loop.md +20 -7
  261. package/skills/lit-typographic-motion/references/depth.md +112 -0
  262. package/skills/lit-typographic-motion/references/runtime.md +21 -6
  263. package/skills/lit-typographic-motion/references/sound.md +76 -0
  264. package/skills/lit-typographic-motion/references/stage.md +50 -7
  265. package/skills/lit-typographic-motion/references/studio.md +162 -0
  266. package/skills/lit-typographic-motion/references/style-bibles.md +18 -0
  267. package/skills/lit-typographic-motion/references/treatment.md +108 -9
  268. package/skills/lit-typographic-motion/render.mjs +60 -3
  269. package/skills/lit-typographic-motion/styles/paper.json +185 -0
  270. package/skills/lit-typographic-motion/styles/swiss-signal.json +188 -0
  271. package/skills/lit-typographic-motion/styles/terminalcore.json +182 -0
  272. package/skills/lit-typographic-motion/styles/tidal.json +187 -0
  273. package/skills/litresearch/SKILL.md +2 -0
  274. package/skills/managed-skill-manifest.json +517 -88
  275. package/skills/readme-studio/SKILL.md +1 -1
  276. package/skills/review-work/SKILL.md +2 -0
  277. package/skills/start-work/SKILL.md +8 -0
  278. package/skills/workflow-loop/SKILL.md +4 -0
  279. package/tools/check-pack-payload.mjs +5 -2
  280. package/tools/payload-substance-parity.json +4 -3
  281. package/tools/qa-cover-recipes.mjs +4 -3
  282. package/tools/version-manifests.json +2 -2
@@ -33,7 +33,7 @@ Pack file: `templates/tonalities/gazette/pack.yaml`.
33
33
 
34
34
  ## Type
35
35
 
36
- Pretendard throughout. Compact ramp at density 10 (body 13 pt, tables 11 pt).
36
+ Pretendard throughout. Compact ramp at density 10 (body 13 pt, tables 11 pt). Cover and statement titles take the hero step (60 pt) when their words fit; `hero: false` in the front matter turns it off. A figure is never larger than a title.
37
37
 
38
38
  ## Dials
39
39
 
@@ -36,7 +36,7 @@ current period and the one number that matters. Pack file: `templates/tonalities
36
36
 
37
37
  Pretendard Regular and Bold throughout (A2Z display and numerals only with `faces: a2z`). At
38
38
  density 10 the compact ramp applies: body 13 pt, labels and table cells 11 pt, sources 9 pt, titles
39
- 26 pt. Titles track slightly tight.
39
+ 26 pt. Titles track slightly tight. Cover and statement titles take the hero step (60 pt) when their words fit; `hero: false` in the front matter turns it off. A figure is never larger than a title.
40
40
 
41
41
  ## Dials
42
42
 
@@ -0,0 +1,161 @@
1
+ # Neo-Brutalism
2
+
3
+ Neo-Brutalism is the loud direction, and it is loud on purpose. Every card is a flat yellow block
4
+ with a thick black border and a hard black shadow offset down and to the right, with no blur at all.
5
+ Titles are heavy and tight, the topic band is saturated blue, one pink-red accent marks the figure
6
+ the slide is for, and the ground is a warm cream. Nothing is soft: no gradients, no rounded corners,
7
+ no glow. It reads like a poster or a product sticker, so it suits a room that should feel energy,
8
+ and it stays legible because every colour pair still meets the contrast floor.
9
+
10
+ ## When to use it
11
+
12
+ Reach for Neo-Brutalism for a startup pitch at a demo day, a consumer product launch, a campaign
13
+ kick-off, a creator or community event, a hackathon final or an education deck for a young audience.
14
+ The content signals that point here are a short body (one claim and two or three facts per slide),
15
+ three or four headline numbers, a launch or sign-up ask, and words such as 런칭, 출시, 데모데이,
16
+ 캠페인, 크리에이터, or the user asking for something bold, punchy or "brutalist". It is the second
17
+ candidate for the pitch deck type, after Signal, and the first when the user asks for a bold or
18
+ playful look.
19
+
20
+ ## When it is the wrong choice
21
+
22
+ It fails for a formal report, an academic talk, a board or finance review and any deck read alone
23
+ later: the blocks take space a reader needs for detail, and a slide of long paragraphs between thick
24
+ borders reads as noise. It is wrong for grief, safety, HR or financial-loss topics, and
25
+ for a deck under a corporate brand guide. When the brief says "clean" or "minimal", Signal or Studio
26
+ fits; when it says "report", Ledger or Gazette.
27
+
28
+ ## Tokens
29
+
30
+ The values below come from the pack file and are what the engine draws.
31
+
32
+ | Token | Value |
33
+ |---|---|
34
+ | ground / surface | #FFF5E1 / #FFD43B (the yellow card) |
35
+ | ink / ink-muted / line | #111111 / #3A3A3A / #111111 |
36
+ | accent / accent-deep / accent-tint | #D81B5C / #6B0F2E / #FFC9DA |
37
+ | field / on-field | #2F4BFF / #FFFFFF |
38
+ | positive / negative | #137A43 / #111111 |
39
+ | series | #D81B5C, #2F4BFF, #111111, #137A43 |
40
+ | faces | Pretendard Bold for display, title, labels and numerals, Pretendard Regular for body; `faces: a2z` swaps to A2Z Black display, titles and numerals |
41
+ | register / ramp / hero | bold / presented (body 18 pt, labels 14, sources 12, titles 32, display 44) / allowed: a statement and a big figure may take the 72 pt hero step |
42
+ | type voice | titles tracked −2, display −3 |
43
+ | density / variance | 10 / 7 |
44
+ | radius / edge | 0 / fill and border, 2.5 pt in ink |
45
+ | shadow | 6 pt offset at 45°, ink, fully opaque, no blur |
46
+ | table | yellow header, ruled grid, protagonist row in pink tint, bold totals |
47
+ | chart | no gridlines, direct labels, series in order (pink, blue, black) |
48
+
49
+ This is the family's bold register (`register: bold`): it sets presented type and the 72 pt hero step, so
50
+ titles, figures and statements run large, but they fill the same slide-grid zones as every other
51
+ pack. A title still sits in the one title zone and the body still starts at y 120; the register
52
+ changes the size inside a zone, never the zone. The registry refuses presented type in a pack without
53
+ `register: bold`, so a report pack cannot drift into this size by accident; every pack takes its own
54
+ hero step on the cover and statements. A KPI
55
+ row keeps its bordered cards, because the card is this direction's figure. The pink accent was darkened until a pink figure on a yellow card still holds 3:1 at title
56
+ size. Losses use ink with a ▼ sign, because pink already means "look here".
57
+
58
+ The shadow is written into the file as a real outer shadow with a blur of zero, so PowerPoint,
59
+ Keynote and LibreOffice all draw the same hard edge. Every block of the blue field (a band, a
60
+ section page, a cover plate) carries the black border too.
61
+
62
+ ## QA allowances
63
+
64
+ The yellow card, the blue band and the pink accent share a content slide inside the default OF-101
65
+ limit (four hue families; a fifth fails). The gate reads this pack's `qa:` block:
66
+ `offset-shadow: true` lets OF-120 pass the hard shadow; a shadow with any blur still fails, and the
67
+ same shadow in any pack without this allowance fails. Contrast floors are unchanged.
68
+
69
+ ## Treatments by slide role
70
+
71
+ Content slides and data with a takeaway take `top-plain-large`; data, sequence, reference and
72
+ definition slides take `band` (the title in white on the blue band); image slides `bottom-anchor`;
73
+ statements `statement`. `kicker-numeral` is the third option for a sequence. The engine lays out
74
+ every treatment the family allows, keeps the role's own when the body fills, and otherwise takes the
75
+ one that leaves the least empty band. Force one with `title: <id>` on the line after `layout:`.
76
+
77
+ ## Families and variants
78
+
79
+ - `kpi-row` sets two to four results as yellow cards, each with value, label and basis.
80
+ - `big-number` is a blue panel of related figures beside the facts that explain them.
81
+ - `comparison` reads before and after across shared rows.
82
+ - `process` and `step-diagram` show three to five steps with a numeral in the accent.
83
+ - `chart-insight` carries one growth chart with its takeaway beside it.
84
+ - `table-insight` holds the one table a pitch needs, usually unit economics.
85
+ - `image-split` pairs a product shot with three short points.
86
+ - `summary-box-list` sets two to four bordered boxes of one claim each.
87
+ - `agenda`, `quote` and `statement` keep the type loud and the page open.
88
+
89
+ Covers are `cover-typographic`, `cover-split-field` and `cover-numeral`; sections are
90
+ `section-field` and `section-numeral`; closings are `closing-ask`, `closing-decision-box` and
91
+ `closing-statement`.
92
+
93
+ Display slides. The typographic cover sets the topic in white on a blue plate across the lower
94
+ half, bordered in black. A statement drenches the page in blue with the sentence in white. A big
95
+ number is a blue field panel. A closing's next step sits in a bordered box with its shadow.
96
+
97
+ ## Do
98
+
99
+ - Keep one claim per slide and write it in the first body line, in plain words.
100
+ - Give every figure its label and its basis in the card.
101
+ - Let the yellow cards carry figures and short labels, never paragraphs.
102
+ - End on `closing-ask` with the amount, its uses and the next meeting.
103
+
104
+ ## Avoid
105
+
106
+ - Blurred or soft shadows, rounded corners and gradients; the look is flat and hard.
107
+ - Thin hairlines beside the 2.5 pt borders.
108
+ - More than three fill colours on one slide.
109
+ - Muted grey text on the yellow surface.
110
+ - This direction for formal reports or sensitive topics.
111
+
112
+ ## Two worked slides
113
+
114
+ A launch deck opens its traction slide with four results as cards and two facts under them.
115
+
116
+ ```markdown
117
+ ---
118
+ layout: kpi-row
119
+
120
+ ## 베타 8주 성과, 2026년 10월
121
+
122
+ | 가입자 | 주간 재방문 | 추천 가입 | 유료 전환 |
123
+ |---|---|---|---|
124
+ | 1만 2천 명 | 46% | 38% | 7.4% |
125
+ | 목표 1만 명 | 업계 평균 25% | 광고비 0원 | 목표 5% |
126
+
127
+ > 베타 운영 기록, 2026년 8-10월 (예시)
128
+
129
+ - 광고 없이 가입자 목표를 넘겼다: 셋 중 하나 이상이 친구 추천으로 왔다
130
+ - 유료 전환 7.4%는 목표 5%를 넘었고, 연 결제가 그중 60%다
131
+ - 출처: 예시 서비스 운영 대시보드, 2026년 10월 (예시)
132
+ ---
133
+ ```
134
+
135
+ The closing states the ask, shows where the money goes and names the next step.
136
+
137
+ ```markdown
138
+ ---
139
+ layout: closing-ask
140
+
141
+ ## 시드 15억 원 사용 계획
142
+
143
+ | 쓰임 | 금액 | 시점 |
144
+ |---|---|---|
145
+ | 앱 개발 인력 4명 | 7억 원 | 2027년 상반기 |
146
+ | 크리에이터 제휴 200곳 | 4억 원 | 2027년 1분기 |
147
+ | 마케팅 실험 | 3억 원 | 상시 |
148
+ | 운영 예비비 | 1억 원 | 필요 시 |
149
+ | 합계 | 15억 원 | 12개월 |
150
+
151
+ > 투자금 쓰임 (예시 데이터)
152
+
153
+ - 요청: 시드 15억 원 투자 승인
154
+ - 기대 성과: 12개월 뒤 가입자 10만 명, 월 매출 2억 원
155
+ - 다음 단계: 11월 첫째 주 후속 미팅, 담당 예시 대표
156
+ ---
157
+ ```
158
+
159
+ ## Examples
160
+
161
+ `14-launch-pitch-neo-brutalism-ko.md`
@@ -0,0 +1,144 @@
1
+ # Newsroom
2
+
3
+ Newsroom is the direction for a data story told to people who do not read tables: a public
4
+ briefing, an explainer, a newsletter's deck, a talk that walks a general audience through a few
5
+ numbers. It looks like a newspaper's graphics desk: a black masthead band behind the title of a
6
+ data page and the cover, a heavy black rule under the other titles, grey charts with one orange series, labels on the lines, and a source and period under every figure.
7
+ The title names the topic and its period; the finding leads the body, in the first line under the
8
+ chart.
9
+
10
+ ## When to use it
11
+
12
+ Reach for Newsroom when the deck is a handful of charts with one point each, written for readers
13
+ outside the field: a city or school data briefing to residents, a survey result for members, a
14
+ newsletter's "what the numbers say", a research explainer for the press, a public talk on prices,
15
+ housing, climate or health figures. The content signals that point here are one or two charts per
16
+ idea, a finding per chart, sources and periods on every figure and
17
+ words such as 브리핑, 설명, 주민, 시민, 독자, 뉴스레터, 데이터로 본, explainer, briefing or "what the
18
+ data says". It is the first candidate for a data story for the public, ahead of Gazette and
19
+ Ledger.
20
+
21
+ ## When it is the wrong choice
22
+
23
+ It fails for an internal, dense review where people read tables line by line (Ledger), for a pitch
24
+ (Signal or Neo-Brutalism), for a lecture that builds an argument step by step (Chalk) and for a
25
+ written report that happens to be a deck (Paper or Gazette). It is wrong when there are no figures:
26
+ the grey-and-orange charts are the voice.
27
+
28
+ ## Tokens
29
+
30
+ The values below come from the pack file and are what the engine draws.
31
+
32
+ | Token | Value |
33
+ |---|---|
34
+ | ground / surface | #FBFAF7 / #EEEDEA |
35
+ | ink / ink-muted / line | #111111 / #55534D / #CCCAC5 |
36
+ | accent / accent-deep / accent-tint | #C2410C / #7C2A08 / #FBE3D3 |
37
+ | field / on-field | #111111 / #FFFFFF |
38
+ | positive / negative | #1F6B3A / #111111 |
39
+ | series | #C2410C, #77746C, #2F5D8A, #111111 |
40
+ | faces | Pretendard Bold for display, title, labels and numerals, Pretendard Regular for body; `faces: a2z` swaps to A2Z Bold display, titles and numerals |
41
+ | ramp / hero | compact (body 13 pt, labels 11, sources 9) / hero step (60 pt) on cover and statement titles that fit, off with `hero: false`; figures at most title size |
42
+ | density / variance | 10 / 6 |
43
+ | radius / edge | 0 / fill |
44
+ | decoration | hairline rules, column hairlines, kicker numerals; the masthead band is the `band` title |
45
+ | table | open, no header fill, a rule under the header, bold totals |
46
+ | chart | horizontal gridlines, direct labels, the accent on the story's series over greys |
47
+
48
+ The orange holds 5.2:1 on the paper, so it can set a kicker word or a figure. The second series is a
49
+ warm grey, the third a quiet blue for the one line a story compares against. Rules and surfaces are
50
+ neutral greys: a warm-tinted rule reads as a second hue family beside the orange. A loss uses ink
51
+ with a ▼ sign.
52
+
53
+ ## QA allowances
54
+
55
+ None beyond the default craft floor. The source line under every figure is the house rule here,
56
+ and the gate's source checks already ask for it.
57
+
58
+ ## Treatments by slide role
59
+
60
+ Data slides take `band` (the title in white on the black masthead band across the top);
61
+ data-with-takeaway and image slides take `bottom-anchor` (the title over a heavy black rule); content, reference and definition slides take `top-rule`; sequences
62
+ `kicker-numeral`; statements `statement`. Every treatment draws in the slide grid's one title zone,
63
+ so a band, a bottom-anchor and a top-rule title sit at the same place and only their surface or
64
+ rule differs.
65
+ Force one with `title: <id>` on the line after `layout:`.
66
+
67
+ ## Families and variants
68
+
69
+ - `full-chart` gives one chart the whole body; `chart-insight` sets it beside two or three lines.
70
+ - `kpi-over-chart` puts the headline figures over the chart they come from.
71
+ - `big-number` and `kpi-row` carry a single figure or three.
72
+ - `figure-pair` sets two charts side by side for a before and after.
73
+ - `table-insight`, `comparison` and `timeline` hold the few tables and dates a story needs.
74
+ - `image-split`, `text-two-column` and `sidebar-note` explain a method or a term.
75
+ - `references-appendix` lists the sources at the end; `quote` and `statement` hold a resident's
76
+ sentence or the story's one finding.
77
+
78
+ Covers are `cover-typographic`, `cover-figures` and `cover-index`; sections are `section-rule` and
79
+ `section-numeral`; closings are `closing-summary-list`, `closing-statement` and `closing-ask`.
80
+
81
+ Display slides. The typographic cover sets the deck title in white on the black masthead band,
82
+ with the meta line on the band and the deck's parts on the paper under it. A statement stands between two rules. A big number sits on the orange tint. A closing's next
83
+ step stands under a rule. A deck index runs along the top of the display slides.
84
+
85
+ ## Do
86
+
87
+ - Name the topic and its period in the title; put the finding (what changed, by how much, since
88
+ when) in the first line of the body, where the gate expects a claim.
89
+ - Colour one series orange and leave the rest grey.
90
+ - Put the source and the period under every chart and table.
91
+ - Label lines and bars directly; a legend is for a chart that cannot take labels.
92
+
93
+ ## Avoid
94
+
95
+ - More than one highlighted series on a chart.
96
+ - A chart without its source and period.
97
+ - 3D, gradients or pictograms standing in for numbers.
98
+ - This direction for a pitch, a lecture or an internal dense review.
99
+
100
+ ## Two worked slides
101
+
102
+ A full chart names its topic in the title, keeps one orange line and states the finding under it.
103
+
104
+ ```markdown
105
+ ---
106
+ layout: full-chart
107
+
108
+ ## 매매가 대비 전셋값 비율, 2023-2026년
109
+
110
+ ::: chart type=line unit="%"
111
+ | 연도 | 우리 구 (%) | 시 평균 (%) |
112
+ |---|---|---|
113
+ | 2023년 | 55.2 | 56.0 |
114
+ | 2024년 | 57.1 | 56.8 |
115
+ | 2025년 | 59.4 | 57.9 |
116
+ | 2026년 | 61.3 | 58.6 |
117
+ > 매매가 대비 전셋값 비율, 해마다 6월 (예시 자료)
118
+ :::
119
+
120
+ - 우리 구의 전셋값이 처음으로 매매가의 60%를 넘었다
121
+ - 출처: 예시 구청 주택 통계, 2026년 (예시)
122
+ ---
123
+ ```
124
+
125
+ A KPI row carries three figures over what each means.
126
+
127
+ ```markdown
128
+ ---
129
+ layout: kpi-row
130
+
131
+ ## 주민 설문 결과, 2026년 9월
132
+
133
+ | 응답자 | 이사 계획 | 첫째 이유 |
134
+ |---|---|---|
135
+ | 1,204명 | 31% | 주거비 |
136
+ | 9월 1-20일, 온라인·방문 | 2년 안에 이사할 생각 | 이사 계획자의 47% |
137
+
138
+ - 출처: 예시 구 주거 실태 설문, 2026년 (예시)
139
+ ---
140
+ ```
141
+
142
+ ## Examples
143
+
144
+ `17-public-data-briefing-newsroom-ko.md`
@@ -34,7 +34,7 @@ is dark from cover to closing. Pack file: `templates/tonalities/night/pack.yaml`
34
34
  ## Type
35
35
 
36
36
  Pretendard throughout. Compact ramp at density 10; display tracks tight (−2). On a
37
- dark ground thin light type below 18 pt is avoided, which is why Night never uses a light weight.
37
+ dark ground thin light type below 18 pt is avoided, which is why Night never uses a light weight. Cover and statement titles take the hero step (60 pt) when their words fit; `hero: false` in the front matter turns it off. A figure is never larger than a title.
38
38
 
39
39
  ## Dials
40
40
 
@@ -31,7 +31,7 @@ method". Pack file: `templates/tonalities/paper/pack.yaml`.
31
31
 
32
32
  ## Type
33
33
 
34
- Pretendard throughout. Compact ramp at density 10; titles at normal tracking.
34
+ Pretendard throughout. Compact ramp at density 10; titles at normal tracking. Cover and statement titles take the hero step (60 pt) when their words fit; `hero: false` in the front matter turns it off. A figure is never larger than a title.
35
35
 
36
36
  ## Dials
37
37
 
@@ -50,7 +50,7 @@ Density 10, variance 5: up to four of its four treatments.
50
50
  | reference | top-rule |
51
51
  | definition | side-rail |
52
52
 
53
- Treatments: top-rule, bottom-anchor, side-rail, statement. There is no accent bar: a top-rule title
53
+ Treatments: top-rule, bottom-anchor (the title closed by a heavy rule over a picture that takes the body's full height), side-rail, statement. There is no accent bar: a top-rule title
54
54
  always sits on a full-width hairline. A comparison is drawn as a ruled table under a `top-rule` title
55
55
  (`structure: comparison: top-rule`), kept even when the deck already leans on that title. Statements, covers and closings are drawn with `rules`:
56
56
  hairlines above and below, like a journal title page.
@@ -0,0 +1,137 @@
1
+ # Riso
2
+
3
+ Riso is the direction for a community, culture or education programme: a workshop, a festival, a
4
+ library or museum programme, a student club, a nonprofit's year in review. It prints in two spot
5
+ inks on warm paper, the look of a risograph poster. Teal fills the cover, the section openers and
6
+ the statements edge to edge and runs as a band behind the title of a data page; pink marks the one
7
+ word or figure that matters on a content page. Everything else is dark-blue type, grey cards and
8
+ grey rules, so the two inks are the only colours on the paper.
9
+
10
+ ## When to use it
11
+
12
+ Reach for Riso when the audience is the public or a community rather than a board: a workshop or
13
+ class opener, a festival or exhibition programme, a library, museum or youth-centre season, a
14
+ volunteer briefing, a club's recruiting talk, a nonprofit's annual gathering. The content signals
15
+ that point here are a programme with dates and places, a few counts (participants, sessions,
16
+ volunteers), steps for taking part and words such as 워크숍, 프로그램, 축제, 동아리, 도서관, 주민,
17
+ 참여, 자원봉사, community, programme or zine. It is the first candidate for a community, culture or
18
+ education programme, ahead of Studio and Bauhaus.
19
+
20
+ ## When it is the wrong choice
21
+
22
+ It fails for a board, finance or public-sector report, where two bright inks read as unserious, and
23
+ for a dense data review (Ledger) or a data story for the general public that lives on its charts
24
+ (Newsroom). It is wrong for grief, safety or financial-loss topics. For a design-history lecture,
25
+ Bauhaus; for a pitch, Signal or Neo-Brutalism.
26
+
27
+ ## Tokens
28
+
29
+ The values below come from the pack file and are what the engine draws.
30
+
31
+ | Token | Value |
32
+ |---|---|
33
+ | ground / surface | #F5F0E6 / #E4E2DE |
34
+ | ink / ink-muted / line | #1C2433 / #4E5361 / #C4C1BB |
35
+ | accent / accent-deep / accent-tint | #D1206B / #8A1043 / #F8D5E3 |
36
+ | field / on-field | #00727A / #FFFFFF |
37
+ | positive / negative | #1D6B45 / #1C2433 |
38
+ | series | #D1206B, #00727A, #1C2433, #8A6A00 |
39
+ | faces | Pretendard Bold for display, title, labels and numerals, Pretendard Regular for body; `faces: a2z` swaps to A2Z Bold display, titles and numerals |
40
+ | ramp / hero | compact (body 13 pt, labels 11, sources 9) / hero step (60 pt) on cover and statement titles that fit, off with `hero: false`; figures at most title size |
41
+ | density / variance | 10 / 7 |
42
+ | radius / edge | 6 / fill |
43
+ | decoration | a pink underline under top titles, teal colour fields, kicker numerals |
44
+ | table | a pink-tint header, a rule under it, grey banding, bold totals |
45
+ | chart | no gridlines, direct labels, the accent on the highlighted series over muted ones |
46
+
47
+ The pink is the fluorescent ink darkened until it holds 4.5:1 on the paper, so it can set a word;
48
+ the teal holds white type at 5.6:1. A loss uses ink with a ▼ sign, since pink is the accent. The
49
+ fourth series colour is an ochre that holds 3:1 on the paper.
50
+
51
+ ## QA allowances
52
+
53
+ Teal and pink share a content slide inside the default OF-101 limit, since a band title in teal over
54
+ a pink figure is the two-ink print this pack imitates; the two inks are the register, not a gate limit. The surface and
55
+ the rules are grey on purpose: a warm beige card would read as a third hue family and fail.
56
+
57
+ ## Treatments by slide role
58
+
59
+ Content, image and data-with-takeaway slides take `top-plain-large` (a large title over a pink
60
+ underline); data and reference slides take `band` (the title in white on a teal band across the top);
61
+ sequences `kicker-numeral`; definitions `side-rail`; statements `statement`. Every treatment draws
62
+ in the slide grid's one title zone, so a band and a plain title sit at the same place and only
63
+ their surface differs. Force one with `title: <id>` on the line after `layout:`.
64
+
65
+ ## Families and variants
66
+
67
+ - `agenda` opens a programme with its sessions; `timeline` sets the season by date.
68
+ - `process` and `step-diagram` show how to take part, in three to five steps.
69
+ - `kpi-row` and `big-number` carry the few counts such a deck has (people, sessions, books).
70
+ - `summary-box-list`, `sidebar-note` and `text-two-column` explain what each session gives.
71
+ - `comparison` reads two tracks or two age groups side by side.
72
+ - `image-split` and `photo-grid` show last year's sessions; `chart-insight` and `table-insight` hold
73
+ a small result.
74
+ - `quote` sets a participant's sentence; `statement` holds the programme's one idea.
75
+
76
+ Covers are `cover-typographic`, `cover-numeral` and `cover-split-field`; sections are
77
+ `section-field` and `section-numeral`; closings are `closing-ask`, `closing-summary-list` and
78
+ `closing-statement`.
79
+
80
+ Display slides. The typographic cover drenches the page in teal and sets the title in white on the
81
+ cover's title zone, with the meta line above and the parts across the strip. A statement and a
82
+ section opener take the same teal drench. A big number sits on a teal panel. A closing's next step
83
+ stands on a teal band across the body floor.
84
+
85
+ ## Do
86
+
87
+ - Keep full teal fields on display slides; on a content page teal is the title band and nothing more.
88
+ - Let pink mark one word or one figure on a content slide.
89
+ - Give every session a date, a place and who it is for.
90
+ - Write the way the organisers talk to participants: short, plain and inviting.
91
+
92
+ ## Avoid
93
+
94
+ - A third ink beside pink and teal (black is the type, not an ink).
95
+ - The fluorescent pink as text; the darkened accent is the type colour.
96
+ - Gradients, grain or halftone painted to fake the print.
97
+ - This direction for a board, finance, public-sector or sensitive topic.
98
+
99
+ ## Two worked slides
100
+
101
+ A process slide shows how to take part, one step per row.
102
+
103
+ ```markdown
104
+ ---
105
+ layout: process
106
+
107
+ ## 참여는 이렇게: 신청부터 첫 모임까지
108
+
109
+ - **1. 신청** 10월 31일까지 도서관 누리집에서 한 사람씩 신청한다
110
+ - **2. 안내 문자** 모임 사흘 전 장소와 준비물을 문자로 받는다
111
+ - **3. 첫 모임** 11월 7일 저녁 7시, 3층 다목적실에서 만난다
112
+ - **4. 소모임 배정** 첫 모임에서 관심사별로 다섯 명씩 나눈다
113
+ - 출처: 예시 도서관 운영 계획, 2026년 (예시)
114
+ ---
115
+ ```
116
+
117
+ A KPI row carries last season's counts, with what they mean under each.
118
+
119
+ ```markdown
120
+ ---
121
+ layout: kpi-row
122
+
123
+ ## 지난 시즌, 숫자로 본 우리 모임
124
+
125
+ | 참가자 | 모임 | 만든 책자 |
126
+ |---|---|---|
127
+ | 148명 | 24회 | 6권 |
128
+ | 2025년 가을·겨울 | 주 1회, 12주씩 두 번 | 소모임별 1권 |
129
+
130
+ - 참가자의 절반이 처음 온 주민이었다
131
+ - 출처: 예시 도서관 운영 보고, 2026년 (예시)
132
+ ---
133
+ ```
134
+
135
+ ## Examples
136
+
137
+ `16-community-programme-riso-ko.md`
@@ -37,7 +37,7 @@ Because the accent is red, a loss is never red here; write the sign (`▼ 4%`, `
37
37
  ## Type
38
38
 
39
39
  Pretendard throughout; A2Z only on request. Compact ramp at density 10 (body 13, title 26,
40
- display 36). Display text tracks tighter (−2) than titles (−1).
40
+ display 36). Display text tracks tighter (−2) than titles (−1). Cover and statement titles take the hero step (60 pt) when their words fit; `hero: false` in the front matter turns it off. A figure is never larger than a title.
41
41
 
42
42
  ## Dials
43
43
 
@@ -96,7 +96,7 @@ a list.
96
96
  three evidence lines; a KPI row carries five figures with their comparisons.
97
97
  - A mid-deck statement slide needs its one support line, or the composition check reports the
98
98
  page as nearly empty.
99
- - Keep bullet lists to four items; Signal's own avoid list says so.
99
+ - Let each bullet carry a number or a name; split a long list into labelled groups.
100
100
  - Two lines of display text at most per title.
101
101
 
102
102
  ## Avoid
@@ -104,7 +104,7 @@ a list.
104
104
  - Red for losses (losses carry `▼` in ink).
105
105
  - More than two lines of display text.
106
106
  - Cards.
107
- - Bullet lists longer than four items.
107
+ - A long bullet list with no groups.
108
108
 
109
109
  ## A sample fragment
110
110
 
@@ -1,7 +1,7 @@
1
1
  # Studio
2
2
 
3
- Studio is a magazine spread. The 12-column grid is visible as fine column hairlines, titles live in
4
- a side rail or open a page at large size, splits are asymmetric, real numbers are set prominently on
3
+ Studio is a magazine spread. The 12-column grid is visible as fine column hairlines, titles carry a
4
+ bar in the left margin or open a page at display size, splits are asymmetric, real numbers are set prominently on
5
5
  tinted panels, and a dark ochre accent marks the one thing to look at. Pack file:
6
6
  `templates/tonalities/studio/pack.yaml`.
7
7
 
@@ -32,7 +32,7 @@ tinted panels, and a dark ochre accent marks the one thing to look at. Pack file
32
32
 
33
33
  ## Type
34
34
 
35
- Pretendard throughout. Compact ramp at density 10; display tracks tight (−2).
35
+ Pretendard throughout. Compact ramp at density 10; display tracks tight (−2). Cover and statement titles take the hero step (60 pt) when their words fit; `hero: false` in the front matter turns it off. A figure is never larger than a title.
36
36
 
37
37
  ## Dials
38
38
 
@@ -52,9 +52,8 @@ title variety of the eight.
52
52
  | reference | side-rail |
53
53
  | definition | side-rail |
54
54
 
55
- An image slide takes the side rail: the picture across columns 5-12 and its facts and source in the
56
- rail under the title, an asymmetric split that differs from the bottom title Atlas or Paper would
57
- give the same slide.
55
+ An image slide takes the side rail: the picture and its facts split unevenly in the body under the
56
+ title.
58
57
 
59
58
  Treatments: side-rail, statement, top-plain-large, bottom-anchor, overlay. The statement is drawn
60
59
  `rules`: the sentence on the open page between a hairline above it and one under its support line
@@ -90,6 +89,8 @@ column-hairlines, numeral, rail-fill, colour-field, caption-band.
90
89
 
91
90
  ## Writing for Studio
92
91
 
92
+ - Keep titles short: about 29 Korean glyphs per line at reading size and two lines at most; a longer
93
+ title moves the slide to another treatment.
93
94
  - Alternate: an image slide, a numbers slide, a text slide. Studio's variance rewards a deck whose
94
95
  slides genuinely differ in job.
95
96
  - `text-two-column` needs four to six groups with two or three sub-points each to fill both columns
@@ -19,6 +19,7 @@ const commands = {
19
19
  embed: ["python", "scripts/embed_fonts.py"],
20
20
  learn: ["python", "scripts/learn_template.py"],
21
21
  validate: ["python", "scripts/validate_pptx.py"],
22
+ render: ["python", "scripts/render_pages.py"],
22
23
  };
23
24
 
24
25
  // Windows: Node refuses to spawn a .cmd shim without a shell (spawn EINVAL) and a bare name never
@@ -76,6 +77,6 @@ if (command === "doctor") {
76
77
  const env = kind === "node" ? { ...process.env, NODE_PATH: path.join(nodeRoot, "node_modules") } : { ...process.env, PYTHONDONTWRITEBYTECODE: "1" };
77
78
  run(binary, [path.join(root, script), ...args], { env, cwd: process.cwd() });
78
79
  } else {
79
- console.error("Usage: node run.mjs <compile|qa|embed|learn|validate|doctor> [arguments]");
80
+ console.error("Usage: node run.mjs <compile|qa|embed|learn|validate|render|doctor> [arguments]");
80
81
  process.exit(2);
81
82
  }
@@ -148,7 +148,7 @@ async function resolveAndRender(ast, templateName, outputs, options = {}) {
148
148
  const meta = (ast.deck && ast.deck.metadata) || {};
149
149
  const tonality = options.tonality || meta.tonality || null;
150
150
  const templateObj = tonality
151
- ? templateRegistry.loadTonality(tonality, { density: meta.density, variance: meta.variance, canvas: meta.canvas, faces: options.faces || meta.faces })
151
+ ? templateRegistry.loadTonality(tonality, { density: meta.density, variance: meta.variance, canvas: meta.canvas, faces: options.faces || meta.faces, hero: meta.hero, decoration: meta.decoration })
152
152
  : templateRegistry.loadTemplate(templateName);
153
153
  if (tonality) {
154
154
  const d = templateObj.pack.dials;
@@ -4,10 +4,10 @@
4
4
  "accentSaturationMin": 0.12,
5
5
  "accentHueBucketDegrees": 20,
6
6
  "fullBleedFraction": 0.92,
7
- "contentAccentMedium": 2,
8
- "contentAccentHigh": 3,
9
- "displayAccentMedium": 3,
10
- "displayAccentHigh": 4,
7
+ "contentAccentMedium": 5,
8
+ "contentAccentHigh": 5,
9
+ "displayAccentMedium": 5,
10
+ "displayAccentHigh": 5,
11
11
  "captionPt": 10.5,
12
12
  "displayPt": 30,
13
13
  "bodyLatinCharsMax": 90,
@@ -58,11 +58,7 @@
58
58
  "outputAnchorTolPt": 1,
59
59
  "outputWideBlockShare": 0.7,
60
60
  "outputEvenColumns": 0.85,
61
- "outputRegionFloorGapPt": 12,
62
61
  "outputRegionEmptyShare": 0.4,
63
- "outputSiblingMinDiffer": 1,
64
- "outputSiblingMinDifferLong": 2,
65
- "outputSiblingLongDeck": 4,
66
62
  "figureGroundLuminanceMax": 0.25,
67
63
  "figureNearWhite": 235,
68
64
  "figureLightShare": 0.5,