luckiest-co 1.0.32 → 1.0.34

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 (478) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/commands/plan.md +1 -0
  4. package/package.json +1 -1
  5. package/skills/luckiest-plan/SKILL.md +1 -0
  6. package/skills/luckiest-research/CHANGELOG.md +5 -0
  7. package/skills/luckiest-research/SKILL.md +8 -4
  8. package/skills/luckiest-video-studio/ATTRIBUTION.md +11 -0
  9. package/skills/luckiest-video-studio/CHANGELOG.md +56 -0
  10. package/skills/luckiest-video-studio/SKILL.md +35 -7
  11. package/skills/luckiest-video-studio/references/audio.md +61 -10
  12. package/skills/luckiest-video-studio/references/lessons.md +44 -0
  13. package/skills/luckiest-video-studio/references/step-2-plan.md +32 -1
  14. package/skills/luckiest-video-studio/references/step-3-compose.md +28 -0
  15. package/skills/luckiest-video-studio/references/step-4-deliver.md +24 -1
  16. package/skills/luckiest-video-studio/references/storyboard.md +24 -3
  17. package/skills/luckiest-video-studio/scripts/qa.mjs +167 -5
  18. package/skills/luckiest-video-studio/scripts/qa.test.mjs +99 -1
  19. package/skills/luckiest-video-studio/scripts/render-scenes.mjs +196 -71
  20. package/skills/luckiest-video-studio/scripts/render-scenes.test.mjs +109 -0
  21. package/skills/luckiest-video-studio/scripts/sfx-cues.mjs +116 -0
  22. package/skills/luckiest-video-studio/scripts/sfx-cues.test.mjs +76 -0
  23. package/skills/luckiest-video-studio/scripts/stamp-format.mjs +26 -0
  24. package/skills/luckiest-video-studio/scripts/storyboard.schema.json +23 -0
  25. package/skills/luckiest-video-studio/templates/logo-line-draw.html +12 -5
  26. package/skills/luckiest-video-studio-art-director/ATTRIBUTION.md +1 -0
  27. package/skills/luckiest-video-studio-art-director/CHANGELOG.md +8 -0
  28. package/skills/luckiest-video-studio-art-director/SKILL.md +18 -5
  29. package/skills/luckiest-video-studio-cards/CHANGELOG.md +18 -0
  30. package/skills/luckiest-video-studio-cards/SKILL.md +22 -7
  31. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-agenda.html +17 -6
  32. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-bigtype.html +15 -5
  33. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-board.html +20 -6
  34. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-checklist.html +27 -6
  35. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-compare.html +40 -9
  36. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-deck.html +26 -6
  37. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-dossier.html +28 -9
  38. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-filmstrip.html +36 -5
  39. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-grid6.html +24 -6
  40. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-indexset.html +34 -6
  41. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-maplegend.html +39 -8
  42. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-matrix.html +35 -7
  43. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-numlist.html +26 -7
  44. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-outline.html +26 -6
  45. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-phases.html +34 -7
  46. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-quad.html +41 -10
  47. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-roadmap.html +66 -17
  48. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-stepper.html +42 -7
  49. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-toc.html +26 -8
  50. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-vtimeline.html +35 -9
  51. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-bracket.html +16 -4
  52. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-circle.html +21 -5
  53. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-classified.html +25 -7
  54. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-collage.html +27 -9
  55. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-correction.html +19 -7
  56. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-crt.html +15 -4
  57. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-cutout.html +18 -8
  58. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-fullbleed.html +18 -5
  59. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-highlight.html +15 -5
  60. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-indexcard.html +18 -5
  61. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-map.html +20 -8
  62. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-markerbox.html +12 -5
  63. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-numeral.html +21 -7
  64. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-split.html +25 -9
  65. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-stacked.html +26 -10
  66. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-stamp.html +14 -5
  67. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-ticker.html +26 -9
  68. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-tornstrip.html +13 -4
  69. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-annotated.html +29 -9
  70. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-arc.html +25 -7
  71. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-axis.html +34 -14
  72. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-bar.html +17 -8
  73. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-bracket.html +24 -8
  74. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-calendar.html +24 -9
  75. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-callout.html +24 -5
  76. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-columns.html +27 -9
  77. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-corner.html +22 -9
  78. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-dots.html +27 -8
  79. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-engraving.html +30 -8
  80. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-footnote.html +20 -8
  81. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-frac.html +24 -8
  82. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-heat.html +22 -8
  83. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-isotype.html +29 -8
  84. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-ledger.html +18 -6
  85. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-left.html +27 -10
  86. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-magnifier.html +21 -8
  87. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-map.html +21 -9
  88. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-meter.html +26 -9
  89. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-multiplier.html +27 -12
  90. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-odo.html +18 -5
  91. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-pack.html +41 -17
  92. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-photo.html +18 -7
  93. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-pie.html +25 -8
  94. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-postage.html +24 -8
  95. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-pricetag.html +25 -11
  96. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-quote.html +21 -8
  97. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-ranking.html +25 -10
  98. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-receipt.html +24 -12
  99. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-ribbon.html +34 -12
  100. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-semi.html +22 -7
  101. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-spotlight.html +23 -9
  102. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-stamp.html +24 -7
  103. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-steps.html +30 -9
  104. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-tape.html +33 -12
  105. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-torn.html +22 -9
  106. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-trend.html +23 -9
  107. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-vs.html +30 -10
  108. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-window.html +38 -25
  109. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat.html +23 -4
  110. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-timeline.html +41 -6
  111. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-label.html +10 -3
  112. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-bracket.html +9 -2
  113. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-caption.html +12 -5
  114. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-circle.html +10 -3
  115. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-definition.html +10 -3
  116. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-footnote.html +11 -4
  117. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-magnify.html +9 -2
  118. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-pin.html +9 -2
  119. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-pullquote.html +10 -3
  120. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-spotlight.html +15 -2
  121. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-sticky.html +9 -2
  122. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-tag.html +10 -3
  123. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-underline.html +9 -2
  124. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lower-third.html +9 -2
  125. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-badge.html +10 -3
  126. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-barslab.html +26 -7
  127. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-bracket.html +9 -2
  128. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-clapper.html +9 -2
  129. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-highlight.html +9 -2
  130. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-indextab.html +10 -3
  131. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-rail.html +9 -2
  132. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-ribbon.html +9 -2
  133. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-stacked.html +9 -2
  134. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-stamp.html +9 -2
  135. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-sticky.html +9 -2
  136. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-typecard.html +9 -2
  137. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/style.json +1 -1
  138. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/tokens.css +18 -8
  139. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-agenda.html +23 -5
  140. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-beforeafter.html +30 -6
  141. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-bento.html +34 -8
  142. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-bigleft.html +28 -6
  143. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-callouts.html +36 -7
  144. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-cardrow5.html +17 -4
  145. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-checklist.html +11 -3
  146. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-cycle.html +30 -6
  147. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-dashboard.html +32 -5
  148. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-deck2.html +21 -5
  149. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-deck3.html +18 -4
  150. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-duallist.html +24 -4
  151. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-featurecompare.html +19 -5
  152. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-featuregrid.html +25 -4
  153. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-flashcards.html +22 -5
  154. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-flow.html +23 -4
  155. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-funnel.html +19 -5
  156. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-gantt.html +22 -6
  157. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-grid6.html +17 -4
  158. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-grid9.html +15 -4
  159. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-iconlist.html +18 -3
  160. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-journey.html +41 -6
  161. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-kpirow.html +24 -6
  162. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-layers.html +20 -5
  163. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-legend.html +19 -4
  164. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-levels.html +19 -5
  165. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-logowall.html +18 -6
  166. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-mappoints.html +18 -5
  167. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-matrix.html +24 -6
  168. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-milestones.html +38 -5
  169. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-mindmap.html +35 -12
  170. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-nested.html +13 -5
  171. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-network.html +76 -31
  172. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-notifs.html +21 -3
  173. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-numlist.html +16 -4
  174. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-orgchart.html +36 -16
  175. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-outline.html +17 -3
  176. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-phases.html +23 -5
  177. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-pipeline.html +25 -4
  178. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-pricing.html +36 -8
  179. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-profiles.html +20 -5
  180. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-proscons.html +21 -6
  181. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-pyramid.html +17 -4
  182. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-quad.html +13 -5
  183. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-quotegrid.html +19 -5
  184. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-ranked.html +19 -5
  185. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-roadmap.html +27 -5
  186. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-spectrum.html +29 -6
  187. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-split3.html +24 -5
  188. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-spotlightcard.html +34 -8
  189. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-statgrid.html +17 -5
  190. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-steps.html +25 -4
  191. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-summary.html +22 -5
  192. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-tiercompare.html +29 -6
  193. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-timeline.html +26 -5
  194. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-toc.html +15 -5
  195. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-tree.html +40 -15
  196. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-tricards.html +22 -4
  197. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-venn.html +34 -9
  198. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-vstable.html +24 -5
  199. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-ascend.html +10 -4
  200. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-aurora-bars.html +12 -4
  201. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-beam.html +11 -4
  202. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-boxed.html +26 -13
  203. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-breath.html +14 -3
  204. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-chaptercard.html +13 -4
  205. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-column-light.html +17 -9
  206. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-constellation.html +15 -6
  207. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-countdown.html +10 -4
  208. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-curtain.html +9 -3
  209. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-dawn.html +13 -4
  210. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-depth.html +18 -12
  211. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-divider.html +10 -3
  212. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-drift-grid.html +11 -4
  213. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-duotone.html +16 -4
  214. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-eclipse.html +11 -4
  215. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-emblem.html +12 -5
  216. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-flare-sweep.html +14 -6
  217. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-glow-rule.html +22 -13
  218. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-gradient-word.html +15 -5
  219. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-gridfloor.html +16 -2
  220. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-halo.html +16 -5
  221. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-horizon.html +16 -4
  222. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-index.html +25 -9
  223. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-kinetic.html +10 -3
  224. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-lensflare.html +10 -3
  225. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-liquid.html +12 -5
  226. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-marquee.html +34 -25
  227. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-mesh.html +13 -4
  228. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-monolith.html +9 -3
  229. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-node-title.html +17 -1
  230. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-numeral.html +13 -4
  231. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-orb.html +12 -2
  232. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-orbit.html +9 -1
  233. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-particles.html +7 -1
  234. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-pill.html +7 -1
  235. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-portal.html +14 -2
  236. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-prism.html +15 -2
  237. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-question.html +14 -2
  238. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-quoteopen.html +11 -2
  239. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-reveal-mask.html +6 -1
  240. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-ribbon.html +12 -1
  241. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-ripple.html +8 -1
  242. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-searchbar.html +15 -2
  243. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-slab.html +9 -2
  244. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-sphere-top.html +12 -3
  245. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-split-reveal.html +24 -7
  246. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-splitpanel.html +27 -4
  247. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-spotlight-cone.html +16 -3
  248. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-spotlight.html +10 -2
  249. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-stack.html +17 -4
  250. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-stacked-words.html +14 -3
  251. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-starfield.html +7 -1
  252. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-sweep.html +11 -2
  253. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-tunnel.html +14 -4
  254. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-type-scale.html +9 -2
  255. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-typed.html +9 -2
  256. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-underline-grow.html +13 -1
  257. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-waveform.html +11 -2
  258. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-wordmark.html +11 -3
  259. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-annot.html +22 -7
  260. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-beforeafter.html +23 -6
  261. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-bigpercent.html +10 -3
  262. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-bracketstat.html +13 -3
  263. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-bubble.html +7 -3
  264. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-cbars.html +8 -3
  265. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-clockface.html +8 -4
  266. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-column.html +12 -4
  267. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-compass.html +7 -3
  268. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-counterpill.html +11 -3
  269. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-curve.html +22 -10
  270. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-delta.html +13 -4
  271. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-dial.html +9 -3
  272. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-donut.html +15 -4
  273. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-dotgrid.html +14 -4
  274. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-figure.html +9 -3
  275. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-fillshape.html +11 -3
  276. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-fraction.html +11 -5
  277. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-funnel.html +24 -8
  278. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-growtharrow.html +18 -4
  279. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-heatcell.html +8 -3
  280. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-isotype.html +16 -4
  281. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-layered.html +10 -3
  282. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-mega.html +9 -3
  283. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-meter.html +9 -4
  284. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-milestone.html +9 -3
  285. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-money.html +16 -4
  286. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-multiplier.html +12 -4
  287. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-multiring.html +10 -3
  288. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-needle.html +10 -3
  289. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-nodes.html +50 -9
  290. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-odometer.html +9 -4
  291. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-orbitmoons.html +21 -8
  292. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-orbitstat.html +9 -3
  293. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-pair.html +18 -3
  294. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-percentile.html +11 -3
  295. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-pictobar.html +11 -4
  296. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-polar.html +12 -2
  297. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-quotestat.html +15 -5
  298. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-radialbars.html +18 -6
  299. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-range.html +12 -5
  300. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-rank.html +13 -5
  301. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-ratio.html +10 -5
  302. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-ring.html +10 -3
  303. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-risewall.html +18 -2
  304. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-score.html +11 -4
  305. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-segbar.html +9 -3
  306. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-semigauge.html +9 -4
  307. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-sparkline.html +9 -3
  308. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-spectrum.html +9 -2
  309. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-split.html +14 -4
  310. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-stackedbars.html +9 -4
  311. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-tickerstat.html +18 -5
  312. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-tiles.html +18 -4
  313. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-timer.html +14 -4
  314. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-trendline.html +18 -4
  315. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-underscore.html +9 -3
  316. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-versus.html +18 -5
  317. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-waffle.html +18 -4
  318. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-waterfall.html +9 -4
  319. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-badge.html +13 -4
  320. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-brace.html +13 -4
  321. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-bracket.html +13 -4
  322. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-bubble.html +16 -4
  323. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-byline.html +17 -5
  324. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-callout.html +13 -4
  325. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-category.html +14 -5
  326. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-checkmark.html +13 -4
  327. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-chipstat.html +13 -4
  328. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-comparemini.html +14 -5
  329. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-coord.html +26 -8
  330. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-counter.html +17 -6
  331. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-crosshair.html +18 -6
  332. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-dashed.html +19 -5
  333. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-definition.html +14 -5
  334. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-deltachip.html +15 -6
  335. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-eyebrow.html +14 -5
  336. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-fact.html +14 -5
  337. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-flag.html +20 -7
  338. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-formula.html +17 -7
  339. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-hash.html +17 -5
  340. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-highlightbox.html +13 -4
  341. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-iconchip.html +13 -4
  342. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-info.html +14 -5
  343. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-infocard.html +13 -4
  344. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-keycap.html +13 -4
  345. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-keyword.html +12 -3
  346. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-leader.html +16 -5
  347. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-legend.html +14 -5
  348. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-measure.html +14 -5
  349. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-meterchip.html +16 -7
  350. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-metric.html +15 -6
  351. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-micropie.html +15 -6
  352. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-minibar.html +15 -6
  353. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-node.html +28 -18
  354. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-note.html +14 -5
  355. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-numbercallout.html +18 -6
  356. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-percent.html +15 -6
  357. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-pointer.html +31 -22
  358. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-price.html +20 -8
  359. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-progress.html +15 -6
  360. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-pulse.html +14 -5
  361. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-qmark.html +15 -6
  362. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-quote.html +16 -7
  363. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-rating.html +14 -5
  364. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-ribbon.html +19 -6
  365. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-ringmark.html +27 -17
  366. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-search.html +14 -5
  367. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-sparkchip.html +15 -6
  368. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-spec.html +25 -13
  369. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-status.html +15 -6
  370. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-step.html +16 -7
  371. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-tag.html +14 -5
  372. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-takeaway.html +13 -4
  373. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-tcode.html +18 -6
  374. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-timestamp.html +15 -6
  375. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-toast.html +15 -6
  376. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-tooltip.html +14 -5
  377. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-underline.html +14 -5
  378. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-warning.html +16 -7
  379. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-avatar.html +12 -5
  380. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-badgecard.html +12 -6
  381. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-barslide.html +11 -5
  382. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-bracket.html +20 -7
  383. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-brandbar.html +13 -7
  384. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-bug.html +12 -5
  385. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-capsule.html +14 -5
  386. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-chapterbar.html +12 -5
  387. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-chip.html +11 -5
  388. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-cinemastrip.html +20 -8
  389. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-cite.html +12 -6
  390. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-clockname.html +11 -5
  391. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-coordbar.html +16 -6
  392. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-corner.html +11 -5
  393. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-cornerframe.html +16 -6
  394. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-countbar.html +13 -7
  395. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-dividername.html +26 -6
  396. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-dotline.html +11 -5
  397. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-doublecard.html +12 -6
  398. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-dual.html +12 -6
  399. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-edgebar.html +11 -5
  400. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-flipcard.html +15 -5
  401. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-geopin.html +11 -5
  402. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-glasscard.html +11 -5
  403. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-gradient.html +11 -5
  404. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-gradientbar.html +12 -4
  405. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-handlebar.html +11 -5
  406. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-infochips.html +11 -5
  407. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-lensbar.html +25 -12
  408. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-live.html +12 -6
  409. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-location.html +14 -6
  410. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-logolock.html +14 -6
  411. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-micname.html +14 -6
  412. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-minicard.html +13 -5
  413. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-minimal.html +13 -5
  414. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-nameplate3d.html +13 -5
  415. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-neonframe.html +14 -5
  416. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-neonpill.html +13 -6
  417. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-nowplaying.html +15 -7
  418. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-orbitbadge.html +13 -5
  419. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-pill.html +14 -6
  420. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-portraitframe.html +14 -6
  421. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-progressname.html +13 -5
  422. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-quote.html +15 -7
  423. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-ratingname.html +14 -6
  424. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-ribbon.html +13 -5
  425. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-sidebracket.html +13 -5
  426. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-slidetab.html +15 -6
  427. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-social.html +14 -6
  428. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-spotlightname.html +14 -6
  429. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-stacked.html +13 -5
  430. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-statline.html +13 -5
  431. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-tagrow.html +14 -5
  432. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-thinstrip.html +18 -8
  433. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-ticker.html +29 -7
  434. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-titlebar.html +19 -5
  435. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-trust.html +16 -8
  436. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-typedname.html +13 -5
  437. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-underbar.html +13 -5
  438. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-waveband.html +14 -6
  439. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/tokens.css +18 -8
  440. package/skills/luckiest-video-studio-cards/packs/_blueprint/cards/tier1/t1-stat.html +4 -2
  441. package/skills/luckiest-video-studio-cards/packs/_blueprint/cards/tier2/t2-list.html +5 -2
  442. package/skills/luckiest-video-studio-cards/packs/_blueprint/tokens.css +12 -4
  443. package/skills/luckiest-video-studio-cards/references/card-contract.md +15 -1
  444. package/skills/luckiest-video-studio-cards/scripts/qa-cards.mjs +14 -8
  445. package/skills/luckiest-video-studio-cards/templates/glass-popout/index.html +35 -11
  446. package/skills/luckiest-video-studio-cards/templates/glass-popout/meta.json +6 -1
  447. package/skills/luckiest-video-studio-cards/templates/graph-paper/index.html +15 -10
  448. package/skills/luckiest-video-studio-cards/templates/graph-paper/meta.json +7 -2
  449. package/skills/luckiest-video-studio-motion/ATTRIBUTION.md +4 -0
  450. package/skills/luckiest-video-studio-motion/CHANGELOG.md +9 -0
  451. package/skills/luckiest-video-studio-motion/SKILL.md +7 -3
  452. package/skills/luckiest-video-studio-motion/references/vocabulary.md +21 -0
  453. package/skills/luckiest-video-studio-motion/templates/spring.js +50 -0
  454. package/skills/luckiest-video-studio-motion/templates/spring.test.mjs +51 -0
  455. package/skills/luckiest-video-studio-recreate/ATTRIBUTION.md +2 -0
  456. package/skills/luckiest-video-studio-recreate/CHANGELOG.md +11 -0
  457. package/skills/luckiest-video-studio-recreate/SKILL.md +46 -7
  458. package/skills/luckiest-video-studio-reel/CHANGELOG.md +6 -0
  459. package/skills/luckiest-video-studio-reel/SKILL.md +9 -4
  460. package/skills/luckiest-video-studio-reel/templates/reel.html +36 -18
  461. package/skills/luckiest-video-studio-reference/CHANGELOG.md +4 -0
  462. package/skills/luckiest-video-studio-reference/SKILL.md +10 -3
  463. package/skills/luckiest-video-studio-review/ATTRIBUTION.md +4 -0
  464. package/skills/luckiest-video-watcher/ATTRIBUTION.md +37 -0
  465. package/skills/luckiest-video-watcher/CHANGELOG.md +90 -0
  466. package/skills/luckiest-video-watcher/LICENSE-claude-video +21 -0
  467. package/skills/luckiest-video-watcher/SKILL.md +201 -0
  468. package/skills/luckiest-video-watcher/references/watch-guide.md +159 -0
  469. package/skills/luckiest-video-watcher/scripts/config.py +174 -0
  470. package/skills/luckiest-video-watcher/scripts/download.py +207 -0
  471. package/skills/luckiest-video-watcher/scripts/frames.py +758 -0
  472. package/skills/luckiest-video-watcher/scripts/gemini.py +162 -0
  473. package/skills/luckiest-video-watcher/scripts/local_whisperx.py +147 -0
  474. package/skills/luckiest-video-watcher/scripts/runtime.py +35 -0
  475. package/skills/luckiest-video-watcher/scripts/setup.py +338 -0
  476. package/skills/luckiest-video-watcher/scripts/transcribe.py +113 -0
  477. package/skills/luckiest-video-watcher/scripts/watch.py +430 -0
  478. package/skills/luckiest-video-watcher/scripts/whisper.py +425 -0
