@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.
@@ -2283,3 +2283,897 @@
2283
2283
  }
2284
2284
  }
2285
2285
 
2286
+ @layer css-art {
2287
+ /* ── Keyframes ── */
2288
+
2289
+ @keyframes art-flower-animation-moving-flower-1 {
2290
+ 0%, 100% { transform: rotate(3deg); }
2291
+ 50% { transform: rotate(0deg); }
2292
+ }
2293
+
2294
+ @keyframes art-flower-animation-moving-flower-2 {
2295
+ 0%, 100% { transform: rotate(20deg); }
2296
+ 50% { transform: rotate(23deg); }
2297
+ }
2298
+
2299
+ @keyframes art-flower-animation-moving-flower-3 {
2300
+ 0%, 100% { transform: rotate(-15deg); }
2301
+ 50% { transform: rotate(-18deg); }
2302
+ }
2303
+
2304
+ @keyframes art-flower-animation-blooming-leaf-right {
2305
+ 0% { transform-origin: left; transform: rotate(70deg) rotateY(30deg) scaleX(0); }
2306
+ }
2307
+
2308
+ @keyframes art-flower-animation-blooming-leaf-left {
2309
+ 0% { transform-origin: right; transform: rotate(-70deg) rotateY(30deg) scaleX(0); }
2310
+ }
2311
+
2312
+ @keyframes art-flower-animation-blooming-flower {
2313
+ 0% { transform: scale(0); opacity: 0; }
2314
+ }
2315
+
2316
+ @keyframes art-flower-animation-light-ans {
2317
+ 0% { opacity: 0; transform: translateY(0); }
2318
+ 25% { opacity: 1; }
2319
+ 100% { opacity: 0; transform: translateY(-15em) translateX(3em); }
2320
+ }
2321
+
2322
+ @keyframes art-flower-animation-grow-flower-tree {
2323
+ 0% { transform: scaleY(0); transform-origin: bottom center; }
2324
+ }
2325
+
2326
+ @keyframes art-flower-animation-grow-ans {
2327
+ 0% { transform: scaleY(0); transform-origin: bottom center; }
2328
+ }
2329
+
2330
+ @keyframes art-flower-animation-moving-grass {
2331
+ 0%, 100% { transform: rotate(-48deg) rotateY(40deg); }
2332
+ 50% { transform: rotate(-50deg) rotateY(40deg); }
2333
+ }
2334
+
2335
+ @keyframes art-flower-animation-moving-grass--2 {
2336
+ 0%, 100% { transform: scale(0.5) rotate(75deg) rotateX(10deg) rotateY(-200deg); }
2337
+ 50% { transform: scale(0.5) rotate(80deg) rotateX(10deg) rotateY(-200deg); }
2338
+ }
2339
+
2340
+ @keyframes art-flower-animation-flower-g-long-ans {
2341
+ 0%, 100% { transform: rotate(-30deg) rotateY(-20deg); }
2342
+ 50% { transform: rotate(-32deg) rotateY(-20deg); }
2343
+ }
2344
+
2345
+ @keyframes art-flower-animation-flower-g-right-ans {
2346
+ 0%, 100% { transform: rotate(20deg); }
2347
+ 50% { transform: rotate(24deg) rotateX(-20deg); }
2348
+ }
2349
+
2350
+ @keyframes art-flower-animation-flower-g-right-ans--2 {
2351
+ 0%, 100% { transform: rotateY(-180deg) rotate(0deg) rotateX(-20deg); }
2352
+ 50% { transform: rotateY(-180deg) rotate(6deg) rotateX(-20deg); }
2353
+ }
2354
+
2355
+ @keyframes art-flower-animation-flower-g-front-ans {
2356
+ 0%, 100% { transform: rotate(-28deg) rotateY(30deg) scale(1.04); }
2357
+ 50% { transform: rotate(-35deg) rotateY(40deg) scale(1.04); }
2358
+ }
2359
+
2360
+ @keyframes art-flower-animation-flower-g-front-leaf-ans {
2361
+ 0% { transform: rotate(10deg) scale(0); }
2362
+ }
2363
+
2364
+ @keyframes art-flower-animation-flower-g-front-leaf-left-ans {
2365
+ 0% { transform: rotateY(-180deg) rotate(5deg) scale(0); }
2366
+ }
2367
+
2368
+ @keyframes art-flower-animation-flower-g-front-leaf-left-ans-2 {
2369
+ 0% { transform: rotateY(-180deg) scale(0); }
2370
+ }
2371
+
2372
+ @keyframes art-flower-animation-flower-g-fr-ans {
2373
+ 0%, 100% { transform: rotate(2deg); }
2374
+ 50% { transform: rotate(4deg); }
2375
+ }
2376
+
2377
+ @keyframes art-flower-animation-flower-g-fr-leaf-ans-1 {
2378
+ 0% { transform-origin: left; transform: rotate(45deg) scale(0); }
2379
+ }
2380
+
2381
+ @keyframes art-flower-animation-flower-g-fr-leaf-ans-5 {
2382
+ 0% { transform-origin: left; transform: rotate(55deg) scale(0); }
2383
+ }
2384
+
2385
+ @keyframes art-flower-animation-flower-g-fr-leaf-ans-6 {
2386
+ 0% { transform-origin: right; transform: rotate(25deg) rotateY(-180deg) scale(0); }
2387
+ }
2388
+
2389
+ @keyframes art-flower-animation-flower-g-fr-leaf-ans-7 {
2390
+ 0% { transform-origin: left; transform: rotate(45deg) scale(0); }
2391
+ }
2392
+
2393
+ @keyframes art-flower-animation-flower-g-fr-leaf-ans-8 {
2394
+ 0% { transform-origin: right; transform: rotate(15deg) rotateY(-180deg) scale(0); }
2395
+ }
2396
+
2397
+ @keyframes art-flower-animation-growing-grass-1 {
2398
+ 0% { transform-origin: bottom left; transform: rotate(-20deg) scale(0); }
2399
+ }
2400
+ @keyframes art-flower-animation-growing-grass-2 {
2401
+ 0% { transform-origin: bottom right; transform: rotate(10deg) scale(0); }
2402
+ }
2403
+ @keyframes art-flower-animation-growing-grass-3 {
2404
+ 0% { transform-origin: bottom left; transform: rotate(-18deg) rotateX(-20deg) scale(0); }
2405
+ }
2406
+ @keyframes art-flower-animation-growing-grass-4 {
2407
+ 0% { transform-origin: bottom right; transform: rotate(2deg) scale(0); }
2408
+ }
2409
+ @keyframes art-flower-animation-growing-grass-5 {
2410
+ 0% { transform-origin: bottom left; transform: rotate(-24deg) rotateX(-20deg) scale(0); }
2411
+ }
2412
+ @keyframes art-flower-animation-growing-grass-6 {
2413
+ 0% { transform-origin: bottom right; transform: rotate(10deg) scale(0); }
2414
+ }
2415
+ @keyframes art-flower-animation-growing-grass-7 {
2416
+ 0% { transform-origin: bottom left; transform: rotate(-10deg) scale(0); }
2417
+ }
2418
+ @keyframes art-flower-animation-growing-grass-8 {
2419
+ 0% { transform-origin: bottom right; transform: rotate(10deg) scale(0); }
2420
+ }
2421
+
2422
+ /* Bubble float-up (replaces original JS animation) */
2423
+ @keyframes art-flower-animation-bubble {
2424
+ 0% { transform: translateY(0) scale(0.3); opacity: 0; }
2425
+ 10% { opacity: 1; }
2426
+ 80% { opacity: 0.6; }
2427
+ 100% { transform: translateY(-70em) scale(1); opacity: 0; }
2428
+ }
2429
+
2430
+ /* ── Root container ── */
2431
+
2432
+ .art-flower-animation {
2433
+ --art-flower-animation-size: 600px;
2434
+ --art-flower-animation-bg: #010113;
2435
+
2436
+ position: relative;
2437
+ font-size: calc(var(--art-flower-animation-size) / 100);
2438
+ width: var(--art-flower-animation-size);
2439
+ height: calc(var(--art-flower-animation-size) * 1.1);
2440
+ overflow: hidden;
2441
+ background-color: var(--art-flower-animation-bg);
2442
+ perspective: 1000px;
2443
+ display: flex;
2444
+ align-items: flex-end;
2445
+ justify-content: center;
2446
+ }
2447
+
2448
+ .art-flower-animation-sm { --art-flower-animation-size: 300px; }
2449
+ .art-flower-animation-lg { --art-flower-animation-size: 900px; }
2450
+
2451
+ /* ── Night sky background ── */
2452
+
2453
+ .art-flower-animation .night {
2454
+ position: absolute;
2455
+ left: 50%;
2456
+ top: 0;
2457
+ transform: translateX(-50%);
2458
+ width: 100%;
2459
+ height: 100%;
2460
+ filter: blur(0.1em);
2461
+ background-image:
2462
+ radial-gradient(ellipse at top, transparent 0%, var(--art-flower-animation-bg)),
2463
+ radial-gradient(ellipse at bottom, var(--art-flower-animation-bg), rgba(145, 233, 255, 0.2)),
2464
+ repeating-linear-gradient(220deg, rgb(0, 0, 0) 0px, rgb(0, 0, 0) 19px, transparent 19px, transparent 22px),
2465
+ repeating-linear-gradient(189deg, rgb(0, 0, 0) 0px, rgb(0, 0, 0) 19px, transparent 19px, transparent 22px),
2466
+ repeating-linear-gradient(148deg, rgb(0, 0, 0) 0px, rgb(0, 0, 0) 19px, transparent 19px, transparent 22px),
2467
+ linear-gradient(90deg, rgb(255, 94, 0), rgb(240, 240, 240));
2468
+ }
2469
+
2470
+ /* ── Flowers container ── */
2471
+
2472
+ .art-flower-animation .flowers {
2473
+ position: relative;
2474
+ transform: scale(0.9);
2475
+ }
2476
+
2477
+ /* ── Individual flowers ── */
2478
+
2479
+ .art-flower-animation .flower {
2480
+ position: absolute;
2481
+ bottom: 10em;
2482
+ transform-origin: bottom center;
2483
+ z-index: 10;
2484
+ --fl-speed: 0.8s;
2485
+ }
2486
+
2487
+ .art-flower-animation .flower--1 {
2488
+ animation: art-flower-animation-moving-flower-1 4s linear infinite;
2489
+ }
2490
+ .art-flower-animation .flower--1 .flower__line {
2491
+ height: 70em;
2492
+ animation-delay: 0.3s;
2493
+ }
2494
+ .art-flower-animation .flower--1 .flower__line__leaf--1 {
2495
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 1.6s backwards;
2496
+ }
2497
+ .art-flower-animation .flower--1 .flower__line__leaf--2 {
2498
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 1.4s backwards;
2499
+ }
2500
+ .art-flower-animation .flower--1 .flower__line__leaf--3 {
2501
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 1.2s backwards;
2502
+ }
2503
+ .art-flower-animation .flower--1 .flower__line__leaf--4 {
2504
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 1s backwards;
2505
+ }
2506
+ .art-flower-animation .flower--1 .flower__line__leaf--5 {
2507
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 1.8s backwards;
2508
+ }
2509
+ .art-flower-animation .flower--1 .flower__line__leaf--6 {
2510
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 2s backwards;
2511
+ }
2512
+
2513
+ .art-flower-animation .flower--2 {
2514
+ left: 50%;
2515
+ transform: rotate(20deg);
2516
+ animation: art-flower-animation-moving-flower-2 4s linear infinite;
2517
+ }
2518
+ .art-flower-animation .flower--2 .flower__line {
2519
+ height: 60em;
2520
+ animation-delay: 0.6s;
2521
+ }
2522
+ .art-flower-animation .flower--2 .flower__line__leaf--1 {
2523
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 1.9s backwards;
2524
+ }
2525
+ .art-flower-animation .flower--2 .flower__line__leaf--2 {
2526
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 1.7s backwards;
2527
+ }
2528
+ .art-flower-animation .flower--2 .flower__line__leaf--3 {
2529
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 1.5s backwards;
2530
+ }
2531
+ .art-flower-animation .flower--2 .flower__line__leaf--4 {
2532
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 1.3s backwards;
2533
+ }
2534
+
2535
+ .art-flower-animation .flower--3 {
2536
+ left: 50%;
2537
+ transform: rotate(-15deg);
2538
+ animation: art-flower-animation-moving-flower-3 4s linear infinite;
2539
+ }
2540
+ .art-flower-animation .flower--3 .flower__line {
2541
+ animation-delay: 0.9s;
2542
+ }
2543
+ .art-flower-animation .flower--3 .flower__line__leaf--1 {
2544
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 2.5s backwards;
2545
+ }
2546
+ .art-flower-animation .flower--3 .flower__line__leaf--2 {
2547
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 2.3s backwards;
2548
+ }
2549
+ .art-flower-animation .flower--3 .flower__line__leaf--3 {
2550
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 2.1s backwards;
2551
+ }
2552
+ .art-flower-animation .flower--3 .flower__line__leaf--4 {
2553
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 1.9s backwards;
2554
+ }
2555
+
2556
+ .art-flower-animation .flower--4 {
2557
+ left: -30%;
2558
+ transform: rotate(-15deg) scaleX(-1);
2559
+ animation: art-flower-animation-moving-flower-3 4s linear infinite;
2560
+ }
2561
+ .art-flower-animation .flower--4 .flower__line {
2562
+ animation-delay: 1.2s;
2563
+ }
2564
+ .art-flower-animation .flower--4 .flower__line__leaf--1 {
2565
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 2.8s backwards;
2566
+ }
2567
+ .art-flower-animation .flower--4 .flower__line__leaf--2 {
2568
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 2.6s backwards;
2569
+ }
2570
+ .art-flower-animation .flower--4 .flower__line__leaf--3 {
2571
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 2.4s backwards;
2572
+ }
2573
+ .art-flower-animation .flower--4 .flower__line__leaf--4 {
2574
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 2.2s backwards;
2575
+ }
2576
+
2577
+ /* ── Petals ── */
2578
+
2579
+ .art-flower-animation .flower__leafs {
2580
+ position: relative;
2581
+ animation: art-flower-animation-blooming-flower 2s backwards;
2582
+ }
2583
+ .art-flower-animation .flower__leafs--1 { animation-delay: 1.1s; }
2584
+ .art-flower-animation .flower__leafs--2 { animation-delay: 1.4s; }
2585
+ .art-flower-animation .flower__leafs--3 { animation-delay: 1.7s; }
2586
+
2587
+ .art-flower-animation .flower__leafs::after {
2588
+ content: "";
2589
+ position: absolute;
2590
+ left: 0;
2591
+ top: 0;
2592
+ transform: translate(-50%, -100%);
2593
+ width: 8em;
2594
+ height: 8em;
2595
+ background-color: #e7b201;
2596
+ filter: blur(10em);
2597
+ }
2598
+
2599
+ .art-flower-animation .flower__leaf {
2600
+ position: absolute;
2601
+ bottom: 0;
2602
+ left: 50%;
2603
+ width: 8em;
2604
+ height: 11em;
2605
+ border-radius: 51% 49% 47% 53% / 44% 45% 55% 69%;
2606
+ background-color: #e6f331;
2607
+ background-image: linear-gradient(to top, #e6f331, #e6f331);
2608
+ transform-origin: bottom center;
2609
+ opacity: 0.9;
2610
+ box-shadow: inset 0 0 2em rgba(255, 255, 255, 0.5);
2611
+ }
2612
+ .art-flower-animation .flower__leaf--1 { transform: translate(-10%, 1%) rotateY(40deg) rotateX(-50deg); }
2613
+ .art-flower-animation .flower__leaf--2 { transform: translate(-50%, -4%) rotateX(40deg); }
2614
+ .art-flower-animation .flower__leaf--3 { transform: translate(-90%, 0%) rotateY(45deg) rotateX(50deg); }
2615
+ .art-flower-animation .flower__leaf--4 {
2616
+ width: 8em;
2617
+ height: 8em;
2618
+ transform-origin: bottom left;
2619
+ border-radius: 4em 10em 4em 4em;
2620
+ transform: translate(0%, 18%) rotateX(70deg) rotate(-43deg);
2621
+ background-image: linear-gradient(to top, #e6f331, #e6f331);
2622
+ z-index: 1;
2623
+ opacity: 0.8;
2624
+ }
2625
+
2626
+ /* ── Flower center ── */
2627
+
2628
+ .art-flower-animation .flower__white-circle {
2629
+ position: absolute;
2630
+ left: -3.5em;
2631
+ top: -3em;
2632
+ width: 9em;
2633
+ height: 4em;
2634
+ border-radius: 50%;
2635
+ background-color: #fff;
2636
+ }
2637
+ .art-flower-animation .flower__white-circle::after {
2638
+ content: "";
2639
+ position: absolute;
2640
+ left: 50%;
2641
+ top: 45%;
2642
+ transform: translate(-50%, -50%);
2643
+ width: 60%;
2644
+ height: 60%;
2645
+ border-radius: inherit;
2646
+ background-image:
2647
+ repeating-linear-gradient(135deg, rgba(0,0,0,0.03) 0px, rgba(0,0,0,0.03) 1px, transparent 1px, transparent 12px),
2648
+ repeating-linear-gradient(45deg, rgba(0,0,0,0.03) 0px, rgba(0,0,0,0.03) 1px, transparent 1px, transparent 12px),
2649
+ repeating-linear-gradient(67.5deg, rgba(0,0,0,0.03) 0px, rgba(0,0,0,0.03) 1px, transparent 1px, transparent 12px),
2650
+ repeating-linear-gradient(112.5deg, rgba(0,0,0,0.03) 0px, rgba(0,0,0,0.03) 1px, transparent 1px, transparent 12px),
2651
+ repeating-linear-gradient(157.5deg, rgba(0,0,0,0.03) 0px, rgba(0,0,0,0.03) 1px, transparent 1px, transparent 12px),
2652
+ repeating-linear-gradient(22.5deg, rgba(0,0,0,0.03) 0px, rgba(0,0,0,0.03) 1px, transparent 1px, transparent 12px),
2653
+ linear-gradient(90deg, rgb(255, 235, 18), rgb(255, 206, 0));
2654
+ }
2655
+
2656
+ /* ── Stem ── */
2657
+
2658
+ .art-flower-animation .flower__line {
2659
+ height: 55em;
2660
+ width: 1.5em;
2661
+ background-image:
2662
+ linear-gradient(to left, rgba(0,0,0,0.2), transparent, rgba(255,255,255,0.2)),
2663
+ linear-gradient(to top, transparent 10%, #056d24, #028137);
2664
+ box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.5);
2665
+ animation: art-flower-animation-grow-flower-tree 4s backwards;
2666
+ }
2667
+
2668
+ .art-flower-animation .flower__line__leaf {
2669
+ --w: 7em;
2670
+ --h: calc(var(--w) + 2em);
2671
+ position: absolute;
2672
+ top: 20%;
2673
+ left: 90%;
2674
+ width: var(--w);
2675
+ height: var(--h);
2676
+ border-top-right-radius: var(--h);
2677
+ border-bottom-left-radius: var(--h);
2678
+ background-image: linear-gradient(to top, rgba(12, 94, 32, 0.4), #028137);
2679
+ }
2680
+ .art-flower-animation .flower__line__leaf--1 { transform: rotate(70deg) rotateY(30deg); }
2681
+ .art-flower-animation .flower__line__leaf--2 { top: 45%; transform: rotate(70deg) rotateY(30deg); }
2682
+ .art-flower-animation .flower__line__leaf--3,
2683
+ .art-flower-animation .flower__line__leaf--4,
2684
+ .art-flower-animation .flower__line__leaf--6 {
2685
+ border-top-right-radius: 0;
2686
+ border-bottom-left-radius: 0;
2687
+ border-top-left-radius: var(--h);
2688
+ border-bottom-right-radius: var(--h);
2689
+ left: -460%;
2690
+ top: 12%;
2691
+ transform: rotate(-70deg) rotateY(30deg);
2692
+ }
2693
+ .art-flower-animation .flower__line__leaf--4 { top: 40%; }
2694
+ .art-flower-animation .flower__line__leaf--5 {
2695
+ top: 0;
2696
+ transform-origin: left;
2697
+ transform: rotate(70deg) rotateY(30deg) scale(0.6);
2698
+ }
2699
+ .art-flower-animation .flower__line__leaf--6 {
2700
+ top: -2%;
2701
+ left: -450%;
2702
+ transform-origin: right;
2703
+ transform: rotate(-70deg) rotateY(30deg) scale(0.6);
2704
+ }
2705
+
2706
+ /* ── Light particles ── */
2707
+
2708
+ .art-flower-animation .flower__light {
2709
+ position: absolute;
2710
+ bottom: 0;
2711
+ width: 1em;
2712
+ height: 1em;
2713
+ background-color: rgb(255, 251, 0);
2714
+ border-radius: 50%;
2715
+ filter: blur(0.2em);
2716
+ animation: art-flower-animation-light-ans 4s linear infinite backwards;
2717
+ }
2718
+ .art-flower-animation .flower__light:nth-child(odd) { background-color: #028137; }
2719
+ .art-flower-animation .flower__light--1 { left: -2em; animation-delay: 1s; }
2720
+ .art-flower-animation .flower__light--2 { left: 3em; animation-delay: 0.5s; }
2721
+ .art-flower-animation .flower__light--3 { left: -6em; animation-delay: 0.3s; }
2722
+ .art-flower-animation .flower__light--4 { left: 6em; animation-delay: 0.9s; }
2723
+ .art-flower-animation .flower__light--5 { left: -1em; animation-delay: 1.5s; }
2724
+ .art-flower-animation .flower__light--6 { left: -4em; animation-delay: 3s; }
2725
+ .art-flower-animation .flower__light--7 { left: 3em; animation-delay: 2s; }
2726
+ .art-flower-animation .flower__light--8 { left: -6em; animation-delay: 3.5s; }
2727
+
2728
+ /* ── Grass ── */
2729
+
2730
+ .art-flower-animation .flower__grass {
2731
+ --c: #028137;
2732
+ --line-w: 1.5em;
2733
+ position: absolute;
2734
+ bottom: 12em;
2735
+ left: -7em;
2736
+ display: flex;
2737
+ flex-direction: column;
2738
+ align-items: flex-end;
2739
+ z-index: 20;
2740
+ transform-origin: bottom center;
2741
+ transform: rotate(-48deg) rotateY(40deg);
2742
+ }
2743
+ .art-flower-animation .flower__grass--1 {
2744
+ animation: art-flower-animation-moving-grass 2s linear infinite;
2745
+ }
2746
+ .art-flower-animation .flower__grass--2 {
2747
+ left: 2em;
2748
+ bottom: 10em;
2749
+ transform: scale(0.5) rotate(75deg) rotateX(10deg) rotateY(-200deg);
2750
+ opacity: 0.8;
2751
+ z-index: 0;
2752
+ animation: art-flower-animation-moving-grass--2 1.5s linear infinite;
2753
+ }
2754
+ .art-flower-animation .flower__grass--top {
2755
+ width: 7em;
2756
+ height: 10em;
2757
+ border-top-right-radius: 100%;
2758
+ border-right: var(--line-w) solid var(--c);
2759
+ transform-origin: bottom center;
2760
+ transform: rotate(-2deg);
2761
+ }
2762
+ .art-flower-animation .flower__grass--bottom {
2763
+ margin-top: -2px;
2764
+ width: var(--line-w);
2765
+ height: 25em;
2766
+ background-image: linear-gradient(to top, transparent, var(--c));
2767
+ }
2768
+
2769
+ .art-flower-animation .flower__grass__leaf {
2770
+ --size: 10em;
2771
+ position: absolute;
2772
+ width: calc(var(--size) * 2.1);
2773
+ height: var(--size);
2774
+ border-top-left-radius: var(--size);
2775
+ border-top-right-radius: var(--size);
2776
+ background-image: linear-gradient(to top, transparent, transparent 30%, var(--c));
2777
+ z-index: 100;
2778
+ }
2779
+ .art-flower-animation .flower__grass__leaf--1 {
2780
+ top: -6%; left: 30%; --size: 6em;
2781
+ transform: rotate(-20deg);
2782
+ animation: art-flower-animation-growing-grass-1 2s 2.6s backwards;
2783
+ }
2784
+ .art-flower-animation .flower__grass__leaf--2 {
2785
+ top: -5%; left: -110%; --size: 6em;
2786
+ transform: rotate(10deg);
2787
+ animation: art-flower-animation-growing-grass-2 2s 2.4s linear backwards;
2788
+ }
2789
+ .art-flower-animation .flower__grass__leaf--3 {
2790
+ top: 5%; left: 60%; --size: 8em;
2791
+ transform: rotate(-18deg) rotateX(-20deg);
2792
+ animation: art-flower-animation-growing-grass-3 2s 2.2s linear backwards;
2793
+ }
2794
+ .art-flower-animation .flower__grass__leaf--4 {
2795
+ top: 6%; left: -135%; --size: 8em;
2796
+ transform: rotate(2deg);
2797
+ animation: art-flower-animation-growing-grass-4 2s 2s linear backwards;
2798
+ }
2799
+ .art-flower-animation .flower__grass__leaf--5 {
2800
+ top: 20%; left: 60%; --size: 10em;
2801
+ transform: rotate(-24deg) rotateX(-20deg);
2802
+ animation: art-flower-animation-growing-grass-5 2s 1.8s linear backwards;
2803
+ }
2804
+ .art-flower-animation .flower__grass__leaf--6 {
2805
+ top: 22%; left: -180%; --size: 10em;
2806
+ transform: rotate(10deg);
2807
+ animation: art-flower-animation-growing-grass-6 2s 1.6s linear backwards;
2808
+ }
2809
+ .art-flower-animation .flower__grass__leaf--7 {
2810
+ top: 39%; left: 70%; --size: 10em;
2811
+ transform: rotate(-10deg);
2812
+ animation: art-flower-animation-growing-grass-7 2s 1.4s linear backwards;
2813
+ }
2814
+ .art-flower-animation .flower__grass__leaf--8 {
2815
+ top: 40%; left: -215%; --size: 11em;
2816
+ transform: rotate(10deg);
2817
+ animation: art-flower-animation-growing-grass-8 2s 1.2s linear backwards;
2818
+ }
2819
+ .art-flower-animation .flower__grass__overlay {
2820
+ position: absolute;
2821
+ top: -10%; right: 0%;
2822
+ width: 100%; height: 100%;
2823
+ background-color: rgba(0, 0, 0, 0.6);
2824
+ filter: blur(1.5em);
2825
+ z-index: 100;
2826
+ }
2827
+
2828
+ /* ── Long grass stem ── */
2829
+
2830
+ .art-flower-animation .flower__g-long {
2831
+ --w: 2em;
2832
+ --h: 6em;
2833
+ --c: #0d6632;
2834
+ position: absolute;
2835
+ bottom: 10em;
2836
+ left: -3em;
2837
+ transform-origin: bottom center;
2838
+ transform: rotate(-30deg) rotateY(-20deg);
2839
+ display: flex;
2840
+ flex-direction: column;
2841
+ align-items: flex-end;
2842
+ animation: art-flower-animation-flower-g-long-ans 3s linear infinite;
2843
+ }
2844
+ .art-flower-animation .flower__g-long__top {
2845
+ width: calc(var(--w) + 1em);
2846
+ height: var(--h);
2847
+ border-top-right-radius: 100%;
2848
+ border-right: 0.7em solid var(--c);
2849
+ transform: translate(-0.7em, 1em);
2850
+ }
2851
+ .art-flower-animation .flower__g-long__bottom {
2852
+ width: var(--w);
2853
+ height: 50em;
2854
+ transform-origin: bottom center;
2855
+ background-image: linear-gradient(to top, transparent 30%, var(--c));
2856
+ box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.5);
2857
+ clip-path: polygon(35% 0, 65% 1%, 100% 100%, 0% 100%);
2858
+ }
2859
+
2860
+ /* ── Right grass ── */
2861
+
2862
+ .art-flower-animation .flower__g-right {
2863
+ position: absolute;
2864
+ bottom: 6em;
2865
+ left: -2em;
2866
+ transform-origin: bottom left;
2867
+ transform: rotate(20deg);
2868
+ }
2869
+ .art-flower-animation .flower__g-right .leaf {
2870
+ width: 30em;
2871
+ height: 50em;
2872
+ border-top-left-radius: 100%;
2873
+ border-left: 2em solid #028137;
2874
+ background-image: linear-gradient(to bottom, transparent, var(--art-flower-animation-bg) 60%);
2875
+ -webkit-mask-image: linear-gradient(to top, transparent 30%, #028137 60%);
2876
+ mask-image: linear-gradient(to top, transparent 30%, #028137 60%);
2877
+ }
2878
+ .art-flower-animation .flower__g-right--1 {
2879
+ animation: art-flower-animation-flower-g-right-ans 2.5s linear infinite;
2880
+ }
2881
+ .art-flower-animation .flower__g-right--2 {
2882
+ left: 5em;
2883
+ transform: rotateY(-180deg);
2884
+ animation: art-flower-animation-flower-g-right-ans--2 3s linear infinite;
2885
+ }
2886
+ .art-flower-animation .flower__g-right--2 .leaf {
2887
+ height: 75em;
2888
+ filter: blur(0.3em);
2889
+ opacity: 0.8;
2890
+ }
2891
+
2892
+ /* ── Front grass ── */
2893
+
2894
+ .art-flower-animation .flower__g-front {
2895
+ position: absolute;
2896
+ bottom: 6em;
2897
+ left: 2.5em;
2898
+ z-index: 100;
2899
+ transform-origin: bottom center;
2900
+ transform: rotate(-28deg) rotateY(30deg) scale(1.04);
2901
+ animation: art-flower-animation-flower-g-front-ans 2s linear infinite;
2902
+ }
2903
+ .art-flower-animation .flower__g-front__line {
2904
+ width: 0.3em;
2905
+ height: 20em;
2906
+ background-image: linear-gradient(to top, transparent, #028137, transparent 100%);
2907
+ position: relative;
2908
+ }
2909
+ .art-flower-animation .flower__g-front__leaf-wrapper {
2910
+ position: absolute;
2911
+ top: 0;
2912
+ left: 0;
2913
+ transform-origin: bottom left;
2914
+ transform: rotate(10deg);
2915
+ }
2916
+ .art-flower-animation .flower__g-front__leaf-wrapper:nth-child(even) {
2917
+ left: 0;
2918
+ transform: rotateY(-180deg) rotate(5deg);
2919
+ animation: art-flower-animation-flower-g-front-leaf-left-ans 1s ease-in backwards;
2920
+ }
2921
+ .art-flower-animation .flower__g-front__leaf-wrapper:nth-child(odd) {
2922
+ animation: art-flower-animation-flower-g-front-leaf-ans 1s ease-in backwards;
2923
+ }
2924
+ .art-flower-animation .flower__g-front__leaf-wrapper--1 {
2925
+ top: -8em;
2926
+ transform: scale(0.7);
2927
+ animation: art-flower-animation-flower-g-front-leaf-ans 1s 5.5s ease-in backwards !important;
2928
+ }
2929
+ .art-flower-animation .flower__g-front__leaf-wrapper--2 {
2930
+ top: -8em;
2931
+ transform: rotateY(-180deg) scale(0.7) !important;
2932
+ animation: art-flower-animation-flower-g-front-leaf-left-ans-2 1s 5.2s ease-in backwards !important;
2933
+ }
2934
+ .art-flower-animation .flower__g-front__leaf-wrapper--3 {
2935
+ top: -3em;
2936
+ animation: art-flower-animation-flower-g-front-leaf-ans 1s 4.9s ease-in backwards !important;
2937
+ }
2938
+ .art-flower-animation .flower__g-front__leaf-wrapper--4 {
2939
+ top: -3em;
2940
+ transform: rotateY(-180deg) scale(0.9) !important;
2941
+ animation: art-flower-animation-flower-g-front-leaf-left-ans-2 1s 4.6s ease-in backwards !important;
2942
+ }
2943
+ .art-flower-animation .flower__g-front__leaf-wrapper--5,
2944
+ .art-flower-animation .flower__g-front__leaf-wrapper--6 { top: 2em; }
2945
+ .art-flower-animation .flower__g-front__leaf-wrapper--7,
2946
+ .art-flower-animation .flower__g-front__leaf-wrapper--8 { top: 6.5em; }
2947
+ .art-flower-animation .flower__g-front__leaf-wrapper--5 { animation-delay: 4.3s !important; }
2948
+ .art-flower-animation .flower__g-front__leaf-wrapper--6 { animation-delay: 4.1s !important; }
2949
+ .art-flower-animation .flower__g-front__leaf-wrapper--7 { animation-delay: 3.8s !important; }
2950
+ .art-flower-animation .flower__g-front__leaf-wrapper--8 { animation-delay: 3.5s !important; }
2951
+
2952
+ .art-flower-animation .flower__g-front__leaf {
2953
+ width: 10em;
2954
+ height: 10em;
2955
+ border-radius: 100% 0% 0% 100% / 100% 100% 0% 0%;
2956
+ box-shadow: inset 0 2px 1em hsla(150, 97%, 14%, 0.2);
2957
+ background-image:
2958
+ linear-gradient(to bottom left, transparent, var(--art-flower-animation-bg)),
2959
+ linear-gradient(to bottom right, #028137 50%, transparent 50%, transparent);
2960
+ -webkit-mask-image: linear-gradient(to bottom right, #028137 50%, transparent 50%, transparent);
2961
+ mask-image: linear-gradient(to bottom right, #028137 50%, transparent 50%, transparent);
2962
+ }
2963
+
2964
+ /* ── Front-right grass ── */
2965
+
2966
+ .art-flower-animation .flower__g-fr {
2967
+ position: absolute;
2968
+ bottom: -4em;
2969
+ left: 0;
2970
+ transform-origin: bottom left;
2971
+ z-index: 10;
2972
+ animation: art-flower-animation-flower-g-fr-ans 2s linear infinite;
2973
+ }
2974
+ .art-flower-animation .flower__g-fr .leaf {
2975
+ width: 30em;
2976
+ height: 50em;
2977
+ border-top-left-radius: 100%;
2978
+ border-left: 2em solid #028137;
2979
+ -webkit-mask-image: linear-gradient(to top, transparent 25%, #028137 50%);
2980
+ mask-image: linear-gradient(to top, transparent 25%, #028137 50%);
2981
+ position: relative;
2982
+ z-index: 1;
2983
+ }
2984
+ .art-flower-animation .flower__g-fr__leaf {
2985
+ position: absolute;
2986
+ top: 0;
2987
+ left: 0;
2988
+ width: 10em;
2989
+ height: 10em;
2990
+ border-radius: 100% 0% 0% 100% / 100% 100% 0% 0%;
2991
+ box-shadow: inset 0 2px 1em hsla(184deg, 97%, 58%, 0.2);
2992
+ background-image:
2993
+ linear-gradient(to bottom left, transparent, var(--art-flower-animation-bg) 98%),
2994
+ linear-gradient(to bottom right, #028137 45%, transparent 50%, transparent);
2995
+ -webkit-mask-image: linear-gradient(135deg, #028137 40%, transparent 50%, transparent);
2996
+ mask-image: linear-gradient(135deg, #028137 40%, transparent 50%, transparent);
2997
+ }
2998
+ .art-flower-animation .flower__g-fr__leaf--1 {
2999
+ left: 20em; transform: rotate(45deg);
3000
+ animation: art-flower-animation-flower-g-fr-leaf-ans-1 0.5s 5.2s linear backwards;
3001
+ }
3002
+ .art-flower-animation .flower__g-fr__leaf--2 {
3003
+ left: 12em; top: -7em;
3004
+ transform: rotate(25deg) rotateY(-180deg);
3005
+ animation: art-flower-animation-flower-g-fr-leaf-ans-6 0.5s 5s linear backwards;
3006
+ }
3007
+ .art-flower-animation .flower__g-fr__leaf--3 {
3008
+ left: 15em; top: 6em;
3009
+ transform: rotate(55deg);
3010
+ animation: art-flower-animation-flower-g-fr-leaf-ans-5 0.5s 4.8s linear backwards;
3011
+ }
3012
+ .art-flower-animation .flower__g-fr__leaf--4 {
3013
+ left: 6em; top: -2em;
3014
+ transform: rotate(25deg) rotateY(-180deg);
3015
+ animation: art-flower-animation-flower-g-fr-leaf-ans-6 0.5s 4.6s linear backwards;
3016
+ }
3017
+ .art-flower-animation .flower__g-fr__leaf--5 {
3018
+ left: 10em; top: 14em;
3019
+ transform: rotate(55deg);
3020
+ animation: art-flower-animation-flower-g-fr-leaf-ans-5 0.5s 4.4s linear backwards;
3021
+ }
3022
+ .art-flower-animation .flower__g-fr__leaf--6 {
3023
+ left: 0; top: 6em;
3024
+ transform: rotate(25deg) rotateY(-180deg);
3025
+ animation: art-flower-animation-flower-g-fr-leaf-ans-6 0.5s 4.2s linear backwards;
3026
+ }
3027
+ .art-flower-animation .flower__g-fr__leaf--7 {
3028
+ left: 5em; top: 22em;
3029
+ transform: rotate(45deg);
3030
+ animation: art-flower-animation-flower-g-fr-leaf-ans-7 0.5s 4s linear backwards;
3031
+ }
3032
+ .art-flower-animation .flower__g-fr__leaf--8 {
3033
+ left: -4em; top: 15em;
3034
+ transform: rotate(15deg) rotateY(-180deg);
3035
+ animation: art-flower-animation-flower-g-fr-leaf-ans-8 0.5s 3.8s linear backwards;
3036
+ }
3037
+
3038
+ /* ── Tall background grasses ── */
3039
+
3040
+ .art-flower-animation .long-g {
3041
+ position: absolute;
3042
+ bottom: 25em;
3043
+ left: -42em;
3044
+ transform-origin: bottom left;
3045
+ }
3046
+ .art-flower-animation .long-g .leaf {
3047
+ --w: 3em;
3048
+ --h: 40em;
3049
+ position: absolute;
3050
+ bottom: 0;
3051
+ left: 0;
3052
+ width: var(--w);
3053
+ background-image: linear-gradient(to top, transparent 10%, #056d24 60%, #028137);
3054
+ clip-path: polygon(50% 0%, 100% 100%, 0% 100%);
3055
+ transform-origin: bottom center;
3056
+ height: var(--h);
3057
+ }
3058
+ .art-flower-animation .long-g .leaf--0 {
3059
+ --h: 40em;
3060
+ transform: rotate(-5deg) rotateX(5deg);
3061
+ }
3062
+ .art-flower-animation .long-g .leaf--1 {
3063
+ --h: 45em;
3064
+ left: 2em;
3065
+ transform: rotate(3deg) rotateX(5deg);
3066
+ }
3067
+ .art-flower-animation .long-g .leaf--2 {
3068
+ --h: 38em;
3069
+ left: 1em;
3070
+ transform: rotate(-8deg) rotateX(5deg);
3071
+ }
3072
+ .art-flower-animation .long-g .leaf--3 {
3073
+ --h: 35em;
3074
+ left: 3em;
3075
+ transform: rotate(6deg) rotateX(5deg);
3076
+ }
3077
+ .art-flower-animation .long-g--1 {
3078
+ bottom: 0;
3079
+ transform: scale(0.8) rotate(-5deg);
3080
+ }
3081
+ .art-flower-animation .long-g--1 .leaf {
3082
+ -webkit-mask-image: linear-gradient(to top, transparent 40%, #028137 80%) !important;
3083
+ mask-image: linear-gradient(to top, transparent 40%, #028137 80%) !important;
3084
+ }
3085
+ .art-flower-animation .long-g--1 .leaf--1 {
3086
+ --w: 5em;
3087
+ --h: 60em;
3088
+ left: -2em;
3089
+ transform: rotate(3deg) rotateY(-180deg);
3090
+ }
3091
+ .art-flower-animation .long-g--2 {
3092
+ bottom: -3em;
3093
+ left: -35em;
3094
+ transform: rotate(3deg);
3095
+ }
3096
+ .art-flower-animation .long-g--3 {
3097
+ bottom: -3em;
3098
+ left: -25em;
3099
+ transform: rotate(0deg);
3100
+ }
3101
+ .art-flower-animation .long-g--4 {
3102
+ bottom: 0;
3103
+ left: -23em;
3104
+ transform: rotate(-3deg);
3105
+ }
3106
+ .art-flower-animation .long-g--5 {
3107
+ bottom: -3em;
3108
+ left: -17em;
3109
+ transform: scale(0.8) rotate(-5deg);
3110
+ }
3111
+ .art-flower-animation .long-g--6 {
3112
+ bottom: 0;
3113
+ left: -12em;
3114
+ transform: rotate(-4deg);
3115
+ }
3116
+ .art-flower-animation .long-g--7 {
3117
+ bottom: 0;
3118
+ left: -5em;
3119
+ transform: rotate(2deg);
3120
+ }
3121
+
3122
+ /* ── grow-ans utility ── */
3123
+
3124
+ .art-flower-animation .grow-ans {
3125
+ animation: art-flower-animation-grow-ans 2s var(--d, 0s) backwards;
3126
+ }
3127
+
3128
+ /* ── Growing grass wrapper ── */
3129
+
3130
+ .art-flower-animation .growing-grass {
3131
+ position: absolute;
3132
+ bottom: 0;
3133
+ }
3134
+
3135
+ /* ── Bubbles (floating hearts) ── */
3136
+
3137
+ .art-flower-animation .bubbles {
3138
+ position: absolute;
3139
+ bottom: 10em;
3140
+ left: 50%;
3141
+ transform: translateX(-50%);
3142
+ width: 40em;
3143
+ height: 0;
3144
+ z-index: 20;
3145
+ }
3146
+ .art-flower-animation .bubble {
3147
+ position: absolute;
3148
+ bottom: 0;
3149
+ animation: art-flower-animation-bubble 8s ease-in infinite;
3150
+ opacity: 0;
3151
+ }
3152
+ .art-flower-animation .bubble .heart {
3153
+ width: 2em;
3154
+ height: 2em;
3155
+ fill: rgba(255, 100, 150, 0.8);
3156
+ filter: drop-shadow(0 0 0.5em rgba(255, 100, 150, 0.5));
3157
+ }
3158
+ .art-flower-animation .bubble:nth-child(1) { left: 5%; animation-delay: 0s; animation-duration: 7s; }
3159
+ .art-flower-animation .bubble:nth-child(2) { left: 10%; animation-delay: 0.5s; animation-duration: 8s; }
3160
+ .art-flower-animation .bubble:nth-child(3) { left: 20%; animation-delay: 1s; animation-duration: 6.5s; }
3161
+ .art-flower-animation .bubble:nth-child(4) { left: 30%; animation-delay: 1.5s; animation-duration: 9s; }
3162
+ .art-flower-animation .bubble:nth-child(5) { left: 40%; animation-delay: 2s; animation-duration: 7.5s; }
3163
+ .art-flower-animation .bubble:nth-child(6) { left: 50%; animation-delay: 2.5s; animation-duration: 8.5s; }
3164
+ .art-flower-animation .bubble:nth-child(7) { left: 60%; animation-delay: 3s; animation-duration: 7s; }
3165
+ .art-flower-animation .bubble:nth-child(8) { left: 70%; animation-delay: 3.5s; animation-duration: 9.5s; }
3166
+ .art-flower-animation .bubble:nth-child(9) { left: 75%; animation-delay: 4s; animation-duration: 6s; }
3167
+ .art-flower-animation .bubble:nth-child(10) { left: 80%; animation-delay: 4.5s; animation-duration: 8s; }
3168
+ .art-flower-animation .bubble:nth-child(11) { left: 15%; animation-delay: 5s; animation-duration: 7.5s; }
3169
+ .art-flower-animation .bubble:nth-child(12) { left: 25%; animation-delay: 5.5s; animation-duration: 9s; }
3170
+ .art-flower-animation .bubble:nth-child(13) { left: 35%; animation-delay: 6s; animation-duration: 8s; }
3171
+ .art-flower-animation .bubble:nth-child(14) { left: 45%; animation-delay: 6.5s; animation-duration: 7s; }
3172
+ .art-flower-animation .bubble:nth-child(15) { left: 55%; animation-delay: 0.3s; animation-duration: 9.5s; }
3173
+ .art-flower-animation .bubble:nth-child(16) { left: 65%; animation-delay: 1.3s; animation-duration: 6.5s; }
3174
+ .art-flower-animation .bubble:nth-child(17) { left: 72%; animation-delay: 2.2s; animation-duration: 8.5s; }
3175
+ .art-flower-animation .bubble:nth-child(18) { left: 8%; animation-delay: 3.3s; animation-duration: 7.5s; }
3176
+ .art-flower-animation .bubble:nth-child(19) { left: 88%; animation-delay: 4.2s; animation-duration: 9s; }
3177
+ .art-flower-animation .bubble:nth-child(20) { left: 93%; animation-delay: 5.8s; animation-duration: 6s; }
3178
+ }
3179
+