stillmade-sdk 0.1.46 → 0.1.48

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 (78) hide show
  1. package/.stillmade/sdk-baseline.json +1 -1
  2. package/AGENTS.md +6 -2
  3. package/FRAME_VIEWS.md +71 -5
  4. package/INTERFACE_DESIGN.md +105 -15
  5. package/MODULES.md +26 -3
  6. package/PASTE_TO_LLM.md +27 -10
  7. package/README.md +15 -0
  8. package/SDK.md +393 -64
  9. package/UI_AESTHETIC.md +13 -0
  10. package/blocks/native/sm.board-editor/versions/3.0.0/package.js +921 -0
  11. package/blocks/native/sm.editor/versions/3.0.0/package.js +751 -0
  12. package/blocks/native/sm.panel-strip/versions/3.0.0/package.js +350 -0
  13. package/blocks/native/sm.photo-editor/versions/1.0.0/package.js +6693 -0
  14. package/blocks/native/sm.voiceover/versions/3.0.0/package.js +513 -0
  15. package/docs/build/block-builder-contract.md +2 -2
  16. package/docs/build/custom-interface.md +23 -3
  17. package/docs/build/frame-views.md +71 -5
  18. package/docs/build/hosted-text.md +8 -3
  19. package/docs/build/interface-design.md +105 -15
  20. package/docs/build/media-analysis.md +18 -1
  21. package/docs/build/modules.md +26 -3
  22. package/docs/build/with-your-ai.md +14 -0
  23. package/docs/build/workspaces.md +42 -0
  24. package/docs/reference/authoring-guide.md +5 -4
  25. package/docs/reference/cli.md +8 -3
  26. package/docs/reference/execution.md +13 -5
  27. package/docs/reference/first-party-blocks.md +5 -4
  28. package/docs/reference/generation-models.md +4 -0
  29. package/docs/reference/limits.md +9 -2
  30. package/docs/reference/permissions.md +4 -0
  31. package/docs/reference/view-bridge.md +6 -3
  32. package/docs/reference/view-rules.md +2 -1
  33. package/docs/tools/llm.md +27 -10
  34. package/examples/custom-interface.stillmade.json +2 -2
  35. package/package.json +1 -1
  36. package/packages/block-cli/cli.js +124 -12
  37. package/packages/block-cli/dev-host/assets/host.js +63 -37
  38. package/packages/block-cli/dev-host/assets/index.css +1 -1
  39. package/packages/block-cli/dev-server.js +74 -23
  40. package/packages/block-cli/format.js +20 -1
  41. package/packages/block-cli/ready-gate.js +34 -2
  42. package/packages/block-cli/templates.js +61 -0
  43. package/packages/block-cli/type-packages.js +7 -4
  44. package/packages/block-cli/workspace-dev.js +124 -0
  45. package/packages/block-cli/workspace-pack.js +62 -0
  46. package/packages/block-cli/workspace.js +304 -0
  47. package/packages/block-platform/block-readiness.js +5 -4
  48. package/packages/block-platform/catalog.js +5 -3
  49. package/packages/block-platform/node-defaults.js +2 -2
  50. package/packages/block-platform/plain-descriptions.js +1 -0
  51. package/packages/block-platform/type-workspace.js +8 -0
  52. package/packages/block-sdk/admission.js +2 -2
  53. package/packages/block-sdk/builder-contract.js +3 -3
  54. package/packages/block-sdk/capabilities.js +32 -12
  55. package/packages/block-sdk/contracts.js +11 -2
  56. package/packages/block-sdk/examples.js +2 -2
  57. package/packages/block-sdk/first-party-identities.js +9 -0
  58. package/packages/block-sdk/first-party-packages.js +9 -1
  59. package/packages/block-sdk/folder-package.js +34 -2
  60. package/packages/block-sdk/generation-catalog.js +7 -0
  61. package/packages/block-sdk/index.d.ts +13 -5
  62. package/packages/block-sdk/index.js +1 -1
  63. package/packages/block-sdk/mock-host.js +7 -0
  64. package/packages/block-sdk/module-hosted.js +11 -1
  65. package/packages/block-sdk/module-media-access.js +5 -3
  66. package/packages/block-sdk/permission-summary.js +1 -1
  67. package/packages/block-sdk/portable-media-actions.d.ts +4 -1
  68. package/packages/block-sdk/portable-media-actions.js +16 -1
  69. package/packages/block-sdk/remix-policy.js +2 -2
  70. package/packages/block-sdk/staged-releases.js +5 -0
  71. package/packages/block-sdk/stillmade-pack.js +64 -0
  72. package/packages/block-sdk/testing.js +2 -2
  73. package/packages/block-sdk/view-bridge.js +6 -3
  74. package/packages/block-sdk/view-design.js +65 -17
  75. package/packages/block-sdk/view-renderer.js +17 -1
  76. package/packages/block-sdk/view.js +47 -9
  77. package/packages/design-system/block-kit.css +23 -0
  78. package/packages/design-system/theme.css +10 -7
