cursor-guard 4.9.8 → 4.9.9

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.
@@ -1,50 +1,68 @@
1
1
  /* ═══════════════════════════════════════════════════════════════
2
- Cursor Guard Dashboard — Ops Console Theme v2
2
+ Cursor Guard Dashboard — theme aligned with IDE sidebar webview
3
3
  ═══════════════════════════════════════════════════════════════ */
4
4
 
5
5
  :root {
6
- --bg-primary: #0a0f1a;
7
- --bg-secondary: #141c2b;
8
- --bg-tertiary: #1e293b;
9
- --bg-elevated: #182030;
10
- --bg-hover: rgba(148,163,184,.06);
11
-
12
- --border: rgba(71,85,105,.5);
13
- --border-subtle:rgba(71,85,105,.25);
14
- --border-glow: rgba(59,130,246,.2);
15
-
16
- --text-primary: #cbd5e1;
17
- --text-secondary: #8b9cb7;
18
- --text-tertiary: #475569;
19
- --text-heading: #f8fafc;
20
-
21
- --green: #4ade80;
22
- --green-bg: rgba(74,222,128,.12);
23
- --green-glow: rgba(74,222,128,.2);
24
- --yellow: #f59e0b;
25
- --yellow-bg: rgba(245,158,11,.12);
26
- --yellow-glow: rgba(245,158,11,.2);
27
- --red: #ef4444;
28
- --red-bg: rgba(239,68,68,.12);
29
- --red-glow: rgba(239,68,68,.2);
30
- --blue: #3b82f6;
31
- --blue-bg: rgba(59,130,246,.12);
32
- --blue-glow: rgba(59,130,246,.2);
33
- --purple: #a78bfa;
34
- --purple-bg: rgba(167,139,250,.12);
35
- --amber: #f59e0b;
36
- --amber-bg: rgba(245,158,11,.12);
37
- --gray: #64748b;
38
- --gray-bg: rgba(100,116,139,.12);
39
-
40
- --radius: 10px;
41
- --radius-sm: 6px;
42
- --topbar-h: 56px;
6
+ /* Core tokens (parity with references/vscode-extension sidebar webview) */
7
+ --surface: #1f2430;
8
+ --surface-2: #252a38;
9
+ --border: rgba(120, 130, 160, 0.22);
10
+ --text: #e8eaf0;
11
+ --muted: #9aa4bd;
12
+ --green: #89d18a;
13
+ --yellow: #e4c06a;
14
+ --red: #f0a0a0;
15
+ --orange: #f0b070;
16
+ --blue: #8eb6ff;
17
+ --purple: #b8a8e8;
18
+ --radius: 12px;
19
+ --radius-sm: 8px;
20
+ --radius-lg: 14px;
21
+ --shadow: 0 1px 2px rgba(0, 0, 0, 0.18);
22
+ --shadow-soft: 0 4px 14px rgba(0, 0, 0, 0.12);
23
+ --glow-green: color-mix(in srgb, var(--green) 38%, transparent);
24
+ --shell-green-1: color-mix(in srgb, var(--green) 16%, #070907);
25
+ --shell-green-2: color-mix(in srgb, var(--green) 9%, #050805);
26
+
27
+ /* Legacy names used across this file */
28
+ --bg-primary: var(--surface);
29
+ --bg-secondary: var(--surface-2);
30
+ --bg-tertiary: color-mix(in srgb, var(--surface-2) 88%, var(--text));
31
+ --bg-elevated: color-mix(in srgb, var(--surface-2) 94%, #0a0c12);
32
+ --bg-hover: color-mix(in srgb, var(--text) 6%, transparent);
33
+ --border-subtle: color-mix(in srgb, var(--border) 48%, transparent);
34
+ --border-glow: color-mix(in srgb, var(--blue) 38%, var(--border));
35
+ --text-primary: var(--text);
36
+ --text-secondary: var(--muted);
37
+ --text-tertiary: color-mix(in srgb, var(--muted) 72%, var(--surface));
38
+ --text-heading: var(--text);
39
+ --accent: var(--blue);
40
+
41
+ --green-bg: color-mix(in srgb, var(--green) 14%, transparent);
42
+ --green-glow: color-mix(in srgb, var(--green) 30%, transparent);
43
+ --yellow-bg: color-mix(in srgb, var(--yellow) 14%, transparent);
44
+ --yellow-glow: color-mix(in srgb, var(--yellow) 28%, transparent);
45
+ --red-bg: color-mix(in srgb, var(--red) 14%, transparent);
46
+ --red-glow: color-mix(in srgb, var(--red) 30%, transparent);
47
+ --blue-bg: color-mix(in srgb, var(--blue) 14%, transparent);
48
+ --blue-glow: color-mix(in srgb, var(--blue) 24%, transparent);
49
+ --purple-bg: color-mix(in srgb, var(--purple) 14%, transparent);
50
+ --amber: var(--yellow);
51
+ --amber-bg: var(--yellow-bg);
52
+ --gray: var(--muted);
53
+ --gray-bg: color-mix(in srgb, var(--muted) 12%, transparent);
54
+
55
+ --topbar-h: 52px;
43
56
  --drawer-w: 500px;
44
- --shadow-sm: 0 1px 3px rgba(0,0,0,.4), 0 1px 2px rgba(0,0,0,.25);
45
- --shadow-md: 0 4px 20px rgba(0,0,0,.45);
46
- --shadow-lg: 0 8px 32px rgba(0,0,0,.5);
47
- --transition: .2s cubic-bezier(.4,0,.2,1);
57
+ --shadow-sm: var(--shadow);
58
+ --shadow-md: var(--shadow-soft);
59
+ --shadow-lg: 0 8px 28px rgba(0, 0, 0, 0.22);
60
+ --transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
61
+
62
+ --font-mono: ui-monospace, 'Cascadia Code', 'JetBrains Mono', Consolas, monospace;
63
+
64
+ --card-bg: var(--bg-secondary);
65
+ --bg: var(--bg-primary);
48
66
  }
49
67
 
50
68
  /* ── Reset ────────────────────────────────────────────────── */
@@ -52,14 +70,15 @@
52
70
  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
53
71
 
54
72
  body {
55
- font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
56
- font-size: 14px;
57
- line-height: 1.6;
73
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Microsoft YaHei', Roboto, sans-serif;
74
+ font-size: 13px;
75
+ line-height: 1.55;
58
76
  color: var(--text-primary);
59
- background: var(--bg-primary);
77
+ background-color: var(--bg-primary);
60
78
  background-image:
61
- radial-gradient(ellipse 80% 50% at 50% -20%, rgba(59,130,246,.06), transparent),
62
- radial-gradient(ellipse 60% 40% at 80% 100%, rgba(74,222,128,.03), transparent);
79
+ radial-gradient(110% 75% at 8% -15%, var(--shell-green-1), transparent 56%),
80
+ radial-gradient(95% 70% at 102% 108%, var(--shell-green-2), transparent 52%),
81
+ linear-gradient(168deg, #0a0c0f 0%, var(--surface) 48%, #0c100e 100%);
63
82
  padding-top: var(--topbar-h);
64
83
  -webkit-font-smoothing: antialiased;
65
84
  -moz-osx-font-smoothing: grayscale;
@@ -71,14 +90,15 @@ body {
71
90
  position: fixed;
72
91
  top: 0; left: 0; right: 0;
73
92
  height: var(--topbar-h);
74
- background: rgba(14,19,30,.85);
75
- backdrop-filter: blur(16px) saturate(1.5);
76
- -webkit-backdrop-filter: blur(16px) saturate(1.5);
77
- border-bottom: 1px solid var(--border);
93
+ background: color-mix(in srgb, var(--surface-2) 78%, transparent);
94
+ backdrop-filter: blur(12px) saturate(1.2);
95
+ -webkit-backdrop-filter: blur(12px) saturate(1.2);
96
+ border-bottom: 1px solid color-mix(in srgb, var(--border) 82%, transparent);
97
+ box-shadow: var(--shadow);
78
98
  display: flex;
79
99
  align-items: center;
80
100
  justify-content: space-between;
81
- padding: 0 24px;
101
+ padding: 0 20px;
82
102
  z-index: 50;
83
103
  gap: 12px;
84
104
  }
@@ -92,29 +112,42 @@ body {
92
112
  .logo-icon {
93
113
  color: var(--green);
94
114
  flex-shrink: 0;
95
- filter: drop-shadow(0 0 6px var(--green-glow));
115
+ filter: drop-shadow(0 0 8px var(--green-glow));
96
116
  }
97
117
  .logo-text {
98
- font-weight: 700;
99
- font-size: 15px;
118
+ font-weight: 800;
119
+ font-size: 14px;
100
120
  white-space: nowrap;
101
- letter-spacing: -.01em;
102
- color: var(--text-heading);
121
+ letter-spacing: -0.03em;
122
+ line-height: 1.2;
123
+ background: linear-gradient(90deg, var(--text-heading), color-mix(in srgb, var(--text-heading) 72%, var(--blue)));
124
+ -webkit-background-clip: text;
125
+ background-clip: text;
126
+ color: transparent;
103
127
  }
104
128
 
105
129
  #project-select {
106
- background: var(--bg-tertiary);
130
+ background: color-mix(in srgb, var(--surface-2) 88%, var(--text));
107
131
  color: var(--text-primary);
108
- border: 1px solid var(--border);
109
- border-radius: var(--radius-sm);
110
- padding: 5px 10px;
111
- font-size: 13px;
132
+ border: 1px solid color-mix(in srgb, var(--border) 88%, transparent);
133
+ border-radius: 999px;
134
+ padding: 5px 12px;
135
+ font-size: 12px;
136
+ font-weight: 600;
112
137
  max-width: 220px;
113
138
  cursor: pointer;
114
- transition: border-color var(--transition);
139
+ transition: border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease;
140
+ }
141
+ #project-select:hover {
142
+ border-color: color-mix(in srgb, var(--blue) 55%, var(--border));
143
+ color: var(--blue);
144
+ box-shadow: var(--shadow-soft);
145
+ }
146
+ #project-select:focus {
147
+ outline: none;
148
+ border-color: color-mix(in srgb, var(--blue) 55%, var(--border));
149
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--blue) 35%, transparent);
115
150
  }
116
- #project-select:hover { border-color: var(--blue); }
117
- #project-select:focus { outline: none; border-color: var(--blue); box-shadow: 0 0 0 3px var(--blue-bg); }
118
151
 
119
152
  #last-refresh { font-size: 12px; white-space: nowrap; opacity: .7; }
120
153
 
@@ -211,31 +244,32 @@ body {
211
244
  display: inline-flex;
212
245
  align-items: center;
213
246
  gap: 6px;
214
- padding: 7px 14px;
247
+ padding: 8px 12px;
215
248
  border: 1px solid var(--border);
216
- border-radius: var(--radius-sm);
217
- background: var(--bg-tertiary);
249
+ border-radius: var(--radius);
250
+ background: color-mix(in srgb, var(--surface-2) 88%, var(--text));
218
251
  color: var(--text-primary);
219
- font-size: 13px;
220
- font-weight: 500;
252
+ font-size: 12px;
253
+ font-weight: 600;
254
+ font-family: inherit;
221
255
  cursor: pointer;
222
- transition: all var(--transition);
256
+ transition: border-color 0.15s ease, background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
223
257
  white-space: nowrap;
224
258
  }
225
259
  .btn:hover {
226
- background: rgba(59,130,246,.1);
227
- border-color: rgba(59,130,246,.3);
228
- color: var(--text-heading);
260
+ border-color: color-mix(in srgb, var(--blue) 55%, var(--border));
261
+ color: var(--blue);
262
+ box-shadow: var(--shadow-soft);
229
263
  }
230
- .btn:active { transform: scale(.97); }
264
+ .btn:active { transform: scale(0.98); }
231
265
 
232
266
  .btn-ghost {
233
267
  background: transparent;
234
- border-color: transparent;
268
+ border-color: color-mix(in srgb, var(--border) 55%, transparent);
235
269
  }
236
270
  .btn-ghost:hover {
237
271
  background: var(--bg-hover);
238
- border-color: transparent;
272
+ border-color: color-mix(in srgb, var(--blue) 40%, var(--border));
239
273
  }
240
274
 
241
275
  .btn-sm { padding: 4px 10px; font-size: 12px; }
@@ -243,9 +277,9 @@ body {
243
277
  /* ── Main ─────────────────────────────────────────────────── */
244
278
 
245
279
  main {
246
- max-width: 1200px;
280
+ max-width: 1120px;
247
281
  margin: 0 auto;
248
- padding: 28px 24px 60px;
282
+ padding: 22px 20px 56px;
249
283
  }
250
284
 
251
285
  /* ── Sections ─────────────────────────────────────────────── */
@@ -253,11 +287,11 @@ main {
253
287
  .screen { margin-bottom: 44px; }
254
288
 
255
289
  .section-title {
256
- font-size: 13px;
290
+ font-size: 11px;
257
291
  font-weight: 700;
258
- color: var(--text-tertiary);
259
- margin-bottom: 18px;
260
- letter-spacing: .08em;
292
+ color: var(--muted);
293
+ margin-bottom: 14px;
294
+ letter-spacing: 0.1em;
261
295
  text-transform: uppercase;
262
296
  }
263
297
 
@@ -266,38 +300,28 @@ main {
266
300
  .card-grid {
267
301
  display: grid;
268
302
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
269
- gap: 16px;
303
+ gap: 12px;
270
304
  }
271
305
 
272
306
  .card {
273
- background: var(--bg-secondary);
274
- border: 1px solid var(--border);
275
- border-radius: var(--radius);
276
- padding: 18px 22px;
277
- transition: all var(--transition);
307
+ background: linear-gradient(
308
+ 165deg,
309
+ color-mix(in srgb, var(--bg-secondary) 100%, var(--text-primary)) 0%,
310
+ color-mix(in srgb, var(--bg-secondary) 96%, transparent) 100%
311
+ );
312
+ border: 1px solid color-mix(in srgb, var(--border) 90%, transparent);
313
+ border-radius: var(--radius-lg);
314
+ padding: 14px 16px;
315
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
278
316
  position: relative;
279
317
  overflow: hidden;
280
- }
281
- .card::before {
282
- content: '';
283
- position: absolute;
284
- inset: 0;
285
- border-radius: var(--radius);
286
- padding: 1px;
287
- background: linear-gradient(135deg, rgba(59,130,246,.1), transparent 50%);
288
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
289
- -webkit-mask-composite: xor;
290
- mask-composite: exclude;
291
- pointer-events: none;
292
- opacity: 0;
293
- transition: opacity var(--transition);
318
+ box-shadow: var(--shadow);
294
319
  }
295
320
  .card:hover {
296
- transform: translateY(-2px);
297
- box-shadow: var(--shadow-md);
298
- border-color: var(--border-glow);
321
+ transform: translateY(-1px);
322
+ border-color: color-mix(in srgb, var(--border) 70%, var(--blue));
323
+ box-shadow: var(--shadow-soft);
299
324
  }
300
- .card:hover::before { opacity: 1; }
301
325
 
302
326
  .card-health {
303
327
  grid-column: 1 / -1;
@@ -305,7 +329,11 @@ main {
305
329
  align-items: center;
306
330
  gap: 18px;
307
331
  flex-wrap: wrap;
308
- background: linear-gradient(135deg, var(--bg-secondary), var(--bg-elevated));
332
+ background: linear-gradient(
333
+ 165deg,
334
+ color-mix(in srgb, var(--bg-secondary) 100%, var(--text-primary)) 0%,
335
+ color-mix(in srgb, var(--bg-elevated) 92%, transparent) 100%
336
+ );
309
337
  }
310
338
 
311
339
  .card-label {
@@ -547,15 +575,23 @@ main {
547
575
  }
548
576
 
549
577
  .stat-card {
550
- background: var(--bg-secondary);
551
- border: 1px solid var(--border);
552
- border-radius: var(--radius);
553
- padding: 14px 18px;
578
+ background: linear-gradient(
579
+ 165deg,
580
+ color-mix(in srgb, var(--bg-secondary) 100%, var(--text-primary)) 0%,
581
+ color-mix(in srgb, var(--bg-secondary) 96%, transparent) 100%
582
+ );
583
+ border: 1px solid color-mix(in srgb, var(--border) 90%, transparent);
584
+ border-radius: var(--radius-lg);
585
+ padding: 12px 16px;
554
586
  min-width: 150px;
555
587
  flex: 1;
556
- transition: border-color var(--transition);
588
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
589
+ box-shadow: var(--shadow);
590
+ }
591
+ .stat-card:hover {
592
+ border-color: color-mix(in srgb, var(--border) 70%, var(--blue));
593
+ box-shadow: var(--shadow-soft);
557
594
  }
558
- .stat-card:hover { border-color: var(--border-glow); }
559
595
  .stat-label {
560
596
  font-size: 10px;
561
597
  font-weight: 700;
@@ -599,18 +635,23 @@ main {
599
635
  .filter-btn.active {
600
636
  background: var(--blue-bg);
601
637
  color: var(--blue);
602
- border-color: rgba(59,130,246,.35);
638
+ border-color: color-mix(in srgb, var(--blue) 42%, var(--border));
603
639
  font-weight: 600;
604
640
  }
605
641
 
606
642
  /* ── Table ────────────────────────────────────────────────── */
607
643
 
608
644
  .table-wrap {
609
- background: var(--bg-secondary);
610
- border: 1px solid var(--border);
611
- border-radius: var(--radius);
645
+ background: linear-gradient(
646
+ 165deg,
647
+ color-mix(in srgb, var(--bg-secondary) 100%, var(--text-primary)) 0%,
648
+ color-mix(in srgb, var(--bg-secondary) 97%, transparent) 100%
649
+ );
650
+ border: 1px solid color-mix(in srgb, var(--border) 88%, transparent);
651
+ border-radius: var(--radius-lg);
612
652
  overflow: auto;
613
653
  max-height: 440px;
654
+ box-shadow: var(--shadow);
614
655
  }
615
656
 
616
657
  .data-table {
@@ -642,13 +683,13 @@ main {
642
683
  transition: background var(--transition);
643
684
  }
644
685
  .data-table tbody tr:hover {
645
- background: rgba(59,130,246,.05);
686
+ background: color-mix(in srgb, var(--blue) 6%, transparent);
646
687
  }
647
688
  .data-table tbody tr:nth-child(even) {
648
- background: rgba(255,255,255,.015);
689
+ background: color-mix(in srgb, var(--text-primary) 2.5%, transparent);
649
690
  }
650
691
  .data-table tbody tr:nth-child(even):hover {
651
- background: rgba(59,130,246,.05);
692
+ background: color-mix(in srgb, var(--blue) 6%, transparent);
652
693
  }
653
694
 
654
695
  /* ── Protection ───────────────────────────────────────────── */
@@ -660,21 +701,58 @@ main {
660
701
  }
661
702
 
662
703
  .pattern-card {
663
- background: var(--bg-secondary);
664
- border: 1px solid var(--border);
665
- border-radius: var(--radius);
666
- padding: 18px;
667
- transition: border-color var(--transition);
704
+ background: linear-gradient(
705
+ 165deg,
706
+ color-mix(in srgb, var(--bg-secondary) 100%, var(--text-primary)) 0%,
707
+ color-mix(in srgb, var(--bg-secondary) 96%, transparent) 100%
708
+ );
709
+ border: 1px solid color-mix(in srgb, var(--border) 90%, transparent);
710
+ border-radius: var(--radius-lg);
711
+ padding: 16px;
712
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
713
+ box-shadow: var(--shadow);
714
+ }
715
+ .pattern-card:hover {
716
+ box-shadow: var(--shadow-soft);
717
+ }
718
+ .pattern-card--protect {
719
+ border-color: color-mix(in srgb, var(--green) 34%, var(--border));
720
+ background: linear-gradient(
721
+ 165deg,
722
+ color-mix(in srgb, var(--green) 9%, var(--bg-secondary)) 0%,
723
+ color-mix(in srgb, var(--bg-secondary) 98%, var(--text-primary)) 100%
724
+ );
725
+ }
726
+ .pattern-card--protect:hover {
727
+ border-color: color-mix(in srgb, var(--green) 48%, var(--border));
728
+ }
729
+ .pattern-card--ignore {
730
+ border-color: color-mix(in srgb, var(--muted) 26%, var(--border));
731
+ background: linear-gradient(
732
+ 165deg,
733
+ color-mix(in srgb, var(--muted) 7%, var(--bg-secondary)) 0%,
734
+ color-mix(in srgb, var(--bg-secondary) 98%, var(--text-primary)) 100%
735
+ );
736
+ }
737
+ .pattern-card--ignore:hover {
738
+ border-color: color-mix(in srgb, var(--muted) 38%, var(--border));
668
739
  }
669
- .pattern-card:hover { border-color: var(--border-glow); }
670
740
  .pattern-card h4 {
671
741
  font-size: 10px;
672
742
  font-weight: 700;
673
743
  text-transform: uppercase;
674
- letter-spacing: .08em;
675
- color: var(--text-tertiary);
744
+ letter-spacing: .1em;
676
745
  margin-bottom: 12px;
677
746
  }
747
+ .pattern-card--protect h4 { color: var(--green); }
748
+ .pattern-card--ignore h4 { color: color-mix(in srgb, var(--muted) 88%, var(--text)); }
749
+
750
+ .pattern-empty {
751
+ margin: 0;
752
+ line-height: 1.5;
753
+ }
754
+ .pattern-empty--protect { color: color-mix(in srgb, var(--green) 65%, var(--muted)); }
755
+ .pattern-empty--ignore { color: color-mix(in srgb, var(--muted) 95%, var(--text)); }
678
756
 
679
757
  .pattern-list {
680
758
  list-style: none;
@@ -683,16 +761,30 @@ main {
683
761
  gap: 8px;
684
762
  }
685
763
  .pattern-item {
686
- font-family: 'JetBrains Mono', 'Cascadia Code', 'Fira Code', 'Consolas', monospace;
687
- font-size: 12px;
688
- background: var(--bg-tertiary);
689
- border: 1px solid var(--border-subtle);
690
- padding: 3px 10px;
691
- border-radius: 4px;
692
- color: var(--blue);
693
- transition: border-color var(--transition);
764
+ font-family: var(--font-mono);
765
+ font-size: 11px;
766
+ padding: 5px 10px;
767
+ border-radius: 8px;
768
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
769
+ }
770
+ .pattern-item--protect {
771
+ color: color-mix(in srgb, var(--green) 90%, #fff);
772
+ background: color-mix(in srgb, var(--green) 13%, var(--bg-tertiary));
773
+ border: 1px solid color-mix(in srgb, var(--green) 40%, transparent);
774
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--green) 8%, transparent);
775
+ }
776
+ .pattern-item--protect:hover {
777
+ border-color: color-mix(in srgb, var(--green) 58%, transparent);
778
+ box-shadow: var(--shadow-soft);
779
+ }
780
+ .pattern-item--ignore {
781
+ color: color-mix(in srgb, var(--muted) 96%, var(--text));
782
+ background: color-mix(in srgb, var(--muted) 11%, var(--bg-tertiary));
783
+ border: 1px solid color-mix(in srgb, var(--muted) 32%, var(--border));
784
+ }
785
+ .pattern-item--ignore:hover {
786
+ border-color: color-mix(in srgb, var(--muted) 50%, var(--border));
694
787
  }
695
- .pattern-item:hover { border-color: var(--blue); }
696
788
 
697
789
  .protection-note {
698
790
  margin-top: 16px;
@@ -712,20 +804,25 @@ main {
712
804
  /* ── Diagnostics Summary ──────────────────────────────────── */
713
805
 
714
806
  .diag-summary {
715
- background: linear-gradient(135deg, var(--bg-secondary), var(--bg-elevated));
716
- border: 1px solid var(--border);
717
- border-radius: var(--radius);
718
- padding: 20px 24px;
807
+ background: linear-gradient(
808
+ 165deg,
809
+ color-mix(in srgb, var(--bg-secondary) 100%, var(--text-primary)) 0%,
810
+ color-mix(in srgb, var(--bg-elevated) 94%, transparent) 100%
811
+ );
812
+ border: 1px solid color-mix(in srgb, var(--border) 88%, transparent);
813
+ border-radius: var(--radius-lg);
814
+ padding: 18px 22px;
719
815
  display: flex;
720
816
  align-items: center;
721
817
  gap: 24px;
722
818
  cursor: pointer;
723
- transition: all var(--transition);
819
+ transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
820
+ box-shadow: var(--shadow);
724
821
  }
725
822
  .diag-summary:hover {
726
- transform: translateY(-2px);
727
- box-shadow: var(--shadow-md);
728
- border-color: var(--border-glow);
823
+ transform: translateY(-1px);
824
+ box-shadow: var(--shadow-soft);
825
+ border-color: color-mix(in srgb, var(--border) 70%, var(--blue));
729
826
  }
730
827
 
731
828
  .diag-counts {
@@ -778,9 +875,13 @@ main {
778
875
  top: 0; right: 0; bottom: 0;
779
876
  width: var(--drawer-w);
780
877
  max-width: 92vw;
781
- background: var(--bg-secondary);
782
- border-left: 1px solid var(--border);
783
- box-shadow: -8px 0 32px rgba(0,0,0,.4);
878
+ background: linear-gradient(
879
+ 180deg,
880
+ color-mix(in srgb, var(--bg-secondary) 100%, var(--text-primary)) 0%,
881
+ var(--bg-primary) 100%
882
+ );
883
+ border-left: 1px solid color-mix(in srgb, var(--border) 85%, transparent);
884
+ box-shadow: -8px 0 32px rgba(0, 0, 0, 0.2);
784
885
  z-index: 101;
785
886
  display: flex;
786
887
  flex-direction: column;
@@ -1317,16 +1418,16 @@ main {
1317
1418
  left: 50%;
1318
1419
  transform: translateX(-50%) translateY(20px);
1319
1420
  background: var(--green);
1320
- color: #000;
1421
+ color: var(--surface);
1321
1422
  padding: 8px 20px;
1322
- border-radius: var(--radius-sm);
1323
- font-size: 13px;
1423
+ border-radius: var(--radius);
1424
+ font-size: 12px;
1324
1425
  font-weight: 700;
1325
1426
  opacity: 0;
1326
1427
  transition: opacity .25s, transform .25s;
1327
1428
  z-index: 200;
1328
1429
  pointer-events: none;
1329
- box-shadow: 0 4px 16px rgba(74,222,128,.3);
1430
+ box-shadow: var(--shadow-soft), 0 0 0 1px color-mix(in srgb, var(--green) 45%, transparent);
1330
1431
  }
1331
1432
  .copy-toast.show {
1332
1433
  opacity: 1;
@@ -1343,7 +1444,7 @@ main {
1343
1444
  /* ── Selection ───────────────────────────────────────────── */
1344
1445
 
1345
1446
  ::selection {
1346
- background: rgba(59,130,246,.3);
1447
+ background: color-mix(in srgb, var(--blue) 32%, transparent);
1347
1448
  color: var(--text-heading);
1348
1449
  }
1349
1450
 
@@ -1363,15 +1464,19 @@ main {
1363
1464
  display: flex;
1364
1465
  }
1365
1466
  .file-modal {
1366
- background: var(--card-bg);
1367
- border: 1px solid var(--border);
1368
- border-radius: var(--radius);
1467
+ background: linear-gradient(
1468
+ 165deg,
1469
+ color-mix(in srgb, var(--card-bg) 100%, var(--text-primary)) 0%,
1470
+ color-mix(in srgb, var(--card-bg) 96%, transparent) 100%
1471
+ );
1472
+ border: 1px solid color-mix(in srgb, var(--border) 88%, transparent);
1473
+ border-radius: var(--radius-lg);
1369
1474
  width: 90vw;
1370
1475
  max-width: 720px;
1371
1476
  max-height: 80vh;
1372
1477
  display: flex;
1373
1478
  flex-direction: column;
1374
- box-shadow: 0 16px 48px rgba(0, 0, 0, 0.3);
1479
+ box-shadow: var(--shadow-lg), var(--shadow-soft);
1375
1480
  }
1376
1481
  .file-modal-header {
1377
1482
  display: flex;
@@ -414,9 +414,16 @@ async function activate(context) {
414
414
  const projectPath = folders[0].uri.fsPath;
415
415
  const result = await dashMgr.snapshotNow(projectPath);
416
416
  if (result?.status === 'created') {
417
- vscode.window.showInformationMessage(`Cursor Guard: snapshot created (${result.changedCount || 0} changes)`);
417
+ const n = result.changedCount ?? 0;
418
+ const msg =
419
+ n > 0
420
+ ? `Cursor Guard: snapshot created (${n} file change(s))`
421
+ : 'Cursor Guard: snapshot created (restore point saved; no file changes since last snapshot)';
422
+ vscode.window.showInformationMessage(msg);
418
423
  } else if (result?.status === 'unchanged' || result?.status === 'skipped') {
419
- vscode.window.showInformationMessage('Cursor Guard: no changes to snapshot');
424
+ vscode.window.showInformationMessage(
425
+ `Cursor Guard: no snapshot created (${result.reason || 'unchanged'})`
426
+ );
420
427
  } else if (result?.status === 'error') {
421
428
  vscode.window.showWarningMessage(`Cursor Guard: ${result.error}`);
422
429
  } else {
@@ -1 +1 @@
1
- {"version":"4.9.8"}
1
+ {"version":"4.9.9"}