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
@@ -15,7 +15,7 @@
15
15
  <style>
16
16
  html, body { margin: 0; }
17
17
  #t1-ov-matrix {
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
  }
@@ -37,7 +37,7 @@
37
37
 
38
38
  /* marker title */
39
39
  #t1-ov-matrix .marker-title {
40
- position: absolute; top: 72px; left: 50%; transform: translateX(-50%) skewX(var(--marker-skew));
40
+ position: absolute; top: calc(var(--safe-t) + 18px); left: 50%; transform: translateX(-50%) skewX(var(--marker-skew));
41
41
  background: var(--yellow); padding: 10px 36px; z-index: 5;
42
42
  font-weight: var(--wt-black); font-size: var(--size-title);
43
43
  letter-spacing: var(--track-tight); text-transform: uppercase; white-space: nowrap;
@@ -45,7 +45,7 @@
45
45
 
46
46
  /* table wrapper - centered */
47
47
  #t1-ov-matrix .table-wrap {
48
- position: absolute; top: 240px; left: 50%; transform: translateX(-50%);
48
+ position: absolute; top: calc(var(--safe-t) + 186px); left: 50%; transform: translateX(-50%);
49
49
  width: 1360px;
50
50
  }
51
51
 
@@ -59,7 +59,7 @@
59
59
  #t1-ov-matrix .matrix thead th {
60
60
  padding: 22px 28px;
61
61
  font-family: var(--font-label); font-weight: var(--wt-bold);
62
- font-size: 36px; letter-spacing: var(--track-wide); text-transform: uppercase;
62
+ font-size: calc(36px * var(--type)); letter-spacing: var(--track-wide); text-transform: uppercase;
63
63
  border-bottom: 5px solid var(--ink);
64
64
  }
65
65
  #t1-ov-matrix .matrix thead th:first-child {
@@ -82,7 +82,7 @@
82
82
  }
83
83
  #t1-ov-matrix .row-label {
84
84
  font-family: var(--font-label); font-weight: var(--wt-bold);
85
- font-size: 40px; color: var(--ink); text-align: left;
85
+ font-size: calc(40px * var(--type)); color: var(--ink); text-align: left;
86
86
  }
87
87
  #t1-ov-matrix .cell {
88
88
  text-align: center;
@@ -91,7 +91,7 @@
91
91
  /* check / cross marks - NOT arrows */
92
92
  #t1-ov-matrix .mark {
93
93
  display: inline-block;
94
- font-size: 72px; line-height: 1; font-weight: var(--wt-black);
94
+ font-size: calc(72px * var(--type)); line-height: 1; font-weight: var(--wt-black);
95
95
  font-family: var(--font-label);
96
96
  }
97
97
  #t1-ov-matrix .mark.yes {
@@ -112,11 +112,39 @@
112
112
 
113
113
  /* source */
114
114
  #t1-ov-matrix .source {
115
- position: absolute; bottom: 72px; left: 120px; z-index: 6;
115
+ position: absolute; bottom: calc(var(--safe-b) + 18px); left: calc(var(--safe-l) + 24px); z-index: 6;
116
116
  font-family: var(--font-label); font-weight: var(--wt-bold);
117
117
  font-size: var(--size-tiny); letter-spacing: var(--track-wide);
118
118
  text-transform: uppercase; color: var(--muted);
119
119
  }
120
+
121
+ /* Vertical and square: title and table centred on the safe box, the table narrowed to the
122
+ safe width with smaller header, labels and marks; source at the bottom left of the safe area. */
123
+ [data-format="vertical"] #t1-ov-matrix .marker-title, [data-format="square"] #t1-ov-matrix .marker-title,
124
+ [data-format="vertical"] #t1-ov-matrix .table-wrap, [data-format="square"] #t1-ov-matrix .table-wrap {
125
+ left: calc(var(--safe-l) + (var(--w) - var(--safe-l) - var(--safe-r)) / 2);
126
+ }
127
+ [data-format="vertical"] #t1-ov-matrix .marker-title, [data-format="square"] #t1-ov-matrix .marker-title {
128
+ top: var(--safe-t); width: max-content; max-width: calc(var(--w) - var(--safe-l) - var(--safe-r) - 72px);
129
+ white-space: normal; text-align: center;
130
+ }
131
+ [data-format="vertical"] #t1-ov-matrix .marker-title { font-size: calc(64px * var(--type)); }
132
+ [data-format="vertical"] #t1-ov-matrix .table-wrap, [data-format="square"] #t1-ov-matrix .table-wrap { width: calc(var(--w) - var(--safe-l) - var(--safe-r)); }
133
+ [data-format="vertical"] #t1-ov-matrix .table-wrap { top: calc(var(--safe-t) + 190px); }
134
+ [data-format="square"] #t1-ov-matrix .table-wrap { top: calc(var(--safe-t) + 170px); }
135
+ [data-format="vertical"] #t1-ov-matrix .matrix thead th { padding: 18px 10px; font-size: calc(24px * var(--type)); letter-spacing: 0.1em; }
136
+ [data-format="vertical"] #t1-ov-matrix .matrix thead th:first-child { width: 267px; }
137
+ [data-format="vertical"] #t1-ov-matrix .th-col { width: 220px; }
138
+ [data-format="vertical"] #t1-ov-matrix .matrix tbody td { padding: 48px 14px; }
139
+ [data-format="vertical"] #t1-ov-matrix .row-label { font-size: calc(32px * var(--type)); }
140
+ [data-format="vertical"] #t1-ov-matrix .mark { font-size: calc(54px * var(--type)); }
141
+ [data-format="square"] #t1-ov-matrix .matrix thead th { padding: 20px 14px; font-size: 30px; }
142
+ [data-format="square"] #t1-ov-matrix .matrix thead th:first-child { width: 332px; }
143
+ [data-format="square"] #t1-ov-matrix .th-col { width: 256px; }
144
+ [data-format="square"] #t1-ov-matrix .matrix tbody td { padding: 40px 20px; }
145
+ [data-format="square"] #t1-ov-matrix .row-label { font-size: 38px; }
146
+ [data-format="square"] #t1-ov-matrix .mark { font-size: 64px; }
147
+ [data-format="vertical"] #t1-ov-matrix .source, [data-format="square"] #t1-ov-matrix .source { left: var(--safe-l); bottom: var(--safe-b); }
120
148
  </style>
