@bubble-design-system/ui 1.0.1 → 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.
package/dist/styles.css CHANGED
@@ -14,140 +14,140 @@
14
14
 
15
15
  :root {
16
16
  /* ── neutrals: cool slate (default) ─────────────────── */
17
- --slate-50: #F8FAFC;
18
- --slate-100: #F1F5F9;
19
- --slate-200: #E2E8F0;
20
- --slate-300: #CBD5E1;
21
- --slate-400: #94A3B8;
22
- --slate-500: #64748B;
17
+ --slate-50: #f8fafc;
18
+ --slate-100: #f1f5f9;
19
+ --slate-200: #e2e8f0;
20
+ --slate-300: #cbd5e1;
21
+ --slate-400: #94a3b8;
22
+ --slate-500: #64748b;
23
23
  --slate-600: #475569;
24
24
  --slate-700: #334155;
25
- --slate-800: #1E293B;
26
- --slate-900: #0F172A;
25
+ --slate-800: #1e293b;
26
+ --slate-900: #0f172a;
27
27
  --slate-950: #020617;
28
28
 
29
29
  /* ── neutrals: true neutral ─────────────────────────── */
30
- --neutral-50: #FAFAFA;
31
- --neutral-100: #F5F5F5;
32
- --neutral-200: #E5E5E5;
33
- --neutral-300: #D4D4D4;
34
- --neutral-400: #A3A3A3;
30
+ --neutral-50: #fafafa;
31
+ --neutral-100: #f5f5f5;
32
+ --neutral-200: #e5e5e5;
33
+ --neutral-300: #d4d4d4;
34
+ --neutral-400: #a3a3a3;
35
35
  --neutral-500: #737373;
36
36
  --neutral-600: #525252;
37
37
  --neutral-700: #404040;
38
38
  --neutral-800: #262626;
39
39
  --neutral-900: #171717;
40
- --neutral-950: #0A0A0A;
40
+ --neutral-950: #0a0a0a;
41
41
 
42
42
  /* ── neutrals: warm stone ───────────────────────────── */
43
- --stone-50: #FAFAF9;
44
- --stone-100: #F5F5F4;
45
- --stone-200: #E7E5E4;
46
- --stone-300: #D6D3D1;
47
- --stone-400: #A8A29E;
48
- --stone-500: #78716C;
49
- --stone-600: #57534E;
50
- --stone-700: #44403C;
43
+ --stone-50: #fafaf9;
44
+ --stone-100: #f5f5f4;
45
+ --stone-200: #e7e5e4;
46
+ --stone-300: #d6d3d1;
47
+ --stone-400: #a8a29e;
48
+ --stone-500: #78716c;
49
+ --stone-600: #57534e;
50
+ --stone-700: #44403c;
51
51
  --stone-800: #292524;
52
- --stone-900: #1C1917;
53
- --stone-950: #0C0A09;
52
+ --stone-900: #1c1917;
53
+ --stone-950: #0c0a09;
54
54
 
55
55
  /* ── brand: blue (default, anchored on #1D4ED8) ─────── */
56
- --blue-50: #EFF6FF;
57
- --blue-100: #DBEAFE;
58
- --blue-200: #BFDBFE;
59
- --blue-300: #93C5FD;
60
- --blue-400: #60A5FA;
61
- --blue-500: #3B82F6;
62
- --blue-600: #1D4ED8;
63
- --blue-700: #1E40AF;
64
- --blue-800: #1E3A8A;
56
+ --blue-50: #eff6ff;
57
+ --blue-100: #dbeafe;
58
+ --blue-200: #bfdbfe;
59
+ --blue-300: #93c5fd;
60
+ --blue-400: #60a5fa;
61
+ --blue-500: #3b82f6;
62
+ --blue-600: #1d4ed8;
63
+ --blue-700: #1e40af;
64
+ --blue-800: #1e3a8a;
65
65
  --blue-900: #172554;
66
- --blue-950: #0B1336;
66
+ --blue-950: #0b1336;
67
67
 
68
68
  /* ── brand: violet ──────────────────────────────────── */
69
- --violet-50: #F5F3FF;
70
- --violet-100: #EDE9FE;
71
- --violet-200: #DDD6FE;
72
- --violet-300: #C4B5FD;
73
- --violet-400: #A78BFA;
74
- --violet-500: #8B5CF6;
75
- --violet-600: #6D28D9;
76
- --violet-700: #5B21B6;
77
- --violet-800: #4C1D95;
78
- --violet-900: #3B0764;
79
- --violet-950: #2A0556;
69
+ --violet-50: #f5f3ff;
70
+ --violet-100: #ede9fe;
71
+ --violet-200: #ddd6fe;
72
+ --violet-300: #c4b5fd;
73
+ --violet-400: #a78bfa;
74
+ --violet-500: #8b5cf6;
75
+ --violet-600: #6d28d9;
76
+ --violet-700: #5b21b6;
77
+ --violet-800: #4c1d95;
78
+ --violet-900: #3b0764;
79
+ --violet-950: #2a0556;
80
80
 
81
81
  /* ── brand: emerald ─────────────────────────────────── */
82
- --emerald-50: #ECFDF5;
83
- --emerald-100: #D1FAE5;
84
- --emerald-200: #A7F3D0;
85
- --emerald-300: #6EE7B7;
86
- --emerald-400: #34D399;
87
- --emerald-500: #10B981;
82
+ --emerald-50: #ecfdf5;
83
+ --emerald-100: #d1fae5;
84
+ --emerald-200: #a7f3d0;
85
+ --emerald-300: #6ee7b7;
86
+ --emerald-400: #34d399;
87
+ --emerald-500: #10b981;
88
88
  --emerald-600: #047857;
89
- --emerald-700: #065F46;
90
- --emerald-800: #064E3B;
91
- --emerald-900: #022C22;
92
- --emerald-950: #011D18;
89
+ --emerald-700: #065f46;
90
+ --emerald-800: #064e3b;
91
+ --emerald-900: #022c22;
92
+ --emerald-950: #011d18;
93
93
 
94
94
  /* ── brand: orange ──────────────────────────────────── */
95
- --orange-50: #FFF7ED;
96
- --orange-100: #FFEDD5;
97
- --orange-200: #FED7AA;
98
- --orange-300: #FDBA74;
99
- --orange-400: #FB923C;
100
- --orange-500: #F97316;
101
- --orange-600: #C2410C;
102
- --orange-700: #9A3412;
103
- --orange-800: #7C2D12;
95
+ --orange-50: #fff7ed;
96
+ --orange-100: #ffedd5;
97
+ --orange-200: #fed7aa;
98
+ --orange-300: #fdba74;
99
+ --orange-400: #fb923c;
100
+ --orange-500: #f97316;
101
+ --orange-600: #c2410c;
102
+ --orange-700: #9a3412;
103
+ --orange-800: #7c2d12;
104
104
  --orange-900: #431407;
105
- --orange-950: #2A0D04;
105
+ --orange-950: #2a0d04;
106
106
 
107
107
  /* ── brand: mono (uses neutrals) ────────────────────── */
108
108
  /* mono-* are aliased per gray family below */
109
109
 
110
110
  /* ── semantic palette: green ────────────────────────── */
111
- --green-50: #F0FDF4;
112
- --green-100: #DCFCE7;
113
- --green-200: #BBF7D0;
114
- --green-300: #86EFAC;
115
- --green-400: #4ADE80;
116
- --green-500: #22C55E;
117
- --green-600: #16A34A;
118
- --green-700: #15803D;
111
+ --green-50: #f0fdf4;
112
+ --green-100: #dcfce7;
113
+ --green-200: #bbf7d0;
114
+ --green-300: #86efac;
115
+ --green-400: #4ade80;
116
+ --green-500: #22c55e;
117
+ --green-600: #16a34a;
118
+ --green-700: #15803d;
119
119
  --green-800: #166534;
120
- --green-900: #14532D;
121
- --green-950: #052E16;
120
+ --green-900: #14532d;
121
+ --green-950: #052e16;
122
122
 
123
123
  /* ── semantic palette: amber ────────────────────────── */
124
- --amber-50: #FFFBEB;
125
- --amber-100: #FEF3C7;
126
- --amber-200: #FDE68A;
127
- --amber-300: #FCD34D;
128
- --amber-400: #FBBF24;
129
- --amber-500: #F59E0B;
130
- --amber-600: #D97706;
131
- --amber-700: #B45309;
132
- --amber-800: #92400E;
133
- --amber-900: #78350F;
134
- --amber-950: #451A03;
124
+ --amber-50: #fffbeb;
125
+ --amber-100: #fef3c7;
126
+ --amber-200: #fde68a;
127
+ --amber-300: #fcd34d;
128
+ --amber-400: #fbbf24;
129
+ --amber-500: #f59e0b;
130
+ --amber-600: #d97706;
131
+ --amber-700: #b45309;
132
+ --amber-800: #92400e;
133
+ --amber-900: #78350f;
134
+ --amber-950: #451a03;
135
135
 
136
136
  /* ── semantic palette: red ──────────────────────────── */
137
- --red-50: #FEF2F2;
138
- --red-100: #FEE2E2;
139
- --red-200: #FECACA;
140
- --red-300: #FCA5A5;
141
- --red-400: #F87171;
142
- --red-500: #EF4444;
143
- --red-600: #DC2626;
144
- --red-700: #B91C1C;
145
- --red-800: #991B1B;
146
- --red-900: #7F1D1D;
147
- --red-950: #450A0A;
137
+ --red-50: #fef2f2;
138
+ --red-100: #fee2e2;
139
+ --red-200: #fecaca;
140
+ --red-300: #fca5a5;
141
+ --red-400: #f87171;
142
+ --red-500: #ef4444;
143
+ --red-600: #dc2626;
144
+ --red-700: #b91c1c;
145
+ --red-800: #991b1b;
146
+ --red-900: #7f1d1d;
147
+ --red-950: #450a0a;
148
148
 
149
149
  /* ── pure ───────────────────────────────────────────── */
150
- --white: #FFFFFF;
150
+ --white: #ffffff;
151
151
  --black: #000000;
152
152
  }
153
153
 
@@ -156,7 +156,7 @@
156
156
  ───────────────────────────────────────────────────────── */
157
157
  :root,
158
158
  [data-gray="slate"] {
159
- --gray-50: var(--slate-50);
159
+ --gray-50: var(--slate-50);
160
160
  --gray-100: var(--slate-100);
161
161
  --gray-200: var(--slate-200);
162
162
  --gray-300: var(--slate-300);
@@ -169,7 +169,7 @@
169
169
  --gray-950: var(--slate-950);
170
170
  }
171
171
  [data-gray="neutral"] {
172
- --gray-50: var(--neutral-50);
172
+ --gray-50: var(--neutral-50);
173
173
  --gray-100: var(--neutral-100);
174
174
  --gray-200: var(--neutral-200);
175
175
  --gray-300: var(--neutral-300);
@@ -182,7 +182,7 @@
182
182
  --gray-950: var(--neutral-950);
183
183
  }
