@duskmoon-dev/css-art 0.1.1 → 0.3.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.
package/dist/index.css CHANGED
@@ -668,7 +668,7 @@
668
668
  left: calc(var(--art-plasma-ball-size) * 151 / 350);
669
669
  }
670
670
  .glassball {
671
- position: relative;
671
+ position: absolute;
672
672
  overflow: hidden;
673
673
  margin: 0 auto;
674
674
  width: 100%;
@@ -678,7 +678,7 @@
678
678
  top: 0%;
679
679
  box-shadow: 0 20px 30px rgba(0, 0, 0, 0.2),
680
680
  inset 0px 10px 30px 5px rgba(255, 255, 255, 1);
681
- position: absolute;
681
+ z-index: 1;
682
682
  }
683
683
  .glassball:after {
684
684
  background: radial-gradient(
@@ -1278,5 +1278,1912 @@
1278
1278
  }
1279
1279
  }
1280
1280
 
1281
+ @layer css-art {
1282
+ @keyframes art-cat-stargazer-blink {
1283
+ 0%, 25%, 28%, 100% { height: 0 }
1284
+ 26.5% { height: 100% }
1285
+ }
1286
+
1287
+ .art-cat-stargazer {
1288
+ --art-cat-stargazer-size: 500px;
1289
+
1290
+ position: relative;
1291
+ font-size: calc(var(--art-cat-stargazer-size) / 90);
1292
+ width: var(--art-cat-stargazer-size);
1293
+ aspect-ratio: 1;
1294
+ overflow: hidden;
1295
+ background:
1296
+ radial-gradient(circle at 20% 20%, #ffc8 0.20em, #0000 0),
1297
+ radial-gradient(circle at 70% 50%, #ffc8 0.25em, #0000 0),
1298
+ radial-gradient(circle at 10% 80%, #ffc8 0.20em, #0000 0),
1299
+ radial-gradient(circle at 80% 30%, #ffc8 0.30em, #0000 0),
1300
+ radial-gradient(circle at 80% 80%, #ffc8 0.23em, #0000 0),
1301
+ radial-gradient(circle at 50% 10%, #ff8b 0.3em, #0000 0),
1302
+ radial-gradient(circle at 40% 60%, #ffc8 0.20em, #0000 0),
1303
+ radial-gradient(circle at 30% 30%, #ffc8 0.20em, #0000 0) 0 0 / 70% 70%,
1304
+ radial-gradient(circle at 30% 30%, #ffc8 0.20em, #0000 0) 40% 30% / 50% 70%,
1305
+ linear-gradient(#0002, #0000),
1306
+ radial-gradient(at 50% 80%, #fcc2, #fff0),
1307
+ #023;
1308
+
1309
+ *, *::before, *::after {
1310
+ position: absolute;
1311
+ box-sizing: border-box;
1312
+ }
1313
+
1314
+ .moon {
1315
+ width: 120%;
1316
+ height: 40%;
1317
+ left: 50%;
1318
+ bottom: 0;
1319
+ translate: -50% 60%;
1320
+ border-radius: 50% / 100% 100% 0 0;
1321
+ box-shadow:
1322
+ 0 0 3em #ffc,
1323
+ 0 0 9em #ffc8;
1324
+ background:
1325
+ radial-gradient(at 38% 20%, #0001 2%, #0000 0),
1326
+ radial-gradient(13% 8% at 50% 0, #0001 99%, #0000),
1327
+ #ffc;
1328
+
1329
+ &::before {
1330
+ content: "";
1331
+ width: 18%;
1332
+ height: 15%;
1333
+ background: #0001;
1334
+ border-radius: 50%;
1335
+ box-shadow: inset 0 1em #0002;
1336
+ rotate: -15deg;
1337
+ top: 15%;
1338
+ left: 20%;
1339
+ scale: 0.8;
1340
+ }
1341
+
1342
+ &::after {
1343
+ content: "";
1344
+ width: 4%;
1345
+ height: 5%;
1346
+ background: #0001;
1347
+ border-radius: 50%;
1348
+ box-shadow: -7em 3em 0 2em #0001;
1349
+ rotate: 30deg;
1350
+ top: 25%;
1351
+ left: 80%;
1352
+ scale: 0.8;
1353
+ }
1354
+ }
1355
+
1356
+ .cat {
1357
+ --fur: #111;
1358
+ --fur-dark: #000;
1359
+ --skin: pink;
1360
+ --suit: #fff;
1361
+ --suit-dark: #ddd;
1362
+ font-size: 0.4em;
1363
+ width: 80em;
1364
+ aspect-ratio: 1;
1365
+ bottom: 15%;
1366
+ left: 50%;
1367
+ translate: -50%;
1368
+
1369
+ .bubble {
1370
+ width: 119%;
1371
+ height: 103%;
1372
+ border-radius: 50%;
1373
+ bottom: 25%;
1374
+ left: 49%;
1375
+ translate: -50%;
1376
+ background:
1377
+ radial-gradient(circle at 25% 25%, #fff3, #fff0 25%),
1378
+ radial-gradient(circle at 15% 45%, #fff1, #fff0 15%),
1379
+ radial-gradient(circle at 75% 35%, #fff1, #fff0 50%),
1380
+ #fff1;
1381
+ box-shadow:
1382
+ inset 0 0 1em 1em #acf,
1383
+ inset 0 0 5em #fff;
1384
+ }
1385
+
1386
+ .backpack {
1387
+ width: 40%;
1388
+ left: 50%;
1389
+ height: 30%;
1390
+ background: #bcd;
1391
+ bottom: 0;
1392
+ translate: -50%;
1393
+ border-radius: 3em;
1394
+ }
1395
+
1396
+ .tail {
1397
+ width: 50%;
1398
+ height: 50%;
1399
+ border-radius: 50%;
1400
+ border: 7em solid #0000;
1401
+ border-top-color: var(--suit-dark);
1402
+ border-left-color: var(--suit-dark);
1403
+ clip-path: polygon(100% 0, 100% 100%, 0 30%, 0 0);
1404
+ top: 75%;
1405
+ left: 52%;
1406
+
1407
+ &::before {
1408
+ content: "";
1409
+ width: 7em;
1410
+ aspect-ratio: 1;
1411
+ background: var(--suit-dark);
1412
+ border-radius: 50%;
1413
+ left: 81%;
1414
+ top: -9%;
1415
+ }
1416
+ }
1417
+
1418
+ .body {
1419
+ left: 50%;
1420
+ translate: -50%;
1421
+ bottom: 0;
1422
+ width: 35%;
1423
+ height: 40%;
1424
+ background:
1425
+ radial-gradient(circle at 17% 55%, #36c 2em, #0000 0),
1426
+ radial-gradient(100% 70% at 50% 0, var(--fur-dark) 50%, #0000 0),
1427
+ radial-gradient(150% 70% at 49% 0, var(--fur) 50%, #d99 0 59%, #0000 calc(59% + 1px)),
1428
+ var(--suit);
1429
+ border-radius: 100% / 200% 200% 20% 20%;
1430
+
1431
+ .leg {
1432
+ width: 165%;
1433
+ height: 38%;
1434
+ bottom: 0;
1435
+ left: 50%;
1436
+ translate: -50%;
1437
+ border-radius: 8em 8em 100% 100% / 10em 10em 16em 16em;
1438
+ scale: 1 -1;
1439
+ background:
1440
+ radial-gradient(20% 200% at 2% 10%, var(--suit-dark) 20%, #0000 0),
1441
+ radial-gradient(20% 200% at 98% 10%, var(--suit-dark) 20%, #0000 0),
1442
+ var(--suit);
1443
+ }
1444
+
1445
+ .paw {
1446
+ width: 35%;
1447
+ height: 49%;
1448
+ border: 0.75em solid #777;
1449
+ border-top: 0;
1450
+ border-radius: 0 0 5em 5em;
1451
+ top: 51%;
1452
+ rotate: -10deg;
1453
+ left: 10%;
1454
+ clip-path: polygon(0 20%, 100% 30%, 100% 100%, 0 100%);
1455
+
1456
+ & + & {
1457
+ right: 7%;
1458
+ height: 50%;
1459
+ left: auto;
1460
+ rotate: 13deg;
1461
+ scale: -1 1;
1462
+ clip-path: polygon(0 25%, 100% 15%, 100% 100%, 0 100%);
1463
+ }
1464
+ }
1465
+ }
1466
+
1467
+ .ear {
1468
+ width: 40%;
1469
+ aspect-ratio: 1;
1470
+ border: 4em solid var(--fur);
1471
+ border-radius: 5% 90% 10% 80%;
1472
+ background: var(--skin);
1473
+ top: 5%;
1474
+ left: 10%;
1475
+
1476
+ & + & {
1477
+ scale: -1 1;
1478
+ left: auto;
1479
+ right: 10%;
1480
+ }
1481
+ }
1482
+
1483
+ .head {
1484
+ width: 80%;
1485
+ aspect-ratio: 1.1;
1486
+ background:
1487
+ linear-gradient(#0003, #0000 50%),
1488
+ var(--fur);
1489
+ left: 50%;
1490
+ translate: -50%;
1491
+ border-radius: 100% / 125% 125% 80% 75%;
1492
+
1493
+ .whisker {
1494
+ width: 30%;
1495
+ height: 30%;
1496
+ border-radius: 50%;
1497
+ border: 2em solid #0000;
1498
+ border-top-color: var(--fur);
1499
+ border-left-color: var(--fur);
1500
+ clip-path: polygon(100% 0, 100% 100%, 0 30%, 0 0);
1501
+
1502
+ &:nth-child(1) {
1503
+ top: 45%;
1504
+ translate: -65%;
1505
+ }
1506
+ &:nth-child(2) {
1507
+ top: 55%;
1508
+ translate: -40%;
1509
+ rotate: -20deg;
1510
+ }
1511
+ &:nth-child(3) {
1512
+ right: 0%;
1513
+ top: 45%;
1514
+ translate: 65%;
1515
+ rotate: 10deg;
1516
+ }
1517
+ &:nth-child(4) {
1518
+ right: -2%;
1519
+ top: 55%;
1520
+ translate: 40%;
1521
+ rotate: 24deg;
1522
+ }
1523
+ }
1524
+
1525
+ .nose {
1526
+ width: 10%;
1527
+ height: 7%;
1528
+ background: var(--skin);
1529
+ border-radius: 50%;
1530
+ left: 50%;
1531
+ translate: -50% -50%;
1532
+ top: 55%;
1533
+ }
1534
+
1535
+ .eye {
1536
+ --pos: 25%;
1537
+ --x1: 50%;
1538
+ --x2: 42%;
1539
+ width: 35%;
1540
+ aspect-ratio: 1;
1541
+ border-radius: 50%;
1542
+ background:
1543
+ radial-gradient(50% 50% at var(--x1) 32%, #fff 25%, #0000 calc(25% + 1px)),
1544
+ radial-gradient(50% 50% at var(--x2) 51%, #fff 12%, #0000 calc(12% + 1px)),
1545
+ radial-gradient(circle at 60% 40%, #000 35%, #0000 calc(35% + 1px)),
1546
+ white;
1547
+ left: var(--pos);
1548
+ translate: -50% -50%;
1549
+ top: 43%;
1550
+ overflow: hidden;
1551
+
1552
+ & + & {
1553
+ --x1: 70%;
1554
+ --x2: 78%;
1555
+ left: calc(100% - var(--pos));
1556
+ scale: -1 1;
1557
+ }
1558
+
1559
+ &::before {
1560
+ content: "";
1561
+ top: -30%;
1562
+ left: 50%;
1563
+ translate: -50%;
1564
+ width: 150%;
1565
+ height: 0%;
1566
+ background: var(--fur);
1567
+ rotate: -10deg;
1568
+ animation: art-cat-stargazer-blink 10s linear infinite;
1569
+ }
1570
+
1571
+ &::after {
1572
+ content: "";
1573
+ bottom: -10%;
1574
+ left: 50%;
1575
+ translate: -50%;
1576
+ width: 150%;
1577
+ height: 0%;
1578
+ background: var(--fur);
1579
+ rotate: -10deg;
1580
+ animation: art-cat-stargazer-blink 10s linear infinite;
1581
+ }
1582
+ }
1583
+ }
1584
+ }
1585
+ }
1586
+
1587
+ /* Size variants */
1588
+ .art-cat-stargazer-sm {
1589
+ --art-cat-stargazer-size: 300px;
1590
+ }
1591
+
1592
+ .art-cat-stargazer-lg {
1593
+ --art-cat-stargazer-size: 700px;
1594
+ }
1595
+ }
1596
+
1597
+ @layer css-art {
1598
+ @keyframes art-color-spin-spin {
1599
+ 0%,
1600
+ 1% {
1601
+ transform: translateX(-50%) translateY(calc(var(--art-color-spin-size) * 0.026))
1602
+ rotateY(0deg) scale(1.05);
1603
+ }
1604
+ 99%,
1605
+ 100% {
1606
+ transform: translateX(-50%) translateY(calc(var(--art-color-spin-size) * 0.026))
1607
+ rotateY(360deg) scale(1.05);
1608
+ }
1609
+ }
1610
+
1611
+ .art-color-spin {
1612
+ --art-color-spin-size: 770px;
1613
+ --art-color-spin-color1: #ffd700;
1614
+ --art-color-spin-color2: #20a7db;
1615
+ --art-color-spin-color3: #8fce00;
1616
+ --art-color-spin-color4: #ff0000;
1617
+
1618
+ position: relative;
1619
+ width: var(--art-color-spin-size);
1620
+ height: calc(var(--art-color-spin-size) * 0.26);
1621
+ background: repeating-linear-gradient(
1622
+ -45deg,
1623
+ #000,
1624
+ #000 5px,
1625
+ #111 5px,
1626
+ #111 10px
1627
+ );
1628
+ perspective: calc(var(--art-color-spin-size) * 1.039);
1629
+ font-family: "Google Sans", sans-serif;
1630
+ font-weight: 440;
1631
+ overflow: visible;
1632
+ }
1633
+
1634
+ .art-color-spin * {
1635
+ box-sizing: border-box;
1636
+ }
1637
+
1638
+ /* Decorative "c" letter */
1639
+ .art-color-spin::before {
1640
+ content: "c";
1641
+ font-size: calc(var(--art-color-spin-size) * 0.461);
1642
+ color: #eee;
1643
+ position: absolute;
1644
+ top: calc(var(--art-color-spin-size) * -0.169);
1645
+ left: 0;
1646
+ text-indent: calc(var(--art-color-spin-size) * -0.026);
1647
+ line-height: calc(var(--art-color-spin-size) * 0.519);
1648
+ z-index: 2;
1649
+ -webkit-box-reflect: below calc(var(--art-color-spin-size) * -0.169)
1650
+ linear-gradient(transparent, rgb(255 255 255 / 0.06));
1651
+ }
1652
+
1653
+ /* Decorative "r" letter */
1654
+ .art-color-spin::after {
1655
+ content: "r";
1656
+ font-size: calc(var(--art-color-spin-size) * 0.461);
1657
+ color: #eee;
1658
+ position: absolute;
1659
+ top: calc(var(--art-color-spin-size) * -0.169);
1660
+ right: calc(var(--art-color-spin-size) * 0.039);
1661
+ line-height: calc(var(--art-color-spin-size) * 0.519);
1662
+ z-index: 2;
1663
+ -webkit-box-reflect: below calc(var(--art-color-spin-size) * -0.169)
1664
+ linear-gradient(transparent, rgb(255 255 255 / 0.06));
1665
+ }
1666
+
1667
+ /* 3D spinner container */
1668
+ .art-color-spin > ul {
1669
+ width: 0;
1670
+ height: calc(var(--art-color-spin-size) * 0.195);
1671
+ display: block;
1672
+ left: 50%;
1673
+ position: relative;
1674
+ transform-style: preserve-3d;
1675
+ transform-origin: center center;
1676
+ z-index: 3;
1677
+ margin: 0;
1678
+ padding: 0;
1679
+ list-style: none;
1680
+ animation: art-color-spin-spin 11s linear infinite alternate-reverse;
1681
+ }
1682
+
1683
+ .art-color-spin > ul * {
1684
+ transform-style: preserve-3d;
1685
+ }
1686
+
1687
+ /* White vertical bars (axis indicators) */
1688
+ .art-color-spin > ul::before,
1689
+ .art-color-spin > ul::after {
1690
+ content: "";
1691
+ display: block;
1692
+ position: absolute;
1693
+ width: calc(var(--art-color-spin-size) * 0.052);
1694
+ height: calc(var(--art-color-spin-size) * 0.286);
1695
+ border-radius: calc(var(--art-color-spin-size) * 0.026);
1696
+ top: calc(var(--art-color-spin-size) * -0.039);
1697
+ left: calc(var(--art-color-spin-size) * -0.026);
1698
+ background: #fff;
1699
+ }
1700
+
1701
+ .art-color-spin > ul::before {
1702
+ background: #eee;
1703
+ transform: rotateY(-90deg);
1704
+ }
1705
+
1706
+ /* Colored rings */
1707
+ .art-color-spin > ul > li {
1708
+ display: block;
1709
+ width: calc(var(--art-color-spin-size) * 0.234);
1710
+ height: calc(var(--art-color-spin-size) * 0.234);
1711
+ border: solid calc(var(--art-color-spin-size) * 0.032) #fff;
1712
+ border-radius: 50%;
1713
+ top: calc(var(--art-color-spin-size) * -0.013);
1714
+ left: 0;
1715
+ position: absolute;
1716
+ transform: rotateY(calc(var(--i) * -90deg)) translateZ(0px)
1717
+ translateX(calc(var(--art-color-spin-size) * 0.052));
1718
+ transform-origin: top left;
1719
+ -webkit-box-reflect: below 2px linear-gradient(transparent, rgb(255 255 255 / 0.1));
1720
+ margin: 0;
1721
+ padding: 0;
1722
+ list-style: none;
1723
+ }
1724
+
1725
+ /* Inner colored circles (mix-blend-mode creates glow effect) */
1726
+ .art-color-spin > ul > li::before,
1727
+ .art-color-spin > ul > li::after {
1728
+ content: "";
1729
+ width: calc(var(--art-color-spin-size) * 0.13);
1730
+ height: calc(var(--art-color-spin-size) * 0.13);
1731
+ display: block;
1732
+ opacity: 0.75;
1733
+ border-radius: 50%;
1734
+ position: absolute;
1735
+ left: 50%;
1736
+ top: 50%;
1737
+ mix-blend-mode: color-burn;
1738
+ }
1739
+
1740
+ .art-color-spin > ul > li::after {
1741
+ transform: translate3d(-50%, -50%, 1px);
1742
+ }
1743
+
1744
+ .art-color-spin > ul > li::before {
1745
+ transform: translate3d(-50%, -50%, -1px);
1746
+ }
1747
+
1748
+ /* Ring 1: Gold */
1749
+ .art-color-spin > ul > li:nth-child(1) {
1750
+ outline: solid 1px var(--art-color-spin-color1);
1751
+ outline-offset: 1px;
1752
+ }
1753
+ .art-color-spin > ul > li:nth-child(1)::after {
1754
+ background: var(--art-color-spin-color1);
1755
+ }
1756
+ .art-color-spin > ul > li:nth-child(1)::before {
1757
+ background: color-mix(in hsl, var(--art-color-spin-color1), white 30%);
1758
+ }
1759
+
1760
+ /* Ring 2: Blue */
1761
+ .art-color-spin > ul > li:nth-child(2) {
1762
+ outline: solid 1px var(--art-color-spin-color2);
1763
+ outline-offset: 1px;
1764
+ }
1765
+ .art-color-spin > ul > li:nth-child(2)::after {
1766
+ background: var(--art-color-spin-color2);
1767
+ }
1768
+ .art-color-spin > ul > li:nth-child(2)::before {
1769
+ background: color-mix(in hsl, var(--art-color-spin-color2), white 30%);
1770
+ }
1771
+
1772
+ /* Ring 3: Green */
1773
+ .art-color-spin > ul > li:nth-child(3) {
1774
+ outline: solid 1px var(--art-color-spin-color3);
1775
+ outline-offset: 1px;
1776
+ }
1777
+ .art-color-spin > ul > li:nth-child(3)::after {
1778
+ background: var(--art-color-spin-color3);
1779
+ }
1780
+ .art-color-spin > ul > li:nth-child(3)::before {
1781
+ background: color-mix(in hsl, var(--art-color-spin-color3), white 30%);
1782
+ }
1783
+
1784
+ /* Ring 4: Red */
1785
+ .art-color-spin > ul > li:nth-child(4) {
1786
+ outline: solid 1px var(--art-color-spin-color4);
1787
+ outline-offset: 1px;
1788
+ }
1789
+ .art-color-spin > ul > li:nth-child(4)::after {
1790
+ background: var(--art-color-spin-color4);
1791
+ }
1792
+ .art-color-spin > ul > li:nth-child(4)::before {
1793
+ background: color-mix(in hsl, var(--art-color-spin-color4), white 30%);
1794
+ }
1795
+
1796
+ .art-color-spin-sm {
1797
+ --art-color-spin-size: 385px;
1798
+ }
1799
+
1800
+ .art-color-spin-lg {
1801
+ --art-color-spin-size: 1000px;
1802
+ }
1803
+ }
1804
+
1805
+ @layer css-art {
1806
+ @keyframes art-synthwave-starfield-color {
1807
+ 0% {
1808
+ filter: hue-rotate(1deg);
1809
+ }
1810
+ 100% {
1811
+ filter: hue-rotate(360deg);
1812
+ }
1813
+ }
1814
+
1815
+ @keyframes art-synthwave-starfield-lines-x {
1816
+ 0% {
1817
+ background-position: calc(var(--art-synthwave-starfield-size) * 0.12) center;
1818
+ }
1819
+ 100% {
1820
+ background-position: 0 center;
1821
+ }
1822
+ }
1823
+
1824
+ @keyframes art-synthwave-starfield-lines-y {
1825
+ 0% {
1826
+ background-position: center calc(var(--art-synthwave-starfield-size) * 0.12);
1827
+ }
1828
+ 100% {
1829
+ background-position: center 0;
1830
+ }
1831
+ }
1832
+
1833
+ @keyframes art-synthwave-starfield-stars {
1834
+ 0% {
1835
+ transform: translateZ(calc(var(--art-synthwave-starfield-size) * -0.4));
1836
+ opacity: 0;
1837
+ }
1838
+ 30%,
1839
+ 80% {
1840
+ opacity: 1;
1841
+ }
1842
+ 100% {
1843
+ transform: translateZ(calc(var(--art-synthwave-starfield-size) * 0.5)) rotate(15deg);
1844
+ opacity: 0;
1845
+ }
1846
+ }
1847
+
1848
+ @keyframes art-synthwave-starfield-stars2 {
1849
+ 0% {
1850
+ transform: translateZ(calc(var(--art-synthwave-starfield-size) * -0.4)) rotate(180deg);
1851
+ opacity: 0;
1852
+ }
1853
+ 30%,
1854
+ 80% {
1855
+ opacity: 1;
1856
+ }
1857
+ 100% {
1858
+ transform: translateZ(calc(var(--art-synthwave-starfield-size) * 0.5)) rotate(195deg);
1859
+ opacity: 0;
1860
+ }
1861
+ }
1862
+
1863
+ .art-synthwave-starfield {
1864
+ --art-synthwave-starfield-size: 600px;
1865
+ --art-synthwave-starfield-line-color: #6bd600;
1866
+
1867
+ position: relative;
1868
+ width: var(--art-synthwave-starfield-size);
1869
+ height: var(--art-synthwave-starfield-size);
1870
+ overflow: hidden;
1871
+ perspective: calc(var(--art-synthwave-starfield-size) * 0.5);
1872
+ transform-style: preserve-3d;
1873
+ background-image: radial-gradient(#0000, #673ab72e),
1874
+ linear-gradient(-90deg, #2000587d, #000, #9c27b02b),
1875
+ linear-gradient(0deg, #ff98002e, #000, #8bc34a5e);
1876
+ background-color: #000;
1877
+ box-shadow: 0 0 calc(var(--art-synthwave-starfield-size) * 1.5)
1878
+ calc(var(--art-synthwave-starfield-size) * 0.11) #000 inset;
1879
+ font-family: "Press Start 2P", system-ui;
1880
+ }
1881
+
1882
+ /* Secondary gradient overlay (replaces body::before) */
1883
+ .art-synthwave-starfield::before {
1884
+ content: "";
1885
+ position: absolute;
1886
+ width: 100%;
1887
+ height: 100%;
1888
+ background: radial-gradient(#0000, #0a123a),
1889
+ linear-gradient(180deg, #2000587d, #000, #9c27b02b),
1890
+ linear-gradient(0deg, #ff980054, #000, #009688ba);
1891
+ opacity: 0.25;
1892
+ z-index: 0;
1893
+ }
1894
+
1895
+ /* All descendants: absolute + preserve-3d */
1896
+ .art-synthwave-starfield * {
1897
+ box-sizing: border-box;
1898
+ position: absolute;
1899
+ transform-style: preserve-3d;
1900
+ }
1901
+
1902
+ .art-synthwave-starfield *::before,
1903
+ .art-synthwave-starfield *::after {
1904
+ box-sizing: border-box;
1905
+ transform-style: preserve-3d;
1906
+ position: absolute;
1907
+ content: "";
1908
+ }
1909
+
1910
+ /* Shared grid panel base */
1911
+ .art-synthwave-starfield-sides {
1912
+ width: 100%;
1913
+ height: 100%;
1914
+ background: radial-gradient(#0f0015 10%, #000000e0 35%, #fff0 75% 100%);
1915
+ }
1916
+
1917
+ /* Left wall (shared base for both side panels) */
1918
+ .art-synthwave-starfield-sides::before,
1919
+ .art-synthwave-starfield-sides::after {
1920
+ width: 100%;
1921
+ height: 100%;
1922
+ transform: rotateY(90deg);
1923
+ transform-origin: left center;
1924
+ background-image: repeating-linear-gradient(
1925
+ 90deg,
1926
+ #fff0 0,
1927
+ #fff0 calc(var(--art-synthwave-starfield-size) * 0.1),
1928
+ var(--art-synthwave-starfield-line-color) calc(var(--art-synthwave-starfield-size) * 0.1)
1929
+ calc(var(--art-synthwave-starfield-size) * 0.1035),
1930
+ #fff0 calc(var(--art-synthwave-starfield-size) * 0.1035)
1931
+ ),
1932
+ repeating-linear-gradient(
1933
+ 180deg,
1934
+ #fff0 0,
1935
+ #fff0 calc(var(--art-synthwave-starfield-size) * 0.1),
1936
+ var(--art-synthwave-starfield-line-color) calc(var(--art-synthwave-starfield-size) * 0.1)
1937
+ calc(var(--art-synthwave-starfield-size) * 0.1035),
1938
+ #fff0 calc(var(--art-synthwave-starfield-size) * 0.1035)
1939
+ );
1940
+ background-color: transparent;
1941
+ animation: art-synthwave-starfield-lines-x 0.5s linear 0s infinite,
1942
+ art-synthwave-starfield-color 5s linear 0s infinite;
1943
+ background-repeat: repeat;
1944
+ background-position: center center;
1945
+ background-size: calc(var(--art-synthwave-starfield-size) * 0.12)
1946
+ calc(var(--art-synthwave-starfield-size) * 0.12);
1947
+ box-shadow: 0 0 calc(var(--art-synthwave-starfield-size) * 0.08)
1948
+ calc(var(--art-synthwave-starfield-size) * 0.1) #000 inset;
1949
+ }
1950
+
1951
+ /* Right wall */
1952
+ .art-synthwave-starfield-lefrig::after {
1953
+ transform: rotateY(-90deg);
1954
+ transform-origin: right center;
1955
+ animation: art-synthwave-starfield-lines-x 0.5s linear 0s infinite reverse,
1956
+ art-synthwave-starfield-color 5s linear 2s infinite;
1957
+ z-index: -1;
1958
+ }
1959
+
1960
+ /* Floor */
1961
+ .art-synthwave-starfield-topbot::before {
1962
+ height: 100%;
1963
+ transform: rotateX(90deg);
1964
+ transform-origin: center bottom;
1965
+ bottom: 0;
1966
+ animation: art-synthwave-starfield-lines-y 0.5s linear 0s infinite reverse,
1967
+ art-synthwave-starfield-color 5s linear 1s infinite;
1968
+ }
1969
+
1970
+ /* Ceiling */
1971
+ .art-synthwave-starfield-topbot::after {
1972
+ height: 100%;
1973
+ transform: rotateX(-90deg);
1974
+ transform-origin: center top;
1975
+ bottom: auto;
1976
+ animation: art-synthwave-starfield-lines-y 0.5s linear 0s infinite,
1977
+ art-synthwave-starfield-color 5s linear 3s infinite;
1978
+ }
1979
+
1980
+ /* Starfield layers */
1981
+ .art-synthwave-starfield-stars {
1982
+ width: 100%;
1983
+ height: 100%;
1984
+ z-index: 3;
1985
+ }
1986
+
1987
+ .art-synthwave-starfield-stars::before,
1988
+ .art-synthwave-starfield-stars::after {
1989
+ width: 200%;
1990
+ height: 200%;
1991
+ background: transparent;
1992
+ border-radius: 100%;
1993
+ background-image: repeating-conic-gradient(
1994
+ #fff8 0%,
1995
+ transparent 0.0002%,
1996
+ transparent 0.075%,
1997
+ transparent 0.65%
1998
+ ),
1999
+ repeating-conic-gradient(
2000
+ #fff 0%,
2001
+ transparent 0.0004%,
2002
+ transparent 0.05%,
2003
+ transparent 0.495%
2004
+ );
2005
+ transform: translateZ(calc(var(--art-synthwave-starfield-size) * -0.4));
2006
+ opacity: 0;
2007
+ animation: art-synthwave-starfield-stars 4s ease-in -1s infinite;
2008
+ z-index: 1;
2009
+ left: -50%;
2010
+ top: -50%;
2011
+ }
2012
+
2013
+ .art-synthwave-starfield-stars::after {
2014
+ animation-name: art-synthwave-starfield-stars2;
2015
+ animation-delay: -2s;
2016
+ }
2017
+
2018
+ /* Second stars div: offset delays for smooth looping */
2019
+ .art-synthwave-starfield-stars + .art-synthwave-starfield-stars::before {
2020
+ animation-delay: -3s;
2021
+ }
2022
+
2023
+ .art-synthwave-starfield-stars + .art-synthwave-starfield-stars::after {
2024
+ animation-delay: -4s;
2025
+ }
2026
+
2027
+ /* Pause all animations (opt-in modifier) */
2028
+ .art-synthwave-starfield.art-synthwave-starfield-paused *::before,
2029
+ .art-synthwave-starfield.art-synthwave-starfield-paused *::after {
2030
+ animation-play-state: paused !important;
2031
+ }
2032
+
2033
+ .art-synthwave-starfield-sm {
2034
+ --art-synthwave-starfield-size: 300px;
2035
+ }
2036
+
2037
+ .art-synthwave-starfield-lg {
2038
+ --art-synthwave-starfield-size: 900px;
2039
+ }
2040
+ }
2041
+
2042
+ @property --art-circular-gallery-rotation {
2043
+ syntax: "<angle>";
2044
+ inherits: true;
2045
+ initial-value: 0deg;
2046
+ }
2047
+
2048
+ @layer css-art {
2049
+ .art-circular-gallery {
2050
+ --art-circular-gallery-size: 600px;
2051
+ --art-circular-gallery-radius: calc(var(--art-circular-gallery-size) * 0.42);
2052
+ --art-circular-gallery-card-width: calc(var(--art-circular-gallery-size) * 0.09);
2053
+ --art-circular-gallery-card-border-radius: calc(var(--art-circular-gallery-size) * 0.012);
2054
+ --art-circular-gallery-arc-size: 0.95;
2055
+ --art-circular-gallery-arc-center: 0.275;
2056
+ --art-circular-gallery-arc-start: calc(
2057
+ var(--art-circular-gallery-arc-center) - var(--art-circular-gallery-arc-size) / 2
2058
+ );
2059
+ --art-circular-gallery-arc-shift-delta: 0.0075;
2060
+ --art-circular-gallery-card-trans-duration: 1000ms;
2061
+ --art-circular-gallery-card-trans-easing: linear(
2062
+ 0,
2063
+ 0.01 0.8%,
2064
+ 0.038 1.6%,
2065
+ 0.154 3.4%,
2066
+ 0.781 9.7%,
2067
+ 1.01 12.5%,
2068
+ 1.089 13.8%,
2069
+ 1.153 15.2%,
2070
+ 1.195 16.6%,
2071
+ 1.219 18%,
2072
+ 1.224 19.7%,
2073
+ 1.208 21.6%,
2074
+ 1.172 23.6%,
2075
+ 1.057 28.6%,
2076
+ 1.007 31.2%,
2077
+ 0.969 34.1%,
2078
+ 0.951 37.1%,
2079
+ 0.953 40.9%,
2080
+ 0.998 50.4%,
2081
+ 1.011 56%,
2082
+ 0.998 74.7%,
2083
+ 1
2084
+ );
2085
+
2086
+ anchor-name: --art-circular-gallery-center;
2087
+
2088
+ /* transform at 0deg ensures this is always a containing block for position:fixed descendants */
2089
+ transform: rotate(var(--art-circular-gallery-rotation));
2090
+ transition: transform 700ms linear;
2091
+
2092
+ position: relative;
2093
+ width: var(--art-circular-gallery-size);
2094
+ height: var(--art-circular-gallery-size);
2095
+ aspect-ratio: 1;
2096
+ display: grid;
2097
+ place-content: center;
2098
+ font-family: sans-serif;
2099
+
2100
+ h1 {
2101
+ margin: 0;
2102
+ text-align: center;
2103
+ font-size: clamp(1rem, calc(var(--art-circular-gallery-size) * 0.035), 2.5rem);
2104
+ font-weight: 300;
2105
+ letter-spacing: 0.05em;
2106
+ /* counter-rotate so the title stays upright as the gallery rotates */
2107
+ transform: rotate(calc(var(--art-circular-gallery-rotation) * -1));
2108
+ }
2109
+
2110
+ div {
2111
+ --arc-step: calc(var(--art-circular-gallery-arc-size) / 19);
2112
+ --arc-shift: calc(var(--art-circular-gallery-arc-shift-delta) * var(--d, 1));
2113
+ --card-offset-distance: calc(
2114
+ (
2115
+ var(--art-circular-gallery-arc-start) + (var(--i) - 1) * var(--arc-step) +
2116
+ var(--arc-shift)
2117
+ ) * 100%
2118
+ );
2119
+
2120
+ &:has(a:hover),
2121
+ &:target {
2122
+ --title-opacity: 1;
2123
+ }
2124
+
2125
+ &:target {
2126
+ --zindex: 2;
2127
+ --center-opacity: 1;
2128
+ --center-scale: 1;
2129
+ --image-outline-color: rgba(255 255 255 / 0.5);
2130
+ }
2131
+
2132
+ /* Large image preview centered in the gallery (shown on :target) */
2133
+ &::before {
2134
+ content: "";
2135
+ position: fixed;
2136
+ position-anchor: --art-circular-gallery-center;
2137
+ position-area: span-all;
2138
+ transform: rotate(calc(var(--art-circular-gallery-rotation) * -1));
2139
+ width: calc(var(--art-circular-gallery-size) * 0.4);
2140
+ aspect-ratio: 1;
2141
+ border-radius: 9in;
2142
+ background: var(--bg-img);
2143
+ box-sizing: border-box;
2144
+ outline: 10px solid rgba(255 255 255 / 0.3);
2145
+ outline-offset: -10px;
2146
+ background-size: cover;
2147
+ background-repeat: no-repeat;
2148
+ opacity: var(--center-opacity, 0);
2149
+ scale: var(--center-scale, 0);
2150
+ pointer-events: none;
2151
+ transition-property: scale, opacity;
2152
+ transition-duration: 300ms, 150ms;
2153
+ }
2154
+
2155
+ /* Tooltip showing the photographer's name on hover */
2156
+ &::after {
2157
+ content: attr(data-title);
2158
+ position: fixed;
2159
+ position-anchor: --art-circular-gallery-card;
2160
+ position-area: center span-all;
2161
+ z-index: 2;
2162
+ pointer-events: none;
2163
+ opacity: var(--title-opacity, 0);
2164
+ transition-property: opacity, transform;
2165
+ transition-duration: 150ms;
2166
+ border: 1px solid rgb(255 255 255 / 0.75);
2167
+ background: rgb(0 0 0 / 0.25);
2168
+ backdrop-filter: blur(3px);
2169
+ padding: 0.25em 1em;
2170
+ border-radius: 5px;
2171
+ font-size: clamp(0.55rem, calc(var(--art-circular-gallery-size) * 0.012), 0.85rem);
2172
+ white-space: nowrap;
2173
+
2174
+ @starting-style {
2175
+ opacity: 0;
2176
+ }
2177
+ }
2178
+
2179
+ /* Thumbnail card placed on the circular offset-path */
2180
+ a {
2181
+ position: absolute;
2182
+ display: block;
2183
+ width: var(--art-circular-gallery-card-width);
2184
+ aspect-ratio: 4 / 6;
2185
+ border-radius: var(--art-circular-gallery-card-border-radius);
2186
+ border: 2px solid rgba(255 255 255 / 0.6);
2187
+ offset-path: circle(var(--art-circular-gallery-radius) at 50% 50%);
2188
+ offset-distance: var(--card-offset-distance);
2189
+ offset-rotate: auto;
2190
+ offset-anchor: 50% 0%;
2191
+ transition:
2192
+ offset var(--art-circular-gallery-card-trans-duration)
2193
+ var(--art-circular-gallery-card-trans-easing),
2194
+ scale 200ms ease;
2195
+ z-index: var(--zindex, 1);
2196
+ anchor-name: --art-circular-gallery-card;
2197
+
2198
+ &:hover {
2199
+ scale: 2.5;
2200
+ z-index: 3;
2201
+ }
2202
+
2203
+ img {
2204
+ width: 100%;
2205
+ height: 100%;
2206
+ object-fit: cover;
2207
+ display: block;
2208
+ border-radius: inherit;
2209
+ outline: 5px solid var(--image-outline-color, transparent);
2210
+ outline-offset: -5px;
2211
+ transition: outline 300ms ease-in-out;
2212
+ }
2213
+ }
2214
+ }
2215
+ }
2216
+
2217
+ /* ============================================================
2218
+ FORWARD siblings (clockwise / +d)
2219
+ ============================================================ */
2220
+
2221
+ /* +1 */
2222
+ .art-circular-gallery:has(> *:hover) > *:hover + *,
2223
+ .art-circular-gallery:has(> :last-child:hover) > :nth-child(1) {
2224
+ --d: 3;
2225
+ }
2226
+
2227
+ /* +2 */
2228
+ .art-circular-gallery:has(> *:hover) > *:hover + * + *,
2229
+ .art-circular-gallery:has(> :last-child:hover) > :nth-child(2),
2230
+ .art-circular-gallery:has(> :nth-last-child(2):hover) > :nth-child(1) {
2231
+ --d: 2;
2232
+ }
2233
+
2234
+ /* +3 */
2235
+ .art-circular-gallery:has(> *:hover) > *:hover + * + * + *,
2236
+ .art-circular-gallery:has(> :last-child:hover) > :nth-child(3),
2237
+ .art-circular-gallery:has(> :nth-last-child(2):hover) > :nth-child(2),
2238
+ .art-circular-gallery:has(> :nth-last-child(3):hover) > :nth-child(1) {
2239
+ --d: 1;
2240
+ }
2241
+
2242
+ /* +4 */
2243
+ .art-circular-gallery:has(> *:hover) > *:hover + * + * + * + *,
2244
+ .art-circular-gallery:has(> :last-child:hover) > :nth-child(4),
2245
+ .art-circular-gallery:has(> :nth-last-child(2):hover) > :nth-child(3),
2246
+ .art-circular-gallery:has(> :nth-last-child(3):hover) > :nth-child(2),
2247
+ .art-circular-gallery:has(> :nth-last-child(4):hover) > :nth-child(1) {
2248
+ --d: 0.5;
2249
+ }
2250
+
2251
+ /* ============================================================
2252
+ BACKWARD siblings (counter-clockwise / -d)
2253
+ ============================================================ */
2254
+
2255
+ /* -1 */
2256
+ .art-circular-gallery *:has(+ *:hover),
2257
+ .art-circular-gallery:has(> :nth-child(1):hover) :nth-last-child(1) {
2258
+ --d: -3;
2259
+ }
2260
+
2261
+ /* -2 */
2262
+ .art-circular-gallery *:has(+ * + *:hover),
2263
+ .art-circular-gallery:has(> :nth-child(1):hover) :nth-last-child(2),
2264
+ .art-circular-gallery:has(> :nth-child(2):hover) :nth-last-child(1) {
2265
+ --d: -2;
2266
+ }
2267
+
2268
+ /* -3 */
2269
+ .art-circular-gallery *:has(+ * + * + *:hover),
2270
+ .art-circular-gallery:has(> :nth-child(1):hover) :nth-last-child(3),
2271
+ .art-circular-gallery:has(> :nth-child(2):hover) :nth-last-child(2),
2272
+ .art-circular-gallery:has(> :nth-child(3):hover) :nth-last-child(1) {
2273
+ --d: -1;
2274
+ }
2275
+
2276
+ /* -4 */
2277
+ .art-circular-gallery *:has(+ * + * + * + *:hover),
2278
+ .art-circular-gallery:has(> :nth-child(1):hover) :nth-last-child(4),
2279
+ .art-circular-gallery:has(> :nth-child(2):hover) :nth-last-child(3),
2280
+ .art-circular-gallery:has(> :nth-child(3):hover) :nth-last-child(2),
2281
+ .art-circular-gallery:has(> :nth-child(4):hover) :nth-last-child(1) {
2282
+ --d: -0.5;
2283
+ }
2284
+
2285
+ .art-circular-gallery-sm {
2286
+ --art-circular-gallery-size: 400px;
2287
+ }
2288
+
2289
+ .art-circular-gallery-lg {
2290
+ --art-circular-gallery-size: 800px;
2291
+ }
2292
+ }
2293
+
2294
+ @layer css-art {
2295
+ /* ── Keyframes ── */
2296
+
2297
+ @keyframes art-flower-animation-moving-flower-1 {
2298
+ 0%, 100% { transform: rotate(3deg); }
2299
+ 50% { transform: rotate(0deg); }
2300
+ }
2301
+
2302
+ @keyframes art-flower-animation-moving-flower-2 {
2303
+ 0%, 100% { transform: rotate(20deg); }
2304
+ 50% { transform: rotate(23deg); }
2305
+ }
2306
+
2307
+ @keyframes art-flower-animation-moving-flower-3 {
2308
+ 0%, 100% { transform: rotate(-15deg); }
2309
+ 50% { transform: rotate(-18deg); }
2310
+ }
2311
+
2312
+ @keyframes art-flower-animation-blooming-leaf-right {
2313
+ 0% { transform-origin: left; transform: rotate(70deg) rotateY(30deg) scaleX(0); }
2314
+ }
2315
+
2316
+ @keyframes art-flower-animation-blooming-leaf-left {
2317
+ 0% { transform-origin: right; transform: rotate(-70deg) rotateY(30deg) scaleX(0); }
2318
+ }
2319
+
2320
+ @keyframes art-flower-animation-blooming-flower {
2321
+ 0% { transform: scale(0); opacity: 0; }
2322
+ }
2323
+
2324
+ @keyframes art-flower-animation-light-ans {
2325
+ 0% { opacity: 0; transform: translateY(0); }
2326
+ 25% { opacity: 1; }
2327
+ 100% { opacity: 0; transform: translateY(-15em) translateX(3em); }
2328
+ }
2329
+
2330
+ @keyframes art-flower-animation-grow-flower-tree {
2331
+ 0% { transform: scaleY(0); transform-origin: bottom center; }
2332
+ }
2333
+
2334
+ @keyframes art-flower-animation-grow-ans {
2335
+ 0% { transform: scaleY(0); transform-origin: bottom center; }
2336
+ }
2337
+
2338
+ @keyframes art-flower-animation-moving-grass {
2339
+ 0%, 100% { transform: rotate(-48deg) rotateY(40deg); }
2340
+ 50% { transform: rotate(-50deg) rotateY(40deg); }
2341
+ }
2342
+
2343
+ @keyframes art-flower-animation-moving-grass--2 {
2344
+ 0%, 100% { transform: scale(0.5) rotate(75deg) rotateX(10deg) rotateY(-200deg); }
2345
+ 50% { transform: scale(0.5) rotate(80deg) rotateX(10deg) rotateY(-200deg); }
2346
+ }
2347
+
2348
+ @keyframes art-flower-animation-flower-g-long-ans {
2349
+ 0%, 100% { transform: rotate(-30deg) rotateY(-20deg); }
2350
+ 50% { transform: rotate(-32deg) rotateY(-20deg); }
2351
+ }
2352
+
2353
+ @keyframes art-flower-animation-flower-g-right-ans {
2354
+ 0%, 100% { transform: rotate(20deg); }
2355
+ 50% { transform: rotate(24deg) rotateX(-20deg); }
2356
+ }
2357
+
2358
+ @keyframes art-flower-animation-flower-g-right-ans--2 {
2359
+ 0%, 100% { transform: rotateY(-180deg) rotate(0deg) rotateX(-20deg); }
2360
+ 50% { transform: rotateY(-180deg) rotate(6deg) rotateX(-20deg); }
2361
+ }
2362
+
2363
+ @keyframes art-flower-animation-flower-g-front-ans {
2364
+ 0%, 100% { transform: rotate(-28deg) rotateY(30deg) scale(1.04); }
2365
+ 50% { transform: rotate(-35deg) rotateY(40deg) scale(1.04); }
2366
+ }
2367
+
2368
+ @keyframes art-flower-animation-flower-g-front-leaf-ans {
2369
+ 0% { transform: rotate(10deg) scale(0); }
2370
+ }
2371
+
2372
+ @keyframes art-flower-animation-flower-g-front-leaf-left-ans {
2373
+ 0% { transform: rotateY(-180deg) rotate(5deg) scale(0); }
2374
+ }
2375
+
2376
+ @keyframes art-flower-animation-flower-g-front-leaf-left-ans-2 {
2377
+ 0% { transform: rotateY(-180deg) scale(0); }
2378
+ }
2379
+
2380
+ @keyframes art-flower-animation-flower-g-fr-ans {
2381
+ 0%, 100% { transform: rotate(2deg); }
2382
+ 50% { transform: rotate(4deg); }
2383
+ }
2384
+
2385
+ @keyframes art-flower-animation-flower-g-fr-leaf-ans-1 {
2386
+ 0% { transform-origin: left; transform: rotate(45deg) scale(0); }
2387
+ }
2388
+
2389
+ @keyframes art-flower-animation-flower-g-fr-leaf-ans-5 {
2390
+ 0% { transform-origin: left; transform: rotate(55deg) scale(0); }
2391
+ }
2392
+
2393
+ @keyframes art-flower-animation-flower-g-fr-leaf-ans-6 {
2394
+ 0% { transform-origin: right; transform: rotate(25deg) rotateY(-180deg) scale(0); }
2395
+ }
2396
+
2397
+ @keyframes art-flower-animation-flower-g-fr-leaf-ans-7 {
2398
+ 0% { transform-origin: left; transform: rotate(45deg) scale(0); }
2399
+ }
2400
+
2401
+ @keyframes art-flower-animation-flower-g-fr-leaf-ans-8 {
2402
+ 0% { transform-origin: right; transform: rotate(15deg) rotateY(-180deg) scale(0); }
2403
+ }
2404
+
2405
+ @keyframes art-flower-animation-growing-grass-1 {
2406
+ 0% { transform-origin: bottom left; transform: rotate(-20deg) scale(0); }
2407
+ }
2408
+ @keyframes art-flower-animation-growing-grass-2 {
2409
+ 0% { transform-origin: bottom right; transform: rotate(10deg) scale(0); }
2410
+ }
2411
+ @keyframes art-flower-animation-growing-grass-3 {
2412
+ 0% { transform-origin: bottom left; transform: rotate(-18deg) rotateX(-20deg) scale(0); }
2413
+ }
2414
+ @keyframes art-flower-animation-growing-grass-4 {
2415
+ 0% { transform-origin: bottom right; transform: rotate(2deg) scale(0); }
2416
+ }
2417
+ @keyframes art-flower-animation-growing-grass-5 {
2418
+ 0% { transform-origin: bottom left; transform: rotate(-24deg) rotateX(-20deg) scale(0); }
2419
+ }
2420
+ @keyframes art-flower-animation-growing-grass-6 {
2421
+ 0% { transform-origin: bottom right; transform: rotate(10deg) scale(0); }
2422
+ }
2423
+ @keyframes art-flower-animation-growing-grass-7 {
2424
+ 0% { transform-origin: bottom left; transform: rotate(-10deg) scale(0); }
2425
+ }
2426
+ @keyframes art-flower-animation-growing-grass-8 {
2427
+ 0% { transform-origin: bottom right; transform: rotate(10deg) scale(0); }
2428
+ }
2429
+
2430
+ /* Bubble float-up (replaces original JS animation) */
2431
+ @keyframes art-flower-animation-bubble {
2432
+ 0% { transform: translateY(0) scale(0.3); opacity: 0; }
2433
+ 10% { opacity: 1; }
2434
+ 80% { opacity: 0.6; }
2435
+ 100% { transform: translateY(-70em) scale(1); opacity: 0; }
2436
+ }
2437
+
2438
+ /* ── Root container ── */
2439
+
2440
+ .art-flower-animation {
2441
+ --art-flower-animation-size: 600px;
2442
+ --art-flower-animation-bg: #010113;
2443
+
2444
+ position: relative;
2445
+ font-size: calc(var(--art-flower-animation-size) / 100);
2446
+ width: var(--art-flower-animation-size);
2447
+ height: calc(var(--art-flower-animation-size) * 1.1);
2448
+ overflow: hidden;
2449
+ background-color: var(--art-flower-animation-bg);
2450
+ perspective: 1000px;
2451
+ display: flex;
2452
+ align-items: flex-end;
2453
+ justify-content: center;
2454
+ }
2455
+
2456
+ .art-flower-animation-sm { --art-flower-animation-size: 300px; }
2457
+ .art-flower-animation-lg { --art-flower-animation-size: 900px; }
2458
+
2459
+ /* ── Night sky background ── */
2460
+
2461
+ .art-flower-animation .night {
2462
+ position: absolute;
2463
+ left: 50%;
2464
+ top: 0;
2465
+ transform: translateX(-50%);
2466
+ width: 100%;
2467
+ height: 100%;
2468
+ filter: blur(0.1em);
2469
+ background-image:
2470
+ radial-gradient(ellipse at top, transparent 0%, var(--art-flower-animation-bg)),
2471
+ radial-gradient(ellipse at bottom, var(--art-flower-animation-bg), rgba(145, 233, 255, 0.2)),
2472
+ repeating-linear-gradient(220deg, rgb(0, 0, 0) 0px, rgb(0, 0, 0) 19px, transparent 19px, transparent 22px),
2473
+ repeating-linear-gradient(189deg, rgb(0, 0, 0) 0px, rgb(0, 0, 0) 19px, transparent 19px, transparent 22px),
2474
+ repeating-linear-gradient(148deg, rgb(0, 0, 0) 0px, rgb(0, 0, 0) 19px, transparent 19px, transparent 22px),
2475
+ linear-gradient(90deg, rgb(255, 94, 0), rgb(240, 240, 240));
2476
+ }
2477
+
2478
+ /* ── Flowers container ── */
2479
+
2480
+ .art-flower-animation .flowers {
2481
+ position: relative;
2482
+ transform: scale(0.9);
2483
+ }
2484
+
2485
+ /* ── Individual flowers ── */
2486
+
2487
+ .art-flower-animation .flower {
2488
+ position: absolute;
2489
+ bottom: 10em;
2490
+ transform-origin: bottom center;
2491
+ z-index: 10;
2492
+ --fl-speed: 0.8s;
2493
+ }
2494
+
2495
+ .art-flower-animation .flower--1 {
2496
+ animation: art-flower-animation-moving-flower-1 4s linear infinite;
2497
+ }
2498
+ .art-flower-animation .flower--1 .flower__line {
2499
+ height: 70em;
2500
+ animation-delay: 0.3s;
2501
+ }
2502
+ .art-flower-animation .flower--1 .flower__line__leaf--1 {
2503
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 1.6s backwards;
2504
+ }
2505
+ .art-flower-animation .flower--1 .flower__line__leaf--2 {
2506
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 1.4s backwards;
2507
+ }
2508
+ .art-flower-animation .flower--1 .flower__line__leaf--3 {
2509
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 1.2s backwards;
2510
+ }
2511
+ .art-flower-animation .flower--1 .flower__line__leaf--4 {
2512
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 1s backwards;
2513
+ }
2514
+ .art-flower-animation .flower--1 .flower__line__leaf--5 {
2515
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 1.8s backwards;
2516
+ }
2517
+ .art-flower-animation .flower--1 .flower__line__leaf--6 {
2518
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 2s backwards;
2519
+ }
2520
+
2521
+ .art-flower-animation .flower--2 {
2522
+ left: 50%;
2523
+ transform: rotate(20deg);
2524
+ animation: art-flower-animation-moving-flower-2 4s linear infinite;
2525
+ }
2526
+ .art-flower-animation .flower--2 .flower__line {
2527
+ height: 60em;
2528
+ animation-delay: 0.6s;
2529
+ }
2530
+ .art-flower-animation .flower--2 .flower__line__leaf--1 {
2531
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 1.9s backwards;
2532
+ }
2533
+ .art-flower-animation .flower--2 .flower__line__leaf--2 {
2534
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 1.7s backwards;
2535
+ }
2536
+ .art-flower-animation .flower--2 .flower__line__leaf--3 {
2537
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 1.5s backwards;
2538
+ }
2539
+ .art-flower-animation .flower--2 .flower__line__leaf--4 {
2540
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 1.3s backwards;
2541
+ }
2542
+
2543
+ .art-flower-animation .flower--3 {
2544
+ left: 50%;
2545
+ transform: rotate(-15deg);
2546
+ animation: art-flower-animation-moving-flower-3 4s linear infinite;
2547
+ }
2548
+ .art-flower-animation .flower--3 .flower__line {
2549
+ animation-delay: 0.9s;
2550
+ }
2551
+ .art-flower-animation .flower--3 .flower__line__leaf--1 {
2552
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 2.5s backwards;
2553
+ }
2554
+ .art-flower-animation .flower--3 .flower__line__leaf--2 {
2555
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 2.3s backwards;
2556
+ }
2557
+ .art-flower-animation .flower--3 .flower__line__leaf--3 {
2558
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 2.1s backwards;
2559
+ }
2560
+ .art-flower-animation .flower--3 .flower__line__leaf--4 {
2561
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 1.9s backwards;
2562
+ }
2563
+
2564
+ .art-flower-animation .flower--4 {
2565
+ left: -30%;
2566
+ transform: rotate(-15deg) scaleX(-1);
2567
+ animation: art-flower-animation-moving-flower-3 4s linear infinite;
2568
+ }
2569
+ .art-flower-animation .flower--4 .flower__line {
2570
+ animation-delay: 1.2s;
2571
+ }
2572
+ .art-flower-animation .flower--4 .flower__line__leaf--1 {
2573
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 2.8s backwards;
2574
+ }
2575
+ .art-flower-animation .flower--4 .flower__line__leaf--2 {
2576
+ animation: art-flower-animation-blooming-leaf-right var(--fl-speed) 2.6s backwards;
2577
+ }
2578
+ .art-flower-animation .flower--4 .flower__line__leaf--3 {
2579
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 2.4s backwards;
2580
+ }
2581
+ .art-flower-animation .flower--4 .flower__line__leaf--4 {
2582
+ animation: art-flower-animation-blooming-leaf-left var(--fl-speed) 2.2s backwards;
2583
+ }
2584
+
2585
+ /* ── Petals ── */
2586
+
2587
+ .art-flower-animation .flower__leafs {
2588
+ position: relative;
2589
+ animation: art-flower-animation-blooming-flower 2s backwards;
2590
+ }
2591
+ .art-flower-animation .flower__leafs--1 { animation-delay: 1.1s; }
2592
+ .art-flower-animation .flower__leafs--2 { animation-delay: 1.4s; }
2593
+ .art-flower-animation .flower__leafs--3 { animation-delay: 1.7s; }
2594
+
2595
+ .art-flower-animation .flower__leafs::after {
2596
+ content: "";
2597
+ position: absolute;
2598
+ left: 0;
2599
+ top: 0;
2600
+ transform: translate(-50%, -100%);
2601
+ width: 8em;
2602
+ height: 8em;
2603
+ background-color: #e7b201;
2604
+ filter: blur(10em);
2605
+ }
2606
+
2607
+ .art-flower-animation .flower__leaf {
2608
+ position: absolute;
2609
+ bottom: 0;
2610
+ left: 50%;
2611
+ width: 8em;
2612
+ height: 11em;
2613
+ border-radius: 51% 49% 47% 53% / 44% 45% 55% 69%;
2614
+ background-color: #e6f331;
2615
+ background-image: linear-gradient(to top, #e6f331, #e6f331);
2616
+ transform-origin: bottom center;
2617
+ opacity: 0.9;
2618
+ box-shadow: inset 0 0 2em rgba(255, 255, 255, 0.5);
2619
+ }
2620
+ .art-flower-animation .flower__leaf--1 { transform: translate(-10%, 1%) rotateY(40deg) rotateX(-50deg); }
2621
+ .art-flower-animation .flower__leaf--2 { transform: translate(-50%, -4%) rotateX(40deg); }
2622
+ .art-flower-animation .flower__leaf--3 { transform: translate(-90%, 0%) rotateY(45deg) rotateX(50deg); }
2623
+ .art-flower-animation .flower__leaf--4 {
2624
+ width: 8em;
2625
+ height: 8em;
2626
+ transform-origin: bottom left;
2627
+ border-radius: 4em 10em 4em 4em;
2628
+ transform: translate(0%, 18%) rotateX(70deg) rotate(-43deg);
2629
+ background-image: linear-gradient(to top, #e6f331, #e6f331);
2630
+ z-index: 1;
2631
+ opacity: 0.8;
2632
+ }
2633
+
2634
+ /* ── Flower center ── */
2635
+
2636
+ .art-flower-animation .flower__white-circle {
2637
+ position: absolute;
2638
+ left: -3.5em;
2639
+ top: -3em;
2640
+ width: 9em;
2641
+ height: 4em;
2642
+ border-radius: 50%;
2643
+ background-color: #fff;
2644
+ }
2645
+ .art-flower-animation .flower__white-circle::after {
2646
+ content: "";
2647
+ position: absolute;
2648
+ left: 50%;
2649
+ top: 45%;
2650
+ transform: translate(-50%, -50%);
2651
+ width: 60%;
2652
+ height: 60%;
2653
+ border-radius: inherit;
2654
+ background-image:
2655
+ repeating-linear-gradient(135deg, rgba(0,0,0,0.03) 0px, rgba(0,0,0,0.03) 1px, transparent 1px, transparent 12px),
2656
+ repeating-linear-gradient(45deg, rgba(0,0,0,0.03) 0px, rgba(0,0,0,0.03) 1px, transparent 1px, transparent 12px),
2657
+ repeating-linear-gradient(67.5deg, rgba(0,0,0,0.03) 0px, rgba(0,0,0,0.03) 1px, transparent 1px, transparent 12px),
2658
+ repeating-linear-gradient(112.5deg, rgba(0,0,0,0.03) 0px, rgba(0,0,0,0.03) 1px, transparent 1px, transparent 12px),
2659
+ repeating-linear-gradient(157.5deg, rgba(0,0,0,0.03) 0px, rgba(0,0,0,0.03) 1px, transparent 1px, transparent 12px),
2660
+ repeating-linear-gradient(22.5deg, rgba(0,0,0,0.03) 0px, rgba(0,0,0,0.03) 1px, transparent 1px, transparent 12px),
2661
+ linear-gradient(90deg, rgb(255, 235, 18), rgb(255, 206, 0));
2662
+ }
2663
+
2664
+ /* ── Stem ── */
2665
+
2666
+ .art-flower-animation .flower__line {
2667
+ height: 55em;
2668
+ width: 1.5em;
2669
+ background-image:
2670
+ linear-gradient(to left, rgba(0,0,0,0.2), transparent, rgba(255,255,255,0.2)),
2671
+ linear-gradient(to top, transparent 10%, #056d24, #028137);
2672
+ box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.5);
2673
+ animation: art-flower-animation-grow-flower-tree 4s backwards;
2674
+ }
2675
+
2676
+ .art-flower-animation .flower__line__leaf {
2677
+ --w: 7em;
2678
+ --h: calc(var(--w) + 2em);
2679
+ position: absolute;
2680
+ top: 20%;
2681
+ left: 90%;
2682
+ width: var(--w);
2683
+ height: var(--h);
2684
+ border-top-right-radius: var(--h);
2685
+ border-bottom-left-radius: var(--h);
2686
+ background-image: linear-gradient(to top, rgba(12, 94, 32, 0.4), #028137);
2687
+ }
2688
+ .art-flower-animation .flower__line__leaf--1 { transform: rotate(70deg) rotateY(30deg); }
2689
+ .art-flower-animation .flower__line__leaf--2 { top: 45%; transform: rotate(70deg) rotateY(30deg); }
2690
+ .art-flower-animation .flower__line__leaf--3,
2691
+ .art-flower-animation .flower__line__leaf--4,
2692
+ .art-flower-animation .flower__line__leaf--6 {
2693
+ border-top-right-radius: 0;
2694
+ border-bottom-left-radius: 0;
2695
+ border-top-left-radius: var(--h);
2696
+ border-bottom-right-radius: var(--h);
2697
+ left: -460%;
2698
+ top: 12%;
2699
+ transform: rotate(-70deg) rotateY(30deg);
2700
+ }
2701
+ .art-flower-animation .flower__line__leaf--4 { top: 40%; }
2702
+ .art-flower-animation .flower__line__leaf--5 {
2703
+ top: 0;
2704
+ transform-origin: left;
2705
+ transform: rotate(70deg) rotateY(30deg) scale(0.6);
2706
+ }
2707
+ .art-flower-animation .flower__line__leaf--6 {
2708
+ top: -2%;
2709
+ left: -450%;
2710
+ transform-origin: right;
2711
+ transform: rotate(-70deg) rotateY(30deg) scale(0.6);
2712
+ }
2713
+
2714
+ /* ── Light particles ── */
2715
+
2716
+ .art-flower-animation .flower__light {
2717
+ position: absolute;
2718
+ bottom: 0;
2719
+ width: 1em;
2720
+ height: 1em;
2721
+ background-color: rgb(255, 251, 0);
2722
+ border-radius: 50%;
2723
+ filter: blur(0.2em);
2724
+ animation: art-flower-animation-light-ans 4s linear infinite backwards;
2725
+ }
2726
+ .art-flower-animation .flower__light:nth-child(odd) { background-color: #028137; }
2727
+ .art-flower-animation .flower__light--1 { left: -2em; animation-delay: 1s; }
2728
+ .art-flower-animation .flower__light--2 { left: 3em; animation-delay: 0.5s; }
2729
+ .art-flower-animation .flower__light--3 { left: -6em; animation-delay: 0.3s; }
2730
+ .art-flower-animation .flower__light--4 { left: 6em; animation-delay: 0.9s; }
2731
+ .art-flower-animation .flower__light--5 { left: -1em; animation-delay: 1.5s; }
2732
+ .art-flower-animation .flower__light--6 { left: -4em; animation-delay: 3s; }
2733
+ .art-flower-animation .flower__light--7 { left: 3em; animation-delay: 2s; }
2734
+ .art-flower-animation .flower__light--8 { left: -6em; animation-delay: 3.5s; }
2735
+
2736
+ /* ── Grass ── */
2737
+
2738
+ .art-flower-animation .flower__grass {
2739
+ --c: #028137;
2740
+ --line-w: 1.5em;
2741
+ position: absolute;
2742
+ bottom: 12em;
2743
+ left: -7em;
2744
+ display: flex;
2745
+ flex-direction: column;
2746
+ align-items: flex-end;
2747
+ z-index: 20;
2748
+ transform-origin: bottom center;
2749
+ transform: rotate(-48deg) rotateY(40deg);
2750
+ }
2751
+ .art-flower-animation .flower__grass--1 {
2752
+ animation: art-flower-animation-moving-grass 2s linear infinite;
2753
+ }
2754
+ .art-flower-animation .flower__grass--2 {
2755
+ left: 2em;
2756
+ bottom: 10em;
2757
+ transform: scale(0.5) rotate(75deg) rotateX(10deg) rotateY(-200deg);
2758
+ opacity: 0.8;
2759
+ z-index: 0;
2760
+ animation: art-flower-animation-moving-grass--2 1.5s linear infinite;
2761
+ }
2762
+ .art-flower-animation .flower__grass--top {
2763
+ width: 7em;
2764
+ height: 10em;
2765
+ border-top-right-radius: 100%;
2766
+ border-right: var(--line-w) solid var(--c);
2767
+ transform-origin: bottom center;
2768
+ transform: rotate(-2deg);
2769
+ }
2770
+ .art-flower-animation .flower__grass--bottom {
2771
+ margin-top: -2px;
2772
+ width: var(--line-w);
2773
+ height: 25em;
2774
+ background-image: linear-gradient(to top, transparent, var(--c));
2775
+ }
2776
+
2777
+ .art-flower-animation .flower__grass__leaf {
2778
+ --size: 10em;
2779
+ position: absolute;
2780
+ width: calc(var(--size) * 2.1);
2781
+ height: var(--size);
2782
+ border-top-left-radius: var(--size);
2783
+ border-top-right-radius: var(--size);
2784
+ background-image: linear-gradient(to top, transparent, transparent 30%, var(--c));
2785
+ z-index: 100;
2786
+ }
2787
+ .art-flower-animation .flower__grass__leaf--1 {
2788
+ top: -6%; left: 30%; --size: 6em;
2789
+ transform: rotate(-20deg);
2790
+ animation: art-flower-animation-growing-grass-1 2s 2.6s backwards;
2791
+ }
2792
+ .art-flower-animation .flower__grass__leaf--2 {
2793
+ top: -5%; left: -110%; --size: 6em;
2794
+ transform: rotate(10deg);
2795
+ animation: art-flower-animation-growing-grass-2 2s 2.4s linear backwards;
2796
+ }
2797
+ .art-flower-animation .flower__grass__leaf--3 {
2798
+ top: 5%; left: 60%; --size: 8em;
2799
+ transform: rotate(-18deg) rotateX(-20deg);
2800
+ animation: art-flower-animation-growing-grass-3 2s 2.2s linear backwards;
2801
+ }
2802
+ .art-flower-animation .flower__grass__leaf--4 {
2803
+ top: 6%; left: -135%; --size: 8em;
2804
+ transform: rotate(2deg);
2805
+ animation: art-flower-animation-growing-grass-4 2s 2s linear backwards;
2806
+ }
2807
+ .art-flower-animation .flower__grass__leaf--5 {
2808
+ top: 20%; left: 60%; --size: 10em;
2809
+ transform: rotate(-24deg) rotateX(-20deg);
2810
+ animation: art-flower-animation-growing-grass-5 2s 1.8s linear backwards;
2811
+ }
2812
+ .art-flower-animation .flower__grass__leaf--6 {
2813
+ top: 22%; left: -180%; --size: 10em;
2814
+ transform: rotate(10deg);
2815
+ animation: art-flower-animation-growing-grass-6 2s 1.6s linear backwards;
2816
+ }
2817
+ .art-flower-animation .flower__grass__leaf--7 {
2818
+ top: 39%; left: 70%; --size: 10em;
2819
+ transform: rotate(-10deg);
2820
+ animation: art-flower-animation-growing-grass-7 2s 1.4s linear backwards;
2821
+ }
2822
+ .art-flower-animation .flower__grass__leaf--8 {
2823
+ top: 40%; left: -215%; --size: 11em;
2824
+ transform: rotate(10deg);
2825
+ animation: art-flower-animation-growing-grass-8 2s 1.2s linear backwards;
2826
+ }
2827
+ .art-flower-animation .flower__grass__overlay {
2828
+ position: absolute;
2829
+ top: -10%; right: 0%;
2830
+ width: 100%; height: 100%;
2831
+ background-color: rgba(0, 0, 0, 0.6);
2832
+ filter: blur(1.5em);
2833
+ z-index: 100;
2834
+ }
2835
+
2836
+ /* ── Long grass stem ── */
2837
+
2838
+ .art-flower-animation .flower__g-long {
2839
+ --w: 2em;
2840
+ --h: 6em;
2841
+ --c: #0d6632;
2842
+ position: absolute;
2843
+ bottom: 10em;
2844
+ left: -3em;
2845
+ transform-origin: bottom center;
2846
+ transform: rotate(-30deg) rotateY(-20deg);
2847
+ display: flex;
2848
+ flex-direction: column;
2849
+ align-items: flex-end;
2850
+ animation: art-flower-animation-flower-g-long-ans 3s linear infinite;
2851
+ }
2852
+ .art-flower-animation .flower__g-long__top {
2853
+ width: calc(var(--w) + 1em);
2854
+ height: var(--h);
2855
+ border-top-right-radius: 100%;
2856
+ border-right: 0.7em solid var(--c);
2857
+ transform: translate(-0.7em, 1em);
2858
+ }
2859
+ .art-flower-animation .flower__g-long__bottom {
2860
+ width: var(--w);
2861
+ height: 50em;
2862
+ transform-origin: bottom center;
2863
+ background-image: linear-gradient(to top, transparent 30%, var(--c));
2864
+ box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.5);
2865
+ clip-path: polygon(35% 0, 65% 1%, 100% 100%, 0% 100%);
2866
+ }
2867
+
2868
+ /* ── Right grass ── */
2869
+
2870
+ .art-flower-animation .flower__g-right {
2871
+ position: absolute;
2872
+ bottom: 6em;
2873
+ left: -2em;
2874
+ transform-origin: bottom left;
2875
+ transform: rotate(20deg);
2876
+ }
2877
+ .art-flower-animation .flower__g-right .leaf {
2878
+ width: 30em;
2879
+ height: 50em;
2880
+ border-top-left-radius: 100%;
2881
+ border-left: 2em solid #028137;
2882
+ background-image: linear-gradient(to bottom, transparent, var(--art-flower-animation-bg) 60%);
2883
+ -webkit-mask-image: linear-gradient(to top, transparent 30%, #028137 60%);
2884
+ mask-image: linear-gradient(to top, transparent 30%, #028137 60%);
2885
+ }
2886
+ .art-flower-animation .flower__g-right--1 {
2887
+ animation: art-flower-animation-flower-g-right-ans 2.5s linear infinite;
2888
+ }
2889
+ .art-flower-animation .flower__g-right--2 {
2890
+ left: 5em;
2891
+ transform: rotateY(-180deg);
2892
+ animation: art-flower-animation-flower-g-right-ans--2 3s linear infinite;
2893
+ }
2894
+ .art-flower-animation .flower__g-right--2 .leaf {
2895
+ height: 75em;
2896
+ filter: blur(0.3em);
2897
+ opacity: 0.8;
2898
+ }
2899
+
2900
+ /* ── Front grass ── */
2901
+
2902
+ .art-flower-animation .flower__g-front {
2903
+ position: absolute;
2904
+ bottom: 6em;
2905
+ left: 2.5em;
2906
+ z-index: 100;
2907
+ transform-origin: bottom center;
2908
+ transform: rotate(-28deg) rotateY(30deg) scale(1.04);
2909
+ animation: art-flower-animation-flower-g-front-ans 2s linear infinite;
2910
+ }
2911
+ .art-flower-animation .flower__g-front__line {
2912
+ width: 0.3em;
2913
+ height: 20em;
2914
+ background-image: linear-gradient(to top, transparent, #028137, transparent 100%);
2915
+ position: relative;
2916
+ }
2917
+ .art-flower-animation .flower__g-front__leaf-wrapper {
2918
+ position: absolute;
2919
+ top: 0;
2920
+ left: 0;
2921
+ transform-origin: bottom left;
2922
+ transform: rotate(10deg);
2923
+ }
2924
+ .art-flower-animation .flower__g-front__leaf-wrapper:nth-child(even) {
2925
+ left: 0;
2926
+ transform: rotateY(-180deg) rotate(5deg);
2927
+ animation: art-flower-animation-flower-g-front-leaf-left-ans 1s ease-in backwards;
2928
+ }
2929
+ .art-flower-animation .flower__g-front__leaf-wrapper:nth-child(odd) {
2930
+ animation: art-flower-animation-flower-g-front-leaf-ans 1s ease-in backwards;
2931
+ }
2932
+ .art-flower-animation .flower__g-front__leaf-wrapper--1 {
2933
+ top: -8em;
2934
+ transform: scale(0.7);
2935
+ animation: art-flower-animation-flower-g-front-leaf-ans 1s 5.5s ease-in backwards !important;
2936
+ }
2937
+ .art-flower-animation .flower__g-front__leaf-wrapper--2 {
2938
+ top: -8em;
2939
+ transform: rotateY(-180deg) scale(0.7) !important;
2940
+ animation: art-flower-animation-flower-g-front-leaf-left-ans-2 1s 5.2s ease-in backwards !important;
2941
+ }
2942
+ .art-flower-animation .flower__g-front__leaf-wrapper--3 {
2943
+ top: -3em;
2944
+ animation: art-flower-animation-flower-g-front-leaf-ans 1s 4.9s ease-in backwards !important;
2945
+ }
2946
+ .art-flower-animation .flower__g-front__leaf-wrapper--4 {
2947
+ top: -3em;
2948
+ transform: rotateY(-180deg) scale(0.9) !important;
2949
+ animation: art-flower-animation-flower-g-front-leaf-left-ans-2 1s 4.6s ease-in backwards !important;
2950
+ }
2951
+ .art-flower-animation .flower__g-front__leaf-wrapper--5,
2952
+ .art-flower-animation .flower__g-front__leaf-wrapper--6 { top: 2em; }
2953
+ .art-flower-animation .flower__g-front__leaf-wrapper--7,
2954
+ .art-flower-animation .flower__g-front__leaf-wrapper--8 { top: 6.5em; }
2955
+ .art-flower-animation .flower__g-front__leaf-wrapper--5 { animation-delay: 4.3s !important; }
2956
+ .art-flower-animation .flower__g-front__leaf-wrapper--6 { animation-delay: 4.1s !important; }
2957
+ .art-flower-animation .flower__g-front__leaf-wrapper--7 { animation-delay: 3.8s !important; }
2958
+ .art-flower-animation .flower__g-front__leaf-wrapper--8 { animation-delay: 3.5s !important; }
2959
+
2960
+ .art-flower-animation .flower__g-front__leaf {
2961
+ width: 10em;
2962
+ height: 10em;
2963
+ border-radius: 100% 0% 0% 100% / 100% 100% 0% 0%;
2964
+ box-shadow: inset 0 2px 1em hsla(150, 97%, 14%, 0.2);
2965
+ background-image:
2966
+ linear-gradient(to bottom left, transparent, var(--art-flower-animation-bg)),
2967
+ linear-gradient(to bottom right, #028137 50%, transparent 50%, transparent);
2968
+ -webkit-mask-image: linear-gradient(to bottom right, #028137 50%, transparent 50%, transparent);
2969
+ mask-image: linear-gradient(to bottom right, #028137 50%, transparent 50%, transparent);
2970
+ }
2971
+
2972
+ /* ── Front-right grass ── */
2973
+
2974
+ .art-flower-animation .flower__g-fr {
2975
+ position: absolute;
2976
+ bottom: -4em;
2977
+ left: 0;
2978
+ transform-origin: bottom left;
2979
+ z-index: 10;
2980
+ animation: art-flower-animation-flower-g-fr-ans 2s linear infinite;
2981
+ }
2982
+ .art-flower-animation .flower__g-fr .leaf {
2983
+ width: 30em;
2984
+ height: 50em;
2985
+ border-top-left-radius: 100%;
2986
+ border-left: 2em solid #028137;
2987
+ -webkit-mask-image: linear-gradient(to top, transparent 25%, #028137 50%);
2988
+ mask-image: linear-gradient(to top, transparent 25%, #028137 50%);
2989
+ position: relative;
2990
+ z-index: 1;
2991
+ }
2992
+ .art-flower-animation .flower__g-fr__leaf {
2993
+ position: absolute;
2994
+ top: 0;
2995
+ left: 0;
2996
+ width: 10em;
2997
+ height: 10em;
2998
+ border-radius: 100% 0% 0% 100% / 100% 100% 0% 0%;
2999
+ box-shadow: inset 0 2px 1em hsla(184deg, 97%, 58%, 0.2);
3000
+ background-image:
3001
+ linear-gradient(to bottom left, transparent, var(--art-flower-animation-bg) 98%),
3002
+ linear-gradient(to bottom right, #028137 45%, transparent 50%, transparent);
3003
+ -webkit-mask-image: linear-gradient(135deg, #028137 40%, transparent 50%, transparent);
3004
+ mask-image: linear-gradient(135deg, #028137 40%, transparent 50%, transparent);
3005
+ }
3006
+ .art-flower-animation .flower__g-fr__leaf--1 {
3007
+ left: 20em; transform: rotate(45deg);
3008
+ animation: art-flower-animation-flower-g-fr-leaf-ans-1 0.5s 5.2s linear backwards;
3009
+ }
3010
+ .art-flower-animation .flower__g-fr__leaf--2 {
3011
+ left: 12em; top: -7em;
3012
+ transform: rotate(25deg) rotateY(-180deg);
3013
+ animation: art-flower-animation-flower-g-fr-leaf-ans-6 0.5s 5s linear backwards;
3014
+ }
3015
+ .art-flower-animation .flower__g-fr__leaf--3 {
3016
+ left: 15em; top: 6em;
3017
+ transform: rotate(55deg);
3018
+ animation: art-flower-animation-flower-g-fr-leaf-ans-5 0.5s 4.8s linear backwards;
3019
+ }
3020
+ .art-flower-animation .flower__g-fr__leaf--4 {
3021
+ left: 6em; top: -2em;
3022
+ transform: rotate(25deg) rotateY(-180deg);
3023
+ animation: art-flower-animation-flower-g-fr-leaf-ans-6 0.5s 4.6s linear backwards;
3024
+ }
3025
+ .art-flower-animation .flower__g-fr__leaf--5 {
3026
+ left: 10em; top: 14em;
3027
+ transform: rotate(55deg);
3028
+ animation: art-flower-animation-flower-g-fr-leaf-ans-5 0.5s 4.4s linear backwards;
3029
+ }
3030
+ .art-flower-animation .flower__g-fr__leaf--6 {
3031
+ left: 0; top: 6em;
3032
+ transform: rotate(25deg) rotateY(-180deg);
3033
+ animation: art-flower-animation-flower-g-fr-leaf-ans-6 0.5s 4.2s linear backwards;
3034
+ }
3035
+ .art-flower-animation .flower__g-fr__leaf--7 {
3036
+ left: 5em; top: 22em;
3037
+ transform: rotate(45deg);
3038
+ animation: art-flower-animation-flower-g-fr-leaf-ans-7 0.5s 4s linear backwards;
3039
+ }
3040
+ .art-flower-animation .flower__g-fr__leaf--8 {
3041
+ left: -4em; top: 15em;
3042
+ transform: rotate(15deg) rotateY(-180deg);
3043
+ animation: art-flower-animation-flower-g-fr-leaf-ans-8 0.5s 3.8s linear backwards;
3044
+ }
3045
+
3046
+ /* ── Tall background grasses ── */
3047
+
3048
+ .art-flower-animation .long-g {
3049
+ position: absolute;
3050
+ bottom: 25em;
3051
+ left: -42em;
3052
+ transform-origin: bottom left;
3053
+ }
3054
+ .art-flower-animation .long-g .leaf {
3055
+ --w: 3em;
3056
+ --h: 40em;
3057
+ position: absolute;
3058
+ bottom: 0;
3059
+ left: 0;
3060
+ width: var(--w);
3061
+ background-image: linear-gradient(to top, transparent 10%, #056d24 60%, #028137);
3062
+ clip-path: polygon(50% 0%, 100% 100%, 0% 100%);
3063
+ transform-origin: bottom center;
3064
+ height: var(--h);
3065
+ }
3066
+ .art-flower-animation .long-g .leaf--0 {
3067
+ --h: 40em;
3068
+ transform: rotate(-5deg) rotateX(5deg);
3069
+ }
3070
+ .art-flower-animation .long-g .leaf--1 {
3071
+ --h: 45em;
3072
+ left: 2em;
3073
+ transform: rotate(3deg) rotateX(5deg);
3074
+ }
3075
+ .art-flower-animation .long-g .leaf--2 {
3076
+ --h: 38em;
3077
+ left: 1em;
3078
+ transform: rotate(-8deg) rotateX(5deg);
3079
+ }
3080
+ .art-flower-animation .long-g .leaf--3 {
3081
+ --h: 35em;
3082
+ left: 3em;
3083
+ transform: rotate(6deg) rotateX(5deg);
3084
+ }
3085
+ .art-flower-animation .long-g--1 {
3086
+ bottom: 0;
3087
+ transform: scale(0.8) rotate(-5deg);
3088
+ }
3089
+ .art-flower-animation .long-g--1 .leaf {
3090
+ -webkit-mask-image: linear-gradient(to top, transparent 40%, #028137 80%) !important;
3091
+ mask-image: linear-gradient(to top, transparent 40%, #028137 80%) !important;
3092
+ }
3093
+ .art-flower-animation .long-g--1 .leaf--1 {
3094
+ --w: 5em;
3095
+ --h: 60em;
3096
+ left: -2em;
3097
+ transform: rotate(3deg) rotateY(-180deg);
3098
+ }
3099
+ .art-flower-animation .long-g--2 {
3100
+ bottom: -3em;
3101
+ left: -35em;
3102
+ transform: rotate(3deg);
3103
+ }
3104
+ .art-flower-animation .long-g--3 {
3105
+ bottom: -3em;
3106
+ left: -25em;
3107
+ transform: rotate(0deg);
3108
+ }
3109
+ .art-flower-animation .long-g--4 {
3110
+ bottom: 0;
3111
+ left: -23em;
3112
+ transform: rotate(-3deg);
3113
+ }
3114
+ .art-flower-animation .long-g--5 {
3115
+ bottom: -3em;
3116
+ left: -17em;
3117
+ transform: scale(0.8) rotate(-5deg);
3118
+ }
3119
+ .art-flower-animation .long-g--6 {
3120
+ bottom: 0;
3121
+ left: -12em;
3122
+ transform: rotate(-4deg);
3123
+ }
3124
+ .art-flower-animation .long-g--7 {
3125
+ bottom: 0;
3126
+ left: -5em;
3127
+ transform: rotate(2deg);
3128
+ }
3129
+
3130
+ /* ── grow-ans utility ── */
3131
+
3132
+ .art-flower-animation .grow-ans {
3133
+ animation: art-flower-animation-grow-ans 2s var(--d, 0s) backwards;
3134
+ }
3135
+
3136
+ /* ── Growing grass wrapper ── */
3137
+
3138
+ .art-flower-animation .growing-grass {
3139
+ position: absolute;
3140
+ bottom: 0;
3141
+ }
3142
+
3143
+ /* ── Bubbles (floating hearts) ── */
3144
+
3145
+ .art-flower-animation .bubbles {
3146
+ position: absolute;
3147
+ bottom: 10em;
3148
+ left: 50%;
3149
+ transform: translateX(-50%);
3150
+ width: 40em;
3151
+ height: 0;
3152
+ z-index: 20;
3153
+ }
3154
+ .art-flower-animation .bubble {
3155
+ position: absolute;
3156
+ bottom: 0;
3157
+ animation: art-flower-animation-bubble 8s ease-in infinite;
3158
+ opacity: 0;
3159
+ }
3160
+ .art-flower-animation .bubble .heart {
3161
+ width: 2em;
3162
+ height: 2em;
3163
+ fill: rgba(255, 100, 150, 0.8);
3164
+ filter: drop-shadow(0 0 0.5em rgba(255, 100, 150, 0.5));
3165
+ }
3166
+ .art-flower-animation .bubble:nth-child(1) { left: 5%; animation-delay: 0s; animation-duration: 7s; }
3167
+ .art-flower-animation .bubble:nth-child(2) { left: 10%; animation-delay: 0.5s; animation-duration: 8s; }
3168
+ .art-flower-animation .bubble:nth-child(3) { left: 20%; animation-delay: 1s; animation-duration: 6.5s; }
3169
+ .art-flower-animation .bubble:nth-child(4) { left: 30%; animation-delay: 1.5s; animation-duration: 9s; }
3170
+ .art-flower-animation .bubble:nth-child(5) { left: 40%; animation-delay: 2s; animation-duration: 7.5s; }
3171
+ .art-flower-animation .bubble:nth-child(6) { left: 50%; animation-delay: 2.5s; animation-duration: 8.5s; }
3172
+ .art-flower-animation .bubble:nth-child(7) { left: 60%; animation-delay: 3s; animation-duration: 7s; }
3173
+ .art-flower-animation .bubble:nth-child(8) { left: 70%; animation-delay: 3.5s; animation-duration: 9.5s; }
3174
+ .art-flower-animation .bubble:nth-child(9) { left: 75%; animation-delay: 4s; animation-duration: 6s; }
3175
+ .art-flower-animation .bubble:nth-child(10) { left: 80%; animation-delay: 4.5s; animation-duration: 8s; }
3176
+ .art-flower-animation .bubble:nth-child(11) { left: 15%; animation-delay: 5s; animation-duration: 7.5s; }
3177
+ .art-flower-animation .bubble:nth-child(12) { left: 25%; animation-delay: 5.5s; animation-duration: 9s; }
3178
+ .art-flower-animation .bubble:nth-child(13) { left: 35%; animation-delay: 6s; animation-duration: 8s; }
3179
+ .art-flower-animation .bubble:nth-child(14) { left: 45%; animation-delay: 6.5s; animation-duration: 7s; }
3180
+ .art-flower-animation .bubble:nth-child(15) { left: 55%; animation-delay: 0.3s; animation-duration: 9.5s; }
3181
+ .art-flower-animation .bubble:nth-child(16) { left: 65%; animation-delay: 1.3s; animation-duration: 6.5s; }
3182
+ .art-flower-animation .bubble:nth-child(17) { left: 72%; animation-delay: 2.2s; animation-duration: 8.5s; }
3183
+ .art-flower-animation .bubble:nth-child(18) { left: 8%; animation-delay: 3.3s; animation-duration: 7.5s; }
3184
+ .art-flower-animation .bubble:nth-child(19) { left: 88%; animation-delay: 4.2s; animation-duration: 9s; }
3185
+ .art-flower-animation .bubble:nth-child(20) { left: 93%; animation-delay: 5.8s; animation-duration: 6s; }
3186
+ }
3187
+
1281
3188
 
1282
3189