121
149
  </head>
122
150
  <body>
@@ -12,7 +12,7 @@
12
12
  <style>
13
13
  html, body { margin: 0; }
14
14
  #t1-ov-numlist {
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
  }
@@ -34,7 +34,7 @@
34
34
 
35
35
  /* marker title */
36
36
  #t1-ov-numlist .title {
37
- position: absolute; top: 80px; left: 130px;
37
+ position: absolute; top: calc(var(--safe-t) + 26px); left: calc(var(--safe-l) + 34px);
38
38
  background: var(--yellow); padding: 8px 28px;
39
39
  transform: skewX(var(--marker-skew)); transform-origin: left center;
40
40
  font-weight: var(--wt-black); font-size: var(--size-title);
@@ -42,14 +42,14 @@
42
42
  white-space: nowrap; z-index: 3;
43
43
  }
44
44
  #t1-ov-numlist .intro {
45
- position: absolute; top: 220px; left: 130px; right: 130px;
45
+ position: absolute; top: calc(var(--safe-t) + 166px); left: calc(var(--safe-l) + 34px); right: calc(var(--safe-r) + 34px);
46
46
  font-family: var(--font-label); font-weight: var(--wt-reg);
47
47
  font-size: var(--size-body); color: var(--muted); z-index: 3;
48
48
  }
49
49
 
50
50
  /* row list */
51
51
  #t1-ov-numlist .rows {
52
- position: absolute; top: 300px; left: 130px; right: 130px;
52
+ position: absolute; top: calc(var(--safe-t) + 246px); left: calc(var(--safe-l) + 34px); right: calc(var(--safe-r) + 34px);
53
53
  display: flex; flex-direction: column; gap: 0; z-index: 3;
54
54
  }
55
55
  #t1-ov-numlist .row {
@@ -61,7 +61,7 @@
61
61
 
62
62
  #t1-ov-numlist .ordinal {
63
63
  flex: 0 0 120px; text-align: right;
64
- font-weight: var(--wt-black); font-size: 100px; line-height: 1;
64
+ font-weight: var(--wt-black); font-size: calc(100px * var(--type)); line-height: 1;
65
65
  letter-spacing: var(--track-tight); color: var(--yellow);
66
66
  /* yellow outline with ink stroke using text-shadow for contrast */
67
67
  -webkit-text-stroke: 3px var(--ink);
@@ -74,7 +74,7 @@
74
74
  }
75
75
  #t1-ov-numlist .copy { flex: 1 1 auto; }
76
76
  #t1-ov-numlist .topic {
77
- font-weight: var(--wt-black); font-size: 54px;
77
+ font-weight: var(--wt-black); font-size: calc(54px * var(--type));
78
78
  letter-spacing: var(--track-tight); line-height: 1.05; color: var(--ink);
79
79
  }
80
80
  #t1-ov-numlist .sub {
@@ -84,11 +84,30 @@
84
84
  }
85
85
 
86
86
  #t1-ov-numlist .source {
87
- position: absolute; right: 130px; bottom: 88px;
87
+ position: absolute; right: calc(var(--safe-r) + 34px); bottom: calc(var(--safe-b) + 34px);
88
88
  font-family: var(--font-label); font-weight: var(--wt-bold);
89
89
  font-size: var(--size-tiny); letter-spacing: var(--track-wide);
90
90
  text-transform: uppercase; color: var(--muted); z-index: 3;
91
91
  }