@@ -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);align-content:center;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-stage)>:where(.sm-gallery){grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--sm-tile,140px)),1fr));width:100%}:where(.sm-stage)>:where(.sm-gallery:not(:has(>:nth-child(5)))){grid-template-columns:none;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column}:where(.sm-stage)>:where(figcaption,small,.sm-caption){text-align:center;justify-self:center}:where([data-stillmade-layout=own]) :where(.sm-stage){align-content:normal}:where([data-stillmade-layout=own]) :where(.sm-stage)>:where(.sm-gallery){grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--sm-tile,140px)),1fr));grid-auto-flow:row;width:auto}: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)}}
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],a[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;text-decoration:none!important;display:inline-flex!important}button[data-icon-action=true]:hover:not(:disabled),a[data-icon-action=true]:hover:not(:disabled){color:var(--text-primary,var(--fg))!important}button[data-icon-action=true]:focus-visible,a[data-icon-action=true]:focus-visible{outline-offset:2px;outline:2px solid var(--signal)!important}button[data-icon-action=true]:disabled,a[data-icon-action=true]:disabled{cursor:not-allowed;opacity:.4!important}button[data-icon-action=true][aria-pressed=true],a[data-icon-action=true][aria-pressed=true]{text-underline-offset:5px;text-decoration:underline;color:var(--text-primary,var(--fg))!important}a[data-icon-action=true]{align-self:center;flex:none!important}@media (pointer:coarse){button[data-icon-action=true],a[data-icon-action=true]{min-width:44px!important;min-height:44px!important}}.sm-icon-tip{z-index:2147483647;border-radius:var(--r-2,4px);background:var(--fg,#0a0a0a);max-width:260px;color:var(--bg,#f6f0e0);font:400 12px/1.35 var(--font-ui,inherit);pointer-events:none;white-space:normal;padding:6px 10px;position:fixed;box-shadow:0 6px 20px #0002}*,: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);align-content:center;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-stage)>:where(.sm-gallery){grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--sm-tile,140px)),1fr));width:100%}:where(.sm-stage)>:where(.sm-gallery:not(:has(>:nth-child(5)))){grid-template-columns:none;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column}:where(.sm-stage)>:where(figcaption,small,.sm-caption){text-align:center;justify-self:center}:where(.sm-block :has(>.sm-stage:not([data-ratio]))){align-self:stretch}:where([data-stillmade-layout=own] :has(>.sm-stage:not([data-ratio]))){align-self:auto}:where([data-stillmade-layout=own]) :where(.sm-stage){align-content:normal}:where([data-stillmade-layout=own]) :where(.sm-stage)>:where(.sm-gallery){grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--sm-tile,140px)),1fr));grid-auto-flow:row;width:auto}: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}}:where(.sm-stage:has(>.sm-actions,>.sm-status)){padding-top:calc(var(--s-3,12px) * 2 + var(--touch-target,44px))}:where(.sm-stage)>:where(.sm-actions){top:var(--s-3,12px);right:var(--s-3,12px);z-index:2;max-width:calc(100% - var(--s-3,12px) * 2);flex-wrap:nowrap;justify-content:flex-end;position:absolute}:where(.sm-stage)>:where(.sm-actions)>:where(.sm-primary){flex:none}:where(.sm-stage)>:where(.sm-actions)>:where([data-stillmade-action=run]){order:99}:where(.sm-stage)>:where(.sm-actions)>:where(.sm-quiet,.sm-icon){background:var(--cream-100,#f7f0db);color:var(--ink-600,#0a0a0a);border-color:#0000}:where(.sm-stage)>:where(.sm-status){top:var(--s-3,12px);left:var(--s-3,12px);z-index:2;align-items:center;gap:var(--s-2,8px);min-height:32px;padding:0 var(--s-3,12px);border-radius:var(--r-3,8px);background:var(--cream-100,#f7f0db);color:var(--ink-600,#0a0a0a);margin:0;font-size:12px;display:inline-flex;position:absolute}:where(.sm-stage)>:where(.sm-status:empty){display:none}@container (width<=420px){:where(.sm-stage:has(>.sm-actions):has(>.sm-status:not(:empty))){padding-top:calc(var(--s-3,12px) * 2 + var(--s-2,8px) + 32px + var(--touch-target,44px))}:where(.sm-stage:has(>.sm-status:not(:empty)))>:where(.sm-actions){top:calc(var(--s-3,12px) + var(--s-2,8px) + 32px);left:var(--s-3,12px)}:where(.sm-stage)>:where(.sm-actions)>:where(.sm-primary){flex:0 auto}}.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)}.ws-page{height:100dvh;font-family:var(--font-body);grid-template-columns:256px minmax(0,1fr);display:grid;overflow:hidden}.ws-page[data-folded=true]{grid-template-columns:60px minmax(0,1fr)}.ws-content{flex-direction:column;min-width:0;min-height:0;display:flex}.ws-content>.dh-page{flex:1;height:auto;min-height:0}.ws-side{border-right:var(--bw-1,1px) solid var(--divider);background:var(--bg-elev-1);flex-direction:column;min-height:0;display:flex}.ws-head{border-bottom:var(--bw-1,1px) solid var(--divider);align-items:flex-start;gap:6px;min-height:56px;padding:10px 8px 10px 14px;display:flex}.ws-title{flex:1;order:-1;gap:2px;min-width:0;display:grid}.ws-title h1{font-family:var(--font-display);letter-spacing:var(--tr-display);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:21px;font-style:italic;font-weight:200;line-height:1.15;overflow:hidden}.ws-title small{color:var(--fg-subtle);font-size:12px}.ws-list{flex:1;min-height:0;padding:4px 8px 8px;overflow:auto}.ws-list ul{gap:2px;margin:0;padding:0;list-style:none;display:grid}.ws-group{color:var(--fg-subtle);margin:12px 8px 4px;font-size:12px;font-weight:400}.ws-empty{color:var(--fg-muted);margin:4px 8px;font-size:12.5px}.ws-item{border-radius:var(--r-2);width:100%;color:var(--fg);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:24px minmax(0,1fr) 10px;align-items:center;gap:8px;padding:7px 8px;display:grid}.ws-item:hover{background:var(--bg-elev-2)}.ws-item[aria-current=true]{background:var(--bg-elev-2);box-shadow:inset 0 0 0 var(--bw-1,1px) var(--border-tok)}.ws-item:focus-visible,.ws-add:focus-visible{outline:2px solid var(--signal);outline-offset:1px}.ws-kind{border:var(--bw-1,1px) solid var(--border-tok);width:24px;height:24px;color:var(--fg-muted);border-radius:5px;place-items:center;display:grid}.ws-text{min-width:0;display:grid}.ws-item b{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;line-height:1.25;overflow:hidden}.ws-item small{color:var(--fg-subtle);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.ws-dot{border:1.5px solid var(--fg-subtle);border-radius:50%;width:8px;height:8px}.ws-dot-ready{border-color:var(--attention-ok);background:var(--attention-ok)}.ws-dot-needs-fix{border-color:var(--attention-error);background:var(--attention-error)}.ws-dot-building{border-color:var(--attention-info);position:relative}.ws-dot-building:after{content:"";background:var(--attention-info);opacity:0;border-radius:50%;animation:1.6s ease-in-out infinite ws-pulse;position:absolute;inset:-1.5px}@keyframes ws-pulse{50%{opacity:.7}}@media (prefers-reduced-motion:reduce){.ws-dot-building:after{opacity:.4;animation:none}}.ws-foot{border-top:var(--bw-1,1px) solid var(--divider);gap:8px;padding:10px;display:grid}.ws-add{justify-content:flex-start;gap:8px}.ws-follow{gap:2px}.ws-follow small{color:var(--fg-subtle);padding-left:6px;font-size:11.5px}.ws-new{gap:8px;display:grid}.ws-field{color:var(--fg-muted);gap:4px;font-size:12px;display:grid}.ws-field input,.ws-field select{border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-2);background:var(--bg);min-width:0;height:32px;color:var(--fg);font:inherit;padding:0 8px;font-size:13px}.ws-new-actions{flex-wrap:wrap;gap:6px;display:flex}.ws-problem{color:var(--attention-error);margin:0;font-size:12.5px}.ws-page[data-folded=true] .ws-title,.ws-page[data-folded=true] .ws-text,.ws-page[data-folded=true] .ws-empty,.ws-page[data-folded=true] .ws-follow{display:none}.ws-page[data-folded=true] .ws-head{justify-content:center;padding:10px 0}.ws-page[data-folded=true] .ws-list{padding:4px 6px}.ws-page[data-folded=true] .ws-group{background:var(--divider);height:1px;margin:8px 6px;font-size:0;overflow:hidden}.ws-page[data-folded=true] .ws-item{grid-template-columns:24px;justify-content:center;padding:8px 0;position:relative}.ws-page[data-folded=true] .ws-item .ws-dot{width:7px;height:7px;position:absolute;top:4px;right:6px}.ws-page[data-folded=true] .ws-foot{justify-items:center;padding:10px 0}.ws-page[data-folded=true] .ws-add{justify-content:center;width:32px;padding:0}.ws-chip{border:var(--bw-1,1px) solid var(--border-tok);height:22px;color:var(--fg-muted);white-space:nowrap;border-radius:999px;align-self:center;align-items:center;padding:0 9px;font-size:12px;display:inline-flex}.ws-chip[data-status=needs-fix]{border-color:var(--attention-error);color:var(--attention-error)}.ws-chip[data-status=building]{border-color:var(--attention-info);color:var(--attention-info)}.ws-checks{gap:4px;display:grid}.ws-checklist{gap:2px;margin:0;padding:0;font-size:13px;list-style:none;display:grid}.ws-checklist li{grid-template-columns:18px minmax(0,1fr) auto;align-items:start;gap:10px;padding:4px 0;display:grid}.ws-checklist li .dh-glyph{margin-top:1px}.ws-checklist li[data-state=done] .dh-glyph{color:var(--attention-ok)}.ws-checklist li[data-state=todo] .dh-glyph{color:var(--attention-warning)}.ws-checklist li[data-state=failed] .dh-glyph{color:var(--attention-error)}.ws-checklist li[data-state=waiting] .dh-glyph{color:var(--attention-info)}.ws-checklist small{color:var(--fg-subtle);font-size:12px}.ws-checklist .ws-failure{color:var(--fg-muted);white-space:pre-wrap;padding:2px 0 2px 28px;font-size:12.5px;display:block}.ws-pad{padding:var(--s-6,24px)}.ws-hello{font-family:var(--font-display);margin:0 0 8px;font-size:28px;font-style:italic;font-weight:200}.ws-flow{gap:var(--s-4,16px)}.ws-steps{flex:none;gap:28px;margin:0;padding:0 0 4px;list-style:none;display:flex;overflow-x:auto}.ws-step{border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-3);background:var(--bg-elev-1);flex:0 0 210px;align-content:start;gap:6px;padding:12px;font-size:13px;display:grid;position:relative}.ws-step+.ws-step:before{content:"";border-top:var(--bw-1,1px) solid var(--border-strong);width:16px;position:absolute;top:50%;left:-22px}.ws-step[data-tone=done]{border-color:var(--attention-ok)}.ws-step[data-tone=failed]{border-color:var(--attention-error)}.ws-step[data-tone=running]{border-color:var(--attention-info)}.ws-step-n{color:var(--fg-subtle);font-size:11.5px}.ws-ports{color:var(--fg-muted);gap:2px;font-size:12px;display:grid}.ws-step-state{color:var(--fg-muted);font-size:12px}.ws-step[data-tone=done] .ws-step-state{color:var(--attention-ok)}.ws-step[data-tone=failed] .ws-step-state{color:var(--attention-error)}.ws-step[data-tone=running] .ws-step-state{color:var(--attention-info)}.ws-outcome{border:var(--bw-1,1px) solid var(--border-tok);border-radius:var(--r-3);flex:1;grid-template-columns:minmax(0,1fr) 280px;min-height:200px;display:grid}.ws-outcome h2{margin:0 0 8px;font-size:14px;font-weight:600}.ws-outcome-main{min-width:0;padding:var(--s-4,16px);align-content:start;gap:8px;display:grid}.ws-outcome-side{padding:var(--s-4,16px);border-left:var(--bw-1,1px) solid var(--divider);align-content:start;gap:8px;font-size:12.5px;display:grid}.ws-outcome-side ul{color:var(--fg-muted);gap:4px;margin:0;padding-left:16px;display:grid}.ws-note{border-radius:var(--r-2);background:var(--bg-elev-2);color:var(--fg-muted);margin:0;padding:8px 10px}.ws-shared{gap:12px;max-width:720px;display:grid}@media (width<=700px){.ws-page{grid-template-columns:60px minmax(0,1fr)}.ws-page .ws-title,.ws-page .ws-text,.ws-page .ws-empty,.ws-page .ws-follow{display:none}.ws-page .ws-item{grid-template-columns:24px;justify-content:center;padding:8px 0;position:relative}.ws-page .ws-item .ws-dot{width:7px;height:7px;position:absolute;top:4px;right:6px}.ws-page .ws-group{background:var(--divider);height:1px;margin:8px 6px;font-size:0;overflow:hidden}.ws-page .ws-head{justify-content:center;padding:10px 0}.ws-page .ws-fold{display:none}.ws-page .ws-foot{justify-items:center;padding:10px 0}.ws-page .ws-add{justify-content:center;width:32px;padding:0}.ws-outcome{grid-template-columns:1fr}.ws-outcome-side{border-left:0;border-top:var(--bw-1,1px) solid var(--divider)}}.ws-output{border-top:var(--bw-1,1px) solid var(--divider);grid-template-columns:120px minmax(0,1fr);align-items:start;gap:12px;padding:6px 0;font-size:13px;display:grid}.ws-output>span{color:var(--fg-muted)}.ws-outcome h2{font-family:var(--font-body);font-style:normal}.ws-output>*{overflow-wrap:anywhere;min-width:0}@media (width<=700px){.ws-output{grid-template-columns:1fr;gap:2px}}.dh-focus-toggle{z-index:30;border:var(--bw-1,1px) solid var(--border-strong);border-radius:var(--r-2);background:var(--bg-elev-1);width:32px;height:32px;color:var(--fg);cursor:pointer;place-items:center;padding:0;display:grid;position:fixed;top:12px;right:12px}.dh-focus-toggle:hover{background:var(--bg-elev-2)}.dh-focus-toggle:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.dh-bar{padding-right:56px}:root[data-focus=true] .dh-bar,:root[data-focus=true] .dh-dock,:root[data-focus=true] .ws-side{display:none}:root[data-focus=true] .ws-page{grid-template-columns:minmax(0,1fr)}:root[data-focus=true] .dh-main{padding-top:56px}.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}.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)}}
@@ -33,33 +33,59 @@ const MAX_BODY=8*1048576,MAX_PICKED=512*1048576;
33
33
  * live: {origin, key} to let that StillMade site read bundle(current):
34
34
  * {fileName, source}, the packed file it imports.
35
35
  */
36
- export async function startDevServer({folder,port=4800,host='127.0.0.1',build,load,run,media,pick,live,bundle,onEvent=()=>{}}){
37
- const clients=new Set();let current=await load(),revision=1,building=null,queued=false,timer,lastDigest=current.digest;
36
+ export async function startDevServer({folder,port=4800,host='127.0.0.1',build,load,run,media,pick,live,bundle,workspace,onEvent=()=>{}}){
37
+ // One state per previewed Block: the single folder (key ''), or each Block of a workspace by its path (blocks/<name>).
38
+ const clients=new Set(),states=new Map();let timer,lastKey='';
39
+ const sessionFor=key=>workspace?workspace.session(key):key===''?{load,run,media,bundle}:null;
40
+ const stateFor=async key=>{
41
+ if(!states.has(key)){const session=sessionFor(key);if(!session)return null;const current=await session.load();states.set(key,{session,current,revision:1,lastDigest:current.digest,building:null,queued:false});}
42
+ return states.get(key);
43
+ };
38
44
  const send=(event,data)=>{const line=`event: ${event}\ndata: ${JSON.stringify(data)}\n\n`;for(const client of clients)client.write(line);onEvent(event,data);};
39
- const reload=async()=>{
40
- const next=await load();
41
- if(next.digest&&next.digest===lastDigest&&!next.problem&&!current.problem)return;
42
- lastDigest=next.digest;current=next.problem&&current.pkg&&!next.pkg?{...current,problem:next.problem}:next;revision++;
43
- send('package',{revision,problem:current.problem||null});
45
+ const reload=async(key='')=>{
46
+ const state=states.get(key);if(!state)return;
47
+ const next=await state.session.load();
48
+ if(next.digest&&next.digest===state.lastDigest&&!next.problem&&!state.current.problem)return;
49
+ state.lastDigest=next.digest;state.current=next.problem&&state.current.pkg&&!next.pkg?{...state.current,problem:next.problem}:next;state.revision++;
50
+ send('package',{revision:state.revision,problem:state.current.problem||null,...(workspace?{item:key}:{})});
44
51
  };
52
+ const single=workspace?null:await stateFor('');
45
53
  const runBuild=()=>{
46
54
  if(!build)return Promise.resolve();
47
- if(building){queued=true;return building;}
55
+ if(single.building){single.queued=true;return single.building;}
48
56
  send('build',{state:'running',command:build});
49
- building=new Promise(resolve=>{
57
+ single.building=new Promise(resolve=>{
50
58
  const child=spawn(build,{cwd:folder,shell:true,stdio:['ignore','pipe','pipe']});let output='';
51
59
  const keep=chunk=>{output=(output+chunk).slice(-4000);};child.stdout.on('data',keep);child.stderr.on('data',keep);
52
60
  child.on('error',error=>{send('build',{state:'failed',output:error.message});resolve();});
53
61
  child.on('close',code=>{send('build',{state:code===0?'done':'failed',...(code===0?{}:{output:output.trim()})});resolve();});
54
- }).then(async()=>{building=null;await reload();if(queued){queued=false;return runBuild();}});
55
- return building;
62
+ }).then(async()=>{single.building=null;await reload('');if(single.queued){single.queued=false;return runBuild();}});
63
+ return single.building;
64
+ };
65
+ // A workspace collects the paths saved within 120 ms, builds what they touch, reloads those Blocks, and tells the page
66
+ // which item the agent is working on (owner, November 6, 2026: the preview opens the Block the agent just saved).
67
+ let pendingPaths=new Set(),workspaceBusy=Promise.resolve();
68
+ const workspaceChange=async paths=>{
69
+ const plan=await workspace.changed([...paths]);
70
+ if(plan.build?.length){send('build',{state:'running',items:plan.build});const report=await workspace.build(plan.build).catch(error=>({failed:[{message:error.message}]}));send('build',{state:report.failed?.length?'failed':'done',...(report.failed?.length?{output:report.failed.map(item=>`${item.block?`${item.block}: `:''}${item.message}`).join('\n')}:{})});}
71
+ for(const key of plan.reload||[])await reload(key);
72
+ send('workspace',{...(plan.focus?{focus:plan.focus}:{})});
56
73
  };
57
74
  const changed=path=>{
58
- if(!path||IGNORED.test(path))return;
75
+ if(!path)return;
76
+ if(workspace){
77
+ if(IGNORED.test(path)&&path!=='.stillmade/ready-cache.json')return;
78
+ pendingPaths.add(path);clearTimeout(timer);
79
+ timer=setTimeout(()=>{const paths=pendingPaths;pendingPaths=new Set();workspaceBusy=workspaceBusy.then(()=>workspaceChange(paths)).catch(error=>send('build',{state:'failed',output:error.message}));},120);
80
+ return;
81
+ }
82
+ if(IGNORED.test(path))return;
59
83
  clearTimeout(timer);
60
- timer=setTimeout(()=>{(PACKAGE_FILE.test(path)?(building?Promise.resolve():reload()):runBuild()).catch(error=>send('build',{state:'failed',output:error.message}));},120);
84
+ timer=setTimeout(()=>{(PACKAGE_FILE.test(path)?(single.building?Promise.resolve():reload('')):runBuild()).catch(error=>send('build',{state:'failed',output:error.message}));},120);
61
85
  };
62
86
  const watcher=watch(folder,{recursive:true},(_event,name)=>changed(name&&String(name).split(sep).join('/')));
87
+ const itemOf=url=>workspace?url.searchParams.get('item')||'':'';
88
+ const localOrigin=()=>[`http://127.0.0.1:${server.address().port}`,`http://localhost:${server.address().port}`];
63
89
 
64
90
  const server=createServer(async(req,res)=>{
65
91
  try{
@@ -67,18 +93,36 @@ export async function startDevServer({folder,port=4800,host='127.0.0.1',build,lo
67
93
  // Only this machine, addressed by this server's own name, may use it (no DNS rebinding).
68
94
  if(![`127.0.0.1:${server.address().port}`,`localhost:${server.address().port}`].includes(req.headers.host))return end(res,403,'text/plain','Forbidden');
69
95
  if(url.pathname.startsWith('/__live/'))return serveLive(req,res,url.pathname);
70
- if(req.method==='POST'&&req.headers.origin&&![`http://127.0.0.1:${server.address().port}`,`http://localhost:${server.address().port}`].includes(req.headers.origin))return end(res,403,'text/plain','Forbidden');
96
+ if(req.method==='POST'&&req.headers.origin&&!localOrigin().includes(req.headers.origin))return end(res,403,'text/plain','Forbidden');
71
97
  if(req.method==='GET'&&url.pathname==='/__dev/events'){
72
98
  res.writeHead(200,{'Content-Type':'text/event-stream','Cache-Control':'no-store',Connection:'keep-alive'});
73
- res.write(`event: hello\ndata: ${JSON.stringify({revision})}\n\n`);clients.add(res);req.on('close',()=>clients.delete(res));return;
99
+ res.write(`event: hello\ndata: ${JSON.stringify({revision:single?.revision??0,...(workspace?{workspace:true}:{})})}\n\n`);clients.add(res);req.on('close',()=>clients.delete(res));return;
100
+ }
101
+ if(workspace&&req.method==='GET'&&url.pathname==='/__dev/workspace')return json(res,200,await workspace.list());
102
+ if(workspace&&req.method==='GET'&&url.pathname==='/__dev/templates')return json(res,200,await workspace.templates());
103
+ if(workspace&&req.method==='POST'&&url.pathname==='/__dev/new'){
104
+ if(!String(req.headers['content-type']||'').startsWith('application/json'))return json(res,415,{error:'Send JSON.'});
105
+ try{return json(res,200,await workspace.add(JSON.parse(await readBody(req))));}catch(error){return json(res,400,{error:String(error?.message||error)});}
106
+ }
107
+ if(workspace&&req.method==='POST'&&url.pathname==='/__dev/check'){const result=await workspace.check();send('workspace',{});return json(res,200,result);}
108
+ if(workspace&&req.method==='GET'&&url.pathname==='/__dev/workflow'){try{return json(res,200,await workspace.workflow(itemOf(url)));}catch(error){return json(res,200,{problem:String(error?.message||error)});}}
109
+ if(workspace&&req.method==='POST'&&url.pathname==='/__dev/workflow/run'){
110
+ if(!String(req.headers['content-type']||'').startsWith('application/json'))return json(res,415,{error:'Send JSON.'});
111
+ const key=itemOf(url),body=JSON.parse(await readBody(req)),started=Date.now();lastKey=key;
112
+ try{const result=await workspace.runWorkflow(key,body.inputs,step=>send('step',{item:key,step}));return json(res,200,{...result,ms:Date.now()-started});}
113
+ catch(error){return json(res,200,{error:String(error?.message||error),code:error?.code||'RUN',ms:Date.now()-started});}
114
+ }
115
+ if(req.method==='GET'&&url.pathname==='/__dev/package'){
116
+ const key=itemOf(url),state=await stateFor(key);if(!state)return json(res,404,{error:'No such Block in this workspace.'});
117
+ return json(res,200,{revision:state.revision,folder:workspace?workspace.folderOf(key):folder,content:state.current.pkg||null,problem:state.current.problem||null,build:build||null,...(workspace?{item:key}:{})});
74
118
  }
75
- if(req.method==='GET'&&url.pathname==='/__dev/package')return json(res,200,{revision,folder,content:current.pkg||null,problem:current.problem||null,build:build||null});
76
119
  if(req.method==='POST'&&url.pathname==='/__dev/run'){
77
120
  if(!String(req.headers['content-type']||'').startsWith('application/json'))return json(res,415,{error:'Send JSON.'});
78
- const body=JSON.parse(await readBody(req));
79
- if(!current.pkg)return json(res,409,{error:current.problem||'The Block could not be loaded.'});
121
+ const key=itemOf(url),state=await stateFor(key);if(!state)return json(res,404,{error:'No such Block in this workspace.'});
122
+ const body=JSON.parse(await readBody(req));lastKey=key;
123
+ if(!state.current.pkg)return json(res,409,{error:state.current.problem||'The Block could not be loaded.'});
80
124
  const started=Date.now();
81
- try{const result=await run(current.pkg,body.input||{},current);return json(res,200,{...result,ms:Date.now()-started});}
125
+ try{const result=await state.session.run(state.current.pkg,body.input||{},state.current);return json(res,200,{...result,ms:Date.now()-started});}
82
126
  catch(error){return json(res,200,{error:String(error?.message||error),code:error?.code||'RUN',...(error?.report?{report:error.report}:{}),ms:Date.now()-started});}
83
127
  }
84
128
  // A file the person picks to run the Block on: its bytes stay in this process and on this machine.
@@ -97,11 +141,17 @@ export async function startDevServer({folder,port=4800,host='127.0.0.1',build,lo
97
141
  const located=/^\/api\/blocks\/module-files\/([a-f0-9]{64})$/.exec(url.pathname);
98
142
  if(req.method==='GET'&&located)return json(res,200,{url:`/__dev/files/${located[1]}`});
99
143
  const file=/^\/__dev\/files\/([a-f0-9]{64})$/.exec(url.pathname);
100
- if(req.method==='GET'&&file){const bytes=current.filesBySha?.[file[1]];return bytes?end(res,200,'application/octet-stream',bytes):end(res,404,'text/plain','Not found');}
144
+ if(req.method==='GET'&&file){for(const state of states.values()){const bytes=state.current.filesBySha?.[file[1]];if(bytes)return end(res,200,'application/octet-stream',bytes);}return end(res,404,'text/plain','Not found');}
101
145
  // StillMade's example files, as StillMade serves them (November 2026: dev showed no example photo).
102
146
  const example=req.method==='GET'&&exampleMediaName(url.pathname);
103
147
  if(example)return end(res,200,EXAMPLE_MEDIA[example].mimeType,Buffer.from(await readExampleMedia(example)));
104
- if(req.method==='GET'&&url.pathname.startsWith('/api/media/')){const found=await media(url.pathname,current);return found?end(res,200,found.mediaType,found.bytes):end(res,404,'text/plain','No stand-in or local file at this address');}
148
+ if(req.method==='GET'&&url.pathname.startsWith('/api/media/')){
149
+ // The Block last run answers first; a workspace then asks its workflow run and every other Block.
150
+ const order=[lastKey,...[...states.keys()].filter(key=>key!==lastKey)];
151
+ for(const key of order){const state=states.get(key);if(!state)continue;const found=await state.session.media(url.pathname,state.current);if(found)return end(res,200,found.mediaType,found.bytes);}
152
+ const made=workspace&&await workspace.media(url.pathname);if(made)return end(res,200,made.mediaType,made.bytes);
153
+ return end(res,404,'text/plain','No stand-in or local file at this address');
154
+ }
105
155
  if(req.method==='GET'||req.method==='HEAD')return serveHost(res,url.pathname);
106
156
  return end(res,404,'text/plain','Not found');
107
157
  }catch(error){return json(res,500,{error:String(error?.message||error)});}
@@ -116,8 +166,9 @@ export async function startDevServer({folder,port=4800,host='127.0.0.1',build,lo
116
166
  if(req.method!=='GET')return end(res,405,'text/plain','Method not allowed',cors);
117
167
  if(match[2]==='events'){
118
168
  res.writeHead(200,{...cors,'Content-Type':'text/event-stream','Cache-Control':'no-store',Connection:'keep-alive'});
119
- res.write(`event: hello\ndata: ${JSON.stringify({revision})}\n\n`);clients.add(res);req.on('close',()=>clients.delete(res));onEvent('live',{connected:true});return;
169
+ res.write(`event: hello\ndata: ${JSON.stringify({revision:single.revision})}\n\n`);clients.add(res);req.on('close',()=>clients.delete(res));onEvent('live',{connected:true});return;
120
170
  }
171
+ const {current,revision}=single;
121
172
  if(!current.pkg||current.problem)return end(res,409,'application/json',JSON.stringify({revision,error:current.problem||'The Block could not be loaded.'}),cors);
122
173
  onEvent('live',{revision});
123
174
  return end(res,200,'application/json',JSON.stringify({revision,...await bundle(current)}),cors);
@@ -128,7 +179,7 @@ export async function startDevServer({folder,port=4800,host='127.0.0.1',build,lo
128
179
  const keepAlive=setInterval(()=>{for(const client of clients)client.write(': keep-alive\n\n');},20000);keepAlive.unref?.();
129
180
  return {
130
181
  url:origin,folder,
131
- revision:()=>revision,
182
+ revision:(key='')=>states.get(key)?.revision??0,
132
183
  reload,
133
184
  async close(){clearInterval(keepAlive);watcher.close();for(const client of clients)client.end();await new Promise(resolve=>server.close(resolve));server.closeAllConnections?.();},
134
185
  };