184
184
  [data-gray="stone"] {
185
- --gray-50: var(--stone-50);
185
+ --gray-50: var(--stone-50);
186
186
  --gray-100: var(--stone-100);
187
187
  --gray-200: var(--stone-200);
188
188
  --gray-300: var(--stone-300);
@@ -200,7 +200,7 @@
200
200
  ───────────────────────────────────────────────────────── */
201
201
  :root,
202
202
  [data-brand="blue"] {
203
- --brand-50: var(--blue-50);
203
+ --brand-50: var(--blue-50);
204
204
  --brand-100: var(--blue-100);
205
205
  --brand-200: var(--blue-200);
206
206
  --brand-300: var(--blue-300);
@@ -213,7 +213,7 @@
213
213
  --brand-950: var(--blue-950);
214
214
  }
215
215
  [data-brand="violet"] {
216
- --brand-50: var(--violet-50);
216
+ --brand-50: var(--violet-50);
217
217
  --brand-100: var(--violet-100);
218
218
  --brand-200: var(--violet-200);
219
219
  --brand-300: var(--violet-300);
@@ -226,7 +226,7 @@
226
226
  --brand-950: var(--violet-950);
227
227
  }
228
228
  [data-brand="emerald"] {
229
- --brand-50: var(--emerald-50);
229
+ --brand-50: var(--emerald-50);
230
230
  --brand-100: var(--emerald-100);
231
231
  --brand-200: var(--emerald-200);
232
232
  --brand-300: var(--emerald-300);
@@ -239,7 +239,7 @@
239
239
  --brand-950: var(--emerald-950);
240
240
  }
241
241
  [data-brand="orange"] {
242
- --brand-50: var(--orange-50);
242
+ --brand-50: var(--orange-50);
243
243
  --brand-100: var(--orange-100);
244
244
  --brand-200: var(--orange-200);
245
245
  --brand-300: var(--orange-300);
@@ -252,7 +252,7 @@
252
252
  --brand-950: var(--orange-950);
253
253
  }
254
254
  [data-brand="mono"] {
255
- --brand-50: var(--gray-50);
255
+ --brand-50: var(--gray-50);
256
256
  --brand-100: var(--gray-100);
257
257
  --brand-200: var(--gray-200);
258
258
  --brand-300: var(--gray-300);
@@ -265,16 +265,16 @@
265
265
  --brand-950: var(--black);
266
266
  }
267
267
  [data-brand="teal"] {
268
- --brand-50: #E2FBFA;
269
- --brand-100: #B8F4F1;
270
- --brand-200: #8AECE7;
271
- --brand-300: #4DDFD9;
272
- --brand-400: #14D2CB;
273
- --brand-500: #00CEC8;
274
- --brand-600: #00CEC8;
275
- --brand-700: #009E99;
268
+ --brand-50: #e2fbfa;
269
+ --brand-100: #b8f4f1;
270
+ --brand-200: #8aece7;
271
+ --brand-300: #4ddfd9;
272
+ --brand-400: #14d2cb;
273
+ --brand-500: #00cec8;
274
+ --brand-600: #00cec8;
275
+ --brand-700: #009e99;
276
276
  --brand-800: #007570;
277
- --brand-900: #004B48;
277
+ --brand-900: #004b48;
278
278
  --brand-950: #002523;
279
279
  }
280
280
 
@@ -283,62 +283,68 @@
283
283
  ───────────────────────────────────────────────────────── */
284
284
  :root {
285
285
  /* background */
286
- --color-bg-page: var(--color-bg-primary);
287
- --color-bg-primary: var(--white);
288
- --color-bg-secondary: var(--gray-50);
289
- --color-bg-tertiary: var(--gray-100);
290
- --color-bg-inverse: var(--gray-900);
291
-
292
- --color-bg-brand: var(--brand-600);
293
- --color-bg-brand-hover: var(--brand-700);
294
- --color-bg-brand-active: var(--brand-800);
295
- --color-bg-brand-subtle: var(--brand-50);
296
-
297
- --color-bg-success: var(--green-50);
286
+ --color-bg-page: var(--color-bg-primary);
287
+ --color-bg-primary: var(--white);
288
+ --color-bg-secondary: var(--gray-50);
289
+ --color-bg-tertiary: var(--gray-100);
290
+ --color-bg-inverse: var(--gray-900);
291
+
292
+ --color-bg-brand: var(--brand-600);
293
+ --color-bg-brand-hover: var(--brand-700);
294
+ --color-bg-brand-active: var(--brand-800);
295
+ --color-bg-brand-subtle: var(--brand-50);
296
+
297
+ --color-bg-success: var(--green-50);
298
298
  --color-bg-success-strong: var(--green-600);
299
- --color-bg-warning: var(--amber-50);
299
+ --color-bg-warning: var(--amber-50);
300
300
  --color-bg-warning-strong: var(--amber-500);
301
- --color-bg-danger: var(--red-50);
302
- --color-bg-danger-strong: var(--red-600);
303
- --color-bg-danger-hover: var(--red-700);
304
- --color-bg-info: var(--brand-50);
301
+ --color-bg-danger: var(--red-50);
302
+ --color-bg-danger-strong: var(--red-600);
303
+ --color-bg-danger-hover: var(--red-700);
304
+ --color-bg-info: var(--brand-50);
305
305
 
306
- --color-bg-hover: var(--gray-100);
307
- --color-bg-pressed: var(--gray-200);
308
- --color-bg-disabled: var(--gray-100);
306
+ --color-bg-hover: var(--gray-100);
307
+ --color-bg-pressed: var(--gray-200);
308
+ --color-bg-disabled: var(--gray-100);
309
309
 
310
310
  /* text */
311
- --color-text-primary: var(--gray-900);
312
- --color-text-secondary: var(--gray-600);
313
- --color-text-tertiary: var(--gray-400);
314
- --color-text-disabled: var(--gray-300);
315
- --color-text-inverse: var(--white);
311
+ --color-text-primary: var(--gray-900);
312
+ --color-text-secondary: var(--gray-600);
313
+ --color-text-tertiary: var(--gray-400);
314
+ --color-text-disabled: var(--gray-300);
315
+ --color-text-inverse: var(--white);
316
316
 
317
- --color-text-brand: var(--brand-700);
318
- --color-text-success: var(--green-700);
319
- --color-text-warning: var(--amber-700);
320
- --color-text-danger: var(--red-700);
317
+ --color-text-brand: var(--brand-700);
318
+ --color-text-success: var(--green-700);
319
+ --color-text-warning: var(--amber-700);
320
+ --color-text-danger: var(--red-700);
321
321
 
322
- --color-text-on-brand: var(--white);
323
- --color-text-on-danger: var(--white);
324
- --color-text-on-success: var(--white);
322
+ --color-text-on-brand: var(--white);
323
+ --color-text-on-danger: var(--white);
324
+ --color-text-on-success: var(--white);
325
325
 
326
326
  /* border */
327
- --color-border-primary: var(--gray-300);
328
- --color-border-secondary: var(--gray-200);
329
- --color-border-tertiary: var(--gray-100);
330
- --color-border-brand: var(--brand-600);
331
- --color-border-success: var(--green-200);
332
- --color-border-warning: var(--amber-200);
333
- --color-border-danger: var(--red-200);
334
- --color-border-focus: var(--brand-600);
327
+ --color-border-primary: var(--gray-300);
328
+ --color-border-secondary: var(--gray-200);
329
+ --color-border-tertiary: var(--gray-100);
330
+ --color-border-brand: var(--brand-600);
331
+ --color-border-success: var(--green-200);
332
+ --color-border-warning: var(--amber-200);
333
+ --color-border-danger: var(--red-200);
334
+ --color-border-focus: var(--brand-600);
335
335
 
336
336
  /* shadow */
337
337
  --shadow-xs: 0 1px 2px 0 rgba(15, 23, 42, 0.04);
338
- --shadow-sm: 0 1px 2px 0 rgba(15, 23, 42, 0.05), 0 1px 1px -1px rgba(15, 23, 42, 0.04);
339
- --shadow-md: 0 4px 6px -1px rgba(15, 23, 42, 0.06), 0 2px 4px -2px rgba(15, 23, 42, 0.04);
340
- --shadow-lg: 0 10px 15px -3px rgba(15, 23, 42, 0.08), 0 4px 6px -4px rgba(15, 23, 42, 0.04);
341
- --shadow-xl: 0 20px 25px -5px rgba(15, 23, 42, 0.10), 0 8px 10px -6px rgba(15, 23, 42, 0.04);
338
+ --shadow-sm:
339
+ 0 1px 2px 0 rgba(15, 23, 42, 0.05), 0 1px 1px -1px rgba(15, 23, 42, 0.04);
340
+ --shadow-md:
341
+ 0 4px 6px -1px rgba(15, 23, 42, 0.06), 0 2px 4px -2px rgba(15, 23, 42, 0.04);
342
+ --shadow-lg:
343
+ 0 10px 15px -3px rgba(15, 23, 42, 0.08),
344
+ 0 4px 6px -4px rgba(15, 23, 42, 0.04);
345
+ --shadow-xl:
346
+ 0 20px 25px -5px rgba(15, 23, 42, 0.1),
347
+ 0 8px 10px -6px rgba(15, 23, 42, 0.04);
342
348
  --shadow-focus: 0 0 0 3px var(--brand-100);
343
349
 
344
350
  /* code surface */
@@ -348,15 +354,19 @@
348
354
 
349
355
  /* signature gradient — used for the brand blob + AI/featured accents.
350
356
  Always present regardless of tone; soft tone leans on it most. */
351
- --gradient-accent: linear-gradient(135deg,
352
- #FF8A9E 0%,
353
- #FF6BA5 25%,
354
- #C760D9 55%,
355
- #8B6BE8 100%);
356
- --gradient-accent-soft: linear-gradient(135deg,
357
+ --gradient-accent: linear-gradient(
358
+ 135deg,
359
+ #ff8a9e 0%,
360
+ #ff6ba5 25%,
361
+ #c760d9 55%,
362
+ #8b6be8 100%
363
+ );
364
+ --gradient-accent-soft: linear-gradient(
365
+ 135deg,
357
366
  rgba(255, 138, 158, 0.18) 0%,
358
367
  rgba(199, 96, 217, 0.16) 50%,
359
- rgba(139, 107, 232, 0.18) 100%);
368
+ rgba(139, 107, 232, 0.18) 100%
369
+ );
360
370
 
361
371
  /* control radius — pill-first in soft, default otherwise */
362
372
  --ctrl-radius: var(--radius-md);
@@ -366,59 +376,68 @@
366
376
  Semantic tokens — DARK
367
377
  ───────────────────────────────────────────────────────── */
368
378
  [data-theme="dark"] {
369
- --color-bg-primary: var(--gray-950);
370
- --color-bg-secondary: var(--gray-900);
371
- --color-bg-tertiary: var(--gray-800);
372
- --color-bg-inverse: var(--gray-50);
379
+ --color-bg-primary: var(--gray-950);
380
+ --color-bg-secondary: var(--gray-900);
381
+ --color-bg-tertiary: var(--gray-800);
382
+ --color-bg-inverse: var(--gray-50);
373
383
 
374
- --color-bg-brand: var(--brand-500);
375
- --color-bg-brand-hover: var(--brand-400);
376
- --color-bg-brand-active: var(--brand-300);
377
- --color-bg-brand-subtle: color-mix(in srgb, var(--brand-500) 14%, transparent);
384
+ --color-bg-brand: var(--brand-500);
385
+ --color-bg-brand-hover: var(--brand-400);
386
+ --color-bg-brand-active: var(--brand-300);
387
+ --color-bg-brand-subtle: color-mix(
388
+ in srgb,
389
+ var(--brand-500) 14%,
390
+ transparent
391
+ );
378
392
 
379
- --color-bg-success: color-mix(in srgb, var(--green-500) 14%, transparent);
393
+ --color-bg-success: color-mix(in srgb, var(--green-500) 14%, transparent);
380
394
  --color-bg-success-strong: var(--green-500);
381
- --color-bg-warning: color-mix(in srgb, var(--amber-500) 14%, transparent);
395
+ --color-bg-warning: color-mix(in srgb, var(--amber-500) 14%, transparent);
382
396
  --color-bg-warning-strong: var(--amber-400);
383
- --color-bg-danger: color-mix(in srgb, var(--red-500) 14%, transparent);
384
- --color-bg-danger-strong: var(--red-500);
385
- --color-bg-danger-hover: var(--red-400);
386
- --color-bg-info: color-mix(in srgb, var(--brand-500) 14%, transparent);
387
-
388
- --color-bg-hover: var(--gray-800);
389
- --color-bg-pressed: var(--gray-700);
390
- --color-bg-disabled: var(--gray-800);
391
-
392
- --color-text-primary: var(--gray-50);
393
- --color-text-secondary: var(--gray-400);
394
- --color-text-tertiary: var(--gray-500);
395
- --color-text-disabled: var(--gray-700);
396
- --color-text-inverse: var(--gray-950);
397
-
398
- --color-text-brand: var(--brand-400);
399
- --color-text-success: var(--green-400);
400
- --color-text-warning: var(--amber-400);
401
- --color-text-danger: var(--red-400);
402
-
403
- --color-text-on-brand: var(--gray-950);
404
- --color-text-on-danger: var(--white);
405
- --color-text-on-success: var(--gray-950);
406
-
407
- --color-border-primary: var(--gray-700);
408
- --color-border-secondary: var(--gray-800);
409
- --color-border-tertiary: var(--gray-800);
410
- --color-border-brand: var(--brand-400);
411
- --color-border-success: color-mix(in srgb, var(--green-500) 30%, transparent);
412
- --color-border-warning: color-mix(in srgb, var(--amber-500) 30%, transparent);
413
- --color-border-danger: color-mix(in srgb, var(--red-500) 30%, transparent);
414
- --color-border-focus: var(--brand-400);
397
+ --color-bg-danger: color-mix(in srgb, var(--red-500) 14%, transparent);
398
+ --color-bg-danger-strong: var(--red-500);
399
+ --color-bg-danger-hover: var(--red-400);
400
+ --color-bg-info: color-mix(in srgb, var(--brand-500) 14%, transparent);
401
+
402
+ --color-bg-hover: var(--gray-800);
403
+ --color-bg-pressed: var(--gray-700);
404
+ --color-bg-disabled: var(--gray-800);
405
+
406
+ --color-text-primary: var(--gray-50);
407
+ --color-text-secondary: var(--gray-400);
408
+ --color-text-tertiary: var(--gray-500);
409
+ --color-text-disabled: var(--gray-700);
410
+ --color-text-inverse: var(--gray-950);
411
+
412
+ --color-text-brand: var(--brand-400);
413
+ --color-text-success: var(--green-400);
414
+ --color-text-warning: var(--amber-400);
415
+ --color-text-danger: var(--red-400);
416
+
417
+ --color-text-on-brand: var(--gray-950);
418
+ --color-text-on-danger: var(--white);
419
+ --color-text-on-success: var(--gray-950);
420
+
421
+ --color-border-primary: var(--gray-700);
422
+ --color-border-secondary: var(--gray-800);
423
+ --color-border-tertiary: var(--gray-800);
424
+ --color-border-brand: var(--brand-400);
425
+ --color-border-success: color-mix(in srgb, var(--green-500) 30%, transparent);
426
+ --color-border-warning: color-mix(in srgb, var(--amber-500) 30%, transparent);
427
+ --color-border-danger: color-mix(in srgb, var(--red-500) 30%, transparent);
428
+ --color-border-focus: var(--brand-400);
415
429
 
416
430
  --shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.5);
417
- --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.6), 0 1px 1px -1px rgba(0, 0, 0, 0.5);
418
- --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.5), 0 2px 4px -2px rgba(0, 0, 0, 0.4);
419
- --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.6), 0 4px 6px -4px rgba(0, 0, 0, 0.4);
420
- --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.7), 0 8px 10px -6px rgba(0, 0, 0, 0.4);
421
- --shadow-focus: 0 0 0 3px color-mix(in srgb, var(--brand-400) 35%, transparent);
431
+ --shadow-sm:
432
+ 0 1px 2px 0 rgba(0, 0, 0, 0.6), 0 1px 1px -1px rgba(0, 0, 0, 0.5);
433
+ --shadow-md:
434
+ 0 4px 6px -1px rgba(0, 0, 0, 0.5), 0 2px 4px -2px rgba(0, 0, 0, 0.4);
435
+ --shadow-lg:
436
+ 0 10px 15px -3px rgba(0, 0, 0, 0.6), 0 4px 6px -4px rgba(0, 0, 0, 0.4);
437
+ --shadow-xl:
438
+ 0 20px 25px -5px rgba(0, 0, 0, 0.7), 0 8px 10px -6px rgba(0, 0, 0, 0.4);
439
+ --shadow-focus: 0 0 0 3px
440
+ color-mix(in srgb, var(--brand-400) 35%, transparent);
422
441
 
