diff --git a/src/app/page.module.css b/src/app/page.module.css index 890c1d8..65ce51d 100644 --- a/src/app/page.module.css +++ b/src/app/page.module.css @@ -614,4 +614,78 @@ width: 8px; height: 8px; } +} + +/* CTA Section */ +.ctaSection { + padding: 100px 0; + background: linear-gradient(135deg, #0F0525 0%, #2A0B45 100%); + text-align: center; + position: relative; + overflow: hidden; + color: white; +} + +.ctaSection::before { + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: url('data:image/svg+xml,'); + opacity: 0.5; +} + +.ctaContent { + position: relative; + z-index: 10; + max-width: 800px; + margin: 0 auto; +} + +.ctaTitle { + font-size: 3rem !important; + font-weight: 700 !important; + color: white !important; + margin-bottom: 24px !important; + line-height: 1.2 !important; +} + +.ctaDescription { + font-size: 1.25rem !important; + color: rgba(255, 255, 255, 0.9) !important; + margin-bottom: 40px !important; + line-height: 1.6 !important; +} + +.ctaButton { + height: auto !important; + padding: 12px 40px !important; + font-size: 1.1rem !important; + font-weight: 600 !important; + border-radius: 50px !important; + background: white !important; + color: #7400b8 !important; + border: none !important; + box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2); +} + +.ctaButton:hover { + transform: translateY(-2px); + box-shadow: 0 15px 35px rgba(0, 0, 0, 0.3); +} + +@media (max-width: 768px) { + .ctaSection { + padding: 80px 16px; + } + + .ctaTitle { + font-size: 2.2rem !important; + } + + .ctaDescription { + font-size: 1.1rem !important; + } } \ No newline at end of file diff --git a/src/app/page.tsx b/src/app/page.tsx index 69b90b2..d48ad68 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -2,6 +2,7 @@ "use client"; import { + ArrowRightOutlined, BulbOutlined, ClockCircleOutlined, CodeOutlined, @@ -10,7 +11,8 @@ import { StarOutlined, TeamOutlined, } from "@ant-design/icons"; -import { Card, Col, Row, Statistic, Typography } from "antd"; +import { Button, Card, Col, Row, Statistic, Typography } from "antd"; +import { motion, useScroll, useSpring } from "framer-motion"; import { useEffect, useState } from "react"; import Footer from "./components/Footer/Footer"; import HeroSection from "./components/Hero/HeroSection"; @@ -28,6 +30,13 @@ export default function Home() { const [showPreferences, setShowPreferences] = useState(true); const [loading, setLoading] = useState(true); + const { scrollYProgress } = useScroll(); + const scaleX = useSpring(scrollYProgress, { + stiffness: 100, + damping: 30, + restDelta: 0.001, + }); + useEffect(() => { // Reading localStorage can only happen on the client; do it after mount. try { @@ -58,6 +67,21 @@ export default function Home() { setShowPreferences(false); }; + const fadeInUp = { + hidden: { opacity: 0, y: 60 }, + visible: { opacity: 1, y: 0, transition: { duration: 0.6 } }, + }; + + const staggerContainer = { + hidden: { opacity: 0 }, + visible: { + opacity: 1, + transition: { + staggerChildren: 0.2, + }, + }, + }; + if (loading) { return (