@materialwebunofficial/antigravity-themes 1.0.4 → 1.0.13

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.
@@ -0,0 +1,60 @@
1
+ /* AGY "Nordic Frost" — tokens (the Nord palette). Shared by the window
2
+ (nordic.css) and by sidecar frames (frames/nordic.css), which load no
3
+ other part of the theme. */
4
+
5
+ :root[data-agy-theme="nordic"] {
6
+ /* Polar Night (Dark palette) */
7
+ --nord0: #2e3440; /* Base background */
8
+ --nord1: #3b4252; /* Elevated panels */
9
+ --nord2: #434c5e; /* Cards & active rows */
10
+ --nord3: #4c566a; /* Borders & muted lines */
11
+
12
+ /* Snow Storm (Text & highlights) */
13
+ --nord4: #d8dee9; /* Body text */
14
+ --nord5: #e5e9f0; /* Elevated text */
15
+ --nord6: #eceff4; /* High-contrast headings */
16
+
17
+ /* Frost (Calm arctic accents - strictly matte, no neon) */
18
+ --nord7: #8fbcbb; /* Sage frost */
19
+ --nord8: #88c0d0; /* Glacial blue */
20
+ --nord9: #81a1c1; /* Steel blue */
21
+ --nord10: #5e81ac; /* Deep arctic blue */
22
+
23
+ /* Aurora (Subtle indicators) */
24
+ --nord11: #bf616a; /* Muted red */
25
+ --nord12: #d08770; /* Orange */
26
+ --nord13: #ebcb8b; /* Yellow */
27
+ --nord14: #a3be8c; /* Muted green */
28
+ --nord15: #b48ead; /* Purple */
29
+
30
+ /* Text on a Frost fill (pressed segments, primary buttons) */
31
+ --n-on-frost: #2e3440;
32
+
33
+ /* Secondary text. nord3 is the palette's line color: as text on a Polar
34
+ Night panel it is under 1.5:1. Snow Storm toward the panel reads at 4.6:1
35
+ (the light block's mix: 4.9:1). */
36
+ --n-muted: color-mix(in srgb, var(--nord4) 70%, var(--nord1));
37
+
38
+ --n-font: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
39
+ --n-mono: "JetBrains Mono", "Cascadia Code", "Consolas", monospace;
40
+ }
41
+
42
+ :root[data-agy-theme="nordic"][data-agy-mode="light"] {
43
+ /* Snow Storm (Light palette) */
44
+ --nord0: #eceff4; /* Base background */
45
+ --nord1: #e5e9f0; /* Panels */
46
+ --nord2: #ffffff; /* Cards */
47
+ --nord3: #d8dee9; /* Borders */
48
+
49
+ --nord4: #434c5e; /* Body text */
50
+ --nord5: #3b4252; /* Text */
51
+ --nord6: #2e3440; /* Headings */
52
+
53
+ --nord7: #5e81ac;
54
+ --nord8: #5e81ac;
55
+ --nord9: #4c566a;
56
+ --nord10: #434c5e;
57
+
58
+ --n-muted: color-mix(in srgb, var(--nord4) 85%, var(--nord1));
59
+ --n-on-frost: #ffffff;
60
+ }
package/themes/nordic.css CHANGED
@@ -5,48 +5,8 @@
5
5
  Pure Arctic Ice Studio design language: Polar Night, Snow Storm, and Frost.
6
6
  ========================================================================== */
7
7
 
8
- :root[data-agy-theme="nordic"] {
9
- /* Polar Night (Dark palette) */
10
- --nord0: #2e3440; /* Base background */
11
- --nord1: #3b4252; /* Elevated panels */
12
- --nord2: #434c5e; /* Cards & active rows */
13
- --nord3: #4c566a; /* Borders & muted lines */
14
-
15
- /* Snow Storm (Text & highlights) */
16
- --nord4: #d8dee9; /* Body text */
17
- --nord5: #e5e9f0; /* Elevated text */
18
- --nord6: #eceff4; /* High-contrast headings */
19
-
20
- /* Frost (Calm arctic accents - strictly matte, no neon) */
21
- --nord7: #8fbcbb; /* Sage frost */
22
- --nord8: #88c0d0; /* Glacial blue */
23
- --nord9: #81a1c1; /* Steel blue */
24
- --nord10: #5e81ac; /* Deep arctic blue */
25
-
26
- /* Aurora (Subtle indicators) */
27
- --nord11: #bf616a; /* Muted red */
28
- --nord14: #a3be8c; /* Muted green */
29
-
30
- --n-font: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
31
- --n-mono: "JetBrains Mono", "Cascadia Code", "Consolas", monospace;
32
- }
8
+ /* 00 — Tokens: nordic-tokens.css (loaded before this file) */
33
9
 