423
442
  --color-code-bg: var(--gray-900);
424
443
  --color-code-border: var(--gray-800);
@@ -427,12 +446,12 @@
427
446
 
428
447
  /* "mono" brand needs special treatment in dark so it stays visible */
429
448
  [data-theme="dark"][data-brand="mono"] {
430
- --color-bg-brand: var(--gray-50);
431
- --color-bg-brand-hover: var(--gray-100);
432
- --color-bg-brand-active: var(--gray-200);
433
- --color-text-on-brand: var(--gray-950);
434
- --color-text-brand: var(--gray-50);
435
- --color-border-brand: var(--gray-50);
449
+ --color-bg-brand: var(--gray-50);
450
+ --color-bg-brand-hover: var(--gray-100);
451
+ --color-bg-brand-active: var(--gray-200);
452
+ --color-text-on-brand: var(--gray-950);
453
+ --color-text-brand: var(--gray-50);
454
+ --color-border-brand: var(--gray-50);
436
455
  }
437
456
 
438
457
  /* "teal" anchor (#00CEC8) is too light for white text — force dark text on brand */
@@ -440,12 +459,12 @@
440
459
  --color-text-on-brand: var(--gray-950);
441
460
  }
442
461
  [data-theme="dark"][data-brand="teal"] {
443
- --color-bg-brand: var(--brand-500);
444
- --color-bg-brand-hover: var(--brand-400);
462
+ --color-bg-brand: var(--brand-500);
463
+ --color-bg-brand-hover: var(--brand-400);
445
464
  --color-bg-brand-active: var(--brand-300);
446
- --color-text-on-brand: var(--gray-950);
447
- --color-text-brand: var(--brand-400);
448
- --color-border-brand: var(--brand-500);
465
+ --color-text-on-brand: var(--gray-950);
466
+ --color-text-brand: var(--brand-400);
467
+ --color-border-brand: var(--brand-500);
449
468
  }
450
469
 
451
470
  /* ═════════════════════════════════════════════════════════
@@ -459,66 +478,132 @@
459
478
 
460
479
  /* ─── pastel ─────────────────────────────────────────────── */
461
480
  [data-tone="pastel"] {
462
- --slate-50: #F6F7F9; --slate-100: #EBEEF3; --slate-200: #DDE1E9;
463
- --slate-300: #C1C7D3; --slate-400: #8E96A7; --slate-500: #686F82;
464
- --slate-600: #4E5667; --slate-700: #3C4250; --slate-800: #272C38;
465
- --slate-900: #161A24; --slate-950: #0A0D14;
466
-
467
- --neutral-50: #F8F7F5; --neutral-100: #EFEDEA; --neutral-200: #E0DDD9;
468
- --neutral-300: #C8C5BF; --neutral-400: #9D9A93; --neutral-500: #757269;
469
- --neutral-600: #56544D; --neutral-700: #41403A; --neutral-800: #2A2926;
470
- --neutral-900: #1A1A18; --neutral-950: #0D0D0B;
471
-
472
- --stone-50: #F8F6F2; --stone-100: #EFECE5; --stone-200: #E1DBD0;
473
- --stone-300: #CAC2B3; --stone-400: #A19888; --stone-500: #7A7263;
474
- --stone-600: #5A5447; --stone-700: #443F35; --stone-800: #2B2822;
475
- --stone-900: #1A1814; --stone-950: #0D0B09;
476
-
477
- --green-50: #EEF6EF; --green-500: #66A26F; --green-600: #568D5E; --green-700: #45724B;
478
- --amber-50: #FBF4E1; --amber-400: #D5A741; --amber-500: #C19234; --amber-700: #855F23;
479
- --red-50: #FAEBEA; --red-500: #BE584F; --red-600: #A8463F; --red-700: #883831;
481
+ --slate-50: #f6f7f9;
482
+ --slate-100: #ebeef3;
483
+ --slate-200: #dde1e9;
484
+ --slate-300: #c1c7d3;
485
+ --slate-400: #8e96a7;
486
+ --slate-500: #686f82;
487
+ --slate-600: #4e5667;
488
+ --slate-700: #3c4250;
489
+ --slate-800: #272c38;
490
+ --slate-900: #161a24;
491
+ --slate-950: #0a0d14;
492
+
493
+ --neutral-50: #f8f7f5;
494
+ --neutral-100: #efedea;
495
+ --neutral-200: #e0ddd9;
496
+ --neutral-300: #c8c5bf;
497
+ --neutral-400: #9d9a93;
498
+ --neutral-500: #757269;
499
+ --neutral-600: #56544d;
500
+ --neutral-700: #41403a;
501
+ --neutral-800: #2a2926;
502
+ --neutral-900: #1a1a18;
503
+ --neutral-950: #0d0d0b;
504
+
505
+ --stone-50: #f8f6f2;
506
+ --stone-100: #efece5;
507
+ --stone-200: #e1dbd0;
508
+ --stone-300: #cac2b3;
509
+ --stone-400: #a19888;
510
+ --stone-500: #7a7263;
511
+ --stone-600: #5a5447;
512
+ --stone-700: #443f35;
513
+ --stone-800: #2b2822;
514
+ --stone-900: #1a1814;
515
+ --stone-950: #0d0b09;
516
+
517
+ --green-50: #eef6ef;
518
+ --green-500: #66a26f;
519
+ --green-600: #568d5e;
520
+ --green-700: #45724b;
521
+ --amber-50: #fbf4e1;
522
+ --amber-400: #d5a741;
523
+ --amber-500: #c19234;
524
+ --amber-700: #855f23;
525
+ --red-50: #faebea;
526
+ --red-500: #be584f;
527
+ --red-600: #a8463f;
528
+ --red-700: #883831;
480
529
  }
481
530
 
482
531
  /* pastel · light — warm off-white surfaces, softer shadows */
483
532
  [data-tone="pastel"]:not([data-theme="dark"]) {
484
- --color-bg-primary: #FBFAF7;
485
- --color-bg-secondary: #F4F2EC;
486
- --color-bg-tertiary: #EBE8DF;
487
- --color-bg-page: var(--color-bg-primary);
533
+ --color-bg-primary: #fbfaf7;
534
+ --color-bg-secondary: #f4f2ec;
535
+ --color-bg-tertiary: #ebe8df;
536
+ --color-bg-page: var(--color-bg-primary);
488
537
 
489
538
  --shadow-xs: 0 1px 2px 0 rgba(50, 47, 38, 0.04);
490
- --shadow-sm: 0 1px 2px 0 rgba(50, 47, 38, 0.05), 0 1px 1px -1px rgba(50, 47, 38, 0.04);
491
- --shadow-md: 0 4px 8px -2px rgba(50, 47, 38, 0.06), 0 2px 4px -2px rgba(50, 47, 38, 0.04);
492
- --shadow-lg: 0 10px 18px -4px rgba(50, 47, 38, 0.08), 0 4px 6px -4px rgba(50, 47, 38, 0.04);
493
- --shadow-xl: 0 20px 28px -6px rgba(50, 47, 38, 0.10), 0 8px 10px -6px rgba(50, 47, 38, 0.04);
539
+ --shadow-sm:
540
+ 0 1px 2px 0 rgba(50, 47, 38, 0.05), 0 1px 1px -1px rgba(50, 47, 38, 0.04);
541
+ --shadow-md:
542
+ 0 4px 8px -2px rgba(50, 47, 38, 0.06), 0 2px 4px -2px rgba(50, 47, 38, 0.04);
543
+ --shadow-lg:
544
+ 0 10px 18px -4px rgba(50, 47, 38, 0.08),
545
+ 0 4px 6px -4px rgba(50, 47, 38, 0.04);
546
+ --shadow-xl:
547
+ 0 20px 28px -6px rgba(50, 47, 38, 0.1),
548
+ 0 8px 10px -6px rgba(50, 47, 38, 0.04);
494
549
  }
495
550
  [data-tone="pastel"][data-gray="stone"]:not([data-theme="dark"]) {
496
- --color-bg-primary: #FBF9F4;
497
- --color-bg-secondary: #F3EFE5;
498
- --color-bg-tertiary: #E9E3D4;
551
+ --color-bg-primary: #fbf9f4;
552
+ --color-bg-secondary: #f3efe5;
553
+ --color-bg-tertiary: #e9e3d4;
499
554
  }
500
555
 
501
556
  /* ─── soft (signature look) ──────────────────────────────── */
