kiro-memory 1.0.4 → 1.1.0

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.
@@ -3,215 +3,583 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>ContextKit Viewer</title>
6
+ <title>Kiro Memory</title>
7
7
  <style>
8
- /* CSS Variables */
8
+ /* Palette dark moderna (default) */
9
9
  :root {
10
+ --bg-primary: #0a0a0b;
11
+ --bg-secondary: #141416;
12
+ --bg-tertiary: #1c1c1f;
13
+ --bg-hover: #232328;
14
+ --bg-elevated: #1a1a1d;
15
+ --text-primary: #f5f5f7;
16
+ --text-secondary: #8e8e93;
17
+ --text-muted: #636366;
18
+ --border-color: #2c2c2e;
19
+ --border-subtle: #1f1f22;
20
+ --accent: #6366f1;
21
+ --accent-hover: #818cf8;
22
+ --accent-muted: rgba(99, 102, 241, 0.15);
23
+ --green: #34d399;
24
+ --green-muted: rgba(52, 211, 153, 0.15);
25
+ --amber: #fbbf24;
26
+ --amber-muted: rgba(251, 191, 36, 0.15);
27
+ --blue: #60a5fa;
28
+ --blue-muted: rgba(96, 165, 250, 0.15);
29
+ --violet: #a78bfa;
30
+ --violet-muted: rgba(167, 139, 250, 0.15);
31
+ --pink: #f472b6;
32
+ --pink-muted: rgba(244, 114, 182, 0.15);
33
+ --red: #f87171;
34
+ --red-muted: rgba(248, 113, 113, 0.15);
35
+ --sidebar-width: 260px;
36
+ --header-height: 56px;
37
+ --radius: 8px;
38
+ --radius-sm: 4px;
39
+ --shadow-card: 0 1px 3px rgba(0,0,0,0.4);
40
+ --shadow-hover: 0 4px 12px rgba(0,0,0,0.5);
41
+ --font-mono: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;
42
+ --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
43
+ --transition: 150ms ease;
44
+ }
45
+
46
+ /* Light mode */
47
+ [data-theme="light"] {
10
48
  --bg-primary: #ffffff;
11
- --bg-secondary: #f5f5f5;
12
- --bg-tertiary: #eeeeee;
13
- --text-primary: #1a1a1a;
14
- --text-secondary: #666666;
15
- --border-color: #e0e0e0;
16
- --accent-color: #2563eb;
17
- --success-color: #22c55e;
18
- --error-color: #ef4444;
19
- }
20
-
21
- [data-theme="dark"] {
22
- --bg-primary: #1a1a1a;
23
- --bg-secondary: #2a2a2a;
24
- --bg-tertiary: #333333;
25
- --text-primary: #ffffff;
26
- --text-secondary: #a0a0a0;
27
- --border-color: #404040;
28
- --accent-color: #3b82f6;
29
- --success-color: #4ade80;
30
- --error-color: #f87171;
31
- }
32
-
33
- * {
34
- margin: 0;
35
- padding: 0;
36
- box-sizing: border-box;
37
- }
49
+ --bg-secondary: #f9fafb;
50
+ --bg-tertiary: #f3f4f6;
51
+ --bg-hover: #e5e7eb;
52
+ --bg-elevated: #ffffff;
53
+ --text-primary: #111827;
54
+ --text-secondary: #6b7280;
55
+ --text-muted: #9ca3af;
56
+ --border-color: #e5e7eb;
57
+ --border-subtle: #f3f4f6;
58
+ --accent: #4f46e5;
59
+ --accent-hover: #6366f1;
60
+ --accent-muted: rgba(79, 70, 229, 0.1);
61
+ --green-muted: rgba(52, 211, 153, 0.1);
62
+ --amber-muted: rgba(251, 191, 36, 0.1);
63
+ --blue-muted: rgba(96, 165, 250, 0.1);
64
+ --violet-muted: rgba(167, 139, 250, 0.1);
65
+ --pink-muted: rgba(244, 114, 182, 0.1);
66
+ --red-muted: rgba(248, 113, 113, 0.1);
67
+ --shadow-card: 0 1px 3px rgba(0,0,0,0.08);
68
+ --shadow-hover: 0 4px 12px rgba(0,0,0,0.12);
69
+ }
70
+
71
+ /* Reset */
72
+ *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
38
73
 
