AnesKAM commited on
Commit
b37fa6d
·
verified ·
1 Parent(s): 819cdc6

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +843 -1252
index.html CHANGED
@@ -1,1263 +1,854 @@
1
  <!DOCTYPE html>
2
  <html data-theme="light" dir="rtl" lang="ar">
3
  <head>
4
- <meta charset="utf-8" />
5
- <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0" name="viewport" />
6
- <title>SurfGO | نتائج البحث</title>
7
- <link href="https://fonts.googleapis.com" rel="preconnect" />
8
- <link href="https://fonts.gstatic.com" rel="preconnect" crossorigin />
9
- <link href="https://fonts.googleapis.com/css2?family=Syne:wght@400;600;700;800&family=Tajawal:wght@300;400;500;700&display=swap" rel="stylesheet" />
10
- <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" rel="stylesheet" />
11
- <style>
12
- :root {
13
- --bg-base: #f4f6fc;
14
- --bg-nav: rgba(255, 255, 255, 0.78);
15
- --bg-card: #ffffff;
16
- --bg-input: #edf0f8;
17
- --bg-input-focus: #ffffff;
18
- --border: rgba(99, 102, 241, 0.1);
19
- --border-hover: rgba(99, 102, 241, 0.35);
20
- --accent: #5b5ef4;
21
- --accent-2: #e0427a;
22
- --accent-glow: rgba(91, 94, 244, 0.22);
23
- --text-main: #12132a;
24
- --text-sub: #6b7280;
25
- --text-faint: #9ca3af;
26
- --shadow-card: 0 2px 12px rgba(91, 94, 244, 0.06), 0 1px 3px rgba(0, 0, 0, 0.03);
27
- --shadow-hover: 0 10px 32px rgba(91, 94, 244, 0.12), 0 2px 8px rgba(0, 0, 0, 0.05);
28
- --radius-nav: 24px;
29
- --radius-card: 20px;
30
- --radius-pill: 100px;
31
- --transition: 0.28s cubic-bezier(0.4, 0, 0.2, 1);
32
- --glass-blur: blur(24px) saturate(1.8);
33
- }
34
-
35
- [data-theme="dark"] {
36
- --bg-base: #0a0b1a;
37
- --bg-nav: rgba(16, 18, 38, 0.88);
38
- --bg-card: #12142e;
39
- --bg-input: #1c1f44;
40
- --bg-input-focus: #12142e;
41
- --border: rgba(130, 133, 255, 0.15);
42
- --border-hover: rgba(130, 133, 255, 0.45);
43
- --accent: #888afc;
44
- --accent-2: #f472b6;
45
- --accent-glow: rgba(130, 133, 255, 0.22);
46
- --text-main: #eef0ff;
47
- --text-sub: #9099c0;
48
- --text-faint: #5a6080;
49
- --shadow-card: 0 2px 18px rgba(0, 0, 0, 0.4);
50
- --shadow-hover: 0 12px 40px rgba(130, 133, 255, 0.18);
51
- }
52
-
53
- * {
54
- margin: 0;
55
- padding: 0;
56
- box-sizing: border-box;
57
- }
58
-
59
- body {
60
- font-family: 'Tajawal', sans-serif;
61
- background: var(--bg-base);
62
- color: var(--text-main);
63
- min-height: 100vh;
64
- overflow-x: hidden;
65
- transition: background 0.4s, color 0.4s;
66
- position: relative;
67
- }
68
-
69
- /* خلفية متحركة */
70
- .bg-mesh {
71
- position: fixed;
72
- inset: 0;
73
- z-index: 0;
74
- pointer-events: none;
75
- overflow: hidden;
76
- }
77
- .orb {
78
- position: absolute;
79
- border-radius: 50%;
80
- filter: blur(80px);
81
- opacity: 0.4;
82
- animation: float 20s ease-in-out infinite alternate;
83
- }
84
- .orb-1 {
85
- width: 60vw;
86
- height: 60vw;
87
- background: radial-gradient(circle, rgba(91, 94, 244, 0.18) 0%, transparent 70%);
88
- top: -15%;
89
- right: -10%;
90
- }
91
- .orb-2 {
92
- width: 50vw;
93
- height: 50vw;
94
- background: radial-gradient(circle, rgba(224, 66, 122, 0.14) 0%, transparent 70%);
95
- bottom: -10%;
96
- left: -5%;
97
- }
98
- .orb-3 {
99
- width: 35vw;
100
- height: 35vw;
101
- background: radial-gradient(circle, rgba(167, 139, 250, 0.12) 0%, transparent 70%);
102
- top: 60%;
103
- left: 60%;
104
- }
105
- @keyframes float {
106
- 0% {
107
- transform: translate(0, 0) scale(1);
108
- }
109
- 100% {
110
- transform: translate(5%, 3%) scale(1.08);
111
- }
112
- }
113
-
114
- /* شريط التنقل */
115
- .navbar {
116
- position: fixed;
117
- top: 16px;
118
- left: 50%;
119
- transform: translateX(-50%);
120
- width: 95%;
121
- max-width: 1280px;
122
- min-height: 70px;
123
- background: var(--bg-nav);
124
- backdrop-filter: var(--glass-blur);
125
- -webkit-backdrop-filter: var(--glass-blur);
126
- border: 1px solid var(--border);
127
- border-radius: var(--radius-nav);
128
- display: flex;
129
- flex-wrap: wrap;
130
- align-items: center;
131
- justify-content: space-between;
132
- padding: 10px 22px;
133
- z-index: 1000;
134
- box-shadow: 0 4px 24px rgba(0, 0, 0, 0.04), 0 1px 0 rgba(255, 255, 255, 0.7) inset;
135
- gap: 14px;
136
- transition: background 0.4s, border-color 0.4s, box-shadow 0.3s;
137
- }
138
-
139
- .brand {
140
- font-family: 'Syne', sans-serif;
141
- font-weight: 800;
142
- font-size: 22px;
143
- text-decoration: none;
144
- color: var(--text-main);
145
- display: flex;
146
- align-items: center;
147
- gap: 10px;
148
- letter-spacing: -0.02em;
149
- flex-shrink: 0;
150
- transition: transform 0.2s;
151
- }
152
- .brand:hover {
153
- transform: scale(1.03);
154
- }
155
- .brand-icon {
156
- width: 40px;
157
- height: 40px;
158
- background: linear-gradient(135deg, var(--accent), var(--accent-2));
159
- border-radius: 12px;
160
- display: flex;
161
- align-items: center;
162
- justify-content: center;
163
- color: #fff;
164
- font-size: 18px;
165
- box-shadow: 0 6px 18px var(--accent-glow);
166
- }
167
-
168
- .search-container {
169
- flex: 1;
170
- max-width: 600px;
171
- width: 100%;
172
- }
173
- .search-bar {
174
- display: flex;
175
- align-items: center;
176
- background: var(--bg-input);
177
- border: 2px solid transparent;
178
- border-radius: var(--radius-pill);
179
- padding: 4px 4px 4px 20px;
180
- transition: var(--transition);
181
- width: 100%;
182
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.02);
183
- }
184
- .search-bar:focus-within {
185
- border-color: var(--accent);
186
- background: var(--bg-input-focus);
187
- box-shadow: 0 0 0 4px var(--accent-glow), 0 4px 16px rgba(0, 0, 0, 0.04);
188
- transform: translateY(-1px);
189
- }
190
- .search-bar input {
191
- flex: 1;
192
- background: transparent;
193
- border: none;
194
- padding: 10px 0;
195
- color: var(--text-main);
196
- font-family: 'Tajawal', sans-serif;
197
- font-size: 15px;
198
- min-width: 0;
199
- }
200
- .search-btn {
201
- background: linear-gradient(135deg, var(--accent), var(--accent-2));
202
- border: none;
203
- color: #fff;
204
- cursor: pointer;
205
- width: 44px;
206
- height: 40px;
207
- border-radius: var(--radius-pill);
208
- display: flex;
209
- align-items: center;
210
- justify-content: center;
211
- font-size: 15px;
212
- transition: var(--transition);
213
- box-shadow: 0 4px 14px var(--accent-glow);
214
- }
215
- .search-btn:hover {
216
- transform: scale(1.06);
217
- box-shadow: 0 6px 18px var(--accent-glow);
218
- }
219
-
220
- #theme-toggle {
221
- background: var(--bg-input);
222
- border: 2px solid var(--border);
223
- color: var(--text-sub);
224
- cursor: pointer;
225
- width: 42px;
226
- height: 42px;
227
- border-radius: 50%;
228
- display: flex;
229
- align-items: center;
230
- justify-content: center;
231
- font-size: 16px;
232
- transition: var(--transition);
233
- }
234
- #theme-toggle:hover {
235
- border-color: var(--accent);
236
- color: var(--accent);
237
- transform: rotate(180deg);
238
- }
239
-
240
- /* علامات التبويب */
241
- .tabs-bar {
242
- position: fixed;
243
- top: 110px;
244
- left: 50%;
245
- transform: translateX(-50%);
246
- width: 95%;
247
- max-width: 1280px;
248
- display: flex;
249
- gap: 8px;
250
- z-index: 999;
251
- overflow-x: auto;
252
- padding: 6px 10px;
253
- scrollbar-width: none;
254
- backdrop-filter: blur(10px);
255
- background: rgba(255, 255, 255, 0.25);
256
- border: 1px solid var(--border);
257
- border-radius: 40px;
258
- }
259
- [data-theme="dark"] .tabs-bar {
260
- background: rgba(18, 20, 46, 0.35);
261
- }
262
- .tab-pill {
263
- padding: 8px 18px;
264
- border-radius: var(--radius-pill);
265
- background: var(--bg-card);
266
- border: 1.5px solid var(--border);
267
- color: var(--text-sub);
268
- font-family: 'Tajawal', sans-serif;
269
- font-size: 13.5px;
270
- font-weight: 500;
271
- cursor: pointer;
272
- transition: var(--transition);
273
- display: flex;
274
- align-items: center;
275
- gap: 7px;
276
- white-space: nowrap;
277
- box-shadow: var(--shadow-card);
278
- }
279
- .tab-pill:hover {
280
- border-color: var(--border-hover);
281
- color: var(--accent);
282
- transform: translateY(-1px);
283
- }
284
- .tab-pill.active {
285
- background: var(--accent);
286
- color: #fff;
287
- border-color: var(--accent);
288
- box-shadow: 0 6px 20px var(--accent-glow);
289
- font-weight: 600;
290
- }
291
-
292
- .page-wrapper {
293
- position: relative;
294
- z-index: 1;
295
- max-width: 1280px;
296
- margin: 190px auto 60px;
297
- padding: 0 20px;
298
- display: flex;
299
- flex-direction: column;
300
- gap: 28px;
301
- }
302
- .results-area {
303
- min-width: 0;
304
- width: 100%;
305
- }
306
-
307
- .loading-spinner {
308
- display: flex;
309
- align-items: center;
310
- gap: 10px;
311
- color: var(--text-sub);
312
- font-size: 14px;
313
- padding: 24px;
314
- justify-content: center;
315
- }
316
- .spinner {
317
- width: 20px;
318
- height: 20px;
319
- border: 3px solid var(--border);
320
- border-top-color: var(--accent);
321
- border-radius: 50%;
322
- animation: spin 0.7s linear infinite;
323
- }
324
- @keyframes spin {
325
- to {
326
- transform: rotate(360deg);
327
- }
328
- }
329
-
330
- /* تأثيرات الظهور */
331
- .search-result,
332
- .image-card,
333
- .video-card,
334
- .rich-graph-container {
335
- opacity: 0;
336
- transform: translateY(20px);
337
- transition: opacity 0.5s ease, transform 0.5s ease;
338
- }
339
- .search-result.visible,
340
- .image-card.visible,
341
- .video-card.visible,
342
- .rich-graph-container.visible {
343
- opacity: 1;
344
- transform: translateY(0);
345
- }
346
-
347
- .search-result {
348
- background: var(--bg-card);
349
- border: 1.5px solid var(--border);
350
- border-radius: var(--radius-card);
351
- padding: 20px 22px;
352
- margin-bottom: 14px;
353
- transition: var(--transition);
354
- box-shadow: var(--shadow-card);
355
- display: flex;
356
- gap: 16px;
357
- align-items: flex-start;
358
- backdrop-filter: blur(5px);
359
- }
360
- .search-result:hover {
361
- border-color: var(--border-hover);
362
- box-shadow: var(--shadow-hover);
363
- transform: translateY(-3px);
364
- }
365
- .favicon-wrap {
366
- width: 28px;
367
- height: 28px;
368
- border-radius: 8px;
369
- overflow: hidden;
370
- flex-shrink: 0;
371
- margin-top: 2px;
372
- background: var(--bg-input);
373
- display: flex;
374
- align-items: center;
375
- justify-content: center;
376
- box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
377
- }
378
- .favicon-wrap img {
379
- width: 18px;
380
- height: 18px;
381
- object-fit: contain;
382
- }
383
- .fallback-icon {
384
- color: var(--text-faint);
385
- font-size: 13px;
386
- }
387
- .result-content {
388
- flex: 1;
389
- min-width: 0;
390
- }
391
- .result-domain {
392
- font-size: 12px;
393
- color: var(--text-faint);
394
- margin-bottom: 5px;
395
- display: flex;
396
- align-items: center;
397
- gap: 5px;
398
- }
399
- .result-title {
400
- font-size: 17px;
401
- font-weight: 700;
402
- color: var(--accent);
403
- text-decoration: none;
404
- display: inline-block;
405
- margin-bottom: 8px;
406
- line-height: 1.4;
407
- transition: color 0.2s;
408
- }
409
- .result-title:hover {
410
- color: var(--accent-2);
411
- text-decoration: underline;
412
- }
413
- .result-snippet {
414
- font-size: 14px;
415
- color: var(--text-sub);
416
- line-height: 1.7;
417
- }
418
-
419
- /* ===== الرسم البياني الغني ===== */
420
- .rich-graph-container {
421
- display: flex;
422
- flex-direction: column;
423
- gap: 22px;
424
- margin-bottom: 28px;
425
- }
426
- .rich-images-row {
427
- display: flex;
428
- gap: 10px;
429
- overflow-x: auto;
430
- scrollbar-width: none;
431
- padding-bottom: 8px;
432
- min-height: 170px;
433
- align-items: center;
434
- }
435
- .rich-img-card {
436
- flex-shrink: 0;
437
- height: 170px;
438
- border-radius: 16px;
439
- overflow: hidden;
440
- background: var(--bg-input);
441
- border: 1px solid var(--border);
442
- box-shadow: var(--shadow-card);
443
- transition: var(--transition);
444
- position: relative;
445
- }
446
- .rich-img-card:hover {
447
- transform: translateY(-5px) scale(1.02);
448
- box-shadow: var(--shadow-hover);
449
- }
450
- .rich-img-card img {
451
- height: 100%;
452
- width: auto;
453
- object-fit: cover;
454
- display: block;
455
- }
456
- .img-error-overlay {
457
- position: absolute;
458
- inset: 0;
459
- display: none;
460
- align-items: center;
461
- justify-content: center;
462
- background: var(--bg-input);
463
- color: var(--text-faint);
464
- flex-direction: column;
465
- gap: 6px;
466
- font-size: 13px;
467
- }
468
- .img-error-overlay i {
469
- font-size: 24px;
470
- }
471
- .wiki-card {
472
- margin-bottom: 0 !important;
473
- }
474
- .wiki-header {
475
- display: flex;
476
- align-items: center;
477
- gap: 12px;
478
- margin-bottom: 10px;
479
- }
480
- .wiki-domain {
481
- font-size: 14px;
482
- font-weight: 700;
483
- color: var(--text-main);
484
- }
485
- .wiki-url {
486
- font-size: 12px;
487
- color: var(--text-faint);
488
- text-decoration: none;
489
- }
490
- .rich-section-title {
491
- font-size: 20px;
492
- font-weight: 700;
493
- margin: 12px 0 8px;
494
- color: var(--text-main);
495
- display: flex;
496
- align-items: center;
497
- gap: 10px;
498
- }
499
- .rich-section-title i {
500
- font-size: 15px;
501
- color: var(--text-faint);
502
- margin-right: auto;
503
- }
504
- .rich-videos-row {
505
- display: flex;
506
- gap: 14px;
507
- overflow-x: auto;
508
- padding-bottom: 12px;
509
- scrollbar-width: none;
510
- }
511
- .rich-vid-card {
512
- flex: 0 0 250px;
513
- text-decoration: none;
514
- background: var(--bg-card);
515
- border-radius: 16px;
516
- overflow: hidden;
517
- border: 1px solid var(--border);
518
- box-shadow: var(--shadow-card);
519
- transition: var(--transition);
520
- }
521
- .rich-vid-card:hover {
522
- transform: translateY(-5px);
523
- box-shadow: var(--shadow-hover);
524
- border-color: var(--accent);
525
- }
526
- .rich-vid-thumb {
527
- height: 140px;
528
- position: relative;
529
- background: var(--bg-input);
530
- }
531
- .rich-vid-thumb img {
532
- width: 100%;
533
- height: 100%;
534
- object-fit: cover;
535
- }
536
- .rich-vid-play {
537
- position: absolute;
538
- bottom: 12px;
539
- left: 12px;
540
- background: rgba(0, 0, 0, 0.75);
541
- backdrop-filter: blur(6px);
542
- color: #fff;
543
- width: 36px;
544
- height: 36px;
545
- border-radius: 50%;
546
- display: flex;
547
- align-items: center;
548
- justify-content: center;
549
- font-size: 13px;
550
- transition: 0.2s;
551
- }
552
- .rich-vid-card:hover .rich-vid-play {
553
- background: var(--accent);
554
- }
555
- .rich-vid-info {
556
- padding: 14px;
557
- }
558
- .rich-vid-title {
559
- font-size: 14px;
560
- font-weight: 600;
561
- color: var(--text-main);
562
- display: -webkit-box;
563
- -webkit-line-clamp: 2;
564
- -webkit-box-orient: vertical;
565
- overflow: hidden;
566
- line-height: 1.5;
567
- }
568
- .rich-vid-meta {
569
- font-size: 12px;
570
- color: var(--text-faint);
571
- margin-top: 8px;
572
- display: flex;
573
- align-items: center;
574
- gap: 6px;
575
- }
576
- .discover-bubbles {
577
- display: flex;
578
- flex-direction: column;
579
- gap: 10px;
580
- }
581
- .discover-bubble {
582
- background: var(--bg-card);
583
- border: 1.5px solid var(--border);
584
- border-radius: 60px;
585
- padding: 15px 24px;
586
- display: flex;
587
- align-items: center;
588
- gap: 14px;
589
- cursor: pointer;
590
- transition: var(--transition);
591
- font-family: 'Tajawal', sans-serif;
592
- font-size: 16px;
593
- font-weight: 500;
594
- color: var(--text-main);
595
- text-align: right;
596
- box-shadow: var(--shadow-card);
597
- backdrop-filter: blur(5px);
598
- width: 100%;
599
- }
600
- .discover-bubble i {
601
- color: var(--text-faint);
602
- font-size: 16px;
603
- transition: 0.2s;
604
- }
605
- .discover-bubble:hover {
606
- background: var(--bg-input-focus);
607
- border-color: var(--accent);
608
- color: var(--accent);
609
- transform: translateX(-6px);
610
- box-shadow: var(--shadow-hover);
611
- }
612
- .discover-bubble:hover i {
613
- color: var(--accent);
614
- }
615
-
616
- /* شبكات الصور والفيديو */
617
- .images-grid {
618
- display: grid;
619
- grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
620
- gap: 16px;
621
- width: 100%;
622
- }
623
- .image-card {
624
- background: var(--bg-card);
625
- border: 1.5px solid var(--border);
626
- border-radius: var(--radius-card);
627
- overflow: hidden;
628
- transition: var(--transition);
629
- box-shadow: var(--shadow-card);
630
- display: flex;
631
- flex-direction: column;
632
- }
633
- .image-card:hover {
634
- border-color: var(--border-hover);
635
- box-shadow: var(--shadow-hover);
636
- transform: translateY(-5px);
637
- }
638
- .image-card-link {
639
- display: block;
640
- width: 100%;
641
- height: 190px;
642
- overflow: hidden;
643
- background: var(--bg-input);
644
- position: relative;
645
- }
646
- .image-card-link img {
647
- width: 100%;
648
- height: 100%;
649
- object-fit: cover;
650
- transition: transform 0.4s ease;
651
- }
652
- .image-card:hover .image-card-link img {
653
- transform: scale(1.08);
654
- }
655
- .image-info {
656
- padding: 10px 14px;
657
- font-size: 13px;
658
- color: var(--text-sub);
659
- white-space: nowrap;
660
- overflow: hidden;
661
- text-overflow: ellipsis;
662
- }
663
- .videos-grid {
664
- display: grid;
665
- grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
666
- gap: 22px;
667
- width: 100%;
668
- }
669
- .video-card {
670
- background: var(--bg-card);
671
- border: 1.5px solid var(--border);
672
- border-radius: var(--radius-card);
673
- overflow: hidden;
674
- transition: var(--transition);
675
- box-shadow: var(--shadow-card);
676
- }
677
- .video-card:hover {
678
- transform: translateY(-4px);
679
- box-shadow: var(--shadow-hover);
680
- }
681
- .video-thumb-wrap {
682
- position: relative;
683
- width: 100%;
684
- height: 190px;
685
- background: var(--bg-input);
686
- display: block;
687
- overflow: hidden;
688
- }
689
- .video-thumb-wrap img {
690
- width: 100%;
691
- height: 100%;
692
- object-fit: cover;
693
- transition: 0.3s;
694
- }
695
- .play-overlay {
696
- position: absolute;
697
- top: 50%;
698
- left: 50%;
699
- transform: translate(-50%, -50%);
700
- width: 50px;
701
- height: 50px;
702
- background: rgba(91, 94, 244, 0.9);
703
- color: white;
704
- border-radius: 50%;
705
- display: flex;
706
- align-items: center;
707
- justify-content: center;
708
- font-size: 18px;
709
- box-shadow: 0 0 20px rgba(0, 0, 0, 0.3);
710
- transition: var(--transition);
711
- z-index: 2;
712
- }
713
- .video-details {
714
- padding: 16px;
715
- }
716
- .video-title {
717
- font-size: 15px;
718
- font-weight: 700;
719
- color: var(--text-main);
720
- text-decoration: none;
721
- display: block;
722
- line-height: 1.5;
723
- }
724
-
725
- /* مساعد AI */
726
- .sidebar {
727
- width: 100%;
728
- order: 2;
729
- margin-top: 12px;
730
- }
731
- .ai-widget-wrap {
732
- position: relative;
733
- border-radius: var(--radius-card);
734
- }
735
- .ai-glow-ring {
736
- position: absolute;
737
- inset: -3px;
738
- border-radius: calc(var(--radius-card) + 3px);
739
- background: conic-gradient(from var(--angle, 0deg), var(--accent), var(--accent-2), #a78bfa, var(--accent), var(--accent-2), var(--accent));
740
- z-index: 0;
741
- animation: spin-glow 5s linear infinite;
742
- filter: blur(1.5px);
743
- }
744
- @property --angle {
745
- syntax: '<angle>';
746
- initial-value: 0deg;
747
- inherits: false;
748
- }
749
- @keyframes spin-glow {
750
- to {
751
- --angle: 360deg;
752
- }
753
- }
754
- .ai-widget {
755
- position: relative;
756
- z-index: 1;
757
- background: var(--bg-card);
758
- border-radius: var(--radius-card);
759
- padding: 20px 20px 18px;
760
- box-shadow: var(--shadow-card);
761
- backdrop-filter: blur(5px);
762
- }
763
- .ai-widget-header {
764
- display: flex;
765
- align-items: center;
766
- gap: 10px;
767
- margin-bottom: 16px;
768
- }
769
- .ai-widget-icon {
770
- width: 34px;
771
- height: 34px;
772
- border-radius: 10px;
773
- background: linear-gradient(135deg, var(--accent), var(--accent-2));
774
- display: flex;
775
- align-items: center;
776
- justify-content: center;
777
- color: #fff;
778
- font-size: 14px;
779
- }
780
- .ai-widget-badge {
781
- margin-right: auto;
782
- font-size: 11px;
783
- padding: 3px 10px;
784
- border-radius: 20px;
785
- background: var(--accent-glow);
786
- color: var(--accent);
787
- }
788
- .ai-answer-body {
789
- font-size: 14px;
790
- color: var(--text-sub);
791
- line-height: 1.8;
792
- min-height: 60px;
793
- }
794
- .ai-skeleton {
795
- height: 12px;
796
- border-radius: 6px;
797
- background: linear-gradient(90deg, var(--bg-input) 25%, var(--border) 50%, var(--bg-input) 75%);
798
- background-size: 200% 100%;
799
- animation: shimmer 1.4s ease-in-out infinite;
800
- margin-bottom: 10px;
801
- }
802
- @keyframes shimmer {
803
- 0% {
804
- background-position: 200% 0;
805
- }
806
- 100% {
807
- background-position: -200% 0;
808
- }
809
- }
810
- .ai-sources {
811
- margin-top: 12px;
812
- display: flex;
813
- flex-wrap: wrap;
814
- gap: 6px;
815
- }
816
- .ai-source-chip {
817
- font-size: 11px;
818
- padding: 3px 10px;
819
- border-radius: 20px;
820
- background: var(--bg-input);
821
- border: 1px solid var(--border);
822
- color: var(--text-faint);
823
- text-decoration: none;
824
- display: flex;
825
- align-items: center;
826
- gap: 5px;
827
- transition: var(--transition);
828
- }
829
- .ai-source-chip:hover {
830
- border-color: var(--accent);
831
- color: var(--accent);
832
- }
833
- .ai-copy-btn {
834
- margin-top: 14px;
835
- padding: 8px 16px;
836
- background: var(--bg-input);
837
- border: 1px solid var(--border);
838
- border-radius: 30px;
839
- cursor: pointer;
840
- font-size: 12px;
841
- color: var(--text-sub);
842
- display: inline-flex;
843
- align-items: center;
844
- gap: 6px;
845
- transition: var(--transition);
846
- }
847
- .ai-copy-btn:hover {
848
- background: var(--accent);
849
- color: #fff;
850
- border-color: var(--accent);
851
- }
852
- .ai-widget-footer {
853
- font-size: 10.5px;
854
- color: var(--text-faint);
855
- margin-top: 12px;
856
- padding-top: 10px;
857
- border-top: 1px solid var(--border);
858
- display: flex;
859
- align-items: center;
860
- gap: 5px;
861
- }
862
-
863
- .back-to-top {
864
- position: fixed;
865
- bottom: 30px;
866
- right: 30px;
867
- z-index: 999;
868
- width: 46px;
869
- height: 46px;
870
- border-radius: 50%;
871
- background: var(--accent);
872
- color: #fff;
873
- display: flex;
874
- align-items: center;
875
- justify-content: center;
876
- font-size: 18px;
877
- cursor: pointer;
878
- opacity: 0;
879
- visibility: hidden;
880
- transition: 0.3s;
881
- box-shadow: 0 6px 20px var(--accent-glow);
882
- border: none;
883
- }
884
- .back-to-top.show {
885
- opacity: 1;
886
- visibility: visible;
887
- }
888
-
889
- .ai-mobile-wrap {
890
- display: none;
891
- border-radius: var(--radius-card);
892
- margin-bottom: 20px;
893
- position: relative;
894
- }
895
-
896
- @media (max-width: 767px) {
897
- .navbar {
898
- top: 10px;
899
- border-radius: 18px;
900
- padding: 10px 16px;
901
- }
902
- .tabs-bar {
903
- top: 140px;
904
- gap: 4px;
905
- }
906
- .page-wrapper {
907
- margin-top: 210px;
908
- }
909
- .sidebar {
910
- display: none !important;
911
- }
912
- .ai-mobile-wrap {
913
- display: block;
914
- }
915
- .rich-img-card {
916
- height: 130px;
917
- }
918
- .images-grid {
919
- grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
920
- }
921
- .videos-grid {
922
- grid-template-columns: 1fr;
923
- }
924
- }
925
- @media (min-width: 768px) {
926
- .navbar {
927
- flex-wrap: nowrap;
928
- padding: 0 24px;
929
- height: 70px;
930
- }
931
- .page-wrapper {
932
- display: grid;
933
- grid-template-columns: 1fr 320px;
934
- gap: 28px;
935
- }
936
- .sidebar {
937
- order: unset;
938
- margin-top: 0;
939
- }
940
- .ai-mobile-wrap {
941
- display: none !important;
942
- }
943
- }
944
- </style>
945
  </head>
946
  <body>
947
- <div class="bg-mesh">
948
- <div class="orb orb-1"></div>
949
- <div class="orb orb-2"></div>
950
- <div class="orb orb-3"></div>
 
 
 
 
 
 
 
 
 
 
 
 
951
  </div>
952
-
953
- <nav class="navbar" id="navbar">
954
- <a class="brand" href="index.html">
955
- <div class="brand-icon"><i class="fa-solid fa-bolt"></i></div>
956
- <span>SurfGO</span>
957
- </a>
958
- <div class="search-container">
959
- <form class="search-bar" id="search-form">
960
- <input id="main-input" placeholder="ابحث عن أي شيء..." type="text" autocomplete="off" />
961
- <button class="search-btn" type="submit" aria-label="بحث"><i class="fa-solid fa-magnifying-glass"></i></button>
962
- </form>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
963
  </div>
964
- <div class="nav-actions">
965
- <button id="theme-toggle" aria-label="تغيير السمة"></button>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
966
  </div>
967
- </nav>
968
-
969
- <div class="tabs-bar" role="tablist">
970
- <button class="tab-pill active" data-tab="all" role="tab"><i class="fa-solid fa-globe"></i> الويب</button>
971
- <button class="tab-pill" data-tab="news" role="tab"><i class="fa-solid fa-newspaper"></i> أخبار</button>
972
- <button class="tab-pill" data-tab="images" role="tab"><i class="fa-solid fa-image"></i> صور</button>
973
- <button class="tab-pill" data-tab="videos" role="tab"><i class="fa-solid fa-play"></i> فيديو</button>
974
- </div>
975
-
976
- <div class="page-wrapper">
977
- <main class="results-area" role="main">
978
- <div id="loading-text" class="loading-spinner"><div class="spinner"></div> جاري جلب النتائج…</div>
979
-
980
- <div class="ai-mobile-wrap" id="ai-mobile-wrap">
981
- <div class="ai-glow-ring"></div>
982
- <div class="ai-widget">
983
- <div class="ai-widget-header">
984
- <div class="ai-widget-icon"><i class="fa-solid fa-robot"></i></div>
985
- <span class="ai-widget-title">إجابة الذكاء الاصطناعي</span>
986
- <span class="ai-widget-badge">AI</span>
987
- </div>
988
- <div class="ai-answer-body loading" id="ai-answer-body-mobile">
989
- <div class="ai-skeleton"></div><div class="ai-skeleton"></div><div class="ai-skeleton"></div>
990
- </div>
991
- <div class="ai-sources" id="ai-sources-mobile"></div>
992
- <button class="ai-copy-btn" id="ai-copy-mobile" style="display:none"><i class="fa-regular fa-copy"></i> نسخ</button>
993
- <div class="ai-widget-footer"><i class="fa-solid fa-bolt"></i> مدعوم بواسطة AnesNT</div>
994
- </div>
995
- </div>
996
-
997
- <div id="results-meta" class="results-meta" style="display:none"></div>
998
- <div id="results-container"></div>
999
- <button id="load-more-btn" class="load-more-btn" style="display:none"><i class="fa-solid fa-chevron-down"></i> تحميل المزيد</button>
1000
- </main>
1001
-
1002
- <aside class="sidebar">
1003
- <div class="ai-widget-wrap">
1004
- <div class="ai-glow-ring"></div>
1005
- <div class="ai-widget">
1006
- <div class="ai-widget-header">
1007
- <div class="ai-widget-icon"><i class="fa-solid fa-robot"></i></div>
1008
- <span class="ai-widget-title">إجابة الذكاء الاصطناعي</span>
1009
- <span class="ai-widget-badge">AI</span>
1010
- </div>
1011
- <div class="ai-answer-body loading" id="ai-answer-body">
1012
- <div class="ai-skeleton"></div><div class="ai-skeleton"></div><div class="ai-skeleton"></div>
1013
- </div>
1014
- <div class="ai-sources" id="ai-sources-desktop"></div>
1015
- <button class="ai-copy-btn" id="ai-copy-desktop" style="display:none"><i class="fa-regular fa-copy"></i> نسخ</button>
1016
- <div class="ai-widget-footer"><i class="fa-solid fa-bolt"></i> مدعوم بواسطة AnesNT</div>
1017
- </div>
1018
- </div>
1019
- </aside>
1020
- </div>
1021
-
1022
- <button class="back-to-top" id="backToTop"><i class="fa-solid fa-arrow-up"></i></button>
1023
-
1024
- <script>
1025
- (function() {
1026
- const SEARXNG_URL = "https://cjj-on-hf-searxng.hf.space/search";
1027
- const GEMINI_API = "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent";
1028
- const GEMINI_API_KEY = ""; // ضع مفتاح API هنا إن وجد
1029
-
1030
- // السمة
1031
- const themeBtn = document.getElementById('theme-toggle');
1032
- function setTheme(t) {
1033
- document.documentElement.setAttribute('data-theme', t);
1034
- localStorage.setItem('surfgo-theme', t);
1035
- themeBtn.innerHTML = t === 'dark' ? '<i class="fa-solid fa-sun"></i>' : '<i class="fa-solid fa-moon"></i>';
1036
- }
1037
- setTheme(localStorage.getItem('surfgo-theme') || 'light');
1038
- themeBtn.addEventListener('click', () => setTheme(document.documentElement.getAttribute('data-theme') === 'dark' ? 'light' : 'dark'));
1039
-
1040
- // الحالة
1041
- const params = new URLSearchParams(window.location.search);
1042
- let query = params.get('q') || '';
1043
- let currentTab = params.get('tab') || 'all';
1044
- let allResults = [];
1045
-
1046
- const inputEl = document.getElementById('main-input');
1047
- const resultsEl = document.getElementById('results-container');
1048
- const loadingEl = document.getElementById('loading-text');
1049
- const metaEl = document.getElementById('results-meta');
1050
- const loadMoreBtn = document.getElementById('load-more-btn');
1051
-
1052
- function setActiveTab(tab) {
1053
- document.querySelectorAll('.tab-pill').forEach(btn => btn.classList.toggle('active', btn.dataset.tab === tab));
1054
- }
1055
- setActiveTab(currentTab);
1056
-
1057
- // دوال مساعدة
1058
- function escapeHTML(str) {
1059
- return str ? str.replace(/[&<>'"]/g, t => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', "'": '&#39;', '"': '&quot;' }[t] || t)) : '';
1060
- }
1061
- function getDomain(url) {
1062
- try { return new URL(url).hostname.replace('www.', ''); } catch { return url || ''; }
1063
- }
1064
- function proxyImage(url) {
1065
- return url && !url.startsWith('data:') ? `https://wsrv.nl/?url=${encodeURIComponent(url)}&output=webp&maxage=7d&default=placeholder` : url;
1066
- }
1067
- function faviconURL(domain) {
1068
- return `https://www.google.com/s2/favicons?domain=${domain}&sz=32`;
1069
- }
1070
- function getBestImageUrl(r) {
1071
- const candidates = [r.img_src, r.thumbnail_src, r.thumbnail, r.image, r.url, r.img];
1072
- for (const c of candidates) if (c && typeof c === 'string' && c.match(/\.(jpg|jpeg|png|gif|webp)/i)) return c;
1073
- return candidates.find(c => c && typeof c === 'string' && c.startsWith('http'));
1074
- }
1075
-
1076
- // نسخ نص AI
1077
- let currentAIAnswer = '';
1078
- document.getElementById('ai-copy-desktop')?.addEventListener('click', () => navigator.clipboard.writeText(currentAIAnswer));
1079
- document.getElementById('ai-copy-mobile')?.addEventListener('click', () => navigator.clipboard.writeText(currentAIAnswer));
1080
-
1081
- function updateAISources(sources) {
1082
- const chipsHTML = sources.slice(0, 4).map(s => {
1083
- let domain = '';
1084
- try { domain = new URL(s.url).hostname.replace('www.', ''); } catch { domain = s.url; }
1085
- return `<a class="ai-source-chip" href="${s.url}" target="_blank" rel="noopener"><i class="fa-solid fa-link"></i>${escapeHTML(domain)}</a>`;
1086
- }).join('');
1087
- document.getElementById('ai-sources-desktop').innerHTML = chipsHTML;
1088
- document.getElementById('ai-sources-mobile').innerHTML = chipsHTML;
1089
- }
1090
-
1091
- function runAI(q, results) {
1092
- const desktop = document.getElementById('ai-answer-body');
1093
- const mobile = document.getElementById('ai-answer-body-mobile');
1094
- const copyDesktop = document.getElementById('ai-copy-desktop');
1095
- const copyMobile = document.getElementById('ai-copy-mobile');
1096
- [desktop, mobile].forEach(el => { if(el) { el.classList.add('loading'); el.innerHTML = '<div class="ai-skeleton"></div><div class="ai-skeleton"></div>'; } });
1097
- [copyDesktop, copyMobile].forEach(el => { if(el) el.style.display = 'none'; });
1098
- document.getElementById('ai-sources-desktop').innerHTML = '';
1099
- document.getElementById('ai-sources-mobile').innerHTML = '';
1100
-
1101
- const bestResult = results[0];
1102
- const fallbackText = bestResult ? `بناءً على البحث، ${bestResult.content.slice(0, 200)}...` : 'لا توجد معلومات كافية.';
1103
- const sources = results.slice(0, 4);
1104
-
1105
- setTimeout(() => {
1106
- currentAIAnswer = fallbackText;
1107
- [desktop, mobile].forEach(el => { if(el) { el.classList.remove('loading'); el.textContent = currentAIAnswer; } });
1108
- [copyDesktop, copyMobile].forEach(el => { if(el) el.style.display = 'inline-flex'; });
1109
- updateAISources(sources);
1110
- }, 1200);
1111
- }
1112
-
1113
- // Intersection Observer للرسوم المتحركة
1114
- const observer = new IntersectionObserver((entries) => {
1115
- entries.forEach(entry => {
1116
- if (entry.isIntersecting) entry.target.classList.add('visible');
1117
- });
1118
- }, { threshold: 0.1, rootMargin: '0px 0px -20px 0px' });
1119
-
1120
- function observeNewElements() {
1121
- document.querySelectorAll('.search-result, .image-card, .video-card, .rich-graph-container').forEach(el => observer.observe(el));
1122
- }
1123
-
1124
- // العودة إلى الأعلى
1125
- const backBtn = document.getElementById('backToTop');
1126
- window.addEventListener('scroll', () => { backBtn.classList.toggle('show', window.scrollY > 400); });
1127
- backBtn.addEventListener('click', () => window.scrollTo({ top: 0, behavior: 'smooth' }));
1128
-
1129
- // البحث
1130
- async function performSearch(q, tab = 'all') {
1131
- resultsEl.innerHTML = '';
1132
- metaEl.style.display = 'none';
1133
- loadMoreBtn.style.display = 'none';
1134
- loadingEl.style.display = 'flex';
1135
- const category = { all: 'general', news: 'news', images: 'images', videos: 'videos' }[tab] || 'general';
1136
-
1137
- try {
1138
- const response = await fetch(`${SEARXNG_URL}?q=${encodeURIComponent(q)}&format=json&categories=${category}&language=ar&safesearch=1`, { signal: AbortSignal.timeout(15000) });
1139
- const data = await response.json();
1140
- allResults = data.results || [];
1141
- loadingEl.style.display = 'none';
1142
-
1143
- if (allResults.length > 0) {
1144
- metaEl.style.display = 'flex';
1145
- metaEl.innerHTML = `تقريباً <span style="color:var(--accent);font-weight:700">${allResults.length}</span> نتيجة`;
1146
- runAI(q, allResults);
1147
-
1148
- if (tab === 'images') renderAllImages(allResults);
1149
- else if (tab === 'videos') renderAllVideos(allResults);
1150
- else renderRichWeb(q, allResults);
1151
- observeNewElements();
1152
- } else {
1153
- resultsEl.innerHTML = `<div class="empty-state"><i class="fa-solid fa-face-frown"></i><p>لا توجد نتائج لـ "${escapeHTML(q)}"</p></div>`;
1154
- }
1155
- } catch (error) {
1156
- loadingEl.style.display = 'none';
1157
- resultsEl.innerHTML = `<div class="empty-state"><i class="fa-solid fa-triangle-exclamation"></i><p>تعذّر الاتصال بالمحرك.</p></div>`;
1158
- }
1159
- }
1160
-
1161
- function renderRichWeb(q, results) {
1162
- resultsEl.innerHTML = '';
1163
- let mainCard = results.find(r => r.url.includes('wikipedia.org')) || results.find(r => !r.url.includes('youtube.com'));
1164
- const ytResults = results.filter(r => r.url.includes('youtube.com/watch')).slice(0, 4);
1165
-
1166
- const richContainer = document.createElement('div');
1167
- richContainer.className = 'rich-graph-container';
1168
-
1169
- const imagesRow = document.createElement('div');
1170
- imagesRow.className = 'rich-images-row';
1171
- imagesRow.innerHTML = '<div class="rich-img-skeleton"></div><div class="rich-img-skeleton"></div><div class="rich-img-skeleton"></div><div class="rich-img-skeleton"></div>';
1172
- richContainer.appendChild(imagesRow);
1173
-
1174
- fetch(`${SEARXNG_URL}?q=${encodeURIComponent(q)}&format=json&categories=images&language=ar`)
1175
- .then(res => res.json())
1176
- .then(data => {
1177
- if (data.results) {
1178
- const valid = data.results.filter(r => getBestImageUrl(r)).slice(0, 6);
1179
- if (valid.length) {
1180
- imagesRow.innerHTML = valid.map(r => {
1181
- const img = proxyImage(getBestImageUrl(r));
1182
- return `<a href="${escapeHTML(r.url||'#')}" target="_blank" class="rich-img-card">
1183
- <img src="${escapeHTML(img)}" alt="صورة" loading="lazy" onerror="this.style.display='none';this.nextElementSibling.style.display='flex'" />
1184
- <div class="img-error-overlay"><i class="fa-solid fa-image-slash"></i> تعذّر التحميل</div>
1185
- </a>`;
1186
- }).join('');
1187
- } else imagesRow.style.display = 'none';
1188
- }
1189
- }).catch(() => imagesRow.style.display = 'none');
1190
-
1191
- if (mainCard) {
1192
- const dmn = getDomain(mainCard.url);
1193
- richContainer.innerHTML += `
1194
- <div class="wiki-card search-result">
1195
- <div class="wiki-header"><img src="${faviconURL(dmn)}" style="width:26px;height:26px;border-radius:6px" /><div><div class="wiki-domain">${escapeHTML(dmn)}</div><a href="${escapeHTML(mainCard.url)}" target="_blank" class="wiki-url">${escapeHTML(mainCard.url)}</a></div></div>
1196
- <a href="${escapeHTML(mainCard.url)}" target="_blank" class="result-title" style="font-size:20px">${escapeHTML(mainCard.title)}</a>
1197
- <p class="result-snippet">${escapeHTML(mainCard.content)}</p>
1198
- </div>`;
1199
- }
1200
- if (ytResults.length) {
1201
- richContainer.innerHTML += `<h3 class="rich-section-title">فيديوهات <i class="fa-solid fa-chevron-left"></i></h3><div class="rich-videos-row">${ytResults.map(r => {
1202
- const vidMatch = r.url.match(/v=([^&]+)/);
1203
- const thumb = vidMatch ? `https://img.youtube.com/vi/${vidMatch[1]}/mqdefault.jpg` : proxyImage(r.thumbnail);
1204
- return `<a href="${escapeHTML(r.url)}" target="_blank" class="rich-vid-card"><div class="rich-vid-thumb"><img src="${escapeHTML(thumb)}" loading="lazy" /><div class="rich-vid-play"><i class="fa-solid fa-play"></i></div></div><div class="rich-vid-info"><div class="rich-vid-title">${escapeHTML(r.title)}</div><div class="rich-vid-meta"><img src="${faviconURL('youtube.com')}" /> YouTube</div></div></a>`;
1205
- }).join('')}</div>`;
1206
- }
1207
- richContainer.innerHTML += `<h3 class="rich-section-title">استكشف ${escapeHTML(q)} بالتفصيل</h3><div class="discover-bubbles">${['جميلة جدا','أنواع','صور','فيديوهات','معلومات'].map(d => `<button class="discover-bubble" data-query="${escapeHTML(d+' '+q)}"><i class="fa-solid fa-magnifying-glass"></i> ${escapeHTML(d+' '+q)}</button>`).join('')}</div>`;
1208
- resultsEl.appendChild(richContainer);
1209
-
1210
- richContainer.querySelectorAll('.discover-bubble').forEach(btn => {
1211
- btn.addEventListener('click', () => {
1212
- inputEl.value = btn.dataset.query;
1213
- document.getElementById('search-form').dispatchEvent(new Event('submit'));
1214
- });
1215
- });
1216
-
1217
- const used = new Set([mainCard?.url, ...ytResults.map(r=>r.url)]);
1218
- results.filter(r => !used.has(r.url)).forEach(r => {
1219
- const domain = getDomain(r.url);
1220
- const article = document.createElement('article');
1221
- article.className = 'search-result';
1222
- article.innerHTML = `<div class="favicon-wrap"><img src="${faviconURL(domain)}" loading="lazy" onerror="this.style.display='none';this.nextElementSibling.style.display='flex'" /><i class="fa-solid fa-globe fallback-icon" style="display:none"></i></div><div class="result-content"><div class="result-domain"><i class="fa-solid fa-link"></i> ${escapeHTML(domain)}</div><a class="result-title" href="${escapeHTML(r.url)}" target="_blank">${escapeHTML(r.title)}</a><p class="result-snippet">${escapeHTML(r.content)}</p></div>`;
1223
- resultsEl.appendChild(article);
1224
- });
1225
- }
1226
-
1227
- function renderAllImages(results) {
1228
- const wrap = document.createElement('div'); wrap.className = 'images-grid';
1229
- results.forEach(r => {
1230
- const raw = getBestImageUrl(r); if(!raw) return;
1231
- wrap.innerHTML += `<div class="image-card"><a class="image-card-link" href="${escapeHTML(r.url)}" target="_blank"><img src="${escapeHTML(proxyImage(raw))}" alt="${escapeHTML(r.title)}" loading="lazy" onerror="this.style.display='none';this.nextElementSibling.style.display='flex'" /><div class="img-error-overlay"><i class="fa-solid fa-image-slash"></i> تعذّر</div></a><div class="image-info">${escapeHTML(r.title)}</div></div>`;
1232
- });
1233
- resultsEl.appendChild(wrap);
1234
- }
1235
-
1236
- function renderAllVideos(results) {
1237
- const wrap = document.createElement('div'); wrap.className = 'videos-grid';
1238
- results.forEach(r => {
1239
- wrap.innerHTML += `<div class="video-card"><a href="${escapeHTML(r.url)}" target="_blank" class="video-thumb-wrap"><img src="${proxyImage(r.thumbnail)}" loading="lazy" /><div class="play-overlay"><i class="fa-solid fa-play"></i></div></a><div class="video-details"><a class="video-title" href="${escapeHTML(r.url)}">${escapeHTML(r.title)}</a></div></div>`;
1240
- });
1241
- resultsEl.appendChild(wrap);
1242
- }
1243
-
1244
- // التهيئة
1245
- if (query) { inputEl.value = query; performSearch(query, currentTab); }
1246
- document.getElementById('search-form').addEventListener('submit', (e) => {
1247
- e.preventDefault(); const q = inputEl.value.trim(); if(!q) return;
1248
- window.history.pushState({}, '', `?q=${encodeURIComponent(q)}&tab=${currentTab}`);
1249
- query = q; performSearch(q, currentTab);
1250
- });
1251
- document.querySelectorAll('.tab-pill').forEach(btn => {
1252
- btn.addEventListener('click', () => {
1253
- const tab = btn.dataset.tab; if(tab===currentTab) return;
1254
- currentTab = tab; setActiveTab(tab);
1255
- window.history.pushState({}, '', `?q=${encodeURIComponent(query)}&tab=${tab}`);
1256
- if(query) performSearch(query, tab);
1257
- });
1258
  });
1259
- loadMoreBtn.addEventListener('click', () => performSearch(query, currentTab));
1260
- })();
1261
- </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1262
  </body>
1263
  </html>
 
1
  <!DOCTYPE html>
2
  <html data-theme="light" dir="rtl" lang="ar">
3
  <head>
4
+ <meta charset="utf-8" />
5
+ <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0" name="viewport" />
6
+ <title>SurfGO | نتائج البحث</title>
7
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
8
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9
+ <link href="https://fonts.googleapis.com/css2?family=Syne:wght@400;600;700;800&family=Tajawal:wght@300;400;500;700&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
+ :root {
13
+ --bg-base: #f0f2f8;
14
+ --bg-nav: rgba(255, 255, 255, 0.82);
15
+ --bg-card: #ffffff;
16
+ --bg-input: #e8ebf5;
17
+ --bg-input-focus: #ffffff;
18
+ --border: rgba(99, 102, 241, 0.12);
19
+ --border-hover: rgba(99, 102, 241, 0.4);
20
+ --accent: #5b5ef4;
21
+ --accent-2: #e0427a;
22
+ --accent-glow: rgba(91, 94, 244, 0.18);
23
+ --text-main: #12132a;
24
+ --text-sub: #6b7280;
25
+ --text-faint: #9ca3af;
26
+ --shadow-card: 0 2px 12px rgba(91, 94, 244, 0.07), 0 1px 3px rgba(0, 0, 0, 0.04);
27
+ --shadow-hover: 0 8px 32px rgba(91, 94, 244, 0.13), 0 2px 8px rgba(0, 0, 0, 0.06);
28
+ --radius-nav: 22px;
29
+ --radius-card: 18px;
30
+ --radius-pill: 100px;
31
+ --transition: 0.28s cubic-bezier(0.4, 0, 0.2, 1);
32
+ --glass-blur: blur(28px) saturate(1.6);
33
+ }
34
+
35
+ [data-theme="dark"] {
36
+ --bg-base: #0c0d1d;
37
+ --bg-nav: rgba(18, 20, 40, 0.92);
38
+ --bg-card: #13152e;
39
+ --bg-input: #1c1f3d;
40
+ --bg-input-focus: #13152e;
41
+ --border: rgba(130, 133, 255, 0.13);
42
+ --border-hover: rgba(130, 133, 255, 0.4);
43
+ --accent: #8284fc;
44
+ --accent-2: #f472b6;
45
+ --accent-glow: rgba(130, 133, 255, 0.16);
46
+ --text-main: #eef0ff;
47
+ --text-sub: #9099c0;
48
+ --text-faint: #5a6080;
49
+ --shadow-card: 0 2px 14px rgba(0, 0, 0, 0.28);
50
+ --shadow-hover: 0 10px 36px rgba(130, 133, 255, 0.14);
51
+ }
52
+
53
+ *,
54
+ *::before,
55
+ *::after {
56
+ margin: 0;
57
+ padding: 0;
58
+ box-sizing: border-box;
59
+ }
60
+
61
+ body {
62
+ font-family: 'Tajawal', sans-serif;
63
+ background: var(--bg-base);
64
+ color: var(--text-main);
65
+ min-height: 100vh;
66
+ overflow-x: hidden;
67
+ transition: background 0.35s, color 0.35s;
68
+ position: relative;
69
+ }
70
+
71
+ .bg-mesh {
72
+ position: fixed;
73
+ inset: 0;
74
+ z-index: 0;
75
+ pointer-events: none;
76
+ overflow: hidden;
77
+ }
78
+ .orb {
79
+ position: absolute;
80
+ border-radius: 50%;
81
+ filter: blur(85px);
82
+ opacity: 0.4;
83
+ animation: drift 20s ease-in-out infinite alternate;
84
+ }
85
+ .orb-1 {
86
+ width: 55vw;
87
+ height: 55vw;
88
+ background: radial-gradient(circle, rgba(91, 94, 244, 0.15) 0%, transparent 70%);
89
+ top: -20%;
90
+ right: -15%;
91
+ }
92
+ .orb-2 {
93
+ width: 45vw;
94
+ height: 45vw;
95
+ background: radial-gradient(circle, rgba(224, 66, 122, 0.12) 0%, transparent 70%);
96
+ bottom: -15%;
97
+ left: -10%;
98
+ }
99
+ .orb-3 {
100
+ width: 35vw;
101
+ height: 35vw;
102
+ background: radial-gradient(circle, rgba(167, 139, 250, 0.1) 0%, transparent 70%);
103
+ top: 55%;
104
+ left: 55%;
105
+ }
106
+ @keyframes drift {
107
+ 0% { transform: translate(0, 0) scale(1); }
108
+ 100% { transform: translate(4%, 3%) scale(1.06); }
109
+ }
110
+
111
+ /* NAVBAR */
112
+ .navbar {
113
+ position: fixed;
114
+ top: 14px;
115
+ left: 50%;
116
+ transform: translateX(-50%);
117
+ width: 95%;
118
+ max-width: 1280px;
119
+ min-height: 68px;
120
+ background: var(--bg-nav);
121
+ backdrop-filter: var(--glass-blur);
122
+ -webkit-backdrop-filter: var(--glass-blur);
123
+ border: 1px solid var(--border);
124
+ border-radius: var(--radius-nav);
125
+ display: flex;
126
+ flex-wrap: wrap;
127
+ align-items: center;
128
+ justify-content: space-between;
129
+ padding: 10px 18px;
130
+ z-index: 1000;
131
+ box-shadow: 0 4px 24px rgba(0, 0, 0, 0.06), 0 1px 0 rgba(255, 255, 255, 0.6) inset;
132
+ gap: 12px;
133
+ transition: background 0.35s, border-color 0.35s;
134
+ }
135
+ .brand {
136
+ font-family: 'Syne', sans-serif;
137
+ font-weight: 400;
138
+ font-size: 21px;
139
+ text-decoration: none;
140
+ color: var(--text-main);
141
+ display: flex;
142
+ align-items: center;
143
+ gap: 10px;
144
+ letter-spacing: -0.01em;
145
+ flex-shrink: 0;
146
+ transition: transform 0.2s;
147
+ }
148
+ .brand:hover { transform: scale(1.03); }
149
+ .brand-icon {
150
+ width: 36px;
151
+ height: 36px;
152
+ background: linear-gradient(135deg, var(--accent), var(--accent-2));
153
+ border-radius: 10px;
154
+ display: flex;
155
+ align-items: center;
156
+ justify-content: center;
157
+ color: #fff;
158
+ font-size: 15px;
159
+ flex-shrink: 0;
160
+ box-shadow: 0 4px 14px var(--accent-glow);
161
+ }
162
+ .search-container {
163
+ flex: 1;
164
+ max-width: 580px;
165
+ width: 100%;
166
+ }
167
+ .search-bar {
168
+ display: flex;
169
+ align-items: center;
170
+ background: var(--bg-input);
171
+ border: 1.5px solid var(--border);
172
+ border-radius: var(--radius-pill);
173
+ padding: 4px 4px 4px 16px;
174
+ transition: var(--transition);
175
+ width: 100%;
176
+ }
177
+ .search-bar:focus-within {
178
+ border-color: var(--accent);
179
+ background: var(--bg-input-focus);
180
+ box-shadow: 0 0 0 4px var(--accent-glow);
181
+ }
182
+ .search-bar input {
183
+ flex: 1;
184
+ background: transparent;
185
+ border: none;
186
+ padding: 9px 0;
187
+ color: var(--text-main);
188
+ font-size: 14.5px;
189
+ min-width: 0;
190
+ font-family: 'Tajawal', sans-serif;
191
+ }
192
+ .search-bar input::placeholder { color: var(--text-faint); }
193
+ .search-btn {
194
+ background: linear-gradient(135deg, var(--accent), var(--accent-2));
195
+ border: none;
196
+ color: #fff;
197
+ cursor: pointer;
198
+ width: 40px;
199
+ height: 36px;
200
+ border-radius: var(--radius-pill);
201
+ display: flex;
202
+ align-items: center;
203
+ justify-content: center;
204
+ font-size: 14px;
205
+ flex-shrink: 0;
206
+ transition: var(--transition);
207
+ box-shadow: 0 2px 8px var(--accent-glow);
208
+ }
209
+ .search-btn:hover { opacity: 0.88; transform: scale(1.06); }
210
+ .nav-actions { display: flex; align-items: center; gap: 8px; }
211
+ #theme-toggle {
212
+ background: var(--bg-input);
213
+ border: 1.5px solid var(--border);
214
+ color: var(--text-sub);
215
+ cursor: pointer;
216
+ width: 38px;
217
+ height: 38px;
218
+ border-radius: 50%;
219
+ display: flex;
220
+ align-items: center;
221
+ justify-content: center;
222
+ font-size: 15px;
223
+ transition: var(--transition);
224
+ flex-shrink: 0;
225
+ }
226
+ #theme-toggle:hover { border-color: var(--accent); color: var(--accent); }
227
+
228
+ /* TABS */
229
+ .tabs-bar {
230
+ position: fixed;
231
+ top: 98px;
232
+ left: 50%;
233
+ transform: translateX(-50%);
234
+ width: 95%;
235
+ max-width: 1280px;
236
+ display: flex;
237
+ gap: 6px;
238
+ z-index: 999;
239
+ overflow-x: auto;
240
+ padding: 6px 10px;
241
+ backdrop-filter: blur(16px);
242
+ background: rgba(255,255,255,0.2);
243
+ border: 1px solid var(--border);
244
+ border-radius: 40px;
245
+ scrollbar-width: none;
246
+ }
247
+ [data-theme="dark"] .tabs-bar { background: rgba(18,20,40,0.35); }
248
+ .tab-pill {
249
+ padding: 7px 16px;
250
+ border-radius: var(--radius-pill);
251
+ background: var(--bg-card);
252
+ border: 1.5px solid var(--border);
253
+ color: var(--text-sub);
254
+ font-family: 'Tajawal', sans-serif;
255
+ font-size: 13px;
256
+ font-weight: 500;
257
+ cursor: pointer;
258
+ transition: var(--transition);
259
+ display: flex;
260
+ align-items: center;
261
+ gap: 6px;
262
+ white-space: nowrap;
263
+ box-shadow: var(--shadow-card);
264
+ }
265
+ .tab-pill:hover { border-color: var(--border-hover); color: var(--accent); }
266
+ .tab-pill.active {
267
+ background: var(--accent);
268
+ color: #fff;
269
+ border-color: var(--accent);
270
+ box-shadow: 0 4px 16px var(--accent-glow);
271
+ }
272
+
273
+ /* LAYOUT */
274
+ .page-wrapper {
275
+ position: relative;
276
+ z-index: 1;
277
+ max-width: 1280px;
278
+ margin: 170px auto 60px;
279
+ padding: 0 16px;
280
+ display: flex;
281
+ flex-direction: column;
282
+ gap: 24px;
283
+ }
284
+ .results-area { min-width: 0; width: 100%; }
285
+
286
+ /* LOADING */
287
+ #loading-text {
288
+ color: var(--text-sub);
289
+ font-size: 13.5px;
290
+ margin-bottom: 18px;
291
+ display: flex;
292
+ align-items: center;
293
+ gap: 8px;
294
+ }
295
+ #loading-text.spinning::before {
296
+ content: '';
297
+ display: inline-block;
298
+ width: 14px;
299
+ height: 14px;
300
+ border: 2px solid var(--border);
301
+ border-top-color: var(--accent);
302
+ border-radius: 50%;
303
+ animation: spin 0.8s linear infinite;
304
+ flex-shrink: 0;
305
+ }
306
+ @keyframes spin { to { transform: rotate(360deg); } }
307
+
308
+ /* FADE IN */
309
+ .search-result,
310
+ .image-card,
311
+ .video-card,
312
+ .rich-graph-container {
313
+ opacity: 0;
314
+ transform: translateY(20px);
315
+ transition: opacity 0.5s ease, transform 0.5s ease;
316
+ }
317
+ .search-result.visible,
318
+ .image-card.visible,
319
+ .video-card.visible,
320
+ .rich-graph-container.visible {
321
+ opacity: 1;
322
+ transform: translateY(0);
323
+ }
324
+
325
+ /* CARDS */
326
+ .search-result {
327
+ background: var(--bg-card);
328
+ border: 1.5px solid var(--border);
329
+ border-radius: var(--radius-card);
330
+ padding: 18px 20px;
331
+ margin-bottom: 12px;
332
+ transition: var(--transition);
333
+ box-shadow: var(--shadow-card);
334
+ display: flex;
335
+ gap: 14px;
336
+ align-items: flex-start;
337
+ }
338
+ .search-result:hover {
339
+ border-color: var(--border-hover);
340
+ box-shadow: var(--shadow-hover);
341
+ transform: translateY(-2px);
342
+ }
343
+ .favicon-wrap {
344
+ width: 22px;
345
+ height: 22px;
346
+ border-radius: 5px;
347
+ overflow: hidden;
348
+ flex-shrink: 0;
349
+ margin-top: 3px;
350
+ background: var(--bg-input);
351
+ display: flex;
352
+ align-items: center;
353
+ justify-content: center;
354
+ }
355
+ .favicon-wrap img { width: 16px; height: 16px; object-fit: contain; }
356
+ .fallback-icon { color: var(--text-faint); font-size: 11px; }
357
+ .result-content { flex: 1; min-width: 0; }
358
+ .result-domain { font-size: 11.5px; color: var(--text-faint); margin-bottom: 4px; display: flex; align-items: center; gap: 4px; }
359
+ .result-title {
360
+ font-size: 16px;
361
+ font-weight: 700;
362
+ color: var(--accent);
363
+ text-decoration: none;
364
+ display: inline-block;
365
+ margin-bottom: 6px;
366
+ line-height: 1.4;
367
+ transition: color 0.2s;
368
+ }
369
+ .result-title:hover { color: var(--accent-2); text-decoration: underline; }
370
+ .result-snippet { font-size: 13.5px; color: var(--text-sub); line-height: 1.65; }
371
+
372
+ /* RICH GRAPH */
373
+ .rich-graph-container { display: flex; flex-direction: column; gap: 22px; margin-bottom: 28px; }
374
+ .rich-images-row {
375
+ display: flex; gap: 10px; overflow-x: auto; scrollbar-width: none; padding-bottom: 8px; min-height: 170px; align-items: center;
376
+ }
377
+ .rich-img-card {
378
+ flex-shrink: 0; height: 170px; border-radius: 16px; overflow: hidden; background: var(--bg-input);
379
+ border: 1px solid var(--border); box-shadow: var(--shadow-card); transition: var(--transition); position: relative;
380
+ }
381
+ .rich-img-card:hover { transform: translateY(-5px) scale(1.02); box-shadow: var(--shadow-hover); }
382
+ .rich-img-card img { height: 100%; width: auto; object-fit: cover; display: block; }
383
+ .img-error-overlay {
384
+ position: absolute; inset: 0; display: none; align-items: center; justify-content: center;
385
+ background: var(--bg-input); color: var(--text-faint); flex-direction: column; gap: 6px; font-size: 13px;
386
+ }
387
+ .rich-section-title {
388
+ font-size: 20px; font-weight: 700; margin: 12px 0 8px; color: var(--text-main);
389
+ display: flex; align-items: center; gap: 10px;
390
+ }
391
+ .rich-videos-row { display: flex; gap: 14px; overflow-x: auto; padding-bottom: 12px; scrollbar-width: none; }
392
+ .rich-vid-card {
393
+ flex: 0 0 250px; text-decoration: none; background: var(--bg-card); border-radius: 16px;
394
+ overflow: hidden; border: 1px solid var(--border); box-shadow: var(--shadow-card); transition: var(--transition);
395
+ }
396
+ .rich-vid-card:hover { transform: translateY(-5px); box-shadow: var(--shadow-hover); border-color: var(--accent); }
397
+ .rich-vid-thumb { height: 140px; position: relative; background: var(--bg-input); }
398
+ .rich-vid-thumb img { width: 100%; height: 100%; object-fit: cover; }
399
+ .rich-vid-play {
400
+ position: absolute; bottom: 12px; left: 12px; background: rgba(0,0,0,0.75); backdrop-filter: blur(6px);
401
+ color: #fff; width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center;
402
+ justify-content: center; font-size: 13px; transition: 0.2s;
403
+ }
404
+ .rich-vid-card:hover .rich-vid-play { background: var(--accent); }
405
+ .rich-vid-info { padding: 14px; }
406
+ .rich-vid-title {
407
+ font-size: 14px; font-weight: 600; color: var(--text-main);
408
+ display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.5;
409
+ }
410
+ .rich-vid-meta { font-size: 12px; color: var(--text-faint); margin-top: 8px; display: flex; align-items: center; gap: 6px; }
411
+ .discover-bubbles { display: flex; flex-direction: column; gap: 10px; }
412
+ .discover-bubble {
413
+ background: var(--bg-card); border: 1.5px solid var(--border); border-radius: 60px;
414
+ padding: 15px 24px; display: flex; align-items: center; gap: 14px; cursor: pointer;
415
+ transition: var(--transition); font-family: 'Tajawal', sans-serif; font-size: 16px;
416
+ font-weight: 500; color: var(--text-main); text-align: right; box-shadow: var(--shadow-card);
417
+ backdrop-filter: blur(5px); width: 100%;
418
+ }
419
+ .discover-bubble i { color: var(--text-faint); font-size: 16px; transition: 0.2s; }
420
+ .discover-bubble:hover {
421
+ background: var(--bg-input-focus); border-color: var(--accent); color: var(--accent);
422
+ transform: translateX(-6px); box-shadow: var(--shadow-hover);
423
+ }
424
+ .discover-bubble:hover i { color: var(--accent); }
425
+
426
+ /* IMAGES & VIDEOS GRID */
427
+ .images-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 14px; width: 100%; }
428
+ .image-card {
429
+ background: var(--bg-card); border: 1.5px solid var(--border); border-radius: var(--radius-card);
430
+ overflow: hidden; transition: var(--transition); box-shadow: var(--shadow-card); display: flex; flex-direction: column;
431
+ }
432
+ .image-card:hover { border-color: var(--border-hover); box-shadow: var(--shadow-hover); transform: translateY(-5px); }
433
+ .image-card-link { display: block; width: 100%; height: 170px; overflow: hidden; background: var(--bg-input); position: relative; }
434
+ .image-card-link img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.4s ease; }
435
+ .image-card:hover .image-card-link img { transform: scale(1.06); }
436
+ .image-info {
437
+ padding: 9px 10px; font-size: 11.5px; color: var(--text-sub);
438
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border-top: 1px solid var(--border); background: var(--bg-card);
439
+ }
440
+ .videos-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 20px; width: 100%; }
441
+ .video-card {
442
+ background: var(--bg-card); border: 1.5px solid var(--border); border-radius: var(--radius-card);
443
+ overflow: hidden; transition: var(--transition); box-shadow: var(--shadow-card);
444
+ }
445
+ .video-card:hover { border-color: var(--border-hover); box-shadow: var(--shadow-hover); transform: translateY(-3px); }
446
+ .video-thumb-wrap { position: relative; width: 100%; height: 170px; background: var(--bg-input); display: block; overflow: hidden; }
447
+ .video-thumb-wrap img { width: 100%; height: 100%; object-fit: cover; opacity: 0.85; transition: 0.3s; }
448
+ .video-card:hover .video-thumb-wrap img { opacity: 1; }
449
+ .play-overlay {
450
+ position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 46px; height: 46px;
451
+ background: rgba(91,94,244,0.92); color: white; border-radius: 50%; display: flex;
452
+ align-items: center; justify-content: center; font-size: 17px; box-shadow: 0 0 20px var(--accent-glow);
453
+ }
454
+ .video-details { padding: 12px; }
455
+ .video-title { font-size: 14px; font-weight: 700; color: var(--text-main); text-decoration: none; display: block; line-height: 1.4; }
456
+ .video-title:hover { color: var(--accent); }
457
+
458
+ /* AI WIDGET */
459
+ .sidebar { width: 100%; order: 2; margin-top: 12px; }
460
+ .ai-widget-wrap { position: relative; border-radius: var(--radius-card); }
461
+ .ai-glow-ring {
462
+ position: absolute; inset: -2px; border-radius: calc(var(--radius-card) + 2px);
463
+ background: conic-gradient(from var(--angle, 0deg), var(--accent), var(--accent-2), #a78bfa, var(--accent), var(--accent-2), var(--accent));
464
+ z-index: 0; animation: spin-glow 4s linear infinite; filter: blur(1px);
465
+ }
466
+ @property --angle { syntax: '<angle>'; initial-value: 0deg; inherits: false; }
467
+ @keyframes spin-glow { to { --angle: 360deg; } }
468
+ .ai-widget {
469
+ position: relative; z-index: 1; background: var(--bg-card); border-radius: var(--radius-card);
470
+ padding: 18px 18px 16px; box-shadow: var(--shadow-card);
471
+ }
472
+ .ai-widget-header { display: flex; align-items: center; gap: 9px; margin-bottom: 14px; }
473
+ .ai-widget-icon {
474
+ width: 30px; height: 30px; border-radius: 8px;
475
+ background: linear-gradient(135deg, var(--accent), var(--accent-2));
476
+ display: flex; align-items: center; justify-content: center; color: #fff; font-size: 12px; flex-shrink: 0;
477
+ }
478
+ .ai-widget-badge {
479
+ margin-right: auto; font-size: 10px; padding: 2px 8px; border-radius: 20px;
480
+ background: var(--accent-glow); color: var(--accent); font-weight: 600; border: 1px solid rgba(91,94,244,0.2);
481
+ }
482
+ .ai-answer-body { font-size: 13.5px; color: var(--text-sub); line-height: 1.75; min-height: 60px; }
483
+ .ai-answer-body.loading { display: flex; flex-direction: column; gap: 8px; }
484
+ .ai-skeleton {
485
+ height: 12px; border-radius: 6px;
486
+ background: linear-gradient(90deg, var(--bg-input) 25%, var(--border) 50%, var(--bg-input) 75%);
487
+ background-size: 200% 100%; animation: shimmer 1.4s ease-in-out infinite;
488
+ }
489
+ @keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
490
+ .ai-copy-btn {
491
+ margin-top: 14px; padding: 8px 16px; background: var(--bg-input); border: 1px solid var(--border);
492
+ border-radius: 30px; cursor: pointer; font-size: 12px; color: var(--text-sub);
493
+ display: inline-flex; align-items: center; gap: 6px; transition: var(--transition);
494
+ }
495
+ .ai-copy-btn:hover { background: var(--accent); color: #fff; border-color: var(--accent); }
496
+ .ai-widget-footer {
497
+ font-size: 10.5px; color: var(--text-faint); margin-top: 12px; padding-top: 10px;
498
+ border-top: 1px solid var(--border); display: flex; align-items: center; gap: 5px;
499
+ }
500
+ .ai-sources { margin-top: 10px; display: flex; flex-wrap: wrap; gap: 6px; }
501
+ .ai-source-chip {
502
+ font-size: 11px; padding: 3px 10px; border-radius: 20px; background: var(--bg-input);
503
+ border: 1px solid var(--border); color: var(--text-faint); text-decoration: none;
504
+ display: flex; align-items: center; gap: 5px; transition: var(--transition);
505
+ }
506
+ .ai-source-chip:hover { border-color: var(--accent); color: var(--accent); }
507
+ .ai-cursor {
508
+ display: inline-block; width: 2px; height: 14px; background: var(--accent);
509
+ margin-right: 2px; vertical-align: middle; animation: blink 0.9s step-end infinite;
510
+ }
511
+ @keyframes blink { 0%,100% { opacity: 1; } 50% { opacity: 0; } }
512
+
513
+ .ai-mobile-wrap { display: none; border-radius: var(--radius-card); margin-bottom: 16px; position: relative; }
514
+
515
+ .back-to-top {
516
+ position: fixed; bottom: 30px; right: 30px; z-index: 999; width: 46px; height: 46px;
517
+ border-radius: 50%; background: var(--accent); color: #fff; display: flex; align-items: center;
518
+ justify-content: center; font-size: 18px; cursor: pointer; opacity: 0; visibility: hidden;
519
+ transition: 0.3s; box-shadow: 0 6px 20px var(--accent-glow); border: none;
520
+ }
521
+ .back-to-top.show { opacity: 1; visibility: visible; }
522
+
523
+ .results-meta { font-size: 12px; color: var(--text-faint); margin-bottom: 14px; display: flex; align-items: center; gap: 6px; }
524
+ .results-meta span { color: var(--accent); font-weight: 600; }
525
+
526
+ @media (max-width: 767px) {
527
+ .navbar { top: 10px; border-radius: 16px; padding: 10px 14px; }
528
+ .tabs-bar { top: 125px; }
529
+ .page-wrapper { margin-top: 176px; }
530
+ .sidebar { display: none !important; }
531
+ .ai-mobile-wrap { display: block; }
532
+ .images-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
533
+ .videos-grid { grid-template-columns: 1fr; }
534
+ }
535
+ @media (min-width: 768px) {
536
+ .navbar { flex-wrap: nowrap; padding: 0 22px; height: 68px; }
537
+ .page-wrapper { display: grid; grid-template-columns: 1fr 300px; gap: 24px; margin: 176px auto 60px; }
538
+ .sidebar { order: unset; margin-top: 0; }
539
+ .ai-mobile-wrap { display: none !important; }
540
+ }
541
+ </style>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
542
  </head>
543
  <body>
544
+ <div class="bg-mesh">
545
+ <div class="orb orb-1"></div>
546
+ <div class="orb orb-2"></div>
547
+ <div class="orb orb-3"></div>
548
+ </div>
549
+
550
+ <nav class="navbar">
551
+ <a class="brand" href="#">
552
+ <div class="brand-icon"><i class="fa-solid fa-bolt"></i></div>
553
+ <span>SurfGO</span>
554
+ </a>
555
+ <div class="search-container">
556
+ <form class="search-bar" id="search-form">
557
+ <input id="main-input" placeholder="ابحث في الويب..." type="text" autocomplete="off" />
558
+ <button class="search-btn" type="submit"><i class="fa-solid fa-magnifying-glass"></i></button>
559
+ </form>
560
  </div>
561
+ <div class="nav-actions">
562
+ <button id="theme-toggle" aria-label="تغيير السمة"></button>
563
+ </div>
564
+ </nav>
565
+
566
+ <div class="tabs-bar">
567
+ <button class="tab-pill active" data-tab="all"><i class="fa-solid fa-globe"></i> الويب</button>
568
+ <button class="tab-pill" data-tab="news"><i class="fa-solid fa-newspaper"></i> أخبار</button>
569
+ <button class="tab-pill" data-tab="images"><i class="fa-solid fa-image"></i> صور</button>
570
+ <button class="tab-pill" data-tab="videos"><i class="fa-solid fa-play"></i> فيديو</button>
571
+ </div>
572
+
573
+ <div class="page-wrapper">
574
+ <main class="results-area">
575
+ <div id="loading-text" class="spinning">جاري جلب النتائج…</div>
576
+
577
+ <div class="ai-mobile-wrap" id="ai-mobile-wrap">
578
+ <div class="ai-glow-ring"></div>
579
+ <div class="ai-widget">
580
+ <div class="ai-widget-header">
581
+ <div class="ai-widget-icon"><i class="fa-solid fa-robot"></i></div>
582
+ <span>إجابة الذكاء الاصطناعي</span>
583
+ <span class="ai-widget-badge">AI</span>
584
+ </div>
585
+ <div class="ai-answer-body loading" id="ai-answer-body-mobile">
586
+ <div class="ai-skeleton"></div><div class="ai-skeleton"></div><div class="ai-skeleton"></div>
587
+ </div>
588
+ <div class="ai-sources" id="ai-sources-mobile"></div>
589
+ <button class="ai-copy-btn" id="ai-copy-mobile" style="display:none"><i class="fa-regular fa-copy"></i> نسخ</button>
590
+ <div class="ai-widget-footer"><i class="fa-solid fa-bolt"></i> مدعوم بواسطة AnesNT</div>
591
  </div>
592
+ </div>
593
+
594
+ <div id="results-meta" class="results-meta" style="display:none"></div>
595
+ <div id="results-container"></div>
596
+ </main>
597
+
598
+ <aside class="sidebar">
599
+ <div class="ai-widget-wrap">
600
+ <div class="ai-glow-ring"></div>
601
+ <div class="ai-widget">
602
+ <div class="ai-widget-header">
603
+ <div class="ai-widget-icon"><i class="fa-solid fa-robot"></i></div>
604
+ <span>إجابة الذكاء الاصطناعي</span>
605
+ <span class="ai-widget-badge">AI</span>
606
+ </div>
607
+ <div class="ai-answer-body loading" id="ai-answer-body">
608
+ <div class="ai-skeleton"></div><div class="ai-skeleton"></div><div class="ai-skeleton"></div>
609
+ </div>
610
+ <div class="ai-sources" id="ai-sources-desktop"></div>
611
+ <button class="ai-copy-btn" id="ai-copy-desktop" style="display:none"><i class="fa-regular fa-copy"></i> نسخ</button>
612
+ <div class="ai-widget-footer"><i class="fa-solid fa-bolt"></i> مدعوم بواسطة AnesNT</div>
613
  </div>
614
+ </div>
615
+ </aside>
616
+ </div>
617
+
618
+ <button class="back-to-top" id="backToTop"><i class="fa-solid fa-arrow-up"></i></button>
619
+
620
+ <script>
621
+ (function() {
622
+ const SEARXNG_URL = "https://cjj-on-hf-searxng.hf.space/search";
623
+ const GEMINI_API = "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent";
624
+ const GEMINI_API_KEY = "";
625
+
626
+ const themeBtn = document.getElementById('theme-toggle');
627
+ function setTheme(t) {
628
+ document.documentElement.setAttribute('data-theme', t);
629
+ localStorage.setItem('surfgo-theme', t);
630
+ themeBtn.innerHTML = t === 'dark' ? '<i class="fa-solid fa-sun"></i>' : '<i class="fa-solid fa-moon"></i>';
631
+ }
632
+ setTheme(localStorage.getItem('surfgo-theme') || 'light');
633
+ themeBtn.addEventListener('click', () => setTheme(document.documentElement.getAttribute('data-theme') === 'dark' ? 'light' : 'dark'));
634
+
635
+ const params = new URLSearchParams(window.location.search);
636
+ let query = params.get('q') || '';
637
+ let currentTab = params.get('tab') || 'all';
638
+ let allResults = [];
639
+
640
+ const inputEl = document.getElementById('main-input');
641
+ const resultsEl = document.getElementById('results-container');
642
+ const loadingEl = document.getElementById('loading-text');
643
+ const metaEl = document.getElementById('results-meta');
644
+
645
+ function setActiveTab(tab) {
646
+ document.querySelectorAll('.tab-pill').forEach(btn => btn.classList.toggle('active', btn.dataset.tab === tab));
647
+ }
648
+ setActiveTab(currentTab);
649
+
650
+ // Helpers
651
+ function escapeHTML(str) { return str ? str.replace(/[&<>'"]/g, t => ({'&':'&amp;','<':'&lt;','>':'&gt;',"'":'&#39;','"':'&quot;'}[t]||t)) : ''; }
652
+ function getDomain(url) { try { return new URL(url).hostname.replace('www.',''); } catch { return url||''; } }
653
+ function proxyImage(url) { return url && !url.startsWith('data:') ? `https://wsrv.nl/?url=${encodeURIComponent(url)}&output=webp&maxage=7d&default=placeholder` : url; }
654
+ function faviconURL(domain) { return `https://www.google.com/s2/favicons?domain=${domain}&sz=32`; }
655
+ function getBestImageUrl(r) {
656
+ const c = [r.img_src, r.thumbnail_src, r.thumbnail, r.image, r.url, r.img];
657
+ for (const u of c) if (u && typeof u === 'string' && u.match(/\.(jpg|jpeg|png|gif|webp)/i)) return u;
658
+ return c.find(u => u && typeof u === 'string' && u.startsWith('http'));
659
+ }
660
+
661
+ // AI Copy
662
+ let currentAIAnswer = '';
663
+ document.getElementById('ai-copy-desktop')?.addEventListener('click', () => navigator.clipboard.writeText(currentAIAnswer));
664
+ document.getElementById('ai-copy-mobile')?.addEventListener('click', () => navigator.clipboard.writeText(currentAIAnswer));
665
+
666
+ function updateAISources(sources) {
667
+ const chips = sources.slice(0,4).map(s => {
668
+ const d = getDomain(s.url);
669
+ return `<a class="ai-source-chip" href="${s.url}" target="_blank"><i class="fa-solid fa-link"></i>${escapeHTML(d)}</a>`;
670
+ }).join('');
671
+ document.getElementById('ai-sources-desktop').innerHTML = chips;
672
+ document.getElementById('ai-sources-mobile').innerHTML = chips;
673
+ }
674
+
675
+ function typeAIResponse(fullText, sources) {
676
+ const desktop = document.getElementById('ai-answer-body');
677
+ const mobile = document.getElementById('ai-answer-body-mobile');
678
+ [desktop, mobile].forEach(el => { if(el) { el.className = 'ai-answer-body'; el.innerHTML = '<span class="ai-cursor"></span>'; } });
679
+ let i = 0;
680
+ const interval = setInterval(() => {
681
+ i += 3;
682
+ const shown = fullText.slice(0,i);
683
+ const still = i < fullText.length;
684
+ [desktop, mobile].forEach(el => {
685
+ if(!el) return;
686
+ el.innerHTML = escapeHTML(shown) + (still ? '<span class="ai-cursor"></span>' : '');
687
+ });
688
+ if(!still) {
689
+ clearInterval(interval);
690
+ currentAIAnswer = fullText;
691
+ updateAISources(sources);
692
+ document.getElementById('ai-copy-desktop').style.display = 'inline-flex';
693
+ document.getElementById('ai-copy-mobile').style.display = 'inline-flex';
694
+ }
695
+ }, 18);
696
+ }
697
+
698
+ async function runAI(q, results) {
699
+ const desktop = document.getElementById('ai-answer-body');
700
+ const mobile = document.getElementById('ai-answer-body-mobile');
701
+ [desktop, mobile].forEach(el => { if(el) { el.className = 'ai-answer-body loading'; el.innerHTML = '<div class="ai-skeleton"></div><div class="ai-skeleton"></div><div class="ai-skeleton"></div>'; } });
702
+ document.getElementById('ai-copy-desktop').style.display = 'none';
703
+ document.getElementById('ai-copy-mobile').style.display = 'none';
704
+ document.getElementById('ai-sources-desktop').innerHTML = '';
705
+ document.getElementById('ai-sources-mobile').innerHTML = '';
706
+
707
+ if (GEMINI_API_KEY.trim()) {
708
+ try {
709
+ const snippets = results.slice(0,5).map((r,i) => `[${i+1}] ${r.title||''}: ${r.content||r.url||''}`).join('\n');
710
+ const resp = await fetch(`${GEMINI_API}?key=${GEMINI_API_KEY}`, {
711
+ method:'POST', headers:{'Content-Type':'application/json'},
712
+ body: JSON.stringify({contents:[{parts:[{text:`أنت مساعد بحث ذكي. أجب بإجابة مختصرة بالعربية:\nالسؤال: "${q}"\nنتائج:\n${snippets}`}]}], generationConfig:{maxOutputTokens:400,temperature:0.4}})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
713
  });
714
+ const data = await resp.json();
715
+ const text = data.candidates?.[0]?.content?.parts?.[0]?.text || '';
716
+ typeAIResponse(text || 'لا توجد إجابة.', results.slice(0,4));
717
+ return;
718
+ } catch(e) { console.warn('Gemini fallback'); }
719
+ }
720
+ const best = results[0];
721
+ const summary = best ? (best.content||'').slice(0,400).trim() : '';
722
+ typeAIResponse(summary ? `🔍 أفضل نتيجة:\n\n${summary}` : 'لا توجد معلومات كافية.', results.slice(0,3));
723
+ }
724
+
725
+ // Observer animations
726
+ const observer = new IntersectionObserver(entries => {
727
+ entries.forEach(e => { if(e.isIntersecting) e.target.classList.add('visible'); });
728
+ }, { threshold: 0.1 });
729
+ function observeNew() {
730
+ document.querySelectorAll('.search-result, .image-card, .video-card, .rich-graph-container').forEach(el => observer.observe(el));
731
+ }
732
+
733
+ // Back to top
734
+ const backBtn = document.getElementById('backToTop');
735
+ window.addEventListener('scroll', () => backBtn.classList.toggle('show', window.scrollY > 400));
736
+ backBtn.addEventListener('click', () => window.scrollTo({top:0, behavior:'smooth'}));
737
+
738
+ // Search
739
+ async function performSearch(q, tab) {
740
+ resultsEl.innerHTML = '';
741
+ metaEl.style.display = 'none';
742
+ loadingEl.style.display = 'flex';
743
+ loadingEl.classList.add('spinning');
744
+ const cat = {all:'general', news:'news', images:'images', videos:'videos'}[tab]||'general';
745
+ try {
746
+ const res = await fetch(`${SEARXNG_URL}?q=${encodeURIComponent(q)}&format=json&categories=${cat}&language=ar&safesearch=1`, {signal: AbortSignal.timeout(15000)});
747
+ const data = await res.json();
748
+ allResults = data.results || [];
749
+ loadingEl.style.display = 'none';
750
+ loadingEl.classList.remove('spinning');
751
+ if (allResults.length) {
752
+ metaEl.style.display = 'flex';
753
+ metaEl.innerHTML = `تقريباً <span>${allResults.length}</span> نتيجة`;
754
+ runAI(q, allResults);
755
+ if (tab === 'images') renderAllImages(allResults);
756
+ else if (tab === 'videos') renderAllVideos(allResults);
757
+ else renderRichWeb(q, allResults);
758
+ observeNew();
759
+ } else {
760
+ resultsEl.innerHTML = `<div class="empty-state"><i class="fa-solid fa-face-frown"></i><p>لا توجد نتائج</p></div>`;
761
+ }
762
+ } catch(e) {
763
+ loadingEl.style.display = 'none';
764
+ resultsEl.innerHTML = `<div class="empty-state"><i class="fa-solid fa-triangle-exclamation"></i><p>تعذّر الاتصال</p></div>`;
765
+ }
766
+ }
767
+
768
+ function renderRichWeb(q, results) {
769
+ resultsEl.innerHTML = '';
770
+ const mainCard = results.find(r => r.url.includes('wikipedia.org')) || results[0];
771
+ const ytResults = results.filter(r => r.url.includes('youtube.com/watch')).slice(0,4);
772
+ const rich = document.createElement('div');
773
+ rich.className = 'rich-graph-container';
774
+
775
+ const imgRow = document.createElement('div');
776
+ imgRow.className = 'rich-images-row';
777
+ rich.appendChild(imgRow);
778
+ fetch(`${SEARXNG_URL}?q=${encodeURIComponent(q)}&format=json&categories=images&language=ar`)
779
+ .then(r=>r.json()).then(d=>{
780
+ const valid = (d.results||[]).filter(r=>getBestImageUrl(r)).slice(0,6);
781
+ imgRow.innerHTML = valid.length ? valid.map(r=>{
782
+ const img = proxyImage(getBestImageUrl(r));
783
+ return `<a href="${escapeHTML(r.url||'#')}" target="_blank" class="rich-img-card"><img src="${escapeHTML(img)}" loading="lazy" onerror="this.style.display='none';this.nextElementSibling.style.display='flex'" /><div class="img-error-overlay"><i class="fa-solid fa-image-slash"></i></div></a>`;
784
+ }).join('') : '';
785
+ }).catch(()=>{});
786
+
787
+ if (mainCard) {
788
+ rich.innerHTML += `<div class="search-result"><div class="favicon-wrap"><img src="${faviconURL(getDomain(mainCard.url))}" /></div><div class="result-content"><div class="result-domain">${escapeHTML(getDomain(mainCard.url))}</div><a class="result-title" href="${escapeHTML(mainCard.url)}" target="_blank">${escapeHTML(mainCard.title)}</a><p class="result-snippet">${escapeHTML(mainCard.content)}</p></div></div>`;
789
+ }
790
+ if (ytResults.length) {
791
+ rich.innerHTML += `<h3 class="rich-section-title">فيديوهات</h3><div class="rich-videos-row">${ytResults.map(r=>{
792
+ const vid = r.url.match(/v=([^&]+)/);
793
+ const thumb = vid ? `https://img.youtube.com/vi/${vid[1]}/mqdefault.jpg` : proxyImage(r.thumbnail);
794
+ return `<a href="${escapeHTML(r.url)}" target="_blank" class="rich-vid-card"><div class="rich-vid-thumb"><img src="${escapeHTML(thumb)}" /><div class="rich-vid-play"><i class="fa-solid fa-play"></i></div></div><div class="rich-vid-info"><div class="rich-vid-title">${escapeHTML(r.title)}</div><div class="rich-vid-meta">YouTube</div></div></a>`;
795
+ }).join('')}</div>`;
796
+ }
797
+ rich.innerHTML += `<h3 class="rich-section-title">استكشف</h3><div class="discover-bubbles">${['جميلة','أنواع','صور','فيديوهات','معلومات'].map(d => `<button class="discover-bubble" data-query="${escapeHTML(d+' '+q)}"><i class="fa-solid fa-magnifying-glass"></i> ${escapeHTML(d+' '+q)}</button>`).join('')}</div>`;
798
+ resultsEl.appendChild(rich);
799
+
800
+ rich.querySelectorAll('.discover-bubble').forEach(btn => {
801
+ btn.addEventListener('click', () => {
802
+ inputEl.value = btn.dataset.query;
803
+ document.getElementById('search-form').dispatchEvent(new Event('submit'));
804
+ });
805
+ });
806
+
807
+ const used = new Set([mainCard?.url, ...ytResults.map(r=>r.url)]);
808
+ results.filter(r=>!used.has(r.url)).forEach(r=>{
809
+ const d = getDomain(r.url);
810
+ const art = document.createElement('article');
811
+ art.className = 'search-result';
812
+ art.innerHTML = `<div class="favicon-wrap"><img src="${faviconURL(d)}" onerror="this.style.display='none';this.nextElementSibling.style.display='flex'" /><i class="fa-solid fa-globe fallback-icon" style="display:none"></i></div><div class="result-content"><div class="result-domain">${escapeHTML(d)}</div><a class="result-title" href="${escapeHTML(r.url)}" target="_blank">${escapeHTML(r.title)}</a><p class="result-snippet">${escapeHTML(r.content)}</p></div>`;
813
+ resultsEl.appendChild(art);
814
+ });
815
+ }
816
+
817
+ function renderAllImages(results) {
818
+ const wrap = document.createElement('div'); wrap.className = 'images-grid';
819
+ results.forEach(r => {
820
+ const raw = getBestImageUrl(r); if(!raw) return;
821
+ wrap.innerHTML += `<div class="image-card"><a class="image-card-link" href="${escapeHTML(r.url)}" target="_blank"><img src="${escapeHTML(proxyImage(raw))}" loading="lazy" onerror="this.style.display='none';this.nextElementSibling.style.display='flex'" /><div class="img-error-overlay"><i class="fa-solid fa-image-slash"></i></div></a><div class="image-info">${escapeHTML(r.title)}</div></div>`;
822
+ });
823
+ resultsEl.appendChild(wrap);
824
+ }
825
+
826
+ function renderAllVideos(results) {
827
+ const wrap = document.createElement('div'); wrap.className = 'videos-grid';
828
+ results.forEach(r => {
829
+ wrap.innerHTML += `<div class="video-card"><a href="${escapeHTML(r.url)}" target="_blank" class="video-thumb-wrap"><img src="${proxyImage(r.thumbnail)}" /><div class="play-overlay"><i class="fa-solid fa-play"></i></div></a><div class="video-details"><a class="video-title" href="${escapeHTML(r.url)}">${escapeHTML(r.title)}</a></div></div>`;
830
+ });
831
+ resultsEl.appendChild(wrap);
832
+ }
833
+
834
+ if (query) { inputEl.value = query; performSearch(query, currentTab); }
835
+ else { loadingEl.style.display = 'block'; loadingEl.classList.remove('spinning'); loadingEl.textContent = 'يرجى إدخال كلمة بحث للبدء.'; }
836
+
837
+ document.getElementById('search-form').addEventListener('submit', e => {
838
+ e.preventDefault(); const q = inputEl.value.trim(); if(!q) return;
839
+ window.history.pushState({}, '', `?q=${encodeURIComponent(q)}&tab=${currentTab}`);
840
+ query = q; performSearch(q, currentTab);
841
+ });
842
+
843
+ document.querySelectorAll('.tab-pill').forEach(btn => {
844
+ btn.addEventListener('click', () => {
845
+ const tab = btn.dataset.tab; if(tab===currentTab) return;
846
+ currentTab = tab; setActiveTab(tab);
847
+ window.history.pushState({}, '', `?q=${encodeURIComponent(query)}&tab=${tab}`);
848
+ if(query) performSearch(query, tab);
849
+ });
850
+ });
851
+ })();
852
+ </script>
853
  </body>
854
  </html>