arekui 1.0.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.
Files changed (56) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +198 -0
  3. package/arekui.css +3279 -0
  4. package/arekui.d.ts +328 -0
  5. package/arekui.js +450 -0
  6. package/dist/arekui.min.css +1 -0
  7. package/dist/arekui.min.js +2 -0
  8. package/package.json +57 -0
  9. package/scripts/build-custom.js +318 -0
  10. package/src/arekui.css +56 -0
  11. package/src/base/neo-overrides.css +317 -0
  12. package/src/base/reset.css +67 -0
  13. package/src/base/tokens.css +304 -0
  14. package/src/components/accordion.css +34 -0
  15. package/src/components/alert.css +26 -0
  16. package/src/components/badge.css +33 -0
  17. package/src/components/breadcrumb.css +33 -0
  18. package/src/components/button.css +103 -0
  19. package/src/components/card.css +24 -0
  20. package/src/components/carousel.css +14 -0
  21. package/src/components/chat.css +78 -0
  22. package/src/components/drawer.css +53 -0
  23. package/src/components/file-upload.css +51 -0
  24. package/src/components/footer.css +26 -0
  25. package/src/components/forms.css +69 -0
  26. package/src/components/hero.css +22 -0
  27. package/src/components/join.css +14 -0
  28. package/src/components/link.css +24 -0
  29. package/src/components/menu.css +56 -0
  30. package/src/components/misc.css +57 -0
  31. package/src/components/modal.css +32 -0
  32. package/src/components/navbar.css +37 -0
  33. package/src/components/pagination.css +46 -0
  34. package/src/components/popover.css +70 -0
  35. package/src/components/progress.css +19 -0
  36. package/src/components/prose.css +80 -0
  37. package/src/components/rating.css +37 -0
  38. package/src/components/scroll-top.css +36 -0
  39. package/src/components/skeleton.css +54 -0
  40. package/src/components/swap.css +45 -0
  41. package/src/components/table.css +22 -0
  42. package/src/components/tabs.css +24 -0
  43. package/src/components/tag.css +101 -0
  44. package/src/components/textured.css +34 -0
  45. package/src/components/timeline.css +34 -0
  46. package/src/components/toast.css +134 -0
  47. package/src/components/tooltip.css +24 -0
  48. package/src/utilities/borders.css +152 -0
  49. package/src/utilities/colors.css +73 -0
  50. package/src/utilities/hover.css +33 -0
  51. package/src/utilities/layout.css +100 -0
  52. package/src/utilities/neo-utilities.css +95 -0
  53. package/src/utilities/responsive.css +128 -0
  54. package/src/utilities/sizing.css +91 -0
  55. package/src/utilities/spacing.css +130 -0
  56. package/src/utilities/typography.css +94 -0
