underrate commited on
Commit
008d962
·
verified ·
1 Parent(s): 49891be

Upload 65 files

Browse files
app/globals.css CHANGED
@@ -1491,4 +1491,836 @@
1491
 
1492
  .underline-animate:hover::after {
1493
  width: 100%;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1494
  }
 
1491
 
1492
  .underline-animate:hover::after {
1493
  width: 100%;
1494
+ }
1495
+
1496
+ /* ───────────────────────────────────────────────
1497
+ EXTREME ANIMATIONS - Next Level UI
1498
+ ─────────────────────────────────────────────── */
1499
+
1500
+ /* Electric pulse effect */
1501
+ @keyframes electric-pulse {
1502
+ 0%, 100% {
1503
+ filter: drop-shadow(0 0 2px hsl(var(--primary)));
1504
+ }
1505
+ 25% {
1506
+ filter: drop-shadow(0 0 8px hsl(var(--primary))) drop-shadow(0 0 20px hsl(var(--primary)));
1507
+ }
1508
+ 50% {
1509
+ filter: drop-shadow(0 0 15px hsl(var(--primary))) drop-shadow(0 0 40px hsl(var(--primary)));
1510
+ }
1511
+ 75% {
1512
+ filter: drop-shadow(0 0 8px hsl(var(--primary))) drop-shadow(0 0 20px hsl(var(--primary)));
1513
+ }
1514
+ }
1515
+
1516
+ .electric-glow {
1517
+ animation: electric-pulse 2s ease-in-out infinite;
1518
+ }
1519
+
1520
+ /* Matrix rain effect */
1521
+ @keyframes matrix-fall {
1522
+ 0% {
1523
+ transform: translateY(-100vh);
1524
+ opacity: 0;
1525
+ }
1526
+ 10% {
1527
+ opacity: 1;
1528
+ }
1529
+ 90% {
1530
+ opacity: 1;
1531
+ }
1532
+ 100% {
1533
+ transform: translateY(100vh);
1534
+ opacity: 0;
1535
+ }
1536
+ }
1537
+
1538
+ .matrix-char {
1539
+ position: absolute;
1540
+ font-family: monospace;
1541
+ font-size: 14px;
1542
+ color: hsl(var(--primary));
1543
+ text-shadow: 0 0 10px hsl(var(--primary));
1544
+ animation: matrix-fall linear infinite;
1545
+ pointer-events: none;
1546
+ }
1547
+
1548
+ /* Holographic shimmer */
1549
+ @keyframes holo-shimmer {
1550
+ 0% {
1551
+ background-position: 0% 50%;
1552
+ filter: hue-rotate(0deg);
1553
+ }
1554
+ 50% {
1555
+ background-position: 100% 50%;
1556
+ filter: hue-rotate(180deg);
1557
+ }
1558
+ 100% {
1559
+ background-position: 0% 50%;
1560
+ filter: hue-rotate(360deg);
1561
+ }
1562
+ }
1563
+
1564
+ .holographic {
1565
+ background: linear-gradient(
1566
+ 90deg,
1567
+ hsl(280, 100%, 70%),
1568
+ hsl(320, 100%, 60%),
1569
+ hsl(360, 100%, 70%),
1570
+ hsl(40, 100%, 60%),
1571
+ hsl(80, 100%, 70%),
1572
+ hsl(120, 100%, 60%),
1573
+ hsl(160, 100%, 70%),
1574
+ hsl(200, 100%, 60%),
1575
+ hsl(240, 100%, 70%),
1576
+ hsl(280, 100%, 70%)
1577
+ );
1578
+ background-size: 400% 100%;
1579
+ -webkit-background-clip: text;
1580
+ background-clip: text;
1581
+ -webkit-text-fill-color: transparent;
1582
+ animation: holo-shimmer 4s linear infinite;
1583
+ }
1584
+
1585
+ /* Cyberpunk glitch border */
1586
+ @keyframes glitch-border {
1587
+ 0%, 100% {
1588
+ clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
1589
+ }
1590
+ 5% {
1591
+ clip-path: polygon(0 10%, 100% 0, 100% 90%, 0 100%);
1592
+ }
1593
+ 10% {
1594
+ clip-path: polygon(0 0, 90% 0, 100% 100%, 10% 100%);
1595
+ }
1596
+ 15% {
1597
+ clip-path: polygon(0 0, 100% 5%, 100% 100%, 0 95%);
1598
+ }
1599
+ 20% {
1600
+ clip-path: polygon(5% 0, 100% 0, 95% 100%, 0 100%);
1601
+ }
1602
+ 25% {
1603
+ clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
1604
+ }
1605
+ }
1606
+
1607
+ .glitch-border {
1608
+ animation: glitch-border 3s ease-in-out infinite;
1609
+ }
1610
+
1611
+ /* Extreme 3D flip card */
1612
+ .flip-card {
1613
+ perspective: 2000px;
1614
+ transform-style: preserve-3d;
1615
+ }
1616
+
1617
+ .flip-card-inner {
1618
+ position: relative;
1619
+ width: 100%;
1620
+ height: 100%;
1621
+ transition: transform 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275);
1622
+ transform-style: preserve-3d;
1623
+ }
1624
+
1625
+ .flip-card:hover .flip-card-inner {
1626
+ transform: rotateY(180deg);
1627
+ }
1628
+
1629
+ .flip-card-front,
1630
+ .flip-card-back {
1631
+ position: absolute;
1632
+ width: 100%;
1633
+ height: 100%;
1634
+ backface-visibility: hidden;
1635
+ border-radius: inherit;
1636
+ }
1637
+
1638
+ .flip-card-back {
1639
+ transform: rotateY(180deg);
1640
+ }
1641
+
1642
+ /* Liquid morphing animation */
1643
+ @keyframes liquid-morph {
1644
+ 0%, 100% {
1645
+ border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
1646
+ transform: rotate(0deg) scale(1);
1647
+ }
1648
+ 25% {
1649
+ border-radius: 30% 60% 70% 40% / 50% 60% 30% 60%;
1650
+ transform: rotate(90deg) scale(1.1);
1651
+ }
1652
+ 50% {
1653
+ border-radius: 50% 60% 30% 60% / 30% 60% 70% 40%;
1654
+ transform: rotate(180deg) scale(1);
1655
+ }
1656
+ 75% {
1657
+ border-radius: 60% 40% 60% 30% / 70% 30% 50% 60%;
1658
+ transform: rotate(270deg) scale(1.1);
1659
+ }
1660
+ }
1661
+
1662
+ .liquid-blob {
1663
+ animation: liquid-morph 20s ease-in-out infinite;
1664
+ }
1665
+
1666
+ /* Plasma effect */
1667
+ @keyframes plasma {
1668
+ 0%, 100% {
1669
+ filter: hue-rotate(0deg) saturate(1.5);
1670
+ transform: scale(1);
1671
+ }
1672
+ 33% {
1673
+ filter: hue-rotate(120deg) saturate(2);
1674
+ transform: scale(1.05);
1675
+ }
1676
+ 66% {
1677
+ filter: hue-rotate(240deg) saturate(1.8);
1678
+ transform: scale(0.95);
1679
+ }
1680
+ }
1681
+
1682
+ .plasma-effect {
1683
+ animation: plasma 10s ease-in-out infinite;
1684
+ }
1685
+
1686
+ /* Explosion particles */
1687
+ @keyframes explode {
1688
+ 0% {
1689
+ transform: scale(0) rotate(0deg);
1690
+ opacity: 1;
1691
+ }
1692
+ 100% {
1693
+ transform: scale(3) rotate(180deg);
1694
+ opacity: 0;
1695
+ }
1696
+ }
1697
+
1698
+ .explode-particle {
1699
+ animation: explode 1s cubic-bezier(0.36, 0, 0.66, -0.56) forwards;
1700
+ }
1701
+
1702
+ /* Vortex spin */
1703
+ @keyframes vortex {
1704
+ 0% {
1705
+ transform: rotate(0deg) scale(1);
1706
+ opacity: 1;
1707
+ }
1708
+ 50% {
1709
+ transform: rotate(180deg) scale(0.5);
1710
+ opacity: 0.5;
1711
+ }
1712
+ 100% {
1713
+ transform: rotate(360deg) scale(0);
1714
+ opacity: 0;
1715
+ }
1716
+ }
1717
+
1718
+ .vortex-spin {
1719
+ animation: vortex 2s cubic-bezier(0.68, -0.55, 0.265, 1.55) infinite;
1720
+ }
1721
+
1722
+ /* Breathing glow */
1723
+ @keyframes breathe-glow {
1724
+ 0%, 100% {
1725
+ box-shadow:
1726
+ 0 0 5px hsl(var(--primary) / 0.3),
1727
+ 0 0 10px hsl(var(--primary) / 0.2),
1728
+ 0 0 20px hsl(var(--primary) / 0.1),
1729
+ inset 0 0 10px hsl(var(--primary) / 0.1);
1730
+ }
1731
+ 50% {
1732
+ box-shadow:
1733
+ 0 0 20px hsl(var(--primary) / 0.6),
1734
+ 0 0 40px hsl(var(--primary) / 0.4),
1735
+ 0 0 60px hsl(var(--primary) / 0.2),
1736
+ inset 0 0 20px hsl(var(--primary) / 0.2);
1737
+ }
1738
+ }
1739
+
1740
+ .breathing-glow {
1741
+ animation: breathe-glow 4s ease-in-out infinite;
1742
+ }
1743
+
1744
+ /* Cyber scan line */
1745
+ @keyframes scan-line {
1746
+ 0% {
1747
+ top: 0%;
1748
+ }
1749
+ 100% {
1750
+ top: 100%;
1751
+ }
1752
+ }
1753
+
1754
+ .scan-line::before {
1755
+ content: '';
1756
+ position: absolute;
1757
+ left: 0;
1758
+ width: 100%;
1759
+ height: 2px;
1760
+ background: linear-gradient(90deg, transparent, hsl(var(--primary)), transparent);
1761
+ box-shadow: 0 0 10px hsl(var(--primary));
1762
+ animation: scan-line 3s linear infinite;
1763
+ pointer-events: none;
1764
+ z-index: 100;
1765
+ }
1766
+
1767
+ /* Floating island effect */
1768
+ @keyframes floating-island {
1769
+ 0%, 100% {
1770
+ transform: translateY(0) rotateX(0deg) rotateY(0deg);
1771
+ }
1772
+ 25% {
1773
+ transform: translateY(-10px) rotateX(2deg) rotateY(-2deg);
1774
+ }
1775
+ 50% {
1776
+ transform: translateY(-5px) rotateX(0deg) rotateY(2deg);
1777
+ }
1778
+ 75% {
1779
+ transform: translateY(-15px) rotateX(-2deg) rotateY(0deg);
1780
+ }
1781
+ }
1782
+
1783
+ .floating-island {
1784
+ animation: floating-island 8s ease-in-out infinite;
1785
+ transform-style: preserve-3d;
1786
+ }
1787
+
1788
+ /* Extreme parallax depth */
1789
+ .parallax-extreme {
1790
+ transform-style: preserve-3d;
1791
+ perspective: 1000px;
1792
+ }
1793
+
1794
+ .parallax-layer-1 {
1795
+ transform: translateZ(-100px) scale(1.5);
1796
+ }
1797
+
1798
+ .parallax-layer-2 {
1799
+ transform: translateZ(-50px) scale(1.25);
1800
+ }
1801
+
1802
+ .parallax-layer-3 {
1803
+ transform: translateZ(0px) scale(1);
1804
+ }
1805
+
1806
+ /* Energy wave */
1807
+ @keyframes energy-wave {
1808
+ 0% {
1809
+ transform: scale(0.5);
1810
+ opacity: 1;
1811
+ }
1812
+ 100% {
1813
+ transform: scale(2);
1814
+ opacity: 0;
1815
+ }
1816
+ }
1817
+
1818
+ .energy-wave {
1819
+ position: absolute;
1820
+ border: 2px solid hsl(var(--primary));
1821
+ border-radius: 50%;
1822
+ animation: energy-wave 2s ease-out infinite;
1823
+ }
1824
+
1825
+ .energy-wave:nth-child(2) {
1826
+ animation-delay: 0.5s;
1827
+ }
1828
+
1829
+ .energy-wave:nth-child(3) {
1830
+ animation-delay: 1s;
1831
+ }
1832
+
1833
+ /* Text reveal mask */
1834
+ @keyframes text-reveal {
1835
+ 0% {
1836
+ clip-path: polygon(0 0, 0 0, 0 100%, 0 100%);
1837
+ }
1838
+ 100% {
1839
+ clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
1840
+ }
1841
+ }
1842
+
1843
+ .text-reveal {
1844
+ animation: text-reveal 1s cubic-bezier(0.77, 0, 0.175, 1) forwards;
1845
+ }
1846
+
1847
+ /* Stagger shake */
1848
+ @keyframes stagger-shake {
1849
+ 0%, 100% { transform: translateX(0); }
1850
+ 10% { transform: translateX(-5px) rotate(-1deg); }
1851
+ 20% { transform: translateX(5px) rotate(1deg); }
1852
+ 30% { transform: translateX(-5px) rotate(0deg); }
1853
+ 40% { transform: translateX(5px) rotate(1deg); }
1854
+ 50% { transform: translateX(-3px) rotate(-1deg); }
1855
+ 60% { transform: translateX(3px) rotate(0deg); }
1856
+ 70% { transform: translateX(-2px) rotate(-1deg); }
1857
+ 80% { transform: translateX(2px) rotate(1deg); }
1858
+ 90% { transform: translateX(-1px) rotate(0deg); }
1859
+ }
1860
+
1861
+ .shake-hover:hover {
1862
+ animation: stagger-shake 0.5s ease-in-out;
1863
+ }
1864
+
1865
+ /* Rainbow border animation */
1866
+ @keyframes rainbow-border {
1867
+ 0% { border-color: hsl(0, 100%, 60%); }
1868
+ 17% { border-color: hsl(60, 100%, 60%); }
1869
+ 33% { border-color: hsl(120, 100%, 60%); }
1870
+ 50% { border-color: hsl(180, 100%, 60%); }
1871
+ 67% { border-color: hsl(240, 100%, 60%); }
1872
+ 83% { border-color: hsl(300, 100%, 60%); }
1873
+ 100% { border-color: hsl(360, 100%, 60%); }
1874
+ }
1875
+
1876
+ .rainbow-border {
1877
+ border-width: 3px;
1878
+ border-style: solid;
1879
+ animation: rainbow-border 5s linear infinite;
1880
+ }
1881
+
1882
+ /* Morphing background */
1883
+ @keyframes morph-bg {
1884
+ 0%, 100% {
1885
+ background-position: 0% 50%;
1886
+ background-size: 200% 200%;
1887
+ }
1888
+ 50% {
1889
+ background-position: 100% 50%;
1890
+ background-size: 300% 300%;
1891
+ }
1892
+ }
1893
+
1894
+ .morphing-bg {
1895
+ background: linear-gradient(135deg,
1896
+ hsl(var(--primary)),
1897
+ hsl(280, 65%, 60%),
1898
+ hsl(320, 75%, 55%),
1899
+ hsl(199, 89%, 48%),
1900
+ hsl(var(--primary))
1901
+ );
1902
+ background-size: 400% 400%;
1903
+ animation: morph-bg 15s ease infinite;
1904
+ }
1905
+
1906
+ /* Typing cursor */
1907
+ @keyframes blink {
1908
+ 0%, 50% { opacity: 1; }
1909
+ 51%, 100% { opacity: 0; }
1910
+ }
1911
+
1912
+ .typing-cursor::after {
1913
+ content: '|';
1914
+ animation: blink 1s step-end infinite;
1915
+ color: hsl(var(--primary));
1916
+ }
1917
+
1918
+ /* Hyperdrive lines */
1919
+ @keyframes hyperdrive {
1920
+ 0% {
1921
+ transform: scale(0) rotate(0deg);
1922
+ opacity: 1;
1923
+ }
1924
+ 100% {
1925
+ transform: scale(50) rotate(180deg);
1926
+ opacity: 0;
1927
+ }
1928
+ }
1929
+
1930
+ .hyperdrive-line {
1931
+ position: absolute;
1932
+ width: 2px;
1933
+ height: 100px;
1934
+ background: linear-gradient(to bottom, transparent, hsl(var(--primary)), transparent);
1935
+ transform-origin: center bottom;
1936
+ animation: hyperdrive 1s linear infinite;
1937
+ }
1938
+
1939
+ /* Cosmic dust */
1940
+ @keyframes cosmic-dust {
1941
+ 0% {
1942
+ transform: translateY(0) rotate(0deg) scale(0);
1943
+ opacity: 0;
1944
+ }
1945
+ 10% {
1946
+ opacity: 1;
1947
+ transform: translateY(-10px) rotate(36deg) scale(1);
1948
+ }
1949
+ 100% {
1950
+ transform: translateY(-200px) rotate(360deg) scale(0);
1951
+ opacity: 0;
1952
+ }
1953
+ }
1954
+
1955
+ .cosmic-dust {
1956
+ position: absolute;
1957
+ width: 4px;
1958
+ height: 4px;
1959
+ border-radius: 50%;
1960
+ background: hsl(var(--primary));
1961
+ box-shadow: 0 0 6px hsl(var(--primary));
1962
+ animation: cosmic-dust 3s ease-out infinite;
1963
+ }
1964
+
1965
+ /* Spotlight follow */
1966
+ .spotlight-follow {
1967
+ position: relative;
1968
+ overflow: hidden;
1969
+ }
1970
+
1971
+ .spotlight-follow::before {
1972
+ content: '';
1973
+ position: absolute;
1974
+ width: 300px;
1975
+ height: 300px;
1976
+ background: radial-gradient(circle, hsl(var(--primary) / 0.15) 0%, transparent 70%);
1977
+ border-radius: 50%;
1978
+ pointer-events: none;
1979
+ transform: translate(-50%, -50%);
1980
+ transition: opacity 0.3s ease;
1981
+ opacity: 0;
1982
+ }
1983
+
1984
+ .spotlight-follow:hover::before {
1985
+ opacity: 1;
1986
+ }
1987
+
1988
+ /* Elastic bounce */
1989
+ @keyframes elastic-bounce {
1990
+ 0% { transform: scale(1); }
1991
+ 30% { transform: scale(1.25); }
1992
+ 40% { transform: scale(0.9); }
1993
+ 50% { transform: scale(1.15); }
1994
+ 65% { transform: scale(0.95); }
1995
+ 75% { transform: scale(1.05); }
1996
+ 100% { transform: scale(1); }
1997
+ }
1998
+
1999
+ .elastic-bounce {
2000
+ animation: elastic-bounce 1s cubic-bezier(0.68, -0.55, 0.265, 1.55);
2001
+ }
2002
+
2003
+ /* Tilt 3D effect */
2004
+ .tilt-3d {
2005
+ transform-style: preserve-3d;
2006
+ transition: transform 0.3s ease;
2007
+ }
2008
+
2009
+ .tilt-3d:hover {
2010
+ transform: perspective(1000px) rotateX(10deg) rotateY(-10deg) scale(1.05);
2011
+ }
2012
+
2013
+ /* Magnetic attraction */
2014
+ .magnetic {
2015
+ transition: transform 0.3s cubic-bezier(0.23, 1, 0.32, 1);
2016
+ }
2017
+
2018
+ /* Quantum particle */
2019
+ @keyframes quantum {
2020
+ 0%, 100% {
2021
+ transform: translate(0, 0) scale(1);
2022
+ opacity: 0.8;
2023
+ }
2024
+ 25% {
2025
+ transform: translate(20px, -20px) scale(0.8);
2026
+ opacity: 0.4;
2027
+ }
2028
+ 50% {
2029
+ transform: translate(-10px, 10px) scale(1.2);
2030
+ opacity: 1;
2031
+ }
2032
+ 75% {
2033
+ transform: translate(-20px, -10px) scale(0.9);
2034
+ opacity: 0.6;
2035
+ }
2036
+ }
2037
+
2038
+ .quantum-particle {
2039
+ animation: quantum 5s ease-in-out infinite;
2040
+ }
2041
+
2042
+ /* Inverted perspective */
2043
+ .inverted-perspective {
2044
+ transform: perspective(500px) rotateX(5deg);
2045
+ transition: transform 0.5s ease;
2046
+ }
2047
+
2048
+ .inverted-perspective:hover {
2049
+ transform: perspective(500px) rotateX(-5deg) translateY(-10px);
2050
+ }
2051
+
2052
+ /* Trail effect */
2053
+ .trail-effect {
2054
+ position: relative;
2055
+ }
2056
+
2057
+ .trail-effect::after {
2058
+ content: '';
2059
+ position: absolute;
2060
+ inset: 0;
2061
+ border-radius: inherit;
2062
+ background: inherit;
2063
+ opacity: 0;
2064
+ transform: scale(1.1);
2065
+ transition: all 0.3s ease;
2066
+ z-index: -1;
2067
+ }
2068
+
2069
+ .trail-effect:hover::after {
2070
+ opacity: 0.3;
2071
+ transform: scale(1.2) translateY(10px);
2072
+ }
2073
+
2074
+ /*霓虹 Noir */
2075
+ .neon-noir {
2076
+ color: hsl(var(--foreground));
2077
+ text-shadow:
2078
+ 0 0 5px hsl(var(--primary)),
2079
+ 0 0 10px hsl(var(--primary)),
2080
+ 0 0 20px hsl(var(--primary)),
2081
+ 0 0 40px hsl(var(--primary)),
2082
+ 0 0 80px hsl(var(--primary));
2083
+ animation: neon-flicker 0.15s infinite;
2084
+ }
2085
+
2086
+ @keyframes neon-flicker {
2087
+ 0%, 19%, 21%, 23%, 25%, 54%, 56%, 100% {
2088
+ text-shadow:
2089
+ 0 0 5px hsl(var(--primary)),
2090
+ 0 0 10px hsl(var(--primary)),
2091
+ 0 0 20px hsl(var(--primary)),
2092
+ 0 0 40px hsl(var(--primary)),
2093
+ 0 0 80px hsl(var(--primary));
2094
+ }
2095
+ 20%, 24%, 55% {
2096
+ text-shadow: none;
2097
+ }
2098
+ }
2099
+
2100
+ /* Glass morphism extreme */
2101
+ .glass-extreme {
2102
+ background: linear-gradient(
2103
+ 135deg,
2104
+ hsl(var(--background) / 0.1) 0%,
2105
+ hsl(var(--background) / 0.05) 50%,
2106
+ hsl(var(--background) / 0.1) 100%
2107
+ );
2108
+ backdrop-filter: blur(20px) saturate(180%);
2109
+ -webkit-backdrop-filter: blur(20px) saturate(180%);
2110
+ border: 1px solid hsl(var(--border) / 0.2);
2111
+ box-shadow:
2112
+ 0 8px 32px hsl(var(--background) / 0.3),
2113
+ inset 0 1px 0 hsl(var(--foreground) / 0.1),
2114
+ inset 0 -1px 0 hsl(var(--background) / 0.1);
2115
+ }
2116
+
2117
+ /* Cyber grid */
2118
+ .cyber-grid {
2119
+ background-image:
2120
+ linear-gradient(hsl(var(--primary) / 0.03) 1px, transparent 1px),
2121
+ linear-gradient(90deg, hsl(var(--primary) / 0.03) 1px, transparent 1px);
2122
+ background-size: 50px 50px;
2123
+ animation: grid-move 20s linear infinite;
2124
+ }
2125
+
2126
+ @keyframes grid-move {
2127
+ 0% { background-position: 0 0; }
2128
+ 100% { background-position: 50px 50px; }
2129
+ }
2130
+
2131
+ /* Morphing card */
2132
+ .morph-card {
2133
+ transition: all 0.5s cubic-bezier(0.23, 1, 0.32, 1);
2134
+ }
2135
+
2136
+ .morph-card:hover {
2137
+ border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%;
2138
+ }
2139
+
2140
+ /* Glitch image */
2141
+ @keyframes glitch-image {
2142
+ 0% {
2143
+ filter: hue-rotate(0deg);
2144
+ transform: translate(0);
2145
+ }
2146
+ 10% {
2147
+ filter: hue-rotate(90deg);
2148
+ transform: translate(-5px, 5px);
2149
+ }
2150
+ 20% {
2151
+ filter: hue-rotate(180deg);
2152
+ transform: translate(5px, -5px);
2153
+ }
2154
+ 30% {
2155
+ filter: hue-rotate(270deg);
2156
+ transform: translate(-5px, -5px);
2157
+ }
2158
+ 40% {
2159
+ filter: hue-rotate(360deg);
2160
+ transform: translate(5px, 5px);
2161
+ }
2162
+ 50%, 100% {
2163
+ filter: hue-rotate(0deg);
2164
+ transform: translate(0);
2165
+ }
2166
+ }
2167
+
2168
+ .glitch-image:hover {
2169
+ animation: glitch-image 0.5s ease-in-out;
2170
+ }
2171
+
2172
+ /* Infinite rotate */
2173
+ @keyframes infinite-rotate {
2174
+ from { transform: rotate(0deg); }
2175
+ to { transform: rotate(360deg); }
2176
+ }
2177
+
2178
+ .infinite-rotate {
2179
+ animation: infinite-rotate 30s linear infinite;
2180
+ }
2181
+
2182
+ /* Scale pulse */
2183
+ @keyframes scale-pulse {
2184
+ 0%, 100% { transform: scale(1); }
2185
+ 50% { transform: scale(1.05); }
2186
+ }
2187
+
2188
+ .scale-pulse {
2189
+ animation: scale-pulse 2s ease-in-out infinite;
2190
+ }
2191
+
2192
+ /* Text scramble effect placeholder */
2193
+ .scramble-text {
2194
+ font-family: monospace;
2195
+ }
2196
+
2197
+ /* Bounce in */
2198
+ @keyframes bounce-in {
2199
+ 0% {
2200
+ transform: scale(0);
2201
+ opacity: 0;
2202
+ }
2203
+ 50% {
2204
+ transform: scale(1.2);
2205
+ }
2206
+ 100% {
2207
+ transform: scale(1);
2208
+ opacity: 1;
2209
+ }
2210
+ }
2211
+
2212
+ .bounce-in {
2213
+ animation: bounce-in 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55);
2214
+ }
2215
+
2216
+ /* Slide up fade */
2217
+ @keyframes slide-up-fade {
2218
+ 0% {
2219
+ transform: translateY(50px);
2220
+ opacity: 0;
2221
+ }
2222
+ 100% {
2223
+ transform: translateY(0);
2224
+ opacity: 1;
2225
+ }
2226
+ }
2227
+
2228
+ .slide-up-fade {
2229
+ animation: slide-up-fade 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
2230
+ }
2231
+
2232
+ /* Glow text */
2233
+ .glow-text {
2234
+ text-shadow:
2235
+ 0 0 10px hsl(var(--primary)),
2236
+ 0 0 20px hsl(var(--primary)),
2237
+ 0 0 30px hsl(var(--primary)),
2238
+ 0 0 40px hsl(var(--primary));
2239
+ }
2240
+
2241
+ /* Extrude 3D */
2242
+ .extrude-3d {
2243
+ text-shadow:
2244
+ 1px 1px 0 hsl(var(--primary) / 0.3),
2245
+ 2px 2px 0 hsl(var(--primary) / 0.25),
2246
+ 3px 3px 0 hsl(var(--primary) / 0.2),
2247
+ 4px 4px 0 hsl(var(--primary) / 0.15),
2248
+ 5px 5px 0 hsl(var(--primary) / 0.1);
2249
+ transition: all 0.3s ease;
2250
+ }
2251
+
2252
+ .extrude-3d:hover {
2253
+ text-shadow:
2254
+ 1px 1px 0 hsl(var(--primary) / 0.3),
2255
+ 2px 2px 0 hsl(var(--primary) / 0.25),
2256
+ 3px 3px 0 hsl(var(--primary) / 0.2),
2257
+ 4px 4px 0 hsl(var(--primary) / 0.15),
2258
+ 5px 5px 0 hsl(var(--primary) / 0.1),
2259
+ 6px 6px 10px hsl(var(--background));
2260
+ transform: translate(-3px, -3px);
2261
+ }
2262
+
2263
+ /* Suspended animation */
2264
+ @keyframes suspended {
2265
+ 0%, 100% {
2266
+ transform: translateY(0) rotate(0deg);
2267
+ }
2268
+ 25% {
2269
+ transform: translateY(-8px) rotate(1deg);
2270
+ }
2271
+ 50% {
2272
+ transform: translateY(-4px) rotate(-1deg);
2273
+ }
2274
+ 75% {
2275
+ transform: translateY(-12px) rotate(0.5deg);
2276
+ }
2277
+ }
2278
+
2279
+ .suspended {
2280
+ animation: suspended 6s ease-in-out infinite;
2281
+ }
2282
+
2283
+ /* Dynamic underline */
2284
+ .dynamic-underline {
2285
+ position: relative;
2286
+ display: inline-block;
2287
+ }
2288
+
2289
+ .dynamic-underline::after {
2290
+ content: '';
2291
+ position: absolute;
2292
+ bottom: -4px;
2293
+ left: 50%;
2294
+ width: 0;
2295
+ height: 3px;
2296
+ background: linear-gradient(90deg, hsl(var(--primary)), hsl(280, 65%, 60%));
2297
+ transition: all 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);
2298
+ transform: translateX(-50%);
2299
+ border-radius: 2px;
2300
+ }
2301
+
2302
+ .dynamic-underline:hover::after {
2303
+ width: 120%;
2304
+ }
2305
+
2306
+ /* Particle burst on click */
2307
+ @keyframes particle-burst {
2308
+ 0% {
2309
+ transform: translate(0, 0) scale(1);
2310
+ opacity: 1;
2311
+ }
2312
+ 100% {
2313
+ transform: translate(var(--x, 0), var(--y, 0)) scale(0);
2314
+ opacity: 0;
2315
+ }
2316
+ }
2317
+
2318
+ .particle-burst {
2319
+ position: absolute;
2320
+ width: 10px;
2321
+ height: 10px;
2322
+ border-radius: 50%;
2323
+ background: hsl(var(--primary));
2324
+ pointer-events: none;
2325
+ animation: particle-burst 0.6s ease-out forwards;
2326
  }