@@ -12,7 +12,7 @@
12
12
  <style>
13
13
  html, body { margin: 0; }
14
14
  #t1-sec-ticker {
15
- position: absolute; inset: 0; width: 1920px; height: 1080px;
15
+ position: absolute; inset: 0; width: var(--w); height: var(--h);
16
16
  background: var(--paper); color: var(--ink);
17
17
  font-family: var(--font-display); overflow: hidden;
18
18
  }
@@ -27,34 +27,51 @@
27
27
  background-size: 180px 180px; mix-blend-mode: multiply; opacity: 0.4; pointer-events: none; z-index: 5;
28
28
  }
29
29
  #t1-sec-ticker .kicker {
30
- position: absolute; left: 150px; top: 250px;
30
+ position: absolute; left: calc(var(--safe-l) + 54px); top: calc(var(--safe-t) + 196px);
31
31
  font-family: var(--font-label); font-weight: var(--wt-bold);
32
32
  font-size: var(--size-label); letter-spacing: var(--track-wide);
33
33
  text-transform: uppercase; color: var(--muted);
34
34
  }
35
35
  #t1-sec-ticker .headline {
36
- position: absolute; left: 150px; top: 320px; width: 1500px;
37
- font-weight: var(--wt-black); font-size: 142px; line-height: 0.95;
36
+ position: absolute; left: calc(var(--safe-l) + 54px); top: calc(var(--safe-t) + 266px); width: 1500px;
37
+ font-weight: var(--wt-black); font-size: calc(142px * var(--type)); line-height: 0.95;
38
38
  letter-spacing: var(--track-tight); color: var(--ink);
