@bubble-design-system/ui 1.0.1 → 1.2.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%;
@@ -1042,123 +1159,992 @@ button {
1042
1159
  transition: box-shadow var(--duration-fast) var(--ease-out);
1043
1160
  }
1044
1161
 
1045
- .pds-card--elevated {
1046
- background-color: var(--color-bg-primary);
1047
- box-shadow: var(--shadow-md);
1162
+ .pds-card--elevated {
1163
+ background-color: var(--color-bg-primary);
1164
+ box-shadow: var(--shadow-md);
1165
+ }
1166
+
1167
+ .pds-card--muted {
1168
+ background-color: var(--color-bg-secondary);
1169
+ }
1170
+
1171
+ .pds-card__header {
1172
+ display: flex;
1173
+ align-items: flex-start;
1174
+ justify-content: space-between;
1175
+ gap: 0.75rem;
1176
+ }
1177
+
1178
+ .pds-card__title {
1179
+ font-size: var(--font-size-lg);
1180
+ font-weight: var(--font-weight-semibold);
1181
+ color: var(--color-text-primary);
1182
+ letter-spacing: var(--letter-snug);
1183
+ line-height: var(--line-height-snug);
1184
+ margin: 0;
1185
+ }
1186
+
1187
+ .pds-card__description {
1188
+ font-size: var(--font-size-sm);
1189
+ color: var(--color-text-secondary);
1190
+ line-height: var(--line-height-normal);
1191
+ margin: 0;
1192
+ }
1193
+
1194
+ .pds-card__action {
1195
+ flex-shrink: 0;
1196
+ display: flex;
1197
+ align-items: center;
1198
+ gap: 0.5rem;
1199
+ }
1200
+
1201
+ .pds-card__body {
1202
+ flex: 1;
1203
+ font-size: var(--font-size-sm);
1204
+ color: var(--color-text-primary);
1205
+ }
1206
+
1207
+ .pds-card__footer {
1208
+ display: flex;
1209
+ align-items: center;
1210
+ justify-content: flex-end;
1211
+ gap: 0.5rem;
1212
+ padding-top: var(--row-gap);
1213
+ border-top: 1px solid var(--color-border-tertiary);
1214
+ }
1215
+
1216
+
1217
+ /* === components/Chat.css === */
1218
+ /* Chat */
1219
+
1220
+ /* ── Thread container ───────────────────────────────── */
1221
+ .pds-chat-thread {
1222
+ display: flex;
1223
+ flex-direction: column;
1224
+ gap: 2px;
1225
+ padding: 16px;
1226
+ overflow-y: auto;
1227
+ }
1228
+
1229
+ /* ── Message wrapper ────────────────────────────────── */
1230
+ .pds-chat-msg {
1231
+ display: flex;
1232
+ flex-direction: column;
1233
+ max-width: 72%;
1234
+ gap: 3px;
1235
+ }
1236
+ .pds-chat-msg--received {
1237
+ align-self: flex-start;
1238
+ align-items: flex-start;
1239
+ }
1240
+ .pds-chat-msg--sent {
1241
+ align-self: flex-end;
1242
+ align-items: flex-end;
1243
+ }
1244
+
1245
+ /* Group spacing — first/solo get top margin to separate runs */
1246
+ .pds-chat-msg--solo,
1247
+ .pds-chat-msg--first {
1248
+ margin-top: 14px;
1249
+ }
1250
+ .pds-chat-thread > .pds-chat-msg:first-child {
1251
+ margin-top: 0;
1252
+ }
1253
+
1254
+ /* ── Meta row (name + time, shown on first/solo) ────── */
1255
+ .pds-chat-msg__meta-row {
1256
+ display: flex;
1257
+ align-items: center;
1258
+ gap: 6px;
1259
+ padding: 0 4px;
1260
+ margin-bottom: 2px;
1261
+ }
1262
+ .pds-chat-msg--sent .pds-chat-msg__meta-row {
1263
+ flex-direction: row-reverse;
1264
+ }
1265
+
1266
+ .pds-chat-msg__name {
1267
+ font-size: var(--font-size-xs);
1268
+ font-weight: var(--font-weight-medium);
1269
+ color: var(--color-text-secondary);
1270
+ letter-spacing: var(--letter-snug);
1271
+ }
1272
+ .pds-chat-msg__time {
1273
+ font-size: 11px;
1274
+ color: var(--color-text-tertiary);
1275
+ font-family: var(--font-mono);
1276
+ }
1277
+
1278
+ /* ── Row: avatar slot + bubble column ───────────────── */
1279
+ .pds-chat-msg__row {
1280
+ display: flex;
1281
+ align-items: flex-end;
1282
+ gap: 8px;
1283
+ }
1284
+ .pds-chat-msg--sent .pds-chat-msg__row {
1285
+ flex-direction: row-reverse;
1286
+ }
1287
+
1288
+ /* fixed-width slot keeps bubbles aligned within their column */
1289
+ .pds-chat-msg__avatar-slot {
1290
+ width: 32px;
1291
+ flex: none;
1292
+ display: flex;
1293
+ align-items: flex-end;
1294
+ justify-content: center;
1295
+ }
1296
+
1297
+ .pds-chat-msg__bubble-col {
1298
+ display: flex;
1299
+ flex-direction: column;
1300
+ gap: 4px;
1301
+ min-width: 0;
1302
+ }
1303
+ .pds-chat-msg--sent .pds-chat-msg__bubble-col {
1304
+ align-items: flex-end;
1305
+ }
1306
+
1307
+ /* ── Bubble ──────────────────────────────────────────
1308
+ Elevation-only (no border), per the convention in
1309
+ Popover/DataTable/CommandPalette — --shadow-sm is
1310
+ already retuned per [data-tone], so the bubble reads
1311
+ correctly in vivid/pastel/soft without branching. */
1312
+ .pds-chat-bubble {
1313
+ padding: 9px 14px;
1314
+ font-size: var(--font-size-sm);
1315
+ line-height: 1.55;
1316
+ word-break: break-word;
1317
+ border-radius: var(--radius-xl);
1318
+ max-width: 100%;
1319
+ }
1320
+
1321
+ .pds-chat-bubble--received {
1322
+ background: var(--color-bg-primary);
1323
+ color: var(--color-text-primary);
1324
+ box-shadow: var(--shadow-sm);
1325
+ }
1326
+ /* Tail corner: flat top-left on solo/first */
1327
+ .pds-chat-bubble--received.pds-chat-bubble--solo,
1328
+ .pds-chat-bubble--received.pds-chat-bubble--first {
1329
+ border-top-left-radius: var(--radius-sm);
1330
+ }
1331
+ /* Mid run: both left corners flat */
1332
+ .pds-chat-bubble--received.pds-chat-bubble--middle {
1333
+ border-top-left-radius: var(--radius-sm);
1334
+ border-bottom-left-radius: var(--radius-sm);
1335
+ }
1336
+ /* Last in run: only top-left flat */
1337
+ .pds-chat-bubble--received.pds-chat-bubble--last {
1338
+ border-top-left-radius: var(--radius-sm);
1339
+ }
1340
+
1341
+ .pds-chat-bubble--sent {
1342
+ background: var(--color-bg-brand);
1343
+ color: var(--color-text-on-brand);
1344
+ box-shadow: var(--shadow-sm);
1345
+ }
1346
+ .pds-chat-bubble--sent.pds-chat-bubble--solo,
1347
+ .pds-chat-bubble--sent.pds-chat-bubble--first {
1348
+ border-top-right-radius: var(--radius-sm);
1349
+ }
1350
+ .pds-chat-bubble--sent.pds-chat-bubble--middle {
1351
+ border-top-right-radius: var(--radius-sm);
1352
+ border-bottom-right-radius: var(--radius-sm);
1353
+ }
1354
+ .pds-chat-bubble--sent.pds-chat-bubble--last {
1355
+ border-top-right-radius: var(--radius-sm);
1356
+ }
1357
+
1358
+ /* ── Reactions ──────────────────────────────────────── */
1359
+ .pds-chat-reactions {
1360
+ display: flex;
1361
+ gap: 4px;
1362
+ flex-wrap: wrap;
1363
+ }
1364
+ .pds-chat-reaction {
1365
+ display: inline-flex;
1366
+ align-items: center;
1367
+ gap: 3px;
1368
+ height: 24px;
1369
+ padding: 0 8px;
1370
+ background: var(--color-bg-primary);
1371
+ border: 0;
1372
+ border-radius: var(--radius-full);
1373
+ box-shadow: var(--shadow-sm);
1374
+ font-size: 13px;
1375
+ line-height: 1;
1376
+ font-family: inherit;
1377
+ cursor: pointer;
1378
+ transition:
1379
+ background var(--duration-fast) var(--ease-out),
1380
+ transform var(--duration-fast) var(--ease-out);
1381
+ }
1382
+ .pds-chat-reaction:hover {
1383
+ background: var(--color-bg-hover);
1384
+ transform: scale(1.08);
1385
+ }
1386
+ .pds-chat-reaction__count {
1387
+ font-size: 11px;
1388
+ font-weight: var(--font-weight-medium);
1389
+ color: var(--color-text-secondary);
1390
+ }
1391
+ .pds-chat-reaction--mine {
1392
+ background: var(--color-bg-brand-subtle);
1393
+ }
1394
+ .pds-chat-reaction--mine .pds-chat-reaction__count {
1395
+ color: var(--color-text-brand);
1396
+ }
1397
+
1398
+ /* ── Delivery status (sent only) ────────────────────── */
1399
+ .pds-chat-msg__status {
1400
+ display: flex;
1401
+ align-items: center;
1402
+ gap: 4px;
1403
+ color: var(--color-text-tertiary);
1404
+ margin-top: 2px;
1405
+ padding: 0 2px;
1406
+ }
1407
+ .pds-chat-msg__status--read {
1408
+ color: var(--color-bg-brand);
1409
+ }
1410
+ .pds-chat-msg__status-label {
1411
+ font-size: 11px;
1412
+ text-transform: capitalize;
1413
+ font-family: var(--font-mono);
1414
+ }
1415
+
1416
+ /* ── Date divider ───────────────────────────────────── */
1417
+ .pds-chat-divider {
1418
+ display: flex;
1419
+ align-items: center;
1420
+ gap: 12px;
1421
+ margin: 12px 0 4px;
1422
+ }
1423
+ .pds-chat-divider::before,
1424
+ .pds-chat-divider::after {
1425
+ content: "";
1426
+ flex: 1;
1427
+ height: 1px;
1428
+ background: var(--color-border-secondary);
1429
+ }
1430
+ .pds-chat-divider__label {
1431
+ font-size: 11px;
1432
+ font-family: var(--font-mono);
1433
+ color: var(--color-text-tertiary);
1434
+ white-space: nowrap;
1435
+ letter-spacing: var(--letter-wide);
1436
+ text-transform: uppercase;
1437
+ }
1438
+
1439
+ /* ── Compose bar ─────────────────────────────────────
1440
+ --color-bg-secondary equals --color-bg-page in soft
1441
+ tone (the gray page) and a light gray in vivid/pastel,
1442
+ so the white --color-bg-primary field floats above it
1443
+ in every tone without a [data-tone] branch. */
1444
+ .pds-chat-compose {
1445
+ display: flex;
1446
+ align-items: flex-end;
1447
+ gap: 8px;
1448
+ padding: 12px 16px 14px;
1449
+ background: var(--color-bg-secondary);
1450
+ border-top: 1px solid var(--color-border-tertiary);
1451
+ }
1452
+ .pds-chat-compose__avatar {
1453
+ flex: none;
1454
+ padding-bottom: 3px;
1455
+ }
1456
+
1457
+ /* pill input wrapper */
1458
+ .pds-chat-compose__field {
1459
+ flex: 1;
1460
+ display: flex;
1461
+ align-items: flex-end;
1462
+ gap: 2px;
1463
+ background: var(--color-bg-primary);
1464
+ border-radius: var(--ctrl-radius);
1465
+ box-shadow: var(--shadow-md);
1466
+ padding: 5px 6px 5px 14px;
1467
+ transition: box-shadow var(--duration-fast) var(--ease-out);
1468
+ }
1469
+ .pds-chat-compose__field:focus-within {
1470
+ box-shadow: var(--shadow-focus);
1471
+ }
1472
+
1473
+ /* textarea inside compose */
1474
+ .pds-chat-compose__textarea {
1475
+ flex: 1;
1476
+ border: 0;
1477
+ background: transparent;
1478
+ font-family: inherit;
1479
+ font-size: var(--font-size-sm);
1480
+ color: var(--color-text-primary);
1481
+ resize: none;
1482
+ outline: none;
1483
+ min-height: 24px;
1484
+ max-height: 120px;
1485
+ line-height: 1.5;
1486
+ padding: 5px 0;
1487
+ overflow-y: auto;
1488
+ }
1489
+ .pds-chat-compose__textarea::placeholder {
1490
+ color: var(--color-text-tertiary);
1491
+ }
1492
+
1493
+ /* icon buttons inside the pill */
1494
+ .pds-chat-compose__icon-btn {
1495
+ flex: none;
1496
+ display: flex;
1497
+ align-items: center;
1498
+ justify-content: center;
1499
+ width: 30px;
1500
+ height: 30px;
1501
+ padding: 0;
1502
+ border: 0;
1503
+ border-radius: var(--radius-full);
1504
+ background: transparent;
1505
+ color: var(--color-text-tertiary);
1506
+ cursor: pointer;
1507
+ transition:
1508
+ background var(--duration-fast) var(--ease-out),
1509
+ color var(--duration-fast) var(--ease-out);
1510
+ }
1511
+ .pds-chat-compose__icon-btn:hover {
1512
+ background: var(--color-bg-hover);
1513
+ color: var(--color-text-secondary);
1514
+ }
1515
+
1516
+ /* send button */
1517
+ .pds-chat-send {
1518
+ flex: none;
1519
+ width: 36px;
1520
+ height: 36px;
1521
+ padding: 0;
1522
+ border: 0;
1523
+ border-radius: var(--radius-full);
1524
+ background: var(--color-bg-brand);
1525
+ color: var(--color-text-on-brand);
1526
+ display: flex;
1527
+ align-items: center;
1528
+ justify-content: center;
1529
+ cursor: pointer;
1530
+ opacity: 0.38;
1531
+ transition:
1532
+ background var(--duration-fast) var(--ease-out),
1533
+ transform var(--duration-fast) var(--ease-out),
1534
+ opacity var(--duration-fast) var(--ease-out),
1535
+ box-shadow var(--duration-fast) var(--ease-out);
1536
+ }
1537
+ .pds-chat-send--active {
1538
+ opacity: 1;
1539
+ box-shadow: var(--shadow-sm);
1540
+ }
1541
+ .pds-chat-send--active:hover {
1542
+ background: var(--color-bg-brand-hover);
1543
+ box-shadow: var(--shadow-md);
1544
+ transform: scale(1.07);
1545
+ }
1546
+ .pds-chat-send--active:active {
1547
+ box-shadow: var(--shadow-sm);
1548
+ transform: scale(0.93);
1549
+ }
1550
+ .pds-chat-send:disabled {
1551
+ cursor: not-allowed;
1552
+ }
1553
+
1554
+
1555
+ /* === components/Checkbox.css === */
1556
+ /* Checkbox */
1557
+ .pds-checkbox {
1558
+ display: inline-flex;
1559
+ align-items: center;
1560
+ justify-content: center;
1561
+ flex-shrink: 0;
1562
+ background-color: var(--color-bg-primary);
1563
+ border: 1px solid var(--color-border-primary);
1564
+ color: var(--color-text-on-brand);
1565
+ transition-property: background-color, color, border-color, box-shadow;
1566
+ transition-duration: var(--duration-fast);
1567
+ transition-timing-function: var(--ease-out);
1568
+ cursor: pointer;
1569
+ }
1570
+
1571
+ .pds-checkbox:hover {
1572
+ border-color: var(--color-border-brand);
1573
+ }
1574
+
1575
+ .pds-checkbox:focus-visible {
1576
+ outline: none;
1577
+ box-shadow: var(--shadow-focus);
1578
+ }
1579
+
1580
+ .pds-checkbox[data-checked],
1581
+ .pds-checkbox[data-indeterminate] {
1582
+ background-color: var(--color-bg-brand);
1583
+ border-color: var(--color-border-brand);
1584
+ }
1585
+
1586
+ .pds-checkbox[data-disabled] {
1587
+ background-color: var(--color-bg-disabled);
1588
+ border-color: var(--color-border-secondary);
1589
+ cursor: not-allowed;
1590
+ }
1591
+ .pds-checkbox[data-disabled]:hover {
1592
+ border-color: var(--color-border-secondary);
1593
+ }
1594
+
1595
+ /* sizes */
1596
+ .pds-checkbox--sm {
1597
+ width: 1rem;
1598
+ height: 1rem;
1599
+ border-radius: var(--radius-xs);
1600
+ }
1601
+ .pds-checkbox--md {
1602
+ width: 1.125rem;
1603
+ height: 1.125rem;
1604
+ border-radius: var(--radius-sm);
1605
+ }
1606
+ .pds-checkbox--lg {
1607
+ width: 1.25rem;
1608
+ height: 1.25rem;
1609
+ border-radius: var(--radius-sm);
1610
+ }
1611
+
1612
+ /* indicator wrapper */
1613
+ .pds-checkbox__indicator {
1614
+ display: flex;
1615
+ align-items: center;
1616
+ justify-content: center;
1617
+ }
1618
+
1619
+ /* indicator icons — sized by parent .pds-checkbox--{size} */
1620
+ .pds-checkbox--sm .pds-checkbox__icon {
1621
+ width: 0.75rem;
1622
+ height: 0.75rem;
1623
+ }
1624
+ .pds-checkbox--md .pds-checkbox__icon {
1625
+ width: 0.875rem;
1626
+ height: 0.875rem;
1627
+ }
1628
+ .pds-checkbox--lg .pds-checkbox__icon {
1629
+ width: 1rem;
1630
+ height: 1rem;
1631
+ }
1632
+
1633
+ /* show the right icon based on state — checked or indeterminate */
1634
+ .pds-checkbox__icon--check {
1635
+ display: block;
1636
+ }
1637
+ .pds-checkbox__icon--indeterminate {
1638
+ display: none;
1639
+ }
1640
+ .pds-checkbox[data-indeterminate] .pds-checkbox__icon--check {
1641
+ display: none;
1642
+ }
1643
+ .pds-checkbox[data-indeterminate] .pds-checkbox__icon--indeterminate {
1644
+ display: block;
1645
+ }
1646
+
1647
+
1648
+ /* === components/CommandPalette.css === */
1649
+ /* CommandPalette */
1650
+ .pds-command-palette-backdrop {
1651
+ position: fixed;
1652
+ inset: 0;
1653
+ z-index: 1001;
1654
+ background-color: color-mix(
1655
+ in srgb,
1656
+ var(--color-bg-inverse) 45%,
1657
+ transparent
1658
+ );
1659
+ backdrop-filter: blur(3px);
1660
+ transition: opacity var(--duration-normal) var(--ease-out);
1661
+ }
1662
+ .pds-command-palette-backdrop[data-starting-style],
1663
+ .pds-command-palette-backdrop[data-ending-style] {
1664
+ opacity: 0;
1665
+ }
1666
+
1667
+ .pds-command-palette {
1668
+ position: fixed;
1669
+ top: 10vh;
1670
+ left: 50%;
1671
+ z-index: 1001;
1672
+ width: calc(100% - 48px);
1673
+ max-width: 560px;
1674
+ max-height: 60vh;
1675
+ display: flex;
1676
+ flex-direction: column;
1677
+ background: var(--color-bg-primary);
1678
+ border-radius: var(--radius-2xl);
1679
+ box-shadow: var(--shadow-xl);
1680
+ overflow: hidden;
1681
+ outline: none;
1682
+ transform: translateX(-50%);
1683
+ transform-origin: top center;
1684
+ transition-property: opacity, transform, scale;
1685
+ transition-duration: var(--duration-normal);
1686
+ transition-timing-function: var(--ease-spring);
1687
+ }
1688
+ .pds-command-palette[data-starting-style],
1689
+ .pds-command-palette[data-ending-style] {
1690
+ opacity: 0;
1691
+ transform: translateX(-50%) translateY(-10px) scale(0.97);
1692
+ }
1693
+
1694
+ .pds-command-palette__search {
1695
+ display: flex;
1696
+ align-items: center;
1697
+ gap: 10px;
1698
+ padding: 0 16px;
1699
+ border-bottom: 1px solid var(--color-border-tertiary);
1700
+ flex: none;
1701
+ }
1702
+ .pds-command-palette__search-icon {
1703
+ color: var(--color-text-tertiary);
1704
+ display: flex;
1705
+ flex: none;
1706
+ }
1707
+ .pds-command-palette__input {
1708
+ flex: 1;
1709
+ height: 52px;
1710
+ background: transparent;
1711
+ border: 0;
1712
+ outline: none;
1713
+ font: inherit;
1714
+ font-size: var(--font-size-md);
1715
+ color: var(--color-text-primary);
1716
+ }
1717
+ .pds-command-palette__input::placeholder {
1718
+ color: var(--color-text-tertiary);
1719
+ }
1720
+
1721
+ .pds-command-palette__clear {
1722
+ appearance: none;
1723
+ background: transparent;
1724
+ border: 0;
1725
+ width: 24px;
1726
+ height: 24px;
1727
+ border-radius: var(--radius-sm);
1728
+ color: var(--color-text-tertiary);
1729
+ cursor: pointer;
1730
+ display: inline-flex;
1731
+ align-items: center;
1732
+ justify-content: center;
1733
+ flex: none;
1734
+ transition:
1735
+ background var(--duration-fast) var(--ease-out),
1736
+ color var(--duration-fast) var(--ease-out);
1737
+ }
1738
+ .pds-command-palette__clear:hover {
1739
+ background: var(--color-bg-hover);
1740
+ color: var(--color-text-primary);
1741
+ }
1742
+
1743
+ .pds-command-palette__list {
1744
+ overflow-y: auto;
1745
+ flex: 1;
1746
+ padding: 6px;
1747
+ display: flex;
1748
+ flex-direction: column;
1749
+ gap: 2px;
1750
+ }
1751
+
1752
+ .pds-command-palette__group {
1753
+ display: flex;
1754
+ flex-direction: column;
1755
+ }
1756
+ .pds-command-palette__group-label {
1757
+ font-family: var(--font-mono);
1758
+ font-size: 10.5px;
1759
+ text-transform: uppercase;
1760
+ letter-spacing: var(--letter-wide);
1761
+ color: var(--color-text-tertiary);
1762
+ padding: 8px 10px 4px;
1763
+ }
1764
+
1765
+ .pds-command-palette__item {
1766
+ appearance: none;
1767
+ background: transparent;
1768
+ border: 0;
1769
+ font: inherit;
1770
+ display: flex;
1771
+ align-items: center;
1772
+ gap: 10px;
1773
+ padding: 7px 10px;
1774
+ border-radius: var(--radius-md);
1775
+ cursor: pointer;
1776
+ color: var(--color-text-primary);
1777
+ text-align: left;
1778
+ width: 100%;
1779
+ font-size: var(--font-size-sm);
1780
+ transition:
1781
+ background var(--duration-fast) var(--ease-out),
1782
+ color var(--duration-fast) var(--ease-out);
1783
+ }
1784
+ .pds-command-palette__item:hover {
1785
+ background: var(--color-bg-hover);
1786
+ }
1787
+ .pds-command-palette__item--active {
1788
+ background: var(--color-bg-brand-subtle);
1789
+ color: var(--color-text-brand);
1790
+ }
1791
+
1792
+ .pds-command-palette__item-icon {
1793
+ width: 28px;
1794
+ height: 28px;
1795
+ border-radius: var(--radius-sm);
1796
+ background: var(--color-bg-secondary);
1797
+ border: 1px solid var(--color-border-tertiary);
1798
+ display: flex;
1799
+ align-items: center;
1800
+ justify-content: center;
1801
+ color: var(--color-text-secondary);
1802
+ flex: none;
1803
+ transition:
1804
+ background var(--duration-fast) var(--ease-out),
1805
+ color var(--duration-fast) var(--ease-out),
1806
+ border-color var(--duration-fast) var(--ease-out);
1807
+ }
1808
+ .pds-command-palette__item--active .pds-command-palette__item-icon {
1809
+ background: var(--color-bg-brand-subtle);
1810
+ color: var(--color-text-brand);
1811
+ border-color: color-mix(in srgb, var(--brand-300) 50%, transparent);
1812
+ }
1813
+
1814
+ .pds-command-palette__item-body {
1815
+ flex: 1;
1816
+ display: flex;
1817
+ flex-direction: column;
1818
+ gap: 1px;
1819
+ min-width: 0;
1820
+ }
1821
+ .pds-command-palette__item-label {
1822
+ font-weight: var(--font-weight-medium);
1823
+ white-space: nowrap;
1824
+ overflow: hidden;
1825
+ text-overflow: ellipsis;
1826
+ }
1827
+ .pds-command-palette__item-desc {
1828
+ font-size: 11.5px;
1829
+ color: var(--color-text-tertiary);
1830
+ white-space: nowrap;
1831
+ overflow: hidden;
1832
+ text-overflow: ellipsis;
1833
+ }
1834
+ .pds-command-palette__item--active .pds-command-palette__item-desc {
1835
+ color: var(--color-text-brand);
1836
+ opacity: 0.7;
1837
+ }
1838
+
1839
+ .pds-command-palette__shortcut {
1840
+ display: flex;
1841
+ align-items: center;
1842
+ gap: 2px;
1843
+ flex: none;
1844
+ }
1845
+ .pds-command-palette__kbd {
1846
+ display: inline-flex;
1847
+ align-items: center;
1848
+ justify-content: center;
1849
+ min-width: 20px;
1850
+ height: 20px;
1851
+ padding: 0 5px;
1852
+ border-radius: var(--radius-xs);
1853
+ background: var(--color-bg-secondary);
1854
+ border: 1px solid var(--color-border-secondary);
1855
+ font-family: var(--font-mono);
1856
+ font-size: 10.5px;
1857
+ color: var(--color-text-tertiary);
1858
+ letter-spacing: 0;
1859
+ }
1860
+
1861
+ .pds-command-palette__empty {
1862
+ display: flex;
1863
+ flex-direction: column;
1864
+ align-items: center;
1865
+ gap: 8px;
1866
+ padding: 36px 24px;
1867
+ color: var(--color-text-tertiary);
1868
+ font-size: var(--font-size-sm);
1869
+ }
1870
+
1871
+ .pds-command-palette__footer {
1872
+ display: flex;
1873
+ align-items: center;
1874
+ gap: 14px;
1875
+ padding: 9px 14px;
1876
+ border-top: 1px solid var(--color-border-tertiary);
1877
+ flex: none;
1878
+ background: var(--color-bg-secondary);
1879
+ }
1880
+ .pds-command-palette__hint {
1881
+ display: inline-flex;
1882
+ align-items: center;
1883
+ gap: 4px;
1884
+ font-size: 11px;
1885
+ color: var(--color-text-tertiary);
1886
+ }
1887
+
1888
+
1889
+ /* === components/DataTable.css === */
1890
+ /* DataTable */
1891
+ .pds-datatable {
1892
+ display: flex;
1893
+ flex-direction: column;
1894
+ background: var(--color-bg-primary);
1895
+ border-radius: var(--radius-2xl);
1896
+ box-shadow: var(--shadow-md);
1897
+ overflow: hidden;
1898
+ }
1899
+
1900
+ .pds-datatable__toolbar {
1901
+ display: flex;
1902
+ align-items: center;
1903
+ gap: 10px;
1904
+ padding: 12px 16px;
1905
+ border-bottom: 1px solid var(--color-border-tertiary);
1906
+ }
1907
+
1908
+ .pds-datatable__search {
1909
+ position: relative;
1910
+ flex: 1;
1911
+ max-width: 260px;
1912
+ }
1913
+
1914
+ .pds-datatable__search-icon {
1915
+ position: absolute;
1916
+ left: 10px;
1917
+ top: 50%;
1918
+ transform: translateY(-50%);
1919
+ color: var(--color-text-tertiary);
1920
+ pointer-events: none;
1921
+ display: flex;
1922
+ align-items: center;
1923
+ }
1924
+
1925
+ .pds-datatable__search-input {
1926
+ width: 100%;
1927
+ height: var(--control-h-sm);
1928
+ padding: 0 10px 0 32px;
1929
+ font-family: inherit;
1930
+ font-size: var(--font-size-sm);
1931
+ color: var(--color-text-primary);
1932
+ background: var(--color-bg-secondary);
1933
+ border: 1px solid transparent;
1934
+ border-radius: var(--ctrl-radius);
1935
+ outline: none;
1936
+ transition:
1937
+ border-color var(--duration-fast) var(--ease-out),
1938
+ box-shadow var(--duration-fast) var(--ease-out),
1939
+ background var(--duration-fast) var(--ease-out);
1940
+ }
1941
+ .pds-datatable__search-input::placeholder {
1942
+ color: var(--color-text-tertiary);
1943
+ }
1944
+ .pds-datatable__search-input:focus {
1945
+ background: var(--color-bg-primary);
1946
+ border-color: var(--color-border-focus);
1947
+ box-shadow: var(--shadow-focus);
1948
+ }
1949
+
1950
+ .pds-datatable__toolbar-right {
1951
+ display: flex;
1952
+ align-items: center;
1953
+ gap: 8px;
1954
+ margin-left: auto;
1955
+ }
1956
+
1957
+ .pds-datatable__bulk-label {
1958
+ font-size: var(--font-size-xs);
1959
+ color: var(--color-text-brand);
1960
+ font-family: var(--font-mono);
1961
+ font-weight: var(--font-weight-medium);
1962
+ }
1963
+
1964
+ .pds-datatable__wrap {
1965
+ overflow-x: auto;
1966
+ -webkit-overflow-scrolling: touch;
1967
+ }
1968
+
1969
+ .pds-datatable__table {
1970
+ width: 100%;
1971
+ border-collapse: collapse;
1972
+ font-size: var(--font-size-sm);
1973
+ }
1974
+
1975
+ .pds-datatable__thead {
1976
+ background: var(--color-bg-secondary);
1977
+ }
1978
+ .pds-datatable__thead .pds-datatable__row {
1979
+ border-bottom: 1px solid var(--color-border-secondary);
1980
+ }
1981
+
1982
+ .pds-datatable__th {
1983
+ text-align: left;
1984
+ padding: 9px 16px;
1985
+ font-size: var(--font-size-xs);
1986
+ font-weight: var(--font-weight-medium);
1987
+ color: var(--color-text-tertiary);
1988
+ font-family: var(--font-mono);
1989
+ letter-spacing: var(--letter-wide);
1990
+ text-transform: uppercase;
1991
+ white-space: nowrap;
1992
+ user-select: none;
1993
+ }
1994
+ .pds-datatable__th--sort {
1995
+ cursor: pointer;
1996
+ }
1997
+ .pds-datatable__th--sort:hover {
1998
+ color: var(--color-text-secondary);
1999
+ }
2000
+ .pds-datatable__th--sorted {
2001
+ color: var(--color-text-brand);
2002
+ }
2003
+
2004
+ .pds-datatable__sort-icon {
2005
+ display: inline-flex;
2006
+ flex-direction: column;
2007
+ gap: 2px;
2008
+ vertical-align: middle;
2009
+ margin-left: 4px;
2010
+ opacity: 0.4;
2011
+ }
2012
+ .pds-datatable__th--sort:hover .pds-datatable__sort-icon {
2013
+ opacity: 0.65;
2014
+ }
2015
+ .pds-datatable__th--sorted .pds-datatable__sort-icon {
2016
+ opacity: 1;
2017
+ }
2018
+
2019
+ .pds-datatable__td {
2020
+ padding: 11px 16px;
2021
+ color: var(--color-text-primary);
2022
+ border-bottom: 1px solid var(--color-border-tertiary);
2023
+ vertical-align: middle;
2024
+ white-space: nowrap;
2025
+ }
2026
+ .pds-datatable__td--muted {
2027
+ color: var(--color-text-secondary);
2028
+ }
2029
+ .pds-datatable__td--mono {
2030
+ font-family: var(--font-mono);
2031
+ font-size: 12.5px;
2032
+ color: var(--color-text-secondary);
2033
+ }
2034
+ .pds-datatable__empty {
2035
+ text-align: center;
2036
+ color: var(--color-text-tertiary);
2037
+ padding: 32px 16px;
2038
+ white-space: normal;
2039
+ }
2040
+
2041
+ .pds-datatable__tbody .pds-datatable__row {
2042
+ transition: background var(--duration-fast) var(--ease-out);
2043
+ }
2044
+ .pds-datatable__table--selectable .pds-datatable__tbody .pds-datatable__row {
2045
+ cursor: pointer;
2046
+ }
2047
+ .pds-datatable__tbody .pds-datatable__row:hover {
2048
+ background: var(--color-bg-hover);
2049
+ }
2050
+ .pds-datatable__tbody .pds-datatable__row--selected {
2051
+ background: var(--color-bg-brand-subtle);
2052
+ }
2053
+ [data-theme="dark"] .pds-datatable__tbody .pds-datatable__row--selected {
2054
+ background: color-mix(in srgb, var(--brand-500) 12%, transparent);
2055
+ }
2056
+ .pds-datatable__tbody .pds-datatable__row:last-child .pds-datatable__td {
2057
+ border-bottom: 0;
1048
2058
  }
1049
2059
 
1050
- .pds-card--muted {
1051
- background-color: var(--color-bg-secondary);
2060
+ .pds-datatable__check-col {
2061
+ width: 44px;
2062
+ }
2063
+ .pds-datatable__th.pds-datatable__check-col,
2064
+ .pds-datatable__td.pds-datatable__check-col {
2065
+ padding-right: 4px;
1052
2066
  }
1053
2067
 
1054
- .pds-card__header {
2068
+ .pds-datatable__cell-user {
1055
2069
  display: flex;
1056
- align-items: flex-start;
1057
- justify-content: space-between;
1058
- gap: 0.75rem;
2070
+ align-items: center;
2071
+ gap: 10px;
1059
2072
  }
1060
-
1061
- .pds-card__title {
1062
- font-size: var(--font-size-lg);
1063
- font-weight: var(--font-weight-semibold);
1064
- color: var(--color-text-primary);
1065
- letter-spacing: var(--letter-snug);
1066
- line-height: var(--line-height-snug);
1067
- margin: 0;
2073
+ .pds-datatable__cell-user-info {
2074
+ display: flex;
2075
+ flex-direction: column;
2076
+ gap: 1px;
1068
2077
  }
1069
-
1070
- .pds-card__description {
1071
- font-size: var(--font-size-sm);
1072
- color: var(--color-text-secondary);
1073
- line-height: var(--line-height-normal);
1074
- margin: 0;
2078
+ .pds-datatable__cell-user-name {
2079
+ font-weight: var(--font-weight-medium);
2080
+ }
2081
+ .pds-datatable__cell-user-sub {
2082
+ font-size: var(--font-size-xs);
2083
+ color: var(--color-text-tertiary);
2084
+ font-family: var(--font-mono);
1075
2085
  }
1076
2086
 
1077
- .pds-card__action {
1078
- flex-shrink: 0;
2087
+ .pds-datatable__footer {
1079
2088
  display: flex;
1080
2089
  align-items: center;
1081
- gap: 0.5rem;
2090
+ justify-content: space-between;
2091
+ gap: 16px;
2092
+ padding: 10px 16px;
2093
+ border-top: 1px solid var(--color-border-tertiary);
2094
+ background: var(--color-bg-secondary);
1082
2095
  }
1083
2096
 
1084
- .pds-card__body {
1085
- flex: 1;
1086
- font-size: var(--font-size-sm);
1087
- color: var(--color-text-primary);
2097
+ .pds-datatable__page-info {
2098
+ font-size: var(--font-size-xs);
2099
+ color: var(--color-text-tertiary);
2100
+ font-family: var(--font-mono);
1088
2101
  }
1089
2102
 
1090
- .pds-card__footer {
2103
+ .pds-datatable__pagination {
1091
2104
  display: flex;
1092
2105
  align-items: center;
1093
- justify-content: flex-end;
1094
- gap: 0.5rem;
1095
- padding-top: var(--row-gap);
1096
- border-top: 1px solid var(--color-border-tertiary);
2106
+ gap: 3px;
1097
2107
  }
1098
2108
 
1099
-
1100
- /* === components/Checkbox.css === */
1101
- /* Checkbox */
1102
- .pds-checkbox {
2109
+ .pds-datatable__page-btn {
2110
+ appearance: none;
2111
+ background: var(--color-bg-primary);
2112
+ border: 0;
2113
+ box-shadow: var(--shadow-xs);
2114
+ height: 28px;
2115
+ min-width: 28px;
2116
+ padding: 0 6px;
2117
+ border-radius: var(--ctrl-radius);
2118
+ font-family: inherit;
2119
+ font-size: var(--font-size-xs);
2120
+ color: var(--color-text-secondary);
2121
+ cursor: pointer;
1103
2122
  display: inline-flex;
1104
2123
  align-items: center;
1105
2124
  justify-content: center;
1106
- flex-shrink: 0;
1107
- background-color: var(--color-bg-primary);
1108
- border: 1px solid var(--color-border-primary);
1109
- color: var(--color-text-on-brand);
1110
- transition-property: background-color, color, border-color, box-shadow;
1111
- transition-duration: var(--duration-fast);
1112
- transition-timing-function: var(--ease-out);
1113
- cursor: pointer;
2125
+ transition:
2126
+ background var(--duration-fast) var(--ease-out),
2127
+ color var(--duration-fast) var(--ease-out),
2128
+ box-shadow var(--duration-fast) var(--ease-out);
1114
2129
  }
1115
-
1116
- .pds-checkbox:hover {
1117
- border-color: var(--color-border-brand);
2130
+ .pds-datatable__page-btn:hover:not(.pds-datatable__page-btn--active) {
2131
+ background: var(--color-bg-hover);
2132
+ color: var(--color-text-primary);
2133
+ box-shadow: var(--shadow-sm);
1118
2134
  }
1119
-
1120
- .pds-checkbox:focus-visible {
1121
- outline: none;
1122
- box-shadow: var(--shadow-focus);
2135
+ .pds-datatable__page-btn--active {
2136
+ background: var(--color-bg-brand);
2137
+ color: var(--color-text-on-brand);
2138
+ box-shadow: none;
1123
2139
  }
1124
-
1125
- .pds-checkbox[data-checked],
1126
- .pds-checkbox[data-indeterminate] {
1127
- background-color: var(--color-bg-brand);
1128
- border-color: var(--color-border-brand);
2140
+ .pds-datatable__page-btn--active:hover {
2141
+ background: var(--color-bg-brand-hover);
1129
2142
  }
1130
-
1131
- .pds-checkbox[data-disabled] {
1132
- background-color: var(--color-bg-disabled);
1133
- border-color: var(--color-border-secondary);
2143
+ .pds-datatable__page-btn:disabled {
2144
+ opacity: 0.4;
1134
2145
  cursor: not-allowed;
2146
+ pointer-events: none;
1135
2147
  }
1136
- .pds-checkbox[data-disabled]:hover {
1137
- border-color: var(--color-border-secondary);
1138
- }
1139
-
1140
- /* 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); }
1144
-
1145
- /* indicator wrapper */
1146
- .pds-checkbox__indicator {
1147
- display: flex;
1148
- align-items: center;
1149
- justify-content: center;
1150
- }
1151
-
1152
- /* 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; }
1156
-
1157
- /* 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; }
1162
2148
 
1163
2149
 
1164
2150
  /* === components/Divider.css === */
@@ -1244,8 +2230,14 @@ button {
1244
2230
  align-items: center;
1245
2231
  color: var(--color-text-brand);
1246
2232
  }
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; }
2233
+ .pds-menu-item__indicator svg {
2234
+ width: 0.875rem;
2235
+ height: 0.875rem;
2236
+ }
2237
+ .pds-menu-item__indicator--radio svg {
2238
+ width: 0.5rem;
2239
+ height: 0.5rem;
2240
+ }
1249
2241
 
1250
2242
  .pds-menu-label {
1251
2243
  padding: 0.375rem 0.5rem;
@@ -1272,15 +2264,29 @@ button {
1272
2264
  }
1273
2265
 
1274
2266
  @media (min-width: 1024px) {
1275
- .pds-container { padding-inline: var(--grid-margin-lg); }
2267
+ .pds-container {
2268
+ padding-inline: var(--grid-margin-lg);
2269
+ }
1276
2270
  }
1277
2271
 
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; }
2272
+ .pds-container--sm {
2273
+ max-width: var(--container-sm);
2274
+ }
2275
+ .pds-container--md {
2276
+ max-width: var(--container-md);
2277
+ }
2278
+ .pds-container--lg {
2279
+ max-width: var(--container-lg);
2280
+ }
2281
+ .pds-container--xl {
2282
+ max-width: var(--container-xl);
2283
+ }
2284
+ .pds-container--prose {
2285
+ max-width: var(--container-prose);
2286
+ }
2287
+ .pds-container--fluid {
2288
+ max-width: none;
2289
+ }
1284
2290
 
1285
2291
  /* Grid root */
1286
2292
  .pds-grid {
@@ -1290,73 +2296,183 @@ button {
1290
2296
  }
1291
2297
 
1292
2298
  @media (min-width: 640px) {
1293
- .pds-grid--default { gap: var(--grid-gutter); }
2299
+ .pds-grid--default {
2300
+ gap: var(--grid-gutter);
2301
+ }
1294
2302
  }
1295
2303
 
1296
- .pds-grid--tight { gap: var(--grid-gutter-tight); }
1297
- .pds-grid--flush { gap: 0; }
2304
+ .pds-grid--tight {
2305
+ gap: var(--grid-gutter-tight);
2306
+ }
2307
+ .pds-grid--flush {
2308
+ gap: 0;
2309
+ }
1298
2310
 
1299
2311
  /* 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; }
2312
+ .pds-grid__col--span-1 {
2313
+ grid-column: span 1 / span 1;
2314
+ }
2315
+ .pds-grid__col--span-2 {
2316
+ grid-column: span 2 / span 2;
2317
+ }
2318
+ .pds-grid__col--span-3 {
2319
+ grid-column: span 3 / span 3;
2320
+ }
2321
+ .pds-grid__col--span-4 {
2322
+ grid-column: span 4 / span 4;
2323
+ }
2324
+ .pds-grid__col--span-5 {
2325
+ grid-column: span 5 / span 5;
2326
+ }
2327
+ .pds-grid__col--span-6 {
2328
+ grid-column: span 6 / span 6;
2329
+ }
2330
+ .pds-grid__col--span-7 {
2331
+ grid-column: span 7 / span 7;
2332
+ }
2333
+ .pds-grid__col--span-8 {
2334
+ grid-column: span 8 / span 8;
2335
+ }
2336
+ .pds-grid__col--span-9 {
2337
+ grid-column: span 9 / span 9;
2338
+ }
2339
+ .pds-grid__col--span-10 {
2340
+ grid-column: span 10 / span 10;
2341
+ }
2342
+ .pds-grid__col--span-11 {
2343
+ grid-column: span 11 / span 11;
2344
+ }
2345
+ .pds-grid__col--span-12 {
2346
+ grid-column: span 12 / span 12;
2347
+ }
2348
+ .pds-grid__col--span-full {
2349
+ grid-column: 1 / -1;
2350
+ }
1313
2351
 
1314
2352
  @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; }
2353
+ .pds-grid__col--sm-span-1 {
2354
+ grid-column: span 1 / span 1;
2355
+ }
2356
+ .pds-grid__col--sm-span-2 {
2357
+ grid-column: span 2 / span 2;
2358
+ }
2359
+ .pds-grid__col--sm-span-3 {
2360
+ grid-column: span 3 / span 3;
2361
+ }
2362
+ .pds-grid__col--sm-span-4 {
2363
+ grid-column: span 4 / span 4;
2364
+ }
2365
+ .pds-grid__col--sm-span-5 {
2366
+ grid-column: span 5 / span 5;
2367
+ }
2368
+ .pds-grid__col--sm-span-6 {
2369
+ grid-column: span 6 / span 6;
2370
+ }
2371
+ .pds-grid__col--sm-span-7 {
2372
+ grid-column: span 7 / span 7;
2373
+ }
2374
+ .pds-grid__col--sm-span-8 {
2375
+ grid-column: span 8 / span 8;
2376
+ }
2377
+ .pds-grid__col--sm-span-9 {
2378
+ grid-column: span 9 / span 9;
2379
+ }
2380
+ .pds-grid__col--sm-span-10 {
2381
+ grid-column: span 10 / span 10;
2382
+ }
2383
+ .pds-grid__col--sm-span-11 {
2384
+ grid-column: span 11 / span 11;
2385
+ }
2386
+ .pds-grid__col--sm-span-12 {
2387
+ grid-column: span 12 / span 12;
2388
+ }
2389
+ .pds-grid__col--sm-span-full {
2390
+ grid-column: 1 / -1;
2391
+ }
1328
2392
  }
1329
2393
 
1330
2394
  @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; }
2395
+ .pds-grid__col--md-span-1 {
2396
+ grid-column: span 1 / span 1;
2397
+ }
2398
+ .pds-grid__col--md-span-2 {
2399
+ grid-column: span 2 / span 2;
2400
+ }
2401
+ .pds-grid__col--md-span-3 {
2402
+ grid-column: span 3 / span 3;
2403
+ }
2404
+ .pds-grid__col--md-span-4 {
2405
+ grid-column: span 4 / span 4;
2406
+ }
2407
+ .pds-grid__col--md-span-5 {
2408
+ grid-column: span 5 / span 5;
2409
+ }
2410
+ .pds-grid__col--md-span-6 {
2411
+ grid-column: span 6 / span 6;
2412
+ }
2413
+ .pds-grid__col--md-span-7 {
2414
+ grid-column: span 7 / span 7;
2415
+ }
2416
+ .pds-grid__col--md-span-8 {
2417
+ grid-column: span 8 / span 8;
2418
+ }
2419
+ .pds-grid__col--md-span-9 {
2420
+ grid-column: span 9 / span 9;
2421
+ }
2422
+ .pds-grid__col--md-span-10 {
2423
+ grid-column: span 10 / span 10;
2424
+ }
2425
+ .pds-grid__col--md-span-11 {
2426
+ grid-column: span 11 / span 11;
2427
+ }
2428
+ .pds-grid__col--md-span-12 {
2429
+ grid-column: span 12 / span 12;
2430
+ }
2431
+ .pds-grid__col--md-span-full {
2432
+ grid-column: 1 / -1;
2433
+ }
1344
2434
  }
1345
2435
 
1346
2436
  @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; }
2437
+ .pds-grid__col--lg-span-1 {
2438
+ grid-column: span 1 / span 1;
2439
+ }
2440
+ .pds-grid__col--lg-span-2 {
2441
+ grid-column: span 2 / span 2;
2442
+ }
2443
+ .pds-grid__col--lg-span-3 {
2444
+ grid-column: span 3 / span 3;
2445
+ }
2446
+ .pds-grid__col--lg-span-4 {
2447
+ grid-column: span 4 / span 4;
2448
+ }
2449
+ .pds-grid__col--lg-span-5 {
2450
+ grid-column: span 5 / span 5;
2451
+ }
2452
+ .pds-grid__col--lg-span-6 {
2453
+ grid-column: span 6 / span 6;
2454
+ }
2455
+ .pds-grid__col--lg-span-7 {
2456
+ grid-column: span 7 / span 7;
2457
+ }
2458
+ .pds-grid__col--lg-span-8 {
2459
+ grid-column: span 8 / span 8;
2460
+ }
2461
+ .pds-grid__col--lg-span-9 {
2462
+ grid-column: span 9 / span 9;
2463
+ }
2464
+ .pds-grid__col--lg-span-10 {
2465
+ grid-column: span 10 / span 10;
2466
+ }
2467
+ .pds-grid__col--lg-span-11 {
2468
+ grid-column: span 11 / span 11;
2469
+ }
2470
+ .pds-grid__col--lg-span-12 {
2471
+ grid-column: span 12 / span 12;
2472
+ }
2473
+ .pds-grid__col--lg-span-full {
2474
+ grid-column: 1 / -1;
2475
+ }
1360
2476
  }
1361
2477
 
1362
2478
 
@@ -1396,7 +2512,8 @@ button {
1396
2512
  }
1397
2513
  .pds-input[aria-invalid]:focus-visible {
1398
2514
  border-color: var(--color-border-danger);
1399
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-bg-danger-strong) 25%, transparent);
2515
+ box-shadow: 0 0 0 3px
2516
+ color-mix(in srgb, var(--color-bg-danger-strong) 25%, transparent);
1400
2517
  }
1401
2518
 
1402
2519
  /* sizes */
@@ -1423,7 +2540,11 @@ button {
1423
2540
  position: fixed;
1424
2541
  inset: 0;
1425
2542
  z-index: 50;
1426
- background-color: color-mix(in srgb, var(--color-bg-inverse) 50%, transparent);
2543
+ background-color: color-mix(
2544
+ in srgb,
2545
+ var(--color-bg-inverse) 50%,
2546
+ transparent
2547
+ );
1427
2548
  backdrop-filter: blur(4px);
1428
2549
  transition: opacity var(--duration-normal) var(--ease-out);
1429
2550
  }
@@ -1471,6 +2592,125 @@ button {
1471
2592
  }
1472
2593
 
1473
2594
 
2595
+ /* === components/Popover.css === */
2596
+ /* Popover */
2597
+ .pds-popover-positioner {
2598
+ z-index: 900;
2599
+ outline: none;
2600
+ }
2601
+
2602
+ .pds-popover-popup {
2603
+ display: flex;
2604
+ flex-direction: column;
2605
+ min-width: 220px;
2606
+ max-width: 340px;
2607
+ background-color: var(--color-bg-primary);
2608
+ border-radius: var(--radius-lg);
2609
+ box-shadow: var(--shadow-lg);
2610
+ outline: none;
2611
+ transform-origin: var(--transform-origin);
2612
+ transition-property: opacity, transform, scale;
2613
+ transition-duration: var(--duration-fast);
2614
+ transition-timing-function: var(--ease-spring);
2615
+ }
2616
+ .pds-popover-popup[data-starting-style],
2617
+ .pds-popover-popup[data-ending-style] {
2618
+ opacity: 0;
2619
+ transform: scale(0.96);
2620
+ }
2621
+
2622
+ /* caret */
2623
+ .pds-popover-arrow {
2624
+ width: 10px;
2625
+ height: 10px;
2626
+ background-color: var(--color-bg-primary);
2627
+ border: 1px solid var(--color-border-secondary);
2628
+ transform: rotate(45deg);
2629
+ }
2630
+ .pds-popover-arrow[data-side="bottom"] {
2631
+ border-right-color: transparent;
2632
+ border-bottom-color: transparent;
2633
+ }
2634
+ .pds-popover-arrow[data-side="top"] {
2635
+ border-left-color: transparent;
2636
+ border-top-color: transparent;
2637
+ }
2638
+ .pds-popover-arrow[data-side="left"] {
2639
+ border-top-color: transparent;
2640
+ border-left-color: transparent;
2641
+ }
2642
+ .pds-popover-arrow[data-side="right"] {
2643
+ border-bottom-color: transparent;
2644
+ border-right-color: transparent;
2645
+ }
2646
+
2647
+ /* header */
2648
+ .pds-popover__header {
2649
+ display: flex;
2650
+ align-items: flex-start;
2651
+ justify-content: space-between;
2652
+ gap: 12px;
2653
+ padding: 14px 16px 0;
2654
+ }
2655
+
2656
+ .pds-popover-title {
2657
+ font-size: var(--font-size-sm);
2658
+ font-weight: var(--font-weight-semibold);
2659
+ letter-spacing: var(--letter-snug);
2660
+ color: var(--color-text-primary);
2661
+ margin: 0;
2662
+ }
2663
+
2664
+ .pds-popover-description {
2665
+ margin: 0;
2666
+ font-size: var(--font-size-xs);
2667
+ color: var(--color-text-secondary);
2668
+ }
2669
+
2670
+ .pds-popover-close {
2671
+ appearance: none;
2672
+ background: transparent;
2673
+ border: 0;
2674
+ width: 22px;
2675
+ height: 22px;
2676
+ border-radius: var(--radius-sm);
2677
+ color: var(--color-text-tertiary);
2678
+ cursor: pointer;
2679
+ display: inline-flex;
2680
+ align-items: center;
2681
+ justify-content: center;
2682
+ flex: none;
2683
+ transition:
2684
+ background var(--duration-fast) var(--ease-out),
2685
+ color var(--duration-fast) var(--ease-out);
2686
+ }
2687
+ .pds-popover-close:hover {
2688
+ background: var(--color-bg-hover);
2689
+ color: var(--color-text-primary);
2690
+ }
2691
+
2692
+ /* body */
2693
+ .pds-popover__body {
2694
+ padding: 12px 16px;
2695
+ font-size: var(--font-size-sm);
2696
+ color: var(--color-text-secondary);
2697
+ line-height: var(--line-height-relaxed);
2698
+ flex: 1;
2699
+ }
2700
+ .pds-popover__header + .pds-popover__body {
2701
+ padding-top: 8px;
2702
+ }
2703
+
2704
+ /* footer */
2705
+ .pds-popover__footer {
2706
+ padding: 0 16px 14px;
2707
+ display: flex;
2708
+ align-items: center;
2709
+ justify-content: flex-end;
2710
+ gap: 8px;
2711
+ }
2712
+
2713
+
1474
2714
  /* === components/Radio.css === */
1475
2715
  /* Radio */
1476
2716
  .pds-radio {
@@ -1510,9 +2750,18 @@ button {
1510
2750
  }
1511
2751
 
1512
2752
  /* 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; }
2753
+ .pds-radio--sm {
2754
+ width: 1rem;
2755
+ height: 1rem;
2756
+ }
2757
+ .pds-radio--md {
2758
+ width: 1.125rem;
2759
+ height: 1.125rem;
2760
+ }
2761
+ .pds-radio--lg {
2762
+ width: 1.25rem;
2763
+ height: 1.25rem;
2764
+ }
1516
2765
 
1517
2766
  /* indicator */
1518
2767
  .pds-radio__indicator {
@@ -1524,9 +2773,18 @@ button {
1524
2773
  transform: scale(0);
1525
2774
  }
1526
2775
 
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; }
2776
+ .pds-radio--sm .pds-radio__indicator {
2777
+ width: 0.375rem;
2778
+ height: 0.375rem;
2779
+ }
2780
+ .pds-radio--md .pds-radio__indicator {
2781
+ width: 0.5rem;
2782
+ height: 0.5rem;
2783
+ }
2784
+ .pds-radio--lg .pds-radio__indicator {
2785
+ width: 0.625rem;
2786
+ height: 0.625rem;
2787
+ }
1530
2788
 
1531
2789
  /* RadioGroup */
1532
2790
  .pds-radio-group {
@@ -1545,9 +2803,18 @@ button {
1545
2803
  border-radius: var(--radius-full);
1546
2804
  }
1547
2805
 
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; }
2806
+ .pds-segmented--sm {
2807
+ padding: 0.125rem;
2808
+ gap: 0.125rem;
2809
+ }
2810
+ .pds-segmented--md {
2811
+ padding: 0.25rem;
2812
+ gap: 0.125rem;
2813
+ }
2814
+ .pds-segmented--lg {
2815
+ padding: 0.25rem;
2816
+ gap: 0.25rem;
2817
+ }
1551
2818
 
1552
2819
  /* item */
1553
2820
  .pds-segmented__item {
@@ -1591,9 +2858,21 @@ button {
1591
2858
  cursor: not-allowed;
1592
2859
  }
1593
2860
 
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); }
2861
+ .pds-segmented__item--sm {
2862
+ height: 1.5rem;
2863
+ padding-inline: 0.625rem;
2864
+ font-size: var(--font-size-xs);
2865
+ }
2866
+ .pds-segmented__item--md {
2867
+ height: 1.75rem;
2868
+ padding-inline: 0.75rem;
2869
+ font-size: var(--font-size-xs);
2870
+ }
2871
+ .pds-segmented__item--lg {
2872
+ height: 2rem;
2873
+ padding-inline: 0.875rem;
2874
+ font-size: var(--font-size-sm);
2875
+ }
1597
2876
 
1598
2877
 
1599
2878
  /* === components/Select.css === */
@@ -1658,7 +2937,10 @@ button {
1658
2937
  flex-shrink: 0;
1659
2938
  display: inline-flex;
1660
2939
  }
1661
- .pds-select-icon svg { width: 1rem; height: 1rem; }
2940
+ .pds-select-icon svg {
2941
+ width: 1rem;
2942
+ height: 1rem;
2943
+ }
1662
2944
 
1663
2945
  /* value */
1664
2946
  .pds-select-value {
@@ -1730,7 +3012,10 @@ button {
1730
3012
  align-items: center;
1731
3013
  color: var(--color-text-brand);
1732
3014
  }
1733
- .pds-select-item__indicator svg { width: 0.875rem; height: 0.875rem; }
3015
+ .pds-select-item__indicator svg {
3016
+ width: 0.875rem;
3017
+ height: 0.875rem;
3018
+ }
1734
3019
 
1735
3020
 
1736
3021
  /* === components/Skeleton.css === */
@@ -1755,7 +3040,9 @@ button {
1755
3040
  }
1756
3041
 
1757
3042
  @keyframes pds-skeleton-pulse {
1758
- 50% { opacity: 0.5; }
3043
+ 50% {
3044
+ opacity: 0.5;
3045
+ }
1759
3046
  }
1760
3047
 
1761
3048
 
@@ -1788,7 +3075,10 @@ button {
1788
3075
  flex-shrink: 0;
1789
3076
  background: var(--pill-chip);
1790
3077
  }
1791
- .pds-status-pill__indicator svg { width: 0.75rem; height: 0.75rem; }
3078
+ .pds-status-pill__indicator svg {
3079
+ width: 0.75rem;
3080
+ height: 0.75rem;
3081
+ }
1792
3082
 
1793
3083
  .pds-status-pill__label {
1794
3084
  line-height: 1;
@@ -1829,9 +3119,18 @@ button {
1829
3119
  }
1830
3120
 
1831
3121
  /* 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; }
3122
+ .pds-switch--sm {
3123
+ height: 1rem;
3124
+ width: 1.75rem;
3125
+ }
3126
+ .pds-switch--md {
3127
+ height: 1.25rem;
3128
+ width: 2.25rem;
3129
+ }
3130
+ .pds-switch--lg {
3131
+ height: 1.5rem;
3132
+ width: 2.75rem;
3133
+ }
1835
3134
 
1836
3135
  /* thumb */
1837
3136
  .pds-switch__thumb {
@@ -1842,13 +3141,28 @@ button {
1842
3141
  transition: transform var(--duration-normal) var(--ease-out);
1843
3142
  }
1844
3143
 
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; }
3144
+ .pds-switch--sm .pds-switch__thumb {
3145
+ width: 0.75rem;
3146
+ height: 0.75rem;
3147
+ }
3148
+ .pds-switch--md .pds-switch__thumb {
3149
+ width: 1rem;
3150
+ height: 1rem;
3151
+ }
3152
+ .pds-switch--lg .pds-switch__thumb {
3153
+ width: 1.25rem;
3154
+ height: 1.25rem;
3155
+ }
1848
3156
 
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); }
3157
+ .pds-switch--sm[data-checked] .pds-switch__thumb {
3158
+ transform: translateX(0.75rem);
3159
+ }
3160
+ .pds-switch--md[data-checked] .pds-switch__thumb {
3161
+ transform: translateX(1rem);
3162
+ }
3163
+ .pds-switch--lg[data-checked] .pds-switch__thumb {
3164
+ transform: translateX(1.25rem);
3165
+ }
1852
3166
 
1853
3167
 
1854
3168
  /* === components/Tabs.css === */
@@ -1913,7 +3227,9 @@ button {
1913
3227
  width: var(--active-tab-width);
1914
3228
  transform: translateX(var(--active-tab-left));
1915
3229
  background-color: var(--color-bg-brand);
1916
- transition: transform var(--duration-normal) var(--ease-out), width var(--duration-normal) var(--ease-out);
3230
+ transition:
3231
+ transform var(--duration-normal) var(--ease-out),
3232
+ width var(--duration-normal) var(--ease-out);
1917
3233
  }
1918
3234
 
1919
3235
  .pds-tabs__panel {
@@ -1963,7 +3279,8 @@ button {
1963
3279
  }
1964
3280
  .pds-textarea[aria-invalid]:focus-visible {
1965
3281
  border-color: var(--color-border-danger);
1966
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-bg-danger-strong) 25%, transparent);
3282
+ box-shadow: 0 0 0 3px
3283
+ color-mix(in srgb, var(--color-bg-danger-strong) 25%, transparent);
1967
3284
  }
1968
3285
 
1969
3286
  /* sizes */
@@ -2015,8 +3332,7 @@ button {
2015
3332
  flex-direction: column;
2016
3333
  gap: 0.25rem;
2017
3334
 
2018
- transform:
2019
- translateX(var(--toast-swipe-movement-x))
3335
+ transform: translateX(var(--toast-swipe-movement-x))
2020
3336
  translateY(calc(var(--toast-index) * -20% + var(--toast-swipe-movement-y)));
2021
3337
  transition:
2022
3338
  transform 350ms var(--ease-out),
@@ -2026,7 +3342,9 @@ button {
2026
3342
  }
2027
3343
 
2028
3344
  .pds-toast-item[data-expanded] {
2029
- transform: translateY(calc(var(--toast-offset-y) * -1px - var(--toast-index) * var(--gap)));
3345
+ transform: translateY(
3346
+ calc(var(--toast-offset-y) * -1px - var(--toast-index) * var(--gap))
3347
+ );
2030
3348
  }
2031
3349
 
2032
3350
  .pds-toast-item[data-limited] {
@@ -2068,7 +3386,9 @@ button {
2068
3386
  border-radius: var(--radius-md);
2069
3387
  color: var(--color-text-tertiary);
2070
3388
  cursor: pointer;
2071
- transition: background-color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);
3389
+ transition:
3390
+ background-color var(--duration-fast) var(--ease-out),
3391
+ color var(--duration-fast) var(--ease-out);
2072
3392
  }
2073
3393
 
2074
3394
  .pds-toast-close:hover {
@@ -2081,7 +3401,10 @@ button {
2081
3401
  box-shadow: var(--shadow-focus);
2082
3402
  }
2083
3403
 
2084
- .pds-toast-close svg { width: 1rem; height: 1rem; }
3404
+ .pds-toast-close svg {
3405
+ width: 1rem;
3406
+ height: 1rem;
3407
+ }
2085
3408
 
2086
3409
 
2087
3410
  /* === components/Tooltip.css === */