92
+
93
+ /* Vertical and square: same list pinned to the safe box, title sized to the narrower width,
94
+ tighter rows, source moved under the list at the bottom left. */
95
+ [data-format="vertical"] #t1-ov-numlist .title, [data-format="square"] #t1-ov-numlist .title {
96
+ top: var(--safe-t); left: var(--safe-l); white-space: normal;
97
+ max-width: calc(var(--w) - var(--safe-l) - var(--safe-r) - 56px);
98
+ }
99
+ [data-format="vertical"] #t1-ov-numlist .title { font-size: calc(54px * var(--type)); }
100
+ [data-format="square"] #t1-ov-numlist .title { font-size: 72px; }
101
+ [data-format="vertical"] #t1-ov-numlist .intro, [data-format="square"] #t1-ov-numlist .intro { left: var(--safe-l); right: var(--safe-r); }
102
+ [data-format="vertical"] #t1-ov-numlist .intro { top: calc(var(--safe-t) + 110px); }
103
+ [data-format="square"] #t1-ov-numlist .intro { top: calc(var(--safe-t) + 116px); }
104
+ [data-format="vertical"] #t1-ov-numlist .rows, [data-format="square"] #t1-ov-numlist .rows { left: var(--safe-l); right: var(--safe-r); }
105
+ [data-format="vertical"] #t1-ov-numlist .rows { top: calc(var(--safe-t) + 220px); }
106
+ [data-format="square"] #t1-ov-numlist .rows { top: calc(var(--safe-t) + 180px); }
107
+ [data-format="vertical"] #t1-ov-numlist .row, [data-format="square"] #t1-ov-numlist .row { padding: 20px 0; gap: 30px; }
108
+ [data-format="vertical"] #t1-ov-numlist .ordinal { flex-basis: 110px; font-size: calc(80px * var(--type)); }
109
+ [data-format="square"] #t1-ov-numlist .ordinal { flex-basis: 110px; font-size: 88px; }
110
+ [data-format="vertical"] #t1-ov-numlist .source, [data-format="square"] #t1-ov-numlist .source { right: auto; left: var(--safe-l); bottom: var(--safe-b); }
92
111
  </style>
93
112
  </head>
94
113
  <body>
@@ -14,7 +14,7 @@
14
14
  <style>
15
15
  html, body { margin: 0; }
16
16
  #t1-ov-outline {
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
  }
@@ -52,7 +52,7 @@
52
52
 
53
53
  /* marker title */
54
54
  #t1-ov-outline .marker-title {
55
- position: absolute; top: 72px; left: 280px;
55
+ position: absolute; top: calc(var(--safe-t) + 18px); left: calc(var(--safe-l) + 184px);
56
56
  transform: skewX(var(--marker-skew));
57
57
  background: var(--yellow); padding: 10px 36px; z-index: 5;
58
58
  font-weight: var(--wt-black); font-size: var(--size-title);
@@ -62,7 +62,7 @@
62
62
 
63
63
  /* content area - right of the margin rule */
64
64
  #t1-ov-outline .notes {
65
- position: absolute; left: 280px; right: 140px; top: 220px;
65
+ position: absolute; left: calc(var(--safe-l) + 184px); right: calc(var(--safe-r) + 44px); top: calc(var(--safe-t) + 166px);
66
66
  z-index: 3;
67
67
  }
68
68
 
@@ -78,7 +78,7 @@
78
78
  }
79
79
  #t1-ov-outline .b-text {
80
80
  font-family: var(--font-label); font-weight: var(--wt-bold);
81
- font-size: 52px; line-height: 1.2; color: var(--ink);
81
+ font-size: calc(52px * var(--type)); line-height: 1.2; color: var(--ink);
82
82
  }
83
83
 
84
84
  /* sub-point - indented */
@@ -92,16 +92,36 @@
92
92
  }
93
93
  #t1-ov-outline .sub-text {
94
94
  font-family: var(--font-label); font-weight: var(--wt-reg);
95
- font-size: 36px; line-height: 1.3; color: var(--muted);
95
+ font-size: calc(36px * var(--type)); line-height: 1.3; color: var(--muted);
96
96
  font-style: italic;
97
97
  }
98
98
  /* source */
99
99
  #t1-ov-outline .source {
100
- position: absolute; left: 280px; bottom: 46px; z-index: 6;
100
+ position: absolute; left: calc(var(--safe-l) + 184px); bottom: var(--safe-b); z-index: 6;
101
101
  font-family: var(--font-label); font-weight: var(--wt-bold);
102
102
  font-size: var(--size-tiny); letter-spacing: var(--track-wide);
103
103
  text-transform: uppercase; color: var(--muted);
104
104
  }
105
+
106
+ /* Vertical and square: title, notes and source start just right of the punch holes and span
107
+ the safe width; bullets and sub-points get smaller so three groups fit the safe height. */
108
+ [data-format="vertical"] #t1-ov-outline .marker-title, [data-format="square"] #t1-ov-outline .marker-title,
109
+ [data-format="vertical"] #t1-ov-outline .notes, [data-format="square"] #t1-ov-outline .notes,
110
+ [data-format="vertical"] #t1-ov-outline .source, [data-format="square"] #t1-ov-outline .source { left: calc(var(--safe-l) + 40px); }
111
+ [data-format="vertical"] #t1-ov-outline .marker-title, [data-format="square"] #t1-ov-outline .marker-title {
112
+ top: var(--safe-t); white-space: normal; max-width: calc(var(--w) - var(--safe-l) - var(--safe-r) - 112px);
113
+ }
114
+ [data-format="vertical"] #t1-ov-outline .marker-title { font-size: calc(58px * var(--type)); }
115
+ [data-format="square"] #t1-ov-outline .marker-title { font-size: 76px; }
116
+ [data-format="vertical"] #t1-ov-outline .notes, [data-format="square"] #t1-ov-outline .notes { right: var(--safe-r); }
117
+ [data-format="vertical"] #t1-ov-outline .notes { top: calc(var(--safe-t) + 140px); }
118
+ [data-format="square"] #t1-ov-outline .notes { top: calc(var(--safe-t) + 150px); }
119
+ [data-format="vertical"] #t1-ov-outline .b-text { font-size: calc(50px * var(--type)); }
120
+ [data-format="vertical"] #t1-ov-outline .sub-text { font-size: calc(34px * var(--type)); }
121
+ [data-format="square"] #t1-ov-outline .b-text { font-size: 52px; }
122
+ [data-format="square"] #t1-ov-outline .sub-text { font-size: 36px; }
123
+ [data-format="vertical"] #t1-ov-outline .sub-row, [data-format="square"] #t1-ov-outline .sub-row { margin-left: 50px; margin-bottom: 46px; }
124
+ [data-format="vertical"] #t1-ov-outline .sub-dash, [data-format="square"] #t1-ov-outline .sub-dash { margin-top: 20px; }
105
125
  </style>
