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

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +400 -296
index.html CHANGED
@@ -1,312 +1,416 @@
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>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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>