39
39
  }
40
40
  #t1-sec-ticker .headline em { font-style: normal; background: var(--yellow); padding: 0 14px; }
41
41
  /* lower band */
42
42
  #t1-sec-ticker .band {
43
- position: absolute; left: 0; right: 0; bottom: 90px; height: 110px;
43
+ position: absolute; left: 0; right: 0; bottom: calc(var(--safe-b) + 36px); height: 110px;
44
44
  background: var(--yellow); display: flex; align-items: center; overflow: hidden; z-index: 3;
45
+ padding: 0 var(--safe-r) 0 var(--safe-l); box-sizing: border-box;
45
46
  }
46
47
  #t1-sec-ticker .band .redrule { position: absolute; left: 0; right: 0; top: -10px; height: 10px; background: var(--red); }
47
48
  #t1-sec-ticker .tag {
48
49
  flex: none; height: 110px; display: flex; align-items: center; padding: 0 34px;
49
50
  background: var(--red); color: var(--paper);
50
- font-family: var(--font-label); font-weight: var(--wt-black); font-size: 40px;
51
+ font-family: var(--font-label); font-weight: var(--wt-black); font-size: calc(40px * var(--type));
51
52
  letter-spacing: 0.08em; text-transform: uppercase; z-index: 2;
52
53
  }
54
+ /* the crawl runs in a window inside the safe insets: one wrapped line wider than the window
55
+ (by the crawl distance) so the text never runs past the frame edge */
56
+ #t1-sec-ticker .tickwin { flex: 1; min-width: 0; height: 100%; display: flex; align-items: center; overflow: hidden; }
53
57
  #t1-sec-ticker .ticker {
