mb672038 commited on
Commit
7ebc062
·
verified ·
1 Parent(s): 46f36f7

یک سایت بساز که وفتی واردش شدم یک محیط گرافیکی محرک خیلی جذاب باشه و می خوام که تا جایی که میشه گرافیکش بالا باشه

Browse files
components/animated-header.js ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class AnimatedHeader extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ position: relative;
9
+ width: 100%;
10
+ height: 600px;
11
+ overflow: hidden;
12
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
13
+ border-radius: 0 0 40px 40px;
14
+ }
15
+
16
+ .header-content {
17
+ position: relative;
18
+ z-index: 2;
19
+ padding: 4rem 2rem;
20
+ text-align: center;
21
+ color: white;
22
+ }
23
+
24
+ .title {
25
+ font-size: 4rem;
26
+ font-weight: 800;
27
+ margin-bottom: 1rem;
28
+ text-shadow: 0 2px 10px rgba(0,0,0,0.2);
29
+ background: linear-gradient(to right, #ffffff, #f0f0f0);
30
+ -webkit-background-clip: text;
31
+ -webkit-text-fill-color: transparent;
32
+ animation: titleGlow 3s ease-in-out infinite alternate;
33
+ }
34
+
35
+ .subtitle {
36
+ font-size: 1.5rem;
37
+ opacity: 0.9;
38
+ max-width: 800px;
39
+ margin: 0 auto 2rem;
40
+ }
41
+
42
+ .floating-shapes {
43
+ position: absolute;
44
+ top: 0;
45
+ left: 0;
46
+ width: 100%;
47
+ height: 100%;
48
+ z-index: 1;
49
+ }
50
+
51
+ .shape {
52
+ position: absolute;
53
+ border-radius: 50%;
54
+ background: rgba(255, 255, 255, 0.1);
55
+ animation: floatShape 20s infinite linear;
56
+ }
57
+
58
+ @keyframes titleGlow {
59
+ from { filter: drop-shadow(0 0 10px rgba(255,255,255,0.3)); }
60
+ to { filter: drop-shadow(0 0 20px rgba(255,255,255,0.6)); }
61
+ }
62
+
63
+ @keyframes floatShape {
64
+ 0% { transform: translateY(0) rotate(0deg); }
65
+ 100% { transform: translateY(-1000px) rotate(720deg); }
66
+ }
67
+
68
+ .cta-button {
69
+ display: inline-block;
70
+ padding: 1rem 2rem;
71
+ background: rgba(255, 255, 255, 0.2);
72
+ backdrop-filter: blur(10px);
73
+ border: 2px solid rgba(255, 255, 255, 0.3);
74
+ border-radius: 50px;
75
+ color: white;
76
+ font-weight: 600;
77
+ text-decoration: none;
78
+ transition: all 0.3s ease;
79
+ margin: 0 0.5rem;
80
+ }
81
+
82
+ .cta-button:hover {
83
+ background: rgba(255, 255, 255, 0.3);
84
+ transform: translateY(-5px);
85
+ box-shadow: 0 10px 20px rgba(0,0,0,0.2);
86
+ }
87
+
88
+ @media (max-width: 768px) {
89
+ .title {
90
+ font-size: 2.5rem;
91
+ }
92
+
93
+ .subtitle {
94
+ font-size: 1.2rem;
95
+ }
96
+ }
97
+ </style>
98
+
99
+ <div class="floating-shapes" id="shapes"></div>
100
+ <div class="header-content">
101
+ <h1 class="title">پایتون مستری آکادمی</h1>
102
+ <p class="subtitle">یادگیری پایتون را با تجربه‌ای گرافیکی و تعاملی آغاز کنید. محیطی جذاب با انیمیشن‌های زیبا و جلوه‌های بصری خیره‌کننده</p>
103
+ <div>
104
+ <a href="/courses" class="cta-button">مشاهده دوره‌ها</a>
105
+ <a href="/register" class="cta-button">شروع رایگان</a>
106
+ </div>
107
+ </div>
108
+ `;
109
+
110
+ this.createShapes();
111
+ }
112
+
113
+ createShapes() {
114
+ const shapesContainer = this.shadowRoot.getElementById('shapes');
115
+
116
+ for (let i = 0; i < 50; i++) {
117
+ const shape = document.createElement('div');
118
+ shape.className = 'shape';
119
+
120
+ const size = Math.random() * 100 + 20;
121
+ const left = Math.random() * 100;
122
+ const duration = Math.random() * 20 + 10;
123
+ const delay = Math.random() * 20;
124
+
125
+ shape.style.width = `${size}px`;
126
+ shape.style.height = `${size}px`;
127
+ shape.style.left = `${left}%`;
128
+ shape.style.animationDuration = `${duration}s`;
129
+ shape.style.animationDelay = `${delay}s`;
130
+ shape.style.opacity = Math.random() * 0.3 + 0.1;
131
+
132
+ shapesContainer.appendChild(shape);
133
+ }
134
+ }
135
+ }
136
+
137
+ customElements.define('animated-header', AnimatedHeader);
components/floating-elements.js ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class FloatingElements extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ position: fixed;
9
+ top: 0;
10
+ left: 0;
11
+ width: 100%;
12
+ height: 100%;
13
+ pointer-events: none;
14
+ z-index: -1;
15
+ overflow: hidden;
16
+ }
17
+
18
+ .floating-element {
19
+ position: absolute;
20
+ border-radius: 50%;
21
+ background: linear-gradient(135deg, rgba(59, 130, 246, 0.1), rgba(16, 185, 129, 0.1));
22
+ filter: blur(20px);
23
+ animation: float 20s infinite ease-in-out;
24
+ }
25
+
26
+ @keyframes float {
27
+ 0%, 100% { transform: translate(0, 0) rotate(0deg); }
28
+ 25% { transform: translate(100px, 50px) rotate(90deg); }
29
+ 50% { transform: translate(50px, 100px) rotate(180deg); }
30
+ 75% { transform: translate(-50px, 50px) rotate(270deg); }
31
+ }
32
+ </style>
33
+ `;
34
+
35
+ // Create floating elements
36
+ this.createFloatingElements();
37
+ }
38
+
39
+ createFloatingElements() {
40
+ const colors = [
41
+ 'rgba(59, 130, 246, 0.15)',
42
+ 'rgba(16, 185, 129, 0.15)',
43
+ 'rgba(139, 92, 246, 0.15)',
44
+ 'rgba(239, 68, 68, 0.15)',
45
+ 'rgba(245, 158, 11, 0.15)'
46
+ ];
47
+
48
+ for (let i = 0; i < 8; i++) {
49
+ const element = document.createElement('div');
50
+ element.className = 'floating-element';
51
+
52
+ // Random properties
53
+ const size = Math.random() * 300 + 100;
54
+ const color = colors[Math.floor(Math.random() * colors.length)];
55
+ const left = Math.random() * 100;
56
+ const top = Math.random() * 100;
57
+ const delay = Math.random() * 20;
58
+ const duration = 20 + Math.random() * 20;
59
+
60
+ element.style.width = `${size}px`;
61
+ element.style.height = `${size}px`;
62
+ element.style.background = color;
63
+ element.style.left = `${left}%`;
64
+ element.style.top = `${top}%`;
65
+ element.style.animationDelay = `${delay}s`;
66
+ element.style.animationDuration = `${duration}s`;
67
+
68
+ this.shadowRoot.appendChild(element);
69
+ }
70
+ }
71
+ }
72
+
73
+ customElements.define('floating-elements', FloatingElements);
components/glowing-cursor.js ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class GlowingCursor extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ position: fixed;
9
+ top: 0;
10
+ left: 0;
11
+ width: 100%;
12
+ height: 100%;
13
+ pointer-events: none;
14
+ z-index: 9999;
15
+ }
16
+
17
+ .cursor {
18
+ position: absolute;
19
+ width: 20px;
20
+ height: 20px;
21
+ border-radius: 50%;
22
+ background: radial-gradient(circle, #3B82F6, transparent);
23
+ filter: blur(10px);
24
+ transform: translate(-50%, -50%);
25
+ pointer-events: none;
26
+ transition: width 0.3s, height 0.3s;
27
+ }
28
+
29
+ .cursor-trail {
30
+ position: absolute;
31
+ width: 10px;
32
+ height: 10px;
33
+ border-radius: 50%;
34
+ background: rgba(59, 130, 246, 0.3);
35
+ filter: blur(5px);
36
+ transform: translate(-50%, -50%);
37
+ pointer-events: none;
38
+ transition: opacity 0.3s;
39
+ }
40
+ </style>
41
+ <div class="cursor"></div>
42
+ `;
43
+
44
+ this.initCursor();
45
+ }
46
+
47
+ initCursor() {
48
+ const cursor = this.shadowRoot.querySelector('.cursor');
49
+ const trails = [];
50
+
51
+ document.addEventListener('mousemove', (e) => {
52
+ // Update main cursor
53
+ cursor.style.left = `${e.clientX}px`;
54
+ cursor.style.top = `${e.clientY}px`;
55
+
56
+ // Create trail
57
+ const trail = document.createElement('div');
58
+ trail.className = 'cursor-trail';
59
+ trail.style.left = `${e.clientX}px`;
60
+ trail.style.top = `${e.clientY}px`;
61
+ this.shadowRoot.appendChild(trail);
62
+ trails.push(trail);
63
+
64
+ // Remove old trails
65
+ if (trails.length > 10) {
66
+ const oldTrail = trails.shift();
67
+ if (oldTrail.parentNode) {
68
+ oldTrail.style.opacity = '0';
69
+ setTimeout(() => {
70
+ if (oldTrail.parentNode) {
71
+ this.shadowRoot.removeChild(oldTrail);
72
+ }
73
+ }, 300);
74
+ }
75
+ }
76
+
77
+ // Remove trails after animation
78
+ setTimeout(() => {
79
+ if (trail.parentNode) {
80
+ trail.style.opacity = '0';
81
+ setTimeout(() => {
82
+ if (trail.parentNode) {
83
+ this.shadowRoot.removeChild(trail);
84
+ }
85
+ }, 300);
86
+ }
87
+ }, 1000);
88
+ });
89
+
90
+ // Hover effects
91
+ document.addEventListener('mouseover', (e) => {
92
+ if (e.target.tagName === 'A' || e.target.tagName === 'BUTTON') {
93
+ cursor.style.width = '40px';
94
+ cursor.style.height = '40px';
95
+ }
96
+ });
97
+
98
+ document.addEventListener('mouseout', (e) => {
99
+ if (e.target.tagName === 'A' || e.target.tagName === 'BUTTON') {
100
+ cursor.style.width = '20px';
101
+ cursor.style.height = '20px';
102
+ }
103
+ });
104
+
105
+ // Click effect
106
+ document.addEventListener('click', () => {
107
+ cursor.style.width = '30px';
108
+ cursor.style.height = '30px';
109
+ setTimeout(() => {
110
+ cursor.style.width = '20px';
111
+ cursor.style.height = '20px';
112
+ }, 100);
113
+ });
114
+ }
115
+ }
116
+
117
+ customElements.define('glowing-cursor', GlowingCursor);
components/particles-bg.js ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class ParticlesBackground extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ position: fixed;
9
+ top: 0;
10
+ left: 0;
11
+ width: 100%;
12
+ height: 100%;
13
+ z-index: -1;
14
+ overflow: hidden;
15
+ }
16
+
17
+ canvas {
18
+ width: 100%;
19
+ height: 100%;
20
+ }
21
+ </style>
22
+ <canvas id="particles-canvas"></canvas>
23
+ `;
24
+
25
+ // Initialize particles
26
+ this.initParticles();
27
+ }
28
+
29
+ initParticles() {
30
+ const canvas = this.shadowRoot.getElementById('particles-canvas');
31
+ const ctx = canvas.getContext('2d');
32
+
33
+ // Set canvas size
34
+ canvas.width = canvas.offsetWidth;
35
+ canvas.height = canvas.offsetHeight;
36
+
37
+ // Particle system
38
+ const particles = [];
39
+ const particleCount = 150;
40
+ const colors = [
41
+ '#3B82F6', '#10B981', '#8B5CF6', '#EF4444', '#F59E0B',
42
+ '#EC4899', '#06B6D4', '#84CC16', '#F97316', '#6366F1'
43
+ ];
44
+
45
+ // Create particles
46
+ for (let i = 0; i < particleCount; i++) {
47
+ particles.push({
48
+ x: Math.random() * canvas.width,
49
+ y: Math.random() * canvas.height,
50
+ radius: Math.random() * 3 + 1,
51
+ color: colors[Math.floor(Math.random() * colors.length)],
52
+ speedX: Math.random() * 2 - 1,
53
+ speedY: Math.random() * 2 - 1,
54
+ opacity: Math.random() * 0.5 + 0.2
55
+ });
56
+ }
57
+
58
+ // Mouse interaction
59
+ let mouseX = 0;
60
+ let mouseY = 0;
61
+ let mouseRadius = 100;
62
+
63
+ canvas.addEventListener('mousemove', (e) => {
64
+ const rect = canvas.getBoundingClientRect();
65
+ mouseX = e.clientX - rect.left;
66
+ mouseY = e.clientY - rect.top;
67
+ });
68
+
69
+ // Animation
70
+ function animate() {
71
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
72
+
73
+ // Update and draw particles
74
+ particles.forEach(p => {
75
+ // Move particle
76
+ p.x += p.speedX;
77
+ p.y += p.speedY;
78
+
79
+ // Bounce off edges
80
+ if (p.x < 0 || p.x > canvas.width) p.speedX *= -1;
81
+ if (p.y < 0 || p.y > canvas.height) p.speedY *= -1;
82
+
83
+ // Draw particle
84
+ ctx.beginPath();
85
+ ctx.arc(p.x, p.y, p.radius, 0, Math.PI * 2);
86
+ ctx.fillStyle = p.color;
87
+ ctx.globalAlpha = p.opacity;
88
+ ctx.fill();
89
+
90
+ // Draw connections
91
+ particles.forEach(p2 => {
92
+ const dx = p.x - p2.x;
93
+ const dy = p.y - p2.y;
94
+ const distance = Math.sqrt(dx * dx + dy * dy);
95
+
96
+ if (distance < 100) {
97
+ ctx.beginPath();
98
+ ctx.strokeStyle = p.color;
99
+ ctx.globalAlpha = 0.1 * (1 - distance / 100);
100
+ ctx.lineWidth = 0.5;
101
+ ctx.moveTo(p.x, p.y);
102
+ ctx.lineTo(p2.x, p2.y);
103
+ ctx.stroke();
104
+ }
105
+ });
106
+
107
+ // Mouse interaction
108
+ const dx = p.x - mouseX;
109
+ const dy = p.y - mouseY;
110
+ const distance = Math.sqrt(dx * dx + dy * dy);
111
+
112
+ if (distance < mouseRadius) {
113
+ const angle = Math.atan2(dy, dx);
114
+ const force = (mouseRadius - distance) / mouseRadius;
115
+ p.x += Math.cos(angle) * force * 5;
116
+ p.y += Math.sin(angle) * force * 5;
117
+ }
118
+ });
119
+
120
+ requestAnimationFrame(animate);
121
+ }
122
+
123
+ // Handle resize
124
+ window.addEventListener('resize', () => {
125
+ canvas.width = canvas.offsetWidth;
126
+ canvas.height = canvas.offsetHeight;
127
+ });
128
+
129
+ animate();
130
+ }
131
+ }
132
+
133
+ customElements.define('particles-background', ParticlesBackground);
index.html CHANGED
@@ -22,138 +22,210 @@
22
  </script>