components/home/CTASection.tsx CHANGED
@@ -2,46 +2,32 @@
2
 
3
  import Link from "next/link"
4
  import { Button } from "@/components/ui/button"
5
- import { ArrowRight, Sparkles, Zap, Rocket, MessageCircle } from "lucide-react"
6
  import { useRef, useState, useEffect } from "react"
7
 
8
- // Pre-computed particle data to avoid hydration mismatch
9
  const CTA_PARTICLES = [
10
- // Left side particles
11
- { left: 3.5, top: 15.2, delay: 2.1, duration: 19.4 },
12
- { left: 8.7, top: 45.8, delay: 7.6, duration: 21.8 },
13
- { left: 5.2, top: 78.3, delay: 11.2, duration: 18.2 },
14
- { left: 12.4, top: 32.5, delay: 4.8, duration: 22.6 },
15
- { left: 6.8, top: 62.9, delay: 9.3, duration: 17.5 },
16
-
17
- // Right side particles
18
- { left: 91.3, top: 18.6, delay: 5.4, duration: 20.3 },
19
- { left: 86.5, top: 52.4, delay: 10.1, duration: 18.9 },
20
- { left: 94.7, top: 85.2, delay: 3.7, duration: 22.1 },
21
- { left: 88.2, top: 38.7, delay: 8.4, duration: 19.6 },
22
- { left: 92.8, top: 68.4, delay: 12.9, duration: 21.2 },
23
-
24
- // Top edge
25
- { left: 25.4, top: 5.8, delay: 6.2, duration: 18.4 },
26
- { left: 55.7, top: 3.2, delay: 1.5, duration: 22.8 },
27
- { left: 72.1, top: 8.4, delay: 9.8, duration: 17.9 },
28
-
29
- // Bottom edge
30
- { left: 18.9, top: 92.6, delay: 4.3, duration: 20.7 },
31
- { left: 48.3, top: 95.1, delay: 11.7, duration: 19.2 },
32
- { left: 68.5, top: 89.3, delay: 7.1, duration: 21.5 },
33
-
34
- // Corners
35
- { left: 2.1, top: 2.4, delay: 13.5, duration: 18.6 },
36
- { left: 97.8, top: 4.7, delay: 0.8, duration: 22.4 },
37
- { left: 1.5, top: 96.2, delay: 5.6, duration: 19.8 },
38
- { left: 98.4, top: 94.5, delay: 10.4, duration: 17.3 },
39
  ]