106
126
  </head>
107
127
  <body>
@@ -14,7 +14,7 @@
14
14
  <style>
15
15
  html, body { margin: 0; }
16
16
  #t1-ov-phase {
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
  }
@@ -36,7 +36,7 @@
36
36
 
37
37
  /* marker title */
38
38
  #t1-ov-phase .title {
39
- position: absolute; top: 68px; left: 50%; transform: translateX(-50%) skewX(var(--marker-skew));
39
+ position: absolute; top: calc(var(--safe-t) + 14px); left: 50%; transform: translateX(-50%) skewX(var(--marker-skew));
40
40
  background: var(--yellow); padding: 8px 32px; z-index: 7;
41
41
  font-weight: var(--wt-black); font-size: var(--size-title);
42
42
  letter-spacing: var(--track-tight); text-transform: uppercase; white-space: nowrap;
@@ -50,7 +50,7 @@
50
50
  #t1-ov-phase .band {
51
51
  position: absolute; left: 0; right: 0; height: 230px;
52
52
  display: flex; align-items: center; overflow: hidden;
53
- border-bottom: 4px solid var(--ink);
53
+ border-bottom: 4px solid var(--ink); padding-right: var(--safe-r);
54
54
  }
55
55
  #t1-ov-phase .band:first-child { border-top: 4px solid var(--ink); }
56
56
 
@@ -62,7 +62,7 @@
62
62
  #t1-ov-phase .band-num {
63
63
  flex-shrink: 0;
64
64
  width: 320px; text-align: right; padding-right: 56px;
65
- font-weight: var(--wt-black); font-size: 160px; line-height: 1;
65
+ font-weight: var(--wt-black); font-size: calc(160px * var(--type)); line-height: 1;
66
66
  letter-spacing: -0.05em; font-variant-numeric: tabular-nums; color: var(--ink);
67
67
  opacity: 0.12;
68
68
  /* on yellow band override */
@@ -87,7 +87,7 @@
87
87
  }
88
88
 
89
89
  #t1-ov-phase .band-title {
90
- font-weight: var(--wt-black); font-size: 80px; line-height: 1;
90
+ font-weight: var(--wt-black); font-size: calc(80px * var(--type)); line-height: 1;
91
91
  letter-spacing: var(--track-tight); color: var(--ink);
92
92
  }
93
93
 
@@ -103,7 +103,7 @@
103
103
  width: 108px; height: 108px; border-radius: 50%;
104
104
  background: var(--ink); color: var(--paper);
105
105
  display: flex; align-items: center; justify-content: center;
106
- font-weight: var(--wt-black); font-size: 56px;
106
+ font-weight: var(--wt-black); font-size: calc(56px * var(--type));
107
107
  font-variant-numeric: tabular-nums;
108
108
  flex-shrink: 0;
109
109
  }
@@ -111,11 +111,38 @@
111
111
 
112
112
  /* source */
113
113
  #t1-ov-phase .source {
114
- position: absolute; left: 56px; bottom: 54px; z-index: 8;
114
+ position: absolute; left: var(--safe-l); bottom: var(--safe-b); z-index: 8;
115
115
  font-family: var(--font-label); font-weight: var(--wt-bold);
116
116
  font-size: var(--size-tiny); letter-spacing: var(--track-wide);
117
117
  text-transform: uppercase; color: var(--muted);
118
118
  }
