@duskmoon-dev/css-art 0.2.0 → 1.12.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.
@@ -0,0 +1,893 @@
1
+ @layer css-art {
2
+ /* ── Keyframes ── */
3
+
4
+ @keyframes art-flower-animation-moving-flower-1 {
5
+ 0%, 100% { transform: rotate(3deg); }
6
+ 50% { transform: rotate(0deg); }
7
+ }
8
+
9
+ @keyframes art-flower-animation-moving-flower-2 {
10
+ 0%, 100% { transform: rotate(20deg); }
11
+ 50% { transform: rotate(23deg); }
12
+ }
13
+
14
+ @keyframes art-flower-animation-moving-flower-3 {
15
+ 0%, 100% { transform: rotate(-15deg); }
16
+ 50% { transform: rotate(-18deg); }
17
+ }
18
+
19
+ @keyframes art-flower-animation-blooming-leaf-right {
20
+ 0% { transform-origin: left; transform: rotate(70deg) rotateY(30deg) scaleX(0); }
21
+ }
22
+
23
+ @keyframes art-flower-animation-blooming-leaf-left {
24
+ 0% { transform-origin: right; transform: rotate(-70deg) rotateY(30deg) scaleX(0); }
25
+ }
26
+
27
+ @keyframes art-flower-animation-blooming-flower {
28
+ 0% { transform: scale(0); opacity: 0; }
29
+ }
30
+
31
+ @keyframes art-flower-animation-light-ans {
32
+ 0% { opacity: 0; transform: translateY(0); }
33
+ 25% { opacity: 1; }
34
+ 100% { opacity: 0; transform: translateY(-15em) translateX(3em); }
35
+ }
36
+
37
+ @keyframes art-flower-animation-grow-flower-tree {
38
+ 0% { transform: scaleY(0); transform-origin: bottom center; }
39
+ }
40
+
41
+ @keyframes art-flower-animation-grow-ans {
42
+ 0% { transform: scaleY(0); transform-origin: bottom center; }
43
+ }
44
+
45
+ @keyframes art-flower-animation-moving-grass {
46
+ 0%, 100% { transform: rotate(-48deg) rotateY(40deg); }
47
+ 50% { transform: rotate(-50deg) rotateY(40deg); }
48
+ }
49
+
50
+ @keyframes art-flower-animation-moving-grass--2 {
51
+ 0%, 100% { transform: scale(0.5) rotate(75deg) rotateX(10deg) rotateY(-200deg); }
52
+ 50% { transform: scale(0.5) rotate(80deg) rotateX(10deg) rotateY(-200deg); }
53
+ }
54
+
55
+ @keyframes art-flower-animation-flower-g-long-ans {
56
+ 0%, 100% { transform: rotate(-30deg) rotateY(-20deg); }
57
+ 50% { transform: rotate(-32deg) rotateY(-20deg); }
58
+ }
59
+
60
+ @keyframes art-flower-animation-flower-g-right-ans {
61
+ 0%, 100% { transform: rotate(20deg); }
62
+ 50% { transform: rotate(24deg) rotateX(-20deg); }
63
+ }
64
+
65
+ @keyframes art-flower-animation-flower-g-right-ans--2 {
66
+ 0%, 100% { transform: rotateY(-180deg) rotate(0deg) rotateX(-20deg); }
67
+ 50% { transform: rotateY(-180deg) rotate(6deg) rotateX(-20deg); }
68
+ }
69
+
70
+ @keyframes art-flower-animation-flower-g-front-ans {
71
+ 0%, 100% { transform: rotate(-28deg) rotateY(30deg) scale(1.04); }
72
+ 50% { transform: rotate(-35deg) rotateY(40deg) scale(1.04); }
73
+ }
74
+
75
+ @keyframes art-flower-animation-flower-g-front-leaf-ans {
76
+ 0% { transform: rotate(10deg) scale(0); }
77
+ }
78
+
79
+ @keyframes art-flower-animation-flower-g-front-leaf-left-ans {
80
+ 0% { transform: rotateY(-180deg) rotate(5deg) scale(0); }
81
+ }
82
+
83
+ @keyframes art-flower-animation-flower-g-front-leaf-left-ans-2 {
84
+ 0% { transform: rotateY(-180deg) scale(0); }
85
+ }
86
+
87
+ @keyframes art-flower-animation-flower-g-fr-ans {
88
+ 0%, 100% { transform: rotate(2deg); }
89
+ 50% { transform: rotate(4deg); }
90
+ }
91
+
92
+ @keyframes art-flower-animation-flower-g-fr-leaf-ans-1 {
93
+ 0% { transform-origin: left; transform: rotate(45deg) scale(0); }
94
+ }
95
+
96
+ @keyframes art-flower-animation-flower-g-fr-leaf-ans-5 {
97
+ 0% { transform-origin: left; transform: rotate(55deg) scale(0); }
98
+ }
99
+
100
+ @keyframes art-flower-animation-flower-g-fr-leaf-ans-6 {
101
+ 0% { transform-origin: right; transform: rotate(25deg) rotateY(-180deg) scale(0); }
102
+ }
103
+
104
+ @keyframes art-flower-animation-flower-g-fr-leaf-ans-7 {
105
+ 0% { transform-origin: left; transform: rotate(45deg) scale(0); }
106
+ }
107
+
108
+ @keyframes art-flower-animation-flower-g-fr-leaf-ans-8 {
109
+ 0% { transform-origin: right; transform: rotate(15deg) rotateY(-180deg) scale(0); }
110
+ }
111
+
112
+ @keyframes art-flower-animation-growing-grass-1 {
113
+ 0% { transform-origin: bottom left; transform: rotate(-20deg) scale(0); }
114
+ }
115
+ @keyframes art-flower-animation-growing-grass-2 {
116
+ 0% { transform-origin: bottom right; transform: rotate(10deg) scale(0); }
117
+ }
118
+ @keyframes art-flower-animation-growing-grass-3 {
119
+ 0% { transform-origin: bottom left; transform: rotate(-18deg) rotateX(-20deg) scale(0); }
120
+ }
121
+ @keyframes art-flower-animation-growing-grass-4 {
122
+ 0% { transform-origin: bottom right; transform: rotate(2deg) scale(0); }
123
+ }
124
+ @keyframes art-flower-animation-growing-grass-5 {
125
+ 0% { transform-origin: bottom left; transform: rotate(-24deg) rotateX(-20deg) scale(0); }
126
+ }
127
+ @keyframes art-flower-animation-growing-grass-6 {
128
+ 0% { transform-origin: bottom right; transform: rotate(10deg) scale(0); }
129
+ }
130
+ @keyframes art-flower-animation-growing-grass-7 {
131
+ 0% { transform-origin: bottom left; transform: rotate(-10deg) scale(0); }
132
+ }
133
+ @keyframes art-flower-animation-growing-grass-8 {
134
+ 0% { transform-origin: bottom right; transform: rotate(10deg) scale(0); }
135
+ }
136
+
137
+ /* Bubble float-up (replaces original JS animation) */
138
+ @keyframes art-flower-animation-bubble {
139
+ 0% { transform: translateY(0) scale(0.3); opacity: 0; }
140
+ 10% { opacity: 1; }
141
+ 80% { opacity: 0.6; }
142
+ 100% { transform: translateY(-70em) scale(1); opacity: 0; }
143
+ }
144
+
145
+ /* ── Root container ── */
146
+
147
+ .art-flower-animation {
148
+ --art-flower-animation-size: 600px;
149
+ --art-flower-animation-bg: #010113;
150
+
151
+ position: relative;
152
+ font-size: calc(var(--art-flower-animation-size) / 100);
153
+ width: var(--art-flower-animation-size);
154
+ height: calc(var(--art-flower-animation-size) * 1.1);
155
+ overflow: hidden;
156
+ background-color: var(--art-flower-animation-bg);
157
+ perspective: 1000px;
158
+ display: flex;
159
+ align-items: flex-end;
160
+ justify-content: center;
161
+ }
162
+
163
+ .art-flower-animation-sm { --art-flower-animation-size: 300px; }
164
+ .art-flower-animation-lg { --art-flower-animation-size: 900px; }
165
+
166
+ /* ── Night sky background ── */
167
+
168
+ .art-flower-animation .night {
169
+ position: absolute;
170
+ left: 50%;
171
+ top: 0;
172
+ transform: translateX(-50%);
173
+ width: 100%;
174
+ height: 100%;
175
+ filter: blur(0.1em);
176
+ background-image:
177
+ radial-gradient(ellipse at top, transparent 0%, var(--art-flower-animation-bg)),
178
+ radial-gradient(ellipse at bottom, var(--art-flower-animation-bg), rgba(145, 233, 255, 0.2)),
179
+ repeating-linear-gradient(220deg, rgb(0, 0, 0) 0px, rgb(0, 0, 0) 19px, transparent 19px, transparent 22px),
180
+ repeating-linear-gradient(189deg, rgb(0, 0, 0) 0px, rgb(0, 0, 0) 19px, transparent 19px, transparent 22px),
181
+ repeating-linear-gradient(148deg, rgb(0, 0, 0) 0px, rgb(0, 0, 0) 19px, transparent 19px, transparent 22px),
182
+ linear-gradient(90deg, rgb(255, 94, 0), rgb(240, 240, 240));
183
+ }
184
+
185
+ /* ── Flowers container ── */
186
+
187
+ .art-flower-animation .flowers {
188
+ position: relative;
189
+ transform: scale(0.9);
190
+ }
191
+
192
+ /* ── Individual flowers ── */
193
+
194
+ .art-flower-animation .flower {
195
+ position: absolute;
196
+ bottom: 10em;
197
+ transform-origin: bottom center;
198
+ z-index: 10;
199
+ --fl-speed: 0.8s;
200
+ }
201
+
202
+ .art-flower-animation .flower--1 {
203
+ animation: art-flower-animation-moving-flower-1 4s linear infinite;
204
+ }
205
+ .art-flower-animation .flower--1 .flower__line {
206
+ height: 70em;
207
+ animation-delay: 0.3s;
208
+ }
209
+ .art-flower-animation .flower--1 .flower__line__leaf--1 {
210
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 1.6s backwards;
211
+ }
212
+ .art-flower-animation .flower--1 .flower__line__leaf--2 {
213
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 1.4s backwards;
214
+ }
215
+ .art-flower-animation .flower--1 .flower__line__leaf--3 {
216
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 1.2s backwards;
217
+ }
218
+ .art-flower-animation .flower--1 .flower__line__leaf--4 {
219
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 1s backwards;
220
+ }
221
+ .art-flower-animation .flower--1 .flower__line__leaf--5 {
222
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 1.8s backwards;
223
+ }
224
+ .art-flower-animation .flower--1 .flower__line__leaf--6 {
225
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 2s backwards;
226
+ }
227
+
228
+ .art-flower-animation .flower--2 {
229
+ left: 50%;
230
+ transform: rotate(20deg);
231
+ animation: art-flower-animation-moving-flower-2 4s linear infinite;
232
+ }
233
+ .art-flower-animation .flower--2 .flower__line {
234
+ height: 60em;
235
+ animation-delay: 0.6s;
236
+ }
237
+ .art-flower-animation .flower--2 .flower__line__leaf--1 {
238
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 1.9s backwards;
239
+ }
240
+ .art-flower-animation .flower--2 .flower__line__leaf--2 {
241
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 1.7s backwards;
242
+ }
243
+ .art-flower-animation .flower--2 .flower__line__leaf--3 {
244
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 1.5s backwards;
245
+ }
246
+ .art-flower-animation .flower--2 .flower__line__leaf--4 {
247
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 1.3s backwards;
248
+ }
249
+
250
+ .art-flower-animation .flower--3 {
251
+ left: 50%;
252
+ transform: rotate(-15deg);
253
+ animation: art-flower-animation-moving-flower-3 4s linear infinite;
254
+ }
255
+ .art-flower-animation .flower--3 .flower__line {
256
+ animation-delay: 0.9s;
257
+ }
258
+ .art-flower-animation .flower--3 .flower__line__leaf--1 {
259
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 2.5s backwards;
260
+ }
261
+ .art-flower-animation .flower--3 .flower__line__leaf--2 {
262
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 2.3s backwards;
263
+ }
264
+ .art-flower-animation .flower--3 .flower__line__leaf--3 {
265
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 2.1s backwards;
266
+ }
267
+ .art-flower-animation .flower--3 .flower__line__leaf--4 {
268
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 1.9s backwards;
269
+ }
270
+
271
+ .art-flower-animation .flower--4 {
272
+ left: -30%;
273
+ transform: rotate(-15deg) scaleX(-1);
274
+ animation: art-flower-animation-moving-flower-3 4s linear infinite;
275
+ }
276
+ .art-flower-animation .flower--4 .flower__line {
277
+ animation-delay: 1.2s;
278
+ }
279
+ .art-flower-animation .flower--4 .flower__line__leaf--1 {
280
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 2.8s backwards;
281
+ }
282
+ .art-flower-animation .flower--4 .flower__line__leaf--2 {
283
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 2.6s backwards;
284
+ }
285
+ .art-flower-animation .flower--4 .flower__line__leaf--3 {
286
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 2.4s backwards;
287
+ }
288
+ .art-flower-animation .flower--4 .flower__line__leaf--4 {
289
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 2.2s backwards;
290
+ }
291
+
292
+ /* ── Petals ── */
293
+
294
+ .art-flower-animation .flower__leafs {
295
+ position: relative;
296
+ animation: art-flower-animation-blooming-flower 2s backwards;
297
+ }
298
+ .art-flower-animation .flower__leafs--1 { animation-delay: 1.1s; }
299
+ .art-flower-animation .flower__leafs--2 { animation-delay: 1.4s; }
300
+ .art-flower-animation .flower__leafs--3 { animation-delay: 1.7s; }
301
+
302
+ .art-flower-animation .flower__leafs::after {
303
+ content: "";
304
+ position: absolute;
305
+ left: 0;
306
+ top: 0;
307
+ transform: translate(-50%, -100%);
308
+ width: 8em;
309
+ height: 8em;
310
+ background-color: #e7b201;
311
+ filter: blur(10em);
312
+ }
313
+
314
+ .art-flower-animation .flower__leaf {
315
+ position: absolute;
316
+ bottom: 0;
317
+ left: 50%;
318
+ width: 8em;
319
+ height: 11em;
320
+ border-radius: 51% 49% 47% 53% / 44% 45% 55% 69%;
321
+ background-color: #e6f331;
322
+ background-image: linear-gradient(to top, #e6f331, #e6f331);
323
+ transform-origin: bottom center;
324
+ opacity: 0.9;
325
+ box-shadow: inset 0 0 2em rgba(255, 255, 255, 0.5);
326
+ }
327
+ .art-flower-animation .flower__leaf--1 { transform: translate(-10%, 1%) rotateY(40deg) rotateX(-50deg); }
328
+ .art-flower-animation .flower__leaf--2 { transform: translate(-50%, -4%) rotateX(40deg); }
329
+ .art-flower-animation .flower__leaf--3 { transform: translate(-90%, 0%) rotateY(45deg) rotateX(50deg); }
330
+ .art-flower-animation .flower__leaf--4 {
331
+ width: 8em;
332
+ height: 8em;
333
+ transform-origin: bottom left;
334
+ border-radius: 4em 10em 4em 4em;
335
+ transform: translate(0%, 18%) rotateX(70deg) rotate(-43deg);
336
+ background-image: linear-gradient(to top, #e6f331, #e6f331);
337
+ z-index: 1;
338
+ opacity: 0.8;
339
+ }
340
+
341
+ /* ── Flower center ── */
342
+
343
+ .art-flower-animation .flower__white-circle {
344
+ position: absolute;
345
+ left: -3.5em;
346
+ top: -3em;
347
+ width: 9em;
348
+ height: 4em;
349
+ border-radius: 50%;
350
+ background-color: #fff;
351
+ }
352
+ .art-flower-animation .flower__white-circle::after {
353
+ content: "";
354
+ position: absolute;
355
+ left: 50%;
356
+ top: 45%;
357
+ transform: translate(-50%, -50%);
358
+ width: 60%;
359
+ height: 60%;
360
+ border-radius: inherit;
361
+ background-image:
362
+ repeating-linear-gradient(135deg, rgba(0,0,0,0.03) 0px, rgba(0,0,0,0.03) 1px, transparent 1px, transparent 12px),
363
+ repeating-linear-gradient(45deg, rgba(0,0,0,0.03) 0px, rgba(0,0,0,0.03) 1px, transparent 1px, transparent 12px),
364
+ repeating-linear-gradient(67.5deg, rgba(0,0,0,0.03) 0px, rgba(0,0,0,0.03) 1px, transparent 1px, transparent 12px),
365
+ repeating-linear-gradient(112.5deg, rgba(0,0,0,0.03) 0px, rgba(0,0,0,0.03) 1px, transparent 1px, transparent 12px),
366
+ repeating-linear-gradient(157.5deg, rgba(0,0,0,0.03) 0px, rgba(0,0,0,0.03) 1px, transparent 1px, transparent 12px),
367
+ repeating-linear-gradient(22.5deg, rgba(0,0,0,0.03) 0px, rgba(0,0,0,0.03) 1px, transparent 1px, transparent 12px),
368
+ linear-gradient(90deg, rgb(255, 235, 18), rgb(255, 206, 0));
369
+ }
370
+
371
+ /* ── Stem ── */
372
+
373
+ .art-flower-animation .flower__line {
374
+ height: 55em;
375
+ width: 1.5em;
376
+ background-image:
377
+ linear-gradient(to left, rgba(0,0,0,0.2), transparent, rgba(255,255,255,0.2)),
378
+ linear-gradient(to top, transparent 10%, #056d24, #028137);
379
+ box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.5);
380
+ animation: art-flower-animation-grow-flower-tree 4s backwards;
381
+ }
382
+
383
+ .art-flower-animation .flower__line__leaf {
384
+ --w: 7em;
385
+ --h: calc(var(--w) + 2em);
386
+ position: absolute;
387
+ top: 20%;
388
+ left: 90%;
389
+ width: var(--w);
390
+ height: var(--h);
391
+ border-top-right-radius: var(--h);
392
+ border-bottom-left-radius: var(--h);
393
+ background-image: linear-gradient(to top, rgba(12, 94, 32, 0.4), #028137);
394
+ }
395
+ .art-flower-animation .flower__line__leaf--1 { transform: rotate(70deg) rotateY(30deg); }
396
+ .art-flower-animation .flower__line__leaf--2 { top: 45%; transform: rotate(70deg) rotateY(30deg); }
397
+ .art-flower-animation .flower__line__leaf--3,
398
+ .art-flower-animation .flower__line__leaf--4,
399
+ .art-flower-animation .flower__line__leaf--6 {
400
+ border-top-right-radius: 0;
401
+ border-bottom-left-radius: 0;
402
+ border-top-left-radius: var(--h);
403
+ border-bottom-right-radius: var(--h);
404
+ left: -460%;
405
+ top: 12%;
406
+ transform: rotate(-70deg) rotateY(30deg);
407
+ }
408
+ .art-flower-animation .flower__line__leaf--4 { top: 40%; }
409
+ .art-flower-animation .flower__line__leaf--5 {
410
+ top: 0;
411
+ transform-origin: left;
412
+ transform: rotate(70deg) rotateY(30deg) scale(0.6);
413
+ }
414
+ .art-flower-animation .flower__line__leaf--6 {
415
+ top: -2%;
416
+ left: -450%;
417
+ transform-origin: right;
418
+ transform: rotate(-70deg) rotateY(30deg) scale(0.6);
419
+ }
420
+
421
+ /* ── Light particles ── */
422
+
423
+ .art-flower-animation .flower__light {
424
+ position: absolute;
425
+ bottom: 0;
426
+ width: 1em;
427
+ height: 1em;
428
+ background-color: rgb(255, 251, 0);
429
+ border-radius: 50%;
430
+ filter: blur(0.2em);
431
+ animation: art-flower-animation-light-ans 4s linear infinite backwards;
432
+ }
433
+ .art-flower-animation .flower__light:nth-child(odd) { background-color: #028137; }
434
+ .art-flower-animation .flower__light--1 { left: -2em; animation-delay: 1s; }
435
+ .art-flower-animation .flower__light--2 { left: 3em; animation-delay: 0.5s; }
436
+ .art-flower-animation .flower__light--3 { left: -6em; animation-delay: 0.3s; }
437
+ .art-flower-animation .flower__light--4 { left: 6em; animation-delay: 0.9s; }
438
+ .art-flower-animation .flower__light--5 { left: -1em; animation-delay: 1.5s; }
439
+ .art-flower-animation .flower__light--6 { left: -4em; animation-delay: 3s; }
440
+ .art-flower-animation .flower__light--7 { left: 3em; animation-delay: 2s; }
441
+ .art-flower-animation .flower__light--8 { left: -6em; animation-delay: 3.5s; }
442
+
443
+ /* ── Grass ── */
444
+
445
+ .art-flower-animation .flower__grass {
446
+ --c: #028137;
447
+ --line-w: 1.5em;
448
+ position: absolute;
449
+ bottom: 12em;
450
+ left: -7em;
451
+ display: flex;
452
+ flex-direction: column;
453
+ align-items: flex-end;
454
+ z-index: 20;
455
+ transform-origin: bottom center;
456
+ transform: rotate(-48deg) rotateY(40deg);
457
+ }
458
+ .art-flower-animation .flower__grass--1 {
459
+ animation: art-flower-animation-moving-grass 2s linear infinite;
460
+ }
461
+ .art-flower-animation .flower__grass--2 {
462
+ left: 2em;
463
+ bottom: 10em;
464
+ transform: scale(0.5) rotate(75deg) rotateX(10deg) rotateY(-200deg);
465
+ opacity: 0.8;
466
+ z-index: 0;
467
+ animation: art-flower-animation-moving-grass--2 1.5s linear infinite;
468
+ }
469
+ .art-flower-animation .flower__grass--top {
470
+ width: 7em;
471
+ height: 10em;
472
+ border-top-right-radius: 100%;
473
+ border-right: var(--line-w) solid var(--c);
474
+ transform-origin: bottom center;
475
+ transform: rotate(-2deg);
476
+ }
477
+ .art-flower-animation .flower__grass--bottom {
478
+ margin-top: -2px;
479
+ width: var(--line-w);
480
+ height: 25em;
481
+ background-image: linear-gradient(to top, transparent, var(--c));
482
+ }
483
+
484
+ .art-flower-animation .flower__grass__leaf {
485
+ --size: 10em;
486
+ position: absolute;
487
+ width: calc(var(--size) * 2.1);
488
+ height: var(--size);
489
+ border-top-left-radius: var(--size);
490
+ border-top-right-radius: var(--size);
491
+ background-image: linear-gradient(to top, transparent, transparent 30%, var(--c));
492
+ z-index: 100;
493
+ }
494
+ .art-flower-animation .flower__grass__leaf--1 {
495
+ top: -6%; left: 30%; --size: 6em;
496
+ transform: rotate(-20deg);
497
+ animation: art-flower-animation-growing-grass-1 2s 2.6s backwards;
498
+ }
499
+ .art-flower-animation .flower__grass__leaf--2 {
500
+ top: -5%; left: -110%; --size: 6em;
501
+ transform: rotate(10deg);
502
+ animation: art-flower-animation-growing-grass-2 2s 2.4s linear backwards;
503
+ }
504
+ .art-flower-animation .flower__grass__leaf--3 {
505
+ top: 5%; left: 60%; --size: 8em;
506
+ transform: rotate(-18deg) rotateX(-20deg);
507
+ animation: art-flower-animation-growing-grass-3 2s 2.2s linear backwards;
508
+ }
509
+ .art-flower-animation .flower__grass__leaf--4 {
510
+ top: 6%; left: -135%; --size: 8em;
511
+ transform: rotate(2deg);
512
+ animation: art-flower-animation-growing-grass-4 2s 2s linear backwards;
513
+ }
514
+ .art-flower-animation .flower__grass__leaf--5 {
515
+ top: 20%; left: 60%; --size: 10em;
516
+ transform: rotate(-24deg) rotateX(-20deg);
517
+ animation: art-flower-animation-growing-grass-5 2s 1.8s linear backwards;
518
+ }
519
+ .art-flower-animation .flower__grass__leaf--6 {
520
+ top: 22%; left: -180%; --size: 10em;
521
+ transform: rotate(10deg);
522
+ animation: art-flower-animation-growing-grass-6 2s 1.6s linear backwards;
523
+ }
524
+ .art-flower-animation .flower__grass__leaf--7 {
525
+ top: 39%; left: 70%; --size: 10em;
526
+ transform: rotate(-10deg);
527
+ animation: art-flower-animation-growing-grass-7 2s 1.4s linear backwards;
528
+ }
529
+ .art-flower-animation .flower__grass__leaf--8 {
530
+ top: 40%; left: -215%; --size: 11em;
531
+ transform: rotate(10deg);
532
+ animation: art-flower-animation-growing-grass-8 2s 1.2s linear backwards;
533
+ }
534
+ .art-flower-animation .flower__grass__overlay {
535
+ position: absolute;
536
+ top: -10%; right: 0%;
537
+ width: 100%; height: 100%;
538
+ background-color: rgba(0, 0, 0, 0.6);
539
+ filter: blur(1.5em);
540
+ z-index: 100;
541
+ }
542
+
543
+ /* ── Long grass stem ── */
544
+
545
+ .art-flower-animation .flower__g-long {
546
+ --w: 2em;
547
+ --h: 6em;
548
+ --c: #0d6632;
549
+ position: absolute;
550
+ bottom: 10em;
551
+ left: -3em;
552
+ transform-origin: bottom center;
553
+ transform: rotate(-30deg) rotateY(-20deg);
554
+ display: flex;
555
+ flex-direction: column;
556
+ align-items: flex-end;
557
+ animation: art-flower-animation-flower-g-long-ans 3s linear infinite;
558
+ }
559
+ .art-flower-animation .flower__g-long__top {
560
+ width: calc(var(--w) + 1em);
561
+ height: var(--h);
562
+ border-top-right-radius: 100%;
563
+ border-right: 0.7em solid var(--c);
564
+ transform: translate(-0.7em, 1em);
565
+ }
566
+ .art-flower-animation .flower__g-long__bottom {
567
+ width: var(--w);
568
+ height: 50em;
569
+ transform-origin: bottom center;
570
+ background-image: linear-gradient(to top, transparent 30%, var(--c));
571
+ box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.5);
572
+ clip-path: polygon(35% 0, 65% 1%, 100% 100%, 0% 100%);
573
+ }
574
+
575
+ /* ── Right grass ── */
576
+
577
+ .art-flower-animation .flower__g-right {
578
+ position: absolute;
579
+ bottom: 6em;
580
+ left: -2em;
581
+ transform-origin: bottom left;
582
+ transform: rotate(20deg);
583
+ }
584
+ .art-flower-animation .flower__g-right .leaf {
585
+ width: 30em;
586
+ height: 50em;
587
+ border-top-left-radius: 100%;
588
+ border-left: 2em solid #028137;
589
+ background-image: linear-gradient(to bottom, transparent, var(--art-flower-animation-bg) 60%);
590
+ -webkit-mask-image: linear-gradient(to top, transparent 30%, #028137 60%);
591
+ mask-image: linear-gradient(to top, transparent 30%, #028137 60%);
592
+ }
593
+ .art-flower-animation .flower__g-right--1 {
594
+ animation: art-flower-animation-flower-g-right-ans 2.5s linear infinite;
595
+ }
596
+ .art-flower-animation .flower__g-right--2 {
597
+ left: 5em;
598
+ transform: rotateY(-180deg);
599
+ animation: art-flower-animation-flower-g-right-ans--2 3s linear infinite;
600
+ }
601
+ .art-flower-animation .flower__g-right--2 .leaf {
602
+ height: 75em;
603
+ filter: blur(0.3em);
604
+ opacity: 0.8;
605
+ }
606
+
607
+ /* ── Front grass ── */
608
+
609
+ .art-flower-animation .flower__g-front {
610
+ position: absolute;
611
+ bottom: 6em;
612
+ left: 2.5em;
613
+ z-index: 100;
614
+ transform-origin: bottom center;
615
+ transform: rotate(-28deg) rotateY(30deg) scale(1.04);
616
+ animation: art-flower-animation-flower-g-front-ans 2s linear infinite;
617
+ }
618
+ .art-flower-animation .flower__g-front__line {
619
+ width: 0.3em;
620
+ height: 20em;
621
+ background-image: linear-gradient(to top, transparent, #028137, transparent 100%);
622
+ position: relative;
623
+ }
624
+ .art-flower-animation .flower__g-front__leaf-wrapper {
625
+ position: absolute;
626
+ top: 0;
627
+ left: 0;
628
+ transform-origin: bottom left;
629
+ transform: rotate(10deg);
630
+ }
631
+ .art-flower-animation .flower__g-front__leaf-wrapper:nth-child(even) {
632
+ left: 0;
633
+ transform: rotateY(-180deg) rotate(5deg);
634
+ animation: art-flower-animation-flower-g-front-leaf-left-ans 1s ease-in backwards;
635
+ }
636
+ .art-flower-animation .flower__g-front__leaf-wrapper:nth-child(odd) {
637
+ animation: art-flower-animation-flower-g-front-leaf-ans 1s ease-in backwards;
638
+ }
639
+ .art-flower-animation .flower__g-front__leaf-wrapper--1 {
640
+ top: -8em;
641
+ transform: scale(0.7);
642
+ animation: art-flower-animation-flower-g-front-leaf-ans 1s 5.5s ease-in backwards !important;
643
+ }
644
+ .art-flower-animation .flower__g-front__leaf-wrapper--2 {
645
+ top: -8em;
646
+ transform: rotateY(-180deg) scale(0.7) !important;
647
+ animation: art-flower-animation-flower-g-front-leaf-left-ans-2 1s 5.2s ease-in backwards !important;
648
+ }
649
+ .art-flower-animation .flower__g-front__leaf-wrapper--3 {
650
+ top: -3em;
651
+ animation: art-flower-animation-flower-g-front-leaf-ans 1s 4.9s ease-in backwards !important;
652
+ }
653
+ .art-flower-animation .flower__g-front__leaf-wrapper--4 {
654
+ top: -3em;
655
+ transform: rotateY(-180deg) scale(0.9) !important;
656
+ animation: art-flower-animation-flower-g-front-leaf-left-ans-2 1s 4.6s ease-in backwards !important;
657
+ }
658
+ .art-flower-animation .flower__g-front__leaf-wrapper--5,
659
+ .art-flower-animation .flower__g-front__leaf-wrapper--6 { top: 2em; }
660
+ .art-flower-animation .flower__g-front__leaf-wrapper--7,
661
+ .art-flower-animation .flower__g-front__leaf-wrapper--8 { top: 6.5em; }
662
+ .art-flower-animation .flower__g-front__leaf-wrapper--5 { animation-delay: 4.3s !important; }
663
+ .art-flower-animation .flower__g-front__leaf-wrapper--6 { animation-delay: 4.1s !important; }
664
+ .art-flower-animation .flower__g-front__leaf-wrapper--7 { animation-delay: 3.8s !important; }
665
+ .art-flower-animation .flower__g-front__leaf-wrapper--8 { animation-delay: 3.5s !important; }
666
+
667
+ .art-flower-animation .flower__g-front__leaf {
668
+ width: 10em;
669
+ height: 10em;
670
+ border-radius: 100% 0% 0% 100% / 100% 100% 0% 0%;
671
+ box-shadow: inset 0 2px 1em hsla(150, 97%, 14%, 0.2);
672
+ background-image:
673
+ linear-gradient(to bottom left, transparent, var(--art-flower-animation-bg)),
674
+ linear-gradient(to bottom right, #028137 50%, transparent 50%, transparent);
675
+ -webkit-mask-image: linear-gradient(to bottom right, #028137 50%, transparent 50%, transparent);
676
+ mask-image: linear-gradient(to bottom right, #028137 50%, transparent 50%, transparent);
677
+ }
678
+
679
+ /* ── Front-right grass ── */
680
+
681
+ .art-flower-animation .flower__g-fr {
682
+ position: absolute;
683
+ bottom: -4em;
684
+ left: 0;
685
+ transform-origin: bottom left;
686
+ z-index: 10;
687
+ animation: art-flower-animation-flower-g-fr-ans 2s linear infinite;
688
+ }
689
+ .art-flower-animation .flower__g-fr .leaf {
690
+ width: 30em;
691
+ height: 50em;
692
+ border-top-left-radius: 100%;
693
+ border-left: 2em solid #028137;
694
+ -webkit-mask-image: linear-gradient(to top, transparent 25%, #028137 50%);
695
+ mask-image: linear-gradient(to top, transparent 25%, #028137 50%);
696
+ position: relative;
697
+ z-index: 1;
698
+ }
699
+ .art-flower-animation .flower__g-fr__leaf {
700
+ position: absolute;
701
+ top: 0;
702
+ left: 0;
703
+ width: 10em;
704
+ height: 10em;
705
+ border-radius: 100% 0% 0% 100% / 100% 100% 0% 0%;
706
+ box-shadow: inset 0 2px 1em hsla(184deg, 97%, 58%, 0.2);
707
+ background-image:
708
+ linear-gradient(to bottom left, transparent, var(--art-flower-animation-bg) 98%),
709
+ linear-gradient(to bottom right, #028137 45%, transparent 50%, transparent);
710
+ -webkit-mask-image: linear-gradient(135deg, #028137 40%, transparent 50%, transparent);
711
+ mask-image: linear-gradient(135deg, #028137 40%, transparent 50%, transparent);
712
+ }
713
+ .art-flower-animation .flower__g-fr__leaf--1 {
714
+ left: 20em; transform: rotate(45deg);
715
+ animation: art-flower-animation-flower-g-fr-leaf-ans-1 0.5s 5.2s linear backwards;
716
+ }
717
+ .art-flower-animation .flower__g-fr__leaf--2 {
718
+ left: 12em; top: -7em;
719
+ transform: rotate(25deg) rotateY(-180deg);
720
+ animation: art-flower-animation-flower-g-fr-leaf-ans-6 0.5s 5s linear backwards;
721
+ }
722
+ .art-flower-animation .flower__g-fr__leaf--3 {
723
+ left: 15em; top: 6em;
724
+ transform: rotate(55deg);
725
+ animation: art-flower-animation-flower-g-fr-leaf-ans-5 0.5s 4.8s linear backwards;
726
+ }
727
+ .art-flower-animation .flower__g-fr__leaf--4 {
728
+ left: 6em; top: -2em;
729
+ transform: rotate(25deg) rotateY(-180deg);
730
+ animation: art-flower-animation-flower-g-fr-leaf-ans-6 0.5s 4.6s linear backwards;
731
+ }
732
+ .art-flower-animation .flower__g-fr__leaf--5 {
733
+ left: 10em; top: 14em;
734
+ transform: rotate(55deg);
735
+ animation: art-flower-animation-flower-g-fr-leaf-ans-5 0.5s 4.4s linear backwards;
736
+ }
737
+ .art-flower-animation .flower__g-fr__leaf--6 {
738
+ left: 0; top: 6em;
739
+ transform: rotate(25deg) rotateY(-180deg);
740
+ animation: art-flower-animation-flower-g-fr-leaf-ans-6 0.5s 4.2s linear backwards;
741
+ }
742
+ .art-flower-animation .flower__g-fr__leaf--7 {
743
+ left: 5em; top: 22em;
744
+ transform: rotate(45deg);
745
+ animation: art-flower-animation-flower-g-fr-leaf-ans-7 0.5s 4s linear backwards;
746
+ }
747
+ .art-flower-animation .flower__g-fr__leaf--8 {
748
+ left: -4em; top: 15em;
749
+ transform: rotate(15deg) rotateY(-180deg);
750
+ animation: art-flower-animation-flower-g-fr-leaf-ans-8 0.5s 3.8s linear backwards;
751
+ }
752
+
753
+ /* ── Tall background grasses ── */
754
+
755
+ .art-flower-animation .long-g {
756
+ position: absolute;
757
+ bottom: 25em;
758
+ left: -42em;
759
+ transform-origin: bottom left;
760
+ }
761
+ .art-flower-animation .long-g .leaf {
762
+ --w: 3em;
763
+ --h: 40em;
764
+ position: absolute;
765
+ bottom: 0;
766
+ left: 0;
767
+ width: var(--w);
768
+ background-image: linear-gradient(to top, transparent 10%, #056d24 60%, #028137);
769
+ clip-path: polygon(50% 0%, 100% 100%, 0% 100%);
770
+ transform-origin: bottom center;
771
+ height: var(--h);
772
+ }
773
+ .art-flower-animation .long-g .leaf--0 {
774
+ --h: 40em;
775
+ transform: rotate(-5deg) rotateX(5deg);
776
+ }
777
+ .art-flower-animation .long-g .leaf--1 {
778
+ --h: 45em;
779
+ left: 2em;
780
+ transform: rotate(3deg) rotateX(5deg);
781
+ }
782
+ .art-flower-animation .long-g .leaf--2 {
783
+ --h: 38em;
784
+ left: 1em;
785
+ transform: rotate(-8deg) rotateX(5deg);
786
+ }
787
+ .art-flower-animation .long-g .leaf--3 {
788
+ --h: 35em;
789
+ left: 3em;
790
+ transform: rotate(6deg) rotateX(5deg);
791
+ }
792
+ .art-flower-animation .long-g--1 {
793
+ bottom: 0;
794
+ transform: scale(0.8) rotate(-5deg);
795
+ }
796
+ .art-flower-animation .long-g--1 .leaf {
797
+ -webkit-mask-image: linear-gradient(to top, transparent 40%, #028137 80%) !important;
798
+ mask-image: linear-gradient(to top, transparent 40%, #028137 80%) !important;
799
+ }
800
+ .art-flower-animation .long-g--1 .leaf--1 {
801
+ --w: 5em;
802
+ --h: 60em;
803
+ left: -2em;
804
+ transform: rotate(3deg) rotateY(-180deg);
805
+ }
806
+ .art-flower-animation .long-g--2 {
807
+ bottom: -3em;
808
+ left: -35em;
809
+ transform: rotate(3deg);
810
+ }
811
+ .art-flower-animation .long-g--3 {
812
+ bottom: -3em;
813
+ left: -25em;
814
+ transform: rotate(0deg);
815
+ }
816
+ .art-flower-animation .long-g--4 {
817
+ bottom: 0;
818
+ left: -23em;
819
+ transform: rotate(-3deg);
820
+ }
821
+ .art-flower-animation .long-g--5 {
822
+ bottom: -3em;
823
+ left: -17em;
824
+ transform: scale(0.8) rotate(-5deg);
825
+ }
826
+ .art-flower-animation .long-g--6 {
827
+ bottom: 0;
828
+ left: -12em;
829
+ transform: rotate(-4deg);
830
+ }
831
+ .art-flower-animation .long-g--7 {
832
+ bottom: 0;
833
+ left: -5em;
834
+ transform: rotate(2deg);
835
+ }
836
+
837
+ /* ── grow-ans utility ── */
838
+
839
+ .art-flower-animation .grow-ans {
840
+ animation: art-flower-animation-grow-ans 2s var(--d, 0s) backwards;
841
+ }
842
+
843
+ /* ── Growing grass wrapper ── */
844
+
845
+ .art-flower-animation .growing-grass {
846
+ position: absolute;
847
+ bottom: 0;
848
+ }
849
+
850
+ /* ── Bubbles (floating hearts) ── */
851
+
852
+ .art-flower-animation .bubbles {
853
+ position: absolute;
854
+ bottom: 10em;
855
+ left: 50%;
856
+ transform: translateX(-50%);
857
+ width: 40em;
858
+ height: 0;
859
+ z-index: 20;
860
+ }
861
+ .art-flower-animation .bubble {
862
+ position: absolute;
863
+ bottom: 0;
864
+ animation: art-flower-animation-bubble 8s ease-in infinite;
865
+ opacity: 0;
866
+ }
867
+ .art-flower-animation .bubble .heart {
868
+ width: 2em;
869
+ height: 2em;
870
+ fill: rgba(255, 100, 150, 0.8);
871
+ filter: drop-shadow(0 0 0.5em rgba(255, 100, 150, 0.5));
872
+ }
873
+ .art-flower-animation .bubble:nth-child(1) { left: 5%; animation-delay: 0s; animation-duration: 7s; }
874
+ .art-flower-animation .bubble:nth-child(2) { left: 10%; animation-delay: 0.5s; animation-duration: 8s; }
875
+ .art-flower-animation .bubble:nth-child(3) { left: 20%; animation-delay: 1s; animation-duration: 6.5s; }
876
+ .art-flower-animation .bubble:nth-child(4) { left: 30%; animation-delay: 1.5s; animation-duration: 9s; }
877
+ .art-flower-animation .bubble:nth-child(5) { left: 40%; animation-delay: 2s; animation-duration: 7.5s; }
878
+ .art-flower-animation .bubble:nth-child(6) { left: 50%; animation-delay: 2.5s; animation-duration: 8.5s; }
879
+ .art-flower-animation .bubble:nth-child(7) { left: 60%; animation-delay: 3s; animation-duration: 7s; }
880
+ .art-flower-animation .bubble:nth-child(8) { left: 70%; animation-delay: 3.5s; animation-duration: 9.5s; }
881
+ .art-flower-animation .bubble:nth-child(9) { left: 75%; animation-delay: 4s; animation-duration: 6s; }
882
+ .art-flower-animation .bubble:nth-child(10) { left: 80%; animation-delay: 4.5s; animation-duration: 8s; }
883
+ .art-flower-animation .bubble:nth-child(11) { left: 15%; animation-delay: 5s; animation-duration: 7.5s; }
884
+ .art-flower-animation .bubble:nth-child(12) { left: 25%; animation-delay: 5.5s; animation-duration: 9s; }
885
+ .art-flower-animation .bubble:nth-child(13) { left: 35%; animation-delay: 6s; animation-duration: 8s; }
886
+ .art-flower-animation .bubble:nth-child(14) { left: 45%; animation-delay: 6.5s; animation-duration: 7s; }
887
+ .art-flower-animation .bubble:nth-child(15) { left: 55%; animation-delay: 0.3s; animation-duration: 9.5s; }
888
+ .art-flower-animation .bubble:nth-child(16) { left: 65%; animation-delay: 1.3s; animation-duration: 6.5s; }
889
+ .art-flower-animation .bubble:nth-child(17) { left: 72%; animation-delay: 2.2s; animation-duration: 8.5s; }
890
+ .art-flower-animation .bubble:nth-child(18) { left: 8%; animation-delay: 3.3s; animation-duration: 7.5s; }
891
+ .art-flower-animation .bubble:nth-child(19) { left: 88%; animation-delay: 4.2s; animation-duration: 9s; }
892
+ .art-flower-animation .bubble:nth-child(20) { left: 93%; animation-delay: 5.8s; animation-duration: 6s; }
893
+ }