@hanzo/browser-extension 1.9.34 → 1.9.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/package.json +1 -1
  2. package/src/answer/AnswerEngine.tsx +8 -0
  3. package/src/onboarding.css +78 -0
  4. package/src/onboarding.html +45 -0
  5. package/src/popup.html +28 -0
  6. package/dist/browser-extension/README.md +0 -43
  7. package/dist/browser-extension/background-firefox.js +0 -5983
  8. package/dist/browser-extension/background.js +0 -8670
  9. package/dist/browser-extension/browser-control.js +0 -1317
  10. package/dist/browser-extension/chrome/ai-worker.js +0 -571
  11. package/dist/browser-extension/chrome/background.js +0 -8670
  12. package/dist/browser-extension/chrome/callback.html +0 -17
  13. package/dist/browser-extension/chrome/content-script.js +0 -2789
  14. package/dist/browser-extension/chrome/icon128.png +0 -0
  15. package/dist/browser-extension/chrome/icon16.png +0 -0
  16. package/dist/browser-extension/chrome/icon48.png +0 -0
  17. package/dist/browser-extension/chrome/manifest.json +0 -81
  18. package/dist/browser-extension/chrome/newtab.css +0 -277
  19. package/dist/browser-extension/chrome/newtab.html +0 -13
  20. package/dist/browser-extension/chrome/newtab.js +0 -64
  21. package/dist/browser-extension/chrome/popup.css +0 -761
  22. package/dist/browser-extension/chrome/popup.html +0 -381
  23. package/dist/browser-extension/chrome/popup.js +0 -1716
  24. package/dist/browser-extension/chrome/sidebar.css +0 -1792
  25. package/dist/browser-extension/chrome/sidebar.html +0 -463
  26. package/dist/browser-extension/chrome/sidebar.js +0 -26541
  27. package/dist/browser-extension/cli.js +0 -233
  28. package/dist/browser-extension/content-script.js +0 -2789
  29. package/dist/browser-extension/firefox/ai-worker.js +0 -571
  30. package/dist/browser-extension/firefox/background.js +0 -5983
  31. package/dist/browser-extension/firefox/callback.html +0 -17
  32. package/dist/browser-extension/firefox/content-script.js +0 -2789
  33. package/dist/browser-extension/firefox/icon128.png +0 -0
  34. package/dist/browser-extension/firefox/icon16.png +0 -0
  35. package/dist/browser-extension/firefox/icon48.png +0 -0
  36. package/dist/browser-extension/firefox/manifest.json +0 -85
  37. package/dist/browser-extension/firefox/newtab.css +0 -277
  38. package/dist/browser-extension/firefox/newtab.html +0 -13
  39. package/dist/browser-extension/firefox/newtab.js +0 -64
  40. package/dist/browser-extension/firefox/popup.css +0 -761
  41. package/dist/browser-extension/firefox/popup.html +0 -381
  42. package/dist/browser-extension/firefox/popup.js +0 -1716
  43. package/dist/browser-extension/firefox/sidebar.css +0 -1792
  44. package/dist/browser-extension/firefox/sidebar.html +0 -463
  45. package/dist/browser-extension/firefox/sidebar.js +0 -26541
  46. package/dist/browser-extension/icon128.png +0 -0
  47. package/dist/browser-extension/icon16.png +0 -0
  48. package/dist/browser-extension/icon48.png +0 -0
  49. package/dist/browser-extension/manifest.json +0 -81
  50. package/dist/browser-extension/newtab.js +0 -64
  51. package/dist/browser-extension/package.json +0 -41
  52. package/dist/browser-extension/popup.js +0 -1716
  53. package/dist/browser-extension/safari/Info.plist +0 -21
  54. package/dist/browser-extension/safari/ai-worker.js +0 -571
  55. package/dist/browser-extension/safari/background.js +0 -8670
  56. package/dist/browser-extension/safari/callback.html +0 -17
  57. package/dist/browser-extension/safari/content-script.js +0 -2789
  58. package/dist/browser-extension/safari/icon128.png +0 -0
  59. package/dist/browser-extension/safari/icon16.png +0 -0
  60. package/dist/browser-extension/safari/icon48.png +0 -0
  61. package/dist/browser-extension/safari/newtab.css +0 -277
  62. package/dist/browser-extension/safari/newtab.html +0 -13
  63. package/dist/browser-extension/safari/newtab.js +0 -64
  64. package/dist/browser-extension/safari/popup.css +0 -761
  65. package/dist/browser-extension/safari/popup.html +0 -381
  66. package/dist/browser-extension/safari/popup.js +0 -1716
  67. package/dist/browser-extension/safari/sidebar.css +0 -1792
  68. package/dist/browser-extension/safari/sidebar.html +0 -463
  69. package/dist/browser-extension/safari/sidebar.js +0 -26541
  70. package/dist/browser-extension/sidebar.js +0 -26541
  71. package/dist/browser-extension/webgpu-ai.js +0 -568
