jinruiyang Claude Opus 4.5 commited on
Commit
d201535
Β·
1 Parent(s): 197e031

Improve mobile responsiveness and add home link

Browse files

- Enlarge falcon icon on mobile home view (120px)
- Fix category dropdown clipping on mobile (remove overflow-hidden)
- Make dropdown options more compact for mobile
- Add clickable home link to title for navigation
- Improve mobile layout for search box, results, and feedback

πŸ€– Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Files changed (3) hide show
  1. frontend/css/styles.css +41 -4
  2. frontend/index.html +38 -35
  3. frontend/js/app.js +40 -22
frontend/css/styles.css CHANGED
@@ -6,6 +6,11 @@
6
  /* ============================================
7
  BASE STYLES
8
  ============================================ */
 
 
 
 
 
9
  body {
10
  /* Font stack: Roboto (EN), Noto Sans Arabic (AR), Noto Sans SC (CN) */
11
  font-family: 'Roboto', 'Noto Sans Arabic', 'Noto Sans SC', sans-serif;
@@ -299,18 +304,50 @@ body.home-view footer {
299
  }
300
 
301
  /* ============================================
302
- RESPONSIVE
303
  ============================================ */
304
  @media (max-width: 768px) {
305
  .falcon-icon {
306
- height: 70px;
307
  }
308
 
309
  .falcon-overlap-container {
310
- top: 50px;
311
  }
312
 
313
  body.home-view .falcon-overlap-container {
314
- top: calc(50% - 100px);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
315
  }
316
  }
 
6
  /* ============================================
7
  BASE STYLES
8
  ============================================ */
9
+ html, body {
10
+ overflow-x: hidden;
11
+ max-width: 100vw;
12
+ }
13
+
14
  body {
15
  /* Font stack: Roboto (EN), Noto Sans Arabic (AR), Noto Sans SC (CN) */
16
  font-family: 'Roboto', 'Noto Sans Arabic', 'Noto Sans SC', sans-serif;
 
304
  }
305
 
306
  /* ============================================
307
+ RESPONSIVE - MOBILE
308
  ============================================ */
309
  @media (max-width: 768px) {
310
  .falcon-icon {
311
+ height: 60px;
312
  }
313
 
314
  .falcon-overlap-container {
315
+ top: 45px;
316
  }
317
 
318
  body.home-view .falcon-overlap-container {
319
+ top: calc(50% - 130px);
320
+ }
321
+
322
+ body.home-view .falcon-icon {
323
+ height: 120px;
324
+ }
325
+
326
+ /* Search box lower on mobile home view */
327
+ #search-header.home-mode {
328
+ top: calc(50% + 30px);
329
+ }
330
+
331
+ /* Category dropdown full width on mobile */
332
+ .category-dropdown-menu {
333
+ left: 0;
334
+ right: 0;
335
+ width: 100%;
336
+ min-width: 100%;
337
+ border-radius: 0 0 8px 8px;
338
+ max-height: 50vh;
339
+ overflow-y: auto;
340
+ }
341
+
342
+ .category-option {
343
+ padding: 8px 12px;
344
+ font-size: 14px;
345
+ }
346
+
347
+ /* Modal full width on mobile */
348
+ .modal-content {
349
+ max-width: 95%;
350
+ max-height: 85vh;
351
+ margin: 0.5rem;
352
  }
353
  }
frontend/index.html CHANGED
@@ -36,24 +36,25 @@
36
  <!-- ========================================
37
  TOP GOLD BAR
38
  ======================================== -->
39
- <div class="gold-fade h-[60px] shadow-md relative z-20 flex items-center">
40
- <div class="container mx-auto max-w-5xl px-6 flex justify-between items-center text-emerald-950">
41
- <div class="flex items-center gap-3">
42
- <span class="text-4xl leading-none mt-2">πŸ‡¦πŸ‡ͺ</span>
43
- <h1 class="text-[20px] font-medium tracking-wide">UAE Knowledge System</h1>
44
- </div>
45
- <div class="flex items-center gap-4">
46
- <span id="stats-text" class="text-[16px] opacity-70">Loading...</span>
47
- <div class="flex gap-4 items-center">
 
48
  <!-- Language Toggle -->
