@vanillaskyai/video 0.5.8 → 0.7.0

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 (135) hide show
  1. package/CHANGELOG.md +178 -0
  2. package/PUBLIC-API.md +129 -9
  3. package/README.md +70 -108
  4. package/dist/{bg-confetti-SHQI7ATB.js → bg-confetti-HITCGLGD.js} +1 -1
  5. package/dist/{bg-emoji-XYFRA63Q.js → bg-emoji-VU4UZYZN.js} +1 -1
  6. package/dist/{bg-media-FEBATBT2.js → bg-media-L34PDQXJ.js} +4 -4
  7. package/dist/{brand-message-P56WEJPG.js → brand-message-FUJ4STFO.js} +3 -3
  8. package/dist/{builtin-server-YHEZ2JRF.js → builtin-server-KB7FKF6A.js} +2 -2
  9. package/dist/{chart-bar-ZB45ZRKH.js → chart-bar-EGPHJATL.js} +4 -4
  10. package/dist/{chart-counter-HFYNE4HT.js → chart-counter-5FFWQNZO.js} +4 -4
  11. package/dist/{chart-progress-ring-ZKMLRGSB.js → chart-progress-ring-JMXQLMLC.js} +4 -4
  12. package/dist/check-runtime.js +2 -2
  13. package/dist/{chunk-66MNRUCR.js → chunk-2PYO6VAC.js} +51 -3
  14. package/dist/{chunk-ZQQQAAKP.js → chunk-2XT4MZ76.js} +33 -2
  15. package/dist/chunk-5CDAM24P.js +31 -0
  16. package/dist/{chunk-PNS52FL4.js → chunk-5SLENAJW.js} +19 -6
  17. package/dist/{chunk-EFL34TXF.js → chunk-AITKH6QT.js} +24 -8
  18. package/dist/{chunk-HT6BGERF.js → chunk-FRN6WKHA.js} +28 -10
  19. package/dist/{chunk-FZHMQFG3.js → chunk-GAIOHGNR.js} +5 -21
  20. package/dist/{chunk-3RV4YKB3.js → chunk-JNN3EYVP.js} +51 -26
  21. package/dist/{chunk-NGY3TNND.js → chunk-K746NUIP.js} +70 -50
  22. package/dist/{chunk-HVCPEAQF.js → chunk-LKBZX7GV.js} +9 -6
  23. package/dist/{chunk-G66Z5CWR.js → chunk-MMUXVA47.js} +27 -3
  24. package/dist/{chunk-6M6DATLW.js → chunk-MXZSDGZQ.js} +6 -5
  25. package/dist/{chunk-3OU7HIEB.js → chunk-RE4IMWJR.js} +15 -31
  26. package/dist/{chunk-FVTMYS6U.js → chunk-RGF452LL.js} +1 -1
  27. package/dist/{chunk-34O5BY6X.js → chunk-RXHW4EP4.js} +21 -4
  28. package/dist/chunk-SKRGRKHY.js +142 -0
  29. package/dist/{chunk-TCEHK2BW.js → chunk-YJJC4N4D.js} +2 -1
  30. package/dist/cli.js +438 -30
  31. package/dist/{compose-video-JWIEDTEJ.js → compose-video-PD6LKKRK.js} +4 -4
  32. package/dist/{cta-logo-S4OMTNXD.js → cta-logo-YR7LYUR5.js} +3 -3
  33. package/dist/{cta-media-EROTHDRR.js → cta-media-DQJBKUO2.js} +4 -4
  34. package/dist/{events-BBP30j3c.d.ts → events-B6qS1Lsb.d.ts} +2 -2
  35. package/dist/{incoming-call-5IWJ2TAS.js → incoming-call-54KQ7O5A.js} +3 -3
  36. package/dist/index.d.ts +89 -3
  37. package/dist/index.js +12 -1
  38. package/dist/{infographic-before-after-2I7YZVDD.js → infographic-before-after-ROS52GOW.js} +1 -1
  39. package/dist/{infographic-feature-list-7SK65U3K.js → infographic-feature-list-E7MGUDAN.js} +4 -4
  40. package/dist/{infographic-problem-solution-IW35S6BR.js → infographic-problem-solution-3S6NGO5N.js} +4 -4
  41. package/dist/{infographic-stat-row-XHUZZPDM.js → infographic-stat-row-SYB7AB7H.js} +4 -4
  42. package/dist/{infographic-steps-JDDEDI7X.js → infographic-steps-KCE6JWE2.js} +4 -4
  43. package/dist/{kit-DEG3fcaL.d.ts → kit-8g46H2RZ.d.ts} +1 -1
  44. package/dist/{prompt-input-6ZWXEL3V.js → prompt-input-MHX4O42G.js} +3 -3
  45. package/dist/react.d.ts +200 -6
  46. package/dist/react.js +1859 -43
  47. package/dist/{reaction-Z3JIM3MQ.js → reaction-SLEGR3BE.js} +4 -4
  48. package/dist/{scene-video-backdrop-IL4F2SVD.js → scene-video-backdrop-XFPX4O3I.js} +2 -1
  49. package/dist/server.d.ts +104 -4
  50. package/dist/server.js +976 -26
  51. package/dist/{showcase-code-NWQAAJIA.js → showcase-code-2HLAVKBM.js} +4 -4
  52. package/dist/{showcase-phone-5UW45ATT.js → showcase-phone-Q4HEO4LH.js} +4 -4
  53. package/dist/{showcase-terminal-UVOD25UF.js → showcase-terminal-DL45LUFG.js} +4 -4
  54. package/dist/{showcase-web-3AW6VHIG.js → showcase-web-2QZO73FZ.js} +4 -4
  55. package/dist/{social-milestone-KPKHFOB5.js → social-milestone-GEFUQSBF.js} +3 -3
  56. package/dist/{social-notification-EDOU6TZB.js → social-notification-FJ5VHVLK.js} +3 -3
  57. package/dist/{social-review-stack-EZOO33SV.js → social-review-stack-KXQCKFRP.js} +3 -3
  58. package/dist/{social-testimonial-DLOINMMY.js → social-testimonial-JZ7CHC7S.js} +3 -3
  59. package/dist/{social-tweet-6JUM323G.js → social-tweet-UCDXM25F.js} +3 -3
  60. package/dist/{system-prompt-4I6Z5HK3.js → system-prompt-RRXIWDDD.js} +5 -3
  61. package/dist/template-catalog.js +1 -1
  62. package/dist/templates.d.ts +3 -3
  63. package/dist/test.d.ts +2 -2
  64. package/dist/test.js +3 -3
  65. package/dist/{text-stream-J6EDDJP4.js → text-stream-FW4BLBAL.js} +2 -2
  66. package/dist/{types-BV9IqExh.d.ts → types-2wHBqtg8.d.ts} +29 -1
  67. package/dist/types-DrABlRa7.d.ts +46 -0
  68. package/docs/agent-integration.md +49 -25
  69. package/docs/architecture.md +37 -22
  70. package/docs/branding-and-personalization.md +1 -1
  71. package/docs/concepts.md +14 -0
  72. package/docs/custom-templates.md +9 -9
  73. package/docs/customization.md +41 -5
  74. package/docs/getting-started.md +81 -84
  75. package/docs/media-and-audio.md +113 -117
  76. package/docs/persistence.md +1 -1
  77. package/docs/production.md +81 -92
  78. package/docs/prompt-and-input.md +71 -161
  79. package/docs/provider-integration.md +91 -49
  80. package/docs/responsive-orientation.md +1 -1
  81. package/docs/security.md +6 -5
  82. package/docs/streaming-protocol.md +1 -1
  83. package/docs/testing.md +51 -43
  84. package/examples/custom-template/README.md +1 -1
  85. package/package.json +20 -21
  86. package/registry/items/backgrounds.json +2 -2
  87. package/registry/items/barChart.json +6 -4
  88. package/registry/items/beforeAfter.json +1 -1
  89. package/registry/items/bigNumber.json +4 -3
  90. package/registry/items/brandMessage.json +3 -2
  91. package/registry/items/cardList.json +6 -4
  92. package/registry/items/codeEditor.json +4 -3
  93. package/registry/items/confetti.json +1 -1
  94. package/registry/items/ctaLogo.json +3 -2
  95. package/registry/items/ctaMedia.json +4 -3
  96. package/registry/items/emojiBurst.json +1 -1
  97. package/registry/items/incomingCall.json +3 -2
  98. package/registry/items/media.json +4 -3
  99. package/registry/items/milestone.json +3 -2
  100. package/registry/items/notification.json +3 -2
  101. package/registry/items/phoneMockup.json +4 -3
  102. package/registry/items/problemSolution.json +4 -3
  103. package/registry/items/progressRing.json +4 -3
  104. package/registry/items/promptInput.json +3 -2
  105. package/registry/items/reaction.json +2 -2
  106. package/registry/items/reviewStack.json +3 -2
  107. package/registry/items/steps.json +6 -4
  108. package/registry/items/terminal.json +5 -4
  109. package/registry/items/testimonial.json +3 -2
  110. package/registry/items/tripleStats.json +4 -3
  111. package/registry/items/tweet.json +3 -2
  112. package/registry/items/webMockup.json +4 -3
  113. package/starters/video-chat/.env.example +16 -0
  114. package/starters/video-chat/README.md +63 -0
  115. package/starters/video-chat/index.html +12 -0
  116. package/starters/video-chat/package.json +28 -0
  117. package/starters/video-chat/server.ts +152 -0
  118. package/starters/video-chat/src/main.tsx +8 -0
  119. package/starters/video-chat/stock.ts +139 -0
  120. package/starters/video-chat/tsconfig.json +20 -0
  121. package/starters/video-chat/vite.config.ts +81 -0
  122. package/styles/video-chat.css +713 -0
  123. package/dist/chunk-C6WVCZRW.js +0 -19
  124. package/docs/input-and-first-scene.md +0 -64
  125. package/docs/integrate-nextjs.md +0 -86
  126. package/docs/live-channels.md +0 -149
  127. package/docs/use-cases.md +0 -59
  128. package/examples/nextjs-quickstart/.env.example +0 -2
  129. package/examples/nextjs-quickstart/README.md +0 -27
  130. package/examples/nextjs-quickstart/next-env.d.ts +0 -4
  131. package/examples/nextjs-quickstart/package.json +0 -25
  132. package/examples/nextjs-quickstart/src/app/api/video/route.ts +0 -24
  133. package/examples/nextjs-quickstart/src/app/layout.tsx +0 -5
  134. package/examples/nextjs-quickstart/src/app/page.tsx +0 -31
  135. package/examples/nextjs-quickstart/tsconfig.json +0 -26