23
  </head>
24
  <body class="bg-gray-50 font-sans">
 
 
 
25
  <custom-navbar></custom-navbar>
26
 
27
- <main class="container mx-auto px-4 py-8">
28
- <!-- Hero Section -->
29
- <section class="flex flex-col md:flex-row items-center justify-between gap-8 mb-16">
30
- <div class="md:w-1/2">
31
- <h1 class="text-4xl md:text-5xl font-bold text-gray-900 mb-6">
32
- <span class="text-primary">پلتفرم آموزش حرفه‌ای</span> پایتون
33
- </h1>
34
- <p class="text-lg text-gray-600 mb-8">
35
- یادگیری پایتون را با بهترین متدها و پروژه‌های واقعی شروع کنید. از مبتدی تا حرفه‌ای در کنار ما باشید.
36
- </p>
37
- <div class="flex flex-col sm:flex-row gap-4">
38
- <a href="/register" class="bg-primary hover:bg-primary-600 text-white px-6 py-3 rounded-lg font-medium text-center transition">
39
- شروع یادگیری
40
- </a>
41
- <a href="/courses" class="border border-primary text-primary px-6 py-3 rounded-lg font-medium text-center hover:bg-primary-50 transition">
42
- مشاهده دوره‌ها
43
- </a>
 
 
 
 
44
  </div>
