@materialwebunofficial/antigravity-themes 1.0.5 → 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,54 @@
1
+ /* AGY "E-Ink / Paper" — tokens. Shared by the window (paper.css) and by
2
+ sidecar frames (frames/paper.css), which load no other part of the theme. */
3
+
4
+ :root[data-agy-theme="paper"] {
5
+ /* Inverted E-Ink Dark Mode (Kindle Dark / Night Reading) */
6
+ --p-window: #111111;
7
+ --p-panel: #181818;
8
+ --p-raised: #222222;
9
+ --p-high: #2c2c2c;
10
+ --p-inset: #0d0d0d;
11
+
12
+ --p-line: #2f2f2f;
13
+ --p-line-2: #444444;
14
+ --p-line-3: #666666;
15
+ --p-hover: #252525;
16
+ --p-select: #333333;
17
+
18
+ --p-text-max: #ffffff;
19
+ --p-text: #e2e2e2;
20
+ --p-text-2: #9e9e9e;
21
+ --p-text-3: #707070;
22
+
23
+ --p-primary: #ffffff;
24
+ --p-primary-ink: #000000;
25
+ --p-accent: #d4d4d4;
26
+
27
+ --p-font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
28
+ --p-font-read: "Charter", "Georgia", "Cambria", serif;
29
+ --p-font-mono: "Consolas", "Courier New", monospace;
30
+ }
31
+
32
+ :root[data-agy-theme="paper"][data-agy-mode="light"] {
33
+ /* True E-Paper Light Mode (reMarkable / Fresh Book Page) */
34
+ --p-window: #e7e7e7;
35
+ --p-panel: #f6f6f6;
36
+ --p-raised: #ffffff;
37
+ --p-high: #ebebeb;
38
+ --p-inset: #dedede;
39
+
40
+ --p-line: #d4d4d4;
41
+ --p-line-2: #bcbcbc;
42
+ --p-line-3: #888888;
43
+ --p-hover: #eeeeee;
44
+ --p-select: #e0e0e0;
45
+
46
+ --p-text-max: #000000;
47
+ --p-text: #1a1a1a;
48
+ --p-text-2: #555555;
49
+ --p-text-3: #777777;
50
+
51
+ --p-primary: #000000;
52
+ --p-primary-ink: #ffffff;
53
+ --p-accent: #222222;
54
+ }
package/themes/paper.css CHANGED
@@ -5,57 +5,8 @@
5
5
  and clean typography tailored for deep focus and reading.
6
6
  ========================================================================== */
7
7
 
8
- :root[data-agy-theme="paper"] {
9
- /* Inverted E-Ink Dark Mode (Kindle Dark / Night Reading) */
10
- --p-window: #111111;
11
- --p-panel: #181818;
12
- --p-raised: #222222;
13
- --p-high: #2c2c2c;
14
- --p-inset: #0d0d0d;
15
-
16
- --p-line: #2f2f2f;
17
- --p-line-2: #444444;
18
- --p-line-3: #666666;
19
- --p-hover: #252525;
20
- --p-select: #333333;
21
-
22
- --p-text-max: #ffffff;
23
- --p-text: #e2e2e2;
24
- --p-text-2: #9e9e9e;
25
- --p-text-3: #707070;
26
-
27
- --p-primary: #ffffff;
28
- --p-primary-ink: #000000;
29
- --p-accent: #d4d4d4;
30
-
31
- --p-font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
32
- --p-font-read: "Charter", "Georgia", "Cambria", serif;
33
- --p-font-mono: "Consolas", "Courier New", monospace;
34
- }
35
-
36
- :root[data-agy-theme="paper"][data-agy-mode="light"] {
37
- /* True E-Paper Light Mode (reMarkable / Fresh Book Page) */
38
- --p-window: #e7e7e7;
39
- --p-panel: #f6f6f6;
40
- --p-raised: #ffffff;
41
- --p-high: #ebebeb;
42
- --p-inset: #dedede;
43
-
44
- --p-line: #d4d4d4;
45
- --p-line-2: #bcbcbc;
46
- --p-line-3: #888888;
47
- --p-hover: #eeeeee;
48
- --p-select: #e0e0e0;
49
-
50
- --p-text-max: #000000;
51
- --p-text: #1a1a1a;
52
- --p-text-2: #555555;
53
- --p-text-3: #777777;
54
-
55
- --p-primary: #000000;
56
- --p-primary-ink: #ffffff;
57
- --p-accent: #222222;
58
- }
8
+ /* 00 — Tokens: paper-tokens.css (loaded before this file) */
9
+
59
10
 
