SilentShado commited on
Commit
21757ae
·
verified ·
1 Parent(s): ca1e512

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +489 -525
index.html CHANGED
@@ -1,535 +1,499 @@
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>Project Blue | Prototype</title>
7
- <style>
8
- /* --- RESET & VARIABLES --- */
9
- :root {
10
- --bg-dark: #020617;
11
- --bg-panel: #0f172a;
12
- --primary: #3b82f6;
13
- --primary-glow: #60a5fa;
14
- --accent: #0ea5e9;
15
- --text-main: #f8fafc;
16
- --text-muted: #94a3b8;
17
- --success: #10b981;
18
- --font-mono: 'Courier New', Courier, monospace;
19
- --font-sans: system-ui, -apple-system, sans-serif;
20
- }
21
-
22
- * {
23
- box-sizing: border-box;
24
- margin: 0;
25
- padding: 0;
26
- }
27
-
28
- body {
29
- background-color: var(--bg-dark);
30
- background-image:
31
- radial-gradient(at 0% 0%, hsla(253,16%,7%,1) 0, transparent 50%),
32
- radial-gradient(at 50% 0%, hsla(225,39%,30%,1) 0, transparent 50%),
33
- radial-gradient(at 100% 0%, hsla(339,49%,30%,1) 0, transparent 50%);
34
- background-size: 100% 100%;
35
- color: var(--text-main);
36
- font-family: var(--font-sans);
37
- height: 100vh;
38
- overflow: hidden; /* App-like feel */
39
- display: flex;
40
- flex-direction: column;
41
- }
42
-
43
- /* --- HEADER --- */
44
- header {
45
- padding: 1rem 2rem;
46
- display: flex;
47
- justify-content: space-between;
48
- align-items: center;
49
- border-bottom: 1px solid rgba(255, 255, 255, 0.1);
50
- backdrop-filter: blur(10px);
51
- z-index: 10;
52
- }
53
-
54
- .brand {
55
- font-weight: 700;
56
- font-size: 1.2rem;
57
- letter-spacing: -0.05em;
58
- display: flex;
59
- align-items: center;
60
- gap: 10px;
61
- }
62
-
63
- .brand span {
64
- color: var(--primary);
65
- }
66
-
67
- .anycoder-link {
68
- font-size: 0.85rem;
69
- color: var(--text-muted);
70
- text-decoration: none;
71
- padding: 0.5rem 1rem;
72
- border: 1px solid rgba(255, 255, 255, 0.1);
73
- border-radius: 20px;
74
- transition: all 0.3s ease;
75
- background: rgba(255, 255, 255, 0.05);
76
- }
77
-
78
- .anycoder-link:hover {
79
- background: var(--primary);
80
- color: white;
81
- border-color: var(--primary);
82
- box-shadow: 0 0 15px rgba(59, 130, 246, 0.5);
83
- }
84
-
85
- /* --- MAIN CONTAINER --- */
86
- main {
87
- flex: 1;
88
- display: flex;
89
- justify-content: center;
90
- align-items: center;
91
- padding: 2rem;
92
- position: relative;
93
- }
94
-
95
- /* Background Grid Animation */
96
- .grid-bg {
97
- position: absolute;
98
- width: 200%;
99
- height: 200%;
100
- background-image:
101
- linear-gradient(rgba(59, 130, 246, 0.1) 1px, transparent 1px),
102
- linear-gradient(90deg, rgba(59, 130, 246, 0.1) 1px, transparent 1px);
103
- background-size: 40px 40px;
104
- transform: perspective(500px) rotateX(60deg) translateY(-100px) translateZ(-200px);
105
- animation: gridMove 20s linear infinite;
106
- z-index: 0;
107
- pointer-events: none;
108
- }
109
-
110
- @keyframes gridMove {
111
- 0% { transform: perspective(500px) rotateX(60deg) translateY(0) translateZ(-200px); }
112
- 100% { transform: perspective(500px) rotateX(60deg) translateY(40px) translateZ(-200px); }
113
- }
114
-
115
- /* --- THE BROWSER WINDOW SIMULATION --- */
116
- .browser-mockup {
117
- width: 100%;
118
- max-width: 900px;
119
- height: 600px;
120
- background: rgba(15, 23, 42, 0.6);
121
- backdrop-filter: blur(20px);
122
- border: 1px solid rgba(255, 255, 255, 0.1);
123
- border-radius: 12px;
124
- box-shadow:
125
- 0 25px 50px -12px rgba(0, 0, 0, 0.5),
126
- 0 0 0 1px rgba(255, 255, 255, 0.05);
127
- display: flex;
128
- flex-direction: column;
129
- z-index: 1;
130
- overflow: hidden;
131
- animation: float 6s ease-in-out infinite;
132
- position: relative;
133
- }
134
-
135
- @keyframes float {
136
- 0% { transform: translateY(0px); }
137
- 50% { transform: translateY(-15px); }
138
- 100% { transform: translateY(0px); }
139
- }
140
-
141
- /* Window Controls */
142
- .window-header {
143
- padding: 12px 16px;
144
- background: rgba(255, 255, 255, 0.03);
145
- border-bottom: 1px solid rgba(255, 255, 255, 0.05);
146
- display: flex;
147
- align-items: center;
148
- justify-content: space-between;
149
- }
150
-
151
- .window-controls {
152
- display: flex;
153
- gap: 8px;
154
- }
155
-
156
- .dot {
157
- width: 12px;
158
- height: 12px;
159
- border-radius: 50%;
160
- }
161
- .dot.red { background: #ef4444; }
162
- .dot.yellow { background: #f59e0b; }
163
- .dot.green { background: #10b981; }
164
-
165
- .url-bar {
166
- background: rgba(0, 0, 0, 0.3);
167
- border-radius: 6px;
168
- padding: 4px 12px;
169
- font-family: var(--font-mono);
170
- font-size: 0.75rem;
171
- color: var(--text-muted);
172
- flex: 1;
173
- max-width: 400px;
174
- margin: 0 auto;
175
- display: flex;
176
- align-items: center;
177
- gap: 8px;
178
- border: 1px solid transparent;
179
- transition: border 0.3s;
180
- }
181
-
182
- .url-bar:hover {
183
- border-color: rgba(59, 130, 246, 0.3);
184
- }
185
-
186
- .lock-icon {
187
- color: var(--success);
188
- }
189
-
190
- /* Content Area */
191
- .window-content {
192
- flex: 1;
193
- padding: 2rem;
194
- display: flex;
195
- flex-direction: column;
196
- align-items: center;
197
- justify-content: center;
198
- text-align: center;
199
- position: relative;
200
- }
201
-
202
- /* Glitch Text Effect */
203
- .glitch-wrapper {
204
- position: relative;
205
- margin-bottom: 2rem;
206
- }
207
-
208
- .glitch {
209
- font-size: 3rem;
210
- font-weight: 800;
211
- text-transform: uppercase;
212
- position: relative;
213
- color: var(--text-main);
214
- letter-spacing: 2px;
215
- }
216
-
217
- .glitch::before, .glitch::after {
218
- content: attr(data-text);
219
- position: absolute;
220
- top: 0;
221
- left: 0;
222
- width: 100%;
223
- height: 100%;
224
- }
225
-
226
- .glitch::before {
227
- left: 2px;
228
- text-shadow: -1px 0 #ff00c1;
229
- clip: rect(44px, 450px, 56px, 0);
230
- animation: glitch-anim 5s infinite linear alternate-reverse;
231
- }
232
-
233
- .glitch::after {
234
- left: -2px;
235
- text-shadow: -1px 0 #00fff9;
236
- clip: rect(44px, 450px, 56px, 0);
237
- animation: glitch-anim2 5s infinite linear alternate-reverse;
238
- }
239
-
240
- @keyframes glitch-anim {
241
- 0% { clip: rect(12px, 9999px, 5px, 0); }
242
- 20% { clip: rect(65px, 9999px, 80px, 0); }
243
- 40% { clip: rect(20px, 9999px, 90px, 0); }
244
- 60% { clip: rect(80px, 9999px, 5px, 0); }
245
- 80% { clip: rect(10px, 9999px, 40px, 0); }
246
- 100% { clip: rect(50px, 9999px, 70px, 0); }
247
- }
248
-
249
- @keyframes glitch-anim2 {
250
- 0% { clip: rect(60px, 9999px, 10px, 0); }
251
- 20% { clip: rect(10px, 9999px, 50px, 0); }
252
- 40% { clip: rect(90px, 9999px, 20px, 0); }
253
- 60% { clip: rect(15px, 9999px, 80px, 0); }
254
- 80% { clip: rect(40px, 9999px, 30px, 0); }
255
- 100% { clip: rect(70px, 9999px, 10px, 0); }
256
- }
257
-
258
- /* Description Text */
259
- .description {
260
- max-width: 500px;
261
- color: var(--text-muted);
262
- line-height: 1.6;
263
- margin-bottom: 2rem;
264
- font-size: 1rem;
265
- }
266
-
267
- /* Terminal / Console Box */
268
- .console-box {
269
- width: 100%;
270
- max-width: 500px;
271
- background: #000;
272
- border-radius: 6px;
273
- padding: 1rem;
274
- text-align: left;
275
- font-family: var(--font-mono);
276
- font-size: 0.8rem;
277
- border: 1px solid #333;
278
- box-shadow: inset 0 0 20px rgba(0,0,0,0.8);
279
- height: 150px;
280
- overflow: hidden;
281
- position: relative;
282
- }
283
-
284
- .console-line {
285
- margin-bottom: 5px;
286
- opacity: 0;
287
- animation: fadeIn 0.3s forwards;
288
- }
289
-
290
- .cursor {
291
- display: inline-block;
292
- width: 8px;
293
- height: 15px;
294
- background: var(--primary);
295
- animation: blink 1s infinite;
296
- }
297
-
298
- @keyframes blink { 50% { opacity: 0; } }
299
- @keyframes fadeIn { to { opacity: 1; } }
300
-
301
- /* Progress Bar */
302
- .progress-container {
303
- width: 100%;
304
- height: 4px;
305
- background: #333;
306
- border-radius: 2px;
307
- margin-top: 10px;
308
- overflow: hidden;
309
- }
310
-
311
- .progress-bar {
312
- height: 100%;
313
- width: 0%;
314
- background: linear-gradient(90deg, var(--primary), var(--accent));
315
- transition: width 0.5s ease;
316
- box-shadow: 0 0 10px var(--primary);
317
- }
318
-
319
- /* Interactive Elements */
320
- .actions {
321
- margin-top: 2rem;
322
- display: flex;
323
- gap: 1rem;
324
- }
325
-
326
- .btn {
327
- padding: 0.8rem 1.5rem;
328
- border: none;
329
- border-radius: 6px;
330
- font-weight: 600;
331
- cursor: pointer;
332
- transition: all 0.2s;
333
- font-size: 0.9rem;
334
- }
335
-
336
- .btn-primary {
337
- background: var(--primary);
338
- color: white;
339
- box-shadow: 0 4px 14px 0 rgba(59, 130, 246, 0.39);
340
- }
341
-
342
- .btn-primary:hover {
343
- background: var(--primary-glow);
344
- transform: translateY(-2px);
345
- }
346
-
347
- .btn-secondary {
348
- background: transparent;
349
- border: 1px solid var(--text-muted);
350
- color: var(--text-muted);
351
- }
352
-
353
- .btn-secondary:hover {
354
- border-color: var(--text-main);
355
- color: var(--text-main);
356
- }
357
-
358
- /* Footer */
359
- footer {
360
- padding: 1rem;
361
- text-align: center;
362
- font-size: 0.8rem;
363
- color: rgba(255, 255, 255, 0.3);
364
- border-top: 1px solid rgba(255, 255, 255, 0.05);
365
- }
366
 
367
- /* Responsive */
368
- @media (max-width: 768px) {
369
- .browser-mockup {
370
- height: 80vh;
371
- width: 95%;
372
- }
373
- .glitch { font-size: 2rem; }
374
- .window-header { padding: 8px; }
375
- .url-bar { display: none; } /* Hide URL bar on mobile for space */
376
- }
377
- </style>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
378
  </head>
379
- <body>
380
 
381
- <header>
382
- <div class="brand">
383
- <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="color: var(--primary);">
384
- <polygon points="12 2 2 7 12 12 22 7 12 2"></polygon>
385
- <polyline points="2 17 12 22 22 17"></polyline>
386
- <polyline points="2 12 12 17 22 12"></polyline>
387
- </svg>
388
- BLUE<span>PROTO</span>
389
- </div>
390
- <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" class="anycoder-link">
391
- Built with anycoder
392
- </a>
393
- </header>
394
-
395
- <main>
396
- <div class="grid-bg"></div>
397
-
398
- <div class="browser-mockup">
399
- <div class="window-header">
400
- <div class="window-controls">
401
- <div class="dot red"></div>
402
- <div class="dot yellow"></div>
403
- <div class="dot green"></div>
404
- </div>
405
- <div class="url-bar">
406
- <span class="lock-icon">🔒</span>
407
- <span id="url-text">local://prototype/test_env</span>
408
- </div>
409
- <div style="width: 40px;"></div> <!-- Spacer for balance -->
410
- </div>
411
 
412
- <div class="window-content">
413
- <div class="glitch-wrapper">
414
- <h1 class="glitch" data-text="SYSTEM INIT">SYSTEM INIT</h1>
415
- </div>
416
-
417
- <p class="description">
418
- This environment is currently in <strong>alpha testing phase</strong>.
419
- We are starting small, laying the foundation for a full-scale browser engine.
420
- Watch the logs below for initialization status.
421
- </p>
422
-
423
- <div class="console-box" id="console">
424
- <!-- JS will populate this -->
425
- <div class="console-line"><span style="color: #60a5fa">></span> Initializing core modules...</div>
426
- </div>
427
-
428
- <div class="progress-container">
429
- <div class="progress-bar" id="progress-bar"></div>
430
- </div>
431
-
432
- <div class="actions">
433
- <button class="btn btn-primary" onclick="runTest()">Run Diagnostics</button>
434
- <button class="btn btn-secondary" onclick="resetSystem()">Reset</button>
435
- </div>
436
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
437
  </div>
438
- </main>
439
-
440
- <footer>
441
- &copy; 2023 BlueProto Project. All systems operational.
442
- </footer>
443
-
444
- <script>
445
- const consoleBox = document.getElementById('console');
446
- const progressBar = document.getElementById('progress-bar');
447
- const urlText = document.getElementById('url-text');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
448
 
449
- const logs = [
450
- { text: "Loading assets...", color: "#94a3b8" },
451
- { text: "Parsing CSS rules...", color: "#94a3b8" },
452
- { text: "Compiling JS modules...", color: "#94a3b8" },
453
- { text: "Connecting to neural network...", color: "#f59e0b" },
454
- { text: "Optimizing render pipeline...", color: "#10b981" },
455
- { text: "Rendering UI components...", color: "#94a3b8" },
456
- { text: "System Ready. Waiting for input.", color: "#3b82f6" }
457
- ];
458
-
459
- let progress = 0;
460
- let isRunning = false;
461
-
462
- function addLog(text, color) {
463
- const line = document.createElement('div');
464
- line.className = 'console-line';
465
- line.innerHTML = `<span style="color: ${color || '#60a5fa'}">></span> ${text}`;
466
- consoleBox.appendChild(line);
467
- consoleBox.scrollTop = consoleBox.scrollHeight;
468
- }
469
-
470
- function runTest() {
471
- if (isRunning) return;
472
- isRunning = true;
473
- progress = 0;
474
- progressBar.style.width = '0%';
475
- consoleBox.innerHTML = ''; // Clear console
476
- urlText.innerText = "local://diagnostics/running";
477
-
478
- let logIndex = 0;
479
-
480
- const interval = setInterval(() => {
481
- progress += Math.random() * 5;
482
- if (progress > 100) progress = 100;
483
-
484
- progressBar.style.width = `${progress}%`;
485
-
486
- // Add logs based on progress
487
- if (progress > (logIndex + 1) * (100 / logs.length) && logIndex < logs.length) {
488
- addLog(logs[logIndex].text, logs[logIndex].color);
489
- logIndex++;
490
- }
491
-
492
- if (progress >= 100) {
493
- clearInterval(interval);
494
- isRunning = false;
495
- urlText.innerText = "local://prototype/test_env";
496
- addLog("Diagnostics Complete.", "#10b981");
497
- }
498
- }, 200);
499
- }
500
-
501
- function resetSystem() {
502
- consoleBox.innerHTML = '<div class="console-line"><span style="color: #ef4444">></span> System reset initiated...</div>';
503
- progressBar.style.width = '0%';
504
- urlText.innerText = "local://system/reset";
505
- setTimeout(() => {
506
- consoleBox.innerHTML = '<div class="console-line"><span style="color: #60a5fa">></span> System Ready. Waiting for input.</div>';
507
- urlText.innerText = "local://prototype/test_env";
508
- }, 1000);
509
- }
510
-
511
- // Initial startup sequence
512
- window.onload = () => {
513
- setTimeout(() => {
514
- addLog("DOM Content Loaded", "#94a3b8");
515
- setTimeout(() => {
516
- addLog("Styles applied", "#94a3b8");
517
- }, 500);
518
- }, 800);
519
- };
520
-
521
- // Dynamic URL bar effect
522
- setInterval(() => {
523
- if(!isRunning) {
524
- const states = ["idle", "listening", "monitoring", "standby"];
525
- const randomState = states[Math.floor(Math.random() * states.length)];
526
- // Only update occasionally to avoid flashing
527
- if(Math.random() > 0.8) {
528
- // urlText.innerText = `local://prototype/${randomState}`;
529
- }
530
- }
531
- }, 2000);
532
-
533
- </script>
534
  </body>
 
535
  </html>
 
1
  <!DOCTYPE html>
2
  <html lang="en">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>BlueSearch | Explore the Void</title>
8
+ <style>
9
+ /* --- RESET & VARIABLES --- */
10
+ :root {
11
+ --bg-deep: #0f172a;
12
+ --bg-gradient: radial-gradient(circle at top, #1e293b, #020617);
13
+ --primary: #3b82f6;
14
+ --primary-hover: #60a5fa;
15
+ --accent: #0ea5e9;
16
+ --glass: rgba(255, 255, 255, 0.05);
17
+ --glass-border: rgba(255, 255, 255, 0.1);
18
+ --text-main: #f8fafc;
19
+ --text-muted: #94a3b8;
20
+ --font-sans: system-ui, -apple-system, sans-serif;
21
+ --font-mono: 'Courier New', Courier, monospace;
22
+ }
23
+
24
+ * {
25
+ box-sizing: border-box;
26
+ margin: 0;
27
+ padding: 0;
28
+ }
29
+
30
+ body {
31
+ background: var(--bg-deep);
32
+ background-image: var(--bg-gradient);
33
+ color: var(--text-main);
34
+ font-family: var(--font-sans);
35
+ min-height: 100vh;
36
+ display: flex;
37
+ flex-direction: column;
38
+ overflow-x: hidden;
39
+ }
40
+
41
+ /* --- BACKGROUND ANIMATION --- */
42
+ .bg-orb {
43
+ position: absolute;
44
+ border-radius: 50%;
45
+ filter: blur(80px);
46
+ z-index: -1;
47
+ opacity: 0.4;
48
+ animation: floatOrb 10s infinite ease-in-out;
49
+ }
50
+
51
+ .orb-1 {
52
+ width: 300px;
53
+ height: 300px;
54
+ background: var(--primary);
55
+ top: -50px;
56
+ left: -50px;
57
+ }
58
+
59
+ .orb-2 {
60
+ width: 400px;
61
+ height: 400px;
62
+ background: #4f46e5;
63
+ bottom: -100px;
64
+ right: -100px;
65
+ animation-delay: -5s;
66
+ }
67
+
68
+ @keyframes floatOrb {
69
+ 0%, 100% { transform: translate(0, 0); }
70
+ 50% { transform: translate(30px, 50px); }
71
+ }
72
+
73
+ /* --- HEADER --- */
74
+ header {
75
+ padding: 1.5rem 2rem;
76
+ display: flex;
77
+ justify-content: space-between;
78
+ align-items: center;
79
+ position: relative;
80
+ z-index: 10;
81
+ }
82
+
83
+ .brand {
84
+ font-weight: 800;
85
+ font-size: 1.5rem;
86
+ letter-spacing: -0.05em;
87
+ display: flex;
88
+ align-items: center;
89
+ gap: 12px;
90
+ color: white;
91
+ }
92
+
93
+ .brand span {
94
+ color: var(--primary);
95
+ }
96
+
97
+ .anycoder-link {
98
+ font-size: 0.85rem;
99
+ color: var(--text-muted);
100
+ text-decoration: none;
101
+ padding: 0.5rem 1rem;
102
+ border: 1px solid var(--glass-border);
103
+ border-radius: 20px;
104
+ transition: all 0.3s ease;
105
+ background: var(--glass);
106
+ backdrop-filter: blur(5px);
107
+ }
108
+
109
+ .anycoder-link:hover {
110
+ background: var(--primary);
111
+ color: white;
112
+ border-color: var(--primary);
113
+ box-shadow: 0 0 20px rgba(59, 130, 246, 0.4);
114
+ }
115
+
116
+ /* --- MAIN CONTENT --- */
117
+ main {
118
+ flex: 1;
119
+ display: flex;
120
+ flex-direction: column;
121
+ align-items: center;
122
+ justify-content: center;
123
+ padding: 2rem;
124
+ position: relative;
125
+ z-index: 1;
126
+ }
127
+
128
+ /* Search Container */
129
+ .search-container {
130
+ width: 100%;
131
+ max-width: 700px;
132
+ display: flex;
133
+ flex-direction: column;
134
+ align-items: center;
135
+ gap: 2rem;
136
+ }
137
+
138
+ .logo-area {
139
+ text-align: center;
140
+ margin-bottom: 1rem;
141
+ }
142
+
143
+ .logo-area h1 {
144
+ font-size: 4rem;
145
+ font-weight: 900;
146
+ background: linear-gradient(135deg, #fff 0%, var(--primary) 100%);
147
+ -webkit-background-clip: text;
148
+ -webkit-text-fill-color: transparent;
149
+ margin-bottom: 0.5rem;
150
+ letter-spacing: -2px;
151
+ }
152
+
153
+ .logo-area p {
154
+ color: var(--text-muted);
155
+ font-size: 1.1rem;
156
+ }
157
+
158
+ /* Search Bar Styling */
159
+ .search-wrapper {
160
+ width: 100%;
161
+ position: relative;
162
+ group: 'search';
163
+ }
164
+
165
+ .search-bar {
166
+ width: 100%;
167
+ padding: 1.2rem 1.5rem;
168
+ padding-right: 4rem; /* Space for button */
169
+ font-size: 1.1rem;
170
+ background: rgba(15, 23, 42, 0.6);
171
+ border: 1px solid var(--glass-border);
172
+ border-radius: 50px;
173
+ color: white;
174
+ outline: none;
175
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
176
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
177
+ backdrop-filter: blur(10px);
178
+ }
179
+
180
+ .search-bar:focus {
181
+ background: rgba(15, 23, 42, 0.9);
182
+ border-color: var(--primary);
183
+ box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.15), 0 10px 15px -3px rgba(0, 0, 0, 0.3);
184
+ transform: translateY(-2px);
185
+ }
186
+
187
+ .search-btn {
188
+ position: absolute;
189
+ right: 10px;
190
+ top: 50%;
191
+ transform: translateY(-50%);
192
+ width: 44px;
193
+ height: 44px;
194
+ border-radius: 50%;
195
+ border: none;
196
+ background: var(--primary);
197
+ color: white;
198
+ cursor: pointer;
199
+ display: flex;
200
+ align-items: center;
201
+ justify-content: center;
202
+ transition: all 0.2s ease;
203
+ }
204
+
205
+ .search-btn:hover {
206
+ background: var(--primary-hover);
207
+ transform: translateY(-50%) scale(1.1);
208
+ }
209
+
210
+ .search-btn:active {
211
+ transform: translateY(-50%) scale(0.95);
212
+ }
213
+
214
+ /* Results Area */
215
+ .results-container {
216
+ width: 100%;
217
+ margin-top: 2rem;
218
+ opacity: 0;
219
+ transform: translateY(20px);
220
+ transition: all 0.5s ease;
221
+ pointer-events: none; /* Hidden initially */
222
+ }
223
+
224
+ .results-container.active {
225
+ opacity: 1;
226
+ transform: translateY(0);
227
+ pointer-events: all;
228
+ }
229
+
230
+ .result-stats {
231
+ font-size: 0.85rem;
232
+ color: var(--text-muted);
233
+ margin-bottom: 1rem;
234
+ padding-left: 1rem;
235
+ }
236
+
237
+ .result-item {
238
+ background: var(--glass);
239
+ border: 1px solid var(--glass-border);
240
+ padding: 1.5rem;
241
+ border-radius: 12px;
242
+ margin-bottom: 1rem;
243
+ transition: transform 0.2s ease, background 0.2s ease;
244
+ cursor: pointer;
245
+ animation: slideIn 0.4s ease forwards;
246
+ opacity: 0;
247
+ }
248
+
249
+ .result-item:hover {
250
+ background: rgba(255, 255, 255, 0.08);
251
+ transform: translateX(5px);
252
+ border-color: rgba(59, 130, 246, 0.3);
253
+ }
254
+
255
+ .result-link {
256
+ color: var(--primary);
257
+ font-size: 0.9rem;
258
+ margin-bottom: 0.25rem;
259
+ display: block;
260
+ text-decoration: none;
261
+ }
262
+
263
+ .result-title {
264
+ color: var(--text-main);
265
+ font-size: 1.25rem;
266
+ font-weight: 600;
267
+ margin-bottom: 0.5rem;
268
+ display: block;
269
+ }
270
+
271
+ .result-snippet {
272
+ color: var(--text-muted);
273
+ font-size: 0.95rem;
274
+ line-height: 1.5;
275
+ }
276
+
277
+ /* Loading Spinner */
278
+ .loader {
279
+ display: none;
280
+ width: 24px;
281
+ height: 24px;
282
+ border: 3px solid rgba(255,255,255,0.3);
283
+ border-radius: 50%;
284
+ border-top-color: #fff;
285
+ animation: spin 1s ease-in-out infinite;
286
+ }
287
+
288
+ @keyframes spin {
289
+ to { transform: rotate(360deg); }
290
+ }
291
+
292
+ @keyframes slideIn {
293
+ to { opacity: 1; transform: translateY(0); }
294
+ }
295
+
296
+ /* Footer */
297
+ footer {
298
+ padding: 1.5rem;
299
+ text-align: center;
300
+ color: var(--text-muted);
301
+ font-size: 0.85rem;
302
+ border-top: 1px solid var(--glass-border);
303
+ background: rgba(2, 6, 23, 0.5);
304
+ }
305
+
306
+ /* Responsive */
307
+ @media (max-width: 600px) {
308
+ .logo-area h1 { font-size: 3rem; }
309
+ .search-bar { padding: 1rem; font-size: 1rem; }
310
+ header { padding: 1rem; }
311
+ }
312
+ </style>
313
  </head>
 
314
 
315
+ <body>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
316
 
317
+ <!-- Background Elements -->
318
+ <div class="bg-orb orb-1"></div>
319
+ <div class="bg-orb orb-2"></div>
320
+
321
+ <header>
322
+ <div class="brand">
323
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
324
+ <circle cx="11" cy="11" r="8"></circle>
325
+ <line x1="21" y1="21" x2="16.65" y2="16.65"></line>
326
+ </svg>
327
+ BLUE<span>SEARCH</span>
328
+ </div>
329
+ <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" class="anycoder-link">
330
+ Built with anycoder
331
+ </a>
332
+ </header>
333
+
334
+ <main>
335
+ <div class="search-container">
336
+
337
+ <div class="logo-area">
338
+ <h1>BlueSearch</h1>
339
+ <p>Explore the digital void</p>
340
+ </div>
341
+
342
+ <div class="search-wrapper">
343
+ <input type="text" class="search-bar" id="searchInput" placeholder="Search for projects, ideas, or data..." autocomplete="off">
344
+ <button class="search-btn" id="searchBtn">
345
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
346
+ <circle cx="11" cy="11" r="8"></circle>
347
+ <line x1="21" y1="21" x2="16.65" y2="16.65"></line>
348
+ </svg>
349
+ <div class="loader" id="loader"></div>
350
+ </button>
351
+ </div>
352
+
353
+ <div class="results-container" id="resultsContainer">
354
+ <div class="result-stats" id="resultStats"></div>
355
+ <div id="resultsList">
356
+ <!-- Results injected here -->
357
  </div>
358
+ </div>
359
+
360
+ </div>
361
+ </main>
362
+
363
+ <footer>
364
+ &copy; 2023 BlueSearch Engine. Privacy focused. Secure.
365
+ </footer>
366
+
367
+ <script>
368
+ // Mock Database for the Search Engine
369
+ const database = [
370
+ {
371
+ title: "Project Alpha: Neural Networks",
372
+ url: "https://example.com/alpha",
373
+ snippet: "Advanced neural network architecture designed for real-time data processing and pattern recognition in blue-themed environments."
374
+ },
375
+ {
376
+ title: "Blue Ocean Strategy",
377
+ url: "https://example.com/strategy",
378
+ snippet: "A marketing metaphor that refers to the creation of a new market space, or 'Blue Ocean', rather than competing in an existing industry."
379
+ },
380
+ {
381
+ title: "CSS Grid & Flexbox Mastery",
382
+ url: "https://example.com/css-guide",
383
+ snippet: "The ultimate guide to modern CSS layout techniques. Learn how to build responsive grids without frameworks."
384
+ },
385
+ {
386
+ title: "JavaScript ES6+ Features",
387
+ url: "https://example.com/js-es6",
388
+ snippet: "Explore arrow functions, destructuring, template literals, and promises. Modernize your codebase today."
389
+ },
390
+ {
391
+ title: "Cybersecurity Protocols 2024",
392
+ url: "https://example.com/security",
393
+ snippet: "New standards for encryption and data protection. Essential reading for system administrators."
394
+ },
395
+ {
396
+ title: "The History of the Internet",
397
+ url: "https://example.com/history",
398
+ snippet: "From ARPANET to the World Wide Web. A comprehensive timeline of the digital revolution."
399
+ },
400
+ {
401
+ title: "Minimalist UI Design Principles",
402
+ url: "https://example.com/ui-design",
403
+ snippet: "Less is more. How to create stunning user interfaces using whitespace, typography, and color theory."
404
+ },
405
+ {
406
+ title: "Quantum Computing Basics",
407
+ url: "https://example.com/quantum",
408
+ snippet: "Understanding qubits, superposition, and entanglement. The future of computing is here."
409
+ }
410
+ ];
411
+
412
+ const searchInput = document.getElementById('searchInput');
413
+ const searchBtn = document.getElementById('searchBtn');
414
+ const resultsContainer = document.getElementById('resultsContainer');
415
+ const resultsList = document.getElementById('resultsList');
416
+ const resultStats = document.getElementById('resultStats');
417
+ const loader = document.getElementById('loader');
418
+ const searchIcon = searchBtn.querySelector('svg');
419
+
420
+ // Function to perform search
421
+ function performSearch() {
422
+ const query = searchInput.value.toLowerCase().trim();
423
+
424
+ if (!query) return;
425
+
426
+ // UI State: Loading
427
+ searchIcon.style.display = 'none';
428
+ loader.style.display = 'block';
429
+ resultsContainer.classList.remove('active');
430
+ resultsList.innerHTML = '';
431
+
432
+ // Simulate network delay
433
+ setTimeout(() => {
434
+ // Filter database
435
+ const results = database.filter(item =>
436
+ item.title.toLowerCase().includes(query) ||
437
+ item.snippet.toLowerCase().includes(query)
438
+ );
439
+
440
+ // UI State: Results
441
+ loader.style.display = 'none';
442
+ searchIcon.style.display = 'block';
443
 
444
+ if (results.length > 0) {
445
+ resultStats.textContent = `About ${results.length} results found (0.42 seconds)`;
446
+
447
+ results.forEach((item, index) => {
448
+ const resultHTML = `
449
+ <div class="result-item" style="animation-delay: ${index * 0.1}s">
450
+ <a href="${item.url}" class="result-link">${item.url}</a>
451
+ <a href="${item.url}" class="result-title">${highlightMatch(item.title, query)}</a>
452
+ <p class="result-snippet">${highlightMatch(item.snippet, query)}</p>
453
+ </div>
454
+ `;
455
+ resultsList.innerHTML += resultHTML;
456
+ });
457
+ } else {
458
+ resultStats.textContent = `No results found for "${query}"`;
459
+ resultsList.innerHTML = `
460
+ <div class="result-item">
461
+ <p class="result-snippet">Try searching for "CSS", "Blue", "JavaScript", or "Security".</p>
462
+ </div>
463
+ `;
464
+ }
465
+
466
+ resultsContainer.classList.add('active');
467
+ }, 600); // 600ms simulated delay
468
+ }
469
+
470
+ // Helper to highlight search terms
471
+ function highlightMatch(text, query) {
472
+ const regex = new RegExp(`(${query})`, 'gi');
473
+ return text.replace(regex, '<span style="color: var(--primary-hover); font-weight:bold;">$1</span>');
474
+ }
475
+
476
+ // Event Listeners
477
+ searchBtn.addEventListener('click', performSearch);
478
+
479
+ searchInput.addEventListener('keypress', (e) => {
480
+ if (e.key === 'Enter') {
481
+ performSearch();
482
+ }
483
+ });
484
+
485
+ // Optional: Real-time search as you type (debounced)
486
+ let timeout = null;
487
+ searchInput.addEventListener('input', () => {
488
+ clearTimeout(timeout);
489
+ if(searchInput.value.length > 0) {
490
+ timeout = setTimeout(performSearch, 800);
491
+ } else {
492
+ resultsContainer.classList.remove('active');
493
+ }
494
+ });
495
+
496
+ </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
497
  </body>
498
+
499
  </html>