videowright 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 (306) hide show
  1. package/README.md +91 -0
  2. package/dist/cli/argv.d.ts +28 -0
  3. package/dist/cli/argv.d.ts.map +1 -0
  4. package/dist/cli/argv.js +115 -0
  5. package/dist/cli/argv.js.map +1 -0
  6. package/dist/cli/bin.d.ts +7 -0
  7. package/dist/cli/bin.d.ts.map +1 -0
  8. package/dist/cli/bin.js +10 -0
  9. package/dist/cli/bin.js.map +1 -0
  10. package/dist/cli/dev.d.ts +19 -0
  11. package/dist/cli/dev.d.ts.map +1 -0
  12. package/dist/cli/dev.js +104 -0
  13. package/dist/cli/dev.js.map +1 -0
  14. package/dist/cli/discover.d.ts +29 -0
  15. package/dist/cli/discover.d.ts.map +1 -0
  16. package/dist/cli/discover.js +104 -0
  17. package/dist/cli/discover.js.map +1 -0
  18. package/dist/cli/discover_project.d.ts +29 -0
  19. package/dist/cli/discover_project.d.ts.map +1 -0
  20. package/dist/cli/discover_project.js +108 -0
  21. package/dist/cli/discover_project.js.map +1 -0
  22. package/dist/cli/errors.d.ts +10 -0
  23. package/dist/cli/errors.d.ts.map +1 -0
  24. package/dist/cli/errors.js +13 -0
  25. package/dist/cli/errors.js.map +1 -0
  26. package/dist/cli/ffmpeg.d.ts +57 -0
  27. package/dist/cli/ffmpeg.d.ts.map +1 -0
  28. package/dist/cli/ffmpeg.js +122 -0
  29. package/dist/cli/ffmpeg.js.map +1 -0
  30. package/dist/cli/index.d.ts +7 -0
  31. package/dist/cli/index.d.ts.map +1 -0
  32. package/dist/cli/index.js +152 -0
  33. package/dist/cli/index.js.map +1 -0
  34. package/dist/cli/playwright_check.d.ts +44 -0
  35. package/dist/cli/playwright_check.d.ts.map +1 -0
  36. package/dist/cli/playwright_check.js +20 -0
  37. package/dist/cli/playwright_check.js.map +1 -0
  38. package/dist/cli/prompt.d.ts +13 -0
  39. package/dist/cli/prompt.d.ts.map +1 -0
  40. package/dist/cli/prompt.js +47 -0
  41. package/dist/cli/prompt.js.map +1 -0
  42. package/dist/cli/render.d.ts +60 -0
  43. package/dist/cli/render.d.ts.map +1 -0
  44. package/dist/cli/render.js +471 -0
  45. package/dist/cli/render.js.map +1 -0
  46. package/dist/cli/script_cmd.d.ts +26 -0
  47. package/dist/cli/script_cmd.d.ts.map +1 -0
  48. package/dist/cli/script_cmd.js +88 -0
  49. package/dist/cli/script_cmd.js.map +1 -0
  50. package/dist/cli/time_shim.d.ts +44 -0
  51. package/dist/cli/time_shim.d.ts.map +1 -0
  52. package/dist/cli/time_shim.js +390 -0
  53. package/dist/cli/time_shim.js.map +1 -0
  54. package/dist/cli/ts_loader.d.ts +28 -0
  55. package/dist/cli/ts_loader.d.ts.map +1 -0
  56. package/dist/cli/ts_loader.js +95 -0
  57. package/dist/cli/ts_loader.js.map +1 -0
  58. package/dist/cli/vite_helpers.d.ts +62 -0
  59. package/dist/cli/vite_helpers.d.ts.map +1 -0
  60. package/dist/cli/vite_helpers.js +273 -0
  61. package/dist/cli/vite_helpers.js.map +1 -0
  62. package/dist/index.d.ts +11 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +14 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/player/hash_router.d.ts +23 -0
  67. package/dist/player/hash_router.d.ts.map +1 -0
  68. package/dist/player/hash_router.js +49 -0
  69. package/dist/player/hash_router.js.map +1 -0
  70. package/dist/player/hud.d.ts +33 -0
  71. package/dist/player/hud.d.ts.map +1 -0
  72. package/dist/player/hud.js +357 -0
  73. package/dist/player/hud.js.map +1 -0
  74. package/dist/player/index.d.ts +123 -0
  75. package/dist/player/index.d.ts.map +1 -0
  76. package/dist/player/index.js +848 -0
  77. package/dist/player/index.js.map +1 -0
  78. package/dist/player/input.d.ts +14 -0
  79. package/dist/player/input.d.ts.map +1 -0
  80. package/dist/player/input.js +90 -0
  81. package/dist/player/input.js.map +1 -0
  82. package/dist/player/slot.d.ts +22 -0
  83. package/dist/player/slot.d.ts.map +1 -0
  84. package/dist/player/slot.js +43 -0
  85. package/dist/player/slot.js.map +1 -0
  86. package/dist/player/transitions/cut.d.ts +7 -0
  87. package/dist/player/transitions/cut.d.ts.map +1 -0
  88. package/dist/player/transitions/cut.js +9 -0
  89. package/dist/player/transitions/cut.js.map +1 -0
  90. package/dist/player/transitions/fade.d.ts +7 -0
  91. package/dist/player/transitions/fade.d.ts.map +1 -0
  92. package/dist/player/transitions/fade.js +18 -0
  93. package/dist/player/transitions/fade.js.map +1 -0
  94. package/dist/player/transitions/index.d.ts +4 -0
  95. package/dist/player/transitions/index.d.ts.map +1 -0
  96. package/dist/player/transitions/index.js +4 -0
  97. package/dist/player/transitions/index.js.map +1 -0
  98. package/dist/player/transitions/slide.d.ts +6 -0
  99. package/dist/player/transitions/slide.d.ts.map +1 -0
  100. package/dist/player/transitions/slide.js +35 -0
  101. package/dist/player/transitions/slide.js.map +1 -0
  102. package/dist/script/index.d.ts +2 -0
  103. package/dist/script/index.d.ts.map +1 -0
  104. package/dist/script/index.js +2 -0
  105. package/dist/script/index.js.map +1 -0
  106. package/dist/script/script.d.ts +10 -0
  107. package/dist/script/script.d.ts.map +1 -0
  108. package/dist/script/script.js +41 -0
  109. package/dist/script/script.js.map +1 -0
  110. package/dist/segment/SegmentRunner.d.ts +52 -0
  111. package/dist/segment/SegmentRunner.d.ts.map +1 -0
  112. package/dist/segment/SegmentRunner.js +187 -0
  113. package/dist/segment/SegmentRunner.js.map +1 -0
  114. package/dist/segment/defineConfig.d.ts +6 -0
  115. package/dist/segment/defineConfig.d.ts.map +1 -0
  116. package/dist/segment/defineConfig.js +7 -0
  117. package/dist/segment/defineConfig.js.map +1 -0
  118. package/dist/segment/defineSegment.d.ts +7 -0
  119. package/dist/segment/defineSegment.d.ts.map +1 -0
  120. package/dist/segment/defineSegment.js +25 -0
  121. package/dist/segment/defineSegment.js.map +1 -0
  122. package/dist/segment/index.d.ts +5 -0
  123. package/dist/segment/index.d.ts.map +1 -0
  124. package/dist/segment/index.js +4 -0
  125. package/dist/segment/index.js.map +1 -0
  126. package/dist/timeline/index.d.ts +73 -0
  127. package/dist/timeline/index.d.ts.map +1 -0
  128. package/dist/timeline/index.js +142 -0
  129. package/dist/timeline/index.js.map +1 -0
  130. package/dist/timeline/loadAudioTrack.d.ts +18 -0
  131. package/dist/timeline/loadAudioTrack.d.ts.map +1 -0
  132. package/dist/timeline/loadAudioTrack.js +44 -0
  133. package/dist/timeline/loadAudioTrack.js.map +1 -0
  134. package/dist/timeline/loadVoiceover.d.ts +18 -0
  135. package/dist/timeline/loadVoiceover.d.ts.map +1 -0
  136. package/dist/timeline/loadVoiceover.js +38 -0
  137. package/dist/timeline/loadVoiceover.js.map +1 -0
  138. package/dist/timeline/resolveTiming.d.ts +28 -0
  139. package/dist/timeline/resolveTiming.d.ts.map +1 -0
  140. package/dist/timeline/resolveTiming.js +63 -0
  141. package/dist/timeline/resolveTiming.js.map +1 -0
  142. package/dist/timeline/validateTiming.d.ts +29 -0
  143. package/dist/timeline/validateTiming.d.ts.map +1 -0
  144. package/dist/timeline/validateTiming.js +62 -0
  145. package/dist/timeline/validateTiming.js.map +1 -0
  146. package/dist/types.d.ts +216 -0
  147. package/dist/types.d.ts.map +1 -0
  148. package/dist/types.js +6 -0
  149. package/dist/types.js.map +1 -0
  150. package/package.json +47 -0
  151. package/skill/SKILL.md +64 -0
  152. package/skill/assets/hello_world/PLAN.md +31 -0
  153. package/skill/assets/hello_world/README.md +27 -0
  154. package/skill/assets/hello_world/audio/audio_plan.md +14 -0
  155. package/skill/assets/hello_world/segments/hello_intro.ts +69 -0
  156. package/skill/assets/hello_world/segments/hello_outro.ts +71 -0
  157. package/skill/assets/hello_world/timeline.ts +15 -0
  158. package/skill/assets/hello_world/voiceover_script/script.md +10 -0
  159. package/skill/assets/install/package.json +10 -0
  160. package/skill/assets/install/tsconfig.json +23 -0
  161. package/skill/assets/styles/editorial-mono/STYLE.md +124 -0
  162. package/skill/assets/styles/editorial-mono/brand.md +85 -0
  163. package/skill/assets/styles/editorial-mono/reference/animations.jsx +752 -0
  164. package/skill/assets/styles/editorial-mono/reference/scenes.html +563 -0
  165. package/skill/assets/styles/editorial-mono/sample/bullet.ts +101 -0
  166. package/skill/assets/styles/editorial-mono/sample/content.ts +104 -0
  167. package/skill/assets/styles/editorial-mono/sample/cta.ts +113 -0
  168. package/skill/assets/styles/editorial-mono/sample/feature.ts +111 -0
  169. package/skill/assets/styles/editorial-mono/sample/grid.ts +97 -0
  170. package/skill/assets/styles/editorial-mono/sample/kinetic.ts +96 -0
  171. package/skill/assets/styles/editorial-mono/sample/section.ts +101 -0
  172. package/skill/assets/styles/editorial-mono/sample/stat.ts +128 -0
  173. package/skill/assets/styles/editorial-mono/sample/title.ts +97 -0
  174. package/skill/assets/styles/editorial-mono/sample/ui-showcase.ts +159 -0
  175. package/skill/assets/styles/editorial-mono/tokens.css +44 -0
  176. package/skill/assets/styles/iso-diagram/STYLE.md +109 -0
  177. package/skill/assets/styles/iso-diagram/brand.md +32 -0
  178. package/skill/assets/styles/iso-diagram/reference/animations.jsx +673 -0
  179. package/skill/assets/styles/iso-diagram/reference/scenes.html +427 -0
  180. package/skill/assets/styles/iso-diagram/sample/bullet.ts +144 -0
  181. package/skill/assets/styles/iso-diagram/sample/content.ts +192 -0
  182. package/skill/assets/styles/iso-diagram/sample/cta.ts +162 -0
  183. package/skill/assets/styles/iso-diagram/sample/feature.ts +205 -0
  184. package/skill/assets/styles/iso-diagram/sample/grid.ts +181 -0
  185. package/skill/assets/styles/iso-diagram/sample/kinetic.ts +102 -0
  186. package/skill/assets/styles/iso-diagram/sample/section.ts +149 -0
  187. package/skill/assets/styles/iso-diagram/sample/stat.ts +164 -0
  188. package/skill/assets/styles/iso-diagram/sample/title.ts +173 -0
  189. package/skill/assets/styles/iso-diagram/sample/ui-showcase.ts +162 -0
  190. package/skill/assets/styles/iso-diagram/tokens.css +40 -0
  191. package/skill/assets/styles/motion-engineering/STYLE.md +106 -0
  192. package/skill/assets/styles/motion-engineering/brand.md +29 -0
  193. package/skill/assets/styles/motion-engineering/reference/animations.jsx +673 -0
  194. package/skill/assets/styles/motion-engineering/reference/scenes.html +513 -0
  195. package/skill/assets/styles/motion-engineering/sample/bullet.ts +176 -0
  196. package/skill/assets/styles/motion-engineering/sample/content.ts +228 -0
  197. package/skill/assets/styles/motion-engineering/sample/cta.ts +209 -0
  198. package/skill/assets/styles/motion-engineering/sample/feature.ts +299 -0
  199. package/skill/assets/styles/motion-engineering/sample/grid.ts +190 -0
  200. package/skill/assets/styles/motion-engineering/sample/kinetic.ts +159 -0
  201. package/skill/assets/styles/motion-engineering/sample/section.ts +196 -0
  202. package/skill/assets/styles/motion-engineering/sample/stat.ts +230 -0
  203. package/skill/assets/styles/motion-engineering/sample/title.ts +219 -0
  204. package/skill/assets/styles/motion-engineering/sample/ui-showcase.ts +267 -0
  205. package/skill/assets/styles/motion-engineering/tokens.css +40 -0
  206. package/skill/assets/styles/neon-terminal/STYLE.md +105 -0
  207. package/skill/assets/styles/neon-terminal/brand.md +27 -0
  208. package/skill/assets/styles/neon-terminal/reference/animations.jsx +673 -0
  209. package/skill/assets/styles/neon-terminal/reference/scenes.html +387 -0
  210. package/skill/assets/styles/neon-terminal/sample/bullet.ts +113 -0
  211. package/skill/assets/styles/neon-terminal/sample/content.ts +117 -0
  212. package/skill/assets/styles/neon-terminal/sample/cta.ts +131 -0
  213. package/skill/assets/styles/neon-terminal/sample/feature.ts +112 -0
  214. package/skill/assets/styles/neon-terminal/sample/grid.ts +128 -0
  215. package/skill/assets/styles/neon-terminal/sample/kinetic.ts +105 -0
  216. package/skill/assets/styles/neon-terminal/sample/section.ts +96 -0
  217. package/skill/assets/styles/neon-terminal/sample/stat.ts +123 -0
  218. package/skill/assets/styles/neon-terminal/sample/title.ts +122 -0
  219. package/skill/assets/styles/neon-terminal/sample/ui-showcase.ts +127 -0
  220. package/skill/assets/styles/neon-terminal/tokens.css +39 -0
  221. package/skill/assets/styles/risograph/STYLE.md +110 -0
  222. package/skill/assets/styles/risograph/brand.md +26 -0
  223. package/skill/assets/styles/risograph/reference/animations.jsx +673 -0
  224. package/skill/assets/styles/risograph/reference/scenes.html +403 -0
  225. package/skill/assets/styles/risograph/sample/bullet.ts +124 -0
  226. package/skill/assets/styles/risograph/sample/content.ts +135 -0
  227. package/skill/assets/styles/risograph/sample/cta.ts +149 -0
  228. package/skill/assets/styles/risograph/sample/feature.ts +152 -0
  229. package/skill/assets/styles/risograph/sample/grid.ts +123 -0
  230. package/skill/assets/styles/risograph/sample/kinetic.ts +125 -0
  231. package/skill/assets/styles/risograph/sample/section.ts +130 -0
  232. package/skill/assets/styles/risograph/sample/stat.ts +145 -0
  233. package/skill/assets/styles/risograph/sample/title.ts +132 -0
  234. package/skill/assets/styles/risograph/sample/ui-showcase.ts +147 -0
  235. package/skill/assets/styles/risograph/tokens.css +39 -0
  236. package/skill/assets/styles/swiss-console/STYLE.md +107 -0
  237. package/skill/assets/styles/swiss-console/brand.md +37 -0
  238. package/skill/assets/styles/swiss-console/reference/animations.jsx +673 -0
  239. package/skill/assets/styles/swiss-console/reference/scenes.html +420 -0
  240. package/skill/assets/styles/swiss-console/sample/bullet.ts +122 -0
  241. package/skill/assets/styles/swiss-console/sample/content.ts +137 -0
  242. package/skill/assets/styles/swiss-console/sample/cta.ts +109 -0
  243. package/skill/assets/styles/swiss-console/sample/feature.ts +163 -0
  244. package/skill/assets/styles/swiss-console/sample/grid.ts +145 -0
  245. package/skill/assets/styles/swiss-console/sample/kinetic.ts +117 -0
  246. package/skill/assets/styles/swiss-console/sample/section.ts +127 -0
  247. package/skill/assets/styles/swiss-console/sample/stat.ts +148 -0
  248. package/skill/assets/styles/swiss-console/sample/title.ts +148 -0
  249. package/skill/assets/styles/swiss-console/sample/ui-showcase.ts +198 -0
  250. package/skill/assets/styles/swiss-console/tokens.css +39 -0
  251. package/skill/install/INSTALL.md +400 -0
  252. package/skill/references/audio/audio_plan.md +199 -0
  253. package/skill/references/audio/build.md +208 -0
  254. package/skill/references/audio/cue_template.md +219 -0
  255. package/skill/references/audio/ffmpeg_cookbook.md +267 -0
  256. package/skill/references/audio/music/music.md +171 -0
  257. package/skill/references/audio/music/providers/elevenlabs.md +170 -0
  258. package/skill/references/audio/music/providers/manual.md +140 -0
  259. package/skill/references/audio/music/providers/openverse.md +265 -0
  260. package/skill/references/audio/sfx/providers/elevenlabs.md +152 -0
  261. package/skill/references/audio/sfx/providers/manual.md +117 -0
  262. package/skill/references/audio/sfx/providers/openverse.md +243 -0
  263. package/skill/references/audio/sfx/sfx.md +149 -0
  264. package/skill/references/audio/styles.md +102 -0
  265. package/skill/references/audio/sync.md +237 -0
  266. package/skill/references/audio/voiceover/animation_sync.md +142 -0
  267. package/skill/references/audio/voiceover/provider_script.md +153 -0
  268. package/skill/references/audio/voiceover/providers/elevenlabs.md +288 -0
  269. package/skill/references/audio/voiceover/providers/manual.md +100 -0
  270. package/skill/references/audio/voiceover/script_writing.md +100 -0
  271. package/skill/references/audio/voiceover/style_intake.md +56 -0
  272. package/skill/references/audio/voiceover/sync_algorithm.md +167 -0
  273. package/skill/references/audio/voiceover.md +296 -0
  274. package/skill/references/audio.md +135 -0
  275. package/skill/references/authoring_segment.md +446 -0
  276. package/skill/references/create_or_edit_video.md +232 -0
  277. package/skill/references/dev_server.md +157 -0
  278. package/skill/references/export.md +145 -0
  279. package/skill/references/new_video.md +117 -0
  280. package/skill/references/project_structure.md +144 -0
  281. package/skill/references/setup.md +109 -0
  282. package/skill/references/setup_new_style.md +158 -0
  283. package/skill/references/styles.md +154 -0
  284. package/skill/references/testing.md +115 -0
  285. package/skill/references/types.md +240 -0
  286. package/src/cli/entry/components/copy_button.ts +42 -0
  287. package/src/cli/entry/components/download_modal.ts +204 -0
  288. package/src/cli/entry/components/empty_state.ts +55 -0
  289. package/src/cli/entry/components/hide_hud_tab.ts +37 -0
  290. package/src/cli/entry/components/icons.ts +31 -0
  291. package/src/cli/entry/components/top_bar.ts +69 -0
  292. package/src/cli/entry/components/video_card.ts +57 -0
  293. package/src/cli/entry/dev_frame.ts +189 -0
  294. package/src/cli/entry/entry_index.ts +16 -0
  295. package/src/cli/entry/entry_video.ts +24 -0
  296. package/src/cli/entry/index.html +12 -0
  297. package/src/cli/entry/parse_slug.ts +14 -0
  298. package/src/cli/entry/render.html +17 -0
  299. package/src/cli/entry/render_entry.ts +121 -0
  300. package/src/cli/entry/styles/base.css +45 -0
  301. package/src/cli/entry/styles/components.css +605 -0
  302. package/src/cli/entry/styles/tokens.css +44 -0
  303. package/src/cli/entry/video.html +22 -0
  304. package/src/cli/entry/views/homepage.ts +66 -0
  305. package/src/cli/entry/views/video_view.ts +286 -0
  306. package/src/cli/entry/virtual.d.ts +8 -0
