Compare commits
1 Commits
06474f69b4
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c6922c5bea |
@@ -22,8 +22,10 @@ export default async function HomePage() {
|
|||||||
<HeroSection />
|
<HeroSection />
|
||||||
|
|
||||||
{/* Hero → Experience */}
|
{/* Hero → Experience */}
|
||||||
|
<div className="section-warm-bg">
|
||||||
<ExperienceSection />
|
<ExperienceSection />
|
||||||
<EducationSection />
|
<EducationSection />
|
||||||
|
</div>
|
||||||
|
|
||||||
{/* Experience → TechStack (white/dark → muted tint) */}
|
{/* Experience → TechStack (white/dark → muted tint) */}
|
||||||
<div className="bg-background">
|
<div className="bg-background">
|
||||||
|
|||||||
@@ -41,6 +41,10 @@
|
|||||||
|
|
||||||
/* Section padding */
|
/* Section padding */
|
||||||
--section-py: 6rem;
|
--section-py: 6rem;
|
||||||
|
|
||||||
|
/* Light mode section tints */
|
||||||
|
--hero-bg: linear-gradient(135deg, #fafafa 0%, #f0edff 40%, #ede9fe 60%, #f5f3ff 100%);
|
||||||
|
--section-warm: linear-gradient(180deg, #fafafa 0%, #f8f7ff 50%, #fafafa 100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark {
|
.dark {
|
||||||
@@ -64,6 +68,9 @@
|
|||||||
--glass-border: rgba(255,255,255,0.08);
|
--glass-border: rgba(255,255,255,0.08);
|
||||||
|
|
||||||
--gradient-subtle: linear-gradient(135deg, rgba(99,102,241,0.12) 0%, rgba(168,85,247,0.12) 100%);
|
--gradient-subtle: linear-gradient(135deg, rgba(99,102,241,0.12) 0%, rgba(168,85,247,0.12) 100%);
|
||||||
|
|
||||||
|
--hero-bg: none;
|
||||||
|
--section-warm: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ========== BASE STYLES ========== */
|
/* ========== BASE STYLES ========== */
|
||||||
@@ -134,14 +141,30 @@ body {
|
|||||||
z-index: 0;
|
z-index: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Grid pattern background */
|
/* Grid pattern background - softer dot pattern for light mode */
|
||||||
.grid-pattern {
|
.grid-pattern {
|
||||||
|
background-image:
|
||||||
|
radial-gradient(circle, var(--border) 1px, transparent 1px);
|
||||||
|
background-size: 32px 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark .grid-pattern {
|
||||||
background-image:
|
background-image:
|
||||||
linear-gradient(var(--border) 1px, transparent 1px),
|
linear-gradient(var(--border) 1px, transparent 1px),
|
||||||
linear-gradient(90deg, var(--border) 1px, transparent 1px);
|
linear-gradient(90deg, var(--border) 1px, transparent 1px);
|
||||||
background-size: 60px 60px;
|
background-size: 60px 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Hero section background */
|
||||||
|
.hero-gradient-bg {
|
||||||
|
background: var(--hero-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Section warm tint for light mode */
|
||||||
|
.section-warm-bg {
|
||||||
|
background: var(--section-warm);
|
||||||
|
}
|
||||||
|
|
||||||
/* Animated gradient orbs */
|
/* Animated gradient orbs */
|
||||||
@keyframes float {
|
@keyframes float {
|
||||||
0%, 100% { transform: translateY(0px) rotate(0deg); }
|
0%, 100% { transform: translateY(0px) rotate(0deg); }
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import { motion, PanInfo } from "framer-motion";
|
import { motion, PanInfo } from "framer-motion";
|
||||||
import { ArrowDown, FileText, Download, Plus } from "lucide-react";
|
import { ArrowDown, Download } from "lucide-react";
|
||||||
import { useTranslations } from "next-intl";
|
import { useTranslations } from "next-intl";
|
||||||
|
|
||||||
const PROFILE_IMAGES = [
|
const PROFILE_IMAGES = [
|
||||||
@@ -72,17 +72,28 @@ export function HeroSection() {
|
|||||||
return (
|
return (
|
||||||
<section
|
<section
|
||||||
id="hero"
|
id="hero"
|
||||||
className="relative min-h-screen flex items-center justify-center overflow-hidden pt-20"
|
className="relative min-h-screen flex items-center justify-center overflow-hidden pt-20 hero-gradient-bg"
|
||||||
>
|
>
|
||||||
<div className="absolute inset-0 grid-pattern opacity-30" />
|
{/* Subtle ambient light blobs - organic, not grid lines */}
|
||||||
|
<div className="absolute top-0 left-0 right-0 bottom-0 pointer-events-none overflow-hidden">
|
||||||
{/* Decorative Blur Backgrounds */}
|
<motion.div
|
||||||
<div className="absolute top-1/4 -left-32 w-96 h-96 rounded-full bg-accent/20 blur-[120px] animate-pulse-glow pointer-events-none" />
|
animate={{
|
||||||
<div
|
x: [0, 30, -20, 0],
|
||||||
className="absolute bottom-1/4 -right-32 w-96 h-96 rounded-full bg-purple-500/15 blur-[120px] animate-pulse-glow pointer-events-none"
|
y: [0, -40, 20, 0],
|
||||||
style={{ animationDelay: "2s" }}
|
}}
|
||||||
|
transition={{ duration: 20, repeat: Infinity, ease: "linear" }}
|
||||||
|
className="absolute top-[10%] left-[5%] w-[500px] h-[500px] rounded-full bg-accent/[0.07] dark:bg-accent/[0.15] blur-[100px]"
|
||||||
/>
|
/>
|
||||||
<div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[600px] h-[600px] rounded-full bg-indigo-500/5 blur-[100px] pointer-events-none" />
|
<motion.div
|
||||||
|
animate={{
|
||||||
|
x: [0, -25, 15, 0],
|
||||||
|
y: [0, 30, -25, 0],
|
||||||
|
}}
|
||||||
|
transition={{ duration: 25, repeat: Infinity, ease: "linear" }}
|
||||||
|
className="absolute bottom-[10%] right-[5%] w-[450px] h-[450px] rounded-full bg-purple-500/[0.05] dark:bg-purple-500/[0.12] blur-[100px]"
|
||||||
|
/>
|
||||||
|
<div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[600px] h-[600px] rounded-full bg-indigo-400/[0.03] dark:bg-indigo-500/[0.05] blur-[120px]" />
|
||||||
|
</div>
|
||||||
|
|
||||||
<div className="relative z-10 w-full max-w-6xl mx-auto px-6">
|
<div className="relative z-10 w-full max-w-6xl mx-auto px-6">
|
||||||
<div className="grid lg:grid-cols-[1.1fr_0.9fr] gap-12 lg:gap-8 items-center">
|
<div className="grid lg:grid-cols-[1.1fr_0.9fr] gap-12 lg:gap-8 items-center">
|
||||||
@@ -203,27 +214,8 @@ export function HeroSection() {
|
|||||||
transition={{ duration: 0.8, delay: 0.4 }}
|
transition={{ duration: 0.8, delay: 0.4 }}
|
||||||
className="order-1 lg:order-2 flex justify-center lg:justify-end relative w-full perspective-1000 h-[380px] sm:h-[450px]"
|
className="order-1 lg:order-2 flex justify-center lg:justify-end relative w-full perspective-1000 h-[380px] sm:h-[450px]"
|
||||||
>
|
>
|
||||||
{/* Decorative elements behind card deck */}
|
{/* Soft glow behind card deck */}
|
||||||
<div className="absolute -bottom-10 -left-10 w-64 h-64 rounded-full bg-purple-600/30 blur-[80px] animate-pulse-glow pointer-events-none" />
|
<div className="absolute -bottom-10 left-1/2 -translate-x-1/2 w-72 h-48 rounded-full bg-accent/[0.08] dark:bg-accent/[0.15] blur-[80px] pointer-events-none" />
|
||||||
<div className="absolute -top-6 -right-6 w-40 h-40 rounded-full bg-indigo-500/20 blur-[60px] animate-pulse-glow pointer-events-none" style={{ animationDelay: "1.5s" }} />
|
|
||||||
|
|
||||||
{/* Plus icon decoration */}
|
|
||||||
<motion.div
|
|
||||||
initial={{ opacity: 0, scale: 0 }}
|
|
||||||
animate={{ opacity: 1, scale: 1 }}
|
|
||||||
transition={{ duration: 0.5, delay: 0.9 }}
|
|
||||||
className="absolute -top-2 right-4 sm:right-0 z-20 text-accent pointer-events-none"
|
|
||||||
>
|
|
||||||
<Plus size={24} strokeWidth={2.5} />
|
|
||||||
</motion.div>
|
|
||||||
|
|
||||||
{/* Circle decoration */}
|
|
||||||
<motion.div
|
|
||||||
initial={{ opacity: 0, scale: 0 }}
|
|
||||||
animate={{ opacity: 0.5, scale: 1 }}
|
|
||||||
transition={{ duration: 0.5, delay: 1.1 }}
|
|
||||||
className="absolute top-16 -right-2 sm:right-[-12px] w-8 h-8 rounded-full border-2 border-accent/50 pointer-events-none z-20"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<div className="relative w-full max-w-[280px] sm:max-w-[320px] h-full mx-auto lg:mx-0 lg:mr-8 xl:mr-16">
|
<div className="relative w-full max-w-[280px] sm:max-w-[320px] h-full mx-auto lg:mx-0 lg:mr-8 xl:mr-16">
|
||||||
{cards.map((imgUrl, index) => {
|
{cards.map((imgUrl, index) => {
|
||||||
@@ -232,7 +224,7 @@ export function HeroSection() {
|
|||||||
return (
|
return (
|
||||||
<motion.div
|
<motion.div
|
||||||
key={imgUrl}
|
key={imgUrl}
|
||||||
className="absolute inset-0 rounded-3xl overflow-hidden shadow-2xl border border-white/10 glass cursor-grab active:cursor-grabbing bg-card"
|
className="absolute inset-0 rounded-3xl overflow-hidden shadow-2xl border border-white/10 dark:border-white/10 border-black/[0.04] glass cursor-grab active:cursor-grabbing bg-card"
|
||||||
style={{
|
style={{
|
||||||
transformOrigin: "bottom center",
|
transformOrigin: "bottom center",
|
||||||
zIndex: cards.length - index,
|
zIndex: cards.length - index,
|
||||||
|
|||||||
Reference in New Issue
Block a user