40
 
41
  export function CTASection() {
42
  const sectionRef = useRef<HTMLElement>(null)
43
  const [isVisible, setIsVisible] = useState(false)
44
- const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 })
45
 
46
  useEffect(() => {
47
  const observer = new IntersectionObserver(
@@ -76,115 +62,193 @@ export function CTASection() {
76
  }, [])
77
 
78
  return (
79
- <section ref={sectionRef} className="relative py-24 overflow-hidden bg-background" aria-label="Call to action">
80
- {/* Dynamic gradient mesh */}
81
- <div className="absolute inset-0 gradient-mesh opacity-30" />
82
-
83
- {/* Animated orbs */}
84
- <div
85
- className="absolute w-[600px] h-[600px] rounded-full opacity-20 blur-3xl pointer-events-none transition-transform duration-1000"
86
- style={{
87
- background: 'radial-gradient(circle, hsl(var(--primary)) 0%, transparent 70%)',
88
- top: '-20%',
89
- right: '-10%',
90
- transform: `translate(${mousePosition.x * 50}px, ${mousePosition.y * 50}px)`,
91
- }}
92
- />
93
- <div
94
- className="absolute w-[500px] h-[500px] rounded-full opacity-15 blur-3xl pointer-events-none transition-transform duration-1000"
95
- style={{
96
- background: 'radial-gradient(circle, hsl(280, 65%, 60%) 0%, transparent 70%)',
97
- bottom: '-20%',
98
- left: '-10%',
99
- transform: `translate(${-mousePosition.x * 30}px, ${-mousePosition.y * 30}px)`,
100
- }}
101
- />
102
-
103
- {/* Animated particles */}
104
- <div className="absolute inset-0 pointer-events-none overflow-hidden">
105
- {CTA_PARTICLES.map((particle, i) => (
106
- <div
107
- key={i}
108
- className="particle"
109
- style={{
110
- left: `${particle.left}%`,
111
- top: `${particle.top}%`,
112
- animationDelay: `${particle.delay}s`,
113
- animationDuration: `${particle.duration}s`,
114
- }}
115
- />
116
- ))}
 
 
 
 
117
  </div>
118
 
119
- {/* Grid pattern */}
120
- <div className="absolute inset-0 opacity-5">
121
- <div className="absolute inset-0 bg-[radial-gradient(circle_at_50%_50%,hsl(var(--primary))_1px,transparent_1px)] bg-size-[48px_48px]" />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  </div>
123
 
 
 
 
 
 
 
124
  <div className="container relative z-10 flex flex-col items-center text-center">
125
  <div
126
- className={`max-w-4xl transition-all duration-1000 ${
127
- isVisible ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-20'
128
  }`}
129
  >
130
- {/* Main CTA card with animated border */}
131
- <div className="relative">
132
- {/* Animated gradient border */}
133
- <div className="absolute -inset-1 rounded-[2rem] animated-border opacity-50" />
 
 
 
 
 
134
 
135
- <div className="relative glass-card rounded-[2rem] p-12 md:p-16 overflow-hidden">
136
  {/* Inner glow */}
137
- <div className="absolute inset-0 bg-gradient-to-br from-primary/10 via-transparent to-accent/10 opacity-50" />
138
 
139
- {/* Floating icons */}
140
- <div className="absolute top-8 left-8 animate-float opacity-20" style={{ animationDelay: '0s' }}>
141
- <Rocket className="w-8 h-8 text-primary" suppressHydrationWarning />
 
 
 
 
 
 
 
 
 
 
142
  </div>
143
- <div className="absolute top-12 right-12 animate-float opacity-20" style={{ animationDelay: '1s' }}>
144
- <Zap className="w-6 h-6 text-amber-500" suppressHydrationWarning />
 
 
145
  </div>
146
- <div className="absolute bottom-8 left-16 animate-float opacity-20" style={{ animationDelay: '2s' }}>
147
- <MessageCircle className="w-7 h-7 text-cyan-500" suppressHydrationWarning />
 
 
148
  </div>
149
 
150
  <div className="relative z-10">
151
  {/* Badge */}
152
- <div className="inline-flex items-center gap-2 px-4 py-2 rounded-full glass-card mb-8">
153
- <Sparkles className="w-4 h-4 text-primary animate-pulse" suppressHydrationWarning />
154
- <span className="text-sm font-medium">Let&apos;s Create Together</span>
 
 
 
 
 
 
155
  </div>
156
 
157
- <h2 className="text-4xl md:text-5xl lg:text-6xl mb-8 text-foreground font-bold tracking-tight">
 
158
  Ready to Start Your{" "}
159
- <span className="gradient-text relative">
160
- Project
161
- <svg className="absolute -bottom-2 left-0 w-full" viewBox="0 0 200 12" fill="none">
162
- <path d="M2 10C50 4 150 2 198 10" stroke="hsl(var(--primary))" strokeWidth="3" strokeLinecap="round" style={{
163
- strokeDasharray: '200',
164
- strokeDashoffset: isVisible ? '0' : '200',
165
- transition: 'stroke-dashoffset 1s ease 0.5s'
166
- }} />
167
- </svg>
168
- </span>
169
  ?
170
  </h2>
171
 
172
- <p className="text-lg md:text-xl mb-12 max-w-2xl text-muted-foreground leading-relaxed mx-auto">
173
  Let&apos;s build something{" "}
174
- <span className="text-primary font-medium">amazing</span> together.
175
- Contact us today for a free consultation and a detailed project quote.
176
  </p>
177
 
178
- <div className="flex flex-col sm:flex-row gap-4 justify-center">
 
179
  <Button
180
  asChild
181
  size="xl"
182
- className="group h-14 px-10 text-lg rounded-2xl shine-effect relative overflow-hidden"
183
  >
184
  <Link href="/quote">
185
- <span className="relative z-10 flex items-center">
186
  Get a Free Quote
187
- <ArrowRight className="ml-2 h-5 w-5 transition-transform group-hover:translate-x-1 group-hover:scale-110" suppressHydrationWarning />
188
  </span>
189
  </Link>
190
  </Button>
@@ -192,40 +256,44 @@ export function CTASection() {
192
  asChild
193
  size="xl"
194
  variant="outline"
195
- className="group h-14 px-10 text-lg rounded-2xl glass-card hover:bg-primary/10"
196
  >
197
  <Link href="/contact">
198
- <MessageCircle className="mr-2 h-5 w-5 group-hover:rotate-12 transition-transform" suppressHydrationWarning />
199
  Contact Us
200
  </Link>
201
  </Button>
202
  </div>
203
 
204
- {/* Trust badges */}
205
- <div className="flex items-center justify-center gap-6 mt-10 text-sm text-muted-foreground">
206
- <div className="flex items-center gap-2">
207
- <Zap className="w-4 h-4 text-amber-500" suppressHydrationWarning />
208
- <span>Fast Response</span>
209
- </div>
210
- <div className="w-1 h-1 rounded-full bg-muted-foreground/50" />
211
- <div className="flex items-center gap-2">
212
- <Rocket className="w-4 h-4 text-primary" suppressHydrationWarning />
213
- <span>Free Consultation</span>
214
- </div>
215
- <div className="w-1 h-1 rounded-full bg-muted-foreground/50" />
216
- <div className="flex items-center gap-2">
217
- <Sparkles className="w-4 h-4 text-cyan-500" suppressHydrationWarning />
218
- <span>Custom Solutions</span>
219
- </div>
220
  </div>
221
  </div>
222
 
223
  {/* Shine effect */}
224
- <div className="absolute inset-0 shine-effect pointer-events-none" />
225
  </div>
226
  </div>
227
  </div>
228
  </div>
 
 
 
 
229
  </section>
230
  )
231
  }
 
2
 
3
  import Link from "next/link"
4
  import { Button } from "@/components/ui/button"
5
+ import { ArrowRight, Sparkles, Zap, Rocket, MessageCircle, Star } from "lucide-react"
6
  import { useRef, useState, useEffect } from "react"
7
 
8
+ // Pre-computed extreme particle data
9
  const CTA_PARTICLES = [
10
+ // Cosmic particles
11
+ { left: 5, top: 10, delay: 0, duration: 20, size: 4, type: 'cosmic' },
12
+ { left: 15, top: 25, delay: 3, duration: 25, size: 3, type: 'cosmic' },
13
+ { left: 88, top: 15, delay: 5, duration: 22, size: 5, type: 'cosmic' },
14
+ { left: 95, top: 40, delay: 8, duration: 28, size: 4, type: 'cosmic' },
15
+ { left: 10, top: 70, delay: 12, duration: 24, size: 3, type: 'cosmic' },
16
+ { left: 85, top: 85, delay: 15, duration: 26, size: 5, type: 'cosmic' },
17
+ // Energy rings
18
+ { left: 50, top: 50, delay: 0, duration: 12, size: 150, type: 'ring' },
19
+ { left: 50, top: 50, delay: 4, duration: 12, size: 150, type: 'ring' },
20
+ { left: 50, top: 50, delay: 8, duration: 12, size: 150, type: 'ring' },
21
+ // Quantum particles
22
+ { left: 25, top: 80, delay: 2, duration: 10, size: 8, type: 'quantum' },
23
+ { left: 75, top: 20, delay: 6, duration: 12, size: 6, type: 'quantum' },
24
+ { left: 40, top: 60, delay: 10, duration: 8, size: 10, type: 'quantum' },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  ]
26
 
27
  export function CTASection() {
28
  const sectionRef = useRef<HTMLElement>(null)
29
  const [isVisible, setIsVisible] = useState(false)
30
+ const [mousePosition, setMousePosition] = useState({ x: 0.5, y: 0.5 })
31
 
32
  useEffect(() => {
33
  const observer = new IntersectionObserver(
 
62
  }, [])
63
 
64
  return (
65
+ <section ref={sectionRef} className="relative py-32 overflow-hidden bg-background" aria-label="Call to action">
66
+ {/* Extreme background effects */}
67
+ <div className="absolute inset-0">
68
+ {/* Morphing gradient */}
69
+ <div className="absolute inset-0 morphing-bg opacity-25" />
70
+
71
+ {/* Cyber grid */}
72
+ <div className="absolute inset-0 cyber-grid opacity-15" />
73
+
74
+ {/* Plasma orbs with mouse tracking */}
75
+ <div
76
+ className="absolute w-[700px] h-[700px] rounded-full liquid-blob opacity-35 blur-3xl pointer-events-none"
77
+ style={{
78
+ background: 'radial-gradient(circle, hsl(var(--primary)) 0%, hsl(280, 65%, 60%) 50%, transparent 70%)',
79
+ top: '-30%',
80
+ right: '-15%',
81
+ transform: `translate(${mousePosition.x * 60}px, ${mousePosition.y * 60}px)`,
82
+ transition: 'transform 0.6s cubic-bezier(0.23, 1, 0.32, 1)',
83
+ }}
84
+ />
85
+ <div
86
+ className="absolute w-[600px] h-[600px] rounded-full liquid-blob opacity-25 blur-3xl pointer-events-none"
87
+ style={{
88
+ background: 'radial-gradient(circle, hsl(280, 65%, 60%) 0%, hsl(320, 75%, 55%) 50%, transparent 70%)',
89
+ bottom: '-30%',
90
+ left: '-15%',
91
+ transform: `translate(${-mousePosition.x * 40}px, ${-mousePosition.y * 40}px)`,
92
+ transition: 'transform 0.6s cubic-bezier(0.23, 1, 0.32, 1)',
93
+ animationDelay: '-12s',
94
+ }}
95
+ />
96
+ <div
97
+ className="absolute w-[400px] h-[400px] rounded-full liquid-blob opacity-20 blur-3xl pointer-events-none"
98
+ style={{
99
+ background: 'radial-gradient(circle, hsl(199, 89%, 48%) 0%, hsl(var(--primary)) 50%, transparent 70%)',
100
+ top: '50%',
101
+ left: '50%',
102
+ transform: `translate(-50%, -50%) translate(${mousePosition.x * 30}px, ${mousePosition.y * 30}px)`,
103
+ transition: 'transform 0.6s cubic-bezier(0.23, 1, 0.32, 1)',
104
+ animationDelay: '-6s',
105
+ }}
106
+ />
107
  </div>
108
 
109
+ {/* Extreme particles */}
110
+ <div className="absolute inset-0 pointer-events-none overflow-hidden">
111
+ {CTA_PARTICLES.map((particle, i) => {
112
+ if (particle.type === 'cosmic') {
113
+ return (
114
+ <div
115
+ key={i}
116
+ className="cosmic-dust"
117
+ style={{
118
+ left: `${particle.left}%`,
119
+ top: `${particle.top}%`,
120
+ width: `${particle.size}px`,
121
+ height: `${particle.size}px`,
122
+ animationDelay: `${particle.delay}s`,
123
+ animationDuration: `${particle.duration}s`,
124
+ }}
125
+ />
126
+ )
127
+ } else if (particle.type === 'ring') {
128
+ return (
129
+ <div
130
+ key={i}
131
+ className="energy-wave"
132
+ style={{
133
+ left: `${particle.left}%`,
134
+ top: `${particle.top}%`,
135
+ width: `${particle.size}px`,
136
+ height: `${particle.size}px`,
137
+ marginLeft: `-${particle.size / 2}px`,
138
+ marginTop: `-${particle.size / 2}px`,
139
+ animationDelay: `${particle.delay}s`,
140
+ }}
141
+ />
142
+ )
143
+ } else {
144
+ return (
145
+ <div
146
+ key={i}
147
+ className="absolute rounded-full quantum-particle"
148
+ style={{
149
+ left: `${particle.left}%`,
150
+ top: `${particle.top}%`,
151
+ width: `${particle.size}px`,
152
+ height: `${particle.size}px`,
153
+ background: `linear-gradient(135deg, hsl(var(--primary)), hsl(280, 65%, 60%))`,
154
+ boxShadow: `0 0 ${particle.size * 2}px hsl(var(--primary) / 0.5)`,
155
+ animationDelay: `${particle.delay}s`,
156
+ animationDuration: `${particle.duration}s`,
157
+ }}
158
+ />
159
+ )
160
+ }
161
+ })}
162
  </div>
163
 
164
+ {/* Scan line */}
165
+ <div className="absolute inset-0 scan-line pointer-events-none opacity-50" />
166
+
167
+ {/* Noise overlay */}
168
+ <div className="absolute inset-0 noise-overlay opacity-40" />
169
+
170
  <div className="container relative z-10 flex flex-col items-center text-center">
171
  <div
172
+ className={`max-w-5xl transition-all duration-1000 ${
173
+ isVisible ? 'opacity-100 translate-y-0 scale-100' : 'opacity-0 translate-y-20 scale-95'
174
  }`}
175
  >
176
+ {/* Main CTA card with extreme effects */}
177
+ <div className="relative bounce-in">
178
+ {/* Extreme animated border */}
179
+ <div className="absolute -inset-2 rounded-[2.5rem] animated-border opacity-60" />
180
+
181
+ {/* Glow ring */}
182
+ <div className="absolute -inset-4 rounded-[3rem] opacity-30 breathing-glow">
183
+ <div className="absolute inset-0 rounded-[3rem] bg-gradient-to-r from-primary via-purple-500 to-pink-500 opacity-20 blur-2xl" />
184
+ </div>
185
 
186
+ <div className="relative glass-extreme rounded-[2.5rem] p-14 md:p-20 overflow-hidden">
187
  {/* Inner glow */}
188
+ <div className="absolute inset-0 bg-gradient-to-br from-primary/15 via-transparent to-purple-500/15 opacity-60" />
189
 
190
+ {/* Plasma effect overlay */}
191
+ <div className="absolute inset-0 plasma-effect opacity-10" />
192
+
193
+ {/* Floating extreme icons */}
194
+ <div className="absolute top-10 left-10 animate-float" style={{ animationDelay: '0s' }}>
195
+ <div className="glass-extreme p-4 rounded-2xl breathing-glow">
196
+ <Rocket className="w-8 h-8 text-primary" suppressHydrationWarning />
197
+ </div>
198
+ </div>
199
+ <div className="absolute top-16 right-16 animate-float" style={{ animationDelay: '1.5s' }}>
200
+ <div className="glass-extreme p-3 rounded-xl breathing-glow">
201
+ <Zap className="w-7 h-7 text-amber-500" suppressHydrationWarning />
202
+ </div>
203
  </div>
204
+ <div className="absolute bottom-12 left-20 animate-float" style={{ animationDelay: '3s' }}>
205
+ <div className="glass-extreme p-3 rounded-xl breathing-glow">
206
+ <MessageCircle className="w-7 h-7 text-cyan-500" suppressHydrationWarning />
207
+ </div>
208
  </div>
209
+ <div className="absolute bottom-20 right-24 animate-float" style={{ animationDelay: '4.5s' }}>
210
+ <div className="glass-extreme p-3 rounded-xl breathing-glow">
211
+ <Star className="w-6 h-6 text-pink-500" suppressHydrationWarning />
212
+ </div>
213
  </div>
214
 
215
  <div className="relative z-10">
216
  {/* Badge */}
217
+ <div className="bounce-in mb-10">
218
+ <div className="relative inline-flex items-center gap-3 px-6 py-3 rounded-full glass-extreme shake-hover">
219
+ <div className="relative">
220
+ <span className="absolute inset-0 rounded-full bg-primary animate-ping opacity-75" />
221
+ <Sparkles className="relative h-5 w-5 text-primary" suppressHydrationWarning />
222
+ </div>
223
+ <span className="text-sm font-bold dynamic-underline">Let&apos;s Create Together</span>
224
+ <Sparkles className="h-5 w-5 text-primary electric-glow" suppressHydrationWarning />
225
+ </div>
226
  </div>
227
 
228
+ {/* Heading */}
229
+ <h2 className="text-5xl md:text-6xl lg:text-7xl mb-10 text-foreground font-black tracking-tight leading-tight">
230
  Ready to Start Your{" "}
231
+ <span className="holographic">Project</span>
 
 
 
 
 
 
 
 
 
232
  ?
233
  </h2>
234
 
235
+ <p className="text-xl md:text-2xl mb-14 max-w-3xl text-muted-foreground leading-relaxed mx-auto">
236
  Let&apos;s build something{" "}
237
+ <span className="text-primary font-bold glow-text">extraordinary</span>{" "}
238
+ together. Get a free consultation and detailed project quote today.
239
  </p>
240
 
241
+ {/* Extreme CTAs */}
242
+ <div className="flex flex-col sm:flex-row gap-6 justify-center">
243
  <Button
244
  asChild
245
  size="xl"
246
+ className="group h-16 px-12 text-xl font-bold rounded-2xl morphing-bg text-primary-foreground breathing-glow ripple-button shake-hover relative overflow-hidden"
247
  >
248
  <Link href="/quote">
249
+ <span className="relative z-10 flex items-center gap-3">
250
  Get a Free Quote
251
+ <Rocket className="w-6 h-6 transition-transform group-hover:translate-x-2 group-hover:-translate-y-1 group-hover:scale-125" suppressHydrationWarning />
252
  </span>
253
  </Link>
254
  </Button>
 
256
  asChild
257
  size="xl"
258
  variant="outline"
259
+ className="group h-16 px-12 text-xl font-bold rounded-2xl glass-extreme border-2 border-primary/30 hover:border-primary breathing-glow"
260
  >
261
  <Link href="/contact">
262
+ <MessageCircle className="mr-3 h-6 w-6 group-hover:rotate-12 transition-transform" suppressHydrationWarning />
263
  Contact Us
264
  </Link>
265
  </Button>
266
  </div>
267
 
268
+ {/* Trust badges with extreme styling */}
269
+ <div className="flex items-center justify-center gap-8 mt-14">
270
+ {[
271
+ { icon: Zap, text: "Fast Response", color: "text-amber-500" },
272
+ { icon: Rocket, text: "Free Consultation", color: "text-primary" },
273
+ { icon: Sparkles, text: "Custom Solutions", color: "text-cyan-500" },
274
+ ].map((badge, i) => (
275
+ <div
276
+ key={badge.text}
277
+ className="flex items-center gap-2 glass-extreme px-4 py-2 rounded-full slide-up-fade"
278
+ style={{ animationDelay: `${1 + i * 0.15}s` }}
279
+ >
280
+ <badge.icon className={`w-5 h-5 ${badge.color}`} suppressHydrationWarning />
281
+ <span className="text-sm font-semibold">{badge.text}</span>
282
+ </div>
283
+ ))}
284
  </div>
285
  </div>
286
 
287
  {/* Shine effect */}
288
+ <div className="absolute inset-0 shine-effect pointer-events-none rounded-[2.5rem]" />
289
  </div>
290
  </div>
291
  </div>
292
  </div>
293
+
294
+ {/* Gradient overlays */}
295
+ <div className="absolute top-0 left-0 right-0 h-20 bg-gradient-to-b from-background to-transparent pointer-events-none" />
296
+ <div className="absolute bottom-0 left-0 right-0 h-20 bg-gradient-to-t from-background to-transparent pointer-events-none" />
297
  </section>
298
  )
299
  }
components/home/HeroSection.tsx CHANGED
@@ -2,55 +2,40 @@
2
 
3
  import Link from "next/link"
4
  import { Button } from "@/components/ui/button"
5
- import { ArrowRight, Sparkles, Code2, Rocket, Zap } from "lucide-react"
6
  import { useEffect, useRef, useState } from "react"
7
 
8
- // Pre-computed particle data to avoid hydration mismatch
9
- // These values are static and will be the same on server and client
10
- const PARTICLES = [
11
- // Top-left quadrant
12
- { left: 5.2, top: 8.7, delay: 2.4, duration: 18.6, width: 5.8, height: 5.2, opacity: 0.32 },
13
- { left: 12.8, top: 15.3, delay: 7.1, duration: 21.2, width: 4.5, height: 6.8, opacity: 0.28 },
14
- { left: 8.4, top: 28.9, delay: 11.5, duration: 19.8, width: 6.2, height: 4.9, opacity: 0.35 },
15
- { left: 18.6, top: 6.2, delay: 4.8, duration: 22.4, width: 5.1, height: 5.7, opacity: 0.30 },
16
- { left: 3.9, top: 42.5, delay: 9.3, duration: 17.5, width: 4.8, height: 6.3, opacity: 0.26 },
17
- { left: 15.3, top: 35.8, delay: 14.7, duration: 20.1, width: 6.5, height: 5.4, opacity: 0.33 },
18
-
19
- // Top-right quadrant
20
- { left: 82.4, top: 5.8, delay: 5.2, duration: 19.4, width: 5.6, height: 6.1, opacity: 0.31 },
21
- { left: 91.7, top: 18.4, delay: 10.8, duration: 22.8, width: 4.2, height: 5.5, opacity: 0.27 },
22
- { left: 76.3, top: 12.6, delay: 3.1, duration: 18.2, width: 6.8, height: 4.6, opacity: 0.34 },
23
- { left: 88.5, top: 32.9, delay: 8.9, duration: 21.6, width: 5.3, height: 6.7, opacity: 0.29 },
24
- { left: 94.2, top: 8.3, delay: 13.4, duration: 17.9, width: 4.9, height: 5.8, opacity: 0.32 },
25
-
26
- // Bottom-left quadrant
27
- { left: 6.8, top: 72.4, delay: 6.5, duration: 20.3, width: 5.9, height: 5.1, opacity: 0.28 },
28
- { left: 14.2, top: 85.6, delay: 12.1, duration: 18.7, width: 4.6, height: 6.4, opacity: 0.33 },
29
- { left: 9.7, top: 58.3, delay: 1.8, duration: 22.1, width: 6.1, height: 4.8, opacity: 0.30 },
30
- { left: 22.5, top: 91.8, delay: 9.6, duration: 19.5, width: 5.4, height: 5.9, opacity: 0.26 },
31
-
32
- // Bottom-right quadrant
33
- { left: 85.3, top: 78.2, delay: 4.3, duration: 21.8, width: 4.7, height: 6.2, opacity: 0.31 },
34
- { left: 92.8, top: 65.4, delay: 11.2, duration: 18.4, width: 5.2, height: 5.6, opacity: 0.29 },
35
- { left: 78.6, top: 88.9, delay: 7.8, duration: 20.7, width: 6.4, height: 4.5, opacity: 0.34 },
36
- { left: 96.1, top: 82.5, delay: 2.9, duration: 22.6, width: 5.8, height: 6.1, opacity: 0.27 },
37
-
38
- // Center spread (top area only to avoid stat cards)
39
- { left: 35.4, top: 12.8, delay: 8.4, duration: 19.1, width: 5.5, height: 5.3, opacity: 0.30 },
40
- { left: 48.7, top: 8.2, delay: 3.6, duration: 21.4, width: 4.4, height: 6.6, opacity: 0.28 },
41
- { left: 62.3, top: 15.9, delay: 10.2, duration: 18.9, width: 6.3, height: 5.0, opacity: 0.32 },
42
- { left: 55.8, top: 5.4, delay: 6.1, duration: 22.2, width: 5.1, height: 5.8, opacity: 0.29 },
43
- { left: 41.2, top: 22.6, delay: 12.8, duration: 17.8, width: 5.7, height: 4.7, opacity: 0.31 },
44
- { left: 68.9, top: 10.3, delay: 5.4, duration: 20.5, width: 4.9, height: 6.0, opacity: 0.33 },
45
- { left: 29.6, top: 3.8, delay: 9.7, duration: 21.9, width: 6.0, height: 5.2, opacity: 0.27 },
46
- { left: 72.4, top: 18.5, delay: 2.2, duration: 19.3, width: 5.3, height: 5.5, opacity: 0.30 },
47
- { left: 45.1, top: 25.7, delay: 7.5, duration: 18.1, width: 4.6, height: 6.3, opacity: 0.28 },
48
- { left: 58.6, top: 2.9, delay: 11.8, duration: 22.7, width: 6.2, height: 4.8, opacity: 0.32 },
49
  ]
50
 
51
  export function HeroSection() {
52
  const heroRef = useRef<HTMLDivElement>(null)
53
- const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 })
54
 
55
  useEffect(() => {
56
  const handleMouseMove = (e: MouseEvent) => {
@@ -68,196 +53,296 @@ export function HeroSection() {
68
  }, [])
69
 
70
  return (
71
- <section ref={heroRef} className="relative overflow-hidden pt-20 pb-32 md:pt-28 lg:pt-36 xl:pt-44 bg-background min-h-screen flex items-center">
72
- {/* Animated gradient mesh background */}
73
- <div className="absolute inset-0 gradient-mesh opacity-40" />
74
-
75
- {/* Noise overlay for depth */}
76
- <div className="absolute inset-0 noise-overlay" />
77
 
78
- {/* Morphing blob 1 */}
79
- <div
80
- className="absolute w-[500px] h-[500px] morphing-blob opacity-30 blur-3xl pointer-events-none"
81
- style={{
82
- background: `linear-gradient(135deg, hsl(var(--primary)), hsl(280, 65%, 60%))`,
83
- top: '10%',
84
- right: '5%',
85
- transform: `translate(${mousePosition.x * 30}px, ${mousePosition.y * 30}px)`,
86
- transition: 'transform 0.3s ease-out',
87
- }}
88
- />
89
 
90
- {/* Morphing blob 2 */}
91
- <div
92
- className="absolute w-[400px] h-[400px] morphing-blob opacity-20 blur-3xl pointer-events-none"
93
- style={{
94
- background: `linear-gradient(135deg, hsl(280, 65%, 60%), hsl(199, 89%, 48%))`,
95
- bottom: '10%',
96
- left: '5%',
97
- transform: `translate(${-mousePosition.x * 20}px, ${-mousePosition.y * 20}px)`,
98
- transition: 'transform 0.3s ease-out',
99
- animationDelay: '-5s',
100
- }}
101
- />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
 
103
- {/* Floating particles - behind all content */}
104
- <div className="absolute inset-0 pointer-events-none overflow-hidden -z-10">
105
- {PARTICLES.map((particle, i) => (
106
- <div
107
- key={i}
108
- className="particle"
109
- style={{
110
- left: `${particle.left}%`,
111
- top: `${particle.top}%`,
112
- animationDelay: `${particle.delay}s`,
113
- animationDuration: `${particle.duration}s`,
114
- width: `${particle.width}px`,
115
- height: `${particle.height}px`,
116
- opacity: particle.opacity,
117
- }}
118
- />
119
- ))}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  </div>
121
 
122
- {/* Aurora effect */}
123
- <div className="absolute inset-0 aurora-bg opacity-30" />
 
 
 
124
 
125
- {/* Subtle grid pattern */}
126
- <div className="absolute inset-0 -z-10 opacity-10">
127
- <div className="absolute inset-0 bg-[radial-gradient(circle_at_50%_50%,hsl(var(--muted))_1px,transparent_1px)] bg-size-[32px_32px]" />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  </div>
129
 
130
- <div className="container relative z-10 flex flex-col items-center text-center">
131
- {/* Animated badge */}
132
- <div className="animate-fade-in-up mb-8 inline-flex items-center gap-2 rounded-full glass-card px-6 py-3 text-sm font-medium transition-all duration-500 hover:scale-105 hover:shadow-lg group cursor-default">
133
- <span className="relative flex h-2 w-2">
134
- <span className="animate-ping absolute inline-flex h-full w-full rounded-full bg-primary opacity-75" />
135
- <span className="relative inline-flex rounded-full h-2 w-2 bg-primary" />
136
- </span>
137
- <Sparkles className="h-4 w-4 text-primary animate-pulse" suppressHydrationWarning />
138
- <span className="interactive-underline cursor-pointer">Your Vision, Our Craft</span>
 
 
 
 
 
 
 
 
 
 
139
  </div>
140
 
141
- {/* H1 with creative styling */}
142
- <h1 className="animate-fade-in-up animate-delay-1 mb-8 text-5xl md:text-6xl lg:text-7xl xl:text-8xl font-extrabold tracking-tight leading-tight">
143
- <span className="block">We Design &amp; Build</span>
144
- <span className="relative inline-block mt-2">
145
- <span className="gradient-text">Digital Products</span>
146
- <svg className="absolute -bottom-2 left-0 w-full" viewBox="0 0 300 12" fill="none">
147
- <path d="M2 10C50 4 150 2 298 10" stroke="hsl(var(--primary))" strokeWidth="3" strokeLinecap="round" className="animate-dash" style={{
148
- strokeDasharray: '300',
149
- strokeDashoffset: '300',
150
- animation: 'dash 2s ease forwards 0.5s'
151
- }} />
152
- </svg>
153
  </span>
154
- <span className="block mt-2 wave-text">
155
- <span>T</span><span>h</span><span>a</span><span>t</span>
156
- <span className="mx-2"> </span>
157
- <span className="text-primary neon-glow">GROW</span>
158
  </span>
159
  </h1>
160
 
161
  {/* Subheadline */}
162
- <p className="animate-fade-in-up animate-delay-2 mb-12 max-w-2xl text-lg sm:text-xl text-muted-foreground leading-relaxed">
163
- From stunning websites to powerful mobile apps — we turn ambitious ideas
164
- into high-performance digital experiences that your users will{" "}
165
- <span className="text-primary font-medium">love</span>.
 
166
  </p>
167
 
168
- {/* Enhanced CTAs */}
169
- <div className="animate-fade-in-up animate-delay-3 flex flex-col gap-4 sm:flex-row">
170
- <Button asChild size="xl" className="group relative overflow-hidden shine-effect ripple-button">
 
 
 
 
171
  <Link href="/quote">
172
- <span className="relative z-10 flex items-center">
173
- Get Started
174
- <ArrowRight className="ml-2 h-4 w-4 transition-transform group-hover:translate-x-1" suppressHydrationWarning />
175
  </span>
176
  </Link>
177
  </Button>
178
- <Button asChild variant="outline" size="xl" className="group glass-card hover:bg-primary/10">
 
 
 
 
 
179
  <Link href="/portfolio">
180
- <span className="flex items-center">
181
- View Portfolio
182
- <Rocket className="ml-2 h-4 w-4 transition-transform group-hover:rotate-12" suppressHydrationWarning />
183
  </span>
184
  </Link>
185
  </Button>
186
  </div>
187
 
188
- {/* Floating tech icons */}
189
- <div className="absolute top-1/4 left-10 hidden xl:block animate-float" style={{ animationDelay: '0s' }}>
190
- <div className="glass-card p-3 rounded-xl">
191
- <Code2 className="h-6 w-6 text-primary" suppressHydrationWarning />
192
- </div>
193
- </div>
194
- <div className="absolute top-1/3 right-10 hidden xl:block animate-float" style={{ animationDelay: '1s' }}>
195
- <div className="glass-card p-3 rounded-xl">
196
- <Zap className="h-6 w-6 text-amber-500" suppressHydrationWarning />
197
- </div>
198
- </div>
199
- <div className="absolute bottom-1/3 left-20 hidden xl:block animate-float" style={{ animationDelay: '2s' }}>
200
- <div className="glass-card p-3 rounded-xl">
201
- <Rocket className="h-6 w-6 text-cyan-500" suppressHydrationWarning />
202
- </div>
203
- </div>
204
-
205
- {/* Key Statistics with enhanced styling */}
206
- <div className="animate-fade-in-up animate-delay-5 mt-24 relative">
207
- {/* Background overlay to hide particles behind cards */}
208
- <div className="absolute inset-0 bg-gradient-to-t from-background via-background/95 to-background/80 -z-10 rounded-3xl" />
209
-
210
- <div className="grid grid-cols-1 sm:grid-cols-3 gap-6 md:gap-8 w-full max-w-4xl">
211
  {[
212
- { value: "50+", label: "Projects Shipped", icon: Rocket },
213
- { value: "98%", label: "Client Satisfaction", icon: Sparkles },
214
- { value: "5+", label: "Years of Expertise", icon: Zap },
215
  ].map((stat, i) => (
216
  <div
217
  key={stat.label}
218
- className="group relative text-center cursor-default"
 
219
  >
220
- {/* Animated border */}
221
- <div className="absolute inset-0 rounded-3xl animated-border opacity-0 group-hover:opacity-100 transition-opacity duration-500" />
222
-
223
- <div className="relative glass-card rounded-3xl p-8 transition-all duration-500 hover:scale-105 hover:-translate-y-2">
224
- {/* Icon */}
225
- <stat.icon className="h-6 w-6 text-primary mx-auto mb-3 opacity-60 group-hover:opacity-100 group-hover:scale-110 transition-all duration-300" suppressHydrationWarning />
226
-
227
- {/* Value with counter animation */}
228
- <div className="text-4xl md:text-5xl font-bold gradient-text mb-2 transition-all duration-300 group-hover:scale-110 counter-animate">
229
- {stat.value}
230
  </div>
231
 
232
- {/* Label */}
233
- <p className="text-sm text-muted-foreground transition-colors duration-300 group-hover:text-foreground">
234
- {stat.label}
235
- </p>
 
 
 
 
 
 
236
 
237
- {/* Shine effect on hover */}
238
- <div className="absolute inset-0 rounded-3xl shine-effect pointer-events-none" />
 
 
 
239
  </div>
240
  </div>
241
  ))}
242
- </div>
243
  </div>
244
 
245
  {/* Scroll indicator */}
246
- <div className="absolute bottom-8 left-1/2 -translate-x-1/2 animate-fade-in animate-delay-7">
247
- <div className="scroll-indicator cursor-pointer hover:scale-110 transition-transform" onClick={() => {
248
- window.scrollTo({ top: window.innerHeight, behavior: 'smooth' })
249
- }} />
 
 
 
250
  </div>
251
  </div>
252
 
253
- {/* CSS for dash animation */}
254
- <style jsx>{`
255
- @keyframes dash {
256
- to {
257
- stroke-dashoffset: 0;
258
- }
259
- }
260
- `}</style>
261
  </section>
262
  )
263
  }
 
2
 
3
  import Link from "next/link"
4
  import { Button } from "@/components/ui/button"
5
+ import { ArrowRight, Sparkles, Code2, Rocket, Zap, Star, Layers, Globe } from "lucide-react"
6
  import { useEffect, useRef, useState } from "react"
7
 
8
+ // Pre-computed extreme particle data
9
+ const EXTREME_PARTICLES = [
10
+ // Cosmic dust particles
11
+ { left: 10, top: 15, delay: 0, duration: 25, size: 4, type: 'cosmic' },
12
+ { left: 25, top: 8, delay: 3, duration: 22, size: 3, type: 'cosmic' },
13
+ { left: 40, top: 22, delay: 6, duration: 28, size: 5, type: 'cosmic' },
14
+ { left: 55, top: 5, delay: 9, duration: 24, size: 4, type: 'cosmic' },
15
+ { left: 70, top: 18, delay: 12, duration: 26, size: 3, type: 'cosmic' },
16
+ { left: 85, top: 10, delay: 15, duration: 23, size: 4, type: 'cosmic' },
17
+ { left: 15, top: 45, delay: 2, duration: 27, size: 3, type: 'cosmic' },
18
+ { left: 88, top: 35, delay: 8, duration: 25, size: 5, type: 'cosmic' },
19
+ // Floating orbs
20
+ { left: 5, top: 25, delay: 4, duration: 30, size: 80, type: 'orb' },
21
+ { left: 92, top: 55, delay: 10, duration: 35, size: 60, type: 'orb' },
22
+ { left: 20, top: 70, delay: 7, duration: 28, size: 50, type: 'orb' },
23
+ { left: 75, top: 80, delay: 14, duration: 32, size: 70, type: 'orb' },
24
+ // Energy rings
25
+ { left: 50, top: 50, delay: 0, duration: 15, size: 200, type: 'ring' },
26
+ { left: 50, top: 50, delay: 5, duration: 15, size: 200, type: 'ring' },
27
+ { left: 50, top: 50, delay: 10, duration: 15, size: 200, type: 'ring' },
28
+ // Quantum particles
29
+ { left: 30, top: 30, delay: 1, duration: 8, size: 6, type: 'quantum' },
30
+ { left: 60, top: 20, delay: 3, duration: 10, size: 8, type: 'quantum' },
31
+ { left: 80, top: 40, delay: 5, duration: 9, size: 5, type: 'quantum' },
32
+ { left: 20, top: 60, delay: 7, duration: 11, size: 7, type: 'quantum' },
33
+ { left: 70, top: 70, delay: 9, duration: 8, size: 6, type: 'quantum' },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  ]
35
 
36
  export function HeroSection() {
37
  const heroRef = useRef<HTMLDivElement>(null)
38
+ const [mousePosition, setMousePosition] = useState({ x: 0.5, y: 0.5 })
39
 
40
  useEffect(() => {
41
  const handleMouseMove = (e: MouseEvent) => {
 
53
  }, [])
54
 
55
  return (
56
+ <section ref={heroRef} className="relative overflow-hidden min-h-screen flex items-center bg-background">
57
+ {/* Extreme animated background layers */}
58
+ <div className="absolute inset-0">
59
+ {/* Morphing gradient mesh */}
60
+ <div className="absolute inset-0 morphing-bg opacity-30" />
 
61
 
62
+ {/* Cyber grid */}
63
+ <div className="absolute inset-0 cyber-grid opacity-20" />
 
 
 
 
 
 
 
 
 
64
 
65
+ {/* Plasma orbs */}
66
+ <div
67
+ className="absolute w-[600px] h-[600px] rounded-full liquid-blob opacity-40 blur-3xl pointer-events-none"
68
+ style={{
69
+ background: `radial-gradient(circle, hsl(var(--primary)) 0%, hsl(280, 65%, 60%) 50%, transparent 70%)`,
70
+ top: '10%',
71
+ right: '10%',
72
+ transform: `translate(${mousePosition.x * 50}px, ${mousePosition.y * 50}px)`,
73
+ transition: 'transform 0.5s cubic-bezier(0.23, 1, 0.32, 1)',
74
+ }}
75
+ />
76
+ <div
77
+ className="absolute w-[500px] h-[500px] rounded-full liquid-blob opacity-30 blur-3xl pointer-events-none"
78
+ style={{
79
+ background: `radial-gradient(circle, hsl(280, 65%, 60%) 0%, hsl(320, 75%, 55%) 50%, transparent 70%)`,
80
+ bottom: '10%',
81
+ left: '5%',
82
+ transform: `translate(${-mousePosition.x * 40}px, ${-mousePosition.y * 40}px)`,
83
+ transition: 'transform 0.5s cubic-bezier(0.23, 1, 0.32, 1)',
84
+ animationDelay: '-10s',
85
+ }}
86
+ />
87
+ <div
88
+ className="absolute w-[400px] h-[400px] rounded-full liquid-blob opacity-25 blur-3xl pointer-events-none"
89
+ style={{
90
+ background: `radial-gradient(circle, hsl(199, 89%, 48%) 0%, hsl(var(--primary)) 50%, transparent 70%)`,
91
+ top: '50%',
92
+ left: '50%',
93
+ transform: `translate(-50%, -50%) translate(${mousePosition.x * 30}px, ${mousePosition.y * 30}px)`,
94
+ transition: 'transform 0.5s cubic-bezier(0.23, 1, 0.32, 1)',
95
+ animationDelay: '-5s',
96
+ }}
97
+ />
98
+ </div>
99
 
100
+ {/* Extreme particles */}
101
+ <div className="absolute inset-0 pointer-events-none overflow-hidden">
102
+ {EXTREME_PARTICLES.map((particle, i) => {
103
+ if (particle.type === 'cosmic') {
104
+ return (
105
+ <div
106
+ key={i}
107
+ className="cosmic-dust"
108
+ style={{
109
+ left: `${particle.left}%`,
110
+ top: `${particle.top}%`,
111
+ width: `${particle.size}px`,
112
+ height: `${particle.size}px`,
113
+ animationDelay: `${particle.delay}s`,
114
+ animationDuration: `${particle.duration}s`,
115
+ }}
116
+ />
117
+ )
118
+ } else if (particle.type === 'orb') {
119
+ return (
120
+ <div
121
+ key={i}
122
+ className="absolute rounded-full quantum-particle"
123
+ style={{
124
+ left: `${particle.left}%`,
125
+ top: `${particle.top}%`,
126
+ width: `${particle.size}px`,
127
+ height: `${particle.size}px`,
128
+ background: `radial-gradient(circle, hsl(var(--primary) / 0.3), transparent)`,
129
+ filter: 'blur(1px)',
130
+ animationDelay: `${particle.delay}s`,
131
+ animationDuration: `${particle.duration}s`,
132
+ }}
133
+ />
134
+ )
135
+ } else if (particle.type === 'ring') {
136
+ return (
137
+ <div
138
+ key={i}
139
+ className="energy-wave"
140
+ style={{
141
+ left: `${particle.left}%`,
142
+ top: `${particle.top}%`,
143
+ width: `${particle.size}px`,
144
+ height: `${particle.size}px`,
145
+ marginLeft: `-${particle.size / 2}px`,
146
+ marginTop: `-${particle.size / 2}px`,
147
+ animationDelay: `${particle.delay}s`,
148
+ }}
149
+ />
150
+ )
151
+ } else {
152
+ return (
153
+ <div
154
+ key={i}
155
+ className="absolute rounded-full"
156
+ style={{
157
+ left: `${particle.left}%`,
158
+ top: `${particle.top}%`,
159
+ width: `${particle.size}px`,
160
+ height: `${particle.size}px`,
161
+ background: `linear-gradient(135deg, hsl(var(--primary)), hsl(280, 65%, 60%))`,
162
+ boxShadow: `0 0 ${particle.size * 2}px hsl(var(--primary) / 0.5)`,
163
+ animation: `quantum ${particle.duration}s ease-in-out infinite`,
164
+ animationDelay: `${particle.delay}s`,
165
+ }}
166
+ />
167
+ )
168
+ }
169
+ })}
170
  </div>
171
 
172
+ {/* Scan line effect */}
173
+ <div className="absolute inset-0 scan-line pointer-events-none" />
174
+
175
+ {/* Noise overlay */}
176
+ <div className="absolute inset-0 noise-overlay opacity-50" />
177
 
178
+ {/* Floating tech icons */}
179
+ <div className="absolute inset-0 pointer-events-none">
180
+ <div
181
+ className="absolute top-1/4 left-[5%] animate-float"
182
+ style={{ animationDelay: '0s' }}
183
+ >
184
+ <div className="glass-extreme p-4 rounded-2xl breathing-glow">
185
+ <Code2 className="h-8 w-8 text-primary" suppressHydrationWarning />
186
+ </div>
187
+ </div>
188
+ <div
189
+ className="absolute top-1/3 right-[5%] animate-float"
190
+ style={{ animationDelay: '1s' }}
191
+ >
192
+ <div className="glass-extreme p-4 rounded-2xl breathing-glow">
193
+ <Zap className="h-8 w-8 text-amber-500" suppressHydrationWarning />
194
+ </div>
195
+ </div>
196
+ <div
197
+ className="absolute bottom-1/3 left-[8%] animate-float"
198
+ style={{ animationDelay: '2s' }}
199
+ >
200
+ <div className="glass-extreme p-4 rounded-2xl breathing-glow">
201
+ <Rocket className="h-8 w-8 text-cyan-500" suppressHydrationWarning />
202
+ </div>
203
+ </div>
204
+ <div
205
+ className="absolute top-[60%] right-[8%] animate-float"
206
+ style={{ animationDelay: '3s' }}
207
+ >
208
+ <div className="glass-extreme p-4 rounded-2xl breathing-glow">
209
+ <Globe className="h-8 w-8 text-emerald-500" suppressHydrationWarning />
210
+ </div>
211
+ </div>
212
+ <div
213
+ className="absolute top-[20%] left-[45%] animate-float"
214
+ style={{ animationDelay: '4s' }}
215
+ >
216
+ <div className="glass-extreme p-3 rounded-xl breathing-glow">
217
+ <Layers className="h-6 w-6 text-purple-500" suppressHydrationWarning />
218
+ </div>
219
+ </div>
220
  </div>
221
 
222
+ <div className="container relative z-10 flex flex-col items-center text-center pt-32 pb-20">
223
+ {/* Extreme badge */}
224
+ <div className="bounce-in mb-10">
225
+ <div className="relative group">
226
+ {/* Animated border */}
227
+ <div className="absolute -inset-1 rounded-full animated-border opacity-50 group-hover:opacity-100 transition-opacity" />
228
+
229
+ <div className="relative glass-extreme px-8 py-4 rounded-full flex items-center gap-3 cursor-default shake-hover">
230
+ <div className="relative">
231
+ <span className="absolute inset-0 rounded-full bg-primary animate-ping opacity-75" />
232
+ <span className="relative flex h-3 w-3">
233
+ <Star className="h-3 w-3 text-primary-foreground" suppressHydrationWarning />
234
+ </span>
235
+ </div>
236
+ <Sparkles className="h-5 w-5 text-primary electric-glow" suppressHydrationWarning />
237
+ <span className="font-semibold text-sm dynamic-underline">Your Vision, Our Craft</span>
238
+ <Sparkles className="h-5 w-5 text-primary electric-glow" suppressHydrationWarning />
239
+ </div>
240
+ </div>
241
  </div>
242
 
243
+ {/* Extreme H1 */}
244
+ <h1 className="mb-10 text-5xl sm:text-6xl md:text-7xl lg:text-8xl xl:text-9xl font-black tracking-tighter leading-none">
245
+ <span className="block slide-up-fade" style={{ animationDelay: '0.1s' }}>
246
+ We Create
247
+ </span>
248
+ <span className="block mt-2 slide-up-fade" style={{ animationDelay: '0.2s' }}>
249
+ <span className="holographic">Digital</span>
 
 
 
 
 
250
  </span>
251
+ <span className="block mt-2 slide-up-fade" style={{ animationDelay: '0.3s' }}>
252
+ <span className="extrude-3d cursor-default">Masterpieces</span>
 
 
253
  </span>
254
  </h1>
255
 
256
  {/* Subheadline */}
257
+ <p className="slide-up-fade mb-14 max-w-3xl text-lg sm:text-xl md:text-2xl text-muted-foreground leading-relaxed" style={{ animationDelay: '0.4s' }}>
258
+ Transforming bold ideas into{" "}
259
+ <span className="text-primary font-bold glow-text">extraordinary</span>{" "}
260
+ digital experiences that captivate, engage, and{" "}
261
+ <span className="holographic font-bold">inspire</span>.
262
  </p>
263
 
264
+ {/* Extreme CTAs */}
265
+ <div className="flex flex-col gap-5 sm:flex-row slide-up-fade" style={{ animationDelay: '0.5s' }}>
266
+ <Button
267
+ asChild
268
+ size="xl"
269
+ className="group relative overflow-hidden morphing-bg text-primary-foreground font-bold text-lg px-10 py-7 rounded-2xl breathing-glow ripple-button shake-hover"
270
+ >
271
  <Link href="/quote">
272
+ <span className="relative z-10 flex items-center gap-2">
273
+ Launch Your Project
274
+ <Rocket className="h-5 w-5 transition-transform group-hover:translate-x-1 group-hover:-translate-y-1 group-hover:scale-125" suppressHydrationWarning />
275
  </span>
276
  </Link>
277
  </Button>
278
+ <Button
279
+ asChild
280
+ variant="outline"
281
+ size="xl"
282
+ className="group glass-extreme font-bold text-lg px-10 py-7 rounded-2xl border-2 border-primary/30 hover:border-primary breathing-glow"
283
+ >
284
  <Link href="/portfolio">
285
+ <span className="flex items-center gap-2">
286
+ Explore Our Work
287
+ <ArrowRight className="h-5 w-5 transition-transform group-hover:translate-x-2" suppressHydrationWarning />
288
  </span>
289
  </Link>
290
  </Button>
291
  </div>
292
 
293
+ {/* Extreme Statistics */}
294
+ <div className="mt-28 grid grid-cols-1 sm:grid-cols-3 gap-8 w-full max-w-5xl">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
295
  {[
296
+ { value: "50+", label: "Projects Delivered", icon: Rocket, color: "from-blue-500 to-cyan-400" },
297
+ { value: "98%", label: "Client Satisfaction", icon: Sparkles, color: "from-purple-500 to-pink-400" },
298
+ { value: "5+", label: "Years of Excellence", icon: Zap, color: "from-amber-500 to-orange-400" },
299
  ].map((stat, i) => (
300
  <div
301
  key={stat.label}
302
+ className="group slide-up-fade"
303
+ style={{ animationDelay: `${0.6 + i * 0.1}s` }}
304
  >
305
+ <div className="relative">
306
+ {/* Glow ring on hover */}
307
+ <div className="absolute -inset-2 rounded-[2rem] opacity-0 group-hover:opacity-100 transition-opacity duration-500">
308
+ <div className={`absolute inset-0 rounded-[2rem] bg-gradient-to-r ${stat.color} opacity-20 blur-xl`} />
 
 
 
 
 
 
309
  </div>
310
 
311
+ <div className="relative glass-extreme rounded-[2rem] p-10 transition-all duration-500 group-hover:scale-105 group-hover:-translate-y-2 floating-island spotlight-follow">
312
+ {/* Icon */}
313
+ <div className={`inline-flex p-4 rounded-2xl bg-gradient-to-br ${stat.color} mb-6 breathing-glow`}>
314
+ <stat.icon className="h-8 w-8 text-white" suppressHydrationWarning />
315
+ </div>
316
+
317
+ {/* Value */}
318
+ <div className="text-5xl md:text-6xl font-black mb-3">
319
+ <span className="holographic">{stat.value}</span>
320
+ </div>
321
 
322
+ {/* Label */}
323
+ <p className="text-base text-muted-foreground font-medium dynamic-underline">
324
+ {stat.label}
325
+ </p>
326
+ </div>
327
  </div>
328
  </div>
329
  ))}
 
330
  </div>
331
 
332
  {/* Scroll indicator */}
333
+ <div className="absolute bottom-10 left-1/2 -translate-x-1/2 bounce-in" style={{ animationDelay: '1s' }}>
334
+ <div
335
+ className="scroll-indicator cursor-pointer hover:scale-125 transition-transform breathing-glow"
336
+ onClick={() => {
337
+ window.scrollTo({ top: window.innerHeight, behavior: 'smooth' })
338
+ }}
339
+ />
340
  </div>
341
  </div>
342
 
343
+ {/* Gradient overlays */}
344
+ <div className="absolute bottom-0 left-0 right-0 h-32 bg-gradient-to-t from-background to-transparent pointer-events-none" />
345
+ <div className="absolute top-0 left-0 right-0 h-20 bg-gradient-to-b from-background/80 to-transparent pointer-events-none" />
 
 
 
 
 
346
  </section>
347
  )
348
  }
components/home/ServicesOverview.tsx CHANGED
@@ -1,7 +1,7 @@
1
  "use client"
2
 
3
  import { Card, CardContent, CardHeader } from "@/components/ui/card"
4
- import { Code, Palette, Smartphone, LineChart, ArrowUpRight, Sparkles } from "lucide-react"
5
  import Link from "next/link"
6
  import { useRef, useState, useEffect } from "react"
7
 
@@ -45,6 +45,7 @@ function ServiceCard({ service, index }: { service: typeof services[0]; index: n
45
  const [rotateX, setRotateX] = useState(0)
46
  const [rotateY, setRotateY] = useState(0)
47
  const [isHovered, setIsHovered] = useState(false)
 
48
 
49
  const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {
50
  if (!cardRef.current) return
@@ -54,8 +55,12 @@ function ServiceCard({ service, index }: { service: typeof services[0]; index: n
54
  const mouseX = e.clientX - centerX
55
  const mouseY = e.clientY - centerY
56
 
57
- setRotateX(-mouseY / 10)
58
- setRotateY(mouseX / 10)
 
 
 
 
59
  }
60
 
61
  const handleMouseLeave = () => {
@@ -67,38 +72,54 @@ function ServiceCard({ service, index }: { service: typeof services[0]; index: n
67
  return (
68
  <div
69
  ref={cardRef}
70
- className="group relative h-full"
71
  style={{
72
- perspective: '1000px',
73
- animationDelay: `${index * 0.1}s`,
74
  }}
75
  >
76
  <Link href="/services" aria-label={`Learn more about ${service.title}`} className="block h-full">
77
  <div
78
- className="relative h-full cursor-pointer transition-all duration-300"
79
  style={{
80
- transform: `rotateX(${rotateX}deg) rotateY(${rotateY}deg)`,
81
  transformStyle: 'preserve-3d',
82
  }}
83
  onMouseMove={handleMouseMove}
84
  onMouseEnter={() => setIsHovered(true)}
85
  onMouseLeave={handleMouseLeave}
86
  >
87
- {/* Glow effect */}
88
  <div
89
- className="absolute -inset-1 rounded-3xl opacity-0 group-hover:opacity-100 transition-opacity duration-500 blur-xl"
90
  style={{
91
- background: `linear-gradient(135deg, ${service.accentColor}, transparent)`,
 
 
92
  }}
93
  />
94
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  {/* Card */}
96
- <Card className="relative h-full overflow-hidden glass-card rounded-3xl border-0 transition-all duration-300 group-hover:shadow-2xl">
97
- {/* Animated gradient border */}
98
  <div
99
- className="absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity duration-500"
100
  style={{
101
- background: `linear-gradient(135deg, ${service.accentColor}20, transparent, ${service.accentColor}20)`,
102
  }}
103
  />
104
 
@@ -106,56 +127,82 @@ function ServiceCard({ service, index }: { service: typeof services[0]; index: n
106
  <div
107
  className="absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity duration-300 pointer-events-none"
108
  style={{
109
- background: `radial-gradient(600px circle at var(--mouse-x, 50%) var(--mouse-y, 50%), ${service.accentColor}15, transparent 40%)`,
110
  }}
111
  />
112
 
 
 
 
 
 
113
  <CardHeader className="relative z-10 pb-4">
114
- {/* Icon container */}
115
  <div
116
- className={`relative w-16 h-16 rounded-2xl flex items-center justify-center mb-5 transition-all duration-500 group-hover:scale-110 group-hover:rotate-3`}
117
  style={{
118
- background: `linear-gradient(135deg, ${service.accentColor}20, ${service.accentColor}10)`,
119
- boxShadow: isHovered ? `0 10px 40px ${service.accentColor}30` : 'none',
 
120
  }}
121
  >
 
 
 
 
 
 
 
 
 
122
  <service.icon
123
- className="w-8 h-8 transition-all duration-300"
124
- style={{ color: service.accentColor }}
 
 
 
125
  suppressHydrationWarning
126
  />
127
 
128
  {/* Sparkle effect on hover */}
129
  <Sparkles
130
- className="absolute -top-1 -right-1 w-4 h-4 text-primary opacity-0 group-hover:opacity-100 transition-all duration-300 group-hover:scale-110"
131
  suppressHydrationWarning
132
  />
 
 
 
 
 
 
133
  </div>
134
 
135
- {/* Title with arrow */}
136
  <h3 className="text-xl font-bold leading-tight flex items-center gap-2 group-hover:text-primary transition-colors duration-300">
137
- {service.title}
138
  <ArrowUpRight
139
- className="h-4 w-4 opacity-0 -translate-x-2 -translate-y-2 group-hover:opacity-100 group-hover:translate-x-0 group-hover:translate-y-0 transition-all duration-300 text-primary"
140
  suppressHydrationWarning
141
  />
142
  </h3>
143
  </CardHeader>
144
 
145
  <CardContent className="relative z-10">
146
- <p className="text-base text-muted-foreground group-hover:text-foreground transition-colors duration-300 leading-relaxed mb-4">
147
  {service.description}
148
  </p>
149
 
150
- {/* Feature tags */}
151
  <div className="flex flex-wrap gap-2">
152
- {service.features.map((feature) => (
153
  <span
154
  key={feature}
155
- className="px-3 py-1 rounded-full text-xs font-medium transition-all duration-300 group-hover:scale-105"
156
  style={{
157
- background: `${service.accentColor}15`,
158
  color: service.accentColor,
 
 
159
  }}
160
  >
161
  {feature}
@@ -166,7 +213,7 @@ function ServiceCard({ service, index }: { service: typeof services[0]; index: n
166
 
167
  {/* Bottom gradient line */}
168
  <div
169
- className="absolute bottom-0 left-0 right-0 h-1 opacity-0 group-hover:opacity-100 transition-opacity duration-500"
170
  style={{
171
  background: `linear-gradient(90deg, transparent, ${service.accentColor}, transparent)`,
172
  }}
@@ -203,52 +250,65 @@ export function ServicesOverview() {
203
  }, [])
204
 
205
  return (
206
- <section ref={sectionRef} className="py-24 bg-background relative overflow-hidden" id="services">
207
- {/* Background elements */}
208
- <div className="absolute inset-0 gradient-mesh opacity-20" />
209
- <div className="absolute top-0 left-1/4 w-96 h-96 bg-primary/5 rounded-full blur-3xl" />
210
- <div className="absolute bottom-0 right-1/4 w-96 h-96 bg-accent/5 rounded-full blur-3xl" />
 
 
 
 
 
 
 
 
 
211
 
212
  <div className="container relative z-10">
213
- {/* Section header with reveal animation */}
214
- <div className={`text-center mb-16 transition-all duration-1000 ${isVisible ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-10'}`}>
215
- <div className="inline-flex items-center gap-2 px-4 py-2 rounded-full glass-card mb-6">
216
- <Sparkles className="h-4 w-4 text-primary animate-pulse" suppressHydrationWarning />
217
- <span className="text-sm font-medium text-primary">What We Do</span>
 
 
 
 
 
 
218
  </div>
219
 
220
- <h2 className="text-4xl md:text-5xl mb-6 font-bold tracking-tight">
221
- Our <span className="gradient-text">Expertise</span>
222
  </h2>
223
 
224
- <p className="text-lg text-muted-foreground max-w-2xl mx-auto leading-relaxed">
225
- We offer a comprehensive range of digital services to help your business{" "}
226
- <span className="text-primary font-medium">grow</span> and{" "}
227
- <span className="text-primary font-medium">succeed</span>.
 
 
228
  </p>
229
  </div>
230
 
231
- {/* Services grid */}
232
- <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
233
  {services.map((service, i) => (
234
- <div
235
- key={service.title}
236
- className={`transition-all duration-700 ${isVisible ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-10'}`}
237
- style={{ transitionDelay: `${i * 100}ms` }}
238
- >
239
- <ServiceCard service={service} index={i} />
240
- </div>
241
  ))}
242
  </div>
243
 
244
- {/* Bottom CTA */}
245
- <div className={`text-center mt-12 transition-all duration-1000 delay-500 ${isVisible ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-10'}`}>
246
- <p className="text-muted-foreground">
247
- Need something custom?{" "}
248
- <Link href="/contact" className="text-primary hover:underline underline-offset-4 font-medium interactive-underline">
249
- Let&apos;s discuss your project
250
- </Link>
251
- </p>
 
 
252
  </div>
253
  </div>
254
  </section>
 
1
  "use client"
2
 
3
  import { Card, CardContent, CardHeader } from "@/components/ui/card"
4
+ import { Code, Palette, Smartphone, LineChart, ArrowUpRight, Sparkles, Zap } from "lucide-react"
5
  import Link from "next/link"
6
  import { useRef, useState, useEffect } from "react"
7
 
 
45
  const [rotateX, setRotateX] = useState(0)
46
  const [rotateY, setRotateY] = useState(0)
47
  const [isHovered, setIsHovered] = useState(false)
48
+ const [mousePos, setMousePos] = useState({ x: 50, y: 50 })
49
 
50
  const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {
51
  if (!cardRef.current) return
 
55
  const mouseX = e.clientX - centerX
56
  const mouseY = e.clientY - centerY
57
 
58
+ setRotateX(-mouseY / 8)
59
+ setRotateY(mouseX / 8)
60
+ setMousePos({
61
+ x: ((e.clientX - rect.left) / rect.width) * 100,
62
+ y: ((e.clientY - rect.top) / rect.height) * 100,
63
+ })
64
  }
65
 
66
  const handleMouseLeave = () => {
 
72
  return (
73
  <div
74
  ref={cardRef}
75
+ className="group relative h-full slide-up-fade"
76
  style={{
77
+ perspective: '1500px',
78
+ animationDelay: `${index * 0.15}s`,
79
  }}
80
  >
81
  <Link href="/services" aria-label={`Learn more about ${service.title}`} className="block h-full">
82
  <div
83
+ className="relative h-full cursor-pointer transition-all duration-500"
84
  style={{
85
+ transform: `rotateX(${rotateX}deg) rotateY(${rotateY}deg) translateZ(10px)`,
86
  transformStyle: 'preserve-3d',
87
  }}
88
  onMouseMove={handleMouseMove}
89
  onMouseEnter={() => setIsHovered(true)}
90
  onMouseLeave={handleMouseLeave}
91
  >
92
+ {/* Extreme glow effect */}
93
  <div
94
+ className={`absolute -inset-2 rounded-3xl transition-all duration-500 ${isHovered ? 'opacity-100' : 'opacity-0'}`}
95
  style={{
96
+ background: `linear-gradient(135deg, ${service.accentColor}40, ${service.accentColor}20)`,
97
+ filter: 'blur(20px)',
98
+ transform: 'translateZ(-20px)',
99
  }}
100
  />
101
 
102
+ {/* Energy rings */}
103
+ {isHovered && (
104
+ <>
105
+ <div
106
+ className="absolute -inset-4 rounded-3xl border-2 border-primary/20 energy-wave"
107
+ style={{ animationDelay: '0s' }}
108
+ />
109
+ <div
110
+ className="absolute -inset-4 rounded-3xl border-2 border-primary/10 energy-wave"
111
+ style={{ animationDelay: '0.5s' }}
112
+ />
113
+ </>
114
+ )}
115
+
116
  {/* Card */}
117
+ <Card className="relative h-full overflow-hidden glass-extreme rounded-3xl border-0 transition-all duration-500">
118
+ {/* Animated gradient overlay */}
119
  <div
120
+ className="absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity duration-700"
121
  style={{
122
+ background: `linear-gradient(135deg, ${service.accentColor}15 0%, transparent 50%, ${service.accentColor}10 100%)`,
123
  }}
124
  />
125
 
 
127
  <div
128
  className="absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity duration-300 pointer-events-none"
129
  style={{
130
+ background: `radial-gradient(400px circle at ${mousePos.x}% ${mousePos.y}%, ${service.accentColor}25, transparent 50%)`,
131
  }}
132
  />
133
 
134
+ {/* Scan line effect on hover */}
135
+ {isHovered && (
136
+ <div className="absolute inset-0 scan-line pointer-events-none opacity-50" />
137
+ )}
138
+
139
  <CardHeader className="relative z-10 pb-4">
140
+ {/* Icon container with extreme effects */}
141
  <div
142
+ className={`relative w-20 h-20 rounded-2xl flex items-center justify-center mb-6 transition-all duration-500 group-hover:scale-110 group-hover:rotate-6`}
143
  style={{
144
+ background: `linear-gradient(135deg, ${service.accentColor}30, ${service.accentColor}10)`,
145
+ boxShadow: isHovered ? `0 15px 50px ${service.accentColor}40, inset 0 1px 0 ${service.accentColor}20` : 'none',
146
+ transform: `translateZ(30px)`,
147
  }}
148
  >
149
+ {/* Glow ring behind icon */}
150
+ <div
151
+ className={`absolute inset-0 rounded-2xl transition-all duration-500 ${isHovered ? 'scale-125 opacity-100' : 'scale-100 opacity-0'}`}
152
+ style={{
153
+ background: `radial-gradient(circle, ${service.accentColor}30, transparent 70%)`,
154
+ filter: 'blur(10px)',
155
+ }}
156
+ />
157
+
158
  <service.icon
159
+ className="w-10 h-10 transition-all duration-500"
160
+ style={{
161
+ color: service.accentColor,
162
+ filter: isHovered ? `drop-shadow(0 0 10px ${service.accentColor})` : 'none',
163
+ }}
164
  suppressHydrationWarning
165
  />
166
 
167
  {/* Sparkle effect on hover */}
168
  <Sparkles
169
+ className="absolute -top-2 -right-2 w-5 h-5 text-primary opacity-0 group-hover:opacity-100 transition-all duration-500 group-hover:scale-125 electric-glow"
170
  suppressHydrationWarning
171
  />
172
+
173
+ {/* Corner accents */}
174
+ <div
175
+ className={`absolute -top-1 -left-1 w-3 h-3 rounded-full transition-all duration-500 ${isHovered ? 'scale-100 opacity-100' : 'scale-0 opacity-0'}`}
176
+ style={{ background: service.accentColor, boxShadow: `0 0 10px ${service.accentColor}` }}
177
+ />
178
  </div>
179
 
180
+ {/* Title with animated arrow */}
181
  <h3 className="text-xl font-bold leading-tight flex items-center gap-2 group-hover:text-primary transition-colors duration-300">
182
+ <span className="dynamic-underline">{service.title}</span>
183
  <ArrowUpRight
184
+ className="h-5 w-5 opacity-0 -translate-x-3 -translate-y-3 group-hover:opacity-100 group-hover:translate-x-0 group-hover:translate-y-0 transition-all duration-500 text-primary"
185
  suppressHydrationWarning
186
  />
187
  </h3>
188
  </CardHeader>
189
 
190
  <CardContent className="relative z-10">
191
+ <p className="text-base text-muted-foreground group-hover:text-foreground/80 transition-colors duration-300 leading-relaxed mb-5">
192
  {service.description}
193
  </p>
194
 
195
+ {/* Feature tags with extreme hover effects */}
196
  <div className="flex flex-wrap gap-2">
197
+ {service.features.map((feature, i) => (
198
  <span
199
  key={feature}
200
+ className="px-4 py-1.5 rounded-full text-xs font-semibold transition-all duration-500 group-hover:scale-105"
201
  style={{
202
+ background: `${service.accentColor}20`,
203
  color: service.accentColor,
204
+ animationDelay: `${i * 0.1}s`,
205
+ boxShadow: isHovered ? `0 4px 15px ${service.accentColor}20` : 'none',
206
  }}
207
  >
208
  {feature}
 
213
 
214
  {/* Bottom gradient line */}
215
  <div
216
+ className={`absolute bottom-0 left-0 right-0 h-1 transition-all duration-500 ${isHovered ? 'opacity-100' : 'opacity-0'}`}
217
  style={{
218
  background: `linear-gradient(90deg, transparent, ${service.accentColor}, transparent)`,
219
  }}
 
250
  }, [])
251
 
252
  return (
253
+ <section ref={sectionRef} className="py-32 bg-background relative overflow-hidden" id="services">
254
+ {/* Extreme background effects */}
255
+ <div className="absolute inset-0">
256
+ <div className="absolute inset-0 morphing-bg opacity-20" />
257
+ <div className="absolute inset-0 cyber-grid opacity-10" />
258
+
259
+ {/* Floating orbs */}
260
+ <div className="absolute top-20 left-20 w-72 h-72 bg-blue-500/10 rounded-full blur-3xl liquid-blob" />
261
+ <div className="absolute bottom-20 right-20 w-96 h-96 bg-purple-500/10 rounded-full blur-3xl liquid-blob" style={{ animationDelay: '-10s' }} />
262
+ <div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[600px] h-[600px] bg-primary/5 rounded-full blur-3xl plasma-effect" />
263
+ </div>
264
+
265
+ {/* Noise overlay */}
266
+ <div className="absolute inset-0 noise-overlay opacity-30" />
267
 
268
  <div className="container relative z-10">
269
+ {/* Section header with extreme animations */}
270
+ <div className={`text-center mb-20 transition-all duration-1000 ${isVisible ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-20'}`}>
271
+ <div className="bounce-in mb-8">
272
+ <div className="relative inline-flex items-center gap-3 px-6 py-3 rounded-full glass-extreme shake-hover">
273
+ <div className="relative">
274
+ <span className="absolute inset-0 rounded-full bg-primary animate-ping opacity-75" />
275
+ <Zap className="relative h-5 w-5 text-primary" suppressHydrationWarning />
276
+ </div>
277
+ <span className="text-sm font-bold dynamic-underline">What We Do</span>
278
+ <Sparkles className="h-5 w-5 text-primary electric-glow" suppressHydrationWarning />
279
+ </div>
280
  </div>
281
 
282
+ <h2 className="text-5xl md:text-6xl lg:text-7xl font-black mb-8 tracking-tight">
283
+ Our <span className="holographic">Expertise</span>
284
  </h2>
285
 
286
+ <p className="text-xl md:text-2xl text-muted-foreground max-w-3xl mx-auto leading-relaxed">
287
+ We offer a comprehensive range of{" "}
288
+ <span className="text-primary font-bold glow-text">digital services</span>{" "}
289
+ to help your business{" "}
290
+ <span className="holographic font-bold">grow</span> and{" "}
291
+ <span className="holographic font-bold">succeed</span>.
292
  </p>
293
  </div>
294
 
295
+ {/* Services grid with extreme cards */}
296
+ <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8">
297
  {services.map((service, i) => (
298
+ <ServiceCard key={service.title} service={service} index={i} />
 
 
 
 
 
 
299
  ))}
300
  </div>
301
 
302
+ {/* Bottom CTA with extreme effects */}
303
+ <div className={`text-center mt-20 transition-all duration-1000 delay-500 ${isVisible ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-20'}`}>
304
+ <div className="glass-extreme inline-block px-10 py-5 rounded-2xl breathing-glow">
305
+ <p className="text-lg text-muted-foreground">
306
+ Need something custom?{" "}
307
+ <Link href="/contact" className="text-primary font-bold dynamic-underline">
308
+ Let&apos;s discuss your project
309
+ </Link>
310
+ </p>
311
+ </div>
312
  </div>
313
  </div>
314
  </section>