AnesKAM commited on
Commit
c88e277
·
verified ·
1 Parent(s): a136939

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +296 -400
index.html CHANGED
@@ -1,416 +1,312 @@
1
  <!DOCTYPE html>
2
- <html lang="en" dir="ltr">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
6
- <title>SurfGO | Discover the Universe</title>
7
-
8
- <link rel="preconnect" href="https://fonts.googleapis.com">
9
- <link href="https://fonts.googleapis.com/css2?family=Tajawal:wght@300;400;500;700;800&display=swap" rel="stylesheet">
10
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css">
11
- <style>
12
- /* =========================================
13
- 1. VARIABLES & RESET
14
- ========================================= */
15
- :root {
16
- --accent: #3B82F6;
17
- --accent-light: #60A5FA;
18
- --shadow-accent: rgba(59, 130, 246, 0.35);
19
- --bg-gradient: radial-gradient(circle at center, #0e1219 0%, #020304 100%);
20
- --surface: rgba(255, 255, 255, 0.05);
21
- --text: #F0EDE6;
22
- --text-dim: #9CA3AF;
23
- --glass-border: rgba(255, 255, 255, 0.1);
24
- }
25
- *, *::before, *::after {
26
- margin: 0;
27
- padding: 0;
28
- box-sizing: border-box;
29
- }
30
- html {
31
- font-size: 16px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  }
 
 
33
  body {
34
- font-family: 'Tajawal', sans-serif;
35
- background: var(--bg-gradient);
36
- min-height: 100vh;
37
- color: var(--text);
38
- display: flex;
39
- flex-direction: column;
40
- align-items: center;
41
- overflow-x: hidden;
42
  position: relative;
 
43
  }
44
- /* =========================================
45
- 2. SPACE BACKGROUND
46
- ========================================= */
47
- .stars-container {
48
  position: fixed;
49
  inset: 0;
 
 
 
 
 
 
 
50
  pointer-events: none;
51
- z-index: 0;
52
- }
53
- .nebula {
54
- position: fixed;
55
- width: min(500px, 80vw);
56
- height: min(500px, 80vw);
57
- background: radial-gradient(circle, rgba(59, 130, 246, 0.07) 0%, transparent 70%);
58
- border-radius: 50%;
59
- filter: blur(60px);
60
- z-index: 0;
61
- animation: float 20s ease-in-out infinite;
62
- pointer-events: none;
63
- }
64
- @keyframes float {
65
- 0%, 100% { transform: translate(0, 0); }
66
- 50% { transform: translate(60px, 30px); }
67
- }
68
- /* =========================================
69
- 3. MAIN LAYOUT
70
- ========================================= */
71
- .page-wrapper {
72
- position: relative;
73
- z-index: 10;
74
- width: 100%;
75
- min-height: 100vh;
76
- display: flex;
77
- flex-direction: column;
78
- align-items: center;
79
- padding: 100px 20px 80px;
80
- gap: 0;
81
- }
82
- /* =========================================
83
- 4. CLOCK WIDGET
84
- ========================================= */
85
- .clock-container {
86
- position: fixed;
87
- top: clamp(16px, 4vw, 40px);
88
- left: 50%;
89
- transform: translateX(-50%);
90
- text-align: center;
91
- z-index: 20;
92
- animation: fadeIn 1s ease;
93
- white-space: nowrap;
94
- }
95
- #time {
96
- font-size: clamp(1.5rem, 5vw, 3rem);
97
- font-weight: 700;
98
- letter-spacing: 2px;
99
- color: var(--text);
100
- line-height: 1;
101
- }
102
- #date {
103
- font-size: clamp(0.7rem, 2vw, 1rem);
104
- color: var(--text-dim);
105
- margin-top: 4px;
106
  }