34
- :root[data-agy-theme="nordic"][data-agy-mode="light"] {
35
- /* Snow Storm (Light palette) */
36
- --nord0: #eceff4; /* Base background */
37
- --nord1: #e5e9f0; /* Panels */
38
- --nord2: #ffffff; /* Cards */
39
- --nord3: #d8dee9; /* Borders */
40
-
41
- --nord4: #434c5e; /* Body text */
42
- --nord5: #3b4252; /* Text */
43
- --nord6: #2e3440; /* Headings */
44
-
45
- --nord7: #5e81ac;
46
- --nord8: #5e81ac;
47
- --nord9: #4c566a;
48
- --nord10: #434c5e;
49
- }
50
10
 
51
11
  /* 01 — App token bridge */
52
12
  :root[data-agy-theme="nordic"] {
@@ -58,13 +18,15 @@
58
18
  --secondary: var(--nord2) !important;
59
19
  --secondary-foreground: var(--nord5) !important;
60
20
  --muted: var(--nord2) !important;
61
- --muted-foreground: var(--nord3) !important;
21
+ --muted-foreground: var(--n-muted) !important;
22
+ --placeholder: var(--n-muted) !important;
62
23
  --border: var(--nord3) !important;
63
24
  --card: var(--nord2) !important;
64
25
  --card-border: var(--nord3) !important;
65
26
  --sidebar: var(--nord0) !important;
66
27
  --sidebar-secondary: var(--nord2) !important;
67
28
  --sidebar-muted: var(--nord2) !important;
29
+ --link: var(--nord8) !important;
68
30
  }
69
31
 
70
32
  /* 05 — Onyx layer override */
@@ -84,27 +46,34 @@
84
46
  }
85
47
 
86
48
  /* 10 — Main Inset Panel */