54
- white-space: nowrap; padding-left: 40px;
55
- font-family: var(--font-label); font-weight: var(--wt-bold); font-size: 44px;
58
+ flex: none; width: calc(100% + 380px); height: 1.25em; line-height: 1.25em; overflow: hidden; padding-left: 40px;
59
+ font-family: var(--font-label); font-weight: var(--wt-bold); font-size: calc(44px * var(--type));
56
60
  letter-spacing: 0.02em; text-transform: uppercase; color: var(--ink);
57
61
  }
62
+
63
+ /* Vertical and square: kicker and headline from the top of the safe area, the band at the
64
+ safe bottom. */
65
+ [data-format="vertical"] #t1-sec-ticker .kicker, [data-format="square"] #t1-sec-ticker .kicker { left: var(--safe-l); top: calc(var(--safe-t) + 40px); }
66
+ [data-format="vertical"] #t1-sec-ticker .headline, [data-format="square"] #t1-sec-ticker .headline {
67
+ left: var(--safe-l); top: calc(var(--safe-t) + 110px); width: calc(var(--w) - var(--safe-l) - var(--safe-r));
68
+ }
69
+ [data-format="vertical"] #t1-sec-ticker .kicker { top: calc(var(--safe-t) + 200px); }
70
+ [data-format="vertical"] #t1-sec-ticker .headline { top: calc(var(--safe-t) + 270px); font-size: calc(112px * var(--type)); }
71
+ [data-format="square"] #t1-sec-ticker .headline { font-size: 120px; }
72
+ [data-format="vertical"] #t1-sec-ticker .band, [data-format="square"] #t1-sec-ticker .band { bottom: var(--safe-b); }
73
+ [data-format="vertical"] #t1-sec-ticker .band, [data-format="vertical"] #t1-sec-ticker .tag { height: 124px; }
74
+ [data-format="square"] #t1-sec-ticker .ticker { padding-left: 60px; }
58
75
  </style>
59
76
  </head>
60
77
  <body>
@@ -65,7 +82,7 @@
65
82
  <div class="band">
66
83
  <div class="redrule"></div>
67
84
  <div class="tag" data-slot="tag">BREAKING</div>
68
- <div class="ticker" data-slot="ticker">What the data really shows · Who knew, and when · The fallout begins · Full story inside</div>
85
+ <div class="tickwin"><div class="ticker" data-slot="ticker">What the data really shows · Who knew, and when · The fallout begins · Full story inside</div></div>
69
86
  </div>
70
87
  <div class="grain"></div>
71
88
  </div>
@@ -11,7 +11,7 @@
11
11
  <style>
12
12
  html, body { margin: 0; }
13
13
  #t1-sec-torn {
14
- position: absolute; inset: 0; width: 1920px; height: 1080px;
14
+ position: absolute; inset: 0; width: var(--w); height: var(--h);
15
15
  background: var(--paper); color: var(--ink);
16
16
  font-family: var(--font-display); overflow: hidden;
17
17
  }
@@ -34,7 +34,7 @@
34
34
  }
35
35
  /* the torn strip */
36
36
  #t1-sec-torn .strip {
37
- position: absolute; left: -40px; right: -40px; top: 380px; padding: 60px 120px;
37
+ position: absolute; left: -40px; right: -40px; top: calc(var(--safe-t) + 326px); padding: 60px calc(var(--safe-r) + 64px) 60px calc(var(--safe-l) + 64px);
38
38
  background: var(--paper-2); z-index: 3; transform: rotate(-3.4deg);
39
39
  box-shadow: 0 26px 50px rgba(23,19,14,0.32);
40
40
  clip-path: polygon(0 14%, 6% 6%, 14% 12%, 23% 4%, 33% 13%, 44% 5%, 55% 14%, 66% 6%, 77% 13%, 87% 5%, 95% 12%, 100% 6%,
@@ -46,16 +46,25 @@
46
46
  text-transform: uppercase; color: var(--red); margin-bottom: 14px;
47
47
  }
48
48
  #t1-sec-torn .headline {
49
- font-weight: var(--wt-black); font-size: 132px; line-height: 0.95;
49
+ font-weight: var(--wt-black); font-size: calc(132px * var(--type)); line-height: 0.95;
50
50
  letter-spacing: var(--track-tight); color: var(--ink);
51
51
  }
52
52
  #t1-sec-torn .headline em { font-style: normal; background: var(--yellow); padding: 0 14px; }
53
53
  #t1-sec-torn .source {
54
- position: absolute; left: 150px; bottom: 80px; z-index: 4;
54
+ position: absolute; left: calc(var(--safe-l) + 54px); bottom: calc(var(--safe-b) + 26px); z-index: 4;
55
55
  font-family: var(--font-label); font-weight: var(--wt-bold);
56
56
  font-size: var(--size-tiny); letter-spacing: var(--track-wide);
57
57
  text-transform: uppercase; color: var(--muted);
58
58
  }
59
+
60
+ /* Vertical and square: the strip stays full bleed but sits in the safe box and its text wraps
61
+ inside the safe insets; newsprint goes to two columns in vertical. */
62
+ [data-format="vertical"] #t1-sec-torn .news { column-count: 2; }
63
+ [data-format="vertical"] #t1-sec-torn .strip { top: calc(var(--safe-t) + 200px); padding: 70px calc(var(--safe-r) + 80px) 70px calc(var(--safe-l) + 80px); }
64
+ [data-format="square"] #t1-sec-torn .strip { top: calc(var(--safe-t) + 230px); padding: 60px calc(var(--safe-r) + 80px) 60px calc(var(--safe-l) + 80px); }
65
+ [data-format="vertical"] #t1-sec-torn .headline { font-size: calc(104px * var(--type)); }
66
+ [data-format="square"] #t1-sec-torn .headline { font-size: 112px; }
67
+ [data-format="vertical"] #t1-sec-torn .source, [data-format="square"] #t1-sec-torn .source { left: var(--safe-l); bottom: var(--safe-b); }
59
68
  </style>
60
69
  </head>
61
70
  <body>
@@ -13,7 +13,7 @@
13
13
  <style>
14
14
  html, body { margin: 0; }
15
15
  #t1-stat-annot {
16
- position: absolute; inset: 0; width: 1920px; height: 1080px;
16
+ position: absolute; inset: 0; width: var(--w); height: var(--h);
17
17
  background: var(--paper); color: var(--ink);
18
18
  font-family: var(--font-display); overflow: hidden;
19
19
  }
@@ -34,7 +34,7 @@
34
34
 
35
35
  /* kicker */
36
36
  #t1-stat-annot .kicker {
37
- position: absolute; left: 130px; top: 220px;
37
+ position: absolute; left: calc(var(--safe-l) + 34px); top: calc(var(--safe-t) + 166px);
38
38
  font-family: var(--font-label); font-weight: var(--wt-bold);
39
39
  font-size: var(--size-label); letter-spacing: var(--track-wide);
40
40
  text-transform: uppercase; color: var(--red);
@@ -42,8 +42,8 @@
42
42
 
43
43
  /* big stat - dead center */
44
44
  #t1-stat-annot .stat {
45
- position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
46
- font-weight: var(--wt-black); font-size: 480px; line-height: 1;
45
+ position: absolute; left: calc(var(--safe-l) + (var(--w) - var(--safe-l) - var(--safe-r)) / 2); top: calc(var(--safe-t) + (var(--h) - var(--safe-t) - var(--safe-b)) / 2); transform: translate(-50%, -50%);
46
+ font-weight: var(--wt-black); font-size: calc(480px * var(--type)); line-height: 1;
47
47
  letter-spacing: -0.06em; color: var(--ink);
48
48
  font-variant-numeric: tabular-nums;
49
49
  z-index: 2;
@@ -55,7 +55,7 @@
55
55
  .annot {
56
56
  position: absolute; z-index: 3;
57
57
  font-family: var(--font-label); font-weight: var(--wt-bold);
58
- font-size: 28px; letter-spacing: var(--track-wide); text-transform: uppercase;
58
+ font-size: calc(28px * var(--type)); letter-spacing: var(--track-wide); text-transform: uppercase;
59
59
  color: var(--ink); display: flex; align-items: center; gap: 0;
60
60
  }
61
61
  /* line element inside each annot */
@@ -75,7 +75,7 @@
75
75
 
76
76
  /* note 1 - upper left: horizontal line extends right toward stat */
77
77
  #t1-stat-annot .annot-1 {
78
- left: 130px; top: 264px;
78
+ left: calc(var(--safe-l) + 34px); top: calc(var(--safe-t) + 210px);
79
79
  flex-direction: row;
80
80
  }