119
+
120
+ /* Vertical and square: full-bleed bands stay, stacked under the title inside the safe area;
121
+ the faint numeral and rule drop out, the badge sits at the safe left edge and the text
122
+ column fills the rest of the safe width. */
123
+ [data-format="vertical"] #t1-ov-phase .title, [data-format="square"] #t1-ov-phase .title {
124
+ top: var(--safe-t); left: calc(var(--safe-l) + (var(--w) - var(--safe-l) - var(--safe-r)) / 2);
125
+ width: max-content; max-width: calc(var(--w) - var(--safe-l) - var(--safe-r) - 64px);
126
+ white-space: normal; text-align: center;
127
+ }
128
+ [data-format="vertical"] #t1-ov-phase .title { font-size: calc(64px * var(--type)); }
129
+ [data-format="square"] #t1-ov-phase .title { font-size: 80px; }
130
+ [data-format="vertical"] #t1-ov-phase .bands { top: calc(var(--safe-t) + 130px); }
131
+ [data-format="square"] #t1-ov-phase .bands { top: calc(var(--safe-t) + 136px); }
132
+ [data-format="vertical"] #t1-ov-phase .band, [data-format="square"] #t1-ov-phase .band { height: 250px; }
133
+ [data-format="vertical"] #t1-ov-phase .band-2, [data-format="square"] #t1-ov-phase .band-2 { top: 254px; }
134
+ [data-format="vertical"] #t1-ov-phase .band-3, [data-format="square"] #t1-ov-phase .band-3 { top: 508px; }
135
+ [data-format="vertical"] #t1-ov-phase .band-num, [data-format="square"] #t1-ov-phase .band-num,
136
+ [data-format="vertical"] #t1-ov-phase .band-rule, [data-format="square"] #t1-ov-phase .band-rule { display: none; }
137
+ [data-format="vertical"] #t1-ov-phase .badge, [data-format="square"] #t1-ov-phase .badge { left: var(--safe-l); width: 96px; height: 96px; }
138
+ [data-format="vertical"] #t1-ov-phase .band-text, [data-format="square"] #t1-ov-phase .band-text { padding-left: calc(var(--safe-l) + 130px); }
139
+ [data-format="vertical"] #t1-ov-phase .band-title { font-size: calc(62px * var(--type)); }
140
+ [data-format="vertical"] #t1-ov-phase .band-sub { font-size: calc(28px * var(--type)); }
141
+ [data-format="square"] #t1-ov-phase .band-title { font-size: 68px; }
142
+ [data-format="square"] #t1-ov-phase .badge { font-size: 50px; }
143
+ [data-format="square"] #t1-ov-phase .band { height: 240px; }
144
+ [data-format="square"] #t1-ov-phase .band-2 { top: 244px; }
145
+ [data-format="square"] #t1-ov-phase .band-3 { top: 488px; }
119
146
  </style>
120
147
  </head>
121
148
  <body>
@@ -13,7 +13,7 @@
13
13
  <style>
14
14
  html, body { margin: 0; }
15
15
  #t1-ov-quad {
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
  /* marker title */
36
36
  #t1-ov-quad .title {
37
- position: absolute; top: 62px; left: 50%; transform: translateX(-50%) skewX(var(--marker-skew));
37
+ position: absolute; top: calc(var(--safe-t) + 8px); left: 50%; transform: translateX(-50%) skewX(var(--marker-skew));
38
38
  background: var(--yellow); padding: 8px 28px; z-index: 3;
39
39
  font-weight: var(--wt-black); font-size: var(--size-title);
40
40
  letter-spacing: var(--track-tight); text-transform: uppercase; white-space: nowrap;
@@ -45,7 +45,7 @@
45
45
  background: var(--ink); z-index: 2;
46
46
  }
47
47
  #t1-ov-quad .divider-v {
48
- position: absolute; top: 220px; bottom: 0; left: 960px; width: 5px;
48
+ position: absolute; top: 220px; bottom: 0; left: calc(var(--w) / 2); width: 5px;
49
49
  background: var(--ink); z-index: 2;
50
50
  }
51
51
  /* quadrant tiles */
@@ -57,21 +57,21 @@
57
57
  display: flex; flex-direction: column; justify-content: center;
58
58
  padding: 56px 72px;
59
59
  }
60
- #t1-ov-quad .q1 { padding-right: 56px; }
61
- #t1-ov-quad .q2 { padding-left: 56px; }
62
- #t1-ov-quad .q3 { padding-right: 56px; }
63
- #t1-ov-quad .q4 { padding-left: 56px; }
60
+ #t1-ov-quad .q1 { padding-right: 56px; padding-left: var(--safe-l); }
61
+ #t1-ov-quad .q2 { padding-left: 56px; padding-right: var(--safe-r); }
62
+ #t1-ov-quad .q3 { padding-right: 56px; padding-left: var(--safe-l); }
63
+ #t1-ov-quad .q4 { padding-left: 56px; padding-right: var(--safe-r); }
64
64
  /* number chip */
65
65
  #t1-ov-quad .chip {
66
66
  display: inline-flex; align-items: center; justify-content: center;
67
67
  width: 72px; height: 72px;
68
68
  background: var(--ink); color: var(--paper);
69
- font-weight: var(--wt-black); font-size: 40px;
69
+ font-weight: var(--wt-black); font-size: calc(40px * var(--type));
70
70
  font-variant-numeric: tabular-nums; margin-bottom: 22px;
71
71
  }
72
72
  #t1-ov-quad .q1 .chip, #t1-ov-quad .q2 .chip { background: var(--yellow); color: var(--ink); }
73
73
  #t1-ov-quad .topic {
74
- font-weight: var(--wt-black); font-size: 60px;
74
+ font-weight: var(--wt-black); font-size: calc(60px * var(--type));
75
75
  line-height: 1.05; letter-spacing: var(--track-tight); margin-bottom: 14px;
76
76
  }
77
77
  #t1-ov-quad .sub {
@@ -80,11 +80,42 @@
80
80
  }
81
81
  /* source */
82
82
  #t1-ov-quad .source {
83
- position: absolute; left: 130px; bottom: 34px; z-index: 4;
83
+ position: absolute; left: calc(var(--safe-l) + 34px); bottom: var(--safe-b); z-index: 4;
84
84
  font-family: var(--font-label); font-weight: var(--wt-bold);
85
85
  font-size: var(--size-tiny); letter-spacing: var(--track-wide);
86
86
  text-transform: uppercase; color: var(--muted);
87
87
  }