@@ -1,761 +0,0 @@
1
- /* Hanzo AI Browser Extension Popup — @hanzo/gui dark theme, monochrome */
2
-
3
- :root {
4
- --primary: #fafafa;
5
- --primary-dark: #d4d4d4;
6
- --bg: #0a0a0a;
7
- --surface: #0f0f0f;
8
- --surface-light: #171717;
9
- --text: #fafafa;
10
- --text-secondary: #a3a3a3;
11
- --text-dim: #666666;
12
- --border: rgba(255,255,255,0.10);
13
- --border-strong: rgba(255,255,255,0.16);
14
- --glass: rgba(255,255,255,0.04);
15
- --glass-strong: rgba(255,255,255,0.07);
16
- /* Status: monochrome by hue per @hanzo/brand (white luminance scale). */
17
- --success: #fafafa;
18
- --warning: #d4d4d4;
19
- --error: rgba(255,255,255,0.55);
20
- --link: #a3a3a3;
21
- --link-hover: #fafafa;
22
- --radius: 10px;
23
- --radius-md: 8px;
24
- --radius-sm: 6px;
25
- }
26
-
27
- * {
28
- margin: 0;
29
- padding: 0;
30
- box-sizing: border-box;
31
- }
32
-
33
- body {
34
- width: 360px;
35
- font-family: 'Geist Sans', -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', sans-serif;
36
- background: var(--bg);
37
- color: var(--text);
38
- font-size: 13px;
39
- line-height: 1.5;
40
- -webkit-font-smoothing: antialiased;
41
- -moz-osx-font-smoothing: grayscale;
42
- }
43
-
44
- .container {
45
- background: var(--surface);
46
- min-height: 480px;
47
- position: relative;
48
- }
49
-
50
- /* Ambient glow */
51
- .container::before {
52
- content: '';
53
- position: absolute;
54
- top: 0;
55
- left: 0;
56
- right: 0;
57
- height: 100px;
58
- background: radial-gradient(ellipse at 50% 0%, rgba(255,255,255,0.03) 0%, transparent 70%);
59
- pointer-events: none;
60
- }
61
-
62
- /* Animations */
63
- @keyframes fadeIn {
64
- from { opacity: 0; transform: translateY(4px); }
65
- to { opacity: 1; transform: translateY(0); }
66
- }
67
-
68
- @keyframes shimmer {
69
- 0% { background-position: -200% 0; }
70
- 100% { background-position: 200% 0; }
71
- }
72
-
73
- @keyframes pulse {
74
- 0% { opacity: 1; }
75
- 50% { opacity: 0.5; }
76
- 100% { opacity: 1; }
77
- }
78
-
79
- @keyframes glowPulse {
80
- 0%, 100% { box-shadow: 0 0 0 0 rgba(255,255,255,0); }
81
- 50% { box-shadow: 0 0 8px 1px rgba(255,255,255,0.05); }
82
- }
83
-
84
- /* Header */
85
- header {
86
- display: flex;
87
- align-items: center;
88
- gap: 10px;
89
- padding: 14px 16px;
90
- border-bottom: 1px solid var(--border);
91
- background: rgba(0,0,0,0.6);
92
- backdrop-filter: blur(20px) saturate(180%);
93
- -webkit-backdrop-filter: blur(20px) saturate(180%);
94
- position: relative;
95
- z-index: 10;
96
- }
97
-
98
- .logo {
99
- width: 22px;
100
- height: 22px;
101
- color: var(--text);
102
- filter: drop-shadow(0 0 4px rgba(255,255,255,0.12));
103
- }
104
-
105
- h1 {
106
- font-size: 16px;
107
- font-weight: 600;
108
- letter-spacing: -0.01em;
109
- }
110
-
111
- h2 {
112
- font-size: 15px;
113
- font-weight: 600;
114
- margin-bottom: 6px;
115
- }
116
-
117
- h3 {
118
- font-size: 12px;
119
- font-weight: 600;
120
- text-transform: uppercase;
121
- letter-spacing: 0.04em;
122
- color: var(--text-secondary);
123
- margin-bottom: 10px;
124
- }
125
-
126
- /* Sections */
127
- .section {
128
- padding: 16px;
129
- animation: fadeIn 0.3s ease;
130
- }
131
-
132
- .section.hidden,
133
- .hidden {
134
- display: none;
135
- }
136
-
137
- .subtitle {
138
- color: var(--text-dim);
139
- margin-bottom: 16px;
140
- font-size: 13px;
141
- }
142
-
143
- /* Login Card */
144
- .login-section {
145
- display: flex;
146
- align-items: center;
147
- justify-content: center;
148
- min-height: 380px;
149
- padding: 32px 24px;
150
- }
151
-
152
- .login-card {
153
- text-align: center;
154
- max-width: 280px;
155
- width: 100%;
156
- }
157
-
158
- .login-logo {
159
- width: 48px;
160
- height: 48px;
161
- color: var(--text);
162
- margin: 0 auto 20px;
163
- display: block;
164
- filter: drop-shadow(0 0 10px rgba(255, 255, 255, 0.12));
165
- }
166
-
167
- .login-headline {
168
- font-size: 20px;
169
- font-weight: 700;
170
- color: var(--text);
171
- margin-bottom: 8px;
172
- letter-spacing: -0.02em;
173
- }
174
-
175
- .login-sub {
176
- font-size: 13px;
177
- color: var(--text-secondary);
178
- margin-bottom: 24px;
179
- line-height: 1.5;
180
- }
181
-
182
- .login-signin-btn {
183
- width: 100%;
184
- padding: 12px 20px;
185
- background: #FFFFFF;
186
- color: #000000;
187
- border: none;
188
- border-radius: 10px;
189
- font-size: 14px;
190
- font-weight: 600;
191
- cursor: pointer;
192
- transition: all 0.2s;
193
- margin-bottom: 10px;
194
- position: relative;
195
- overflow: hidden;
196
- letter-spacing: -0.01em;
197
- }
198
-
199
- .login-signin-btn::after {
200
- content: '';
201
- position: absolute;
202
- top: 0;
203
- left: -100%;
204
- width: 100%;
205
- height: 100%;
206
- background: linear-gradient(90deg, transparent, rgba(255,255,255,0.15), transparent);
207
- transition: left 0.5s ease;
208
- }
209
-
210
- .login-signin-btn:hover {
211
- background: #E0E0E0;
212
- box-shadow: 0 0 16px rgba(255, 255, 255, 0.1);
213
- }
214
-
215
- .login-signin-btn:hover::after {
216
- left: 100%;
217
- }
218
-
219
- .login-signin-btn:disabled {
220
- opacity: 0.6;
221
- cursor: not-allowed;
222
- }
223
-
224
- .login-create-btn {
225
- width: 100%;
226
- padding: 10px 20px;
227
- background: transparent;
228
- color: var(--text-secondary);
229
- border: none;
230
- border-radius: 10px;
231
- font-size: 13px;
232
- font-weight: 500;
233
- cursor: pointer;
234
- transition: all 0.2s;
235
- margin-bottom: 16px;
236
- }
237
-
238
- .login-create-btn:hover {
239
- color: var(--text);
240
- background: rgba(255, 255, 255, 0.06);
241
- }
242
-
243
- .login-note {
244
- font-size: 11px;
245
- color: var(--text-dim);
246
- line-height: 1.5;
247
- }
248
-
249
- .login-note a {
250
- color: var(--text-secondary);
251
- text-decoration: underline;
252
- text-underline-offset: 2px;
253
- }
254
-
255
- .login-note a:hover {
256
- color: var(--text);
257
- }
258
-
259
- /* Buttons */
260
- .btn {
261
- display: flex;
262
- align-items: center;
263
- justify-content: center;
264
- gap: 8px;
265
- width: 100%;
266
- padding: 10px 14px;
267
- border: none;
268
- border-radius: 8px;
269
- font-size: 13px;
270
- font-weight: 500;
271
- cursor: pointer;
272
- transition: all 0.2s ease;
273
- position: relative;
274
- overflow: hidden;
275
- }
276
-
277
- .btn:disabled {
278
- opacity: 0.5;
279
- cursor: not-allowed;
280
- }
281
-
282
- .btn-primary {
283
- background: var(--primary);
284
- color: #000000;
285
- font-weight: 600;
286
- }
287
-
288
- /* Shimmer sweep */
289
- .btn-primary::after {
290
- content: '';
291
- position: absolute;
292
- top: 0;
293
- left: -100%;
294
- width: 100%;
295
- height: 100%;
296
- background: linear-gradient(90deg, transparent, rgba(255,255,255,0.15), transparent);
297
- transition: left 0.5s ease;
298
- }
299
-
300
- .btn-primary:hover {
301
- background: var(--primary-dark);
302
- box-shadow: 0 0 12px rgba(255,255,255,0.1);
303
- }
304
-
305
- .btn-primary:hover::after {
306
- left: 100%;
307
- }
308
-
309
- .btn-secondary {
310
- background: var(--glass-strong);
311
- color: var(--text);
312
- border: 1px solid var(--border);
313
- }
314
-
315
- .btn-secondary:hover {
316
- background: rgba(255,255,255,0.1);
317
- border-color: var(--border-strong);
318
- }
319
-
320
- .btn-ghost {
321
- background: transparent;
322
- color: var(--text-secondary);
323
- border: 1px solid var(--border);
324
- }
325
-
326
- .btn-ghost:hover {
327
- color: var(--text);
328
- border-color: var(--border-strong);
329
- background: var(--glass);
330
- }
331
-
332
- .btn-icon {
333
- width: 28px;
334
- height: 28px;
335
- padding: 0;
336
- display: flex;
337
- align-items: center;
338
- justify-content: center;
339
- background: transparent;
340
- border: none;
341
- border-radius: 6px;
342
- cursor: pointer;
343
- transition: all 0.2s;
344
- color: var(--text-dim);
345
- }
346
-
347
- .btn-icon:hover {
348
- background: var(--glass-strong);
349
- color: var(--text);
350
- }
351
-
352
- .btn-icon svg {
353
- width: 16px;
354
- height: 16px;
355
- stroke-width: 1.5;
356
- }
357
-
358
- .icon {
359
- width: 16px;
360
- height: 16px;
361
- }
362
-
363
- /* User Info */
364
- .user-info {
365
- display: flex;
366
- align-items: center;
367
- gap: 10px;
368
- padding: 12px;
369
- background: var(--glass-strong);
370
- border: 1px solid var(--border);
371
- border-radius: 8px;
372
- }
373
-
374
- .avatar {
375
- width: 34px;
376
- height: 34px;
377
- border-radius: 50%;
378
- background: var(--border);
379
- border: 1px solid var(--border);
380
- }
381
-
382
- .user-info > div {
383
- flex: 1;
384
- }
385
-
386
- .user-name {
387
- font-weight: 600;
388
- font-size: 13px;
389
- }
390
-
391
- .user-email {
392
- font-size: 11px;
393
- color: var(--text-dim);
394
- }
395
-
396
- /* Tools Grid */
397
- .tools-grid {
398
- display: grid;
399
- grid-template-columns: repeat(3, 1fr);
400
- gap: 6px;
401
- margin-bottom: 4px;
402
- }
403
-
404
- .tool-btn {
405
- display: flex;
406
- flex-direction: column;
407
- align-items: center;
408
- justify-content: center;
409
- gap: 4px;
410
- padding: 10px 4px;
411
- background: var(--glass);
412
- border: 1px solid var(--border);
413
- border-radius: 8px;
414
- color: var(--text-secondary);
415
- font-size: 10px;
416
- cursor: pointer;
417
- transition: all 0.2s ease;
418
- position: relative;
419
- overflow: hidden;
420
- }
421
-
422
- .tool-btn svg {
423
- width: 18px;
424
- height: 18px;
425
- flex-shrink: 0;
426
- }
427
-
428
- .tool-btn:hover {
429
- color: var(--text);
430
- background: var(--glass-strong);
431
- border-color: var(--border-strong);
432
- }
433
-
434
- .tool-btn:active {
435
- transform: scale(0.96);
436
- }
437
-
438
- .tool-btn.active {
439
- color: var(--text);
440
- background: rgba(255,255,255,0.1);
441
- border-color: var(--text);
442
- box-shadow: 0 0 8px rgba(255,255,255,0.06);
443
- }
444
-
445
- .tool-btn:disabled {
446
- opacity: 0.4;
447
- cursor: not-allowed;
448
- }
449
-
450
- .tool-btn .tool-feedback {
451
- position: absolute;
452
- inset: 0;
453
- display: flex;
454
- align-items: center;
455
- justify-content: center;
456
- background: rgba(76, 175, 80, 0.9);
457
- color: #fff;
458
- font-size: 11px;
459
- font-weight: 600;
460
- border-radius: 7px;
461
- animation: fadeIn 0.15s ease;
462
- }
463
-
464
- /* Features — compact toggles */
465
- .features {
466
- display: flex;
467
- flex-direction: column;
468
- gap: 2px;
469
- }
470
-
471
- .feature-toggle label {
472
- display: flex;
473
- align-items: center;
474
- gap: 10px;
475
- padding: 8px 10px;
476
- background: transparent;
477
- border: none;
478
- border-radius: 6px;
479
- cursor: pointer;
480
- transition: all 0.15s;
481
- }
482
-
483
- .feature-toggle label:hover {
484
- background: var(--glass-strong);
485
- }
486
-
487
- .feature-toggle input {
488
- display: none;
489
- }
490
-
491
- .toggle {
492
- position: relative;
493
- width: 32px;
494
- height: 18px;
495
- background: rgba(255,255,255,0.12);
496
- border-radius: 9px;
497
- transition: background 0.25s;
498
- flex-shrink: 0;
499
- }
500
-
501
- .toggle::after {
502
- content: '';
503
- position: absolute;
504
- top: 2px;
505
- left: 2px;
506
- width: 14px;
507
- height: 14px;
508
- background: #888;
509
- border-radius: 50%;
510
- transition: all 0.25s;
511
- box-shadow: 0 1px 3px rgba(0,0,0,0.3);
512
- }
513
-
514
- input:checked + .toggle {
515
- background: var(--text);
516
- }
517
-
518
- input:checked + .toggle::after {
519
- transform: translateX(14px);
520
- background: #000;
521
- }
522
-
523
- .feature-info {
524
- flex: 1;
525
- }
526
-
527
- .feature-info strong {
528
- font-size: 13px;
529
- font-weight: 500;
530
- }
531
-
532
- .feature-info small {
533
- display: block;
534
- color: var(--text-dim);
535
- font-size: 11px;
536
- line-height: 1.3;
537
- }
538
-
539
- /* Status */
540
- .status {
541
- display: flex;
542
- flex-direction: column;
543
- gap: 8px;
544
- }
545
-
546
- .status-item {
547
- display: flex;
548
- align-items: center;
549
- gap: 8px;
550
- font-size: 12px;
551
- }
552
-
553
- .status-dot {
554
- width: 6px;
555
- height: 6px;
556
- border-radius: 50%;
557
- background: rgba(255,255,255,0.12);
558
- transition: all 0.3s;
559
- flex-shrink: 0;
560
- }
561
-
562
- .status-dot.connected {
563
- background: var(--success);
564
- box-shadow: 0 0 6px rgba(76, 175, 80, 0.3);
565
- }
566
-
567
- .status-dot.warning {
568
- background: var(--warning);
569
- box-shadow: 0 0 6px rgba(255, 193, 7, 0.2);
570
- }
571
-
572
- .status-dot.error {
573
- background: var(--error);
574
- box-shadow: 0 0 6px rgba(244, 67, 54, 0.2);
575
- }
576
-
577
- .status-dot.connecting {
578
- animation: pulse 1.5s infinite;
579
- }
580
-
581
- .status-detail {
582
- margin-left: auto;
583
- font-size: 11px;
584
- color: var(--text-dim);
585
- }
586
-
587
- /* Actions */
588
- .actions {
589
- display: flex;
590
- gap: 8px;
591
- }
592
-
593
- .actions .btn {
594
- flex: 1;
595
- font-size: 12px;
596
- padding: 8px 12px;
597
- }
598
-
599
- /* Guide */
600
- .guide {
601
- background: var(--glass);
602
- border: 1px solid var(--border);
603
- padding: 12px;
604
- border-radius: 8px;
605
- }
606
-
607
- .guide h3 {
608
- margin-bottom: 6px;
609
- }
610
-
611
- .guide p {
612
- font-size: 11px;
613
- color: var(--text-dim);
614
- margin-bottom: 3px;
615
- }
616
-
617
- kbd {
618
- display: inline-block;
619
- padding: 1px 5px;
620
- background: rgba(255,255,255,0.06);
621
- border: 1px solid var(--border);
622
- border-radius: 3px;
623
- font-family: 'Geist Mono', 'Menlo', monospace;
624
- font-size: 10px;
625
- }
626
-
627
- /* Settings */
628
- .settings-header {
629
- display: flex;
630
- align-items: center;
631
- gap: 10px;
632
- margin-bottom: 16px;
633
- }
634
-
635
- .settings-header h2 {
636
- margin: 0;
637
- }
638
-
639
- .setting-group {
640
- margin-bottom: 20px;
641
- }
642
-
643
- .setting-group label {
644
- display: block;
645
- margin-bottom: 10px;
646
- color: var(--text-dim);
647
- font-size: 12px;
648
- }
649
-
650
- .setting-group input[type="text"],
651
- .setting-group input[type="number"],
652
- .setting-group select {
653
- width: 100%;
654
- padding: 7px 10px;
655
- background: var(--glass-strong);
656
- border: 1px solid var(--border);
657
- border-radius: 6px;
658
- color: var(--text);
659
- font-size: 13px;
660
- margin-top: 4px;
661
- transition: border-color 0.2s;
662
- }
663
-
664
- .setting-group input:focus,
665
- .setting-group select:focus {
666
- border-color: var(--border-strong);
667
- outline: none;
668
- }
669
-
670
- .setting-group input[type="checkbox"] {
671
- margin-right: 8px;
672
- accent-color: var(--primary);
673
- }
674
-
675
- /* Backend Picker */
676
- .backend-picker {
677
- margin-bottom: 0;
678
- }
679
-
680
- .backend-picker h3 {
681
- margin-bottom: 8px;
682
- }
683
-
684
- .backend-select-wrapper select {
685
- width: 100%;
686
- padding: 7px 10px;
687
- background: var(--glass-strong);
688
- border: 1px solid var(--border);
689
- border-radius: 6px;
690
- color: var(--text);
691
- font-size: 13px;
692
- cursor: pointer;
693
- appearance: none;
694
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
695
- background-repeat: no-repeat;
696
- background-position: right 10px center;
697
- transition: border-color 0.2s;
698
- }
699
-
700
- .backend-select-wrapper select:focus {
701
- outline: none;
702
- border-color: var(--border-strong);
703
- }
704
-
705
- .backend-status {
706
- display: flex;
707
- align-items: center;
708
- gap: 8px;
709
- margin-top: 6px;
710
- font-size: 11px;
711
- color: var(--text-dim);
712
- }
713
-
714
- /* Utilities */
715
- .divider {
716
- height: 1px;
717
- background: var(--border);
718
- margin: 12px 0;
719
- }
720
-
721
- /* Links */
722
- .help-text {
723
- text-align: center;
724
- font-size: 12px;
725
- color: var(--text-dim);
726
- margin-top: 12px;
727
- }
728
-
729
- .help-text a {
730
- color: var(--link);
731
- text-decoration: underline;
732
- text-decoration-color: rgba(160,160,160,0.3);
733
- text-underline-offset: 2px;
734
- transition: all 0.2s;
735
- }
736
-
737
- .help-text a:hover {
738
- color: var(--link-hover);
739
- text-decoration-color: rgba(255,255,255,0.5);
740
- }
741
-
742
- /* Footer links */
743
- .footer-links {
744
- display: flex;
745
- justify-content: center;
746
- gap: 16px;
747
- padding: 12px 16px;
748
- border-top: 1px solid var(--border);
749
- margin-top: 4px;
750
- }
751
-
752
- .footer-links a {
753
- color: var(--text-dim);
754
- text-decoration: none;
755
- font-size: 11px;
756
- transition: color 0.2s;
757
- }
758
-
759
- .footer-links a:hover {
760
- color: var(--text);
761
- }