502
557
  [data-tone="soft"] {
503
- --slate-50: #F6F7F8; --slate-100: #ECEDF0; --slate-200: #DCDEE3;
504
- --slate-300: #BCC0C9; --slate-400: #8C92A0; --slate-500: #666C7B;
505
- --slate-600: #4C5263; --slate-700: #3A3F4D; --slate-800: #262A35;
506
- --slate-900: #181B23; --slate-950: #0C0E13;
507
-
508
- --neutral-50: #F7F7F6; --neutral-100: #EDEDEB; --neutral-200: #DEDDDA;
509
- --neutral-300: #C5C4BF; --neutral-400: #99988F; --neutral-500: #71706A;
510
- --neutral-600: #555450; --neutral-700: #41403D; --neutral-800: #2A2A28;
511
- --neutral-900: #1A1A18; --neutral-950: #0D0D0C;
512
-
513
- --stone-50: #F8F6F2; --stone-100: #F0EDE6; --stone-200: #E2DDD2;
514
- --stone-300: #CDC5B4; --stone-400: #A09683; --stone-500: #777060;
515
- --stone-600: #595348; --stone-700: #443F37; --stone-800: #2B2823;
516
- --stone-900: #1A1815; --stone-950: #0E0C0A;
558
+ --slate-50: #f6f7f8;
559
+ --slate-100: #ecedf0;
560
+ --slate-200: #dcdee3;
561
+ --slate-300: #bcc0c9;
562
+ --slate-400: #8c92a0;
563
+ --slate-500: #666c7b;
564
+ --slate-600: #4c5263;
565
+ --slate-700: #3a3f4d;
566
+ --slate-800: #262a35;
567
+ --slate-900: #181b23;
568
+ --slate-950: #0c0e13;
569
+
570
+ --neutral-50: #f7f7f6;
571
+ --neutral-100: #ededeb;
572
+ --neutral-200: #deddda;
573
+ --neutral-300: #c5c4bf;
574
+ --neutral-400: #99988f;
575
+ --neutral-500: #71706a;
576
+ --neutral-600: #555450;
577
+ --neutral-700: #41403d;
578
+ --neutral-800: #2a2a28;
579
+ --neutral-900: #1a1a18;
580
+ --neutral-950: #0d0d0c;
581
+
582
+ --stone-50: #f8f6f2;
583
+ --stone-100: #f0ede6;
584
+ --stone-200: #e2ddd2;
585
+ --stone-300: #cdc5b4;
586
+ --stone-400: #a09683;
587
+ --stone-500: #777060;
588
+ --stone-600: #595348;
589
+ --stone-700: #443f37;
590
+ --stone-800: #2b2823;
591
+ --stone-900: #1a1815;
592
+ --stone-950: #0e0c0a;
517
593
 
518
594
  /* soft status ramps — vivid but warm */
519
- --green-50: #E8F8EF; --green-500: #46B47C; --green-600: #38A06A; --green-700: #2A8054;
520
- --amber-50: #FFF8E0; --amber-400: #F5BC2E; --amber-500: #E8A716; --amber-700: #9C6E0E;
521
- --red-50: #FFEDEC; --red-500: #ED5E5B; --red-600: #D6443F; --red-700: #AB3531;
595
+ --green-50: #e8f8ef;
596
+ --green-500: #46b47c;
597
+ --green-600: #38a06a;
598
+ --green-700: #2a8054;
599
+ --amber-50: #fff8e0;
600
+ --amber-400: #f5bc2e;
601
+ --amber-500: #e8a716;
602
+ --amber-700: #9c6e0e;
603
+ --red-50: #ffedec;
604
+ --red-500: #ed5e5b;
605
+ --red-600: #d6443f;
606
+ --red-700: #ab3531;
522
607
 
523
608
  /* pill controls */
524
609
  --ctrl-radius: 9999px;
@@ -526,110 +611,115 @@
526
611
 
527
612
  /* soft · light — gray page, white floating pills, layered shadow w/ inset highlight */
528
613
  [data-tone="soft"]:not([data-theme="dark"]) {
529
- --color-bg-primary: #FFFFFF;
530
- --color-bg-secondary: #ECEDEF;
531
- --color-bg-tertiary: #E1E2E6;
532
- --color-bg-page: #ECEDEF;
614
+ --color-bg-primary: #ffffff;
615
+ --color-bg-secondary: #ecedef;
616
+ --color-bg-tertiary: #e1e2e6;
617
+ --color-bg-page: #ecedef;
533
618
 
534
619
  --color-bg-brand-subtle: color-mix(in srgb, var(--brand-500) 14%, white);
535
- --color-bg-success: #E8F6EE;
536
- --color-bg-warning: #FFF6DC;
537
- --color-bg-danger: #FFE8E6;
538
- --color-bg-info: #ECF1FF;
620
+ --color-bg-success: #e8f6ee;
621
+ --color-bg-warning: #fff6dc;
622
+ --color-bg-danger: #ffe8e6;
623
+ --color-bg-info: #ecf1ff;
539
624
 
540
- --color-border-primary: #DCDEE3;
541
- --color-border-secondary: #E6E8EB;
542
- --color-border-tertiary: #EFF0F2;
625
+ --color-border-primary: #dcdee3;
626
+ --color-border-secondary: #e6e8eb;
627
+ --color-border-tertiary: #eff0f2;
543
628
 
544
629
  /* the signature layered shadows — md/lg/xl carry an inset white top-highlight */
545
630
  --shadow-xs: 0 1px 2px 0 rgba(20, 24, 34, 0.04);
546
- --shadow-sm: 0 1px 2px 0 rgba(20, 24, 34, 0.05),
547
- 0 1px 3px 0 rgba(20, 24, 34, 0.04);
548
- --shadow-md: 0 2px 4px -1px rgba(20, 24, 34, 0.05),
549
- 0 6px 16px -4px rgba(20, 24, 34, 0.08),
550
- 0 1px 1px 0 rgba(255, 255, 255, 0.65) inset;
551
- --shadow-lg: 0 4px 6px -2px rgba(20, 24, 34, 0.06),
552
- 0 12px 24px -8px rgba(20, 24, 34, 0.10),
553
- 0 1px 1px 0 rgba(255, 255, 255, 0.70) inset;
554
- --shadow-xl: 0 6px 10px -2px rgba(20, 24, 34, 0.07),
555
- 0 20px 40px -12px rgba(20, 24, 34, 0.14),
556
- 0 1px 1px 0 rgba(255, 255, 255, 0.70) inset;
557
- --shadow-focus: 0 0 0 4px color-mix(in srgb, var(--brand-500) 18%, transparent);
631
+ --shadow-sm:
632
+ 0 1px 2px 0 rgba(20, 24, 34, 0.05), 0 1px 3px 0 rgba(20, 24, 34, 0.04);
633
+ --shadow-md:
634
+ 0 2px 4px -1px rgba(20, 24, 34, 0.05),
635
+ 0 6px 16px -4px rgba(20, 24, 34, 0.08),
636
+ 0 1px 1px 0 rgba(255, 255, 255, 0.65) inset;
637
+ --shadow-lg:
638
+ 0 4px 6px -2px rgba(20, 24, 34, 0.06),
639
+ 0 12px 24px -8px rgba(20, 24, 34, 0.1),
640
+ 0 1px 1px 0 rgba(255, 255, 255, 0.7) inset;
641
+ --shadow-xl:
642
+ 0 6px 10px -2px rgba(20, 24, 34, 0.07),
643
+ 0 20px 40px -12px rgba(20, 24, 34, 0.14),
644
+ 0 1px 1px 0 rgba(255, 255, 255, 0.7) inset;
645
+ --shadow-focus: 0 0 0 4px
646
+ color-mix(in srgb, var(--brand-500) 18%, transparent);
558
647
  }
559
648
 
560
649
  [data-tone="soft"][data-theme="dark"] {
561
- --color-bg-primary: var(--gray-900);
650
+ --color-bg-primary: var(--gray-900);
562
651
  --color-bg-secondary: var(--gray-950);
563
- --color-bg-tertiary: var(--gray-800);
564
- --color-bg-page: var(--gray-950);
652
+ --color-bg-tertiary: var(--gray-800);
653
+ --color-bg-page: var(--gray-950);
565
654
 
566
- --shadow-md: 0 2px 4px -1px rgba(0, 0, 0, 0.40),
567
- 0 6px 16px -4px rgba(0, 0, 0, 0.50),
568
- 0 1px 0 0 rgba(255, 255, 255, 0.04) inset;
569
- --shadow-lg: 0 4px 6px -2px rgba(0, 0, 0, 0.45),
570
- 0 12px 24px -8px rgba(0, 0, 0, 0.60),
571
- 0 1px 0 0 rgba(255, 255, 255, 0.05) inset;
655
+ --shadow-md:
656
+ 0 2px 4px -1px rgba(0, 0, 0, 0.4), 0 6px 16px -4px rgba(0, 0, 0, 0.5),
657
+ 0 1px 0 0 rgba(255, 255, 255, 0.04) inset;
658
+ --shadow-lg:
659
+ 0 4px 6px -2px rgba(0, 0, 0, 0.45), 0 12px 24px -8px rgba(0, 0, 0, 0.6),
660
+ 0 1px 0 0 rgba(255, 255, 255, 0.05) inset;
572
661
  }
573
662
 
574
663
  /* ─────────────────────────────────────────────────────────
575
664
  Typography scale (rem-based, root = 16px)
576
665
  ───────────────────────────────────────────────────────── */
577
666
  :root {
578
- --font-size-xs: 0.75rem; /* 12 */
579
- --font-size-sm: 0.875rem; /* 14 */
580
- --font-size-md: 1rem; /* 16 */
581
- --font-size-lg: 1.125rem; /* 18 */
582
- --font-size-xl: 1.25rem; /* 20 */
583
- --font-size-2xl: 1.5rem; /* 24 */
584
- --font-size-3xl: 1.875rem; /* 30 */
585
- --font-size-4xl: 2.25rem; /* 36 */
586
- --font-size-5xl: 3rem; /* 48 */
587
- --font-size-6xl: 3.75rem; /* 60 */
588
-
589
- --line-height-tight: 1.15;
590
- --line-height-snug: 1.3;
591
- --line-height-normal: 1.5;
667
+ --font-size-xs: 0.75rem; /* 12 */
668
+ --font-size-sm: 0.875rem; /* 14 */
669
+ --font-size-md: 1rem; /* 16 */
670
+ --font-size-lg: 1.125rem; /* 18 */
671
+ --font-size-xl: 1.25rem; /* 20 */
672
+ --font-size-2xl: 1.5rem; /* 24 */
673
+ --font-size-3xl: 1.875rem; /* 30 */
674
+ --font-size-4xl: 2.25rem; /* 36 */
675
+ --font-size-5xl: 3rem; /* 48 */
676
+ --font-size-6xl: 3.75rem; /* 60 */
677
+
678
+ --line-height-tight: 1.15;
679
+ --line-height-snug: 1.3;
680
+ --line-height-normal: 1.5;
592
681
  --line-height-relaxed: 1.65;
593
682
 
594
683
  --font-weight-regular: 400;
595
- --font-weight-medium: 500;
684
+ --font-weight-medium: 500;
596
685
  --font-weight-semibold: 600;
597
- --font-weight-bold: 700;
686
+ --font-weight-bold: 700;
598
687
 
599
- --letter-tight: -0.022em;
600
- --letter-snug: -0.012em;
688
+ --letter-tight: -0.022em;
689
+ --letter-snug: -0.012em;
601
690
  --letter-normal: 0;
602
- --letter-wide: 0.04em;
691
+ --letter-wide: 0.04em;
603
692
  }
604
693
 
605
694
  /* font pairs — selected via [data-font] */
606
695
  :root,
607
696
  [data-font="roboto"] {
608
- --font-sans: 'Roboto', ui-sans-serif, system-ui, -apple-system, sans-serif;
609
- --font-mono: 'Roboto Mono', ui-monospace, 'SF Mono', Menlo, monospace;
697
+ --font-sans: "Roboto", ui-sans-serif, system-ui, -apple-system, sans-serif;
698
+ --font-mono: "Roboto Mono", ui-monospace, "SF Mono", Menlo, monospace;
610
699
  }
611
700
  [data-font="system"] {
612
- --font-sans: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
613
- --font-mono: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
701
+ --font-sans:
702
+ ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
703
+ --font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
614
704
  }
615
705
 
616
706
  /* ─────────────────────────────────────────────────────────
617
707
  Spacing scale — base 4px (8px after 4)
618
708
  ───────────────────────────────────────────────────────── */
619
709
  :root {
620
- --space-0: 0;
621
- --space-1: 0.25rem; /* 4 */
622
- --space-2: 0.5rem; /* 8 */
623
- --space-3: 0.75rem; /* 12 */
624
- --space-4: 1rem; /* 16 */
625
- --space-5: 1.25rem; /* 20 */
626
- --space-6: 1.5rem; /* 24 */
627
- --space-8: 2rem; /* 32 */
628
- --space-10: 2.5rem; /* 40 */
629
- --space-12: 3rem; /* 48 */
630
- --space-16: 4rem; /* 64 */
631
- --space-20: 5rem; /* 80 */
632
- --space-24: 6rem; /* 96 */
710
+ --space-0: 0;
711
+ --space-1: 0.25rem; /* 4 */
712
+ --space-2: 0.5rem; /* 8 */
713
+ --space-3: 0.75rem; /* 12 */
714
+ --space-4: 1rem; /* 16 */
715
+ --space-5: 1.25rem; /* 20 */
716
+ --space-6: 1.5rem; /* 24 */
717
+ --space-8: 2rem; /* 32 */
718
+ --space-10: 2.5rem; /* 40 */
719
+ --space-12: 3rem; /* 48 */
720
+ --space-16: 4rem; /* 64 */
721
+ --space-20: 5rem; /* 80 */
722
+ --space-24: 6rem; /* 96 */
633
723
  }
634
724
 
635
725
  /* ─────────────────────────────────────────────────────────
@@ -637,38 +727,38 @@
637
727
  ───────────────────────────────────────────────────────── */
638
728
  :root,
639
729
  [data-radius="default"] {
640
- --radius-xs: 2px;
641
- --radius-sm: 4px;
642
- --radius-md: 6px;
643
- --radius-lg: 8px;
644
- --radius-xl: 12px;
730
+ --radius-xs: 2px;
731
+ --radius-sm: 4px;
732
+ --radius-md: 6px;
733
+ --radius-lg: 8px;
734
+ --radius-xl: 12px;
645
735
  --radius-2xl: 16px;
646
736
  --radius-full: 9999px;
647
737
  }
648
738
  [data-radius="sharp"] {
649
- --radius-xs: 0px;
650
- --radius-sm: 1px;
651
- --radius-md: 2px;
652
- --radius-lg: 3px;
653
- --radius-xl: 4px;
739
+ --radius-xs: 0px;
740
+ --radius-sm: 1px;
741
+ --radius-md: 2px;
742
+ --radius-lg: 3px;
743
+ --radius-xl: 4px;
654
744
  --radius-2xl: 6px;
655
745
  --radius-full: 9999px;
656
746
  }
657
747
  [data-radius="soft"] {
658
- --radius-xs: 4px;
659
- --radius-sm: 8px;
660
- --radius-md: 12px;
661
- --radius-lg: 14px;
662
- --radius-xl: 18px;
748
+ --radius-xs: 4px;
749
+ --radius-sm: 8px;
750
+ --radius-md: 12px;
751
+ --radius-lg: 14px;
752
+ --radius-xl: 18px;
663
753
  --radius-2xl: 24px;
664
754
  --radius-full: 9999px;
665
755
  }
666
756
  [data-radius="pill"] {
667
- --radius-xs: 4px;
668
- --radius-sm: 9999px;
669
- --radius-md: 9999px;
670
- --radius-lg: 9999px;
671
- --radius-xl: 18px;
757
+ --radius-xs: 4px;
758
+ --radius-sm: 9999px;
759
+ --radius-md: 9999px;
760
+ --radius-lg: 9999px;
761
+ --radius-xl: 18px;
672
762
  --radius-2xl: 22px;
673
763
  --radius-full: 9999px;
674
764
  }
@@ -684,8 +774,8 @@
684
774
  --control-px-sm: 10px;
685
775
  --control-px-md: 14px;
686
776
  --control-px-lg: 18px;
687
- --card-p: 24px;
688
- --row-gap: 16px;
777
+ --card-p: 24px;
778
+ --row-gap: 16px;
689
779
  }
690
780
  [data-density="compact"] {
691
781
  --control-h-sm: 24px;
@@ -694,8 +784,8 @@
694
784
  --control-px-sm: 8px;
695
785
  --control-px-md: 12px;
696
786
  --control-px-lg: 16px;
697
- --card-p: 16px;
698
- --row-gap: 12px;
787
+ --card-p: 16px;
788
+ --row-gap: 12px;
699
789
  }
700
790
  [data-density="comfortable"] {
701
791
  --control-h-sm: 32px;
@@ -704,29 +794,29 @@
704
794
  --control-px-sm: 12px;
705
795
  --control-px-md: 18px;
706
796
  --control-px-lg: 22px;
707
- --card-p: 32px;
708
- --row-gap: 20px;
797
+ --card-p: 32px;
798
+ --row-gap: 20px;
709
799
  }
710
800
 
711
801
  /* ─────────────────────────────────────────────────────────
712
802
  Layout — 12-column grid, breakpoints, container widths
713
803
  ───────────────────────────────────────────────────────── */
714
804
  :root {
715
- --grid-columns: 12;
716
- --grid-gutter: var(--space-6); /* 24 */
717
- --grid-gutter-tight: var(--space-4); /* 16 — used below sm */
718
- --grid-margin: var(--space-6); /* 24 */
719
- --grid-margin-lg: var(--space-10); /* 40 */
805
+ --grid-columns: 12;
806
+ --grid-gutter: var(--space-6); /* 24 */
807
+ --grid-gutter-tight: var(--space-4); /* 16 — used below sm */
808
+ --grid-margin: var(--space-6); /* 24 */
809
+ --grid-margin-lg: var(--space-10); /* 40 */
720
810
 
721
811
  --breakpoint-sm: 640px;
722
812
  --breakpoint-md: 768px;
723
813
  --breakpoint-lg: 1024px;
724
814
  --breakpoint-xl: 1280px;
725
815
 
726
- --container-sm: 640px;
727
- --container-md: 768px;
728
- --container-lg: 1024px;
729
- --container-xl: 1140px;
816
+ --container-sm: 640px;
817
+ --container-md: 768px;
818
+ --container-lg: 1024px;
819
+ --container-xl: 1140px;
730
820
  --container-prose: 1080px;
731
821
  }
732
822
 
@@ -735,15 +825,15 @@
735
825
  ───────────────────────────────────────────────────────── */
736
826
  :root {
737
827
  --duration-instant: 50ms;
738
- --duration-fast: 120ms;
739
- --duration-normal: 200ms;
740
- --duration-slow: 320ms;
741
- --duration-slower: 500ms;
828
+ --duration-fast: 120ms;
829
+ --duration-normal: 200ms;
830
+ --duration-slow: 320ms;
831
+ --duration-slower: 500ms;
742
832
 
743
- --ease-linear: linear;
744
- --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
745
- --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
746
- --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
833
+ --ease-linear: linear;
834
+ --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
835
+ --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
836
+ --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
747
837
  }
