+
+ {/* Background Elements */}
+
+
+
+ {/* Section Header */}
- Services
-
- Comprehensive solutions for modern digital challenges
+
+ 🛠️ What I Offer
+
+
+
+ Comprehensive Services
+
+
+
+ From concept to deployment, I provide end-to-end solutions that bring your ideas to life with modern technologies and best practices
-
+ {/* Services Grid */}
+
{services.map((service, index) => (
-
- {service.title}
- {service.description}
+
+ {/* Background Gradient */}
+
+
+ {/* Icon */}
+
+
+ {/* Content */}
+
+
+ {service.title}
+
+
+
+ {service.description}
+
+
+ {/* Features List */}
+
+ {service.features.map((feature, featureIndex) => (
+
+
+ {feature}
+
+ ))}
+
+
+
+ {/* Hover Effect */}
+
+
))}
-
+
+
+ {/* Call to Action */}
+
+
+ Ready to bring your project to life? Let's discuss how I can help.
+
+
+ {
+ document
+ .getElementById("contact")
+ ?.scrollIntoView({ behavior: "smooth" });
+ }}
+ className="group px-8 py-4 bg-gradient-to-r from-blue-600 to-purple-600 text-white rounded-2xl font-semibold text-lg overflow-hidden transition-all duration-300 hover:shadow-2xl hover:shadow-blue-500/25"
+ >
+
+
+ Get Started
+
+
+
+
+
+
);
diff --git a/src/styles/globals.css b/src/styles/globals.css
index 3fe6ad9..af8916f 100644
--- a/src/styles/globals.css
+++ b/src/styles/globals.css
@@ -1,3 +1,5 @@
+@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=Manrope:wght@300;400;500;600;700;800&family=Poppins:wght@300;400;500;600;700;800;900&display=swap');
+
@tailwind base;
@tailwind components;
@tailwind utilities;
@@ -5,21 +7,82 @@
:root {
--background: #ffffff;
--foreground: #171717;
+ --card: #ffffff;
+ --card-foreground: #0f172a;
+ --popover: #ffffff;
+ --popover-foreground: #0f172a;
+ --primary: #0f172a;
+ --primary-foreground: #f8fafc;
+ --secondary: #f1f5f9;
+ --secondary-foreground: #0f172a;
+ --muted: #f1f5f9;
+ --muted-foreground: #64748b;
+ --accent: #f1f5f9;
+ --accent-foreground: #0f172a;
+ --destructive: #ef4444;
+ --destructive-foreground: #f8fafc;
+ --border: #e2e8f0;
+ --input: #e2e8f0;
+ --ring: #3b82f6;
+ --radius: 0.5rem;
+}
+
+.dark {
+ --background: #0f0f0f;
+ --foreground: #f8fafc;
+ --card: #1a1a1a;
+ --card-foreground: #f8fafc;
+ --popover: #1a1a1a;
+ --popover-foreground: #f8fafc;
+ --primary: #f8fafc;
+ --primary-foreground: #0f172a;
+ --secondary: #1e293b;
+ --secondary-foreground: #f8fafc;
+ --muted: #1e293b;
+ --muted-foreground: #94a3b8;
+ --accent: #1e293b;
+ --accent-foreground: #f8fafc;
+ --destructive: #7f1d1d;
+ --destructive-foreground: #f8fafc;
+ --border: #1e293b;
+ --input: #1e293b;
+ --ring: #3b82f6;
}
-html.dark {
- --background: #0a0a0a;
- --foreground: #ededed;
+* {
+ border-color: hsl(var(--border));
}
html {
scroll-behavior: smooth;
+ font-feature-settings: "cv02", "cv03", "cv04", "cv11";
}
body {
color: var(--foreground);
background: var(--background);
- font-family: Arial, Helvetica, sans-serif;
+ font-family: 'Inter', 'Manrope', -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
+ font-feature-settings: "rlig" 1, "calt" 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+/* Custom scrollbar */
+::-webkit-scrollbar {
+ width: 8px;
+}
+
+::-webkit-scrollbar-track {
+ background: hsl(var(--muted));
+}
+
+::-webkit-scrollbar-thumb {
+ background: hsl(var(--muted-foreground));
+ border-radius: 8px;
+}
+
+::-webkit-scrollbar-thumb:hover {
+ background: hsl(var(--accent-foreground));
}
/* Prevent body scroll when mobile nav is open */
@@ -27,6 +90,111 @@ body.menu-open {
overflow: hidden;
}
+/* Glass morphism effect */
+.glass {
+ background: rgba(255, 255, 255, 0.1);
+ backdrop-filter: blur(10px);
+ border: 1px solid rgba(255, 255, 255, 0.2);
+}
+
+.glass-dark {
+ background: rgba(0, 0, 0, 0.1);
+ backdrop-filter: blur(10px);
+ border: 1px solid rgba(255, 255, 255, 0.1);
+}
+
+/* Gradient text */
+.gradient-text {
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ background-clip: text;
+}
+
+.gradient-text-blue {
+ background: linear-gradient(135deg, #3b82f6 0%, #06b6d4 100%);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ background-clip: text;
+}
+
+/* Button styles */
+.btn-primary {
+ background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);
+ color: white;
+ padding: 0.75rem 2rem;
+ border-radius: 0.75rem;
+ font-weight: 600;
+ transition: all 0.3s ease;
+ box-shadow: 0 4px 15px rgba(59, 130, 246, 0.3);
+}
+
+.btn-primary:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 8px 25px rgba(59, 130, 246, 0.4);
+}
+
+.btn-secondary {
+ background: transparent;
+ color: #3b82f6;
+ border: 2px solid #3b82f6;
+ padding: 0.75rem 2rem;
+ border-radius: 0.75rem;
+ font-weight: 600;
+ transition: all 0.3s ease;
+}
+
+.btn-secondary:hover {
+ background: #3b82f6;
+ color: white;
+ transform: translateY(-2px);
+ box-shadow: 0 8px 25px rgba(59, 130, 246, 0.3);
+}
+
+/* Card styles */
+.card-modern {
+ background: rgba(255, 255, 255, 0.05);
+ backdrop-filter: blur(10px);
+ border: 1px solid rgba(255, 255, 255, 0.1);
+ border-radius: 1rem;
+ transition: all 0.3s ease;
+}
+
+.card-modern:hover {
+ transform: translateY(-8px);
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
+ border-color: rgba(59, 130, 246, 0.3);
+}
+
+/* Background patterns */
+.bg-dots {
+ background-image: radial-gradient(circle, #e5e7eb 1px, transparent 1px);
+ background-size: 20px 20px;
+}
+
+.bg-grid {
+ background-image:
+ linear-gradient(rgba(59, 130, 246, 0.1) 1px, transparent 1px),
+ linear-gradient(90deg, rgba(59, 130, 246, 0.1) 1px, transparent 1px);
+ background-size: 50px 50px;
+}
+
+/* Typography improvements */
+h1, h2, h3, h4, h5, h6 {
+ font-family: 'Poppins', 'Inter', sans-serif;
+ line-height: 1.2;
+ letter-spacing: -0.025em;
+}
+
+p {
+ line-height: 1.7;
+}
+
+/* Loading animation */
+.loading {
+ animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
+}
+
/* Better mobile typography */
@media (max-width: 640px) {
h1 {
@@ -34,8 +202,41 @@ body.menu-open {
line-height: 2.5rem;
}
- .cta-button {
+ .btn-primary,
+ .btn-secondary {
font-size: 1rem;
padding: 0.75rem 1.5rem;
}
}
+
+/* Dark mode specific styles */
+.dark .glass {
+ background: rgba(0, 0, 0, 0.2);
+ border: 1px solid rgba(255, 255, 255, 0.1);
+}
+
+.dark .card-modern {
+ background: rgba(255, 255, 255, 0.02);
+ border: 1px solid rgba(255, 255, 255, 0.05);
+}
+
+.dark .card-modern:hover {
+ border-color: rgba(59, 130, 246, 0.4);
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
+}
+
+/* Focus styles for accessibility */
+*:focus {
+ outline: 2px solid #3b82f6;
+ outline-offset: 2px;
+}
+
+*:focus:not(:focus-visible) {
+ outline: none;
+}
+
+/* Selection styles */
+::selection {
+ background-color: rgba(59, 130, 246, 0.3);
+ color: inherit;
+}
diff --git a/tailwind.config.ts b/tailwind.config.ts
index 10bb5e4..85c9223 100644
--- a/tailwind.config.ts
+++ b/tailwind.config.ts
@@ -2,29 +2,177 @@ import type { Config } from "tailwindcss";
export default {
content: ["./src/**/*.{js,ts,jsx,tsx,mdx}"],
+ darkMode: 'class',
theme: {
extend: {
colors: {
-
- primary: "#0F172A", // Main Dark Blue
- accent: "#38BDF8", // Cyber Blue
- highlight: "#14B8A6", // Turquoise
- background: "#F1F5F9", // Soft Gray
+ primary: {
+ 50: '#eff6ff',
+ 100: '#dbeafe',
+ 500: '#3b82f6',
+ 600: '#2563eb',
+ 700: '#1d4ed8',
+ 900: '#1e3a8a',
+ },
+ accent: {
+ 50: '#ecfeff',
+ 100: '#cffafe',
+ 400: '#22d3ee',
+ 500: '#06b6d4',
+ 600: '#0891b2',
+ 700: '#0e7490',
+ },
+ highlight: {
+ 50: '#f0fdf4',
+ 100: '#dcfce7',
+ 400: '#4ade80',
+ 500: '#22c55e',
+ 600: '#16a34a',
+ },
+ background: {
+ light: '#ffffff',
+ dark: '#0f0f0f',
+ },
+ surface: {
+ light: '#f8fafc',
+ dark: '#1a1a1a',
+ },
+ text: {
+ primary: '#1f2937',
+ secondary: '#6b7280',
+ light: '#ffffff',
+ dark: '#f9fafb',
+ },
+ border: {
+ light: '#e5e7eb',
+ dark: '#374151',
+ },
},
animation: {
- 'gradient-x': 'gradient-x 8s ease infinite',
- 'float': 'float 6s ease-in-out infinite'
+ 'gradient-x': 'gradient-x 15s ease infinite',
+ 'gradient-y': 'gradient-y 15s ease infinite',
+ 'gradient-xy': 'gradient-xy 15s ease infinite',
+ 'float': 'float 6s ease-in-out infinite',
+ 'pulse-slow': 'pulse 4s cubic-bezier(0.4, 0, 0.6, 1) infinite',
+ 'bounce-subtle': 'bounce-subtle 2s infinite',
+ 'fade-in': 'fade-in 0.5s ease-out',
+ 'slide-up': 'slide-up 0.5s ease-out',
+ 'scale-in': 'scale-in 0.3s ease-out',
+ },
+ keyframes: {
+ 'gradient-y': {
+ '0%, 50%, 100%': {
+ 'background-size': '400% 400%',
+ 'background-position': 'center top'
+ },
+ '25%': {
+ 'background-size': '200% 200%',
+ 'background-position': 'center center'
+ },
+ '75%': {
+ 'background-size': '200% 200%',
+ 'background-position': 'center bottom'
+ },
+ },
+ 'gradient-x': {
+ '0%, 50%, 100%': {
+ 'background-size': '200% 200%',
+ 'background-position': 'left center'
+ },
+ '25%': {
+ 'background-size': '200% 200%',
+ 'background-position': 'right center'
+ },
+ },
+ 'gradient-xy': {
+ '0%, 50%, 100%': {
+ 'background-size': '400% 400%',
+ 'background-position': 'left center'
+ },
+ '25%': {
+ 'background-size': '200% 200%',
+ 'background-position': 'right center'
+ },
+ '75%': {
+ 'background-size': '200% 200%',
+ 'background-position': 'center bottom'
+ },
+ },
+ float: {
+ '0%, 100%': { transform: 'translateY(0px)' },
+ '50%': { transform: 'translateY(-20px)' },
+ },
+ 'bounce-subtle': {
+ '0%, 100%': {
+ transform: 'translateY(0)',
+ 'animation-timing-function': 'cubic-bezier(0.8, 0, 1, 1)',
+ },
+ '50%': {
+ transform: 'translateY(-5%)',
+ 'animation-timing-function': 'cubic-bezier(0, 0, 0.2, 1)',
+ },
+ },
+ 'fade-in': {
+ '0%': { opacity: '0' },
+ '100%': { opacity: '1' },
+ },
+ 'slide-up': {
+ '0%': {
+ opacity: '0',
+ transform: 'translateY(20px)',
+ },
+ '100%': {
+ opacity: '1',
+ transform: 'translateY(0)',
+ },
+ },
+ 'scale-in': {
+ '0%': {
+ opacity: '0',
+ transform: 'scale(0.95)',
+ },
+ '100%': {
+ opacity: '1',
+ transform: 'scale(1)',
+ },
+ },
+ },
+ backgroundImage: {
+ 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
+ 'gradient-conic': 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))',
+ 'hero-gradient': 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
+ 'card-gradient': 'linear-gradient(145deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.05) 100%)',
+ },
+ backdropBlur: {
+ xs: '2px',
},
fontFamily: {
- inter: ["var(--font-inter)"],
- manrope: ["var(--font-manrope)"],
- poppins: ["var(--font-poppins)"],
+ inter: ["var(--font-inter)", "Inter", "sans-serif"],
+ manrope: ["var(--font-manrope)", "Manrope", "sans-serif"],
+ poppins: ["var(--font-poppins)", "Poppins", "sans-serif"],
+ },
+ fontSize: {
+ '7xl': '5rem',
+ '8xl': '6rem',
+ '9xl': '8rem',
+ },
+ spacing: {
+ '18': '4.5rem',
+ '88': '22rem',
+ '128': '32rem',
+ },
+ boxShadow: {
+ 'glow': '0 0 20px rgba(59, 130, 246, 0.5)',
+ 'glow-lg': '0 0 40px rgba(59, 130, 246, 0.4)',
+ 'card': '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',
+ 'card-hover': '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',
+ },
+ borderRadius: {
+ '4xl': '2rem',
},
},
- darkMode: 'class'
-
},
- plugins:[]
+ plugins: []
} satisfies Config;