@mevdragon/vidfarm-devcli 0.20.6 → 0.20.8

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 (154) hide show
  1. package/.agents/skills/editor-capabilities/SKILL.md +15 -1
  2. package/.agents/skills/vidfarm-director/SKILL.md +106 -0
  3. package/.agents/skills/vidfarm-director/recipes/find-and-fork-template.md +16 -0
  4. package/.agents/skills/vidfarm-director/recipes/local-edit-render-approve.md +13 -0
  5. package/.agents/skills/vidfarm-director/recipes/onboard-a-new-director.md +13 -0
  6. package/.agents/skills/vidfarm-director/recipes/retheme-template.md +17 -0
  7. package/.agents/skills/vidfarm-director/references/assets-and-sourcing.md +111 -0
  8. package/.agents/skills/vidfarm-director/references/automation-and-local-dev.md +243 -0
  9. package/.agents/skills/vidfarm-director/references/core-workflows.md +273 -0
  10. package/.agents/skills/vidfarm-director/references/editor-workflows.md +365 -0
  11. package/.agents/skills/vidfarm-director/references/onboarding.md +28 -0
  12. package/.agents/skills/vidfarm-director/references/primitives.md +265 -0
  13. package/SKILL.director.md +476 -260
  14. package/dist/src/cli.js +362 -96
  15. package/dist/src/devcli/clips.js +15 -10
  16. package/dist/src/devcli/doctor.js +2 -2
  17. package/dist/src/devcli/local-backend.js +46 -2
  18. package/dist/src/services/clip-curation/cost.js +5 -1
  19. package/dist/src/services/clip-curation/gemini.js +10 -0
  20. package/package.json +30 -10
  21. package/SKILL.platform.md +0 -432
  22. package/demo/README.md +0 -28
  23. package/demo/dist/app.css +0 -1
  24. package/demo/dist/app.js +0 -1850
  25. package/demo/dist/chunks/chunk-DXB73IDG.js +0 -1
  26. package/demo/dist/chunks/chunk-S7OWAJDS.js +0 -36
  27. package/demo/dist/chunks/chunk-VTIBZ6AN.js +0 -1
  28. package/demo/dist/chunks/dist-ADSJKBVE.js +0 -332
  29. package/demo/dist/chunks/domEditingLayers-VZMLL4AP-SGHWPND4.js +0 -1
  30. package/demo/dist/chunks/hyperframes-player-XB65TCD6.js +0 -425
  31. package/demo/dist/chunks/lib-XAQ37YOE.js +0 -1
  32. package/demo/dist/chunks/src-TJ2QYA4U.js +0 -207
  33. package/demo/dist/favicon.ico +0 -0
  34. package/demo/dist/icons/timeline/audio.svg +0 -7
  35. package/demo/dist/icons/timeline/captions.svg +0 -5
  36. package/demo/dist/icons/timeline/composition.svg +0 -12
  37. package/demo/dist/icons/timeline/image.svg +0 -18
  38. package/demo/dist/icons/timeline/music.svg +0 -10
  39. package/demo/dist/icons/timeline/text.svg +0 -3
  40. package/demo/dist/index.html +0 -15
  41. package/dist/src/account-pages-legacy.js +0 -9396
  42. package/dist/src/account-pages.js +0 -61
  43. package/dist/src/app.js +0 -21603
  44. package/dist/src/composition-runtime.js +0 -1053
  45. package/dist/src/config.js +0 -217
  46. package/dist/src/context.js +0 -447
  47. package/dist/src/dev-app-legacy.js +0 -739
  48. package/dist/src/dev-app.js +0 -6
  49. package/dist/src/devcli/migrate-local.js +0 -140
  50. package/dist/src/devcli/sync.js +0 -368
  51. package/dist/src/domain.js +0 -5
  52. package/dist/src/editor-chat-history.js +0 -82
  53. package/dist/src/editor-chat.js +0 -828
  54. package/dist/src/editor-dark-theme.js +0 -1128
  55. package/dist/src/frontend/debug.js +0 -71
  56. package/dist/src/frontend/discover-client.js +0 -130
  57. package/dist/src/frontend/discover-store.js +0 -23
  58. package/dist/src/frontend/file-directory.js +0 -1018
  59. package/dist/src/frontend/flockposter-cache-store.js +0 -124
  60. package/dist/src/frontend/homepage-client.js +0 -446
  61. package/dist/src/frontend/homepage-shared.js +0 -201
  62. package/dist/src/frontend/homepage-store.js +0 -66
  63. package/dist/src/frontend/homepage-view.js +0 -705
  64. package/dist/src/frontend/page-runtime-client.js +0 -132
  65. package/dist/src/frontend/page-runtime-store.js +0 -9
  66. package/dist/src/frontend/sentry.js +0 -42
  67. package/dist/src/frontend/template-editor-chat.js +0 -4181
  68. package/dist/src/help-page.js +0 -346
  69. package/dist/src/homepage.js +0 -1458
  70. package/dist/src/index.js +0 -16
  71. package/dist/src/instrument.js +0 -30
  72. package/dist/src/landing-page.js +0 -384
  73. package/dist/src/page-runtime.js +0 -2
  74. package/dist/src/page-shell.js +0 -1452
  75. package/dist/src/primitive-context.js +0 -416
  76. package/dist/src/primitive-registry.js +0 -3940
  77. package/dist/src/primitive-sdk.js +0 -4
  78. package/dist/src/primitives/hyperframes-media.js +0 -108
  79. package/dist/src/react-page-shell.js +0 -35
  80. package/dist/src/ready-post-schedule-component.js +0 -1540
  81. package/dist/src/registry.js +0 -296
  82. package/dist/src/reskin/agency-page.js +0 -299
  83. package/dist/src/reskin/calendar-page.js +0 -568
  84. package/dist/src/reskin/chat-page.js +0 -942
  85. package/dist/src/reskin/discover-page.js +0 -1788
  86. package/dist/src/reskin/document.js +0 -1587
  87. package/dist/src/reskin/help-page.js +0 -357
  88. package/dist/src/reskin/index-page.js +0 -62
  89. package/dist/src/reskin/inpaint-clipper-page.js +0 -890
  90. package/dist/src/reskin/inpaint-page.js +0 -2554
  91. package/dist/src/reskin/inpaint-video-page.js +0 -1339
  92. package/dist/src/reskin/job-runs-page.js +0 -477
  93. package/dist/src/reskin/library-page.js +0 -1634
  94. package/dist/src/reskin/login-page.js +0 -262
  95. package/dist/src/reskin/portfolio-page.js +0 -687
  96. package/dist/src/reskin/pricing-page.js +0 -390
  97. package/dist/src/reskin/settings-page.js +0 -732
  98. package/dist/src/reskin/theme.js +0 -711
  99. package/dist/src/runtime.js +0 -35
  100. package/dist/src/services/api-call-history.js +0 -249
  101. package/dist/src/services/auth.js +0 -152
  102. package/dist/src/services/billing-pricing.js +0 -39
  103. package/dist/src/services/billing.js +0 -241
  104. package/dist/src/services/cast.js +0 -127
  105. package/dist/src/services/chat-threads.js +0 -92
  106. package/dist/src/services/clip-records.js +0 -250
  107. package/dist/src/services/clip-search.js +0 -77
  108. package/dist/src/services/clip-vectors.js +0 -125
  109. package/dist/src/services/composition-sanitize.js +0 -124
  110. package/dist/src/services/composition-watch.js +0 -79
  111. package/dist/src/services/elevenlabs.js +0 -222
  112. package/dist/src/services/file-directory.js +0 -117
  113. package/dist/src/services/fork-access.js +0 -93
  114. package/dist/src/services/fork-manifest.js +0 -42
  115. package/dist/src/services/ghostcut.js +0 -179
  116. package/dist/src/services/hyperframes.js +0 -3654
  117. package/dist/src/services/job-capacity.js +0 -14
  118. package/dist/src/services/job-logs.js +0 -197
  119. package/dist/src/services/jobs.js +0 -136
  120. package/dist/src/services/local-dynamo.js +0 -0
  121. package/dist/src/services/media-processing.js +0 -766
  122. package/dist/src/services/primitive-media-lambda.js +0 -280
  123. package/dist/src/services/providers.js +0 -2748
  124. package/dist/src/services/rate-limits.js +0 -262
  125. package/dist/src/services/scene-annotations.js +0 -32
  126. package/dist/src/services/serverless-auth.js +0 -382
  127. package/dist/src/services/serverless-jobs.js +0 -1084
  128. package/dist/src/services/serverless-provider-keys.js +0 -409
  129. package/dist/src/services/serverless-records.js +0 -1515
  130. package/dist/src/services/serverless-template-configs.js +0 -75
  131. package/dist/src/services/storage.js +0 -461
  132. package/dist/src/services/swipe-customize.js +0 -437
  133. package/dist/src/services/template-certification.js +0 -413
  134. package/dist/src/services/template-loader.js +0 -99
  135. package/dist/src/services/template-runtime-bundles.js +0 -217
  136. package/dist/src/services/template-sources.js +0 -1017
  137. package/dist/src/services/upstream.js +0 -248
  138. package/dist/src/services/video-normalization.js +0 -2
  139. package/dist/src/services/webhooks.js +0 -62
  140. package/dist/src/template-editor-pages.js +0 -2576
  141. package/dist/src/template-editor-shell.js +0 -2893
  142. package/dist/src/template-sdk.js +0 -4
  143. package/dist/src/worker.js +0 -17
  144. package/public/assets/discover-client-app.js +0 -1
  145. package/public/assets/file-directory-app.js +0 -3
  146. package/public/assets/homepage-app.js +0 -54
  147. package/public/assets/homepage-client-app.js +0 -80
  148. package/public/assets/page-runtime-client-app.js +0 -94
  149. package/public/assets/placeholders/scene-placeholder.png +0 -0
  150. package/src/assets/SELLING_AWARENESS_STAGES.md +0 -579
  151. package/src/assets/SELLING_WITH_HOOKS.md +0 -377
  152. package/src/assets/SELLING_WITH_VSLS.md +0 -606
  153. package/src/assets/favicon.ico +0 -0
  154. package/src/assets/logo-vidfarm.png +0 -0