45
- </div>
46
- <div class="md:w-1/2">
47
- <img src="http://static.photos/technology/1024x576/42" alt="Python Programming" class="rounded-xl shadow-lg w-full">
48
  </div>
49
  </section>
50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  <!-- Features Section -->
52
- <section class="mb-16">
53
  <h2 class="text-3xl font-bold text-center text-gray-900 mb-12">چرا پایتون مستری؟</h2>
54
  <div class="grid grid-cols-1 md:grid-cols-3 gap-8">
55
- <div class="bg-white p-6 rounded-xl shadow-md hover:shadow-lg transition">
56
- <div class="bg-primary-100 w-12 h-12 rounded-full flex items-center justify-center mb-4">
57
- <i data-feather="code" class="text-primary w-6 h-6"></i>
 
 
 
58
  </div>
59
- <h3 class="text-xl font-semibold mb-2">آموزش پروژه‌محور</h3>
60
  <p class="text-gray-600">یادگیری با انجام پروژه‌های واقعی و کاربردی در دنیای کار</p>
61
  </div>
62
- <div class="bg-white p-6 rounded-xl shadow-md hover:shadow-lg transition">
63
- <div class="bg-secondary-100 w-12 h-12 rounded-full flex items-center justify-center mb-4">
64
- <i data-feather="users" class="text-secondary w-6 h-6"></i>
 
 
 
65
  </div>
66
- <h3 class="text-xl font-semibold mb-2">مربیان حرفه‌ای</h3>
67
  <p class="text-gray-600">همراهی با بهترین مربیان صنعت در طول مسیر یادگیری</p>
68
  </div>
69
- <div class="bg-white p-6 rounded-xl shadow-md hover:shadow-lg transition">
70
- <div class="bg-primary-100 w-12 h-12 rounded-full flex items-center justify-center mb-4">
71
- <i data-feather="award" class="text-primary w-6 h-6"></i>
 
 
 
72
  </div>
73
- <h3 class="text-xl font-semibold mb-2">گواهینامه معتبر</h3>
74
  <p class="text-gray-600">دریافت مدرک معتبر پس از اتمام هر دوره</p>
75
  </div>
76
  </div>
77
  </section>
78
-
79
  <!-- Courses Preview -->
80
- <section class="mb-16">
81
  <div class="flex justify-between items-center mb-8">
82
  <h2 class="text-3xl font-bold text-gray-900">دوره‌های آموزشی</h2>
83
- <a href="/courses" class="text-primary hover:text-primary-600 font-medium flex items-center gap-2">
84
  مشاهده همه
85
- <i data-feather="arrow-left" class="w-4 h-4"></i>
86
  </a>
87
  </div>
88
- <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
89
  <!-- Course Card 1 -->
90
- <div class="bg-white rounded-xl shadow-md overflow-hidden hover:shadow-lg transition">
91
- <img src="http://static.photos/technology/640x360/101" alt="Python Basics" class="w-full h-48 object-cover">
 
 
 
 
 
92
  <div class="p-6">
93
- <div class="flex justify-between items-start mb-2">
94
  <h3 class="text-xl font-bold">پایتون مقدماتی</h3>
95
- <span class="bg-primary-100 text-primary text-sm px-3 py-1 rounded-full">جدید</span>
96
- </div>
97
- <p class="text-gray-600 mb-4">آموزش اصول اولیه برنامه‌نویسی با پایتون برای شروع کار</p>
98
- <div class="flex justify-between items-center">
99
  <div class="flex items-center gap-1 text-yellow-500">
100
  <i data-feather="star" class="w-4 h-4 fill-current"></i>
101
  <span>4.9</span>
102
  </div>
103
- <a href="/course/python-basics" class="text-primary hover:text-primary-600 font-medium">مشاهده دوره</a>
 
 
 
 
 
 
 
104
  </div>
105
  </div>
106
  </div>
107
 
108
  <!-- Course Card 2 -->
109
- <div class="bg-white rounded-xl shadow-md overflow-hidden hover:shadow-lg transition">
110
- <img src="http://static.photos/technology/640x360/102" alt="Python OOP" class="w-full h-48 object-cover">
 
 
 
 
 
111
  <div class="p-6">
112
- <div class="flex justify-between items-start mb-2">
113
  <h3 class="text-xl font-bold">برنامه‌نویسی شی‌گرا</h3>
114
- <span class="bg-secondary-100 text-secondary text-sm px-3 py-1 rounded-full">پرفروش</span>
115
- </div>
116
- <p class="text-gray-600 mb-4">آموزش کامل مفاهیم شی‌گرایی در پایتون با مثال‌های عملی</p>
117
- <div class="flex justify-between items-center">
118
  <div class="flex items-center gap-1 text-yellow-500">
