@watt42/a2ui-theme 0.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/README.md ADDED
@@ -0,0 +1,39 @@
1
+ # @watt42/a2ui-theme
2
+
3
+ ## Purpose
4
+
5
+ Shared A2UI surface CSS and chart theme tokens so applications can apply corporate themes without changing component implementations.
6
+
7
+ ## Owns
8
+
9
+ - Default surface CSS (`default/surface.css`)
10
+ - Chart theme tokens (`chartThemeTokens`, including an 8-color `colors` palette for series and pie slices)
11
+ - Design tokens consumable by `@watt42/a2ui-react-components` (including shadcn class token aliases `--primary`, `--ring`, … on `.a2ui-surface`)
12
+ - Catalog control tokens (`--a2ui-control-*`) and styling for Card content, labels, Input/textarea, and Button `data-slot` hooks
13
+
14
+ ## Does Not Own
15
+
16
+ - React catalog components
17
+ - Registry or renderer
18
+ - App shell layout / global app branding beyond A2UI surfaces
19
+
20
+ ## Public API
21
+
22
+ ```ts
23
+ import "@watt42/a2ui-theme/default/surface.css";
24
+ import { chartThemeTokens } from "@watt42/a2ui-theme";
25
+ ```
26
+
27
+ Applications may override control tokens inside their own `.a2ui-surface` scope without changing React adapters:
28
+
29
+ ```css
30
+ .a2ui-surface {
31
+ --a2ui-control-height: 3rem;
32
+ --a2ui-border-radius: 1rem;
33
+ --a2ui-color-primary: #2563eb;
34
+ }
35
+ ```
36
+
37
+ ## Dependencies
38
+
39
+ - None (CSS + token exports only)
@@ -0,0 +1,17 @@
1
+ /** Distinct ECharts series / pie-slice palette. */
2
+ export declare const CHART_COLORS: readonly ["#1177ee", "#0d9488", "#d97706", "#7c3aed", "#e11d48", "#059669", "#ea580c", "#64748b"];
3
+ /** Default ECharts color / layout tokens for shared Chart/Gauge. */
4
+ export declare const chartThemeTokens: {
5
+ readonly primary: "#1177ee";
6
+ readonly muted: "#64748b";
7
+ readonly colors: readonly ["#1177ee", "#0d9488", "#d97706", "#7c3aed", "#e11d48", "#059669", "#ea580c", "#64748b"];
8
+ readonly background: "transparent";
9
+ readonly text: "#334155";
10
+ readonly defaultHeight: 360;
11
+ readonly minHeight: 120;
12
+ readonly maxHeight: 800;
13
+ };
14
+ export type ChartThemeTokens = typeof chartThemeTokens;
15
+ /** Mutable palette copy for ECharts; tolerates stale theme bundles missing `colors`. */
16
+ export declare function chartColorPalette(): string[];
17
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/chart/tokens.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,eAAO,MAAM,YAAY,mGASf,CAAC;AAEX,oEAAoE;AACpE,eAAO,MAAM,gBAAgB;;;;;;;;;CASnB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC;AAEvD,wFAAwF;AACxF,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAM5C"}
@@ -0,0 +1,31 @@
1
+ /** Distinct ECharts series / pie-slice palette. */
2
+ export const CHART_COLORS = [
3
+ "#1177ee",
4
+ "#0d9488",
5
+ "#d97706",
6
+ "#7c3aed",
7
+ "#e11d48",
8
+ "#059669",
9
+ "#ea580c",
10
+ "#64748b",
11
+ ];
12
+ /** Default ECharts color / layout tokens for shared Chart/Gauge. */
13
+ export const chartThemeTokens = {
14
+ primary: CHART_COLORS[0],
15
+ muted: CHART_COLORS[7],
16
+ colors: CHART_COLORS,
17
+ background: "transparent",
18
+ text: "#334155",
19
+ defaultHeight: 360,
20
+ minHeight: 120,
21
+ maxHeight: 800,
22
+ };
23
+ /** Mutable palette copy for ECharts; tolerates stale theme bundles missing `colors`. */
24
+ export function chartColorPalette() {
25
+ const palette = chartThemeTokens.colors;
26
+ if (Array.isArray(palette) && palette.length > 0) {
27
+ return [...palette];
28
+ }
29
+ return [chartThemeTokens.primary, chartThemeTokens.muted];
30
+ }
31
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/chart/tokens.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;CACD,CAAC;AAEX,oEAAoE;AACpE,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IACxB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IACtB,MAAM,EAAE,YAAY;IACpB,UAAU,EAAE,aAAa;IACzB,IAAI,EAAE,SAAS;IACf,aAAa,EAAE,GAAG;IAClB,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,GAAG;CACN,CAAC;AAIX,wFAAwF;AACxF,MAAM,UAAU,iBAAiB;IAC/B,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAuC,CAAC;IACzE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { chartColorPalette, chartThemeTokens, CHART_COLORS, type ChartThemeTokens } from "./chart/tokens.js";
2
+ export declare const A2UI_THEME_VERSION = "0.1.0";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE7G,eAAO,MAAM,kBAAkB,UAAU,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { chartColorPalette, chartThemeTokens, CHART_COLORS } from "./chart/tokens.js";
2
+ export const A2UI_THEME_VERSION = "0.1.0";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,EAAyB,MAAM,mBAAmB,CAAC;AAE7G,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC"}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@watt42/a2ui-theme",
3
+ "version": "0.1.0",
4
+ "private": false,
5
+ "type": "module",
6
+ "description": "A2UI surface CSS and chart theme tokens — swappable corporate themes",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ },
14
+ "./default/surface.css": "./src/default/surface.css",
15
+ "./chart": {
16
+ "types": "./dist/chart/tokens.d.ts",
17
+ "import": "./dist/chart/tokens.js"
18
+ }
19
+ },
20
+ "files": [
21
+ "dist",
22
+ "src/default/surface.css"
23
+ ],
24
+ "scripts": {
25
+ "build": "tsc -p tsconfig.build.json",
26
+ "prepublishOnly": "npm run build",
27
+ "test": "tsx --test test/**/*.test.ts",
28
+ "typecheck": "tsc --noEmit"
29
+ },
30
+ "devDependencies": {
31
+ "typescript": "^5.8.2"
32
+ },
33
+ "publishConfig": {
34
+ "access": "public"
35
+ }
36
+ }
@@ -0,0 +1,372 @@
1
+ /**
2
+ * Default A2UI surface theme tokens and control styling.
3
+ * Applications import: `@watt42/a2ui-theme/default/surface.css`
4
+ */
5
+
6
+ .a2ui-surface.a2ui-light {
7
+ --a2ui-color-primary: #1177ee;
8
+ --a2ui-color-on-primary: #fff;
9
+ --a2ui-card-box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
10
+ }
11
+
12
+ .a2ui-surface {
13
+ --a2ui-font-size-m: 1rem;
14
+ --a2ui-font-size-xl: 1.5rem;
15
+ --a2ui-font-size-2xl: 1.75rem;
16
+ --a2ui-spacing-s: 0.25rem;
17
+ --a2ui-spacing-m: 0.5rem;
18
+ --a2ui-spacing-l: 1rem;
19
+ --a2ui-border-radius: 0.75rem;
20
+ --a2ui-border-width: 1px;
21
+ --a2ui-color-border: #cbd5e1;
22
+ --a2ui-color-secondary: #eee;
23
+ --a2ui-color-on-secondary: #333;
24
+ --a2ui-color-on-surface: #333;
25
+ --a2ui-color-muted: #64748b;
26
+ --a2ui-control-height: 2.75rem;
27
+ --a2ui-control-padding-x: 0.875rem;
28
+ --a2ui-control-gap: 0.75rem;
29
+ --a2ui-control-background: #fff;
30
+ --a2ui-control-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
31
+ --a2ui-control-focus-shadow: 0 0 0 3px
32
+ color-mix(in srgb, var(--a2ui-color-primary, #1177ee) 18%, transparent);
33
+ --a2ui-button-shadow: 0 1px 2px rgba(15, 23, 42, 0.12);
34
+ --a2ui-chart-color-1: #1177ee;
35
+ --a2ui-chart-color-2: #0d9488;
36
+ --a2ui-chart-color-3: #d97706;
37
+ --a2ui-chart-color-4: #7c3aed;
38
+ --a2ui-chart-color-5: #e11d48;
39
+ --a2ui-chart-color-6: #059669;
40
+ --a2ui-chart-color-7: #ea580c;
41
+ --a2ui-chart-color-8: #64748b;
42
+ }
43
+
44
+ .a2ui-surface h1,
45
+ .a2ui-surface h2,
46
+ .a2ui-surface h3 {
47
+ margin: 0 0 var(--a2ui-spacing-m, 0.5rem);
48
+ font-family: var(--a2ui-font-family-title, inherit);
49
+ line-height: var(--a2ui-line-height-headings, 1.2);
50
+ color: var(--a2ui-color-on-surface, #333);
51
+ }
52
+
53
+ .a2ui-surface h1 {
54
+ font-size: var(--a2ui-font-size-2xl, 1.75rem);
55
+ font-weight: 700;
56
+ }
57
+
58
+ .a2ui-surface h2 {
59
+ font-size: var(--a2ui-font-size-xl, 1.5rem);
60
+ font-weight: 600;
61
+ }
62
+
63
+ .a2ui-surface p {
64
+ margin: 0 0 var(--a2ui-spacing-s, 0.25rem);
65
+ }
66
+
67
+ /* shadcn/Tailwind token names used by a2ui-react-components/src/ui (CLI 4.17.0). */
68
+ .a2ui-surface {
69
+ --background: #fff;
70
+ --foreground: var(--a2ui-color-on-surface, #333);
71
+ --card: #fff;
72
+ --card-foreground: var(--a2ui-color-on-surface, #333);
73
+ --popover: #fff;
74
+ --popover-foreground: var(--a2ui-color-on-surface, #333);
75
+ --primary: var(--a2ui-color-primary, #1177ee);
76
+ --primary-foreground: var(--a2ui-color-on-primary, #fff);
77
+ --secondary: var(--a2ui-color-secondary, #eee);
78
+ --secondary-foreground: var(--a2ui-color-on-secondary, #333);
79
+ --muted: var(--a2ui-color-secondary, #eee);
80
+ --muted-foreground: var(--a2ui-color-muted, #64748b);
81
+ --destructive: #dc2626;
82
+ --border: var(--a2ui-color-border, #ccc);
83
+ --input: var(--a2ui-color-border, #ccc);
84
+ --ring: var(--a2ui-color-primary, #1177ee);
85
+ --radius: var(--a2ui-border-radius, 0.75rem);
86
+ }
87
+
88
+ /* Catalog control layout and visual treatment. */
89
+ .a2ui-surface [data-slot="card-content"] {
90
+ display: grid;
91
+ gap: var(--a2ui-spacing-l, 1rem);
92
+ }
93
+
94
+ .a2ui-surface label:has([data-slot="input"]),
95
+ .a2ui-surface label:has(textarea) {
96
+ gap: var(--a2ui-spacing-m, 0.5rem);
97
+ color: var(--a2ui-color-on-surface, #333);
98
+ font-size: 0.875rem;
99
+ font-weight: 600;
100
+ line-height: 1.25;
101
+ }
102
+
103
+ .a2ui-surface [data-slot="input"],
104
+ .a2ui-surface textarea {
105
+ min-height: var(--a2ui-control-height, 2.75rem);
106
+ border-color: var(--a2ui-color-border, #cbd5e1);
107
+ border-radius: var(--a2ui-border-radius, 0.75rem);
108
+ background: var(--a2ui-control-background, #fff);
109
+ padding-inline: var(--a2ui-control-padding-x, 0.875rem);
110
+ box-shadow: var(--a2ui-control-shadow);
111
+ color: var(--a2ui-color-on-surface, #333);
112
+ }
113
+
114
+ .a2ui-surface [data-slot="input"]::placeholder,
115
+ .a2ui-surface textarea::placeholder {
116
+ color: var(--a2ui-color-muted, #64748b);
117
+ opacity: 0.85;
118
+ }
119
+
120
+ .a2ui-surface [data-slot="input"]:hover:not(:disabled),
121
+ .a2ui-surface textarea:hover:not(:disabled) {
122
+ border-color: color-mix(
123
+ in srgb,
124
+ var(--a2ui-color-primary, #1177ee) 45%,
125
+ var(--a2ui-color-border, #cbd5e1)
126
+ );
127
+ }
128
+
129
+ .a2ui-surface [data-slot="input"]:focus-visible,
130
+ .a2ui-surface textarea:focus-visible {
131
+ border-color: var(--a2ui-color-primary, #1177ee);
132
+ box-shadow: var(--a2ui-control-focus-shadow);
133
+ }
134
+
135
+ .a2ui-surface [data-slot="button"] {
136
+ min-height: var(--a2ui-control-height, 2.75rem);
137
+ width: fit-content;
138
+ min-width: 7rem;
139
+ border-radius: var(--a2ui-border-radius, 0.75rem);
140
+ padding-inline: calc(var(--a2ui-control-padding-x, 0.875rem) + 0.25rem);
141
+ box-shadow: var(--a2ui-button-shadow);
142
+ font-weight: 600;
143
+ letter-spacing: 0.01em;
144
+ }
145
+
146
+ .a2ui-surface [data-slot="button"]:hover:not(:disabled) {
147
+ box-shadow: 0 4px 10px rgba(15, 23, 42, 0.14);
148
+ transform: translateY(-1px);
149
+ }
150
+
151
+ .a2ui-surface [data-slot="button"]:active:not(:disabled) {
152
+ box-shadow: var(--a2ui-button-shadow);
153
+ transform: translateY(0);
154
+ }
155
+
156
+ /* Carousel layout — must not depend on app Tailwind scanning linked packages.
157
+ Side gutters keep prev/next clear of slides. No negative track margin (that
158
+ pattern clips Card left borders under overflow:hidden and overlaps the prev control). */
159
+ .a2ui-surface [data-slot="carousel"] {
160
+ position: relative;
161
+ width: 100%;
162
+ padding-inline: 2.75rem;
163
+ box-sizing: border-box;
164
+ }
165
+
166
+ .a2ui-surface [data-slot="carousel-viewport"] {
167
+ overflow: hidden;
168
+ width: 100%;
169
+ }
170
+
171
+ .a2ui-surface [data-slot="carousel-track"] {
172
+ display: flex;
173
+ margin: 0;
174
+ }
175
+
176
+ .a2ui-surface [data-slot="carousel-item"] {
177
+ box-sizing: border-box;
178
+ flex: 0 0 100%;
179
+ min-width: 0;
180
+ /* Inset so Card border/shadow is not clipped by the viewport */
181
+ padding: 0.5rem 0.25rem;
182
+ }
183
+
184
+ .a2ui-surface [data-slot="carousel"] [data-slot="card"] {
185
+ width: 100%;
186
+ }
187
+
188
+ .a2ui-surface [data-slot="carousel"] [data-slot="label"] {
189
+ display: block;
190
+ white-space: pre-wrap;
191
+ word-break: break-word;
192
+ line-height: 1.5;
193
+ color: var(--a2ui-color-on-surface, #333);
194
+ }
195
+
196
+ .a2ui-surface [data-slot="carousel-previous"],
197
+ .a2ui-surface [data-slot="carousel-next"] {
198
+ position: absolute;
199
+ top: 50%;
200
+ z-index: 2;
201
+ display: inline-flex;
202
+ align-items: center;
203
+ justify-content: center;
204
+ box-sizing: border-box;
205
+ width: 2rem;
206
+ min-width: 2rem;
207
+ max-width: 2rem;
208
+ height: 2rem;
209
+ min-height: 2rem;
210
+ max-height: 2rem;
211
+ padding: 0 !important;
212
+ gap: 0 !important;
213
+ border-radius: 9999px;
214
+ line-height: 0;
215
+ /* Beat Button active:translate-y-px so the control does not jump on click. */
216
+ transform: translateY(-50%) !important;
217
+ }
218
+
219
+ .a2ui-surface [data-slot="carousel-previous"]:hover,
220
+ .a2ui-surface [data-slot="carousel-previous"]:active,
221
+ .a2ui-surface [data-slot="carousel-previous"]:focus,
222
+ .a2ui-surface [data-slot="carousel-previous"]:focus-visible,
223
+ .a2ui-surface [data-slot="carousel-next"]:hover,
224
+ .a2ui-surface [data-slot="carousel-next"]:active,
225
+ .a2ui-surface [data-slot="carousel-next"]:focus,
226
+ .a2ui-surface [data-slot="carousel-next"]:focus-visible {
227
+ transform: translateY(-50%) !important;
228
+ }
229
+
230
+ .a2ui-surface [data-slot="carousel-previous"] svg,
231
+ .a2ui-surface [data-slot="carousel-next"] svg {
232
+ display: block;
233
+ width: 1rem;
234
+ height: 1rem;
235
+ flex-shrink: 0;
236
+ margin: 0;
237
+ }
238
+
239
+ .a2ui-surface [data-slot="carousel-previous"] svg {
240
+ transform: translateX(1.5px);
241
+ }
242
+
243
+ .a2ui-surface [data-slot="carousel-next"] svg {
244
+ transform: translateX(-1.5px);
245
+ }
246
+
247
+ .a2ui-surface [data-slot="carousel-previous"] {
248
+ left: 0.25rem;
249
+ }
250
+
251
+ .a2ui-surface [data-slot="carousel-next"] {
252
+ right: 0.25rem;
253
+ }
254
+
255
+ /* HoverCard — absolutely positioned panel (no layout shift).
256
+ In-flow open/close pushed siblings under the cursor and caused hover flicker. */
257
+ .a2ui-surface [data-slot="card"]:has(.a2ui-hover-card),
258
+ .a2ui-surface [data-slot="card-content"]:has(.a2ui-hover-card) {
259
+ overflow: visible;
260
+ }
261
+
262
+ .a2ui-surface .a2ui-hover-card {
263
+ position: relative;
264
+ display: inline-block;
265
+ max-width: 100%;
266
+ vertical-align: top;
267
+ z-index: 1;
268
+ }
269
+
270
+ .a2ui-surface .a2ui-hover-card:has(.a2ui-hover-card-panel.is-open) {
271
+ z-index: 30;
272
+ }
273
+
274
+ .a2ui-surface .a2ui-hover-card-trigger {
275
+ display: inline-flex;
276
+ align-items: center;
277
+ justify-content: center;
278
+ box-sizing: border-box;
279
+ min-height: 2rem;
280
+ padding: 0.25rem 0.625rem;
281
+ border: 1px solid var(--a2ui-color-border, #cbd5e1);
282
+ border-radius: var(--a2ui-border-radius, 0.75rem);
283
+ background: #fff;
284
+ color: var(--a2ui-color-on-surface, #333);
285
+ box-shadow: var(--a2ui-button-shadow, 0 1px 2px rgba(15, 23, 42, 0.08));
286
+ font-size: 0.875rem;
287
+ font-weight: 600;
288
+ line-height: 1.25;
289
+ cursor: help;
290
+ }
291
+
292
+ .a2ui-surface .a2ui-hover-card-trigger:hover,
293
+ .a2ui-surface .a2ui-hover-card-trigger:focus-visible {
294
+ background: var(--a2ui-color-secondary, #f1f5f9);
295
+ outline: none;
296
+ }
297
+
298
+ .a2ui-surface .a2ui-hover-card-trigger:focus-visible {
299
+ box-shadow: var(--a2ui-control-focus-shadow);
300
+ }
301
+
302
+ .a2ui-surface .a2ui-hover-card-panel {
303
+ display: none;
304
+ position: absolute;
305
+ top: calc(100% + 0.35rem);
306
+ left: 0;
307
+ z-index: 40;
308
+ box-sizing: border-box;
309
+ width: max-content;
310
+ max-width: min(20rem, 100vw);
311
+ padding: 0.625rem 0.75rem;
312
+ border: 1px solid var(--a2ui-color-border, #cbd5e1);
313
+ border-radius: var(--a2ui-border-radius, 0.75rem);
314
+ background: #fff;
315
+ color: var(--a2ui-color-on-surface, #333);
316
+ box-shadow: 0 8px 24px rgba(15, 23, 42, 0.16);
317
+ pointer-events: auto;
318
+ }
319
+
320
+ .a2ui-surface .a2ui-hover-card-panel.is-open {
321
+ display: block;
322
+ }
323
+
324
+ .a2ui-surface .a2ui-hover-card-title {
325
+ margin: 0 0 0.25rem;
326
+ font-weight: 600;
327
+ font-size: 0.875rem;
328
+ }
329
+
330
+ .a2ui-surface .a2ui-hover-card-body {
331
+ margin: 0;
332
+ color: var(--a2ui-color-muted, #64748b);
333
+ font-size: 0.875rem;
334
+ line-height: 1.45;
335
+ }
336
+
337
+ /* Dialog modal — opaque panel + high z-index (hosts often use z-[10000] for app dialogs).
338
+ Do not rely solely on Tailwind bg-popover; portaled nodes may leave .a2ui-surface. */
339
+ .a2ui-dialog-root {
340
+ --popover: #fff;
341
+ --popover-foreground: var(--a2ui-color-on-surface, #333);
342
+ --border: var(--a2ui-color-border, #cbd5e1);
343
+ --muted-foreground: var(--a2ui-color-muted, #64748b);
344
+ --primary: var(--a2ui-color-primary, #1177ee);
345
+ --primary-foreground: var(--a2ui-color-on-primary, #fff);
346
+ }
347
+
348
+ .a2ui-dialog-overlay {
349
+ position: fixed;
350
+ inset: 0;
351
+ z-index: 10000;
352
+ background: rgba(15, 23, 42, 0.5);
353
+ }
354
+
355
+ .a2ui-dialog-panel {
356
+ position: fixed;
357
+ top: 50%;
358
+ left: 50%;
359
+ z-index: 10001;
360
+ display: grid;
361
+ width: min(40rem, calc(100% - 2rem));
362
+ max-height: min(85vh, 40rem);
363
+ overflow: auto;
364
+ gap: 1rem;
365
+ padding: 1rem;
366
+ border: 1px solid var(--a2ui-color-border, #cbd5e1);
367
+ border-radius: var(--a2ui-border-radius, 0.75rem);
368
+ background: #fff;
369
+ color: var(--a2ui-color-on-surface, #333);
370
+ box-shadow: 0 16px 48px rgba(15, 23, 42, 0.24);
371
+ transform: translate(-50%, -50%);
372
+ }