49
- <div class="flex gap-1 text-[16px] font-medium">
50
- <button onclick="setLanguage('en')" id="lang-en" class="lang-toggle px-2 py-1 rounded hover:bg-white/20 transition">EN</button>
51
  <span class="opacity-40">|</span>
52
- <button onclick="setLanguage('ar')" id="lang-ar" class="lang-toggle px-2 py-1 rounded hover:bg-white/20 transition">AR</button>
53
  <span class="opacity-40">|</span>
54
- <button onclick="setLanguage('cn')" id="lang-cn" class="lang-toggle px-2 py-1 rounded hover:bg-white/20 transition">CN</button>
55
  </div>
56
- <button id="help-btn" class="text-[16px] font-medium uppercase hover:text-white transition">Help</button>
57
  </div>
58
  </div>
59
  </div>
@@ -70,18 +71,19 @@
70
  HEADER WITH SEARCH (centered on home, top after search)
71
  ======================================== -->
72
  <header id="search-header" class="home-mode relative z-10">
73
- <div class="container mx-auto max-w-5xl px-6 text-center">
74
- <div class="flex shadow-xl rounded-2xl h-12 bg-white relative z-10 border border-gray-200">
 
75
  <!-- Search Input -->
76
- <div class="flex-grow flex items-center px-6">
77
  <input type="text" id="search-input"
78
- class="w-full text-emerald-950 outline-none text-[18px]"
79
- placeholder="Ask about UAE governance, leadership, or policies...">
80
  </div>
81
 
82
  <!-- Category Dropdown -->
83
  <div class="category-dropdown relative">
84
- <button id="category-btn" class="bg-gray-50 flex items-center px-4 h-full text-emerald-800 text-[18px] font-normal ltr:border-l rtl:border-r hover:bg-gray-100 transition">
85
  <span id="category-text">Select Category</span>
86
  <span class="ml-2 opacity-40">β–Ό</span>
87
  </button>
@@ -98,14 +100,15 @@
98
  </div>
99
 
100
  <!-- Search Button -->
101
- <button id="search-btn" class="gold-fade hover:brightness-110 px-8 text-emerald-950 ltr:rounded-r-2xl rtl:rounded-l-2xl flex items-center justify-center transition">
102
  <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
103
  <path d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/>
104
  </svg>
 
105
  </button>
106
  </div>
107
- <p id="first-query-note" class="text-[14px] text-[#003d1c] mt-3 text-center">
108
- Note: First query may take a few seconds to load the index. Subsequent queries will be fast.
109
  </p>
110
  </div>
111
  </header>
@@ -113,30 +116,30 @@
113
  <!-- ========================================
114
  MAIN CONTENT (hidden until search)
115
  ======================================== -->
116
- <main id="results-section" class="container mx-auto max-w-5xl py-10 px-6 hidden">
117
  <!-- Results Header -->
118
- <div class="flex justify-between items-end border-b border-gray-200 pb-2 mb-8">
119
- <h2 class="text-emerald-900 font-medium text-[18px] tracking-widest flex items-center gap-3">
120
- <span class="text-xl">πŸ¦…</span> RETRIEVAL RESULTS
121
  </h2>
122
- <span id="results-count" class="text-emerald-700 font-medium text-[16px]">0 ITEMS FOUND</span>
123
  </div>
124
 
125
  <!-- Results Container -->
126
  <div id="results-container"></div>
127
 
128
  <!-- Feedback Section -->
129
- <div class="bg-[#F3EDE2]/50 rounded-lg border border-amber-600/10 px-8 py-5 mt-8 flex flex-col md:flex-row gap-6 items-center">
130
- <div id="feedback-label" class="flex items-center gap-3 text-emerald-900 text-[20px] font-medium uppercase tracking-wider">
131
  <span>πŸ’¬</span> FEEDBACK
132
  </div>
133
- <div class="flex-grow w-full">
134
  <input type="text" id="feedback-input"
135
- class="w-full bg-white border border-gray-200 rounded px-5 py-2 text-sm text-emerald-950 shadow-inner outline-none focus:border-amber-500"
136
- placeholder="Any comments about the results? (optional)">
137
  </div>