107
- /* =========================================
108
- 5. LOGO
109
- ========================================= */
110
- .logo {
111
- font-size: clamp(42px, 12vw, 85px);
112
- font-weight: 800;
113
- color: var(--accent);
114
- margin-bottom: clamp(20px, 5vw, 30px);
115
- text-shadow: 0 10px 20px var(--shadow-accent);
116
- letter-spacing: -2px;
117
- animation: fadeIn 1.2s ease;
118
- text-align: center;
119
- }
120
- /* =========================================
121
- 6. SEARCH BAR
122
- ========================================= */
123
- .search-container {
124
- width: 100%;
125
- max-width: 680px;
126
- padding: 0 4px;
127
- }
128
- .search-form {
129
- display: flex;
130
- background: var(--surface);
131
  backdrop-filter: blur(20px);
132
  -webkit-backdrop-filter: blur(20px);
133
- border: 1px solid var(--glass-border);
134
- border-radius: 100px;
135
- padding: clamp(4px, 1.5vw, 8px) clamp(8px, 2vw, 12px);
136
- transition: 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
137
- box-shadow: 0 20px 40px rgba(0,0,0,0.3);
138
- }
139
- .search-form:focus-within {
140
- transform: scale(1.02);
141
- border-color: var(--accent);
142
- box-shadow: 0 0 40px var(--shadow-accent);
143
- background: rgba(255,255,255,0.08);
144
- }
145
- .search-form input {
146
- flex: 1;
147
- background: transparent;
148
- border: none;
149
- outline: none;
150
- color: var(--text);
151
- font-family: 'Tajawal', sans-serif;
152
- font-size: clamp(0.95rem, 3vw, 1.1rem);
153
- padding: clamp(8px, 2.5vw, 12px) clamp(10px, 3vw, 20px);
154
- min-width: 0;
155
- }
156
- .search-form input::placeholder {
157
- color: var(--text-dim);
158
- opacity: 0.6;
159
  }