87
- :root[data-agy-theme="nordic"] .group\/pane,
88
- :root[data-agy-theme="nordic"] .agy-sheet:not(:has(.group\/pane)) .browser-hole-opaque {
49
+ /* The app lays the panel out itself (.agy-sheet, with --card-gap,
50
+ --card-radius, --card-edge and --shell-canvas); the theme sets those
51
+ variables. A nord1 panel on the nord0 window, 10px corners, and the edge in
52
+ nord3: a border is part of Nord's language, so the app's hairline stays, at
53
+ a full pixel. A docked side panel shares that edge with the panel. */
54
+ :root[data-agy-theme="nordic"] .agy-inset-shell {
55
+ --shell-canvas: var(--nord0);
56
+ --card-gap: 10px;
57
+ --card-radius: 10px;
58
+ --card-edge: var(--nord3);
59
+ --sash-line: var(--nord8);
60
+ --sash-glow: transparent;
61
+ }
62
+ :root[data-agy-theme="nordic"] .agy-sheet [data-main-content-body],
63
+ :root[data-agy-theme="nordic"] .agy-inset-shell [data-side-panel-body],
64
+ :root[data-agy-theme="nordic"] [data-testid="sidecar-iframe-slot"] { /* a sidecar's frame is mounted over its pane, not in it */
89
65
  --background: var(--nord1);
90
66
  --color-background: var(--nord1);
91
- width: auto;
92
- height: calc(100% - 10px);
93
- margin: 0 10px 10px 6px;
94
- border-radius: 10px;
95
- border: 1px solid var(--nord3);
96
- background: var(--nord1);
97
- box-shadow: 0 4px 16px -4px rgb(0 0 0 / 0.3);
98
- overflow: hidden;
67
+ }
68
+ :root[data-agy-theme="nordic"] .agy-sheet[data-sheet-inset] [data-main-content-body]::after,
69
+ :root[data-agy-theme="nordic"] .agy-inset-shell [data-side-panel-body]::after {
70
+ box-shadow: inset 0 0 0 1px var(--card-edge);
99
71
  }
100
72
  :root[data-agy-theme="nordic"] .agy-sheet {
101
73
  background-image: none !important;
102
74
  }
103
- :root[data-agy-theme="nordic"] .bg-border.flex-shrink-0.z-30.h-full {
104
- background: var(--nord0);
105
- }
106
75
 
107
- /* Inactive webview occlusion guard */
76
+ /* Inactive webview occlusion guard: prevent GPU compositor bleeding */
108
77
  div[style*="opacity: 0.005"] webview,
109
78
  div[style*="display: none"] webview,
110
79
  webview[style*="opacity: 0.005"] {
@@ -112,6 +81,7 @@ webview[style*="opacity: 0.005"] {
112
81
  pointer-events: none !important;
113
82
  }
114
83
 
84
+
115
85
  /* 20 — Typography: Calm, Balanced Scandinavian Grotesque */
116
86
  :root[data-agy-theme="nordic"] {
117
87
  font-family: var(--n-font);
@@ -125,17 +95,16 @@ webview[style*="opacity: 0.005"] {
125
95
  color: var(--nord4);
126
96
  }
127
97
 
128
- :root[data-agy-theme="nordic"] h1,
129
- :root[data-agy-theme="nordic"] h2,
130
- :root[data-agy-theme="nordic"] h3,
131
- :root[data-agy-theme="nordic"] h4 {
98
+ /* chat prose only: the app's own headings (Settings, panels) keep their
99
+ sizes and take the dialog rules (60) */
100
+ :root[data-agy-theme="nordic"] :is(.prose, [role="article"]) :is(h1, h2, h3, h4) {
132
101
  font-family: var(--n-font);
133
102
  font-weight: 600;
134
103
  color: var(--nord6);
135
104
  letter-spacing: -0.01em;
136
105
  }
137
106
 
138
- :root[data-agy-theme="nordic"] h1 {
107
+ :root[data-agy-theme="nordic"] :is(.prose, [role="article"]) h1 {
139
108
  font-size: 1.35rem;
140
109
  border-bottom: 1px solid var(--nord3);
141
110
  padding-bottom: 6px;
@@ -191,7 +160,9 @@ webview[style*="opacity: 0.005"] {
191
160
  font-family: var(--n-mono) !important;
192
161
  font-size: 13px !important;
193
162
  }
194
- :root[data-agy-theme="nordic"] pre {
163
+ /* Fenced code in the chat is the app's own bordered block (.agy-code): a
164
+ second box around a pre inside it would draw two edges */
165
+ :root[data-agy-theme="nordic"] pre:not(.agy-code pre) {
195
166
  background: var(--nord0) !important;
196
167
  border: 1px solid var(--nord3) !important;
197
168
  border-radius: 6px !important;
@@ -222,8 +193,9 @@ webview[style*="opacity: 0.005"] {
222
193
  font-size: 13px;
223
194
  color: var(--nord4);
224
195
  }
225
- :root[data-agy-theme="nordic"] [role="menuitem"]:hover,
226
- :root[data-agy-theme="nordic"] [role="menuitemradio"]:hover {
196
+ /* disabled items (an unavailable model) take no hover fill: it only dims them */
197
+ :root[data-agy-theme="nordic"] [role="menuitem"]:not([data-disabled], [aria-disabled="true"]):hover,
198
+ :root[data-agy-theme="nordic"] [role="menuitemradio"]:not([data-disabled], [aria-disabled="true"]):hover {
227
199
  background: var(--nord2);
228
200
  color: var(--nord6);
229
201
  }
@@ -241,6 +213,422 @@ webview[style*="opacity: 0.005"] {
241
213
  background: var(--nord8);
242
214
  }
243
215
 
216
+ /* 60 — Dialogs & Settings: frost tiles ------------------------------------- */
217
+ /* Settings as Nord lays out a preferences window: a raised Polar Night
218
+ column for the index (Frost headings, a frost-tinted current page), then
219
+ each group as a solid tile on the base, its rows parted by grooves of the
220
+ base color. Controls are flat fills with no strokes; Frost marks what is
221
+ on or chosen. Selectors go through .agy-dialog to outrank the app's glass
222
+ rules (body[data-newux-theme]). */
223
+ :root[data-agy-theme="nordic"] .agy-dialog {
224
+ border: 1px solid var(--nord1) !important;
225
+ border-radius: 12px !important;
226
+ background: var(--nord0);
227
+ box-shadow: 0 20px 50px -12px rgb(0 0 0 / 0.5) !important;
228
+ color: var(--nord4);
229
+ font-family: var(--n-font);
230
+ }
231
+ :root[data-agy-theme="nordic"] .settings-modal-backdrop {
232
+ background: color-mix(in srgb, #2e3440 55%, transparent);
233
+ }
234
+ :root[data-agy-theme="nordic"] .agy-dialog > button[aria-label="Close"] {
235
+ border-radius: 6px !important;
236
+ color: var(--n-muted);
237
+ }
238
+ :root[data-agy-theme="nordic"] .agy-dialog > button[aria-label="Close"]:hover {
239
+ background: var(--nord2);
240
+ color: var(--nord6);
241
+ }
242
+ :root[data-agy-theme="nordic"] .settings-modal-container .bg-background {
243
+ background: transparent;
244
+ }
245
+
246
+ /* index column: raised, Frost group headings */
247
+ :root[data-agy-theme="nordic"] [data-testid="settings-sidebar"] {
248
+ background: var(--nord1);
249
+ }
250
+ :root[data-agy-theme="nordic"] [data-testid="settings-sidebar"] > div:first-child {
251
+ gap: 2px;
252
+ padding: 18px 0 12px;
253
+ }
254
+ :root[data-agy-theme="nordic"] [data-testid="settings-sidebar"] .px-4 {
255
+ padding: 0 20px;
256
+ }
257
+ :root[data-agy-theme="nordic"] [data-testid="settings-sidebar"] h1 {
258
+ margin-bottom: 8px;
259
+ font-size: 15px;
260
+ font-weight: 600;
261
+ color: var(--nord6);
262
+ }
263
+ :root[data-agy-theme="nordic"] [data-testid="settings-sidebar"] .px-4.mt-2 {
264
+ margin-top: 14px;
265
+ }
266
+ :root[data-agy-theme="nordic"] [data-testid="settings-sidebar"] h2 {
267
+ margin-bottom: 4px;
268
+ font-size: 11px;
269
+ font-weight: 700;
270
+ letter-spacing: 0.1em;
271
+ text-transform: uppercase;
272
+ color: var(--nord8);
273
+ }
274
+ :root[data-agy-theme="nordic"] [data-testid="settings-sidebar"] .mx-2 {
275
+ margin: 0 10px;
276
+ }
277
+ :root[data-agy-theme="nordic"] [data-testid="settings-sidebar"] button[data-testid^="settings-nav-item-"] {
278
+ min-height: 32px;
279
+ padding: 0 10px;
280
+ border-radius: 6px;
281
+ color: var(--nord4);
282
+ font-size: 13.5px;
283
+ }
284
+ :root[data-agy-theme="nordic"] [data-testid="settings-sidebar"] button[data-testid^="settings-nav-item-"] span {
285
+ color: inherit;
286
+ }
287
+ :root[data-agy-theme="nordic"] [data-testid="settings-sidebar"] button[data-testid^="settings-nav-item-"]:hover {
288
+ background: var(--nord2);
289
+ color: var(--nord6);
290
+ }
291
+ :root[data-agy-theme="nordic"] [data-testid="settings-sidebar"] button[data-testid^="settings-nav-item-"].bg-sidebar-secondary {
292
+ background: color-mix(in srgb, var(--nord8) 18%, var(--nord1));
293
+ color: var(--nord8);
294
+ font-weight: 600;
295
+ }
296
+ :root[data-agy-theme="nordic"] [data-testid="settings-sidebar"] button.mx-4 {
297
+ margin: 2px 20px 0;
298
+ color: var(--nord9);
299
+ text-decoration: none;
300
+ }
301
+ :root[data-agy-theme="nordic"] [data-testid="settings-sidebar"] button.mx-4:hover {
302
+ color: var(--nord8);
303
+ }
304
+ :root[data-agy-theme="nordic"] [data-testid="settings-sidebar"] > .border-t {
305
+ border-color: var(--nord2);
306
+ }
307
+ :root[data-agy-theme="nordic"] [data-testid="settings-sidebar"] > .border-t > button:hover {
308
+ background: var(--nord2);
309
+ }
310
+ :root[data-agy-theme="nordic"] [data-testid="settings-sidebar"] > .border-t > button > div:first-child {
311
+ background: var(--nord10);
312
+ color: var(--nord6);
313
+ }
314
+
315
+ /* page */
316
+ :root[data-agy-theme="nordic"] .settings-modal-container .p-6.max-w-2xl {
317
+ gap: 22px;
318
+ padding: 32px 32px 40px;
319
+ }
320
+ :root[data-agy-theme="nordic"] .settings-modal-container h2.text-2xl {
321
+ font-size: 24px;
322
+ font-weight: 600;
323
+ letter-spacing: -0.01em;
324
+ color: var(--nord6);
325
+ }
326
+ :root[data-agy-theme="nordic"] .settings-modal-container h2.text-2xl + div {
327
+ color: var(--n-muted);
328
+ }
329
+ :root[data-agy-theme="nordic"] .settings-modal-container h3 {
330
+ font-size: 13px;
331
+ font-weight: 600;
332
+ color: var(--nord8);
333
+ }
334
+ :root[data-agy-theme="nordic"] .settings-modal-container .leading-relaxed {
335
+ color: var(--n-muted);
336
+ }
337
+
338
+ /* tiles: a solid Polar Night block, rows parted by grooves of the base */
339
+ :root[data-agy-theme="nordic"] .agy-dialog .agy-card {
340
+ --color-border: var(--nord0);
341
+ border: 0;
342
+ border-radius: 10px;
343
+ background: var(--nord1);
344
+ }
345
+ :root[data-agy-theme="nordic"] .agy-dialog .agy-card > :not(:last-child) {
346
+ border-color: var(--nord0) !important;
347
+ border-bottom-width: 2px;
348
+ }
349
+ :root[data-agy-theme="nordic"] .agy-dialog .agy-card .py-2.px-3 {
350
+ min-height: 56px;
351
+ padding: 12px 18px;
352
+ font-size: 14px;
353
+ font-weight: 500;
354
+ color: var(--nord5);
355
+ }
356
+ :root[data-agy-theme="nordic"] .agy-dialog .agy-card .text-sm {
357
+ font-size: 12.5px;
358
+ font-weight: 400;
359
+ color: var(--n-muted);
360
+ }
361
+ :root[data-agy-theme="nordic"] .agy-dialog .agy-card > button:hover {
362
+ background: var(--nord2);
363
+ color: var(--nord6);
364
+ }
365
+ :root[data-agy-theme="nordic"] .agy-dialog [data-testid="settings-row-badge"] {
366
+ padding: 2px 7px;
367
+ border: 0;
368
+ background: var(--nord3);
369
+ color: var(--nord6);
370
+ font-size: 10.5px;
371
+ }
372
+ :root[data-agy-theme="nordic"] .agy-dialog code {
373
+ border: 0;
374
+ border-radius: 4px;
375
+ background: var(--nord2);
376
+ color: var(--nord7);
377
+ font-family: var(--n-mono);
378
+ }
379
+
380
+ /* controls: flat Polar Night fills, no strokes, 6px corners */
381
+ :root[data-agy-theme="nordic"] .agy-dialog :is(.agy-button-sm, .agy-button-md).bg-secondary,
382
+ :root[data-agy-theme="nordic"] .agy-dialog .agy-select-trigger {
383
+ height: 32px;
384
+ padding: 0 12px;
385
+ border: 0 !important;
386
+ border-radius: 6px !important;
387
+ background: var(--nord2);
388
+ color: var(--nord6);
389
+ font-size: 13px;
390
+ font-weight: 500;
391
+ transition: background-color 100ms linear, box-shadow 100ms linear;
392
+ }
393
+ :root[data-agy-theme="nordic"] .agy-dialog :is(.agy-button-sm, .agy-button-md).bg-secondary:hover,
394
+ :root[data-agy-theme="nordic"] .agy-dialog .agy-select-trigger:hover {
395
+ background: var(--nord3);
396
+ color: var(--nord6);
397
+ }
398
+ :root[data-agy-theme="nordic"] .agy-dialog .agy-select-trigger[aria-expanded="true"] {
399
+ box-shadow: inset 0 0 0 1px var(--nord8);
400
+ }
401
+ :root[data-agy-theme="nordic"] .agy-dialog .agy-select-trigger svg {
402
+ color: var(--nord8);
403
+ opacity: 1;
404
+ }
405
+ :root[data-agy-theme="nordic"] .agy-dialog :is(a, button:not([role])).bg-primary {
406
+ padding: 6px 14px;
407
+ border-radius: 6px !important;
408
+ background: var(--nord8);
409
+ color: var(--n-on-frost);
410
+ font-weight: 600;
411
+ }
412
+ :root[data-agy-theme="nordic"] .agy-dialog :is(a, button:not([role])).bg-primary:hover {
413
+ background: var(--nord7);
414
+ }
415
+ :root[data-agy-theme="nordic"] .agy-dialog [data-testid="delete-project-button"] {
416
+ border-radius: 6px !important;
417
+ background: var(--nord11);
418
+ color: #eceff4;
419
+ }
420
+ :root[data-agy-theme="nordic"] .agy-dialog :is(.agy-button-sm.text-link, button.self-start.rounded-md) {
421
+ color: var(--nord8);
422
+ }
423
+ :root[data-agy-theme="nordic"] .agy-dialog :is(.agy-button-sm.text-link, button.self-start.rounded-md):hover {
424
+ background: color-mix(in srgb, var(--nord8) 12%, transparent);
425
+ color: var(--nord8);
426
+ text-decoration: none;
427
+ }
428
+ :root[data-agy-theme="nordic"] .agy-dialog :is(.agy-button-icon-sm, .agy-button-icon):not(.bg-secondary) {
429
+ border-radius: 6px !important;
430
+ color: var(--n-muted);
431
+ }
432
+ :root[data-agy-theme="nordic"] .agy-dialog :is(.agy-button-icon-sm, .agy-button-icon):not(.bg-secondary):hover {
433
+ background: var(--nord2);
434
+ color: var(--nord6);
435
+ }
436
+ /* keys: a filled cap with a groove at the bottom */
437
+ :root[data-agy-theme="nordic"] .agy-dialog .agy-button-xs.border {
438
+ height: 26px;
439
+ padding: 0 8px;
440
+ border: 0;
441
+ border-radius: 5px !important;
442
+ background: var(--nord2);
443
+ box-shadow: inset 0 -2px 0 var(--nord3);
444
+ color: var(--nord6);
445
+ font-family: var(--n-mono);
446
+ font-size: 12px;
447
+ }
448
+ :root[data-agy-theme="nordic"] .agy-dialog .agy-button-xs.border:hover {
449
+ box-shadow: inset 0 -2px 0 var(--nord8);
450
+ }
451
+
452
+ /* segmented control: a Polar Night track, the chosen segment in Frost */
453
+ :root[data-agy-theme="nordic"] .agy-dialog [data-slot="toggle-group"] {
454
+ height: 32px;
455
+ padding: 3px;
456
+ gap: 2px;
457
+ border: 0 !important;
458
+ border-radius: 8px;
459
+ background: var(--nord2) !important;
460
+ box-shadow: none !important;
461
+ }
462
+ :root[data-agy-theme="nordic"] .agy-dialog [data-slot="toggle-group"] > button {
463
+ padding: 0 12px;
464
+ border-radius: 6px;
465
+ color: var(--nord4) !important;
466
+ font-size: 13px;
467
+ box-shadow: none !important;
468
+ }
469
+ :root[data-agy-theme="nordic"] .agy-dialog [data-slot="toggle-group"] > button:hover {
470
+ background: var(--nord3) !important;
471
+ }
472
+ :root[data-agy-theme="nordic"] .agy-dialog [data-slot="toggle-group"] > button[data-pressed] {
473
+ background: var(--nord8) !important;
474
+ color: var(--n-on-frost) !important;
475
+ font-weight: 600;
476
+ }
477
+
478
+ /* switch: 40 x 22, Polar Night off, Frost on, a Snow Storm knob */
479
+ :root[data-agy-theme="nordic"] [role="switch"].rounded-full {
480
+ width: 40px;
481
+ height: 22px;
482
+ padding: 0;
483
+ border: 0;
484
+ background: var(--nord3) !important;
485
+ }
486
+ :root[data-agy-theme="nordic"] [role="switch"].rounded-full:is([aria-checked="true"], [data-checked]) {
487
+ background: var(--nord8) !important;
488
+ }
489
+ :root[data-agy-theme="nordic"] [role="switch"].rounded-full > span {
490
+ width: 16px;
491
+ height: 16px;
492
+ background: #eceff4;
493
+ box-shadow: 0 1px 2px rgb(46 52 64 / 0.4) !important;
494
+ transform: translateX(3px) !important;
495
+ transition: transform 150ms ease-out;
496
+ }
497
+ :root[data-agy-theme="nordic"] [role="switch"].rounded-full:is([aria-checked="true"], [data-checked]) > span {
498
+ transform: translateX(21px) !important;
499
+ }
500
+
501
+ /* slider */
502
+ :root[data-agy-theme="nordic"] .agy-dialog input[type="range"] {
503
+ --primary: var(--nord8);
504
+ --secondary: var(--nord3);
505
+ height: 4px;
506
+ }
507
+ :root[data-agy-theme="nordic"] .agy-dialog input[type="range"]::-webkit-slider-thumb {
508
+ width: 14px;
509
+ height: 14px;
510
+ border: 2px solid var(--nord8);
511
+ background: #eceff4;
512
+ }
513
+
514
+ /* option cards: tiles; the chosen one Frost-edged and tinted */
515
+ :root[data-agy-theme="nordic"] .agy-dialog [role="radio"].rounded-xl {
516
+ border: 1px solid transparent;
517
+ border-radius: 10px;
518
+ background: var(--nord1);
519
+ box-shadow: none;
520
+ color: var(--nord5);
521
+ }
522
+ :root[data-agy-theme="nordic"] .agy-dialog [role="radio"].rounded-xl:hover {
523
+ background: var(--nord2);
524
+ }
525
+ :root[data-agy-theme="nordic"] .agy-dialog [role="radio"].rounded-xl:is([data-checked], [aria-checked="true"]) {
526
+ border-color: var(--nord8);
527
+ background: color-mix(in srgb, var(--nord8) 10%, var(--nord1));
528
+ color: var(--nord6);
529
+ }
530
+ :root[data-agy-theme="nordic"] .agy-dialog [role="radio"].rounded-xl:is([data-checked], [aria-checked="true"]) svg {
531
+ color: var(--nord8);
532
+ }
533
+
534
+ /* text fields: filled, a Frost edge on focus (through the variables the
535
+ app's layered !important utilities read) */
536
+ :root[data-agy-theme="nordic"] .agy-dialog :is(input.agy-field, input.bg-muted, .h-8.rounded-lg.bg-muted.border) {
537
+ --color-muted: var(--nord2);
538
+ --color-border: var(--nord2);
539
+ border-color: var(--color-border);
540
+ border-radius: 6px !important;
541
+ background: var(--nord2);
542
+ color: var(--nord6);
543
+ font-size: 13px !important;
544
+ }
545
+ :root[data-agy-theme="nordic"] .agy-dialog :is(input.agy-field:focus, input.bg-muted:focus, .h-8.rounded-lg.bg-muted.border:focus-within) {
546
+ --color-border: var(--nord8);
547
+ outline: none;
548
+ }
549
+
550
+ /* usage rings and token bars: Frost on Polar Night; Aurora when low */
551
+ :root[data-agy-theme="nordic"] circle:has(+ [data-testid="quota-progress-circle"]) {
552
+ stroke: var(--nord3);
553
+ stroke-opacity: 1;
554
+ }
555
+ :root[data-agy-theme="nordic"] .rounded-full:has(> svg [data-testid="quota-progress-circle"]) {
556
+ background: transparent;
557
+ }
558
+ :root[data-agy-theme="nordic"] [data-testid="quota-progress-circle"] {
559
+ stroke: var(--nord8);
560
+ }
561
+ :root[data-agy-theme="nordic"] [data-testid="quota-progress-circle"]:is(.stroke-yellow-500, .stroke-amber-500, .stroke-orange-500) {
562
+ stroke: var(--nord13);
563
+ }
564
+ :root[data-agy-theme="nordic"] [data-testid="quota-progress-circle"]:is(.stroke-red-500, .stroke-destructive) {
565
+ stroke: var(--nord11);
566
+ }
567
+ :root[data-agy-theme="nordic"] .agy-dialog {
568
+ --chart-blue: var(--nord8);
569
+ --chart-green: var(--nord14);
570
+ --chart-purple: var(--nord15);
571
+ --chart-yellow: var(--nord13);
572
+ --chart-orange: var(--nord12);
573
+ --chart-red: var(--nord11);
574
+ }
575
+ :root[data-agy-theme="nordic"] .agy-dialog .h-2.rounded-full.bg-muted {
576
+ height: 6px;
577
+ background: var(--nord2);
578
+ }
579
+ :root[data-agy-theme="nordic"] [data-testid="workspace-customizations-view"] .border.border-border.rounded-xl {
580
+ --color-border: var(--nord0);
581
+ border: 0;
582
+ border-radius: 10px;
583
+ background: var(--nord1);
584
+ }
585
+ :root[data-agy-theme="nordic"] .agy-dialog span.rounded:is(.bg-blue-500\/10, .bg-purple-500\/10, .bg-green-500\/10, .bg-orange-500\/10) {
586
+ border-radius: 4px;
587
+ background: var(--nord2);
588
+ color: var(--nord8);
589
+ }
590
+ :root[data-agy-theme="nordic"] .agy-dialog span.rounded:is(.bg-purple-500\/10, .bg-green-500\/10, .bg-orange-500\/10) {
591
+ color: var(--nord15);
592
+ }
593
+
594
+ /* "Restart to Update": a Frost-tinted tag that fills with Frost on hover;
595
+ the app's pulses are stilled */
596
+ :root[data-agy-theme="nordic"] [data-testid="app-update-button"] {
597
+ animation: none !important;
598
+ }
599
+ :root[data-agy-theme="nordic"] [data-testid="app-update-button"]:not(.w-6) {
600
+ width: auto;
601
+ height: 26px;
602
+ padding: 0 12px;
603
+ border-radius: 6px;
604
+ background: color-mix(in srgb, var(--nord8) 18%, var(--nord0));
605
+ color: var(--nord8);
606
+ font-size: 12px;
607
+ font-weight: 600;
608
+ }
609
+ :root[data-agy-theme="nordic"] [data-testid="app-update-button"]:not(.w-6):hover {
610
+ background: var(--nord8);
611
+ color: var(--n-on-frost);
612
+ }
613
+ :root[data-agy-theme="nordic"] [data-testid="app-update-button"].w-6 {
614
+ color: var(--nord8);
615
+ }
616
+
617
+ /* Chips in a sent message (quotes, files, terminals): they take the bubble's
618
+ own ink, not the app's text colors, which are meant for the panel; a 12%
619
+ tint of that ink marks them, the icon and supporting parts at 80% */
620
+ :root[data-agy-theme="nordic"] .agy-user-bubble .inline-pill {
621
+ color: inherit;
622
+ background: color-mix(in srgb, currentColor 12%, transparent);
623
+ border-radius: 5px;
624
+ }
625
+ :root[data-agy-theme="nordic"] .agy-user-bubble .inline-pill :is(.text-foreground, .text-secondary-foreground) {
626
+ color: inherit;
627
+ }
628
+ :root[data-agy-theme="nordic"] .agy-user-bubble .inline-pill .text-muted-foreground {
629
+ color: color-mix(in srgb, currentColor 80%, transparent);
630
+ }
631
+
244
632
  /* 80 — Voice Mode & Gemini Live Harmonization */
245
633
  :root[data-agy-theme="nordic"] [data-testid="voice-live-pill"] {
246
634
  background: var(--nord2) !important;
@@ -281,7 +669,7 @@ webview[style*="opacity: 0.005"] {
281
669
  }
282
670
  :root[data-agy-theme="nordic"] [data-testid="voice-picker"] .voice-picker-dot[aria-current="true"] > span {
283
671
  background: var(--nord8) !important;
284
- box-shadow: 0 0 8px rgba(136, 192, 208, 0.5) !important;
672
+ box-shadow: none !important;
285
673
  }
286
674
  :root[data-agy-theme="nordic"] [data-testid="voice-picker"] button[data-testid="voice-picker-use"] {
287
675
  background: var(--nord8) !important;
@@ -304,8 +692,7 @@ webview[style*="opacity: 0.005"] {
304
692
  border-bottom: none !important;
305
693
  border-radius: 12px 12px 0 0 !important;
306
694
  box-shadow: 0 -8px 24px -8px rgb(0 0 0 / 0.4) !important;
307
- backdrop-filter: blur(16px) !important;
308
- -webkit-backdrop-filter: blur(16px) !important;
695
+ backdrop-filter: none !important; /* opaque: a blur behind it was pure cost */
309
696
  }
310
697
  :root[data-agy-theme="nordic"] [data-testid="live-docked"] [data-testid="voice-end-button"],
311
698
  :root[data-agy-theme="nordic"] [data-testid="live-docked"] [data-testid="voice-call-end"] {
@@ -368,3 +755,6 @@ webview[style*="opacity: 0.005"] {
368
755
  border-color: var(--nord8) !important;
369
756
  }
370
757
 
758
+
759
+ /* 90 — Swarm and other sidecar panes: themes/frames/nordic.css. They are
760
+ cross-origin frames; frame-host.js loads that stylesheet inside them. */