748
838
 
749
839
 
@@ -790,25 +880,33 @@ button {
790
880
  background-color: var(--color-bg-info);
791
881
  border-color: var(--color-border-secondary);
792
882
  }
793
- .pds-alert--info .pds-alert__icon { color: var(--color-text-brand); }
883
+ .pds-alert--info .pds-alert__icon {
884
+ color: var(--color-text-brand);
885
+ }
794
886
 
795
887
  .pds-alert--success {
796
888
  background-color: var(--color-bg-success);
797
889
  border-color: var(--color-border-success);
798
890
  }
799
- .pds-alert--success .pds-alert__icon { color: var(--color-text-success); }
891
+ .pds-alert--success .pds-alert__icon {
892
+ color: var(--color-text-success);
893
+ }
800
894
 
801
895
  .pds-alert--warning {
802
896
  background-color: var(--color-bg-warning);
803
897
  border-color: var(--color-border-warning);
804
898
  }
805
- .pds-alert--warning .pds-alert__icon { color: var(--color-text-warning); }
899
+ .pds-alert--warning .pds-alert__icon {
900
+ color: var(--color-text-warning);
901
+ }
806
902
 
807
903
  .pds-alert--danger {
808
904
  background-color: var(--color-bg-danger);
809
905
  border-color: var(--color-border-danger);
810
906
  }
811
- .pds-alert--danger .pds-alert__icon { color: var(--color-text-danger); }
907
+ .pds-alert--danger .pds-alert__icon {
908
+ color: var(--color-text-danger);
909
+ }
812
910
 
