stillmade-sdk 0.1.41 → 0.1.43

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 (285) hide show
  1. package/.stillmade/sdk-baseline.json +19 -21
  2. package/AGENTS.md +17 -12
  3. package/FRAME_VIEWS.md +113 -0
  4. package/INTERFACE_DESIGN.md +67 -22
  5. package/MOBILE_UI.md +4 -2
  6. package/MODULES.md +152 -6
  7. package/PASTE_TO_LLM.md +42 -32
  8. package/README.md +3 -2
  9. package/SDK.md +1028 -563
  10. package/UI_AESTHETIC.md +30 -3
  11. package/blocks/generate/package.js +1 -0
  12. package/blocks/generate/versions/1.0.0/package.js +463 -0
  13. package/docs/build/audio-to-editor.md +36 -0
  14. package/docs/build/block-builder-contract.md +150 -0
  15. package/docs/build/comfyui.md +227 -0
  16. package/docs/build/concepts.md +40 -0
  17. package/docs/build/context.md +159 -0
  18. package/docs/build/cookbook.md +57 -0
  19. package/docs/build/custom-interface.md +617 -0
  20. package/docs/build/data-types.md +83 -0
  21. package/docs/build/frame-views.md +259 -0
  22. package/docs/build/generate-media.md +59 -0
  23. package/docs/build/github-applications.md +314 -0
  24. package/docs/build/hosted-images.md +214 -0
  25. package/docs/build/hosted-music.md +39 -0
  26. package/docs/build/hosted-speech.md +157 -0
  27. package/docs/build/hosted-text.md +246 -0
  28. package/docs/build/image-description.md +49 -0
  29. package/docs/build/interface-design.md +343 -0
  30. package/docs/build/javascript.md +63 -0
  31. package/docs/build/local-preview.md +61 -0
  32. package/docs/build/media-analysis.md +27 -0
  33. package/docs/build/media.md +400 -0
  34. package/docs/build/mobile-ui.md +106 -0
  35. package/docs/build/modules.md +487 -0
  36. package/docs/build/original-blocks.md +70 -0
  37. package/docs/build/outside-apis.md +128 -0
  38. package/docs/build/production-context-templates.md +12 -0
  39. package/docs/build/project-storage.md +94 -0
  40. package/docs/build/quickstart.md +48 -0
  41. package/docs/build/recipes.md +103 -0
  42. package/docs/build/script-handoff.md +45 -0
  43. package/docs/build/script-writer.md +34 -0
  44. package/docs/build/state.md +223 -0
  45. package/docs/build/testing.md +112 -0
  46. package/docs/build/timeline-edits.md +116 -0
  47. package/docs/build/timeline-proposals.md +76 -0
  48. package/docs/build/transcription.md +59 -0
  49. package/docs/build/triggers.md +59 -0
  50. package/docs/build/tutorial.md +52 -0
  51. package/docs/build/typescript.md +34 -0
  52. package/docs/build/video-generation.md +61 -0
  53. package/docs/build/web-reading.md +37 -0
  54. package/docs/build/with-your-ai.md +27 -0
  55. package/docs/changelog.md +9 -0
  56. package/docs/creators.md +21 -0
  57. package/docs/distribute/discovery.md +43 -0
  58. package/docs/distribute/imports.md +58 -0
  59. package/docs/distribute/publishing.md +29 -0
  60. package/docs/distribute/sdk-versions.md +36 -0
  61. package/docs/distribute/selling.md +14 -0
  62. package/docs/distribute/teams.md +60 -0
  63. package/docs/distribute/versioning.md +28 -0
  64. package/docs/examples.md +23 -0
  65. package/docs/gallery.md +26 -0
  66. package/docs/index.md +50 -0
  67. package/docs/native-mcp.md +307 -0
  68. package/docs/project-types/automation.md +43 -0
  69. package/docs/project-types/batches.md +50 -0
  70. package/docs/project-types/build.md +42 -0
  71. package/docs/project-types/completion.md +15 -0
  72. package/docs/project-types/conditions.md +21 -0
  73. package/docs/project-types/hosted-review.md +115 -0
  74. package/docs/project-types/onboarding.md +75 -0
  75. package/docs/project-types/running.md +309 -0
  76. package/docs/project-types/testing.md +72 -0
  77. package/docs/reference/application-artifacts.md +87 -0
  78. package/docs/reference/authoring-guide.md +134 -0
  79. package/docs/reference/browser-applications.md +267 -0
  80. package/docs/reference/capabilities.md +45 -0
  81. package/docs/reference/cli.md +71 -0
  82. package/docs/reference/connection-api.md +59 -0
  83. package/docs/reference/cooperative-jobs.md +13 -0
  84. package/docs/reference/desktop-capabilities.md +172 -0
  85. package/docs/reference/desktop-execution.md +77 -0
  86. package/docs/reference/errors.md +233 -0
  87. package/docs/reference/execution.md +800 -0
  88. package/docs/reference/first-party-blocks.md +40 -0
  89. package/docs/reference/generation-models.md +59 -0
  90. package/docs/reference/limits.md +306 -0
  91. package/docs/reference/manifest-kinds-controls.md +36 -0
  92. package/docs/reference/manifest.md +181 -0
  93. package/docs/reference/operations.md +36 -0
  94. package/docs/reference/package-jobs.md +35 -0
  95. package/docs/reference/parity.md +55 -0
  96. package/docs/reference/permissions.md +86 -0
  97. package/docs/reference/ports.md +26 -0
  98. package/docs/reference/types.md +268 -0
  99. package/docs/reference/universal-resolver.md +303 -0
  100. package/docs/reference/view-bridge.md +60 -0
  101. package/docs/reference/view-rules.md +15 -0
  102. package/docs/reference/workspace-sync.md +25 -0
  103. package/docs/sdk.md +34 -0
  104. package/docs/tools/block-remix.md +211 -0
  105. package/docs/tools/llm.md +2213 -0
  106. package/docs/tools/repository-adaptation.md +613 -0
  107. package/examples/check-clip.stillmade.json +8 -1
  108. package/examples/clean-text.stillmade.json +4 -0
  109. package/examples/custom-interface.stillmade.json +4 -0
  110. package/examples/describe-image.stillmade.json +4 -0
  111. package/examples/foley-cue.stillmade.json +4 -0
  112. package/examples/generate-image.stillmade.json +4 -0
  113. package/examples/generate-video.stillmade.json +10 -2
  114. package/examples/module-word-stats/stillmade.block.json +4 -0
  115. package/examples/narrate-script.stillmade.json +4 -0
  116. package/examples/numbered-takes.stillmade.json +4 -0
  117. package/examples/research-topic.stillmade.json +9 -1
  118. package/examples/score-a-scene.stillmade.json +4 -0
  119. package/examples/script-draft.stillmade.json +4 -0
  120. package/examples/summarize-page.stillmade.json +4 -0
  121. package/examples/text-workflow.stillmade.json +7 -32
  122. package/examples/thicken-lines.stillmade.json +4 -0
  123. package/examples/timeline-polish.stillmade.json +15 -3
  124. package/examples/transcribe-audio.stillmade.json +15 -3
  125. package/examples/word-count.stillmade.json +4 -0
  126. package/package.json +1 -1
  127. package/packages/block-cli/cli.js +13 -6
  128. package/packages/block-cli/dev-host/assets/host.js +81 -38
  129. package/packages/block-cli/dev-host/assets/index.css +1 -1
  130. package/packages/block-cli/format.js +1 -1
  131. package/packages/block-cli/ready-gate.js +4 -0
  132. package/packages/block-cli/templates.js +37 -19
  133. package/packages/block-cli/type-packages.js +119 -0
  134. package/packages/block-platform/block-readiness.js +8 -1
  135. package/packages/block-platform/canvas.js +2 -1
  136. package/packages/block-platform/catalog.js +27 -48
  137. package/packages/block-platform/native-host-inventory.js +0 -226
  138. package/packages/block-platform/plain-descriptions.js +1 -25
  139. package/packages/block-platform/project-type-starters.js +13 -53
  140. package/packages/block-platform/script-handoff.js +2 -4
  141. package/packages/block-platform/type-workspace.js +2 -0
  142. package/packages/block-sdk/appearance.js +3 -1
  143. package/packages/block-sdk/audio-generation-example.js +2 -2
  144. package/packages/block-sdk/block-tier.js +1 -1
  145. package/packages/block-sdk/builder-contract.js +13 -11
  146. package/packages/block-sdk/capabilities.js +1 -1
  147. package/packages/block-sdk/capability-example.js +1 -1
  148. package/packages/block-sdk/contracts.js +6 -2
  149. package/packages/block-sdk/examples.js +3 -3
  150. package/packages/block-sdk/first-party-identities.js +1 -84
  151. package/packages/block-sdk/first-party-packages.js +3 -85
  152. package/packages/block-sdk/generation-catalog.js +15 -3
  153. package/packages/block-sdk/image-description-example.js +1 -1
  154. package/packages/block-sdk/image-generation-example.js +1 -1
  155. package/packages/block-sdk/index.d.ts +2 -1
  156. package/packages/block-sdk/media-analysis-example.js +2 -2
  157. package/packages/block-sdk/mock-host.js +7 -1
  158. package/packages/block-sdk/module-example.js +1 -1
  159. package/packages/block-sdk/module-host-calls.js +35 -10
  160. package/packages/block-sdk/module-hosted.js +15 -2
  161. package/packages/block-sdk/module-media-access.js +71 -0
  162. package/packages/block-sdk/module-node.js +1 -1
  163. package/packages/block-sdk/portable-media-actions.js +1 -1
  164. package/packages/block-sdk/runtime.js +1 -1
  165. package/packages/block-sdk/speech-example.js +1 -1
  166. package/packages/block-sdk/state-example.js +1 -1
  167. package/packages/block-sdk/timeline-proposal-example.js +1 -1
  168. package/packages/block-sdk/transcription-example.js +1 -1
  169. package/packages/block-sdk/trigger-examples.js +2 -2
  170. package/packages/block-sdk/video-generation-example.js +1 -1
  171. package/packages/block-sdk/view-bridge.js +4 -1
  172. package/packages/block-sdk/view-design.js +44 -15
  173. package/packages/block-sdk/web-example.js +2 -2
  174. package/packages/design-system/block-kit.css +53 -12
  175. package/packages/design-system/block-kit.html +3 -2
  176. package/blocks/mcp-motion-planner/versions/1.1.0/package.js +0 -97
  177. package/blocks/motion-designer/versions/1.0.1/package.js +0 -173318
  178. package/blocks/motion-designer/versions/1.0.2/package.js +0 -173318
  179. package/blocks/motion-frame-review/versions/1.1.1/package.js +0 -465
  180. package/blocks/motion-frame-review/versions/1.1.2/package.snapshot.js +0 -572
  181. package/blocks/narration/package.js +0 -1
  182. package/blocks/narration/versions/1.0.0/package.js +0 -221
  183. package/blocks/narration/versions/1.0.1/package.js +0 -221
  184. package/blocks/native/sm.animated-scene/versions/2.0.0/package.js +0 -475
  185. package/blocks/native/sm.animated-scene/versions/2.1.0/package.js +0 -498
  186. package/blocks/native/sm.animated-scene/versions/2.2.0/package.js +0 -524
  187. package/blocks/native/sm.animated-scene/versions/2.3.0/package.js +0 -618
  188. package/blocks/native/sm.animated-scene/versions/2.3.1/package.js +0 -618
  189. package/blocks/native/sm.animated-scene/versions/2.3.2/package.js +0 -723
  190. package/blocks/native/sm.animated-scene/versions/2.3.3/package.js +0 -723
  191. package/blocks/native/sm.animated-scene/versions/2.3.4/package.js +0 -676
  192. package/blocks/native/sm.animated-scene/versions/2.3.5/package.js +0 -693
  193. package/blocks/native/sm.animated-scene/versions/2.3.6/package.js +0 -700
  194. package/blocks/native/sm.animated-scene/versions/2.3.7/package.js +0 -747
  195. package/blocks/native/sm.animated-scene/versions/2.3.8/package.js +0 -769
  196. package/blocks/native/sm.animated-scene/versions/2.3.9/package.js +0 -769
  197. package/blocks/native/sm.animated-scene-assistant/versions/1.0.0/package.js +0 -183
  198. package/blocks/native/sm.blueprint/versions/2.0.0/package.js +0 -358
  199. package/blocks/native/sm.blueprint/versions/2.1.0/package.js +0 -358
  200. package/blocks/native/sm.blueprint/versions/2.1.1/package.js +0 -358
  201. package/blocks/native/sm.blueprint/versions/2.1.2/package.js +0 -358
  202. package/blocks/native/sm.blueprint/versions/2.1.3/package.js +0 -381
  203. package/blocks/native/sm.blueprint/versions/2.1.4/package.js +0 -381
  204. package/blocks/native/sm.blueprint/versions/2.1.5/package.js +0 -339
  205. package/blocks/native/sm.blueprint/versions/2.1.6/package.js +0 -356
  206. package/blocks/native/sm.blueprint/versions/2.1.7/package.js +0 -363
  207. package/blocks/native/sm.blueprint/versions/2.1.8/package.js +0 -410
  208. package/blocks/native/sm.blueprint/versions/2.1.9/package.js +0 -422
  209. package/blocks/native/sm.blueprint-assistant/versions/1.0.0/package.js +0 -172
  210. package/blocks/native/sm.chat/versions/2.0.0/package.js +0 -144
  211. package/blocks/native/sm.chat/versions/2.0.1/package.js +0 -97
  212. package/blocks/native/sm.chat/versions/2.0.2/package.js +0 -100
  213. package/blocks/native/sm.chat/versions/2.0.3/package.js +0 -100
  214. package/blocks/native/sm.continue-if/versions/1.0.0/package.js +0 -168
  215. package/blocks/native/sm.describe-media/versions/2.0.0/package.js +0 -153
  216. package/blocks/native/sm.describe-media/versions/2.0.1/package.js +0 -156
  217. package/blocks/native/sm.describe-media/versions/2.1.0/package.js +0 -140
  218. package/blocks/native/sm.image-editor/versions/2.0.0/package.js +0 -183
  219. package/blocks/native/sm.image-editor/versions/2.0.1/package.js +0 -190
  220. package/blocks/native/sm.new-items/versions/1.0.0/package.js +0 -191
  221. package/blocks/native/sm.pick-photos/versions/1.0.0/package.js +0 -334
  222. package/blocks/native/sm.quality-audit/versions/1.0.0/package.js +0 -192
  223. package/blocks/native/sm.quality-audit/versions/1.0.1/package.js +0 -192
  224. package/blocks/native/sm.quality-audit/versions/1.0.2/package.js +0 -195
  225. package/blocks/native/sm.research/versions/2.0.0/package.js +0 -175
  226. package/blocks/native/sm.research/versions/2.0.1/package.js +0 -184
  227. package/blocks/native/sm.research/versions/2.0.2/package.js +0 -187
  228. package/blocks/native/sm.script/versions/2.0.0/package.js +0 -144
  229. package/blocks/native/sm.script/versions/2.1.0/package.js +0 -144
  230. package/blocks/native/sm.script/versions/2.1.1/package.js +0 -144
  231. package/blocks/native/sm.script/versions/2.1.2/package.js +0 -105
  232. package/blocks/native/sm.script/versions/2.1.3/package.js +0 -152
  233. package/blocks/native/sm.script/versions/2.1.4/package.js +0 -156
  234. package/blocks/native/sm.script/versions/2.1.5/package.js +0 -156
  235. package/blocks/native/sm.shot-plan/versions/2.0.0/package.js +0 -301
  236. package/blocks/native/sm.shot-plan/versions/2.1.0/package.js +0 -528
  237. package/blocks/native/sm.shot-plan/versions/2.1.1/package.js +0 -528
  238. package/blocks/native/sm.shot-plan/versions/2.1.2/package.js +0 -528
  239. package/blocks/native/sm.shot-plan/versions/2.1.3/package.js +0 -536
  240. package/blocks/native/sm.shot-plan/versions/2.2.0/package.js +0 -800
  241. package/blocks/native/sm.shot-plan/versions/2.2.1/package.js +0 -920
  242. package/blocks/native/sm.shot-plan-assistant/versions/1.0.0/package.js +0 -173
  243. package/blocks/native/sm.stock-search/versions/2.0.0/package.js +0 -174
  244. package/blocks/native/sm.thumbnail/versions/2.0.0/package.js +0 -137
  245. package/blocks/native/sm.thumbnail/versions/2.0.1/package.js +0 -140
  246. package/blocks/native/sm.transcribe/versions/2.0.0/package.js +0 -163
  247. package/blocks/native/sm.transcribe/versions/2.0.1/package.js +0 -168
  248. package/blocks/native/sm.whiteboard-assistant/versions/1.0.0/package.js +0 -175
  249. package/blocks/native/sm.youtube/versions/2.0.0/package.js +0 -217
  250. package/blocks/occasion-story/package.js +0 -1
  251. package/blocks/occasion-story/versions/1.0.0/package.js +0 -1658
  252. package/blocks/occasion-story/versions/1.0.1/package.js +0 -1699
  253. package/blocks/occasion-story/versions/1.0.2/package.js +0 -1682
  254. package/blocks/photo-reel-composer/versions/1.0.0/package.js +0 -3043
  255. package/blocks/photo-reel-composer/versions/1.0.1/package.js +0 -3026
  256. package/blocks/photo-reel-composer/versions/1.0.2/package.js +0 -4149
  257. package/blocks/product-ad-variants/versions/1.0.0/package.js +0 -2911
  258. package/blocks/product-launch-director/versions/1.0.0/package.js +0 -103
  259. package/blocks/release-visuals/package.js +0 -1
  260. package/blocks/release-visuals/versions/1.0.0/package.js +0 -1492
  261. package/blocks/release-visuals/versions/1.0.1/package.js +0 -1517
  262. package/blocks/release-visuals/versions/1.0.2/package.js +0 -1500
  263. package/blocks/screen-recorder/package.js +0 -1
  264. package/blocks/screen-recorder/versions/1.0.0/package.js +0 -223
  265. package/blocks/screen-recorder/versions/1.0.1/package.js +0 -223
  266. package/blocks/short-form-finish/package.js +0 -1
  267. package/blocks/short-form-finish/versions/1.0.0/package.js +0 -1043
  268. package/blocks/short-form-finish/versions/1.0.1/package.js +0 -1043
  269. package/blocks/short-form-finish/versions/1.0.2/package.js +0 -1043
  270. package/blocks/short-form-finish/versions/1.0.3/package.js +0 -1026
  271. package/examples/saas-product-launch-reviewed-source.stillmade.json +0 -383
  272. package/examples/saas-product-launch.stillmade.json +0 -304
  273. package/packages/block-platform/dealer-inventory-video-project-type.js +0 -38
  274. package/packages/block-platform/first-revenue-project-types.js +0 -46
  275. package/packages/block-platform/fixture-starters.js +0 -13
  276. package/packages/block-platform/launch-project-source.js +0 -10
  277. package/packages/block-platform/launch-project.js +0 -30
  278. package/packages/block-platform/motion-project-types.js +0 -55
  279. package/packages/block-platform/motion-starters.js +0 -14
  280. package/packages/block-platform/product-ad-variants-project-type.js +0 -30
  281. package/packages/block-platform/product-launch-updated.js +0 -90
  282. package/packages/block-platform/revenue-review-project-types.js +0 -36
  283. package/packages/block-platform/revenue-review-starters.js +0 -13
  284. package/packages/block-platform/script-writer.js +0 -29
  285. package/packages/block-platform/website-source-block.js +0 -14