119
  <i data-feather="star" class="w-4 h-4 fill-current"></i>
120
  <span>4.8</span>
121
  </div>
122
- <a href="/course/python-oop" class="text-primary hover:text-primary-600 font-medium">مشاهده دوره</a>
 
 
 
 
 
 
 
123
  </div>
124
  </div>
125
  </div>
126
 
127
  <!-- Course Card 3 -->
128
- <div class="bg-white rounded-xl shadow-md overflow-hidden hover:shadow-lg transition">
129
- <img src="http://static.photos/technology/640x360/103" alt="Python Web" class="w-full h-48 object-cover">
 
 
 
 
 
130
  <div class="p-6">
131
- <div class="flex justify-between items-start mb-2">
132
  <h3 class="text-xl font-bold">توسعه وب با پایتون</h3>
133
- <span class="bg-primary-100 text-primary text-sm px-3 py-1 rounded-full">پرطرفدار</span>
134
- </div>
135
- <p class="text-gray-600 mb-4">یادگیری Django و Flask برای ساخت وب‌اپلیکیشن‌های حرفه‌ای</p>
136
- <div class="flex justify-between items-center">
137
  <div class="flex items-center gap-1 text-yellow-500">
138
  <i data-feather="star" class="w-4 h-4 fill-current"></i>
139
  <span>4.7</span>
140
  </div>
141
- <a href="/course/python-web" class="text-primary hover:text-primary-600 font-medium">مشاهده دوره</a>
 
 
 
 
 
 
 
142
  </div>
143
  </div>
144
  </div>
145
  </div>
146
  </section>
147
-
148
  <!-- Testimonials -->
149
- <section class="mb-16">
150
  <h2 class="text-3xl font-bold text-center text-gray-900 mb-12">نظرات دانشجویان</h2>
151
  <div class="grid grid-cols-1 md:grid-cols-2 gap-8">
152
- <div class="bg-white p-6 rounded-xl shadow-md">
153
- <div class="flex items-center gap-4 mb-4">
154
- <img src="http://static.photos/people/200x200/1" alt="User" class="w-12 h-12 rounded-full object-cover">
 
 
 
155
  <div>
156
- <h4 class="font-semibold">محمد رضایی</h4>
157
  <div class="flex items-center gap-1 text-yellow-500">
158
  <i data-feather="star" class="w-4 h-4 fill-current"></i>
159
  <i data-feather="star" class="w-4 h-4 fill-current"></i>
@@ -163,15 +235,18 @@
163
  </div>
164
  </div>
165
  </div>
166
- <p class="text-gray-600">
167
- بهترین پلتفرم برای یادگیری پایتون. دوره‌ها بسیار کامل و پروژه‌محور هستند. بعد از اتمام دوره مقدماتی توانستم در شرکت معتبری استخدام شوم.
168
  </p>
169
  </div>
170
- <div class="bg-white p-6 rounded-xl shadow-md">
171
- <div class="flex items-center gap-4 mb-4">
172
- <img src="http://static.photos/people/200x200/2" alt="User" class="w-12 h-12 rounded-full object-cover">
 
 
 
173
  <div>
174
- <h4 class="font-semibold">فاطمه محمدی</h4>
175
  <div class="flex items-center gap-1 text-yellow-500">
176
  <i data-feather="star" class="w-4 h-4 fill-current"></i>
177
  <i data-feather="star" class="w-4 h-4 fill-current"></i>
@@ -181,34 +256,84 @@
181
  </div>
182
  </div>
183
  </div>
184
- <p class="text-gray-600">
185
- به عنوان کسی که هیچ پیشینه برنامه‌نویسی نداشتم، دوره‌های این سایت واقعا برای من مفید بود. پشتیبانی عالی و محتوای باکیفیت.
186
  </p>
187
  </div>
188
  </div>
189
  </section>
190
-
191
  <!-- CTA Section -->
192
- <section class="bg-gradient-to-r from-primary to-secondary text-white rounded-xl p-8 md:p-12 mb-16">
193
- <div class="max-w-3xl mx-auto text-center">
194
- <h2 class="text-3xl md:text-4xl font-bold mb-4">آماده شروع یادگیری هستید؟</h2>
195
- <p class="text-lg mb-8 opacity-90">
 
 
 
 
 
196
  همین حالا ثبت‌نام کنید و به جمع هزاران دانشجوی ما بپیوندید. اولین قدم برای تبدیل شدن به یک برنامه‌نویس حرفه‌ای را بردارید.
197
  </p>
198
- <a href="/register" class="bg-white text-primary hover:bg-gray-100 px-8 py-3 rounded-lg font-bold inline-block transition">
199
- ثبت‌نام رایگان
 
 
 
200
  </a>
 
201
  </div>
202
  </section>
 
203
  </main>
204
 
205
  <custom-footer></custom-footer>
206
  <script src="components/navbar.js"></script>
207
  <script src="components/footer.js"></script>
 
 
 
 
208
  <script src="script.js"></script>
209
  <script>
210
  feather.replace();
 
 
 
 
 
 
 
 
 
 
211
  </script>
212
  <script type="module" src="/src/main.jsx"></script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
213
  </body>
214
  </html>
 
22
  </script>
23
  </head>
24
  <body class="bg-gray-50 font-sans">
25
+ <particles-background></particles-background>
26
+ <floating-elements></floating-elements>
27
+ <glowing-cursor></glowing-cursor>
28
  <custom-navbar></custom-navbar>
29
 
30
+ <animated-header></animated-header>
31
+
32
+ <main class="container mx-auto px-4 py-8 relative z-10">
33
+ <!-- Stats Section -->
34
+ <section class="mb-16 slide-up">
35
+ <div class="grid grid-cols-1 md:grid-cols-4 gap-6">
36
+ <div class="bg-white/80 backdrop-blur-sm p-6 rounded-2xl shadow-lg border border-white/20 text-center hover:scale-105 transition-transform duration-300">
37
+ <div class="text-4xl font-bold text-primary mb-2">۲۵۰۰+</div>
38
+ <div class="text-gray-600">دانشجو فعال</div>
39
+ </div>
40
+ <div class="bg-white/80 backdrop-blur-sm p-6 rounded-2xl shadow-lg border border-white/20 text-center hover:scale-105 transition-transform duration-300">
41
+ <div class="text-4xl font-bold text-secondary mb-2">۵۰+</div>
42
+ <div class="text-gray-600">دوره آموزشی</div>
43
+ </div>
44
+ <div class="bg-white/80 backdrop-blur-sm p-6 rounded-2xl shadow-lg border border-white/20 text-center hover:scale-105 transition-transform duration-300">
45
+ <div class="text-4xl font-bold text-purple-600 mb-2">۹۸٪</div>
46
+ <div class="text-gray-600">رضایت دانشجویان</div>
47
+ </div>
48
+ <div class="bg-white/80 backdrop-blur-sm p-6 rounded-2xl shadow-lg border border-white/20 text-center hover:scale-105 transition-transform duration-300">
49
+ <div class="text-4xl font-bold text-pink-600 mb-2">۵۰۰+</div>
50
+ <div class="text-gray-600">پروژه عملی</div>
51
  </div>
 
 
 