@@ -1,1458 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { renderToString } from "react-dom/server";
3
- import { HomepageShell } from "./frontend/homepage-view.js";
4
- import { escapeJsonForHtml, renderPageShell, resolveAccountDisplayName } from "./page-shell.js";
5
- import { TEMPLATE_EDITOR_SHELL_STYLES } from "./template-editor-shell.js";
6
- const HOMEPAGE_CLIENT_ASSET = "/assets/homepage-client-app.js";
7
- export function renderHomepage(input) {
8
- const boot = {
9
- templates: input.templates,
10
- account: input.account,
11
- loadEndpoint: input.loadEndpoint,
12
- skillEndpointPrefix: "/discover/skills/"
13
- };
14
- return renderPageShell({
15
- title: input.account.isLoggedIn
16
- ? resolveAccountDisplayName({ displayName: input.account.displayName, email: input.account.email }) || "VidFarm AI"
17
- : "Studio",
18
- mainClass: "is-wide",
19
- runtimeBoot: input.editorChat
20
- ? {
21
- pageKind: "legacy",
22
- title: "Discover",
23
- userId: input.account.userId ?? null,
24
- editorChat: input.editorChat
25
- }
26
- : undefined,
27
- body: `
28
- <div id="homepage-root">${renderToString(_jsx(HomepageShell, { account: input.account, templates: input.templates, visibleTemplates: input.templates, searchQuery: "", bookmarksOnly: false, bookmarks: new Set(), loading: input.templates.length === 0, error: null, view: "feed", popularTemplates: [], popularLoading: false, popularError: null, swipeStack: [], swipeLoading: false, swipeLoaded: false, swipeError: null, swipeCustomizing: 0, swipeTargetDepth: 5, swipeProductSet: true, swipeRefilling: false, onSearchQueryChange: undefined, onBookmarksOnlyChange: undefined, onViewChange: undefined, onToggleBookmark: undefined, onAddTemplate: undefined, onDeleteTemplate: undefined, skillEndpointPrefix: boot.skillEndpointPrefix }))}</div>
29
- <script type="application/json" id="homepage-boot">${escapeJsonForHtml(boot)}</script>
30
- <script type="module" src="${HOMEPAGE_CLIENT_ASSET}"></script>
31
- `,
32
- style: `
33
- ${TEMPLATE_EDITOR_SHELL_STYLES}
34
-
35
- #homepage-root {
36
- display: grid;
37
- height: 100%;
38
- min-height: 0;
39
- }
40
-
41
- .discover-frame {
42
- height: 100%;
43
- min-height: 0;
44
- }
45
-
46
- .discover-frame.has-chat-rail { padding-left: 432px; }
47
-
48
- .discover-frame .frame-body {
49
- grid-template-rows: minmax(0, 1fr);
50
- height: 100%;
51
- min-height: 0;
52
- overflow: hidden;
53
- }
54
-
55
- .discover-shell {
56
- display: grid;
57
- min-height: 0;
58
- height: 100%;
59
- gap: 0;
60
- overflow: hidden;
61
- border: 1px solid rgba(255, 255, 255, 0.82);
62
- border-radius: 32px;
63
- background: rgba(255, 251, 245, 0.84);
64
- box-shadow: var(--shadow);
65
- grid-template-columns: minmax(0, 1fr);
66
- grid-template-rows: auto minmax(0, 1fr);
67
- }
68
-
69
- .discover-filter-bar {
70
- position: sticky;
71
- top: 0;
72
- z-index: 5;
73
- display: flex;
74
- align-items: center;
75
- gap: 12px;
76
- padding: 14px 22px;
77
- border-bottom: 1px solid rgba(209, 219, 233, 0.7);
78
- background: rgba(255, 251, 245, 0.96);
79
- backdrop-filter: blur(8px);
80
- }
81
-
82
- .discover-filter-search {
83
- flex: 1 1 auto;
84
- min-width: 200px;
85
- }
86
-
87
- /* Feed/Popular segmented switch reuses the shared page-shell .view-toggle
88
- look; height-match the 44px filter-bar controls. */
89
- .discover-view-toggle { flex: 0 0 auto; }
90
- .discover-view-toggle .view-toggle-tab { min-height: 36px; padding: 0 16px; }
91
-
92
- .discover-filter-search input {
93
- min-height: 44px;
94
- padding-left: 46px;
95
- border-radius: 999px;
96
- }
97
-
98
- .discover-filter-search .search-icon { left: 14px; }
99
-
100
- .discover-filter-toggle {
101
- display: inline-flex;
102
- align-items: center;
103
- gap: 10px;
104
- min-height: 44px;
105
- padding: 0 16px;
106
- border: 1px solid rgba(209, 219, 233, 0.96);
107
- border-radius: 999px;
108
- background: rgba(255, 255, 255, 0.9);
109
- color: #55637b;
110
- cursor: pointer;
111
- font-size: 0.86rem;
112
- font-weight: 700;
113
- white-space: nowrap;
114
- }
115
-
116
- .discover-filter-toggle[data-active="true"] {
117
- border-color: rgba(219, 193, 122, 0.9);
118
- background: rgba(219, 193, 122, 0.16);
119
- color: #8a6b1b;
120
- }
121
-
122
- .discover-add-template-button {
123
- display: inline-flex;
124
- align-items: center;
125
- min-height: 44px;
126
- padding: 0 18px;
127
- border: 1px solid rgba(219, 193, 122, 0.9);
128
- border-radius: 999px;
129
- background: rgba(219, 193, 122, 0.16);
130
- color: #8a6b1b;
131
- cursor: pointer;
132
- font-size: 0.86rem;
133
- font-weight: 700;
134
- text-decoration: none;
135
- white-space: nowrap;
136
- }
137
-
138
- .discover-add-template-button:hover,
139
- .discover-add-template-button:focus-visible {
140
- background: rgba(219, 193, 122, 0.28);
141
- }
142
-
143
- .discover-mute-toggle {
144
- display: inline-flex;
145
- align-items: center;
146
- justify-content: center;
147
- width: 44px;
148
- height: 44px;
149
- min-height: 44px;
150
- padding: 0;
151
- border: 1px solid rgba(209, 219, 233, 0.96);
152
- border-radius: 999px;
153
- background: rgba(255, 255, 255, 0.9);
154
- color: #55637b;
155
- cursor: pointer;
156
- }
157
-
158
- .discover-mute-toggle svg {
159
- width: 18px;
160
- height: 18px;
161
- }
162
-
163
- .discover-mute-toggle[aria-pressed="true"] {
164
- border-color: rgba(219, 193, 122, 0.9);
165
- background: rgba(219, 193, 122, 0.16);
166
- color: #8a6b1b;
167
- }
168
-
169
- .discover-add-template-modal {
170
- grid-template-rows: auto auto;
171
- width: min(560px, 100%);
172
- }
173
-
174
- .discover-add-template-form {
175
- display: grid;
176
- gap: 14px;
177
- }
178
-
179
- .discover-add-template-hint {
180
- margin: 0;
181
- color: #6a7890;
182
- font-size: 0.9rem;
183
- line-height: 1.5;
184
- }
185
-
186
- .discover-add-template-field {
187
- display: grid;
188
- gap: 6px;
189
- }
190
-
191
- .discover-add-template-field input,
192
- .discover-add-template-field textarea {
193
- width: 100%;
194
- padding: 10px 14px;
195
- border: 1px solid rgba(209, 219, 233, 0.96);
196
- border-radius: 14px;
197
- background: rgba(255, 255, 255, 0.94);
198
- color: #2d3748;
199
- font-family: inherit;
200
- font-size: 0.94rem;
201
- box-sizing: border-box;
202
- }
203
-
204
- .discover-add-template-field textarea {
205
- resize: vertical;
206
- min-height: 92px;
207
- }
208
-
209
- .discover-add-template-optional {
210
- color: #9aa6ba;
211
- font-weight: 600;
212
- text-transform: none;
213
- letter-spacing: normal;
214
- }
215
-
216
- .discover-add-template-field input[type="file"] {
217
- padding: 8px 10px;
218
- cursor: pointer;
219
- }
220
-
221
- .discover-add-template-file-chip {
222
- display: flex;
223
- align-items: center;
224
- gap: 10px;
225
- padding: 10px 14px;
226
- border: 1px solid rgba(209, 219, 233, 0.96);
227
- border-radius: 14px;
228
- background: rgba(255, 255, 255, 0.94);
229
- color: #2d3748;
230
- font-size: 0.94rem;
231
- }
232
-
233
- .discover-add-template-file-name {
234
- flex: 1;
235
- min-width: 0;
236
- overflow: hidden;
237
- text-overflow: ellipsis;
238
- white-space: nowrap;
239
- }
240
-
241
- .discover-add-template-file-size {
242
- color: #9aa6ba;
243
- font-size: 0.86rem;
244
- white-space: nowrap;
245
- }
246
-
247
- .discover-add-template-file-clear {
248
- border: none;
249
- background: none;
250
- color: #6a7890;
251
- font-size: 0.9rem;
252
- cursor: pointer;
253
- padding: 2px 6px;
254
- border-radius: 8px;
255
- }
256
-
257
- .discover-add-template-file-clear:hover {
258
- background: rgba(209, 219, 233, 0.5);
259
- color: #2d3748;
260
- }
261
-
262
- .discover-add-template-error {
263
- margin: 0;
264
- color: #a14444;
265
- font-size: 0.88rem;
266
- }
267
-
268
- .discover-add-template-actions {
269
- display: flex;
270
- justify-content: flex-end;
271
- gap: 10px;
272
- }
273
-
274
- .discover-add-template-submit {
275
- min-width: 0;
276
- height: 48px;
277
- padding: 0 22px;
278
- }
279
-
280
- .discover-card-cta-disabled {
281
- opacity: 0.62;
282
- cursor: default;
283
- pointer-events: none;
284
- }
285
-
286
- .discover-card-menu {
287
- position: relative;
288
- }
289
-
290
- .discover-card-menu-trigger {
291
- display: inline-flex;
292
- align-items: center;
293
- justify-content: center;
294
- width: 58px;
295
- min-width: 58px;
296
- height: 58px;
297
- min-height: 58px;
298
- padding: 0;
299
- border: 1px solid rgba(209, 219, 233, 0.96);
300
- border-radius: 999px;
301
- background: rgba(255, 255, 255, 0.9);
302
- color: #55637b;
303
- cursor: pointer;
304
- }
305
-
306
- .discover-card-menu-trigger svg {
307
- width: 22px;
308
- height: 22px;
309
- }
310
-
311
- .discover-card-menu-trigger:hover,
312
- .discover-card-menu-trigger[aria-expanded="true"] {
313
- border-color: rgba(219, 193, 122, 0.9);
314
- color: #8a6b1b;
315
- }
316
-
317
- .discover-card-menu-panel {
318
- position: absolute;
319
- right: 0;
320
- top: calc(100% + 8px);
321
- z-index: 12;
322
- display: grid;
323
- min-width: 190px;
324
- padding: 6px;
325
- border: 1px solid rgba(209, 219, 233, 0.96);
326
- border-radius: 16px;
327
- background: rgba(255, 252, 247, 0.99);
328
- box-shadow: 0 18px 42px rgba(37, 45, 61, 0.16);
329
- }
330
-
331
- .discover-card-menu-item {
332
- display: block;
333
- width: 100%;
334
- padding: 10px 14px;
335
- border: 0;
336
- border-radius: 10px;
337
- background: transparent;
338
- color: #3c4a63;
339
- cursor: pointer;
340
- font-family: inherit;
341
- font-size: 0.9rem;
342
- font-weight: 600;
343
- text-align: left;
344
- text-decoration: none;
345
- box-sizing: border-box;
346
- }
347
-
348
- .discover-card-menu-item:hover,
349
- .discover-card-menu-item:focus-visible {
350
- background: rgba(219, 193, 122, 0.16);
351
- color: #8a6b1b;
352
- }
353
-
354
- .discover-card-menu-item.is-disabled {
355
- color: #a7b1c2;
356
- cursor: default;
357
- pointer-events: none;
358
- }
359
-
360
- .discover-card-menu-item.is-danger {
361
- color: #a14444;
362
- }
363
-
364
- .discover-card-menu-item.is-danger:hover,
365
- .discover-card-menu-item.is-danger:focus-visible {
366
- background: rgba(191, 38, 38, 0.08);
367
- color: #8f2f2f;
368
- }
369
-
370
- .private-pill {
371
- border-color: rgba(134, 92, 255, 0.3);
372
- background: rgba(134, 92, 255, 0.1);
373
- color: #5942a8;
374
- font-weight: 800;
375
- }
376
-
377
- .origin-pill {
378
- border-color: rgba(46, 160, 100, 0.35);
379
- background: rgba(46, 160, 100, 0.1);
380
- color: #1f7a4d;
381
- font-weight: 800;
382
- }
383
-
384
- .processing-pill {
385
- border-color: rgba(88, 132, 196, 0.4);
386
- background: rgba(88, 132, 196, 0.12);
387
- color: #3c5d8f;
388
- font-weight: 800;
389
- }
390
-
391
- .failed-pill {
392
- border-color: rgba(214, 107, 107, 0.4);
393
- background: rgba(191, 38, 38, 0.08);
394
- color: #a14444;
395
- font-weight: 800;
396
- }
397
-
398
- .discover-filter-group {
399
- display: grid;
400
- gap: 8px;
401
- }
402
-
403
- .discover-filter-block,
404
- .discover-filter-group,
405
- .discover-filter-panel-body {
406
- display: grid;
407
- gap: 10px;
408
- }
409
-
410
- .discover-filter-panel {
411
- display: contents;
412
- }
413
-
414
- .discover-filter-panel > summary {
415
- display: none;
416
- }
417
-
418
- .discover-filter-panel:not([open]) > .discover-filter-panel-body {
419
- display: grid;
420
- }
421
-
422
- .discover-filter-block p {
423
- max-width: 30ch;
424
- }
425
-
426
- .search-field {
427
- position: relative;
428
- }
429
-
430
- .search-icon {
431
- position: absolute;
432
- left: 16px;
433
- top: 50%;
434
- width: 20px;
435
- height: 20px;
436
- color: #9aa6ba;
437
- transform: translateY(-50%);
438
- }
439
-
440
- .search-icon svg {
441
- width: 20px;
442
- height: 20px;
443
- }
444
-
445
- .search-field input {
446
- padding-left: 54px;
447
- }
448
-
449
- .bookmarks-row {
450
- display: flex;
451
- align-items: center;
452
- justify-content: space-between;
453
- min-height: 60px;
454
- padding: 0 18px;
455
- border: 1px solid var(--line);
456
- border-radius: 999px;
457
- background: rgba(255, 255, 255, 0.9);
458
- color: #58667e;
459
- }
460
-
461
- .switch-label {
462
- cursor: pointer;
463
- }
464
-
465
- .switch-shell {
466
- position: relative;
467
- display: inline-flex;
468
- align-items: center;
469
- width: 44px;
470
- height: 24px;
471
- padding: 3px;
472
- border-radius: 999px;
473
- background: rgba(47, 55, 72, 0.08);
474
- cursor: pointer;
475
- transition: background 140ms ease;
476
- }
477
-
478
- /* Scope the hidden checkbox to the switch shell — page-shell's global
479
- input { width: 100% } would otherwise size it against the sticky
480
- filter bar and inflate the page's horizontal scroll range. */
481
- .switch-input {
482
- position: absolute;
483
- inset: 0;
484
- width: 100%;
485
- height: 100%;
486
- margin: 0;
487
- opacity: 0;
488
- pointer-events: none;
489
- }
490
-
491
- .switch-knob {
492
- display: block;
493
- width: 18px;
494
- height: 18px;
495
- border-radius: 999px;
496
- background: rgba(255, 255, 255, 0.98);
497
- box-shadow: 0 2px 8px rgba(15, 23, 42, 0.16);
498
- transition: transform 140ms ease;
499
- }
500
-
501
- .switch-input:checked + .switch-knob {
502
- transform: translateX(20px);
503
- }
504
-
505
- .switch-shell[data-active="true"] {
506
- background: #dbc17a;
507
- }
508
-
509
- .discover-results {
510
- display: grid;
511
- min-width: 0;
512
- min-height: 0;
513
- height: 100%;
514
- overflow: hidden;
515
- padding: 18px 22px 22px;
516
- }
517
-
518
- .discover-count { display: none; }
519
-
520
- .discover-results-scroll {
521
- display: grid;
522
- gap: 20px;
523
- align-content: stretch;
524
- height: 100%;
525
- min-height: 0;
526
- overflow-y: auto;
527
- padding-right: 6px;
528
- }
529
-
530
- /* ---- Swipe deck ---- */
531
- .swipe-deck-wrap {
532
- display: flex;
533
- flex-direction: column;
534
- align-items: center;
535
- justify-content: center;
536
- gap: 18px;
537
- height: 100%;
538
- min-height: 0;
539
- padding: 8px 0 4px;
540
- }
541
- .swipe-deck {
542
- position: relative;
543
- width: min(320px, 62vw);
544
- aspect-ratio: 9 / 16;
545
- max-height: 66vh;
546
- flex: 0 0 auto;
547
- }
548
- .swipe-card {
549
- position: absolute;
550
- inset: 0;
551
- border-radius: 22px;
552
- overflow: hidden;
553
- background: #0d0b10;
554
- box-shadow: 0 18px 44px rgba(31, 20, 8, 0.24), 0 2px 8px rgba(31, 20, 8, 0.12);
555
- touch-action: none;
556
- will-change: transform;
557
- user-select: none;
558
- }
559
- .swipe-card:first-child { cursor: grab; }
560
- .swipe-card:first-child:active { cursor: grabbing; }
561
- .swipe-sound {
562
- position: absolute;
563
- top: 10px;
564
- right: 10px;
565
- z-index: 200;
566
- width: 40px;
567
- height: 40px;
568
- border-radius: 50%;
569
- border: 0;
570
- background: rgba(0, 0, 0, 0.45);
571
- color: #fff;
572
- font-size: 17px;
573
- line-height: 1;
574
- cursor: pointer;
575
- display: flex;
576
- align-items: center;
577
- justify-content: center;
578
- backdrop-filter: blur(4px);
579
- transition: background 0.15s ease, transform 0.15s ease;
580
- }
581
- .swipe-sound:hover { background: rgba(0, 0, 0, 0.68); transform: scale(1.06); }
582
- .swipe-card-preview,
583
- .swipe-card-fallback {
584
- position: absolute;
585
- inset: 0;
586
- width: 100%;
587
- height: 100%;
588
- border: 0;
589
- display: block;
590
- }
591
- .swipe-card-fallback {
592
- display: flex;
593
- align-items: center;
594
- justify-content: center;
595
- text-align: center;
596
- padding: 22px;
597
- color: rgba(255, 255, 255, 0.72);
598
- font-size: 15px;
599
- font-weight: 600;
600
- background: linear-gradient(160deg, #2a2431, #16121c);
601
- }
602
- .swipe-card-overlay {
603
- position: absolute;
604
- left: 0;
605
- right: 0;
606
- bottom: 0;
607
- padding: 40px 16px 16px;
608
- background: linear-gradient(0deg, rgba(0, 0, 0, 0.72), rgba(0, 0, 0, 0));
609
- color: #fff;
610
- pointer-events: none;
611
- }
612
- .swipe-card-title { font-size: 16px; font-weight: 800; line-height: 1.25; }
613
- .swipe-card-caption {
614
- margin-top: 4px;
615
- font-size: 12.5px;
616
- line-height: 1.35;
617
- color: rgba(255, 255, 255, 0.86);
618
- display: -webkit-box;
619
- -webkit-line-clamp: 2;
620
- -webkit-box-orient: vertical;
621
- overflow: hidden;
622
- }
623
- .swipe-stamp {
624
- position: absolute;
625
- top: 20px;
626
- padding: 6px 14px;
627
- border-radius: 10px;
628
- font-weight: 900;
629
- font-size: 20px;
630
- letter-spacing: 0.06em;
631
- text-transform: uppercase;
632
- border: 3px solid currentColor;
633
- pointer-events: none;
634
- }
635
- .swipe-stamp-yes { left: 18px; color: #22c55e; transform: rotate(-14deg); }
636
- .swipe-stamp-no { right: 18px; color: #ef4444; transform: rotate(14deg); }
637
- /* Buttons flank the deck, filling the empty side space. */
638
- .swipe-deck-row {
639
- display: flex;
640
- align-items: center;
641
- justify-content: center;
642
- gap: clamp(10px, 3vw, 56px);
643
- width: 100%;
644
- flex: 1 1 auto;
645
- min-height: 0;
646
- }
647
- .swipe-action {
648
- width: 60px;
649
- height: 60px;
650
- border-radius: 50%;
651
- border: none;
652
- font-size: 26px;
653
- font-weight: 800;
654
- cursor: pointer;
655
- display: flex;
656
- align-items: center;
657
- justify-content: center;
658
- flex: 0 0 auto;
659
- box-shadow: 0 8px 20px rgba(31, 20, 8, 0.18);
660
- transition: transform 0.12s ease, filter 0.12s ease;
661
- }
662
- .swipe-action:hover:not(:disabled) { transform: translateY(-3px); }
663
- .swipe-action:disabled { opacity: 0.5; cursor: default; }
664
- .swipe-action-reject { background: #fff; color: #ef4444; border: 1.5px solid rgba(239, 68, 68, 0.35); }
665
- .swipe-action-approve { background: #22c55e; color: #fff; }
666
- .swipe-status {
667
- margin-top: 14px;
668
- text-align: center;
669
- font-size: 13px;
670
- font-weight: 700;
671
- color: #7a6a52;
672
- flex: 0 0 auto;
673
- }
674
- .swipe-action-error {
675
- color: #b91c1c;
676
- font-size: 13px;
677
- font-weight: 600;
678
- text-align: center;
679
- }
680
- .swipe-empty {
681
- display: flex;
682
- flex-direction: column;
683
- align-items: center;
684
- justify-content: center;
685
- text-align: center;
686
- gap: 8px;
687
- height: 100%;
688
- padding: 24px;
689
- color: #6f6047;
690
- }
691
- .swipe-empty-title { font-size: 18px; font-weight: 800; color: #3a2f1e; }
692
- .swipe-empty-sub { font-size: 14px; max-width: 340px; line-height: 1.45; }
693
- .swipe-empty-cta {
694
- margin-top: 10px;
695
- padding: 10px 20px;
696
- border-radius: 999px;
697
- background: #f5a524;
698
- color: #2a1c00;
699
- font-weight: 800;
700
- text-decoration: none;
701
- }
702
- .swipe-spinner {
703
- width: 34px;
704
- height: 34px;
705
- border-radius: 50%;
706
- border: 3px solid rgba(245, 165, 36, 0.28);
707
- border-top-color: #f5a524;
708
- animation: swipe-spin 0.8s linear infinite;
709
- margin-bottom: 4px;
710
- }
711
- @keyframes swipe-spin { to { transform: rotate(360deg); } }
712
-
713
- .discover-count {
714
- position: sticky;
715
- top: 0;
716
- z-index: 2;
717
- padding-bottom: 2px;
718
- background: linear-gradient(180deg, rgba(255, 251, 245, 0.98), rgba(255, 251, 245, 0.86) 72%, rgba(255, 251, 245, 0));
719
- }
720
-
721
- .discover-count {
722
- justify-self: end;
723
- color: #8d99ae;
724
- font-size: 0.9rem;
725
- }
726
-
727
- .discover-list {
728
- list-style: none;
729
- margin: 0;
730
- padding: 0;
731
- display: grid;
732
- gap: 22px;
733
- }
734
-
735
- /* Popular view: the curated picks render with the same autoplay
736
- TemplateCard rows as the Feed, just grouped under category headings. */
737
- .discover-popular {
738
- display: grid;
739
- gap: 34px;
740
- }
741
-
742
- .discover-popular-group {
743
- display: grid;
744
- gap: 22px;
745
- }
746
-
747
- .discover-popular-group-label {
748
- margin: 0;
749
- font-size: 0.78rem;
750
- font-weight: 800;
751
- letter-spacing: 0.14em;
752
- text-transform: uppercase;
753
- color: #a9884a;
754
- }
755
-
756
- .discover-card {
757
- display: grid;
758
- grid-template-columns: minmax(220px, 340px) minmax(0, 1fr);
759
- gap: 24px;
760
- padding: 28px;
761
- border: 1px solid rgba(255, 255, 255, 0.82);
762
- border-radius: 30px;
763
- background: rgba(255, 255, 255, 0.76);
764
- box-shadow: 0 18px 44px rgba(15, 23, 42, 0.06);
765
- }
766
-
767
- .discover-card-media {
768
- position: relative;
769
- display: flex;
770
- align-items: center;
771
- justify-content: center;
772
- min-height: 280px;
773
- max-height: 540px;
774
- overflow: hidden;
775
- border: 1px solid rgba(209, 219, 233, 0.96);
776
- border-radius: 30px;
777
- background: rgba(255, 255, 255, 0.84);
778
- }
779
-
780
- .discover-card-media-button {
781
- width: 100%;
782
- padding: 0;
783
- color: inherit;
784
- cursor: zoom-in;
785
- transition:
786
- border-color 140ms ease,
787
- box-shadow 140ms ease,
788
- transform 140ms ease;
789
- }
790
-
791
- .discover-card-media-button:hover,
792
- .discover-card-media-button:focus-visible {
793
- border-color: rgba(219, 193, 122, 0.96);
794
- box-shadow: 0 18px 38px rgba(138, 107, 27, 0.16);
795
- transform: translateY(-1px);
796
- }
797
-
798
- .discover-card-media-affordance {
799
- position: absolute;
800
- right: 14px;
801
- bottom: 14px;
802
- display: inline-flex;
803
- align-items: center;
804
- justify-content: center;
805
- min-height: 34px;
806
- padding: 0 14px;
807
- border: 1px solid rgba(255, 255, 255, 0.72);
808
- border-radius: 999px;
809
- background: rgba(33, 41, 56, 0.72);
810
- color: #fffaf3;
811
- font-size: 0.78rem;
812
- font-weight: 800;
813
- letter-spacing: 0.08em;
814
- line-height: 1;
815
- opacity: 0;
816
- text-transform: uppercase;
817
- transform: translateY(4px);
818
- transition: opacity 140ms ease, transform 140ms ease;
819
- }
820
-
821
- .discover-card-media-button:hover .discover-card-media-affordance,
822
- .discover-card-media-button:focus-visible .discover-card-media-affordance {
823
- opacity: 1;
824
- transform: translateY(0);
825
- }
826
-
827
- .discover-card-copy {
828
- display: grid;
829
- align-content: start;
830
- gap: 24px;
831
- min-width: 0;
832
- }
833
-
834
- .discover-card-head {
835
- display: flex;
836
- align-items: start;
837
- justify-content: space-between;
838
- gap: 18px;
839
- }
840
-
841
- .discover-card-title-wrap {
842
- min-width: 0;
843
- }
844
-
845
- .discover-card-title-wrap h2 {
846
- font-size: 1.85rem;
847
- overflow-wrap: anywhere;
848
- word-break: break-word;
849
- }
850
-
851
- .pill-tag {
852
- max-width: 100%;
853
- overflow-wrap: anywhere;
854
- word-break: break-all;
855
- }
856
-
857
- .discover-card-meta {
858
- margin-top: 14px;
859
- color: #b0b9c8;
860
- font-size: 0.95rem;
861
- }
862
-
863
- .discover-card-actions {
864
- display: flex;
865
- align-items: center;
866
- gap: 12px;
867
- }
868
-
869
- .bookmark-button {
870
- width: 58px;
871
- min-width: 58px;
872
- height: 58px;
873
- min-height: 58px;
874
- padding: 0;
875
- border-color: rgba(209, 219, 233, 0.96);
876
- background: rgba(255, 255, 255, 0.9);
877
- color: #55637b;
878
- transition:
879
- background 140ms ease,
880
- border-color 140ms ease,
881
- color 140ms ease,
882
- box-shadow 140ms ease;
883
- }
884
-
885
- .bookmark-button svg {
886
- width: 22px;
887
- height: 22px;
888
- }
889
-
890
- .bookmark-button[data-active="true"] {
891
- border-color: rgba(219, 193, 122, 0.9);
892
- background: rgba(219, 193, 122, 0.2);
893
- color: #8a6b1b;
894
- box-shadow: 0 10px 24px rgba(138, 107, 27, 0.14);
895
- }
896
-
897
- .cta-button {
898
- min-width: 132px;
899
- height: 58px;
900
- padding: 0 28px;
901
- }
902
-
903
- .discover-card-body p {
904
- color: #5f6e86;
905
- font-size: 1.02rem;
906
- line-height: 1.65;
907
- }
908
-
909
- .discover-card-tags {
910
- display: flex;
911
- flex-wrap: wrap;
912
- gap: 10px;
913
- padding-top: 18px;
914
- border-top: 1px solid rgba(209, 219, 233, 0.8);
915
- }
916
-
917
- .pill-tag {
918
- display: inline-flex;
919
- align-items: center;
920
- min-height: 34px;
921
- padding: 0 14px;
922
- border: 1px solid rgba(209, 219, 233, 0.96);
923
- border-radius: 999px;
924
- background: rgba(255, 255, 255, 0.92);
925
- color: #687791;
926
- font-size: 0.86rem;
927
- text-decoration: none;
928
- }
929
-
930
- .difficulty-pill {
931
- border-color: rgba(219, 193, 122, 0.42);
932
- background: rgba(219, 193, 122, 0.16);
933
- color: #6f5514;
934
- font-weight: 800;
935
- }
936
-
937
- .difficulty-pill[data-difficulty="hard"],
938
- .difficulty-pill[data-difficulty="expert"] {
939
- border-color: rgba(134, 92, 255, 0.3);
940
- background: rgba(134, 92, 255, 0.1);
941
- color: #5942a8;
942
- }
943
-
944
- .copy-inline {
945
- position: relative;
946
- gap: 8px;
947
- cursor: pointer;
948
- transition:
949
- border-color 140ms ease,
950
- background 140ms ease,
951
- color 140ms ease,
952
- box-shadow 140ms ease;
953
- }
954
-
955
- .copy-inline-label {
956
- transition: opacity 140ms ease, transform 140ms ease;
957
- }
958
-
959
- .copy-inline-feedback {
960
- color: #8a6b1b;
961
- font-size: 0.79rem;
962
- font-weight: 700;
963
- letter-spacing: 0.02em;
964
- opacity: 0;
965
- transform: translateY(1px);
966
- transition: opacity 140ms ease, transform 140ms ease;
967
- pointer-events: none;
968
- }
969
-
970
- .copy-inline[data-state="done"] {
971
- border-color: rgba(219, 193, 122, 0.96);
972
- background: rgba(219, 193, 122, 0.18);
973
- color: #5f6e86;
974
- box-shadow: 0 8px 18px rgba(138, 107, 27, 0.08);
975
- }
976
-
977
- .copy-inline[data-state="done"] .copy-inline-feedback {
978
- opacity: 1;
979
- transform: translateY(0);
980
- }
981
-
982
- .copy-inline[data-state="done"] .copy-inline-label {
983
- opacity: 0.82;
984
- }
985
-
986
- .copy-inline[data-state="error"] {
987
- border-color: rgba(214, 107, 107, 0.35);
988
- background: rgba(191, 38, 38, 0.08);
989
- }
990
-
991
- .copy-inline[data-state="error"] .copy-inline-feedback {
992
- opacity: 1;
993
- transform: translateY(0);
994
- color: #a14444;
995
- }
996
-
997
- .preview {
998
- width: 100%;
999
- height: 100%;
1000
- object-fit: cover;
1001
- object-position: top center;
1002
- }
1003
-
1004
- .preview-empty {
1005
- display: flex;
1006
- align-items: center;
1007
- justify-content: center;
1008
- color: #8d99ae;
1009
- }
1010
-
1011
- .discover-media-modal-backdrop {
1012
- position: fixed;
1013
- inset: 0;
1014
- /* Above the mobile chat rail overlay (z-index 110) so dialogs are
1015
- never buried under the FAB layer. */
1016
- z-index: 130;
1017
- display: flex;
1018
- align-items: center;
1019
- justify-content: center;
1020
- padding: 24px;
1021
- background: rgba(28, 34, 45, 0.76);
1022
- backdrop-filter: blur(18px);
1023
- }
1024
-
1025
- .discover-media-modal {
1026
- display: grid;
1027
- grid-template-rows: auto minmax(0, 1fr);
1028
- gap: 14px;
1029
- width: min(1180px, 100%);
1030
- max-height: calc(100dvh - 48px);
1031
- padding: 16px;
1032
- border: 1px solid rgba(255, 255, 255, 0.28);
1033
- border-radius: 24px;
1034
- background: rgba(255, 251, 245, 0.96);
1035
- box-shadow: 0 28px 80px rgba(5, 10, 20, 0.34);
1036
- }
1037
-
1038
- .discover-media-modal-head {
1039
- display: grid;
1040
- grid-template-columns: minmax(0, 1fr) auto;
1041
- align-items: center;
1042
- gap: 12px;
1043
- }
1044
-
1045
- .discover-media-modal-head h2 {
1046
- min-width: 0;
1047
- overflow: hidden;
1048
- color: #283244;
1049
- font-size: 1.05rem;
1050
- line-height: 1.15;
1051
- text-overflow: ellipsis;
1052
- white-space: nowrap;
1053
- }
1054
-
1055
- .discover-media-modal-actions {
1056
- display: inline-flex;
1057
- align-items: center;
1058
- gap: 8px;
1059
- }
1060
-
1061
- .discover-media-modal-action {
1062
- display: inline-flex;
1063
- align-items: center;
1064
- justify-content: center;
1065
- width: 44px;
1066
- min-width: 44px;
1067
- height: 44px;
1068
- min-height: 44px;
1069
- padding: 0;
1070
- border-color: rgba(209, 219, 233, 0.96);
1071
- border-style: solid;
1072
- border-width: 1px;
1073
- border-radius: 999px;
1074
- background: rgba(255, 255, 255, 0.9);
1075
- color: #53627c;
1076
- cursor: pointer;
1077
- text-decoration: none;
1078
- }
1079
-
1080
- .discover-media-modal-action:hover,
1081
- .discover-media-modal-action:focus-visible {
1082
- border-color: rgba(173, 135, 46, 0.5);
1083
- color: #8a6b1b;
1084
- }
1085
-
1086
- .discover-media-modal-action[data-state="done"] {
1087
- border-color: rgba(56, 142, 91, 0.42);
1088
- background: rgba(56, 142, 91, 0.12);
1089
- color: #2f7d4f;
1090
- }
1091
-
1092
- .discover-media-modal-action[data-state="error"] {
1093
- border-color: rgba(161, 68, 68, 0.42);
1094
- background: rgba(161, 68, 68, 0.1);
1095
- color: #a14444;
1096
- }
1097
-
1098
- .discover-media-modal-action svg {
1099
- width: 20px;
1100
- height: 20px;
1101
- }
1102
-
1103
- .discover-media-modal-stage {
1104
- display: flex;
1105
- align-items: center;
1106
- justify-content: center;
1107
- min-height: 0;
1108
- overflow: hidden;
1109
- border-radius: 18px;
1110
- background: #111827;
1111
- }
1112
-
1113
- .discover-media-modal-stage img,
1114
- .discover-media-modal-stage video {
1115
- display: block;
1116
- width: auto;
1117
- height: auto;
1118
- max-width: 100%;
1119
- max-height: calc(100dvh - 154px);
1120
- object-fit: contain;
1121
- }
1122
-
1123
- .empty {
1124
- display: none;
1125
- }
1126
-
1127
- .empty[data-visible="true"] {
1128
- display: block;
1129
- }
1130
-
1131
- @media (max-width: 1180px) {
1132
- .discover-frame.has-chat-rail { padding-left: 0; }
1133
-
1134
- .discover-card {
1135
- grid-template-columns: minmax(200px, 300px) minmax(0, 1fr);
1136
- gap: 20px;
1137
- padding: 24px;
1138
- }
1139
-
1140
- .discover-card-media {
1141
- min-height: 240px;
1142
- }
1143
-
1144
- .discover-results-scroll {
1145
- max-height: none;
1146
- }
1147
- }
1148
-
1149
- /* Logged-out copilot rail: on phones the rail is a transparent
1150
- pointer-events:none overlay (template-editor-shell ≤1024px rules), so
1151
- hide the inline placeholder there — the login FAB anchor takes over. */
1152
- a.vf-editor-chat-mobile-fab {
1153
- cursor: pointer;
1154
- text-decoration: none;
1155
- }
1156
-
1157
- @media (max-width: 1024px) {
1158
- /* !important: the placeholder sets display:flex inline */
1159
- .editor-chat-panel--logged-out {
1160
- display: none !important;
1161
- }
1162
-
1163
- /* The shared shell styles now default brainstorm surfaces to the
1164
- FAB + popup dock, so Discover needs no chat overrides here. */
1165
-
1166
- /* iOS zooms the page when focusing sub-16px inputs; modals must not
1167
- trigger that. */
1168
- .discover-media-modal input,
1169
- .discover-media-modal textarea,
1170
- .discover-media-modal select {
1171
- font-size: 16px;
1172
- }
1173
-
1174
- .discover-media-modal {
1175
- overflow-y: auto;
1176
- }
1177
- }
1178
-
1179
- @media (max-width: 1024px) {
1180
- .discover-frame,
1181
- .discover-frame .frame-body,
1182
- .discover-shell,
1183
- .discover-results,
1184
- .discover-results-scroll {
1185
- min-height: auto;
1186
- height: auto;
1187
- overflow: visible;
1188
- }
1189
-
1190
- .discover-frame .frame-body {
1191
- overflow: visible;
1192
- padding-top: 10px;
1193
- padding-bottom: 4px;
1194
- }
1195
-
1196
- .discover-shell {
1197
- display: grid;
1198
- min-width: 0;
1199
- grid-template-columns: 1fr;
1200
- border-radius: 24px;
1201
- overflow: visible;
1202
- }
1203
-
1204
- .discover-sidebar,
1205
- .discover-results {
1206
- padding: 14px;
1207
- }
1208
-
1209
- .discover-sidebar {
1210
- gap: 14px;
1211
- border-right: 0;
1212
- border-bottom: 1px solid rgba(209, 219, 233, 0.8);
1213
- border-radius: 24px 24px 0 0;
1214
- }
1215
-
1216
- .discover-filter-panel {
1217
- display: grid;
1218
- gap: 14px;
1219
- }
1220
-
1221
- .discover-filter-panel > summary {
1222
- display: flex;
1223
- align-items: center;
1224
- justify-content: space-between;
1225
- gap: 12px;
1226
- min-height: 54px;
1227
- padding: 0 16px;
1228
- border: 1px solid rgba(209, 219, 233, 0.96);
1229
- border-radius: 18px;
1230
- background: rgba(255, 255, 255, 0.9);
1231
- color: #53627c;
1232
- cursor: pointer;
1233
- list-style: none;
1234
- font-size: 0.88rem;
1235
- font-weight: 800;
1236
- letter-spacing: 0.16em;
1237
- text-transform: uppercase;
1238
- }
1239
-
1240
- .discover-filter-panel > summary::-webkit-details-marker {
1241
- display: none;
1242
- }
1243
-
1244
- .discover-filter-panel > summary::after {
1245
- content: "";
1246
- width: 10px;
1247
- height: 10px;
1248
- border-right: 2px solid currentColor;
1249
- border-bottom: 2px solid currentColor;
1250
- transform: rotate(45deg) translateY(-2px);
1251
- transition: transform 140ms ease;
1252
- }
1253
-
1254
- .discover-filter-panel[open] > summary::after {
1255
- transform: rotate(225deg) translateY(-1px);
1256
- }
1257
-
1258
- .discover-filter-panel:not([open]) > .discover-filter-panel-body {
1259
- display: none;
1260
- }
1261
-
1262
- .discover-filter-panel-body {
1263
- gap: 14px;
1264
- }
1265
-
1266
- .discover-filter-block {
1267
- display: none;
1268
- }
1269
-
1270
- .discover-filter-group {
1271
- gap: 8px;
1272
- }
1273
-
1274
- .bookmarks-row {
1275
- min-height: 52px;
1276
- padding: 0 14px;
1277
- }
1278
-
1279
- .discover-results-scroll {
1280
- gap: 14px;
1281
- padding-right: 0;
1282
- }
1283
-
1284
- .discover-card {
1285
- grid-template-columns: 1fr;
1286
- gap: 16px;
1287
- padding: 14px;
1288
- border-radius: 22px;
1289
- }
1290
-
1291
- .discover-card-media {
1292
- min-height: 0;
1293
- max-height: none;
1294
- /* Feed content is predominantly 9:16 vertical video; a landscape
1295
- crop leaves only a thin horizontal band visible on phones. */
1296
- aspect-ratio: 4 / 5;
1297
- border-radius: 20px;
1298
- }
1299
-
1300
- .discover-card-media-affordance {
1301
- opacity: 1;
1302
- transform: none;
1303
- }
1304
-
1305
- .discover-card-copy {
1306
- gap: 16px;
1307
- }
1308
-
1309
- /* Grid/flex items default to min-width:auto, letting the nowrap
1310
- template-id pill's min-content width push the whole card past the
1311
- viewport. Break that chain explicitly. */
1312
- .discover-card,
1313
- .discover-card-copy,
1314
- .discover-card-head,
1315
- .discover-card-title-wrap,
1316
- .discover-card-body,
1317
- .discover-card-tags,
1318
- .discover-card-meta {
1319
- min-width: 0;
1320
- max-width: 100%;
1321
- }
1322
-
1323
- .discover-card-head {
1324
- display: grid;
1325
- grid-template-columns: minmax(0, 1fr);
1326
- gap: 14px;
1327
- }
1328
-
1329
- .discover-card-title-wrap h2 {
1330
- font-size: 1.55rem;
1331
- /* >1 so wrapped lines of long user-submitted titles don't collide */
1332
- line-height: 1.05;
1333
- }
1334
-
1335
- .discover-card-meta {
1336
- margin-top: 8px;
1337
- font-size: 0.86rem;
1338
- }
1339
-
1340
- .discover-card-actions {
1341
- display: grid;
1342
- grid-template-columns: 52px minmax(0, 1fr) 52px;
1343
- gap: 10px;
1344
- width: 100%;
1345
- }
1346
-
1347
- .bookmark-button,
1348
- .discover-card-menu-trigger {
1349
- width: 52px;
1350
- min-width: 52px;
1351
- height: 52px;
1352
- min-height: 52px;
1353
- }
1354
-
1355
- .cta-button {
1356
- width: 100%;
1357
- min-width: 0;
1358
- height: 52px;
1359
- padding: 0 18px;
1360
- }
1361
-
1362
- .discover-card-body p {
1363
- font-size: 0.96rem;
1364
- line-height: 1.58;
1365
- }
1366
-
1367
- .discover-card-tags {
1368
- gap: 8px;
1369
- padding-top: 14px;
1370
- }
1371
-
1372
- .pill-tag {
1373
- max-width: 100%;
1374
- min-height: 44px;
1375
- }
1376
-
1377
- .copy-inline {
1378
- min-width: 0;
1379
- }
1380
-
1381
- .copy-inline-label {
1382
- min-width: 0;
1383
- overflow: hidden;
1384
- text-overflow: ellipsis;
1385
- white-space: nowrap;
1386
- }
1387
-
1388
- .discover-count {
1389
- position: static;
1390
- justify-self: start;
1391
- padding-bottom: 0;
1392
- background: transparent;
1393
- }
1394
-
1395
- .search-field input {
1396
- min-height: 52px;
1397
- font-size: 16px;
1398
- }
1399
-
1400
- /* Stack the filter bar: the desktop grid's min track sizes
1401
- (minmax(220px,1fr) + three autos) exceed phone widths and force the
1402
- whole discover shell into horizontal overflow. */
1403
- .discover-filter-bar {
1404
- display: flex;
1405
- flex-wrap: wrap;
1406
- gap: 10px;
1407
- padding: 12px 14px;
1408
- }
1409
-
1410
- .discover-filter-search {
1411
- flex: 1 1 100%;
1412
- min-width: 0;
1413
- }
1414
-
1415
- .discover-filter-toggle,
1416
- .discover-add-template-button {
1417
- flex: 1 1 auto;
1418
- justify-content: center;
1419
- }
1420
-
1421
- .discover-mute-toggle {
1422
- flex: 0 0 auto;
1423
- }
1424
-
1425
- /* Feed/Popular leads its own full-width row on phones. */
1426
- .discover-view-toggle {
1427
- flex: 1 1 100%;
1428
- }
1429
-
1430
- .discover-view-toggle .view-toggle-tab {
1431
- flex: 1 1 auto;
1432
- }
1433
-
1434
- .discover-media-modal-backdrop {
1435
- align-items: stretch;
1436
- padding: 12px;
1437
- }
1438
-
1439
- .discover-media-modal {
1440
- width: 100%;
1441
- max-height: calc(100dvh - 24px);
1442
- padding: 12px;
1443
- border-radius: 20px;
1444
- }
1445
-
1446
- .discover-media-modal-stage {
1447
- border-radius: 14px;
1448
- }
1449
-
1450
- .discover-media-modal-stage img,
1451
- .discover-media-modal-stage video {
1452
- max-height: calc(100dvh - 126px);
1453
- }
1454
- }
1455
- `
1456
- });
1457
- }
1458
- //# sourceMappingURL=homepage.js.map