39
74
  body {
40
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
75
+ font-family: var(--font-sans);
41
76
  background: var(--bg-primary);
42
77
  color: var(--text-primary);
43
- line-height: 1.6;
78
+ line-height: 1.5;
79
+ -webkit-font-smoothing: antialiased;
44
80
  }
45
81
 
82
+ /* Layout principale */
46
83
  .app {
47
- min-height: 100vh;
48
- display: flex;
49
- flex-direction: column;
84
+ display: grid;
85
+ grid-template-columns: var(--sidebar-width) 1fr;
86
+ grid-template-rows: var(--header-height) 1fr;
87
+ grid-template-areas:
88
+ "header header"
89
+ "sidebar main";
90
+ height: 100vh;
91
+ overflow: hidden;
50
92
  }
51
93
 
52
94
  /* Header */
53
95
  .header {
96
+ grid-area: header;
54
97
  display: flex;
55
98
  align-items: center;
56
- justify-content: space-between;
57
- padding: 1rem 2rem;
99
+ gap: 16px;
100
+ padding: 0 20px;
58
101
  background: var(--bg-secondary);
59
102
  border-bottom: 1px solid var(--border-color);
60
- position: sticky;
61
- top: 0;
62
103
  z-index: 100;
63
104
  }
64
105
 