81
81
  #t1-stat-annot .annot-1 .line { width: 320px; }
@@ -83,14 +83,14 @@
83
83
 
84
84
  /* note 2 - lower left: goes up+right via two segments (pure CSS, two divs) */
85
85
  #t1-stat-annot .annot-2 {
86
- left: 130px; bottom: 270px;
86
+ left: calc(var(--safe-l) + 34px); bottom: calc(var(--safe-b) + 216px);
87
87
  flex-direction: row;
88
88
  }
89
89
  #t1-stat-annot .annot-2 .line { width: 280px; }
90
90
 
91
91
  /* note 3 - right side: horizontal line extends left toward stat */
92
92
  #t1-stat-annot .annot-3 {
93
- right: 130px; top: 50%; transform: translateY(-50%);
93
+ right: calc(var(--safe-r) + 34px); top: calc(var(--safe-t) + (var(--h) - var(--safe-t) - var(--safe-b)) / 2); transform: translateY(-50%);
94
94
  flex-direction: row-reverse; /* line goes left */
95
95
  }
96
96
  #t1-stat-annot .annot-3 .line {
@@ -99,13 +99,33 @@
99
99
 
100
100
  /* source */
101
101
  #t1-stat-annot .source {
102
- position: absolute; left: 130px; bottom: 96px;
102
+ position: absolute; left: calc(var(--safe-l) + 34px); bottom: calc(var(--safe-b) + 42px);
103
103
  font-family: var(--font-label); font-weight: var(--wt-bold);
104
104
  font-size: var(--size-tiny); letter-spacing: var(--track-wide);
105
105
  text-transform: uppercase; color: var(--muted);
106
106
  z-index: 4;
107
107
  }
108
+
109
+ /* Vertical and square: number centered in the safe box with note 1 above it and notes 2
110
+ and 3 on their own rows below it (note 3 right-aligned, its line still reaching left). */
111
+ [data-format="vertical"] #t1-stat-annot .kicker, [data-format="square"] #t1-stat-annot .kicker { left: var(--safe-l); top: var(--safe-t); }
112
+ [data-format="vertical"] #t1-stat-annot .stat { font-size: calc(300px * var(--type)); }
113
+ [data-format="square"] #t1-stat-annot .stat { font-size: 400px; }
114
+ [data-format="vertical"] #t1-stat-annot .annot-1, [data-format="square"] #t1-stat-annot .annot-1 { left: var(--safe-l); }
115
+ [data-format="vertical"] #t1-stat-annot .annot-1 { top: calc(var(--safe-t) + 112px); }
116
+ [data-format="square"] #t1-stat-annot .annot-1 { top: calc(var(--safe-t) + 90px); }
117
+ [data-format="vertical"] #t1-stat-annot .annot-1 .line, [data-format="square"] #t1-stat-annot .annot-1 .line { width: 200px; }
118
+ [data-format="vertical"] #t1-stat-annot .annot-2, [data-format="square"] #t1-stat-annot .annot-2 { left: var(--safe-l); bottom: auto; }
119
+ [data-format="vertical"] #t1-stat-annot .annot-2 { top: calc(var(--safe-t) + 700px); }
120
+ [data-format="square"] #t1-stat-annot .annot-2 { top: calc(var(--safe-t) + 690px); }
121
+ [data-format="vertical"] #t1-stat-annot .annot-2 .line, [data-format="square"] #t1-stat-annot .annot-2 .line { width: 200px; }
122
+ [data-format="vertical"] #t1-stat-annot .annot-3, [data-format="square"] #t1-stat-annot .annot-3 { right: var(--safe-r); transform: none; }
123
+ [data-format="vertical"] #t1-stat-annot .annot-3 { top: calc(var(--safe-t) + 780px); }
124
+ [data-format="square"] #t1-stat-annot .annot-3 { top: calc(var(--safe-t) + 760px); }
125
+ [data-format="vertical"] #t1-stat-annot .annot-3 .line, [data-format="square"] #t1-stat-annot .annot-3 .line { width: 200px; }
126
+ [data-format="vertical"] #t1-stat-annot .source, [data-format="square"] #t1-stat-annot .source { left: var(--safe-l); bottom: var(--safe-b); }
108
127
  </style>
128
+
109
129
  </head>
110
130
  <body>
111
131
  <div id="t1-stat-annot" data-composition-id="t1-stat-annot" data-start="0" data-width="1920" data-height="1080">
@@ -14,7 +14,7 @@
14
14
  <style>
15
15
  html, body { margin: 0; }
16
16
  #t1-stat-arc {
17
- position: absolute; inset: 0; width: 1920px; height: 1080px;
17
+ position: absolute; inset: 0; width: var(--w); height: var(--h);
18
18
  background: var(--paper); color: var(--ink);
19
19
  font-family: var(--font-display); overflow: hidden;
20
20
  }
@@ -33,33 +33,51 @@
33
33
  background: radial-gradient(120% 120% at 36% 50%, transparent 54%, rgba(23,19,14,0.18) 100%);
34
34
  }
35
35
  #t1-stat-arc .kicker {
36
- position: absolute; left: 200px; top: 220px;
36
+ position: absolute; left: calc(var(--safe-l) + 104px); top: calc(var(--safe-t) + 166px);
37
37
  font-family: var(--font-label); font-weight: var(--wt-bold);
38
38
  font-size: var(--size-label); letter-spacing: var(--track-wide);
39
39
  text-transform: uppercase; color: var(--red);
40
40
  }
41
41
  #t1-stat-arc .gaugewrap {
42
- position: absolute; left: 200px; top: 50%; transform: translateY(-50%);
42
+ position: absolute; left: calc(var(--safe-l) + 104px); top: 50%; transform: translateY(-50%);
43
43
  width: 560px; height: 560px;
44
44
  }
45
45
  #t1-stat-arc svg { width: 560px; height: 560px; transform: rotate(-90deg); }
46
46
  #t1-stat-arc .stat {
47
47
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
48
- font-weight: var(--wt-black); font-size: 200px; line-height: 1; color: var(--ink);
48
+ font-weight: var(--wt-black); font-size: calc(200px * var(--type)); line-height: 1; color: var(--ink);
49
49
  font-variant-numeric: tabular-nums; letter-spacing: -0.04em;
50
50
  }
51
51
  #t1-stat-arc .label {
52
- position: absolute; right: 150px; top: 50%; transform: translateY(-50%);
53
- width: 640px; font-weight: var(--wt-thin); font-size: 64px; line-height: 1.08;
52
+ position: absolute; right: calc(var(--safe-r) + 54px); top: 50%; transform: translateY(-50%);
53
+ width: 640px; font-weight: var(--wt-thin); font-size: calc(64px * var(--type)); line-height: 1.08;
54
54
  letter-spacing: var(--track-tight); color: var(--ink);
55
55
  }
56
56
  #t1-stat-arc .label em { font-style: italic; font-weight: var(--wt-black); }
57
57
  #t1-stat-arc .source {
58
- position: absolute; left: 200px; bottom: 96px;
58
+ position: absolute; left: calc(var(--safe-l) + 104px); bottom: calc(var(--safe-b) + 42px);
59
59
  font-family: var(--font-label); font-weight: var(--wt-bold);
60
60
  font-size: var(--size-tiny); letter-spacing: var(--track-wide);
61
61
  text-transform: uppercase; color: var(--muted);
62
62
  }
63
+
64
+ /* Vertical and square: kicker, the gauge centered on the safe area, label centered under it,
65
+ source at the safe bottom. The gauge keeps its translateY(-50%), so top is its center. */
66
+ [data-format="vertical"] #t1-stat-arc, [data-format="square"] #t1-stat-arc {
67
+ --cx: calc(var(--safe-l) + (var(--w) - var(--safe-l) - var(--safe-r)) / 2);
68
+ --cy: calc(var(--safe-t) + (var(--h) - var(--safe-t) - var(--safe-b)) / 2);
69
+ }
70
+ [data-format="vertical"] #t1-stat-arc .kicker, [data-format="square"] #t1-stat-arc .kicker { left: var(--safe-l); top: var(--safe-t); }
71
+ [data-format="vertical"] #t1-stat-arc .gaugewrap { left: calc(var(--cx) - 280px); top: calc(var(--safe-t) + 360px); }
72
+ [data-format="vertical"] #t1-stat-arc .stat { font-size: calc(170px * var(--type)); }
73
+ [data-format="square"] #t1-stat-arc .gaugewrap { left: calc(var(--cx) - 240px); top: calc(var(--safe-t) + 300px); width: 480px; height: 480px; }
74
+ [data-format="square"] #t1-stat-arc svg { width: 480px; height: 480px; }
75
+ [data-format="square"] #t1-stat-arc .stat { font-size: 170px; }
76
+ [data-format="vertical"] #t1-stat-arc .label, [data-format="square"] #t1-stat-arc .label {
77
+ left: var(--safe-l); right: var(--safe-r); width: auto; top: calc(var(--safe-t) + 680px); transform: none; text-align: center;
78
+ }
79
+ [data-format="square"] #t1-stat-arc .label { top: calc(var(--safe-t) + 590px); }
80
+ [data-format="vertical"] #t1-stat-arc .source, [data-format="square"] #t1-stat-arc .source { left: var(--safe-l); bottom: var(--safe-b); }
63
81
  </style>
