@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.
@@ -660,7 +660,7 @@
660
660
  left: calc(var(--art-plasma-ball-size) * 151 / 350);
661
661
  }
662
662
  .glassball {
663
- position: relative;
663
+ position: absolute;
664
664
  overflow: hidden;
665
665
  margin: 0 auto;
666
666
  width: 100%;
@@ -670,7 +670,7 @@
670
670
  top: 0%;
671
671
  box-shadow: 0 20px 30px rgba(0, 0, 0, 0.2),
672
672
  inset 0px 10px 30px 5px rgba(255, 255, 255, 1);
673
- position: absolute;
673
+ z-index: 1;
674
674
  }
675
675
  .glassball:after {
676
676
  background: radial-gradient(
@@ -1270,3 +1270,1910 @@
1270
1270
  }
1271
1271
  }
1272
1272
 
1273
+ @layer css-art {
1274
+ @keyframes art-cat-stargazer-blink {
1275
+ 0%, 25%, 28%, 100% { height: 0 }
1276
+ 26.5% { height: 100% }
1277
+ }
1278
+
1279
+ .art-cat-stargazer {
1280
+ --art-cat-stargazer-size: 500px;
1281
+
1282
+ position: relative;
1283
+ font-size: calc(var(--art-cat-stargazer-size) / 90);
1284
+ width: var(--art-cat-stargazer-size);
1285
+ aspect-ratio: 1;
1286
+ overflow: hidden;
1287
+ background:
1288
+ radial-gradient(circle at 20% 20%, #ffc8 0.20em, #0000 0),
1289
+ radial-gradient(circle at 70% 50%, #ffc8 0.25em, #0000 0),
1290
+ radial-gradient(circle at 10% 80%, #ffc8 0.20em, #0000 0),
1291
+ radial-gradient(circle at 80% 30%, #ffc8 0.30em, #0000 0),
1292
+ radial-gradient(circle at 80% 80%, #ffc8 0.23em, #0000 0),
1293
+ radial-gradient(circle at 50% 10%, #ff8b 0.3em, #0000 0),
1294
+ radial-gradient(circle at 40% 60%, #ffc8 0.20em, #0000 0),
1295
+ radial-gradient(circle at 30% 30%, #ffc8 0.20em, #0000 0) 0 0 / 70% 70%,
1296
+ radial-gradient(circle at 30% 30%, #ffc8 0.20em, #0000 0) 40% 30% / 50% 70%,
1297
+ linear-gradient(#0002, #0000),
1298
+ radial-gradient(at 50% 80%, #fcc2, #fff0),
1299
+ #023;
1300
+
1301
+ *, *::before, *::after {
1302
+ position: absolute;
1303
+ box-sizing: border-box;
1304
+ }
1305
+
1306
+ .moon {
1307
+ width: 120%;
1308
+ height: 40%;
1309
+ left: 50%;
1310
+ bottom: 0;
1311
+ translate: -50% 60%;
1312
+ border-radius: 50% / 100% 100% 0 0;
1313
+ box-shadow:
1314
+ 0 0 3em #ffc,
1315
+ 0 0 9em #ffc8;
1316
+ background:
1317
+ radial-gradient(at 38% 20%, #0001 2%, #0000 0),
1318
+ radial-gradient(13% 8% at 50% 0, #0001 99%, #0000),
1319
+ #ffc;
1320
+
1321
+ &::before {
1322
+ content: "";
1323
+ width: 18%;
1324
+ height: 15%;
1325
+ background: #0001;
1326
+ border-radius: 50%;
1327
+ box-shadow: inset 0 1em #0002;
1328
+ rotate: -15deg;
1329
+ top: 15%;
1330
+ left: 20%;
1331
+ scale: 0.8;
1332
+ }
1333
+
1334
+ &::after {
1335
+ content: "";
1336
+ width: 4%;
1337
+ height: 5%;
1338
+ background: #0001;
1339
+ border-radius: 50%;
1340
+ box-shadow: -7em 3em 0 2em #0001;
1341
+ rotate: 30deg;
1342
+ top: 25%;
1343
+ left: 80%;
1344
+ scale: 0.8;
1345
+ }
1346
+ }
1347
+
1348
+ .cat {
1349
+ --fur: #111;
1350
+ --fur-dark: #000;
1351
+ --skin: pink;
1352
+ --suit: #fff;
1353
+ --suit-dark: #ddd;
1354
+ font-size: 0.4em;
1355
+ width: 80em;
1356
+ aspect-ratio: 1;
1357
+ bottom: 15%;
1358
+ left: 50%;
1359
+ translate: -50%;
1360
+
1361
+ .bubble {
1362
+ width: 119%;
1363
+ height: 103%;
1364
+ border-radius: 50%;
1365
+ bottom: 25%;
1366
+ left: 49%;
1367
+ translate: -50%;
1368
+ background:
1369
+ radial-gradient(circle at 25% 25%, #fff3, #fff0 25%),
1370
+ radial-gradient(circle at 15% 45%, #fff1, #fff0 15%),
1371
+ radial-gradient(circle at 75% 35%, #fff1, #fff0 50%),
1372
+ #fff1;
1373
+ box-shadow:
1374
+ inset 0 0 1em 1em #acf,
1375
+ inset 0 0 5em #fff;
1376
+ }
1377
+
1378
+ .backpack {
1379
+ width: 40%;
1380
+ left: 50%;
1381
+ height: 30%;
1382
+ background: #bcd;
1383
+ bottom: 0;
1384
+ translate: -50%;
1385
+ border-radius: 3em;
1386
+ }
1387
+
1388
+ .tail {
1389
+ width: 50%;
1390
+ height: 50%;
1391
+ border-radius: 50%;
1392
+ border: 7em solid #0000;
1393
+ border-top-color: var(--suit-dark);
1394
+ border-left-color: var(--suit-dark);
1395
+ clip-path: polygon(100% 0, 100% 100%, 0 30%, 0 0);
1396
+ top: 75%;
1397
+ left: 52%;
1398
+
1399
+ &::before {
1400
+ content: "";
1401
+ width: 7em;
1402
+ aspect-ratio: 1;
1403
+ background: var(--suit-dark);
1404
+ border-radius: 50%;
1405
+ left: 81%;
1406
+ top: -9%;
1407
+ }
1408
+ }
1409
+
1410
+ .body {
1411
+ left: 50%;
1412
+ translate: -50%;
1413
+ bottom: 0;
1414
+ width: 35%;
1415
+ height: 40%;
1416
+ background:
1417
+ radial-gradient(circle at 17% 55%, #36c 2em, #0000 0),
1418
+ radial-gradient(100% 70% at 50% 0, var(--fur-dark) 50%, #0000 0),
1419
+ radial-gradient(150% 70% at 49% 0, var(--fur) 50%, #d99 0 59%, #0000 calc(59% + 1px)),
1420
+ var(--suit);
1421
+ border-radius: 100% / 200% 200% 20% 20%;
1422
+
1423
+ .leg {
1424
+ width: 165%;
1425
+ height: 38%;
1426
+ bottom: 0;
1427
+ left: 50%;
1428
+ translate: -50%;
1429
+ border-radius: 8em 8em 100% 100% / 10em 10em 16em 16em;
1430
+ scale: 1 -1;
1431
+ background:
1432
+ radial-gradient(20% 200% at 2% 10%, var(--suit-dark) 20%, #0000 0),
1433
+ radial-gradient(20% 200% at 98% 10%, var(--suit-dark) 20%, #0000 0),
1434
+ var(--suit);
1435
+ }
1436
+
1437
+ .paw {
1438
+ width: 35%;
1439
+ height: 49%;
1440
+ border: 0.75em solid #777;
1441
+ border-top: 0;
1442
+ border-radius: 0 0 5em 5em;
1443
+ top: 51%;
1444
+ rotate: -10deg;
1445
+ left: 10%;
1446
+ clip-path: polygon(0 20%, 100% 30%, 100% 100%, 0 100%);
1447
+
1448
+ & + & {
1449
+ right: 7%;
1450
+ height: 50%;
1451
+ left: auto;
1452
+ rotate: 13deg;
1453
+ scale: -1 1;
1454
+ clip-path: polygon(0 25%, 100% 15%, 100% 100%, 0 100%);
1455
+ }
1456
+ }
1457
+ }
1458
+
1459
+ .ear {
1460
+ width: 40%;
1461
+ aspect-ratio: 1;
1462
+ border: 4em solid var(--fur);
1463
+ border-radius: 5% 90% 10% 80%;
1464
+ background: var(--skin);
1465
+ top: 5%;
1466
+ left: 10%;
1467
+
1468
+ & + & {
1469
+ scale: -1 1;
1470
+ left: auto;
1471
+ right: 10%;
1472
+ }
1473
+ }
1474
+
1475
+ .head {
1476
+ width: 80%;
1477
+ aspect-ratio: 1.1;
1478
+ background:
1479
+ linear-gradient(#0003, #0000 50%),
1480
+ var(--fur);
1481
+ left: 50%;
1482
+ translate: -50%;
1483
+ border-radius: 100% / 125% 125% 80% 75%;
1484
+
1485
+ .whisker {
1486
+ width: 30%;
1487
+ height: 30%;
1488
+ border-radius: 50%;
1489
+ border: 2em solid #0000;
1490
+ border-top-color: var(--fur);
1491
+ border-left-color: var(--fur);
1492
+ clip-path: polygon(100% 0, 100% 100%, 0 30%, 0 0);
1493
+
1494
+ &:nth-child(1) {
1495
+ top: 45%;
1496
+ translate: -65%;
1497
+ }
1498
+ &:nth-child(2) {
1499
+ top: 55%;
1500
+ translate: -40%;
1501
+ rotate: -20deg;
1502
+ }
1503
+ &:nth-child(3) {
1504
+ right: 0%;
1505
+ top: 45%;
1506
+ translate: 65%;
1507
+ rotate: 10deg;
1508
+ }
1509
+ &:nth-child(4) {
1510
+ right: -2%;
1511
+ top: 55%;
1512
+ translate: 40%;
1513
+ rotate: 24deg;
1514
+ }
1515
+ }
1516
+
1517
+ .nose {
1518
+ width: 10%;
1519
+ height: 7%;
1520
+ background: var(--skin);
1521
+ border-radius: 50%;
1522
+ left: 50%;
1523
+ translate: -50% -50%;
1524
+ top: 55%;
1525
+ }
1526
+
1527
+ .eye {
1528
+ --pos: 25%;
1529
+ --x1: 50%;
1530
+ --x2: 42%;
1531
+ width: 35%;
1532
+ aspect-ratio: 1;
1533
+ border-radius: 50%;
1534
+ background:
1535
+ radial-gradient(50% 50% at var(--x1) 32%, #fff 25%, #0000 calc(25% + 1px)),
1536
+ radial-gradient(50% 50% at var(--x2) 51%, #fff 12%, #0000 calc(12% + 1px)),
1537
+ radial-gradient(circle at 60% 40%, #000 35%, #0000 calc(35% + 1px)),
1538
+ white;
1539
+ left: var(--pos);
1540
+ translate: -50% -50%;
1541
+ top: 43%;
1542
+ overflow: hidden;
1543
+
1544
+ & + & {
1545
+ --x1: 70%;
1546
+ --x2: 78%;
1547
+ left: calc(100% - var(--pos));
1548
+ scale: -1 1;
1549
+ }
1550
+
1551
+ &::before {
1552
+ content: "";
1553
+ top: -30%;
1554
+ left: 50%;
1555
+ translate: -50%;
1556
+ width: 150%;
1557
+ height: 0%;
1558
+ background: var(--fur);
1559
+ rotate: -10deg;
1560
+ animation: art-cat-stargazer-blink 10s linear infinite;
1561
+ }
1562
+
1563
+ &::after {
1564
+ content: "";
1565
+ bottom: -10%;
1566
+ left: 50%;
1567
+ translate: -50%;
1568
+ width: 150%;
1569
+ height: 0%;
1570
+ background: var(--fur);
1571
+ rotate: -10deg;
1572
+ animation: art-cat-stargazer-blink 10s linear infinite;
1573
+ }
1574
+ }
1575
+ }
1576
+ }
1577
+ }
1578
+
1579
+ /* Size variants */
1580
+ .art-cat-stargazer-sm {
1581
+ --art-cat-stargazer-size: 300px;
1582
+ }
1583
+
1584
+ .art-cat-stargazer-lg {
1585
+ --art-cat-stargazer-size: 700px;
1586
+ }
1587
+ }
1588
+
1589
+ @layer css-art {
1590
+ @keyframes art-color-spin-spin {
1591
+ 0%,
1592
+ 1% {
1593
+ transform: translateX(-50%) translateY(calc(var(--art-color-spin-size) * 0.026))
1594
+ rotateY(0deg) scale(1.05);
1595
+ }
1596
+ 99%,
1597
+ 100% {
1598
+ transform: translateX(-50%) translateY(calc(var(--art-color-spin-size) * 0.026))
1599
+ rotateY(360deg) scale(1.05);
1600
+ }
1601
+ }
1602
+
1603
+ .art-color-spin {
1604
+ --art-color-spin-size: 770px;
1605
+ --art-color-spin-color1: #ffd700;
1606
+ --art-color-spin-color2: #20a7db;
1607
+ --art-color-spin-color3: #8fce00;
1608
+ --art-color-spin-color4: #ff0000;
1609
+
1610
+ position: relative;
1611
+ width: var(--art-color-spin-size);
1612
+ height: calc(var(--art-color-spin-size) * 0.26);
1613
+ background: repeating-linear-gradient(
1614
+ -45deg,
1615
+ #000,
1616
+ #000 5px,
1617
+ #111 5px,
1618
+ #111 10px
1619
+ );
1620
+ perspective: calc(var(--art-color-spin-size) * 1.039);
1621
+ font-family: "Google Sans", sans-serif;
1622
+ font-weight: 440;
1623
+ overflow: visible;
1624
+ }
1625
+
1626
+ .art-color-spin * {
1627
+ box-sizing: border-box;
1628
+ }
1629
+
1630
+ /* Decorative "c" letter */
1631
+ .art-color-spin::before {
1632
+ content: "c";
1633
+ font-size: calc(var(--art-color-spin-size) * 0.461);
1634
+ color: #eee;
1635
+ position: absolute;
1636
+ top: calc(var(--art-color-spin-size) * -0.169);
1637
+ left: 0;
1638
+ text-indent: calc(var(--art-color-spin-size) * -0.026);
1639
+ line-height: calc(var(--art-color-spin-size) * 0.519);
1640
+ z-index: 2;
1641
+ -webkit-box-reflect: below calc(var(--art-color-spin-size) * -0.169)
1642
+ linear-gradient(transparent, rgb(255 255 255 / 0.06));
1643
+ }
1644
+
1645
+ /* Decorative "r" letter */
1646
+ .art-color-spin::after {
1647
+ content: "r";
1648
+ font-size: calc(var(--art-color-spin-size) * 0.461);
1649
+ color: #eee;
1650
+ position: absolute;
1651
+ top: calc(var(--art-color-spin-size) * -0.169);
1652
+ right: calc(var(--art-color-spin-size) * 0.039);
1653
+ line-height: calc(var(--art-color-spin-size) * 0.519);
1654
+ z-index: 2;
1655
+ -webkit-box-reflect: below calc(var(--art-color-spin-size) * -0.169)
1656
+ linear-gradient(transparent, rgb(255 255 255 / 0.06));
1657
+ }
1658
+
1659
+ /* 3D spinner container */
1660
+ .art-color-spin > ul {
1661
+ width: 0;
1662
+ height: calc(var(--art-color-spin-size) * 0.195);
1663
+ display: block;
1664
+ left: 50%;
1665
+ position: relative;
1666
+ transform-style: preserve-3d;
1667
+ transform-origin: center center;
1668
+ z-index: 3;
1669
+ margin: 0;
1670
+ padding: 0;
1671
+ list-style: none;
1672
+ animation: art-color-spin-spin 11s linear infinite alternate-reverse;
1673
+ }
1674
+
1675
+ .art-color-spin > ul * {
1676
+ transform-style: preserve-3d;
1677
+ }
1678
+
1679
+ /* White vertical bars (axis indicators) */
1680
+ .art-color-spin > ul::before,
1681
+ .art-color-spin > ul::after {
1682
+ content: "";
1683
+ display: block;
1684
+ position: absolute;
1685
+ width: calc(var(--art-color-spin-size) * 0.052);
1686
+ height: calc(var(--art-color-spin-size) * 0.286);
1687
+ border-radius: calc(var(--art-color-spin-size) * 0.026);
1688
+ top: calc(var(--art-color-spin-size) * -0.039);
1689
+ left: calc(var(--art-color-spin-size) * -0.026);
1690
+ background: #fff;
1691
+ }
1692
+
1693
+ .art-color-spin > ul::before {
1694
+ background: #eee;
1695
+ transform: rotateY(-90deg);
1696
+ }
1697
+
1698
+ /* Colored rings */
1699
+ .art-color-spin > ul > li {
1700
+ display: block;
1701
+ width: calc(var(--art-color-spin-size) * 0.234);
1702
+ height: calc(var(--art-color-spin-size) * 0.234);
1703
+ border: solid calc(var(--art-color-spin-size) * 0.032) #fff;
1704
+ border-radius: 50%;
1705
+ top: calc(var(--art-color-spin-size) * -0.013);
1706
+ left: 0;
1707
+ position: absolute;
1708
+ transform: rotateY(calc(var(--i) * -90deg)) translateZ(0px)
1709
+ translateX(calc(var(--art-color-spin-size) * 0.052));
1710
+ transform-origin: top left;
1711
+ -webkit-box-reflect: below 2px linear-gradient(transparent, rgb(255 255 255 / 0.1));
1712
+ margin: 0;
1713
+ padding: 0;
1714
+ list-style: none;
1715
+ }
1716
+
1717
+ /* Inner colored circles (mix-blend-mode creates glow effect) */
1718
+ .art-color-spin > ul > li::before,
1719
+ .art-color-spin > ul > li::after {
1720
+ content: "";
1721
+ width: calc(var(--art-color-spin-size) * 0.13);
1722
+ height: calc(var(--art-color-spin-size) * 0.13);
1723
+ display: block;
1724
+ opacity: 0.75;
1725
+ border-radius: 50%;
1726
+ position: absolute;
1727
+ left: 50%;
1728
+ top: 50%;
1729
+ mix-blend-mode: color-burn;
1730
+ }
1731
+
1732
+ .art-color-spin > ul > li::after {
1733
+ transform: translate3d(-50%, -50%, 1px);
1734
+ }
1735
+
1736
+ .art-color-spin > ul > li::before {
1737
+ transform: translate3d(-50%, -50%, -1px);
1738
+ }
1739
+
1740
+ /* Ring 1: Gold */
1741
+ .art-color-spin > ul > li:nth-child(1) {
1742
+ outline: solid 1px var(--art-color-spin-color1);
1743
+ outline-offset: 1px;
1744
+ }
1745
+ .art-color-spin > ul > li:nth-child(1)::after {
1746
+ background: var(--art-color-spin-color1);
1747
+ }
1748
+ .art-color-spin > ul > li:nth-child(1)::before {
1749
+ background: color-mix(in hsl, var(--art-color-spin-color1), white 30%);
1750
+ }
1751
+
1752
+ /* Ring 2: Blue */
1753
+ .art-color-spin > ul > li:nth-child(2) {
1754
+ outline: solid 1px var(--art-color-spin-color2);
1755
+ outline-offset: 1px;
1756
+ }
1757
+ .art-color-spin > ul > li:nth-child(2)::after {
1758
+ background: var(--art-color-spin-color2);
1759
+ }
1760
+ .art-color-spin > ul > li:nth-child(2)::before {
1761
+ background: color-mix(in hsl, var(--art-color-spin-color2), white 30%);
1762
+ }
1763
+
1764
+ /* Ring 3: Green */
1765
+ .art-color-spin > ul > li:nth-child(3) {
1766
+ outline: solid 1px var(--art-color-spin-color3);
1767
+ outline-offset: 1px;
1768
+ }
1769
+ .art-color-spin > ul > li:nth-child(3)::after {
1770
+ background: var(--art-color-spin-color3);
1771
+ }
1772
+ .art-color-spin > ul > li:nth-child(3)::before {
1773
+ background: color-mix(in hsl, var(--art-color-spin-color3), white 30%);
1774
+ }
1775
+
1776
+ /* Ring 4: Red */
1777
+ .art-color-spin > ul > li:nth-child(4) {
1778
+ outline: solid 1px var(--art-color-spin-color4);
1779
+ outline-offset: 1px;
1780
+ }
1781
+ .art-color-spin > ul > li:nth-child(4)::after {
1782
+ background: var(--art-color-spin-color4);
1783
+ }
1784
+ .art-color-spin > ul > li:nth-child(4)::before {
1785
+ background: color-mix(in hsl, var(--art-color-spin-color4), white 30%);
1786
+ }
1787
+
1788
+ .art-color-spin-sm {
1789
+ --art-color-spin-size: 385px;
1790
+ }
1791
+
1792
+ .art-color-spin-lg {
1793
+ --art-color-spin-size: 1000px;
1794
+ }
1795
+ }
1796
+
1797
+ @layer css-art {
1798
+ @keyframes art-synthwave-starfield-color {
1799
+ 0% {
1800
+ filter: hue-rotate(1deg);
1801
+ }
1802
+ 100% {
1803
+ filter: hue-rotate(360deg);
1804
+ }
1805
+ }
1806
+
1807
+ @keyframes art-synthwave-starfield-lines-x {
1808
+ 0% {
1809
+ background-position: calc(var(--art-synthwave-starfield-size) * 0.12) center;
1810
+ }
1811
+ 100% {
1812
+ background-position: 0 center;
1813
+ }
1814
+ }
1815
+
1816
+ @keyframes art-synthwave-starfield-lines-y {
1817
+ 0% {
1818
+ background-position: center calc(var(--art-synthwave-starfield-size) * 0.12);
1819
+ }
1820
+ 100% {
1821
+ background-position: center 0;
1822
+ }
1823
+ }
1824
+
1825
+ @keyframes art-synthwave-starfield-stars {
1826
+ 0% {
1827
+ transform: translateZ(calc(var(--art-synthwave-starfield-size) * -0.4));
1828
+ opacity: 0;
1829
+ }
1830
+ 30%,
1831
+ 80% {
1832
+ opacity: 1;
1833
+ }
1834
+ 100% {
1835
+ transform: translateZ(calc(var(--art-synthwave-starfield-size) * 0.5)) rotate(15deg);
1836
+ opacity: 0;
1837
+ }
1838
+ }
1839
+
1840
+ @keyframes art-synthwave-starfield-stars2 {
1841
+ 0% {
1842
+ transform: translateZ(calc(var(--art-synthwave-starfield-size) * -0.4)) rotate(180deg);
1843
+ opacity: 0;
1844
+ }
1845
+ 30%,
1846
+ 80% {
1847
+ opacity: 1;
1848
+ }
1849
+ 100% {
1850
+ transform: translateZ(calc(var(--art-synthwave-starfield-size) * 0.5)) rotate(195deg);
1851
+ opacity: 0;
1852
+ }
1853
+ }
1854
+
1855
+ .art-synthwave-starfield {
1856
+ --art-synthwave-starfield-size: 600px;
1857
+ --art-synthwave-starfield-line-color: #6bd600;
1858
+
1859
+ position: relative;
1860
+ width: var(--art-synthwave-starfield-size);
1861
+ height: var(--art-synthwave-starfield-size);
1862
+ overflow: hidden;
1863
+ perspective: calc(var(--art-synthwave-starfield-size) * 0.5);
1864
+ transform-style: preserve-3d;
1865
+ background-image: radial-gradient(#0000, #673ab72e),
1866
+ linear-gradient(-90deg, #2000587d, #000, #9c27b02b),
1867
+ linear-gradient(0deg, #ff98002e, #000, #8bc34a5e);
1868
+ background-color: #000;
1869
+ box-shadow: 0 0 calc(var(--art-synthwave-starfield-size) * 1.5)
1870
+ calc(var(--art-synthwave-starfield-size) * 0.11) #000 inset;
1871
+ font-family: "Press Start 2P", system-ui;
1872
+ }
1873
+
1874
+ /* Secondary gradient overlay (replaces body::before) */
1875
+ .art-synthwave-starfield::before {
1876
+ content: "";
1877
+ position: absolute;
1878
+ width: 100%;
1879
+ height: 100%;
1880
+ background: radial-gradient(#0000, #0a123a),
1881
+ linear-gradient(180deg, #2000587d, #000, #9c27b02b),
1882
+ linear-gradient(0deg, #ff980054, #000, #009688ba);
1883
+ opacity: 0.25;
1884
+ z-index: 0;
1885
+ }
1886
+
1887
+ /* All descendants: absolute + preserve-3d */
1888
+ .art-synthwave-starfield * {
1889
+ box-sizing: border-box;
1890
+ position: absolute;
1891
+ transform-style: preserve-3d;
1892
+ }
1893
+
1894
+ .art-synthwave-starfield *::before,
1895
+ .art-synthwave-starfield *::after {
1896
+ box-sizing: border-box;
1897
+ transform-style: preserve-3d;
1898
+ position: absolute;
1899
+ content: "";
1900
+ }
1901
+
1902
+ /* Shared grid panel base */
1903
+ .art-synthwave-starfield-sides {
1904
+ width: 100%;
1905
+ height: 100%;
1906
+ background: radial-gradient(#0f0015 10%, #000000e0 35%, #fff0 75% 100%);
1907
+ }
1908
+
1909
+ /* Left wall (shared base for both side panels) */
1910
+ .art-synthwave-starfield-sides::before,
1911
+ .art-synthwave-starfield-sides::after {
1912
+ width: 100%;
1913
+ height: 100%;
1914
+ transform: rotateY(90deg);
1915
+ transform-origin: left center;
1916
+ background-image: repeating-linear-gradient(
1917
+ 90deg,
1918
+ #fff0 0,
1919
+ #fff0 calc(var(--art-synthwave-starfield-size) * 0.1),
1920
+ var(--art-synthwave-starfield-line-color) calc(var(--art-synthwave-starfield-size) * 0.1)
1921
+ calc(var(--art-synthwave-starfield-size) * 0.1035),
1922
+ #fff0 calc(var(--art-synthwave-starfield-size) * 0.1035)
1923
+ ),
1924
+ repeating-linear-gradient(
1925
+ 180deg,
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
+ background-color: transparent;
1933
+ animation: art-synthwave-starfield-lines-x 0.5s linear 0s infinite,
1934
+ art-synthwave-starfield-color 5s linear 0s infinite;
1935
+ background-repeat: repeat;
1936
+ background-position: center center;
1937
+ background-size: calc(var(--art-synthwave-starfield-size) * 0.12)
1938
+ calc(var(--art-synthwave-starfield-size) * 0.12);
1939
+ box-shadow: 0 0 calc(var(--art-synthwave-starfield-size) * 0.08)
1940
+ calc(var(--art-synthwave-starfield-size) * 0.1) #000 inset;
1941
+ }
1942
+
1943
+ /* Right wall */
1944
+ .art-synthwave-starfield-lefrig::after {
1945
+ transform: rotateY(-90deg);
1946
+ transform-origin: right center;
1947
+ animation: art-synthwave-starfield-lines-x 0.5s linear 0s infinite reverse,
1948
+ art-synthwave-starfield-color 5s linear 2s infinite;
1949
+ z-index: -1;
1950
+ }
1951
+
1952
+ /* Floor */
1953
+ .art-synthwave-starfield-topbot::before {
1954
+ height: 100%;
1955
+ transform: rotateX(90deg);
1956
+ transform-origin: center bottom;
1957
+ bottom: 0;
1958
+ animation: art-synthwave-starfield-lines-y 0.5s linear 0s infinite reverse,
1959
+ art-synthwave-starfield-color 5s linear 1s infinite;
1960
+ }
1961
+
1962
+ /* Ceiling */
1963
+ .art-synthwave-starfield-topbot::after {
1964
+ height: 100%;
1965
+ transform: rotateX(-90deg);
1966
+ transform-origin: center top;
1967
+ bottom: auto;
1968
+ animation: art-synthwave-starfield-lines-y 0.5s linear 0s infinite,
1969
+ art-synthwave-starfield-color 5s linear 3s infinite;
1970
+ }
1971
+
1972
+ /* Starfield layers */
1973
+ .art-synthwave-starfield-stars {
1974
+ width: 100%;
1975
+ height: 100%;
1976
+ z-index: 3;
1977
+ }
1978
+
1979
+ .art-synthwave-starfield-stars::before,
1980
+ .art-synthwave-starfield-stars::after {
1981
+ width: 200%;
1982
+ height: 200%;
1983
+ background: transparent;
1984
+ border-radius: 100%;
1985
+ background-image: repeating-conic-gradient(
1986
+ #fff8 0%,
1987
+ transparent 0.0002%,
1988
+ transparent 0.075%,
1989
+ transparent 0.65%
1990
+ ),
1991
+ repeating-conic-gradient(
1992
+ #fff 0%,
1993
+ transparent 0.0004%,
1994
+ transparent 0.05%,
1995
+ transparent 0.495%
1996
+ );
1997
+ transform: translateZ(calc(var(--art-synthwave-starfield-size) * -0.4));
1998
+ opacity: 0;
1999
+ animation: art-synthwave-starfield-stars 4s ease-in -1s infinite;
2000
+ z-index: 1;
2001
+ left: -50%;
2002
+ top: -50%;
2003
+ }
2004
+
2005
+ .art-synthwave-starfield-stars::after {
2006
+ animation-name: art-synthwave-starfield-stars2;
2007
+ animation-delay: -2s;
2008
+ }
2009
+
2010
+ /* Second stars div: offset delays for smooth looping */
2011
+ .art-synthwave-starfield-stars + .art-synthwave-starfield-stars::before {
2012
+ animation-delay: -3s;
2013
+ }
2014
+
2015
+ .art-synthwave-starfield-stars + .art-synthwave-starfield-stars::after {
2016
+ animation-delay: -4s;
2017
+ }
2018
+
2019
+ /* Pause all animations (opt-in modifier) */
2020
+ .art-synthwave-starfield.art-synthwave-starfield-paused *::before,
2021
+ .art-synthwave-starfield.art-synthwave-starfield-paused *::after {
2022
+ animation-play-state: paused !important;
2023
+ }
2024
+
2025
+ .art-synthwave-starfield-sm {
2026
+ --art-synthwave-starfield-size: 300px;
2027
+ }
2028
+
2029
+ .art-synthwave-starfield-lg {
2030
+ --art-synthwave-starfield-size: 900px;
2031
+ }
2032
+ }
2033
+
2034
+ @property --art-circular-gallery-rotation {
2035
+ syntax: "<angle>";
2036
+ inherits: true;
2037
+ initial-value: 0deg;
2038
+ }
2039
+
2040
+ @layer css-art {
2041
+ .art-circular-gallery {
2042
+ --art-circular-gallery-size: 600px;
2043
+ --art-circular-gallery-radius: calc(var(--art-circular-gallery-size) * 0.42);
2044
+ --art-circular-gallery-card-width: calc(var(--art-circular-gallery-size) * 0.09);
2045
+ --art-circular-gallery-card-border-radius: calc(var(--art-circular-gallery-size) * 0.012);
2046
+ --art-circular-gallery-arc-size: 0.95;
2047
+ --art-circular-gallery-arc-center: 0.275;
2048
+ --art-circular-gallery-arc-start: calc(
2049
+ var(--art-circular-gallery-arc-center) - var(--art-circular-gallery-arc-size) / 2
2050
+ );
2051
+ --art-circular-gallery-arc-shift-delta: 0.0075;
2052
+ --art-circular-gallery-card-trans-duration: 1000ms;
2053
+ --art-circular-gallery-card-trans-easing: linear(
2054
+ 0,
2055
+ 0.01 0.8%,
2056
+ 0.038 1.6%,
2057
+ 0.154 3.4%,
2058
+ 0.781 9.7%,
2059
+ 1.01 12.5%,
2060
+ 1.089 13.8%,
2061
+ 1.153 15.2%,
2062
+ 1.195 16.6%,
2063
+ 1.219 18%,
2064
+ 1.224 19.7%,
2065
+ 1.208 21.6%,
2066
+ 1.172 23.6%,
2067
+ 1.057 28.6%,
2068
+ 1.007 31.2%,
2069
+ 0.969 34.1%,
2070
+ 0.951 37.1%,
2071
+ 0.953 40.9%,
2072
+ 0.998 50.4%,
2073
+ 1.011 56%,
2074
+ 0.998 74.7%,
2075
+ 1
2076
+ );
2077
+
2078
+ anchor-name: --art-circular-gallery-center;
2079
+
2080
+ /* transform at 0deg ensures this is always a containing block for position:fixed descendants */
2081
+ transform: rotate(var(--art-circular-gallery-rotation));
2082
+ transition: transform 700ms linear;
2083
+
2084
+ position: relative;
2085
+ width: var(--art-circular-gallery-size);
2086
+ height: var(--art-circular-gallery-size);
2087
+ aspect-ratio: 1;
2088
+ display: grid;
2089
+ place-content: center;
2090
+ font-family: sans-serif;
2091
+
2092
+ h1 {
2093
+ margin: 0;
2094
+ text-align: center;
2095
+ font-size: clamp(1rem, calc(var(--art-circular-gallery-size) * 0.035), 2.5rem);
2096
+ font-weight: 300;
2097
+ letter-spacing: 0.05em;
2098
+ /* counter-rotate so the title stays upright as the gallery rotates */
2099
+ transform: rotate(calc(var(--art-circular-gallery-rotation) * -1));
2100
+ }
2101
+
2102
+ div {
2103
+ --arc-step: calc(var(--art-circular-gallery-arc-size) / 19);
2104
+ --arc-shift: calc(var(--art-circular-gallery-arc-shift-delta) * var(--d, 1));
2105
+ --card-offset-distance: calc(
2106
+ (
2107
+ var(--art-circular-gallery-arc-start) + (var(--i) - 1) * var(--arc-step) +
2108
+ var(--arc-shift)
2109
+ ) * 100%
2110
+ );
2111
+
2112
+ &:has(a:hover),
2113
+ &:target {
2114
+ --title-opacity: 1;
2115
+ }
2116
+
2117
+ &:target {
2118
+ --zindex: 2;
2119
+ --center-opacity: 1;
2120
+ --center-scale: 1;
2121
+ --image-outline-color: rgba(255 255 255 / 0.5);
2122
+ }
2123
+
2124
+ /* Large image preview centered in the gallery (shown on :target) */
2125
+ &::before {
2126
+ content: "";
2127
+ position: fixed;
2128
+ position-anchor: --art-circular-gallery-center;
2129
+ position-area: span-all;
2130
+ transform: rotate(calc(var(--art-circular-gallery-rotation) * -1));
2131
+ width: calc(var(--art-circular-gallery-size) * 0.4);
2132
+ aspect-ratio: 1;
2133
+ border-radius: 9in;
2134
+ background: var(--bg-img);
2135
+ box-sizing: border-box;
2136
+ outline: 10px solid rgba(255 255 255 / 0.3);
2137
+ outline-offset: -10px;
2138
+ background-size: cover;
2139
+ background-repeat: no-repeat;
2140
+ opacity: var(--center-opacity, 0);
2141
+ scale: var(--center-scale, 0);
2142
+ pointer-events: none;
2143
+ transition-property: scale, opacity;
2144
+ transition-duration: 300ms, 150ms;
2145
+ }
2146
+
2147
+ /* Tooltip showing the photographer's name on hover */
2148
+ &::after {
2149
+ content: attr(data-title);
2150
+ position: fixed;
2151
+ position-anchor: --art-circular-gallery-card;
2152
+ position-area: center span-all;
2153
+ z-index: 2;
2154
+ pointer-events: none;
2155
+ opacity: var(--title-opacity, 0);
2156
+ transition-property: opacity, transform;
2157
+ transition-duration: 150ms;
2158
+ border: 1px solid rgb(255 255 255 / 0.75);
2159
+ background: rgb(0 0 0 / 0.25);
2160
+ backdrop-filter: blur(3px);
2161
+ padding: 0.25em 1em;
2162
+ border-radius: 5px;
2163
+ font-size: clamp(0.55rem, calc(var(--art-circular-gallery-size) * 0.012), 0.85rem);
2164
+ white-space: nowrap;
2165
+
2166
+ @starting-style {
2167
+ opacity: 0;
2168
+ }
2169
+ }
2170
+
2171
+ /* Thumbnail card placed on the circular offset-path */
2172
+ a {
2173
+ position: absolute;
2174
+ display: block;
2175
+ width: var(--art-circular-gallery-card-width);
2176
+ aspect-ratio: 4 / 6;
2177
+ border-radius: var(--art-circular-gallery-card-border-radius);
2178
+ border: 2px solid rgba(255 255 255 / 0.6);
2179
+ offset-path: circle(var(--art-circular-gallery-radius) at 50% 50%);
2180
+ offset-distance: var(--card-offset-distance);
2181
+ offset-rotate: auto;
2182
+ offset-anchor: 50% 0%;
2183
+ transition:
2184
+ offset var(--art-circular-gallery-card-trans-duration)
2185
+ var(--art-circular-gallery-card-trans-easing),
2186
+ scale 200ms ease;
2187
+ z-index: var(--zindex, 1);
2188
+ anchor-name: --art-circular-gallery-card;
2189
+
2190
+ &:hover {
2191
+ scale: 2.5;
2192
+ z-index: 3;
2193
+ }
2194
+
2195
+ img {
2196
+ width: 100%;
2197
+ height: 100%;
2198
+ object-fit: cover;
2199
+ display: block;
2200
+ border-radius: inherit;
2201
+ outline: 5px solid var(--image-outline-color, transparent);
2202
+ outline-offset: -5px;
2203
+ transition: outline 300ms ease-in-out;
2204
+ }
2205
+ }
2206
+ }
2207
+ }
2208
+
2209
+ /* ============================================================
2210
+ FORWARD siblings (clockwise / +d)
2211
+ ============================================================ */
2212
+
2213
+ /* +1 */
2214
+ .art-circular-gallery:has(> *:hover) > *:hover + *,
2215
+ .art-circular-gallery:has(> :last-child:hover) > :nth-child(1) {
2216
+ --d: 3;
2217
+ }
2218
+
2219
+ /* +2 */
2220
+ .art-circular-gallery:has(> *:hover) > *:hover + * + *,
2221
+ .art-circular-gallery:has(> :last-child:hover) > :nth-child(2),
2222
+ .art-circular-gallery:has(> :nth-last-child(2):hover) > :nth-child(1) {
2223
+ --d: 2;
2224
+ }
2225
+
2226
+ /* +3 */
2227
+ .art-circular-gallery:has(> *:hover) > *:hover + * + * + *,
2228
+ .art-circular-gallery:has(> :last-child:hover) > :nth-child(3),
2229
+ .art-circular-gallery:has(> :nth-last-child(2):hover) > :nth-child(2),
2230
+ .art-circular-gallery:has(> :nth-last-child(3):hover) > :nth-child(1) {
2231
+ --d: 1;
2232
+ }
2233
+
2234
+ /* +4 */
2235
+ .art-circular-gallery:has(> *:hover) > *:hover + * + * + * + *,
2236
+ .art-circular-gallery:has(> :last-child:hover) > :nth-child(4),
2237
+ .art-circular-gallery:has(> :nth-last-child(2):hover) > :nth-child(3),
2238
+ .art-circular-gallery:has(> :nth-last-child(3):hover) > :nth-child(2),
2239
+ .art-circular-gallery:has(> :nth-last-child(4):hover) > :nth-child(1) {
2240
+ --d: 0.5;
2241
+ }
2242
+
2243
+ /* ============================================================
2244
+ BACKWARD siblings (counter-clockwise / -d)
2245
+ ============================================================ */
2246
+
2247
+ /* -1 */
2248
+ .art-circular-gallery *:has(+ *:hover),
2249
+ .art-circular-gallery:has(> :nth-child(1):hover) :nth-last-child(1) {
2250
+ --d: -3;
2251
+ }
2252
+
2253
+ /* -2 */
2254
+ .art-circular-gallery *:has(+ * + *:hover),
2255
+ .art-circular-gallery:has(> :nth-child(1):hover) :nth-last-child(2),
2256
+ .art-circular-gallery:has(> :nth-child(2):hover) :nth-last-child(1) {
2257
+ --d: -2;
2258
+ }
2259
+
2260
+ /* -3 */
2261
+ .art-circular-gallery *:has(+ * + * + *:hover),
2262
+ .art-circular-gallery:has(> :nth-child(1):hover) :nth-last-child(3),
2263
+ .art-circular-gallery:has(> :nth-child(2):hover) :nth-last-child(2),
2264
+ .art-circular-gallery:has(> :nth-child(3):hover) :nth-last-child(1) {
2265
+ --d: -1;
2266
+ }
2267
+
2268
+ /* -4 */
2269
+ .art-circular-gallery *:has(+ * + * + * + *:hover),
2270
+ .art-circular-gallery:has(> :nth-child(1):hover) :nth-last-child(4),
2271
+ .art-circular-gallery:has(> :nth-child(2):hover) :nth-last-child(3),
2272
+ .art-circular-gallery:has(> :nth-child(3):hover) :nth-last-child(2),
2273
+ .art-circular-gallery:has(> :nth-child(4):hover) :nth-last-child(1) {
2274
+ --d: -0.5;
2275
+ }
2276
+
2277
+ .art-circular-gallery-sm {
2278
+ --art-circular-gallery-size: 400px;
2279
+ }
2280
+
2281
+ .art-circular-gallery-lg {
2282
+ --art-circular-gallery-size: 800px;
2283
+ }
2284
+ }
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
+