60
11
  /* 01 — App token bridge */
61
12
  :root[data-agy-theme="paper"] {
@@ -74,6 +25,12 @@
74
25
  --sidebar: var(--p-window) !important;
75
26
  --sidebar-secondary: var(--p-select) !important;
76
27
  --sidebar-muted: var(--p-raised) !important;
28
+ --link: var(--p-text-max) !important; /* monochrome: links are underlined ink */
29
+ }
30
+ :root[data-agy-theme="paper"] .text-link {
31
+ text-decoration: underline;
32
+ text-decoration-thickness: 1px;
33
+ text-underline-offset: 2px;
77
34
  }
78
35
 
79
36
  /* 05 — Onyx layer override */
@@ -93,27 +50,34 @@
93
50
  }
94
51
 
95
52
  /* 10 — Main Reading Panel & Book Layout */
96
- :root[data-agy-theme="paper"] .group\/pane,
97
- :root[data-agy-theme="paper"] .agy-sheet:not(:has(.group\/pane)) .browser-hole-opaque {
53
+ /* The app lays the panel out itself (.agy-sheet, with --card-gap,
54
+ --card-radius, --card-edge and --shell-canvas); the theme sets those
55
+ variables. The page: a sheet with 4px corners and a crisp 1px rule, no
56
+ shadow. A rule is how e-ink draws structure, so the app's hairline stays,
57
+ at a full pixel. A docked side panel is the facing page: it shares the rule. */
58
+ :root[data-agy-theme="paper"] .agy-inset-shell {
59
+ --shell-canvas: var(--p-window);
60
+ --card-gap: 10px;
61
+ --card-radius: 4px;
62
+ --card-edge: var(--p-line-2);
63
+ --sash-line: var(--p-line-3);
64
+ --sash-glow: transparent;
65
+ }
66
+ :root[data-agy-theme="paper"] .agy-sheet [data-main-content-body],
67
+ :root[data-agy-theme="paper"] .agy-inset-shell [data-side-panel-body],
68
+ :root[data-agy-theme="paper"] [data-testid="sidecar-iframe-slot"] { /* a sidecar's frame is mounted over its pane, not in it */
98
69
  --background: var(--p-panel);
99
70
  --color-background: var(--p-panel);
100
- width: auto;
101
- height: calc(100% - 10px);
102
- margin: 0 10px 10px 6px;
103
- border-radius: 4px;
104
- border: 1px solid var(--p-line-2);
105
- background: var(--p-panel);
106
- box-shadow: none;
107
- overflow: hidden;
71
+ }
72
+ :root[data-agy-theme="paper"] .agy-sheet[data-sheet-inset] [data-main-content-body]::after,
73
+ :root[data-agy-theme="paper"] .agy-inset-shell [data-side-panel-body]::after {
74
+ box-shadow: inset 0 0 0 1px var(--card-edge);
108
75
  }
109
76
  :root[data-agy-theme="paper"] .agy-sheet {
110
77
  background-image: none !important;
111
78
  }
112
- :root[data-agy-theme="paper"] .bg-border.flex-shrink-0.z-30.h-full {
113
- background: var(--p-window);
114
- }
115
79
 
116
- /* Inactive webview occlusion guard */
80
+ /* Inactive webview occlusion guard: prevent GPU compositor bleeding */
117
81
  div[style*="opacity: 0.005"] webview,
118
82
  div[style*="display: none"] webview,
119
83
  webview[style*="opacity: 0.005"] {
@@ -121,6 +85,7 @@ webview[style*="opacity: 0.005"] {
121
85
  pointer-events: none !important;
122
86
  }
123
87
 
88
+
124
89
  /* 20 — Sidebar: Clean E-Ink Document Index (Fixed header overflow) */
125
90
  :root[data-agy-theme="paper"] aside,
126
91
  :root[data-agy-theme="paper"] nav {
@@ -224,7 +189,9 @@ webview[style*="opacity: 0.005"] {
224
189
  font-family: var(--p-font-mono) !important;
225
190
  font-size: 13px !important;
226
191
  }
227
- :root[data-agy-theme="paper"] pre {
192
+ /* Fenced code in the chat is the app's own ruled block (.agy-code): a
193
+ second box around a pre inside it would draw two rules */
194
+ :root[data-agy-theme="paper"] pre:not(.agy-code pre) {
228
195
  background: var(--p-inset) !important;
229
196
  border: 1px solid var(--p-line) !important;
230
197
  border-radius: 3px !important;
@@ -253,8 +220,9 @@ webview[style*="opacity: 0.005"] {
253
220
  font-family: var(--p-font-ui);
254
221
  font-size: 13px;
255
222
  }
256
- :root[data-agy-theme="paper"] [role="menuitem"]:hover,
257
- :root[data-agy-theme="paper"] [role="menuitemradio"]:hover {
223
+ /* disabled items (an unavailable model) take no hover fill: it only dims them */
224
+ :root[data-agy-theme="paper"] [role="menuitem"]:not([data-disabled], [aria-disabled="true"]):hover,
225
+ :root[data-agy-theme="paper"] [role="menuitemradio"]:not([data-disabled], [aria-disabled="true"]):hover {
258
226
  background: var(--p-select);
259
227
  }
260
228
 
@@ -271,6 +239,475 @@ webview[style*="opacity: 0.005"] {
271
239
  background: var(--p-line-3);
272
240
  }
273
241
 
242
+ /* 60 — Dialogs & Settings: a printed form ---------------------------------- */
243
+ /* Settings as a page of a printed manual: an ink-ruled sheet with square
244
+ corners and no shadow; the index set in the reading serif, the current
245
+ entry printed in reverse; group titles in small capitals; each group a
246
+ ruled box with dashed lines between entries; controls drawn in ink
247
+ outline, chosen ones in reverse; fields are lines to write on. Strictly
248
+ monochrome. Selectors go through .agy-dialog to outrank the app's glass
249
+ rules (body[data-newux-theme]). */
250
+ :root[data-agy-theme="paper"] .agy-dialog {
251
+ border: 1px solid var(--p-line-3) !important;
252
+ border-radius: 2px !important;
253
+ background: var(--p-panel);
254
+ box-shadow: none !important;
255
+ color: var(--p-text);
256
+ }
257
+ :root[data-agy-theme="paper"] .settings-modal-backdrop {
258
+ background: rgb(0 0 0 / 0.45);
259
+ }
260
+ :root[data-agy-theme="paper"] .agy-dialog > button[aria-label="Close"] {
261
+ border-radius: 0 !important;
262
+ color: var(--p-text);
263
+ }
264
+ :root[data-agy-theme="paper"] .agy-dialog > button[aria-label="Close"]:hover {
265
+ background: var(--p-primary);
266
+ color: var(--p-primary-ink);
267
+ }
268
+ :root[data-agy-theme="paper"] .settings-modal-container .bg-background {
269
+ background: transparent;
270
+ }
271
+
272
+ /* the index, in the reading serif */
273
+ :root[data-agy-theme="paper"] [data-testid="settings-sidebar"] {
274
+ border-right: 1px solid var(--p-line-2);
275
+ background: var(--p-window);
276
+ font-family: var(--p-font-read);
277
+ }
278
+ :root[data-agy-theme="paper"] [data-testid="settings-sidebar"] > div:first-child {
279
+ gap: 0;
280
+ padding: 20px 0 12px;
281
+ }
282
+ :root[data-agy-theme="paper"] [data-testid="settings-sidebar"] .px-4 {
283
+ padding: 0 20px;
284
+ }
285
+ :root[data-agy-theme="paper"] [data-testid="settings-sidebar"] h1 {
286
+ margin-bottom: 10px;
287
+ padding-bottom: 8px;
288
+ flex: 1;
289
+ border-bottom: 1px solid var(--p-text);
290
+ font-size: 19px;
291
+ font-weight: 600;
292
+ color: var(--p-text-max);
293
+ }
294
+ :root[data-agy-theme="paper"] [data-testid="settings-sidebar"] .px-4.mt-2 {
295
+ margin-top: 16px;
296
+ }
297
+ :root[data-agy-theme="paper"] [data-testid="settings-sidebar"] h2 {
298
+ margin-bottom: 4px;
299
+ font-size: 14px;
300
+ font-weight: 600;
301
+ font-variant-caps: all-small-caps;
302
+ letter-spacing: 0.08em;
303
+ color: var(--p-text-2);
304
+ }
305
+ :root[data-agy-theme="paper"] [data-testid="settings-sidebar"] .mx-2 {
306
+ margin: 0 12px;
307
+ }
308
+ :root[data-agy-theme="paper"] [data-testid="settings-sidebar"] button[data-testid^="settings-nav-item-"] {
309
+ min-height: 30px;
310
+ padding: 0 8px;
311
+ border-radius: 0;
312
+ color: var(--p-text);
313
+ font-size: 15px;
314
+ }
315
+ :root[data-agy-theme="paper"] [data-testid="settings-sidebar"] button[data-testid^="settings-nav-item-"] span {
316
+ color: inherit;
317
+ }
318
+ :root[data-agy-theme="paper"] [data-testid="settings-sidebar"] button[data-testid^="settings-nav-item-"]:hover {
319
+ background: transparent;
320
+ color: var(--p-text-max);
321
+ text-decoration: underline;
322
+ text-decoration-thickness: 1px;
323
+ text-underline-offset: 4px;
324
+ }
325
+ :root[data-agy-theme="paper"] [data-testid="settings-sidebar"] button[data-testid^="settings-nav-item-"].bg-sidebar-secondary {
326
+ background: var(--p-primary);
327
+ color: var(--p-primary-ink);
328
+ text-decoration: none;
329
+ }
330
+ :root[data-agy-theme="paper"] [data-testid="settings-sidebar"] button.mx-4 {
331
+ margin: 2px 20px 0;
332
+ color: var(--p-text-2);
333
+ font-style: italic;
334
+ font-weight: 400;
335
+ }
336
+ :root[data-agy-theme="paper"] [data-testid="settings-sidebar"] button.mx-4:hover {
337
+ color: var(--p-text-max);
338
+ }
339
+ :root[data-agy-theme="paper"] [data-testid="settings-sidebar"] > .border-t {
340
+ border-color: var(--p-line-2);
341
+ font-family: var(--p-font-ui);
342
+ }
343
+ :root[data-agy-theme="paper"] [data-testid="settings-sidebar"] > .border-t > button {
344
+ border-radius: 0;
345
+ }
346
+ :root[data-agy-theme="paper"] [data-testid="settings-sidebar"] > .border-t > button > div:first-child {
347
+ border: 1px solid var(--p-text);
348
+ background: transparent;
349
+ color: var(--p-text);
350
+ }
351
+
352
+ /* the page: a serif title over a rule, small-capital group titles */
353
+ :root[data-agy-theme="paper"] .settings-modal-container .p-6.max-w-2xl {
354
+ gap: 24px;
355
+ padding: 34px 40px 48px;
356
+ }
357
+ :root[data-agy-theme="paper"] .settings-modal-container .p-6.max-w-2xl > div:first-child {
358
+ margin-bottom: 0;
359
+ padding-bottom: 14px;
360
+ border-bottom: 2px solid var(--p-text-max);
361
+ }
362
+ :root[data-agy-theme="paper"] .settings-modal-container h2.text-2xl {
363
+ font-family: var(--p-font-read);
364
+ font-size: 30px;
365
+ font-weight: 600;
366
+ line-height: 1.15;
367
+ color: var(--p-text-max);
368
+ }
369
+ :root[data-agy-theme="paper"] .settings-modal-container h2.text-2xl + div {
370
+ font-family: var(--p-font-read);
371
+ font-size: 15px;
372
+ font-style: italic;
373
+ color: var(--p-text-2);
374
+ }
375
+ :root[data-agy-theme="paper"] .settings-modal-container h3 {
376
+ font-family: var(--p-font-read);
377
+ font-size: 17px;
378
+ font-weight: 600;
379
+ font-variant-caps: all-small-caps;
380
+ letter-spacing: 0.06em;
381
+ color: var(--p-text-max);
382
+ }
383
+ :root[data-agy-theme="paper"] .settings-modal-container .leading-relaxed {
384
+ font-family: var(--p-font-read);
385
+ font-size: 14px;
386
+ color: var(--p-text-2);
387
+ }
388
+
389
+ /* ruled boxes, dashed lines between entries */
390
+ :root[data-agy-theme="paper"] .agy-dialog .agy-card {
391
+ --color-border: var(--p-line-2);
392
+ border: 1px solid var(--p-line-3);
393
+ border-radius: 0;
394
+ background: transparent;
395
+ }
396
+ :root[data-agy-theme="paper"] .agy-dialog .agy-card > :not(:last-child) {
397
+ border-bottom-style: dashed !important;
398
+ }
399
+ :root[data-agy-theme="paper"] .agy-dialog .agy-card .py-2.px-3 {
400
+ min-height: 54px;
401
+ padding: 12px 16px;
402
+ font-size: 14px;
403
+ font-weight: 600;
404
+ color: var(--p-text-max);
405
+ }
406
+ :root[data-agy-theme="paper"] .agy-dialog .agy-card .text-sm {
407
+ font-family: var(--p-font-read);
408
+ font-size: 13.5px;
409
+ font-weight: 400;
410
+ color: var(--p-text-2);
411
+ }
412
+ :root[data-agy-theme="paper"] .agy-dialog .agy-card > button:hover {
413
+ background: transparent;
414
+ color: var(--p-text-max);
415
+ text-decoration: underline;
416
+ }
417
+ :root[data-agy-theme="paper"] .agy-dialog [data-testid="settings-row-badge"] {
418
+ padding: 2px 5px;
419
+ border: 0;
420
+ border-radius: 0;
421
+ background: var(--p-primary);
422
+ color: var(--p-primary-ink);
423
+ font-family: var(--p-font-mono);
424
+ font-size: 10.5px;
425
+ }
426
+ :root[data-agy-theme="paper"] .agy-dialog code {
427
+ border: 1px solid var(--p-line-2);
428
+ border-radius: 0;
429
+ background: transparent;
430
+ font-family: var(--p-font-mono);
431
+ }
432
+
433
+ /* controls: ink outlines, square; hover and the chosen state print in
434
+ reverse */
435
+ :root[data-agy-theme="paper"] .agy-dialog :is(.agy-button-sm, .agy-button-md).bg-secondary,
436
+ :root[data-agy-theme="paper"] .agy-dialog .agy-select-trigger {
437
+ height: 30px;
438
+ padding: 0 12px;
439
+ border: 1px solid var(--p-text) !important;
440
+ border-radius: 0 !important;
441
+ background: transparent;
442
+ color: var(--p-text-max);
443
+ font-size: 13px;
444
+ font-weight: 600;
445
+ }
446
+ :root[data-agy-theme="paper"] .agy-dialog :is(.agy-button-sm, .agy-button-md).bg-secondary:hover,
447
+ :root[data-agy-theme="paper"] .agy-dialog .agy-select-trigger:is(:hover, [aria-expanded="true"]) {
448
+ background: var(--p-primary);
449
+ color: var(--p-primary-ink);
450
+ }
451
+ :root[data-agy-theme="paper"] .agy-dialog .agy-select-trigger svg {
452
+ opacity: 1;
453
+ }
454
+ :root[data-agy-theme="paper"] .agy-dialog :is(a, button:not([role])).bg-primary {
455
+ padding: 5px 14px;
456
+ border: 1px solid var(--p-primary);
457
+ border-radius: 0 !important;
458
+ background: var(--p-primary);
459
+ color: var(--p-primary-ink);
460
+ font-weight: 600;
461
+ }
462
+ :root[data-agy-theme="paper"] .agy-dialog :is(a, button:not([role])).bg-primary:hover {
463
+ background: transparent;
464
+ color: var(--p-text-max);
465
+ }
466
+ :root[data-agy-theme="paper"] .agy-dialog [data-testid="delete-project-button"] {
467
+ border: 1px solid var(--p-text);
468
+ border-radius: 0 !important;
469
+ background: transparent;
470
+ color: var(--p-text-max);
471
+ text-decoration: line-through;
472
+ text-decoration-thickness: 1px;
473
+ }
474
+ :root[data-agy-theme="paper"] .agy-dialog [data-testid="delete-project-button"]:hover {
475
+ background: var(--p-primary);
476
+ color: var(--p-primary-ink);
477
+ }
478
+ :root[data-agy-theme="paper"] .agy-dialog :is(.agy-button-sm.text-link, button.self-start.rounded-md) {
479
+ border-radius: 0 !important;
480
+ color: var(--p-text-max);
481
+ font-style: italic;
482
+ font-family: var(--p-font-read);
483
+ }
484
+ :root[data-agy-theme="paper"] .agy-dialog :is(.agy-button-sm.text-link, button.self-start.rounded-md):hover {
485
+ background: transparent;
486
+ text-decoration: underline;
487
+ text-underline-offset: 3px;
488
+ }
489
+ :root[data-agy-theme="paper"] .agy-dialog :is(.agy-button-icon-sm, .agy-button-icon):not(.bg-secondary) {
490
+ border-radius: 0 !important;
491
+ color: var(--p-text-2);
492
+ }
493
+ :root[data-agy-theme="paper"] .agy-dialog :is(.agy-button-icon-sm, .agy-button-icon):not(.bg-secondary):hover {
494
+ background: var(--p-primary);
495
+ color: var(--p-primary-ink);
496
+ }
497
+ /* keys: square caps with a printed offset edge */
498
+ :root[data-agy-theme="paper"] .agy-dialog .agy-button-xs.border {
499
+ height: 24px;
500
+ padding: 0 7px;
501
+ border: 1px solid var(--p-text);
502
+ border-radius: 0 !important;
503
+ background: var(--p-panel);
504
+ box-shadow: 2px 2px 0 var(--p-text);
505
+ color: var(--p-text-max);
506
+ font-family: var(--p-font-mono);
507
+ font-size: 12px;
508
+ }
509
+ :root[data-agy-theme="paper"] .agy-dialog .agy-button-xs.border:hover {
510
+ background: var(--p-primary);
511
+ color: var(--p-primary-ink);
512
+ }
513
+
514
+ /* segmented control: one ruled strip; the chosen segment in reverse */
515
+ :root[data-agy-theme="paper"] .agy-dialog [data-slot="toggle-group"] {
516
+ height: 30px;
517
+ padding: 0;
518
+ gap: 0;
519
+ border: 1px solid var(--p-text) !important;
520
+ border-radius: 0;
521
+ background: transparent !important;
522
+ box-shadow: none !important;
523
+ }
524
+ :root[data-agy-theme="paper"] .agy-dialog [data-slot="toggle-group"] > button {
525
+ padding: 0 12px;
526
+ border-radius: 0;
527
+ background: transparent !important;
528
+ color: var(--p-text) !important;
529
+ font-size: 13px;
530
+ box-shadow: none !important;
531
+ }
532
+ :root[data-agy-theme="paper"] .agy-dialog [data-slot="toggle-group"] > button + button {
533
+ border-left: 1px solid var(--p-text);
534
+ }
535
+ :root[data-agy-theme="paper"] .agy-dialog [data-slot="toggle-group"] > button:hover {
536
+ text-decoration: underline;
537
+ }
538
+ :root[data-agy-theme="paper"] .agy-dialog [data-slot="toggle-group"] > button[data-pressed] {
539
+ background: var(--p-primary) !important;
540
+ color: var(--p-primary-ink) !important;
541
+ font-weight: 600;
542
+ text-decoration: none;
543
+ }
544
+
545
+ /* switch: a square ink box; on, it prints in reverse */
546
+ :root[data-agy-theme="paper"] [role="switch"].rounded-full {
547
+ width: 36px;
548
+ height: 18px;
549
+ padding: 0;
550
+ border: 1px solid var(--p-text);
551
+ border-radius: 0;
552
+ background: transparent !important;
553
+ }
554
+ :root[data-agy-theme="paper"] [role="switch"].rounded-full:is([aria-checked="true"], [data-checked]) {
555
+ background: var(--p-primary) !important;
556
+ }
557
+ :root[data-agy-theme="paper"] [role="switch"].rounded-full > span {
558
+ width: 12px;
559
+ height: 12px;
560
+ border-radius: 0;
561
+ background: var(--p-text-2);
562
+ box-shadow: none !important;
563
+ transform: translateX(2px) !important;
564
+ transition: none; /* e-ink: no in-between frames */
565
+ }
566
+ :root[data-agy-theme="paper"] [role="switch"].rounded-full:is([aria-checked="true"], [data-checked]) > span {
567
+ background: var(--p-primary-ink);
568
+ transform: translateX(20px) !important;
569
+ }
570
+
571
+ /* slider: an ink line and a tick */
572
+ :root[data-agy-theme="paper"] .agy-dialog input[type="range"] {
573
+ --primary: var(--p-text-max);
574
+ --secondary: var(--p-line-2);
575
+ height: 2px;
576
+ border-radius: 0;
577
+ }
578
+ :root[data-agy-theme="paper"] .agy-dialog input[type="range"]::-webkit-slider-thumb {
579
+ width: 4px;
580
+ height: 16px;
581
+ border-radius: 0;
582
+ background: var(--p-text-max);
583
+ }
584
+
585
+ /* option cards: ruled boxes; the chosen one in a heavy rule */
586
+ :root[data-agy-theme="paper"] .agy-dialog [role="radio"].rounded-xl {
587
+ border: 1px solid var(--p-line-3);
588
+ border-radius: 0;
589
+ background: transparent;
590
+ box-shadow: none;
591
+ color: var(--p-text);
592
+ }
593
+ :root[data-agy-theme="paper"] .agy-dialog [role="radio"].rounded-xl:hover {
594
+ border-color: var(--p-text);
595
+ }
596
+ :root[data-agy-theme="paper"] .agy-dialog [role="radio"].rounded-xl:is([data-checked], [aria-checked="true"]) {
597
+ border-color: var(--p-text-max);
598
+ box-shadow: inset 0 0 0 1px var(--p-text-max);
599
+ color: var(--p-text-max);
600
+ }
601
+
602
+ /* fields: a line to write on (the app's layered !important utilities are
603
+ steered through the variables they read) */
604
+ :root[data-agy-theme="paper"] .agy-dialog :is(input.agy-field, input.bg-muted, .h-8.rounded-lg.bg-muted.border) {
605
+ --tw-border-style: none;
606
+ --color-muted: transparent;
607
+ --tw-inset-shadow: inset 0 -1px 0 var(--p-text);
608
+ border-style: none;
609
+ border-radius: 0 !important;
610
+ background: transparent;
611
+ box-shadow: var(--tw-inset-shadow);
612
+ color: var(--p-text-max);
613
+ font-family: var(--p-font-mono);
614
+ font-size: 13px !important;
615
+ }
616
+ :root[data-agy-theme="paper"] .agy-dialog :is(input.agy-field:focus, input.bg-muted:focus, .h-8.rounded-lg.bg-muted.border:focus-within) {
617
+ --tw-inset-shadow: inset 0 -2px 0 var(--p-text-max);
618
+ outline: none;
619
+ }
620
+ :root[data-agy-theme="paper"] .agy-dialog button[aria-label="Show Remote Control QR code"] {
621
+ border-color: var(--p-line-3);
622
+ border-radius: 0;
623
+ }
624
+ :root[data-agy-theme="paper"] .agy-dialog button[aria-label$="color picker"] {
625
+ border-color: var(--p-text);
626
+ border-radius: 0;
627
+ }
628
+
629
+ /* usage rings and token bars: ink on a light rule */
630
+ :root[data-agy-theme="paper"] circle:has(+ [data-testid="quota-progress-circle"]) {
631
+ stroke: var(--p-line-2);
632
+ stroke-opacity: 1;
633
+ }
634
+ :root[data-agy-theme="paper"] .rounded-full:has(> svg [data-testid="quota-progress-circle"]) {
635
+ background: transparent;
636
+ }
637
+ :root[data-agy-theme="paper"] [data-testid="quota-progress-circle"] {
638
+ stroke: var(--p-text-max);
639
+ }
640
+ :root[data-agy-theme="paper"] .agy-dialog {
641
+ --chart-blue: var(--p-text-max);
642
+ --chart-green: var(--p-text-2);
643
+ --chart-purple: var(--p-text-3);
644
+ --chart-yellow: var(--p-line-3);
645
+ --chart-orange: var(--p-line-3);
646
+ --chart-red: var(--p-text-max);
647
+ }
648
+ :root[data-agy-theme="paper"] .agy-dialog .h-2.rounded-full.bg-muted {
649
+ height: 6px;
650
+ border: 1px solid var(--p-text);
651
+ border-radius: 0;
652
+ background: transparent;
653
+ }
654
+ :root[data-agy-theme="paper"] .agy-dialog .h-2.rounded-full.bg-muted > * {
655
+ border-radius: 0;
656
+ }
657
+ :root[data-agy-theme="paper"] [data-testid="workspace-customizations-view"] .border.border-border.rounded-xl {
658
+ --color-border: var(--p-line-2);
659
+ border-color: var(--p-line-3);
660
+ border-radius: 0;
661
+ }
662
+ :root[data-agy-theme="paper"] .agy-dialog span.rounded:is(.bg-blue-500\/10, .bg-purple-500\/10, .bg-green-500\/10, .bg-orange-500\/10) {
663
+ border: 1px solid var(--p-line-3);
664
+ border-radius: 0;
665
+ background: transparent;
666
+ color: var(--p-text-2);
667
+ }
668
+
669
+ /* "Restart to Update": an ink-ruled square label in small capitals,
670
+ printed in reverse on hover; no pulse (e-ink) */
671
+ :root[data-agy-theme="paper"] [data-testid="app-update-button"] {
672
+ animation: none !important;
673
+ }
674
+ :root[data-agy-theme="paper"] [data-testid="app-update-button"]:not(.w-6) {
675
+ width: auto;
676
+ height: 24px;
677
+ padding: 0 10px;
678
+ border: 1px solid var(--p-text);
679
+ border-radius: 0;
680
+ background: transparent;
681
+ color: var(--p-text-max);
682
+ font-size: 13px;
683
+ font-weight: 600;
684
+ font-variant-caps: all-small-caps;
685
+ letter-spacing: 0.06em;
686
+ }
687
+ :root[data-agy-theme="paper"] [data-testid="app-update-button"]:not(.w-6):hover {
688
+ background: var(--p-primary);
689
+ color: var(--p-primary-ink);
690
+ }
691
+ :root[data-agy-theme="paper"] [data-testid="app-update-button"].w-6 {
692
+ border-radius: 0;
693
+ color: var(--p-text-max);
694
+ }
695
+
696
+ /* Chips in a sent message (quotes, files, terminals): they take the bubble's
697
+ own ink, not the app's text colors, which are meant for the panel; a 12%
698
+ tint of that ink marks them, the icon and supporting parts at 80% */
699
+ :root[data-agy-theme="paper"] .agy-user-bubble .inline-pill {
700
+ color: inherit;
701
+ background: color-mix(in srgb, currentColor 12%, transparent);
702
+ border-radius: 0;
703
+ }
704
+ :root[data-agy-theme="paper"] .agy-user-bubble .inline-pill :is(.text-foreground, .text-secondary-foreground) {
705
+ color: inherit;
706
+ }
707
+ :root[data-agy-theme="paper"] .agy-user-bubble .inline-pill .text-muted-foreground {
708
+ color: color-mix(in srgb, currentColor 80%, transparent);
709
+ }
710
+
274
711
  /* 80 — Voice Mode & Gemini Live: E-Ink Paper Aesthetic */
275
712
  :root[data-agy-theme="paper"] [data-testid="voice-live-pill"] {
276
713
  background: var(--p-raised) !important;
@@ -412,3 +849,6 @@ webview[style*="opacity: 0.005"] {
412
849
  border-color: var(--p-line-3) !important;
413
850
  }
414
851
 
852
+
853
+ /* 90 — Swarm and other sidecar panes: themes/frames/paper.css. They are
854
+ cross-origin frames; frame-host.js loads that stylesheet inside them. */