65
- .header-left {
106
+ .header-brand {
66
107
  display: flex;
67
108
  align-items: center;
68
- gap: 1rem;
109
+ gap: 8px;
110
+ width: var(--sidebar-width);
111
+ flex-shrink: 0;
112
+ padding-right: 16px;
113
+ border-right: 1px solid var(--border-color);
69
114
  }
70
115
 
71
- .header-left h1 {
72
- font-size: 1.5rem;
116
+ .header-brand h1 {
117
+ font-size: 15px;
73
118
  font-weight: 600;
119
+ letter-spacing: -0.01em;
74
120
  }
75
121
 
76
- .connection-status {
77
- padding: 0.25rem 0.75rem;
78
- border-radius: 9999px;
79
- font-size: 0.75rem;
122
+ .status-dot {
123
+ width: 8px;
124
+ height: 8px;
125
+ border-radius: 50%;
126
+ flex-shrink: 0;
127
+ }
128
+ .status-dot.connected { background: var(--green); box-shadow: 0 0 6px var(--green); }
129
+ .status-dot.disconnected { background: var(--red); }
130
+
131
+ /* Ricerca spotlight */
132
+ .search-container {
133
+ flex: 1;
134
+ max-width: 600px;
135
+ position: relative;
136
+ }
137
+
138
+ .search-input-wrapper {
139
+ display: flex;
140
+ align-items: center;
141
+ gap: 8px;
142
+ padding: 0 12px;
143
+ height: 36px;
144
+ background: var(--bg-tertiary);
145
+ border: 1px solid var(--border-color);
146
+ border-radius: var(--radius);
147
+ transition: border-color var(--transition), box-shadow var(--transition);
148
+ }
149
+
150
+ .search-input-wrapper:focus-within {
151
+ border-color: var(--accent);
152
+ box-shadow: 0 0 0 3px var(--accent-muted);
153
+ }
154
+
155
+ .search-icon {
156
+ color: var(--text-muted);
157
+ flex-shrink: 0;
158
+ width: 16px;
159
+ height: 16px;
160
+ }
161
+
162
+ .search-input {
163
+ flex: 1;
164
+ border: none;
165
+ background: transparent;
166
+ color: var(--text-primary);
167
+ font-size: 13px;
168
+ outline: none;
169
+ font-family: var(--font-sans);
170
+ }
171
+
172
+ .search-input::placeholder { color: var(--text-muted); }
173
+
174
+ .search-shortcut {
175
+ font-size: 11px;
176
+ color: var(--text-muted);
177
+ background: var(--bg-hover);
178
+ padding: 2px 6px;
179
+ border-radius: var(--radius-sm);
180
+ border: 1px solid var(--border-color);
181
+ font-family: var(--font-mono);
182
+ }
183
+
184
+ /* Dropdown risultati ricerca */
185
+ .search-results {
186
+ position: absolute;
187
+ top: calc(100% + 4px);
188
+ left: 0;
189
+ right: 0;
190
+ max-height: 400px;
191
+ overflow-y: auto;
192
+ background: var(--bg-elevated);
193
+ border: 1px solid var(--border-color);
194
+ border-radius: var(--radius);
195
+ box-shadow: var(--shadow-hover);
196
+ z-index: 200;
197
+ }
198
+
199
+ .search-result-item {
200
+ display: flex;
201
+ align-items: flex-start;
202
+ gap: 10px;
203
+ padding: 10px 14px;
204
+ cursor: pointer;
205
+ border-bottom: 1px solid var(--border-subtle);
206
+ transition: background var(--transition);
207
+ }
208
+
209
+ .search-result-item:hover { background: var(--bg-hover); }
210
+ .search-result-item:last-child { border-bottom: none; }
211
+
212
+ .search-result-title {
213
+ font-size: 13px;
80
214
  font-weight: 500;
215
+ color: var(--text-primary);
81
216
  }
82
217
 
83
- .connection-status.connected {
84
- background: var(--success-color);
85
- color: white;
218
+ .search-result-snippet {
219
+ font-size: 12px;
220
+ color: var(--text-secondary);
221
+ margin-top: 2px;
222
+ overflow: hidden;
223
+ text-overflow: ellipsis;
224
+ white-space: nowrap;
86
225
  }
87
226
 
88
- .connection-status.disconnected {
89
- background: var(--error-color);
90
- color: white;
227
+ .search-result-meta {
228
+ font-size: 11px;
229
+ color: var(--text-muted);
230
+ margin-top: 2px;
91
231
  }
92
232
 
93
- .header-center,
94
- .header-right {
233
+ .search-empty {
234
+ padding: 20px;
235
+ text-align: center;
236
+ color: var(--text-muted);
237
+ font-size: 13px;
238
+ }
239
+
240
+ /* Controlli header a destra */
241
+ .header-controls {
95
242
  display: flex;
96
243
  align-items: center;
97
- gap: 1rem;
244
+ gap: 8px;
245
+ margin-left: auto;
98
246
  }
99
247
 
100
- select {
101
- padding: 0.5rem 1rem;
248
+ .theme-btn {
249
+ display: flex;
250
+ align-items: center;
251
+ justify-content: center;
252
+ width: 32px;
253
+ height: 32px;
102
254
  border: 1px solid var(--border-color);
103
- border-radius: 0.375rem;
104
- background: var(--bg-primary);
255
+ border-radius: var(--radius);
256
+ background: var(--bg-tertiary);
257
+ color: var(--text-secondary);
258
+ cursor: pointer;
259
+ transition: all var(--transition);
260
+ font-size: 16px;
261
+ }
262
+
263
+ .theme-btn:hover {
264
+ background: var(--bg-hover);
265
+ color: var(--text-primary);
266
+ }
267
+
268
+ /* Sidebar */
269
+ .sidebar {
270
+ grid-area: sidebar;
271
+ background: var(--bg-secondary);
272
+ border-right: 1px solid var(--border-color);
273
+ overflow-y: auto;
274
+ padding: 16px 0;
275
+ display: flex;
276
+ flex-direction: column;
277
+ gap: 24px;
278
+ }
279
+
280
+ .sidebar-section {
281
+ padding: 0 16px;
282
+ }
283
+
284
+ .sidebar-title {
285
+ font-size: 11px;
286
+ font-weight: 600;
287
+ text-transform: uppercase;
288
+ letter-spacing: 0.05em;
289
+ color: var(--text-muted);
290
+ margin-bottom: 8px;
291
+ }
292
+
293
+ .sidebar-item {
294
+ display: flex;
295
+ align-items: center;
296
+ gap: 8px;
297
+ padding: 6px 10px;
298
+ border-radius: var(--radius-sm);
299
+ font-size: 13px;
300
+ color: var(--text-secondary);
301
+ cursor: pointer;
302
+ transition: all var(--transition);
303
+ }
304
+
305
+ .sidebar-item:hover {
306
+ background: var(--bg-hover);
105
307
  color: var(--text-primary);
106
- font-size: 0.875rem;
308
+ }
309
+
310
+ .sidebar-item.active {
311
+ background: var(--accent-muted);
312
+ color: var(--accent);
313
+ font-weight: 500;
314
+ }
315
+
316
+ .sidebar-item-count {
317
+ margin-left: auto;
318
+ font-size: 11px;
319
+ color: var(--text-muted);
320
+ font-family: var(--font-mono);
321
+ }
322
+
323
+ /* Checkbox filtri tipo */
324
+ .filter-checkbox {
325
+ display: flex;
326
+ align-items: center;
327
+ gap: 8px;
328
+ padding: 5px 10px;
329
+ border-radius: var(--radius-sm);
330
+ font-size: 13px;
331
+ color: var(--text-secondary);
107
332
  cursor: pointer;
333
+ transition: all var(--transition);
334
+ }
335
+
336
+ .filter-checkbox:hover { background: var(--bg-hover); }
337
+
338
+ .filter-checkbox input[type="checkbox"] {
339
+ accent-color: var(--accent);
340
+ width: 14px;
341
+ height: 14px;
342
+ }
343
+
344
+ .filter-dot {
345
+ width: 8px;
346
+ height: 8px;
347
+ border-radius: 50%;
348
+ flex-shrink: 0;
349
+ }
350
+
351
+ /* Statistiche sidebar */
352
+ .stats-grid {
353
+ display: grid;
354
+ grid-template-columns: 1fr 1fr;
355
+ gap: 8px;
356
+ }
357
+
358
+ .stat-card {
359
+ background: var(--bg-tertiary);
360
+ border-radius: var(--radius-sm);
361
+ padding: 10px;
362
+ text-align: center;
363
+ }
364
+
365
+ .stat-value {
366
+ font-size: 18px;
367
+ font-weight: 600;
368
+ color: var(--text-primary);
369
+ font-family: var(--font-mono);
370
+ }
371
+
372
+ .stat-label {
373
+ font-size: 10px;
374
+ color: var(--text-muted);
375
+ text-transform: uppercase;
376
+ letter-spacing: 0.05em;
377
+ margin-top: 2px;
378
+ }
379
+
380
+ /* Area principale (feed) */
381
+ .main {
382
+ grid-area: main;
383
+ overflow-y: auto;
384
+ padding: 20px 24px;
385
+ background: var(--bg-primary);
108
386
  }
109
387
 
110
- /* Feed */
111
388
  .feed {
112
- flex: 1;
113
- padding: 2rem;
114
- max-width: 1200px;
389
+ max-width: 800px;
115
390
  margin: 0 auto;
116
- width: 100%;
391
+ display: flex;
392
+ flex-direction: column;
393
+ gap: 10px;
117
394
  }
118
395
 
396
+ /* Card generica */
119
397
  .card {
120
398
  background: var(--bg-secondary);
121
399
  border: 1px solid var(--border-color);
122
- border-radius: 0.5rem;
123
- padding: 1.5rem;
124
- margin-bottom: 1rem;
400
+ border-radius: var(--radius);
401
+ padding: 14px 16px;
402
+ border-left: 3px solid transparent;
403
+ transition: transform var(--transition), box-shadow var(--transition);
125
404
  }
126
405
 
406
+ .card:hover {
407
+ transform: translateY(-1px);
408
+ box-shadow: var(--shadow-hover);
409
+ }
410
+
411
+ /* Colori bordo sinistro per tipo */
412
+ .card--file-write { border-left-color: var(--green); }
413
+ .card--command { border-left-color: var(--amber); }
414
+ .card--research { border-left-color: var(--blue); }
415
+ .card--summary { border-left-color: var(--violet); }
416
+ .card--prompt { border-left-color: var(--pink); }
417
+ .card--delegation { border-left-color: var(--accent); }
418
+ .card--tool-use { border-left-color: var(--text-muted); }
419
+ .card--default { border-left-color: var(--text-muted); }
420
+
127
421
  .card-header {
128
422
  display: flex;
129
423
  align-items: center;
130
- gap: 0.75rem;
131
- margin-bottom: 0.75rem;
132
- font-size: 0.875rem;
424
+ gap: 8px;
425
+ margin-bottom: 8px;
426
+ font-size: 12px;
133
427
  }
134
428
 
135
- .card-type {
136
- background: var(--accent-color);
137
- color: white;
138
- padding: 0.25rem 0.5rem;
139
- border-radius: 0.25rem;
140
- font-size: 0.75rem;
429
+ /* Badge tipo */
430
+ .badge {
431
+ display: inline-flex;
432
+ align-items: center;
433
+ gap: 4px;
434
+ padding: 2px 8px;
435
+ border-radius: 9999px;
436
+ font-size: 11px;
141
437
  font-weight: 500;
142
438
  text-transform: uppercase;
439
+ letter-spacing: 0.03em;
143
440
  }
144
441
 
442
+ .badge--file-write { background: var(--green-muted); color: var(--green); }
443
+ .badge--command { background: var(--amber-muted); color: var(--amber); }
444
+ .badge--research { background: var(--blue-muted); color: var(--blue); }
445
+ .badge--summary { background: var(--violet-muted); color: var(--violet); }
446
+ .badge--prompt { background: var(--pink-muted); color: var(--pink); }
447
+ .badge--delegation { background: var(--accent-muted); color: var(--accent); }
448
+ .badge--tool-use { background: var(--bg-tertiary); color: var(--text-secondary); }
449
+ .badge--default { background: var(--bg-tertiary); color: var(--text-secondary); }
450
+
145
451
  .card-project {
146
- color: var(--text-secondary);
147
- font-weight: 500;
452
+ color: var(--text-muted);
453
+ font-size: 12px;
148
454
  }
149
455
 
150
- .card-date {
151
- color: var(--text-secondary);
456
+ .card-time {
152
457
  margin-left: auto;
153
- font-size: 0.75rem;
458
+ color: var(--text-muted);
459
+ font-size: 11px;
460
+ font-family: var(--font-mono);
461
+ flex-shrink: 0;
154
462
  }
155
463
 
156
464
  .card-title {
157
- font-size: 1.125rem;
465
+ font-size: 14px;
158
466
  font-weight: 600;
159
- margin-bottom: 0.5rem;
467
+ color: var(--text-primary);
468
+ margin-bottom: 4px;
469
+ line-height: 1.4;
160
470
  }
161
471
 
162
472
  .card-subtitle {
473
+ font-size: 13px;
163
474
  color: var(--text-secondary);
475
+ margin-bottom: 6px;
164
476
  font-style: italic;
165
- margin-bottom: 0.5rem;
166
477
  }
167
478
 
168
479
  .card-content {
169
- color: var(--text-primary);
480
+ font-size: 13px;
481
+ color: var(--text-secondary);
170
482
  line-height: 1.6;
171
483
  white-space: pre-wrap;
484
+ word-break: break-word;
172
485
  }
173
486
 
174
- .card-tags {
175
- display: flex;
176
- flex-wrap: wrap;
177
- gap: 0.5rem;
178
- margin-top: 0.75rem;
487
+ .card-content--mono {
488
+ font-family: var(--font-mono);
489
+ font-size: 12px;
490
+ background: var(--bg-tertiary);
491
+ border-radius: var(--radius-sm);
492
+ padding: 8px 10px;
179
493
  }
180
494
 
181
- .tag {
495
+ /* Sezione generica dentro le card (narrativa, fatti, completato, ecc.) */
496
+ .card-section {
497
+ margin-top: 8px;
498
+ padding: 8px 10px;
182
499
  background: var(--bg-tertiary);
183
- padding: 0.25rem 0.5rem;
184
- border-radius: 0.25rem;
185
- font-size: 0.75rem;
186
- color: var(--text-secondary);
500
+ border-radius: var(--radius-sm);
187
501
  }
188
502
 
189
- .summary-section {
190
- margin-top: 0.75rem;
503
+ .card-section-label {
504
+ display: block;
505
+ font-size: 11px;
506
+ font-weight: 600;
507
+ text-transform: uppercase;
508
+ letter-spacing: 0.03em;
509
+ color: var(--text-muted);
510
+ margin-bottom: 4px;
191
511
  }
192
512
 
193
- .summary-section strong {
194
- display: block;
195
- margin-bottom: 0.25rem;
513
+ .card-section p {
514
+ font-size: 13px;
196
515
  color: var(--text-secondary);
197
- font-size: 0.875rem;
516
+ line-height: 1.5;
517
+ }
518
+
519
+ /* Indicatori file modificati / letti */
520
+ .card-files {
521
+ display: flex;
522
+ gap: 8px;
523
+ margin-top: 8px;
524
+ }
525
+
526
+ .file-pill {
527
+ display: inline-flex;
528
+ align-items: center;
529
+ gap: 4px;
530
+ padding: 2px 8px;
531
+ border-radius: 9999px;
532
+ font-size: 11px;
533
+ font-family: var(--font-mono);
198
534
  }
199
535
 
536
+ .file-pill--modified {
537
+ background: var(--green-muted);
538
+ color: var(--green);
539
+ }
540
+
541
+ .file-pill--read {
542
+ background: var(--blue-muted);
543
+ color: var(--blue);
544
+ }
545
+
546
+ /* Tag concetti */
547
+ .card-tags {
548
+ display: flex;
549
+ flex-wrap: wrap;
550
+ gap: 4px;
551
+ margin-top: 8px;
552
+ }
553
+
554
+ .tag {
555
+ padding: 2px 8px;
556
+ border-radius: 9999px;
557
+ font-size: 11px;
558
+ background: var(--bg-tertiary);
559
+ color: var(--text-muted);
560
+ border: 1px solid var(--border-subtle);
561
+ }
562
+
563
+ /* Bottone Load More */
200
564
  .load-more-btn {
201
- display: block;
565
+ display: flex;
566
+ align-items: center;
567
+ justify-content: center;
568
+ padding: 10px;
202
569
  width: 100%;
203
- padding: 1rem;
204
570
  background: var(--bg-secondary);
205
571
  border: 1px solid var(--border-color);
206
- border-radius: 0.5rem;
207
- color: var(--text-primary);
208
- font-size: 0.875rem;
572
+ border-radius: var(--radius);
573
+ color: var(--text-secondary);
574
+ font-size: 13px;
575
+ font-family: var(--font-sans);
209
576
  cursor: pointer;
210
- transition: background 0.2s;
577
+ transition: all var(--transition);
211
578
  }
212
579
 
213
580
  .load-more-btn:hover:not(:disabled) {
214
- background: var(--bg-tertiary);
581
+ background: var(--bg-hover);
582
+ color: var(--text-primary);
215
583
  }
216
584
 
217
585
  .load-more-btn:disabled {
@@ -219,29 +587,48 @@
219
587
  cursor: not-allowed;
220
588
  }
221
589
 
590
+ /* Stato vuoto */
222
591
  .empty-state {
592
+ display: flex;
593
+ flex-direction: column;
594
+ align-items: center;
595
+ justify-content: center;
596
+ padding: 60px 20px;
597
+ color: var(--text-muted);
223
598
  text-align: center;
224
- padding: 4rem 2rem;
225
- color: var(--text-secondary);
599
+ gap: 12px;
226
600
  }
227
601
 
228
- /* Scrollbar */
229
- ::-webkit-scrollbar {
230
- width: 8px;
231
- height: 8px;
602
+ .empty-state-icon {
603
+ opacity: 0.3;
604
+ color: var(--text-muted);
232
605
  }
233
606
 
234
- ::-webkit-scrollbar-track {
235
- background: var(--bg-secondary);
607
+ .empty-state-hint {
608
+ font-size: 12px;
609
+ color: var(--text-muted);
610
+ max-width: 300px;
236
611
  }
237
612
 
613
+ /* Scrollbar personalizzata */
614
+ ::-webkit-scrollbar { width: 6px; }
615
+ ::-webkit-scrollbar-track { background: transparent; }
238
616
  ::-webkit-scrollbar-thumb {
239
617
  background: var(--border-color);
240
- border-radius: 4px;
241
- }
242
-
243
- ::-webkit-scrollbar-thumb:hover {
244
- background: var(--text-secondary);
618
+ border-radius: 3px;
619
+ }
620
+ ::-webkit-scrollbar-thumb:hover { background: var(--text-muted); }
621
+
622
+ /* Responsive: sidebar collassata su mobile */
623
+ @media (max-width: 768px) {
624
+ .app {
625
+ grid-template-columns: 1fr;
626
+ grid-template-areas:
627
+ "header"
628
+ "main";
629
+ }
630
+ .sidebar { display: none; }
631
+ .header-brand { width: auto; border-right: none; padding-right: 0; }
245
632
  }
246
633
  </style>
247
634
  </head>