@@ -1 +1 @@
1
- @font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/HankenGrotesk-Variable.ttf)format("truetype")}@font-face{font-family:Hanken Grotesk;font-style:italic;font-weight:100 900;font-display:swap;src:url(/fonts/HankenGrotesk-Italic-Variable.ttf)format("truetype")}:root{--cream-50:#fdfaf1;--cream-100:#f7f0db;--cream-200:#ece3c9;--cream-300:#dcd2b5;--cream-600:#4e483a;--ink-50:#f2f0ec;--ink-100:#c9c6be;--ink-300:#4a4843;--ink-400:#26241f;--ink-500:#16140f;--ink-600:#0a0a0a;--signal:#e8b23a;--signal-dim:#e8b23a26;--signal-glow:#e8b23a4d;--font-display:"Balgin", "Hanken Grotesk", ui-sans-serif, sans-serif;--font-body:"Hanken Grotesk", ui-sans-serif, sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--font:var(--font-body);--fs-display-xl:clamp(72px, 14vw, 220px);--fs-display-l:clamp(56px, 9vw, 144px);--fs-display-m:clamp(40px, 6vw, 96px);--fs-h4:1.25rem;--fs-body:1rem;--fs-body-s:.875rem;--fs-caption:.8125rem;--fs-micro:.75rem;--tr-display:-.02em;--tr-body:-.005em;--tr-micro:.08em;--lh-display:.92;--lh-tight:1.05;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--s-9:96px;--s-10:128px;--s-11:192px;--page-gutter:clamp(20px, 3vw, 48px);--page-gutter-compact:clamp(16px, 5vw, 24px);--page-section-gap:clamp(32px, 5vw, 64px);--content-readable:720px;--content-wide:1440px;--control-height:40px;--touch-target:44px;--mobile-dock-height:66px;--z-nav:30;--hover:var(--hover-wash);--r-0:0;--r-1:2px;--r-2:4px;--r-3:8px;--r-pill:999px;--radius-sm:var(--r-2);--radius:var(--r-3);--radius-lg:var(--r-3);--bw-hair:.5px;--bw-1:1px;--bw-2:2px;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--dur-instant:80ms;--dur-fast:.16s;--dur-base:.24s;--dur-slow:.48s;--dur-reveal:.72s}:root,[data-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#101010;--bg-elev-1:#232221;--bg-elev-2:#33312f;--bg-inset:#171716;--fg:#f3eee5;--fg-muted:#bbb2a7;--fg-subtle:#f3eee594;--fg-on-accent:#191716;--border-tok:#58534d;--border-strong:#8b7e6f;--divider:#393735;--signal:#d0ae77;--signal-dim:#d0ae7726;--signal-glow:#d0ae774d;--hover-wash:#f7f0db0f;--press-wash:#f7f0db1f;--selection-bg:var(--cream-100);--selection-fg:var(--ink-600);--shadow-1:0 1px 0 #f7f0db0a inset, 0 4px 12px #00000080;--shadow-2:0 1px 0 #f7f0db0f inset, 0 16px 48px #0009;--scrim-top:linear-gradient(to bottom, #0a0a0ad9, #0a0a0a00);--scrim-bottom:linear-gradient(to top, #0a0a0ad9, #0a0a0a00);--bg-primary:var(--bg);--bg-secondary:var(--bg-elev-1);--bg-tertiary:var(--bg-elev-2);--bg-elevated:var(--bg-elev-1);--bg-hover:#403d3a;--border:var(--border-tok);--border-light:var(--border-strong);--accent:var(--fg);--accent-hover:var(--cream-50);--accent-dim:var(--hover-wash);--accent-glow:#f7f0db38;--accent-contrast:var(--bg);--editor-standout-bg:var(--fg);--editor-standout-fg:var(--bg);--text-primary:var(--fg);--text-secondary:var(--fg-muted);--text-muted:var(--fg-subtle);--success:var(--fg);--warning:var(--signal);--danger:var(--signal);--attention-warning:#e0b24f;--attention-error:#e26a5f;--attention-ok:#6bc38e;--attention-info:#7da7e8;--shadow:var(--shadow-1);--shadow-lg:var(--shadow-2)}[data-mode=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--signal:#e8b23a;--signal-dim:#e8b23a26;--signal-glow:#e8b23a4d;--bg:var(--cream-100);--bg-elev-1:var(--cream-50);--bg-elev-2:var(--cream-200);--bg-inset:var(--cream-200);--fg:var(--ink-600);--fg-muted:var(--cream-600);--fg-subtle:#0a0a0a61;--fg-on-accent:var(--cream-100);--border-tok:#0a0a0a1a;--border-strong:#0a0a0a38;--divider:#0a0a0a0f;--hover-wash:#0a0a0a0d;--press-wash:#0a0a0a1a;--selection-bg:var(--ink-600);--selection-fg:var(--cream-100);--shadow-1:0 1px 0 #ffffff80 inset, 0 4px 12px #0a0a0a0f;--shadow-2:0 1px 0 #fff9 inset, 0 16px 48px #0a0a0a1a;--scrim-top:linear-gradient(to bottom, #f7f0dbe6, #f7f0db00);--scrim-bottom:linear-gradient(to top, #f7f0dbe6, #f7f0db00);--bg-primary:var(--bg);--bg-secondary:var(--bg-elev-1);--bg-tertiary:var(--bg-elev-2);--bg-elevated:var(--bg-elev-2);--bg-hover:var(--cream-300);--border:var(--border-tok);--border-light:var(--border-strong);--accent:var(--fg);--accent-hover:var(--ink-500);--accent-dim:var(--hover-wash);--accent-glow:#0a0a0a38;--accent-contrast:var(--bg);--editor-standout-bg:var(--ink-300);--editor-standout-fg:var(--cream-100);--text-primary:var(--fg);--text-secondary:var(--fg-muted);--text-muted:var(--fg-subtle);--success:var(--fg);--warning:var(--signal);--danger:var(--signal);--attention-warning:#b98200;--attention-error:#c2453d;--attention-ok:#2e7d4f;--attention-info:#2f67b8;--shadow:var(--shadow-1);--shadow-lg:var(--shadow-2)}[data-mode=white]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--bg-elev-1:#f4f4f1;--bg-elev-2:#eaeae6;--bg-inset:#eeeeea;--fg:#0e0e0e;--fg-muted:#5c5c5c;--fg-subtle:#767676;--fg-on-accent:#fff;--border-tok:#e1e1dd;--border-strong:#c4c4bf;--divider:#e7e7e3;--hover-wash:#0000000d;--press-wash:#00000017;--selection-bg:#0e0e0e;--selection-fg:#fff;--signal:#8e6b46;--signal-dim:#8e6b461a;--signal-glow:#8e6b4638;--shadow-1:0 1px 3px #0000000d;--shadow-2:0 12px 40px #0000001a;--scrim-top:linear-gradient(to bottom,#ffffffe6,#fff0);--scrim-bottom:linear-gradient(to top,#ffffffe6,#fff0);--bg-primary:var(--bg);--bg-secondary:var(--bg-elev-1);--bg-tertiary:var(--bg-elev-2);--bg-elevated:var(--bg-elev-1);--bg-hover:#ecece8;--border:var(--border-tok);--border-light:var(--border-strong);--accent:var(--fg);--accent-hover:#2a2a2a;--accent-dim:var(--hover-wash);--accent-glow:#0000001f;--accent-contrast:var(--bg);--editor-standout-bg:#24211d;--editor-standout-fg:#fff;--text-primary:var(--fg);--text-secondary:var(--fg-muted);--text-muted:var(--fg-subtle);--success:var(--fg);--warning:var(--signal);--danger:var(--signal);--attention-warning:#b98200;--attention-error:#c2453d;--attention-ok:#2e7d4f;--attention-info:#2f67b8;--shadow:var(--shadow-1);--shadow-lg:var(--shadow-2)}button[data-icon-action=true]{cursor:pointer;flex-shrink:0;line-height:1;min-width:36px!important;min-height:36px!important;box-shadow:none!important;color:var(--text-secondary,var(--fg))!important;background:0 0!important;border:0!important;border-radius:0!important;justify-content:center!important;align-items:center!important;padding:8px!important;display:inline-flex!important}button[data-icon-action=true]:hover:not(:disabled){color:var(--text-primary,var(--fg))!important}button[data-icon-action=true]:focus-visible{outline-offset:2px;outline:2px solid var(--signal)!important}button[data-icon-action=true]:disabled{cursor:not-allowed;opacity:.4!important}button[data-icon-action=true][aria-pressed=true]{text-underline-offset:5px;text-decoration:underline;color:var(--text-primary,var(--fg))!important}@media (pointer:coarse){button[data-icon-action=true]{min-width:44px!important;min-height:44px!important}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root[data-anim-theme="1"]:not([data-mode=white]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0a0d13;--bg-elev-1:#0f141c;--bg-elev-2:#1a2230;--bg-inset:#0f141c;--fg:#d8dee8;--fg-muted:#8b98ac;--fg-subtle:#64748b;--fg-on-accent:#0a0d13;--border-tok:#232d3d;--border-strong:#303d50;--divider:#1a2230;--hover-wash:#8b98ac14;--press-wash:#8b98ac29;--selection-bg:#303d50;--selection-fg:#d8dee8;--bg-primary:#0a0d13;--bg-secondary:#0f141c;--bg-tertiary:#1a2230;--bg-elevated:#1a2230;--bg-hover:#232d3d;--border:#232d3d;--border-light:#303d50;--accent:#8b98ac;--accent-hover:#b6c0ce;--accent-dim:#8b98ac1f;--accent-glow:#8b98ac40;--accent-contrast:#0a0d13;--editor-standout-bg:#d8dee8;--editor-standout-fg:#0a0d13;--text-primary:#d8dee8;--text-secondary:#8b98ac;--text-muted:#64748b;--success:#8b98ac;--warning:#b6c0ce;--danger:#b6c0ce}html,body{background:var(--bg);width:100%;height:100%;color:var(--fg);font-family:var(--font-body);letter-spacing:var(--tr-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:14px;line-height:1.6;overflow:hidden}#root{width:100%;height:100%;overflow:hidden}.sm-app-shell{height:100dvh}@keyframes sm-navmenu-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.mobile-nav-menu{animation:.2s cubic-bezier(.22,1,.36,1) sm-navmenu-in}::selection{background:var(--selection-bg);color:var(--selection-fg)}.display,h1,h2{font-family:var(--font-display);font-style:italic;font-weight:200;line-height:var(--lh-tight);letter-spacing:var(--tr-display);margin:0}.display{line-height:var(--lh-display)}h3,h4{font-family:var(--font-body);font-weight:500;line-height:var(--lh-tight);letter-spacing:-.01em;margin:0}.eyebrow{color:var(--fg-muted);font-size:11px;font-weight:500}code,pre,.mono{font-family:var(--font-mono);font-size:.92em}.listing-identity code{font-family:inherit;font-size:inherit}button{font-family:var(--font-body);cursor:pointer;letter-spacing:var(--tr-body);border:none;outline:none}textarea,input,select{font-family:var(--font-body);outline:none}select{background-color:var(--bg-elev-1);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--r-2)}select option,select optgroup{background-color:var(--bg-elevated);color:var(--text-primary)}select option:checked{font-weight:600}.tsel-trigger{background-color:var(--bg-elev-1);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--r-2);font-family:var(--font-body);font-size:inherit;cursor:pointer;text-align:left;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;display:inline-flex}.tsel-trigger:hover{border-color:var(--border-strong)}.tsel-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.tsel-trigger:disabled{opacity:.5;cursor:default}.tsel-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tsel-caret{opacity:.7;flex:none;font-size:10px}.tsel-pop{z-index:100100;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r-2);max-height:260px;padding:4px;overflow-y:auto;box-shadow:0 8px 28px #00000047}.tsel-opt{color:var(--text-primary);cursor:pointer;white-space:nowrap;border-radius:6px;align-items:center;gap:6px;padding:6px 8px;font-size:13px;display:flex}.tsel-opt[data-active=true]{background:var(--bg-elev-1)}.tsel-opt[aria-selected=true]{font-weight:600}.tsel-opt[aria-disabled=true]{color:var(--text-muted);cursor:default}.tsel-opt[aria-disabled=true][data-active=true]{background:0 0}.tsel-check{opacity:.8;flex:none;width:12px;font-size:11px}.tsel-opt-label{text-overflow:ellipsis;flex:auto;overflow:hidden}.tsel-note{cursor:help;width:16px;height:16px;color:var(--text-muted);border:1px solid var(--border);border-radius:999px;flex:none;justify-content:center;align-items:center;font-size:11px;display:inline-flex;position:relative}.tsel-note:hover{color:var(--text-primary);border-color:var(--border-strong)}.tsel-tip{z-index:100110;background:var(--text-primary);color:var(--bg-elevated);box-sizing:border-box;white-space:normal;pointer-events:none;border-radius:5px;max-width:min(260px,100vw - 16px);padding:4px 8px;font-size:11px;font-weight:600;box-shadow:0 2px 10px #0000004d}@media (width<=767.98px),(height<=480px) and (pointer:coarse){.tsel-opt{box-sizing:border-box;min-height:44px;font-size:14px}.tsel-note{flex:0 0 44px;width:44px;height:44px;font-size:14px}}.video-editor input,.video-editor select,.video-editor textarea{background:var(--bg-inset);width:100%;min-width:0;color:var(--fg);border:var(--bw-1) solid var(--border-strong);border-radius:var(--r-2);font-family:var(--font-body);accent-color:var(--signal);padding:7px 8px;font-size:12px}.video-editor,.mobile-editor-root{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.video-editor input,.video-editor select,.video-editor textarea,.video-editor [contenteditable=true],.mobile-editor-root input,.mobile-editor-root select,.mobile-editor-root textarea,.mobile-editor-root [contenteditable=true]{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}.video-editor input[type=range]{background:0 0;border:0;padding:0}.video-editor input[type=checkbox]{width:auto;min-width:auto}.video-editor select:focus,.video-editor input:focus,.video-editor textarea:focus{border-color:var(--signal);box-shadow:0 0 0 1px var(--signal-dim)}:focus-visible{outline:2px solid var(--signal);outline-offset:2px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--r-pill)}::-webkit-scrollbar-thumb:hover{background:var(--fg-subtle)}.sm-hide-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.sm-hide-scrollbar::-webkit-scrollbar{width:0;height:0;display:none}.btn{align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-4);border-radius:var(--r-pill);letter-spacing:var(--tr-body);transition:transform var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), opacity var(--dur-fast) var(--ease-out);font-size:13px;font-weight:500;display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background:var(--fg);color:var(--bg)}.btn-primary:hover{background:var(--fg);opacity:.86}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-secondary{color:var(--fg);border:var(--bw-1) solid var(--border-strong);background:0 0}.btn-secondary:hover{background:var(--hover-wash);border-color:var(--fg)}.btn-ghost{color:var(--fg-muted);background:0 0;padding:6px 10px}.btn-ghost:hover{background:var(--hover-wash);color:var(--fg)}.btn-icon{color:var(--fg-muted);border-radius:var(--r-2);transition:background-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);background:0 0;justify-content:center;align-items:center;padding:5px;display:inline-flex}.btn-icon:hover{background:var(--hover-wash);color:var(--fg)}.btn-icon:active{transform:scale(.98)}.btn-icon:disabled{opacity:.4;cursor:not-allowed}.typing-indicator{align-items:center;gap:4px;padding:4px 0;display:flex}.typing-indicator span{border-radius:var(--r-pill);background:var(--fg-subtle);width:6px;height:6px;animation:1.2s infinite bounce}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}@keyframes bounce{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-5px)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:.4;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}button:focus-visible,[role=button]:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]):not([type=button]):not([type=submit]):not([type=reset]):is(:focus,:focus-visible),textarea:is(:focus,:focus-visible),select:is(:focus,:focus-visible),[contenteditable]:not([contenteditable=false]):is(:focus,:focus-visible){outline:none!important}@keyframes skeletonShimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,#ffffff08 0%,#ffffff1a 50%,#ffffff08 100%) 0 0/200% 100%;border-radius:6px;animation:1.4s ease-in-out infinite skeletonShimmer}.node-state-empty{border-style:dashed!important}.node-state-generating{box-shadow:0 0 0 2px var(--accent);position:relative}.node-state-generating:after{content:"";border-radius:inherit;pointer-events:none;will-change:opacity;animation:1.6s ease-in-out infinite nodePulse;position:absolute;inset:-2px;box-shadow:0 0 18px #f7c8328c}@keyframes nodePulse{0%,to{opacity:.36}50%{opacity:1}}.node-state-warning{position:relative;border-color:var(--attention-warning)!important}.node-state-warning:after{content:"";border-radius:inherit;pointer-events:none;box-shadow:0 0 0 1px var(--attention-warning), 0 0 14px color-mix(in srgb, var(--attention-warning) 40%, transparent);position:absolute;inset:-2px}.node-state-failed{border-top:4px solid #d04848!important}.node-state-failed:before{content:"⚠ ";color:#d04848;z-index:2;pointer-events:none;font-size:12px;font-weight:800;position:absolute;top:6px;left:8px}.react-flow__node{cursor:default}.react-flow__node.dragging,.react-flow__pane.dragging .react-flow__viewport{will-change:transform}.react-flow__node:not(.react-flow__node-sceneGroupNode):not(.react-flow__node-shotLabelNode):not(.react-flow__node-stickyNoteNode):not(.react-flow__node-transitionNode){box-shadow:1px 1px 0 var(--node-side,#d8cfb3), 2px 2px 0 var(--node-side,#d8cfb3), 3px 3px 0 var(--node-side,#d8cfb3), 4px 4px 0 var(--node-side,#d8cfb3), 5px 5px 0 var(--node-side,#d8cfb3), 6px 6px 0 var(--node-side,#d8cfb3), 7px 7px 0 var(--node-edge,#0a0a0a2e), 14px 16px 18px -4px #0a0a0a2e;border-radius:10px}[data-mode=dark] .react-flow__node:not(.react-flow__node-sceneGroupNode):not(.react-flow__node-shotLabelNode):not(.react-flow__node-stickyNoteNode):not(.react-flow__node-transitionNode){--node-side:#1f1d18;--node-edge:#f7f0db2e}.react-flow__controls{grid-template-columns:repeat(2,1fr)!important;display:grid!important}.react-flow__controls button{background:var(--bg-elev-2)!important;border-color:var(--border-tok)!important;color:var(--fg-muted)!important;fill:var(--fg-muted)!important}.react-flow__controls button:hover{background:var(--ink-300)!important}.react-flow__edge-path{stroke:var(--border-strong)}.react-flow.rf-edges-panning .react-flow__edges{display:none}.react-flow__node.node-controls-locked input,.react-flow__node.node-controls-locked textarea,.react-flow__node.node-controls-locked select,.react-flow__node.node-controls-locked button,.react-flow__node.node-controls-locked [role=button]{pointer-events:none!important}.react-flow__node.node-controls-locked{cursor:grab}.react-flow__node.node-controls-locked:active{cursor:grabbing}.react-flow__node.scene-add-available-node{filter:drop-shadow(0 0 10px #f7f0db38)}.react-flow__node.scene-add-available-node>div{outline:1px solid var(--border-strong);outline-offset:4px;border-radius:var(--r-3)}.react-flow__node.scene-add-available-node:after{content:"";border:1px dashed var(--border-strong);border-radius:var(--r-3);pointer-events:none;position:absolute;inset:-8px}.react-flow__node.node-replace-available{filter:drop-shadow(0 0 10px #f7f0db38)}.react-flow__node.node-replace-available>div{outline:1px solid var(--border-strong);outline-offset:4px;border-radius:var(--r-3)}.react-flow__node.node-replace-available:after{content:"";border:1px dashed var(--border-strong);border-radius:var(--r-3);pointer-events:none;position:absolute;inset:-8px}select option{background:var(--bg-elev-2);color:var(--fg)}.spinner{border:2px solid var(--border-tok);border-top-color:var(--fg);border-radius:var(--r-pill);width:16px;height:16px;animation:.7s linear infinite spin}.media-upload-preview:hover .media-upload-overlay{opacity:1!important}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important}}.assets-card .assets-card-overlay{opacity:0;transition:opacity .15s}.assets-card:hover .assets-card-overlay{opacity:1}.yt-video-row{transition:background .12s,box-shadow .12s,color .12s}.yt-video-row:hover{box-shadow:inset 2px 0 0 var(--accent), inset 0 0 14px var(--accent-glow);color:var(--text-primary);background:var(--hover-wash)!important}.chat-bubble ::selection{background:var(--signal);color:#0a0a0a}.chat-bubble ::selection{background:var(--signal);color:#0a0a0a}.chat-bubble:hover .chat-bubble-copy,.chat-bubble:focus-within .chat-bubble-copy,.chat-bubble-copy:hover,.chat-bubble-copy:focus{opacity:1!important}.chat-bubble-copy:hover{background:var(--bg-elevated-2,var(--bg-elevated));color:var(--text-primary)!important}.chat-bubble-copy:active{transform:scale(.94)}.sm-brand .sm-brandmark{transform-origin:50%;transition:transform .76s cubic-bezier(.2,.8,.2,1),filter .28s}.sm-brand:hover .sm-brandmark{filter:drop-shadow(0 0 7px color-mix(in srgb, currentColor 45%, transparent));will-change:transform, filter;transform:perspective(340px)rotateY(360deg)scale(1.06)}.sm-brand .sm-word{transition:transform .3s cubic-bezier(.2,.8,.2,1);transform:translate(-4px)}.sm-brand:hover .sm-word{will-change:transform;transform:translate(-4px,-1px)}@media (prefers-reduced-motion:reduce){.sm-brand .sm-brandmark{transition:transform .24s,filter .24s}.sm-brand:hover .sm-brandmark{transform:scale(1.06)}.sm-brand:hover .sm-word{transform:translate(-4px)}}body.sm-mobile-ui input,body.sm-mobile-ui textarea,body.sm-mobile-ui select{font-size:16px!important}body.sm-mobile-ui button,body.sm-mobile-ui select,body.sm-mobile-ui [role=button]{min-height:44px}body.sm-mobile-ui select:not([multiple]):not([size]){height:max(44px,2.75em)}body.sm-mobile-ui button.btn-icon,body.sm-mobile-ui button[data-compact],body.sm-mobile-ui .no-min-tap{min-height:0}body.sm-mobile-ui .yt-video-row{min-width:560px}:where(html:has(.sm-block)){container-type:inline-size}:where(.sm-block){gap:var(--s-5,24px);min-width:0;display:grid}:where(.sm-block,.sm-block *){box-sizing:border-box}:where(.sm-block)>:where(*){min-width:0}@container (width>=720px){:where(.sm-block[data-layout=split]){grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr);align-items:start}:where(.sm-block[data-layout=split])>:where(.sm-stage){grid-row:span 6}}@container (width>=860px){:where(.sm-block:not([data-layout]):has(>.sm-stage)){align-items:start;column-gap:var(--s-5,24px);row-gap:var(--s-4,16px);grid-template-columns:minmax(300px,380px) minmax(0,1fr)}:where(.sm-block:not([data-layout]):has(>.sm-stage))>:where(*){grid-column:1}:where(.sm-block:not([data-layout]):has(>.sm-stage))>:where(.sm-stage){grid-area:1/2/span 12;align-self:stretch;min-height:min(70vh,640px)}:where(.sm-block:not([data-layout]):has(>.sm-stage))>:where(.sm-stage[data-ratio]){align-self:start;min-height:0}}:where(.sm-row){align-items:center;gap:var(--s-2,8px);flex-wrap:wrap;display:flex}@container (width<=519px){:where(.sm-clamp:not([data-open])){-webkit-line-clamp:var(--sm-lines,5);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}}:where(.sm-stage){min-height:220px;padding:var(--s-3,12px);border-radius:var(--r-3,8px);background:var(--bg-inset);place-items:center;display:grid;position:relative;overflow:hidden}:where(.sm-stage[data-ratio="16:9"]){aspect-ratio:16/9;min-height:0}:where(.sm-stage[data-ratio="9:16"]){aspect-ratio:9/16;justify-self:center;width:auto;height:min(70vh,640px);min-height:0;max-height:70vh}:where(.sm-stage[data-ratio="1:1"]){aspect-ratio:1;min-height:0}:where(.sm-stage)>:where(img,video,canvas){object-fit:contain;border-radius:var(--r-2,4px);max-width:100%;max-height:100%;display:block}:where(.sm-stage[data-fill])>:where(img,video,canvas){object-fit:cover;width:100%;height:100%}:where(.sm-empty){justify-items:center;gap:var(--s-3,12px);padding:var(--s-5,24px) var(--s-4,16px);text-align:center;color:var(--fg-muted);display:grid}:where(.sm-empty)>:where(.sm-glyph){--sm-glyph-size:40px;color:var(--fg-subtle)}:where(.sm-empty)>:where(p){max-width:24ch;font-size:var(--fs-body,1rem);margin:0}:where(.sm-drop){outline:1px dashed var(--border-tok);outline-offset:-8px}:where(.sm-drop[data-over]){outline-color:var(--fg);background:var(--hover-wash)}:where(.sm-actions){align-items:center;gap:var(--s-2,8px);flex-wrap:wrap;display:flex}:where(.sm-actions)>:where(.sm-status){margin-inline-start:var(--s-2,8px)}:where(.sm-primary,.sm-quiet){justify-content:center;align-items:center;gap:var(--s-2,8px);min-height:var(--touch-target,44px);border-radius:var(--r-pill,999px);font:inherit;cursor:pointer;text-align:center;overflow-wrap:anywhere;max-width:100%;padding:10px 20px;font-weight:500;display:inline-flex}:where(.sm-primary){border:1px solid var(--fg);background:var(--fg);color:var(--bg)}:where(.sm-quiet){border:1px solid var(--border-strong);background:var(--bg-elev-1);color:var(--fg)}:where(.sm-quiet):hover{background:var(--bg-elev-2)}:where(.sm-icon){min-width:var(--touch-target,44px);min-height:var(--touch-target,44px);border-radius:var(--r-2,4px);color:var(--fg-muted);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:inline-grid}:where(.sm-icon):hover{color:var(--fg);background:var(--hover-wash)}:where(.sm-icon[aria-pressed=true]){color:var(--fg);background:var(--press-wash)}:where(.sm-primary,.sm-quiet,.sm-icon):disabled{opacity:.45;cursor:default}:where(.sm-primary,.sm-quiet,.sm-icon):focus-visible{outline:2px solid var(--signal);outline-offset:3px}@container (width<=420px){:where(.sm-actions)>:where(.sm-primary){flex:100%}}:where(.sm-field){gap:6px;min-width:0;display:grid}:where(.sm-field)>:where(label,.sm-label){align-items:center;gap:var(--s-1,4px);font-size:var(--fs-body-s,.875rem);color:var(--fg-muted);min-height:24px;display:flex}:where(.sm-field) :where(input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea){width:100%;min-height:var(--touch-target,44px);border:1px solid var(--border-tok);border-radius:var(--r-3,8px);background:var(--bg-elev-1);color:var(--fg);font:inherit;padding:10px 12px}:where(.sm-field) :where(textarea){resize:vertical;min-height:96px}:where(.sm-fields){gap:var(--s-4,16px);grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));display:grid}:where(.sm-field:not(:has(textarea,.sm-choices,.sm-gallery,.sm-list))){align-items:center;gap:6px var(--s-2,8px);flex-wrap:wrap;display:flex}:where(.sm-field:not(:has(textarea,.sm-choices,.sm-gallery,.sm-list)))>:where(label,.sm-label){flex:0 auto}:where(.sm-field:not(:has(textarea,.sm-choices,.sm-gallery,.sm-list)))>:where(:not(label,.sm-label)){flex:1 1 var(--sm-control,10rem);min-width:0}@container (width>=520px){:where(.sm-field:not(:has(textarea,.sm-choices,.sm-gallery,.sm-list))){align-items:center;gap:var(--s-2,8px);grid-template-columns:minmax(5rem,9rem) minmax(0,1fr);display:grid}:where(.sm-field) :where(input:not([type=checkbox]):not([type=radio]):not([type=range]),select){min-height:36px;padding:6px 10px}:where(.sm-fields){gap:var(--s-2,8px) var(--s-4,16px)}}:where(.sm-choices){gap:var(--s-2,8px);grid-template-columns:repeat(auto-fill,minmax(var(--sm-tile,96px),1fr));border:0;min-width:0;margin:0;padding:0;display:grid}:where(.sm-choices[data-size=wide]){--sm-tile:160px}:where(.sm-choices)>:where(legend){font-size:var(--fs-body-s,.875rem);color:var(--fg-muted);margin-bottom:6px;padding:0}:where(.sm-choices)>:where(label){padding:var(--s-2,8px);border:1px solid var(--border-tok);border-radius:var(--r-3,8px);background:var(--bg-elev-1);color:var(--fg-muted);font-size:max(12px,var(--fs-caption,.8125rem));text-align:center;cursor:pointer;align-content:start;justify-items:center;gap:6px;display:grid;position:relative}:where(.sm-choices)>:where(label:not(:has(input:checked,input:disabled))):hover{border-color:var(--border-strong);color:var(--fg)}:where(.sm-choices) :where(input[type=radio],input[type=checkbox]){opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}:where(.sm-choices)>:where(label:has(input:checked)){border-color:var(--fg);background:var(--fg);color:var(--bg);box-shadow:none;--fg-muted:color-mix(in srgb,var(--bg) 78%,transparent);--fg-subtle:color-mix(in srgb,var(--bg) 64%,transparent);--text-secondary:var(--fg-muted);--text-muted:var(--fg-subtle)}:where(.sm-choices)>:where(label:has(input:focus-visible)){outline:2px solid var(--signal);outline-offset:2px}:where(.sm-choices)>:where(label:has(input:disabled)),:where(.sm-choices) :where(input:disabled){cursor:default}:where(.sm-choices)>:where(label:has(input:disabled):not(:has(input:checked))){opacity:.45}:where(.sm-choices) :where(img,video,canvas,.sm-swatch){width:100%;aspect-ratio:var(--sm-tile-ratio,1);object-fit:cover;border-radius:var(--r-2,4px);background:var(--bg-inset);display:block}:where(.sm-choices) :where(.sm-glyph){--sm-glyph-size:28px;margin:10px 0 4px}:where(.sm-choices[data-ratio="16:9"]){--sm-tile-ratio:16/9}:where(.sm-choices[data-ratio="9:16"]){--sm-tile-ratio:9/16}:where(.sm-choices[data-compact])>:where(label){min-height:var(--touch-target,44px);grid-auto-flow:column;place-content:center;align-items:center;padding:6px 12px}:where(.sm-choices[data-compact]) :where(.sm-glyph){--sm-glyph-size:18px;margin:0}:where(.sm-choices) :where(audio){z-index:1;width:100%;height:32px;position:relative}:where(.sm-shape){box-sizing:border-box;width:calc(var(--sm-shape-size,32px) * min(1,var(--r,1)));aspect-ratio:var(--r,1);border:2px solid;border-radius:3px;max-width:100%;margin:4px auto;display:block}:where(.sm-choices)>:where(label:has(.sm-shape)){grid-template-rows:1fr auto;align-content:stretch}:where(.sm-choices) :where(.sm-shape){--sm-shape-size:36px;align-self:center;margin:6px auto 2px}:where(.sm-choices[data-compact]) :where(.sm-shape){--sm-shape-size:20px;margin:0}:where(.sm-choices[data-segmented]){gap:0;width:fit-content;max-width:100%;display:flex}:where(.sm-choices[data-segmented])>:where(label){min-height:36px;font-size:var(--fs-body-s,.875rem);white-space:nowrap;border-radius:0;justify-content:center;align-items:center;gap:6px;padding:4px 12px;display:inline-flex}:where(.sm-choices[data-segmented])>:where(label+label){margin-inline-start:-1px}:where(.sm-choices[data-segmented])>:where(label:first-of-type){border-start-start-radius:var(--r-pill,999px);border-end-start-radius:var(--r-pill,999px)}:where(.sm-choices[data-segmented])>:where(label:last-of-type){border-start-end-radius:var(--r-pill,999px);border-end-end-radius:var(--r-pill,999px)}:where(.sm-choices[data-segmented])>:where(label:has(input:checked)){z-index:1;position:relative}:where(.sm-choices[data-segmented]) :where(.sm-glyph){--sm-glyph-size:16px;margin:0}:where(.sm-settings){gap:var(--s-3,12px) var(--s-4,16px);grid-template-columns:repeat(auto-fill,minmax(min(100%,11rem),1fr));align-items:start;min-width:0;display:grid}:where(.sm-settings)>:where(.sm-field){grid-template-columns:minmax(0,1fr);gap:4px}:where(.sm-settings)>:where(.sm-field:not(:has(textarea,.sm-choices,.sm-gallery,.sm-list))){--sm-control:6rem;align-items:center;gap:4px var(--s-2,8px);flex-wrap:wrap;display:flex}:where(.sm-settings)>:where(.sm-choices)>:where(legend),:where(.sm-settings) :where(.sm-label){font-size:max(12px,var(--fs-caption,.8125rem))}@container (width<=519px){:where(.sm-choices[data-compact],.sm-choices[data-segmented]){scrollbar-width:none;flex-wrap:nowrap;width:auto;display:flex;overflow-x:auto}:where(.sm-choices[data-compact])>:where(label),:where(.sm-choices[data-segmented])>:where(label){flex:none}}:where(.sm-list){border:1px solid var(--border-tok);border-radius:var(--r-3,8px);background:var(--bg-elev-1);min-width:0;margin:0;padding:0;list-style:none;display:grid;overflow:hidden}:where(.sm-list)>:where(li){align-items:center;gap:var(--s-2,8px);min-width:0;min-height:40px;padding:4px var(--s-2,8px);border-bottom:1px solid var(--divider);display:flex}:where(.sm-list)>:where(li:last-child){border-bottom:0}:where(.sm-list)>:where(li:has(>details)){padding:0;display:block}:where(.sm-list)>:where(li)>:where(details)>:where(summary){align-items:center;gap:var(--s-2,8px);min-height:40px;padding:4px var(--s-2,8px);cursor:pointer;list-style:none;display:flex}:where(.sm-list)>:where(li)>:where(details)>:where(summary)::-webkit-details-marker{display:none}:where(.sm-list)>:where(li)>:where(details[open]){background:var(--bg-inset)}:where(.sm-list)>:where(li)>:where(details)>:where(:not(summary)){padding:var(--s-2,8px) var(--s-3,12px) var(--s-3,12px)}:where(.sm-list) :where(img,video,canvas,.sm-swatch){object-fit:cover;border-radius:var(--r-2,4px);background:var(--bg-inset);flex:none;width:40px;height:26px}:where(.sm-list) :where(.sm-line){white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}:where(.sm-list) :where(small){color:var(--fg-subtle);font-size:max(12px,var(--fs-caption,.8125rem));white-space:nowrap;font-variant-numeric:tabular-nums;flex:none}:where(.sm-list)>:where(.sm-list-more){display:none}@container (width<=519px){:where(.sm-list[data-peek]:not([data-open]))>:where(li:nth-child(n+4):not(.sm-list-more)){display:none}:where(.sm-list[data-peek]:not([data-open]))>:where(.sm-list-more){color:var(--fg-muted);display:flex}}:where(.sm-gallery){gap:var(--s-2,8px);grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--sm-tile,140px)),1fr));margin:0;padding:0;list-style:none;display:grid}:where(.sm-gallery)>:where(*){border-radius:var(--r-3,8px);background:var(--bg-inset);margin:0;position:relative;overflow:hidden}:where(.sm-gallery) :where(img,video,canvas){width:100%;aspect-ratio:var(--sm-tile-ratio,1);object-fit:cover;display:block}:where(.sm-gallery) :where(figcaption){font-size:max(12px,var(--fs-caption,.8125rem));color:var(--fg-muted);padding:6px 8px}:where(.sm-gallery) :where([aria-selected=true],.is-selected){box-shadow:inset 0 0 0 2px var(--fg)}:where(.sm-gallery[data-size=small]){--sm-tile:92px;--sm-tile-ratio:3/2}:where(.sm-media-off){box-sizing:border-box;width:min(100%,320px);aspect-ratio:var(--sm-photo-ratio,4/3);border:1px solid var(--border-tok);border-radius:var(--r-2,4px);background:var(--bg-inset);color:var(--fg-subtle,var(--fg-muted));vertical-align:top;place-items:center;display:inline-grid}:where(.sm-gallery) :where(.sm-media-off){width:100%;aspect-ratio:var(--sm-tile-ratio,1);border-radius:inherit;display:grid}:where(.sm-status){align-items:center;gap:var(--s-2,8px);min-height:24px;font-size:var(--fs-body-s,.875rem);color:var(--fg-muted);display:inline-flex}:where(.sm-status):empty{display:none}:where(.sm-status[data-state]):before{content:"";background:currentColor;border-radius:50%;flex:none;width:14px;height:14px}:where(.sm-status[data-state=loading]):before{background:0 0;border:2px solid;border-right-color:#0000;animation:.8s linear infinite sm-spin}:where(.sm-status[data-state=success]){color:var(--attention-ok,var(--fg))}:where(.sm-status[data-state=success]):before{background:0 0;border:2px solid;border-width:0 2px 2px 0;border-radius:0;width:6px;height:11px;margin:0 4px 3px;transform:rotate(45deg)}:where(.sm-status[data-state=waiting]){color:var(--attention-warning,var(--signal))}:where(.sm-status[data-state=waiting]):before{width:8px;height:8px;margin:0 3px}:where(.sm-status[data-state=error]){color:var(--attention-error,var(--signal))}:where(.sm-status[data-state=error]):before{clip-path:polygon(50% 0,100% 100%,0 100%);border-radius:0}:where(.sm-progress){border-radius:var(--r-pill,999px);background:var(--bg-elev-2);width:100%;height:4px;accent-color:var(--fg);appearance:none;border:0;overflow:hidden}:where(.sm-progress)::-webkit-progress-bar{background:var(--bg-elev-2)}:where(.sm-progress)::-webkit-progress-value{background:var(--fg)}:where(.sm-progress)::-moz-progress-bar{background:var(--fg)}:where(.sm-more){border-top:1px solid var(--divider)}:where(.sm-more)>:where(summary){align-items:center;gap:var(--s-2,8px);min-height:var(--touch-target,44px);color:var(--fg-muted);font-size:var(--fs-body-s,.875rem);cursor:pointer;padding:0;list-style:none;display:flex}:where(.sm-more)>:where(summary)::-webkit-details-marker{display:none}:where(.sm-more)>:where(summary):after{content:"";width:7px;height:7px;transition:transform var(--dur-fast,.16s) var(--ease-out,ease);border:1.5px solid;border-width:0 1.5px 1.5px 0;margin-inline-start:2px;transform:translateY(-2px)rotate(45deg)}:where(.sm-more[open])>:where(summary):after{transform:translateY(2px)rotate(-135deg)}:where(.sm-more)>:where(summary):hover{color:var(--fg)}:where(.sm-more)>:where(:not(summary)){margin-top:var(--s-2,8px)}:where(.sm-more[open]){padding-bottom:var(--s-3,12px)}:where(.sm-label){position:relative}:where(.sm-hint){vertical-align:middle;display:inline-block}:where(:not(.sm-label))>:where(.sm-hint){position:relative}:where(.sm-hint)>:where(summary){width:var(--touch-target,44px);height:var(--touch-target,44px);min-height:0;color:var(--fg-subtle);cursor:pointer;border:0;place-items:center;margin:-8px;padding:0;list-style:none;display:inline-grid}:where(.sm-hint)>:where(summary)::-webkit-details-marker{display:none}:where(.sm-hint)>:where(summary):before{content:"i";width:15px;height:15px;font:600 10px/1 var(--font-body);border:1.5px solid;border-radius:50%;place-items:center;font-style:normal;display:grid}:where(.sm-hint)>:where(summary):hover,:where(.sm-hint[open])>:where(summary){color:var(--fg)}:where(.sm-hint)>:where(:not(summary)){z-index:5;inset-inline-start:0;border:1px solid var(--border-tok);border-radius:var(--r-3,8px);background:var(--bg-elev-2);width:max-content;max-width:min(280px,100cqi - 32px);color:var(--fg);font-size:var(--fs-body-s,.875rem);box-shadow:var(--shadow-1);margin:4px 0 0;padding:10px 12px;line-height:1.45;position:absolute;top:100%}:where(:not(.sm-label))>:where(.sm-hint[open]){display:block}:where(:not(.sm-label))>:where(.sm-hint)>:where(:not(summary)){width:auto;max-width:60ch;position:static}:where(.sm-glyph){--g:var(--sm-glyph-size,20px);width:var(--g);height:var(--g);color:inherit;vertical-align:middle;flex:none;display:inline-block;position:relative}:where(.sm-glyph):before,:where(.sm-glyph):after{content:"";box-sizing:border-box;position:absolute}:where(.sm-glyph[data-glyph=play]):before{clip-path:polygon(0 0,100% 50%,0 100%);background:currentColor;inset:15% 15% 15% 25%}:where(.sm-glyph[data-glyph=pause]):before{border:solid;border-width:0 calc(var(--g)*.14);inset:18% 25%}:where(.sm-glyph[data-glyph=plus]):before,:where(.sm-glyph[data-glyph=close]):before{background:linear-gradient(currentColor,currentColor) 50%/100% 2px no-repeat,linear-gradient(currentColor,currentColor) 50%/2px 100% no-repeat;inset:15%}:where(.sm-glyph[data-glyph=close]):before{transform:rotate(45deg)}:where(.sm-glyph[data-glyph=check]):before{border:2px solid;border-width:0 2px 2px 0;width:30%;height:58%;top:12%;left:36%;transform:rotate(45deg)}:where(.sm-glyph[data-glyph=chevron]):before{border:2px solid;border-width:0 2px 2px 0;width:40%;height:40%;top:22%;left:30%;transform:rotate(45deg)}:where(.sm-glyph[data-glyph=upload]):before{border:2px solid;border-top:0;border-radius:0 0 3px 3px;height:35%;bottom:10%;left:10%;right:10%}:where(.sm-glyph[data-glyph=upload]):after{clip-path:polygon(50% 0,100% 45%,60% 45%,60% 100%,40% 100%,40% 45%,0 45%);background:currentColor;height:62%;top:4%;left:25%;right:25%}:where(.sm-glyph[data-glyph=image]):before{border:2px solid;border-radius:3px;inset:12%}:where(.sm-glyph[data-glyph=image]):after{clip-path:polygon(0 100%,35% 20%,60% 65%,75% 45%,100% 100%);background:currentColor;height:34%;bottom:24%;left:22%;right:22%}:where(.sm-glyph[data-glyph=image-off]):before{background:radial-gradient(circle calc(var(--g) * .09) at 35% 35%,currentColor 96%,transparent 100%);border:2px solid;border-radius:3px;inset:12%}:where(.sm-glyph[data-glyph=image-off]):after{background:currentColor;width:2px;margin-left:-1px;top:-10%;bottom:-10%;left:50%;transform:rotate(-45deg)}:where(.sm-glyph[data-glyph=video]):before{border:2px solid;border-radius:3px;inset:22% 28% 22% 8%}:where(.sm-glyph[data-glyph=video]):after{clip-path:polygon(0 35%,100% 0,100% 100%,0 65%);background:currentColor;width:20%;top:30%;bottom:30%;right:8%}:where(.sm-glyph[data-glyph=audio]):before{background:linear-gradient(currentColor,currentColor) 0 60%/2px 40% no-repeat,linear-gradient(currentColor,currentColor) 33%/2px 80% no-repeat,linear-gradient(currentColor,currentColor) 66%/2px 100% no-repeat,linear-gradient(currentColor,currentColor) 100% 60%/2px 50% no-repeat;inset:15% 12%}:where(.sm-glyph[data-glyph=text]):before{background:linear-gradient(currentColor,currentColor) 0 0/100% 2px no-repeat,linear-gradient(currentColor,currentColor) 0/100% 2px no-repeat,linear-gradient(currentColor,currentColor) 0 100%/60% 2px no-repeat;inset:20% 12%}:where(.sm-glyph[data-glyph=spark]):before{clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%);background:currentColor;inset:8%}:where(.sm-glyph[data-glyph=info]):before{border:2px solid;border-radius:50%;inset:10%}:where(.sm-glyph[data-glyph=info]):after{background:linear-gradient(currentColor,currentColor) 0 0/2px 2px no-repeat,linear-gradient(currentColor,currentColor) 0 100%/2px 60% no-repeat;width:2px;height:46%;margin-left:-1px;top:28%;left:50%}:where(.sm-glyph[data-glyph=warning]):before{clip-path:polygon(50% 0,100% 100%,0 100%);background:currentColor;inset:8% 4% 10%}:where(.sm-glyph[data-glyph=warning]):after{background:linear-gradient(var(--bg),var(--bg)) 0 0/2px 60% no-repeat,linear-gradient(var(--bg),var(--bg)) 0 100%/2px 2px no-repeat;width:2px;height:38%;margin-left:-1px;top:38%;left:50%}:where(.sm-glyph[data-glyph=spinner]):before{border:2px solid;border-right-color:#0000;border-radius:50%;animation:.8s linear infinite sm-spin;inset:12%}:where([class*=sm-][hidden]){display:none!important}:where(.sm-sr){clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes sm-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){:where(.sm-status[data-state=loading]):before,:where(.sm-glyph[data-glyph=spinner]):before{opacity:.6;border-right-color:currentColor;animation:none}:where(.sm-more)>:where(summary):after{transition:none}}.sm-quiet{border:1px solid var(--border-tok)}html,body{background:var(--bg);color:var(--fg);margin:0}.dh-page{height:100dvh;font-family:var(--font-body);flex-direction:column;display:flex;overflow:hidden}.dh-bar{align-items:center;gap:var(--s-2,8px) var(--s-3,12px);min-height:56px;padding:var(--s-2,8px) var(--s-4,16px);border-bottom:var(--bw-1,1px) solid var(--divider);flex-wrap:wrap;flex:none;display:flex}.dh-title{align-items:baseline;gap:10px;min-width:0;display:flex}.dh-title h1{font-family:var(--font-display);letter-spacing:var(--tr-display);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:24px;font-style:italic;font-weight:200;line-height:1.1;overflow:hidden}.dh-meta{color:var(--fg-muted);font-size:12px}.dh-spacer{flex:1}.dh-picker{border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-2);background:var(--bg-elev-1);max-width:min(340px,100%);height:32px;color:var(--fg-muted);align-items:center;gap:6px;padding:0 4px 0 10px;display:inline-flex}.dh-picker select{min-width:0;max-width:280px;height:30px;color:var(--fg);font:inherit;background:0 0;border:0;padding:0 4px;font-size:13px}.dh-picker select:focus{outline:none}.dh-seg{border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-2);background:var(--bg-elev-1);padding:2px;display:inline-flex}.dh-seg button{width:30px;height:26px;color:var(--fg-muted);cursor:pointer;background:0 0;border:0;border-radius:3px;place-items:center;padding:0;display:inline-grid}.dh-seg button[aria-checked=true]{background:var(--fg);color:var(--bg)}.dh-glyph{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:16px;height:16px}.dh-icon{border-radius:var(--r-2);width:32px;height:32px;color:var(--fg-muted);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:inline-grid}.dh-icon:hover,.dh-seg button:hover:not([aria-checked=true]),.dh-tabs [role=tab]:hover{background:var(--bg-elev-2);color:var(--fg)}.dh-seg button:focus-visible,.dh-icon:focus-visible,.dh-tabs [role=tab]:focus-visible,.dh-page .btn:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.dh-main{min-height:0;padding:var(--s-4,16px);flex-direction:column;flex:1;display:flex;overflow:auto}.dh-frame{flex-direction:column;flex:1;width:100%;min-width:0;margin:0 auto;display:flex;container-type:inline-size}.dh-noview{flex:1}@container (width>=760px){.dh-noview{align-content:start;column-gap:var(--s-6,24px);grid-template-rows:auto auto 1fr;grid-template-columns:minmax(260px,380px) minmax(0,1fr)}.dh-noview>:not(.dh-results){grid-column:1}.dh-noview>.dh-results{padding-top:0;padding-left:var(--s-6,24px);border-top:0;border-left:var(--bw-1,1px) solid var(--divider);grid-area:1/2/-1;align-content:start;align-self:stretch}}.dh-noview>.dh-results-empty,.dh-results-empty{place-content:center;justify-items:center;min-height:160px}.dh-results-empty p{color:var(--fg-subtle);margin:0;font-size:13px}.dh-dock{border-top:var(--bw-1,1px) solid var(--border-strong);background:var(--bg-elev-1);flex-direction:column;flex:none;max-height:75dvh;display:flex;position:relative}.dh-dock-grip{cursor:ns-resize;z-index:1;touch-action:none;height:10px;position:absolute;top:-5px;left:0;right:0}.dh-tabs{min-height:40px;padding:0 var(--s-2,8px) 0 10px;flex:none;align-items:center;gap:2px;display:flex;overflow-x:auto}.dh-tabs [role=tab]{border-radius:var(--r-2);height:28px;color:var(--fg-muted);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0 10px;font-size:13px;display:inline-flex}.dh-tabs [role=tab][aria-selected=true]{background:var(--bg);color:var(--fg);box-shadow:inset 0 0 0 var(--bw-1,1px) var(--border-tok)}.dh-alert{background:var(--attention-error);border-radius:50%;width:6px;height:6px}.dh-tabs-status{padding:0 var(--s-2,8px);color:var(--fg-muted);white-space:nowrap;margin-left:auto;font-size:12px}.dh-fold svg{transform:rotate(-90deg)}.dh-dock[data-open=true] .dh-fold svg{transform:rotate(90deg)}.dh-tabpanel{min-height:0;padding:10px var(--s-4,16px) 14px;border-top:var(--bw-1,1px) solid var(--divider);flex:1;overflow:auto}.dh-console ol{border-top:var(--bw-1,1px) solid var(--divider);margin:0;padding:0;list-style:none}.dh-calls{margin:0;padding:0;font-size:13px;list-style:none;display:grid}.dh-calls li{border-bottom:var(--bw-1,1px) solid var(--divider);flex-wrap:wrap;align-items:baseline;gap:4px 10px;padding:6px 0;display:flex}.dh-calls span{color:var(--fg-muted)}.dh-calls small{color:var(--fg-subtle);margin-left:auto}@media (width<=700px){.dh-bar{padding:var(--s-2,8px) 12px}.dh-title h1{font-size:20px}.dh-main{padding:12px}.dh-tabs-status{display:none}}.dh-problem{margin:var(--s-4,16px) var(--s-6,24px) 0;padding:var(--s-3,12px) var(--s-4,16px);border:var(--bw-1,1px) solid var(--border-strong);border-radius:var(--r-2);background:var(--bg-elev-1);white-space:pre-wrap;overflow-wrap:anywhere}.dh-noview{box-sizing:border-box;gap:var(--s-4,16px);min-height:100%;padding:var(--s-6,24px);border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-3);justify-items:start;display:grid}.dh-noview p{color:var(--fg-muted);margin:0}.dh-form{gap:var(--s-2,8px);width:100%;display:grid}.dh-row{align-items:center;gap:var(--s-3,12px);min-height:36px;display:flex}.dh-row label{min-width:96px;color:var(--fg-muted);font-size:13px}.dh-row input[type=text],.dh-row input[type=number]{min-width:0;height:32px;padding:0 var(--s-2,8px);border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-2);background:var(--bg-elev-1);color:var(--fg);font:inherit;flex:1;font-size:13px}.dh-media{align-items:center;gap:var(--s-3,12px);min-height:36px;display:flex}.dh-media-label{min-width:96px;color:var(--fg-muted);font-size:13px}.dh-media-tile{align-items:center;gap:var(--s-2,8px);max-width:100%;min-height:32px;padding:0 var(--s-3,12px);border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-2);background:var(--bg-elev-1);font-size:13px;display:inline-flex}.dh-media-tile span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dh-results{gap:var(--s-3,12px);width:100%;padding-top:var(--s-4,16px);border-top:var(--bw-1,1px) solid var(--divider);display:grid}.dh-results h2{margin:0;font-size:14px;font-weight:600}.dh-section-head{justify-content:space-between;align-items:center;gap:var(--s-2,8px);margin-bottom:var(--s-2,8px);display:flex}.dh-section-head h2{letter-spacing:var(--tr-body);margin:0;font-size:13px;font-weight:600}.dh-input textarea{box-sizing:border-box;width:100%;padding:var(--s-3,12px);border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-2);background:var(--bg-elev-1);color:var(--fg);font-family:var(--font-mono);resize:vertical;font-size:12px;line-height:1.5}.dh-input p,.dh-muted{margin:var(--s-2,8px) 0 0;color:var(--fg-muted);font-size:13px}.dh-json{max-height:240px;padding:var(--s-3,12px);border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-2);background:var(--bg-elev-1);font-family:var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:12px;line-height:1.5;overflow:auto}.dh-console{flex-direction:column;min-height:0;display:flex}.dh-entry{gap:var(--s-2,8px);padding:var(--s-2,8px) 0;border-bottom:var(--bw-1,1px) solid var(--divider);grid-template-columns:auto auto minmax(0,1fr);align-items:baseline;font-size:12px;display:grid}.dh-entry time{color:var(--fg-muted);font-variant-numeric:tabular-nums}.dh-kind{color:var(--fg-muted);font-size:11px}.dh-entry pre{font-family:var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.dh-error .dh-kind,.dh-error pre{color:var(--fg);font-weight:600}.dh-stand-in .dh-kind{color:var(--signal)}.dh-row select{min-width:0;height:32px;padding:0 var(--s-2,8px);border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-2);background:var(--bg-elev-1);color:var(--fg);font:inherit;flex:1}.dh-slider{align-items:center;gap:var(--s-2,8px);flex:1;min-width:0;display:flex}.dh-slider input{flex:1;min-width:0}.dh-slider output{text-align:right;min-width:2.5em;color:var(--fg-muted);font-size:13px}.dh-run-problem{padding:var(--s-2,8px) var(--s-3,12px);border:var(--bw-1,1px) solid var(--border-strong);border-radius:var(--r-2);background:var(--bg-elev-1);color:var(--fg);margin:0}.dh-result-media{gap:var(--s-2,8px);justify-items:center;width:100%;margin:0;display:grid}.dh-result-media img,.dh-result-media .sm-player{object-fit:contain;border-radius:var(--r-3,8px);background:#000;width:auto;min-width:min(100%,320px);max-width:100%;height:auto;max-height:min(62dvh,640px);display:block}.dh-result-media .sm-player>video{aspect-ratio:var(--dh-shape,auto)}.dh-result-media audio{width:100%}.dh-result-media figcaption{max-width:100%;color:var(--fg-muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.dh-results .sm-data-list:has(>li>.dh-result-media){gap:var(--s-4,16px);grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));margin:0;padding:0;list-style:none;display:grid}.dh-results .sm-data-list:has(>li>.dh-result-media) .dh-result-media img{min-width:min(100%,200px);max-height:min(56dvh,560px)}.dh-results .sm-data-list:has(>li>.dh-result-media) .dh-result-media .sm-player{min-width:min(100%,200px);max-height:min(56dvh,560px)}.dh-media-tile small{margin-left:var(--s-1,4px);border:var(--bw-1,1px) solid var(--border-tok);color:var(--fg-muted);border-radius:999px;padding:1px 6px;font-size:11px}.dh-media-pick{cursor:pointer;font:inherit;color:var(--fg)}.dh-media-pick:hover:not(:disabled){border-color:var(--border-strong)}.dh-media-problem{color:var(--attention-error);font-size:12px}.dh-media-empty{flex-wrap:wrap;align-items:flex-start}.dh-media-drop{padding:var(--s-5,20px) var(--s-4,16px);border:1.5px dashed var(--border-strong);border-radius:var(--r-3);background:var(--bg-elev-1);text-align:center;flex:240px;justify-items:center;gap:6px;display:grid}.dh-media-drop[data-over]{border-style:solid;border-color:var(--fg);background:var(--hover-wash)}.dh-media-drop strong{color:var(--fg);font-size:14px;font-weight:600}.dh-media-drop span{color:var(--fg-muted);font-size:13px}.dh-media-drop small{color:var(--fg-muted);font-size:12px}.dh-media-drop .dh-media-pick{margin-top:var(--s-1,4px)}.dh-switch{border-radius:var(--r-2);height:28px;color:var(--fg-muted);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:0 6px;font-size:13px;display:inline-flex}.dh-switch:hover{color:var(--fg)}.dh-switch:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.dh-switch-track{background:var(--bg-elev-2);width:32px;height:18px;box-shadow:inset 0 0 0 var(--bw-1,1px) var(--border-strong);border-radius:999px;transition:background .15s;position:relative}.dh-switch-knob{background:var(--fg-muted);border-radius:50%;width:14px;height:14px;transition:transform .15s,background .15s;position:absolute;top:2px;left:2px}.dh-switch[aria-checked=true] .dh-switch-track{background:var(--fg)}.dh-switch[aria-checked=true] .dh-switch-knob{background:var(--bg);transform:translate(14px)}.dh-media-tiles{gap:var(--s-2,8px);flex-wrap:wrap;flex:1;min-width:0;display:flex}.dh-date{margin:0;font-size:15px}.block-zoom-control{z-index:3;border:1px solid var(--border);background:var(--bg);opacity:0;border-radius:999px;align-items:center;gap:2px;padding:2px;transition:opacity .15s;display:flex;position:absolute;top:8px;right:8px;box-shadow:0 4px 14px #00000014}.bs-sandbox-ui:hover>.block-zoom-control,.block-zoom-control:focus-within{opacity:1}.block-zoom-control button{min-width:28px;height:28px;color:var(--fg);font:500 12px var(--font-body);cursor:pointer;background:0 0;border:0;border-radius:999px;place-items:center;padding:0 8px;display:inline-grid}.block-zoom-control button:hover:not(:disabled){background:var(--hover-wash)}.block-zoom-control button:disabled{opacity:.4;cursor:default}.block-zoom-control button:focus-visible{outline:2px solid var(--signal);outline-offset:1px}.block-zoom-control .block-zoom-mode[aria-pressed=true]{color:var(--fg-muted)}@media (width<=600px),(hover:none){.block-zoom-control{display:none}}@media (prefers-reduced-motion:reduce){.block-zoom-control{transition:none}}.bd-table,.bd-document,.bd-chart,.bd-code-view,.bd-files{min-width:0;color:var(--fg);font:14px/1.6 var(--font-body);margin:0}.bd-table-scroll{border:1px solid var(--border);border-radius:var(--r-3);max-width:100%;max-height:480px;overflow:auto}.bd-table-scroll:focus-visible,.bd-code:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.bd-table table{border-collapse:collapse;width:max-content;min-width:100%;font-size:13px}.bd-table th,.bd-table td{padding:var(--s-2) var(--s-3);text-align:left;vertical-align:top;border-bottom:1px solid var(--border);overflow-wrap:break-word;min-width:64px;max-width:320px}.bd-table th{background:var(--bg-secondary);white-space:nowrap;font-weight:600;position:sticky;top:0}.bd-table td.bd-number{text-align:right;font-variant-numeric:tabular-nums}.bd-table tbody tr:last-child td{border-bottom:0}.bd-bar{align-items:center;gap:var(--s-2);margin-top:var(--s-3);color:var(--fg-muted);flex-wrap:wrap;font-size:12px;display:flex}.bd-bar>span{margin-right:auto}.bd-document{gap:var(--s-3);overflow-wrap:anywhere;display:grid}.bd-document>*{margin:0}.bd-document-title{font:200 italic 22px/1.2 var(--font-display);letter-spacing:var(--tr-display)}.bd-document h4,.bd-document h5,.bd-document h6{font-size:15px;font-weight:600}.bd-document ul,.bd-document ol{padding-left:var(--s-5)}.bd-document blockquote{padding-left:var(--s-3);border-left:2px solid var(--border-strong);color:var(--fg-muted)}.bd-document code,.bd-code{font:12px/1.6 var(--font-mono)}.bd-plain{white-space:pre-wrap}.bd-code{padding:var(--s-3);white-space:pre;border:1px solid var(--border);border-radius:var(--r-3);background:var(--bg-secondary);max-height:420px;margin:0;overflow:auto}.bd-chart svg{width:100%;height:auto;display:block}.bd-chart figcaption{color:var(--fg-muted);margin-top:var(--s-2);font-size:12px}.bd-grid{stroke:var(--border);stroke-width:1px}.bd-axis{fill:var(--fg-muted);font:11px var(--font-body)}.bd-mark{fill:var(--fg);opacity:.82}.bd-line{stroke:var(--fg);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.bd-files{gap:var(--s-2);padding:0;list-style:none;display:grid}.bd-file{align-items:center;gap:var(--s-2) var(--s-3);padding:var(--s-3);border:1px solid var(--border);border-radius:var(--r-3);flex-wrap:wrap;display:flex}.bd-file-name{overflow-wrap:anywhere;font-weight:600}.bd-file>.btn{margin-left:auto}.bd-muted{color:var(--fg-muted);font-size:12px}.bd-color{align-items:center;gap:var(--s-2);font:13px var(--font-mono);display:inline-flex}.bd-swatch{border-radius:var(--r-2);border:1px solid var(--border-strong);width:20px;height:20px}.bd-link{color:var(--fg);overflow-wrap:anywhere}.bd-player,.bd-input{gap:var(--s-3);display:grid}.bd-color-row{gap:var(--s-2);align-items:center;display:flex}.bd-color-row input[type=color]{border:1px solid var(--border);border-radius:var(--r-3);background:var(--bg);width:44px;min-width:44px;height:44px;padding:2px}.bd-richtext textarea{font:13px/1.6 var(--font-mono)}.bd-table-input th{white-space:nowrap}.bd-table-input th>span{margin-right:var(--s-1)}.bd-table-input td{padding:var(--s-1)}.bd-table-input td input{border-radius:var(--r-2);width:100%;min-width:96px;min-height:36px;color:var(--fg);padding:var(--s-1) var(--s-2);font:inherit;background:0 0;border:1px solid #0000}.bd-table-input td input:focus{border-color:var(--border-strong);background:var(--bg)}.bd-table-input .bd-bar input{border:1px solid var(--border);border-radius:var(--r-3);background:var(--bg);min-height:40px;color:var(--fg);padding:var(--s-2) var(--s-3);font:inherit;flex:160px}.bd-chart svg{max-width:960px}.bd-richtext .bd-bar select{width:auto;min-height:40px}.sm-data-record{grid-template-columns:minmax(72px,max-content) minmax(0,1fr);gap:4px 16px;margin:0;display:grid}.sm-data-record dt{color:var(--text-muted)}.sm-data-record dd{overflow-wrap:anywhere;min-width:0;margin:0}.sm-data-list{gap:6px;margin:0;padding-left:20px;display:grid}.sm-data-list:has(>li>.sm-data-record){gap:0;padding-left:0;list-style:none}.sm-data-list:has(>li>.sm-data-record)>li{padding:10px 0}.sm-data-list:has(>li>.sm-data-record)>li+li{border-top:1px solid var(--border)}.sm-data-none{color:var(--text-muted)}@media (width<=600px){.sm-data-record{grid-template-columns:minmax(0,1fr);gap:0}.sm-data-record dd{margin-bottom:6px}.sm-data-record dd>.sm-data-record{border-left:1px solid var(--border);padding-left:12px}}:where(.sm-player,.sm-viewer,.sm-expand-btn){--sm-cream:var(--cream-100,#f7f0db);--sm-ink:var(--ink-600,#0a0a0a);--sm-gold:var(--signal,#e8b23a);--sm-out:var(--dur-fast,.16s);--sm-in:var(--dur-base,.24s);--sm-ease:var(--ease-out,cubic-bezier(.22,1,.36,1));--sm-spring:var(--ease-spring,cubic-bezier(.34,1.56,.64,1));--sm-display:var(--font-display,"Balgin","Hanken Grotesk",ui-sans-serif,sans-serif)}.sm-player{vertical-align:top;box-sizing:border-box;background:var(--sm-ink);max-width:100%;color:var(--sm-cream);line-height:1;font-family:var(--font-body,"Hanken Grotesk",ui-sans-serif,system-ui,sans-serif);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;outline:none;display:inline-block;position:relative;overflow:hidden}.sm-player:focus-visible{outline:2px solid var(--sm-gold);outline-offset:2px}.sm-player>video{width:auto;max-width:100%;height:auto;max-height:inherit;object-fit:contain;background:0 0;margin:0 auto;display:block}:is(.sm-player[data-fill]>video,.sm-player:fullscreen>video,.sm-player[data-stage]>video){width:100%;max-width:none;height:100%;max-height:none}.sm-player[data-fill]{display:block}.sm-player[data-idle]{cursor:none}:where(.sm-stage)>.sm-player{border-radius:var(--r-2,4px);max-width:100%;max-height:100%}.sm-player-ui{z-index:1;pointer-events:none;position:absolute;inset:0}.sm-player-shade{background:linear-gradient(#0a0a0a00,#0a0a0a8c);height:120px;max-height:100%;position:absolute;bottom:0;left:0;right:0}.sm-player-bar{pointer-events:auto;align-items:center;gap:10px;display:flex;position:absolute;bottom:12px;left:12px;right:12px}.sm-player-shade,.sm-player-bar{transition:opacity var(--sm-in) var(--sm-ease)}.sm-player[data-away] .sm-player-shade,.sm-player[data-away] .sm-player-bar,.sm-player[data-idle] .sm-player-shade,.sm-player[data-idle] .sm-player-bar{opacity:0;pointer-events:none;transition-duration:var(--sm-out)}:where(.sm-player,.sm-viewer) .sm-media-btn{appearance:none;box-sizing:border-box;border-radius:var(--r-3,8px);background:var(--sm-cream);width:44px;min-width:0;height:44px;min-height:0;color:var(--sm-ink);box-shadow:none;font:inherit;cursor:pointer;transition:transform var(--sm-out) var(--sm-spring);border:0;flex:none;place-items:center;margin:0;padding:0;line-height:1;text-decoration:none;display:grid}:where(.sm-player,.sm-viewer) .sm-media-btn svg{width:20px;height:20px;display:block}:is(.sm-player,.sm-viewer) .sm-media-btn.sm-media-btn.sm-media-btn-text{width:auto;padding:0 14px;font-size:14px;font-weight:600}@media (hover:hover){:where(.sm-player,.sm-viewer) .sm-media-btn:hover{background:var(--sm-cream);color:var(--sm-ink);transform:translateY(-1px)}}:where(.sm-player,.sm-viewer) .sm-media-btn:active{transform:scale(.94)}:is(.sm-player,.sm-viewer) .sm-media-btn.sm-media-btn:focus-visible{outline:2px solid var(--sm-gold);outline-offset:2px;border-radius:var(--r-3,8px)}:is(.sm-player,.sm-viewer) .sm-media-btn.sm-media-btn{border-radius:var(--r-3,8px);background:var(--sm-cream);min-width:0;min-height:0;color:var(--sm-ink);box-shadow:none;font:inherit;cursor:pointer;border:0;padding:0;line-height:1;text-decoration:none}:is(.sm-player,.sm-viewer) .sm-media-btn.sm-media-btn:hover{background:var(--sm-cream);color:var(--sm-ink)}.sm-player .sm-player-bar [data-control=fullscreen]{margin-left:auto}.sm-player-sound{flex:none;display:flex;position:relative}.sm-player-volume{opacity:0;pointer-events:none;transition:opacity var(--sm-out) var(--sm-ease),transform var(--sm-out) var(--sm-ease);padding-bottom:10px;position:absolute;bottom:100%;left:50%;transform:translate(-50%,6px)}.sm-player-sound:hover .sm-player-volume,.sm-player-sound:focus-within .sm-player-volume,.sm-player-volume[data-drag]{opacity:1;pointer-events:auto;transition-duration:var(--sm-in);transform:translate(-50%)}.sm-player-volume-rail{box-sizing:border-box;border-radius:var(--r-3,8px);cursor:pointer;touch-action:none;background:#0a0a0aa3;outline:none;width:44px;height:128px;padding:14px 0;position:relative}.sm-player-volume-rail:focus-visible{outline:2px solid var(--sm-gold);outline-offset:2px}.sm-player-volume-track{background:#f7f0db47;border-radius:3px;width:6px;height:100%;margin:0 auto;position:relative;overflow:visible}.sm-player-volume-level{background:var(--sm-cream);transform-origin:bottom;border-radius:3px;position:absolute;inset:0;transform:scaleY(1)}.sm-player-volume-head{pointer-events:none;position:absolute;inset:0;transform:translateY(-100%)}.sm-player-volume-knob{background:var(--sm-cream);border-radius:4px;width:16px;height:16px;margin:0 0 -8px -8px;position:absolute;bottom:0;left:50%;box-shadow:0 0 0 3px #0a0a0a59}.sm-player-volume[data-drag] .sm-player-volume-head{will-change:transform}.sm-player[data-volume-room=short] .sm-player-volume-rail{height:84px;padding:12px 0}.sm-player[data-volume-room=none] .sm-player-volume{display:none}@media (hover:none){.sm-player-volume{display:none}}.sm-player-rail{cursor:pointer;touch-action:none;outline:none;flex:auto;min-width:48px;height:24px;position:relative}.sm-player-rail:focus-visible{outline:2px solid var(--sm-gold);outline-offset:2px;border-radius:var(--r-2,4px)}.sm-player-track{height:6px;transition:transform var(--sm-out) var(--sm-ease);background:#f7f0db47;border-radius:3px;margin-top:-3px;position:absolute;top:50%;left:0;right:0;overflow:hidden}.sm-player-buffered,.sm-player-played{transform-origin:0;position:absolute;inset:0;transform:scaleX(0)}.sm-player-buffered{background:#f7f0db2e}.sm-player-played{background:var(--sm-cream)}.sm-player-head{pointer-events:none;position:absolute;inset:0;transform:translate(0)}.sm-player[data-playing] .sm-player-head,.sm-player[data-playing] .sm-player-played,.sm-player-rail[data-drag] .sm-player-head{will-change:transform}.sm-player-knob{background:var(--sm-cream);width:16px;height:16px;transition:transform var(--sm-out) var(--sm-spring);border-radius:4px;margin:-8px 0 0 -8px;position:absolute;top:50%;left:0;transform:scale(0);box-shadow:0 0 0 3px #0a0a0a59}.sm-player-rail:hover .sm-player-knob,.sm-player-rail[data-drag] .sm-player-knob,.sm-player-rail:focus-visible .sm-player-knob{transform:scale(1)}.sm-player-rail:hover .sm-player-track,.sm-player-rail[data-drag] .sm-player-track{transform:scaleY(1.34)}.sm-player-tip{border-radius:var(--r-2,4px);background:var(--sm-ink);color:var(--sm-cream);font-variant-numeric:tabular-nums;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--sm-out) var(--sm-ease);border:1px solid #f7f0db24;padding:3px 7px;font-size:12px;font-weight:500;position:absolute;bottom:calc(100% + 4px);left:0}.sm-player-rail:hover .sm-player-tip,.sm-player-rail[data-drag] .sm-player-tip{opacity:1}.sm-player-time{font-family:var(--sm-display);letter-spacing:-.01em;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--sm-cream);text-shadow:0 1px 8px #0a0a0a99;flex:none;font-size:22px;font-style:italic;font-weight:200;line-height:1}:where(.sm-player,.sm-viewer) .sm-media-of{opacity:.55}.sm-player[data-size] .sm-player-bar{gap:8px}.sm-player[data-size] .sm-player-total{display:none}.sm-player[data-size] .sm-player-time{font-size:18px}.sm-player:is([data-size=compact],[data-size=tiny],[data-size=micro]) .sm-player-time,.sm-player:is([data-size=tiny],[data-size=micro]) [data-control=volume],.sm-player[data-size=micro] .sm-player-bar>:not([data-control=play]):not([data-control=fullscreen]){display:none}@media (hover:none){.sm-player-rail{height:44px}}.sm-player:fullscreen{border-radius:0;width:100%;max-width:none;height:100%;max-height:none}.sm-player[data-stage=theater]{z-index:2147483000;width:auto;max-width:none;height:auto;max-height:none;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);color:var(--sm-cream);background:var(--sm-ink);border:0;border-radius:0;margin:0;display:block;position:fixed;inset:0;overflow:hidden}.sm-player[data-stage=theater]::backdrop{background:var(--sm-ink)}:is(.sm-player:fullscreen .sm-player-bar,.sm-player[data-stage] .sm-player-bar){left:max(12px,env(safe-area-inset-left,0px));right:max(12px,env(safe-area-inset-right,0px));bottom:max(12px,env(safe-area-inset-bottom,0px))}.sm-expand-host{position:relative}.sm-expand-btn{z-index:2;box-sizing:border-box;border-radius:var(--r-3,8px);background:var(--sm-cream);width:44px;min-width:0;height:44px;min-height:0;color:var(--sm-ink);box-shadow:none;cursor:pointer;opacity:0;pointer-events:none;transition:opacity var(--sm-out) var(--sm-ease),transform var(--sm-out) var(--sm-spring);border:0;place-items:center;margin:0;padding:0;line-height:1;display:grid;position:absolute;bottom:12px;right:12px}.sm-expand-btn svg{width:20px;height:20px;display:block}.sm-expand-btn[data-size=small]{border-radius:6px;width:32px;height:32px;bottom:6px;right:6px}.sm-expand-btn[data-size=small] svg{width:16px;height:16px}.sm-expand-btn[data-size=small]:before{content:"";position:absolute;inset:-6px}@media (hover:hover){:hover>.sm-expand-btn{opacity:1;pointer-events:auto}.sm-expand-btn:hover{background:var(--sm-cream);color:var(--sm-ink);transform:translateY(-1px)}}.sm-expand-btn:focus-visible,.sm-expand-btn[data-show]{opacity:1;pointer-events:auto}.sm-expand-btn:active{transform:scale(.94)}.sm-expand-btn.sm-expand-btn.sm-expand-btn:focus-visible{outline:2px solid var(--sm-gold);outline-offset:2px}.sm-expand-btn.sm-expand-btn.sm-expand-btn{border-radius:var(--r-3,8px);background:var(--sm-cream);min-width:0;min-height:0;color:var(--sm-ink);box-shadow:none;font:inherit;cursor:pointer;border:0;padding:0;line-height:1}.sm-expand-btn.sm-expand-btn.sm-expand-btn[data-size=small]{border-radius:6px}.sm-expand-btn.sm-expand-btn.sm-expand-btn:hover{background:var(--sm-cream);color:var(--sm-ink)}.sm-viewer{box-sizing:border-box;background:var(--sm-ink);width:100%;max-width:none;height:100%;max-height:none;color:var(--sm-cream);font-family:var(--font-body,"Hanken Grotesk",ui-sans-serif,system-ui,sans-serif);border:0;margin:0;padding:0;position:fixed;inset:0;overflow:hidden}.sm-viewer[open]{animation:sm-viewer-in var(--sm-in) var(--sm-ease) both;grid-template-rows:minmax(0,1fr) auto;display:grid}.sm-viewer::backdrop{background:var(--ink-600,#0a0a0a)}@keyframes sm-viewer-in{0%{opacity:0}}.sm-viewer [hidden],.sm-viewer .sm-media-btn[hidden]{display:none}.sm-viewer-stage{min-width:0;min-height:0;padding:max(12px,env(safe-area-inset-top,0px)) max(12px,env(safe-area-inset-right,0px)) 12px max(12px,env(safe-area-inset-left,0px));grid-template:minmax(0,1fr)/minmax(0,1fr);place-items:center;display:grid;position:relative;overflow:hidden}.sm-viewer-media{object-fit:contain;width:100%;min-width:0;height:100%;min-height:0;display:block}.sm-viewer-stage>.sm-player{width:100%;max-width:100%;height:100%;max-height:100%}.sm-viewer-off,.sm-player-off{box-sizing:border-box;border:1px solid var(--border-tok,#58534d);border-radius:var(--r-2,4px);background:var(--bg-inset,#171716);color:var(--fg-muted,#bbb2a7);place-items:center;display:inline-grid}.sm-viewer-off{aspect-ratio:4/3;width:min(60vw,320px)}.sm-player-off{aspect-ratio:16/9;vertical-align:top;width:min(100%,320px);max-width:100%}.sm-viewer-off svg,.sm-player-off svg{width:24px;height:24px;display:block}.sm-viewer-top{top:max(12px,env(safe-area-inset-top,0px));right:max(12px,env(safe-area-inset-right,0px));z-index:2;gap:10px;display:flex;position:absolute}.sm-viewer .sm-viewer-nav{z-index:2;margin-top:-22px;position:absolute;top:50%}.sm-viewer .sm-viewer-previous{left:max(12px,env(safe-area-inset-left,0px))}.sm-viewer .sm-viewer-next{right:max(12px,env(safe-area-inset-right,0px))}.sm-viewer-foot{min-width:0;padding:12px max(12px,env(safe-area-inset-right,0px)) max(14px,env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px));justify-content:center;align-items:baseline;gap:12px;display:flex}.sm-viewer-count{font-family:var(--sm-display);letter-spacing:-.01em;font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;font-size:24px;font-style:italic;font-weight:200;line-height:1}.sm-viewer-name{min-width:0;color:var(--fg-muted,#bbb2a7);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}@media (prefers-reduced-motion:reduce){.sm-player *,.sm-viewer,.sm-viewer *,.sm-expand-btn{transition:none!important;animation:none!important}}.sm-when-pickers{flex-wrap:wrap;align-items:center;gap:4px;min-width:0;display:inline-flex}.sm-when-pick{min-width:0;display:inline-flex;position:relative}.sm-when-button{border:1px solid var(--border-tok);border-radius:var(--r-3);background:var(--bg-elev-1);height:36px;color:var(--fg);font:inherit;font-family:var(--font-body);font-variant-numeric:tabular-nums;white-space:nowrap;cursor:pointer;align-items:center;gap:6px;padding:0 8px 0 10px;font-size:13.5px;display:inline-flex}.sm-when-button svg{color:var(--fg-muted);flex:none}.sm-when-button svg:last-child{color:var(--fg-subtle)}.sm-when-button[aria-expanded=true]{border-color:var(--fg);box-shadow:inset 0 0 0 1px var(--fg)}.sm-when-button:disabled{cursor:default;opacity:.55}.sm-when-pop{z-index:40;border:1px solid var(--border-strong);border-radius:var(--r-3);background:var(--bg-elev-1);color:var(--fg);box-shadow:var(--shadow-lg);margin:0;padding:10px;position:absolute;top:calc(100% + 4px);left:0}.sm-when-calendar{box-sizing:border-box;gap:6px;width:260px;max-width:calc(100vw - 32px);display:grid}.sm-when-cal-head{justify-content:space-between;align-items:center;font-size:14px;display:flex}.sm-when-cal-head b{font-weight:600}.sm-when-cal-nav{gap:2px;display:inline-flex}.sm-when-cal-nav button{border-radius:var(--r-2);width:30px;height:30px;color:var(--fg-muted);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid}.sm-when-cal-nav button:hover:not(:disabled){background:var(--hover-wash);color:var(--fg)}.sm-when-cal-nav button:disabled{opacity:.35;cursor:default}.sm-when-cal-grid{text-align:center;font-variant-numeric:tabular-nums;grid-template-columns:repeat(7,1fr);gap:2px;font-size:13px;display:grid}.sm-when-cal-grid i{color:var(--fg-subtle);padding:2px 0;font-size:12px;font-style:normal}.sm-when-cal-grid button{height:30px;color:var(--fg);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;padding:0;display:grid}.sm-when-cal-grid button:hover:not(:disabled):not([aria-pressed=true]){background:var(--hover-wash)}.sm-when-cal-grid button:disabled{color:var(--fg-subtle);cursor:default}.sm-when-cal-grid button[aria-current=date]{box-shadow:inset 0 0 0 1px var(--border-strong)}.sm-when-cal-grid button[aria-pressed=true]{background:var(--fg);color:var(--bg);font-weight:600}.sm-when-clear{justify-self:start;min-height:32px;padding:4px 12px}.sm-when-times{box-sizing:border-box;outline:none;gap:1px;width:150px;max-height:240px;padding:4px;list-style:none;display:grid;overflow-y:auto}.sm-when-times li{border-radius:var(--r-2);font-variant-numeric:tabular-nums;cursor:pointer;padding:6px 10px;font-size:14px}.sm-when-times li[data-active=true]{background:var(--hover-wash)}.sm-when-times li[aria-selected=true]{font-weight:600}.sm-when-times li[aria-disabled=true]{color:var(--fg-subtle);cursor:default}.sm-when-times:focus-visible li[data-active=true]{box-shadow:inset 0 0 0 1px var(--fg)}
1
+ @font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/HankenGrotesk-Variable.ttf)format("truetype")}@font-face{font-family:Hanken Grotesk;font-style:italic;font-weight:100 900;font-display:swap;src:url(/fonts/HankenGrotesk-Italic-Variable.ttf)format("truetype")}:root{--cream-50:#fdfaf1;--cream-100:#f7f0db;--cream-200:#ece3c9;--cream-300:#dcd2b5;--cream-600:#4e483a;--ink-50:#f2f0ec;--ink-100:#c9c6be;--ink-300:#4a4843;--ink-400:#26241f;--ink-500:#16140f;--ink-600:#0a0a0a;--signal:#e8b23a;--signal-dim:#e8b23a26;--signal-glow:#e8b23a4d;--font-display:"Balgin", "Hanken Grotesk", ui-sans-serif, sans-serif;--font-body:"Hanken Grotesk", ui-sans-serif, sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--font:var(--font-body);--fs-display-xl:clamp(72px, 14vw, 220px);--fs-display-l:clamp(56px, 9vw, 144px);--fs-display-m:clamp(40px, 6vw, 96px);--fs-h4:1.25rem;--fs-body:1rem;--fs-body-s:.875rem;--fs-caption:.8125rem;--fs-micro:.75rem;--tr-display:-.02em;--tr-body:-.005em;--tr-micro:.08em;--lh-display:.92;--lh-tight:1.05;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--s-9:96px;--s-10:128px;--s-11:192px;--page-gutter:clamp(20px, 3vw, 48px);--page-gutter-compact:clamp(16px, 5vw, 24px);--page-section-gap:clamp(32px, 5vw, 64px);--content-readable:720px;--content-wide:1440px;--control-height:40px;--touch-target:44px;--mobile-dock-height:66px;--z-nav:30;--hover:var(--hover-wash);--r-0:0;--r-1:2px;--r-2:4px;--r-3:8px;--r-pill:999px;--radius-sm:var(--r-2);--radius:var(--r-3);--radius-lg:var(--r-3);--bw-hair:.5px;--bw-1:1px;--bw-2:2px;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--dur-instant:80ms;--dur-fast:.16s;--dur-base:.24s;--dur-slow:.48s;--dur-reveal:.72s}:root,[data-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#101010;--bg-elev-1:#232221;--bg-elev-2:#33312f;--bg-inset:#171716;--fg:#f3eee5;--fg-muted:#bbb2a7;--fg-subtle:#f3eee594;--fg-on-accent:#191716;--border-tok:#58534d;--border-strong:#8b7e6f;--divider:#393735;--signal:#d0ae77;--signal-dim:#d0ae7726;--signal-glow:#d0ae774d;--hover-wash:#f7f0db0f;--press-wash:#f7f0db1f;--selection-bg:var(--cream-100);--selection-fg:var(--ink-600);--shadow-1:0 1px 0 #f7f0db0a inset, 0 4px 12px #00000080;--shadow-2:0 1px 0 #f7f0db0f inset, 0 16px 48px #0009;--scrim-top:linear-gradient(to bottom, #0a0a0ad9, #0a0a0a00);--scrim-bottom:linear-gradient(to top, #0a0a0ad9, #0a0a0a00);--bg-primary:var(--bg);--bg-secondary:var(--bg-elev-1);--bg-tertiary:var(--bg-elev-2);--bg-elevated:var(--bg-elev-1);--bg-hover:#403d3a;--border:var(--border-tok);--border-light:var(--border-strong);--accent:var(--fg);--accent-hover:var(--cream-50);--accent-dim:var(--hover-wash);--accent-glow:#f7f0db38;--accent-contrast:var(--bg);--editor-standout-bg:var(--fg);--editor-standout-fg:var(--bg);--text-primary:var(--fg);--text-secondary:var(--fg-muted);--text-muted:var(--fg-subtle);--success:var(--fg);--warning:var(--signal);--danger:var(--signal);--attention-warning:#e0b24f;--attention-error:#e26a5f;--attention-ok:#6bc38e;--attention-info:#7da7e8;--shadow:var(--shadow-1);--shadow-lg:var(--shadow-2)}[data-mode=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--signal:#e8b23a;--signal-dim:#e8b23a26;--signal-glow:#e8b23a4d;--bg:var(--cream-100);--bg-elev-1:var(--cream-50);--bg-elev-2:var(--cream-200);--bg-inset:var(--cream-200);--fg:var(--ink-600);--fg-muted:var(--cream-600);--fg-subtle:#0a0a0a61;--fg-on-accent:var(--cream-100);--border-tok:#0a0a0a1a;--border-strong:#0a0a0a38;--divider:#0a0a0a0f;--hover-wash:#0a0a0a0d;--press-wash:#0a0a0a1a;--selection-bg:var(--ink-600);--selection-fg:var(--cream-100);--shadow-1:0 1px 0 #ffffff80 inset, 0 4px 12px #0a0a0a0f;--shadow-2:0 1px 0 #fff9 inset, 0 16px 48px #0a0a0a1a;--scrim-top:linear-gradient(to bottom, #f7f0dbe6, #f7f0db00);--scrim-bottom:linear-gradient(to top, #f7f0dbe6, #f7f0db00);--bg-primary:var(--bg);--bg-secondary:var(--bg-elev-1);--bg-tertiary:var(--bg-elev-2);--bg-elevated:var(--bg-elev-2);--bg-hover:var(--cream-300);--border:var(--border-tok);--border-light:var(--border-strong);--accent:var(--fg);--accent-hover:var(--ink-500);--accent-dim:var(--hover-wash);--accent-glow:#0a0a0a38;--accent-contrast:var(--bg);--editor-standout-bg:var(--ink-300);--editor-standout-fg:var(--cream-100);--text-primary:var(--fg);--text-secondary:var(--fg-muted);--text-muted:var(--fg-subtle);--success:var(--fg);--warning:var(--signal);--danger:var(--signal);--attention-warning:#b98200;--attention-error:#c2453d;--attention-ok:#2e7d4f;--attention-info:#2f67b8;--shadow:var(--shadow-1);--shadow-lg:var(--shadow-2)}[data-mode=white]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--bg-elev-1:#f4f4f1;--bg-elev-2:#eaeae6;--bg-inset:#eeeeea;--fg:#0e0e0e;--fg-muted:#5c5c5c;--fg-subtle:#767676;--fg-on-accent:#fff;--border-tok:#e1e1dd;--border-strong:#c4c4bf;--divider:#e7e7e3;--hover-wash:#0000000d;--press-wash:#00000017;--selection-bg:#0e0e0e;--selection-fg:#fff;--signal:#8e6b46;--signal-dim:#8e6b461a;--signal-glow:#8e6b4638;--shadow-1:0 1px 3px #0000000d;--shadow-2:0 12px 40px #0000001a;--scrim-top:linear-gradient(to bottom,#ffffffe6,#fff0);--scrim-bottom:linear-gradient(to top,#ffffffe6,#fff0);--bg-primary:var(--bg);--bg-secondary:var(--bg-elev-1);--bg-tertiary:var(--bg-elev-2);--bg-elevated:var(--bg-elev-1);--bg-hover:#ecece8;--border:var(--border-tok);--border-light:var(--border-strong);--accent:var(--fg);--accent-hover:#2a2a2a;--accent-dim:var(--hover-wash);--accent-glow:#0000001f;--accent-contrast:var(--bg);--editor-standout-bg:#24211d;--editor-standout-fg:#fff;--text-primary:var(--fg);--text-secondary:var(--fg-muted);--text-muted:var(--fg-subtle);--success:var(--fg);--warning:var(--signal);--danger:var(--signal);--attention-warning:#b98200;--attention-error:#c2453d;--attention-ok:#2e7d4f;--attention-info:#2f67b8;--shadow:var(--shadow-1);--shadow-lg:var(--shadow-2)}button[data-icon-action=true]{cursor:pointer;flex-shrink:0;line-height:1;min-width:36px!important;min-height:36px!important;box-shadow:none!important;color:var(--text-secondary,var(--fg))!important;background:0 0!important;border:0!important;border-radius:0!important;justify-content:center!important;align-items:center!important;padding:8px!important;display:inline-flex!important}button[data-icon-action=true]:hover:not(:disabled){color:var(--text-primary,var(--fg))!important}button[data-icon-action=true]:focus-visible{outline-offset:2px;outline:2px solid var(--signal)!important}button[data-icon-action=true]:disabled{cursor:not-allowed;opacity:.4!important}button[data-icon-action=true][aria-pressed=true]{text-underline-offset:5px;text-decoration:underline;color:var(--text-primary,var(--fg))!important}@media (pointer:coarse){button[data-icon-action=true]{min-width:44px!important;min-height:44px!important}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root[data-anim-theme="1"]:not([data-mode=white]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0a0d13;--bg-elev-1:#0f141c;--bg-elev-2:#1a2230;--bg-inset:#0f141c;--fg:#d8dee8;--fg-muted:#8b98ac;--fg-subtle:#64748b;--fg-on-accent:#0a0d13;--border-tok:#232d3d;--border-strong:#303d50;--divider:#1a2230;--hover-wash:#8b98ac14;--press-wash:#8b98ac29;--selection-bg:#303d50;--selection-fg:#d8dee8;--bg-primary:#0a0d13;--bg-secondary:#0f141c;--bg-tertiary:#1a2230;--bg-elevated:#1a2230;--bg-hover:#232d3d;--border:#232d3d;--border-light:#303d50;--accent:#8b98ac;--accent-hover:#b6c0ce;--accent-dim:#8b98ac1f;--accent-glow:#8b98ac40;--accent-contrast:#0a0d13;--editor-standout-bg:#d8dee8;--editor-standout-fg:#0a0d13;--text-primary:#d8dee8;--text-secondary:#8b98ac;--text-muted:#64748b;--success:#8b98ac;--warning:#b6c0ce;--danger:#b6c0ce}html,body{background:var(--bg);width:100%;height:100%;color:var(--fg);font-family:var(--font-body);letter-spacing:var(--tr-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:14px;line-height:1.6;overflow:hidden}#root{width:100%;height:100%;overflow:hidden}.sm-app-shell{height:100dvh}@keyframes sm-navmenu-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.mobile-nav-menu{animation:.2s cubic-bezier(.22,1,.36,1) sm-navmenu-in}::selection{background:var(--selection-bg);color:var(--selection-fg)}.display,h1,h2{font-family:var(--font-display);font-style:italic;font-weight:200;line-height:var(--lh-tight);letter-spacing:var(--tr-display);margin:0}.display{line-height:var(--lh-display)}h3,h4{font-family:var(--font-body);font-weight:500;line-height:var(--lh-tight);letter-spacing:-.01em;margin:0}.eyebrow{color:var(--fg-muted);font-size:11px;font-weight:500}code,pre,.mono{font-family:var(--font-mono);font-size:.92em}.listing-identity code{font-family:inherit;font-size:inherit}button{font-family:var(--font-body);cursor:pointer;letter-spacing:var(--tr-body);border:none;outline:none}textarea,input,select{font-family:var(--font-body);outline:none}select{background-color:var(--bg-elev-1);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--r-2)}select option,select optgroup{background-color:var(--bg-elevated);color:var(--text-primary)}select option:checked{font-weight:600}.tsel-trigger{background-color:var(--bg-elev-1);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--r-2);font-family:var(--font-body);font-size:inherit;cursor:pointer;text-align:left;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;display:inline-flex}.tsel-trigger:hover{border-color:var(--border-strong)}.tsel-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.tsel-trigger:disabled{opacity:.5;cursor:default}.tsel-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tsel-caret{opacity:.7;flex:none;font-size:10px}.tsel-pop{z-index:100100;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r-2);max-height:260px;padding:4px;overflow-y:auto;box-shadow:0 8px 28px #00000047}.tsel-opt{color:var(--text-primary);cursor:pointer;white-space:nowrap;border-radius:6px;align-items:center;gap:6px;padding:6px 8px;font-size:13px;display:flex}.tsel-opt[data-active=true]{background:var(--bg-elev-1)}.tsel-opt[aria-selected=true]{font-weight:600}.tsel-opt[aria-disabled=true]{color:var(--text-muted);cursor:default}.tsel-opt[aria-disabled=true][data-active=true]{background:0 0}.tsel-check{opacity:.8;flex:none;width:12px;font-size:11px}.tsel-opt-label{text-overflow:ellipsis;flex:auto;overflow:hidden}.tsel-note{cursor:help;width:16px;height:16px;color:var(--text-muted);border:1px solid var(--border);border-radius:999px;flex:none;justify-content:center;align-items:center;font-size:11px;display:inline-flex;position:relative}.tsel-note:hover{color:var(--text-primary);border-color:var(--border-strong)}.tsel-tip{z-index:100110;background:var(--text-primary);color:var(--bg-elevated);box-sizing:border-box;white-space:normal;pointer-events:none;border-radius:5px;max-width:min(260px,100vw - 16px);padding:4px 8px;font-size:11px;font-weight:600;box-shadow:0 2px 10px #0000004d}@media (width<=767.98px),(height<=480px) and (pointer:coarse){.tsel-opt{box-sizing:border-box;min-height:44px;font-size:14px}.tsel-note{flex:0 0 44px;width:44px;height:44px;font-size:14px}}.video-editor input,.video-editor select,.video-editor textarea{background:var(--bg-inset);width:100%;min-width:0;color:var(--fg);border:var(--bw-1) solid var(--border-strong);border-radius:var(--r-2);font-family:var(--font-body);accent-color:var(--signal);padding:7px 8px;font-size:12px}.video-editor,.mobile-editor-root{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.video-editor input,.video-editor select,.video-editor textarea,.video-editor [contenteditable=true],.mobile-editor-root input,.mobile-editor-root select,.mobile-editor-root textarea,.mobile-editor-root [contenteditable=true]{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}.video-editor input[type=range]{background:0 0;border:0;padding:0}.video-editor input[type=checkbox]{width:auto;min-width:auto}.video-editor select:focus,.video-editor input:focus,.video-editor textarea:focus{border-color:var(--signal);box-shadow:0 0 0 1px var(--signal-dim)}:focus-visible{outline:2px solid var(--signal);outline-offset:2px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--r-pill)}::-webkit-scrollbar-thumb:hover{background:var(--fg-subtle)}.sm-hide-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.sm-hide-scrollbar::-webkit-scrollbar{width:0;height:0;display:none}.btn{align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-4);border-radius:var(--r-pill);letter-spacing:var(--tr-body);transition:transform var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), opacity var(--dur-fast) var(--ease-out);font-size:13px;font-weight:500;display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background:var(--fg);color:var(--bg)}.btn-primary:hover{background:var(--fg);opacity:.86}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-secondary{color:var(--fg);border:var(--bw-1) solid var(--border-strong);background:0 0}.btn-secondary:hover{background:var(--hover-wash);border-color:var(--fg)}.btn-ghost{color:var(--fg-muted);background:0 0;padding:6px 10px}.btn-ghost:hover{background:var(--hover-wash);color:var(--fg)}.btn-icon{color:var(--fg-muted);border-radius:var(--r-2);transition:background-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);background:0 0;justify-content:center;align-items:center;padding:5px;display:inline-flex}.btn-icon:hover{background:var(--hover-wash);color:var(--fg)}.btn-icon:active{transform:scale(.98)}.btn-icon:disabled{opacity:.4;cursor:not-allowed}.typing-indicator{align-items:center;gap:4px;padding:4px 0;display:flex}.typing-indicator span{border-radius:var(--r-pill);background:var(--fg-subtle);width:6px;height:6px;animation:1.2s infinite bounce}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}@keyframes bounce{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-5px)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:.4;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}button:focus-visible,[role=button]:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]):not([type=button]):not([type=submit]):not([type=reset]):is(:focus,:focus-visible),textarea:is(:focus,:focus-visible),select:is(:focus,:focus-visible),[contenteditable]:not([contenteditable=false]):is(:focus,:focus-visible){outline:none!important}@keyframes skeletonShimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,#ffffff08 0%,#ffffff1a 50%,#ffffff08 100%) 0 0/200% 100%;border-radius:6px;animation:1.4s ease-in-out infinite skeletonShimmer}.node-state-empty{border-style:dashed!important}.node-state-generating{box-shadow:0 0 0 2px var(--accent);position:relative}.node-state-generating:after{content:"";border-radius:inherit;pointer-events:none;will-change:opacity;animation:1.6s ease-in-out infinite nodePulse;position:absolute;inset:-2px;box-shadow:0 0 18px #f7c8328c}@keyframes nodePulse{0%,to{opacity:.36}50%{opacity:1}}.node-state-warning{position:relative;border-color:var(--attention-warning)!important}.node-state-warning:after{content:"";border-radius:inherit;pointer-events:none;box-shadow:0 0 0 1px var(--attention-warning), 0 0 14px color-mix(in srgb, var(--attention-warning) 40%, transparent);position:absolute;inset:-2px}.node-state-failed{border-top:4px solid #d04848!important}.node-state-failed:before{content:"⚠ ";color:#d04848;z-index:2;pointer-events:none;font-size:12px;font-weight:800;position:absolute;top:6px;left:8px}.react-flow__node{cursor:default}.react-flow__node.dragging,.react-flow__pane.dragging .react-flow__viewport{will-change:transform}.react-flow__node:not(.react-flow__node-sceneGroupNode):not(.react-flow__node-shotLabelNode):not(.react-flow__node-stickyNoteNode):not(.react-flow__node-transitionNode){box-shadow:1px 1px 0 var(--node-side,#d8cfb3), 2px 2px 0 var(--node-side,#d8cfb3), 3px 3px 0 var(--node-side,#d8cfb3), 4px 4px 0 var(--node-side,#d8cfb3), 5px 5px 0 var(--node-side,#d8cfb3), 6px 6px 0 var(--node-side,#d8cfb3), 7px 7px 0 var(--node-edge,#0a0a0a2e), 14px 16px 18px -4px #0a0a0a2e;border-radius:10px}[data-mode=dark] .react-flow__node:not(.react-flow__node-sceneGroupNode):not(.react-flow__node-shotLabelNode):not(.react-flow__node-stickyNoteNode):not(.react-flow__node-transitionNode){--node-side:#1f1d18;--node-edge:#f7f0db2e}.react-flow__controls{grid-template-columns:repeat(2,1fr)!important;display:grid!important}.react-flow__controls button{background:var(--bg-elev-2)!important;border-color:var(--border-tok)!important;color:var(--fg-muted)!important;fill:var(--fg-muted)!important}.react-flow__controls button:hover{background:var(--ink-300)!important}.react-flow__edge-path{stroke:var(--border-strong)}.react-flow.rf-edges-panning .react-flow__edges{display:none}.react-flow__node.node-controls-locked input,.react-flow__node.node-controls-locked textarea,.react-flow__node.node-controls-locked select,.react-flow__node.node-controls-locked button,.react-flow__node.node-controls-locked [role=button]{pointer-events:none!important}.react-flow__node.node-controls-locked{cursor:grab}.react-flow__node.node-controls-locked:active{cursor:grabbing}.react-flow__node.scene-add-available-node{filter:drop-shadow(0 0 10px #f7f0db38)}.react-flow__node.scene-add-available-node>div{outline:1px solid var(--border-strong);outline-offset:4px;border-radius:var(--r-3)}.react-flow__node.scene-add-available-node:after{content:"";border:1px dashed var(--border-strong);border-radius:var(--r-3);pointer-events:none;position:absolute;inset:-8px}.react-flow__node.node-replace-available{filter:drop-shadow(0 0 10px #f7f0db38)}.react-flow__node.node-replace-available>div{outline:1px solid var(--border-strong);outline-offset:4px;border-radius:var(--r-3)}.react-flow__node.node-replace-available:after{content:"";border:1px dashed var(--border-strong);border-radius:var(--r-3);pointer-events:none;position:absolute;inset:-8px}select option{background:var(--bg-elev-2);color:var(--fg)}.spinner{border:2px solid var(--border-tok);border-top-color:var(--fg);border-radius:var(--r-pill);width:16px;height:16px;animation:.7s linear infinite spin}.media-upload-preview:hover .media-upload-overlay{opacity:1!important}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important}}.assets-card .assets-card-overlay{opacity:0;transition:opacity .15s}.assets-card:hover .assets-card-overlay{opacity:1}.yt-video-row{transition:background .12s,box-shadow .12s,color .12s}.yt-video-row:hover{box-shadow:inset 2px 0 0 var(--accent), inset 0 0 14px var(--accent-glow);color:var(--text-primary);background:var(--hover-wash)!important}.chat-bubble ::selection{background:var(--signal);color:#0a0a0a}.chat-bubble ::selection{background:var(--signal);color:#0a0a0a}.chat-bubble:hover .chat-bubble-copy,.chat-bubble:focus-within .chat-bubble-copy,.chat-bubble-copy:hover,.chat-bubble-copy:focus{opacity:1!important}.chat-bubble-copy:hover{background:var(--bg-elevated-2,var(--bg-elevated));color:var(--text-primary)!important}.chat-bubble-copy:active{transform:scale(.94)}.sm-brand .sm-brandmark{transform-origin:50%;transition:transform .76s cubic-bezier(.2,.8,.2,1),filter .28s}.sm-brand:hover .sm-brandmark{filter:drop-shadow(0 0 7px color-mix(in srgb, currentColor 45%, transparent));will-change:transform, filter;transform:perspective(340px)rotateY(360deg)scale(1.06)}.sm-brand .sm-word{transition:transform .3s cubic-bezier(.2,.8,.2,1);transform:translate(-4px)}.sm-brand:hover .sm-word{will-change:transform;transform:translate(-4px,-1px)}@media (prefers-reduced-motion:reduce){.sm-brand .sm-brandmark{transition:transform .24s,filter .24s}.sm-brand:hover .sm-brandmark{transform:scale(1.06)}.sm-brand:hover .sm-word{transform:translate(-4px)}}body.sm-mobile-ui input,body.sm-mobile-ui textarea,body.sm-mobile-ui select{font-size:16px!important}body.sm-mobile-ui button,body.sm-mobile-ui select,body.sm-mobile-ui [role=button]{min-height:44px}body.sm-mobile-ui select:not([multiple]):not([size]){height:max(44px,2.75em)}body.sm-mobile-ui button.btn-icon,body.sm-mobile-ui button[data-compact],body.sm-mobile-ui .no-min-tap{min-height:0}body.sm-mobile-ui .yt-video-row{min-width:560px}:where(html:has(.sm-block)){container-type:inline-size}:where(.sm-block){gap:var(--s-5,24px);min-width:0;display:grid}:where(.sm-block,.sm-block *){box-sizing:border-box}:where(.sm-block)>:where(*){min-width:0}@container (width>=720px){:where(.sm-block[data-layout=split]){grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr);align-items:start}:where(.sm-block[data-layout=split])>:where(.sm-stage){grid-row:span 6}}@container (width>=860px){:where(.sm-block:not([data-layout]):has(>.sm-stage)){align-items:start;column-gap:var(--s-5,24px);row-gap:var(--s-4,16px);grid-template-columns:minmax(300px,380px) minmax(0,1fr)}:where(.sm-block:not([data-layout]):has(>.sm-stage))>:where(*){grid-column:1}:where(.sm-block:not([data-layout]):has(>.sm-stage))>:where(.sm-stage){grid-area:1/2/span 12;align-self:stretch;min-height:min(70vh,640px)}:where(.sm-block:not([data-layout]):has(>.sm-stage))>:where(.sm-stage[data-ratio]){align-self:start;min-height:0}}:where(.sm-row){align-items:center;gap:var(--s-2,8px);flex-wrap:wrap;display:flex}@container (width<=519px){:where(.sm-clamp:not([data-open])){-webkit-line-clamp:var(--sm-lines,5);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}}:where(.sm-stage){min-height:220px;padding:var(--s-3,12px);border-radius:var(--r-3,8px);background:var(--bg-inset);place-items:center;display:grid;position:relative;overflow:hidden}:where(.sm-stage:is([data-ratio="16:9"],[data-ratio="16/9"])){aspect-ratio:16/9;min-height:0}:where(.sm-stage:is([data-ratio="9:16"],[data-ratio="9/16"])){aspect-ratio:9/16;justify-self:center;width:auto;height:min(70vh,640px);min-height:0;max-height:70vh}:where(.sm-stage:is([data-ratio="1:1"],[data-ratio="1/1"])){aspect-ratio:1;min-height:0}:where(.sm-stage)>:where(img,video,canvas){object-fit:contain;border-radius:var(--r-2,4px);max-width:100%;max-height:100%;display:block}:where(.sm-stage[data-fill])>:where(img,video,canvas){object-fit:cover;width:100%;height:100%}:where(.sm-stage) :where(img:not([src]),img[src=""]){display:none}:where(.sm-empty){justify-items:center;gap:var(--s-3,12px);padding:var(--s-5,24px) var(--s-4,16px);text-align:center;color:var(--fg-muted);display:grid}:where(.sm-empty)>:where(.sm-glyph){--sm-glyph-size:40px;color:var(--fg-subtle)}:where(.sm-empty)>:where(p){max-width:24ch;font-size:var(--fs-body,1rem);margin:0}:where(.sm-drop){outline:1px dashed var(--border-tok);outline-offset:-8px}:where(.sm-drop[data-over]){outline-color:var(--fg);background:var(--hover-wash)}:where(.sm-actions){align-items:center;gap:var(--s-2,8px);flex-wrap:wrap;display:flex}:where(.sm-actions)>:where(.sm-status){margin-inline-start:var(--s-2,8px)}:where(.sm-primary,.sm-quiet){justify-content:center;align-items:center;gap:var(--s-2,8px);min-height:var(--touch-target,44px);border-radius:var(--r-pill,999px);font:inherit;cursor:pointer;text-align:center;overflow-wrap:anywhere;max-width:100%;padding:10px 20px;font-weight:500;display:inline-flex}:where(.sm-primary){border:1px solid var(--fg);background:var(--fg);color:var(--bg)}:where(.sm-quiet){border:1px solid var(--border-strong);background:var(--bg-elev-1);color:var(--fg)}:where(.sm-quiet):hover{background:var(--bg-elev-2)}:where(.sm-icon){min-width:var(--touch-target,44px);min-height:var(--touch-target,44px);border-radius:var(--r-2,4px);color:var(--fg-muted);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:inline-grid}:where(.sm-icon):hover{color:var(--fg);background:var(--hover-wash)}:where(.sm-icon[aria-pressed=true]){color:var(--fg);background:var(--press-wash)}:where(.sm-primary,.sm-quiet,.sm-icon):disabled{opacity:.45;cursor:default}:where(.sm-primary,.sm-quiet,.sm-icon):focus-visible{outline:2px solid var(--signal);outline-offset:3px}@container (width<=420px){:where(.sm-actions)>:where(.sm-primary){flex:100%}}:where(.sm-field){gap:6px;min-width:0;display:grid}:where(.sm-field)>:where(label,.sm-label){align-items:center;gap:var(--s-1,4px);font-size:var(--fs-body-s,.875rem);color:var(--fg-muted);min-height:24px;display:flex}:where(.sm-field) :where(input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea){width:100%;min-height:var(--touch-target,44px);border:1px solid var(--border-tok);border-radius:var(--r-3,8px);background:var(--bg-elev-1);color:var(--fg);font:inherit;padding:10px 12px}:where(.sm-field) :where(textarea){resize:vertical;min-height:96px}:where(.sm-fields){gap:var(--s-4,16px);grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));display:grid}:where(.sm-block)>:where(.sm-fields,.sm-settings){padding:var(--s-3,12px) var(--s-4,16px);border:1px solid var(--border);border-radius:var(--r-3,8px);background:var(--bg-secondary)}:where(.sm-field:not(:has(textarea,.sm-choices,.sm-gallery,.sm-list))){align-items:center;gap:6px var(--s-2,8px);flex-wrap:wrap;display:flex}:where(.sm-field:not(:has(textarea,.sm-choices,.sm-gallery,.sm-list)))>:where(label,.sm-label){flex:0 auto}:where(.sm-field:not(:has(textarea,.sm-choices,.sm-gallery,.sm-list)))>:where(:not(label,.sm-label)){flex:1 1 var(--sm-control,10rem);min-width:0}@container (width>=520px){:where(.sm-field:not(:has(textarea,.sm-choices,.sm-gallery,.sm-list))){align-items:center;gap:var(--s-2,8px);grid-template-columns:minmax(5rem,9rem) minmax(0,1fr);display:grid}:where(.sm-field) :where(input:not([type=checkbox]):not([type=radio]):not([type=range]),select){min-height:36px;padding:6px 10px}:where(.sm-fields){gap:var(--s-2,8px) var(--s-4,16px)}}:where(.sm-choices){gap:var(--s-2,8px);grid-template-columns:repeat(auto-fill,minmax(var(--sm-tile,96px),1fr));border:0;min-width:0;margin:0;padding:0;display:grid}:where(.sm-choices[data-size=wide]){--sm-tile:160px}:where(.sm-choices)>:where(legend){font-size:var(--fs-body-s,.875rem);color:var(--fg-muted);margin-bottom:6px;padding:0}:where(.sm-choices)>:where(label){padding:var(--s-2,8px);border:1px solid var(--border-tok);border-radius:var(--r-3,8px);background:var(--bg-elev-1);color:var(--fg-muted);font-size:max(12px,var(--fs-caption,.8125rem));text-align:center;cursor:pointer;align-content:start;justify-items:center;gap:6px;display:grid;position:relative}:where(.sm-choices)>:where(label:not(:has(input:checked,input:disabled))):hover{border-color:var(--border-strong);color:var(--fg)}:where(.sm-choices) :where(input[type=radio],input[type=checkbox]){opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}:where(.sm-choices)>:where(label:has(input:checked)){border-color:var(--fg);background:var(--fg);color:var(--bg);box-shadow:none;--fg-muted:color-mix(in srgb,var(--bg) 78%,transparent);--fg-subtle:color-mix(in srgb,var(--bg) 64%,transparent);--text-secondary:var(--fg-muted);--text-muted:var(--fg-subtle)}:where(.sm-choices)>:where(label:has(input:focus-visible)){outline:2px solid var(--signal);outline-offset:2px}:where(.sm-choices)>:where(label:has(input:disabled)),:where(.sm-choices) :where(input:disabled){cursor:default}:where(.sm-choices)>:where(label:has(input:disabled):not(:has(input:checked))){opacity:.45}:where(.sm-choices) :where(img,video,canvas,.sm-swatch){width:100%;aspect-ratio:var(--sm-tile-ratio,1);object-fit:cover;border-radius:var(--r-2,4px);background:var(--bg-inset);display:block}:where(.sm-choices) :where(.sm-glyph){--sm-glyph-size:28px;margin:10px 0 4px}:where(.sm-choices:is([data-ratio="16:9"],[data-ratio="16/9"])){--sm-tile-ratio:16/9}:where(.sm-choices:is([data-ratio="9:16"],[data-ratio="9/16"])){--sm-tile-ratio:9/16}:where(.sm-choices[data-compact])>:where(label){min-height:var(--touch-target,44px);grid-auto-flow:column;place-content:center;align-items:center;padding:6px 12px}:where(.sm-choices[data-compact]) :where(.sm-glyph){--sm-glyph-size:18px;margin:0}:where(.sm-choices) :where(audio){z-index:1;width:100%;height:32px;position:relative}:where(.sm-shape){box-sizing:border-box;width:calc(var(--sm-shape-size,32px) * min(1,var(--r,1)));aspect-ratio:var(--r,1);border:2px solid;border-radius:3px;max-width:100%;margin:4px auto;display:block}:where(.sm-choices)>:where(label:has(.sm-shape)){grid-template-rows:1fr auto;align-content:stretch}:where(.sm-choices) :where(.sm-shape){--sm-shape-size:36px;align-self:center;margin:6px auto 2px}:where(.sm-choices[data-compact]) :where(.sm-shape){--sm-shape-size:20px;margin:0}:where(.sm-choices[data-segmented]){gap:0;width:fit-content;max-width:100%;display:flex}:where(.sm-choices[data-segmented])>:where(label){min-height:36px;font-size:var(--fs-body-s,.875rem);white-space:nowrap;border-radius:0;justify-content:center;align-items:center;gap:6px;padding:4px 12px;display:inline-flex}:where(.sm-choices[data-segmented])>:where(label+label){margin-inline-start:-1px}:where(.sm-choices[data-segmented])>:where(label:first-of-type){border-start-start-radius:var(--r-pill,999px);border-end-start-radius:var(--r-pill,999px)}:where(.sm-choices[data-segmented])>:where(label:last-of-type){border-start-end-radius:var(--r-pill,999px);border-end-end-radius:var(--r-pill,999px)}:where(.sm-choices[data-segmented])>:where(label:has(input:checked)){z-index:1;position:relative}:where(.sm-choices[data-segmented]) :where(.sm-glyph){--sm-glyph-size:16px;margin:0}:where(.sm-settings){gap:var(--s-3,12px) var(--s-4,16px);grid-template-columns:repeat(auto-fill,minmax(min(100%,11rem),1fr));align-items:start;min-width:0;display:grid}:where(.sm-settings)>:where(.sm-field){grid-template-columns:minmax(0,1fr);gap:4px}:where(.sm-settings)>:where(.sm-field:not(:has(textarea,.sm-choices,.sm-gallery,.sm-list))){--sm-control:6rem;align-items:center;gap:4px var(--s-2,8px);flex-wrap:wrap;display:flex}:where(.sm-settings)>:where(.sm-choices)>:where(legend),:where(.sm-settings) :where(.sm-label){font-size:max(12px,var(--fs-caption,.8125rem))}@container (width<=519px){:where(.sm-choices[data-compact],.sm-choices[data-segmented]){scrollbar-width:none;flex-wrap:nowrap;width:auto;display:flex;overflow-x:auto}:where(.sm-choices[data-compact])>:where(label),:where(.sm-choices[data-segmented])>:where(label){flex:none}}:where(.sm-list){border:1px solid var(--border-tok);border-radius:var(--r-3,8px);background:var(--bg-elev-1);min-width:0;margin:0;padding:0;list-style:none;display:grid;overflow:hidden}:where(.sm-list)>:where(li){align-items:center;gap:var(--s-2,8px);min-width:0;min-height:40px;padding:4px var(--s-2,8px);border-bottom:1px solid var(--divider);display:flex}:where(.sm-list)>:where(li:last-child){border-bottom:0}:where(.sm-list)>:where(li:has(>details)){padding:0;display:block}:where(.sm-list)>:where(li)>:where(details)>:where(summary){align-items:center;gap:var(--s-2,8px);min-height:40px;padding:4px var(--s-2,8px);cursor:pointer;list-style:none;display:flex}:where(.sm-list)>:where(li)>:where(details)>:where(summary)::-webkit-details-marker{display:none}:where(.sm-list)>:where(li)>:where(details[open]){background:var(--bg-inset)}:where(.sm-list)>:where(li)>:where(details)>:where(:not(summary)){padding:var(--s-2,8px) var(--s-3,12px) var(--s-3,12px)}:where(.sm-list) :where(img,video,canvas,.sm-swatch){object-fit:cover;border-radius:var(--r-2,4px);background:var(--bg-inset);flex:none;width:40px;height:26px}:where(.sm-list) :where(.sm-line){white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}:where(.sm-list) :where(small){color:var(--fg-subtle);font-size:max(12px,var(--fs-caption,.8125rem));white-space:nowrap;font-variant-numeric:tabular-nums;flex:none}:where(.sm-list)>:where(.sm-list-more){display:none}@container (width<=519px){:where(.sm-list[data-peek]:not([data-open]))>:where(li:nth-child(n+4):not(.sm-list-more)){display:none}:where(.sm-list[data-peek]:not([data-open]))>:where(.sm-list-more){color:var(--fg-muted);display:flex}}:where(.sm-gallery){gap:var(--s-2,8px);grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--sm-tile,140px)),1fr));margin:0;padding:0;list-style:none;display:grid}:where(.sm-gallery)>:where(*){border-radius:var(--r-3,8px);background:var(--bg-inset);margin:0;position:relative;overflow:hidden}:where(.sm-gallery) :where(img,video,canvas){width:100%;aspect-ratio:var(--sm-tile-ratio,1);object-fit:cover;display:block}:where(.sm-gallery) :where(figcaption){font-size:max(12px,var(--fs-caption,.8125rem));color:var(--fg-muted);padding:6px 8px}:where(.sm-gallery) :where([aria-selected=true],.is-selected){box-shadow:inset 0 0 0 2px var(--fg)}:where(.sm-gallery[data-size=small]){--sm-tile:92px;--sm-tile-ratio:3/2}:where(.sm-media-off){box-sizing:border-box;width:min(100%,320px);aspect-ratio:var(--sm-photo-ratio,4/3);border:1px solid var(--border-tok);border-radius:var(--r-2,4px);background:var(--bg-inset);color:var(--fg-subtle,var(--fg-muted));vertical-align:top;place-items:center;display:inline-grid}:where(.sm-gallery) :where(.sm-media-off){width:100%;aspect-ratio:var(--sm-tile-ratio,1);border-radius:inherit;display:grid}:where(.sm-add){box-sizing:border-box;border:1px dashed var(--border-strong);border-radius:var(--r-2,4px);min-width:52px;min-height:52px;color:var(--fg-muted);font:inherit;font-size:max(12px,var(--fs-caption,.8125rem));cursor:pointer;background:0 0;align-content:center;place-items:center;gap:2px;margin:0;padding:6px;line-height:1.2;display:inline-grid}:where(.sm-add):before{content:"+";font-size:20px;line-height:1}:where(.sm-add):hover{color:var(--fg);border-style:solid}:where(.sm-add):focus-visible{outline:2px solid var(--signal);outline-offset:3px}:where(.sm-add):disabled,:where(.sm-add[aria-busy=true]){opacity:.45;cursor:default}:where(.sm-gallery) :where(.sm-add){width:100%;aspect-ratio:var(--sm-tile-ratio,1);border-radius:var(--r-3,8px);background:0 0;display:grid}:where(:root,[data-mode]){--scrim:color-mix(in srgb,var(--bg) 72%,transparent)}:where(.sm-scrim){padding:var(--s-5,24px) var(--s-3,12px) var(--s-3,12px);background:linear-gradient(to top,var(--scrim) 55%,transparent);color:var(--fg);margin:0;position:absolute;inset:auto 0 0}:where(.sm-gallery) :where(.sm-tile-tools){gap:2px;display:flex;position:absolute;top:4px;right:4px}:where(.sm-gallery) :where(.sm-tile-tools)>:where(button){--sm-glyph-size:14px;box-sizing:border-box;border-radius:var(--r-2,4px);background:var(--bg);min-width:24px;height:24px;color:var(--fg);font:inherit;cursor:pointer;border:0;place-items:center;margin:0;padding:0 4px;font-size:16px;line-height:1;display:grid}:where(.sm-gallery) :where(.sm-tile-tools)>:where(button):focus-visible{outline:2px solid var(--signal);outline-offset:1px}:where(.sm-gallery) :where(.sm-tile-tools)>:where(button:disabled,button[aria-busy=true]){opacity:.45;cursor:default}@media (pointer:coarse){:where(.sm-gallery) :where(.sm-tile-tools)>:where(button){min-width:28px;height:28px}}@media (hover:hover){:where(.sm-gallery)>:where(:not(:hover,:focus-within)) :where(.sm-tile-tools){opacity:0}}:where(.sm-status){align-items:center;gap:var(--s-2,8px);min-height:24px;font-size:var(--fs-body-s,.875rem);color:var(--fg-muted);display:inline-flex}:where(.sm-status):empty{display:none}:where(.sm-status[data-state]):before{content:"";background:currentColor;border-radius:50%;flex:none;width:14px;height:14px}:where(.sm-status[data-state=loading]):before{background:0 0;border:2px solid;border-right-color:#0000;animation:.8s linear infinite sm-spin}:where(.sm-status[data-state=success]){color:var(--attention-ok,var(--fg))}:where(.sm-status[data-state=success]):before{background:0 0;border:2px solid;border-width:0 2px 2px 0;border-radius:0;width:6px;height:11px;margin:0 4px 3px;transform:rotate(45deg)}:where(.sm-status[data-state=waiting]){color:var(--attention-warning,var(--signal))}:where(.sm-status[data-state=waiting]):before{width:8px;height:8px;margin:0 3px}:where(.sm-status[data-state=error]){color:var(--attention-error,var(--signal))}:where(.sm-status[data-state=error]):before{clip-path:polygon(50% 0,100% 100%,0 100%);border-radius:0}:where(.sm-progress){border-radius:var(--r-pill,999px);background:var(--bg-elev-2);width:100%;height:4px;accent-color:var(--fg);appearance:none;border:0;overflow:hidden}:where(.sm-progress)::-webkit-progress-bar{background:var(--bg-elev-2)}:where(.sm-progress)::-webkit-progress-value{background:var(--fg)}:where(.sm-progress)::-moz-progress-bar{background:var(--fg)}:where(.sm-more){border-top:1px solid var(--divider)}:where(.sm-more)>:where(summary){align-items:center;gap:var(--s-2,8px);min-height:var(--touch-target,44px);color:var(--fg-muted);font-size:var(--fs-body-s,.875rem);cursor:pointer;padding:0;list-style:none;display:flex}:where(.sm-more)>:where(summary)::-webkit-details-marker{display:none}:where(.sm-more)>:where(summary):after{content:"";width:7px;height:7px;transition:transform var(--dur-fast,.16s) var(--ease-out,ease);border:1.5px solid;border-width:0 1.5px 1.5px 0;margin-inline-start:2px;transform:translateY(-2px)rotate(45deg)}:where(.sm-more[open])>:where(summary):after{transform:translateY(2px)rotate(-135deg)}:where(.sm-more)>:where(summary):hover{color:var(--fg)}:where(.sm-more)>:where(:not(summary)){margin-top:var(--s-2,8px)}:where(.sm-more[open]){padding-bottom:var(--s-3,12px)}:where(.sm-label){position:relative}:where(.sm-hint){vertical-align:middle;display:inline-block}:where(:not(.sm-label))>:where(.sm-hint){position:relative}:where(.sm-hint)>:where(summary){width:var(--touch-target,44px);height:var(--touch-target,44px);min-height:0;color:var(--fg-subtle);cursor:pointer;border:0;place-items:center;margin:-8px;padding:0;list-style:none;display:inline-grid}:where(.sm-hint)>:where(summary)::-webkit-details-marker{display:none}:where(.sm-hint)>:where(summary):before{content:"i";width:15px;height:15px;font:600 10px/1 var(--font-body);border:1.5px solid;border-radius:50%;place-items:center;font-style:normal;display:grid}:where(.sm-hint:hover,.sm-hint:focus-within,.sm-hint[open])>:where(summary){color:var(--fg)}:where(.sm-hint)>:where(:not(summary)){z-index:5;inset-inline-start:0;border:1px solid var(--border-tok);border-radius:var(--r-3,8px);background:var(--bg-elev-2);width:max-content;max-width:min(280px,100cqi - 32px);color:var(--fg);font-size:var(--fs-body-s,.875rem);box-shadow:var(--shadow-1);margin:4px 0 0;padding:10px 12px;line-height:1.45;position:absolute;top:100%}:where(.sm-hint:hover,.sm-hint:focus-within)::details-content{content-visibility:visible}@media (hover:hover){:where(.sm-hint)>:where(summary){pointer-events:none}}:where(.sm-glyph){--g:var(--sm-glyph-size,20px);width:var(--g);height:var(--g);color:inherit;vertical-align:middle;flex:none;display:inline-block;position:relative}:where(.sm-glyph):before,:where(.sm-glyph):after{content:"";box-sizing:border-box;position:absolute}:where(.sm-glyph[data-glyph=play]):before{clip-path:polygon(0 0,100% 50%,0 100%);background:currentColor;inset:15% 15% 15% 25%}:where(.sm-glyph[data-glyph=pause]):before{border:solid;border-width:0 calc(var(--g)*.14);inset:18% 25%}:where(.sm-glyph[data-glyph=plus]):before,:where(.sm-glyph[data-glyph=close]):before{background:linear-gradient(currentColor,currentColor) 50%/100% 2px no-repeat,linear-gradient(currentColor,currentColor) 50%/2px 100% no-repeat;inset:15%}:where(.sm-glyph[data-glyph=close]):before{transform:rotate(45deg)}:where(.sm-glyph[data-glyph=check]):before{border:2px solid;border-width:0 2px 2px 0;width:30%;height:58%;top:12%;left:36%;transform:rotate(45deg)}:where(.sm-glyph[data-glyph=chevron]):before{border:2px solid;border-width:0 2px 2px 0;width:40%;height:40%;top:22%;left:30%;transform:rotate(45deg)}:where(.sm-glyph[data-glyph=chevron-left]):before{border:0 solid;border-width:0 0 2px 2px;width:40%;height:40%;top:30%;left:36%;transform:rotate(45deg)}:where(.sm-glyph[data-glyph=chevron-right]):before{border:2px solid;border-width:2px 2px 0 0;width:40%;height:40%;top:30%;left:24%;transform:rotate(45deg)}:where(.sm-glyph[data-glyph=upload]):before{border:2px solid;border-top:0;border-radius:0 0 3px 3px;height:35%;bottom:10%;left:10%;right:10%}:where(.sm-glyph[data-glyph=upload]):after{clip-path:polygon(50% 0,100% 45%,60% 45%,60% 100%,40% 100%,40% 45%,0 45%);background:currentColor;height:62%;top:4%;left:25%;right:25%}:where(.sm-glyph[data-glyph=image]):before{border:2px solid;border-radius:3px;inset:12%}:where(.sm-glyph[data-glyph=image]):after{clip-path:polygon(0 100%,35% 20%,60% 65%,75% 45%,100% 100%);background:currentColor;height:34%;bottom:24%;left:22%;right:22%}:where(.sm-glyph[data-glyph=image-off]):before{background:radial-gradient(circle calc(var(--g) * .09) at 35% 35%,currentColor 96%,transparent 100%);border:2px solid;border-radius:3px;inset:12%}:where(.sm-glyph[data-glyph=image-off]):after{background:currentColor;width:2px;margin-left:-1px;top:-10%;bottom:-10%;left:50%;transform:rotate(-45deg)}:where(.sm-glyph[data-glyph=video]):before{border:2px solid;border-radius:3px;inset:22% 28% 22% 8%}:where(.sm-glyph[data-glyph=video]):after{clip-path:polygon(0 35%,100% 0,100% 100%,0 65%);background:currentColor;width:20%;top:30%;bottom:30%;right:8%}:where(.sm-glyph[data-glyph=audio]):before{background:linear-gradient(currentColor,currentColor) 0 60%/2px 40% no-repeat,linear-gradient(currentColor,currentColor) 33%/2px 80% no-repeat,linear-gradient(currentColor,currentColor) 66%/2px 100% no-repeat,linear-gradient(currentColor,currentColor) 100% 60%/2px 50% no-repeat;inset:15% 12%}:where(.sm-glyph[data-glyph=text]):before{background:linear-gradient(currentColor,currentColor) 0 0/100% 2px no-repeat,linear-gradient(currentColor,currentColor) 0/100% 2px no-repeat,linear-gradient(currentColor,currentColor) 0 100%/60% 2px no-repeat;inset:20% 12%}:where(.sm-glyph[data-glyph=spark]):before{clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%);background:currentColor;inset:8%}:where(.sm-glyph[data-glyph=info]):before{border:2px solid;border-radius:50%;inset:10%}:where(.sm-glyph[data-glyph=info]):after{background:linear-gradient(currentColor,currentColor) 0 0/2px 2px no-repeat,linear-gradient(currentColor,currentColor) 0 100%/2px 60% no-repeat;width:2px;height:46%;margin-left:-1px;top:28%;left:50%}:where(.sm-glyph[data-glyph=warning]):before{clip-path:polygon(50% 0,100% 100%,0 100%);background:currentColor;inset:8% 4% 10%}:where(.sm-glyph[data-glyph=warning]):after{background:linear-gradient(var(--bg),var(--bg)) 0 0/2px 60% no-repeat,linear-gradient(var(--bg),var(--bg)) 0 100%/2px 2px no-repeat;width:2px;height:38%;margin-left:-1px;top:38%;left:50%}:where(.sm-glyph[data-glyph=spinner]):before{border:2px solid;border-right-color:#0000;border-radius:50%;animation:.8s linear infinite sm-spin;inset:12%}:where([class*=sm-][hidden]){display:none!important}:where(.sm-sr){clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes sm-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){:where(.sm-status[data-state=loading]):before,:where(.sm-glyph[data-glyph=spinner]):before{opacity:.6;border-right-color:currentColor;animation:none}:where(.sm-more)>:where(summary):after{transition:none}}.sm-quiet{border:1px solid var(--border-tok)}html,body{background:var(--bg);color:var(--fg);margin:0}.dh-page{height:100dvh;font-family:var(--font-body);flex-direction:column;display:flex;overflow:hidden}.dh-bar{align-items:center;gap:var(--s-2,8px) var(--s-3,12px);min-height:56px;padding:var(--s-2,8px) var(--s-4,16px);border-bottom:var(--bw-1,1px) solid var(--divider);flex-wrap:wrap;flex:none;display:flex}.dh-title{align-items:baseline;gap:10px;min-width:0;display:flex}.dh-title h1{font-family:var(--font-display);letter-spacing:var(--tr-display);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:24px;font-style:italic;font-weight:200;line-height:1.1;overflow:hidden}.dh-meta{color:var(--fg-muted);font-size:12px}.dh-spacer{flex:1}.dh-picker{border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-2);background:var(--bg-elev-1);max-width:min(340px,100%);height:32px;color:var(--fg-muted);align-items:center;gap:6px;padding:0 4px 0 10px;display:inline-flex}.dh-picker select{min-width:0;max-width:280px;height:30px;color:var(--fg);font:inherit;background:0 0;border:0;padding:0 4px;font-size:13px}.dh-picker select:focus{outline:none}.dh-seg{border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-2);background:var(--bg-elev-1);padding:2px;display:inline-flex}.dh-seg button{width:30px;height:26px;color:var(--fg-muted);cursor:pointer;background:0 0;border:0;border-radius:3px;place-items:center;padding:0;display:inline-grid}.dh-seg button[aria-checked=true]{background:var(--fg);color:var(--bg)}.dh-glyph{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:16px;height:16px}.dh-icon{border-radius:var(--r-2);width:32px;height:32px;color:var(--fg-muted);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:inline-grid}.dh-icon:hover,.dh-seg button:hover:not([aria-checked=true]),.dh-tabs [role=tab]:hover{background:var(--bg-elev-2);color:var(--fg)}.dh-seg button:focus-visible,.dh-icon:focus-visible,.dh-tabs [role=tab]:focus-visible,.dh-page .btn:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.dh-main{min-height:0;padding:var(--s-4,16px);flex-direction:column;flex:1;display:flex;overflow:auto}.dh-frame{flex-direction:column;flex:1;width:100%;min-width:0;margin:0 auto;display:flex;container-type:inline-size}.dh-noview{flex:1}@container (width>=760px){.dh-noview{align-content:start;column-gap:var(--s-6,24px);grid-template-rows:auto auto 1fr;grid-template-columns:minmax(260px,380px) minmax(0,1fr)}.dh-noview>:not(.dh-results){grid-column:1}.dh-noview>.dh-results{padding-top:0;padding-left:var(--s-6,24px);border-top:0;border-left:var(--bw-1,1px) solid var(--divider);grid-area:1/2/-1;align-content:start;align-self:stretch}}.dh-noview>.dh-results-empty,.dh-results-empty{place-content:center;justify-items:center;min-height:160px}.dh-results-empty p{color:var(--fg-subtle);margin:0;font-size:13px}.dh-dock{border-top:var(--bw-1,1px) solid var(--border-strong);background:var(--bg-elev-1);flex-direction:column;flex:none;max-height:75dvh;display:flex;position:relative}.dh-dock-grip{cursor:ns-resize;z-index:1;touch-action:none;height:10px;position:absolute;top:-5px;left:0;right:0}.dh-tabs{min-height:40px;padding:0 var(--s-2,8px) 0 10px;flex:none;align-items:center;gap:2px;display:flex;overflow-x:auto}.dh-tabs [role=tab]{border-radius:var(--r-2);height:28px;color:var(--fg-muted);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0 10px;font-size:13px;display:inline-flex}.dh-tabs [role=tab][aria-selected=true]{background:var(--bg);color:var(--fg);box-shadow:inset 0 0 0 var(--bw-1,1px) var(--border-tok)}.dh-alert{background:var(--attention-error);border-radius:50%;width:6px;height:6px}.dh-tabs-status{padding:0 var(--s-2,8px);color:var(--fg-muted);white-space:nowrap;margin-left:auto;font-size:12px}.dh-fold svg{transform:rotate(-90deg)}.dh-dock[data-open=true] .dh-fold svg{transform:rotate(90deg)}.dh-tabpanel{min-height:0;padding:10px var(--s-4,16px) 14px;border-top:var(--bw-1,1px) solid var(--divider);flex:1;overflow:auto}.dh-console ol{border-top:var(--bw-1,1px) solid var(--divider);margin:0;padding:0;list-style:none}.dh-calls{margin:0;padding:0;font-size:13px;list-style:none;display:grid}.dh-calls li{border-bottom:var(--bw-1,1px) solid var(--divider);flex-wrap:wrap;align-items:baseline;gap:4px 10px;padding:6px 0;display:flex}.dh-calls span{color:var(--fg-muted)}.dh-calls small{color:var(--fg-subtle);margin-left:auto}@media (width<=700px){.dh-bar{padding:var(--s-2,8px) 12px}.dh-title h1{font-size:20px}.dh-main{padding:12px}.dh-tabs-status{display:none}}.dh-problem{margin:var(--s-4,16px) var(--s-6,24px) 0;padding:var(--s-3,12px) var(--s-4,16px);border:var(--bw-1,1px) solid var(--border-strong);border-radius:var(--r-2);background:var(--bg-elev-1);white-space:pre-wrap;overflow-wrap:anywhere}.dh-noview{box-sizing:border-box;gap:var(--s-4,16px);min-height:100%;padding:var(--s-6,24px);border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-3);justify-items:start;display:grid}.dh-noview p{color:var(--fg-muted);margin:0}.dh-form{gap:var(--s-2,8px);width:100%;display:grid}.dh-row{align-items:center;gap:var(--s-3,12px);min-height:36px;display:flex}.dh-row label{min-width:96px;color:var(--fg-muted);font-size:13px}.dh-row input[type=text],.dh-row input[type=number]{min-width:0;height:32px;padding:0 var(--s-2,8px);border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-2);background:var(--bg-elev-1);color:var(--fg);font:inherit;flex:1;font-size:13px}.dh-media{align-items:center;gap:var(--s-3,12px);min-height:36px;display:flex}.dh-media-label{min-width:96px;color:var(--fg-muted);font-size:13px}.dh-media-tile{align-items:center;gap:var(--s-2,8px);max-width:100%;min-height:32px;padding:0 var(--s-3,12px);border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-2);background:var(--bg-elev-1);font-size:13px;display:inline-flex}.dh-media-tile span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dh-results{gap:var(--s-3,12px);width:100%;padding-top:var(--s-4,16px);border-top:var(--bw-1,1px) solid var(--divider);display:grid}.dh-results h2{margin:0;font-size:14px;font-weight:600}.dh-section-head{justify-content:space-between;align-items:center;gap:var(--s-2,8px);margin-bottom:var(--s-2,8px);display:flex}.dh-section-head h2{letter-spacing:var(--tr-body);margin:0;font-size:13px;font-weight:600}.dh-input textarea{box-sizing:border-box;width:100%;padding:var(--s-3,12px);border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-2);background:var(--bg-elev-1);color:var(--fg);font-family:var(--font-mono);resize:vertical;font-size:12px;line-height:1.5}.dh-input p,.dh-muted{margin:var(--s-2,8px) 0 0;color:var(--fg-muted);font-size:13px}.dh-json{max-height:240px;padding:var(--s-3,12px);border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-2);background:var(--bg-elev-1);font-family:var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:12px;line-height:1.5;overflow:auto}.dh-console{flex-direction:column;min-height:0;display:flex}.dh-entry{gap:var(--s-2,8px);padding:var(--s-2,8px) 0;border-bottom:var(--bw-1,1px) solid var(--divider);grid-template-columns:auto auto minmax(0,1fr);align-items:baseline;font-size:12px;display:grid}.dh-entry time{color:var(--fg-muted);font-variant-numeric:tabular-nums}.dh-kind{color:var(--fg-muted);font-size:11px}.dh-entry pre{font-family:var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.dh-error .dh-kind,.dh-error pre{color:var(--fg);font-weight:600}.dh-stand-in .dh-kind{color:var(--signal)}.dh-row select{min-width:0;height:32px;padding:0 var(--s-2,8px);border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-2);background:var(--bg-elev-1);color:var(--fg);font:inherit;flex:1}.dh-slider{align-items:center;gap:var(--s-2,8px);flex:1;min-width:0;display:flex}.dh-slider input{flex:1;min-width:0}.dh-slider output{text-align:right;min-width:2.5em;color:var(--fg-muted);font-size:13px}.dh-run-problem{padding:var(--s-2,8px) var(--s-3,12px);border:var(--bw-1,1px) solid var(--border-strong);border-radius:var(--r-2);background:var(--bg-elev-1);color:var(--fg);margin:0}.dh-result-media{gap:var(--s-2,8px);justify-items:center;width:100%;margin:0;display:grid}.dh-result-media img,.dh-result-media .sm-player{object-fit:contain;border-radius:var(--r-3,8px);background:#000;width:auto;min-width:min(100%,320px);max-width:100%;height:auto;max-height:min(62dvh,640px);display:block}.dh-result-media .sm-player>video{aspect-ratio:var(--dh-shape,auto)}.dh-result-media audio{width:100%}.dh-result-media figcaption{max-width:100%;color:var(--fg-muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.dh-results .sm-data-list:has(>li>.dh-result-media){gap:var(--s-4,16px);grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));margin:0;padding:0;list-style:none;display:grid}.dh-results .sm-data-list:has(>li>.dh-result-media) .dh-result-media img{min-width:min(100%,200px);max-height:min(56dvh,560px)}.dh-results .sm-data-list:has(>li>.dh-result-media) .dh-result-media .sm-player{min-width:min(100%,200px);max-height:min(56dvh,560px)}.dh-media-tile small{margin-left:var(--s-1,4px);border:var(--bw-1,1px) solid var(--border-tok);color:var(--fg-muted);border-radius:999px;padding:1px 6px;font-size:11px}.dh-media-pick{cursor:pointer;font:inherit;color:var(--fg)}.dh-media-pick:hover:not(:disabled){border-color:var(--border-strong)}.dh-media-problem{color:var(--attention-error);font-size:12px}.dh-media-empty{flex-wrap:wrap;align-items:flex-start}.dh-media-drop{padding:var(--s-5,20px) var(--s-4,16px);border:1.5px dashed var(--border-strong);border-radius:var(--r-3);background:var(--bg-elev-1);text-align:center;flex:240px;justify-items:center;gap:6px;display:grid}.dh-media-drop[data-over]{border-style:solid;border-color:var(--fg);background:var(--hover-wash)}.dh-media-drop strong{color:var(--fg);font-size:14px;font-weight:600}.dh-media-drop span{color:var(--fg-muted);font-size:13px}.dh-media-drop small{color:var(--fg-muted);font-size:12px}.dh-media-drop .dh-media-pick{margin-top:var(--s-1,4px)}.dh-switch{border-radius:var(--r-2);height:28px;color:var(--fg-muted);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:0 6px;font-size:13px;display:inline-flex}.dh-switch:hover{color:var(--fg)}.dh-switch:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.dh-switch-track{background:var(--bg-elev-2);width:32px;height:18px;box-shadow:inset 0 0 0 var(--bw-1,1px) var(--border-strong);border-radius:999px;transition:background .15s;position:relative}.dh-switch-knob{background:var(--fg-muted);border-radius:50%;width:14px;height:14px;transition:transform .15s,background .15s;position:absolute;top:2px;left:2px}.dh-switch[aria-checked=true] .dh-switch-track{background:var(--fg)}.dh-switch[aria-checked=true] .dh-switch-knob{background:var(--bg);transform:translate(14px)}.dh-media-tiles{align-items:center;gap:var(--s-2,8px);flex-wrap:wrap;flex:1;min-width:0;display:flex}.dh-row:has(>.dh-text){align-items:flex-start}.dh-row:has(>.dh-text)>label{padding-top:7px}.dh-text{box-sizing:border-box;min-width:0;padding:6px var(--s-2,8px);border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-2);background:var(--bg-elev-1);color:var(--fg);font:inherit;resize:vertical;field-sizing:content;flex:1;min-height:calc(3lh + 14px);max-height:24em;font-size:13px;line-height:1.5;overflow-y:auto}.dh-thumb{border-radius:var(--r-2);background:var(--bg-elev-2);flex:none;width:52px;height:52px;display:block;position:relative;overflow:hidden}.dh-thumb>img,.dh-thumb>video{object-fit:cover;width:100%;height:100%;display:block}.dh-thumb-play{border-radius:var(--r-1,3px);background:var(--fg);width:22px;height:22px;color:var(--bg);cursor:pointer;border:0;flex:none;place-items:center;padding:0;display:inline-grid}.dh-thumb>.dh-thumb-play{background:var(--cream-100,#f7f0db);color:var(--ink-600,#0a0a0a);opacity:0;transition:opacity var(--dur-fast,.16s);position:absolute;bottom:3px;right:3px}.dh-thumb:is(:hover,:focus-within)>.dh-thumb-play{opacity:1}.dh-thumb-play:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.dh-media-sound{padding-left:5px}.dh-media-note{border:var(--bw-1,1px) solid var(--border-tok);color:var(--fg-muted);border-radius:999px;padding:1px 6px;font-size:11px}.dh-date{margin:0;font-size:15px}.dh-noview.dh-focus{width:100%;max-width:720px;padding-block:var(--s-6,24px);border:0;grid-template-rows:none;grid-template-columns:minmax(0,1fr);justify-items:stretch;margin-inline:auto;display:grid}.dh-noview.dh-focus>*{grid-column:1}.dh-noview.dh-focus>.dh-results{border-left:0;grid-row:auto;padding-left:0}.dh-intro{gap:var(--s-2,8px);text-align:center;margin-bottom:var(--s-2,8px);justify-items:center;display:grid}.dh-intro h2{font:italic 200 clamp(28px,4.2vw,42px)/1.1 var(--font-display);letter-spacing:-.02em;color:var(--fg);margin:0}.dh-noview .dh-intro p{max-width:56ch;color:var(--fg-muted);font-size:var(--fs-body,1rem);line-height:1.5}.dh-noview.dh-focus>.btn-primary{justify-self:center;min-width:min(100%,240px)}.sm-trace-loader{--trace-ink:var(--fg);--trace-track:var(--ink-400);flex:none;display:block;overflow:visible}[data-mode=light] .sm-trace-loader{--trace-track:var(--cream-300)}.sm-trace-track{stroke:var(--trace-track)}.sm-trace-dash{stroke:var(--trace-ink)}.sm-trace-head{fill:var(--trace-ink)}.sm-loading-screen{opacity:0;flex:1;justify-content:center;align-items:center;width:100%;min-height:min(60vh,480px);animation:.2s ease-out .25s forwards sm-loading-in;display:flex}.sm-loading-screen.is-fill{z-index:40;background:var(--bg);min-height:0;position:fixed;inset:0}.sm-loading-trace{width:clamp(72px,14vmin,128px);height:auto}@keyframes sm-loading-in{to{opacity:1}}@media (prefers-reduced-motion:reduce){.sm-loading-screen{opacity:1;animation:none}}.sm-loading-screen .sm-sr{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.block-zoom-control{z-index:3;border:1px solid var(--border);background:var(--bg);opacity:0;border-radius:999px;align-items:center;gap:2px;padding:2px;transition:opacity .15s;display:flex;position:absolute;top:8px;right:8px;box-shadow:0 4px 14px #00000014}.bs-sandbox-ui:hover>.block-zoom-control,.block-zoom-control:focus-within{opacity:1}.block-zoom-control button{min-width:28px;height:28px;color:var(--fg);font:500 12px var(--font-body);cursor:pointer;background:0 0;border:0;border-radius:999px;place-items:center;padding:0 8px;display:inline-grid}.block-zoom-control button:hover:not(:disabled){background:var(--hover-wash)}.block-zoom-control button:disabled{opacity:.4;cursor:default}.block-zoom-control button:focus-visible{outline:2px solid var(--signal);outline-offset:1px}.block-zoom-control .block-zoom-mode[aria-pressed=true]{color:var(--fg-muted)}@media (width<=600px),(hover:none){.block-zoom-control{display:none}}@media (prefers-reduced-motion:reduce){.block-zoom-control{transition:none}}.bd-table,.bd-document,.bd-chart,.bd-code-view,.bd-files{min-width:0;color:var(--fg);font:14px/1.6 var(--font-body);margin:0}.bd-table-scroll{border:1px solid var(--border);border-radius:var(--r-3);max-width:100%;max-height:480px;overflow:auto}.bd-table-scroll:focus-visible,.bd-code:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.bd-table table{border-collapse:collapse;width:max-content;min-width:100%;font-size:13px}.bd-table th,.bd-table td{padding:var(--s-2) var(--s-3);text-align:left;vertical-align:top;border-bottom:1px solid var(--border);overflow-wrap:break-word;min-width:64px;max-width:320px}.bd-table th{background:var(--bg-secondary);white-space:nowrap;font-weight:600;position:sticky;top:0}.bd-table td.bd-number{text-align:right;font-variant-numeric:tabular-nums}.bd-table tbody tr:last-child td{border-bottom:0}.bd-bar{align-items:center;gap:var(--s-2);margin-top:var(--s-3);color:var(--fg-muted);flex-wrap:wrap;font-size:12px;display:flex}.bd-bar>span{margin-right:auto}.bd-document{gap:var(--s-3);overflow-wrap:anywhere;display:grid}.bd-document>*{margin:0}.bd-document-title{font:200 italic 22px/1.2 var(--font-display);letter-spacing:var(--tr-display)}.bd-document h4,.bd-document h5,.bd-document h6{font-size:15px;font-weight:600}.bd-document ul,.bd-document ol{padding-left:var(--s-5)}.bd-document blockquote{padding-left:var(--s-3);border-left:2px solid var(--border-strong);color:var(--fg-muted)}.bd-document code,.bd-code{font:12px/1.6 var(--font-mono)}.bd-plain{white-space:pre-wrap}.bd-code{padding:var(--s-3);white-space:pre;border:1px solid var(--border);border-radius:var(--r-3);background:var(--bg-secondary);max-height:420px;margin:0;overflow:auto}.bd-chart svg{width:100%;height:auto;display:block}.bd-chart figcaption{color:var(--fg-muted);margin-top:var(--s-2);font-size:12px}.bd-grid{stroke:var(--border);stroke-width:1px}.bd-axis{fill:var(--fg-muted);font:11px var(--font-body)}.bd-mark{fill:var(--fg);opacity:.82}.bd-line{stroke:var(--fg);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.bd-files{gap:var(--s-2);padding:0;list-style:none;display:grid}.bd-file{align-items:center;gap:var(--s-2) var(--s-3);padding:var(--s-3);border:1px solid var(--border);border-radius:var(--r-3);flex-wrap:wrap;display:flex}.bd-file-name{overflow-wrap:anywhere;font-weight:600}.bd-file>.btn{margin-left:auto}.bd-muted{color:var(--fg-muted);font-size:12px}.bd-color{align-items:center;gap:var(--s-2);font:13px var(--font-mono);display:inline-flex}.bd-swatch{border-radius:var(--r-2);border:1px solid var(--border-strong);width:20px;height:20px}.bd-link{color:var(--fg);overflow-wrap:anywhere}.bd-player,.bd-input{gap:var(--s-3);display:grid}.bd-color-row{gap:var(--s-2);align-items:center;display:flex}.bd-color-row input[type=color]{border:1px solid var(--border);border-radius:var(--r-3);background:var(--bg);width:44px;min-width:44px;height:44px;padding:2px}.bd-richtext textarea{font:13px/1.6 var(--font-mono)}.bd-table-input th{white-space:nowrap}.bd-table-input th>span{margin-right:var(--s-1)}.bd-table-input td{padding:var(--s-1)}.bd-table-input td input{border-radius:var(--r-2);width:100%;min-width:96px;min-height:36px;color:var(--fg);padding:var(--s-1) var(--s-2);font:inherit;background:0 0;border:1px solid #0000}.bd-table-input td input:focus{border-color:var(--border-strong);background:var(--bg)}.bd-table-input .bd-bar input{border:1px solid var(--border);border-radius:var(--r-3);background:var(--bg);min-height:40px;color:var(--fg);padding:var(--s-2) var(--s-3);font:inherit;flex:160px}.bd-chart svg{max-width:960px}.bd-richtext .bd-bar select{width:auto;min-height:40px}.sm-data-record{grid-template-columns:minmax(72px,max-content) minmax(0,1fr);gap:4px 16px;margin:0;display:grid}.sm-data-record dt{color:var(--text-muted)}.sm-data-record dd{overflow-wrap:anywhere;min-width:0;margin:0}.sm-data-list{gap:6px;margin:0;padding-left:20px;display:grid}.sm-data-list:has(>li>.sm-data-record){gap:0;padding-left:0;list-style:none}.sm-data-list:has(>li>.sm-data-record)>li{padding:10px 0}.sm-data-list:has(>li>.sm-data-record)>li+li{border-top:1px solid var(--border)}.sm-data-none{color:var(--text-muted)}@media (width<=600px){.sm-data-record{grid-template-columns:minmax(0,1fr);gap:0}.sm-data-record dd{margin-bottom:6px}.sm-data-record dd>.sm-data-record{border-left:1px solid var(--border);padding-left:12px}}:where(.sm-player,.sm-viewer,.sm-expand-btn){--sm-cream:var(--cream-100,#f7f0db);--sm-ink:var(--ink-600,#0a0a0a);--sm-gold:var(--signal,#e8b23a);--sm-out:var(--dur-fast,.16s);--sm-in:var(--dur-base,.24s);--sm-ease:var(--ease-out,cubic-bezier(.22,1,.36,1));--sm-spring:var(--ease-spring,cubic-bezier(.34,1.56,.64,1));--sm-display:var(--font-display,"Balgin","Hanken Grotesk",ui-sans-serif,sans-serif)}.sm-player{vertical-align:top;box-sizing:border-box;background:var(--sm-ink);max-width:100%;color:var(--sm-cream);line-height:1;font-family:var(--font-body,"Hanken Grotesk",ui-sans-serif,system-ui,sans-serif);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;outline:none;display:inline-block;position:relative;overflow:hidden}.sm-player:focus-visible{outline:2px solid var(--sm-gold);outline-offset:2px}.sm-player>video{width:auto;max-width:100%;height:auto;max-height:inherit;object-fit:contain;background:0 0;margin:0 auto;display:block}:is(.sm-player[data-fill]>video,.sm-player:fullscreen>video,.sm-player[data-stage]>video){width:100%;max-width:none;height:100%;max-height:none}.sm-player[data-fill]{display:block}.sm-player[data-idle]{cursor:none}:where(.sm-stage)>.sm-player{border-radius:var(--r-2,4px);max-width:100%;max-height:100%}.sm-player-ui{z-index:1;pointer-events:none;position:absolute;inset:0}.sm-player-shade{background:linear-gradient(#0a0a0a00,#0a0a0a8c);height:120px;max-height:100%;position:absolute;bottom:0;left:0;right:0}.sm-player-bar{pointer-events:auto;align-items:center;gap:10px;display:flex;position:absolute;bottom:12px;left:12px;right:12px}.sm-player-shade,.sm-player-bar{transition:opacity var(--sm-in) var(--sm-ease)}.sm-player[data-away] .sm-player-shade,.sm-player[data-away] .sm-player-bar,.sm-player[data-idle] .sm-player-shade,.sm-player[data-idle] .sm-player-bar{opacity:0;pointer-events:none;transition-duration:var(--sm-out)}:where(.sm-player,.sm-viewer) .sm-media-btn{appearance:none;box-sizing:border-box;border-radius:var(--r-3,8px);background:var(--sm-cream);width:44px;min-width:0;height:44px;min-height:0;color:var(--sm-ink);box-shadow:none;font:inherit;cursor:pointer;transition:transform var(--sm-out) var(--sm-spring);border:0;flex:none;place-items:center;margin:0;padding:0;line-height:1;text-decoration:none;display:grid}:where(.sm-player,.sm-viewer) .sm-media-btn svg{width:20px;height:20px;display:block}:is(.sm-player,.sm-viewer) .sm-media-btn.sm-media-btn.sm-media-btn-text{width:auto;padding:0 14px;font-size:14px;font-weight:600}@media (hover:hover){:where(.sm-player,.sm-viewer) .sm-media-btn:hover{background:var(--sm-cream);color:var(--sm-ink);transform:translateY(-1px)}}:where(.sm-player,.sm-viewer) .sm-media-btn:active{transform:scale(.94)}:is(.sm-player,.sm-viewer) .sm-media-btn.sm-media-btn:focus-visible{outline:2px solid var(--sm-gold);outline-offset:2px;border-radius:var(--r-3,8px)}:is(.sm-player,.sm-viewer) .sm-media-btn.sm-media-btn{border-radius:var(--r-3,8px);background:var(--sm-cream);min-width:0;min-height:0;color:var(--sm-ink);box-shadow:none;font:inherit;cursor:pointer;border:0;padding:0;line-height:1;text-decoration:none}:is(.sm-player,.sm-viewer) .sm-media-btn.sm-media-btn:hover{background:var(--sm-cream);color:var(--sm-ink)}.sm-player .sm-player-bar [data-control=fullscreen]{margin-left:auto}.sm-player-sound{flex:none;display:flex;position:relative}.sm-player-volume{opacity:0;pointer-events:none;transition:opacity var(--sm-out) var(--sm-ease),transform var(--sm-out) var(--sm-ease);padding-bottom:10px;position:absolute;bottom:100%;left:50%;transform:translate(-50%,6px)}.sm-player-sound:hover .sm-player-volume,.sm-player-sound:focus-within .sm-player-volume,.sm-player-volume[data-drag]{opacity:1;pointer-events:auto;transition-duration:var(--sm-in);transform:translate(-50%)}.sm-player-volume-rail{box-sizing:border-box;border-radius:var(--r-3,8px);cursor:pointer;touch-action:none;background:#0a0a0aa3;outline:none;width:44px;height:128px;padding:14px 0;position:relative}.sm-player-volume-rail:focus-visible{outline:2px solid var(--sm-gold);outline-offset:2px}.sm-player-volume-track{background:#f7f0db47;border-radius:3px;width:6px;height:100%;margin:0 auto;position:relative;overflow:visible}.sm-player-volume-level{background:var(--sm-cream);transform-origin:bottom;border-radius:3px;position:absolute;inset:0;transform:scaleY(1)}.sm-player-volume-head{pointer-events:none;position:absolute;inset:0;transform:translateY(-100%)}.sm-player-volume-knob{background:var(--sm-cream);border-radius:4px;width:16px;height:16px;margin:0 0 -8px -8px;position:absolute;bottom:0;left:50%;box-shadow:0 0 0 3px #0a0a0a59}.sm-player-volume[data-drag] .sm-player-volume-head{will-change:transform}.sm-player[data-volume-room=short] .sm-player-volume-rail{height:84px;padding:12px 0}.sm-player[data-volume-room=none] .sm-player-volume{display:none}@media (hover:none){.sm-player-volume{display:none}}.sm-player-rail{cursor:pointer;touch-action:none;outline:none;flex:auto;min-width:48px;height:24px;position:relative}.sm-player-rail:focus-visible{outline:2px solid var(--sm-gold);outline-offset:2px;border-radius:var(--r-2,4px)}.sm-player-track{height:6px;transition:transform var(--sm-out) var(--sm-ease);background:#f7f0db47;border-radius:3px;margin-top:-3px;position:absolute;top:50%;left:0;right:0;overflow:hidden}.sm-player-buffered,.sm-player-played{transform-origin:0;position:absolute;inset:0;transform:scaleX(0)}.sm-player-buffered{background:#f7f0db2e}.sm-player-played{background:var(--sm-cream)}.sm-player-head{pointer-events:none;position:absolute;inset:0;transform:translate(0)}.sm-player[data-playing] .sm-player-head,.sm-player[data-playing] .sm-player-played,.sm-player-rail[data-drag] .sm-player-head{will-change:transform}.sm-player-knob{background:var(--sm-cream);width:16px;height:16px;transition:transform var(--sm-out) var(--sm-spring);border-radius:4px;margin:-8px 0 0 -8px;position:absolute;top:50%;left:0;transform:scale(0);box-shadow:0 0 0 3px #0a0a0a59}.sm-player-rail:hover .sm-player-knob,.sm-player-rail[data-drag] .sm-player-knob,.sm-player-rail:focus-visible .sm-player-knob{transform:scale(1)}.sm-player-rail:hover .sm-player-track,.sm-player-rail[data-drag] .sm-player-track{transform:scaleY(1.34)}.sm-player-tip{border-radius:var(--r-2,4px);background:var(--sm-ink);color:var(--sm-cream);font-variant-numeric:tabular-nums;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--sm-out) var(--sm-ease);border:1px solid #f7f0db24;padding:3px 7px;font-size:12px;font-weight:500;position:absolute;bottom:calc(100% + 4px);left:0}.sm-player-rail:hover .sm-player-tip,.sm-player-rail[data-drag] .sm-player-tip{opacity:1}.sm-player-time{font-family:var(--sm-display);letter-spacing:-.01em;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--sm-cream);text-shadow:0 1px 8px #0a0a0a99;flex:none;font-size:22px;font-style:italic;font-weight:200;line-height:1}:where(.sm-player,.sm-viewer) .sm-media-of{opacity:.55}.sm-player[data-size] .sm-player-bar{gap:8px}.sm-player[data-size] .sm-player-total{display:none}.sm-player[data-size] .sm-player-time{font-size:18px}.sm-player:is([data-size=compact],[data-size=tiny],[data-size=micro]) .sm-player-time,.sm-player:is([data-size=tiny],[data-size=micro]) [data-control=volume],.sm-player[data-size=micro] .sm-player-bar>:not([data-control=play]):not([data-control=fullscreen]){display:none}@media (hover:none){.sm-player-rail{height:44px}}.sm-player:fullscreen{border-radius:0;width:100%;max-width:none;height:100%;max-height:none}.sm-player[data-stage=theater]{z-index:2147483000;width:auto;max-width:none;height:auto;max-height:none;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);color:var(--sm-cream);background:var(--sm-ink);border:0;border-radius:0;margin:0;display:block;position:fixed;inset:0;overflow:hidden}.sm-player[data-stage=theater]::backdrop{background:var(--sm-ink)}:is(.sm-player:fullscreen .sm-player-bar,.sm-player[data-stage] .sm-player-bar){left:max(12px,env(safe-area-inset-left,0px));right:max(12px,env(safe-area-inset-right,0px));bottom:max(12px,env(safe-area-inset-bottom,0px))}.sm-expand-host{position:relative}.sm-expand-btn{z-index:2;box-sizing:border-box;border-radius:var(--r-3,8px);background:var(--sm-cream);width:44px;min-width:0;height:44px;min-height:0;color:var(--sm-ink);box-shadow:none;cursor:pointer;opacity:0;pointer-events:none;transition:opacity var(--sm-out) var(--sm-ease),transform var(--sm-out) var(--sm-spring);border:0;place-items:center;margin:0;padding:0;line-height:1;display:grid;position:absolute;bottom:12px;right:12px}.sm-expand-btn svg{width:20px;height:20px;display:block}.sm-expand-btn[data-size=small]{border-radius:6px;width:32px;height:32px;bottom:6px;right:6px}.sm-expand-btn[data-size=small] svg{width:16px;height:16px}.sm-expand-btn[data-size=small]:before{content:"";position:absolute;inset:-6px}@media (hover:hover){:hover>.sm-expand-btn{opacity:1;pointer-events:auto}.sm-expand-btn:hover{background:var(--sm-cream);color:var(--sm-ink);transform:translateY(-1px)}}.sm-expand-btn:focus-visible,.sm-expand-btn[data-show]{opacity:1;pointer-events:auto}.sm-expand-btn:active{transform:scale(.94)}.sm-expand-btn.sm-expand-btn.sm-expand-btn:focus-visible{outline:2px solid var(--sm-gold);outline-offset:2px}.sm-expand-btn.sm-expand-btn.sm-expand-btn{border-radius:var(--r-3,8px);background:var(--sm-cream);min-width:0;min-height:0;color:var(--sm-ink);box-shadow:none;font:inherit;cursor:pointer;border:0;padding:0;line-height:1}.sm-expand-btn.sm-expand-btn.sm-expand-btn[data-size=small]{border-radius:6px}.sm-expand-btn.sm-expand-btn.sm-expand-btn:hover{background:var(--sm-cream);color:var(--sm-ink)}.sm-viewer{box-sizing:border-box;background:var(--sm-ink);width:100%;max-width:none;height:100%;max-height:none;color:var(--sm-cream);font-family:var(--font-body,"Hanken Grotesk",ui-sans-serif,system-ui,sans-serif);border:0;margin:0;padding:0;position:fixed;inset:0;overflow:hidden}.sm-viewer[open]{animation:sm-viewer-in var(--sm-in) var(--sm-ease) both;grid-template-rows:minmax(0,1fr) auto;display:grid}.sm-viewer::backdrop{background:var(--ink-600,#0a0a0a)}@keyframes sm-viewer-in{0%{opacity:0}}.sm-viewer [hidden],.sm-viewer .sm-media-btn[hidden]{display:none}.sm-viewer-stage{min-width:0;min-height:0;padding:max(12px,env(safe-area-inset-top,0px)) max(12px,env(safe-area-inset-right,0px)) 12px max(12px,env(safe-area-inset-left,0px));grid-template:minmax(0,1fr)/minmax(0,1fr);place-items:center;display:grid;position:relative;overflow:hidden}.sm-viewer-media{object-fit:contain;width:100%;min-width:0;height:100%;min-height:0;display:block}.sm-viewer-stage>.sm-player{width:100%;max-width:100%;height:100%;max-height:100%}.sm-viewer-off,.sm-player-off{box-sizing:border-box;border:1px solid var(--border-tok,#58534d);border-radius:var(--r-2,4px);background:var(--bg-inset,#171716);color:var(--fg-muted,#bbb2a7);place-items:center;display:inline-grid}.sm-viewer-off{aspect-ratio:4/3;width:min(60vw,320px)}.sm-player-off{aspect-ratio:16/9;vertical-align:top;width:min(100%,320px);max-width:100%}.sm-viewer-off svg,.sm-player-off svg{width:24px;height:24px;display:block}.sm-viewer-top{top:max(12px,env(safe-area-inset-top,0px));right:max(12px,env(safe-area-inset-right,0px));z-index:2;gap:10px;display:flex;position:absolute}.sm-viewer .sm-viewer-nav{z-index:2;margin-top:-22px;position:absolute;top:50%}.sm-viewer .sm-viewer-previous{left:max(12px,env(safe-area-inset-left,0px))}.sm-viewer .sm-viewer-next{right:max(12px,env(safe-area-inset-right,0px))}.sm-viewer-foot{min-width:0;padding:12px max(12px,env(safe-area-inset-right,0px)) max(14px,env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px));justify-content:center;align-items:baseline;gap:12px;display:flex}.sm-viewer-count{font-family:var(--sm-display);letter-spacing:-.01em;font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;font-size:24px;font-style:italic;font-weight:200;line-height:1}.sm-viewer-name{min-width:0;color:var(--fg-muted,#bbb2a7);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}@media (prefers-reduced-motion:reduce){.sm-player *,.sm-viewer,.sm-viewer *,.sm-expand-btn{transition:none!important;animation:none!important}}.sm-when-pickers{flex-wrap:wrap;align-items:center;gap:4px;min-width:0;display:inline-flex}.sm-when-pick{min-width:0;display:inline-flex;position:relative}.sm-when-button{border:1px solid var(--border-tok);border-radius:var(--r-3);background:var(--bg-elev-1);height:36px;color:var(--fg);font:inherit;font-family:var(--font-body);font-variant-numeric:tabular-nums;white-space:nowrap;cursor:pointer;align-items:center;gap:6px;padding:0 8px 0 10px;font-size:13.5px;display:inline-flex}.sm-when-button svg{color:var(--fg-muted);flex:none}.sm-when-button svg:last-child{color:var(--fg-subtle)}.sm-when-button[aria-expanded=true]{border-color:var(--fg);box-shadow:inset 0 0 0 1px var(--fg)}.sm-when-button:disabled{cursor:default;opacity:.55}.sm-when-pop{z-index:40;border:1px solid var(--border-strong);border-radius:var(--r-3);background:var(--bg-elev-1);color:var(--fg);box-shadow:var(--shadow-lg);margin:0;padding:10px;position:absolute;top:calc(100% + 4px);left:0}.sm-when-calendar{box-sizing:border-box;gap:6px;width:260px;max-width:calc(100vw - 32px);display:grid}.sm-when-cal-head{justify-content:space-between;align-items:center;font-size:14px;display:flex}.sm-when-cal-head b{font-weight:600}.sm-when-cal-nav{gap:2px;display:inline-flex}.sm-when-cal-nav button{border-radius:var(--r-2);width:30px;height:30px;color:var(--fg-muted);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid}.sm-when-cal-nav button:hover:not(:disabled){background:var(--hover-wash);color:var(--fg)}.sm-when-cal-nav button:disabled{opacity:.35;cursor:default}.sm-when-cal-grid{text-align:center;font-variant-numeric:tabular-nums;grid-template-columns:repeat(7,1fr);gap:2px;font-size:13px;display:grid}.sm-when-cal-grid i{color:var(--fg-subtle);padding:2px 0;font-size:12px;font-style:normal}.sm-when-cal-grid button{height:30px;color:var(--fg);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;padding:0;display:grid}.sm-when-cal-grid button:hover:not(:disabled):not([aria-pressed=true]){background:var(--hover-wash)}.sm-when-cal-grid button:disabled{color:var(--fg-subtle);cursor:default}.sm-when-cal-grid button[aria-current=date]{box-shadow:inset 0 0 0 1px var(--border-strong)}.sm-when-cal-grid button[aria-pressed=true]{background:var(--fg);color:var(--bg);font-weight:600}.sm-when-clear{justify-self:start;min-height:32px;padding:4px 12px}.sm-when-times{box-sizing:border-box;outline:none;gap:1px;width:150px;max-height:240px;padding:4px;list-style:none;display:grid;overflow-y:auto}.sm-when-times li{border-radius:var(--r-2);font-variant-numeric:tabular-nums;cursor:pointer;padding:6px 10px;font-size:14px}.sm-when-times li[data-active=true]{background:var(--hover-wash)}.sm-when-times li[aria-selected=true]{font-weight:600}.sm-when-times li[aria-disabled=true]{color:var(--fg-subtle);cursor:default}.sm-when-times:focus-visible li[data-active=true]{box-shadow:inset 0 0 0 1px var(--fg)}.sm-result-place{align-content:center;justify-items:center;gap:var(--s-3,12px);width:100%;min-height:inherit;padding:var(--s-4,16px);box-sizing:border-box;color:var(--fg-subtle);display:grid}.sm-result-place>p{font-size:var(--fs-body-s,.875rem);color:var(--fg-muted);margin:0}.sm-result-place[data-kind=text]{align-content:start;justify-items:stretch}.sm-result-place[data-kind=text]>p{justify-self:center}.sm-result-lines{gap:10px;width:100%;display:grid}.sm-result-lines>i{background:color-mix(in srgb,var(--fg) 9%,transparent);border-radius:5px;height:9px;display:block}.sm-result-lines>i:nth-child(3n+1){width:92%}.sm-result-lines>i:nth-child(3n+2){width:78%}.sm-result-lines>i:nth-child(3n){width:58%}.sm-result-frame{box-sizing:border-box;border:1.5px dashed color-mix(in srgb,var(--fg) 18%,transparent);border-radius:var(--r-3,8px);background:color-mix(in srgb,var(--fg) 4%,transparent);place-items:center;max-width:100%;height:min(56vh,520px);display:grid}.sm-result-frame>.sm-glyph{--sm-glyph-size:28px;opacity:.6}@supports not (aspect-ratio:1/1){.sm-result-frame{width:min(100%,320px)}}.sm-result-audio{align-items:center;gap:var(--s-3,12px);box-sizing:border-box;width:min(100%,560px);height:56px;padding:0 var(--s-4,16px);border:1.5px dashed color-mix(in srgb,var(--fg) 18%,transparent);border-radius:var(--r-pill,999px);display:flex}.sm-result-wave{flex:1;align-items:center;gap:3px;height:24px;display:flex}.sm-result-wave>i{background:color-mix(in srgb,var(--fg) 12%,transparent);border-radius:2px;flex:1;height:30%}.sm-result-wave>i:nth-child(4n+1){height:60%}.sm-result-wave>i:nth-child(4n+2){height:90%}.sm-result-wave>i:nth-child(5n){height:45%}@container (width<=519px){.sm-result-frame{height:min(48vh,420px)}}
@@ -69,7 +69,7 @@ export function formatResult(args,result){
69
69
  const width=Math.max(...result.templates.map(item=>item.name.length));
70
70
  return lines('Templates (stillmade-block create <folder> <template>):','',...result.templates.map(item=>` ${item.name.padEnd(width)} ${item.description}`));
71
71
  }
72
- if(command==='create'&&result?.created){
72
+ if((command==='create'||command==='create-type')&&result?.created){
73
73
  if(result.kind==='type')return lines(`Created a Project Type at ${result.created}.`);
74
74
  const cli=cliCommand(result.created);
75
75
  return lines(`Created a ${result.runtime} Block from the ${result.template} template in ${result.created}.`,'','Next:',` cd ${result.created}`,result.files?.includes('package.json')?' npm install':null,result.files?.includes('package.json')?' npm run build':null,` ${cli} dev .`,` ${cli} test .${result.runtime==='capability'?' --mock':''}`,` ${cli} pack .`);
@@ -111,6 +111,10 @@ async function judge(path,main,{executeModules=true}={}){
111
111
  const placeholder=features=>features.length===1&&features[0].id==='main'&&features[0].asks?.length===1&&features[0].asks[0]===features[0].does;
112
112
  if(PASSING.has(readiness.status)&&manifest&&!(Array.isArray(manifest.features)&&manifest.features.length&&!placeholder(manifest.features)))
113
113
  return {ok:false,status:'NO FEATURE MAP',failures:['Add manifest.features: one entry per separate thing the Block can do, each with id, label, does and asks (requests in a customer\'s words). StillMade search, matching and the listing read it.'],limitations:(readiness.limitations||[]).length};
114
+ // November 3, 2026 (owner: the rules are followed, not suggested): a Wording note does not lower readiness, but the
115
+ // gate does not pass until each is fixed. StillMade's own builder sends the same notes back as repairs.
116
+ const wording=(readiness.limitations||[]).filter(note=>note.startsWith('Wording: '));
117
+ if(PASSING.has(readiness.status)&&wording.length)return {ok:false,status:'WORDING NOT SETTLED',failures:[...wording.map(note=>note.slice(9)),'Fix each of these in the Block. If the person asked for exactly these words, keep them and tell the person the gate flags them.'],limitations:(readiness.limitations||[]).length};
114
118
  return {ok:PASSING.has(readiness.status),status:readiness.status,failures:summarize(readiness),limitations:(readiness.limitations||[]).length};
115
119
  }catch(error){
116
120
  if(/^ready checks one Block package/.test(error.message)){
@@ -4,6 +4,7 @@
4
4
  // with the next commands.
5
5
  import {basename} from 'node:path';
6
6
  import {EXAMPLE_PROVENANCE} from '../block-sdk/example-license.js';
7
+ import {LICENSE_TEXTS} from '../block-sdk/license-texts.js';
7
8
  import {cliCommand} from './format.js';
8
9
 
9
10
  const json=value=>`${JSON.stringify(value,null,2)}\n`;
@@ -73,7 +74,7 @@ function TitleCards() {
73
74
  <li key={card.number} className={card.title === pinned ? 'pinned' : ''}>
74
75
  <span>{card.number}</span>
75
76
  <strong>{card.title}</strong>
76
- <button type="button" disabled={!shared.canEdit} onClick={() => pin(card.title)}>{card.title === pinned ? 'Pinned' : 'Pin'}</button>
77
+ <button type="button" data-stillmade-action={\`pin \${card.title}\`} disabled={!shared.canEdit} onClick={() => pin(card.title)}>{card.title === pinned ? 'Pinned' : 'Pin'}</button>
77
78
  </li>
78
79
  ))}
79
80
  </ol>
@@ -111,21 +112,16 @@ export default async function run(input, stillmade) {
111
112
  return { cards: { cards: titles.map((title, index) => ({ number: index + 1, title: title.slice(0, 120) })) } };
112
113
  }
113
114
  `;
114
- const cardsManifest=(id,name)=>manifest({id,version:'1.0.0',name,description:'Turn lines of text into numbered title cards, with a pinned card shared by everyone in the project.',runtime:'javascript',
115
+ const cardsManifest=(id,name)=>manifest({id,action:{label:'Make cards',running:'Making cards…'},version:'1.0.0',name,description:'Turn lines of text into numbered title cards, with a pinned card shared by everyone in the project.',runtime:'javascript',
115
116
  inputs:{lines:{type:'text',primary:true,required:true,semantic:'plain_text',description:'One title per line.'}},
116
117
  outputs:{cards:{type:'json',primary:true,semantic:'title_cards',description:'The numbered title cards.',schema:{cards:'object[]'}}},
117
118
  // The required input also gets a generated control: pack --original and import refuse a required input nobody can set.
118
119
  ui:[{control:'text',port:'lines'}]});
119
120
  const CARDS_TESTS=[{name:'Two titles',input:{lines:'Opening\nThe long road'},expected:{cards:{cards:[{number:1,title:'Opening'},{number:2,title:'The long road'}]}}}];
120
121
 
122
+ // The stage comes last: from 860 px wide the kit puts it on the right, and under that the page
123
+ // stacks in markup order, so on a phone the result's place sits under the button.
121
124
  const HTML_VIEW_HTML=`<main class="sm-block">
122
- <section class="sm-stage" aria-live="polite">
123
- <div class="sm-empty" id="empty">
124
- <span class="sm-glyph" data-glyph="text" aria-hidden="true"></span>
125
- <p>Cards show here</p>
126
- </div>
127
- <ol class="sm-gallery cards" id="list" hidden></ol>
128
- </section>
129
125
  <div class="sm-field">
130
126
  <div class="sm-label">
131
127
  <label for="lines">Titles</label>
@@ -137,6 +133,13 @@ const HTML_VIEW_HTML=`<main class="sm-block">
137
133
  <button type="button" class="sm-primary" id="make" data-stillmade-action="run">Make cards</button>
138
134
  <p class="sm-status" id="status" role="status"></p>
139
135
  </div>
136
+ <section class="sm-stage" aria-live="polite">
137
+ <div class="sm-empty" id="empty">
138
+ <span class="sm-glyph" data-glyph="text" aria-hidden="true"></span>
139
+ <p>Cards show here</p>
140
+ </div>
141
+ <ol class="sm-gallery cards" id="list" hidden></ol>
142
+ </section>
140
143
  </main>
141
144
  `;
142
145
  // The Block kit (injected by the host) styles everything above; this is only
@@ -231,20 +234,18 @@ export default async function run(input, stillmade) {
231
234
  }
232
235
  `;
233
236
 
234
- /** name → {description, runtime, files: async () => ({path: text | bytes})} */
235
- export const TEMPLATES=Object.freeze({
237
+ const STARTERS={
236
238
  recipe:{description:'Clean up text with built-in steps; no code.',runtime:'recipe',files:fromExample(async()=>(await import('../block-sdk/examples.js')).textCleanup,'A recipe Block: built-in steps in src/recipe.json, no code.')},
237
239
  image:{description:'Thicken the lines of an image with built-in image steps.',runtime:'recipe',files:fromExample(async()=>(await import('../block-sdk/examples.js')).lineArt,'A recipe Block for images.')},
238
240
  javascript:{description:'Count words with a few lines of sandboxed JavaScript.',runtime:'javascript',files:fromExample(async()=>(await import('../block-sdk/examples.js')).javascriptText,'A JavaScript Block: src/run.js runs in StillMade\'s sandbox with `input` and returns outputs.')},
239
241
  stateful:{description:'Number takes with memory saved between runs.',runtime:'recipe',files:fromExample(async()=>(await import('../block-sdk/state-example.js')).numberedTakes,'A Block with saved memory (manifest state).',['stillmade-block test .','stillmade-block run . --save-state memory.json','stillmade-block run . --state memory.json --save-state memory-2.json'])},
240
242
  module:{description:'Modern JavaScript (ES modules, async, typed arrays) in a Worker.',runtime:'module',files:async options=>{const {moduleWordStats,MODULE_EXAMPLE_SOURCE}=await import('../block-sdk/module-example.js');return {'stillmade.block.json':json(moduleWordStats.manifest),'module/main.js':MODULE_EXAMPLE_SOURCE,'tests/fixtures.json':json(moduleWordStats.tests),'README.md':readme(moduleWordStats.manifest.name,'A module Block: module/main.js exports `run(input, stillmade)`. Bundle npm packages into module/main.js with any bundler.',OFFLINE,options)};}},
241
243
  'module-wasm':{description:'A module that runs WebAssembly shipped beside its code.',runtime:'module',files:async options=>{
242
- const pkg=manifest({id:'example.wasm-add',version:'1.0.0',name:'Add with WebAssembly',description:'Adds two whole numbers in WebAssembly.',runtime:'module',inputs:{a:{type:'integer',primary:true,required:true,semantic:'first_number',description:'First number.'},b:{type:'integer',required:true,semantic:'second_number',description:'Second number.'}},outputs:{sum:{type:'integer',primary:true,semantic:'sum',description:'a + b.'}},ui:[{control:'number',port:'a'},{control:'number',port:'b'}]});
244
+ const pkg=manifest({id:'example.wasm-add',action:{label:'Add numbers',running:'Adding numbers…'},version:'1.0.0',name:'Add with WebAssembly',description:'Adds two whole numbers in WebAssembly.',runtime:'module',inputs:{a:{type:'integer',primary:true,required:true,semantic:'first_number',description:'First number.'},b:{type:'integer',required:true,semantic:'second_number',description:'Second number.'}},outputs:{sum:{type:'integer',primary:true,semantic:'sum',description:'a + b.'}},ui:[{control:'number',port:'a'},{control:'number',port:'b'}]});
243
245
  return {'stillmade.block.json':json(pkg),'module/main.js':`// .wasm files beside main.js are checked by SHA-256 before the module runs.\nexport default async function run(input, stillmade) {\n const { instance } = await WebAssembly.instantiate(stillmade.asset('add.wasm'));\n return { sum: instance.exports.add(input.a, input.b) };\n}\n`,'module/add.wasm':MODULE_WASM_BYTES,'tests/fixtures.json':json([{name:'Adds',input:{a:2,b:40},expected:{sum:42}}]),'README.md':readme(pkg.name,'A module Block with WebAssembly. Compile C, C++, Rust or Go to .wasm and put it in module/.',OFFLINE,options)};
244
246
  }},
245
247
  'module-hosted':{description:'A module that calls hosted text and image generation as tools.',runtime:'module',files:async options=>{
246
- // Named for the Block being made, so its README, types and feature map do not name the example (October 27, 2026).
247
- const pkg=manifest({id:'example.poster-from-idea',version:'1.0.0',name:blockName(options?.folder)||'Poster from an idea',description:'Writes an image prompt from an idea, then generates the poster.',runtime:'module',inputs:{idea:{type:'text',primary:true,required:true,semantic:'idea',description:'What the poster is about.'}},outputs:{poster:{type:'image',primary:true,semantic:'poster',description:'The generated poster.'},prompt:{type:'text',semantic:'image_prompt',description:'The prompt used.'}},permissions:{capabilities:['text.generate','image.generate']},ui:[{control:'text',port:'idea'}]});
248
+ const pkg=manifest({id:'example.poster-from-idea',action:{label:'Generate poster',running:'Generating poster…'},version:'1.0.0',name:'Poster from an idea',description:'Writes an image prompt from an idea, then generates the poster.',runtime:'module',inputs:{idea:{type:'text',primary:true,required:true,semantic:'idea',description:'What the poster is about.'}},outputs:{poster:{type:'image',primary:true,semantic:'poster',description:'The generated poster.'},prompt:{type:'text',semantic:'image_prompt',description:'The prompt used.'}},permissions:{capabilities:['text.generate','image.generate']},ui:[{control:'text',port:'idea'}]});
248
249
  return {'stillmade.block.json':json(pkg),'module/main.js':MODULE_HOSTED,'tests/fixtures.json':json([{name:'A poster',input:{idea:'a night market in the rain'},expected:{prompt:'Stand-in reply to: Write one vivid sentence describing a poster for: a night market in the rain',poster:{kind:'image',assetId:'mock-image-1',versionId:'v1',url:'/api/media/stillmade-mock/image-1.png',mimeType:'image/png',width:1024,height:1024,bytes:132192}}}]),'tests/mocks.json':json({hosted:{}}),'README.md':readme(pkg.name,'A module Block that uses hosted operations as tools. tests/mocks.json turns on stand-ins for offline tests and packing; record your own answers under "hosted". People approve the price of each call in StillMade; locally `--mock` uses recorded stand-ins.',HOSTED,options)};
249
250
  }},
250
251
  'view-react':{description:'A React interface (frame view) on a module Block, bundled with esbuild.',runtime:'module',files:async options=>{
@@ -271,30 +272,47 @@ export const TEMPLATES=Object.freeze({
271
272
  'web-research':{description:'Research a topic with sources (web.research).',runtime:'capability',files:fromExample(async()=>(await import('../block-sdk/web-example.js')).webResearch,'Hosted web research.',HOSTED)},
272
273
  'timeline-proposal':{description:'Propose Editor timeline edits the person reviews (timeline.propose).',runtime:'capability',files:fromExample(async()=>(await import('../block-sdk/timeline-proposal-example.js')).timelinePolish,'Hosted timeline proposals: the person reviews and applies them in the Editor.',HOSTED)},
273
274
  'outside-api':{description:'Call an outside https API with the person\'s own key (net.fetch).',runtime:'module',files:async options=>{
274
- const pkg=manifest({id:'example.open-issues',version:'1.0.0',name:'Open GitHub issues',description:'Lists the open issues of a GitHub repository with your own token.',runtime:'module',inputs:{repository:{type:'text',primary:true,required:true,semantic:'repository_name',description:'owner/name, such as octocat/hello-world.'}},outputs:{issues:{type:'json',primary:true,semantic:'issue_list',description:'Open issues.',schema:{issues:'object[]'}}},permissions:{network:[{origin:'https://api.github.com',auth:{scheme:'bearer',label:'GitHub personal access token',help:'https://github.com/settings/tokens'}}]},ui:[{control:'text',port:'repository'}]});
275
+ const pkg=manifest({id:'example.open-issues',action:{label:'Get open issues',running:'Getting open issues…'},version:'1.0.0',name:'Open GitHub issues',description:'Lists the open issues of a GitHub repository with your own token.',runtime:'module',inputs:{repository:{type:'text',primary:true,required:true,semantic:'repository_name',description:'owner/name, such as octocat/hello-world.'}},outputs:{issues:{type:'json',primary:true,semantic:'issue_list',description:'Open issues.',schema:{issues:'object[]'}}},permissions:{network:[{origin:'https://api.github.com',auth:{scheme:'bearer',label:'GitHub personal access token',help:'https://github.com/settings/tokens'}}]},ui:[{control:'text',port:'repository'}]});
275
276
  return {'stillmade.block.json':json(pkg),'module/main.js':OUTSIDE_API,'tests/fixtures.json':json([{name:'Lists issues',input:{repository:'octocat/hello-world'},expected:{issues:{issues:[{number:7,title:'Fix the README',url:'https://github.com/octocat/hello-world/issues/7'}]}}}]),
276
277
  'tests/mocks.json':json({network:[{method:'GET',url:'https://api.github.com/repos/octocat/hello-world/issues*',status:200,json:[{number:7,title:'Fix the README',html_url:'https://github.com/octocat/hello-world/issues/7'},{number:8,title:'A pull request',html_url:'https://github.com/octocat/hello-world/pull/8',pull_request:{}}]}]}),
277
278
  'README.md':readme(pkg.name,'A module Block that calls an outside API. StillMade adds the person\'s own key for each declared origin; tests/mocks.json records the API\'s answers for offline tests.',HOSTED,options)};
278
279
  }},
279
280
  connection:{description:'Call a published OpenAPI adapter with the person\'s sign-in.',runtime:'module',files:async options=>{
280
- const pkg=manifest({id:'example.notion-title',version:'1.0.0',name:'Notion page title',description:'Reads a Notion page title through the published Notion adapter.',runtime:'module',inputs:{pageId:{type:'text',primary:true,required:true,semantic:'notion_page_id',description:'The Notion page ID.'}},outputs:{title:{type:'text',primary:true,semantic:'page_title',description:'The page title.'}},permissions:{connections:['app:openapi:notion']},ui:[{control:'text',port:'pageId'}]});
281
+ const pkg=manifest({id:'example.notion-title',action:{label:'Get page title',running:'Getting page title…'},version:'1.0.0',name:'Notion page title',description:'Reads a Notion page title through the published Notion adapter.',runtime:'module',inputs:{pageId:{type:'text',primary:true,required:true,semantic:'notion_page_id',description:'The Notion page ID.'}},outputs:{title:{type:'text',primary:true,semantic:'page_title',description:'The page title.'}},permissions:{connections:['app:openapi:notion']},ui:[{control:'text',port:'pageId'}]});
281
282
  return {'stillmade.block.json':json(pkg),'module/main.js':CONNECTION,'tests/fixtures.json':json([{name:'Reads a title',input:{pageId:'b1b2c3d4e5f60718293a4b5c6d7e8f90'},expected:{title:'Launch plan'}}]),
282
283
  'tests/mocks.json':json({connections:{'app:openapi:notion/retrievePage':{object:'page',properties:{Name:{type:'title',title:[{plain_text:'Launch plan'}]}}}}}),
283
284
  'README.md':readme(pkg.name,'A module Block that calls a published adapter. People sign in once per Block; tests/mocks.json records the adapter\'s answers for offline tests.',HOSTED,options)};
284
285
  }},
285
286
  storage:{description:'Remember values across runs in the project\'s Block storage.',runtime:'module',files:async options=>{
286
- const pkg=manifest({id:'example.remember-settings',version:'1.0.0',name:'Remember settings',description:'Keeps a name and a run count in project storage.',runtime:'module',storage:{schemaVersion:1,scope:'project',desktop:'device-unmetered',cloud:'metered'},inputs:{name:{type:'text',primary:true,required:false,semantic:'person_name',description:'A name to remember.'}},outputs:{greeting:{type:'text',primary:true,semantic:'greeting',description:'A greeting with the run count.'}},ui:[{control:'text',port:'name'}]});
287
+ const pkg=manifest({id:'example.remember-settings',action:{label:'Save settings',running:'Saving settings…'},version:'1.0.0',name:'Remember settings',description:'Keeps a name and a run count in project storage.',runtime:'module',storage:{schemaVersion:1,scope:'project',desktop:'device-unmetered',cloud:'metered'},inputs:{name:{type:'text',primary:true,required:false,semantic:'person_name',description:'A name to remember.'}},outputs:{greeting:{type:'text',primary:true,semantic:'greeting',description:'A greeting with the run count.'}},ui:[{control:'text',port:'name'}]});
287
288
  return {'stillmade.block.json':json(pkg),'module/main.js':STORAGE,'tests/fixtures.json':json([{name:'First run',input:{name:'Ada'},expected:{greeting:'Hello Ada, run 1'}}]),'tests/mocks.json':json({storage:{}}),'README.md':readme(pkg.name,'A module Block with project storage. tests/mocks.json can seed stored values under "storage".',OFFLINE,options)};
288
289
  }},
289
290
  'trigger-media':{description:'Runs on its own when a video is saved (media.saved trigger).',runtime:'capability',files:fromExample(async()=>(await import('../block-sdk/trigger-examples.js')).autoCaptions,'A hosted Block that declares a media.saved trigger. The project owner turns it on and approves a credit budget in the Step\'s "Runs on its own" panel.',HOSTED)},
290
291
  'trigger-webhook':{description:'Runs when another service sends a webhook.',runtime:'javascript',files:fromExample(async()=>(await import('../block-sdk/trigger-examples.js')).orderNote,'A JavaScript Block that declares a webhook trigger. The owner turns it on and gets the address and key once.')},
291
292
  'trigger-schedule':{description:'Runs on a schedule with the project\'s saved inputs.',runtime:'javascript',files:async options=>{
292
- const pkg={manifest:manifest({id:'example.daily-checklist',version:'1.0.0',name:'Daily checklist',description:'Turns a list of chores into a numbered checklist, every day.',runtime:'javascript',inputs:{items:{type:'text',primary:true,required:true,semantic:'plain_text',description:'One chore per line.'}},outputs:{checklist:{type:'text',primary:true,semantic:'checklist',description:'The numbered checklist.'}},triggers:[{event:'schedule',everySeconds:86400,label:'Every day'}],ui:[{control:'text',port:'items'}]}),
293
+ const pkg={manifest:manifest({id:'example.daily-checklist',action:{label:'Make checklist',running:'Making checklist…'},version:'1.0.0',name:'Daily checklist',description:'Turns a list of chores into a numbered checklist, every day.',runtime:'javascript',inputs:{items:{type:'text',primary:true,required:true,semantic:'plain_text',description:'One chore per line.'}},outputs:{checklist:{type:'text',primary:true,semantic:'checklist',description:'The numbered checklist.'}},triggers:[{event:'schedule',everySeconds:86400,label:'Every day'}],ui:[{control:'text',port:'items'}]}),
293
294
  code:"const items=String(input.items||'').split('\\n').map(line=>line.trim()).filter(Boolean);\nreturn {checklist:items.map((item,index)=>`${index+1}. [ ] ${item}`).join('\\n')};",
294
295
  tests:[{name:'Two chores',input:{items:'Back up footage\nReview cuts'},expected:{checklist:'1. [ ] Back up footage\n2. [ ] Review cuts'}}]};
295
296
  return {...packageFiles(pkg),'README.md':readme(pkg.manifest.name,'A JavaScript Block that declares a schedule trigger. The owner turns it on for a Step; it runs with the project\'s saved inputs.',OFFLINE,options)};
296
297
  }},
297
- });
298
+ };
299
+ // What create makes is the creator's own Block, whatever template it starts from (November 3, 2026: a `module` Block
300
+ // kept "Word stats", its description and README, and every template put "StillMade SDK contributors" in the person's
301
+ // license): it is named for its folder, and its description and license holder are placeholders the builder replaces.
302
+ // Each template's manifest.action keeps its job words ("Count words"), which the gate reads.
303
+ export const LICENSE_HOLDER_PLACEHOLDER='<the person this Block is made for>';
304
+ function ownBlock(template,files,options){
305
+ const name=blockName(options?.folder);if(!name)return files;
306
+ const manifest=JSON.parse(files['stillmade.block.json']),started=manifest.name;
307
+ manifest.name=name;
308
+ manifest.description=`Replace with one sentence saying what ${name} does for the person.`;
309
+ if(manifest.provenance?.notice===EXAMPLE_PROVENANCE.notice)manifest.provenance={...manifest.provenance,notice:LICENSE_TEXTS.MIT.replace('<year> <copyright holders>',`${new Date().getFullYear()} ${LICENSE_HOLDER_PLACEHOLDER}`)};
310
+ const note=`Started from the \`${template}\` template. Say what this Block does here and in \`description\` in stillmade.block.json, and put the name of the person it is made for in place of \`${LICENSE_HOLDER_PLACEHOLDER}\` in \`provenance.notice\`.`;
311
+ const text=files['README.md'];
312
+ return {...files,'stillmade.block.json':json(manifest),...(typeof text==='string'?{'README.md':text.startsWith(`# ${started}\n`)?`# ${name}\n\n${note}\n${text.slice(started.length+3)}`:`# ${name}\n\n${note}\n\n${text}`}:{})};
313
+ }
314
+ /** name → {description, runtime, files: async ({folder}) => ({path: text | bytes})} */
315
+ export const TEMPLATES=Object.freeze(Object.fromEntries(Object.entries(STARTERS).map(([key,template])=>[key,{...template,files:async options=>ownBlock(key,await template.files(options),options)}])));
298
316
  export const TEMPLATE_ALIASES=Object.freeze({default:'recipe',capability:'text'});
299
317
  export function templateNamed(name='recipe'){
300
318
  const key=Object.hasOwn(TEMPLATE_ALIASES,name)?TEMPLATE_ALIASES[name]:name;