64
82
  </head>
65
83
  <body>
@@ -15,7 +15,7 @@
15
15
  <style>
16
16
  html, body { margin: 0; }
17
17
  #t1-stat-axis {
18
- position: absolute; inset: 0; width: 1920px; height: 1080px;
18
+ position: absolute; inset: 0; width: var(--w); height: var(--h);
19
19
  background: var(--paper); color: var(--ink);
20
20
  font-family: var(--font-display); overflow: hidden;
21
21
  }
@@ -34,14 +34,14 @@
34
34
  background: radial-gradient(120% 120% at 50% 50%, transparent 56%, rgba(23,19,14,0.16) 100%);
35
35
  }
36
36
  #t1-stat-axis .kicker {
37
- position: absolute; left: 130px; top: 180px;
37
+ position: absolute; left: calc(var(--safe-l) + 34px); top: calc(var(--safe-t) + 126px);
38
38
  font-family: var(--font-label); font-weight: var(--wt-bold);
39
39
  font-size: var(--size-label); letter-spacing: var(--track-wide);
40
40
  text-transform: uppercase; color: var(--red);
41
41
  }
42
42
  /* ---- axis track container ---- */
43
43
  #t1-stat-axis .axis-track {
44
- position: absolute; left: 130px; right: 130px; top: 540px; height: 10px;
44
+ position: absolute; left: calc(var(--safe-l) + 34px); right: calc(var(--safe-r) + 34px); top: calc(var(--safe-t) + 486px); height: 10px;
45
45
  background: var(--ink); transform-origin: left center;
46
46
  }
47
47
  /* end-cap ticks */
@@ -55,16 +55,16 @@
55
55
  /* ---- end-point labels ---- */
56
56
  #t1-stat-axis .axis-start-label,
57
57
  #t1-stat-axis .axis-end-label {
58
- position: absolute; top: 600px;
58
+ position: absolute; top: calc(var(--safe-t) + 546px);
59
59
  font-family: var(--font-label); font-weight: var(--wt-bold);
60
60
  font-size: var(--size-label); letter-spacing: var(--track-wide);
61
61
  text-transform: uppercase; color: var(--muted);
62
62
  }
63
- #t1-stat-axis .axis-start-label { left: 130px; }
64
- #t1-stat-axis .axis-end-label { right: 130px; text-align: right; }
63
+ #t1-stat-axis .axis-start-label { left: calc(var(--safe-l) + 34px); }
64
+ #t1-stat-axis .axis-end-label { right: calc(var(--safe-r) + 34px); text-align: right; }
65
65
  /* ---- point + callout group - positioned by JS ---- */
66
66
  #t1-stat-axis .point-group {
67
- position: absolute; top: 440px;
67
+ position: absolute; top: calc(var(--safe-t) + 386px);
68
68
  transform: translateX(-50%);
69
69
  display: flex; flex-direction: column; align-items: center;
70
70
  z-index: 3;
@@ -75,7 +75,7 @@
75
75
  box-shadow: inset 0 0 0 5px var(--ink);
76
76
  }
77
77
  #t1-stat-axis .callout-box .stat {
78
- font-weight: var(--wt-black); font-size: 120px;
78
+ font-weight: var(--wt-black); font-size: calc(120px * var(--type));
79
79
  font-variant-numeric: tabular-nums; line-height: 1; white-space: nowrap;
80
80
  display: block;
81
81
  }
@@ -100,18 +100,38 @@
100
100
  }
101
101
  /* ---- label + source ---- */
102
102
  #t1-stat-axis .label {
103
- position: absolute; left: 130px; right: 130px; top: 700px;
104
- font-weight: var(--wt-thin); font-size: 56px; line-height: 1.05;
103
+ position: absolute; left: calc(var(--safe-l) + 34px); right: calc(var(--safe-r) + 34px); top: calc(var(--safe-t) + 646px);
104
+ font-weight: var(--wt-thin); font-size: calc(56px * var(--type)); line-height: 1.05;
105
105
  letter-spacing: var(--track-tight); color: var(--ink);
106
106
  }
107
107
  #t1-stat-axis .label em { font-style: italic; font-weight: var(--wt-black); }
108
108
  #t1-stat-axis .source {
109
- position: absolute; left: 130px; bottom: 96px;
109
+ position: absolute; left: calc(var(--safe-l) + 34px); bottom: calc(var(--safe-b) + 42px);
110
110
  font-family: var(--font-label); font-weight: var(--wt-bold);
111
111
  font-size: var(--size-tiny); letter-spacing: var(--track-wide);
112
112
  text-transform: uppercase; color: var(--muted);
113
113
  }
114
+
115
+ /* Vertical and square: the axis spans the safe width; kicker, callout, axis, end labels,
116
+ label and source stack down the safe area. */
117
+ [data-format="vertical"] #t1-stat-axis .kicker, [data-format="square"] #t1-stat-axis .kicker { left: var(--safe-l); top: var(--safe-t); }
118
+ [data-format="vertical"] #t1-stat-axis .axis-track, [data-format="vertical"] #t1-stat-axis .label,
119
+ [data-format="square"] #t1-stat-axis .axis-track, [data-format="square"] #t1-stat-axis .label { left: var(--safe-l); right: var(--safe-r); }
120
+ [data-format="vertical"] #t1-stat-axis .axis-start-label, [data-format="square"] #t1-stat-axis .axis-start-label { left: var(--safe-l); }
121
+ [data-format="vertical"] #t1-stat-axis .axis-end-label, [data-format="square"] #t1-stat-axis .axis-end-label { right: var(--safe-r); }
122
+ [data-format="vertical"] #t1-stat-axis .point-group { top: calc(var(--safe-t) + 330px); }
123
+ [data-format="vertical"] #t1-stat-axis .callout-box .stat { font-size: calc(100px * var(--type)); }
124
+
125
+ [data-format="vertical"] #t1-stat-axis .axis-track { top: calc(var(--safe-t) + 430px); }
126
+ [data-format="vertical"] #t1-stat-axis .axis-start-label, [data-format="vertical"] #t1-stat-axis .axis-end-label { top: calc(var(--safe-t) + 490px); }
127
+ [data-format="vertical"] #t1-stat-axis .label { top: calc(var(--safe-t) + 610px); }
128
+ [data-format="square"] #t1-stat-axis .point-group { top: calc(var(--safe-t) + 280px); }
129
+ [data-format="square"] #t1-stat-axis .axis-track { top: calc(var(--safe-t) + 380px); }
130
+ [data-format="square"] #t1-stat-axis .axis-start-label, [data-format="square"] #t1-stat-axis .axis-end-label { top: calc(var(--safe-t) + 440px); }
131
+ [data-format="square"] #t1-stat-axis .label { top: calc(var(--safe-t) + 540px); font-size: 56px; }
132
+ [data-format="vertical"] #t1-stat-axis .source, [data-format="square"] #t1-stat-axis .source { left: var(--safe-l); bottom: var(--safe-b); }
114
133
  </style>
134
+
115
135
  </head>
116
136
  <body>
117
137
  <div id="t1-stat-axis" data-composition-id="t1-stat-axis" data-start="0" data-width="1920" data-height="1080">
@@ -141,9 +161,9 @@
141
161
  // Position the point group on the axis
142
162
  const axisTrack = document.getElementById("axis-track");
143
163
  const pos = Math.max(0, Math.min(1, parseFloat(axisTrack.getAttribute("data-pos")) || 0.62));
144
- // axis spans from left:130px to right:130px → usable width = 1920 - 260 = 1660px
145
- const AXIS_LEFT = 130;
146
- const AXIS_WIDTH = 1920 - 260;
164
+ // measured from the laid-out track so it follows the format's safe insets
165
+ const AXIS_LEFT = axisTrack.offsetLeft;
166
+ const AXIS_WIDTH = axisTrack.offsetWidth;
147
167
  const pointGroup = document.getElementById("point-group");