52
  </div>
53
  </section>
54
 
55
+ <!-- Interactive Demo -->
56
+ <section class="mb-16 slide-up">
57
+ <div class="bg-gradient-to-br from-primary/10 to-secondary/10 rounded-3xl p-8 md:p-12 border border-white/30 backdrop-blur-sm">
58
+ <div class="flex flex-col md:flex-row items-center justify-between gap-8">
59
+ <div class="md:w-1/2">
60
+ <h2 class="text-3xl font-bold text-gray-900 mb-4">تجربه تعاملی کدنویسی</h2>
61
+ <p class="text-gray-600 mb-6">
62
+ کد پایتون را مستقیماً در مرورگر خود اجرا کنید. محیطی زنده با قابلیت نمایش خروجی بلافاصله.
63
+ </p>
64
+ <div class="bg-gray-900 text-gray-100 p-4 rounded-xl font-mono text-sm mb-4">
65
+ <div class="text-green-400"># کد نمونه</div>
66
+ <div class="text-blue-400">def</div>
67
+ <div class="ml-4"><span class="text-yellow-400">print</span>(<span class="text-green-400">"سلام دنیا!"</span>)</div>
68
+ </div>
69
+ <button id="run-code" class="bg-primary hover:bg-primary-600 text-white px-6 py-3 rounded-lg font-medium transition transform hover:scale-105">
70
+ اجرای کد
71
+ </button>
72
+ </div>
73
+ <div class="md:w-1/2">
74
+ <div class="bg-white/90 backdrop-blur-sm p-6 rounded-2xl shadow-xl border border-gray-200">
75
+ <div class="flex items-center gap-2 mb-4">
76
+ <div class="w-3 h-3 rounded-full bg-red-500"></div>
77
+ <div class="w-3 h-3 rounded-full bg-yellow-500"></div>
78
+ <div class="w-3 h-3 rounded-full bg-green-500"></div>
79
+ <div class="text-gray-500 text-sm mr-2">خروجی</div>
80
+ </div>
81
+ <div id="code-output" class="font-mono text-gray-800 min-h-[100px] p-4 bg-gray-50 rounded-lg">
82
+ خروجی کد اینجا نمایش داده می‌شود...
83
+ </div>
84
+ </div>
85
+ </div>
86
+ </div>
87
+ </div>
88
+ </section>
89
  <!-- Features Section -->
90
+ <section class="mb-16 slide-up">
91
  <h2 class="text-3xl font-bold text-center text-gray-900 mb-12">چرا پایتون مستری؟</h2>
92
  <div class="grid grid-cols-1 md:grid-cols-3 gap-8">
93
+ <div class="bg-white/80 backdrop-blur-sm p-8 rounded-2xl shadow-xl border border-white/30 hover:shadow-2xl transition-all duration-500 hover:-translate-y-2">
94
+ <div class="relative">
95
+ <div class="bg-gradient-to-r from-primary to-secondary w-16 h-16 rounded-2xl flex items-center justify-center mb-6 transform rotate-12 hover:rotate-0 transition-transform">
96
+ <i data-feather="code" class="text-white w-8 h-8"></i>
97
+ </div>
98
+ <div class="absolute top-0 left-0 w-16 h-16 rounded-2xl bg-gradient-to-r from-primary/20 to-secondary/20 -z-10 animate-pulse"></div>
99
  </div>
100
+ <h3 class="text-xl font-semibold mb-3">آموزش پروژه‌محور</h3>
101
  <p class="text-gray-600">یادگیری با انجام پروژه‌های واقعی و کاربردی در دنیای کار</p>
102
  </div>
103
+ <div class="bg-white/80 backdrop-blur-sm p-8 rounded-2xl shadow-xl border border-white/30 hover:shadow-2xl transition-all duration-500 hover:-translate-y-2">
104
+ <div class="relative">
105
+ <div class="bg-gradient-to-r from-purple-500 to-pink-500 w-16 h-16 rounded-2xl flex items-center justify-center mb-6 transform -rotate-12 hover:rotate-0 transition-transform">
106
+ <i data-feather="users" class="text-white w-8 h-8"></i>
107
+ </div>
108
+ <div class="absolute top-0 left-0 w-16 h-16 rounded-2xl bg-gradient-to-r from-purple-500/20 to-pink-500/20 -z-10 animate-pulse"></div>
109
  </div>
110
+ <h3 class="text-xl font-semibold mb-3">مربیان حرفه‌ای</h3>
111
  <p class="text-gray-600">همراهی با بهترین مربیان صنعت در طول مسیر یادگیری</p>
112
  </div>
113
+ <div class="bg-white/80 backdrop-blur-sm p-8 rounded-2xl shadow-xl border border-white/30 hover:shadow-2xl transition-all duration-500 hover:-translate-y-2">
114
+ <div class="relative">
115
+ <div class="bg-gradient-to-r from-yellow-500 to-orange-500 w-16 h-16 rounded-2xl flex items-center justify-center mb-6 transform rotate-12 hover:rotate-0 transition-transform">
116
+ <i data-feather="award" class="text-white w-8 h-8"></i>
117
+ </div>
118
+ <div class="absolute top-0 left-0 w-16 h-16 rounded-2xl bg-gradient-to-r from-yellow-500/20 to-orange-500/20 -z-10 animate-pulse"></div>
119
  </div>
120
+ <h3 class="text-xl font-semibold mb-3">گواهینامه معتبر</h3>
121
  <p class="text-gray-600">دریافت مدرک معتبر پس از اتمام هر دوره</p>
122
  </div>
123
  </div>
124
  </section>
 
125
  <!-- Courses Preview -->
126
+ <section class="mb-16 slide-up">
127
  <div class="flex justify-between items-center mb-8">
128
  <h2 class="text-3xl font-bold text-gray-900">دوره‌های آموزشی</h2>
129
+ <a href="/courses" class="text-primary hover:text-primary-600 font-medium flex items-center gap-2 group">
130
  مشاهده همه
131
+ <i data-feather="arrow-left" class="w-4 h-4 group-hover:-translate-x-2 transition-transform"></i>
132
  </a>
133
  </div>
134
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
135
  <!-- Course Card 1 -->
136
+ <div class="group bg-white/80 backdrop-blur-sm rounded-2xl shadow-xl overflow-hidden hover:shadow-2xl transition-all duration-500 hover:-translate-y-3 border border-white/30">
137
+ <div class="relative overflow-hidden">
138
+ <img src="http://static.photos/technology/640x360/101" alt="Python Basics" class="w-full h-48 object-cover group-hover:scale-110 transition-transform duration-700">
139
+ <div class="absolute top-4 left-4 bg-gradient-to-r from-primary to-secondary text-white px-3 py-1 rounded-full text-sm">
140
+ جدید
141
+ </div>
142
+ </div>
143
  <div class="p-6">
144
+ <div class="flex justify-between items-start mb-3">
145
  <h3 class="text-xl font-bold">پایتون مقدماتی</h3>
 
 
 
 
146
  <div class="flex items-center gap-1 text-yellow-500">
147
  <i data-feather="star" class="w-4 h-4 fill-current"></i>
148
  <span>4.9</span>
149
  </div>
