@axenstudio/axen-form 0.1.8 → 0.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1057 @@
1
+ /* ═══════════════════════════════════════════════
2
+ axen-form CSS Reset
3
+ Minimal reset for form elements
4
+ ═══════════════════════════════════════════════ */
5
+
6
+ *,
7
+ *::before,
8
+ *::after {
9
+ box-sizing: border-box;
10
+ }
11
+
12
+ /* Reset form element defaults */
13
+ input,
14
+ textarea,
15
+ select,
16
+ button {
17
+ font-family: inherit;
18
+ font-size: inherit;
19
+ line-height: inherit;
20
+ color: inherit;
21
+ margin: 0;
22
+ }
23
+
24
+ /* Remove default styling from number inputs */
25
+ input[type='number']::-webkit-inner-spin-button,
26
+ input[type='number']::-webkit-outer-spin-button {
27
+ -webkit-appearance: none;
28
+ margin: 0;
29
+ }
30
+
31
+ input[type='number'] {
32
+ -moz-appearance: textfield;
33
+ appearance: textfield;
34
+ }
35
+
36
+ /* Remove default date/time input icons if using custom components */
37
+ input[type='date']::-webkit-calendar-picker-indicator,
38
+ input[type='time']::-webkit-calendar-picker-indicator,
39
+ input[type='datetime-local']::-webkit-calendar-picker-indicator {
40
+ cursor: pointer;
41
+ }
42
+
43
+ /* Ensure fieldset/legend reset */
44
+ fieldset {
45
+ border: none;
46
+ padding: 0;
47
+ margin: 0;
48
+ }
49
+
50
+ legend {
51
+ padding: 0;
52
+ }
53
+
54
+ /* Remove textarea resize handle (can be overridden) */
55
+ textarea {
56
+ resize: vertical;
57
+ }
58
+
59
+ /* Focus visible only — keyboard navigation (A11y) */
60
+ :focus:not(:focus-visible) {
61
+ outline: none;
62
+ }
63
+
64
+ :focus-visible {
65
+ outline: var(--axen-focus-ring-width, 2px) solid
66
+ var(--axen-focus-ring-color, rgba(25, 118, 210, 0.5));
67
+ outline-offset: var(--axen-focus-ring-offset, 2px);
68
+ }
69
+ /* ═══════════════════════════════════════════════
70
+ axen-form Built-in Theme Presets
71
+ Applied via data-axen-theme attribute on form
72
+ ═══════════════════════════════════════════════ */
73
+
74
+ /* ── Default Theme (Blue) ────────────────────── */
75
+ [data-axen-theme='default'] {
76
+ --axen-color-primary: #1976d2;
77
+ --axen-color-primary-hover: #1565c0;
78
+ --axen-color-primary-light: #e3f2fd;
79
+ --axen-color-input-bg: #f0f7ff;
80
+ --axen-color-label: #1565c0;
81
+ }
82
+
83
+ /* ── Subtle Theme (Gray) ─────────────────────── */
84
+ [data-axen-theme='subtle'] {
85
+ --axen-color-primary: #546e7a;
86
+ --axen-color-primary-hover: #37474f;
87
+ --axen-color-primary-light: #eceff1;
88
+ --axen-color-input-bg: #f5f5f5;
89
+ --axen-color-label: #37474f;
90
+ }
91
+
92
+ /* ── Green Theme ─────────────────────────────── */
93
+ [data-axen-theme='green'] {
94
+ --axen-color-primary: #2e7d32;
95
+ --axen-color-primary-hover: #1b5e20;
96
+ --axen-color-primary-light: #e8f5e9;
97
+ --axen-color-input-bg: #f1f8e9;
98
+ --axen-color-label: #1b5e20;
99
+ }
100
+ /* ═══════════════════════════════════════════════
101
+ axen-form Design Tokens
102
+ CSS Custom Properties — A11y-aware & Responsive
103
+ ═══════════════════════════════════════════════ */
104
+
105
+ :root {
106
+ /* ── Color Palette ─────────────────────────── */
107
+ --axen-color-primary: #1976d2;
108
+ --axen-color-primary-hover: #1565c0;
109
+ --axen-color-primary-light: #e3f2fd;
110
+ --axen-color-error: #d32f2f;
111
+ --axen-color-error-light: #fdecea;
112
+ --axen-color-success: #2e7d32;
113
+ --axen-color-warning: #ed6c02;
114
+ --axen-color-text: #1a1a1a;
115
+ --axen-color-text-secondary: #666666;
116
+ --axen-color-text-disabled: #9e9e9e;
117
+ --axen-color-border: #d0d5dd;
118
+ --axen-color-border-hover: #888888;
119
+ --axen-color-border-focus: var(--axen-color-primary);
120
+ --axen-color-bg: #ffffff;
121
+ --axen-color-bg-disabled: #f5f5f5;
122
+ --axen-color-bg-hover: #fafafa;
123
+ --axen-color-input-bg: #f0f7ff;
124
+ --axen-color-label: var(--axen-color-text);
125
+
126
+ /* ── Typography ────────────────────────────── */
127
+ --axen-font-family:
128
+ -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
129
+ --axen-font-size-xs: 0.75rem;
130
+ --axen-font-size-sm: 0.875rem;
131
+ --axen-font-size-md: 1rem;
132
+ --axen-font-size-lg: 1.125rem;
133
+ --axen-font-weight-normal: 400;
134
+ --axen-font-weight-medium: 500;
135
+ --axen-font-weight-bold: 600;
136
+ --axen-line-height: 1.5;
137
+
138
+ /* ── Spacing ───────────────────────────────── */
139
+ --axen-space-xs: 0.25rem;
140
+ --axen-space-sm: 0.5rem;
141
+ --axen-space-md: 1rem;
142
+ --axen-space-lg: 1.5rem;
143
+ --axen-space-xl: 2rem;
144
+
145
+ /* ── Border & Radius ───────────────────────── */
146
+ --axen-border-width: 1px;
147
+ --axen-border-radius: 8px;
148
+ --axen-border-radius-sm: 4px;
149
+ --axen-border-radius-lg: 10px;
150
+ --axen-border-radius-pill: 9999px;
151
+
152
+ /* ── Focus Ring (A11y: WCAG 2.4.7) ─────────── */
153
+ --axen-focus-ring-width: 2px;
154
+ --axen-focus-ring-offset: 2px;
155
+ --axen-focus-ring-color: rgba(25, 118, 210, 0.5);
156
+
157
+ /* ── Field Sizing ──────────────────────────── */
158
+ --axen-field-height: 2.75rem;
159
+ --axen-field-min-height: 44px; /* A11y: min 44px touch target */
160
+ --axen-field-padding-x: 0.75rem;
161
+ --axen-field-padding-y: 0.5rem;
162
+ --axen-label-margin-bottom: 0.375rem;
163
+ --axen-helper-margin-top: 0.25rem;
164
+
165
+ /* ── Transitions ───────────────────────────── */
166
+ --axen-transition-fast: 150ms ease;
167
+ --axen-transition-normal: 200ms ease;
168
+
169
+ /* ── Shadows ───────────────────────────────── */
170
+ --axen-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
171
+ --axen-shadow-focus: 0 0 0 var(--axen-focus-ring-width) var(--axen-focus-ring-color);
172
+
173
+ /* ── Breakpoints (for reference in JS) ─────── */
174
+ --axen-bp-sm: 600px;
175
+ --axen-bp-md: 900px;
176
+ --axen-bp-lg: 1200px;
177
+ --axen-bp-xl: 1536px;
178
+
179
+ /* ── Z-index layers ────────────────────────── */
180
+ --axen-z-dropdown: 100;
181
+ --axen-z-tooltip: 200;
182
+ }
183
+
184
+ /* ── Dark Mode (respects system) ────────────── */
185
+ @media (prefers-color-scheme: dark) {
186
+ :root {
187
+ --axen-color-text: #e0e0e0;
188
+ --axen-color-text-secondary: #a0a0a0;
189
+ --axen-color-text-disabled: #666666;
190
+ --axen-color-border: #555555;
191
+ --axen-color-border-hover: #888888;
192
+ --axen-color-bg: #1e1e1e;
193
+ --axen-color-bg-disabled: #2a2a2a;
194
+ --axen-color-bg-hover: #2e2e2e;
195
+ --axen-color-primary-light: #1a3a5c;
196
+ --axen-color-error-light: #3d1c1c;
197
+ --axen-focus-ring-color: rgba(66, 165, 245, 0.6);
198
+ }
199
+ }
200
+
201
+ /* ── High Contrast Mode (A11y) ──────────────── */
202
+ @media (prefers-contrast: more) {
203
+ :root {
204
+ --axen-color-border: #000000;
205
+ --axen-color-text: #000000;
206
+ --axen-color-text-secondary: #333333;
207
+ --axen-border-width: 2px;
208
+ --axen-focus-ring-width: 3px;
209
+ --axen-focus-ring-color: rgba(0, 0, 0, 0.8);
210
+ }
211
+ }
212
+
213
+ /* ── Reduced Motion (A11y: WCAG 2.3.3) ──────── */
214
+ @media (prefers-reduced-motion: reduce) {
215
+ :root {
216
+ --axen-transition-fast: 0ms;
217
+ --axen-transition-normal: 0ms;
218
+ }
219
+ }
220
+ /* ═══════════════════════════════════════════════
221
+ axen-form Field Base Styles
222
+ Shared styles for all field components
223
+ A11y-aware + Responsive
224
+ ═══════════════════════════════════════════════ */
225
+
226
+ /* ── Field Wrapper ───────────────────────────── */
227
+ ._wrapper_1w6h8_8 {
228
+ display: flex;
229
+ flex-direction: column;
230
+ width: 100%;
231
+ }
232
+
233
+ /* ── Label ───────────────────────────────────── */
234
+ ._label_1w6h8_15 {
235
+ display: block;
236
+ font-size: var(--axen-font-size-sm, 0.875rem);
237
+ font-weight: var(--axen-font-weight-medium, 500);
238
+ color: var(--axen-color-label, var(--axen-color-text, #1a1a1a));
239
+ margin-bottom: var(--axen-label-margin-bottom, 0.375rem);
240
+ line-height: var(--axen-line-height, 1.5);
241
+ letter-spacing: 0.01em;
242
+ }
243
+
244
+ ._labelRequired_1w6h8_25::after {
245
+ content: ' *';
246
+ color: var(--axen-color-error, #d32f2f);
247
+ font-weight: var(--axen-font-weight-bold, 600);
248
+ }
249
+
250
+ /* ── Input Base ──────────────────────────────── */
251
+ ._input_1w6h8_32 {
252
+ display: block;
253
+ width: 100%;
254
+ height: var(--axen-field-height, 2.75rem);
255
+ min-height: var(--axen-field-min-height, 44px);
256
+ padding: var(--axen-field-padding-y, 0.5rem) var(--axen-field-padding-x, 0.75rem);
257
+ font-family: var(
258
+ --axen-font-family,
259
+ -apple-system,
260
+ BlinkMacSystemFont,
261
+ 'Segoe UI',
262
+ Roboto,
263
+ 'Helvetica Neue',
264
+ Arial,
265
+ sans-serif
266
+ );
267
+ font-size: var(--axen-font-size-md, 1rem);
268
+ line-height: var(--axen-line-height, 1.5);
269
+ color: var(--axen-color-text, #1a1a1a);
270
+ background-color: var(--axen-color-input-bg, var(--axen-color-bg, #ffffff));
271
+ border: var(--axen-border-width, 1px) solid var(--axen-color-border, #d0d5dd);
272
+ border-radius: var(--axen-border-radius, 8px);
273
+ transition:
274
+ border-color var(--axen-transition-fast, 150ms ease),
275
+ box-shadow var(--axen-transition-fast, 150ms ease);
276
+ outline: none;
277
+ }
278
+
279
+ ._input_1w6h8_32::placeholder {
280
+ color: var(--axen-color-text-disabled, #9e9e9e);
281
+ }
282
+
283
+ ._input_1w6h8_32:hover:not(:disabled):not(:read-only) {
284
+ border-color: var(--axen-color-border-hover, #888888);
285
+ }
286
+
287
+ /* Focus ring (keyboard + mouse) */
288
+ ._input_1w6h8_32:focus {
289
+ border-color: var(--axen-color-border-focus, var(--axen-color-primary, #1976d2));
290
+ box-shadow: var(--axen-shadow-focus, 0 0 0 2px rgba(25, 118, 210, 0.5));
291
+ outline: none;
292
+ }
293
+
294
+ ._input_1w6h8_32:disabled {
295
+ background-color: var(--axen-color-bg-disabled, #f5f5f5);
296
+ color: var(--axen-color-text-disabled, #9e9e9e);
297
+ cursor: not-allowed;
298
+ }
299
+
300
+ ._input_1w6h8_32:read-only {
301
+ background-color: var(--axen-color-bg-disabled, #f5f5f5);
302
+ }
303
+
304
+ /* ── Error State ─────────────────────────────── */
305
+ ._inputError_1w6h8_86 {
306
+ border-color: var(--axen-color-error, #d32f2f);
307
+ }
308
+
309
+ ._inputError_1w6h8_86:focus {
310
+ border-color: var(--axen-color-error, #d32f2f);
311
+ box-shadow: 0 0 0 var(--axen-focus-ring-width, 2px) rgba(211, 47, 47, 0.3);
312
+ }
313
+
314
+ /* ── Helper Text ─────────────────────────────── */
315
+ ._helperText_1w6h8_96 {
316
+ display: block;
317
+ font-size: var(--axen-font-size-xs, 0.75rem);
318
+ color: var(--axen-color-text-secondary, #666666);
319
+ margin-top: var(--axen-helper-margin-top, 0.25rem);
320
+ line-height: var(--axen-line-height, 1.5);
321
+ }
322
+
323
+ ._helperTextError_1w6h8_104 {
324
+ color: var(--axen-color-error, #d32f2f);
325
+ }
326
+
327
+ /* ── Textarea ────────────────────────────────── */
328
+ ._textarea_1w6h8_109 {
329
+ height: auto;
330
+ min-height: calc(var(--axen-field-min-height, 44px) * 2);
331
+ resize: vertical;
332
+ padding-top: var(--axen-field-padding-x, 0.75rem);
333
+ }
334
+
335
+ /* ── Select ──────────────────────────────────── */
336
+ ._select_1w6h8_117 {
337
+ appearance: none;
338
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
339
+ background-repeat: no-repeat;
340
+ background-position: right 0.75rem center;
341
+ padding-right: 2rem;
342
+ cursor: pointer;
343
+ }
344
+
345
+ /* ── Input with prefix/suffix ────────────────── */
346
+ ._inputGroup_1w6h8_127 {
347
+ display: flex;
348
+ align-items: stretch;
349
+ }
350
+
351
+ /* ── Icon inside input ───────────────────────── */
352
+ ._inputIconWrapper_1w6h8_133 {
353
+ position: relative;
354
+ }
355
+
356
+ ._fieldIcon_1w6h8_137 {
357
+ position: absolute;
358
+ left: 0.75rem;
359
+ top: 50%;
360
+ transform: translateY(-50%);
361
+ width: 1.125rem;
362
+ height: 1.125rem;
363
+ color: var(--axen-color-text-secondary, #666666);
364
+ pointer-events: none;
365
+ display: flex;
366
+ align-items: center;
367
+ justify-content: center;
368
+ z-index: 1;
369
+ }
370
+
371
+ ._inputWithIcon_1w6h8_152 {
372
+ padding-left: 2.5rem;
373
+ }
374
+
375
+ ._inputPrefix_1w6h8_156,
376
+ ._inputSuffix_1w6h8_157 {
377
+ display: flex;
378
+ align-items: center;
379
+ padding: 0 var(--axen-space-sm, 0.5rem);
380
+ font-size: var(--axen-font-size-sm, 0.875rem);
381
+ color: var(--axen-color-text-secondary, #666666);
382
+ background-color: var(--axen-color-bg-hover, #fafafa);
383
+ border: var(--axen-border-width, 1px) solid var(--axen-color-border, #c4c4c4);
384
+ white-space: nowrap;
385
+ }
386
+
387
+ ._inputPrefix_1w6h8_156 {
388
+ border-right: none;
389
+ border-radius: var(--axen-border-radius, 6px) 0 0 var(--axen-border-radius, 6px);
390
+ }
391
+
392
+ ._inputSuffix_1w6h8_157 {
393
+ border-left: none;
394
+ border-radius: 0 var(--axen-border-radius, 6px) var(--axen-border-radius, 6px) 0;
395
+ }
396
+
397
+ ._inputGroupInput_1w6h8_178 {
398
+ border-radius: 0;
399
+ }
400
+
401
+ ._inputPrefix_1w6h8_156 + ._inputGroupInput_1w6h8_178 {
402
+ border-top-left-radius: 0;
403
+ border-bottom-left-radius: 0;
404
+ }
405
+
406
+ ._inputGroupInput_1w6h8_178:has(+ ._inputSuffix_1w6h8_157) {
407
+ border-top-right-radius: 0;
408
+ border-bottom-right-radius: 0;
409
+ }
410
+
411
+ /* ── Checkbox/Radio/Switch shared ────────────── */
412
+ ._inlineWrapper_1w6h8_193 {
413
+ display: flex;
414
+ align-items: center;
415
+ gap: var(--axen-space-sm, 0.5rem);
416
+ min-height: var(--axen-field-min-height, 44px);
417
+ cursor: pointer;
418
+ }
419
+
420
+ ._inlineWrapper_1w6h8_193:has(:disabled) {
421
+ cursor: not-allowed;
422
+ opacity: 0.6;
423
+ }
424
+
425
+ ._inlineLabel_1w6h8_206 {
426
+ font-size: var(--axen-font-size-md, 1rem);
427
+ color: var(--axen-color-text, #1a1a1a);
428
+ user-select: none;
429
+ }
430
+
431
+ /* ── Responsive: mobile touch targets ────────── */
432
+ @media (max-width: 599px) {
433
+ ._input_1w6h8_32 {
434
+ font-size: 16px; /* Prevent iOS zoom on focus */
435
+ min-height: 48px;
436
+ }
437
+
438
+ ._inlineWrapper_1w6h8_193 {
439
+ min-height: 48px;
440
+ }
441
+ }
442
+
443
+ /* ── High Contrast Mode ──────────────────────── */
444
+ @media (prefers-contrast: more) {
445
+ ._input_1w6h8_32 {
446
+ border-width: 2px;
447
+ }
448
+
449
+ ._inputError_1w6h8_86 {
450
+ border-width: 3px;
451
+ }
452
+
453
+ ._helperTextError_1w6h8_104 {
454
+ font-weight: var(--axen-font-weight-bold, 600);
455
+ }
456
+ }
457
+
458
+ /* ── Reduced Motion (A11y: WCAG 2.3.3) ──────── */
459
+ @media (prefers-reduced-motion: reduce) {
460
+ ._input_1w6h8_32 {
461
+ transition: none;
462
+ }
463
+ }
464
+ ._inputWrap_1hzxx_1 {
465
+ position: relative;
466
+ display: flex;
467
+ align-items: center;
468
+ }
469
+
470
+ ._spinner_1hzxx_7 {
471
+ position: absolute;
472
+ right: 0.75rem;
473
+ width: 16px;
474
+ height: 16px;
475
+ border: 2px solid var(--axen-color-border);
476
+ border-top-color: var(--axen-color-primary);
477
+ border-radius: 50%;
478
+ animation: _spin_1hzxx_7 0.6s linear infinite;
479
+ }
480
+
481
+ @keyframes _spin_1hzxx_7 {
482
+ to {
483
+ transform: rotate(360deg);
484
+ }
485
+ }
486
+
487
+ @media (prefers-reduced-motion: reduce) {
488
+ ._spinner_1hzxx_7 {
489
+ animation: none;
490
+ opacity: 0.6;
491
+ }
492
+ }
493
+
494
+ /* ── Dropdown ────────────────────────────────── */
495
+ ._dropdown_1hzxx_32 {
496
+ position: absolute;
497
+ z-index: var(--axen-z-dropdown);
498
+ width: 100%;
499
+ max-height: 240px;
500
+ margin: 0;
501
+ padding: var(--axen-space-xs) 0;
502
+ list-style: none;
503
+ overflow-y: auto;
504
+ background: var(--axen-color-bg);
505
+ border: var(--axen-border-width) solid var(--axen-color-border);
506
+ border-top: none;
507
+ border-radius: 0 0 var(--axen-border-radius) var(--axen-border-radius);
508
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
509
+ }
510
+
511
+ ._option_1hzxx_48 {
512
+ display: flex;
513
+ align-items: center;
514
+ padding: var(--axen-space-sm) var(--axen-field-padding-x);
515
+ font-size: var(--axen-font-size-md);
516
+ color: var(--axen-color-text);
517
+ cursor: pointer;
518
+ min-height: var(--axen-field-min-height);
519
+ transition: background-color var(--axen-transition-fast);
520
+ }
521
+
522
+ ._option_1hzxx_48:hover {
523
+ background-color: var(--axen-color-bg-hover);
524
+ }
525
+
526
+ ._optionActive_1hzxx_63 {
527
+ background-color: var(--axen-color-primary-light);
528
+ }
529
+
530
+ ._optionDisabled_1hzxx_67 {
531
+ color: var(--axen-color-text-disabled);
532
+ cursor: not-allowed;
533
+ }
534
+
535
+ ._noResults_1hzxx_72 {
536
+ padding: var(--axen-space-sm) var(--axen-field-padding-x);
537
+ font-size: var(--axen-font-size-sm);
538
+ color: var(--axen-color-text-secondary);
539
+ border: var(--axen-border-width) solid var(--axen-color-border);
540
+ border-top: none;
541
+ border-radius: 0 0 var(--axen-border-radius) var(--axen-border-radius);
542
+ background: var(--axen-color-bg);
543
+ }
544
+
545
+ /* ── Chip (used by multi) ────────────────────── */
546
+ ._chipWrap_1hzxx_83 {
547
+ display: flex;
548
+ flex-wrap: wrap;
549
+ gap: var(--axen-space-xs);
550
+ padding: var(--axen-space-xs);
551
+ }
552
+
553
+ ._chip_1hzxx_83 {
554
+ display: inline-flex;
555
+ align-items: center;
556
+ gap: var(--axen-space-xs);
557
+ padding: 2px 8px;
558
+ font-size: var(--axen-font-size-xs);
559
+ color: var(--axen-color-text);
560
+ background-color: var(--axen-color-primary-light);
561
+ border-radius: var(--axen-border-radius-pill);
562
+ max-width: 100%;
563
+ white-space: nowrap;
564
+ overflow: hidden;
565
+ text-overflow: ellipsis;
566
+ }
567
+
568
+ ._chipRemove_1hzxx_105 {
569
+ display: inline-flex;
570
+ align-items: center;
571
+ justify-content: center;
572
+ width: 16px;
573
+ height: 16px;
574
+ padding: 0;
575
+ border: none;
576
+ background: transparent;
577
+ cursor: pointer;
578
+ font-size: 12px;
579
+ color: var(--axen-color-text-secondary);
580
+ border-radius: 50%;
581
+ flex-shrink: 0;
582
+ }
583
+
584
+ ._chipRemove_1hzxx_105:hover {
585
+ background: rgba(0, 0, 0, 0.08);
586
+ color: var(--axen-color-text);
587
+ }
588
+
589
+ ._chipRemove_1hzxx_105:focus-visible {
590
+ outline: var(--axen-focus-ring-width) solid var(--axen-focus-ring-color);
591
+ }
592
+
593
+ /* ── Ghost text (predict) ────────────────────── */
594
+ ._predictWrap_1hzxx_131 {
595
+ position: relative;
596
+ display: flex;
597
+ align-items: center;
598
+ }
599
+
600
+ ._ghostText_1hzxx_137 {
601
+ position: absolute;
602
+ left: var(--axen-field-padding-x);
603
+ top: 50%;
604
+ transform: translateY(-50%);
605
+ color: var(--axen-color-text-disabled);
606
+ font-family: var(--axen-font-family);
607
+ font-size: var(--axen-font-size-md);
608
+ pointer-events: none;
609
+ white-space: nowrap;
610
+ overflow: hidden;
611
+ }
612
+
613
+ ._ghostHidden_1hzxx_150 {
614
+ visibility: hidden;
615
+ position: absolute;
616
+ white-space: pre;
617
+ font-family: var(--axen-font-family);
618
+ font-size: var(--axen-font-size-md);
619
+ }
620
+
621
+ /* ── Mobile adjustments ──────────────────────── */
622
+ @media (max-width: 599px) {
623
+ ._dropdown_1hzxx_32 {
624
+ max-height: 200px;
625
+ }
626
+
627
+ ._option_1hzxx_48 {
628
+ min-height: 48px;
629
+ padding: var(--axen-space-sm) var(--axen-space-md);
630
+ }
631
+ }
632
+ ._checkboxLabel_1labl_1 {
633
+ cursor: pointer;
634
+ }
635
+
636
+ ._checkbox_1labl_1 {
637
+ width: 20px;
638
+ height: 20px;
639
+ margin: 0;
640
+ cursor: pointer;
641
+ accent-color: var(--axen-color-primary);
642
+ border-radius: var(--axen-border-radius-sm);
643
+ }
644
+
645
+ ._checkbox_1labl_1:focus-visible {
646
+ outline: var(--axen-focus-ring-width) solid var(--axen-focus-ring-color);
647
+ outline-offset: var(--axen-focus-ring-offset);
648
+ }
649
+
650
+ ._checkbox_1labl_1:disabled {
651
+ cursor: not-allowed;
652
+ }
653
+
654
+ /* Mobile: larger touch target */
655
+ @media (max-width: 599px) {
656
+ ._checkbox_1labl_1 {
657
+ width: 24px;
658
+ height: 24px;
659
+ }
660
+ }
661
+ ._colorWrap_or7ln_1 {
662
+ display: flex;
663
+ align-items: center;
664
+ gap: var(--axen-space-sm);
665
+ min-height: var(--axen-field-min-height);
666
+ }
667
+
668
+ ._colorInput_or7ln_8 {
669
+ width: 44px;
670
+ height: 44px;
671
+ padding: 2px;
672
+ border: var(--axen-border-width) solid var(--axen-color-border);
673
+ border-radius: var(--axen-border-radius);
674
+ cursor: pointer;
675
+ background: none;
676
+ }
677
+
678
+ ._colorInput_or7ln_8:focus-visible {
679
+ outline: var(--axen-focus-ring-width) solid var(--axen-focus-ring-color);
680
+ outline-offset: var(--axen-focus-ring-offset);
681
+ }
682
+
683
+ ._colorInput_or7ln_8:disabled {
684
+ opacity: 0.5;
685
+ cursor: not-allowed;
686
+ }
687
+
688
+ ._colorValue_or7ln_28 {
689
+ font-size: var(--axen-font-size-sm);
690
+ font-family: monospace;
691
+ color: var(--axen-color-text-secondary);
692
+ text-transform: uppercase;
693
+ }
694
+ ._inputWrap_1nxa7_1 {
695
+ position: relative;
696
+ display: flex;
697
+ align-items: center;
698
+ }
699
+
700
+ ._passwordInput_1nxa7_7 {
701
+ padding-right: 2.5rem;
702
+ }
703
+
704
+ ._toggle_1nxa7_11 {
705
+ position: absolute;
706
+ right: 0.5rem;
707
+ display: flex;
708
+ align-items: center;
709
+ justify-content: center;
710
+ width: 2rem;
711
+ height: 2rem;
712
+ padding: 0;
713
+ border: none;
714
+ background: transparent;
715
+ cursor: pointer;
716
+ color: var(--axen-color-text-secondary);
717
+ font-size: var(--axen-font-size-lg);
718
+ border-radius: var(--axen-border-radius-sm);
719
+ transition: color var(--axen-transition-fast);
720
+ }
721
+
722
+ ._toggle_1nxa7_11:hover:not(:disabled) {
723
+ color: var(--axen-color-text);
724
+ }
725
+
726
+ ._toggle_1nxa7_11:focus-visible {
727
+ outline: var(--axen-focus-ring-width) solid var(--axen-focus-ring-color);
728
+ outline-offset: var(--axen-focus-ring-offset);
729
+ }
730
+
731
+ ._toggle_1nxa7_11:disabled {
732
+ cursor: not-allowed;
733
+ opacity: 0.5;
734
+ }
735
+ ._radioGroup_1nz5i_1 {
736
+ display: flex;
737
+ flex-direction: column;
738
+ gap: var(--axen-space-xs);
739
+ }
740
+
741
+ ._radioLabel_1nz5i_7 {
742
+ cursor: pointer;
743
+ }
744
+
745
+ ._radio_1nz5i_1 {
746
+ width: 20px;
747
+ height: 20px;
748
+ margin: 0;
749
+ cursor: pointer;
750
+ accent-color: var(--axen-color-primary);
751
+ }
752
+
753
+ ._radio_1nz5i_1:focus-visible {
754
+ outline: var(--axen-focus-ring-width) solid var(--axen-focus-ring-color);
755
+ outline-offset: var(--axen-focus-ring-offset);
756
+ }
757
+
758
+ ._radio_1nz5i_1:disabled {
759
+ cursor: not-allowed;
760
+ }
761
+
762
+ /* Mobile: larger touch target */
763
+ @media (max-width: 599px) {
764
+ ._radio_1nz5i_1 {
765
+ width: 24px;
766
+ height: 24px;
767
+ }
768
+ }
769
+ ._sliderWrap_84w8t_1 {
770
+ display: flex;
771
+ align-items: center;
772
+ gap: var(--axen-space-md);
773
+ min-height: var(--axen-field-min-height);
774
+ }
775
+
776
+ ._slider_84w8t_1 {
777
+ flex: 1;
778
+ height: 6px;
779
+ appearance: none;
780
+ background: var(--axen-color-border);
781
+ border-radius: var(--axen-border-radius-pill);
782
+ outline: none;
783
+ cursor: pointer;
784
+ transition: background var(--axen-transition-fast);
785
+ }
786
+
787
+ ._slider_84w8t_1::-webkit-slider-thumb {
788
+ appearance: none;
789
+ width: 20px;
790
+ height: 20px;
791
+ border-radius: 50%;
792
+ background: var(--axen-color-primary);
793
+ border: 2px solid var(--axen-color-bg);
794
+ box-shadow: var(--axen-shadow-sm);
795
+ cursor: pointer;
796
+ transition:
797
+ background var(--axen-transition-fast),
798
+ transform var(--axen-transition-fast);
799
+ }
800
+
801
+ ._slider_84w8t_1::-webkit-slider-thumb:hover {
802
+ background: var(--axen-color-primary-hover);
803
+ transform: scale(1.15);
804
+ }
805
+
806
+ ._slider_84w8t_1:focus-visible::-webkit-slider-thumb {
807
+ box-shadow: var(--axen-shadow-focus);
808
+ }
809
+
810
+ ._slider_84w8t_1::-moz-range-thumb {
811
+ width: 20px;
812
+ height: 20px;
813
+ border-radius: 50%;
814
+ background: var(--axen-color-primary);
815
+ border: 2px solid var(--axen-color-bg);
816
+ box-shadow: var(--axen-shadow-sm);
817
+ cursor: pointer;
818
+ }
819
+
820
+ ._slider_84w8t_1:disabled {
821
+ opacity: 0.5;
822
+ cursor: not-allowed;
823
+ }
824
+
825
+ ._output_84w8t_57 {
826
+ min-width: 2.5em;
827
+ text-align: center;
828
+ font-size: var(--axen-font-size-sm);
829
+ font-weight: var(--axen-font-weight-medium);
830
+ color: var(--axen-color-text);
831
+ }
832
+
833
+ /* Touch target for mobile */
834
+ @media (max-width: 599px) {
835
+ ._slider_84w8t_1::-webkit-slider-thumb {
836
+ width: 28px;
837
+ height: 28px;
838
+ }
839
+
840
+ ._slider_84w8t_1::-moz-range-thumb {
841
+ width: 28px;
842
+ height: 28px;
843
+ }
844
+ }
845
+ ._switchLabel_1itxk_1 {
846
+ cursor: pointer;
847
+ }
848
+
849
+ ._switchTrack_1itxk_5 {
850
+ position: relative;
851
+ display: inline-flex;
852
+ align-items: center;
853
+ width: 44px;
854
+ height: 24px;
855
+ background-color: var(--axen-color-border);
856
+ border-radius: var(--axen-border-radius-pill);
857
+ transition: background-color var(--axen-transition-fast);
858
+ flex-shrink: 0;
859
+ }
860
+
861
+ ._switchInput_1itxk_17 {
862
+ position: absolute;
863
+ width: 100%;
864
+ height: 100%;
865
+ margin: 0;
866
+ padding: 0;
867
+ opacity: 0;
868
+ cursor: pointer;
869
+ }
870
+
871
+ ._switchInput_1itxk_17:checked + ._switchThumb_1itxk_27 {
872
+ transform: translateX(20px);
873
+ }
874
+
875
+ ._switchInput_1itxk_17:checked ~ ._switchThumb_1itxk_27 {
876
+ transform: translateX(20px);
877
+ }
878
+
879
+ ._switchTrack_1itxk_5:has(._switchInput_1itxk_17:checked) {
880
+ background-color: var(--axen-color-primary);
881
+ }
882
+
883
+ ._switchInput_1itxk_17:focus-visible ~ ._switchThumb_1itxk_27 {
884
+ box-shadow: var(--axen-shadow-focus);
885
+ }
886
+
887
+ ._switchInput_1itxk_17:disabled {
888
+ cursor: not-allowed;
889
+ }
890
+
891
+ ._switchTrack_1itxk_5:has(._switchInput_1itxk_17:disabled) {
892
+ opacity: 0.5;
893
+ cursor: not-allowed;
894
+ }
895
+
896
+ ._switchThumb_1itxk_27 {
897
+ position: absolute;
898
+ left: 2px;
899
+ width: 20px;
900
+ height: 20px;
901
+ background-color: var(--axen-color-bg);
902
+ border-radius: 50%;
903
+ box-shadow: var(--axen-shadow-sm);
904
+ transition: transform var(--axen-transition-fast);
905
+ pointer-events: none;
906
+ }
907
+
908
+ /* Mobile: larger touch target */
909
+ @media (max-width: 599px) {
910
+ ._switchTrack_1itxk_5 {
911
+ width: 52px;
912
+ height: 28px;
913
+ }
914
+
915
+ ._switchThumb_1itxk_27 {
916
+ width: 24px;
917
+ height: 24px;
918
+ }
919
+
920
+ ._switchInput_1itxk_17:checked ~ ._switchThumb_1itxk_27 {
921
+ transform: translateX(24px);
922
+ }
923
+ }
924
+ /* ═══════════════════════════════════════════════
925
+ axen-form Field Group / Section Styles
926
+ ═══════════════════════════════════════════════ */
927
+
928
+ ._fieldGroup_1864u_5 {
929
+ display: contents; /* Inherit parent grid flow */
930
+ }
931
+
932
+ ._groupLabel_1864u_9 {
933
+ grid-column: 1 / -1;
934
+ font-size: var(--axen-font-size-md, 1rem);
935
+ font-weight: var(--axen-font-weight-bold, 600);
936
+ color: var(--axen-color-primary, #1976d2);
937
+ padding-bottom: var(--axen-space-xs, 0.25rem);
938
+ border-bottom: 2px solid var(--axen-color-primary-light, #e3f2fd);
939
+ margin-top: var(--axen-space-md, 1rem);
940
+ margin-bottom: var(--axen-space-xs, 0.25rem);
941
+ }
942
+
943
+ ._fieldGroup_1864u_5:first-child > ._groupLabel_1864u_9 {
944
+ margin-top: 0;
945
+ }
946
+ /* ═══════════════════════════════════════════════
947
+ axen-form Grid Cell — Responsive colSpan
948
+ Uses CSS custom properties + media queries
949
+ ═══════════════════════════════════════════════ */
950
+
951
+ ._cell_s3hwz_6 {
952
+ --_col: var(--col-xs, 12);
953
+ grid-column: span var(--_col);
954
+ min-width: 0; /* Prevent grid blowout from long content */
955
+ }
956
+
957
+ /* sm ≥ 600px */
958
+ @media (min-width: 600px) {
959
+ ._cell_s3hwz_6 {
960
+ --_col: var(--col-sm, var(--col-xs, 12));
961
+ }
962
+ }
963
+
964
+ /* md ≥ 900px */
965
+ @media (min-width: 900px) {
966
+ ._cell_s3hwz_6 {
967
+ --_col: var(--col-md, var(--col-sm, var(--col-xs, 12)));
968
+ }
969
+ }
970
+
971
+ /* lg ≥ 1200px */
972
+ @media (min-width: 1200px) {
973
+ ._cell_s3hwz_6 {
974
+ --_col: var(--col-lg, var(--col-md, var(--col-sm, var(--col-xs, 12))));
975
+ }
976
+ }
977
+
978
+ /* xl ≥ 1536px */
979
+ @media (min-width: 1536px) {
980
+ ._cell_s3hwz_6 {
981
+ --_col: var(--col-xl, var(--col-lg, var(--col-md, var(--col-sm, var(--col-xs, 12)))));
982
+ }
983
+ }
984
+ ._box_17jtc_1 {
985
+ min-width: 0;
986
+ }
987
+ ._divider_7khjl_1 {
988
+ border: none;
989
+ margin: 0;
990
+ flex-shrink: 0;
991
+ }
992
+
993
+ ._horizontal_7khjl_7 {
994
+ width: 100%;
995
+ height: 1px;
996
+ background-color: var(--axen-color-border);
997
+ }
998
+
999
+ ._vertical_7khjl_13 {
1000
+ width: 1px;
1001
+ height: auto;
1002
+ align-self: stretch;
1003
+ background-color: var(--axen-color-border);
1004
+ }
1005
+
1006
+ @media (prefers-contrast: more) {
1007
+ ._horizontal_7khjl_7,
1008
+ ._vertical_7khjl_13 {
1009
+ background-color: var(--axen-color-text);
1010
+ }
1011
+ }
1012
+ /* ═══════════════════════════════════════════════
1013
+ Grid Layout — Responsive CSS Grid
1014
+ 12-column mobile-first system
1015
+ ═══════════════════════════════════════════════ */
1016
+
1017
+ ._container_1asbx_6 {
1018
+ display: grid;
1019
+ width: 100%;
1020
+ }
1021
+
1022
+ ._item_1asbx_11 {
1023
+ min-width: 0; /* Prevent overflow */
1024
+ }
1025
+
1026
+ /* ── Responsive Breakpoints ──────────────────── */
1027
+
1028
+ /* sm ≥ 600px */
1029
+ @media (min-width: 600px) {
1030
+ ._sm_1asbx_19 {
1031
+ grid-column: span var(--axen-grid-sm, 12);
1032
+ }
1033
+ }
1034
+
1035
+ /* md ≥ 900px */
1036
+ @media (min-width: 900px) {
1037
+ ._md_1asbx_26 {
1038
+ grid-column: span var(--axen-grid-md, 12);
1039
+ }
1040
+ }
1041
+
1042
+ /* lg ≥ 1200px */
1043
+ @media (min-width: 1200px) {
1044
+ ._lg_1asbx_33 {
1045
+ grid-column: span var(--axen-grid-lg, 12);
1046
+ }
1047
+ }
1048
+
1049
+ /* xl ≥ 1536px */
1050
+ @media (min-width: 1536px) {
1051
+ ._xl_1asbx_40 {
1052
+ grid-column: span var(--axen-grid-xl, 12);
1053
+ }
1054
+ }
1055
+ ._stack_1m70l_1 {
1056
+ min-width: 0;
1057
+ }