138
- <button id="submit-feedback-btn" class="bg-emerald-900 text-white text-[20px] px-8 py-2 font-medium rounded hover:bg-emerald-800 shadow-xl transition">
139
- Submit
140
  </button>
141
  </div>
142
  </main>
 
36
  <!-- ========================================
37
  TOP GOLD BAR
38
  ======================================== -->
39
+ <div class="gold-fade min-h-[50px] md:h-[60px] shadow-md relative z-20 flex items-center py-2 md:py-0">
40
+ <div class="container mx-auto max-w-5xl px-3 md:px-6 flex justify-between items-center text-emerald-950">
41
+ <a href="#" onclick="goHome(); return false;" class="flex items-center gap-2 md:gap-3 hover:opacity-80 transition cursor-pointer">
42
+ <span class="text-2xl md:text-4xl leading-none mt-1 md:mt-2">πŸ‡¦πŸ‡ͺ</span>
43
+ <h1 class="text-[14px] md:text-[20px] font-medium tracking-wide">UAE Knowledge System</h1>
44
+ </a>
45
+ <div class="flex items-center gap-2 md:gap-4">
46
+ <!-- Stats hidden on mobile -->
47
+ <span id="stats-text" class="hidden md:inline text-[16px] opacity-70">Loading...</span>
48
+ <div class="flex gap-2 md:gap-4 items-center">
49
  <!-- Language Toggle -->
50
+ <div class="flex gap-0.5 md:gap-1 text-[12px] md:text-[16px] font-medium">
51
+ <button onclick="setLanguage('en')" id="lang-en" class="lang-toggle px-1.5 md:px-2 py-1 rounded hover:bg-white/20 transition">EN</button>
52
  <span class="opacity-40">|</span>
53
+ <button onclick="setLanguage('ar')" id="lang-ar" class="lang-toggle px-1.5 md:px-2 py-1 rounded hover:bg-white/20 transition">AR</button>
54
  <span class="opacity-40">|</span>
55
+ <button onclick="setLanguage('cn')" id="lang-cn" class="lang-toggle px-1.5 md:px-2 py-1 rounded hover:bg-white/20 transition">CN</button>
56
  </div>
57
+ <button id="help-btn" class="text-[12px] md:text-[16px] font-medium uppercase hover:text-white transition">Help</button>
58
  </div>
59
  </div>
60
  </div>
 
71
  HEADER WITH SEARCH (centered on home, top after search)
72
  ======================================== -->
73
  <header id="search-header" class="home-mode relative z-10">
74
+ <div class="container mx-auto max-w-5xl px-3 md:px-6 text-center">
75
+ <!-- Mobile: vertical stack, Desktop: horizontal -->
76
+ <div class="flex flex-col md:flex-row shadow-xl rounded-xl md:rounded-2xl bg-white relative z-10 border border-gray-200">
77
  <!-- Search Input -->
78
+ <div class="flex-grow flex items-center px-4 md:px-6 border-b md:border-b-0 md:border-r border-gray-100">
79
  <input type="text" id="search-input"
80
+ class="w-full text-emerald-950 outline-none text-[16px] md:text-[18px] py-3 md:py-0"
81
+ placeholder="Ask about UAE...">
82
  </div>
83
 
84
  <!-- Category Dropdown -->
85
  <div class="category-dropdown relative">
86
+ <button id="category-btn" class="w-full md:w-auto bg-gray-50 flex items-center justify-between md:justify-start px-4 py-3 md:py-0 md:h-12 text-emerald-800 text-[14px] md:text-[18px] font-normal hover:bg-gray-100 transition border-b md:border-b-0 border-gray-100">
87
  <span id="category-text">Select Category</span>
88
  <span class="ml-2 opacity-40">β–Ό</span>
89
  </button>
 
100
  </div>
101
 
102
  <!-- Search Button -->
103
+ <button id="search-btn" class="gold-fade hover:brightness-110 px-8 py-3 md:py-0 text-emerald-950 md:rounded-r-2xl flex items-center justify-center transition">
104
  <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
105
  <path d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/>
106
  </svg>
107
+ <span class="ml-2 md:hidden font-medium">Search</span>
108
  </button>
109
  </div>