88
+
89
+ /* Vertical: the four quadrants become four rows (chip left, topic and sub right) split by
90
+ rules; the cross dividers are hidden. Title centred on the safe box and allowed to wrap. */
91
+ [data-format="vertical"] #t1-ov-quad .title, [data-format="square"] #t1-ov-quad .title {
92
+ top: var(--safe-t); left: calc(var(--safe-l) + (var(--w) - var(--safe-l) - var(--safe-r)) / 2);
93
+ width: max-content; max-width: calc(var(--w) - var(--safe-l) - var(--safe-r) - 56px);
94
+ white-space: normal; text-align: center;
95
+ }
96
+ [data-format="vertical"] #t1-ov-quad .title { font-size: calc(54px * var(--type)); }
97
+ [data-format="vertical"] #t1-ov-quad .divider-h, [data-format="vertical"] #t1-ov-quad .divider-v { display: none; }
98
+ [data-format="vertical"] #t1-ov-quad .quads {
99
+ left: var(--safe-l); right: var(--safe-r); top: calc(var(--safe-t) + 190px); bottom: calc(var(--safe-b) + 30px);
100
+ grid-template-columns: 1fr; grid-template-rows: repeat(4, 1fr);
101
+ }
102
+ [data-format="vertical"] #t1-ov-quad .q {
103
+ display: grid; grid-template-columns: 72px 1fr; column-gap: 30px; align-content: center;
104
+ padding: 0; border-top: 3px solid var(--ink);
105
+ }
106
+ [data-format="vertical"] #t1-ov-quad .chip { grid-column: 1; grid-row: 1 / span 2; margin: 6px 0 0 0; }
107
+ [data-format="vertical"] #t1-ov-quad .topic { grid-column: 2; margin-bottom: 8px; font-size: calc(52px * var(--type)); }
108
+ [data-format="vertical"] #t1-ov-quad .sub { grid-column: 2; }
109
+ [data-format="vertical"] #t1-ov-quad .source, [data-format="square"] #t1-ov-quad .source { left: var(--safe-l); bottom: var(--safe-b); }
110
+ /* Square: keep the 2x2 cross, fitted to the safe box. */
111
+ [data-format="square"] #t1-ov-quad .title { font-size: 64px; }
112
+ [data-format="square"] #t1-ov-quad .quads { left: var(--safe-l); right: var(--safe-r); top: calc(var(--safe-t) + 130px); bottom: calc(var(--safe-b) + 40px); }
113
+ [data-format="square"] #t1-ov-quad .q { padding: 24px 28px; }
114
+ [data-format="square"] #t1-ov-quad .q1, [data-format="square"] #t1-ov-quad .q3 { padding-left: 0; }
115
+ [data-format="square"] #t1-ov-quad .q2, [data-format="square"] #t1-ov-quad .q4 { padding-right: 0; }
116
+ [data-format="square"] #t1-ov-quad .topic { font-size: 54px; }
117
+ [data-format="square"] #t1-ov-quad .divider-v { top: calc(var(--safe-t) + 130px); bottom: calc(var(--safe-b) + 40px); }
118
+ [data-format="square"] #t1-ov-quad .divider-h { top: calc(var(--safe-t) + 130px + (var(--h) - var(--safe-t) - var(--safe-b) - 170px) / 2); }
88
119
  </style>
89
120
  </head>
90
121
  <body>
@@ -13,7 +13,7 @@
13
13
  <style>
14
14
  html, body { margin: 0; }
15
15
  #t1-ov-road {
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
  /* marker title */
36
36
  #t1-ov-road .title {
37
- position: absolute; top: 72px; left: 50%; transform: translateX(-50%) skewX(var(--marker-skew));
37
+ position: absolute; top: calc(var(--safe-t) + 18px); left: 50%; transform: translateX(-50%) skewX(var(--marker-skew));
38
38
  background: var(--yellow); padding: 8px 28px; z-index: 3;
39
39
  font-weight: var(--wt-black); font-size: var(--size-title); letter-spacing: var(--track-tight);
40
40
  text-transform: uppercase; white-space: nowrap;
@@ -42,7 +42,7 @@
42
42
 
43
43
  /* intro sub-line */
44
44
  #t1-ov-road .intro {
45
- position: absolute; top: 218px; left: 50%; transform: translateX(-50%);
45
+ position: absolute; top: calc(var(--safe-t) + 164px); left: 50%; transform: translateX(-50%);
46
46
  width: 1100px; text-align: center; z-index: 3;
47
47
  font-family: var(--font-label); font-weight: var(--wt-reg);
48
48
  font-size: var(--size-body); line-height: 1.4; color: var(--muted);
@@ -50,12 +50,12 @@
50
50
 
51
51
  /* SVG canvas for the road path */
52
52
  #t1-ov-road .road-svg {
53
- position: absolute; left: 0; top: 280px; width: 1920px; height: 720px; z-index: 2;
53
+ position: absolute; left: 0; top: 280px; width: var(--w); height: 720px; z-index: 2;
54
54
  }
55
55
 
56
56
  /* milestone stop blocks */
57
57
  #t1-ov-road .stops {
58
- position: absolute; left: 0; top: 0; width: 1920px; height: 1080px; z-index: 4;
58
+ position: absolute; left: 0; top: 0; width: var(--w); height: var(--h); z-index: 4;
59
59
  pointer-events: none;