150
+ </div>
151
+ <p class="text-gray-600 mb-6">آموزش اصول اولیه برنامه‌نویسی با پایتون برای شروع کار</p>
152
+ <div class="flex justify-between items-center">
153
+ <div class="text-lg font-bold text-primary">رایگان</div>
154
+ <a href="/course/python-basics" class="text-primary hover:text-primary-600 font-medium flex items-center gap-1 group">
155
+ مشاهده دوره
156
+ <i data-feather="arrow-left" class="w-4 h-4 group-hover:-translate-x-1 transition-transform"></i>
157
+ </a>
158
  </div>
159
  </div>
160
  </div>
161
 
162
  <!-- Course Card 2 -->
163
+ <div class="group bg-white/80 backdrop-blur-sm rounded-2xl shadow-xl overflow-hidden hover:shadow-2xl transition-all duration-500 hover:-translate-y-3 border border-white/30">
164
+ <div class="relative overflow-hidden">
165
+ <img src="http://static.photos/technology/640x360/102" alt="Python OOP" class="w-full h-48 object-cover group-hover:scale-110 transition-transform duration-700">
166
+ <div class="absolute top-4 left-4 bg-gradient-to-r from-purple-500 to-pink-500 text-white px-3 py-1 rounded-full text-sm">
167
+ پرفروش
168
+ </div>
169
+ </div>
170
  <div class="p-6">
171
+ <div class="flex justify-between items-start mb-3">
172
  <h3 class="text-xl font-bold">برنامه‌نویسی شی‌گرا</h3>
 
 
 
 
173
  <div class="flex items-center gap-1 text-yellow-500">
174
  <i data-feather="star" class="w-4 h-4 fill-current"></i>
175
  <span>4.8</span>
176
  </div>
177
+ </div>
178
+ <p class="text-gray-600 mb-6">آموزش کامل مفاهیم شی‌گرایی در پایتون با مثال‌های عملی</p>
179
+ <div class="flex justify-between items-center">
180
+ <div class="text-lg font-bold text-primary">۱۹۰,۰۰۰ تومان</div>
181
+ <a href="/course/python-oop" class="text-primary hover:text-primary-600 font-medium flex items-center gap-1 group">
182
+ مشاهده دوره
183
+ <i data-feather="arrow-left" class="w-4 h-4 group-hover:-translate-x-1 transition-transform"></i>
184
+ </a>
185
  </div>
186
  </div>
187
  </div>
188
 
189
  <!-- Course Card 3 -->
190
+ <div class="group bg-white/80 backdrop-blur-sm rounded-2xl shadow-xl overflow-hidden hover:shadow-2xl transition-all duration-500 hover:-translate-y-3 border border-white/30">
191
+ <div class="relative overflow-hidden">
192
+ <img src="http://static.photos/technology/640x360/103" alt="Python Web" class="w-full h-48 object-cover group-hover:scale-110 transition-transform duration-700">
193
+ <div class="absolute top-4 left-4 bg-gradient-to-r from-green-500 to-teal-500 text-white px-3 py-1 rounded-full text-sm">
194
+ پرطرفدار
195
+ </div>
196
+ </div>
197
  <div class="p-6">
198
+ <div class="flex justify-between items-start mb-3">
199
  <h3 class="text-xl font-bold">توسعه وب با پایتون</h3>
 
 
 
 
200
  <div class="flex items-center gap-1 text-yellow-500">
201
  <i data-feather="star" class="w-4 h-4 fill-current"></i>
202
  <span>4.7</span>
203
  </div>
204
+ </div>
205
+ <p class="text-gray-600 mb-6">یادگیری Django و Flask برای ساخت وب‌اپلیکیشن‌های حرفه‌ای</p>
206
+ <div class="flex justify-between items-center">
207
+ <div class="text-lg font-bold text-primary">۲۹۰,۰۰۰ تومان</div>
208
+ <a href="/course/python-web" class="text-primary hover:text-primary-600 font-medium flex items-center gap-1 group">
209
+ مشاهده دوره
210
+ <i data-feather="arrow-left" class="w-4 h-4 group-hover:-translate-x-1 transition-transform"></i>
211
+ </a>
212
  </div>
213
  </div>
214
  </div>
215
  </div>
216
  </section>
 
217
  <!-- Testimonials -->
218
+ <section class="mb-16 slide-up">
219
  <h2 class="text-3xl font-bold text-center text-gray-900 mb-12">نظرات دانشجویان</h2>
220
  <div class="grid grid-cols-1 md:grid-cols-2 gap-8">
221
+ <div class="bg-gradient-to-br from-white/80 to-primary/5 backdrop-blur-sm p-8 rounded-2xl shadow-xl border border-white/30 hover:shadow-2xl transition-all duration-500">
222
+ <div class="flex items-center gap-4 mb-6">
223
+ <div class="relative">
224
+ <img src="http://static.photos/people/200x200/1" alt="User" class="w-16 h-16 rounded-full object-cover border-4 border-white/50">
225
+ <div class="absolute -bottom-1 -right-1 w-6 h-6 bg-green-500 rounded-full border-2 border-white"></div>
226
+ </div>
227
  <div>
228
+ <h4 class="font-bold text-lg">محمد رضایی</h4>
229
  <div class="flex items-center gap-1 text-yellow-500">
230
  <i data-feather="star" class="w-4 h-4 fill-current"></i>
231
  <i data-feather="star" class="w-4 h-4 fill-current"></i>
 
235
  </div>
236
  </div>
237
  </div>
238
+ <p class="text-gray-700 text-lg leading-relaxed">
239
+ "بهترین پلتفرم برای یادگیری پایتون. دوره‌ها بسیار کامل و پروژه‌محور هستند. بعد از اتمام دوره مقدماتی توانستم در شرکت معتبری استخدام شوم."
240
  </p>
241
  </div>
242
+ <div class="bg-gradient-to-br from-white/80 to-secondary/5 backdrop-blur-sm p-8 rounded-2xl shadow-xl border border-white/30 hover:shadow-2xl transition-all duration-500">
243
+ <div class="flex items-center gap-4 mb-6">
244
+ <div class="relative">
245
+ <img src="http://static.photos/people/200x200/2" alt="User" class="w-16 h-16 rounded-full object-cover border-4 border-white/50">
246
+ <div class="absolute -bottom-1 -right-1 w-6 h-6 bg-green-500 rounded-full border-2 border-white"></div>
247
+ </div>
248
  <div>
249
+ <h4 class="font-bold text-lg">فاطمه محمدی</h4>
250
  <div class="flex items-center gap-1 text-yellow-500">
251
  <i data-feather="star" class="w-4 h-4 fill-current"></i>
252
  <i data-feather="star" class="w-4 h-4 fill-current"></i>
 
256
  </div>
257
  </div>
258
  </div>
259
+ <p class="text-gray-700 text-lg leading-relaxed">
260
+ "به عنوان کسی که هیچ پیشینه برنامه‌نویسی نداشتم، دوره‌های این سایت واقعا برای من مفید بود. پشتیبانی عالی و محتوای باکیفیت."
261
  </p>
262
  </div>
263
  </div>
264
  </section>
 
265
  <!-- CTA Section -->