@@ -0,0 +1,39 @@
1
+ /* Risograph — design tokens
2
+ * Two-color screen print. Fluorescent pink + ink blue on cream.
3
+ * Visible grain, slight misregistration, paper warmth.
4
+ */
5
+ :root {
6
+ --color-bg: #f2ebdc; /* warm uncoated cream */
7
+ --color-fg: #1a2a6a; /* riso ink blue */
8
+ --color-accent: #ff4f8b; /* fluorescent pink */
9
+
10
+ --color-muted: #4f5b8e;
11
+ --color-border: #1a2a6a;
12
+ --color-second: #ffc83d; /* riso yellow, sparingly */
13
+
14
+ --font-display: "Archivo Black", "Druk", sans-serif;
15
+ --font-body: "Archivo", "Inter", system-ui, sans-serif;
16
+ --font-mono: "JetBrains Mono", ui-monospace, monospace;
17
+
18
+ --space-sm: 12px;
19
+ --space-md: 24px;
20
+ --space-lg: 48px;
21
+ --space-xl: 96px;
22
+
23
+ --duration-fast: 140ms;
24
+ --duration-normal: 320ms;
25
+ --duration-slow: 640ms;
26
+
27
+ --radius-sm: 0px;
28
+ --radius-md: 0px;
29
+ --stagger: 70ms;
30
+ --ease-out: steps(6, end); /* stop-motion frames */
31
+ --ease-in: steps(6, end);
32
+ --scene-hold: 4s;
33
+
34
+ --safe-x: 120px;
35
+ --safe-y: 96px;
36
+
37
+ --misreg: 3px; /* color channel offset */
38
+ --grain-opacity: 0.18;
39
+ }
@@ -0,0 +1,107 @@
1
+ ---
2
+ title: Swiss Console
3
+ slug: swiss-console
4
+ picker_description: 'Strict 12-column grid. Hairline rules. Tabular numerals. Micro-labels everywhere.'
5
+ font_sources:
6
+ - https://api.fontshare.com/v2/css?f[]=switzer@400,500,600,700&display=swap
7
+ - https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap
8
+ mood: [precise, systematic, neutral, informational, dense]
9
+ good_for:
10
+ - Dev tools and SDKs
11
+ - Data products and dashboards
12
+ - Infrastructure and platform launches
13
+ - Fintech, trading, analytics
14
+ - Anything that benefits from showing structure
15
+ bad_for:
16
+ - Consumer apps needing warmth
17
+ - Brand/lifestyle launches
18
+ - Stories or narrative explainers (use Editorial Mono)
19
+ tags: [swiss, grid, grotesk, minimal, informational, light-mode]
20
+ references: [Pentagram, Linear marketing site, Vercel changelog, Stripe dashboard]
21
+ ---
22
+
23
+ # Swiss Console — STYLE.md
24
+
25
+ ## Identity
26
+
27
+ A precise, information-dense aesthetic. Helvetica-grade grotesk throughout. Strict 12-column grid. Hairline rules. Mono micro-labels anchor every element to the grid. One signal-red accent. Tabular numerals everywhere.
28
+
29
+ **Mood:** precise, systematic, neutral, informational, dense.
30
+
31
+ ## When to use
32
+
33
+ - Dev tools, SDKs, infrastructure launches
34
+ - Data products, dashboards, analytics
35
+ - Fintech and trading platforms
36
+ - Anything that benefits from showing its own structure
37
+
38
+ ## When to avoid
39
+
40
+ - Consumer apps needing warmth or whimsy
41
+ - Brand/lifestyle launches
42
+ - Slow narrative pieces → use Editorial Mono
43
+
44
+ ## Layout principles
45
+
46
+ - **12-column grid is law.** Every element snaps to a column. `--safe-x` is 96px each side; gutters are 24px.
47
+ - **Micro-labels above and beside everything.** `01 / 12`, `→ 03:12`, `FIG. 2.3` in mono uppercase, 12–14px, tracked +0.08em.
48
+ - **Hairline rules organize space.** Top rule, bottom rule, between-column rules. 1px `--color-border`.
49
+ - **Dense by design.** Multiple elements per scene is fine — this style *invites* density. Show structure.
50
+ - **Numerals are tabular.** `font-variant-numeric: tabular-nums` on anything numeric.
51
+
52
+ ## Color application
53
+
54
+ - White bg, graphite fg. No cream, no off-white.
55
+ - Red `--color-accent` is signal: highlights one number, one underline, one arrow. Never decorative.
56
+ - Muted gray for labels, captions, secondary type, less-important rows.
57
+ - Surface gray for cards, table headers, sidebars.
58
+
59
+ ## Type rules
60
+
61
+ - **Display = Body = Switzer.** One grotesk family. Variation via weight (400/500/600) and size, not family.
62
+ - Sizes: micro 14, body 18–24, headline 56–96, display 140–220. No serif anywhere.
63
+ - **Mono = JetBrains Mono.** Uppercase, tracked +0.08em, for labels and identifiers.
64
+ - Tabular numerals on any number that updates.
65
+
66
+ ## Motion principles
67
+
68
+ - **Slide on grid rails.** Elements enter by sliding 24–48px from a grid edge (right→left, top→bottom). Subtle.
69
+ - **Stagger = 60ms.** Many small staggered entries, not few big ones.
70
+ - **Number ticks.** Numbers count up with a digit-by-digit feel; pair with the value changing in tabular-num style.
71
+ - **Scene transitions = hard cut.** No fades. The page advances.
72
+ - **Forbidden:** spring, bounce, fade-up alone (must combine with grid-rail slide).
73
+ - **Ambient layer:** the grid itself can pulse subtly — a hairline rule sweeping right→left on idle scenes.
74
+
75
+ ## Pacing
76
+
77
+ Brisk. Scenes hold 3–4s. Information is the content — get to it.
78
+
79
+ ## Per-scene recipes
80
+
81
+ | Scene | Recipe |
82
+ |---|---|
83
+ | **Title** | Top-left micro-label (`01 / OVERVIEW`), top-right timestamp. Display headline at 200px, left-aligned, columns 1–8. Subtitle 28px, columns 1–6. |
84
+ | **Section** | Centered numeral `03` at 280px above a section name at 64px. Hairlines top + bottom of the slab. |
85
+ | **Kinetic** | One sentence, 80–96px, left-aligned, columns 1–10. Last word colored red. Optional `STATEMENT 02` micro-label. |
86
+ | **Bullet** | Numbered list with mono numerals in column 1, rule between, body in column 2–N. 5–6 items OK. |
87
+ | **Stat** | Big number columns 1–6 (180–280px), label columns 7–12. Optional sparkline below. Count-up over 720ms. |
88
+ | **Feature** | Three-column layout: icon/label, feature name, description. Micro-labels above each. |
89
+ | **Grid** | 4 or 6-column grid of small feature cards. Each has micro-label, name, 1-line desc. Cards staggered in. |
90
+ | **UI showcase** | Mock fills columns 2–11 with hairline frame. Callouts in remaining margins use mono labels with leader lines in red. |
91
+ | **Content** | Two-column body: heading columns 1–4, paragraph columns 5–12. |
92
+ | **CTA** | Bottom-right URL in mono, top-left micro-label `END / 10`, logo bottom-left. |
93
+
94
+ ### Connective elements
95
+
96
+ - **Lower third:** mono label bottom-left with hairline rule above
97
+ - **Scene transition:** hard cut. No flash, no fade.
98
+ - **Ambient:** optional sweeping hairline on long-held scenes
99
+
100
+ ## Pitfalls
101
+
102
+ - **Don't break the grid.** Off-grid placement reads as broken, not stylish.
103
+ - **Don't use serifs.** Anywhere. Ever.
104
+ - **Don't overuse the red.** One signal element per scene.
105
+ - **Don't soft-corner anything.** All corners 90°.
106
+ - **Don't fade between scenes.** Hard cut.
107
+ - **Don't skip the micro-labels.** They are the load-bearing element of the style.
@@ -0,0 +1,37 @@
1
+ # Swiss Console — Brand
2
+
3
+ Token rationale.
4
+
5
+ ## Color
6
+
7
+ **`--color-bg` `#FFFFFF`** — pure white. The Swiss page is paper-white; cream would soften the precision.
8
+
9
+ **`--color-fg` `#0A0A0A`** — near-black. Avoids absolute black so it reads as ink, not OLED.
10
+
11
+ **`--color-accent` `#E0301E`** — Swiss red. Signal color, used as an editor would: one mark per page.
12
+
13
+ **`--color-muted` `#6B7280`** — neutral mid-gray for the dense layer of mono labels and secondary type.
14
+
15
+ **`--color-border` `#E5E5E5`** — for hairline rules. Visible but never assertive.
16
+
17
+ **`--color-surface` `#F6F6F6`** — for table headers, sidebars, callout boxes. Almost imperceptible.
18
+
19
+ ## Typography
20
+
21
+ **Switzer** (Indian Type Foundry) is the closest free analogue to Söhne / GT America. Geometric grotesk with neutral character, designed for interface work.
22
+
23
+ **JetBrains Mono** for labels and identifiers. Tracked +0.08em uppercase gives a tertiary structural layer.
24
+
25
+ No serif anywhere. One grotesk family across all sizes — variation comes from weight and case, not from family-mixing.
26
+
27
+ ## Spacing
28
+
29
+ 12 / 24 / 48 / 96 scale. 24px is the gutter unit. The 12-column grid produces 132px columns at 1920 wide (after 96px margins each side).
30
+
31
+ ## Geometry
32
+
33
+ `--radius-sm/md = 0`. Swiss has no rounded corners. The grid is rectilinear.
34
+
35
+ ## Motion
36
+
37
+ Faster than Editorial Mono. 360ms standard entry. Slide-on-grid is the dominant move — fade alone is never enough.