dodey917 commited on
Commit
8ed236b
Β·
verified Β·
1 Parent(s): 9cb8c29

Create a travel blog with full-width destination photos, travel stories grid, interactive world map showing visited places, travel tips section, gear recommendations, and subscription form.

Browse files
Files changed (6) hide show
  1. README.md +8 -5
  2. components/footer.js +371 -0
  3. components/navbar.js +223 -0
  4. index.html +429 -19
  5. script.js +224 -0
  6. style.css +235 -19
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Wanderlust Chronicles
3
- emoji: πŸ’»
4
- colorFrom: indigo
5
- colorTo: indigo
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: Wanderlust Chronicles 🌍
3
+ colorFrom: red
4
+ colorTo: green
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,371 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomFooter extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
7
+
8
+ * {
9
+ font-family: 'Inter', sans-serif;
10
+ }
11
+
12
+ footer {
13
+ background: linear-gradient(135deg, #115e59 0%, #134e4a 100%);
14
+ color: white;
15
+ padding: 4rem 2rem 2rem;
16
+ margin-top: 4rem;
17
+ }
18
+
19
+ .footer-container {
20
+ max-width: 1280px;
21
+ margin: 0 auto;
22
+ }
23
+
24
+ .footer-content {
25
+ display: grid;
26
+ grid-template-columns: 2fr 1fr 1fr 1fr;
27
+ gap: 3rem;
28
+ margin-bottom: 3rem;
29
+ }
30
+
31
+ .footer-brand {
32
+ display: flex;
33
+ flex-direction: column;
34
+ gap: 1rem;
35
+ }
36
+
37
+ .footer-logo {
38
+ display: flex;
39
+ align-items: center;
40
+ gap: 0.5rem;
41
+ font-size: 1.75rem;
42
+ font-weight: 700;
43
+ color: white;
44
+ text-decoration: none;
45
+ }
46
+
47
+ .footer-description {
48
+ color: #94a3b8;
49
+ line-height: 1.6;
50
+ max-width: 300px;
51
+ }
52
+
53
+ .social-links {
54
+ display: flex;
55
+ gap: 1rem;
56
+ margin-top: 1rem;
57
+ }
58
+
59
+ .social-link {
60
+ width: 40px;
61
+ height: 40px;
62
+ background: rgba(255, 255, 255, 0.1);
63
+ border-radius: 50%;
64
+ display: flex;
65
+ align-items: center;
66
+ justify-content: center;
67
+ color: white;
68
+ text-decoration: none;
69
+ transition: all 0.3s ease;
70
+ }
71
+
72
+ .social-link:hover {
73
+ background: #14b8a6;
74
+ transform: translateY(-3px);
75
+ }
76
+
77
+ .footer-column h3 {
78
+ font-size: 1.125rem;
79
+ font-weight: 600;
80
+ margin-bottom: 1rem;
81
+ color: white;
82
+ }
83
+
84
+ .footer-links {
85
+ list-style: none;
86
+ padding: 0;
87
+ margin: 0;
88
+ }
89
+
90
+ .footer-links li {
91
+ margin-bottom: 0.75rem;
92
+ }
93
+
94
+ .footer-links a {
95
+ color: #94a3b8;
96
+ text-decoration: none;
97
+ transition: color 0.3s ease;
98
+ display: inline-flex;
99
+ align-items: center;
100
+ gap: 0.5rem;
101
+ }
102
+
103
+ .footer-links a:hover {
104
+ color: #14b8a6;
105
+ }
106
+
107
+ .footer-links a svg {
108
+ width: 16px;
109
+ height: 16px;
110
+ opacity: 0;
111
+ transition: opacity 0.3s ease;
112
+ }
113
+
114
+ .footer-links a:hover svg {
115
+ opacity: 1;
116
+ }
117
+
118
+ .newsletter-form {
119
+ display: flex;
120
+ flex-direction: column;
121
+ gap: 1rem;
122
+ }
123
+
124
+ .newsletter-input {
125
+ padding: 0.75rem 1rem;
126
+ border-radius: 0.5rem;
127
+ border: 1px solid rgba(255, 255, 255, 0.2);
128
+ background: rgba(255, 255, 255, 0.1);
129
+ color: white;
130
+ font-size: 0.875rem;
131
+ }
132
+
133
+ .newsletter-input::placeholder {
134
+ color: #94a3b8;
135
+ }
136
+
137
+ .newsletter-input:focus {
138
+ outline: none;
139
+ border-color: #14b8a6;
140
+ background: rgba(255, 255, 255, 0.15);
141
+ }
142
+
143
+ .newsletter-btn {
144
+ background: #f97316;
145
+ color: white;
146
+ padding: 0.75rem 1.5rem;
147
+ border-radius: 0.5rem;
148
+ border: none;
149
+ font-weight: 600;
150
+ cursor: pointer;
151
+ transition: all 0.3s ease;
152
+ }
153
+
154
+ .newsletter-btn:hover {
155
+ background: #ea580c;
156
+ transform: translateY(-2px);
157
+ }
158
+
159
+ .footer-bottom {
160
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
161
+ padding-top: 2rem;
162
+ display: flex;
163
+ justify-content: space-between;
164
+ align-items: center;
165
+ flex-wrap: wrap;
166
+ gap: 1rem;
167
+ }
168
+
169
+ .footer-bottom-text {
170
+ color: #94a3b8;
171
+ font-size: 0.875rem;
172
+ }
173
+
174
+ .footer-bottom-links {
175
+ display: flex;
176
+ gap: 2rem;
177
+ list-style: none;
178
+ padding: 0;
179
+ margin: 0;
180
+ }
181
+
182
+ .footer-bottom-links a {
183
+ color: #94a3b8;
184
+ text-decoration: none;
185
+ font-size: 0.875rem;
186
+ transition: color 0.3s ease;
187
+ }
188
+
189
+ .footer-bottom-links a:hover {
190
+ color: #14b8a6;
191
+ }
192
+
193
+ @media (max-width: 768px) {
194
+ .footer-content {
195
+ grid-template-columns: 1fr;
196
+ gap: 2rem;
197
+ }
198
+
199
+ .footer-bottom {
200
+ flex-direction: column;
201
+ text-align: center;
202
+ }
203
+
204
+ .footer-bottom-links {
205
+ justify-content: center;
206
+ }
207
+ }
208
+ </style>
209
+ <footer>
210
+ <div class="footer-container">
211
+ <div class="footer-content">
212
+ <div class="footer-brand">
213
+ <a href="#home" class="footer-logo">
214
+ <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
215
+ <circle cx="12" cy="12" r="10"/>
216
+ <path d="M2 12h20"/>
217
+ <path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/>
218
+ </svg>
219
+ Wanderlust Chronicles
220
+ </a>
221
+ <p class="footer-description">
222
+ Sharing our adventures around the globe, inspiring others to explore the beauty and diversity of our world.
223
+ </p>
224
+ <div class="social-links">
225
+ <a href="#" class="social-link" aria-label="Facebook">
226
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
227
+ <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/>
228
+ </svg>
229
+ </a>
230
+ <a href="#" class="social-link" aria-label="Instagram">
231
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
232
+ <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zM5.838 12a6.162 6.162 0 1 1 12.324 0 6.162 6.162 0 0 1-12.324 0zM12 16a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm4.965-10.405a1.44 1.44 0 1 1 2.881.001 1.44 1.44 0 0 1-2.881-.001z"/>
233
+ </svg>
234
+ </a>
235
+ <a href="#" class="social-link" aria-label="Twitter">
236
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
237
+ <path d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"/>
238
+ </svg>
239
+ </a>
240
+ <a href="#" class="social-link" aria-label="YouTube">
241
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
242
+ <path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/>
243
+ </svg>
244
+ </a>
245
+ </div>
246
+ </div>
247
+
248
+ <div class="footer-column">
249
+ <h3>Explore</h3>
250
+ <ul class="footer-links">
251
+ <li>
252
+ <a href="#stories">
253
+ Travel Stories
254
+ <svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
255
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
256
+ </svg>
257
+ </a>
258
+ </li>
259
+ <li>
260
+ <a href="#destinations">
261
+ Destinations
262
+ <svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
263
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
264
+ </svg>
265
+ </a>
266
+ </li>
267
+ <li>
268
+ <a href="#map">
269
+ Travel Map
270
+ <svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
271
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
272
+ </svg>
273
+ </a>
274
+ </li>
275
+ <li>
276
+ <a href="#gallery">
277
+ Photo Gallery
278
+ <svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
279
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
280
+ </svg>
281
+ </a>
282
+ </li>
283
+ </ul>
284
+ </div>
285
+
286
+ <div class="footer-column">
287
+ <h3>Resources</h3>
288
+ <ul class="footer-links">
289
+ <li>
290
+ <a href="#tips">
291
+ Travel Tips
292
+ <svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
293
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
294
+ </svg>
295
+ </a>
296
+ </li>
297
+ <li>
298
+ <a href="#gear">
299
+ Gear Reviews
300
+ <svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
301
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
302
+ </svg>
303
+ </a>
304
+ </li>
305
+ <li>
306
+ <a href="#guides">
307
+ Travel Guides
308
+ <svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
309
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
310
+ </svg>
311
+ </a>
312
+ </li>
313
+ <li>
314
+ <a href="#faq">
315
+ FAQ
316
+ <svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
317
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
318
+ </svg>
319
+ </a>
320
+ </li>
321
+ </ul>
322
+ </div>
323
+
324
+ <div class="footer-column">
325
+ <h3>Stay Connected</h3>
326
+ <form class="newsletter-form" onsubmit="handleNewsletterSubmit(event)">
327
+ <input type="email" placeholder="Your email" class="newsletter-input" required>
328
+ <button type="submit" class="newsletter-btn">Subscribe</button>
329
+ </form>
330
+ <p style="color: #94a3b8; font-size: 0.875rem; margin-top: 0.5rem;">
331
+ Get weekly travel inspiration
332
+ </p>
333
+ </div>
334
+ </div>
335
+
336
+ <div class="footer-bottom">
337
+ <p class="footer-bottom-text">
338
+ Β© <span class="current-year">2024</span> Wanderlust Chronicles. All rights reserved.
339
+ </p>
340
+ <ul class="footer-bottom-links">
341
+ <li><a href="#privacy">Privacy Policy</a></li>
342
+ <li><a href="#terms">Terms of Service</a></li>
343
+ <li><a href="#cookies">Cookie Policy</a></li>
344
+ </ul>
345
+ </div>
346
+ </div>
347
+ </footer>
348
+ `;
349
+ }
350
+ }
351
+
352
+ customElements.define('custom-footer', CustomFooter);
353
+
354
+ function handleNewsletterSubmit(event) {
355
+ event.preventDefault();
356
+ const input = event.target.querySelector('.newsletter-input');
357
+ const button = event.target.querySelector('.newsletter-btn');
358
+
359
+ button.textContent = 'Subscribing...';
360
+ button.disabled = true;
361
+
362
+ setTimeout(() => {
363
+ button.textContent = 'βœ“ Subscribed!';
364
+ input.value = '';
365
+
366
+ setTimeout(() => {
367
+ button.textContent = 'Subscribe';
368
+ button.disabled = false;
369
+ }, 2000);
370
+ }, 1000);
371
+ }
components/navbar.js ADDED
@@ -0,0 +1,223 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomNavbar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
7
+
8
+ * {
9
+ font-family: 'Inter', sans-serif;
10
+ }
11
+
12
+ nav {
13
+ position: fixed;
14
+ top: 0;
15
+ left: 0;
16
+ right: 0;
17
+ z-index: 1000;
18
+ transition: all 0.3s ease;
19
+ backdrop-filter: blur(10px);
20
+ background: rgba(255, 255, 255, 0.95);
21
+ box-shadow: 0 2px 20px rgba(0, 0, 0, 0.1);
22
+ }
23
+
24
+ nav.scrolled {
25
+ background: rgba(255, 255, 255, 0.98);
26
+ box-shadow: 0 4px 30px rgba(0, 0, 0, 0.15);
27
+ }
28
+
29
+ .nav-container {
30
+ max-width: 1280px;
31
+ margin: 0 auto;
32
+ padding: 1rem 2rem;
33
+ display: flex;
34
+ justify-content: space-between;
35
+ align-items: center;
36
+ }
37
+
38
+ .logo {
39
+ display: flex;
40
+ align-items: center;
41
+ gap: 0.5rem;
42
+ font-size: 1.5rem;
43
+ font-weight: 700;
44
+ color: #134e4a;
45
+ text-decoration: none;
46
+ transition: transform 0.3s ease;
47
+ }
48
+
49
+ .logo:hover {
50
+ transform: scale(1.05);
51
+ }
52
+
53
+ .nav-links {
54
+ display: flex;
55
+ gap: 2rem;
56
+ align-items: center;
57
+ list-style: none;
58
+ margin: 0;
59
+ padding: 0;
60
+ }
61
+
62
+ .nav-link {
63
+ color: #374151;
64
+ text-decoration: none;
65
+ font-weight: 500;
66
+ padding: 0.5rem 1rem;
67
+ border-radius: 0.5rem;
68
+ transition: all 0.3s ease;
69
+ position: relative;
70
+ }
71
+
72
+ .nav-link:hover {
73
+ color: #14b8a6;
74
+ background: #f0fdfa;
75
+ }
76
+
77
+ .nav-link::after {
78
+ content: '';
79
+ position: absolute;
80
+ bottom: 0;
81
+ left: 50%;
82
+ width: 0;
83
+ height: 2px;
84
+ background: #14b8a6;
85
+ transition: all 0.3s ease;
86
+ transform: translateX(-50%);
87
+ }
88
+
89
+ .nav-link:hover::after {
90
+ width: 80%;
91
+ }
92
+
93
+ .nav-cta {
94
+ background: #f97316;
95
+ color: white;
96
+ padding: 0.75rem 1.5rem;
97
+ border-radius: 2rem;
98
+ text-decoration: none;
99
+ font-weight: 600;
100
+ transition: all 0.3s ease;
101
+ box-shadow: 0 4px 15px rgba(249, 115, 22, 0.3);
102
+ }
103
+
104
+ .nav-cta:hover {
105
+ background: #ea580c;
106
+ transform: translateY(-2px);
107
+ box-shadow: 0 6px 20px rgba(249, 115, 22, 0.4);
108
+ }
109
+
110
+ .mobile-menu-btn {
111
+ display: none;
112
+ background: none;
113
+ border: none;
114
+ cursor: pointer;
115
+ padding: 0.5rem;
116
+ color: #374151;
117
+ }
118
+
119
+ .mobile-menu {
120
+ display: none;
121
+ position: absolute;
122
+ top: 100%;
123
+ left: 0;
124
+ right: 0;
125
+ background: white;
126
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
127
+ padding: 1rem;
128
+ }
129
+
130
+ .mobile-menu.active {
131
+ display: block;
132
+ }
133
+
134
+ .mobile-nav-links {
135
+ list-style: none;
136
+ padding: 0;
137
+ margin: 0;
138
+ }
139
+
140
+ .mobile-nav-links li {
141
+ padding: 0.75rem 0;
142
+ border-bottom: 1px solid #e5e7eb;
143
+ }
144
+
145
+ .mobile-nav-links li:last-child {
146
+ border-bottom: none;
147
+ }
148
+
149
+ @media (max-width: 768px) {
150
+ .nav-links {
151
+ display: none;
152
+ }
153
+
154
+ .mobile-menu-btn {
155
+ display: block;
156
+ }
157
+
158
+ .nav-container {
159
+ padding: 1rem;
160
+ }
161
+ }
162
+ </style>
163
+ <nav id="navbar">
164
+ <div class="nav-container">
165
+ <a href="#home" class="logo">
166
+ <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
167
+ <circle cx="12" cy="12" r="10"/>
168
+ <path d="M2 12h20"/>
169
+ <path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/>
170
+ </svg>
171
+ Wanderlust
172
+ </a>
173
+
174
+ <ul class="nav-links">
175
+ <li><a href="#home" class="nav-link">Home</a></li>
176
+ <li><a href="#stories" class="nav-link">Stories</a></li>
177
+ <li><a href="#map" class="nav-link">Map</a></li>
178
+ <li><a href="#tips" class="nav-link">Tips</a></li>
179
+ <li><a href="#gear" class="nav-link">Gear</a></li>
180
+ <li><a href="#contact" class="nav-cta">Get Started</a></li>
181
+ </ul>
182
+
183
+ <button class="mobile-menu-btn" onclick="toggleMobileMenu()">
184
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
185
+ <line x1="3" y1="12" x2="21" y2="12"/>
186
+ <line x1="3" y1="6" x2="21" y2="6"/>
187
+ <line x1="3" y1="18" x2="21" y2="18"/>
188
+ </svg>
189
+ </button>
190
+ </div>
191
+
192
+ <div class="mobile-menu" id="mobileMenu">
193
+ <ul class="mobile-nav-links">
194
+ <li><a href="#home" class="nav-link">Home</a></li>
195
+ <li><a href="#stories" class="nav-link">Stories</a></li>
196
+ <li><a href="#map" class="nav-link">Map</a></li>
197
+ <li><a href="#tips" class="nav-link">Tips</a></li>
198
+ <li><a href="#gear" class="nav-link">Gear</a></li>
199
+ <li><a href="#contact" class="nav-cta">Get Started</a></li>
200
+ </ul>
201
+ </div>
202
+ </nav>
203
+ `;
204
+
205
+ // Add scroll effect
206
+ window.addEventListener('scroll', () => {
207
+ const navbar = this.shadowRoot.getElementById('navbar');
208
+ if (window.scrollY > 50) {
209
+ navbar.classList.add('scrolled');
210
+ } else {
211
+ navbar.classList.remove('scrolled');
212
+ }
213
+ });
214
+ }
215
+ }
216
+
217
+ customElements.define('custom-navbar', CustomNavbar);
218
+
219
+ function toggleMobileMenu() {
220
+ const navbar = document.querySelector('custom-navbar');
221
+ const mobileMenu = navbar.shadowRoot.getElementById('mobileMenu');
222
+ mobileMenu.classList.toggle('active');
223
+ }
index.html CHANGED
@@ -1,19 +1,429 @@
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="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Wanderlust Chronicles - Travel Stories from Around the World</title>
7
+ <link rel="stylesheet" href="style.css">
8
+ <script src="https://cdn.tailwindcss.com"></script>
9
+ <script src="https://unpkg.com/feather-icons"></script>
10
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
11
+ <link rel="preconnect" href="https://fonts.googleapis.com">
12
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
13
+ <link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700;900&family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
14
+ <script>
15
+ tailwind.config = {
16
+ theme: {
17
+ extend: {
18
+ colors: {
19
+ ocean: {
20
+ 50: '#f0fdfa',
21
+ 100: '#ccfbf1',
22
+ 200: '#99f6e4',
23
+ 300: '#5eead4',
24
+ 400: '#2dd4bf',
25
+ 500: '#14b8a6',
26
+ 600: '#0d9488',
27
+ 700: '#0f766e',
28
+ 800: '#115e59',
29
+ 900: '#134e4a',
30
+ },
31
+ sunset: {
32
+ 50: '#fef7ed',
33
+ 100: '#fed7aa',
34
+ 200: '#fdba74',
35
+ 300: '#fb923c',
36
+ 400: '#f97316',
37
+ 500: '#ea580c',
38
+ 600: '#dc2626',
39
+ 700: '#c2410c',
40
+ 800: '#9a3412',
41
+ 900: '#7c2d12',
42
+ }
43
+ },
44
+ fontFamily: {
45
+ 'serif': ['Playfair Display', 'serif'],
46
+ 'sans': ['Inter', 'sans-serif'],
47
+ }
48
+ }
49
+ }
50
+ }
51
+ </script>
52
+ </head>
53
+ <body class="font-sans antialiased bg-gray-50">
54
+ <custom-navbar></custom-navbar>
55
+
56
+ <!-- Hero Section with Full-width Destination Photo -->
57
+ <section class="relative h-screen overflow-hidden">
58
+ <div class="absolute inset-0">
59
+ <img src="https://static.photos/travel/1920x1080/1" alt="Hero Destination" class="w-full h-full object-cover">
60
+ <div class="absolute inset-0 bg-gradient-to-b from-transparent via-black/30 to-black/60"></div>
61
+ </div>
62
+ <div class="relative h-full flex items-center justify-center text-center px-4">
63
+ <div class="max-w-4xl">
64
+ <h1 class="text-5xl md:text-7xl font-serif font-bold text-white mb-6 animate-fade-in">
65
+ Discover the World Through Our Eyes
66
+ </h1>
67
+ <p class="text-xl md:text-2xl text-white/90 mb-8 animate-fade-in-delay">
68
+ Join us on extraordinary adventures across continents and cultures
69
+ </p>
70
+ <button onclick="scrollToSection('stories')" class="bg-ocean-500 hover:bg-ocean-600 text-white px-8 py-4 rounded-full text-lg font-semibold transition-all transform hover:scale-105 animate-bounce-in">
71
+ Explore Stories
72
+ </button>
73
+ </div>
74
+ </div>
75
+ <div class="absolute bottom-8 left-1/2 transform -translate-x-1/2 text-white animate-pulse">
76
+ <i data-feather="chevron-down" class="w-8 h-8"></i>
77
+ </div>
78
+ </section>
79
+
80
+ <!-- Travel Stories Grid -->
81
+ <section id="stories" class="py-20 px-4 bg-white">
82
+ <div class="max-w-7xl mx-auto">
83
+ <div class="text-center mb-16">
84
+ <h2 class="text-4xl md:text-5xl font-serif font-bold text-gray-900 mb-4">Travel Stories</h2>
85
+ <p class="text-xl text-gray-600">Adventures, memories, and moments from around the globe</p>
86
+ </div>
87
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
88
+ <!-- Story Card 1 -->
89
+ <article class="group cursor-pointer transform transition-all duration-300 hover:scale-105">
90
+ <div class="relative overflow-hidden rounded-lg shadow-lg">
91
+ <img src="https://static.photos/nature/640x360/2" alt="Bali Sunset" class="w-full h-64 object-cover group-hover:scale-110 transition-transform duration-300">
92
+ <div class="absolute inset-0 bg-gradient-to-t from-black/70 to-transparent"></div>
93
+ <div class="absolute bottom-0 left-0 right-0 p-6 text-white">
94
+ <span class="inline-block bg-sunset-500 px-3 py-1 rounded-full text-xs font-semibold mb-2">Asia</span>
95
+ <h3 class="text-2xl font-serif font-bold mb-2">Bali: Island of Gods</h3>
96
+ <p class="text-sm opacity-90">Discovering the spiritual heart of Indonesia</p>
97
+ </div>
98
+ </div>
99
+ </article>
100
+
101
+ <!-- Story Card 2 -->
102
+ <article class="group cursor-pointer transform transition-all duration-300 hover:scale-105">
103
+ <div class="relative overflow-hidden rounded-lg shadow-lg">
104
+ <img src="https://static.photos/cityscape/640x360/3" alt="Paris Streets" class="w-full h-64 object-cover group-hover:scale-110 transition-transform duration-300">
105
+ <div class="absolute inset-0 bg-gradient-to-t from-black/70 to-transparent"></div>
106
+ <div class="absolute bottom-0 left-0 right-0 p-6 text-white">
107
+ <span class="inline-block bg-sunset-500 px-3 py-1 rounded-full text-xs font-semibold mb-2">Europe</span>
108
+ <h3 class="text-2xl font-serif font-bold mb-2">Paris: Love in Every Corner</h3>
109
+ <p class="text-sm opacity-90">A romantic journey through the City of Light</p>
110
+ </div>
111
+ </div>
112
+ </article>
113
+
114
+ <!-- Story Card 3 -->
115
+ <article class="group cursor-pointer transform transition-all duration-300 hover:scale-105">
116
+ <div class="relative overflow-hidden rounded-lg shadow-lg">
117
+ <img src="https://static.photos/aerial/640x360/4" alt="Safari Adventure" class="w-full h-64 object-cover group-hover:scale-110 transition-transform duration-300">
118
+ <div class="absolute inset-0 bg-gradient-to-t from-black/70 to-transparent"></div>
119
+ <div class="absolute bottom-0 left-0 right-0 p-6 text-white">
120
+ <span class="inline-block bg-sunset-500 px-3 py-1 rounded-full text-xs font-semibold mb-2">Africa</span>
121
+ <h3 class="text-2xl font-serif font-bold mb-2">Serengeti Safari</h3>
122
+ <p class="text-sm opacity-90">Wildlife wonders in Tanzania's national parks</p>
123
+ </div>
124
+ </div>
125
+ </article>
126
+
127
+ <!-- Story Card 4 -->
128
+ <article class="group cursor-pointer transform transition-all duration-300 hover:scale-105">
129
+ <div class="relative overflow-hidden rounded-lg shadow-lg">
130
+ <img src="https://static/photos/technology/640x360/5" alt="Tokyo Nights" class="w-full h-64 object-cover group-hover:scale-110 transition-transform duration-300">
131
+ <div class="absolute inset-0 bg-gradient-to-t from-black/70 to-transparent"></div>
132
+ <div class="absolute bottom-0 left-0 right-0 p-6 text-white">
133
+ <span class="inline-block bg-sunset-500 px-3 py-1 rounded-full text-xs font-semibold mb-2">Asia</span>
134
+ <h3 class="text-2xl font-serif font-bold mb-2">Tokyo: Future Meets Tradition</h3>
135
+ <p class="text-sm opacity-90">Neon lights and ancient temples in harmony</p>
136
+ </div>
137
+ </div>
138
+ </article>
139
+
140
+ <!-- Story Card 5 -->
141
+ <article class="group cursor-pointer transform transition-all duration-300 hover:scale-105">
142
+ <div class="relative overflow-hidden rounded-lg shadow-lg">
143
+ <img src="https://static.photos/gradient/640x360/6" alt="New York Skyline" class="w-full h-64 object-cover group-hover:scale-110 transition-transform duration-300">
144
+ <div class="absolute inset-0 bg-gradient-to-t from-black/70 to-transparent"></div>
145
+ <div class="absolute bottom-0 left-0 right-0 p-6 text-white">
146
+ <span class="inline-block bg-sunset-500 px-3 py-1 rounded-full text-xs font-semibold mb-2">Americas</span>
147
+ <h3 class="text-2xl font-serif font-bold mb-2">New York: City That Never Sleeps</h3>
148
+ <p class="text-sm opacity-90">Concrete jungle where dreams are made</p>
149
+ </div>
150
+ </div>
151
+ </article>
152
+
153
+ <!-- Story Card 6 -->
154
+ <article class="group cursor-pointer transform transition-all duration-300 hover:scale-105">
155
+ <div class="relative overflow-hidden rounded-lg shadow-lg">
156
+ <img src="https://static.photos/outdoor/640x360/7" alt="Iceland Adventure" class="w-full h-64 object-cover group-hover:scale-110 transition-transform duration-300">
157
+ <div class="absolute inset-0 bg-gradient-to-t from-black/70 to-transparent"></div>
158
+ <div class="absolute bottom-0 left-0 right-0 p-6 text-white">
159
+ <span class="inline-block bg-sunset-500 px-3 py-1 rounded-full text-xs font-semibold mb-2">Europe</span>
160
+ <h3 class="text-2xl font-serif font-bold mb-2">Iceland: Land of Fire & Ice</h3>
161
+ <p class="text-sm opacity-90">Chasing Northern Lights and volcanic wonders</p>
162
+ </div>
163
+ </div>
164
+ </article>
165
+ </div>
166
+ </div>
167
+ </section>
168
+
169
+ <!-- Interactive World Map -->
170
+ <section class="py-20 px-4 bg-ocean-50">
171
+ <div class="max-w-7xl mx-auto">
172
+ <div class="text-center mb-12">
173
+ <h2 class="text-4xl md:text-5xl font-serif font-bold text-gray-900 mb-4">Our Journey Map</h2>
174
+ <p class="text-xl text-gray-600">Click on the markers to explore our adventures</p>
175
+ </div>
176
+ <div class="relative bg-white rounded-2xl shadow-xl p-8">
177
+ <div id="worldMap" class="relative h-96 md:h-[500px] bg-gradient-to-b from-blue-100 to-blue-200 rounded-xl overflow-hidden">
178
+ <!-- Simple World Map Visualization -->
179
+ <svg viewBox="0 0 1000 500" class="w-full h-full">
180
+ <!-- Simplified continent shapes -->
181
+ <path d="M 150 200 Q 200 180 250 200 T 350 220 L 340 280 Q 280 300 220 280 Z" fill="#e5e7eb" stroke="#9ca3af" stroke-width="2"/>
182
+ <path d="M 400 180 Q 450 160 500 180 T 600 200 L 590 260 Q 530 280 470 260 Z" fill="#e5e7eb" stroke="#9ca3af" stroke-width="2"/>
183
+ <path d="M 700 220 Q 750 200 800 220 T 850 240 L 840 300 Q 800 320 750 300 Z" fill="#e5e7eb" stroke="#9ca3af" stroke-width="2"/>
184
+ <path d="M 200 320 Q 250 300 300 320 T 400 340 L 390 400 Q 330 420 270 400 Z" fill="#e5e7eb" stroke="#9ca3af" stroke-width="2"/>
185
+
186
+ <!-- Location Markers -->
187
+ <g class="location-marker cursor-pointer" data-location="Paris, France">
188
+ <circle cx="450" cy="200" r="8" fill="#14b8a6" stroke="white" stroke-width="3">
189
+ <animate attributeName="r" values="8;12;8" dur="2s" repeatCount="indefinite"/>
190
+ </circle>
191
+ <text x="450" y="185" text-anchor="middle" class="text-xs fill-gray-700 font-semibold">Paris</text>
192
+ </g>
193
+
194
+ <g class="location-marker cursor-pointer" data-location="Bali, Indonesia">
195
+ <circle cx="750" cy="320" r="8" fill="#14b8a6" stroke="white" stroke-width="3">
196
+ <animate attributeName="r" values="8;12;8" dur="2s" repeatCount="indefinite"/>
197
+ </circle>
198
+ <text x="750" y="305" text-anchor="middle" class="text-xs fill-gray-700 font-semibold">Bali</text>
199
+ </g>
200
+
201
+ <g class="location-marker cursor-pointer" data-location="Tokyo, Japan">
202
+ <circle cx="820" cy="240" r="8" fill="#14b8a6" stroke="white" stroke-width="3">
203
+ <animate attributeName="r" values="8;12;8" dur="2s" repeatCount="indefinite"/>
204
+ </circle>
205
+ <text x="820" y="225" text-anchor="middle" class="text-xs fill-gray-700 font-semibold">Tokyo</text>
206
+ </g>
207
+
208
+ <g class="location-marker cursor-pointer" data-location="New York, USA">
209
+ <circle cx="250" cy="220" r="8" fill="#14b8a6" stroke="white" stroke-width="3">
210
+ <animate attributeName="r" values="8;12;8" dur="2s" repeatCount="indefinite"/>
211
+ </circle>
212
+ <text x="250" y="205" text-anchor="middle" class="text-xs fill-gray-700 font-semibold">New York</text>
213
+ </g>
214
+
215
+ <g class="location-marker cursor-pointer" data-location="Reykjavik, Iceland">
216
+ <circle cx="400" cy="140" r="8" fill="#14b8a6" stroke="white" stroke-width="3">
217
+ <animate attributeName="r" values="8;12;8" dur="2s" repeatCount="indefinite"/>
218
+ </circle>
219
+ <text x="400" y="125" text-anchor="middle" class="text-xs fill-gray-700 font-semibold">Reykjavik</text>
220
+ </g>
221
+
222
+ <g class="location-marker cursor-pointer" data-location="Serengeti, Tanzania">
223
+ <circle cx="520" cy="380" r="8" fill="#14b8a6" stroke="white" stroke-width="3">
224
+ <animate attributeName="r" values="8;12;8" dur="2s" repeatCount="indefinite"/>
225
+ </circle>
226
+ <text x="520" y="365" text-anchor="middle" class="text-xs fill-gray-700 font-semibold">Serengeti</text>
227
+ </g>
228
+ </svg>
229
+ </div>
230
+ <div id="locationInfo" class="mt-6 p-4 bg-ocean-100 rounded-lg hidden">
231
+ <h3 class="text-xl font-bold text-gray-900 mb-2"></h3>
232
+ <p class="text-gray-700"></p>
233
+ </div>
234
+ </div>
235
+ </div>
236
+ </section>
237
+
238
+ <!-- Travel Tips Section -->
239
+ <section class="py-20 px-4 bg-white">
240
+ <div class="max-w-7xl mx-auto">
241
+ <div class="text-center mb-16">
242
+ <h2 class="text-4xl md:text-5xl font-serif font-bold text-gray-900 mb-4">Travel Tips & Tricks</h2>
243
+ <p class="text-xl text-gray-600">Insider advice for your next adventure</p>
244
+ </div>
245
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
246
+ <div class="bg-gradient-to-br from-ocean-50 to-white p-6 rounded-xl shadow-lg hover:shadow-xl transition-shadow">
247
+ <div class="w-12 h-12 bg-ocean-500 rounded-lg flex items-center justify-center mb-4">
248
+ <i data-feather="compass" class="w-6 h-6 text-white"></i>
249
+ </div>
250
+ <h3 class="text-xl font-bold text-gray-900 mb-3">Navigation Made Easy</h3>
251
+ <p class="text-gray-600 mb-4">Download offline maps before you travel. Google Maps and Maps.me are lifesavers in areas with poor connectivity.</p>
252
+ <a href="#" class="text-ocean-600 font-semibold hover:text-ocean-700 transition-colors">Read more β†’</a>
253
+ </div>
254
+
255
+ <div class="bg-gradient-to-br from-sunset-50 to-white p-6 rounded-xl shadow-lg hover:shadow-xl transition-shadow">
256
+ <div class="w-12 h-12 bg-sunset-500 rounded-lg flex items-center justify-center mb-4">
257
+ <i data-feather="shield" class="w-6 h-6 text-white"></i>
258
+ </div>
259
+ <h3 class="text-xl font-bold text-gray-900 mb-3">Stay Safe Abroad</h3>
260
+ <p class="text-gray-600 mb-4">Always share your itinerary with someone back home and keep digital copies of important documents.</p>
261
+ <a href="#" class="text-sunset-600 font-semibold hover:text-sunset-700 transition-colors">Read more β†’</a>
262
+ </div>
263
+
264
+ <div class="bg-gradient-to-br from-ocean-50 to-white p-6 rounded-xl shadow-lg hover:shadow-xl transition-shadow">
265
+ <div class="w-12 h-12 bg-ocean-500 rounded-lg flex items-center justify-center mb-4">
266
+ <i data-feather="dollar-sign" class="w-6 h-6 text-white"></i>
267
+ </div>
268
+ <h3 class="text-xl font-bold text-gray-900 mb-3">Smart Budgeting</h3>
269
+ <p class="text-gray-600 mb-4">Use travel credit cards with no foreign transaction fees and always carry some local currency.</p>
270
+ <a href="#" class="text-ocean-600 font-semibold hover:text-ocean-700 transition-colors">Read more β†’</a>
271
+ </div>
272
+
273
+ <div class="bg-gradient-to-br from-sunset-50 to-white p-6 rounded-xl shadow-lg hover:shadow-xl transition-shadow">
274
+ <div class="w-12 h-12 bg-sunset-500 rounded-lg flex items-center justify-center mb-4">
275
+ <i data-feather="camera" class="w-6 h-6 text-white"></i>
276
+ </div>
277
+ <h3 class="text-xl font-bold text-gray-900 mb-3">Capture Memories</h3>
278
+ <p class="text-gray-600 mb-4">Wake up early for golden hour photography and don't forget to put the camera down sometimes to just enjoy.</p>
279
+ <a href="#" class="text-sunset-600 font-semibold hover:text-sunset-700 transition-colors">Read more β†’</a>
280
+ </div>
281
+
282
+ <div class="bg-gradient-to-br from-ocean-50 to-white p-6 rounded-xl shadow-lg hover:shadow-xl transition-shadow">
283
+ <div class="w-12 h-12 bg-ocean-500 rounded-lg flex items-center justify-center mb-4">
284
+ <i data-feather="globe" class="w-6 h-6 text-white"></i>
285
+ </div>
286
+ <h3 class="text-xl font-bold text-gray-900 mb-3">Cultural Etiquette</h3>
287
+ <p class="text-gray-600 mb-4">Learn basic greetings and customs. A simple "hello" in the local language goes a long way.</p>
288
+ <a href="#" class="text-ocean-600 font-semibold hover:text-ocean-700 transition-colors">Read more β†’</a>
289
+ </div>
290
+
291
+ <div class="bg-gradient-to-br from-sunset-50 to-white p-6 rounded-xl shadow-lg hover:shadow-xl transition-shadow">
292
+ <div class="w-12 h-12 bg-sunset-500 rounded-lg flex items-center justify-center mb-4">
293
+ <i data-feather="package" class="w-6 h-6 text-white"></i>
294
+ </div>
295
+ <h3 class="text-xl font-bold text-gray-900 mb-3">Packing Hacks</h3>
296
+ <p class="text-gray-600 mb-4">Roll clothes instead of folding, use packing cubes, and always bring a universal adapter.</p>
297
+ <a href="#" class="text-sunset-600 font-semibold hover:text-sunset-700 transition-colors">Read more β†’</a>
298
+ </div>
299
+ </div>
300
+ </div>
301
+ </section>
302
+
303
+ <!-- Gear Recommendations -->
304
+ <section class="py-20 px-4 bg-gray-100">
305
+ <div class="max-w-7xl mx-auto">
306
+ <div class="text-center mb-16">
307
+ <h2 class="text-4xl md:text-5xl font-serif font-bold text-gray-900 mb-4">Travel Gear We Love</h2>
308
+ <p class="text-xl text-gray-600">Essential equipment tested on our adventures</p>
309
+ </div>
310
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
311
+ <div class="bg-white rounded-lg shadow-md overflow-hidden hover:shadow-xl transition-all hover:-translate-y-1">
312
+ <img src="https://static.photos/technology/320x240/8" alt="Camera" class="w-full h-48 object-cover">
313
+ <div class="p-4">
314
+ <h4 class="font-bold text-gray-900 mb-2">Sony A7III Camera</h4>
315
+ <div class="flex items-center mb-2">
316
+ <div class="flex text-yellow-400">
317
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
318
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
319
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
320
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
321
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
322
+ </div>
323
+ <span class="text-sm text-gray-600 ml-2">(5.0)</span>
324
+ </div>
325
+ <p class="text-gray-600 text-sm mb-3">Perfect mirrorless camera for travel photography</p>
326
+ <span class="text-2xl font-bold text-ocean-600">$1,999</span>
327
+ </div>
328
+ </div>
329
+
330
+ <div class="bg-white rounded-lg shadow-md overflow-hidden hover:shadow-xl transition-all hover:-translate-y-1">
331
+ <img src="https://static.photos/office/320x240/9" alt="Backpack" class="w-full h-48 object-cover">
332
+ <div class="p-4">
333
+ <h4 class="font-bold text-gray-900 mb-2">Osprey Farpoint 40</h4>
334
+ <div class="flex items-center mb-2">
335
+ <div class="flex text-yellow-400">
336
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
337
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
338
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
339
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
340
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
341
+ </div>
342
+ <span class="text-sm text-gray-600 ml-2">(4.8)</span>
343
+ </div>
344
+ <p class="text-gray-600 text-sm mb-3">Durable carry-on backpack with laptop sleeve</p>
345
+ <span class="text-2xl font-bold text-ocean-600">$160</span>
346
+ </div>
347
+ </div>
348
+
349
+ <div class="bg-white rounded-lg shadow-md overflow-hidden hover:shadow-xl transition-all hover:-translate-y-1">
350
+ <img src="https://static.photos/industry/320x240/10" alt="Shoes" class="w-full h-48 object-cover">
351
+ <div class="p-4">
352
+ <h4 class="font-bold text-gray-900 mb-2">Allbirds Tree Runners</h4>
353
+ <div class="flex items-center mb-2">
354
+ <div class="flex text-yellow-400">
355
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
356
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
357
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
358
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
359
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
360
+ </div>
361
+ <span class="text-sm text-gray-600 ml-2">(4.6)</span>
362
+ </div>
363
+ <p class="text-gray-600 text-sm mb-3">Comfortable, lightweight, and eco-friendly</p>
364
+ <span class="text-2xl font-bold text-ocean-600">$105</span>
365
+ </div>
366
+ </div>
367
+
368
+ <div class="bg-white rounded-lg shadow-md overflow-hidden hover:shadow-xl transition-all hover:-translate-y-1">
369
+ <img src="https://static.photos/workspace/320x240/11" alt="Power Bank" class="w-full h-48 object-cover">
370
+ <div class="p-4">
371
+ <h4 class="font-bold text-gray-900 mb-2">Anker PowerCore 20000</h4>
372
+ <div class="flex items-center mb-2">
373
+ <div class="flex text-yellow-400">
374
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
375
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
376
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
377
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
378
+ <i data-feather="star" class="w-4 h-4"></i>
379
+ </div>
380
+ <span class="text-sm text-gray-600 ml-2">(4.5)</span>
381
+ </div>
382
+ <p class="text-gray-600 text-sm mb-3">High-capacity portable charger with fast charging</p>
383
+ <span class="text-2xl font-bold text-ocean-600">$50</span>
384
+ </div>
385
+ </div>
386
+ </div>
387
+ </div>
388
+ </section>
389
+
390
+ <!-- Newsletter Subscription -->
391
+ <section class="py-20 px-4 bg-gradient-to-br from-ocean-600 to-ocean-800">
392
+ <div class="max-w-4xl mx-auto text-center">
393
+ <div class="bg-white/10 backdrop-blur-lg rounded-2xl p-8 md:p-12">
394
+ <h2 class="text-4xl md:text-5xl font-serif font-bold text-white mb-4">Join Our Journey</h2>
395
+ <p class="text-xl text-white/90 mb-8">Get exclusive travel stories, tips, and photo galleries delivered to your inbox</p>
396
+ <form id="subscriptionForm" class="max-w-md mx-auto">
397
+ <div class="flex flex-col md:flex-row gap-4">
398
+ <input
399
+ type="email"
400
+ id="emailInput"
401
+ placeholder="Enter your email address"
402
+ class="flex-1 px-6 py-4 rounded-full text-gray-900 placeholder-gray-500 focus:outline-none focus:ring-4 focus:ring-white/30"
403
+ required
404
+ >
405
+ <button
406
+ type="submit"
407
+ class="bg-sunset-500 hover:bg-sunset-600 text-white px-8 py-4 rounded-full font-semibold transition-all transform hover:scale-105 whitespace-nowrap"
408
+ >
409
+ Subscribe Now
410
+ </button>
411
+ </div>
412
+ <p class="text-white/70 text-sm mt-4">Join 10,000+ travel enthusiasts. No spam, unsubscribe anytime.</p>
413
+ </form>
414
+ <div id="subscriptionMessage" class="mt-6 hidden">
415
+ <p class="text-green-300 font-semibold">πŸŽ‰ Welcome aboard! Check your email to confirm your subscription.</p>
416
+ </div>
417
+ </div>
418
+ </div>
419
+ </section>
420
+
421
+ <custom-footer></custom-footer>
422
+
423
+ <script src="components/navbar.js"></script>
424
+ <script src="components/footer.js"></script>
425
+ <script src="script.js"></script>
426
+ <script>feather.replace();</script>
427
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
428
+ </body>
429
+ </html>
script.js ADDED
@@ -0,0 +1,224 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Smooth scroll to section
2
+ function scrollToSection(sectionId) {
3
+ const section = document.getElementById(sectionId);
4
+ if (section) {
5
+ section.scrollIntoView({ behavior: 'smooth' });
6
+ }
7
+ }
8
+
9
+ // Interactive World Map
10
+ const locationData = {
11
+ 'Paris, France': {
12
+ description: 'The City of Light captivated us with its romantic ambiance, world-class museums, and exquisite cuisine. From the Eiffel Tower to the charming streets of Montmartre, Paris never fails to enchant.',
13
+ date: 'Visited: March 2023',
14
+ highlights: ['Louvre Museum', 'Eiffel Tower', 'Seine River Cruise']
15
+ },
16
+ 'Bali, Indonesia': {
17
+ description: 'Bali offered a perfect blend of spiritual temples, terraced rice paddies, and pristine beaches. The warm hospitality and rich culture made this island paradise unforgettable.',
18
+ date: 'Visited: January 2023',
19
+ highlights: ['Tanah Lot Temple', 'Ubud Rice Terraces', 'Seminyak Beach']
20
+ },
21
+ 'Tokyo, Japan': {
22
+ description: 'Tokyo is a city of contrasts where ancient traditions meet cutting-edge technology. From serene temples to neon-lit streets, every corner tells a different story.',
23
+ date: 'Visited: May 2023',
24
+ highlights: ['Senso-ji Temple', 'Shibuya Crossing', 'Mount Fuji Day Trip']
25
+ },
26
+ 'New York, USA': {
27
+ description: 'The city that never sleeps delivered on its promise of endless energy and iconic experiences. Broadway shows, world museums, and diverse neighborhoods made this trip memorable.',
28
+ date: 'Visited: December 2022',
29
+ highlights: ['Times Square', 'Central Park', 'Brooklyn Bridge']
30
+ },
31
+ 'Reykjavik, Iceland': {
32
+ description: 'Iceland\'s dramatic landscapes and the magical Northern Lights left us speechless. From geothermal hot springs to glacier hikes, adventure awaited at every turn.',
33
+ date: 'Visited: September 2022',
34
+ highlights: ['Northern Lights', 'Blue Lagoon', 'Golden Circle Tour']
35
+ },
36
+ 'Serengeti, Tanzania': {
37
+ description: 'Witnessing the Great Migration and coming face to face with the Big Five was a life-changing experience. The vast savanna and abundant wildlife created memories that last forever.',
38
+ date: 'Visited: July 2022',
39
+ highlights: ['Great Migration', 'Ngorongoro Crater', 'Hot Air Balloon Safari']
40
+ }
41
+ };
42
+
43
+ // Initialize map interactions
44
+ document.addEventListener('DOMContentLoaded', function() {
45
+ const locationMarkers = document.querySelectorAll('.location-marker');
46
+ const locationInfo = document.getElementById('locationInfo');
47
+
48
+ locationMarkers.forEach(marker => {
49
+ marker.addEventListener('click', function() {
50
+ const location = this.getAttribute('data-location');
51
+ const data = locationData[location];
52
+
53
+ if (data) {
54
+ locationInfo.querySelector('h3').textContent = location;
55
+ locationInfo.querySelector('p').innerHTML = `
56
+ ${data.description}<br><br>
57
+ <strong>${data.date}</strong><br>
58
+ <span class="text-sm">Highlights: ${data.highlights.join(', ')}</span>
59
+ `;
60
+ locationInfo.classList.remove('hidden');
61
+
62
+ // Scroll to info if needed
63
+ locationInfo.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
64
+ }
65
+ });
66
+ });
67
+ });
68
+
69
+ // Newsletter subscription
70
+ document.getElementById('subscriptionForm').addEventListener('submit', function(e) {
71
+ e.preventDefault();
72
+
73
+ const emailInput = document.getElementById('emailInput');
74
+ const messageDiv = document.getElementById('subscriptionMessage');
75
+
76
+ // Simulate subscription process
77
+ const submitButton = this.querySelector('button[type="submit"]');
78
+ const originalText = submitButton.textContent;
79
+ submitButton.innerHTML = '<span class="loading"></span> Subscribing...';
80
+ submitButton.disabled = true;
81
+
82
+ setTimeout(() => {
83
+ // Show success message
84
+ messageDiv.classList.remove('hidden');
85
+
86
+ // Reset form
87
+ emailInput.value = '';
88
+ submitButton.textContent = originalText;
89
+ submitButton.disabled = false;
90
+
91
+ // Hide message after 5 seconds
92
+ setTimeout(() => {
93
+ messageDiv.classList.add('hidden');
94
+ }, 5000);
95
+
96
+ // In a real app, you would send the email to your backend
97
+ console.log('Subscribed email:', emailInput.value);
98
+ }, 1500);
99
+ });
100
+
101
+ // Intersection Observer for fade-in animations
102
+ const observerOptions = {
103
+ threshold: 0.1,
104
+ rootMargin: '0px 0px -50px 0px'
105
+ };
106
+
107
+ const observer = new IntersectionObserver(function(entries) {
108
+ entries.forEach(entry => {
109
+ if (entry.isIntersecting) {
110
+ entry.target.classList.add('is-visible');
111
+ }
112
+ });
113
+ }, observerOptions);
114
+
115
+ // Observe all sections with fade-in class
116
+ document.addEventListener('DOMContentLoaded', function() {
117
+ const fadeSections = document.querySelectorAll('section');
118
+ fadeSections.forEach(section => {
119
+ section.classList.add('fade-in-section');
120
+ observer.observe(section);
121
+ });
122
+ });
123
+
124
+ // Add parallax effect to hero section
125
+ window.addEventListener('scroll', function() {
126
+ const scrolled = window.pageYOffset;
127
+ const heroImage = document.querySelector('.hero-image');
128
+ if (heroImage) {
129
+ heroImage.style.transform = `translateY(${scrolled * 0.5}px)`;
130
+ }
131
+ });
132
+
133
+ // Mobile menu toggle (if needed)
134
+ function toggleMobileMenu() {
135
+ const mobileMenu = document.getElementById('mobileMenu');
136
+ if (mobileMenu) {
137
+ mobileMenu.classList.toggle('hidden');
138
+ }
139
+ }
140
+
141
+ // Lazy loading for images
142
+ document.addEventListener('DOMContentLoaded', function() {
143
+ const images = document.querySelectorAll('img[data-src]');
144
+
145
+ const imageObserver = new IntersectionObserver((entries, observer) => {
146
+ entries.forEach(entry => {
147
+ if (entry.isIntersecting) {
148
+ const img = entry.target;
149
+ img.src = img.dataset.src;
150
+ img.classList.remove('lazy');
151
+ imageObserver.unobserve(img);
152
+ }
153
+ });
154
+ });
155
+
156
+ images.forEach(img => imageObserver.observe(img));
157
+ });
158
+
159
+ // Add year to footer
160
+ function updateYear() {
161
+ const yearElements = document.querySelectorAll('.current-year');
162
+ const currentYear = new Date().getFullYear();
163
+ yearElements.forEach(element => {
164
+ element.textContent = currentYear;
165
+ });
166
+ }
167
+
168
+ document.addEventListener('DOMContentLoaded', updateYear);
169
+
170
+ // Smooth scroll for anchor links
171
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
172
+ anchor.addEventListener('click', function (e) {
173
+ e.preventDefault();
174
+ const target = document.querySelector(this.getAttribute('href'));
175
+ if (target) {
176
+ target.scrollIntoView({
177
+ behavior: 'smooth',
178
+ block: 'start'
179
+ });
180
+ }
181
+ });
182
+ });
183
+
184
+ // Search functionality (placeholder)
185
+ function searchStories(query) {
186
+ console.log('Searching for:', query);
187
+ // Implement search logic here
188
+ }
189
+
190
+ // Filter stories by category
191
+ function filterByCategory(category) {
192
+ const stories = document.querySelectorAll('[data-category]');
193
+ stories.forEach(story => {
194
+ if (category === 'all' || story.dataset.category === category) {
195
+ story.style.display = 'block';
196
+ } else {
197
+ story.style.display = 'none';
198
+ }
199
+ });
200
+ }
201
+
202
+ // Add to favorites
203
+ function addToFavorites(storyId) {
204
+ let favorites = JSON.parse(localStorage.getItem('favorites') || '[]');
205
+ if (!favorites.includes(storyId)) {
206
+ favorites.push(storyId);
207
+ localStorage.setItem('favorites', JSON.stringify(favorites));
208
+ console.log('Added to favorites:', storyId);
209
+ }
210
+ }
211
+
212
+ // Dark mode toggle (if implementing)
213
+ function toggleDarkMode() {
214
+ document.body.classList.toggle('dark-mode');
215
+ localStorage.setItem('darkMode', document.body.classList.contains('dark-mode'));
216
+ }
217
+
218
+ // Load dark mode preference
219
+ document.addEventListener('DOMContentLoaded', function() {
220
+ const darkMode = localStorage.getItem('darkMode') === 'true';
221
+ if (darkMode) {
222
+ document.body.classList.add('dark-mode');
223
+ }
224
+ });
style.css CHANGED
@@ -1,28 +1,244 @@
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 {
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-delay {
14
+ 0% {
15
+ opacity: 0;
16
+ transform: translateY(30px);
17
+ }
18
+ 50% {
19
+ opacity: 0;
20
+ transform: translateY(30px);
21
+ }
22
+ 100% {
23
+ opacity: 1;
24
+ transform: translateY(0);
25
+ }
26
  }
27
 
28
+ @keyframes bounce-in {
29
+ 0% {
30
+ opacity: 0;
31
+ transform: scale(0.8);
32
+ }
33
+ 60% {
34
+ transform: scale(1.05);
35
+ }
36
+ 100% {
37
+ opacity: 1;
38
+ transform: scale(1);
39
+ }
40
  }
41
 
42
+ .animate-fade-in {
43
+ animation: fade-in 1s ease-out forwards;
 
 
 
 
44
  }
45
 
46
+ .animate-fade-in-delay {
47
+ animation: fade-in-delay 1.5s ease-out forwards;
48
  }
49
+
50
+ .animate-bounce-in {
51
+ animation: bounce-in 1s ease-out 0.5s both;
52
+ }
53
+
54
+ /* Smooth scroll */
55
+ html {
56
+ scroll-behavior: smooth;
57
+ }
58
+
59
+ /* Custom scrollbar */
60
+ ::-webkit-scrollbar {
61
+ width: 10px;
62
+ }
63
+
64
+ ::-webkit-scrollbar-track {
65
+ background: #f1f5f9;
66
+ }
67
+
68
+ ::-webkit-scrollbar-thumb {
69
+ background: #14b8a6;
70
+ border-radius: 5px;
71
+ }
72
+
73
+ ::-webkit-scrollbar-thumb:hover {
74
+ background: #0d9488;
75
+ }
76
+
77
+ /* Image hover effects */
78
+ .image-hover-zoom {
79
+ overflow: hidden;
80
+ }
81
+
82
+ .image-hover-zoom img {
83
+ transition: transform 0.3s ease;
84
+ }
85
+
86
+ .image-hover-zoom:hover img {
87
+ transform: scale(1.1);
88
+ }
89
+
90
+ /* Glass morphism effect */
91
+ .glass {
92
+ background: rgba(255, 255, 255, 0.1);
93
+ backdrop-filter: blur(10px);
94
+ border: 1px solid rgba(255, 255, 255, 0.2);
95
+ }
96
+
97
+ /* Card hover lift */
98
+ .card-lift {
99
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
100
+ }
101
+
102
+ .card-lift:hover {
103
+ transform: translateY(-5px);
104
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
105
+ }
106
+
107
+ /* Gradient text */
108
+ .gradient-text {
109
+ background: linear-gradient(135deg, #14b8a6 0%, #f97316 100%);
110
+ -webkit-background-clip: text;
111
+ -webkit-text-fill-color: transparent;
112
+ background-clip: text;
113
+ }
114
+
115
+ /* Loading animation */
116
+ .loading {
117
+ display: inline-block;
118
+ width: 20px;
119
+ height: 20px;
120
+ border: 3px solid rgba(255, 255, 255, 0.3);
121
+ border-radius: 50%;
122
+ border-top-color: white;
123
+ animation: spin 1s ease-in-out infinite;
124
+ }
125
+
126
+ @keyframes spin {
127
+ to { transform: rotate(360deg); }
128
+ }
129
+
130
+ /* Map marker pulse */
131
+ .map-marker {
132
+ animation: pulse 2s infinite;
133
+ }
134
+
135
+ @keyframes pulse {
136
+ 0% {
137
+ box-shadow: 0 0 0 0 rgba(20, 184, 166, 0.7);
138
+ }
139
+ 70% {
140
+ box-shadow: 0 0 0 10px rgba(20, 184, 166, 0);
141
+ }
142
+ 100% {
143
+ box-shadow: 0 0 0 0 rgba(20, 184, 166, 0);
144
+ }
145
+ }
146
+
147
+ /* Responsive typography */
148
+ @media (max-width: 640px) {
149
+ .hero-title {
150
+ font-size: 2.5rem;
151
+ line-height: 1.2;
152
+ }
153
+
154
+ .section-title {
155
+ font-size: 2rem;
156
+ }
157
+ }
158
+
159
+ /* Focus styles for accessibility */
160
+ button:focus,
161
+ input:focus,
162
+ a:focus {
163
+ outline: 2px solid #14b8a6;
164
+ outline-offset: 2px;
165
+ }
166
+
167
+ /* Custom checkbox */
168
+ .custom-checkbox {
169
+ appearance: none;
170
+ width: 20px;
171
+ height: 20px;
172
+ border: 2px solid #14b8a6;
173
+ border-radius: 4px;
174
+ transition: all 0.3s ease;
175
+ }
176
+
177
+ .custom-checkbox:checked {
178
+ background-color: #14b8a6;
179
+ }
180
+
181
+ .custom-checkbox:checked::after {
182
+ content: 'βœ“';
183
+ color: white;
184
+ display: block;
185
+ text-align: center;
186
+ line-height: 16px;
187
+ }
188
+
189
+ /* Fade in sections on scroll */
190
+ .fade-in-section {
191
+ opacity: 0;
192
+ transform: translateY(20px);
193
+ transition: opacity 0.6s ease, transform 0.6s ease;
194
+ }
195
+
196
+ .fade-in-section.is-visible {
197
+ opacity: 1;
198
+ transform: translateY(0);
199
+ }
200
+
201
+ /* Blog post meta */
202
+ .blog-meta {
203
+ display: flex;
204
+ align-items: center;
205
+ gap: 1rem;
206
+ color: #6b7280;
207
+ font-size: 0.875rem;
208
+ }
209
+
210
+ /* Badge styles */
211
+ .badge {
212
+ display: inline-block;
213
+ padding: 0.25rem 0.75rem;
214
+ font-size: 0.75rem;
215
+ font-weight: 600;
216
+ border-radius: 9999px;
217
+ text-transform: uppercase;
218
+ letter-spacing: 0.05em;
219
+ }
220
+
221
+ /* Floating labels */
222
+ .floating-label {
223
+ position: relative;
224
+ }
225
+
226
+ .floating-label input {
227
+ padding-top: 1.5rem;
228
+ }
229
+
230
+ .floating-label label {
231
+ position: absolute;
232
+ left: 1rem;
233
+ top: 1rem;
234
+ transition: all 0.2s ease;
235
+ color: #9ca3af;
236
+ pointer-events: none;
237
+ }
238
+
239
+ .floating-label input:focus + label,
240
+ .floating-label input:not(:placeholder-shown) + label {
241
+ top: 0.25rem;
242
+ font-size: 0.75rem;
243
+ color: #14b8a6;
244
+ }