osi-cards-lib 1.5.30 → 1.5.32
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.
- package/README.md +58 -20
- package/package.json +13 -25
- package/postcss.config.js +81 -0
- package/section-registry.json +3864 -0
- package/section-registry.schema.json +264 -0
- package/fesm2022/osi-cards-lib.mjs +0 -31878
- package/fesm2022/osi-cards-lib.mjs.map +0 -1
- package/index.d.ts +0 -11522
- package/scripts/setup-angular-styles.js +0 -169
- package/styles/_components.scss +0 -38
- package/styles/_index.scss +0 -25
- package/styles/_osi-cards-mixins.scss +0 -459
- package/styles/_osi-cards-tokens.scss +0 -333
- package/styles/_styles-scoped.scss +0 -81
- package/styles/_styles.scss +0 -26
- package/styles/bundles/_ai-card.scss +0 -245
- package/styles/bundles/_all.scss +0 -68
- package/styles/bundles/_base.scss +0 -60
- package/styles/bundles/_card-skeleton.scss +0 -290
- package/styles/bundles/_index.scss +0 -25
- package/styles/bundles/_sections.scss +0 -48
- package/styles/bundles/_tokens-only.scss +0 -139
- package/styles/components/_ai-card-renderer.scss +0 -104
- package/styles/components/_badges.scss +0 -317
- package/styles/components/_card-actions.scss +0 -169
- package/styles/components/_card-footer.scss +0 -47
- package/styles/components/_component-styles.scss +0 -205
- package/styles/components/_empty-state.scss +0 -630
- package/styles/components/_hero-card.scss +0 -422
- package/styles/components/_image-fallback.scss +0 -28
- package/styles/components/_streaming-effects.scss +0 -518
- package/styles/components/cards/_ai-card.scss +0 -718
- package/styles/components/sections/_all-sections.generated.scss +0 -41
- package/styles/components/sections/_all-sections.scss +0 -1086
- package/styles/components/sections/_balanced-compact-system.scss +0 -186
- package/styles/components/sections/_compact-mixins.scss +0 -180
- package/styles/components/sections/_component-mixins.scss +0 -454
- package/styles/components/sections/_design-system.scss +0 -477
- package/styles/components/sections/_design-tokens.scss +0 -308
- package/styles/components/sections/_enhanced-design-variables.scss +0 -147
- package/styles/components/sections/_master-compact-system.scss +0 -302
- package/styles/components/sections/_master-dense-system.scss +0 -239
- package/styles/components/sections/_minimalistic-design.scss +0 -268
- package/styles/components/sections/_modern-effects.scss +0 -392
- package/styles/components/sections/_modern-sections.scss +0 -351
- package/styles/components/sections/_perfect-system.scss +0 -204
- package/styles/components/sections/_section-animations.scss +0 -331
- package/styles/components/sections/_section-shell.scss +0 -337
- package/styles/components/sections/_section-types.generated.scss +0 -30
- package/styles/components/sections/_sections-all.scss +0 -26
- package/styles/components/sections/_sections-base.scss +0 -334
- package/styles/components/sections/_typography-system.scss +0 -327
- package/styles/components/sections/_ultra-compact-tokens.scss +0 -375
- package/styles/components/sections/_unified-section-style.scss +0 -157
- package/styles/components/sections/_utility-classes.scss +0 -567
- package/styles/components/sections/_visual-effects-library.scss +0 -374
- package/styles/core/_animations.scss +0 -1498
- package/styles/core/_bootstrap-reset.scss +0 -445
- package/styles/core/_color-helpers.scss +0 -46
- package/styles/core/_global-unified.scss +0 -118
- package/styles/core/_global.scss +0 -73
- package/styles/core/_mixins.scss +0 -491
- package/styles/core/_surface-layers.scss +0 -76
- package/styles/core/_utilities.scss +0 -326
- package/styles/core/_variables-unified.scss +0 -57
- package/styles/core/_variables.scss +0 -36
- package/styles/core/variables/_colors-source.scss +0 -34
- package/styles/core/variables/_colors-unified.scss +0 -26
- package/styles/core/variables/_colors.scss +0 -21
- package/styles/critical.scss +0 -353
- package/styles/design-system/_compact-theme.scss +0 -159
- package/styles/design-system/_section-base.scss +0 -426
- package/styles/design-system/_tokens.scss +0 -237
- package/styles/design-system/_unified-sections.scss +0 -215
- package/styles/layout/_feature-grid.scss +0 -322
- package/styles/layout/_masonry.scss +0 -734
- package/styles/layout/_tilt.scss +0 -244
- package/styles/micro-interactions.scss +0 -583
- package/styles/mixins/_section-mixins.scss +0 -280
- package/styles/non-critical.scss +0 -643
- package/styles/reset/_framework-reset.scss +0 -457
- package/styles/reset/_index.scss +0 -14
- package/styles/reset/_shadow-reset.scss +0 -383
- package/styles/responsive.scss +0 -326
- package/styles/themes.scss +0 -573
- package/styles/tokens/_index.scss +0 -92
- package/styles/tokens/_master.scss +0 -1404
- package/styles/tokens/_section-tokens.generated.scss +0 -140
|
@@ -1,518 +0,0 @@
|
|
|
1
|
-
/* ===================================================================
|
|
2
|
-
STREAMING EFFECTS
|
|
3
|
-
Magical visual effects for LLM streaming card generation
|
|
4
|
-
|
|
5
|
-
IMPORTANT: These styles ONLY target sections that are actively
|
|
6
|
-
animating (have the --animating class). Sections that have completed
|
|
7
|
-
their entrance animation (have --animated class) are explicitly
|
|
8
|
-
excluded to prevent continuous blinking.
|
|
9
|
-
=================================================================== */
|
|
10
|
-
|
|
11
|
-
/* ===================================================================
|
|
12
|
-
CARD SURFACE STREAMING STATE
|
|
13
|
-
Base container styles when streaming is active
|
|
14
|
-
=================================================================== */
|
|
15
|
-
|
|
16
|
-
.ai-card-surface.streaming-active {
|
|
17
|
-
position: relative;
|
|
18
|
-
border: 1px solid color-mix(in srgb, var(--color-brand) 40%, transparent);
|
|
19
|
-
box-shadow:
|
|
20
|
-
0 0 10px rgba(255, 121, 0, 0.2),
|
|
21
|
-
0 0 20px rgba(255, 121, 0, 0.1);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/* Traveling spark - small glowing dot that travels around the border */
|
|
25
|
-
.ai-card-surface.streaming-active::before {
|
|
26
|
-
content: "";
|
|
27
|
-
position: absolute;
|
|
28
|
-
width: 3px;
|
|
29
|
-
height: 3px;
|
|
30
|
-
background: #ff9500;
|
|
31
|
-
border-radius: 50%;
|
|
32
|
-
box-shadow: 0 0 6px 1px rgba(255, 149, 0, 0.8);
|
|
33
|
-
animation: sparkTravel 3s linear infinite;
|
|
34
|
-
pointer-events: none;
|
|
35
|
-
z-index: 10;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/* ===================================================================
|
|
39
|
-
CONTENT STREAMING ANIMATIONS
|
|
40
|
-
Smooth transitions for text and values during streaming
|
|
41
|
-
=================================================================== */
|
|
42
|
-
|
|
43
|
-
.ai-card-surface.streaming-active .field-value,
|
|
44
|
-
.ai-card-surface.streaming-active .item-title,
|
|
45
|
-
.ai-card-surface.streaming-active .item-description,
|
|
46
|
-
.ai-card-surface.streaming-active .section-title,
|
|
47
|
-
.ai-card-surface.streaming-active .section-description,
|
|
48
|
-
.ai-card-surface.streaming-active [class*="value"],
|
|
49
|
-
.ai-card-surface.streaming-active [class*="label"] {
|
|
50
|
-
transition: all 0.2s ease-out;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/* Typing cursor effect - blinking cursor at end of streaming text */
|
|
54
|
-
.ai-card-surface.streaming-active [class*="value"]:last-child::after,
|
|
55
|
-
.ai-card-surface.streaming-active .field-value:last-child::after {
|
|
56
|
-
content: "▋";
|
|
57
|
-
display: inline-block;
|
|
58
|
-
color: var(--color-brand, #ff7900);
|
|
59
|
-
animation: cursorBlink 0.8s step-end infinite;
|
|
60
|
-
margin-left: 2px;
|
|
61
|
-
font-weight: normal;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/* ===================================================================
|
|
65
|
-
STABILITY RULES - CRITICAL
|
|
66
|
-
Ensure sections that have completed animation stay stable
|
|
67
|
-
=================================================================== */
|
|
68
|
-
|
|
69
|
-
/* STOP all animations on non-animating masonry items */
|
|
70
|
-
.ai-card-surface.streaming-active .masonry-item:not(.masonry-item--animating) {
|
|
71
|
-
animation: none !important;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
.ai-card-surface.streaming-active .masonry-item:not(.masonry-item--animating)::after {
|
|
75
|
-
animation: none !important;
|
|
76
|
-
opacity: 0 !important;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/* Explicitly stop animations on animated (completed) items */
|
|
80
|
-
.ai-card-surface.streaming-active .masonry-item--animated,
|
|
81
|
-
.ai-card-surface.streaming-active .masonry-item--animated *,
|
|
82
|
-
.ai-card-surface.streaming-active .masonry-item--animated::before,
|
|
83
|
-
.ai-card-surface.streaming-active .masonry-item--animated::after,
|
|
84
|
-
.ai-card-surface.streaming-active .masonry-item[data-animated="true"],
|
|
85
|
-
.ai-card-surface.streaming-active .masonry-item[data-animated="true"] * {
|
|
86
|
-
animation: none !important;
|
|
87
|
-
opacity: 1 !important;
|
|
88
|
-
transform: none !important;
|
|
89
|
-
filter: none !important;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/* Remove pseudo-elements on completed sections */
|
|
93
|
-
.ai-card-surface.streaming-active .masonry-item--animated::after,
|
|
94
|
-
.ai-card-surface.streaming-active .masonry-item[data-animated="true"]::after {
|
|
95
|
-
display: none !important;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/* ===================================================================
|
|
99
|
-
SECTION CARD STREAMING EFFECTS
|
|
100
|
-
Glow effects ONLY on ANIMATING section cards - ONE-SHOT only
|
|
101
|
-
=================================================================== */
|
|
102
|
-
|
|
103
|
-
/* Only animating sections get the glow effect - ONE iteration, not infinite */
|
|
104
|
-
.ai-card-surface.streaming-active .masonry-item--animating .section-card,
|
|
105
|
-
.ai-card-surface.streaming-active .masonry-item--animating [class*="section-"] > div {
|
|
106
|
-
border-color: rgba(255, 121, 0, 0.3) !important;
|
|
107
|
-
box-shadow: 0 0 15px rgba(255, 121, 0, 0.25);
|
|
108
|
-
animation: sectionGlowPulse 0.8s ease-out forwards;
|
|
109
|
-
animation-iteration-count: 1;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
.ai-card-surface.streaming-active .masonry-item--animating .section-card:hover {
|
|
113
|
-
border-color: rgba(255, 121, 0, 0.6) !important;
|
|
114
|
-
box-shadow: 0 0 25px rgba(255, 121, 0, 0.4);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/* Inner glow flash - ONE-SHOT only, no infinite pulse */
|
|
118
|
-
.ai-card-surface.streaming-active .masonry-item--animating .section-card {
|
|
119
|
-
animation: innerFlash 0.6s ease-out forwards;
|
|
120
|
-
animation-iteration-count: 1;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/* Subtle inner border glow - ONE-SHOT only */
|
|
124
|
-
.ai-card-surface.streaming-active .masonry-item--animating .section-card::before {
|
|
125
|
-
content: "";
|
|
126
|
-
position: absolute;
|
|
127
|
-
inset: 0;
|
|
128
|
-
border-radius: inherit;
|
|
129
|
-
box-shadow: inset 0 0 0 1px rgba(255, 121, 0, 0.15);
|
|
130
|
-
pointer-events: none;
|
|
131
|
-
animation: innerBorderPulse 0.8s ease-out forwards;
|
|
132
|
-
animation-iteration-count: 1;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/* Stop effects on completed sections */
|
|
136
|
-
.ai-card-surface.streaming-active .masonry-item--animated .section-card,
|
|
137
|
-
.ai-card-surface.streaming-active .masonry-item--animated [class*="section-"] > div,
|
|
138
|
-
.ai-card-surface.streaming-active .masonry-item[data-animated="true"] .section-card {
|
|
139
|
-
animation: none !important;
|
|
140
|
-
box-shadow: none !important;
|
|
141
|
-
border-color: rgba(255, 121, 0, 0.15) !important;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
.ai-card-surface.streaming-active .masonry-item--animated .section-card::before,
|
|
145
|
-
.ai-card-surface.streaming-active .masonry-item[data-animated="true"] .section-card::before {
|
|
146
|
-
animation: none !important;
|
|
147
|
-
box-shadow: none !important;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/* ===================================================================
|
|
151
|
-
MASONRY ITEM STREAMING EFFECTS
|
|
152
|
-
Magical entrance animations ONLY for ANIMATING grid items
|
|
153
|
-
=================================================================== */
|
|
154
|
-
|
|
155
|
-
/* Magical section entrance - ONLY for animating items */
|
|
156
|
-
.ai-card-surface.streaming-active .masonry-item--animating {
|
|
157
|
-
animation: sectionMagicAppear 0.7s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
|
|
158
|
-
animation-iteration-count: 1;
|
|
159
|
-
position: relative;
|
|
160
|
-
overflow: hidden;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/* Staggered entrance delays for cascade effect - ONLY animating items */
|
|
164
|
-
.ai-card-surface.streaming-active .masonry-item--animating:nth-child(1) {
|
|
165
|
-
animation-delay: 0ms;
|
|
166
|
-
}
|
|
167
|
-
.ai-card-surface.streaming-active .masonry-item--animating:nth-child(2) {
|
|
168
|
-
animation-delay: 80ms;
|
|
169
|
-
}
|
|
170
|
-
.ai-card-surface.streaming-active .masonry-item--animating:nth-child(3) {
|
|
171
|
-
animation-delay: 160ms;
|
|
172
|
-
}
|
|
173
|
-
.ai-card-surface.streaming-active .masonry-item--animating:nth-child(4) {
|
|
174
|
-
animation-delay: 240ms;
|
|
175
|
-
}
|
|
176
|
-
.ai-card-surface.streaming-active .masonry-item--animating:nth-child(5) {
|
|
177
|
-
animation-delay: 320ms;
|
|
178
|
-
}
|
|
179
|
-
.ai-card-surface.streaming-active .masonry-item--animating:nth-child(6) {
|
|
180
|
-
animation-delay: 400ms;
|
|
181
|
-
}
|
|
182
|
-
.ai-card-surface.streaming-active .masonry-item--animating:nth-child(7) {
|
|
183
|
-
animation-delay: 480ms;
|
|
184
|
-
}
|
|
185
|
-
.ai-card-surface.streaming-active .masonry-item--animating:nth-child(8) {
|
|
186
|
-
animation-delay: 560ms;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
/* Shimmer sweep effect - ONLY on animating sections */
|
|
190
|
-
.ai-card-surface.streaming-active .masonry-item--animating::after {
|
|
191
|
-
content: "";
|
|
192
|
-
position: absolute;
|
|
193
|
-
inset: 0;
|
|
194
|
-
background: linear-gradient(
|
|
195
|
-
110deg,
|
|
196
|
-
transparent 30%,
|
|
197
|
-
rgba(255, 149, 0, 0.15) 50%,
|
|
198
|
-
transparent 70%
|
|
199
|
-
);
|
|
200
|
-
animation: shimmerSweep 0.8s ease-out forwards;
|
|
201
|
-
animation-iteration-count: 1;
|
|
202
|
-
pointer-events: none;
|
|
203
|
-
border-radius: inherit;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
/* ===================================================================
|
|
207
|
-
FIELD AND ITEM STREAMING ANIMATIONS
|
|
208
|
-
Staggered entrance ONLY for elements inside ANIMATING sections
|
|
209
|
-
=================================================================== */
|
|
210
|
-
|
|
211
|
-
.ai-card-surface.streaming-active
|
|
212
|
-
.masonry-item--animating
|
|
213
|
-
:where(
|
|
214
|
-
.info-row,
|
|
215
|
-
.section-card,
|
|
216
|
-
.list-card,
|
|
217
|
-
.event-timeline__item,
|
|
218
|
-
.product-card,
|
|
219
|
-
.solutions-card,
|
|
220
|
-
.contact-card,
|
|
221
|
-
.network-card__item,
|
|
222
|
-
.map-point,
|
|
223
|
-
.text-reference-entry,
|
|
224
|
-
.quote-card,
|
|
225
|
-
.overview-card__item
|
|
226
|
-
) {
|
|
227
|
-
opacity: 0;
|
|
228
|
-
transform: translateY(12px);
|
|
229
|
-
animation: fieldEnterBounce 0.45s ease forwards;
|
|
230
|
-
animation-iteration-count: 1;
|
|
231
|
-
will-change: opacity, transform;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
/* Staggered animation delays - ONLY inside animating sections */
|
|
235
|
-
.ai-card-surface.streaming-active
|
|
236
|
-
.masonry-item--animating
|
|
237
|
-
:where(
|
|
238
|
-
.info-row,
|
|
239
|
-
.section-card,
|
|
240
|
-
.list-card,
|
|
241
|
-
.event-timeline__item,
|
|
242
|
-
.product-card,
|
|
243
|
-
.solutions-card,
|
|
244
|
-
.contact-card,
|
|
245
|
-
.network-card__item,
|
|
246
|
-
.map-point,
|
|
247
|
-
.text-reference-entry,
|
|
248
|
-
.quote-card,
|
|
249
|
-
.overview-card__item
|
|
250
|
-
):nth-child(1) {
|
|
251
|
-
animation-delay: 0s;
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
.ai-card-surface.streaming-active
|
|
255
|
-
.masonry-item--animating
|
|
256
|
-
:where(
|
|
257
|
-
.info-row,
|
|
258
|
-
.section-card,
|
|
259
|
-
.list-card,
|
|
260
|
-
.event-timeline__item,
|
|
261
|
-
.product-card,
|
|
262
|
-
.solutions-card,
|
|
263
|
-
.contact-card,
|
|
264
|
-
.network-card__item,
|
|
265
|
-
.map-point,
|
|
266
|
-
.text-reference-entry,
|
|
267
|
-
.quote-card,
|
|
268
|
-
.overview-card__item
|
|
269
|
-
):nth-child(2) {
|
|
270
|
-
animation-delay: 0.05s;
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
.ai-card-surface.streaming-active
|
|
274
|
-
.masonry-item--animating
|
|
275
|
-
:where(
|
|
276
|
-
.info-row,
|
|
277
|
-
.section-card,
|
|
278
|
-
.list-card,
|
|
279
|
-
.event-timeline__item,
|
|
280
|
-
.product-card,
|
|
281
|
-
.solutions-card,
|
|
282
|
-
.contact-card,
|
|
283
|
-
.network-card__item,
|
|
284
|
-
.map-point,
|
|
285
|
-
.text-reference-entry,
|
|
286
|
-
.quote-card,
|
|
287
|
-
.overview-card__item
|
|
288
|
-
):nth-child(3) {
|
|
289
|
-
animation-delay: 0.1s;
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
.ai-card-surface.streaming-active
|
|
293
|
-
.masonry-item--animating
|
|
294
|
-
:where(
|
|
295
|
-
.info-row,
|
|
296
|
-
.section-card,
|
|
297
|
-
.list-card,
|
|
298
|
-
.event-timeline__item,
|
|
299
|
-
.product-card,
|
|
300
|
-
.solutions-card,
|
|
301
|
-
.contact-card,
|
|
302
|
-
.network-card__item,
|
|
303
|
-
.map-point,
|
|
304
|
-
.text-reference-entry,
|
|
305
|
-
.quote-card,
|
|
306
|
-
.overview-card__item
|
|
307
|
-
):nth-child(4) {
|
|
308
|
-
animation-delay: 0.15s;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
.ai-card-surface.streaming-active
|
|
312
|
-
.masonry-item--animating
|
|
313
|
-
:where(
|
|
314
|
-
.info-row,
|
|
315
|
-
.section-card,
|
|
316
|
-
.list-card,
|
|
317
|
-
.event-timeline__item,
|
|
318
|
-
.product-card,
|
|
319
|
-
.solutions-card,
|
|
320
|
-
.contact-card,
|
|
321
|
-
.network-card__item,
|
|
322
|
-
.map-point,
|
|
323
|
-
.text-reference-entry,
|
|
324
|
-
.quote-card,
|
|
325
|
-
.overview-card__item
|
|
326
|
-
):nth-child(5) {
|
|
327
|
-
animation-delay: 0.2s;
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
.ai-card-surface.streaming-active
|
|
331
|
-
.masonry-item--animating
|
|
332
|
-
:where(
|
|
333
|
-
.info-row,
|
|
334
|
-
.section-card,
|
|
335
|
-
.list-card,
|
|
336
|
-
.event-timeline__item,
|
|
337
|
-
.product-card,
|
|
338
|
-
.solutions-card,
|
|
339
|
-
.contact-card,
|
|
340
|
-
.network-card__item,
|
|
341
|
-
.map-point,
|
|
342
|
-
.text-reference-entry,
|
|
343
|
-
.quote-card,
|
|
344
|
-
.overview-card__item
|
|
345
|
-
):nth-child(n + 6) {
|
|
346
|
-
animation-delay: 0.24s;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
/* Ensure animated section content is stable */
|
|
350
|
-
.ai-card-surface.streaming-active
|
|
351
|
-
.masonry-item--animated
|
|
352
|
-
:where(
|
|
353
|
-
.info-row,
|
|
354
|
-
.section-card,
|
|
355
|
-
.list-card,
|
|
356
|
-
.event-timeline__item,
|
|
357
|
-
.product-card,
|
|
358
|
-
.solutions-card,
|
|
359
|
-
.contact-card,
|
|
360
|
-
.network-card__item,
|
|
361
|
-
.map-point,
|
|
362
|
-
.text-reference-entry,
|
|
363
|
-
.quote-card,
|
|
364
|
-
.overview-card__item
|
|
365
|
-
) {
|
|
366
|
-
animation: none !important;
|
|
367
|
-
opacity: 1 !important;
|
|
368
|
-
transform: none !important;
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
/* ===================================================================
|
|
372
|
-
STREAMING CARD BORDER GLOW
|
|
373
|
-
Glowing border effect during streaming
|
|
374
|
-
=================================================================== */
|
|
375
|
-
|
|
376
|
-
.streaming-border-glow {
|
|
377
|
-
position: relative;
|
|
378
|
-
border: 1px solid color-mix(in srgb, var(--color-brand, #ff7900) 40%, transparent);
|
|
379
|
-
box-shadow:
|
|
380
|
-
0 0 10px color-mix(in srgb, var(--color-brand, #ff7900) 20%, transparent),
|
|
381
|
-
0 0 20px color-mix(in srgb, var(--color-brand, #ff7900) 10%, transparent);
|
|
382
|
-
|
|
383
|
-
/* Traveling spark */
|
|
384
|
-
&::before {
|
|
385
|
-
content: "";
|
|
386
|
-
position: absolute;
|
|
387
|
-
width: 3px;
|
|
388
|
-
height: 3px;
|
|
389
|
-
background: var(--color-brand, #ff7900);
|
|
390
|
-
border-radius: 50%;
|
|
391
|
-
box-shadow: 0 0 6px 1px color-mix(in srgb, var(--color-brand, #ff7900) 80%, transparent);
|
|
392
|
-
animation: sparkTravel 3s linear infinite;
|
|
393
|
-
pointer-events: none;
|
|
394
|
-
z-index: 10;
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
/* ===================================================================
|
|
399
|
-
TYPING CURSOR EFFECT
|
|
400
|
-
Blinking cursor for streaming text
|
|
401
|
-
=================================================================== */
|
|
402
|
-
|
|
403
|
-
.typing-cursor::after {
|
|
404
|
-
content: "▋";
|
|
405
|
-
display: inline-block;
|
|
406
|
-
color: var(--color-brand, #ff7900);
|
|
407
|
-
animation: cursorBlink 0.8s step-end infinite;
|
|
408
|
-
margin-left: 2px;
|
|
409
|
-
font-weight: normal;
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
/* ===================================================================
|
|
413
|
-
SECTION HIGHLIGHT EFFECT
|
|
414
|
-
For URL fragment scrolling and attention
|
|
415
|
-
=================================================================== */
|
|
416
|
-
|
|
417
|
-
.section-highlight {
|
|
418
|
-
animation: sectionPulse 2s ease-out;
|
|
419
|
-
position: relative;
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
.section-highlight::after {
|
|
423
|
-
content: "";
|
|
424
|
-
position: absolute;
|
|
425
|
-
inset: -4px;
|
|
426
|
-
border: 2px solid color-mix(in srgb, var(--color-brand, #ff7900) 60%, transparent);
|
|
427
|
-
border-radius: var(--card-border-radius, 14px);
|
|
428
|
-
pointer-events: none;
|
|
429
|
-
animation: sectionBorderFade 2s ease-out forwards;
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
/* ===================================================================
|
|
433
|
-
NEW SECTION GLOW EFFECT
|
|
434
|
-
For newly added streaming sections
|
|
435
|
-
=================================================================== */
|
|
436
|
-
|
|
437
|
-
.new-section-glow {
|
|
438
|
-
border-color: color-mix(in srgb, var(--color-brand, #ff7900) 40%, transparent);
|
|
439
|
-
box-shadow: 0 0 15px color-mix(in srgb, var(--color-brand, #ff7900) 25%, transparent);
|
|
440
|
-
animation: newSectionGlow 0.6s ease-out forwards;
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
/* ===================================================================
|
|
444
|
-
SHIMMER TEXT EFFECT
|
|
445
|
-
Gradient shimmer on text during generation
|
|
446
|
-
=================================================================== */
|
|
447
|
-
|
|
448
|
-
.shimmer-text {
|
|
449
|
-
background: linear-gradient(
|
|
450
|
-
90deg,
|
|
451
|
-
var(--foreground, #ffffff) 0%,
|
|
452
|
-
var(--color-brand, #ff7900) 50%,
|
|
453
|
-
var(--foreground, #ffffff) 100%
|
|
454
|
-
);
|
|
455
|
-
background-size: 200% 100%;
|
|
456
|
-
background-clip: text;
|
|
457
|
-
-webkit-background-clip: text;
|
|
458
|
-
-webkit-text-fill-color: transparent;
|
|
459
|
-
animation: textShimmer 2s ease-in-out infinite;
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
/* ===================================================================
|
|
463
|
-
WAVE PROGRESS INDICATOR
|
|
464
|
-
Sliding wave effect for progress indication
|
|
465
|
-
=================================================================== */
|
|
466
|
-
|
|
467
|
-
.wave-progress {
|
|
468
|
-
position: absolute;
|
|
469
|
-
bottom: 0;
|
|
470
|
-
left: 0;
|
|
471
|
-
right: 0;
|
|
472
|
-
height: 4px;
|
|
473
|
-
background: linear-gradient(
|
|
474
|
-
90deg,
|
|
475
|
-
transparent 0%,
|
|
476
|
-
var(--color-brand, #ff7900) 25%,
|
|
477
|
-
var(--color-brand, #ff7900) 75%,
|
|
478
|
-
transparent 100%
|
|
479
|
-
);
|
|
480
|
-
background-size: 200% 100%;
|
|
481
|
-
animation: waveSlide 2s ease-in-out infinite;
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
/* ===================================================================
|
|
485
|
-
REDUCED MOTION SUPPORT
|
|
486
|
-
Respect user preferences for reduced motion
|
|
487
|
-
=================================================================== */
|
|
488
|
-
|
|
489
|
-
@media (prefers-reduced-motion: reduce) {
|
|
490
|
-
.ai-card-surface.streaming-active,
|
|
491
|
-
.ai-card-surface.streaming-active::before,
|
|
492
|
-
.ai-card-surface.streaming-active::after,
|
|
493
|
-
.ai-card-surface.streaming-active *,
|
|
494
|
-
.streaming-border-glow,
|
|
495
|
-
.streaming-border-glow::before,
|
|
496
|
-
.typing-cursor::after,
|
|
497
|
-
.section-highlight,
|
|
498
|
-
.section-highlight::after,
|
|
499
|
-
.new-section-glow,
|
|
500
|
-
.shimmer-text,
|
|
501
|
-
.wave-progress {
|
|
502
|
-
animation: none !important;
|
|
503
|
-
transition: none !important;
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
/* Remove typing cursor */
|
|
507
|
-
.ai-card-surface.streaming-active [class*="value"]:last-child::after,
|
|
508
|
-
.ai-card-surface.streaming-active .field-value:last-child::after,
|
|
509
|
-
.typing-cursor::after {
|
|
510
|
-
content: none !important;
|
|
511
|
-
}
|
|
512
|
-
|
|
513
|
-
/* Restore text fill */
|
|
514
|
-
.shimmer-text {
|
|
515
|
-
background: none !important;
|
|
516
|
-
-webkit-text-fill-color: currentColor !important;
|
|
517
|
-
}
|
|
518
|
-
}
|