813
911
  .pds-alert__icon {
814
912
  display: inline-flex;
@@ -818,7 +916,10 @@ button {
818
916
  align-items: center;
819
917
  justify-content: center;
820
918
  }
821
- .pds-alert__icon svg { width: 1.25rem; height: 1.25rem; }
919
+ .pds-alert__icon svg {
920
+ width: 1.25rem;
921
+ height: 1.25rem;
922
+ }
822
923
 
823
924
  .pds-alert__body {
824
925
  flex: 1;
@@ -853,10 +954,26 @@ button {
853
954
  vertical-align: middle;
854
955
  }
855
956
 
856
- .pds-avatar--sm { width: 1.5rem; height: 1.5rem; font-size: var(--font-size-xs); }
857
- .pds-avatar--md { width: 2rem; height: 2rem; font-size: var(--font-size-sm); }
858
- .pds-avatar--lg { width: 2.5rem; height: 2.5rem; font-size: var(--font-size-md); }
859
- .pds-avatar--xl { width: 3rem; height: 3rem; font-size: var(--font-size-lg); }
957
+ .pds-avatar--sm {
958
+ width: 1.5rem;
959
+ height: 1.5rem;
960
+ font-size: var(--font-size-xs);
961
+ }
962
+ .pds-avatar--md {
963
+ width: 2rem;
964
+ height: 2rem;
965
+ font-size: var(--font-size-sm);
966
+ }
967
+ .pds-avatar--lg {
968
+ width: 2.5rem;
969
+ height: 2.5rem;
970
+ font-size: var(--font-size-md);
971
+ }
972
+ .pds-avatar--xl {
973
+ width: 3rem;
974
+ height: 3rem;
975
+ font-size: var(--font-size-lg);
976
+ }
860
977
 
861
978
  .pds-avatar__image {
862
979
  width: 100%;
@@ -1138,9 +1255,21 @@ button {
1138
1255
  }
1139
1256
 
1140
1257
  /* sizes */
1141
- .pds-checkbox--sm { width: 1rem; height: 1rem; border-radius: var(--radius-xs); }
1142
- .pds-checkbox--md { width: 1.125rem; height: 1.125rem; border-radius: var(--radius-sm); }
1143
- .pds-checkbox--lg { width: 1.25rem; height: 1.25rem; border-radius: var(--radius-sm); }
1258
+ .pds-checkbox--sm {
1259
+ width: 1rem;
1260
+ height: 1rem;
1261
+ border-radius: var(--radius-xs);
1262
+ }
1263
+ .pds-checkbox--md {
1264
+ width: 1.125rem;
1265
+ height: 1.125rem;
1266
+ border-radius: var(--radius-sm);
1267
+ }
1268
+ .pds-checkbox--lg {
1269
+ width: 1.25rem;
1270
+ height: 1.25rem;
1271
+ border-radius: var(--radius-sm);
1272
+ }
1144
1273
 
1145
1274
  /* indicator wrapper */
1146
1275
  .pds-checkbox__indicator {
@@ -1150,15 +1279,534 @@ button {
1150
1279
  }
1151
1280
 
1152
1281
  /* indicator icons — sized by parent .pds-checkbox--{size} */
1153
- .pds-checkbox--sm .pds-checkbox__icon { width: 0.75rem; height: 0.75rem; }
1154
- .pds-checkbox--md .pds-checkbox__icon { width: 0.875rem; height: 0.875rem; }
1155
- .pds-checkbox--lg .pds-checkbox__icon { width: 1rem; height: 1rem; }
1282
+ .pds-checkbox--sm .pds-checkbox__icon {
1283
+ width: 0.75rem;
1284
+ height: 0.75rem;
1285
+ }
1286
+ .pds-checkbox--md .pds-checkbox__icon {
1287
+ width: 0.875rem;
1288
+ height: 0.875rem;
1289
+ }
1290
+ .pds-checkbox--lg .pds-checkbox__icon {
1291
+ width: 1rem;
1292
+ height: 1rem;
1293
+ }
1156
1294
 
1157
1295
  /* show the right icon based on state — checked or indeterminate */
1158
- .pds-checkbox__icon--check { display: block; }
1159
- .pds-checkbox__icon--indeterminate { display: none; }
1160
- .pds-checkbox[data-indeterminate] .pds-checkbox__icon--check { display: none; }
1161
- .pds-checkbox[data-indeterminate] .pds-checkbox__icon--indeterminate { display: block; }
1296
+ .pds-checkbox__icon--check {
1297
+ display: block;
1298
+ }
1299
+ .pds-checkbox__icon--indeterminate {
1300
+ display: none;
1301
+ }
1302
+ .pds-checkbox[data-indeterminate] .pds-checkbox__icon--check {
1303
+ display: none;
1304
+ }
1305
+ .pds-checkbox[data-indeterminate] .pds-checkbox__icon--indeterminate {
1306
+ display: block;
1307
+ }
1308
+
1309
+
1310
+ /* === components/CommandPalette.css === */
1311
+ /* CommandPalette */
1312
+ .pds-command-palette-backdrop {
1313
+ position: fixed;
1314
+ inset: 0;
1315
+ z-index: 1001;
1316
+ background-color: color-mix(
1317
+ in srgb,
1318
+ var(--color-bg-inverse) 45%,
1319
+ transparent
1320
+ );
1321
+ backdrop-filter: blur(3px);
1322
+ transition: opacity var(--duration-normal) var(--ease-out);
1323
+ }
1324
+ .pds-command-palette-backdrop[data-starting-style],
1325
+ .pds-command-palette-backdrop[data-ending-style] {
1326
+ opacity: 0;
1327
+ }
1328
+
1329
+ .pds-command-palette {
1330
+ position: fixed;
1331
+ top: 10vh;
1332
+ left: 50%;
1333
+ z-index: 1001;
1334
+ width: calc(100% - 48px);
1335
+ max-width: 560px;
1336
+ max-height: 60vh;
1337
+ display: flex;
1338
+ flex-direction: column;
1339
+ background: var(--color-bg-primary);
1340
+ border-radius: var(--radius-2xl);
1341
+ box-shadow: var(--shadow-xl);
1342
+ overflow: hidden;
1343
+ outline: none;
1344
+ transform: translateX(-50%);
1345
+ transform-origin: top center;
1346
+ transition-property: opacity, transform, scale;
1347
+ transition-duration: var(--duration-normal);
1348
+ transition-timing-function: var(--ease-spring);
1349
+ }
1350
+ .pds-command-palette[data-starting-style],
1351
+ .pds-command-palette[data-ending-style] {
1352
+ opacity: 0;
1353
+ transform: translateX(-50%) translateY(-10px) scale(0.97);
1354
+ }
1355
+
1356
+ .pds-command-palette__search {
1357
+ display: flex;
1358
+ align-items: center;
1359
+ gap: 10px;
1360
+ padding: 0 16px;
1361
+ border-bottom: 1px solid var(--color-border-tertiary);
1362
+ flex: none;
1363
+ }
1364
+ .pds-command-palette__search-icon {
1365
+ color: var(--color-text-tertiary);
1366
+ display: flex;
1367
+ flex: none;
1368
+ }
1369
+ .pds-command-palette__input {
1370
+ flex: 1;
1371
+ height: 52px;
1372
+ background: transparent;
1373
+ border: 0;
1374
+ outline: none;
1375
+ font: inherit;
1376
+ font-size: var(--font-size-md);
1377
+ color: var(--color-text-primary);
1378
+ }
1379
+ .pds-command-palette__input::placeholder {
1380
+ color: var(--color-text-tertiary);
1381
+ }
1382
+
1383
+ .pds-command-palette__clear {
1384
+ appearance: none;
1385
+ background: transparent;
1386
+ border: 0;
1387
+ width: 24px;
1388
+ height: 24px;
1389
+ border-radius: var(--radius-sm);
1390
+ color: var(--color-text-tertiary);
1391
+ cursor: pointer;
1392
+ display: inline-flex;
1393
+ align-items: center;
1394
+ justify-content: center;
1395
+ flex: none;
1396
+ transition:
1397
+ background var(--duration-fast) var(--ease-out),
1398
+ color var(--duration-fast) var(--ease-out);
1399
+ }
1400
+ .pds-command-palette__clear:hover {
1401
+ background: var(--color-bg-hover);
1402
+ color: var(--color-text-primary);
1403
+ }
1404
+
1405
+ .pds-command-palette__list {
1406
+ overflow-y: auto;
1407
+ flex: 1;
1408
+ padding: 6px;
1409
+ display: flex;
1410
+ flex-direction: column;
1411
+ gap: 2px;
1412
+ }
1413
+
1414
+ .pds-command-palette__group {
1415
+ display: flex;
1416
+ flex-direction: column;
1417
+ }
1418
+ .pds-command-palette__group-label {
1419
+ font-family: var(--font-mono);
1420
+ font-size: 10.5px;
1421
+ text-transform: uppercase;
1422
+ letter-spacing: var(--letter-wide);
1423
+ color: var(--color-text-tertiary);
1424
+ padding: 8px 10px 4px;
1425
+ }
1426
+
1427
+ .pds-command-palette__item {
1428
+ appearance: none;
1429
+ background: transparent;
1430
+ border: 0;
1431
+ font: inherit;
1432
+ display: flex;
1433
+ align-items: center;
1434
+ gap: 10px;
1435
+ padding: 7px 10px;
1436
+ border-radius: var(--radius-md);
1437
+ cursor: pointer;
1438
+ color: var(--color-text-primary);
1439
+ text-align: left;
1440
+ width: 100%;
1441
+ font-size: var(--font-size-sm);
1442
+ transition:
1443
+ background var(--duration-fast) var(--ease-out),
1444
+ color var(--duration-fast) var(--ease-out);
1445
+ }
1446
+ .pds-command-palette__item:hover {
1447
+ background: var(--color-bg-hover);
1448
+ }
1449
+ .pds-command-palette__item--active {
1450
+ background: var(--color-bg-brand-subtle);
1451
+ color: var(--color-text-brand);
1452
+ }
1453
+
1454
+ .pds-command-palette__item-icon {
1455
+ width: 28px;
1456
+ height: 28px;
1457
+ border-radius: var(--radius-sm);
1458
+ background: var(--color-bg-secondary);
1459
+ border: 1px solid var(--color-border-tertiary);
1460
+ display: flex;
1461
+ align-items: center;
1462
+ justify-content: center;
1463
+ color: var(--color-text-secondary);
1464
+ flex: none;
1465
+ transition:
1466
+ background var(--duration-fast) var(--ease-out),
1467
+ color var(--duration-fast) var(--ease-out),
1468
+ border-color var(--duration-fast) var(--ease-out);
1469
+ }
1470
+ .pds-command-palette__item--active .pds-command-palette__item-icon {
1471
+ background: var(--color-bg-brand-subtle);
1472
+ color: var(--color-text-brand);
1473
+ border-color: color-mix(in srgb, var(--brand-300) 50%, transparent);
1474
+ }
1475
+
1476
+ .pds-command-palette__item-body {
1477
+ flex: 1;
1478
+ display: flex;
1479
+ flex-direction: column;
1480
+ gap: 1px;
1481
+ min-width: 0;
1482
+ }
1483
+ .pds-command-palette__item-label {
1484
+ font-weight: var(--font-weight-medium);
1485
+ white-space: nowrap;
1486
+ overflow: hidden;
1487
+ text-overflow: ellipsis;
1488
+ }
1489
+ .pds-command-palette__item-desc {
1490
+ font-size: 11.5px;
1491
+ color: var(--color-text-tertiary);
1492
+ white-space: nowrap;
1493
+ overflow: hidden;
1494
+ text-overflow: ellipsis;
1495
+ }
1496
+ .pds-command-palette__item--active .pds-command-palette__item-desc {
1497
+ color: var(--color-text-brand);
1498
+ opacity: 0.7;
1499
+ }
1500
+
1501
+ .pds-command-palette__shortcut {
1502
+ display: flex;
1503
+ align-items: center;
1504
+ gap: 2px;
1505
+ flex: none;
1506
+ }
1507
+ .pds-command-palette__kbd {
1508
+ display: inline-flex;
1509
+ align-items: center;
1510
+ justify-content: center;
1511
+ min-width: 20px;
1512
+ height: 20px;
1513
+ padding: 0 5px;
1514
+ border-radius: var(--radius-xs);
1515
+ background: var(--color-bg-secondary);
1516
+ border: 1px solid var(--color-border-secondary);
1517
+ font-family: var(--font-mono);
1518
+ font-size: 10.5px;
1519
+ color: var(--color-text-tertiary);
1520
+ letter-spacing: 0;
1521
+ }
1522
+
1523
+ .pds-command-palette__empty {
1524
+ display: flex;
1525
+ flex-direction: column;
1526
+ align-items: center;
1527
+ gap: 8px;
1528
+ padding: 36px 24px;
1529
+ color: var(--color-text-tertiary);
1530
+ font-size: var(--font-size-sm);
1531
+ }
1532
+
1533
+ .pds-command-palette__footer {
1534
+ display: flex;
1535
+ align-items: center;
1536
+ gap: 14px;
1537
+ padding: 9px 14px;
1538
+ border-top: 1px solid var(--color-border-tertiary);
1539
+ flex: none;
1540
+ background: var(--color-bg-secondary);
1541
+ }
1542
+ .pds-command-palette__hint {
1543
+ display: inline-flex;
1544
+ align-items: center;
1545
+ gap: 4px;
1546
+ font-size: 11px;
1547
+ color: var(--color-text-tertiary);
1548
+ }
1549
+
1550
+
1551
+ /* === components/DataTable.css === */
1552
+ /* DataTable */
1553
+ .pds-datatable {
1554
+ display: flex;
1555
+ flex-direction: column;
1556
+ background: var(--color-bg-primary);
1557
+ border-radius: var(--radius-2xl);
1558
+ box-shadow: var(--shadow-md);
1559
+ overflow: hidden;
1560
+ }
1561
+
1562
+ .pds-datatable__toolbar {
1563
+ display: flex;
1564
+ align-items: center;
1565
+ gap: 10px;
1566
+ padding: 12px 16px;
1567
+ border-bottom: 1px solid var(--color-border-tertiary);
1568
+ }
1569
+
1570
+ .pds-datatable__search {
1571
+ position: relative;
1572
+ flex: 1;
1573
+ max-width: 260px;
1574
+ }
1575
+
1576
+ .pds-datatable__search-icon {
1577
+ position: absolute;
1578
+ left: 10px;
1579
+ top: 50%;
1580
+ transform: translateY(-50%);
1581
+ color: var(--color-text-tertiary);
1582
+ pointer-events: none;
1583
+ display: flex;
1584
+ align-items: center;
1585
+ }
1586
+
1587
+ .pds-datatable__search-input {
1588
+ width: 100%;
1589
+ height: var(--control-h-sm);
1590
+ padding: 0 10px 0 32px;
1591
+ font-family: inherit;
1592
+ font-size: var(--font-size-sm);
1593
+ color: var(--color-text-primary);
1594
+ background: var(--color-bg-secondary);
1595
+ border: 1px solid transparent;
1596
+ border-radius: var(--ctrl-radius);
1597
+ outline: none;
1598
+ transition:
1599
+ border-color var(--duration-fast) var(--ease-out),
1600
+ box-shadow var(--duration-fast) var(--ease-out),
1601
+ background var(--duration-fast) var(--ease-out);
1602
+ }
1603
+ .pds-datatable__search-input::placeholder {
1604
+ color: var(--color-text-tertiary);
1605
+ }
1606
+ .pds-datatable__search-input:focus {
1607
+ background: var(--color-bg-primary);
1608
+ border-color: var(--color-border-focus);
1609
+ box-shadow: var(--shadow-focus);
1610
+ }
1611
+
1612
+ .pds-datatable__toolbar-right {
1613
+ display: flex;
1614
+ align-items: center;
1615
+ gap: 8px;
1616
+ margin-left: auto;
1617
+ }
1618
+
1619
+ .pds-datatable__bulk-label {
1620
+ font-size: var(--font-size-xs);
1621
+ color: var(--color-text-brand);
1622
+ font-family: var(--font-mono);
1623
+ font-weight: var(--font-weight-medium);
1624
+ }
1625
+
1626
+ .pds-datatable__wrap {
1627
+ overflow-x: auto;
1628
+ -webkit-overflow-scrolling: touch;
1629
+ }
1630
+
1631
+ .pds-datatable__table {
1632
+ width: 100%;
1633
+ border-collapse: collapse;
1634
+ font-size: var(--font-size-sm);
1635
+ }
1636
+
1637
+ .pds-datatable__thead {
1638
+ background: var(--color-bg-secondary);
1639
+ }
1640
+ .pds-datatable__thead .pds-datatable__row {
1641
+ border-bottom: 1px solid var(--color-border-secondary);
1642
+ }
1643
+
1644
+ .pds-datatable__th {
1645
+ text-align: left;
1646
+ padding: 9px 16px;
1647
+ font-size: var(--font-size-xs);
1648
+ font-weight: var(--font-weight-medium);
1649
+ color: var(--color-text-tertiary);
1650
+ font-family: var(--font-mono);
1651
+ letter-spacing: var(--letter-wide);
1652
+ text-transform: uppercase;
1653
+ white-space: nowrap;
1654
+ user-select: none;
1655
+ }
1656
+ .pds-datatable__th--sort {
1657
+ cursor: pointer;
1658
+ }
1659
+ .pds-datatable__th--sort:hover {
1660
+ color: var(--color-text-secondary);
1661
+ }
1662
+ .pds-datatable__th--sorted {
1663
+ color: var(--color-text-brand);
1664
+ }
1665
+
1666
+ .pds-datatable__sort-icon {
1667
+ display: inline-flex;
1668
+ flex-direction: column;
1669
+ gap: 2px;
1670
+ vertical-align: middle;
1671
+ margin-left: 4px;
1672
+ opacity: 0.4;
1673
+ }
1674
+ .pds-datatable__th--sort:hover .pds-datatable__sort-icon {
1675
+ opacity: 0.65;
1676
+ }
1677
+ .pds-datatable__th--sorted .pds-datatable__sort-icon {
1678
+ opacity: 1;
1679
+ }
1680
+
1681
+ .pds-datatable__td {
1682
+ padding: 11px 16px;
1683
+ color: var(--color-text-primary);
1684
+ border-bottom: 1px solid var(--color-border-tertiary);
1685
+ vertical-align: middle;
1686
+ white-space: nowrap;
1687
+ }
1688
+ .pds-datatable__td--muted {
1689
+ color: var(--color-text-secondary);
1690
+ }
1691
+ .pds-datatable__td--mono {
1692
+ font-family: var(--font-mono);
1693
+ font-size: 12.5px;
1694
+ color: var(--color-text-secondary);
1695
+ }
1696
+ .pds-datatable__empty {
1697
+ text-align: center;
1698
+ color: var(--color-text-tertiary);
1699
+ padding: 32px 16px;
1700
+ white-space: normal;
1701
+ }
1702
+
1703
+ .pds-datatable__tbody .pds-datatable__row {
1704
+ transition: background var(--duration-fast) var(--ease-out);
1705
+ }
1706
+ .pds-datatable__table--selectable .pds-datatable__tbody .pds-datatable__row {
1707
+ cursor: pointer;
1708
+ }
1709
+ .pds-datatable__tbody .pds-datatable__row:hover {
1710
+ background: var(--color-bg-hover);
1711
+ }
1712
+ .pds-datatable__tbody .pds-datatable__row--selected {
1713
+ background: var(--color-bg-brand-subtle);
1714
+ }
1715
+ [data-theme="dark"] .pds-datatable__tbody .pds-datatable__row--selected {
1716
+ background: color-mix(in srgb, var(--brand-500) 12%, transparent);
1717
+ }
1718
+ .pds-datatable__tbody .pds-datatable__row:last-child .pds-datatable__td {
1719
+ border-bottom: 0;
1720
+ }
1721
+
1722
+ .pds-datatable__check-col {
1723
+ width: 44px;
1724
+ }
1725
+ .pds-datatable__th.pds-datatable__check-col,
1726
+ .pds-datatable__td.pds-datatable__check-col {
1727
+ padding-right: 4px;
1728
+ }
1729
+
1730
+ .pds-datatable__cell-user {
1731
+ display: flex;
1732
+ align-items: center;
1733
+ gap: 10px;
1734
+ }
1735
+ .pds-datatable__cell-user-info {
1736
+ display: flex;
1737
+ flex-direction: column;
1738
+ gap: 1px;
1739
+ }
1740
+ .pds-datatable__cell-user-name {
1741
+ font-weight: var(--font-weight-medium);
1742
+ }
1743
+ .pds-datatable__cell-user-sub {
1744
+ font-size: var(--font-size-xs);
1745
+ color: var(--color-text-tertiary);
1746
+ font-family: var(--font-mono);
1747
+ }
1748
+
1749
+ .pds-datatable__footer {
1750
+ display: flex;
1751
+ align-items: center;
1752
+ justify-content: space-between;
1753
+ gap: 16px;
1754
+ padding: 10px 16px;
1755
+ border-top: 1px solid var(--color-border-tertiary);
1756
+ background: var(--color-bg-secondary);
1757
+ }
1758
+
1759
+ .pds-datatable__page-info {
1760
+ font-size: var(--font-size-xs);
1761
+ color: var(--color-text-tertiary);
1762
+ font-family: var(--font-mono);
1763
+ }
1764
+
1765
+ .pds-datatable__pagination {
1766
+ display: flex;
1767
+ align-items: center;
1768
+ gap: 3px;
1769
+ }
1770
+
1771
+ .pds-datatable__page-btn {
1772
+ appearance: none;
1773
+ background: var(--color-bg-primary);
1774
+ border: 0;
1775
+ box-shadow: var(--shadow-xs);
1776
+ height: 28px;
1777
+ min-width: 28px;
1778
+ padding: 0 6px;
1779
+ border-radius: var(--ctrl-radius);
1780
+ font-family: inherit;
1781
+ font-size: var(--font-size-xs);
1782
+ color: var(--color-text-secondary);
1783
+ cursor: pointer;
1784
+ display: inline-flex;
1785
+ align-items: center;
1786
+ justify-content: center;
1787
+ transition:
1788
+ background var(--duration-fast) var(--ease-out),
1789
+ color var(--duration-fast) var(--ease-out),
1790
+ box-shadow var(--duration-fast) var(--ease-out);
1791
+ }
1792
+ .pds-datatable__page-btn:hover:not(.pds-datatable__page-btn--active) {
1793
+ background: var(--color-bg-hover);
1794
+ color: var(--color-text-primary);
1795
+ box-shadow: var(--shadow-sm);
1796
+ }
1797
+ .pds-datatable__page-btn--active {
1798
+ background: var(--color-bg-brand);
1799
+ color: var(--color-text-on-brand);
1800
+ box-shadow: none;
1801
+ }
1802
+ .pds-datatable__page-btn--active:hover {
1803
+ background: var(--color-bg-brand-hover);
1804
+ }
1805
+ .pds-datatable__page-btn:disabled {
1806
+ opacity: 0.4;
1807
+ cursor: not-allowed;
1808
+ pointer-events: none;
1809
+ }
1162
1810
 
1163
1811
 
1164
1812
  /* === components/Divider.css === */
@@ -1244,8 +1892,14 @@ button {
1244
1892
  align-items: center;
1245
1893
  color: var(--color-text-brand);
1246
1894
  }
1247
- .pds-menu-item__indicator svg { width: 0.875rem; height: 0.875rem; }
1248
- .pds-menu-item__indicator--radio svg { width: 0.5rem; height: 0.5rem; }
1895
+ .pds-menu-item__indicator svg {
1896
+ width: 0.875rem;
1897
+ height: 0.875rem;
1898
+ }
1899
+ .pds-menu-item__indicator--radio svg {
1900
+ width: 0.5rem;
1901
+ height: 0.5rem;
1902
+ }
1249
1903
 
1250
1904
  .pds-menu-label {
1251
1905
  padding: 0.375rem 0.5rem;
@@ -1272,15 +1926,29 @@ button {
1272
1926
  }
1273
1927
 
1274
1928
  @media (min-width: 1024px) {
1275
- .pds-container { padding-inline: var(--grid-margin-lg); }
1929
+ .pds-container {
1930
+ padding-inline: var(--grid-margin-lg);
1931
+ }
1276
1932
  }
1277
1933
 
1278
- .pds-container--sm { max-width: var(--container-sm); }
1279
- .pds-container--md { max-width: var(--container-md); }
1280
- .pds-container--lg { max-width: var(--container-lg); }
1281
- .pds-container--xl { max-width: var(--container-xl); }
1282
- .pds-container--prose { max-width: var(--container-prose); }
1283
- .pds-container--fluid { max-width: none; }
1934
+ .pds-container--sm {
1935
+ max-width: var(--container-sm);
1936
+ }
1937
+ .pds-container--md {
1938
+ max-width: var(--container-md);
1939
+ }
1940
+ .pds-container--lg {
1941
+ max-width: var(--container-lg);
1942
+ }
1943
+ .pds-container--xl {
1944
+ max-width: var(--container-xl);
1945
+ }
1946
+ .pds-container--prose {
1947
+ max-width: var(--container-prose);
1948
+ }
1949
+ .pds-container--fluid {
1950
+ max-width: none;
1951
+ }
1284
1952
 
1285
1953
  /* Grid root */
1286
1954
  .pds-grid {
@@ -1290,73 +1958,183 @@ button {
1290
1958
  }
1291
1959
 
1292
1960
  @media (min-width: 640px) {
1293
- .pds-grid--default { gap: var(--grid-gutter); }
1961
+ .pds-grid--default {
1962
+ gap: var(--grid-gutter);
1963
+ }
1294
1964
  }
1295
1965
 
1296
- .pds-grid--tight { gap: var(--grid-gutter-tight); }
1297
- .pds-grid--flush { gap: 0; }
1966
+ .pds-grid--tight {
1967
+ gap: var(--grid-gutter-tight);
1968
+ }
1969
+ .pds-grid--flush {
1970
+ gap: 0;
1971
+ }
1298
1972
 
1299
1973
  /* Grid columns */
1300
- .pds-grid__col--span-1 { grid-column: span 1 / span 1; }
1301
- .pds-grid__col--span-2 { grid-column: span 2 / span 2; }
1302
- .pds-grid__col--span-3 { grid-column: span 3 / span 3; }
1303
- .pds-grid__col--span-4 { grid-column: span 4 / span 4; }
1304
- .pds-grid__col--span-5 { grid-column: span 5 / span 5; }
1305
- .pds-grid__col--span-6 { grid-column: span 6 / span 6; }
1306
- .pds-grid__col--span-7 { grid-column: span 7 / span 7; }
1307
- .pds-grid__col--span-8 { grid-column: span 8 / span 8; }
1308
- .pds-grid__col--span-9 { grid-column: span 9 / span 9; }
1309
- .pds-grid__col--span-10 { grid-column: span 10 / span 10; }
1310
- .pds-grid__col--span-11 { grid-column: span 11 / span 11; }
1311
- .pds-grid__col--span-12 { grid-column: span 12 / span 12; }
1312
- .pds-grid__col--span-full { grid-column: 1 / -1; }
1974
+ .pds-grid__col--span-1 {
1975
+ grid-column: span 1 / span 1;
1976
+ }
1977
+ .pds-grid__col--span-2 {
1978
+ grid-column: span 2 / span 2;
1979
+ }
1980
+ .pds-grid__col--span-3 {
1981
+ grid-column: span 3 / span 3;
1982
+ }
1983
+ .pds-grid__col--span-4 {
1984
+ grid-column: span 4 / span 4;
1985
+ }
1986
+ .pds-grid__col--span-5 {
1987
+ grid-column: span 5 / span 5;
1988
+ }
1989
+ .pds-grid__col--span-6 {
1990
+ grid-column: span 6 / span 6;
1991
+ }
1992
+ .pds-grid__col--span-7 {
1993
+ grid-column: span 7 / span 7;
1994
+ }
1995
+ .pds-grid__col--span-8 {
1996
+ grid-column: span 8 / span 8;
1997
+ }
1998
+ .pds-grid__col--span-9 {
1999
+ grid-column: span 9 / span 9;
2000
+ }
2001
+ .pds-grid__col--span-10 {
2002
+ grid-column: span 10 / span 10;
2003
+ }
2004
+ .pds-grid__col--span-11 {
2005
+ grid-column: span 11 / span 11;
2006
+ }
2007
+ .pds-grid__col--span-12 {
2008
+ grid-column: span 12 / span 12;
2009
+ }
2010
+ .pds-grid__col--span-full {
2011
+ grid-column: 1 / -1;
2012
+ }
1313
2013
 
1314
2014
  @media (min-width: 640px) {
1315
- .pds-grid__col--sm-span-1 { grid-column: span 1 / span 1; }
1316
- .pds-grid__col--sm-span-2 { grid-column: span 2 / span 2; }
1317
- .pds-grid__col--sm-span-3 { grid-column: span 3 / span 3; }
1318
- .pds-grid__col--sm-span-4 { grid-column: span 4 / span 4; }
1319
- .pds-grid__col--sm-span-5 { grid-column: span 5 / span 5; }
1320
- .pds-grid__col--sm-span-6 { grid-column: span 6 / span 6; }
1321
- .pds-grid__col--sm-span-7 { grid-column: span 7 / span 7; }
1322
- .pds-grid__col--sm-span-8 { grid-column: span 8 / span 8; }
1323
- .pds-grid__col--sm-span-9 { grid-column: span 9 / span 9; }
1324
- .pds-grid__col--sm-span-10 { grid-column: span 10 / span 10; }
1325
- .pds-grid__col--sm-span-11 { grid-column: span 11 / span 11; }
1326
- .pds-grid__col--sm-span-12 { grid-column: span 12 / span 12; }
1327
- .pds-grid__col--sm-span-full { grid-column: 1 / -1; }
2015
+ .pds-grid__col--sm-span-1 {
2016
+ grid-column: span 1 / span 1;
2017
+ }
2018
+ .pds-grid__col--sm-span-2 {
2019
+ grid-column: span 2 / span 2;
2020
+ }
2021
+ .pds-grid__col--sm-span-3 {
2022
+ grid-column: span 3 / span 3;
2023
+ }
2024
+ .pds-grid__col--sm-span-4 {
2025
+ grid-column: span 4 / span 4;
2026
+ }
2027
+ .pds-grid__col--sm-span-5 {
2028
+ grid-column: span 5 / span 5;
2029
+ }
2030
+ .pds-grid__col--sm-span-6 {
2031
+ grid-column: span 6 / span 6;
2032
+ }
2033
+ .pds-grid__col--sm-span-7 {
2034
+ grid-column: span 7 / span 7;
2035
+ }
2036
+ .pds-grid__col--sm-span-8 {
2037
+ grid-column: span 8 / span 8;
2038
+ }
2039
+ .pds-grid__col--sm-span-9 {
2040
+ grid-column: span 9 / span 9;
2041
+ }
2042
+ .pds-grid__col--sm-span-10 {
2043
+ grid-column: span 10 / span 10;
2044
+ }
2045
+ .pds-grid__col--sm-span-11 {
2046
+ grid-column: span 11 / span 11;
2047
+ }
2048
+ .pds-grid__col--sm-span-12 {
2049
+ grid-column: span 12 / span 12;
2050
+ }
2051
+ .pds-grid__col--sm-span-full {
2052
+ grid-column: 1 / -1;
2053
+ }
1328
2054
  }
1329
2055
 
1330
2056
  @media (min-width: 768px) {
1331
- .pds-grid__col--md-span-1 { grid-column: span 1 / span 1; }
1332
- .pds-grid__col--md-span-2 { grid-column: span 2 / span 2; }
1333
- .pds-grid__col--md-span-3 { grid-column: span 3 / span 3; }
1334
- .pds-grid__col--md-span-4 { grid-column: span 4 / span 4; }
1335
- .pds-grid__col--md-span-5 { grid-column: span 5 / span 5; }
1336
- .pds-grid__col--md-span-6 { grid-column: span 6 / span 6; }
1337
- .pds-grid__col--md-span-7 { grid-column: span 7 / span 7; }
1338
- .pds-grid__col--md-span-8 { grid-column: span 8 / span 8; }
1339
- .pds-grid__col--md-span-9 { grid-column: span 9 / span 9; }
1340
- .pds-grid__col--md-span-10 { grid-column: span 10 / span 10; }
1341
- .pds-grid__col--md-span-11 { grid-column: span 11 / span 11; }
1342
- .pds-grid__col--md-span-12 { grid-column: span 12 / span 12; }
1343
- .pds-grid__col--md-span-full { grid-column: 1 / -1; }
2057
+ .pds-grid__col--md-span-1 {
2058
+ grid-column: span 1 / span 1;
2059
+ }
2060
+ .pds-grid__col--md-span-2 {
2061
+ grid-column: span 2 / span 2;
2062
+ }
2063
+ .pds-grid__col--md-span-3 {
2064
+ grid-column: span 3 / span 3;
2065
+ }
2066
+ .pds-grid__col--md-span-4 {
2067
+ grid-column: span 4 / span 4;
2068
+ }
2069
+ .pds-grid__col--md-span-5 {
2070
+ grid-column: span 5 / span 5;
2071
+ }
2072
+ .pds-grid__col--md-span-6 {
2073
+ grid-column: span 6 / span 6;
2074
+ }
2075
+ .pds-grid__col--md-span-7 {
2076
+ grid-column: span 7 / span 7;
2077
+ }
2078
+ .pds-grid__col--md-span-8 {
2079
+ grid-column: span 8 / span 8;
2080
+ }
2081
+ .pds-grid__col--md-span-9 {
2082
+ grid-column: span 9 / span 9;
2083
+ }
2084
+ .pds-grid__col--md-span-10 {
2085
+ grid-column: span 10 / span 10;
2086
+ }
2087
+ .pds-grid__col--md-span-11 {
2088
+ grid-column: span 11 / span 11;
2089
+ }
2090
+ .pds-grid__col--md-span-12 {
2091
+ grid-column: span 12 / span 12;
2092
+ }
2093
+ .pds-grid__col--md-span-full {
2094
+ grid-column: 1 / -1;
2095
+ }
1344
2096
  }
1345
2097
 
1346
2098
  @media (min-width: 1024px) {
1347
- .pds-grid__col--lg-span-1 { grid-column: span 1 / span 1; }
1348
- .pds-grid__col--lg-span-2 { grid-column: span 2 / span 2; }
1349
- .pds-grid__col--lg-span-3 { grid-column: span 3 / span 3; }
1350
- .pds-grid__col--lg-span-4 { grid-column: span 4 / span 4; }
1351
- .pds-grid__col--lg-span-5 { grid-column: span 5 / span 5; }
1352
- .pds-grid__col--lg-span-6 { grid-column: span 6 / span 6; }
1353
- .pds-grid__col--lg-span-7 { grid-column: span 7 / span 7; }
1354
- .pds-grid__col--lg-span-8 { grid-column: span 8 / span 8; }
1355
- .pds-grid__col--lg-span-9 { grid-column: span 9 / span 9; }
1356
- .pds-grid__col--lg-span-10 { grid-column: span 10 / span 10; }
1357
- .pds-grid__col--lg-span-11 { grid-column: span 11 / span 11; }
1358
- .pds-grid__col--lg-span-12 { grid-column: span 12 / span 12; }
1359
- .pds-grid__col--lg-span-full { grid-column: 1 / -1; }
2099
+ .pds-grid__col--lg-span-1 {
2100
+ grid-column: span 1 / span 1;
2101
+ }
2102
+ .pds-grid__col--lg-span-2 {
2103
+ grid-column: span 2 / span 2;
2104
+ }
2105
+ .pds-grid__col--lg-span-3 {
2106
+ grid-column: span 3 / span 3;
2107
+ }
2108
+ .pds-grid__col--lg-span-4 {
2109
+ grid-column: span 4 / span 4;
2110
+ }
2111
+ .pds-grid__col--lg-span-5 {
2112
+ grid-column: span 5 / span 5;
2113
+ }
2114
+ .pds-grid__col--lg-span-6 {
2115
+ grid-column: span 6 / span 6;
2116
+ }
2117
+ .pds-grid__col--lg-span-7 {
2118
+ grid-column: span 7 / span 7;
2119
+ }
2120
+ .pds-grid__col--lg-span-8 {
2121
+ grid-column: span 8 / span 8;
2122
+ }
2123
+ .pds-grid__col--lg-span-9 {
2124
+ grid-column: span 9 / span 9;
2125
+ }
2126
+ .pds-grid__col--lg-span-10 {
2127
+ grid-column: span 10 / span 10;
2128
+ }
2129
+ .pds-grid__col--lg-span-11 {
2130
+ grid-column: span 11 / span 11;
2131
+ }
2132
+ .pds-grid__col--lg-span-12 {
2133
+ grid-column: span 12 / span 12;
2134
+ }
2135
+ .pds-grid__col--lg-span-full {
2136
+ grid-column: 1 / -1;
2137
+ }
1360
2138
  }
1361
2139
 
1362
2140
 
@@ -1396,7 +2174,8 @@ button {
1396
2174
  }
1397
2175
  .pds-input[aria-invalid]:focus-visible {
1398
2176
  border-color: var(--color-border-danger);
1399
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-bg-danger-strong) 25%, transparent);
2177
+ box-shadow: 0 0 0 3px
2178
+ color-mix(in srgb, var(--color-bg-danger-strong) 25%, transparent);
1400
2179
  }
1401
2180
 
1402
2181
  /* sizes */
@@ -1423,7 +2202,11 @@ button {
1423
2202
  position: fixed;
1424
2203
  inset: 0;
1425
2204
  z-index: 50;
1426
- background-color: color-mix(in srgb, var(--color-bg-inverse) 50%, transparent);
2205
+ background-color: color-mix(
2206
+ in srgb,
2207
+ var(--color-bg-inverse) 50%,
2208
+ transparent
2209
+ );
1427
2210
  backdrop-filter: blur(4px);
1428
2211
  transition: opacity var(--duration-normal) var(--ease-out);
1429
2212
  }
@@ -1471,6 +2254,125 @@ button {
1471
2254
  }
1472
2255
 
1473
2256
 
2257
+ /* === components/Popover.css === */
2258
+ /* Popover */
2259
+ .pds-popover-positioner {
2260
+ z-index: 900;
2261
+ outline: none;
2262
+ }
2263
+
2264
+ .pds-popover-popup {
2265
+ display: flex;
2266
+ flex-direction: column;
2267
+ min-width: 220px;
2268
+ max-width: 340px;
2269
+ background-color: var(--color-bg-primary);
2270
+ border-radius: var(--radius-lg);
2271
+ box-shadow: var(--shadow-lg);
2272
+ outline: none;
2273
+ transform-origin: var(--transform-origin);
2274
+ transition-property: opacity, transform, scale;
2275
+ transition-duration: var(--duration-fast);
2276
+ transition-timing-function: var(--ease-spring);
2277
+ }
2278
+ .pds-popover-popup[data-starting-style],
2279
+ .pds-popover-popup[data-ending-style] {
2280
+ opacity: 0;
2281
+ transform: scale(0.96);
2282
+ }
2283
+
2284
+ /* caret */
2285
+ .pds-popover-arrow {
2286
+ width: 10px;
2287
+ height: 10px;
2288
+ background-color: var(--color-bg-primary);
2289
+ border: 1px solid var(--color-border-secondary);
2290
+ transform: rotate(45deg);
2291
+ }
2292
+ .pds-popover-arrow[data-side="bottom"] {
2293
+ border-right-color: transparent;
2294
+ border-bottom-color: transparent;
2295
+ }
2296
+ .pds-popover-arrow[data-side="top"] {
2297
+ border-left-color: transparent;
2298
+ border-top-color: transparent;
2299
+ }
2300
+ .pds-popover-arrow[data-side="left"] {
2301
+ border-top-color: transparent;
2302
+ border-left-color: transparent;
2303
+ }
2304
+ .pds-popover-arrow[data-side="right"] {
2305
+ border-bottom-color: transparent;
2306
+ border-right-color: transparent;
2307
+ }
2308
+
2309
+ /* header */
2310
+ .pds-popover__header {
2311
+ display: flex;
2312
+ align-items: flex-start;
2313
+ justify-content: space-between;
2314
+ gap: 12px;
2315
+ padding: 14px 16px 0;
2316
+ }
2317
+
2318
+ .pds-popover-title {
2319
+ font-size: var(--font-size-sm);
2320
+ font-weight: var(--font-weight-semibold);
2321
+ letter-spacing: var(--letter-snug);
2322
+ color: var(--color-text-primary);
2323
+ margin: 0;
2324
+ }
2325
+
2326
+ .pds-popover-description {
2327
+ margin: 0;
2328
+ font-size: var(--font-size-xs);
2329
+ color: var(--color-text-secondary);
2330
+ }
2331
+
2332
+ .pds-popover-close {
2333
+ appearance: none;
2334
+ background: transparent;
2335
+ border: 0;
2336
+ width: 22px;
2337
+ height: 22px;
2338
+ border-radius: var(--radius-sm);
2339
+ color: var(--color-text-tertiary);
2340
+ cursor: pointer;
2341
+ display: inline-flex;
2342
+ align-items: center;
2343
+ justify-content: center;
2344
+ flex: none;
2345
+ transition:
2346
+ background var(--duration-fast) var(--ease-out),
2347
+ color var(--duration-fast) var(--ease-out);
2348
+ }
2349
+ .pds-popover-close:hover {
2350
+ background: var(--color-bg-hover);
2351
+ color: var(--color-text-primary);
2352
+ }
2353
+
2354
+ /* body */
2355
+ .pds-popover__body {
2356
+ padding: 12px 16px;
2357
+ font-size: var(--font-size-sm);
2358
+ color: var(--color-text-secondary);
2359
+ line-height: var(--line-height-relaxed);
2360
+ flex: 1;
2361
+ }
2362
+ .pds-popover__header + .pds-popover__body {
2363
+ padding-top: 8px;
2364
+ }
2365
+
2366
+ /* footer */
2367
+ .pds-popover__footer {
2368
+ padding: 0 16px 14px;
2369
+ display: flex;
2370
+ align-items: center;
2371
+ justify-content: flex-end;
2372
+ gap: 8px;
2373
+ }
2374
+
2375
+
1474
2376
  /* === components/Radio.css === */
1475
2377
  /* Radio */
1476
2378
  .pds-radio {
@@ -1510,9 +2412,18 @@ button {
1510
2412
  }
1511
2413
 
1512
2414
  /* sizes */
1513
- .pds-radio--sm { width: 1rem; height: 1rem; }
1514
- .pds-radio--md { width: 1.125rem; height: 1.125rem; }
1515
- .pds-radio--lg { width: 1.25rem; height: 1.25rem; }
2415
+ .pds-radio--sm {
2416
+ width: 1rem;
2417
+ height: 1rem;
2418
+ }
2419
+ .pds-radio--md {
2420
+ width: 1.125rem;
2421
+ height: 1.125rem;
2422
+ }
2423
+ .pds-radio--lg {
2424
+ width: 1.25rem;
2425
+ height: 1.25rem;
2426
+ }
1516
2427
 
1517
2428
  /* indicator */
1518
2429
  .pds-radio__indicator {
@@ -1524,9 +2435,18 @@ button {
1524
2435
  transform: scale(0);
1525
2436
  }
1526
2437
 
1527
- .pds-radio--sm .pds-radio__indicator { width: 0.375rem; height: 0.375rem; }
1528
- .pds-radio--md .pds-radio__indicator { width: 0.5rem; height: 0.5rem; }
1529
- .pds-radio--lg .pds-radio__indicator { width: 0.625rem; height: 0.625rem; }
2438
+ .pds-radio--sm .pds-radio__indicator {
2439
+ width: 0.375rem;
2440
+ height: 0.375rem;
2441
+ }
2442
+ .pds-radio--md .pds-radio__indicator {
2443
+ width: 0.5rem;
2444
+ height: 0.5rem;
2445
+ }
2446
+ .pds-radio--lg .pds-radio__indicator {
2447
+ width: 0.625rem;
2448
+ height: 0.625rem;
2449
+ }
1530
2450
 
1531
2451
  /* RadioGroup */
1532
2452
  .pds-radio-group {
@@ -1545,9 +2465,18 @@ button {
1545
2465
  border-radius: var(--radius-full);
1546
2466
  }
1547
2467
 
1548
- .pds-segmented--sm { padding: 0.125rem; gap: 0.125rem; }
1549
- .pds-segmented--md { padding: 0.25rem; gap: 0.125rem; }
1550
- .pds-segmented--lg { padding: 0.25rem; gap: 0.25rem; }
2468
+ .pds-segmented--sm {
2469
+ padding: 0.125rem;
2470
+ gap: 0.125rem;
2471
+ }
2472
+ .pds-segmented--md {
2473
+ padding: 0.25rem;
2474
+ gap: 0.125rem;
2475
+ }
2476
+ .pds-segmented--lg {
2477
+ padding: 0.25rem;
2478
+ gap: 0.25rem;
2479
+ }
1551
2480
 
1552
2481
  /* item */
1553
2482
  .pds-segmented__item {
@@ -1591,9 +2520,21 @@ button {
1591
2520
  cursor: not-allowed;
1592
2521
  }
1593
2522
 
1594
- .pds-segmented__item--sm { height: 1.5rem; padding-inline: 0.625rem; font-size: var(--font-size-xs); }
1595
- .pds-segmented__item--md { height: 1.75rem; padding-inline: 0.75rem; font-size: var(--font-size-xs); }
1596
- .pds-segmented__item--lg { height: 2rem; padding-inline: 0.875rem; font-size: var(--font-size-sm); }
2523
+ .pds-segmented__item--sm {
2524
+ height: 1.5rem;
2525
+ padding-inline: 0.625rem;
2526
+ font-size: var(--font-size-xs);
2527
+ }
2528
+ .pds-segmented__item--md {
2529
+ height: 1.75rem;
2530
+ padding-inline: 0.75rem;
2531
+ font-size: var(--font-size-xs);
2532
+ }
2533
+ .pds-segmented__item--lg {
2534
+ height: 2rem;
2535
+ padding-inline: 0.875rem;
2536
+ font-size: var(--font-size-sm);
2537
+ }
1597
2538
 
1598
2539
 
1599
2540
  /* === components/Select.css === */
@@ -1658,7 +2599,10 @@ button {
1658
2599
  flex-shrink: 0;
1659
2600
  display: inline-flex;
1660
2601
  }
1661
- .pds-select-icon svg { width: 1rem; height: 1rem; }
2602
+ .pds-select-icon svg {
2603
+ width: 1rem;
2604
+ height: 1rem;
2605
+ }
1662
2606
 
1663
2607
  /* value */
1664
2608
  .pds-select-value {
@@ -1730,7 +2674,10 @@ button {
1730
2674
  align-items: center;
1731
2675
  color: var(--color-text-brand);
1732
2676
  }
1733
- .pds-select-item__indicator svg { width: 0.875rem; height: 0.875rem; }
2677
+ .pds-select-item__indicator svg {
2678
+ width: 0.875rem;
2679
+ height: 0.875rem;
2680
+ }
1734
2681
 
1735
2682
 
1736
2683
  /* === components/Skeleton.css === */
@@ -1755,7 +2702,9 @@ button {
1755
2702
  }
1756
2703
 
1757
2704
  @keyframes pds-skeleton-pulse {
1758
- 50% { opacity: 0.5; }
2705
+ 50% {
2706
+ opacity: 0.5;
2707
+ }
1759
2708
  }
1760
2709
 
1761
2710
 
@@ -1788,7 +2737,10 @@ button {
1788
2737
  flex-shrink: 0;
1789
2738
  background: var(--pill-chip);
1790
2739
  }
1791
- .pds-status-pill__indicator svg { width: 0.75rem; height: 0.75rem; }
2740
+ .pds-status-pill__indicator svg {
2741
+ width: 0.75rem;
2742
+ height: 0.75rem;
2743
+ }
1792
2744
 
1793
2745
  .pds-status-pill__label {
1794
2746
  line-height: 1;
@@ -1829,9 +2781,18 @@ button {
1829
2781
  }
1830
2782
 
1831
2783
  /* sizes — root */
1832
- .pds-switch--sm { height: 1rem; width: 1.75rem; }
1833
- .pds-switch--md { height: 1.25rem; width: 2.25rem; }
1834
- .pds-switch--lg { height: 1.5rem; width: 2.75rem; }
2784
+ .pds-switch--sm {
2785
+ height: 1rem;
2786
+ width: 1.75rem;
2787
+ }
2788
+ .pds-switch--md {
2789
+ height: 1.25rem;
2790
+ width: 2.25rem;
2791
+ }
2792
+ .pds-switch--lg {
2793
+ height: 1.5rem;
2794
+ width: 2.75rem;
2795
+ }
1835
2796
 
1836
2797
  /* thumb */
1837
2798
  .pds-switch__thumb {
@@ -1842,13 +2803,28 @@ button {
1842
2803
  transition: transform var(--duration-normal) var(--ease-out);
1843
2804
  }
1844
2805
 
1845
- .pds-switch--sm .pds-switch__thumb { width: 0.75rem; height: 0.75rem; }
1846
- .pds-switch--md .pds-switch__thumb { width: 1rem; height: 1rem; }
1847
- .pds-switch--lg .pds-switch__thumb { width: 1.25rem; height: 1.25rem; }
2806
+ .pds-switch--sm .pds-switch__thumb {
2807
+ width: 0.75rem;
2808
+ height: 0.75rem;
2809
+ }
2810
+ .pds-switch--md .pds-switch__thumb {
2811
+ width: 1rem;
2812
+ height: 1rem;
2813
+ }
2814
+ .pds-switch--lg .pds-switch__thumb {
2815
+ width: 1.25rem;
2816
+ height: 1.25rem;
2817
+ }
1848
2818
 
1849
- .pds-switch--sm[data-checked] .pds-switch__thumb { transform: translateX(0.75rem); }
1850
- .pds-switch--md[data-checked] .pds-switch__thumb { transform: translateX(1rem); }
1851
- .pds-switch--lg[data-checked] .pds-switch__thumb { transform: translateX(1.25rem); }
2819
+ .pds-switch--sm[data-checked] .pds-switch__thumb {
2820
+ transform: translateX(0.75rem);
2821
+ }
2822
+ .pds-switch--md[data-checked] .pds-switch__thumb {
2823
+ transform: translateX(1rem);
2824
+ }
2825
+ .pds-switch--lg[data-checked] .pds-switch__thumb {
2826
+ transform: translateX(1.25rem);
2827
+ }
1852
2828
 
1853
2829
 
1854
2830
  /* === components/Tabs.css === */
@@ -1913,7 +2889,9 @@ button {
1913
2889
  width: var(--active-tab-width);
1914
2890
  transform: translateX(var(--active-tab-left));
1915
2891
  background-color: var(--color-bg-brand);
1916
- transition: transform var(--duration-normal) var(--ease-out), width var(--duration-normal) var(--ease-out);
2892
+ transition:
2893
+ transform var(--duration-normal) var(--ease-out),
2894
+ width var(--duration-normal) var(--ease-out);
1917
2895
  }
1918
2896
 
1919
2897
  .pds-tabs__panel {
@@ -1963,7 +2941,8 @@ button {
1963
2941
  }
1964
2942
  .pds-textarea[aria-invalid]:focus-visible {
1965
2943
  border-color: var(--color-border-danger);
1966
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-bg-danger-strong) 25%, transparent);
2944
+ box-shadow: 0 0 0 3px
2945
+ color-mix(in srgb, var(--color-bg-danger-strong) 25%, transparent);
1967
2946
  }
1968
2947
 
1969
2948
  /* sizes */
@@ -2015,8 +2994,7 @@ button {
2015
2994
  flex-direction: column;
2016
2995
  gap: 0.25rem;
2017
2996
 
2018
- transform:
2019
- translateX(var(--toast-swipe-movement-x))
2997
+ transform: translateX(var(--toast-swipe-movement-x))
2020
2998
  translateY(calc(var(--toast-index) * -20% + var(--toast-swipe-movement-y)));
2021
2999
  transition:
2022
3000
  transform 350ms var(--ease-out),
@@ -2026,7 +3004,9 @@ button {
2026
3004
  }
2027
3005
 
2028
3006
  .pds-toast-item[data-expanded] {
2029
- transform: translateY(calc(var(--toast-offset-y) * -1px - var(--toast-index) * var(--gap)));
3007
+ transform: translateY(
3008
+ calc(var(--toast-offset-y) * -1px - var(--toast-index) * var(--gap))
3009
+ );
2030
3010
  }
2031
3011
 
2032
3012
  .pds-toast-item[data-limited] {
@@ -2068,7 +3048,9 @@ button {
2068
3048
  border-radius: var(--radius-md);
2069
3049
  color: var(--color-text-tertiary);
2070
3050
  cursor: pointer;
2071
- transition: background-color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);
3051
+ transition:
3052
+ background-color var(--duration-fast) var(--ease-out),
3053
+ color var(--duration-fast) var(--ease-out);
2072
3054
  }
2073
3055
 
2074
3056
  .pds-toast-close:hover {
@@ -2081,7 +3063,10 @@ button {
2081
3063
  box-shadow: var(--shadow-focus);
2082
3064
  }
2083
3065
 
2084
- .pds-toast-close svg { width: 1rem; height: 1rem; }
3066
+ .pds-toast-close svg {
3067
+ width: 1rem;
3068
+ height: 1rem;
3069
+ }
2085
3070
 
2086
3071
 
2087
3072
  /* === components/Tooltip.css === */