@bubble-design-system/ui 1.0.0 → 1.1.0

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