266
+ <section class="relative overflow-hidden bg-gradient-to-r from-primary via-purple-600 to-secondary text-white rounded-3xl p-8 md:p-12 mb-16 slide-up">
267
+ <div class="absolute top-0 left-0 w-full h-full overflow-hidden">
268
+ <div class="absolute -top-20 -left-20 w-64 h-64 bg-white/10 rounded-full"></div>
269
+ <div class="absolute bottom-10 right-10 w-40 h-40 bg-white/5 rounded-full"></div>
270
+ <div class="absolute top-1/2 left-1/2 w-80 h-80 bg-white/5 rounded-full -translate-x-1/2 -translate-y-1/2"></div>
271
+ </div>
272
+ <div class="relative z-10 max-w-3xl mx-auto text-center">
273
+ <h2 class="text-3xl md:text-4xl font-bold mb-6">آماده شروع یادگیری هستید؟</h2>
274
+ <p class="text-xl mb-10 opacity-95">
275
  همین حالا ثبت‌نام کنید و به جمع هزاران دانشجوی ما بپیوندید. اولین قدم برای تبدیل شدن به یک برنامه‌نویس حرفه‌ای را بردارید.
276
  </p>
277
+ <a href="/register" class="group bg-white text-primary hover:bg-gray-100 px-10 py-4 rounded-2xl font-bold inline-block transition-all duration-300 transform hover:scale-105 shadow-2xl">
278
+ <span class="flex items-center justify-center gap-3">
279
+ ثبت‌نام رایگان
280
+ <i data-feather="arrow-left" class="w-5 h-5 group-hover:-translate-x-2 transition-transform"></i>
281
+ </span>
282
  </a>
283
+ <p class="mt-6 opacity-80">اولین جلسه رایگان • پشتیبانی ۲۴ ساعته • گواهینامه معتبر</p>
284
  </div>
285
  </section>
286
+ </main>
287
  </main>
288
 
289
  <custom-footer></custom-footer>
290
  <script src="components/navbar.js"></script>
291
  <script src="components/footer.js"></script>
292
+ <script src="components/particles-bg.js"></script>
293
+ <script src="components/floating-elements.js"></script>
294
+ <script src="components/glowing-cursor.js"></script>
295
+ <script src="components/animated-header.js"></script>
296
  <script src="script.js"></script>
297
  <script>
298
  feather.replace();
299
+
300
+ // Interactive code runner
301
+ document.getElementById('run-code')?.addEventListener('click', function() {
302
+ const output = document.getElementById('code-output');
303
+ output.innerHTML = '<div class="text-green-600">$ python hello.py</div><div class="mt-2">سلام دنیا!</div><div class="mt-2 text-gray-500">کد با موفقیت اجرا شد!</div>';
304
+
305
+ // Add animation
306
+ output.classList.add('animate-pulse');
307
+ setTimeout(() => output.classList.remove('animate-pulse'), 500);
308
+ });
309
  </script>
310
  <script type="module" src="/src/main.jsx"></script>
311
+ <style>
312
+ body {
313
+ overflow-x: hidden;
314
+ }
315
+
316
+ .slide-up {
317
+ animation: slideUp 0.8s ease-out;
318
+ }
319
+
320
+ @keyframes slideUp {
321
+ from {
322
+ opacity: 0;
323
+ transform: translateY(40px);
324
+ }
325
+ to {
326
+ opacity: 1;
327
+ transform: translateY(0);
328
+ }
329
+ }
330
+
331
+ /* Glass effect */
332
+ .glass {
333
+ background: rgba(255, 255, 255, 0.2);
334
+ backdrop-filter: blur(10px);
335
+ border: 1px solid rgba(255, 255, 255, 0.3);
336
+ }
337
+ </style>
338
  </body>
339
  </html>
script.js CHANGED
@@ -1,3 +1,4 @@
 
1
  // Main JavaScript File
2
  document.addEventListener('DOMContentLoaded', function() {
3
  // Initialize animations
@@ -33,6 +34,100 @@ document.addEventListener('DOMContentLoaded', function() {
33
  document.body.classList.add('dark');
34
  }
35
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  });
37
 
38
  // API functions
@@ -62,4 +157,38 @@ function validateForm(form) {
62
  });
63
 
64
  return isValid;
65
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
  // Main JavaScript File
3
  document.addEventListener('DOMContentLoaded', function() {
4
  // Initialize animations
 
34
  document.body.classList.add('dark');
35
  }
36
  }
37
+
38
+ // Interactive code runner
39
+ const runCodeBtn = document.getElementById('run-code');
40
+ if (runCodeBtn) {
41
+ runCodeBtn.addEventListener('click', function() {
42
+ const output = document.getElementById('code-output');
43
+ if (output) {
44
+ output.innerHTML = `
45
+ <div class="text-green-600 font-bold">$ python hello.py</div>
46
+ <div class="mt-3 text-2xl font-bold text-primary">سلام دنیا!</div>
47
+ <div class="mt-3 text-gray-600">✅ کد با موفقیت اجرا شد!</div>
48
+ <div class="mt-4 text-sm text-gray-500">
49
+ زمان اجرا: ۰.۰۰۲ ثانیه<br>
50
+ حافظه مصرفی: ۲.۱ مگابایت
51
+ </div>
52
+ `;
53
+
54
+ // Add animation
55
+ output.classList.add('animate-pulse');
56
+ setTimeout(() => output.classList.remove('animate-pulse'), 500);
57
+
58
+ // Button feedback
59
+ this.innerHTML = '<span>✅ اجرا شد!</span>';
60
+ this.classList.add('bg-green-600', 'hover:bg-green-700');
61
+ setTimeout(() => {
62
+ this.innerHTML = '<span>اجرای کد</span>';
63
+ this.classList.remove('bg-green-600', 'hover:bg-green-700');
64
+ }, 2000);
65
+ }
66
+ });
67
+ }
68
+
69
+ // Add hover effects to cards
70
+ const cards = document.querySelectorAll('.bg-white\\/80');
71
+ cards.forEach(card => {
72
+ card.addEventListener('mouseenter', function() {
73
+ this.style.transform = 'translateY(-10px) scale(1.02)';
74
+ });
75
+
76
+ card.addEventListener('mouseleave', function() {
77
+ this.style.transform = 'translateY(0) scale(1)';
78
+ });
79
+ });
80
+
81
+ // Add parallax effect to floating elements
82
+ window.addEventListener('mousemove', function(e) {
83
+ const x = e.clientX / window.innerWidth;
84
+ const y = e.clientY / window.innerHeight;
85
+
86
+ document.querySelectorAll('.floating-element').forEach(el => {
87
+ const speed = parseFloat(el.getAttribute('data-speed') || '0.5');
88
+ const xMove = x * speed * 100;
89
+ const yMove = y * speed * 100;
90
+ el.style.transform = `translate(${xMove}px, ${yMove}px)`;
91
+ });
92
+ });
93
+
94
+ // Initialize typing animation
95
+ const typeWriter = document.getElementById('typewriter');
96
+ if (typeWriter) {
97
+ const texts = [
98
+ 'یادگیری پایتون',
99
+ 'ساخت پروژه‌های واقعی',
100
+ 'تبدیل شدن به حرفه‌ای'
101
+ ];
102
+ let textIndex = 0;
103
+ let charIndex = 0;
104
+ let isDeleting = false;
105
+
106
+ function type() {
107
+ const currentText = texts[textIndex];
108
+
109
+ if (isDeleting) {
110
+ typeWriter.textContent = currentText.substring(0, charIndex - 1);
111
+ charIndex--;
112
+ } else {
113
+ typeWriter.textContent = currentText.substring(0, charIndex + 1);
114
+ charIndex++;
115
+ }
116
+
117
+ if (!isDeleting && charIndex === currentText.length) {
118
+ isDeleting = true;
119
+ setTimeout(type, 2000);
120
+ } else if (isDeleting && charIndex === 0) {
121
+ isDeleting = false;
122
+ textIndex = (textIndex + 1) % texts.length;
123
+ setTimeout(type, 500);
124
+ } else {
125
+ setTimeout(type, isDeleting ? 50 : 100);
126
+ }
127
+ }
128
+
129
+ setTimeout(type, 1000);
130
+ }
131
  });