110
+ <p id="first-query-note" class="text-[12px] md:text-[14px] text-[#003d1c] mt-3 text-center px-2">
111
+ Note: First query may take a few seconds to load the index.
112
  </p>
113
  </div>
114
  </header>
 
116
  <!-- ========================================
117
  MAIN CONTENT (hidden until search)
118
  ======================================== -->
119
+ <main id="results-section" class="container mx-auto max-w-5xl py-6 md:py-10 px-3 md:px-6 hidden">
120
  <!-- Results Header -->
121
+ <div class="flex flex-col sm:flex-row justify-between items-start sm:items-end gap-2 border-b border-gray-200 pb-2 mb-6 md:mb-8">
122
+ <h2 class="text-emerald-900 font-medium text-[14px] md:text-[18px] tracking-widest flex items-center gap-2 md:gap-3">
123
+ <span class="text-lg md:text-xl">πŸ¦…</span> RETRIEVAL RESULTS
124
  </h2>
125
+ <span id="results-count" class="text-emerald-700 font-medium text-[12px] md:text-[16px]">0 ITEMS FOUND</span>
126
  </div>
127
 
128
  <!-- Results Container -->
129
  <div id="results-container"></div>
130
 
131
  <!-- Feedback Section -->
132
+ <div class="bg-[#F3EDE2]/50 rounded-lg border border-amber-600/10 px-4 md:px-8 py-4 md:py-5 mt-6 md:mt-8 flex flex-col gap-4 md:gap-6">
133
+ <div id="feedback-label" class="flex items-center gap-2 md:gap-3 text-emerald-900 text-[16px] md:text-[20px] font-medium uppercase tracking-wider">
134
  <span>πŸ’¬</span> FEEDBACK
135
  </div>
136
+ <div class="w-full">
137
  <input type="text" id="feedback-input"
138
+ class="w-full bg-white border border-gray-200 rounded px-4 md:px-5 py-3 md:py-2 text-[16px] md:text-sm text-emerald-950 shadow-inner outline-none focus:border-amber-500"
139
+ placeholder="Any comments? (optional)">
140
  </div>
141
+ <button id="submit-feedback-btn" class="w-full md:w-auto bg-emerald-900 text-white text-[16px] md:text-[20px] px-8 py-3 md:py-2 font-medium rounded hover:bg-emerald-800 shadow-xl transition">
142
+ Submit Feedback
143
  </button>
144
  </div>
145
  </main>