@@ -0,0 +1,713 @@
1
+ /*
2
+ * Scoped default interface for @vanillaskyai/video.
3
+ *
4
+ * JSX contract: the outermost element uses class="vanillasky-video-chat" and
5
+ * carries data-theme and data-orientation. All other class names are internal.
6
+ */
7
+ .vanillasky-video-chat {
8
+ --vs-bg: oklch(0.974 0.004 281);
9
+ --vs-fg: oklch(0.21 0.05 281);
10
+ --vs-fg-muted: oklch(0.5 0.04 281);
11
+ --vs-surface-raised: oklch(0.94 0.009 281);
12
+ --vs-surface-hover: oklch(0.9 0.014 281);
13
+ --vs-surface-selected: oklch(0.87 0.018 281);
14
+ --vs-surface-pop: oklch(1 0 0 / 92%);
15
+ --vs-surface-input: oklch(1 0 0);
16
+ --vs-shadow-input: 0 1px 2px oklch(0.2 0.026 281 / 4%), 0 6px 16px -12px oklch(0.2 0.026 281 / 18%);
17
+ --vs-shadow-raised: 0 1px 2px oklch(0.2 0.026 281 / 5%), 0 2px 6px -4px oklch(0.2 0.026 281 / 14%);
18
+ --vs-on-media: oklch(1 0 0);
19
+
20
+ --vs-border: oklch(0.21 0.05 281 / 14%);
21
+ --vs-border-strong: oklch(0.21 0.05 281 / 26%);
22
+ --vs-accent: #0079C4;
23
+ --vs-accent-deep: #006098;
24
+ --vs-accent-fg: #FFFFFF;
25
+ --vs-accent-ring: oklch(0.55 0.15 244 / 45%);
26
+ --vs-voice: #FF3A71;
27
+ --vs-focus: #0079C4;
28
+ --vs-focus-ring: oklch(0.55 0.15 244 / 45%);
29
+ --vs-danger: oklch(0.42 0.16 32);
30
+ --vs-danger-surface: oklch(0.55 0.19 32 / 9%);
31
+ --vs-text-caption: 0.75rem;
32
+ --vs-lead-caption: 1.33;
33
+ --vs-track-caption: 0;
34
+
35
+ --vs-text-footnote: 0.8125rem;
36
+ --vs-lead-footnote: 1.38;
37
+ --vs-track-footnote: -0.006em;
38
+
39
+ --vs-text-subhead: 0.9375rem;
40
+ --vs-lead-subhead: 1.33;
41
+ --vs-track-subhead: -0.016em;
42
+
43
+ --vs-text-body: 1.0625rem;
44
+ --vs-lead-body: 1.47;
45
+ --vs-track-body: -0.026em;
46
+
47
+ --vs-lead-headline: 1.29;
48
+ --vs-track-headline: -0.026em;
49
+
50
+ --vs-text-title3: 1.25rem;
51
+ --vs-lead-title3: 1.25;
52
+ --vs-track-title3: -0.023em;
53
+
54
+ --vs-text-display: clamp(1.75rem, 3.4vw, 2.75rem);
55
+ --vs-lead-display: 1.05;
56
+ --vs-track-display: 0.014em;
57
+ --vs-radius: 0.875rem;
58
+ --vs-radius-lg: 1.25rem;
59
+ --vs-radius-pill: 999px;
60
+ --vs-font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", Helvetica, Arial, sans-serif;
61
+ --vs-shadow-pop: 0 16px 48px -12px oklch(0.191 0.094 281 / 30%);
62
+ --vs-ease: cubic-bezier(0.22, 1, 0.36, 1);
63
+ --vs-duration: 150ms;
64
+ --vs-duration-slow: 260ms;
65
+ --vs-reserve: 18rem;
66
+ --vs-gutter: 0.5rem;
67
+ --vs-control-gap: 0.75rem;
68
+ --vs-touch: 2.75rem;
69
+ }
70
+
71
+ @media (prefers-color-scheme: dark) {
72
+ .vanillasky-video-chat:not([data-theme="light"]) {
73
+ --vs-bg: oklch(0.128 0.068 281);
74
+ --vs-fg: oklch(0.97 0.012 281);
75
+ --vs-fg-muted: oklch(0.72 0.035 281);
76
+ --vs-surface-raised: oklch(0.191 0.094 281);
77
+ --vs-surface-hover: oklch(0.25 0.09 281);
78
+ --vs-surface-selected: oklch(0.3 0.086 281);
79
+ --vs-surface-pop: oklch(0.175 0.085 281 / 94%);
80
+ --vs-surface-input: oklch(0.225 0.088 281);
81
+ --vs-shadow-input: 0 1px 2px oklch(0 0 0 / 20%), 0 6px 16px -12px oklch(0 0 0 / 40%);
82
+ --vs-shadow-raised: 0 1px 2px oklch(0 0 0 / 24%), 0 2px 6px -4px oklch(0 0 0 / 36%);
83
+
84
+ --vs-border: oklch(1 0 0 / 14%);
85
+ --vs-border-strong: oklch(1 0 0 / 24%);
86
+ --vs-accent: #FF3A71;
87
+ --vs-accent-deep: #FF006F;
88
+ --vs-accent-fg: #FFFFFF;
89
+ --vs-accent-ring: oklch(0.664 0.231 10.5 / 55%);
90
+ --vs-voice: #FF3A71;
91
+ --vs-focus: #FF3A71;
92
+ --vs-focus-ring: oklch(0.664 0.231 10.5 / 55%);
93
+ --vs-danger: oklch(0.75 0.16 32);
94
+ --vs-danger-surface: oklch(0.75 0.16 32 / 14%);
95
+
96
+ --vs-shadow-pop: 0 16px 48px -12px oklch(0 0 0 / 60%);
97
+ }
98
+ }
99
+
100
+ .vanillasky-video-chat[data-theme="dark"] {
101
+ --vs-bg: oklch(0.128 0.068 281);
102
+ --vs-fg: oklch(0.97 0.012 281);
103
+ --vs-fg-muted: oklch(0.72 0.035 281);
104
+ --vs-surface-raised: oklch(0.191 0.094 281);
105
+ --vs-surface-hover: oklch(0.25 0.09 281);
106
+ --vs-surface-selected: oklch(0.3 0.086 281);
107
+ --vs-surface-pop: oklch(0.175 0.085 281 / 94%);
108
+ --vs-surface-input: oklch(0.225 0.088 281);
109
+ --vs-shadow-input: 0 1px 2px oklch(0 0 0 / 20%), 0 6px 16px -12px oklch(0 0 0 / 40%);
110
+ --vs-shadow-raised: 0 1px 2px oklch(0 0 0 / 24%), 0 2px 6px -4px oklch(0 0 0 / 36%);
111
+
112
+ --vs-border: oklch(1 0 0 / 14%);
113
+ --vs-border-strong: oklch(1 0 0 / 24%);
114
+ --vs-accent: #FF3A71;
115
+ --vs-accent-deep: #FF006F;
116
+ --vs-accent-fg: #FFFFFF;
117
+ --vs-accent-ring: oklch(0.664 0.231 10.5 / 55%);
118
+ --vs-voice: #FF3A71;
119
+ --vs-focus: #FF3A71;
120
+ --vs-focus-ring: oklch(0.664 0.231 10.5 / 55%);
121
+ --vs-danger: oklch(0.75 0.16 32);
122
+
123
+ --vs-shadow-pop: 0 16px 48px -12px oklch(0 0 0 / 60%);
124
+ }
125
+ @media (prefers-contrast: more) {
126
+ .vanillasky-video-chat {
127
+ --vs-fg-muted: oklch(0.35 0.04 281);
128
+ --vs-border: oklch(0.21 0.05 281 / 40%);
129
+ --vs-border-strong: oklch(0.21 0.05 281 / 65%);
130
+ --vs-accent: #005E96;
131
+ --vs-accent-deep: #004A78;
132
+ --vs-focus: #005E96;
133
+ --vs-focus-ring: oklch(0.45 0.13 244 / 70%);
134
+ --vs-danger: oklch(0.34 0.15 32);
135
+ --vs-shadow-input: 0 0 0 1px oklch(0.21 0.05 281 / 35%);
136
+ --vs-shadow-raised: 0 0 0 1px oklch(0.21 0.05 281 / 28%);
137
+ }
138
+
139
+ .vanillasky-video-chat[data-theme="dark"] {
140
+ --vs-fg-muted: oklch(0.88 0.02 281);
141
+ --vs-border: oklch(1 0 0 / 42%);
142
+ --vs-border-strong: oklch(1 0 0 / 70%);
143
+ --vs-accent: #FF7CA1;
144
+ --vs-accent-deep: #FF3A71;
145
+ --vs-accent-fg: #10073C;
146
+ --vs-focus: #FF7CA1;
147
+ --vs-focus-ring: oklch(0.78 0.16 10 / 75%);
148
+ --vs-danger: oklch(0.86 0.13 32);
149
+ }
150
+ }
151
+
152
+ @media (prefers-color-scheme: dark) and (prefers-contrast: more) {
153
+ .vanillasky-video-chat:not([data-theme="light"]) {
154
+ --vs-fg-muted: oklch(0.88 0.02 281);
155
+ --vs-border: oklch(1 0 0 / 42%);
156
+ --vs-border-strong: oklch(1 0 0 / 70%);
157
+ --vs-accent: #FF7CA1;
158
+ --vs-accent-deep: #FF3A71;
159
+ --vs-accent-fg: #10073C;
160
+ --vs-focus: #FF7CA1;
161
+ --vs-focus-ring: oklch(0.78 0.16 10 / 75%);
162
+ --vs-danger: oklch(0.86 0.13 32);
163
+ }
164
+ }
165
+
166
+
167
+ .vanillasky-video-chat, .vanillasky-video-chat * { box-sizing: border-box; }
168
+
169
+ .vanillasky-video-chat { color-scheme: light dark; }
170
+ .vanillasky-video-chat[data-theme="light"] { color-scheme: light; }
171
+ .vanillasky-video-chat[data-theme="dark"] { color-scheme: dark; }
172
+
173
+ .vanillasky-video-chat {
174
+ margin: 0;
175
+ background: var(--vs-bg);
176
+ color: var(--vs-fg);
177
+ font-family: var(--vs-font);
178
+ -webkit-font-smoothing: antialiased;
179
+ }
180
+
181
+ .vanillasky-video-chat .sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
182
+ .vanillasky-video-chat .error {
183
+ display: flex;
184
+ align-items: flex-start;
185
+ gap: 0.55rem;
186
+ margin: 0;
187
+ padding: 0.6rem 0.85rem;
188
+ border-radius: var(--vs-radius);
189
+ background: var(--vs-danger-surface);
190
+ color: var(--vs-danger);
191
+ font-size: var(--vs-text-footnote);
192
+ line-height: var(--vs-lead-footnote);
193
+ letter-spacing: var(--vs-track-footnote);
194
+ }
195
+ .vanillasky-video-chat .error svg { flex: 0 0 auto; margin-top: 0.05rem; }
196
+ .vanillasky-video-chat .error span { min-width: 0; }
197
+ .vanillasky-video-chat {
198
+ --vs-side: 1rem;
199
+ --vs-frame: min(72rem, 100dvw - 2 * var(--vs-side), (100dvh - var(--vs-reserve)) * 16 / 9);
200
+ --vs-column: min(48rem, 100dvw - 2 * var(--vs-side));
201
+ display: grid;
202
+ grid-template-rows: auto auto 1fr;
203
+ height: 100dvh;
204
+ overflow: hidden;
205
+ }
206
+ .vanillasky-video-chat :where(button, [href], input, select, textarea, [tabindex]):focus-visible {
207
+ outline: 2px solid var(--vs-focus-ring);
208
+ outline-offset: 2px;
209
+ border-radius: var(--vs-radius-pill);
210
+ }
211
+
212
+ .vanillasky-video-chat .chrome {
213
+ flex: 0 0 auto;
214
+ display: flex;
215
+ align-items: center;
216
+ justify-content: space-between;
217
+ gap: 0.75rem;
218
+ width: max(var(--vs-frame), var(--vs-column) - 2 * var(--vs-side));
219
+ margin: 0 auto;
220
+ padding: max(0.6rem, env(safe-area-inset-top)) 0 0.5rem;
221
+ }
222
+ .vanillasky-video-chat .group { display: flex; align-items: center; gap: 0.5rem; }
223
+
224
+ .vanillasky-video-chat .round {
225
+ display: grid;
226
+ place-items: center;
227
+ width: var(--vs-touch);
228
+ height: var(--vs-touch);
229
+ border: 0;
230
+ border-radius: var(--vs-radius-pill);
231
+ background: var(--vs-surface-raised);
232
+ color: var(--vs-fg);
233
+ cursor: pointer;
234
+ transition: background-color var(--vs-duration) ease, transform var(--vs-duration) ease;
235
+ }
236
+ .vanillasky-video-chat .round:hover { background: var(--vs-surface-hover); }
237
+ .vanillasky-video-chat .round:active { transform: scale(0.95); }
238
+
239
+ .vanillasky-video-chat .pill {
240
+ border: 0;
241
+ border-radius: var(--vs-radius-pill);
242
+ min-height: var(--vs-touch);
243
+ padding: 0 0.95rem;
244
+ background: var(--vs-surface-raised);
245
+ color: var(--vs-fg);
246
+ font: inherit;
247
+ font-size: var(--vs-text-footnote);
248
+ line-height: var(--vs-lead-footnote);
249
+ letter-spacing: var(--vs-track-footnote);
250
+ font-weight: 600;
251
+ cursor: pointer;
252
+ transition: background-color var(--vs-duration) ease;
253
+ }
254
+ .vanillasky-video-chat .pill:hover { background: var(--vs-surface-hover); }
255
+
256
+ .vanillasky-video-chat .stage-area {
257
+ position: relative;
258
+ min-height: 0;
259
+ display: grid;
260
+ place-items: center;
261
+ padding: 1.5rem var(--vs-side) 0;
262
+ }
263
+ .vanillasky-video-chat .stage {
264
+ position: relative;
265
+ aspect-ratio: 16 / 9;
266
+ width: var(--vs-frame);
267
+ overflow: hidden;
268
+ border-radius: var(--vs-radius-lg);
269
+ container-type: size;
270
+ }
271
+ .vanillasky-video-chat[data-orientation="portrait"] { --vs-frame: min(100dvw - 2 * var(--vs-side), (100dvh - var(--vs-reserve)) * 9 / 16); }
272
+ .vanillasky-video-chat[data-orientation="portrait"] .stage { aspect-ratio: 9 / 16; }
273
+ @media (min-width: 900px) { .vanillasky-video-chat .stage { border: 1px solid var(--vs-border); } }
274
+ .vanillasky-video-chat .stage > * { position: absolute; inset: 0; width: 100%; height: 100%; display: grid; place-items: center; }
275
+ .vanillasky-video-chat .stage :where(video, canvas, img) { max-width: 100%; max-height: 100%; object-fit: contain; }
276
+ .vanillasky-video-chat .ground {
277
+ position: absolute;
278
+ inset: -30%;
279
+ background: radial-gradient(closest-side, oklch(1 0 0 / 28%), transparent 70%);
280
+ animation: vanillasky-video-chat-drift 9s ease-in-out infinite alternate;
281
+ }
282
+ .vanillasky-video-chat .opening-wash {
283
+ position: absolute;
284
+ inset: 0;
285
+ background:
286
+ radial-gradient(circle at center, oklch(0.12 0.04 265 / 8%) 0%, oklch(0.12 0.04 265 / 42%) 100%),
287
+ linear-gradient(0deg, oklch(0.12 0.04 265 / 24%), oklch(0.12 0.04 265 / 24%));
288
+ }
289
+ @keyframes vanillasky-video-chat-drift {
290
+ from { transform: translate3d(-12%, -8%, 0) scale(1); }
291
+ to { transform: translate3d(14%, 10%, 0) scale(1.25); }
292
+ }
293
+ .vanillasky-video-chat .asked {
294
+ margin: 0 auto;
295
+ padding: 0 1.5rem;
296
+ display: grid;
297
+ gap: 1.1rem;
298
+ justify-items: center;
299
+ align-content: center;
300
+ text-align: center;
301
+ color: var(--vs-on-media);
302
+ }
303
+ .vanillasky-video-chat .asked-prompt {
304
+ margin: 0;
305
+ max-width: 26ch;
306
+ font-size: var(--vs-text-display);
307
+ line-height: var(--vs-lead-display);
308
+ letter-spacing: var(--vs-track-display);
309
+ font-weight: 700;
310
+ text-wrap: balance;
311
+ animation: vanillasky-video-chat-step-in 620ms ease both;
312
+ }
313
+ .vanillasky-video-chat .asked-step {
314
+ margin: 0;
315
+ font-size: var(--vs-text-subhead);
316
+ line-height: var(--vs-lead-subhead);
317
+ letter-spacing: var(--vs-track-subhead);
318
+ font-weight: 500;
319
+ background: linear-gradient(100deg, oklch(1 0 0 / 45%) 20%, oklch(1 0 0) 42%, oklch(1 0 0 / 45%) 64%);
320
+ background-size: 220% 100%;
321
+ -webkit-background-clip: text;
322
+ background-clip: text;
323
+ color: transparent;
324
+ animation: vanillasky-video-chat-sweep 2.4s linear infinite, vanillasky-video-chat-step-in 520ms ease both;
325
+ }
326
+ @keyframes vanillasky-video-chat-step-in {
327
+ from { opacity: 0; transform: translateY(6px); }
328
+ to { opacity: 1; transform: none; }
329
+ }
330
+ .vanillasky-video-chat .welcome { position: absolute; inset: 0; overflow: hidden; }
331
+ .vanillasky-video-chat .frame-media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
332
+ .vanillasky-video-chat .welcome-wash {
333
+ position: absolute;
334
+ inset: 0;
335
+ background:
336
+ linear-gradient(100deg, oklch(0.14 0.05 265 / 88%) 0%, oklch(0.14 0.05 265 / 62%) 38%, transparent 72%),
337
+ linear-gradient(0deg, oklch(0.14 0.05 265 / 45%) 0%, transparent 45%);
338
+ }
339
+
340
+ .vanillasky-video-chat .welcome-body {
341
+ position: absolute;
342
+ inset: 0;
343
+ display: flex;
344
+ flex-direction: column;
345
+ align-items: flex-start;
346
+ gap: clamp(0.9rem, 2.2cqh, 1.6rem);
347
+ padding: clamp(2rem, 8cqh, 4.5rem) clamp(1.25rem, 4cqw, 3.5rem) clamp(1.25rem, 4cqh, 2.5rem);
348
+ color: oklch(1 0 0);
349
+ }
350
+
351
+
352
+ .vanillasky-video-chat .welcome-title {
353
+ margin: 0;
354
+ font-size: clamp(1.6rem, 5.2cqw, 3.4rem);
355
+ line-height: 1.22;
356
+ letter-spacing: var(--vs-track-display);
357
+ font-weight: 600;
358
+ text-wrap: balance;
359
+ }
360
+ .vanillasky-video-chat .welcome-title em { font-style: normal; color: oklch(0.8 0.11 268); }
361
+
362
+
363
+ .vanillasky-video-chat .cards {
364
+ display: flex;
365
+ gap: clamp(0.5rem, 1.2cqw, 0.9rem);
366
+ margin: auto -0.4rem 0;
367
+ padding: 0.4rem;
368
+ list-style: none;
369
+ max-width: calc(100% + 0.8rem);
370
+ overflow-x: auto;
371
+ overflow-y: visible;
372
+ scrollbar-width: none;
373
+ }
374
+ .vanillasky-video-chat .cards::-webkit-scrollbar { display: none; }
375
+ .vanillasky-video-chat .cards::-webkit-scrollbar { display: none; }
376
+ .vanillasky-video-chat .cards button {
377
+ position: relative;
378
+ display: block;
379
+ flex: 0 0 auto;
380
+ width: clamp(7rem, 12.5cqw, 9.5rem);
381
+ aspect-ratio: 3 / 4;
382
+ padding: 0;
383
+ overflow: hidden;
384
+ border: 0;
385
+ border-radius: clamp(0.75rem, 1.3cqw, 1.1rem);
386
+ background: oklch(0.16 0.04 280);
387
+ box-shadow: 0 2px 6px -2px oklch(0 0 0 / 40%), 0 12px 28px -10px oklch(0 0 0 / 55%);
388
+ outline: 2px solid transparent;
389
+ outline-offset: 2px;
390
+ color: oklch(1 0 0);
391
+ cursor: pointer;
392
+ text-align: left;
393
+ transition: transform var(--vs-duration) var(--vs-ease), box-shadow var(--vs-duration) ease,
394
+ outline-color var(--vs-duration) ease;
395
+ }
396
+ .vanillasky-video-chat .cards button[data-active] {
397
+ outline-color: oklch(0.84 0.1 268);
398
+ box-shadow:
399
+ 0 0 0 5px oklch(0.72 0.15 268 / 22%),
400
+ 0 2px 6px -2px oklch(0 0 0 / 40%),
401
+ 0 14px 32px -10px oklch(0 0 0 / 60%);
402
+ }
403
+ .vanillasky-video-chat .cards button:hover {
404
+ transform: translateY(-3px);
405
+ box-shadow: 0 4px 10px -2px oklch(0 0 0 / 45%), 0 20px 40px -12px oklch(0 0 0 / 65%);
406
+ }
407
+ .vanillasky-video-chat .cards button:active { transform: translateY(-1px); }
408
+ .vanillasky-video-chat .card-wash {
409
+ position: absolute;
410
+ inset: 0;
411
+ background: linear-gradient(0deg, oklch(0.12 0.03 280 / 92%) 0%, oklch(0.12 0.03 280 / 30%) 45%, transparent 70%);
412
+ }
413
+ .vanillasky-video-chat .card-prompt {
414
+ position: absolute;
415
+ inset: auto 0 0;
416
+ padding: 0.6rem 0.7rem;
417
+ font-size: clamp(var(--vs-text-footnote), 0.95cqw, 0.9rem);
418
+ line-height: var(--vs-lead-footnote);
419
+ letter-spacing: var(--vs-track-footnote);
420
+ font-weight: 500;
421
+ text-wrap: balance;
422
+ }
423
+ .vanillasky-video-chat .card-dots { display: flex; gap: 0.15rem; margin-top: 0.6rem; align-self: center; }
424
+ .vanillasky-video-chat .card-dots button {
425
+ display: grid;
426
+ place-items: center;
427
+ width: 1.5rem;
428
+ height: 1.5rem;
429
+ padding: 0;
430
+ border: 0;
431
+ background: none;
432
+ cursor: pointer;
433
+ }
434
+ .vanillasky-video-chat .card-dots button::before {
435
+ content: "";
436
+ width: 0.45rem;
437
+ height: 0.45rem;
438
+ border-radius: var(--vs-radius-pill);
439
+ background: oklch(1 0 0 / 35%);
440
+ transition: width var(--vs-duration) var(--vs-ease), background-color var(--vs-duration) ease;
441
+ }
442
+ .vanillasky-video-chat .card-dots button:hover::before { background: oklch(1 0 0 / 60%); }
443
+ .vanillasky-video-chat .card-dots button.on::before { width: 1.35rem; background: oklch(0.84 0.1 268); }
444
+
445
+
446
+ @media (max-width: 899px) {
447
+ .vanillasky-video-chat .welcome-body { gap: 0.7rem; padding: 1.75rem 1rem 1rem; }
448
+ .vanillasky-video-chat .welcome-title { font-size: clamp(1.75rem, 9cqw, 2.25rem); }
449
+ .vanillasky-video-chat .cards button { width: clamp(9rem, 42cqw, 11rem); }
450
+ .vanillasky-video-chat .card-prompt { padding: 0.7rem 0.75rem; }
451
+ }
452
+ .vanillasky-video-chat .ending {
453
+ position: absolute;
454
+ inset: 0;
455
+ overflow: hidden;
456
+ z-index: 1;
457
+ animation: vanillasky-video-chat-fade-in 420ms ease both;
458
+ }
459
+ .vanillasky-video-chat .ending-wash {
460
+ position: absolute;
461
+ inset: 0;
462
+ background: linear-gradient(0deg,
463
+ oklch(0.14 0.05 265 / 94%) 0%,
464
+ oklch(0.14 0.05 265 / 82%) 38%,
465
+ oklch(0.14 0.05 265 / 40%) 72%,
466
+ transparent 100%);
467
+ }
468
+ .vanillasky-video-chat .ending-body {
469
+ position: absolute;
470
+ inset: auto 0 0;
471
+ display: flex;
472
+ flex-direction: column;
473
+ align-items: flex-start;
474
+ gap: clamp(0.5rem, 1.4cqh, 0.9rem);
475
+ padding: 0 clamp(1.25rem, 4cqw, 3.5rem) clamp(1.25rem, 4cqh, 2.5rem);
476
+ color: oklch(1 0 0);
477
+ }
478
+ .vanillasky-video-chat .ending-label {
479
+ margin: 0;
480
+ font-size: clamp(var(--vs-text-footnote), 1.1cqw, var(--vs-text-subhead));
481
+ line-height: var(--vs-lead-footnote);
482
+ letter-spacing: var(--vs-track-footnote);
483
+ font-weight: 600;
484
+ color: oklch(1 0 0 / 78%);
485
+ text-shadow: 0 1px 3px oklch(0.14 0.05 265 / 70%);
486
+ }
487
+ .vanillasky-video-chat .ending .cards { margin-top: 0; }
488
+ .vanillasky-video-chat .ending .cards button { width: clamp(8rem, 15.5cqw, 12rem); }
489
+ .vanillasky-video-chat .ending .card-dots { align-self: flex-start; margin-left: -0.35rem; }
490
+
491
+ .vanillasky-video-chat .sheet-popover {
492
+ position: absolute;
493
+ z-index: 30;
494
+ top: 0.75rem;
495
+ left: 50%;
496
+ transform: translateX(-50%);
497
+ width: min(26rem, calc(100% - 2rem));
498
+ max-height: 70%;
499
+ overflow-y: auto;
500
+ padding: 0.4rem;
501
+ border-radius: var(--vs-radius-lg);
502
+ background: var(--vs-surface-pop);
503
+ color: var(--vs-fg);
504
+ border: 1px solid var(--vs-border);
505
+ backdrop-filter: blur(20px);
506
+ box-shadow: var(--vs-shadow-pop);
507
+ animation: vanillasky-video-chat-rise 180ms ease both;
508
+ }
509
+ .vanillasky-video-chat .history { display: grid; gap: 0.35rem; }
510
+ .vanillasky-video-chat .history button {
511
+ display: grid;
512
+ grid-template-columns: auto 1fr;
513
+ gap: 0.6rem;
514
+ width: 100%;
515
+ padding: 0.65rem 0.75rem;
516
+ border: 0;
517
+ border-radius: var(--vs-radius);
518
+ background: transparent;
519
+ color: inherit;
520
+ font: inherit;
521
+ text-align: left;
522
+ cursor: pointer;
523
+ }
524
+ .vanillasky-video-chat .history button:hover { background: var(--vs-surface-hover); }
525
+ .vanillasky-video-chat .history button.current { background: var(--vs-surface-selected); }
526
+ .vanillasky-video-chat .history button:disabled { opacity: 0.5; cursor: default; }
527
+ .vanillasky-video-chat .history .index { color: var(--vs-fg-muted); font-size: var(--vs-text-caption); line-height: var(--vs-lead-caption); font-variant-numeric: tabular-nums; }
528
+ .vanillasky-video-chat .history .prompt { font-size: var(--vs-text-body); line-height: var(--vs-lead-headline); letter-spacing: var(--vs-track-headline); font-weight: 500; }
529
+
530
+ .vanillasky-video-chat .settings { padding: 1rem 1.1rem 1.2rem; display: grid; gap: 1rem; }
531
+ .vanillasky-video-chat .settings-note { margin: 0; font-size: var(--vs-text-caption); line-height: var(--vs-lead-caption); color: var(--vs-fg-muted); }
532
+ .vanillasky-video-chat .settings fieldset { margin: 0; padding: 0; border: 0; display: grid; gap: 0.45rem; }
533
+ .vanillasky-video-chat .settings legend {
534
+ padding: 0 0 0.45rem;
535
+ font-size: var(--vs-text-footnote);
536
+ line-height: var(--vs-lead-footnote);
537
+ letter-spacing: var(--vs-track-footnote);
538
+ font-weight: 600;
539
+ color: var(--vs-fg-muted);
540
+ }
541
+ .vanillasky-video-chat .settings label { display: flex; align-items: baseline; gap: 0.6rem; cursor: pointer; }
542
+ .vanillasky-video-chat .settings label span { display: grid; gap: 0.1rem; font-size: var(--vs-text-subhead); line-height: var(--vs-lead-subhead); letter-spacing: var(--vs-track-subhead); color: var(--vs-fg-muted); }
543
+ .vanillasky-video-chat .settings label strong { font-weight: 600; font-size: var(--vs-text-body); line-height: var(--vs-lead-headline); letter-spacing: var(--vs-track-headline); color: var(--vs-fg); }
544
+ .vanillasky-video-chat .settings input { accent-color: var(--vs-accent); margin: 0; }
545
+ .vanillasky-video-chat .panel { display: grid; align-items: center; min-height: 0; background: var(--vs-bg); }
546
+ .vanillasky-video-chat .sheet, .vanillasky-video-chat .settings, .vanillasky-video-chat .history { color-scheme: inherit; }
547
+ .vanillasky-video-chat .panel-inner {
548
+ display: grid;
549
+ gap: 0.5rem;
550
+ width: var(--vs-column);
551
+ margin: 0 auto;
552
+ padding: 1rem var(--vs-side) max(1rem, env(safe-area-inset-bottom));
553
+ }
554
+ @media (min-width: 900px) {
555
+ .vanillasky-video-chat { --vs-side: 1.5rem; }
556
+ .vanillasky-video-chat .stage-area { padding: 2.5rem var(--vs-side) 0; }
557
+ .vanillasky-video-chat .panel-inner { padding: 1rem var(--vs-side) 1.25rem; }
558
+ }
559
+ .vanillasky-video-chat .line-row {
560
+ display: flex;
561
+ align-items: flex-start;
562
+ gap: 0.75rem;
563
+ min-height: calc(2 * var(--vs-text-body) * var(--vs-lead-body));
564
+ margin-bottom: 0.5rem;
565
+ }
566
+ .vanillasky-video-chat .line {
567
+ flex: 1 1 auto;
568
+ min-width: 0;
569
+ margin: 0;
570
+ display: -webkit-box;
571
+ -webkit-box-orient: vertical;
572
+ -webkit-line-clamp: 2;
573
+ overflow: hidden;
574
+ font-size: var(--vs-text-body);
575
+ line-height: var(--vs-lead-body);
576
+ letter-spacing: var(--vs-track-body);
577
+ color: var(--vs-fg);
578
+ animation: vanillasky-video-chat-fade-in 320ms ease both;
579
+ }
580
+
581
+ @keyframes vanillasky-video-chat-sweep { from { background-position: 140% 0; } to { background-position: -40% 0; } }
582
+ @keyframes vanillasky-video-chat-fade-in { from { opacity: 0; } to { opacity: 1; } }
583
+ @keyframes vanillasky-video-chat-rise { from { opacity: 0; transform: translate(-50%, 6px); } to { opacity: 1; transform: translate(-50%, 0); } }
584
+
585
+ .vanillasky-video-chat .full-response {
586
+ flex: 0 0 auto;
587
+ display: inline-flex;
588
+ align-items: center;
589
+ gap: 0.25rem;
590
+ margin-top: 0.1rem;
591
+ border: 0;
592
+ background: none;
593
+ color: var(--vs-fg-muted);
594
+ font: inherit;
595
+ font-size: var(--vs-text-footnote);
596
+ line-height: var(--vs-lead-footnote);
597
+ letter-spacing: var(--vs-track-footnote);
598
+ font-weight: 500;
599
+ cursor: pointer;
600
+ }
601
+ .vanillasky-video-chat .full-response:hover { color: var(--vs-fg); }
602
+ .vanillasky-video-chat .composer {
603
+ display: flex;
604
+ align-items: center;
605
+ gap: 0;
606
+ min-height: 3.5rem;
607
+ padding: 0.35rem 0.4rem 0.35rem 1.25rem;
608
+ border: 1px solid var(--vs-border);
609
+ border-radius: var(--vs-radius-pill);
610
+ background: var(--vs-surface-input);
611
+ box-shadow: var(--vs-shadow-input);
612
+ transition: border-color var(--vs-duration) ease, box-shadow var(--vs-duration) ease;
613
+ }
614
+ .vanillasky-video-chat .composer:focus-within {
615
+ border-color: var(--vs-focus);
616
+ box-shadow: 0 0 0 1px var(--vs-focus), var(--vs-shadow-input);
617
+ }
618
+ .vanillasky-video-chat .composer textarea:focus-visible { outline: none; }
619
+ .vanillasky-video-chat .composer textarea {
620
+ flex: 1 1 auto;
621
+ min-width: 0;
622
+ max-height: 8rem;
623
+ padding: 0.55rem 0.75rem;
624
+ border: 0;
625
+ background: transparent;
626
+ color: inherit;
627
+ font: inherit;
628
+ font-size: var(--vs-text-body);
629
+ line-height: var(--vs-lead-body);
630
+ letter-spacing: var(--vs-track-body);
631
+ resize: none;
632
+ field-sizing: content;
633
+ }
634
+ .vanillasky-video-chat .composer textarea:focus { outline: none; }
635
+ .vanillasky-video-chat .composer textarea::placeholder { color: var(--vs-fg-muted); }
636
+
637
+ .vanillasky-video-chat .ghost {
638
+ display: grid;
639
+ place-items: center;
640
+ width: var(--vs-touch);
641
+ height: var(--vs-touch);
642
+ border: 0;
643
+ border-radius: var(--vs-radius-pill);
644
+ background: none;
645
+ color: var(--vs-fg-muted);
646
+ cursor: pointer;
647
+ flex: 0 0 auto;
648
+ transition: color var(--vs-duration) ease, transform var(--vs-duration) ease;
649
+ }
650
+ .vanillasky-video-chat .ghost:hover:not(:disabled) { color: var(--vs-fg); }
651
+ .vanillasky-video-chat .ghost:active:not(:disabled) { transform: scale(0.95); }
652
+ .vanillasky-video-chat .ghost:disabled { opacity: 0.35; cursor: default; }
653
+ .vanillasky-video-chat .composer .ghost + .ghost { margin-left: 0; }
654
+ .vanillasky-video-chat .composer .ghost + .send { margin-left: 0.95rem; }
655
+
656
+ .vanillasky-video-chat .ghost.listening {
657
+ color: var(--vs-accent-fg);
658
+ background: var(--vs-voice);
659
+ }
660
+
661
+ .vanillasky-video-chat .send {
662
+ display: grid;
663
+ place-items: center;
664
+ width: var(--vs-touch);
665
+ height: var(--vs-touch);
666
+ border: 0;
667
+ border-radius: var(--vs-radius-pill);
668
+ background: var(--vs-accent);
669
+ color: var(--vs-accent-fg);
670
+ cursor: pointer;
671
+ transition: opacity var(--vs-duration) ease, transform var(--vs-duration) ease;
672
+ }
673
+ .vanillasky-video-chat .send:hover:not(:disabled) { background: var(--vs-accent-deep); }
674
+ .vanillasky-video-chat .send:active:not(:disabled) { transform: scale(0.95); }
675
+ .vanillasky-video-chat .send:disabled { background: var(--vs-surface-selected); color: var(--vs-fg-muted); cursor: default; }
676
+ .vanillasky-video-chat .waveform { display: flex; align-items: center; gap: 3px; height: 1rem; flex: 0 0 auto; }
677
+ .vanillasky-video-chat .waveform span { width: 2px; height: 100%; border-radius: var(--vs-radius-pill); background: var(--vs-voice); transform: scaleY(0.2); opacity: 0.6; }
678
+ .vanillasky-video-chat .waveform.on span { opacity: 1; animation-name: vanillasky-video-chat-wave; animation-timing-function: ease-in-out; animation-iteration-count: infinite; }
679
+ @keyframes vanillasky-video-chat-wave { 0%, 100% { transform: scaleY(0.25); } 50% { transform: scaleY(1); } }
680
+ .vanillasky-video-chat .waveform.hearing span { background: var(--vs-voice); animation-duration: 420ms !important; }
681
+
682
+ .vanillasky-video-chat .sheet-layer { position: fixed; inset: 0; z-index: 40; }
683
+ .vanillasky-video-chat .scrim { position: absolute; inset: 0; width: 100%; border: 0; background: oklch(0.08 0.015 300 / 55%); backdrop-filter: blur(4px); cursor: default; }
684
+ .vanillasky-video-chat .sheet {
685
+ position: absolute;
686
+ inset: auto 0 0;
687
+ width: min(48rem, 100%);
688
+ max-height: 82dvh;
689
+ margin: 0 auto;
690
+ display: flex;
691
+ flex-direction: column;
692
+ overflow: hidden;
693
+ border-top: 1px solid var(--vs-border);
694
+ border-radius: var(--vs-radius-lg) var(--vs-radius-lg) 0 0;
695
+ background: var(--vs-bg);
696
+ animation: vanillasky-video-chat-slide-up var(--vs-duration-slow) var(--vs-ease) both;
697
+ }
698
+ @keyframes vanillasky-video-chat-slide-up { from { transform: translateY(100%); } to { transform: none; } }
699
+ .vanillasky-video-chat .sheet header { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; padding: 1.1rem 1.25rem 0; }
700
+ .vanillasky-video-chat .sheet h1 { margin: 0; font-size: var(--vs-text-title3); line-height: var(--vs-lead-title3); letter-spacing: var(--vs-track-title3); font-weight: 600; }
701
+ .vanillasky-video-chat .sheet .round { background: var(--vs-surface-raised); color: var(--vs-fg-muted); flex: 0 0 auto; }
702
+ .vanillasky-video-chat .sheet-body { overflow-y: auto; padding: 0.75rem 1.25rem 2rem; }
703
+ .vanillasky-video-chat .sheet-body p { margin: 0 0 1rem; font-size: var(--vs-text-body); line-height: 1.6; letter-spacing: var(--vs-track-body); color: var(--vs-fg); }
704
+ .vanillasky-video-chat .sheet-body p:first-child { color: var(--vs-fg); }
705
+
706
+ @media (prefers-reduced-motion: reduce) {
707
+ .vanillasky-video-chat, .vanillasky-video-chat *, .vanillasky-video-chat::before, .vanillasky-video-chat *::before, .vanillasky-video-chat::after, .vanillasky-video-chat *::after {
708
+ animation-duration: 0.01ms !important;
709
+ animation-iteration-count: 1 !important;
710
+ transition-duration: 0.01ms !important;
711
+ }
712
+ .vanillasky-video-chat .asked-step { color: var(--vs-on-media); -webkit-text-fill-color: currentColor; }
713
+ }