132
 
133
  // API functions
 
157
  });
158
 
159
  return isValid;
160
+ }
161
+
162
+ // Create confetti effect
163
+ function createConfetti() {
164
+ const confettiCount = 100;
165
+ const colors = ['#3B82F6', '#10B981', '#8B5CF6', '#EF4444', '#F59E0B'];
166
+
167
+ for (let i = 0; i < confettiCount; i++) {
168
+ const confetti = document.createElement('div');
169
+ confetti.style.position = 'fixed';
170
+ confetti.style.width = '10px';
171
+ confetti.style.height = '10px';
172
+ confetti.style.background = colors[Math.floor(Math.random() * colors.length)];
173
+ confetti.style.borderRadius = '50%';
174
+ confetti.style.left = `${Math.random() * 100}vw`;
175
+ confetti.style.top = '-20px';
176
+ confetti.style.zIndex = '9999';
177
+ confetti.style.pointerEvents = 'none';
178
+ document.body.appendChild(confetti);
179
+
180
+ // Animation
181
+ const animation = confetti.animate([
182
+ { transform: 'translateY(0) rotate(0deg)', opacity: 1 },
183
+ { transform: `translateY(${window.innerHeight + 100}px) rotate(${Math.random() * 360}deg)`, opacity: 0 }
184
+ ], {
185
+ duration: Math.random() * 3000 + 2000,
186
+ easing: 'cubic-bezier(0.215, 0.610, 0.355, 1)'
187
+ });
188
+
189
+ animation.onfinish = () => confetti.remove();
190
+ }
191
+ }
192
+
193
+ // Export for global use
194
+ window.createConfetti = createConfetti;
style.css CHANGED
@@ -1,26 +1,30 @@
 
1
  /* Custom Styles */
2
  @import url('https://fonts.googleapis.com/css2?family=Vazirmatn:wght@100;200;300;400;500;600;700;800;900&display=swap');
3
 
4
  body {
5
  font-family: 'Vazirmatn', sans-serif;
 
6
  }
7
 
8
  /* Custom Scrollbar */
9
  ::-webkit-scrollbar {
10
- width: 8px;
11
  }
12
 
13
  ::-webkit-scrollbar-track {
14
- background: #f1f1f1;
 
15
  }
16
 
17
  ::-webkit-scrollbar-thumb {
18
- background: #3B82F6;
19
- border-radius: 4px;
 
20
  }
21
 
22
  ::-webkit-scrollbar-thumb:hover {
23
- background: #2563EB;
24
  }
25
 
26
  /* Animation Classes */
@@ -34,13 +38,13 @@ body {
34
  }
35
 
36
  .slide-up {
37
- animation: slideUp 0.5s ease-out;
38
  }
39
 
40
  @keyframes slideUp {
41
  from {
42
  opacity: 0;
43
- transform: translateY(20px);
44
  }
45
  to {
46
  opacity: 1;
@@ -48,6 +52,41 @@ body {
48
  }
49
  }
50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  /* Responsive Adjustments */
52
  @media (max-width: 768px) {
53
  .hero-text {
@@ -57,4 +96,16 @@ body {
57
  .hero-buttons {
58
  justify-content: center;
59
  }
60
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
  /* Custom Styles */
3
  @import url('https://fonts.googleapis.com/css2?family=Vazirmatn:wght@100;200;300;400;500;600;700;800;900&display=swap');
4
 
5
  body {
6
  font-family: 'Vazirmatn', sans-serif;
7
+ overflow-x: hidden;
8
  }
9
 
10
  /* Custom Scrollbar */
11
  ::-webkit-scrollbar {
12
+ width: 12px;
13
  }
14
 
15
  ::-webkit-scrollbar-track {
16
+ background: rgba(0, 0, 0, 0.05);
17
+ border-radius: 10px;
18
  }
19
 
20
  ::-webkit-scrollbar-thumb {
21
+ background: linear-gradient(to bottom, #3B82F6, #8B5CF6);
22
+ border-radius: 10px;
23
+ border: 2px solid rgba(255, 255, 255, 0.8);
24
  }
25
 
26
  ::-webkit-scrollbar-thumb:hover {
27
+ background: linear-gradient(to bottom, #2563EB, #7C3AED);
28
  }
29
 
30
  /* Animation Classes */
 
38
  }
39
 
40
  .slide-up {
41
+ animation: slideUp 0.8s ease-out;
42
  }
43
 
44
  @keyframes slideUp {
45
  from {
46
  opacity: 0;
47
+ transform: translateY(40px);
48
  }
49
  to {
50
  opacity: 1;
 
52
  }
53
  }
54
 
55
+ /* Glass effect */
56
+ .glass {
57
+ background: rgba(255, 255, 255, 0.2);
58
+ backdrop-filter: blur(10px);
59
+ border: 1px solid rgba(255, 255, 255, 0.3);
60
+ }
61
+
62
+ /* Gradient text */
63
+ .gradient-text {
64
+ background: linear-gradient(90deg, #3B82F6, #8B5CF6, #EC4899);
65
+ -webkit-background-clip: text;
66
+ -webkit-text-fill-color: transparent;
67
+ background-clip: text;
68
+ }
69
+
70
+ /* Pulse animation */
71
+ @keyframes pulse-glow {
72
+ 0%, 100% { opacity: 1; }
73
+ 50% { opacity: 0.7; }
74
+ }
75
+
76
+ .pulse-glow {
77
+ animation: pulse-glow 2s infinite;
78
+ }
79
+
80
+ /* Floating animation */
81
+ @keyframes floating {
82
+ 0%, 100% { transform: translateY(0); }
83
+ 50% { transform: translateY(-20px); }
84
+ }
85
+
86
+ .floating {
87
+ animation: floating 3s ease-in-out infinite;
88
+ }
89
+
90
  /* Responsive Adjustments */
91
  @media (max-width: 768px) {
92
  .hero-text {
 
96
  .hero-buttons {
97
  justify-content: center;
98
  }
99
+
100
+ .mobile-hide {
101
+ display: none;
102
+ }
103
+ }
104
+
105
+ /* Background patterns */
106
+ .bg-grid {
107
+ background-image:
108
+ linear-gradient(rgba(59, 130, 246, 0.05) 1px, transparent 1px),
109
+ linear-gradient(90deg, rgba(59, 130, 246, 0.05) 1px, transparent 1px);
110
+ background-size: 50px 50px;
111
+ }