60
60
  }
61
61
  #t1-ov-road .stop {
@@ -65,7 +65,7 @@
65
65
  width: 72px; height: 72px;
66
66
  background: var(--ink); color: var(--paper);
67
67
  display: flex; align-items: center; justify-content: center;
68
- font-weight: var(--wt-black); font-size: 36px; font-variant-numeric: tabular-nums;
68
+ font-weight: var(--wt-black); font-size: calc(36px * var(--type)); font-variant-numeric: tabular-nums;
69
69
  transform: rotate(45deg);
70
70
  }
71
71
  #t1-ov-road .stop-num {
@@ -78,14 +78,56 @@
78
78
  text-transform: uppercase; color: var(--ink);
79
79
  white-space: nowrap; max-width: 380px;
80
80
  }
81
+ /* landscape stop positions on the road (were inline styles) */
82
+ #t1-ov-road .s1 { left: 44px; top: 780px; }
83
+ #t1-ov-road .s2 { left: 604px; top: 400px; }
84
+ #t1-ov-road .s3 { left: 1244px; top: 760px; }
85
+ #t1-ov-road .s4 { left: 1804px; top: 440px; }
86
+ #t1-ov-road .stop .stop-label { left: 90px; top: -4px; transform: none; }
87
+ #t1-ov-road .s4 .stop-label { left: auto; right: 90px; text-align: right; }
88
+ /* the portrait road used in vertical and square */
89
+ #t1-ov-road .road-alt { display: none; position: absolute; z-index: 2; }
81
90
 
82
91
  /* source */
83
92
  #t1-ov-road .source {
84
- position: absolute; left: 130px; bottom: 60px; z-index: 7;
93
+ position: absolute; left: calc(var(--safe-l) + 34px); bottom: calc(var(--safe-b) + 6px); z-index: 7;
85
94
  font-family: var(--font-label); font-weight: var(--wt-bold);
86
95
  font-size: var(--size-tiny); letter-spacing: var(--track-wide);
87
96
  text-transform: uppercase; color: var(--muted);
88
97
  }
98
+
99
+ /* Vertical and square: the wide road is swapped for a portrait switchback (.road-alt, an
100
+ 800x700 box) and the stops sit on its bends; labels point into the frame. Title and intro
101
+ are centred on the safe box; source at the bottom left of the safe area. */
102
+ [data-format="vertical"] #t1-ov-road .title, [data-format="square"] #t1-ov-road .title,
103
+ [data-format="vertical"] #t1-ov-road .intro, [data-format="square"] #t1-ov-road .intro {
104
+ top: var(--safe-t); left: calc(var(--safe-l) + (var(--w) - var(--safe-l) - var(--safe-r)) / 2);
105
+ }
106
+ [data-format="vertical"] #t1-ov-road .title, [data-format="square"] #t1-ov-road .title {
107
+ width: max-content; max-width: calc(var(--w) - var(--safe-l) - var(--safe-r) - 56px); white-space: normal; text-align: center;
108
+ }
109
+ [data-format="vertical"] #t1-ov-road .title { font-size: calc(64px * var(--type)); }
110
+ [data-format="square"] #t1-ov-road .title { font-size: 80px; }
111
+ [data-format="vertical"] #t1-ov-road .intro, [data-format="square"] #t1-ov-road .intro { top: calc(var(--safe-t) + 112px); width: calc(var(--w) - var(--safe-l) - var(--safe-r)); }
112
+ [data-format="vertical"] #t1-ov-road .road-svg, [data-format="square"] #t1-ov-road .road-svg { display: none; }
113
+ [data-format="vertical"] #t1-ov-road .road-alt, [data-format="vertical"] #t1-ov-road .stops {
114
+ display: block; left: var(--safe-l); top: calc(var(--safe-t) + 250px);
115
+ width: calc(var(--w) - var(--safe-l) - var(--safe-r)); height: calc((var(--w) - var(--safe-l) - var(--safe-r)) * 7 / 8);
116
+ }
117
+ [data-format="square"] #t1-ov-road .road-alt, [data-format="square"] #t1-ov-road .stops {
118
+ display: block; top: calc(var(--safe-t) + 190px); height: 680px; width: calc(680px * 8 / 7);
119
+ left: calc(var(--safe-l) + (var(--w) - var(--safe-l) - var(--safe-r) - 680px * 8 / 7) / 2);
120
+ }
121
+ /* stop centres on the runs: (100,100) (540,350) (250,600) (720,600) of the 800x700 road box; labels hang below the pins */
122
+ [data-format="vertical"] #t1-ov-road .s1, [data-format="square"] #t1-ov-road .s1 { left: calc(100 / 800 * 100% - 36px); top: calc(100 / 700 * 100% - 36px); }
123
+ [data-format="vertical"] #t1-ov-road .s2, [data-format="square"] #t1-ov-road .s2 { left: calc(540 / 800 * 100% - 36px); top: calc(350 / 700 * 100% - 36px); }
124
+ [data-format="vertical"] #t1-ov-road .s3, [data-format="square"] #t1-ov-road .s3 { left: calc(250 / 800 * 100% - 36px); top: calc(600 / 700 * 100% - 36px); }
125
+ [data-format="vertical"] #t1-ov-road .s4, [data-format="square"] #t1-ov-road .s4 { left: calc(720 / 800 * 100% - 36px); top: calc(600 / 700 * 100% - 36px); }
126
+ [data-format="vertical"] #t1-ov-road .s2 .stop-label, [data-format="square"] #t1-ov-road .s2 .stop-label { top: 96px; left: auto; right: -20px; text-align: right; }
127
+ [data-format="vertical"] #t1-ov-road .s1 .stop-label, [data-format="square"] #t1-ov-road .s1 .stop-label,
128
+ [data-format="vertical"] #t1-ov-road .s3 .stop-label, [data-format="square"] #t1-ov-road .s3 .stop-label { top: 96px; left: 0; }
129
+ [data-format="vertical"] #t1-ov-road .s4 .stop-label, [data-format="square"] #t1-ov-road .s4 .stop-label { top: 96px; right: -20px; }
130
+ [data-format="vertical"] #t1-ov-road .source, [data-format="square"] #t1-ov-road .source { left: var(--safe-l); bottom: var(--safe-b); }
89
131
  </style>