160
- .search-btn {
161
- background: none;
162
- border: none;
163
- color: var(--accent);
164
- cursor: pointer;
165
- padding: 0 clamp(10px, 3vw, 15px);
166
- font-size: clamp(1rem, 3vw, 1.2rem);
167
- transition: 0.3s;
168
- flex-shrink: 0;
169
- display: flex;
170
- align-items: center;
171
- }
172
- .search-btn:hover { color: var(--accent-light); }
173
- /* =========================================
174
- 7. QUICK LINKS
175
- ========================================= */
176
- .quick-links {
177
- margin-top: clamp(28px, 6vw, 45px);
178
- display: flex;
179
- gap: clamp(12px, 3vw, 20px);
180
- flex-wrap: wrap;
181
- justify-content: center;
182
- animation: fadeInUp 1s ease;
183
- padding: 0 10px;
184
- }
185
- .link-item {
186
- text-decoration: none;
187
- color: inherit;
188
- text-align: center;
189
- transition: 0.3s;
190
- display: flex;
191
- flex-direction: column;
192
- align-items: center;
193
- }
194
- .link-icon {
195
- width: clamp(48px, 12vw, 60px);
196
- height: clamp(48px, 12vw, 60px);
197
- background: var(--surface);
198
- border: 1px solid var(--glass-border);
199
- border-radius: clamp(14px, 4vw, 20px);
200
- display: flex;
201
- align-items: center;
202
- justify-content: center;
203
- font-size: clamp(18px, 5vw, 24px);
204
- transition: all 0.3s ease;
205
- cursor: pointer;
206
- overflow: hidden;
207
- }
208
- .genisi-logo {
209
- width: 70%;
210
- height: 70%;
211
- object-fit: contain;
212
- transition: transform 0.3s ease;
213
- }
214
- .fa-youtube { color: #FF0000; }
215
- .fa-facebook-f { color: #1877F2; }
216
- .fa-instagram { color: #E4405F; }
217
- .fa-x-twitter { color: #FFFFFF; }
218
- .link-label {
219
- margin-top: 8px;
220
- font-size: clamp(0.68rem, 2vw, 0.8rem);
221
- color: var(--text-dim);
222
- transition: 0.3s;
223
- }
224
- /* Hover — desktop only (no transform on mobile touch) */
225
- @media (hover: hover) {
226
- .link-item:hover .link-icon {
227
- background: var(--accent);
228
- color: white;
229
- border-color: transparent;
230
- box-shadow: 0 15px 30px var(--shadow-accent);
231
- }
232
- .link-item:hover .link-label { color: var(--text); }
233
- .link-item:hover .genisi-logo { transform: scale(1.1); }
234
- }
235
- /* Active state for mobile tap feedback */
236
- .link-item:active .link-icon {
237
- background: var(--accent);
238
- color: white;
239
- border-color: transparent;
240
- box-shadow: 0 8px 20px var(--shadow-accent);
241
- transform: scale(0.95);
242
- }
243
- /* =========================================
244
- 8. FOOTER
245
- ========================================= */
246
- .footer {
247
- position: fixed;
248
- bottom: clamp(12px, 3vw, 20px);
249
- left: 50%;
250
- transform: translateX(-50%);
251
- font-size: clamp(0.7rem, 2vw, 0.8rem);
252
- color: var(--text-dim);
253
- text-align: center;
254
- z-index: 10;
255
- white-space: nowrap;
256
- }
257
- /* =========================================
258
- 9. ANIMATIONS
259
- ========================================= */
260
- @keyframes fadeIn {
261
- from { opacity: 0; transform: translateY(-20px); }
262
- to { opacity: 1; transform: translateY(0); }
263
- }
264
- @keyframes fadeInUp {
265
- from { opacity: 0; transform: translateY(20px); }
266
- to { opacity: 1; transform: translateY(0); }
267
- }
268
- /* =========================================
269
- 10. RESPONSIVE BREAKPOINTS
270
- ========================================= */
271
- /* Small phones (≤360px) */
272
- @media (max-width: 360px) {
273
- .page-wrapper {
274
- padding-top: 90px;
275
- padding-bottom: 70px;
276
- }
277
- .quick-links {
278
- gap: 10px;
279
- }
280
- }
281
- /* Landscape phones */
282
- @media (max-height: 500px) and (orientation: landscape) {
283
- .page-wrapper {
284
- padding-top: 70px;
285
- padding-bottom: 50px;
286
- gap: 0;
287
- }
288
- .logo {
289
- font-size: clamp(32px, 8vw, 55px);
290
- margin-bottom: 14px;
291
- }
292
- .clock-container {
293
- top: 10px;
294
- }
295
- #time { font-size: 1.3rem; }
296
- #date { font-size: 0.65rem; }
297
- .quick-links {
298
- margin-top: 18px;
299
- }
300
- .link-icon {
301
- width: 44px;
302
- height: 44px;
303
- border-radius: 12px;
304
- }
305
- }
306
- /* Tablets (768px+) */
307
- @media (min-width: 768px) {
308
- .page-wrapper {
309
- padding-top: 120px;
310
- padding-bottom: 80px;
311
- }
312
- .quick-links {
313
- gap: 18px;
314
- }
315
- }
316
- /* Desktop (1024px+) */
317
- @media (min-width: 1024px) {
318
- .page-wrapper {
319
- justify-content: center;
320
- min-height: 100vh;
321
- padding-top: 0;
322
- padding-bottom: 0;
323
- }
324
- .logo { margin-bottom: 30px; }
325
  }
326
  </style>
327
- </head>
328
- <body>
329
- <!-- Background -->
330
- <div class="stars-container" id="stars"></div>
331
- <div class="nebula" style="top: 10%; left: 10%;"></div>
332
- <div class="nebula" style="bottom: 10%; right: 10%; background: radial-gradient(circle, rgba(59, 130, 246, 0.05) 0%, transparent 70%);"></div>
333
- <!-- Clock -->
334
- <div class="clock-container">
335
- <div id="time">00:00</div>
336
- <div id="date">Loading...</div>
337
- </div>
338
- <!-- Main Content -->
339
- <div class="page-wrapper">
340
- <!-- Logo -->
341
- <div class="logo">SurfGO</div>
342
- <!-- Search -->
343
- <div class="search-container">
344
- <!-- تم إزالة target="_blank" ليعمل البحث في نفس التبويب -->
345
- <form action="results.html" method="get" class="search-form">
346
- <!-- Added aria-label for accessibility -->
347
- <input type="text" name="q" placeholder="Explore the universe..." autocomplete="off" aria-label="Search Web">
348
- <button type="submit" class="search-btn" aria-label="Search">
349
- <i class="fa-solid fa-magnifying-glass"></i>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
350
  </button>
351
- </form>
352
- </div>
353
- <!-- Quick Links -->
354
- <div class="quick-links">
355
- <a href="https://youtube.com" target="_blank" rel="noopener" class="link-item">
356
- <div class="link-icon"><i class="fa-brands fa-youtube"></i></div>
357
- <div class="link-label">YouTube</div>
358
- </a>
359
- <a href="https://facebook.com" target="_blank" rel="noopener" class="link-item">
360
- <div class="link-icon"><i class="fa-brands fa-facebook-f"></i></div>
361
- <div class="link-label">Facebook</div>
362
- </a>
363
- <a href="https://instagram.com" target="_blank" rel="noopener" class="link-item">
364
- <div class="link-icon"><i class="fa-brands fa-instagram"></i></div>
365
- <div class="link-label">Instagram</div>
366
- </a>
367
- <!-- Genisi Link using local image -->
368
- <a href="https://genisi.web.app/" target="_blank" rel="noopener" class="link-item">
369
- <div class="link-icon">
370
- <img src="Genisi.png" alt="Genisi Logo" width="32" height="32" class="genisi-logo">
371
- </div>
372
- <div class="link-label">Genisi</div>
373
- </a>
374
- <a href="https://twitter.com" target="_blank" rel="noopener" class="link-item">
375
- <div class="link-icon"><i class="fa-brands fa-x-twitter"></i></div>
376
- <div class="link-label">Twitter</div>
377
- </a>
378
  </div>
379
- </div>
380
- <!-- Footer -->
381
- <div class="footer">
382
- Crafted by <strong>AnesNT</strong> · 2026
383
- </div>
384
- <script>
385
- // Clock Function
386
- function updateClock() {
387
- const now = new Date();
388
- const timeStr = now.toLocaleTimeString('en-US', { hour12: false, hour: '2-digit', minute: '2-digit' });
389
- const dateStr = now.toLocaleDateString('en-US', { weekday: 'long', month: 'long', day: 'numeric' });
390
- document.getElementById('time').textContent = timeStr;
391
- document.getElementById('date').textContent = dateStr;
392
- }
393
- setInterval(updateClock, 1000);
394
- updateClock();
395
- // Auto-focus Search Input
396
- document.querySelector('input[name="q"]').focus();
397
- // Stars Background
398
- const starsContainer = document.getElementById('stars');
399
- const starCount = window.innerWidth < 480 ? 80 : 150;
400
- for (let i = 0; i < starCount; i++) {
401
- const star = document.createElement('div');
402
- star.style.cssText = `
403
- position: absolute;
404
- left: ${Math.random() * 100}%;
405
- top: ${Math.random() * 100}%;
406
- width: ${Math.random() * 2 + 0.5}px;
407
- height: ${Math.random() * 2 + 0.5}px;
408
- background: #fff;
409
- border-radius: 50%;
410
- opacity: ${Math.random() * 0.8 + 0.1};
411
- `;
412
- starsContainer.appendChild(star);
413
- }
414
- </script>
415
- </body>
416
- </html>
 
1
  <!DOCTYPE html>
2
+
3
+ <html class="dark" lang="en"><head>
4
+ <meta charset="utf-8"/>
5
+ <meta content="width=device-width, initial-scale=1.0" name="viewport"/>
6
+ <title>SurfGO - Precision Search</title>
7
+ <script src="https://cdn.tailwindcss.com?plugins=forms,container-queries">document.addEventListener('DOMContentLoaded', () => {
8
+ const signInBtn = document.getElementById('google-signin-btn');
9
+ const userProfile = document.getElementById('user-profile-container');
10
+ const searchForm = document.querySelector('form');
11
+ const searchInput = searchForm.querySelector('input[name="q"]');
12
+
13
+ // Robust Sign In simulation logic
14
+ const handleSignIn = () => {
15
+ const label = signInBtn.querySelector('span');
16
+ const originalText = label.textContent;
17
+
18
+ // Set loading state to prevent double clicks
19
+ signInBtn.disabled = true;
20
+ signInBtn.classList.add('opacity-70', 'cursor-not-allowed');
21
+ label.textContent = 'Signing in...';
22
+
23
+ // Simulate OAuth/Authentication flow delay
24
+ setTimeout(() => {
25
+ signInBtn.classList.add('hidden');
26
+ userProfile.classList.remove('hidden');
27
+ userProfile.classList.add('flex');
28
+
29
+ // Reset button state for future use
30
+ signInBtn.disabled = false;
31
+ signInBtn.classList.remove('opacity-70', 'cursor-not-allowed');
32
+ label.textContent = originalText;
33
+ }, 1000);
34
+ };
35
+
36
+ const handleSignOut = () => {
37
+ userProfile.classList.add('hidden');
38
+ userProfile.classList.remove('flex');
39
+ signInBtn.classList.remove('hidden');
40
+ };
41
+
42
+ // Search form submission handling
43
+ const handleSearch = (e) => {
44
+ const query = searchInput.value.trim();
45
+ if (!query) {
46
+ e.preventDefault(); // Prevent empty searches
47
+ searchInput.focus();
48
+ // Optional: add a subtle shake or highlight to input if empty
49
+ return;
50
+ }
51
+ // Browser naturally appends ?q=query to results.html on form submission
52
+ };
53
+
54
+ // Event Listeners
55
+ if (signInBtn) signInBtn.addEventListener('click', handleSignIn);
56
+ if (userProfile) {
57
+ const profileIcon = userProfile.querySelector('div');
58
+ if (profileIcon) profileIcon.addEventListener('click', handleSignOut);
59
+ }
60
+ if (searchForm) searchForm.addEventListener('submit', handleSearch);
61
+ });</script>
62
+ <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&amp;family=Manrope:wght@300;400;500;600&amp;display=swap" rel="stylesheet"/>
63
+ <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
64
+ <script id="tailwind-config">
65
+ tailwind.config = {
66
+ darkMode: "class",
67
+ theme: {
68
+ extend: {
69
+ "colors": {
70
+ "surface-container-low": "#171b26",
71
+ "on-secondary-container": "#b9b7bf",
72
+ "on-secondary-fixed-variant": "#46464c",
73
+ "on-surface": "#dfe2f1",
74
+ "surface-container-highest": "#313540",
75
+ "primary": "#b3c5ff",
76
+ "outline-variant": "#424656",
77
+ "on-tertiary-fixed": "#1a1c1c",
78
+ "tertiary-container": "#707272",
79
+ "surface-tint": "#b3c5ff",
80
+ "background": "#0f131e",
81
+ "on-secondary-fixed": "#1a1b21",
82
+ "inverse-surface": "#dfe2f1",
83
+ "surface-container-lowest": "#0a0e18",
84
+ "surface-variant": "#313540",
85
+ "on-error-container": "#ffdad6",
86
+ "outline": "#8c90a1",
87
+ "on-primary": "#002b75",
88
+ "inverse-primary": "#0054d6",
89
+ "on-tertiary-container": "#f8f8f8",
90
+ "inverse-on-surface": "#2c303c",
91
+ "surface-container-high": "#262a35",
92
+ "error": "#ffb4ab",
93
+ "surface-bright": "#353945",
94
+ "on-tertiary-fixed-variant": "#454747",
95
+ "tertiary": "#c6c6c7",
96
+ "tertiary-fixed-dim": "#c6c6c7",
97
+ "surface-dim": "#0f131e",
98
+ "surface-container": "#1b1f2a",
99
+ "on-primary-fixed": "#001849",
100
+ "surface": "#0f131e",
101
+ "on-surface-variant": "#c2c6d8",
102
+ "secondary-container": "#48494f",
103
+ "primary-container": "#0066ff",
104
+ "on-secondary": "#2f3036",
105
+ "on-tertiary": "#2f3131",
106
+ "on-error": "#690005",
107
+ "secondary": "#c7c6cd",
108
+ "on-primary-fixed-variant": "#003fa4",
109
+ "secondary-fixed-dim": "#c7c6cd",
110
+ "primary-fixed": "#dae1ff",
111
+ "error-container": "#93000a",
112
+ "on-primary-container": "#f8f7ff",
113
+ "on-background": "#dfe2f1",
114
+ "primary-fixed-dim": "#b3c5ff",
115
+ "tertiary-fixed": "#e2e2e2",
116
+ "secondary-fixed": "#e3e1e9"
117
+ },
118
+ "borderRadius": {
119
+ "DEFAULT": "1rem",
120
+ "lg": "2rem",
121
+ "xl": "3rem",
122
+ "full": "9999px"
123
+ },
124
+ "spacing": {
125
+ "base": "8px",
126
+ "gutter": "24px",
127
+ "margin-page": "40px",
128
+ "container-max": "1200px",
129
+ "search-bar-height": "64px"
130
+ },
131
+ "fontFamily": {
132
+ "headline-md": ["Space Grotesk"],
133
+ "display": ["Space Grotesk"],
134
+ "label-sm": ["Manrope"],
135
+ "label-md": ["Manrope"],
136
+ "headline-lg": ["Space Grotesk"],
137
+ "body-md": ["Manrope"],
138
+ "body-lg": ["Manrope"]
139
+ },
140
+ "fontSize": {
141
+ "headline-md": ["24px", {"lineHeight": "1.3", "fontWeight": "500"}],
142
+ "display": ["48px", {"lineHeight": "1.1", "letterSpacing": "-0.02em", "fontWeight": "600"}],
143
+ "label-sm": ["12px", {"lineHeight": "1.2", "fontWeight": "500"}],
144
+ "label-md": ["14px", {"lineHeight": "1.2", "letterSpacing": "0.05em", "fontWeight": "600"}],
145
+ "headline-lg": ["32px", {"lineHeight": "1.2", "fontWeight": "500"}],
146
+ "body-md": ["16px", {"lineHeight": "1.6", "fontWeight": "400"}],
147
+ "body-lg": ["18px", {"lineHeight": "1.6", "fontWeight": "400"}]
148
+ }
149
+ },
150
+ },
151
  }
152
+ </script>
153
+ <style>
154
  body {
155
+ background: #0A0B10 radial-gradient(circle at 50% 50%, #1a1e2e 0%, #0A0B10 100%);
 
 
 
 
 
 
 
156
  position: relative;
157
+ overflow-x: hidden;
158
  }
159
+ /* Performant CSS-only stars using pseudo-elements */
160
+ body::before {
161
+ content: "";
 
162
  position: fixed;
163
  inset: 0;
164
+ background-image:
165
+ radial-gradient(1px 1px at 10% 10%, #ffffff22 100%, transparent 0),
166
+ radial-gradient(1px 1px at 20% 80%, #ffffff33 100%, transparent 0),
167
+ radial-gradient(1.5px 1.5px at 50% 30%, #ffffff11 100%, transparent 0),
168
+ radial-gradient(1px 1px at 80% 20%, #ffffff22 100%, transparent 0),
169
+ radial-gradient(1px 1px at 90% 70%, #ffffff11 100%, transparent 0);
170
+ background-size: 300px 300px, 400px 400px, 250px 250px, 350px 350px, 500px 500px;
171
  pointer-events: none;
172
+ z-index: -1;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
  }
174
+ .glass-effect {
175
+ background: rgba(30, 34, 45, 0.4);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
176
  backdrop-filter: blur(20px);
177
  -webkit-backdrop-filter: blur(20px);
178
+ border: 1px solid rgba(255, 255, 255, 0.1);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179
  }
180
+ .search-glow:focus-within {
181
+ box-shadow: 0 0 25px 2px rgba(179, 197, 255, 0.15);
182
+ border-color: rgba(179, 197, 255, 0.4);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
183
  }
184
  </style>
185
+ <script>document.addEventListener('DOMContentLoaded', () => {
186
+ const signInBtn = document.getElementById('google-signin-btn');
187
+ const userProfile = document.getElementById('user-profile-container');
188
+ const searchForm = document.querySelector('form');
189
+ const searchInput = searchForm.querySelector('input[name="q"]');
190
+
191
+ // Robust Sign In simulation logic
192
+ const handleSignIn = () => {
193
+ const label = signInBtn.querySelector('span');
194
+ const originalText = label.textContent;
195
+
196
+ // Set loading state to prevent double clicks
197
+ signInBtn.disabled = true;
198
+ signInBtn.classList.add('opacity-70', 'cursor-not-allowed');
199
+ label.textContent = 'Signing in...';
200
+
201
+ // Simulate OAuth/Authentication flow delay
202
+ setTimeout(() => {
203
+ signInBtn.classList.add('hidden');
204
+ userProfile.classList.remove('hidden');
205
+ userProfile.classList.add('flex');
206
+
207
+ // Reset button state for future use
208
+ signInBtn.disabled = false;
209
+ signInBtn.classList.remove('opacity-70', 'cursor-not-allowed');
210
+ label.textContent = originalText;
211
+ }, 1000);
212
+ };
213
+
214
+ const handleSignOut = () => {
215
+ userProfile.classList.add('hidden');
216
+ userProfile.classList.remove('flex');
217
+ signInBtn.classList.remove('hidden');
218
+ };
219
+
220
+ // Search form submission handling
221
+ const handleSearch = (e) => {
222
+ const query = searchInput.value.trim();
223
+ if (!query) {
224
+ e.preventDefault(); // Prevent empty searches
225
+ searchInput.focus();
226
+ // Optional: add a subtle shake or highlight to input if empty
227
+ return;
228
+ }
229
+ // Browser naturally appends ?q=query to results.html on form submission
230
+ };
231
+
232
+ // Event Listeners
233
+ if (signInBtn) signInBtn.addEventListener('click', handleSignIn);
234
+ if (userProfile) {
235
+ const profileIcon = userProfile.querySelector('div');
236
+ if (profileIcon) profileIcon.addEventListener('click', handleSignOut);
237
+ }
238
+ if (searchForm) searchForm.addEventListener('submit', handleSearch);
239
+ });</script></head>
240
+ <body class="min-h-screen flex flex-col font-body-md text-on-surface">
241
+ <!-- Top Navigation Bar (Shared Component: TopAppBar) -->
242
+ <header class="fixed top-0 w-full bg-transparent flex justify-end items-center gap-6 px-8 h-16 z-50">
243
+ <nav class="flex items-center gap-6">
244
+ <a class="font-['Space_Grotesk'] text-sm tracking-tight text-slate-600 dark:text-slate-400 hover:text-blue-500 dark:hover:text-blue-300 transition-colors duration-200" href="/images">Space Images</a>
245
+ <a class="font-['Space_Grotesk'] text-sm tracking-tight text-slate-600 dark:text-slate-400 hover:text-blue-500 dark:hover:text-blue-300 transition-colors duration-200" href="/news">Galaxy News</a>
246
+ <button class="flex items-center gap-2 px-4 py-2 rounded-full glass-effect hover:bg-white/10 transition-all duration-300 border border-white/10" id="google-signin-btn">
247
+ <svg class="w-4 h-4" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
248
+ <path d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z" fill="#4285F4"></path>
249
+ <path d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z" fill="#34A853"></path>
250
+ <path d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z" fill="#FBBC05"></path>
251
+ <path d="M12 5.38c1.62 0 3.06.56 4.21 1.66l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z" fill="#EA4335"></path>
252
+ </svg>
253
+ <span class="text-label-md text-on-surface">Sign in</span>
254
+ </button><div class="hidden items-center gap-3" id="user-profile-container">
255
+ <div class="w-9 h-9 rounded-full bg-primary/20 border border-primary/30 flex items-center justify-center cursor-pointer hover:bg-primary/30 transition-all" title="Sign out">
256
+ <span class="material-symbols-outlined text-primary text-[20px]">person</span>
257
+ </div>
258
+ </div><button class="material-symbols-outlined text-slate-600 dark:text-slate-400 hover:text-blue-500 transition-colors cursor-pointer" data-icon="apps">apps</button>
259
+ </nav>
260
+ </header>
261
+ <!-- Main Search Section -->
262
+ <main class="flex-grow flex flex-col items-center justify-center px-gutter pt-16">
263
+ <div class="w-full max-w-[600px] flex flex-col items-center">
264
+ <!-- Brand Wordmark -->
265
+ <h1 class="font-display text-[84px] text-primary mb-8 tracking-tighter select-none">
266
+ SurfGO
267
+ </h1>
268
+ <!-- Search Form -->
269
+ <form action="results.html" class="w-full flex flex-col items-center" method="GET">
270
+ <!-- Search Bar -->
271
+ <div class="w-full h-search-bar-height glass-effect rounded-full px-6 flex items-center search-glow transition-all duration-300 group">
272
+ <span class="material-symbols-outlined text-outline mr-4 group-focus-within:text-primary transition-colors" data-icon="search">search</span>
273
+ <input class="flex-grow bg-transparent border-none outline-none focus:ring-0 text-body-lg text-on-surface placeholder-on-surface-variant/50 font-body-md" name="q" placeholder="Search the cosmos..." type="text"/>
274
+ <div class="flex items-center gap-4">
275
+ <button class="material-symbols-outlined text-outline hover:text-primary transition-colors" data-icon="settings_voice" type="button">settings_voice</button>
276
+ <button class="material-symbols-outlined text-outline hover:text-primary transition-colors" data-icon="rocket_launch" type="submit">rocket_launch</button>
277
+ </div>
278
+ </div>
279
+ <!-- Action Buttons -->
280
+ <div class="flex gap-4 mt-10">
281
+ <button class="bg-primary text-on-primary font-label-md px-8 py-3 rounded-full hover:shadow-[0_0_20px_rgba(179,197,255,0.3)] transition-all duration-300" type="submit">
282
+ Cosmic Search
283
  </button>
284
+ <button class="glass-effect text-on-surface font-label-md px-8 py-3 rounded-full hover:bg-white/5 transition-all duration-300" onclick="window.location.href='#'" type="button">
285
+ Explore the Universe
286
+ </button>
287
+ </div>
288
+ </form>
289
+ <!-- Language/Quick Links -->
290
+ <div class="mt-8 flex gap-4">
291
+ <span class="text-label-sm text-on-surface-variant/60">SurfGO offered in:</span>
292
+ <a class="text-label-sm text-primary hover:underline transition-all" href="#">Stellar</a>
293
+ <a class="text-label-sm text-primary hover:underline transition-all" href="#">Nebula</a>
294
+ </div>
295
+ </div>
296
+ </main>
297
+ <!-- Footer (Shared Component: Footer) -->
298
+ <footer class="fixed bottom-0 w-full bg-[#0A0B10] dark:bg-[#0A0B10] border-t border-white/10 flex justify-between items-center px-10 py-4 z-50">
299
+ <div class="flex gap-6 items-center">
300
+ <a class="font-['Space_Grotesk'] text-xs uppercase tracking-widest text-slate-500 hover:text-white transition-opacity duration-300" href="/about">About</a>
301
+ <a class="font-['Space_Grotesk'] text-xs uppercase tracking-widest text-slate-500 hover:text-white transition-opacity duration-300" href="/privacy">Privacy</a>
302
+ <a class="font-['Space_Grotesk'] text-xs uppercase tracking-widest text-slate-500 hover:text-white transition-opacity duration-300" href="/terms">Terms</a>
303
+ <a class="font-['Space_Grotesk'] text-xs uppercase tracking-widest text-slate-500 hover:text-white transition-opacity duration-300" href="/settings">Settings</a>
304
+ </div>
305
+ <div class="font-['Space_Grotesk'] text-xs uppercase tracking-widest text-slate-500">
306
+ Precision Search.
 
 
 
 
307
  </div>
308
+ </footer>
309
+ <!-- Background Decoration (Subtle Nebula Glows) -->
310
+ <div class="fixed top-[-10%] left-[-10%] w-[40%] h-[40%] rounded-full bg-primary/5 blur-[120px] pointer-events-none -z-10"></div>
311
+ <div class="fixed bottom-[-5%] right-[-5%] w-[30%] h-[30%] rounded-full bg-primary/5 blur-[100px] pointer-events-none -z-10"></div>
312
+ </body></html>