AmixDigital commited on
Commit
64cab0c
·
verified ·
1 Parent(s): 0937a3b

Redesign ce site en le rendant plus moderne, minimaliste et épuré et en mettant des animation complexe et professionnel.

Browse files
Files changed (6) hide show
  1. README.md +8 -5
  2. components/footer.js +100 -0
  3. components/navbar.js +135 -0
  4. index.html +113 -19
  5. script.js +84 -0
  6. style.css +157 -19
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Visionnova Redesign
3
- emoji: 🏢
4
- colorFrom: red
5
- colorTo: red
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
  ---
2
+ title: VisionNova Redesign 🌟
3
+ colorFrom: green
4
+ colorTo: blue
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://huggingface.co/deepsite).
components/footer.js ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomFooter extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ .footer {
7
+ background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
8
+ }
9
+
10
+ .social-link {
11
+ transition: all 0.3s ease;
12
+ }
13
+
14
+ .social-link:hover {
15
+ transform: translateY(-3px);
16
+ }
17
+ </style>
18
+
19
+ <footer class="footer text-white py-16">
20
+ <div class="max-w-7xl mx-auto px-6">
21
+ <div class="grid md:grid-cols-4 gap-8">
22
+ <!-- Company Info -->
23
+ <div class="md:col-span-2">
24
+ <h3 class="text-3xl font-bold mb-4">
25
+ Vision<span class="text-blue-400">Nova</span>
26
+ </h3>
27
+ <p class="text-gray-400 mb-6 max-w-md">
28
+ Nous créons des expériences digitales exceptionnelles qui marient élégance, innovation et performance.
29
+ </p>
30
+ <div class="flex space-x-4">
31
+ <a href="#" class="social-link w-10 h-10 bg-blue-600 rounded-full flex items-center justify-center hover:bg-blue-700">
32
+ <i data-feather="twitter"></i>
33
+ </a>
34
+ <a href="#" class="social-link w-10 h-10 bg-blue-800 rounded-full flex items-center justify-center hover:bg-blue-900">
35
+ <i data-feather="facebook"></i>
36
+ </a>
37
+ <a href="#" class="social-link w-10 h-10 bg-pink-600 rounded-full flex items-center justify-center hover:bg-pink-700">
38
+ <i data-feather="instagram"></i>
39
+ </a>
40
+ <a href="#" class="social-link w-10 h-10 bg-blue-700 rounded-full flex items-center justify-center hover:bg-blue-800">
41
+ <i data-feather="linkedin"></i>
42
+ </a>
43
+ </div>
44
+ </div>
45
+
46
+ <!-- Quick Links -->
47
+ <div>
48
+ <h4 class="text-lg font-semibold mb-4">Navigation</h4>
49
+ <ul class="space-y-2">
50
+ <li><a href="#accueil" class="text-gray-400 hover:text-white transition-colors duration-300">Accueil</a></li>
51
+ <li><a href="#services" class="text-gray-400 hover:text-white transition-colors duration-300">Services</a></li>
52
+ <li><a href="#projets" class="text-gray-400 hover:text-white transition-colors duration-300">Projets</a></li>
53
+ <li><a href="#contact" class="text-gray-400 hover:text-white transition-colors duration-300">Contact</a></li>
54
+ </ul>
55
+ </div>
56
+
57
+ <!-- Contact -->
58
+ <div>
59
+ <h4 class="text-lg font-semibold mb-4">Contact</h4>
60
+ <ul class="space-y-2 text-gray-400">
61
+ <li class="flex items-center space-x-2">
62
+ <i data-feather="mail" class="w-4 h-4"></i>
63
+ <span>contact@visionnova.fr</span>
64
+ </li>
65
+ <li class="flex items-center space-x-2">
66
+ <i data-feather="phone" class="w-4 h-4"></i>
67
+ <span>+33 1 23 45 67 89</span>
68
+ </li>
69
+ <li class="flex items-center space-x-2">
70
+ <i data-feather="map-pin" class="w-4 h-4"></i>
71
+ <span>Paris, France</span>
72
+ </li>
73
+ </ul>
74
+ </div>
75
+ </div>
76
+
77
+ <!-- Bottom Bar -->
78
+ <div class="border-t border-gray-800 mt-12 pt-8 flex flex-col md:flex-row justify-between items-center">
79
+ <p class="text-gray-500 text-sm">
80
+ © 2024 VisionNova. Tous droits réservés.
81
+ </p>
82
+ <div class="flex space-x-6 mt-4 md:mt-0">
83
+ <a href="#" class="text-gray-500 hover:text-white transition-colors duration-300 text-sm">Confidentialité</a>
84
+ <a href="#" class="text-gray-500 hover:text-white transition-colors duration-300 text-sm">Conditions</a>
85
+ </div>
86
+ </div>
87
+ </div>
88
+ </footer>
89
+ `;
90
+
91
+ // Initialize Feather Icons
92
+ setTimeout(() => {
93
+ if (typeof feather !== 'undefined') {
94
+ feather.replace();
95
+ }
96
+ }, 100);
97
+ }
98
+ }
99
+
100
+ customElements.define('custom-footer', CustomFooter);
components/navbar.js ADDED
@@ -0,0 +1,135 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomNavbar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ .navbar {
7
+ background: rgba(255, 255, 255, 0.95);
8
+ backdrop-filter: blur(10px);
9
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
10
+ transition: all 0.3s ease;
11
+ }
12
+
13
+ .navbar.scrolled {
14
+ background: rgba(255, 255, 255, 0.98);
15
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
16
+ }
17
+
18
+ .nav-link {
19
+ position: relative;
20
+ transition: color 0.3s ease;
21
+ }
22
+
23
+ .nav-link::after {
24
+ content: '';
25
+ position: absolute;
26
+ width: 0;
27
+ height: 2px;
28
+ bottom: -4px;
29
+ left: 0;
30
+ background: linear-gradient(90deg, #3b82f6, #8b5cf6);
31
+ transition: width 0.3s ease;
32
+ }
33
+
34
+ .nav-link:hover::after {
35
+ width: 100%;
36
+ }
37
+
38
+ .mobile-menu {
39
+ animation: slideDown 0.3s ease-out;
40
+ }
41
+
42
+ @keyframes slideDown {
43
+ from {
44
+ opacity: 0;
45
+ transform: translateY(-10px);
46
+ }
47
+ to {
48
+ opacity: 1;
49
+ transform: translateY(0);
50
+ }
51
+ }
52
+ </style>
53
+
54
+ <nav class="navbar fixed top-0 left-0 right-0 z-50 py-4">
55
+ <div class="max-w-7xl mx-auto px-6">
56
+ <div class="flex justify-between items-center">
57
+ <!-- Logo -->
58
+ <a href="/" class="text-2xl font-bold text-gray-900 hover:text-blue-600 transition-colors duration-300">
59
+ Vision<span class="text-blue-600">Nova</span>
60
+ </a>
61
+
62
+ <!-- Desktop Menu -->
63
+ <div class="hidden md:flex space-x-8">
64
+ <a href="#accueil" class="nav-link text-gray-700 hover:text-blue-600 font-medium">Accueil</a>
65
+ <a href="#services" class="nav-link text-gray-700 hover:text-blue-600 font-medium">Services</a>
66
+ <a href="#projets" class="nav-link text-gray-700 hover:text-blue-600 font-medium">Projets</a>
67
+ <a href="#contact" class="nav-link text-gray-700 hover:text-blue-600 font-medium">Contact</a>
68
+ </div>
69
+
70
+ <!-- CTA Button -->
71
+ <div class="hidden md:block">
72
+ <button class="bg-blue-600 hover:bg-blue-700 text-white px-6 py-2 rounded-full font-medium transition-all duration-300 transform hover:scale-105">
73
+ Commencer
74
+ </button>
75
+ </div>
76
+
77
+ <!-- Mobile Menu Button -->
78
+ <button class="md:hidden text-gray-700 hover:text-blue-600 transition-colors duration-300" onclick="this.getRootNode().host.toggleMobileMenu()">
79
+ <i data-feather="menu"></i>
80
+ </button>
81
+ </div>
82
+
83
+ <!-- Mobile Menu -->
84
+ <div id="mobile-menu" class="hidden md:hidden mobile-menu flex-col space-y-4 mt-4 pt-4 border-t border-gray-200">
85
+ <a href="#accueil" class="nav-link text-gray-700 hover:text-blue-600 font-medium py-2">Accueil</a>
86
+ <a href="#services" class="nav-link text-gray-700 hover:text-blue-600 font-medium py-2">Services</a>
87
+ <a href="#projets" class="nav-link text-gray-700 hover:text-blue-600 font-medium py-2">Projets</a>
88
+ <a href="#contact" class="nav-link text-gray-700 hover:text-blue-600 font-medium py-2">Contact</a>
89
+ <button class="bg-blue-600 hover:bg-blue-700 text-white px-6 py-2 rounded-full font-medium transition-all duration-300 mt-2">
90
+ Commencer
91
+ </button>
92
+ </div>
93
+ </div>
94
+ </nav>
95
+ `;
96
+
97
+ // Add scroll effect
98
+ this.addScrollEffect();
99
+
100
+ // Initialize Feather Icons
101
+ setTimeout(() => {
102
+ if (typeof feather !== 'undefined') {
103
+ feather.replace();
104
+ }
105
+ }, 100);
106
+ }
107
+
108
+ addScrollEffect() {
109
+ const navbar = this.shadowRoot.querySelector('.navbar');
110
+ window.addEventListener('scroll', () => {
111
+ if (window.scrollY > 100) {
112
+ navbar.classList.add('scrolled');
113
+ } else {
114
+ navbar.classList.remove('scrolled');
115
+ }
116
+ });
117
+ }
118
+
119
+ toggleMobileMenu() {
120
+ const mobileMenu = this.shadowRoot.getElementById('mobile-menu');
121
+ mobileMenu.classList.toggle('hidden');
122
+ mobileMenu.classList.toggle('flex');
123
+
124
+ // Update menu icon
125
+ const menuIcon = this.shadowRoot.querySelector('[data-feather="menu"]');
126
+ if (mobileMenu.classList.contains('hidden')) {
127
+ menuIcon.setAttribute('data-feather', 'menu');
128
+ } else {
129
+ menuIcon.setAttribute('data-feather', 'x');
130
+ }
131
+ feather.replace();
132
+ }
133
+ }
134
+
135
+ customElements.define('custom-navbar', CustomNavbar);
index.html CHANGED
@@ -1,19 +1,113 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="fr">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>VisionNova | Design Moderne & Épuré</title>
7
+ <link rel="icon" type="image/x-icon" href="/static/favicon.ico">
8
+ <link rel="stylesheet" href="style.css">
9
+ <script src="https://cdn.tailwindcss.com"></script>
10
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
11
+ <script src="https://unpkg.com/feather-icons"></script>
12
+ </head>
13
+ <body class="bg-white text-gray-900 font-sans">
14
+ <custom-navbar></custom-navbar>
15
+
16
+ <main>
17
+ <!-- Hero Section -->
18
+ <section class="relative min-h-screen flex items-center justify-center overflow-hidden">
19
+ <div class="absolute inset-0 bg-gradient-to-br from-blue-50 to-indigo-100 transform -skew-y-6 scale-125"></div>
20
+ <div class="relative z-10 text-center px-6 max-w-4xl mx-auto">
21
+ <h1 class="text-6xl md:text-8xl font-bold mb-8 tracking-tight opacity-0 animate-fade-in-up">
22
+ Vision<span class="text-blue-600">Nova</span>
23
+ </h1>
24
+ <p class="text-xl md:text-2xl text-gray-600 mb-12 opacity-0 animate-fade-in-up animation-delay-300">
25
+ Redéfinir l'expérience digitale avec élégance et innovation
26
+ </p>
27
+ <div class="opacity-0 animate-fade-in-up animation-delay-600">
28
+ <button class="bg-blue-600 hover:bg-blue-700 text-white px-8 py-4 rounded-full font-semibold transition-all duration-300 transform hover:scale-105 shadow-lg hover:shadow-xl">
29
+ Découvrir
30
+ </button>
31
+ </div>
32
+ </div>
33
+
34
+ <!-- Floating Elements -->
35
+ <div class="absolute top-20 left-10 w-20 h-20 bg-blue-200 rounded-full opacity-30 animate-float"></div>
36
+ <div class="absolute bottom-40 right-20 w-16 h-16 bg-indigo-300 rounded-full opacity-40 animate-float animation-delay-1000"></div>
37
+ <div class="absolute top-1/3 right-1/4 w-12 h-12 bg-purple-200 rounded-full opacity-50 animate-float animation-delay-2000"></div>
38
+ </section>
39
+
40
+ <!-- Features Section -->
41
+ <section class="py-20 px-6 bg-white">
42
+ <div class="max-w-7xl mx-auto">
43
+ <h2 class="text-4xl md:text-5xl font-bold text-center mb-16 opacity-0 animate-fade-in">
44
+ Excellence Digitale
45
+ </h2>
46
+
47
+ <div class="grid md:grid-cols-3 gap-12">
48
+ <!-- Feature 1 -->
49
+ <div class="group text-center opacity-0 animate-slide-in-left">
50
+ <div class="w-20 h-20 mx-auto mb-6 bg-gradient-to-r from-blue-500 to-purple-600 rounded-2xl flex items-center justify-center transform group-hover:scale-110 transition-all duration-300">
51
+ <i data-feather="layout" class="text-white w-10 h-10"></i>
52
+ </div>
53
+ <h3 class="text-xl font-semibold mb-4">Design Intuitif</h3>
54
+ <p class="text-gray-600">Interfaces pensées pour une expérience utilisateur fluide et naturelle</p>
55
+ </div>
56
+
57
+ <!-- Feature 2 -->
58
+ <div class="group text-center opacity-0 animate-slide-in-up animation-delay-200">
59
+ <div class="w-20 h-20 mx-auto mb-6 bg-gradient-to-r from-green-500 to-teal-600 rounded-2xl flex items-center justify-center transform group-hover:scale-110 transition-all duration-300">
60
+ <i data-feather="zap" class="text-white w-10 h-10"></i>
61
+ </div>
62
+ <h3 class="text-xl font-semibold mb-4">Performance</h3>
63
+ <p class="text-gray-600">Optimisations avancées pour des temps de chargement instantanés</p>
64
+ </div>
65
+
66
+ <!-- Feature 3 -->
67
+ <div class="group text-center opacity-0 animate-slide-in-right animation-delay-400">
68
+ <div class="w-20 h-20 mx-auto mb-6 bg-gradient-to-r from-orange-500 to-pink-600 rounded-2xl flex items-center justify-center transform group-hover:scale-110 transition-all duration-300">
69
+ <i data-feather="code" class="text-white w-10 h-10"></i>
70
+ </div>
71
+ <h3 class="text-xl font-semibold mb-4">Innovation</h3>
72
+ <p class="text-gray-600">Technologies de pointe pour des solutions avant-gardistes</p>
73
+ </div>
74
+ </div>
75
+ </div>
76
+ </section>
77
+
78
+ <!-- Stats Section -->
79
+ <section class="py-20 bg-gray-50">
80
+ <div class="max-w-7xl mx-auto px-6">
81
+ <div class="grid grid-cols-2 md:grid-cols-4 gap-8">
82
+ <div class="text-center opacity-0 animate-count-up">
83
+ <div class="text-4xl md:text-6xl font-bold text-blue-600 mb-2" data-count="150">0</div>
84
+ <div class="text-gray-600">Projets Réalisés</div>
85
+ </div>
86
+ <div class="text-center opacity-0 animate-count-up animation-delay-300">
87
+ <div class="text-4xl md:text-6xl font-bold text-green-600 mb-2" data-count="98">0</div>
88
+ <div class="text-gray-600">Clients Satisfaits</div>
89
+ </div>
90
+ <div class="text-center opacity-0 animate-count-up animation-delay-600">
91
+ <div class="text-4xl md:text-6xl font-bold text-purple-600 mb-2" data-count="24">0</div>
92
+ <div class="text-gray-600">Prix Remportés</div>
93
+ </div>
94
+ <div class="text-center opacity-0 animate-count-up animation-delay-900">
95
+ <div class="text-4xl md:text-6xl font-bold text-orange-600 mb-2" data-count="5">0</div>
96
+ <div class="text-gray-600">Années d'Expertise</div>
97
+ </div>
98
+ </div>
99
+ </div>
100
+ </section>
101
+ </main>
102
+
103
+ <custom-footer></custom-footer>
104
+
105
+ <script src="components/navbar.js"></script>
106
+ <script src="components/footer.js"></script>
107
+ <script src="script.js"></script>
108
+ <script>
109
+ feather.replace();
110
+ </script>
111
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
112
+ </body>
113
+ </html>
script.js ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Intersection Observer for animations
2
+ const observerOptions = {
3
+ threshold: 0.1,
4
+ rootMargin: '0px 0px -50px 0px'
5
+ };
6
+
7
+ const observer = new IntersectionObserver((entries) => {
8
+ entries.forEach(entry => {
9
+ if (entry.isIntersecting) {
10
+ entry.target.style.animationPlayState = 'running';
11
+ }
12
+ });
13
+ }, observerOptions);
14
+
15
+ // Observe all animated elements
16
+ document.addEventListener('DOMContentLoaded', () => {
17
+ const animatedElements = document.querySelectorAll('[class*="animate-"]');
18
+ animatedElements.forEach(el => {
19
+ observer.observe(el);
20
+ });
21
+
22
+ // Count up animation for stats
23
+ const countElements = document.querySelectorAll('[data-count]');
24
+ countElements.forEach(element => {
25
+ const target = parseInt(element.getAttribute('data-count'));
26
+ const duration = 2000;
27
+ const step = target / (duration / 16);
28
+ let current = 0;
29
+
30
+ const timer = setInterval(() => {
31
+ current += step;
32
+ if (current >= target) {
33
+ element.textContent = target;
34
+ clearInterval(timer);
35
+ } else {
36
+ element.textContent = Math.floor(current);
37
+ }
38
+ }, 16);
39
+ });
40
+
41
+ // Parallax effect for hero section
42
+ window.addEventListener('scroll', () => {
43
+ const scrolled = window.pageYOffset;
44
+ const parallaxElements = document.querySelectorAll('.parallax');
45
+
46
+ parallaxElements.forEach(element => {
47
+ const speed = element.dataset.speed || 0.5;
48
+ element.style.transform = `translateY(${scrolled * speed}px)`;
49
+ });
50
+ });
51
+
52
+ // Smooth scrolling for anchor links
53
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
54
+ anchor.addEventListener('click', function (e) {
55
+ e.preventDefault();
56
+ const target = document.querySelector(this.getAttribute('href'));
57
+ if (target) {
58
+ target.scrollIntoView({
59
+ behavior: 'smooth',
60
+ block: 'start'
61
+ });
62
+ }
63
+ });
64
+ });
65
+
66
+ // Mobile menu toggle
67
+ function toggleMobileMenu() {
68
+ const mobileMenu = document.getElementById('mobile-menu');
69
+ mobileMenu.classList.toggle('hidden');
70
+ mobileMenu.classList.toggle('flex');
71
+ }
72
+
73
+ // Add loading animation
74
+ window.addEventListener('load', () => {
75
+ document.body.classList.add('loaded');
76
+ });
77
+
78
+ // Cursor follower effect
79
+ document.addEventListener('mousemove', (e) => {
80
+ const cursorFollower = document.querySelector('.cursor-follower');
81
+ if (cursorFollower) {
82
+ cursorFollower.style.left = e.clientX + 'px';
83
+ cursorFollower.style.top = e.clientY + 'px';
84
+ });
style.css CHANGED
@@ -1,28 +1,166 @@
1
- body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
 
 
 
 
 
 
 
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
 
 
 
 
9
  }
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
 
 
 
 
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
 
 
 
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
 
 
 
 
 
 
 