148
168
  pointGroup.style.left = (AXIS_LEFT + pos * AXIS_WIDTH) + "px";
149
169
 
@@ -14,7 +14,7 @@
14
14
  <style>
15
15
  html, body { margin: 0; }
16
16
  #t1-stat-bar {
17
- position: absolute; inset: 0; width: 1920px; height: 1080px;
17
+ position: absolute; inset: 0; width: var(--w); height: var(--h);
18
18
  background: var(--paper); color: var(--ink);
19
19
  font-family: var(--font-display); overflow: hidden;
20
20
  }
@@ -33,13 +33,13 @@
33
33
  background: radial-gradient(120% 120% at 50% 50%, transparent 56%, rgba(23,19,14,0.16) 100%);
34
34
  }
35
35
  #t1-stat-bar .kicker {
36
- position: absolute; left: 130px; top: 280px;
36
+ position: absolute; left: calc(var(--safe-l) + 34px); top: calc(var(--safe-t) + 226px);
37
37
  font-family: var(--font-label); font-weight: var(--wt-bold);
38
38
  font-size: var(--size-label); letter-spacing: var(--track-wide);
39
39
  text-transform: uppercase; color: var(--red);
40
40
  }
41
41
  #t1-stat-bar .track {
42
- position: absolute; left: 130px; right: 130px; top: 470px; height: 150px;
42
+ position: absolute; left: calc(var(--safe-l) + 34px); right: calc(var(--safe-r) + 34px); top: calc(var(--safe-t) + 416px); height: 150px;
43
43
  background: var(--paper-2); box-shadow: inset 0 0 0 4px var(--ink);
44
44
  }
45
45
  #t1-stat-bar .fill {
@@ -49,27 +49,36 @@
49
49
  }
50
50
  #t1-stat-bar .stat {
51
51
  position: absolute; top: 50%; transform: translateY(-50%);
52
- right: 30px; z-index: 3; font-weight: var(--wt-black); font-size: 120px;
52
+ right: 30px; z-index: 3; font-weight: var(--wt-black); font-size: calc(120px * var(--type));
53
53
  line-height: 1; color: var(--ink); font-variant-numeric: tabular-nums;
54
54
  }
55
55
  /* faint axis ticks on the track */
56
56
  #t1-stat-bar .ticks {
57
- position: absolute; left: 130px; right: 130px; top: 632px; height: 26px;
57
+ position: absolute; left: calc(var(--safe-l) + 34px); right: calc(var(--safe-r) + 34px); top: calc(var(--safe-t) + 578px); height: 26px;
58
58
  background-image: repeating-linear-gradient(90deg, var(--ink) 0 3px, transparent 3px 25%);
59
59
  opacity: 0.35;
60
60
  }
61
61
  #t1-stat-bar .label {
62
- position: absolute; left: 130px; right: 130px; top: 720px;
63
- font-weight: var(--wt-thin); font-size: 60px; line-height: 1.05;
62
+ position: absolute; left: calc(var(--safe-l) + 34px); right: calc(var(--safe-r) + 34px); top: calc(var(--safe-t) + 666px);
63
+ font-weight: var(--wt-thin); font-size: calc(60px * var(--type)); line-height: 1.05;
64
64
  letter-spacing: var(--track-tight); color: var(--ink);
65
65
  }
66
66
  #t1-stat-bar .label em { font-style: italic; font-weight: var(--wt-black); }
67
67
  #t1-stat-bar .source {
68
- position: absolute; left: 130px; bottom: 96px;
68
+ position: absolute; left: calc(var(--safe-l) + 34px); bottom: calc(var(--safe-b) + 42px);
69
69
  font-family: var(--font-label); font-weight: var(--wt-bold);
70
70
  font-size: var(--size-tiny); letter-spacing: var(--track-wide);
71
71
  text-transform: uppercase; color: var(--muted);
72
72
  }
73
+
74
+ /* Vertical and square: the same stack (kicker, bar, ticks, label) spans the safe width and
75
+ sits centered in the safe height; source stays at the safe bottom. */
76
+ [data-format="vertical"] #t1-stat-bar .kicker, [data-format="square"] #t1-stat-bar .kicker { left: var(--safe-l); top: calc(var(--safe-t) + 150px); }
77
+ [data-format="vertical"] #t1-stat-bar .track, [data-format="square"] #t1-stat-bar .track { left: var(--safe-l); right: var(--safe-r); top: calc(var(--safe-t) + 220px); height: 170px; }
78
+ [data-format="vertical"] #t1-stat-bar .ticks, [data-format="square"] #t1-stat-bar .ticks { left: var(--safe-l); right: var(--safe-r); top: calc(var(--safe-t) + 402px); }
79
+ [data-format="vertical"] #t1-stat-bar .label, [data-format="square"] #t1-stat-bar .label { left: var(--safe-l); right: var(--safe-r); top: calc(var(--safe-t) + 480px); }
80
+ [data-format="vertical"] #t1-stat-bar .stat { font-size: calc(110px * var(--type)); right: 22px; }
81
+ [data-format="vertical"] #t1-stat-bar .source, [data-format="square"] #t1-stat-bar .source { left: var(--safe-l); bottom: var(--safe-b); }
73
82
  </style>
74
83
  </head>
75
84
  <body>
@@ -15,7 +15,7 @@
15
15
  <style>
16
16
  html, body { margin: 0; }
17
17
  #t1-stat-bracket {
18
- position: absolute; inset: 0; width: 1920px; height: 1080px;
18
+ position: absolute; inset: 0; width: var(--w); height: var(--h);
19
19
  background: var(--paper); color: var(--ink);
20
20
  font-family: var(--font-display); overflow: hidden;
21
21
  }
@@ -34,18 +34,18 @@
34
34
  background: radial-gradient(120% 120% at 50% 50%, transparent 56%, rgba(23,19,14,0.16) 100%);
35
35
  }
36
36
  #t1-stat-bracket .kicker {
37
- position: absolute; left: 50%; top: 148px; transform: translateX(-50%);
37
+ position: absolute; left: calc(var(--safe-l) + (var(--w) - var(--safe-l) - var(--safe-r)) / 2); top: calc(var(--safe-t) + 94px); transform: translateX(-50%);
38
38
  font-family: var(--font-label); font-weight: var(--wt-bold);
39
39
  font-size: var(--size-label); letter-spacing: var(--track-wide);
40
40
  text-transform: uppercase; color: var(--red); white-space: nowrap;
41
41
  }
42
42
  /* bracket lockup - centered on canvas */
43
43
  #t1-stat-bracket .lockup {
44
- position: absolute; left: 50%; top: 50%; transform: translate(-50%, -54%);
44
+ position: absolute; left: calc(var(--safe-l) + (var(--w) - var(--safe-l) - var(--safe-r)) / 2); top: calc(var(--safe-t) + (var(--h) - var(--safe-t) - var(--safe-b)) / 2); transform: translate(-50%, -54%);
45
45
  display: flex; align-items: center; gap: 0;
46
46
  }
47
47
  #t1-stat-bracket .bracket {
48
- font-weight: var(--wt-black); font-size: 440px; line-height: 0.88;
48
+ font-weight: var(--wt-black); font-size: calc(440px * var(--type)); line-height: 0.88;
49
49
  color: var(--ink); font-family: var(--font-display);
50
50
  /* slightly condensed bracket characters feel more editorial */
51
51
  letter-spacing: -0.06em;
@@ -57,7 +57,7 @@
57
57
  text-align: center; position: relative;
58
58
  }
59
59
  #t1-stat-bracket .stat {
60
- display: block; font-weight: var(--wt-black); font-size: 340px;
60
+ display: block; font-weight: var(--wt-black); font-size: calc(340px * var(--type));
61
61
  line-height: 0.9; letter-spacing: -0.04em; color: var(--ink);
62
62
  font-variant-numeric: tabular-nums;
63
63
  clip-path: inset(0 0 0 0);
@@ -68,20 +68,36 @@
68
68
  }
69
69
  /* label below */
70
70
  #t1-stat-bracket .label {
71
- position: absolute; left: 50%; bottom: 192px; transform: translateX(-50%);
71
+ position: absolute; left: calc(var(--safe-l) + (var(--w) - var(--safe-l) - var(--safe-r)) / 2); bottom: calc(var(--safe-b) + 138px); transform: translateX(-50%);
72
72
  width: 1300px; text-align: center;