package/arekui.css ADDED
@@ -0,0 +1,3279 @@
1
+ /*!
2
+ * ARStyle v1.4.0
3
+ * A standalone CSS framework by Andika Rekatias.
4
+ * No dependencies, no build step. Drop in one file.
5
+ *
6
+ * MIT License — see LICENSE.
7
+ */
8
+
9
+ /* ============================================================
10
+ 1. DESIGN TOKENS
11
+ ============================================================ */
12
+ :root {
13
+ --ar-font-sans:
14
+ system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial,
15
+ sans-serif;
16
+ --ar-font-serif: "IM Fell English", Georgia, "Times New Roman", serif;
17
+ --ar-font-mono:
18
+ ui-monospace, SFMono-Regular, "Cascadia Code", Consolas, "Courier New",
19
+ monospace;
20
+ --ar-base-font: var(--ar-font-serif);
21
+
22
+ --ar-s-0: 0;
23
+ --ar-s-1: 0.25rem;
24
+ --ar-s-2: 0.5rem;
25
+ --ar-s-3: 0.75rem;
26
+ --ar-s-4: 1rem;
27
+ --ar-s-5: 1.25rem;
28
+ --ar-s-6: 1.5rem;
29
+ --ar-s-8: 2rem;
30
+ --ar-s-10: 2.5rem;
31
+ --ar-s-12: 3rem;
32
+ --ar-s-16: 4rem;
33
+ --ar-s-20: 5rem;
34
+
35
+ --ar-radius-field: 0.25rem;
36
+ --ar-radius-box: 0.5rem;
37
+ --ar-radius-selector: 2rem;
38
+ --ar-radius-pill: 9999px;
39
+
40
+ --ar-border-width: 1px;
41
+
42
+ --ar-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
43
+ --ar-shadow-md:
44
+ 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
45
+ --ar-shadow-lg:
46
+ 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
47
+ --ar-shadow-xl:
48
+ 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
49
+ --ar-shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
50
+
51
+ /* Relative to this stylesheet — override the token if you serve
52
+ arekui.css from another path or want a different texture. */
53
+ --ar-texture: url("assets/img/grunge-wall-texture-freepick-kues1.webp");
54
+
55
+ --ar-gray-50: #fafafa;
56
+ --ar-gray-100: #f5f5f5;
57
+ --ar-gray-200: #e5e5e5;
58
+ --ar-gray-300: #d4d4d4;
59
+ --ar-gray-400: #a3a3a3;
60
+ --ar-gray-500: #737373;
61
+ --ar-gray-600: #525252;
62
+ --ar-gray-700: #404040;
63
+ --ar-gray-800: #262626;
64
+ --ar-gray-900: #171717;
65
+
66
+ /* Dark palette — single source of truth shared by
67
+ html[data-theme="dark"] and the prefers-color-scheme fallback. */
68
+ --ar-dark-base-100: oklch(25.33% 0.016 252.42);
69
+ --ar-dark-base-200: oklch(23.26% 0.014 253.1);
70
+ --ar-dark-base-300: oklch(21.15% 0.012 254.09);
71
+ --ar-dark-base-content: oklch(97.807% 0.029 256.847);
72
+ --ar-dark-primary: oklch(58% 0.233 277.117);
73
+ --ar-dark-primary-content: oklch(96% 0.018 272.314);
74
+ --ar-dark-secondary: oklch(65% 0.241 354.308);
75
+ --ar-dark-secondary-content: oklch(94% 0.028 342.258);
76
+ --ar-dark-accent: oklch(77% 0.152 181.912);
77
+ --ar-dark-accent-content: oklch(38% 0.063 188.416);
78
+ --ar-dark-neutral: oklch(14% 0.005 285.823);
79
+ --ar-dark-neutral-content: oklch(92% 0.004 286.32);
80
+ --ar-dark-info: oklch(74% 0.16 232.661);
81
+ --ar-dark-info-content: oklch(29% 0.066 243.157);
82
+ --ar-dark-success: oklch(76% 0.177 163.223);
83
+ --ar-dark-success-content: oklch(37% 0.077 168.94);
84
+ --ar-dark-warning: oklch(82% 0.189 84.429);
85
+ --ar-dark-warning-content: oklch(41% 0.112 45.904);
86
+ --ar-dark-error: oklch(71% 0.194 13.428);
87
+ --ar-dark-error-content: oklch(27% 0.105 12.094);
88
+ --ar-dark-bg-img-fill: rgb(152 159 171 / 0.3);
89
+ --ar-dark-desc-grad: linear-gradient(
90
+ to left,
91
+ var(--ar-dark-base-200) 50%,
92
+ #fafafa 50%
93
+ )
94
+ right;
95
+ --ar-dark-arc: #333333;
96
+ --ar-dark-gray-50: #1a1a1a;
97
+ --ar-dark-gray-100: #262626;
98
+ --ar-dark-gray-200: #333333;
99
+ --ar-dark-gray-300: #444444;
100
+ --ar-dark-gray-400: #999999;
101
+ --ar-dark-gray-500: #aaaaaa;
102
+ --ar-dark-gray-600: #bbbbbb;
103
+ --ar-dark-gray-700: #cccccc;
104
+ --ar-dark-gray-800: #dddddd;
105
+ --ar-dark-gray-900: #eeeeee;
106
+ --ar-dark-base-content-80: oklch(97.807% 0.029 256.847 / 0.8);
107
+
108
+ /* --------------------------------------------------------
109
+ NEOBRUTALISM palette — single source of truth.
110
+ Referenced by html[data-theme="neo"] below.
111
+ -------------------------------------------------------- */
112
+ --ar-neo-base-100: #ffffff;
113
+ --ar-neo-base-200: #f8f8f8;
114
+ --ar-neo-base-300: #e8e8e8;
115
+ --ar-neo-base-content: #1e293b;
116
+ --ar-neo-base-content-80: rgb(30 41 59 / 0.8);
117
+ --ar-neo-primary: #00aeef;
118
+ --ar-neo-primary-content: #ffffff;
119
+ --ar-neo-secondary: #8bc53f;
120
+ --ar-neo-secondary-content: #ffffff;
121
+ --ar-neo-accent: #ffd100;
122
+ --ar-neo-accent-content: #1e293b;
123
+ --ar-neo-neutral: #1e293b;
124
+ --ar-neo-neutral-content: #ffffff;
125
+ --ar-neo-info: #00aeef;
126
+ --ar-neo-info-content: #ffffff;
127
+ --ar-neo-success: #8bc53f;
128
+ --ar-neo-success-content: #ffffff;
129
+ --ar-neo-warning: #ffd100;
130
+ --ar-neo-warning-content: #1e293b;
131
+ --ar-neo-error: #e4002b;
132
+ --ar-neo-error-content: #ffffff;
133
+ --ar-neo-bg-img-fill: #1e293b;
134
+ --ar-neo-desc-grad: linear-gradient(to left, #f8f8f8 50%, #1e293b 50%) right;
135
+ --ar-neo-arc: #ffffff;
136
+ --ar-neo-gray-50: #f8f8f8;
137
+ --ar-neo-gray-100: #f0f0f0;
138
+ --ar-neo-gray-200: #e0e0e0;
139
+ --ar-neo-gray-300: #cccccc;
140
+ --ar-neo-gray-400: #999999;
141
+ --ar-neo-gray-500: #777777;
142
+ --ar-neo-gray-600: #555555;
143
+ --ar-neo-gray-700: #333333;
144
+ --ar-neo-gray-800: #222222;
145
+ --ar-neo-gray-900: #111111;
146
+
147
+ /* Neobrutalism-specific tokens */
148
+ --ar-neo-border-width: 3px;
149
+ --ar-neo-border-color: #1e293b;
150
+ --ar-neo-shadow-sm: 2px 2px 0px 0px #1e293b;
151
+ --ar-neo-shadow-md: 4px 4px 0px 0px #1e293b;
152
+ --ar-neo-shadow-lg: 6px 6px 0px 0px #1e293b;
153
+ --ar-neo-shadow-xl: 8px 8px 0px 0px #1e293b;
154
+ --ar-neo-shadow-2xl: 12px 12px 0px 0px #1e293b;
155
+ }
156
+
157
+ html[data-theme="light"] {
158
+ color-scheme: light;
159
+ --ar-base-100: oklch(100% 0 0);
160
+ --ar-base-200: oklch(97% 0 0);
161
+ --ar-base-300: oklch(94% 0 0);
162
+ --ar-base-content: oklch(0% 0 0);
163
+ --ar-base-content-80: oklch(0% 0 0 / 0.8);
164
+ --ar-primary: oklch(15.906% 0 0);
165
+ --ar-primary-content: oklch(100% 0 0);
166
+ --ar-secondary: oklch(21.455% 0.001 17.278);
167
+ --ar-secondary-content: oklch(100% 0 0);
168
+ --ar-accent: oklch(26.861% 0 0);
169
+ --ar-accent-content: oklch(100% 0 0);
170
+ --ar-neutral: oklch(0% 0 0);
171
+ --ar-neutral-content: oklch(100% 0 0);
172
+ --ar-info: oklch(79.54% 0.103 205.9);
173
+ --ar-info-content: oklch(15.908% 0.02 205.9);
174
+ --ar-success: oklch(90.13% 0.153 164.14);
175
+ --ar-success-content: oklch(18.026% 0.03 164.14);
176
+ --ar-warning: oklch(88.37% 0.135 79.94);
177
+ --ar-warning-content: oklch(17.674% 0.027 79.94);
178
+ --ar-error: oklch(78.66% 0.15 28.47);
179
+ --ar-error-content: oklch(15.732% 0.03 28.47);
180
+ --ar-bg-img-fill: transparent;
181
+ --ar-desc-grad: linear-gradient(
182
+ to left,
183
+ var(--ar-base-200) 50%,
184
+ var(--ar-neutral) 50%
185
+ )
186
+ right;
187
+ --ar-arc: #fafafa;
188
+ }
189
+
190
+ html[data-theme="dark"] {
191
+ color-scheme: dark;
192
+ --ar-base-100: var(--ar-dark-base-100);
193
+ --ar-base-200: var(--ar-dark-base-200);
194
+ --ar-base-300: var(--ar-dark-base-300);
195
+ --ar-base-content: var(--ar-dark-base-content);
196
+ --ar-base-content-80: var(--ar-dark-base-content-80);
197
+ --ar-primary: var(--ar-dark-primary);
198
+ --ar-primary-content: var(--ar-dark-primary-content);
199
+ --ar-secondary: var(--ar-dark-secondary);
200
+ --ar-secondary-content: var(--ar-dark-secondary-content);
201
+ --ar-accent: var(--ar-dark-accent);
202
+ --ar-accent-content: var(--ar-dark-accent-content);
203
+ --ar-neutral: var(--ar-dark-neutral);
204
+ --ar-neutral-content: var(--ar-dark-neutral-content);
205
+ --ar-info: var(--ar-dark-info);
206
+ --ar-info-content: var(--ar-dark-info-content);
207
+ --ar-success: var(--ar-dark-success);
208
+ --ar-success-content: var(--ar-dark-success-content);
209
+ --ar-warning: var(--ar-dark-warning);
210
+ --ar-warning-content: var(--ar-dark-warning-content);
211
+ --ar-error: var(--ar-dark-error);
212
+ --ar-error-content: var(--ar-dark-error-content);
213
+ --ar-bg-img-fill: var(--ar-dark-bg-img-fill);
214
+ --ar-desc-grad: var(--ar-dark-desc-grad);
215
+ --ar-arc: var(--ar-dark-arc);
216
+ --ar-gray-50: var(--ar-dark-gray-50);
217
+ --ar-gray-100: var(--ar-dark-gray-100);
218
+ --ar-gray-200: var(--ar-dark-gray-200);
219
+ --ar-gray-300: var(--ar-dark-gray-300);
220
+ --ar-gray-400: var(--ar-dark-gray-400);
221
+ --ar-gray-500: var(--ar-dark-gray-500);
222
+ --ar-gray-600: var(--ar-dark-gray-600);
223
+ --ar-gray-700: var(--ar-dark-gray-700);
224
+ --ar-gray-800: var(--ar-dark-gray-800);
225
+ --ar-gray-900: var(--ar-dark-gray-900);
226
+ }
227
+
228
+ @media (prefers-color-scheme: dark) {
229
+ html:not([data-theme]) {
230
+ color-scheme: dark;
231
+ --ar-base-100: var(--ar-dark-base-100);
232
+ --ar-base-200: var(--ar-dark-base-200);
233
+ --ar-base-300: var(--ar-dark-base-300);
234
+ --ar-base-content: var(--ar-dark-base-content);
235
+ --ar-base-content-80: var(--ar-dark-base-content-80);
236
+ --ar-primary: var(--ar-dark-primary);
237
+ --ar-primary-content: var(--ar-dark-primary-content);
238
+ --ar-secondary: var(--ar-dark-secondary);
239
+ --ar-secondary-content: var(--ar-dark-secondary-content);
240
+ --ar-accent: var(--ar-dark-accent);
241
+ --ar-accent-content: var(--ar-dark-accent-content);
242
+ --ar-neutral: var(--ar-dark-neutral);
243
+ --ar-neutral-content: var(--ar-dark-neutral-content);
244
+ --ar-info: var(--ar-dark-info);
245
+ --ar-info-content: var(--ar-dark-info-content);
246
+ --ar-success: var(--ar-dark-success);
247
+ --ar-success-content: var(--ar-dark-success-content);
248
+ --ar-warning: var(--ar-dark-warning);
249
+ --ar-warning-content: var(--ar-dark-warning-content);
250
+ --ar-error: var(--ar-dark-error);
251
+ --ar-error-content: var(--ar-dark-error-content);
252
+ --ar-bg-img-fill: var(--ar-dark-bg-img-fill);
253
+ --ar-desc-grad: var(--ar-dark-desc-grad);
254
+ --ar-arc: var(--ar-dark-arc);
255
+ --ar-gray-50: var(--ar-dark-gray-50);
256
+ --ar-gray-100: var(--ar-dark-gray-100);
257
+ --ar-gray-200: var(--ar-dark-gray-200);
258
+ --ar-gray-300: var(--ar-dark-gray-300);
259
+ --ar-gray-400: var(--ar-dark-gray-400);
260
+ --ar-gray-500: var(--ar-dark-gray-500);
261
+ --ar-gray-600: var(--ar-dark-gray-600);
262
+ --ar-gray-700: var(--ar-dark-gray-700);
263
+ --ar-gray-800: var(--ar-dark-gray-800);
264
+ --ar-gray-900: var(--ar-dark-gray-900);
265
+ }
266
+ }
267
+
268
+ html[data-theme="neo"] {
269
+ color-scheme: light;
270
+ --ar-base-100: var(--ar-neo-base-100);
271
+ --ar-base-200: var(--ar-neo-base-200);
272
+ --ar-base-300: var(--ar-neo-base-300);
273
+ --ar-base-content: var(--ar-neo-base-content);
274
+ --ar-base-content-80: var(--ar-neo-base-content-80);
275
+ --ar-primary: var(--ar-neo-primary);
276
+ --ar-primary-content: var(--ar-neo-primary-content);
277
+ --ar-secondary: var(--ar-neo-secondary);
278
+ --ar-secondary-content: var(--ar-neo-secondary-content);
279
+ --ar-accent: var(--ar-neo-accent);
280
+ --ar-accent-content: var(--ar-neo-accent-content);
281
+ --ar-neutral: var(--ar-neo-neutral);
282
+ --ar-neutral-content: var(--ar-neo-neutral-content);
283
+ --ar-info: var(--ar-neo-info);
284
+ --ar-info-content: var(--ar-neo-info-content);
285
+ --ar-success: var(--ar-neo-success);
286
+ --ar-success-content: var(--ar-neo-success-content);
287
+ --ar-warning: var(--ar-neo-warning);
288
+ --ar-warning-content: var(--ar-neo-warning-content);
289
+ --ar-error: var(--ar-neo-error);
290
+ --ar-error-content: var(--ar-neo-error-content);
291
+ --ar-bg-img-fill: var(--ar-neo-bg-img-fill);
292
+ --ar-desc-grad: var(--ar-neo-desc-grad);
293
+ --ar-arc: var(--ar-neo-arc);
294
+ --ar-gray-50: var(--ar-neo-gray-50);
295
+ --ar-gray-100: var(--ar-neo-gray-100);
296
+ --ar-gray-200: var(--ar-neo-gray-200);
297
+ --ar-gray-300: var(--ar-neo-gray-300);
298
+ --ar-gray-400: var(--ar-neo-gray-400);
299
+ --ar-gray-500: var(--ar-neo-gray-500);
300
+ --ar-gray-600: var(--ar-neo-gray-600);
301
+ --ar-gray-700: var(--ar-neo-gray-700);
302
+ --ar-gray-800: var(--ar-neo-gray-800);
303
+ --ar-gray-900: var(--ar-neo-gray-900);
304
+ /* Override design tokens for neobrutalism */
305
+ --ar-border-width: var(--ar-neo-border-width);
306
+ --ar-radius-field: 0.5rem;
307
+ --ar-radius-box: 0.75rem;
308
+ --ar-shadow-sm: var(--ar-neo-shadow-sm);
309
+ --ar-shadow-md: var(--ar-neo-shadow-md);
310
+ --ar-shadow-lg: var(--ar-neo-shadow-lg);
311
+ --ar-shadow-xl: var(--ar-neo-shadow-xl);
312
+ --ar-shadow-2xl: var(--ar-neo-shadow-2xl);
313
+ --ar-base-font: var(--ar-font-sans);
314
+ }
315
+
316
+ /* ============================================================
317
+ 2. BASE / RESET
318
+ ============================================================ */
319
+ *,
320
+ *::before,
321
+ *::after {
322
+ box-sizing: border-box;
323
+ }
324
+
325
+ body {
326
+ margin: 0;
327
+ font-family: var(--ar-base-font);
328
+ background: var(--ar-base-100);
329
+ color: var(--ar-base-content);
330
+ line-height: 1.5;
331
+ -webkit-font-smoothing: antialiased;
332
+ }
333
+
334
+ h1,
335
+ h2,
336
+ h3,
337
+ h4,
338
+ h5,
339
+ h6 {
340
+ margin: 0;
341
+ line-height: 1.2;
342
+ }
343
+
344
+ p {
345
+ margin: 0;
346
+ }
347
+
348
+ a {
349
+ color: var(--ar-primary);
350
+ text-decoration: none;
351
+ }
352
+
353
+ img,
354
+ svg,
355
+ video,
356
+ canvas {
357
+ max-width: 100%;
358
+ height: auto;
359
+ display: block;
360
+ }
361
+
362
+ button,
363
+ input,
364
+ select,
365
+ textarea {
366
+ font: inherit;
367
+ }
368
+
369
+ pre,
370
+ code {
371
+ white-space: pre-wrap;
372
+ word-break: break-word;
373
+ overflow-x: auto;
374
+ font-family: var(--ar-font-mono);
375
+ }
376
+
377
+ :focus-visible {
378
+ outline: 2px solid var(--ar-primary);
379
+ outline-offset: 2px;
380
+ }
381
+
382
+ .ar-scroll-smooth {
383
+ scroll-behavior: smooth;
384
+ }
385
+
386
+ /* ============================================================
387
+ 3. BUTTONS
388
+ ============================================================ */
389
+ .ar-btn {
390
+ display: inline-flex;
391
+ align-items: center;
392
+ justify-content: center;
393
+ gap: var(--ar-s-2);
394
+ border: var(--ar-border-width) solid transparent;
395
+ border-radius: var(--ar-radius-field);
396
+ padding: 0.5rem 1rem;
397
+ font-family: var(--ar-font-sans);
398
+ font-size: 0.875rem;
399
+ font-weight: 600;
400
+ line-height: 1.25;
401
+ cursor: pointer;
402
+ background: var(--ar-base-200);
403
+ color: var(--ar-base-content);
404
+ text-decoration: none;
405
+ transition: all 0.2s ease-out;
406
+ }
407
+ .ar-btn:hover {
408
+ background: var(--ar-base-300);
409
+ }
410
+ .ar-btn:active {
411
+ transform: scale(0.97);
412
+ }
413
+ .ar-btn-primary {
414
+ background: var(--ar-primary);
415
+ color: var(--ar-primary-content);
416
+ }
417
+ .ar-btn-primary:hover {
418
+ background: var(--ar-neutral);
419
+ }
420
+ .ar-btn-outline {
421
+ background: transparent;
422
+ border-color: var(--ar-base-content);
423
+ color: var(--ar-base-content);
424
+ }
425
+ .ar-btn-outline:hover {
426
+ background: var(--ar-base-content);
427
+ color: var(--ar-base-100);
428
+ }
429
+ .ar-btn-ghost {
430
+ background: transparent;
431
+ color: var(--ar-base-content);
432
+ }
433
+ .ar-btn-ghost:hover {
434
+ background: var(--ar-base-200);
435
+ }
436
+ .ar-btn-neutral {
437
+ background: var(--ar-neutral);
438
+ color: var(--ar-neutral-content);
439
+ }
440
+ .ar-btn-neutral:hover {
441
+ opacity: 0.85;
442
+ }
443
+ .ar-btn-base-200 {
444
+ background: var(--ar-base-200);
445
+ color: var(--ar-base-content);
446
+ }
447
+ .ar-btn-circle {
448
+ border-radius: var(--ar-radius-pill);
449
+ padding: 0.5rem;
450
+ width: 2.5rem;
451
+ height: 2.5rem;
452
+ }
453
+ .ar-btn-xs {
454
+ font-size: 0.7rem;
455
+ padding: 0.25rem 0.5rem;
456
+ }
457
+ .ar-btn-sm {
458
+ font-size: 0.8rem;
459
+ padding: 0.375rem 0.75rem;
460
+ }
461
+ .ar-btn-lg {
462
+ font-size: 1.125rem;
463
+ padding: 0.75rem 1.5rem;
464
+ }
465
+ .ar-btn-block {
466
+ display: flex;
467
+ width: 100%;
468
+ }
469
+ .ar-btn-disabled,
470
+ .ar-btn[disabled] {
471
+ opacity: 0.5;
472
+ pointer-events: none;
473
+ }
474
+ .ar-btn-loading {
475
+ pointer-events: none;
476
+ }
477
+ .ar-btn-loading::after {
478
+ content: "";
479
+ width: 1rem;
480
+ height: 1rem;
481
+ border: 2px solid currentColor;
482
+ border-right-color: transparent;
483
+ border-radius: var(--ar-radius-pill);
484
+ animation: ar-spin 0.7s linear infinite;
485
+ }
486
+ @keyframes ar-spin {
487
+ to {
488
+ transform: rotate(360deg);
489
+ }
490
+ }
491
+
492
+ /* ============================================================
493
+ 4. NAVBAR
494
+ ============================================================ */
495
+ .ar-navbar {
496
+ display: flex;
497
+ align-items: center;
498
+ justify-content: space-between;
499
+ gap: var(--ar-s-4);
500
+ padding: var(--ar-s-2) var(--ar-s-4);
501
+ background: var(--ar-base-100);
502
+ border-bottom: var(--ar-border-width) solid var(--ar-base-300);
503
+ }
504
+ .ar-navbar-start {
505
+ display: flex;
506
+ align-items: center;
507
+ gap: var(--ar-s-2);
508
+ flex: 1;
509
+ }
510
+ .ar-navbar-center {
511
+ display: none;
512
+ align-items: center;
513
+ gap: var(--ar-s-2);
514
+ }
515
+ .ar-navbar-end {
516
+ display: flex;
517
+ align-items: center;
518
+ gap: var(--ar-s-2);
519
+ }
520
+ @media (min-width: 1024px) {
521
+ .ar-navbar-center {
522
+ display: flex;
523
+ }
524
+ }
525
+ .ar-navbar-brand {
526
+ font-size: 1.875rem;
527
+ font-weight: 400;
528
+ color: var(--ar-base-content);
529
+ text-decoration: none;
530
+ }
531
+
532
+ /* ============================================================
533
+ 5. MENU & DROPDOWN
534
+ ============================================================ */
535
+ .ar-menu {
536
+ display: flex;
537
+ flex-direction: column;
538
+ list-style: none;
539
+ margin: 0;
540
+ padding: var(--ar-s-2);
541
+ background: var(--ar-base-100);
542
+ }
543
+ .ar-menu li > a {
544
+ display: block;
545
+ padding: 0.5rem 0.75rem;
546
+ border-radius: var(--ar-radius-field);
547
+ color: var(--ar-base-content);
548
+ text-decoration: none;
549
+ }
550
+ .ar-menu li > a:hover {
551
+ background: var(--ar-base-200);
552
+ }
553
+ .ar-menu-horizontal {
554
+ flex-direction: row;
555
+ align-items: center;
556
+ gap: var(--ar-s-2);
557
+ }
558
+ .ar-menu-sm li > a {
559
+ font-size: 0.8rem;
560
+ padding: 0.25rem 0.5rem;
561
+ }
562
+ .ar-dropdown {
563
+ position: relative;
564
+ display: inline-block;
565
+ }
566
+ .ar-dropdown-content {
567
+ display: none;
568
+ position: absolute;
569
+ z-index: 20;
570
+ min-width: 15rem;
571
+ margin-top: 0.75rem;
572
+ background: var(--ar-base-100);
573
+ border-radius: var(--ar-radius-box);
574
+ box-shadow: var(--ar-shadow-lg);
575
+ padding: var(--ar-s-2);
576
+ }
577
+ .ar-dropdown:hover .ar-dropdown-content,
578
+ .ar-dropdown:focus-within .ar-dropdown-content,
579
+ .ar-dropdown.ar-dropdown-open .ar-dropdown-content {
580
+ display: block;
581
+ }
582
+ .ar-dropdown-content::before {
583
+ content: "";
584
+ position: absolute;
585
+ top: -0.75rem;
586
+ left: 0;
587
+ right: 0;
588
+ height: 0.75rem;
589
+ }
590
+
591
+ /* ============================================================
592
+ 6. SWAP (theme toggle)
593
+ ============================================================ */
594
+ .ar-swap {
595
+ position: relative;
596
+ display: inline-flex;
597
+ align-items: center;
598
+ justify-content: center;
599
+ width: 2rem;
600
+ height: 2rem;
601
+ cursor: pointer;
602
+ }
603
+ .ar-swap > .ar-swap-on,
604
+ .ar-swap > .ar-swap-off {
605
+ position: absolute;
606
+ transition:
607
+ opacity 0.3s ease,
608
+ transform 0.3s ease;
609
+ }
610
+ .ar-swap > .ar-swap-on {
611
+ opacity: 0;
612
+ }
613
+ .ar-swap input:checked ~ .ar-swap-on,
614
+ .ar-swap.ar-swap-active > .ar-swap-on {
615
+ opacity: 1;
616
+ }
617
+ .ar-swap input:checked ~ .ar-swap-off,
618
+ .ar-swap.ar-swap-active > .ar-swap-off {
619
+ opacity: 0;
620
+ }
621
+ .ar-swap input {
622
+ position: absolute;
623
+ opacity: 0;
624
+ pointer-events: none;
625
+ }
626
+ .ar-swap-rotate > .ar-swap-on,
627
+ .ar-swap-rotate > .ar-swap-off {
628
+ transform: rotate(0deg);
629
+ }
630
+ .ar-swap-rotate input:checked ~ .ar-swap-on,
631
+ .ar-swap-rotate.ar-swap-active > .ar-swap-on {
632
+ transform: rotate(360deg);
633
+ }
634
+ .ar-swap-rotate input:checked ~ .ar-swap-off,
635
+ .ar-swap-rotate.ar-swap-active > .ar-swap-off {
636
+ transform: rotate(-360deg);
637
+ }
638
+
639
+ /* ============================================================
640
+ 7. CARD
641
+ ============================================================ */
642
+ .ar-card {
643
+ display: flex;
644
+ flex-direction: column;
645
+ background: var(--ar-base-100);
646
+ border-radius: var(--ar-radius-box);
647
+ box-shadow: var(--ar-shadow-md);
648
+ overflow: hidden;
649
+ }
650
+ .ar-card-body {
651
+ display: flex;
652
+ flex-direction: column;
653
+ gap: var(--ar-s-2);
654
+ padding: var(--ar-s-4);
655
+ }
656
+ .ar-card-title {
657
+ font-size: 1.125rem;
658
+ font-weight: 700;
659
+ line-height: 1.3;
660
+ }
661
+ .ar-card-figure img {
662
+ width: 100%;
663
+ object-fit: cover;
664
+ }
665
+
666
+ /* ============================================================
667
+ 8. BADGE
668
+ ============================================================ */
669
+ .ar-badge {
670
+ display: inline-flex;
671
+ align-items: center;
672
+ gap: var(--ar-s-1);
673
+ border-radius: var(--ar-radius-selector);
674
+ padding: 0.125rem 0.625rem;
675
+ font-size: 0.75rem;
676
+ font-weight: 600;
677
+ line-height: 1.5;
678
+ background: var(--ar-base-200);
679
+ color: var(--ar-base-content);
680
+ }
681
+ .ar-badge-outline {
682
+ background: transparent;
683
+ border: var(--ar-border-width) solid var(--ar-base-content);
684
+ }
685
+ .ar-badge-primary {
686
+ background: var(--ar-primary);
687
+ color: var(--ar-primary-content);
688
+ }
689
+ .ar-badge-neutral {
690
+ background: var(--ar-neutral);
691
+ color: var(--ar-neutral-content);
692
+ }
693
+ .ar-badge-sm {
694
+ font-size: 0.625rem;
695
+ padding: 0 0.5rem;
696
+ }
697
+ .ar-badge-xs {
698
+ font-size: 0.55rem;
699
+ padding: 0 0.375rem;
700
+ }
701
+
702
+ /* ============================================================
703
+ 9. MODAL
704
+ ============================================================ */
705
+ .ar-modal {
706
+ border: 0;
707
+ padding: 0;
708
+ max-width: none;
709
+ max-height: none;
710
+ width: 100%;
711
+ height: 100%;
712
+ margin: 0;
713
+ background: rgb(0 0 0 / 0.5);
714
+ display: none;
715
+ align-items: center;
716
+ justify-content: center;
717
+ }
718
+ .ar-modal[open] {
719
+ display: flex;
720
+ }
721
+ .ar-modal::backdrop {
722
+ background: rgb(0 0 0 / 0.5);
723
+ }
724
+ .ar-modal-box {
725
+ background: var(--ar-base-100);
726
+ border-radius: var(--ar-radius-box);
727
+ box-shadow: var(--ar-shadow-xl);
728
+ padding: var(--ar-s-6);
729
+ width: min(92vw, 42rem);
730
+ max-height: 90vh;
731
+ overflow-y: auto;
732
+ }
733
+ .ar-modal-backdrop {
734
+ display: contents;
735
+ }
736
+
737
+ /* ============================================================
738
+ 10. CAROUSEL
739
+ ============================================================ */
740
+ .ar-carousel {
741
+ display: flex;
742
+ overflow-x: auto;
743
+ scroll-snap-type: x mandatory;
744
+ }
745
+ .ar-carousel-item {
746
+ flex: none;
747
+ width: 100%;
748
+ scroll-snap-align: start;
749
+ }
750
+ .ar-carousel-item img {
751
+ width: 100%;
752
+ }
753
+
754
+ /* ============================================================
755
+ 11. DRAWER
756
+ ============================================================ */
757
+ .ar-drawer {
758
+ position: relative;
759
+ display: flex;
760
+ }
761
+ .ar-drawer-toggle {
762
+ appearance: none;
763
+ position: fixed;
764
+ opacity: 0;
765
+ pointer-events: none;
766
+ }
767
+ .ar-drawer-content {
768
+ flex: 1;
769
+ min-width: 0;
770
+ }
771
+ .ar-drawer-side {
772
+ position: fixed;
773
+ inset: 0;
774
+ z-index: 40;
775
+ visibility: hidden;
776
+ pointer-events: none;
777
+ }
778
+ .ar-drawer-side > * {
779
+ visibility: visible;
780
+ }
781
+ .ar-drawer-overlay {
782
+ position: absolute;
783
+ inset: 0;
784
+ background: rgb(0 0 0 / 0.5);
785
+ cursor: pointer;
786
+ opacity: 0;
787
+ transition: opacity 0.3s;
788
+ }
789
+ .ar-drawer-side .ar-menu {
790
+ position: absolute;
791
+ inset: 0 auto 0 0;
792
+ width: 20rem;
793
+ height: 100%;
794
+ overflow-y: auto;
795
+ background: var(--ar-base-100);
796
+ transform: translateX(-100%);
797
+ transition: transform 0.3s ease;
798
+ }
799
+ .ar-drawer-toggle:checked ~ .ar-drawer-side {
800
+ visibility: visible;
801
+ pointer-events: auto;
802
+ }
803
+ .ar-drawer-toggle:checked ~ .ar-drawer-side .ar-drawer-overlay {
804
+ opacity: 1;
805
+ }
806
+ .ar-drawer-toggle:checked ~ .ar-drawer-side .ar-menu {
807
+ transform: translateX(0);
808
+ }
809
+
810
+ /* ============================================================
811
+ 12. FOOTER
812
+ ============================================================ */
813
+ .ar-footer {
814
+ display: flex;
815
+ flex-direction: column;
816
+ align-items: center;
817
+ gap: var(--ar-s-4);
818
+ padding: var(--ar-s-10);
819
+ background: var(--ar-base-200);
820
+ border-top: var(--ar-border-width) solid var(--ar-base-300);
821
+ }
822
+ .ar-footer nav {
823
+ display: flex;
824
+ flex-wrap: wrap;
825
+ justify-content: center;
826
+ gap: var(--ar-s-4);
827
+ }
828
+ .ar-footer a {
829
+ color: var(--ar-base-content);
830
+ opacity: 0.8;
831
+ }
832
+ .ar-footer a:hover {
833
+ opacity: 1;
834
+ }
835
+ .ar-footer-center {
836
+ text-align: center;
837
+ }
838
+
839
+ /* ============================================================
840
+ 13. HERO
841
+ ============================================================ */
842
+ .ar-hero {
843
+ display: flex;
844
+ align-items: center;
845
+ justify-content: center;
846
+ background: var(--ar-base-200);
847
+ padding: var(--ar-s-16) var(--ar-s-6);
848
+ }
849
+ .ar-hero-content {
850
+ display: flex;
851
+ flex-direction: column;
852
+ align-items: center;
853
+ gap: var(--ar-s-6);
854
+ text-align: center;
855
+ max-width: 64rem;
856
+ }
857
+ @media (min-width: 1024px) {
858
+ .ar-hero-content {
859
+ flex-direction: row;
860
+ text-align: left;
861
+ }
862
+ }
863
+
864
+ /* ============================================================
865
+ 14. TOOLTIP
866
+ ============================================================ */
867
+ .ar-tooltip {
868
+ position: relative;
869
+ }
870
+ .ar-tooltip[data-tip]::after {
871
+ content: attr(data-tip);
872
+ position: absolute;
873
+ z-index: 30;
874
+ bottom: calc(100% + 0.5rem);
875
+ left: 50%;
876
+ transform: translateX(-50%);
877
+ padding: 0.25rem 0.625rem;
878
+ border-radius: var(--ar-radius-field);
879
+ background: var(--ar-neutral);
880
+ color: var(--ar-neutral-content);
881
+ font-size: 0.75rem;
882
+ white-space: nowrap;
883
+ opacity: 0;
884
+ pointer-events: none;
885
+ transition: opacity 0.2s;
886
+ }
887
+ .ar-tooltip:hover[data-tip]::after {
888
+ opacity: 1;
889
+ }
890
+
891
+ /* ============================================================
892
+ 15. LINK
893
+ ============================================================ */
894
+ .ar-link {
895
+ color: var(--ar-primary);
896
+ text-decoration: underline;
897
+ cursor: pointer;
898
+ }
899
+ .ar-link-hover {
900
+ text-decoration: none;
901
+ }
902
+ .ar-link-hover:hover {
903
+ text-decoration: underline;
904
+ }
905
+ .ar-desc a {
906
+ text-decoration: underline;
907
+ background: var(--ar-desc-grad);
908
+ background-size: 200%;
909
+ transition:
910
+ background-position 0.5s ease-out,
911
+ color 0.5s ease-out;
912
+ }
913
+ .ar-desc a:hover {
914
+ background-position: left;
915
+ color: var(--ar-arc);
916
+ }
917
+
918
+ /* ============================================================
919
+ 16. JOIN
920
+ ============================================================ */
921
+ .ar-join {
922
+ display: inline-flex;
923
+ align-items: stretch;
924
+ border-radius: var(--ar-radius-field);
925
+ overflow: hidden;
926
+ }
927
+ .ar-join-item:not(:first-child) {
928
+ border-left-width: 0;
929
+ }
930
+ .ar-join .ar-btn,
931
+ .ar-join-item {
932
+ border-radius: 0;
933
+ }
934
+
935
+ /* ============================================================
936
+ 17. PROSE (article typography)
937
+ ============================================================ */
938
+ .ar-prose {
939
+ font-size: 1rem;
940
+ line-height: 1.75;
941
+ max-width: 65ch;
942
+ }
943
+ .ar-prose > * + * {
944
+ margin-top: 1rem;
945
+ }
946
+ .ar-prose h1,
947
+ .ar-prose h2,
948
+ .ar-prose h3,
949
+ .ar-prose h4 {
950
+ margin-top: 1.5rem;
951
+ font-weight: 700;
952
+ }
953
+ .ar-prose h1 {
954
+ font-size: 1.75rem;
955
+ }
956
+ .ar-prose h2 {
957
+ font-size: 1.375rem;
958
+ }
959
+ .ar-prose h3 {
960
+ font-size: 1.125rem;
961
+ }
962
+ .ar-prose h4 {
963
+ font-size: 1rem;
964
+ }
965
+ .ar-prose img {
966
+ margin: 1rem auto;
967
+ border-radius: var(--ar-radius-box);
968
+ }
969
+ .ar-prose a {
970
+ text-decoration: underline;
971
+ }
972
+ .ar-prose blockquote {
973
+ margin: 1rem 0;
974
+ border-left: 4px solid var(--ar-base-300);
975
+ padding-left: 1rem;
976
+ font-style: italic;
977
+ color: var(--ar-gray-600);
978
+ }
979
+ .ar-prose ul,
980
+ .ar-prose ol {
981
+ padding-left: 1.5rem;
982
+ }
983
+ .ar-prose pre {
984
+ background: var(--ar-base-200);
985
+ border-radius: var(--ar-radius-box);
986
+ padding: 1rem;
987
+ overflow-x: auto;
988
+ }
989
+ .ar-prose code {
990
+ font-size: 0.875em;
991
+ background: var(--ar-base-200);
992
+ border-radius: var(--ar-radius-field);
993
+ padding: 0.125rem 0.375rem;
994
+ }
995
+ .ar-prose pre code {
996
+ background: transparent;
997
+ padding: 0;
998
+ }
999
+ .ar-prose table {
1000
+ width: 100%;
1001
+ border-collapse: collapse;
1002
+ font-size: 0.875rem;
1003
+ }
1004
+ .ar-prose th,
1005
+ .ar-prose td {
1006
+ border: var(--ar-border-width) solid var(--ar-base-300);
1007
+ padding: 0.5rem 0.75rem;
1008
+ }
1009
+ .ar-prose th {
1010
+ background: var(--ar-base-200);
1011
+ }
1012
+ .ar-prose hr {
1013
+ border: 0;
1014
+ border-top: var(--ar-border-width) solid var(--ar-base-300);
1015
+ margin: 1.5rem 0;
1016
+ }
1017
+
1018
+ /* ============================================================
1019
+ 18. TEXTURED TEXT & ANIMATION
1020
+ ============================================================ */
1021
+ .ar-bg-img {
1022
+ color: transparent;
1023
+ background-image: var(--ar-texture);
1024
+ background-size: cover;
1025
+ -webkit-background-clip: text;
1026
+ background-clip: text;
1027
+ -webkit-text-fill-color: var(--ar-bg-img-fill, transparent);
1028
+ }
1029
+ .ar-bounce {
1030
+ animation: ar-bounce 1s infinite;
1031
+ }
1032
+ @keyframes ar-bounce {
1033
+ 0%,
1034
+ 100% {
1035
+ transform: translateY(0);
1036
+ }
1037
+ 50% {
1038
+ transform: translateY(-0.25rem);
1039
+ }
1040
+ }
1041
+ .ar-animate-fade-in {
1042
+ animation: ar-fade-in 0.4s ease-out forwards;
1043
+ }
1044
+ @keyframes ar-fade-in {
1045
+ from {
1046
+ opacity: 0;
1047
+ transform: translateY(1.25rem);
1048
+ }
1049
+ to {
1050
+ opacity: 1;
1051
+ transform: translateY(0);
1052
+ }
1053
+ }
1054
+
1055
+ /* ============================================================
1056
+ 19. FORMS
1057
+ ============================================================ */
1058
+ .ar-fieldset {
1059
+ display: flex;
1060
+ flex-direction: column;
1061
+ gap: var(--ar-s-2);
1062
+ border: 0;
1063
+ margin: 0;
1064
+ padding: 0;
1065
+ }
1066
+ .ar-label {
1067
+ display: flex;
1068
+ align-items: center;
1069
+ gap: var(--ar-s-2);
1070
+ font-weight: 600;
1071
+ }
1072
+ .ar-input,
1073
+ .ar-select,
1074
+ .ar-textarea {
1075
+ width: 100%;
1076
+ border: var(--ar-border-width) solid var(--ar-base-300);
1077
+ border-radius: var(--ar-radius-field);
1078
+ background: var(--ar-base-100);
1079
+ color: var(--ar-base-content);
1080
+ padding: 0.5rem 0.75rem;
1081
+ }
1082
+ .ar-input:focus,
1083
+ .ar-select:focus,
1084
+ .ar-textarea:focus {
1085
+ outline: 2px solid var(--ar-primary);
1086
+ outline-offset: 0;
1087
+ border-color: transparent;
1088
+ }
1089
+ .ar-checkbox,
1090
+ .ar-radio {
1091
+ accent-color: var(--ar-primary);
1092
+ width: 1.125rem;
1093
+ height: 1.125rem;
1094
+ }
1095
+ .ar-toggle {
1096
+ position: relative;
1097
+ appearance: none;
1098
+ width: 2.75rem;
1099
+ height: 1.5rem;
1100
+ border-radius: var(--ar-radius-pill);
1101
+ background: var(--ar-base-300);
1102
+ cursor: pointer;
1103
+ transition: background 0.2s;
1104
+ }
1105
+ .ar-toggle::after {
1106
+ content: "";
1107
+ position: absolute;
1108
+ top: 0.1875rem;
1109
+ left: 0.1875rem;
1110
+ width: 1.125rem;
1111
+ height: 1.125rem;
1112
+ border-radius: var(--ar-radius-pill);
1113
+ background: var(--ar-base-100);
1114
+ transition: transform 0.2s;
1115
+ }
1116
+ .ar-toggle:checked {
1117
+ background: var(--ar-primary);
1118
+ }
1119
+ .ar-toggle:checked::after {
1120
+ transform: translateX(1.25rem);
1121
+ }
1122
+ .ar-range {
1123
+ accent-color: var(--ar-primary);
1124
+ width: 100%;
1125
+ }
1126
+
1127
+ /* ============================================================
1128
+ 20. TABLE
1129
+ ============================================================ */
1130
+ .ar-table {
1131
+ width: 100%;
1132
+ border-collapse: collapse;
1133
+ font-size: 0.875rem;
1134
+ }
1135
+ .ar-table th,
1136
+ .ar-table td {
1137
+ border-bottom: var(--ar-border-width) solid var(--ar-base-300);
1138
+ padding: 0.625rem 0.75rem;
1139
+ text-align: left;
1140
+ }
1141
+ .ar-table th {
1142
+ font-weight: 700;
1143
+ background: var(--ar-base-200);
1144
+ }
1145
+ .ar-table-striped tbody tr:nth-child(odd) {
1146
+ background: var(--ar-base-200);
1147
+ }
1148
+ .ar-table-hover tbody tr:hover {
1149
+ background: var(--ar-base-300);
1150
+ }
1151
+
1152
+ /* ============================================================
1153
+ 21. ALERT
1154
+ ============================================================ */
1155
+ .ar-alert {
1156
+ display: flex;
1157
+ align-items: center;
1158
+ gap: var(--ar-s-3);
1159
+ border-radius: var(--ar-radius-box);
1160
+ padding: var(--ar-s-4);
1161
+ background: var(--ar-base-200);
1162
+ color: var(--ar-base-content);
1163
+ }
1164
+ .ar-alert-info {
1165
+ background: var(--ar-info);
1166
+ color: var(--ar-info-content);
1167
+ }
1168
+ .ar-alert-success {
1169
+ background: var(--ar-success);
1170
+ color: var(--ar-success-content);
1171
+ }
1172
+ .ar-alert-warning {
1173
+ background: var(--ar-warning);
1174
+ color: var(--ar-warning-content);
1175
+ }
1176
+ .ar-alert-error {
1177
+ background: var(--ar-error);
1178
+ color: var(--ar-error-content);
1179
+ }
1180
+
1181
+ /* ============================================================
1182
+ 22. TABS
1183
+ ============================================================ */
1184
+ .ar-tabs {
1185
+ display: flex;
1186
+ flex-wrap: wrap;
1187
+ gap: var(--ar-s-1);
1188
+ border-bottom: var(--ar-border-width) solid var(--ar-base-300);
1189
+ }
1190
+ .ar-tab {
1191
+ padding: 0.625rem 1rem;
1192
+ cursor: pointer;
1193
+ border: 0;
1194
+ background: transparent;
1195
+ color: var(--ar-gray-600);
1196
+ border-bottom: 2px solid transparent;
1197
+ font-family: var(--ar-font-sans);
1198
+ font-weight: 600;
1199
+ }
1200
+ .ar-tab:hover {
1201
+ color: var(--ar-base-content);
1202
+ }
1203
+ .ar-tab-active {
1204
+ color: var(--ar-primary);
1205
+ border-bottom-color: var(--ar-primary);
1206
+ }
1207
+
1208
+ /* ============================================================
1209
+ 23. ACCORDION
1210
+ ============================================================ */
1211
+ .ar-accordion {
1212
+ border: var(--ar-border-width) solid var(--ar-base-300);
1213
+ border-radius: var(--ar-radius-box);
1214
+ overflow: hidden;
1215
+ }
1216
+ .ar-accordion details {
1217
+ border-top: var(--ar-border-width) solid var(--ar-base-300);
1218
+ }
1219
+ .ar-accordion details:first-child {
1220
+ border-top: 0;
1221
+ }
1222
+ .ar-accordion summary {
1223
+ list-style: none;
1224
+ cursor: pointer;
1225
+ padding: 1rem;
1226
+ font-weight: 600;
1227
+ display: flex;
1228
+ justify-content: space-between;
1229
+ align-items: center;
1230
+ }
1231
+ .ar-accordion summary::-webkit-details-marker {
1232
+ display: none;
1233
+ }
1234
+ .ar-accordion summary::after {
1235
+ content: "+";
1236
+ font-size: 1.25rem;
1237
+ }
1238
+ .ar-accordion details[open] summary::after {
1239
+ content: "\2212";
1240
+ }
1241
+ .ar-accordion .ar-accordion-body {
1242
+ padding: 0 1rem 1rem;
1243
+ }
1244
+
1245
+ /* ============================================================
1246
+ 24. PROGRESS
1247
+ ============================================================ */
1248
+ .ar-progress {
1249
+ appearance: none;
1250
+ width: 100%;
1251
+ height: 1rem;
1252
+ border-radius: var(--ar-radius-pill);
1253
+ border: 0;
1254
+ overflow: hidden;
1255
+ background: var(--ar-base-300);
1256
+ }
1257
+ .ar-progress::-webkit-progress-bar {
1258
+ background: var(--ar-base-300);
1259
+ }
1260
+ .ar-progress::-webkit-progress-value {
1261
+ background: var(--ar-primary);
1262
+ }
1263
+ .ar-progress::-moz-progress-bar {
1264
+ background: var(--ar-primary);
1265
+ }
1266
+
1267
+ /* ============================================================
1268
+ 25. TIMELINE
1269
+ ============================================================ */
1270
+ .ar-timeline {
1271
+ display: flex;
1272
+ flex-direction: column;
1273
+ gap: var(--ar-s-4);
1274
+ padding-left: 0;
1275
+ list-style: none;
1276
+ }
1277
+ .ar-timeline-item {
1278
+ position: relative;
1279
+ padding-left: var(--ar-s-8);
1280
+ }
1281
+ .ar-timeline-item::before {
1282
+ content: "";
1283
+ position: absolute;
1284
+ left: 0.375rem;
1285
+ top: 0.25rem;
1286
+ width: 0.75rem;
1287
+ height: 0.75rem;
1288
+ border-radius: var(--ar-radius-pill);
1289
+ background: var(--ar-primary);
1290
+ }
1291
+ .ar-timeline-item::after {
1292
+ content: "";
1293
+ position: absolute;
1294
+ left: 0.65625rem;
1295
+ top: 1.25rem;
1296
+ bottom: -1.5rem;
1297
+ width: 2px;
1298
+ background: var(--ar-base-300);
1299
+ }
1300
+ .ar-timeline-item:last-child::after {
1301
+ display: none;
1302
+ }
1303
+
1304
+ /* ============================================================
1305
+ 26. DIVIDER & STEPPER & AVATAR
1306
+ ============================================================ */
1307
+ .ar-divider {
1308
+ display: flex;
1309
+ align-items: center;
1310
+ gap: var(--ar-s-3);
1311
+ color: var(--ar-gray-600);
1312
+ margin: var(--ar-s-4) 0;
1313
+ }
1314
+ .ar-divider::before,
1315
+ .ar-divider::after {
1316
+ content: "";
1317
+ flex: 1;
1318
+ height: var(--ar-border-width);
1319
+ background: var(--ar-base-300);
1320
+ }
1321
+ .ar-stepper {
1322
+ display: flex;
1323
+ justify-content: space-between;
1324
+ gap: var(--ar-s-2);
1325
+ }
1326
+ .ar-step {
1327
+ flex: 1;
1328
+ display: flex;
1329
+ flex-direction: column;
1330
+ align-items: center;
1331
+ gap: var(--ar-s-1);
1332
+ text-align: center;
1333
+ font-size: 0.75rem;
1334
+ color: var(--ar-gray-600);
1335
+ }
1336
+ .ar-step::before {
1337
+ content: attr(data-step);
1338
+ display: flex;
1339
+ align-items: center;
1340
+ justify-content: center;
1341
+ width: 2rem;
1342
+ height: 2rem;
1343
+ border-radius: var(--ar-radius-pill);
1344
+ background: var(--ar-base-300);
1345
+ color: var(--ar-base-content);
1346
+ font-weight: 700;
1347
+ }
1348
+ .ar-step-active::before {
1349
+ background: var(--ar-primary);
1350
+ color: var(--ar-primary-content);
1351
+ }
1352
+ .ar-avatar {
1353
+ width: 3rem;
1354
+ height: 3rem;
1355
+ border-radius: var(--ar-radius-pill);
1356
+ overflow: hidden;
1357
+ }
1358
+ .ar-avatar img {
1359
+ width: 100%;
1360
+ height: 100%;
1361
+ object-fit: cover;
1362
+ }
1363
+
1364
+ /* ============================================================
1365
+ 27. TOAST / SNACKBAR
1366
+ ============================================================ */
1367
+ .ar-toast-container {
1368
+ position: fixed;
1369
+ z-index: 100;
1370
+ display: flex;
1371
+ flex-direction: column;
1372
+ gap: var(--ar-s-2);
1373
+ pointer-events: none;
1374
+ }
1375
+ .ar-toast-container[data-ar-toast-position="top-left"] {
1376
+ top: var(--ar-s-4);
1377
+ left: var(--ar-s-4);
1378
+ }
1379
+ .ar-toast-container[data-ar-toast-position="top-center"] {
1380
+ top: var(--ar-s-4);
1381
+ left: 50%;
1382
+ transform: translateX(-50%);
1383
+ }
1384
+ .ar-toast-container[data-ar-toast-position="top-right"] {
1385
+ top: var(--ar-s-4);
1386
+ right: var(--ar-s-4);
1387
+ }
1388
+ .ar-toast-container[data-ar-toast-position="bottom-left"] {
1389
+ bottom: var(--ar-s-4);
1390
+ left: var(--ar-s-4);
1391
+ }
1392
+ .ar-toast-container[data-ar-toast-position="bottom-center"] {
1393
+ bottom: var(--ar-s-4);
1394
+ left: 50%;
1395
+ transform: translateX(-50%);
1396
+ }
1397
+ .ar-toast-container[data-ar-toast-position="bottom-right"] {
1398
+ bottom: var(--ar-s-4);
1399
+ right: var(--ar-s-4);
1400
+ }
1401
+ .ar-toast {
1402
+ display: flex;
1403
+ align-items: center;
1404
+ gap: var(--ar-s-3);
1405
+ min-width: 18rem;
1406
+ max-width: 24rem;
1407
+ padding: var(--ar-s-3) var(--ar-s-4);
1408
+ border-radius: var(--ar-radius-box);
1409
+ background: var(--ar-base-100);
1410
+ color: var(--ar-base-content);
1411
+ box-shadow: var(--ar-shadow-lg);
1412
+ border: var(--ar-border-width) solid var(--ar-base-300);
1413
+ pointer-events: auto;
1414
+ opacity: 0;
1415
+ transform: translateY(-0.5rem);
1416
+ animation: ar-toast-in 0.3s ease-out forwards;
1417
+ }
1418
+ .ar-toast-container[data-ar-toast-position="bottom-left"] .ar-toast,
1419
+ .ar-toast-container[data-ar-toast-position="bottom-center"] .ar-toast,
1420
+ .ar-toast-container[data-ar-toast-position="bottom-right"] .ar-toast {
1421
+ transform: translateY(0.5rem);
1422
+ }
1423
+ .ar-toast.ar-toast-out {
1424
+ animation: ar-toast-out 0.2s ease-in forwards;
1425
+ }
1426
+ .ar-toast-info {
1427
+ background: var(--ar-info);
1428
+ color: var(--ar-info-content);
1429
+ border-color: var(--ar-info);
1430
+ }
1431
+ .ar-toast-success {
1432
+ background: var(--ar-success);
1433
+ color: var(--ar-success-content);
1434
+ border-color: var(--ar-success);
1435
+ }
1436
+ .ar-toast-warning {
1437
+ background: var(--ar-warning);
1438
+ color: var(--ar-warning-content);
1439
+ border-color: var(--ar-warning);
1440
+ }
1441
+ .ar-toast-error {
1442
+ background: var(--ar-error);
1443
+ color: var(--ar-error-content);
1444
+ border-color: var(--ar-error);
1445
+ }
1446
+ .ar-toast-icon {
1447
+ flex-shrink: 0;
1448
+ width: 1.25rem;
1449
+ height: 1.25rem;
1450
+ }
1451
+ .ar-toast-message {
1452
+ flex: 1;
1453
+ font-size: 0.875rem;
1454
+ line-height: 1.4;
1455
+ }
1456
+ .ar-toast-close {
1457
+ flex-shrink: 0;
1458
+ background: transparent;
1459
+ border: 0;
1460
+ color: inherit;
1461
+ opacity: 0.6;
1462
+ cursor: pointer;
1463
+ padding: 0;
1464
+ font-size: 1.125rem;
1465
+ line-height: 1;
1466
+ }
1467
+ .ar-toast-close:hover {
1468
+ opacity: 1;
1469
+ }
1470
+ .ar-toast-progress {
1471
+ position: absolute;
1472
+ bottom: 0;
1473
+ left: 0;
1474
+ height: 3px;
1475
+ background: currentColor;
1476
+ opacity: 0.4;
1477
+ border-radius: 0 0 var(--ar-radius-box) var(--ar-radius-box);
1478
+ animation: ar-toast-progress linear forwards;
1479
+ }
1480
+ @keyframes ar-toast-in {
1481
+ to {
1482
+ opacity: 1;
1483
+ transform: translateY(0);
1484
+ }
1485
+ }
1486
+ @keyframes ar-toast-out {
1487
+ to {
1488
+ opacity: 0;
1489
+ transform: translateY(-0.5rem);
1490
+ }
1491
+ }
1492
+ @keyframes ar-toast-progress {
1493
+ from {
1494
+ width: 100%;
1495
+ }
1496
+ to {
1497
+ width: 0%;
1498
+ }
1499
+ }
1500
+
1501
+ /* ============================================================
1502
+ 28. SKELETON LOADER
1503
+ ============================================================ */
1504
+ .ar-skeleton {
1505
+ background: var(--ar-base-300);
1506
+ border-radius: var(--ar-radius-field);
1507
+ position: relative;
1508
+ overflow: hidden;
1509
+ }
1510
+ .ar-skeleton::after {
1511
+ content: "";
1512
+ position: absolute;
1513
+ inset: 0;
1514
+ background: linear-gradient(
1515
+ 90deg,
1516
+ transparent 0%,
1517
+ oklch(100% 0 0 / 0.08) 50%,
1518
+ transparent 100%
1519
+ );
1520
+ animation: ar-skeleton-shimmer 1.5s ease-in-out infinite;
1521
+ }
1522
+ .ar-skeleton-text {
1523
+ height: 1rem;
1524
+ margin-bottom: var(--ar-s-2);
1525
+ width: 100%;
1526
+ }
1527
+ .ar-skeleton-text:last-child {
1528
+ width: 70%;
1529
+ }
1530
+ .ar-skeleton-title {
1531
+ height: 1.5rem;
1532
+ width: 60%;
1533
+ margin-bottom: var(--ar-s-3);
1534
+ }
1535
+ .ar-skeleton-avatar {
1536
+ width: 3rem;
1537
+ height: 3rem;
1538
+ border-radius: var(--ar-radius-pill);
1539
+ }
1540
+ .ar-skeleton-thumbnail {
1541
+ width: 100%;
1542
+ aspect-ratio: 16 / 9;
1543
+ }
1544
+ .ar-skeleton-btn {
1545
+ height: 2.5rem;
1546
+ width: 8rem;
1547
+ border-radius: var(--ar-radius-field);
1548
+ }
1549
+ @keyframes ar-skeleton-shimmer {
1550
+ 0% {
1551
+ transform: translateX(-100%);
1552
+ }
1553
+ 100% {
1554
+ transform: translateX(100%);
1555
+ }
1556
+ }
1557
+
1558
+ /* ============================================================
1559
+ 29. BREADCRUMB
1560
+ ============================================================ */
1561
+ .ar-breadcrumb {
1562
+ display: flex;
1563
+ flex-wrap: wrap;
1564
+ align-items: center;
1565
+ gap: var(--ar-s-1);
1566
+ list-style: none;
1567
+ margin: 0;
1568
+ padding: 0;
1569
+ font-size: 0.875rem;
1570
+ }
1571
+ .ar-breadcrumb-item {
1572
+ display: flex;
1573
+ align-items: center;
1574
+ gap: var(--ar-s-1);
1575
+ }
1576
+ .ar-breadcrumb-item a {
1577
+ color: var(--ar-gray-600);
1578
+ text-decoration: none;
1579
+ transition: color 0.2s ease;
1580
+ }
1581
+ .ar-breadcrumb-item a:hover {
1582
+ color: var(--ar-primary);
1583
+ }
1584
+ .ar-breadcrumb-item:not(:last-child)::after {
1585
+ content: "/";
1586
+ color: var(--ar-gray-400);
1587
+ margin-left: var(--ar-s-1);
1588
+ }
1589
+ .ar-breadcrumb-item:last-child {
1590
+ color: var(--ar-base-content);
1591
+ font-weight: 600;
1592
+ }
1593
+
1594
+ /* ============================================================
1595
+ 30. PAGINATION
1596
+ ============================================================ */
1597
+ .ar-pagination {
1598
+ display: flex;
1599
+ align-items: center;
1600
+ gap: var(--ar-s-1);
1601
+ list-style: none;
1602
+ margin: 0;
1603
+ padding: 0;
1604
+ }
1605
+ .ar-page-item {
1606
+ display: flex;
1607
+ align-items: center;
1608
+ justify-content: center;
1609
+ min-width: 2.25rem;
1610
+ height: 2.25rem;
1611
+ padding: 0 var(--ar-s-2);
1612
+ border-radius: var(--ar-radius-field);
1613
+ border: var(--ar-border-width) solid transparent;
1614
+ background: transparent;
1615
+ color: var(--ar-base-content);
1616
+ font-size: 0.875rem;
1617
+ font-weight: 500;
1618
+ text-decoration: none;
1619
+ cursor: pointer;
1620
+ transition: all 0.2s ease;
1621
+ }
1622
+ .ar-page-item:hover {
1623
+ background: var(--ar-base-200);
1624
+ }
1625
+ .ar-page-active {
1626
+ background: var(--ar-primary);
1627
+ color: var(--ar-primary-content);
1628
+ font-weight: 700;
1629
+ }
1630
+ .ar-page-active:hover {
1631
+ background: var(--ar-primary);
1632
+ color: var(--ar-primary-content);
1633
+ }
1634
+ .ar-page-disabled {
1635
+ opacity: 0.4;
1636
+ pointer-events: none;
1637
+ }
1638
+ .ar-page-ellipsis {
1639
+ pointer-events: none;
1640
+ color: var(--ar-gray-500);
1641
+ }
1642
+
1643
+ /* ============================================================
1644
+ 31. RATING
1645
+ ============================================================ */
1646
+ .ar-rating {
1647
+ display: inline-flex;
1648
+ gap: var(--ar-s-1);
1649
+ direction: rtl;
1650
+ }
1651
+ .ar-rating input {
1652
+ display: none;
1653
+ }
1654
+ .ar-rating label {
1655
+ cursor: pointer;
1656
+ color: var(--ar-gray-300);
1657
+ transition:
1658
+ color 0.15s ease,
1659
+ transform 0.15s ease;
1660
+ }
1661
+ .ar-rating label:hover,
1662
+ .ar-rating label:hover ~ label,
1663
+ .ar-rating input:checked ~ label {
1664
+ color: var(--ar-warning);
1665
+ }
1666
+ .ar-rating label:hover {
1667
+ transform: scale(1.15);
1668
+ }
1669
+ .ar-rating svg {
1670
+ width: 1.5rem;
1671
+ height: 1.5rem;
1672
+ fill: currentColor;
1673
+ }
1674
+ .ar-rating-readonly label {
1675
+ cursor: default;
1676
+ }
1677
+ .ar-rating-readonly label:hover,
1678
+ .ar-rating-readonly label:hover ~ label,
1679
+ .ar-rating-readonly input:checked ~ label {
1680
+ transform: none;
1681
+ }
1682
+
1683
+ /* ============================================================
1684
+ 32. CHAT BUBBLE
1685
+ ============================================================ */
1686
+ .ar-chat {
1687
+ display: flex;
1688
+ flex-direction: column;
1689
+ gap: var(--ar-s-3);
1690
+ max-width: 48rem;
1691
+ }
1692
+ .ar-chat-bubble {
1693
+ position: relative;
1694
+ padding: var(--ar-s-3) var(--ar-s-4);
1695
+ border-radius: var(--ar-radius-box);
1696
+ background: var(--ar-base-200);
1697
+ color: var(--ar-base-content);
1698
+ max-width: 80%;
1699
+ line-height: 1.5;
1700
+ word-wrap: break-word;
1701
+ }
1702
+ .ar-chat-start {
1703
+ align-self: flex-start;
1704
+ }
1705
+ .ar-chat-end {
1706
+ align-self: flex-end;
1707
+ }
1708
+ .ar-chat-start .ar-chat-bubble {
1709
+ border-bottom-left-radius: 0;
1710
+ }
1711
+ .ar-chat-end .ar-chat-bubble {
1712
+ background: var(--ar-primary);
1713
+ color: var(--ar-primary-content);
1714
+ border-bottom-right-radius: 0;
1715
+ }
1716
+ .ar-chat-avatar {
1717
+ width: 2.5rem;
1718
+ height: 2.5rem;
1719
+ border-radius: var(--ar-radius-pill);
1720
+ overflow: hidden;
1721
+ flex-shrink: 0;
1722
+ }
1723
+ .ar-chat-avatar img {
1724
+ width: 100%;
1725
+ height: 100%;
1726
+ object-fit: cover;
1727
+ }
1728
+ .ar-chat-start .ar-chat-header,
1729
+ .ar-chat-end .ar-chat-header {
1730
+ display: flex;
1731
+ align-items: center;
1732
+ gap: var(--ar-s-2);
1733
+ margin-bottom: var(--ar-s-1);
1734
+ font-size: 0.75rem;
1735
+ font-weight: 600;
1736
+ color: var(--ar-gray-600);
1737
+ }
1738
+ .ar-chat-end .ar-chat-header {
1739
+ justify-content: flex-end;
1740
+ }
1741
+ .ar-chat-footer {
1742
+ font-size: 0.7rem;
1743
+ color: var(--ar-gray-500);
1744
+ margin-top: var(--ar-s-1);
1745
+ }
1746
+ .ar-chat-start .ar-chat-footer {
1747
+ text-align: left;
1748
+ }
1749
+ .ar-chat-end .ar-chat-footer {
1750
+ text-align: right;
1751
+ }
1752
+ .ar-chat-sender {
1753
+ display: flex;
1754
+ align-items: flex-end;
1755
+ gap: var(--ar-s-2);
1756
+ }
1757
+ .ar-chat-receiver {
1758
+ display: flex;
1759
+ align-items: flex-end;
1760
+ gap: var(--ar-s-2);
1761
+ flex-direction: row-reverse;
1762
+ }
1763
+
1764
+ /* ============================================================
1765
+ 33. TAG / CHIP
1766
+ ============================================================ */
1767
+ .ar-tag {
1768
+ display: inline-flex;
1769
+ align-items: center;
1770
+ gap: var(--ar-s-1);
1771
+ padding: 0.25rem 0.75rem;
1772
+ border-radius: var(--ar-radius-pill);
1773
+ background: var(--ar-base-200);
1774
+ color: var(--ar-base-content);
1775
+ font-size: 0.8125rem;
1776
+ font-weight: 500;
1777
+ line-height: 1.4;
1778
+ white-space: nowrap;
1779
+ }
1780
+ .ar-tag-primary {
1781
+ background: var(--ar-primary);
1782
+ color: var(--ar-primary-content);
1783
+ }
1784
+ .ar-tag-secondary {
1785
+ background: var(--ar-secondary);
1786
+ color: var(--ar-secondary-content);
1787
+ }
1788
+ .ar-tag-accent {
1789
+ background: var(--ar-accent);
1790
+ color: var(--ar-accent-content);
1791
+ }
1792
+ .ar-tag-neutral {
1793
+ background: var(--ar-neutral);
1794
+ color: var(--ar-neutral-content);
1795
+ }
1796
+ .ar-tag-info {
1797
+ background: var(--ar-info);
1798
+ color: var(--ar-info-content);
1799
+ }
1800
+ .ar-tag-success {
1801
+ background: var(--ar-success);
1802
+ color: var(--ar-success-content);
1803
+ }
1804
+ .ar-tag-warning {
1805
+ background: var(--ar-warning);
1806
+ color: var(--ar-warning-content);
1807
+ }
1808
+ .ar-tag-error {
1809
+ background: var(--ar-error);
1810
+ color: var(--ar-error-content);
1811
+ }
1812
+ .ar-tag-outline {
1813
+ background: transparent;
1814
+ border: var(--ar-border-width) solid currentColor;
1815
+ }
1816
+ .ar-tag-outline.ar-tag-primary {
1817
+ color: var(--ar-primary);
1818
+ }
1819
+ .ar-tag-outline.ar-tag-secondary {
1820
+ color: var(--ar-secondary);
1821
+ }
1822
+ .ar-tag-outline.ar-tag-accent {
1823
+ color: var(--ar-accent);
1824
+ }
1825
+ .ar-tag-outline.ar-tag-neutral {
1826
+ color: var(--ar-neutral);
1827
+ }
1828
+ .ar-tag-outline.ar-tag-info {
1829
+ color: var(--ar-info);
1830
+ }
1831
+ .ar-tag-outline.ar-tag-success {
1832
+ color: var(--ar-success);
1833
+ }
1834
+ .ar-tag-outline.ar-tag-warning {
1835
+ color: var(--ar-warning);
1836
+ }
1837
+ .ar-tag-outline.ar-tag-error {
1838
+ color: var(--ar-error);
1839
+ }
1840
+ .ar-tag-lg {
1841
+ padding: 0.375rem 1rem;
1842
+ font-size: 0.875rem;
1843
+ }
1844
+ .ar-tag-sm {
1845
+ padding: 0.125rem 0.5rem;
1846
+ font-size: 0.75rem;
1847
+ }
1848
+ .ar-tag-close {
1849
+ display: inline-flex;
1850
+ align-items: center;
1851
+ justify-content: center;
1852
+ width: 1rem;
1853
+ height: 1rem;
1854
+ border-radius: var(--ar-radius-pill);
1855
+ background: transparent;
1856
+ border: 0;
1857
+ color: inherit;
1858
+ opacity: 0.6;
1859
+ cursor: pointer;
1860
+ padding: 0;
1861
+ font-size: 0.875rem;
1862
+ line-height: 1;
1863
+ }
1864
+ .ar-tag-close:hover {
1865
+ opacity: 1;
1866
+ }
1867
+
1868
+ /* ============================================================
1869
+ 34. POPOVER
1870
+ ============================================================ */
1871
+ .ar-popover {
1872
+ position: relative;
1873
+ display: inline-block;
1874
+ }
1875
+ .ar-popover-content {
1876
+ position: absolute;
1877
+ z-index: 30;
1878
+ min-width: 14rem;
1879
+ padding: var(--ar-s-3) var(--ar-s-4);
1880
+ background: var(--ar-base-100);
1881
+ color: var(--ar-base-content);
1882
+ border-radius: var(--ar-radius-box);
1883
+ box-shadow: var(--ar-shadow-lg);
1884
+ border: var(--ar-border-width) solid var(--ar-base-300);
1885
+ font-size: 0.875rem;
1886
+ line-height: 1.5;
1887
+ opacity: 0;
1888
+ visibility: hidden;
1889
+ transition:
1890
+ opacity 0.2s ease,
1891
+ visibility 0.2s ease,
1892
+ transform 0.2s ease;
1893
+ pointer-events: none;
1894
+ }
1895
+ .ar-popover-open .ar-popover-content {
1896
+ opacity: 1;
1897
+ visibility: visible;
1898
+ pointer-events: auto;
1899
+ }
1900
+ /* Placement: top (default) */
1901
+ .ar-popover-content[data-ar-placement="top"] {
1902
+ bottom: calc(100% + 0.5rem);
1903
+ left: 50%;
1904
+ transform: translateX(-50%) translateY(0.25rem);
1905
+ }
1906
+ .ar-popover-open .ar-popover-content[data-ar-placement="top"] {
1907
+ transform: translateX(-50%) translateY(0);
1908
+ }
1909
+ /* Placement: bottom */
1910
+ .ar-popover-content[data-ar-placement="bottom"] {
1911
+ top: calc(100% + 0.5rem);
1912
+ left: 50%;
1913
+ transform: translateX(-50%) translateY(-0.25rem);
1914
+ }
1915
+ .ar-popover-open .ar-popover-content[data-ar-placement="bottom"] {
1916
+ transform: translateX(-50%) translateY(0);
1917
+ }
1918
+ /* Placement: left */
1919
+ .ar-popover-content[data-ar-placement="left"] {
1920
+ right: calc(100% + 0.5rem);
1921
+ top: 50%;
1922
+ transform: translateY(-50%) translateX(0.25rem);
1923
+ }
1924
+ .ar-popover-open .ar-popover-content[data-ar-placement="left"] {
1925
+ transform: translateY(-50%) translateX(0);
1926
+ }
1927
+ /* Placement: right */
1928
+ .ar-popover-content[data-ar-placement="right"] {
1929
+ left: calc(100% + 0.5rem);
1930
+ top: 50%;
1931
+ transform: translateY(-50%) translateX(-0.25rem);
1932
+ }
1933
+ .ar-popover-open .ar-popover-content[data-ar-placement="right"] {
1934
+ transform: translateY(-50%) translateX(0);
1935
+ }
1936
+ .ar-popover-title {
1937
+ font-weight: 600;
1938
+ margin-bottom: var(--ar-s-1);
1939
+ }
1940
+
1941
+ /* ============================================================
1942
+ 35. FILE UPLOAD
1943
+ ============================================================ */
1944
+ .ar-file-upload {
1945
+ position: relative;
1946
+ display: flex;
1947
+ flex-direction: column;
1948
+ align-items: center;
1949
+ justify-content: center;
1950
+ gap: var(--ar-s-2);
1951
+ padding: var(--ar-s-8) var(--ar-s-4);
1952
+ border: 2px dashed var(--ar-base-300);
1953
+ border-radius: var(--ar-radius-box);
1954
+ background: var(--ar-base-200);
1955
+ color: var(--ar-gray-600);
1956
+ text-align: center;
1957
+ cursor: pointer;
1958
+ transition: all 0.2s ease;
1959
+ }
1960
+ .ar-file-upload:hover,
1961
+ .ar-file-upload.ar-file-upload-dragover {
1962
+ border-color: var(--ar-primary);
1963
+ background: var(--ar-base-300);
1964
+ color: var(--ar-base-content);
1965
+ }
1966
+ .ar-file-upload input[type="file"] {
1967
+ position: absolute;
1968
+ inset: 0;
1969
+ opacity: 0;
1970
+ cursor: pointer;
1971
+ }
1972
+ .ar-file-upload-icon {
1973
+ width: 2.5rem;
1974
+ height: 2.5rem;
1975
+ opacity: 0.5;
1976
+ }
1977
+ .ar-file-upload-text {
1978
+ font-size: 0.875rem;
1979
+ }
1980
+ .ar-file-upload-text strong {
1981
+ color: var(--ar-primary);
1982
+ }
1983
+ .ar-file-upload-hint {
1984
+ font-size: 0.75rem;
1985
+ opacity: 0.7;
1986
+ }
1987
+ .ar-file-upload-sm {
1988
+ padding: var(--ar-s-4) var(--ar-s-3);
1989
+ }
1990
+ .ar-file-upload-sm .ar-file-upload-icon {
1991
+ width: 1.5rem;
1992
+ height: 1.5rem;
1993
+ }
1994
+
1995
+ /* ============================================================
1996
+ 36. SCROLL TO TOP
1997
+ ============================================================ */
1998
+ .ar-scroll-top {
1999
+ position: fixed;
2000
+ bottom: var(--ar-s-6);
2001
+ right: var(--ar-s-6);
2002
+ z-index: 40;
2003
+ display: flex;
2004
+ align-items: center;
2005
+ justify-content: center;
2006
+ width: 2.75rem;
2007
+ height: 2.75rem;
2008
+ border-radius: var(--ar-radius-pill);
2009
+ background: var(--ar-primary);
2010
+ color: var(--ar-primary-content);
2011
+ border: 0;
2012
+ cursor: pointer;
2013
+ box-shadow: var(--ar-shadow-lg);
2014
+ opacity: 0;
2015
+ visibility: hidden;
2016
+ transform: translateY(0.5rem);
2017
+ transition: all 0.3s ease;
2018
+ }
2019
+ .ar-scroll-top-visible {
2020
+ opacity: 1;
2021
+ visibility: visible;
2022
+ transform: translateY(0);
2023
+ }
2024
+ .ar-scroll-top:hover {
2025
+ background: var(--ar-neutral);
2026
+ color: var(--ar-neutral-content);
2027
+ transform: translateY(-0.125rem);
2028
+ }
2029
+ .ar-scroll-top svg {
2030
+ width: 1.25rem;
2031
+ height: 1.25rem;
2032
+ }
2033
+
2034
+ /* ============================================================
2035
+ 37. NEOBRUTALISM OVERRIDES
2036
+ Activated when html[data-theme="neo"] is set.
2037
+ Hard shadows, thick borders, bold colors — zero blur.
2038
+ ============================================================ */
2039
+ html[data-theme="neo"] body {
2040
+ font-family: var(--ar-font-sans);
2041
+ }
2042
+
2043
+ /* --- Buttons (neo) --- */
2044
+ html[data-theme="neo"] .ar-btn {
2045
+ border: var(--ar-neo-border-width) solid var(--ar-neo-border-color);
2046
+ border-radius: 0.75rem;
2047
+ box-shadow: var(--ar-neo-shadow-md);
2048
+ font-family: var(--ar-font-sans);
2049
+ font-weight: 700;
2050
+ transition:
2051
+ box-shadow 0.15s ease-out,
2052
+ transform 0.15s ease-out;
2053
+ }
2054
+ html[data-theme="neo"] .ar-btn:hover {
2055
+ box-shadow: var(--ar-neo-shadow-sm);
2056
+ transform: translate(2px, 2px);
2057
+ }
2058
+ html[data-theme="neo"] .ar-btn:active {
2059
+ box-shadow: none;
2060
+ transform: translate(4px, 4px);
2061
+ }
2062
+ html[data-theme="neo"] .ar-btn-primary {
2063
+ background: var(--ar-neo-primary);
2064
+ color: var(--ar-neo-primary-content);
2065
+ }
2066
+ html[data-theme="neo"] .ar-btn-primary:hover {
2067
+ background: var(--ar-neo-primary);
2068
+ }
2069
+ html[data-theme="neo"] .ar-btn-outline {
2070
+ background: var(--ar-neo-base-100);
2071
+ border-color: var(--ar-neo-border-color);
2072
+ color: var(--ar-neo-base-content);
2073
+ }
2074
+ html[data-theme="neo"] .ar-btn-outline:hover {
2075
+ background: var(--ar-neo-base-content);
2076
+ color: var(--ar-neo-base-100);
2077
+ }
2078
+ html[data-theme="neo"] .ar-btn-ghost {
2079
+ background: transparent;
2080
+ border-color: transparent;
2081
+ box-shadow: none;
2082
+ }
2083
+ html[data-theme="neo"] .ar-btn-ghost:hover {
2084
+ background: var(--ar-neo-base-200);
2085
+ box-shadow: var(--ar-neo-shadow-sm);
2086
+ }
2087
+ html[data-theme="neo"] .ar-btn-neutral {
2088
+ background: var(--ar-neo-neutral);
2089
+ color: var(--ar-neo-neutral-content);
2090
+ }
2091
+ html[data-theme="neo"] .ar-btn-circle {
2092
+ border-radius: var(--ar-radius-pill);
2093
+ }
2094
+
2095
+ /* --- Card (neo) --- */
2096
+ html[data-theme="neo"] .ar-card {
2097
+ border: var(--ar-neo-border-width) solid var(--ar-neo-border-color);
2098
+ border-radius: 1rem;
2099
+ box-shadow: var(--ar-neo-shadow-lg);
2100
+ overflow: hidden;
2101
+ }
2102
+
2103
+ /* --- Badge (neo) --- */
2104
+ html[data-theme="neo"] .ar-badge {
2105
+ border: 2px solid var(--ar-neo-border-color);
2106
+ border-radius: var(--ar-radius-pill);
2107
+ box-shadow: 2px 2px 0px 0px var(--ar-neo-border-color);
2108
+ font-weight: 700;
2109
+ }
2110
+
2111
+ /* --- Modal (neo) --- */
2112
+ html[data-theme="neo"] .ar-modal-box {
2113
+ border: var(--ar-neo-border-width) solid var(--ar-neo-border-color);
2114
+ border-radius: 1rem;
2115
+ box-shadow: var(--ar-neo-shadow-xl);
2116
+ }
2117
+
2118
+ /* --- Alert (neo) --- */
2119
+ html[data-theme="neo"] .ar-alert {
2120
+ border: var(--ar-neo-border-width) solid var(--ar-neo-border-color);
2121
+ border-radius: 0.75rem;
2122
+ box-shadow: var(--ar-neo-shadow-md);
2123
+ font-weight: 600;
2124
+ }
2125
+
2126
+ /* --- Table (neo) --- */
2127
+ html[data-theme="neo"] .ar-table th,
2128
+ html[data-theme="neo"] .ar-table td {
2129
+ border: 2px solid var(--ar-neo-border-color);
2130
+ }
2131
+ html[data-theme="neo"] .ar-table th {
2132
+ background: var(--ar-neo-base-200);
2133
+ font-weight: 700;
2134
+ }
2135
+
2136
+ /* --- Tabs (neo) --- */
2137
+ html[data-theme="neo"] .ar-tabs {
2138
+ border-bottom: var(--ar-neo-border-width) solid var(--ar-neo-border-color);
2139
+ }
2140
+ html[data-theme="neo"] .ar-tab {
2141
+ border: 2px solid transparent;
2142
+ border-bottom: 0;
2143
+ border-radius: 0.5rem 0.5rem 0 0;
2144
+ font-weight: 700;
2145
+ font-family: var(--ar-font-sans);
2146
+ }
2147
+ html[data-theme="neo"] .ar-tab-active {
2148
+ border-color: var(--ar-neo-border-color);
2149
+ background: var(--ar-neo-base-100);
2150
+ color: var(--ar-neo-primary);
2151
+ }
2152
+
2153
+ /* --- Accordion (neo) --- */
2154
+ html[data-theme="neo"] .ar-accordion {
2155
+ border: var(--ar-neo-border-width) solid var(--ar-neo-border-color);
2156
+ border-radius: 0.75rem;
2157
+ box-shadow: var(--ar-neo-shadow-md);
2158
+ }
2159
+ html[data-theme="neo"] .ar-accordion details {
2160
+ border-top: 2px solid var(--ar-neo-border-color);
2161
+ }
2162
+ html[data-theme="neo"] .ar-accordion details:first-child {
2163
+ border-top: 0;
2164
+ }
2165
+
2166
+ /* --- Progress (neo) --- */
2167
+ html[data-theme="neo"] .ar-progress {
2168
+ border: 2px solid var(--ar-neo-border-color);
2169
+ border-radius: var(--ar-radius-pill);
2170
+ overflow: hidden;
2171
+ }
2172
+ html[data-theme="neo"] .ar-progress::-webkit-progress-value {
2173
+ background: var(--ar-neo-primary);
2174
+ }
2175
+
2176
+ /* --- Toast (neo) --- */
2177
+ html[data-theme="neo"] .ar-toast {
2178
+ border: var(--ar-neo-border-width) solid var(--ar-neo-border-color);
2179
+ border-radius: 0.75rem;
2180
+ box-shadow: var(--ar-neo-shadow-lg);
2181
+ font-weight: 600;
2182
+ }
2183
+
2184
+ /* --- Tag (neo) --- */
2185
+ html[data-theme="neo"] .ar-tag {
2186
+ border: 2px solid var(--ar-neo-border-color);
2187
+ border-radius: var(--ar-radius-pill);
2188
+ box-shadow: 2px 2px 0px 0px var(--ar-neo-border-color);
2189
+ font-weight: 600;
2190
+ }
2191
+
2192
+ /* --- Chat bubble (neo) --- */
2193
+ html[data-theme="neo"] .ar-chat-bubble {
2194
+ border: var(--ar-neo-border-width) solid var(--ar-neo-border-color);
2195
+ border-radius: 1rem;
2196
+ box-shadow: var(--ar-neo-shadow-sm);
2197
+ }
2198
+ html[data-theme="neo"] .ar-chat-end .ar-chat-bubble {
2199
+ background: var(--ar-neo-primary);
2200
+ color: var(--ar-neo-primary-content);
2201
+ border-color: var(--ar-neo-border-color);
2202
+ }
2203
+
2204
+ /* --- Dropdown (neo) --- */
2205
+ html[data-theme="neo"] .ar-dropdown-content {
2206
+ border: var(--ar-neo-border-width) solid var(--ar-neo-border-color);
2207
+ border-radius: 0.75rem;
2208
+ box-shadow: var(--ar-neo-shadow-lg);
2209
+ }
2210
+
2211
+ /* --- Popover (neo) --- */
2212
+ html[data-theme="neo"] .ar-popover-content {
2213
+ border: var(--ar-neo-border-width) solid var(--ar-neo-border-color);
2214
+ border-radius: 0.75rem;
2215
+ box-shadow: var(--ar-neo-shadow-lg);
2216
+ }
2217
+
2218
+ /* --- Tooltip (neo) --- */
2219
+ html[data-theme="neo"] .ar-tooltip[data-tip]::after {
2220
+ border: 2px solid var(--ar-neo-border-color);
2221
+ border-radius: 0.5rem;
2222
+ box-shadow: 2px 2px 0px 0px var(--ar-neo-border-color);
2223
+ font-weight: 600;
2224
+ }
2225
+
2226
+ /* --- Forms (neo) --- */
2227
+ html[data-theme="neo"] .ar-input,
2228
+ html[data-theme="neo"] .ar-select,
2229
+ html[data-theme="neo"] .ar-textarea {
2230
+ border: var(--ar-neo-border-width) solid var(--ar-neo-border-color);
2231
+ border-radius: 0.5rem;
2232
+ box-shadow: var(--ar-neo-shadow-sm);
2233
+ font-family: var(--ar-font-sans);
2234
+ transition:
2235
+ box-shadow 0.15s ease-out,
2236
+ border-color 0.15s ease-out;
2237
+ }
2238
+ html[data-theme="neo"] .ar-input:focus,
2239
+ html[data-theme="neo"] .ar-select:focus,
2240
+ html[data-theme="neo"] .ar-textarea:focus {
2241
+ border-color: var(--ar-neo-primary);
2242
+ box-shadow: var(--ar-neo-shadow-md);
2243
+ outline: 0;
2244
+ }
2245
+
2246
+ /* --- Toggle (neo) --- */
2247
+ html[data-theme="neo"] .ar-toggle {
2248
+ border: 2px solid var(--ar-neo-border-color);
2249
+ border-radius: var(--ar-radius-pill);
2250
+ }
2251
+
2252
+ /* --- Pagination (neo) --- */
2253
+ html[data-theme="neo"] .ar-page-item {
2254
+ border: 2px solid var(--ar-neo-border-color);
2255
+ border-radius: 0.5rem;
2256
+ font-weight: 700;
2257
+ box-shadow: 2px 2px 0px 0px var(--ar-neo-border-color);
2258
+ transition:
2259
+ box-shadow 0.15s ease-out,
2260
+ transform 0.15s ease-out;
2261
+ }
2262
+ html[data-theme="neo"] .ar-page-item:hover {
2263
+ box-shadow: 1px 1px 0px 0px var(--ar-neo-border-color);
2264
+ transform: translate(1px, 1px);
2265
+ }
2266
+ html[data-theme="neo"] .ar-page-active {
2267
+ background: var(--ar-neo-primary);
2268
+ color: var(--ar-neo-primary-content);
2269
+ border-color: var(--ar-neo-border-color);
2270
+ }
2271
+
2272
+ /* --- Stepper (neo) --- */
2273
+ html[data-theme="neo"] .ar-step::before {
2274
+ border: 2px solid var(--ar-neo-border-color);
2275
+ box-shadow: 2px 2px 0px 0px var(--ar-neo-border-color);
2276
+ }
2277
+
2278
+ /* --- Navbar (neo) --- */
2279
+ html[data-theme="neo"] .ar-navbar {
2280
+ border-bottom: var(--ar-neo-border-width) solid var(--ar-neo-border-color);
2281
+ background: var(--ar-neo-base-100);
2282
+ }
2283
+
2284
+ /* --- Footer (neo) --- */
2285
+ html[data-theme="neo"] .ar-footer {
2286
+ border-top: var(--ar-neo-border-width) solid var(--ar-neo-border-color);
2287
+ }
2288
+
2289
+ /* --- Hero (neo) --- */
2290
+ html[data-theme="neo"] .ar-hero {
2291
+ background: var(--ar-neo-base-200);
2292
+ }
2293
+
2294
+ /* --- Scroll to top (neo) --- */
2295
+ html[data-theme="neo"] .ar-scroll-top {
2296
+ border: var(--ar-neo-border-width) solid var(--ar-neo-border-color);
2297
+ border-radius: var(--ar-radius-pill);
2298
+ box-shadow: var(--ar-neo-shadow-md);
2299
+ }
2300
+ html[data-theme="neo"] .ar-scroll-top:hover {
2301
+ box-shadow: var(--ar-neo-shadow-sm);
2302
+ transform: translate(2px, 2px);
2303
+ }
2304
+
2305
+ /* --- Drawer (neo) --- */
2306
+ html[data-theme="neo"] .ar-drawer-side .ar-menu {
2307
+ border-right: var(--ar-neo-border-width) solid var(--ar-neo-border-color);
2308
+ }
2309
+
2310
+ /* --- Skeleton (neo) --- */
2311
+ html[data-theme="neo"] .ar-skeleton {
2312
+ border: 2px solid var(--ar-neo-border-color);
2313
+ }
2314
+
2315
+ /* --- Breadcrumb (neo) --- */
2316
+ html[data-theme="neo"] .ar-breadcrumb-item:not(:last-child)::after {
2317
+ color: var(--ar-neo-gray-400);
2318
+ }
2319
+
2320
+ /* --- File upload (neo) --- */
2321
+ html[data-theme="neo"] .ar-file-upload {
2322
+ border: 3px dashed var(--ar-neo-border-color);
2323
+ border-radius: 0.75rem;
2324
+ transition: all 0.2s ease;
2325
+ }
2326
+ html[data-theme="neo"] .ar-file-upload:hover {
2327
+ border-color: var(--ar-neo-primary);
2328
+ background: rgba(0, 174, 239, 0.05);
2329
+ transform: scale(1.02) rotate(-1deg);
2330
+ }
2331
+ html[data-theme="neo"] .ar-file-upload.ar-file-upload-dragover {
2332
+ border-color: var(--ar-neo-primary);
2333
+ background: rgba(0, 174, 239, 0.05);
2334
+ transform: scale(1.02);
2335
+ }
2336
+
2337
+ /* --- Prose (neo) --- */
2338
+ html[data-theme="neo"] .ar-prose pre {
2339
+ border: 2px solid var(--ar-neo-border-color);
2340
+ border-radius: 0.75rem;
2341
+ box-shadow: var(--ar-neo-shadow-sm);
2342
+ }
2343
+ html[data-theme="neo"] .ar-prose code {
2344
+ border: 1px solid var(--ar-neo-border-color);
2345
+ }
2346
+ html[data-theme="neo"] .ar-prose th {
2347
+ border: 2px solid var(--ar-neo-border-color);
2348
+ }
2349
+ html[data-theme="neo"] .ar-prose td {
2350
+ border: 2px solid var(--ar-neo-border-color);
2351
+ }
2352
+ html[data-theme="neo"] .ar-prose blockquote {
2353
+ border-left: 4px solid var(--ar-neo-primary);
2354
+ }
2355
+
2356
+ /* ============================================================
2357
+ 38. UTILITIES — spacing
2358
+ ============================================================ */
2359
+ .ar-p-0 {
2360
+ padding: var(--ar-s-0);
2361
+ }
2362
+ .ar-p-1 {
2363
+ padding: var(--ar-s-1);
2364
+ }
2365
+ .ar-p-2 {
2366
+ padding: var(--ar-s-2);
2367
+ }
2368
+ .ar-p-3 {
2369
+ padding: var(--ar-s-3);
2370
+ }
2371
+ .ar-p-4 {
2372
+ padding: var(--ar-s-4);
2373
+ }
2374
+ .ar-p-5 {
2375
+ padding: var(--ar-s-5);
2376
+ }
2377
+ .ar-p-6 {
2378
+ padding: var(--ar-s-6);
2379
+ }
2380
+ .ar-p-8 {
2381
+ padding: var(--ar-s-8);
2382
+ }
2383
+ .ar-p-10 {
2384
+ padding: var(--ar-s-10);
2385
+ }
2386
+ .ar-p-12 {
2387
+ padding: var(--ar-s-12);
2388
+ }
2389
+ .ar-px-1 {
2390
+ padding-inline: var(--ar-s-1);
2391
+ }
2392
+ .ar-px-2 {
2393
+ padding-inline: var(--ar-s-2);
2394
+ }
2395
+ .ar-px-3 {
2396
+ padding-inline: var(--ar-s-3);
2397
+ }
2398
+ .ar-px-4 {
2399
+ padding-inline: var(--ar-s-4);
2400
+ }
2401
+ .ar-px-6 {
2402
+ padding-inline: var(--ar-s-6);
2403
+ }
2404
+ .ar-px-8 {
2405
+ padding-inline: var(--ar-s-8);
2406
+ }
2407
+ .ar-py-1 {
2408
+ padding-block: var(--ar-s-1);
2409
+ }
2410
+ .ar-py-2 {
2411
+ padding-block: var(--ar-s-2);
2412
+ }
2413
+ .ar-py-3 {
2414
+ padding-block: var(--ar-s-3);
2415
+ }
2416
+ .ar-py-4 {
2417
+ padding-block: var(--ar-s-4);
2418
+ }
2419
+ .ar-py-6 {
2420
+ padding-block: var(--ar-s-6);
2421
+ }
2422
+ .ar-py-8 {
2423
+ padding-block: var(--ar-s-8);
2424
+ }
2425
+ .ar-py-12 {
2426
+ padding-block: var(--ar-s-12);
2427
+ }
2428
+ .ar-pt-2 {
2429
+ padding-top: var(--ar-s-2);
2430
+ }
2431
+ .ar-pt-10 {
2432
+ padding-top: var(--ar-s-10);
2433
+ }
2434
+ .ar-pb-0 {
2435
+ padding-bottom: var(--ar-s-0);
2436
+ }
2437
+ .ar-pb-2 {
2438
+ padding-bottom: var(--ar-s-2);
2439
+ }
2440
+ .ar-m-0 {
2441
+ margin: var(--ar-s-0);
2442
+ }
2443
+ .ar-m-2 {
2444
+ margin: var(--ar-s-2);
2445
+ }
2446
+ .ar-m-4 {
2447
+ margin: var(--ar-s-4);
2448
+ }
2449
+ .ar-mt-1 {
2450
+ margin-top: var(--ar-s-1);
2451
+ }
2452
+ .ar-mt-2 {
2453
+ margin-top: var(--ar-s-2);
2454
+ }
2455
+ .ar-mt-3 {
2456
+ margin-top: var(--ar-s-3);
2457
+ }
2458
+ .ar-mt-4 {
2459
+ margin-top: var(--ar-s-4);
2460
+ }
2461
+ .ar-mt-6 {
2462
+ margin-top: var(--ar-s-6);
2463
+ }
2464
+ .ar-mt-8 {
2465
+ margin-top: var(--ar-s-8);
2466
+ }
2467
+ .ar-mb-2 {
2468
+ margin-bottom: var(--ar-s-2);
2469
+ }
2470
+ .ar-mb-8 {
2471
+ margin-bottom: var(--ar-s-8);
2472
+ }
2473
+ .ar-my-1 {
2474
+ margin-block: var(--ar-s-1);
2475
+ }
2476
+ .ar-my-2 {
2477
+ margin-block: var(--ar-s-2);
2478
+ }
2479
+ .ar-my-4 {
2480
+ margin-block: var(--ar-s-4);
2481
+ }
2482
+ .ar-my-10 {
2483
+ margin-block: var(--ar-s-10);
2484
+ }
2485
+ .ar-mx-auto {
2486
+ margin-inline: auto;
2487
+ }
2488
+
2489
+ /* ============================================================
2490
+ 28. UTILITIES — layout & flex & grid
2491
+ ============================================================ */
2492
+ .ar-flex {
2493
+ display: flex;
2494
+ }
2495
+ .ar-inline-flex {
2496
+ display: inline-flex;
2497
+ }
2498
+ .ar-grid {
2499
+ display: grid;
2500
+ }
2501
+ .ar-block {
2502
+ display: block;
2503
+ }
2504
+ .ar-inline-block {
2505
+ display: inline-block;
2506
+ }
2507
+ .ar-hidden {
2508
+ display: none;
2509
+ }
2510
+ .ar-flex-col {
2511
+ flex-direction: column;
2512
+ }
2513
+ .ar-flex-row {
2514
+ flex-direction: row;
2515
+ }
2516
+ .ar-flex-wrap {
2517
+ flex-wrap: wrap;
2518
+ }
2519
+ .ar-flex-1 {
2520
+ flex: 1 1 0%;
2521
+ }
2522
+ .ar-shrink-0 {
2523
+ flex-shrink: 0;
2524
+ }
2525
+ .ar-items-start {
2526
+ align-items: flex-start;
2527
+ }
2528
+ .ar-items-center {
2529
+ align-items: center;
2530
+ }
2531
+ .ar-items-end {
2532
+ align-items: flex-end;
2533
+ }
2534
+ .ar-justify-start {
2535
+ justify-content: flex-start;
2536
+ }
2537
+ .ar-justify-center {
2538
+ justify-content: center;
2539
+ }
2540
+ .ar-justify-between {
2541
+ justify-content: space-between;
2542
+ }
2543
+ .ar-justify-end {
2544
+ justify-content: flex-end;
2545
+ }
2546
+ .ar-grid-cols-1 {
2547
+ grid-template-columns: repeat(1, minmax(0, 1fr));
2548
+ }
2549
+ .ar-grid-cols-2 {
2550
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2551
+ }
2552
+ .ar-grid-cols-3 {
2553
+ grid-template-columns: repeat(3, minmax(0, 1fr));
2554
+ }
2555
+ .ar-grid-cols-4 {
2556
+ grid-template-columns: repeat(4, minmax(0, 1fr));
2557
+ }
2558
+ .ar-grid-flow-col {
2559
+ grid-auto-flow: column;
2560
+ }
2561
+ .ar-gap-1 {
2562
+ gap: var(--ar-s-1);
2563
+ }
2564
+ .ar-gap-2 {
2565
+ gap: var(--ar-s-2);
2566
+ }
2567
+ .ar-gap-3 {
2568
+ gap: var(--ar-s-3);
2569
+ }
2570
+ .ar-gap-4 {
2571
+ gap: var(--ar-s-4);
2572
+ }
2573
+ .ar-gap-6 {
2574
+ gap: var(--ar-s-6);
2575
+ }
2576
+ .ar-gap-x-2 {
2577
+ column-gap: var(--ar-s-2);
2578
+ }
2579
+ .ar-gap-x-4 {
2580
+ column-gap: var(--ar-s-4);
2581
+ }
2582
+ .ar-gap-x-8 {
2583
+ column-gap: var(--ar-s-8);
2584
+ }
2585
+ .ar-gap-y-8 {
2586
+ row-gap: var(--ar-s-8);
2587
+ }
2588
+ .ar-gap-y-16 {
2589
+ row-gap: var(--ar-s-16);
2590
+ }
2591
+
2592
+ /* ============================================================
2593
+ 29. UTILITIES — typography
2594
+ ============================================================ */
2595
+ .ar-text-xs {
2596
+ font-size: 0.75rem;
2597
+ }
2598
+ .ar-text-sm {
2599
+ font-size: 0.875rem;
2600
+ }
2601
+ .ar-text-base {
2602
+ font-size: 1rem;
2603
+ }
2604
+ .ar-text-lg {
2605
+ font-size: 1.125rem;
2606
+ }
2607
+ .ar-text-xl {
2608
+ font-size: 1.25rem;
2609
+ }
2610
+ .ar-text-2xl {
2611
+ font-size: 1.5rem;
2612
+ }
2613
+ .ar-text-3xl {
2614
+ font-size: 1.875rem;
2615
+ }
2616
+ .ar-text-4xl {
2617
+ font-size: 2.25rem;
2618
+ }
2619
+ .ar-text-5xl {
2620
+ font-size: 3rem;
2621
+ }
2622
+ .ar-text-6xl {
2623
+ font-size: 3.75rem;
2624
+ }
2625
+ .ar-text-7xl {
2626
+ font-size: 4.5rem;
2627
+ }
2628
+ .ar-text-8xl {
2629
+ font-size: 6rem;
2630
+ }
2631
+ .ar-text-9xl {
2632
+ font-size: 8rem;
2633
+ }
2634
+ .ar-font-thin {
2635
+ font-weight: 100;
2636
+ }
2637
+ .ar-font-normal {
2638
+ font-weight: 400;
2639
+ }
2640
+ .ar-font-medium {
2641
+ font-weight: 500;
2642
+ }
2643
+ .ar-font-semibold {
2644
+ font-weight: 600;
2645
+ }
2646
+ .ar-font-bold {
2647
+ font-weight: 700;
2648
+ }
2649
+ .ar-text-left {
2650
+ text-align: left;
2651
+ }
2652
+ .ar-text-center {
2653
+ text-align: center;
2654
+ }
2655
+ .ar-text-right {
2656
+ text-align: right;
2657
+ }
2658
+ .ar-text-pretty {
2659
+ text-wrap: pretty;
2660
+ }
2661
+ .ar-text-wrap {
2662
+ text-wrap: wrap;
2663
+ }
2664
+ .ar-leading-tight {
2665
+ line-height: 1.25;
2666
+ }
2667
+ .ar-leading-6 {
2668
+ line-height: 1.5rem;
2669
+ }
2670
+ .ar-tracking-wide {
2671
+ letter-spacing: 0.025em;
2672
+ }
2673
+ .ar-tracking-wider {
2674
+ letter-spacing: 0.05em;
2675
+ }
2676
+ .ar-underline {
2677
+ text-decoration: underline;
2678
+ }
2679
+ .ar-no-underline {
2680
+ text-decoration: none;
2681
+ }
2682
+ .ar-list-none {
2683
+ list-style: none;
2684
+ }
2685
+ .ar-tabular-nums {
2686
+ font-variant-numeric: tabular-nums;
2687
+ }
2688
+
2689
+ /* ============================================================
2690
+ 30. UTILITIES — sizing
2691
+ ============================================================ */
2692
+ .ar-w-8 {
2693
+ width: var(--ar-s-8);
2694
+ }
2695
+ .ar-w-40 {
2696
+ width: var(--ar-s-40, 10rem);
2697
+ }
2698
+ .ar-w-48 {
2699
+ width: var(--ar-s-48, 12rem);
2700
+ }
2701
+ .ar-w-60 {
2702
+ width: 15rem;
2703
+ }
2704
+ .ar-w-80 {
2705
+ width: 20rem;
2706
+ }
2707
+ .ar-w-full {
2708
+ width: 100%;
2709
+ }
2710
+ .ar-w-1\/3 {
2711
+ width: 33.333333%;
2712
+ }
2713
+ .ar-w-2\/3 {
2714
+ width: 66.666667%;
2715
+ }
2716
+ .ar-w-1\/2 {
2717
+ width: 50%;
2718
+ }
2719
+ .ar-w-11\/12 {
2720
+ width: 91.666667%;
2721
+ }
2722
+ .ar-h-8 {
2723
+ height: var(--ar-s-8);
2724
+ }
2725
+ .ar-h-48 {
2726
+ height: 12rem;
2727
+ }
2728
+ .ar-h-full {
2729
+ height: 100%;
2730
+ }
2731
+ .ar-min-h-full {
2732
+ min-height: 100%;
2733
+ }
2734
+ .ar-min-h-screen {
2735
+ min-height: 100vh;
2736
+ }
2737
+ .ar-max-w-none {
2738
+ max-width: none;
2739
+ }
2740
+ .ar-max-w-sm {
2741
+ max-width: 24rem;
2742
+ }
2743
+ .ar-max-w-md {
2744
+ max-width: 28rem;
2745
+ }
2746
+ .ar-max-w-lg {
2747
+ max-width: 32rem;
2748
+ }
2749
+ .ar-max-w-xl {
2750
+ max-width: 36rem;
2751
+ }
2752
+ .ar-max-w-2xl {
2753
+ max-width: 42rem;
2754
+ }
2755
+ .ar-max-w-3xl {
2756
+ max-width: 48rem;
2757
+ }
2758
+ .ar-max-w-4xl {
2759
+ max-width: 56rem;
2760
+ }
2761
+ .ar-max-w-5xl {
2762
+ max-width: 64rem;
2763
+ }
2764
+ .ar-max-w-6xl {
2765
+ max-width: 72rem;
2766
+ }
2767
+ .ar-max-w-7xl {
2768
+ max-width: 80rem;
2769
+ }
2770
+ .ar-aspect-video {
2771
+ aspect-ratio: 16 / 9;
2772
+ }
2773
+ .ar-object-cover {
2774
+ object-fit: cover;
2775
+ }
2776
+ .ar-overflow-hidden {
2777
+ overflow: hidden;
2778
+ }
2779
+ .ar-overflow-x-auto {
2780
+ overflow-x: auto;
2781
+ }
2782
+
2783
+ /* ============================================================
2784
+ 31. UTILITIES — colors
2785
+ ============================================================ */
2786
+ .ar-bg-base-100 {
2787
+ background: var(--ar-base-100);
2788
+ }
2789
+ .ar-bg-base-200 {
2790
+ background: var(--ar-base-200);
2791
+ }
2792
+ .ar-bg-base-300 {
2793
+ background: var(--ar-base-300);
2794
+ }
2795
+ .ar-bg-base-content {
2796
+ background: var(--ar-base-content);
2797
+ }
2798
+ .ar-bg-base-content\/80 {
2799
+ background: var(--ar-base-content-80);
2800
+ }
2801
+ .ar-bg-neutral {
2802
+ background: var(--ar-neutral);
2803
+ }
2804
+ .ar-bg-primary {
2805
+ background: var(--ar-primary);
2806
+ }
2807
+ .ar-bg-gray-100 {
2808
+ background: var(--ar-gray-100);
2809
+ }
2810
+ .ar-bg-gray-200 {
2811
+ background: var(--ar-gray-200);
2812
+ }
2813
+ .ar-bg-gray-700 {
2814
+ background: var(--ar-gray-700);
2815
+ }
2816
+ .ar-text-base-content {
2817
+ color: var(--ar-base-content);
2818
+ }
2819
+ .ar-text-primary {
2820
+ color: var(--ar-primary);
2821
+ }
2822
+ .ar-text-primary-content {
2823
+ color: var(--ar-primary-content);
2824
+ }
2825
+ .ar-text-neutral {
2826
+ color: var(--ar-neutral);
2827
+ }
2828
+ .ar-text-neutral-content {
2829
+ color: var(--ar-neutral-content);
2830
+ }
2831
+ .ar-text-white {
2832
+ color: #ffffff;
2833
+ }
2834
+ .ar-text-black {
2835
+ color: #000000;
2836
+ }
2837
+ .ar-text-gray-100 {
2838
+ color: var(--ar-gray-100);
2839
+ }
2840
+ .ar-text-gray-200 {
2841
+ color: var(--ar-gray-200);
2842
+ }
2843
+ .ar-text-gray-300 {
2844
+ color: var(--ar-gray-300);
2845
+ }
2846
+ .ar-text-gray-400 {
2847
+ color: var(--ar-gray-400);
2848
+ }
2849
+ .ar-text-gray-500 {
2850
+ color: var(--ar-gray-500);
2851
+ }
2852
+ .ar-text-gray-600 {
2853
+ color: var(--ar-gray-600);
2854
+ }
2855
+ .ar-text-gray-700 {
2856
+ color: var(--ar-gray-700);
2857
+ }
2858
+
2859
+ /* ============================================================
2860
+ 32. UTILITIES — border, radius, shadow, position, misc
2861
+ ============================================================ */
2862
+ .ar-border {
2863
+ border: var(--ar-border-width) solid;
2864
+ }
2865
+ .ar-border-2 {
2866
+ border: 2px solid;
2867
+ }
2868
+ .ar-border-t {
2869
+ border-top: var(--ar-border-width) solid;
2870
+ }
2871
+ .ar-border-t-0 {
2872
+ border-top: 0;
2873
+ }
2874
+ .ar-border-b {
2875
+ border-bottom: var(--ar-border-width) solid;
2876
+ }
2877
+ .ar-border-base-content {
2878
+ border-color: var(--ar-base-content);
2879
+ }
2880
+ .ar-border-neutral {
2881
+ border-color: var(--ar-neutral);
2882
+ }
2883
+ .ar-border-gray-200 {
2884
+ border-color: var(--ar-gray-200);
2885
+ }
2886
+ .ar-border-gray-300 {
2887
+ border-color: var(--ar-gray-300);
2888
+ }
2889
+ .ar-border-base-300 {
2890
+ border-color: var(--ar-base-300);
2891
+ }
2892
+ .ar-rounded {
2893
+ border-radius: var(--ar-radius-field);
2894
+ }
2895
+ .ar-rounded-lg {
2896
+ border-radius: var(--ar-radius-box);
2897
+ }
2898
+ .ar-rounded-xl {
2899
+ border-radius: 0.75rem;
2900
+ }
2901
+ .ar-rounded-box {
2902
+ border-radius: var(--ar-radius-box);
2903
+ }
2904
+ .ar-rounded-full {
2905
+ border-radius: var(--ar-radius-pill);
2906
+ }
2907
+ .ar-shadow-sm {
2908
+ box-shadow: var(--ar-shadow-sm);
2909
+ }
2910
+ .ar-shadow-md {
2911
+ box-shadow: var(--ar-shadow-md);
2912
+ }
2913
+ .ar-shadow-lg {
2914
+ box-shadow: var(--ar-shadow-lg);
2915
+ }
2916
+ .ar-shadow-xl {
2917
+ box-shadow: var(--ar-shadow-xl);
2918
+ }
2919
+ .ar-shadow-2xl {
2920
+ box-shadow: var(--ar-shadow-2xl);
2921
+ }
2922
+ .ar-relative {
2923
+ position: relative;
2924
+ }
2925
+ .ar-absolute {
2926
+ position: absolute;
2927
+ }
2928
+ .ar-fixed {
2929
+ position: fixed;
2930
+ }
2931
+ .ar-sticky {
2932
+ position: sticky;
2933
+ top: 0;
2934
+ z-index: 50;
2935
+ }
2936
+ .ar-inset-0 {
2937
+ inset: 0;
2938
+ }
2939
+ .ar-top-0 {
2940
+ top: 0;
2941
+ }
2942
+ .ar-bottom-0 {
2943
+ bottom: 0;
2944
+ }
2945
+ .ar-left-0 {
2946
+ left: 0;
2947
+ }
2948
+ .ar-right-0 {
2949
+ right: 0;
2950
+ }
2951
+ .ar-top-1\/2 {
2952
+ top: 50%;
2953
+ }
2954
+ .ar-left-5 {
2955
+ left: 1.25rem;
2956
+ }
2957
+ .ar-right-5 {
2958
+ right: 1.25rem;
2959
+ }
2960
+ .ar-z-10 {
2961
+ z-index: 10;
2962
+ }
2963
+ .ar-z-20 {
2964
+ z-index: 20;
2965
+ }
2966
+ .ar-z-50 {
2967
+ z-index: 50;
2968
+ }
2969
+ .ar-opacity-0 {
2970
+ opacity: 0;
2971
+ }
2972
+ .ar-opacity-30 {
2973
+ opacity: 0.3;
2974
+ }
2975
+ .ar-opacity-60 {
2976
+ opacity: 0.6;
2977
+ }
2978
+ .ar-transition-all {
2979
+ transition: all 0.3s ease;
2980
+ }
2981
+ .ar-transition-transform {
2982
+ transition: transform 0.3s ease;
2983
+ }
2984
+ .ar-duration-300 {
2985
+ transition-duration: 0.3s;
2986
+ }
2987
+ .ar-duration-500 {
2988
+ transition-duration: 0.5s;
2989
+ }
2990
+ .ar-ease-out {
2991
+ transition-timing-function: ease-out;
2992
+ }
2993
+ .ar-ease-in-out {
2994
+ transition-timing-function: ease-in-out;
2995
+ }
2996
+ .ar-cursor-pointer {
2997
+ cursor: pointer;
2998
+ }
2999
+ .ar-whitespace-nowrap {
3000
+ white-space: nowrap;
3001
+ }
3002
+ .ar-sr-only {
3003
+ position: absolute;
3004
+ width: 1px;
3005
+ height: 1px;
3006
+ padding: 0;
3007
+ margin: -1px;
3008
+ overflow: hidden;
3009
+ clip: rect(0, 0, 0, 0);
3010
+ white-space: nowrap;
3011
+ border: 0;
3012
+ }
3013
+
3014
+ /* ============================================================
3015
+ 33. UTILITIES — hover states
3016
+ ============================================================ */
3017
+ .ar-hover-bounce:hover {
3018
+ animation: ar-bounce 1s infinite;
3019
+ }
3020
+ .ar-hover-scale-110:hover {
3021
+ transform: scale(1.1);
3022
+ }
3023
+ .ar-hover-shadow-xl:hover {
3024
+ box-shadow: var(--ar-shadow-xl);
3025
+ }
3026
+ .ar-hover-text-gray-600:hover {
3027
+ color: var(--ar-gray-600);
3028
+ }
3029
+ .ar-hover-text-neutral:hover {
3030
+ color: var(--ar-neutral);
3031
+ }
3032
+ .ar-hover-bg-gray-100:hover {
3033
+ background: var(--ar-gray-100);
3034
+ }
3035
+ .ar-hover-bg-gray-700:hover {
3036
+ background: var(--ar-gray-700);
3037
+ }
3038
+ .ar-hover-border-gray-400:hover {
3039
+ border-color: var(--ar-gray-400);
3040
+ }
3041
+ .ar-hover-ring:hover {
3042
+ box-shadow: 0 0 0 1px var(--ar-gray-400);
3043
+ border-color: var(--ar-gray-400);
3044
+ }
3045
+ .ar-hover-ring-gray-200:hover {
3046
+ box-shadow: 0 0 0 1px var(--ar-gray-200);
3047
+ border-color: var(--ar-gray-400);
3048
+ }
3049
+
3050
+ /* ============================================================
3051
+ 34. UTILITIES — responsive
3052
+ ============================================================ */
3053
+ @media (min-width: 768px) {
3054
+ .ar-md\:flex {
3055
+ display: flex;
3056
+ }
3057
+ .ar-md\:flex-col {
3058
+ flex-direction: column;
3059
+ }
3060
+ .ar-md\:flex-row {
3061
+ flex-direction: row;
3062
+ }
3063
+ .ar-md\:hidden {
3064
+ display: none;
3065
+ }
3066
+ .ar-md\:grid {
3067
+ display: grid;
3068
+ }
3069
+ .ar-md\:grid-cols-2 {
3070
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3071
+ }
3072
+ .ar-md\:items-center {
3073
+ align-items: center;
3074
+ }
3075
+ .ar-md\:w-1\/2 {
3076
+ width: 50%;
3077
+ }
3078
+ .ar-md\:w-1\/3 {
3079
+ width: 33.333333%;
3080
+ }
3081
+ .ar-md\:w-2\/3 {
3082
+ width: 66.666667%;
3083
+ }
3084
+ .ar-md\:max-w-52 {
3085
+ max-width: 13rem;
3086
+ }
3087
+ .ar-md\:p-8 {
3088
+ padding: var(--ar-s-8);
3089
+ }
3090
+ .ar-md\:mx-0 {
3091
+ margin-inline: 0;
3092
+ }
3093
+ .ar-md\:text-left {
3094
+ text-align: left;
3095
+ }
3096
+ .ar-md\:text-center {
3097
+ text-align: center;
3098
+ }
3099
+ }
3100
+ @media (min-width: 1024px) {
3101
+ .ar-lg\:flex {
3102
+ display: flex;
3103
+ }
3104
+ .ar-lg\:flex-col {
3105
+ flex-direction: column;
3106
+ }
3107
+ .ar-lg\:flex-row {
3108
+ flex-direction: row;
3109
+ }
3110
+ .ar-lg\:hidden {
3111
+ display: none;
3112
+ }
3113
+ .ar-lg\:grid {
3114
+ display: grid;
3115
+ }
3116
+ .ar-lg\:grid-cols-2 {
3117
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3118
+ }
3119
+ .ar-lg\:grid-cols-3 {
3120
+ grid-template-columns: repeat(3, minmax(0, 1fr));
3121
+ }
3122
+ .ar-lg\:grid-cols-4 {
3123
+ grid-template-columns: repeat(4, minmax(0, 1fr));
3124
+ }
3125
+ .ar-lg\:items-center {
3126
+ align-items: center;
3127
+ }
3128
+ .ar-lg\:justify-between {
3129
+ justify-content: space-between;
3130
+ }
3131
+ .ar-lg\:gap-8 {
3132
+ gap: var(--ar-s-8);
3133
+ }
3134
+ .ar-lg\:w-1\/2 {
3135
+ width: 50%;
3136
+ }
3137
+ .ar-lg\:w-2\/5 {
3138
+ width: 40%;
3139
+ }
3140
+ .ar-lg\:max-w-none {
3141
+ max-width: none;
3142
+ }
3143
+ .ar-lg\:max-w-lg {
3144
+ max-width: 32rem;
3145
+ }
3146
+ .ar-lg\:p-8 {
3147
+ padding: var(--ar-s-8);
3148
+ }
3149
+ .ar-lg\:p-16 {
3150
+ padding: var(--ar-s-16);
3151
+ }
3152
+ .ar-lg\:mx-0 {
3153
+ margin-inline: 0;
3154
+ }
3155
+ .ar-lg\:text-2xl {
3156
+ font-size: 1.5rem;
3157
+ }
3158
+ .ar-lg\:text-4xl {
3159
+ font-size: 2.25rem;
3160
+ }
3161
+ .ar-lg\:text-6xl {
3162
+ font-size: 3.75rem;
3163
+ }
3164
+ .ar-lg\:text-8xl {
3165
+ font-size: 6rem;
3166
+ }
3167
+ .ar-lg\:text-9xl {
3168
+ font-size: 8rem;
3169
+ }
3170
+ .ar-lg\:leading-tight {
3171
+ line-height: 1.25;
3172
+ }
3173
+ .ar-lg\:text-left {
3174
+ text-align: left;
3175
+ }
3176
+ .ar-lg\:text-center {
3177
+ text-align: center;
3178
+ }
3179
+ }
3180
+
3181
+ /* ============================================================
3182
+ 39. NEOBRUTALISM UTILITIES
3183
+ Explicit classes for neobrutalism styling, usable with any theme.
3184
+ ============================================================ */
3185
+
3186
+ /* Hard shadows */
3187
+ .ar-neo-shadow-sm {
3188
+ box-shadow: var(--ar-neo-shadow-sm);
3189
+ }
3190
+ .ar-neo-shadow-md {
3191
+ box-shadow: var(--ar-neo-shadow-md);
3192
+ }
3193
+ .ar-neo-shadow-lg {
3194
+ box-shadow: var(--ar-neo-shadow-lg);
3195
+ }
3196
+ .ar-neo-shadow-xl {
3197
+ box-shadow: var(--ar-neo-shadow-xl);
3198
+ }
3199
+ .ar-neo-shadow-2xl {
3200
+ box-shadow: var(--ar-neo-shadow-2xl);
3201
+ }
3202
+
3203
+ /* Thick borders */
3204
+ .ar-neo-border {
3205
+ border: var(--ar-neo-border-width) solid var(--ar-neo-border-color);
3206
+ }
3207
+ .ar-neo-border-2 {
3208
+ border: 2px solid var(--ar-neo-border-color);
3209
+ }
3210
+
3211
+ /* Border radius */
3212
+ .ar-neo-rounded {
3213
+ border-radius: 0.5rem;
3214
+ }
3215
+ .ar-neo-rounded-lg {
3216
+ border-radius: 0.75rem;
3217
+ }
3218
+ .ar-neo-rounded-xl {
3219
+ border-radius: 1rem;
3220
+ }
3221
+
3222
+ /* Interactive press effect */
3223
+ .ar-neo-press {
3224
+ transition:
3225
+ box-shadow 0.15s ease-out,
3226
+ transform 0.15s ease-out;
3227
+ }
3228
+ .ar-neo-press:hover {
3229
+ box-shadow: var(--ar-neo-shadow-sm);
3230
+ transform: translate(2px, 2px);
3231
+ }
3232
+ .ar-neo-press:active {
3233
+ box-shadow: none;
3234
+ transform: translate(4px, 4px);
3235
+ }
3236
+
3237
+ /* Neo color accents */
3238
+ .ar-neo-primary {
3239
+ background: var(--ar-neo-primary);
3240
+ color: var(--ar-neo-primary-content);
3241
+ }
3242
+ .ar-neo-secondary {
3243
+ background: var(--ar-neo-secondary);
3244
+ color: var(--ar-neo-secondary-content);
3245
+ }
3246
+ .ar-neo-accent {
3247
+ background: var(--ar-neo-accent);
3248
+ color: var(--ar-neo-accent-content);
3249
+ }
3250
+ .ar-neo-danger {
3251
+ background: var(--ar-neo-error);
3252
+ color: var(--ar-neo-error-content);
3253
+ }
3254
+
3255
+ /* Neo text colors */
3256
+ .ar-neo-text-primary {
3257
+ color: var(--ar-neo-primary);
3258
+ }
3259
+ .ar-neo-text-secondary {
3260
+ color: var(--ar-neo-secondary);
3261
+ }
3262
+ .ar-neo-text-accent {
3263
+ color: var(--ar-neo-accent);
3264
+ }
3265
+ .ar-neo-text-danger {
3266
+ color: var(--ar-neo-error);
3267
+ }
3268
+ .ar-neo-text-dark {
3269
+ color: var(--ar-neo-base-content);
3270
+ }
3271
+
3272
+ /* Playful hover animations */
3273
+ .ar-neo-hover-tilt:hover {
3274
+ transform: rotate(-1deg);
3275
+ }
3276
+ .ar-neo-hover-lift:hover {
3277
+ transform: translateY(-2px);
3278
+ box-shadow: var(--ar-neo-shadow-lg);
3279
+ }