28
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Custom Animations */
2
+ @keyframes fade-in-up {
3
+ from {
4
+ opacity: 0;
5
+ transform: translateY(30px);
6
+ }
7
+ to {
8
+ opacity: 1;
9
+ transform: translateY(0);
10
+ }
11
  }
12
 
13
+ @keyframes fade-in {
14
+ from {
15
+ opacity: 0;
16
+ }
17
+ to {
18
+ opacity: 1;
19
+ }
20
  }
21
 
22
+ @keyframes slide-in-left {
23
+ from {
24
+ opacity: 0;
25
+ transform: translateX(-50px);
26
+ }
27
+ to {
28
+ opacity: 1;
29
+ transform: translateX(0);
30
+ }
31
  }
32
 
33
+ @keyframes slide-in-right {
34
+ from {
35
+ opacity: 0;
36
+ transform: translateX(50px);
37
+ }
38
+ to {
39
+ opacity: 1;
40
+ transform: translateX(0);
41
+ }
42
  }
43
 
44
+ @keyframes slide-in-up {
45
+ from {
46
+ opacity: 0;
47
+ transform: translateY(50px);
48
+ }
49
+ to {
50
+ opacity: 1;
51
+ transform: translateY(0);
52
+ }
53
  }
54
+
55
+ @keyframes float {
56
+ 0%, 100% {
57
+ transform: translateY(0px);
58
+ }
59
+ 50% {
60
+ transform: translateY(-20px);
61
+ }
62
+ }
63
+
64
+ @keyframes count-up {
65
+ from {
66
+ transform: scale(0.8);
67
+ opacity: 0;
68
+ }
69
+ to {
70
+ transform: scale(1);
71
+ opacity: 1;
72
+ }
73
+ }
74
+
75
+ /* Animation Classes */
76
+ .animate-fade-in-up {
77
+ animation: fade-in-up 1s ease-out forwards;
78
+ }
79
+
80
+ .animate-fade-in {
81
+ animation: fade-in 1s ease-out forwards;
82
+ }
83
+
84
+ .animate-slide-in-left {
85
+ animation: slide-in-left 0.8s ease-out forwards;
86
+ }
87
+
88
+ .animate-slide-in-right {
89
+ animation: slide-in-right 0.8s ease-out forwards;
90
+ }
91
+
92
+ .animate-slide-in-up {
93
+ animation: slide-in-up 0.8s ease-out forwards;
94
+ }
95
+
96
+ .animate-float {
97
+ animation: float 6s ease-in-out infinite;
98
+ }
99
+
100
+ .animate-count-up {
101
+ animation: count-up 1s ease-out forwards;
102
+ }
103
+
104
+ .animation-delay-300 {
105
+ animation-delay: 0.3s;
106
+ }
107
+
108
+ .animation-delay-600 {
109
+ animation-delay: 0.6s;
110
+ }
111
+
112
+ .animation-delay-900 {
113
+ animation-delay: 0.9s;
114
+ }
115
+
116
+ .animation-delay-1000 {
117
+ animation-delay: 1s;
118
+ }
119
+
120
+ .animation-delay-2000 {
121
+ animation-delay: 2s;
122
+ }
123
+
124
+ .animation-delay-400 {
125
+ animation-delay: 0.4s;
126
+ }
127
+
128
+ /* Smooth Scrolling */
129
+ html {
130
+ scroll-behavior: smooth;
131
+ }
132
+
133
+ /* Custom Scrollbar */
134
+ ::-webkit-scrollbar {
135
+ width: 8px;
136
+ }
137
+
138
+ ::-webkit-scrollbar-track {
139
+ background: #f1f1f1;
140
+ }
141
+
142
+ ::-webkit-scrollbar-thumb {
143
+ background: #3b82f6;
144
+ border-radius: 4px;
145
+ }
146
+
147
+ ::-webkit-scrollbar-thumb:hover {
148
+ background: #2563eb;
149
+ }
150
+
151
+ /* Glass Morphism Effect */
152
+ .glass {
153
+ background: rgba(255, 255, 255, 0.1);
154
+ backdrop-filter: blur(10px);
155
+ border: 1px solid rgba(255, 255, 255, 0.2);
156
+ }
157
+
158
+ /* Hover Effects */
159
+ .hover-lift {
160
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
161
+ }
162
+
163
+ .hover-lift:hover {
164
+ transform: translateY(-5px);
165
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
166
+ }