73
- font-weight: var(--wt-thin); font-size: 58px; line-height: 1.1;
73
+ font-weight: var(--wt-thin); font-size: calc(58px * var(--type)); line-height: 1.1;
74
74
  letter-spacing: var(--track-tight); color: var(--ink);
75
75
  }
76
76
  #t1-stat-bracket .label em { font-style: italic; font-weight: var(--wt-black); }
77
77
  #t1-stat-bracket .source {
78
- position: absolute; left: 50%; bottom: 96px; transform: translateX(-50%);
78
+ position: absolute; left: calc(var(--safe-l) + (var(--w) - var(--safe-l) - var(--safe-r)) / 2); bottom: calc(var(--safe-b) + 42px); transform: translateX(-50%);
79
79
  white-space: nowrap;
80
80
  font-family: var(--font-label); font-weight: var(--wt-bold);
81
81
  font-size: var(--size-tiny); letter-spacing: var(--track-wide);
82
82
  text-transform: uppercase; color: var(--muted);
83
83
  }
84
+
85
+ /* Vertical and square: smaller bracket lockup in the upper safe area, label wraps at
86
+ safe width under it, source on the safe bottom. */
87
+ [data-format="vertical"] #t1-stat-bracket .kicker, [data-format="square"] #t1-stat-bracket .kicker { top: var(--safe-t); }
88
+ [data-format="vertical"] #t1-stat-bracket .lockup { top: calc(var(--safe-t) + 330px); }
89
+ [data-format="vertical"] #t1-stat-bracket .bracket { font-size: calc(300px * var(--type)); }
90
+ [data-format="vertical"] #t1-stat-bracket .stat { font-size: calc(230px * var(--type)); }
91
+ [data-format="square"] #t1-stat-bracket .lockup { top: calc(var(--safe-t) + 330px); }
92
+ [data-format="square"] #t1-stat-bracket .bracket { font-size: 380px; }
93
+ [data-format="square"] #t1-stat-bracket .stat { font-size: 290px; }
94
+ [data-format="vertical"] #t1-stat-bracket .label, [data-format="square"] #t1-stat-bracket .label {
95
+ width: calc(var(--w) - var(--safe-l) - var(--safe-r)); bottom: calc(var(--safe-b) + 70px); text-wrap: balance;
96
+
97
+ }
98
+ [data-format="vertical"] #t1-stat-bracket .source, [data-format="square"] #t1-stat-bracket .source { bottom: var(--safe-b); }
84
99
  </style>
100
+
85
101
  </head>
86
102
  <body>
87
103
  <div id="t1-stat-bracket" data-composition-id="t1-stat-bracket" data-start="0" data-width="1920" data-height="1080">
@@ -14,7 +14,7 @@
14
14
  <style>
15
15
  html, body { margin: 0; }
16
16
  #t1-stat-cal {
17
- position: absolute; inset: 0; width: 1920px; height: 1080px;
17
+ position: absolute; inset: 0; width: var(--w); height: var(--h);
18
18
  background: var(--paper); color: var(--ink);
19
19
  font-family: var(--font-display); overflow: hidden;
20
20
  }
@@ -34,7 +34,7 @@
34
34
  background: radial-gradient(120% 120% at 50% 50%, transparent 56%, rgba(23,19,14,0.18) 100%);
35
35
  }
36
36
  #t1-stat-cal .kicker {
37
- position: absolute; left: 130px; top: 260px;
37
+ position: absolute; left: calc(var(--safe-l) + 34px); top: calc(var(--safe-t) + 206px);
38
38
  font-family: var(--font-label); font-weight: var(--wt-bold);
39
39
  font-size: var(--size-label); letter-spacing: var(--track-wide);
40
40
  text-transform: uppercase; color: var(--muted);
@@ -77,12 +77,12 @@
77
77
  }
78
78
  #t1-stat-cal .month {
79
79
  font-family: var(--font-label); font-weight: var(--wt-black);
80
- font-size: 44px; letter-spacing: 0.22em;
80
+ font-size: calc(44px * var(--type)); letter-spacing: 0.22em;
81
81
  text-transform: uppercase; line-height: 1;
82
82
  }
83
83
  #t1-stat-cal .day-label {
84
84
  font-family: var(--font-label); font-weight: var(--wt-bold);
85
- font-size: 22px; letter-spacing: 0.14em;
85
+ font-size: calc(22px * var(--type)); letter-spacing: 0.14em;
86
86
  text-transform: uppercase; opacity: 0.8; margin-top: 6px;
87
87
  }
88
88
  /* white page body */
@@ -104,13 +104,13 @@
104
104
  }
105
105
  #t1-stat-cal .cal-stat {
106
106
  font-family: var(--font-display); font-weight: var(--wt-black);
107
- font-size: 280px; line-height: 0.88; color: var(--ink);
107
+ font-size: calc(280px * var(--type)); line-height: 0.88; color: var(--ink);
108
108
  font-variant-numeric: tabular-nums; letter-spacing: -0.02em;
109
109
  text-align: center; position: relative; z-index: 2;
110
110
  }
111
111
  #t1-stat-cal .cal-sub {
112
112
  font-family: var(--font-label); font-weight: var(--wt-bold);
113
- font-size: 26px; letter-spacing: 0.14em; text-transform: uppercase;
113
+ font-size: calc(26px * var(--type)); letter-spacing: 0.14em; text-transform: uppercase;
114
114
  color: var(--muted); margin-top: 10px; text-align: center;
115
115
  position: relative; z-index: 2;
116
116
  }
@@ -134,17 +134,32 @@
134
134
  }
135
135
  /* label and source below the calendar */
136
136
  #t1-stat-cal .label {
137
- position: absolute; left: 130px; right: 130px; bottom: 220px;
138
- font-weight: var(--wt-thin); font-size: 56px; line-height: 1.1;
137
+ position: absolute; left: calc(var(--safe-l) + 34px); right: calc(var(--safe-r) + 34px); bottom: calc(var(--safe-b) + 166px);
138
+ font-weight: var(--wt-thin); font-size: calc(56px * var(--type)); line-height: 1.1;
139
139
  letter-spacing: var(--track-tight); color: var(--ink);
140
140
  }
141
141
  #t1-stat-cal .label em { font-style: italic; font-weight: var(--wt-black); }
142
142
  #t1-stat-cal .source {
143
- position: absolute; left: 130px; bottom: 96px;
143
+ position: absolute; left: calc(var(--safe-l) + 34px); bottom: calc(var(--safe-b) + 42px);
144
144
  font-family: var(--font-label); font-weight: var(--wt-bold);
145
145
  font-size: var(--size-tiny); letter-spacing: var(--track-wide);
146
146
  text-transform: uppercase; color: var(--muted);
147
147
  }
148
+
149
+ /* Vertical and square: kicker, the calendar centered on the safe area (--cx) near the top,
150
+ label under it, source at the safe bottom. */
151
+ [data-format="vertical"] #t1-stat-cal, [data-format="square"] #t1-stat-cal {
152
+ --cx: calc(var(--safe-l) + (var(--w) - var(--safe-l) - var(--safe-r)) / 2);
153
+ }
154
+ [data-format="vertical"] #t1-stat-cal .kicker, [data-format="square"] #t1-stat-cal .kicker { left: var(--safe-l); top: var(--safe-t); }
155
+ [data-format="vertical"] #t1-stat-cal .cal-wrap { left: var(--cx); top: calc(var(--safe-t) + 370px); }
156
+ [data-format="vertical"] #t1-stat-cal .cal-stat { font-size: calc(230px * var(--type)); }
157
+ [data-format="square"] #t1-stat-cal .cal-wrap { left: var(--cx); top: calc(var(--safe-t) + 310px); }
158
+ [data-format="square"] #t1-stat-cal .cal { width: 520px; }
159
+ [data-format="square"] #t1-stat-cal .cal-stat { font-size: 240px; }
160
+ [data-format="vertical"] #t1-stat-cal .label, [data-format="square"] #t1-stat-cal .label { left: var(--safe-l); right: var(--safe-r); bottom: auto; top: calc(var(--safe-t) + 700px); }
161
+ [data-format="square"] #t1-stat-cal .label { top: calc(var(--safe-t) + 620px); }
162
+ [data-format="vertical"] #t1-stat-cal .source, [data-format="square"] #t1-stat-cal .source { left: var(--safe-l); bottom: var(--safe-b); }
148
163
  </style>
149
164
  </head>
150
165
  <body>