frontend/js/app.js CHANGED
@@ -556,32 +556,32 @@ function renderResults() {
556
  const content = getResultContent(result, index);
557
 
558
  return `
559
- <div class="bg-white rounded overflow-hidden shadow-xl border border-gray-200 result-card mb-6" data-index="${index}">
560
  <!-- Card Header -->
561
- <div class="px-6 py-3 flex justify-between items-center text-white border-b-4 border-amber-500 bg-[#003d1c]">
562
- <div class="text-[18px] font-medium flex items-center gap-4">
563
  <span class="text-amber-400">${index === 0 ? 'πŸ¦…' : 'πŸ“„'}</span>
564
  #${index + 1} ${escapeHtml(content.entityName)}
565
  </div>
566
- <div class="text-[16px] font-medium gold-button-slender text-emerald-950 px-4 rounded shadow-sm">
567
  ${t('rankScore')}: ${result.score.toFixed(2)} β–²
568
  </div>
569
  </div>
570
 
571
  <!-- Card Body -->
572
- <div class="p-8">
573
- <div class="flex flex-col md:flex-row gap-12">
574
  <!-- Summary -->
575
- <div class="flex-1 summary-box p-6">
576
- <p class="text-[18px] leading-7 text-emerald-900">
577
  ${escapeHtml(content.summary || t('noResults'))}
578
  </p>
579
  </div>
580
 
581
  <!-- Must-Know Facts -->
582
  <div class="w-full md:w-[38%] pt-1">
583
- <h4 class="text-emerald-800 font-medium text-[18px] mb-4">${t('mustKnowFacts')}</h4>
584
- <ul class="text-[18px] space-y-3 text-emerald-800/80">
585
  ${content.facts.slice(0, 5).map(fact => `
586
  <li>β€’ ${escapeHtml(fact)}</li>
587
  `).join('')}
@@ -590,12 +590,12 @@ function renderResults() {
590
  </div>
591
 
592
  <!-- Rating Row -->
593
- <div class="mt-8 border-t border-gray-50 pt-6 flex justify-between items-center">
594
- <div class="flex items-center gap-12">
595
  <!-- Relevance Rating -->
596
- <div class="flex items-center gap-3">
597
- <span class="text-[16px] font-medium text-gray-400 tracking-wider">${t('relevance')}</span>
598
- <div class="flex gap-2 text-xl">
599
  <button class="rating-btn ${state.ratings[index]?.relevance === 0 ? 'active' : ''}"
600
  onclick="setRating(${index}, 'relevance', 0)">😐</button>
601
  <button class="rating-btn ${state.ratings[index]?.relevance === 1 ? 'active' : ''}"
@@ -604,9 +604,9 @@ function renderResults() {
604
  </div>
605
 
606
  <!-- Helpful Rating -->
607
- <div class="flex items-center gap-3">
608
- <span class="text-[16px] font-medium text-gray-400 tracking-wider">${t('helpful')}</span>
609
- <div class="flex gap-2 text-lg">
610
  <button class="rating-btn ${state.ratings[index]?.helpful === true ? 'active' : ''}"
611
  onclick="setRating(${index}, 'helpful', true)">πŸ‘</button>
612
  <button class="rating-btn ${state.ratings[index]?.helpful === false ? 'active' : ''}"
@@ -616,16 +616,16 @@ function renderResults() {
616
  </div>
617
 
618
  <!-- Detailed Analysis Button -->
619
- <button class="gold-button-slender text-emerald-950 text-[16px] px-6 font-medium rounded shadow-md"
620
  onclick="toggleDetails(${index})">
621
  ${t('viewEntity')}
622
  </button>
623
  </div>
624
 
625
  <!-- Detailed Analysis Panel (hidden by default) -->
626
- <div id="details-${index}" class="hidden mt-6 pt-6 border-t border-gray-100">
627
- <h4 class="text-emerald-800 font-medium text-[16px] mb-4">${t('entityData')}</h4>
628
- <pre class="bg-gray-50 p-4 rounded text-[18px] overflow-x-auto text-gray-700 border border-gray-200 max-h-[500px] overflow-y-auto">${escapeHtml(JSON.stringify(result.full_entity || result, null, 2))}</pre>
629
  </div>
630
  </div>
631
  </div>
@@ -1028,6 +1028,24 @@ document.addEventListener('DOMContentLoaded', () => {
1028
  setTimeout(() => updateLanguage(), 100);
1029
  });
1030
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1031
  // Export for global access
1032
  window.selectCategory = selectCategory;
1033
  window.translateResults = translateResults;
 
556
  const content = getResultContent(result, index);
557
 
558
  return `
559
+ <div class="bg-white rounded shadow-xl border border-gray-200 result-card mb-4 md:mb-6 overflow-x-hidden" data-index="${index}">
560
  <!-- Card Header -->
561
+ <div class="px-4 md:px-6 py-2 md:py-3 flex flex-col sm:flex-row justify-between sm:items-center gap-2 text-white border-b-4 border-amber-500 bg-[#003d1c]">
562
+ <div class="text-[14px] md:text-[18px] font-medium flex items-center gap-2 md:gap-4">
563
  <span class="text-amber-400">${index === 0 ? 'πŸ¦…' : 'πŸ“„'}</span>
564
  #${index + 1} ${escapeHtml(content.entityName)}
565
  </div>
566
+ <div class="text-[12px] md:text-[16px] font-medium gold-button-slender text-emerald-950 px-3 md:px-4 rounded shadow-sm self-start sm:self-auto">
567
  ${t('rankScore')}: ${result.score.toFixed(2)} β–²
568
  </div>
569
  </div>
570
 
571
  <!-- Card Body -->
572
+ <div class="p-4 md:p-8">
573
+ <div class="flex flex-col md:flex-row gap-6 md:gap-12">
574
  <!-- Summary -->
575
+ <div class="flex-1 summary-box p-4 md:p-6">
576
+ <p class="text-[14px] md:text-[18px] leading-6 md:leading-7 text-emerald-900">
577
  ${escapeHtml(content.summary || t('noResults'))}
578
  </p>
579
  </div>
580
 
581
  <!-- Must-Know Facts -->
582
  <div class="w-full md:w-[38%] pt-1">
583
+ <h4 class="text-emerald-800 font-medium text-[14px] md:text-[18px] mb-3 md:mb-4">${t('mustKnowFacts')}</h4>
584
+ <ul class="text-[14px] md:text-[18px] space-y-2 md:space-y-3 text-emerald-800/80">
585
  ${content.facts.slice(0, 5).map(fact => `
586
  <li>β€’ ${escapeHtml(fact)}</li>
587
  `).join('')}
 
590
  </div>
591
 
592
  <!-- Rating Row -->
593
+ <div class="mt-6 md:mt-8 border-t border-gray-50 pt-4 md:pt-6 flex flex-col gap-4">
594
+ <div class="flex flex-wrap items-center gap-4 md:gap-12">
595
  <!-- Relevance Rating -->
596
+ <div class="flex items-center gap-2 md:gap-3">
597
+ <span class="text-[12px] md:text-[16px] font-medium text-gray-400 tracking-wider">${t('relevance')}</span>
598
+ <div class="flex gap-2 text-lg md:text-xl">
599
  <button class="rating-btn ${state.ratings[index]?.relevance === 0 ? 'active' : ''}"
600
  onclick="setRating(${index}, 'relevance', 0)">😐</button>
601
  <button class="rating-btn ${state.ratings[index]?.relevance === 1 ? 'active' : ''}"
 
604
  </div>
605
 
606
  <!-- Helpful Rating -->
607
+ <div class="flex items-center gap-2 md:gap-3">
608
+ <span class="text-[12px] md:text-[16px] font-medium text-gray-400 tracking-wider">${t('helpful')}</span>
609
+ <div class="flex gap-2 text-base md:text-lg">
610
  <button class="rating-btn ${state.ratings[index]?.helpful === true ? 'active' : ''}"
611
  onclick="setRating(${index}, 'helpful', true)">πŸ‘</button>
612
  <button class="rating-btn ${state.ratings[index]?.helpful === false ? 'active' : ''}"
 
616
  </div>
617
 
618
  <!-- Detailed Analysis Button -->
619
+ <button class="gold-button-slender text-emerald-950 text-[14px] md:text-[16px] px-4 md:px-6 py-2 font-medium rounded shadow-md w-full"
620
  onclick="toggleDetails(${index})">
621
  ${t('viewEntity')}
622
  </button>
623
  </div>
624
 
625
  <!-- Detailed Analysis Panel (hidden by default) -->
626
+ <div id="details-${index}" class="hidden mt-4 md:mt-6 pt-4 md:pt-6 border-t border-gray-100">
627
+ <h4 class="text-emerald-800 font-medium text-[14px] md:text-[16px] mb-3 md:mb-4">${t('entityData')}</h4>
628
+ <pre class="bg-gray-50 p-3 md:p-4 rounded text-[12px] md:text-[14px] overflow-x-auto text-gray-700 border border-gray-200 max-h-[300px] md:max-h-[500px] overflow-y-auto">${escapeHtml(JSON.stringify(result.full_entity || result, null, 2))}</pre>
629
  </div>
630
  </div>
631
  </div>
 
1028
  setTimeout(() => updateLanguage(), 100);
1029
  });
1030
 
1031
+ // Go to home page
1032
+ window.goHome = function() {
1033
+ // Reset state
1034
+ state.currentQuery = '';
1035
+ state.currentCategory = null;
1036
+ state.results = [];
1037
+ state.ratings = {};
1038
+ state.translatedResults = {};
1039
+ state.showOriginal = false;
1040
+
1041
+ // Clear inputs
1042
+ if (DOM.searchInput) DOM.searchInput.value = '';
1043
+ if (DOM.categoryText) DOM.categoryText.textContent = t('selectCategory');
1044
+
1045
+ // Switch to home mode
1046
+ switchToHomeMode();
1047
+ };
1048
+
1049
  // Export for global access
1050
  window.selectCategory = selectCategory;
1051
  window.translateResults = translateResults;