90
132
  </head>
91
133
  <body>
@@ -113,29 +155,34 @@
113
155
  fill="none" stroke="var(--yellow)" stroke-width="6"
114
156
  stroke-dasharray="40 28" stroke-linecap="round"/>
115
157
  </svg>
158
+ <!-- portrait road for vertical and square: three runs joined by U-turns, down the safe box -->
159
+ <svg class="road-alt" viewBox="0 0 800 700" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg">
160
+ <path d="M 60,100 L 600,100 C 770,100 770,350 600,350 L 200,350 C 30,350 30,600 200,600 L 740,600" fill="none" stroke="var(--ink)" stroke-width="44" stroke-linecap="round" stroke-linejoin="round"/>
161
+ <path d="M 60,100 L 600,100 C 770,100 770,350 600,350 L 200,350 C 30,350 30,600 200,600 L 740,600" fill="none" stroke="var(--paper-2)" stroke-width="30" stroke-linecap="round" stroke-linejoin="round"/>
162
+ <path d="M 60,100 L 600,100 C 770,100 770,350 600,350 L 200,350 C 30,350 30,600 200,600 L 740,600" fill="none" stroke="var(--yellow)" stroke-width="5" stroke-dasharray="32 22" stroke-linecap="round"/>
163
+ </svg>
116
164
 
117
165
  <!-- milestone stops - positioned at the 4 path anchor-ish points -->
118
166
  <div class="stops">
119
167
  <!-- Stop 1: near x=80, y=280+560=840 in comp coords -->
120
- <div class="stop s1" style="left:44px; top:780px;">
168
+ <div class="stop s1">
121
169
  <div class="stop-pin"><span class="stop-num">1</span></div>
122
- <div class="stop-label" data-slot="stop1" style="left:90px; top:-4px; transform:none;">Discovery</div>
170
+ <div class="stop-label" data-slot="stop1">Discovery</div>
123
171
  </div>
124
172
  <!-- Stop 2: near x=640, y=280+180=460 -->
125
- <div class="stop s2" style="left:604px; top:400px;">
173
+ <div class="stop s2">
126
174
  <div class="stop-pin"><span class="stop-num">2</span></div>
127
- <div class="stop-label" data-slot="stop2" style="left:90px; top:-4px; transform:none;">Planning</div>
175
+ <div class="stop-label" data-slot="stop2">Planning</div>
128
176
  </div>
129
177
  <!-- Stop 3: near x=1280, y=280+540=820 -->
130
- <div class="stop s3" style="left:1244px; top:760px;">
178
+ <div class="stop s3">
131
179
  <div class="stop-pin"><span class="stop-num">3</span></div>
132
- <div class="stop-label" data-slot="stop3" style="left:90px; top:-4px; transform:none;">Execution</div>
180
+ <div class="stop-label" data-slot="stop3">Execution</div>
133
181
  </div>
134
182
  <!-- Stop 4: near x=1840, y=280+220=500 -->
135
- <div class="stop s4" style="left:1804px; top:440px;">
183
+ <div class="stop s4">
136
184
  <div class="stop-pin"><span class="stop-num">4</span></div>
137
- <div class="stop-label" data-slot="stop4" style="right:0; left:auto; transform:none;
138
- top:-4px; text-align:right; right:90px;">Delivery</div>
185
+ <div class="stop-label" data-slot="stop4">Delivery</div>
139
186
  </div>
140
187
  </div>
141
188
 
@@ -162,6 +209,8 @@
162
209
  const pathLen = initPath(roadPath);
163
210
  initPath(roadSurface);
164
211
  initPath(roadCenter);
212
+ const roadAlt = Array.from(document.querySelectorAll("#t1-ov-road .road-alt path"));
213
+ roadAlt.forEach(initPath);
165
214
 
166
215
  const tl = gsap.timeline({ paused: true });
167
216
 
@@ -176,7 +225,7 @@
176
225
  { autoAlpha: 0, y: 14, duration: 0.3 }, 0.42);
177
226
 
178
227
  // road draws in (stepped, choppy)
179
- tl.to([roadPath, roadSurface, roadCenter],
228
+ tl.to([roadPath, roadSurface, roadCenter].concat(roadAlt),
180
229
  { strokeDashoffset: 0, duration: 0.8, ease: "steps(12)" }, 0.55);
181
230
 
182
231
  // stops pop along the road