django-bootstrap6-admin 0.1.0__py3-none-any.whl

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 (52) hide show
  1. django_bootstrap6_admin/__init__.py +3 -0
  2. django_bootstrap6_admin/apps.py +13 -0
  3. django_bootstrap6_admin/static/django_bootstrap6_admin/css/admin.css +3530 -0
  4. django_bootstrap6_admin/static/django_bootstrap6_admin/css/widgets-overrides.css +47 -0
  5. django_bootstrap6_admin/static/django_bootstrap6_admin/js/admin.js +360 -0
  6. django_bootstrap6_admin/static/django_bootstrap6_admin/js/theme.js +108 -0
  7. django_bootstrap6_admin/static/django_bootstrap6_admin/vendor/bootstrap/LICENSE +21 -0
  8. django_bootstrap6_admin/static/django_bootstrap6_admin/vendor/bootstrap/css/bootstrap.min.css +2 -0
  9. django_bootstrap6_admin/static/django_bootstrap6_admin/vendor/bootstrap/js/bootstrap.bundle.min.js +9 -0
  10. django_bootstrap6_admin/templates/admin/404.html +17 -0
  11. django_bootstrap6_admin/templates/admin/500.html +31 -0
  12. django_bootstrap6_admin/templates/admin/actions.html +40 -0
  13. django_bootstrap6_admin/templates/admin/app_index.html +43 -0
  14. django_bootstrap6_admin/templates/admin/app_list.html +59 -0
  15. django_bootstrap6_admin/templates/admin/auth/user/add_form.html +11 -0
  16. django_bootstrap6_admin/templates/admin/auth/user/change_password.html +105 -0
  17. django_bootstrap6_admin/templates/admin/base.html +220 -0
  18. django_bootstrap6_admin/templates/admin/base_site.html +19 -0
  19. django_bootstrap6_admin/templates/admin/change_form.html +124 -0
  20. django_bootstrap6_admin/templates/admin/change_form_object_tools.html +14 -0
  21. django_bootstrap6_admin/templates/admin/change_list.html +179 -0
  22. django_bootstrap6_admin/templates/admin/change_list_object_tools.html +10 -0
  23. django_bootstrap6_admin/templates/admin/change_list_results.html +42 -0
  24. django_bootstrap6_admin/templates/admin/color_theme_toggle.html +15 -0
  25. django_bootstrap6_admin/templates/admin/date_hierarchy.html +27 -0
  26. django_bootstrap6_admin/templates/admin/delete_confirmation.html +89 -0
  27. django_bootstrap6_admin/templates/admin/delete_selected_confirmation.html +81 -0
  28. django_bootstrap6_admin/templates/admin/edit_inline/stacked.html +67 -0
  29. django_bootstrap6_admin/templates/admin/edit_inline/tabular.html +94 -0
  30. django_bootstrap6_admin/templates/admin/filter.html +17 -0
  31. django_bootstrap6_admin/templates/admin/includes/fieldset.html +54 -0
  32. django_bootstrap6_admin/templates/admin/includes/object_delete_summary.html +7 -0
  33. django_bootstrap6_admin/templates/admin/index.html +136 -0
  34. django_bootstrap6_admin/templates/admin/login.html +99 -0
  35. django_bootstrap6_admin/templates/admin/nav_sidebar.html +21 -0
  36. django_bootstrap6_admin/templates/admin/object_history.html +81 -0
  37. django_bootstrap6_admin/templates/admin/pagination.html +18 -0
  38. django_bootstrap6_admin/templates/admin/search_form.html +28 -0
  39. django_bootstrap6_admin/templates/admin/submit_line.html +35 -0
  40. django_bootstrap6_admin/templates/admin/widgets/foreign_key_raw_id.html +14 -0
  41. django_bootstrap6_admin/templates/admin/widgets/related_widget_wrapper.html +49 -0
  42. django_bootstrap6_admin/templates/registration/logged_out.html +32 -0
  43. django_bootstrap6_admin/templates/registration/password_change_done.html +30 -0
  44. django_bootstrap6_admin/templates/registration/password_change_form.html +74 -0
  45. django_bootstrap6_admin/templatetags/__init__.py +0 -0
  46. django_bootstrap6_admin/templatetags/bootstrap6_admin.py +38 -0
  47. django_bootstrap6_admin-0.1.0.dist-info/METADATA +262 -0
  48. django_bootstrap6_admin-0.1.0.dist-info/RECORD +52 -0
  49. django_bootstrap6_admin-0.1.0.dist-info/WHEEL +5 -0
  50. django_bootstrap6_admin-0.1.0.dist-info/licenses/LICENSE +21 -0
  51. django_bootstrap6_admin-0.1.0.dist-info/licenses/NOTICE +48 -0
  52. django_bootstrap6_admin-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,3530 @@
1
+ /* ==========================================================================
2
+ django-bootstrap6-admin
3
+ A Bootstrap 6 skin for the Django admin.
4
+ ========================================================================== */
5
+
6
+ /* --------------------------------------------------------------------------
7
+ 1. Design tokens and Django admin variable bridge
8
+ -------------------------------------------------------------------------- */
9
+
10
+ :root {
11
+ --ba-topbar-height: 64px;
12
+ --ba-sidebar-width: 272px;
13
+ --ba-content-max: 1600px;
14
+
15
+ --ba-topbar-bg: light-dark(#172b45, #0c1520);
16
+ --ba-topbar-fg: light-dark(#f3f7fb, #e5edf6);
17
+ --ba-topbar-muted: light-dark(#aebed0, #9fb0c2);
18
+ --ba-canvas: light-dark(#f4f6f9, #0d141c);
19
+ --ba-surface: light-dark(#ffffff, #151f2b);
20
+ --ba-surface-muted: light-dark(#f8fafc, #111a24);
21
+ --ba-border: light-dark(#dce3eb, #2d3a4b);
22
+ --ba-border-strong: light-dark(#c6d0dc, #3b4b5f);
23
+ --ba-gold: light-dark(#c99b54, #d6b46f);
24
+ --ba-shadow-sm: 0 1px 2px rgb(23 43 69 / 0.06);
25
+ --ba-shadow-md: 0 0.5rem 1.5rem rgb(23 43 69 / 0.08);
26
+ --ba-shadow-lg: 0 1rem 3rem rgb(23 43 69 / 0.16);
27
+ --ba-radius: var(--bs-radius-7);
28
+ --ba-radius-sm: var(--bs-radius-5);
29
+ --ba-text-muted: light-dark(#536274, #b3bfcd);
30
+ --ba-control-border: light-dark(#7f8d9d, #6b7d91);
31
+
32
+ /*
33
+ * Bootstrap 6's default primary is a very bright blue; white text on it
34
+ * only reaches ~3.5:1. Use a deeper, accessible blue for light mode and a
35
+ * slightly lighter one for dark mode.
36
+ */
37
+ --bs-primary-base: light-dark(#315e9b, #3f6ea8);
38
+ --bs-primary-bg: light-dark(#315e9b, #3f6ea8);
39
+ --bs-primary-contrast: #fff;
40
+ --bs-primary-fg: light-dark(#244a7d, #a9c8ec);
41
+ --bs-primary-fg-emphasis: light-dark(#1d3c66, #cfe1f7);
42
+ --bs-primary-bg-subtle: light-dark(#eaf0f7, #23364b);
43
+ --bs-primary-bg-muted: light-dark(#d9e4f1, #2f4a66);
44
+ --bs-primary-border: light-dark(#6688b0, #6f95b8);
45
+ --bs-secondary-border: light-dark(#8a97a6, #6b7d91);
46
+ --bs-primary-focus-ring: color-mix(
47
+ in oklch,
48
+ var(--bs-primary-bg) 55%,
49
+ var(--bs-bg-body)
50
+ );
51
+
52
+ --bs-danger-base: light-dark(#b4233a, #c23a53);
53
+ --bs-danger-bg: light-dark(#b4233a, #c23a53);
54
+ --bs-danger-contrast: #fff;
55
+ --bs-danger-fg: light-dark(#a4162e, #f1a9b5);
56
+ --bs-danger-fg-emphasis: light-dark(#7d1023, #ffd0d6);
57
+ --bs-danger-bg-subtle: light-dark(#fbefee, #3a2228);
58
+ --bs-danger-bg-muted: light-dark(#f5d9d9, #4b2a31);
59
+ --bs-danger-border: light-dark(#b85f68, #d27a86);
60
+ --bs-danger-focus-ring: color-mix(
61
+ in oklch,
62
+ var(--bs-danger-bg) 55%,
63
+ var(--bs-bg-body)
64
+ );
65
+ --ba-select-arrow: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23667085' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
66
+ --ba-select-arrow-dark: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23aab6c5' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
67
+
68
+ /* Django admin CSS variables used by widgets.css / autocomplete.css. */
69
+ --primary: var(--bs-primary-bg);
70
+ --primary-fg: var(--bs-primary-contrast);
71
+ --secondary: var(--bs-secondary-bg);
72
+ --accent: var(--bs-accent-bg);
73
+ --body-fg: var(--bs-fg-body);
74
+ --body-bg: var(--bs-bg-body);
75
+ --body-quiet-color: var(--bs-fg-3);
76
+ --body-medium-color: var(--bs-fg-2);
77
+ --body-loud-color: var(--bs-fg-1);
78
+ --header-color: var(--ba-topbar-fg);
79
+ --header-branding-color: var(--ba-gold);
80
+ --header-bg: var(--ba-topbar-bg);
81
+ --header-link-color: var(--ba-topbar-fg);
82
+ --breadcrumbs-fg: var(--bs-fg-3);
83
+ --breadcrumbs-link-fg: var(--bs-link-color);
84
+ --breadcrumbs-bg: transparent;
85
+ --link-fg: var(--bs-link-color);
86
+ --link-hover-color: var(--bs-link-hover-color);
87
+ --link-selected-fg: var(--bs-primary-fg-emphasis);
88
+ --hairline-color: var(--bs-border-muted);
89
+ --border-color: var(--bs-border-color);
90
+ --error-fg: var(--bs-danger-fg);
91
+ --darkened-bg: var(--bs-bg-1);
92
+ --selected-bg: var(--bs-primary-bg-subtle);
93
+ --selected-row: var(--bs-primary-bg-subtle);
94
+ --button-fg: var(--bs-primary-contrast);
95
+ --button-bg: var(--bs-primary-bg);
96
+ --button-hover-bg: color-mix(in oklch, var(--bs-primary-bg) 88%, #000);
97
+ --default-button-bg: var(--bs-primary-bg);
98
+ --default-button-hover-bg: color-mix(in oklch, var(--bs-primary-bg) 88%, #000);
99
+ --close-button-bg: var(--bs-secondary-bg);
100
+ --close-button-hover-bg: var(--bs-secondary-bg-muted);
101
+ --delete-button-bg: var(--bs-danger-bg);
102
+ --delete-button-hover-bg: color-mix(in oklch, var(--bs-danger-bg) 88%, #000);
103
+ --object-tools-fg: var(--bs-primary-contrast);
104
+ --object-tools-bg: var(--bs-primary-bg);
105
+ --object-tools-hover-bg: color-mix(in oklch, var(--bs-primary-bg) 88%, #000);
106
+ --font-family-primary: var(--bs-body-font-family);
107
+ --font-family-monospace: var(--bs-font-mono);
108
+ }
109
+
110
+ /* --------------------------------------------------------------------------
111
+ 2. Base
112
+ -------------------------------------------------------------------------- */
113
+
114
+ html {
115
+ min-height: 100%;
116
+ }
117
+
118
+ body.ba-body {
119
+ display: flex;
120
+ flex-direction: column;
121
+ min-height: 100vh;
122
+ margin: 0;
123
+ background: var(--ba-canvas);
124
+ color: var(--bs-fg-body);
125
+ font-family: var(--bs-body-font-family);
126
+ font-size: 0.9375rem;
127
+ line-height: 1.55;
128
+ }
129
+
130
+ #container.ba-app {
131
+ display: flex;
132
+ flex: 1 0 auto;
133
+ flex-direction: column;
134
+ min-height: 100vh;
135
+ }
136
+
137
+ a {
138
+ color: var(--bs-link-color);
139
+ text-decoration: none;
140
+ }
141
+
142
+ a:hover,
143
+ a:focus {
144
+ color: var(--bs-link-hover-color);
145
+ }
146
+
147
+ /*
148
+ * Bootstrap 6 puts its component styles in cascade layers. Our stylesheet is
149
+ * intentionally unlayered so it can override the admin, but that also means
150
+ * the generic `a` rule above would beat the layered `.btn` colour rules.
151
+ * Restore the button colours explicitly for both <a> and <button> controls.
152
+ */
153
+ .btn,
154
+ .btn-link,
155
+ .btn-icon,
156
+ .btn-solid,
157
+ .btn-outline,
158
+ .btn-subtle,
159
+ .btn-text {
160
+ color: var(--bs-btn-color);
161
+ }
162
+
163
+ .btn:hover,
164
+ .btn-link:hover,
165
+ .btn-icon:hover,
166
+ .btn-solid:hover,
167
+ .btn-outline:hover,
168
+ .btn-subtle:hover,
169
+ .btn-text:hover {
170
+ color: var(--bs-btn-hover-color, var(--bs-btn-color));
171
+ }
172
+
173
+ .btn:active,
174
+ .btn.active,
175
+ .btn.show,
176
+ .btn-link:active,
177
+ .btn-icon:active,
178
+ .btn-solid:active,
179
+ .btn-outline:active,
180
+ .btn-subtle:active,
181
+ .btn-text:active {
182
+ color: var(--bs-btn-active-color, var(--bs-btn-color));
183
+ }
184
+
185
+ .btn:disabled,
186
+ .btn.disabled,
187
+ .btn-link:disabled,
188
+ .btn-icon:disabled,
189
+ .btn-solid:disabled,
190
+ .btn-outline:disabled,
191
+ .btn-subtle:disabled,
192
+ .btn-text:disabled {
193
+ color: var(--bs-btn-disabled-color, var(--bs-btn-color));
194
+ }
195
+
196
+ .btn-outline.theme-secondary {
197
+ --bs-theme-border: var(--ba-control-border);
198
+ }
199
+
200
+ h1,
201
+ h2,
202
+ h3,
203
+ h4,
204
+ h5,
205
+ h6 {
206
+ color: var(--bs-fg-1);
207
+ font-weight: 700;
208
+ letter-spacing: -0.015em;
209
+ }
210
+
211
+ p {
212
+ line-height: 1.6;
213
+ }
214
+
215
+ code,
216
+ pre,
217
+ kbd,
218
+ samp {
219
+ font-family: var(--bs-font-mono);
220
+ }
221
+
222
+ .ba-icon {
223
+ width: 1.1rem;
224
+ height: 1.1rem;
225
+ flex: 0 0 auto;
226
+ fill: currentColor;
227
+ vertical-align: -0.125em;
228
+ }
229
+
230
+ .ba-svg-sprite {
231
+ position: absolute;
232
+ width: 0;
233
+ height: 0;
234
+ overflow: hidden;
235
+ }
236
+
237
+ .skip-to-content-link {
238
+ position: absolute;
239
+ inset-block-start: 0.75rem;
240
+ inset-inline-start: 0.75rem;
241
+ z-index: 2000;
242
+ padding: 0.55rem 0.85rem;
243
+ border-radius: var(--ba-radius-sm);
244
+ background: var(--bs-primary-bg);
245
+ color: var(--bs-primary-contrast);
246
+ font-weight: 600;
247
+ transform: translateY(-200%);
248
+ transition: transform 0.15s ease;
249
+ }
250
+
251
+ .skip-to-content-link:focus {
252
+ color: var(--bs-primary-contrast);
253
+ transform: translateY(0);
254
+ }
255
+
256
+ /* Django admin helpers whose CSS we intentionally do not load. */
257
+ .hidden {
258
+ display: none !important;
259
+ }
260
+
261
+ .visually-hidden {
262
+ position: absolute !important;
263
+ width: 1px !important;
264
+ height: 1px !important;
265
+ padding: 0 !important;
266
+ margin: -1px !important;
267
+ overflow: hidden !important;
268
+ clip: rect(0, 0, 0, 0) !important;
269
+ white-space: nowrap !important;
270
+ border: 0 !important;
271
+ }
272
+
273
+ .clear {
274
+ clear: both;
275
+ }
276
+
277
+ .small {
278
+ font-size: 0.78rem;
279
+ }
280
+
281
+ .quiet {
282
+ color: var(--bs-fg-3);
283
+ }
284
+
285
+ .nowrap {
286
+ white-space: nowrap;
287
+ }
288
+
289
+ .errornote {
290
+ display: block;
291
+ margin-block-end: 0.75rem;
292
+ padding: 0.75rem 1rem;
293
+ border: 1px solid var(--bs-danger-border);
294
+ border-radius: var(--ba-radius-sm);
295
+ background: var(--bs-danger-bg-subtle);
296
+ color: var(--bs-danger-fg-emphasis);
297
+ font-weight: 600;
298
+ }
299
+
300
+ .errorlist {
301
+ margin: 0.25rem 0 0;
302
+ padding: 0;
303
+ list-style: none;
304
+ color: var(--bs-danger-fg);
305
+ font-size: 0.78rem;
306
+ }
307
+
308
+ .errorlist li {
309
+ margin: 0.1rem 0;
310
+ }
311
+
312
+ /* --------------------------------------------------------------------------
313
+ 3. Top bar
314
+ -------------------------------------------------------------------------- */
315
+
316
+ .ba-topbar {
317
+ position: sticky;
318
+ inset-block-start: 0;
319
+ z-index: 1030;
320
+ background: var(--ba-topbar-bg);
321
+ color: var(--ba-topbar-fg);
322
+ box-shadow: 0 1px 0 rgb(255 255 255 / 0.08), var(--ba-shadow-md);
323
+ }
324
+
325
+ .ba-topbar::after {
326
+ position: absolute;
327
+ inset-block-end: 0;
328
+ inset-inline-start: 0;
329
+ width: 100%;
330
+ height: 3px;
331
+ background: linear-gradient(
332
+ 90deg,
333
+ var(--ba-gold) 0,
334
+ var(--ba-gold) 4.5rem,
335
+ transparent 4.5rem
336
+ );
337
+ content: "";
338
+ opacity: 0.9;
339
+ pointer-events: none;
340
+ }
341
+
342
+ .ba-topbar-inner {
343
+ display: flex;
344
+ align-items: center;
345
+ gap: 0.75rem;
346
+ width: 100%;
347
+ max-width: var(--ba-content-max);
348
+ min-height: var(--ba-topbar-height);
349
+ margin-inline: auto;
350
+ padding: 0.5rem 1.15rem;
351
+ }
352
+
353
+ .ba-sidebar-toggle {
354
+ --bs-btn-color: var(--ba-topbar-fg);
355
+ --bs-btn-bg: transparent;
356
+ --bs-btn-border-color: rgb(255 255 255 / 0.18);
357
+ --bs-btn-hover-bg: rgb(255 255 255 / 0.1);
358
+ --bs-btn-hover-color: #fff;
359
+ --bs-btn-hover-border-color: rgb(255 255 255 / 0.34);
360
+ --bs-btn-active-bg: rgb(255 255 255 / 0.16);
361
+ --bs-btn-active-color: #fff;
362
+ flex: 0 0 auto;
363
+ width: 2.5rem;
364
+ height: 2.5rem;
365
+ border-radius: var(--ba-radius-sm);
366
+ }
367
+
368
+ .ba-no-sidebar .ba-sidebar-toggle {
369
+ display: none;
370
+ }
371
+
372
+ .ba-branding {
373
+ display: flex;
374
+ align-items: center;
375
+ gap: 0.5rem;
376
+ min-width: 0;
377
+ }
378
+
379
+ .ba-brand {
380
+ display: flex;
381
+ align-items: center;
382
+ gap: 0.65rem;
383
+ min-width: 0;
384
+ color: var(--ba-topbar-fg);
385
+ text-decoration: none;
386
+ }
387
+
388
+ .ba-brand:hover,
389
+ .ba-brand:focus {
390
+ color: #fff;
391
+ }
392
+
393
+ .ba-brand-mark {
394
+ display: grid;
395
+ flex: 0 0 auto;
396
+ place-items: center;
397
+ width: 2.35rem;
398
+ height: 2.35rem;
399
+ border-radius: 0.65rem;
400
+ background: #fff;
401
+ color: var(--ba-topbar-bg);
402
+ font-size: 1.05rem;
403
+ font-weight: 800;
404
+ line-height: 1;
405
+ box-shadow: 0 2px 0 rgb(0 0 0 / 0.12);
406
+ }
407
+
408
+ .ba-brand-text {
409
+ display: flex;
410
+ flex-direction: column;
411
+ min-width: 0;
412
+ line-height: 1.15;
413
+ }
414
+
415
+ .ba-brand-title {
416
+ overflow: hidden;
417
+ color: var(--ba-topbar-fg);
418
+ font-size: 0.98rem;
419
+ font-weight: 700;
420
+ text-overflow: ellipsis;
421
+ white-space: nowrap;
422
+ }
423
+
424
+ .ba-brand-subtitle {
425
+ overflow: hidden;
426
+ color: var(--ba-topbar-muted);
427
+ font-size: 0.7rem;
428
+ font-weight: 500;
429
+ text-overflow: ellipsis;
430
+ white-space: nowrap;
431
+ }
432
+
433
+ .ba-user-tools {
434
+ display: flex;
435
+ align-items: center;
436
+ gap: 0.4rem;
437
+ margin-inline-start: auto;
438
+ }
439
+
440
+ .ba-theme-toggle {
441
+ --bs-btn-color: var(--ba-topbar-fg);
442
+ --bs-btn-bg: transparent;
443
+ --bs-btn-border-color: rgb(255 255 255 / 0.18);
444
+ --bs-btn-hover-bg: rgb(255 255 255 / 0.1);
445
+ --bs-btn-hover-color: #fff;
446
+ --bs-btn-hover-border-color: rgb(255 255 255 / 0.34);
447
+ --bs-btn-active-bg: rgb(255 255 255 / 0.16);
448
+ --bs-btn-active-color: #fff;
449
+ width: 2.35rem;
450
+ height: 2.35rem;
451
+ border-radius: 50%;
452
+ }
453
+
454
+ #branding > .ba-theme-toggle {
455
+ --bs-btn-color: var(--ba-topbar-fg);
456
+ margin-inline-start: 0.35rem;
457
+ }
458
+
459
+ .theme-icon-when-auto,
460
+ .theme-icon-when-light,
461
+ .theme-icon-when-dark {
462
+ display: none;
463
+ }
464
+
465
+ html:not([data-effective-theme]) .theme-icon-when-auto,
466
+ html[data-effective-theme="light"] .theme-icon-when-light {
467
+ display: inline-block;
468
+ }
469
+
470
+ html[data-effective-theme="dark"] .theme-icon-when-dark {
471
+ display: inline-block;
472
+ }
473
+
474
+ /*
475
+ * Django's theme icons use a filled square as the background and a second
476
+ * path as the glyph. `fill` draws the glyph and `color` paints the square.
477
+ */
478
+ .ba-theme-toggle .theme-icon-when-auto,
479
+ .ba-theme-toggle .theme-icon-when-dark,
480
+ .ba-theme-toggle .theme-icon-when-light {
481
+ fill: var(--ba-topbar-fg);
482
+ color: var(--ba-topbar-bg);
483
+ }
484
+
485
+ .ba-user-menu-wrap {
486
+ position: relative;
487
+ }
488
+
489
+ .ba-user-menu-button {
490
+ --bs-btn-color: var(--ba-topbar-fg);
491
+ --bs-btn-bg: rgb(255 255 255 / 0.06);
492
+ --bs-btn-border-color: rgb(255 255 255 / 0.18);
493
+ --bs-btn-hover-bg: rgb(255 255 255 / 0.12);
494
+ --bs-btn-hover-color: #fff;
495
+ --bs-btn-hover-border-color: rgb(255 255 255 / 0.34);
496
+ --bs-btn-active-bg: rgb(255 255 255 / 0.16);
497
+ --bs-btn-active-color: #fff;
498
+ min-height: 2.35rem;
499
+ padding: 0.25rem 0.55rem 0.25rem 0.3rem;
500
+ border-radius: 999px;
501
+ }
502
+
503
+ .ba-user-avatar {
504
+ display: grid;
505
+ flex: 0 0 auto;
506
+ place-items: center;
507
+ width: 1.8rem;
508
+ height: 1.8rem;
509
+ border-radius: 50%;
510
+ background: var(--ba-gold);
511
+ color: #172b45;
512
+ font-size: 0.78rem;
513
+ font-weight: 800;
514
+ }
515
+
516
+ .ba-user-name {
517
+ max-width: 11rem;
518
+ overflow: hidden;
519
+ font-size: 0.84rem;
520
+ font-weight: 600;
521
+ text-overflow: ellipsis;
522
+ white-space: nowrap;
523
+ }
524
+
525
+ .ba-user-menu-button .ba-chevron {
526
+ width: 0.85rem;
527
+ height: 0.85rem;
528
+ opacity: 0.7;
529
+ }
530
+
531
+ .menu.ba-user-menu {
532
+ min-width: 15.5rem;
533
+ padding: 0.35rem;
534
+ border: 1px solid var(--ba-border);
535
+ border-radius: var(--ba-radius);
536
+ background: var(--ba-surface);
537
+ color: var(--bs-fg-body);
538
+ box-shadow: var(--ba-shadow-lg);
539
+ }
540
+
541
+ .ba-user-menu .menu-header {
542
+ padding: 0.55rem 0.65rem;
543
+ color: var(--bs-fg-3);
544
+ font-size: 0.76rem;
545
+ font-weight: 500;
546
+ white-space: normal;
547
+ }
548
+
549
+ .ba-user-menu .menu-item {
550
+ display: flex;
551
+ align-items: center;
552
+ gap: 0.55rem;
553
+ width: 100%;
554
+ padding: 0.5rem 0.65rem;
555
+ border: 0;
556
+ border-radius: var(--ba-radius-sm);
557
+ background: transparent;
558
+ color: var(--bs-fg-2);
559
+ font-size: 0.86rem;
560
+ font-weight: 500;
561
+ text-align: start;
562
+ }
563
+
564
+ .ba-user-menu .menu-item:hover,
565
+ .ba-user-menu .menu-item:focus {
566
+ background: var(--bs-primary-bg-subtle);
567
+ color: var(--bs-primary-fg-emphasis);
568
+ }
569
+
570
+ .ba-user-menu .menu-item .ba-icon {
571
+ width: 1rem;
572
+ height: 1rem;
573
+ opacity: 0.85;
574
+ }
575
+
576
+ .ba-user-menu .menu-divider {
577
+ margin-block: 0.25rem;
578
+ border-block-start-color: var(--ba-border);
579
+ }
580
+
581
+ #user-tools form {
582
+ margin: 0;
583
+ }
584
+
585
+ /* --------------------------------------------------------------------------
586
+ 4. Application shell and sidebar
587
+ -------------------------------------------------------------------------- */
588
+
589
+ #main {
590
+ position: relative;
591
+ display: flex;
592
+ flex: 1 0 auto;
593
+ align-items: flex-start;
594
+ width: 100%;
595
+ max-width: var(--ba-content-max);
596
+ margin-inline: auto;
597
+ }
598
+
599
+ #main.shifted::before {
600
+ position: absolute;
601
+ inset-block: 0;
602
+ inset-inline-start: var(--ba-sidebar-width);
603
+ width: 1px;
604
+ background: var(--ba-border);
605
+ content: "";
606
+ pointer-events: none;
607
+ }
608
+
609
+ .ba-sidebar {
610
+ position: sticky;
611
+ inset-block-start: var(--ba-topbar-height);
612
+ z-index: 1015;
613
+ flex: 0 0 var(--ba-sidebar-width);
614
+ width: var(--ba-sidebar-width);
615
+ max-height: calc(100vh - var(--ba-topbar-height));
616
+ margin-inline-start: calc(-1 * var(--ba-sidebar-width));
617
+ padding: 0.9rem 0.65rem 1.5rem;
618
+ overflow-y: auto;
619
+ overscroll-behavior: contain;
620
+ border-inline-end: 1px solid transparent;
621
+ background: var(--ba-canvas);
622
+ visibility: hidden;
623
+ transition:
624
+ margin-inline-start 0.18s ease,
625
+ visibility 0.18s ease;
626
+ }
627
+
628
+ #main.shifted > .ba-sidebar {
629
+ margin-inline-start: 0;
630
+ border-inline-end-color: transparent;
631
+ visibility: visible;
632
+ }
633
+
634
+ .ba-sr-toggle {
635
+ position: fixed;
636
+ width: 1px;
637
+ height: 1px;
638
+ padding: 0;
639
+ overflow: hidden;
640
+ clip-path: inset(50%);
641
+ white-space: nowrap;
642
+ opacity: 0;
643
+ pointer-events: none;
644
+ }
645
+
646
+ .ba-sidebar-mobile-header {
647
+ display: none;
648
+ }
649
+
650
+ .ba-sidebar-mobile-title {
651
+ font-size: 0.85rem;
652
+ font-weight: 700;
653
+ }
654
+
655
+ .ba-sidebar-close {
656
+ width: 2rem;
657
+ height: 2rem;
658
+ }
659
+
660
+ .ba-sidebar-search {
661
+ position: relative;
662
+ margin-block-end: 0.75rem;
663
+ }
664
+
665
+ .ba-sidebar-search > .ba-icon {
666
+ position: absolute;
667
+ inset-block-start: 50%;
668
+ inset-inline-start: 0.65rem;
669
+ width: 0.95rem;
670
+ height: 0.95rem;
671
+ color: var(--bs-fg-4);
672
+ transform: translateY(-50%);
673
+ pointer-events: none;
674
+ }
675
+
676
+ #nav-filter {
677
+ width: 100%;
678
+ min-height: 2.2rem;
679
+ padding-inline-start: 2rem;
680
+ border-color: var(--ba-control-border);
681
+ background: var(--ba-surface);
682
+ font-size: 0.82rem;
683
+ }
684
+
685
+ #nav-filter.no-results {
686
+ border-color: var(--bs-danger-border);
687
+ background: var(--bs-danger-bg-subtle);
688
+ }
689
+
690
+ .ba-sidebar-scroll {
691
+ min-height: 0;
692
+ }
693
+
694
+ .ba-nav-app {
695
+ margin-block-end: 0.85rem;
696
+ }
697
+
698
+ .ba-nav-app-title {
699
+ display: block;
700
+ padding: 0.35rem 0.6rem;
701
+ color: var(--bs-fg-3);
702
+ font-size: 0.7rem;
703
+ font-weight: 800;
704
+ letter-spacing: 0.075em;
705
+ line-height: 1.3;
706
+ text-transform: uppercase;
707
+ }
708
+
709
+ .ba-nav-app-title:hover,
710
+ .ba-nav-app-title:focus {
711
+ color: var(--bs-primary-fg);
712
+ }
713
+
714
+ .ba-nav-table {
715
+ width: 100%;
716
+ border-collapse: collapse;
717
+ }
718
+
719
+ .ba-nav-table th,
720
+ .ba-nav-table td {
721
+ padding: 0;
722
+ border: 0;
723
+ }
724
+
725
+ .ba-nav-table th {
726
+ width: 100%;
727
+ font-weight: 500;
728
+ }
729
+
730
+ .ba-nav-table th > a,
731
+ .ba-nav-table th > span {
732
+ display: block;
733
+ padding: 0.38rem 0.6rem;
734
+ overflow: hidden;
735
+ border-radius: 0.4rem;
736
+ color: var(--bs-fg-2);
737
+ font-size: 0.855rem;
738
+ text-overflow: ellipsis;
739
+ white-space: nowrap;
740
+ }
741
+
742
+ .ba-nav-table th > a:hover,
743
+ .ba-nav-table th > a:focus,
744
+ .ba-nav-app.current-app .ba-nav-app-title {
745
+ color: var(--bs-primary-fg-emphasis);
746
+ }
747
+
748
+ .ba-nav-table th > a:hover,
749
+ .ba-nav-table th > a:focus {
750
+ background: var(--bs-bg-2);
751
+ }
752
+
753
+ .ba-nav-table .current-model th > a {
754
+ background: var(--bs-primary-bg-subtle);
755
+ color: var(--bs-primary-fg-emphasis);
756
+ font-weight: 600;
757
+ }
758
+
759
+ .ba-nav-action {
760
+ width: 1%;
761
+ padding-inline-end: 0.35rem !important;
762
+ white-space: nowrap;
763
+ }
764
+
765
+ .ba-nav-link {
766
+ display: inline-grid;
767
+ place-items: center;
768
+ width: 1.75rem;
769
+ height: 1.75rem;
770
+ border-radius: 0.35rem;
771
+ color: var(--bs-fg-4);
772
+ opacity: 0;
773
+ transition:
774
+ opacity 0.15s ease,
775
+ background-color 0.15s ease;
776
+ }
777
+
778
+ .ba-nav-link .ba-icon {
779
+ width: 0.85rem;
780
+ height: 0.85rem;
781
+ }
782
+
783
+ .ba-nav-table tr:hover .ba-nav-link,
784
+ .ba-nav-table tr:focus-within .ba-nav-link {
785
+ opacity: 1;
786
+ }
787
+
788
+ .ba-nav-link:hover,
789
+ .ba-nav-link:focus {
790
+ background: var(--bs-bg-3);
791
+ color: var(--bs-fg-1);
792
+ opacity: 1;
793
+ }
794
+
795
+ /* --------------------------------------------------------------------------
796
+ 5. Breadcrumbs, content and page header
797
+ -------------------------------------------------------------------------- */
798
+
799
+ .ba-breadcrumb-nav {
800
+ width: 100%;
801
+ max-width: var(--ba-content-max);
802
+ margin-inline: auto;
803
+ padding: 0.7rem 1.3rem 0;
804
+ }
805
+
806
+ @media (min-width: 1024px) {
807
+ body:has(#main.shifted) .ba-breadcrumb-nav {
808
+ padding-inline-start: calc(var(--ba-sidebar-width) + 1.3rem);
809
+ }
810
+ }
811
+
812
+ .ba-breadcrumb-nav .breadcrumb {
813
+ gap: 0.05rem;
814
+ margin: 0;
815
+ font-size: 0.82rem;
816
+ }
817
+
818
+ .ba-breadcrumb-nav .breadcrumb-link {
819
+ gap: 0.35rem;
820
+ min-height: auto;
821
+ padding: 0.3rem 0.45rem;
822
+ color: var(--bs-fg-3);
823
+ font-weight: 500;
824
+ }
825
+
826
+ .ba-breadcrumb-nav .breadcrumb-link .ba-icon {
827
+ width: 0.9rem;
828
+ height: 0.9rem;
829
+ }
830
+
831
+ .ba-breadcrumb-nav .breadcrumb-link:hover {
832
+ color: var(--bs-primary-fg);
833
+ text-decoration: none;
834
+ }
835
+
836
+ .ba-breadcrumb-nav .breadcrumb-link.active {
837
+ color: var(--bs-fg-1);
838
+ font-weight: 600;
839
+ }
840
+
841
+ .content {
842
+ flex: 1 1 auto;
843
+ min-width: 0;
844
+ padding: 1.1rem 1.3rem 3rem;
845
+ }
846
+
847
+ #content {
848
+ width: 100%;
849
+ }
850
+
851
+ .titles-and-tools {
852
+ display: flex;
853
+ flex-wrap: wrap;
854
+ align-items: flex-start;
855
+ justify-content: space-between;
856
+ gap: 1rem;
857
+ margin-block-end: 1.25rem;
858
+ }
859
+
860
+ .titles {
861
+ min-width: 0;
862
+ }
863
+
864
+ .ba-page-title {
865
+ margin: 0;
866
+ color: var(--bs-fg-1);
867
+ font-size: clamp(1.45rem, 2.2vw, 1.85rem);
868
+ font-weight: 750;
869
+ letter-spacing: -0.03em;
870
+ line-height: 1.15;
871
+ }
872
+
873
+ .ba-page-subtitle {
874
+ max-width: 65ch;
875
+ margin: 0.35rem 0 0;
876
+ color: var(--bs-fg-3);
877
+ font-size: 0.9rem;
878
+ }
879
+
880
+ .ba-object-tools {
881
+ display: flex;
882
+ flex-wrap: wrap;
883
+ align-items: center;
884
+ gap: 0.5rem;
885
+ }
886
+
887
+ .ba-object-tools ul {
888
+ display: flex;
889
+ flex-wrap: wrap;
890
+ gap: 0.5rem;
891
+ margin: 0;
892
+ padding: 0;
893
+ list-style: none;
894
+ }
895
+
896
+ .ba-object-tools li {
897
+ list-style: none;
898
+ }
899
+
900
+ .ba-eyebrow {
901
+ margin: 0 0 0.25rem;
902
+ color: var(--bs-primary-fg);
903
+ font-size: 0.7rem;
904
+ font-weight: 800;
905
+ letter-spacing: 0.09em;
906
+ text-transform: uppercase;
907
+ }
908
+
909
+ .ba-muted {
910
+ color: var(--ba-text-muted) !important;
911
+ }
912
+
913
+ .ba-empty {
914
+ padding: 1rem;
915
+ border: 1px dashed var(--ba-border);
916
+ border-radius: var(--ba-radius);
917
+ background: var(--ba-surface-muted);
918
+ color: var(--ba-text-muted);
919
+ text-align: center;
920
+ }
921
+
922
+ .ba-empty p {
923
+ margin: 0;
924
+ }
925
+
926
+ .ba-empty .btn {
927
+ margin-block-start: 0.65rem;
928
+ }
929
+
930
+ .ba-nowrap {
931
+ white-space: nowrap;
932
+ }
933
+
934
+ .ba-footer {
935
+ width: 100%;
936
+ max-width: var(--ba-content-max);
937
+ margin-top: auto;
938
+ margin-inline: auto;
939
+ padding: 1rem 1.3rem 1.5rem;
940
+ border-block-start: 1px solid var(--ba-border);
941
+ color: var(--bs-fg-4);
942
+ font-size: 0.78rem;
943
+ }
944
+
945
+ /* --------------------------------------------------------------------------
946
+ 6. Messages
947
+ -------------------------------------------------------------------------- */
948
+
949
+ .ba-messages {
950
+ display: flex;
951
+ flex-direction: column;
952
+ gap: 0.5rem;
953
+ margin-block-end: 1rem;
954
+ }
955
+
956
+ .alert.ba-message,
957
+ .alert.ba-form-alert,
958
+ .alert.ba-login-alert,
959
+ .alert.ba-callout {
960
+ display: flex;
961
+ align-items: flex-start;
962
+ gap: 0.65rem;
963
+ padding: 0.7rem 0.85rem;
964
+ border: 1px solid var(--bs-theme-border);
965
+ border-radius: var(--ba-radius-sm);
966
+ background: var(--bs-theme-bg-subtle);
967
+ color: var(--bs-theme-fg-emphasis);
968
+ font-size: 0.86rem;
969
+ }
970
+
971
+ .ba-message-icon,
972
+ .ba-form-alert > .ba-icon,
973
+ .ba-login-alert > .ba-icon,
974
+ .ba-callout > .ba-icon {
975
+ margin-block-start: 0.1rem;
976
+ }
977
+
978
+ .ba-message-body {
979
+ flex: 1 1 auto;
980
+ min-width: 0;
981
+ }
982
+
983
+ /* Match the behaviour of Django's unusable_password_field.css with our
984
+ message container and button markup. */
985
+ form:has(#id_usable_password input[value="true"]:checked) .ba-messages {
986
+ display: none;
987
+ }
988
+
989
+ form:has(#id_usable_password input[value="true"]:checked) .ba-submit-actions .unset-password {
990
+ display: none;
991
+ }
992
+
993
+ form:has(#id_usable_password input[value="false"]:checked) .ba-submit-actions .set-password {
994
+ display: none;
995
+ }
996
+
997
+ .ba-message .btn-close {
998
+ margin-inline-start: auto;
999
+ align-self: flex-start;
1000
+ }
1001
+
1002
+ /* --------------------------------------------------------------------------
1003
+ 7. Dashboard
1004
+ -------------------------------------------------------------------------- */
1005
+
1006
+ .ba-dashboard {
1007
+ display: grid;
1008
+ grid-template-columns: minmax(0, 1fr) 21rem;
1009
+ gap: 1.25rem;
1010
+ align-items: start;
1011
+ }
1012
+
1013
+ .ba-dashboard:not(:has(.ba-dashboard-aside)),
1014
+ .ba-dashboard-single .ba-dashboard {
1015
+ grid-template-columns: minmax(0, 1fr);
1016
+ }
1017
+
1018
+ .ba-dashboard-main {
1019
+ min-width: 0;
1020
+ }
1021
+
1022
+ .ba-section-heading {
1023
+ display: flex;
1024
+ flex-wrap: wrap;
1025
+ align-items: flex-end;
1026
+ justify-content: space-between;
1027
+ gap: 0.75rem;
1028
+ margin-block-end: 1rem;
1029
+ }
1030
+
1031
+ .ba-section-heading h1,
1032
+ .ba-section-heading h2 {
1033
+ margin: 0;
1034
+ font-size: 1.2rem;
1035
+ letter-spacing: -0.02em;
1036
+ }
1037
+
1038
+ .ba-section-heading h1.ba-page-title {
1039
+ font-size: clamp(1.45rem, 2.2vw, 1.85rem);
1040
+ }
1041
+
1042
+ .ba-app-grid {
1043
+ display: grid;
1044
+ grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr));
1045
+ gap: 0.9rem;
1046
+ }
1047
+
1048
+ .ba-app-card {
1049
+ height: 100%;
1050
+ overflow: hidden;
1051
+ border-color: var(--ba-border);
1052
+ border-radius: var(--ba-radius);
1053
+ background: var(--ba-surface);
1054
+ box-shadow: var(--ba-shadow-sm);
1055
+ transition:
1056
+ border-color 0.15s ease,
1057
+ box-shadow 0.15s ease,
1058
+ transform 0.15s ease;
1059
+ }
1060
+
1061
+ .ba-app-card:hover {
1062
+ border-color: var(--ba-border-strong);
1063
+ box-shadow: var(--ba-shadow-md);
1064
+ transform: translateY(-1px);
1065
+ }
1066
+
1067
+ .ba-app-card-header {
1068
+ display: flex;
1069
+ flex-direction: row;
1070
+ align-items: center;
1071
+ gap: 0.55rem;
1072
+ padding: 0.75rem 0.85rem;
1073
+ border-block-end: 1px solid var(--ba-border);
1074
+ background: var(--ba-surface-muted);
1075
+ }
1076
+
1077
+ .ba-app-icon {
1078
+ display: grid;
1079
+ flex: 0 0 auto;
1080
+ place-items: center;
1081
+ width: 1.9rem;
1082
+ height: 1.9rem;
1083
+ border-radius: 0.45rem;
1084
+ background: var(--bs-primary-bg-subtle);
1085
+ color: var(--bs-primary-fg-emphasis);
1086
+ font-size: 0.82rem;
1087
+ font-weight: 800;
1088
+ }
1089
+
1090
+ .ba-app-name {
1091
+ flex: 1 1 auto;
1092
+ min-width: 0;
1093
+ overflow: hidden;
1094
+ color: var(--bs-fg-1);
1095
+ font-size: 0.92rem;
1096
+ font-weight: 700;
1097
+ text-overflow: ellipsis;
1098
+ white-space: nowrap;
1099
+ }
1100
+
1101
+ .ba-app-name:hover,
1102
+ .ba-app-name:focus {
1103
+ color: var(--bs-primary-fg);
1104
+ }
1105
+
1106
+ .ba-app-count {
1107
+ flex: 0 0 auto;
1108
+ font-size: 0.68rem;
1109
+ }
1110
+
1111
+ .ba-app-card .card-body {
1112
+ padding: 0.35rem 0.5rem;
1113
+ }
1114
+
1115
+ .ba-model-list {
1116
+ display: flex;
1117
+ flex-direction: column;
1118
+ margin: 0;
1119
+ padding: 0;
1120
+ list-style: none;
1121
+ }
1122
+
1123
+ .ba-model-list > li {
1124
+ display: flex;
1125
+ align-items: center;
1126
+ gap: 0.35rem;
1127
+ padding: 0.2rem 0.15rem;
1128
+ border-block-end: 1px solid var(--ba-border-muted);
1129
+ }
1130
+
1131
+ .ba-model-list > li:last-child {
1132
+ border-block-end: 0;
1133
+ }
1134
+
1135
+ .ba-model-link {
1136
+ display: flex;
1137
+ flex: 1 1 auto;
1138
+ align-items: center;
1139
+ gap: 0.55rem;
1140
+ min-width: 0;
1141
+ padding: 0.28rem 0.25rem;
1142
+ border-radius: 0.35rem;
1143
+ color: var(--bs-fg-2);
1144
+ font-size: 0.86rem;
1145
+ font-weight: 500;
1146
+ }
1147
+
1148
+ .ba-model-link:hover,
1149
+ .ba-model-link:focus {
1150
+ background: var(--bs-bg-2);
1151
+ color: var(--bs-fg-1);
1152
+ }
1153
+
1154
+ .ba-model-disabled {
1155
+ color: var(--bs-fg-4);
1156
+ cursor: default;
1157
+ }
1158
+
1159
+ .ba-model-icon {
1160
+ display: grid;
1161
+ flex: 0 0 auto;
1162
+ place-items: center;
1163
+ width: 1.6rem;
1164
+ height: 1.6rem;
1165
+ border-radius: 0.35rem;
1166
+ background: var(--bs-bg-2);
1167
+ color: var(--bs-fg-3);
1168
+ font-size: 0.66rem;
1169
+ font-weight: 800;
1170
+ }
1171
+
1172
+ .ba-model-name {
1173
+ overflow: hidden;
1174
+ text-overflow: ellipsis;
1175
+ white-space: nowrap;
1176
+ }
1177
+
1178
+ .ba-model-actions {
1179
+ display: flex;
1180
+ flex: 0 0 auto;
1181
+ gap: 0.2rem;
1182
+ opacity: 0.45;
1183
+ transition: opacity 0.15s ease;
1184
+ }
1185
+
1186
+ .ba-model-list > li:hover .ba-model-actions,
1187
+ .ba-model-list > li:focus-within .ba-model-actions {
1188
+ opacity: 1;
1189
+ }
1190
+
1191
+ .ba-model-actions .btn {
1192
+ width: 1.75rem;
1193
+ height: 1.75rem;
1194
+ padding: 0;
1195
+ }
1196
+
1197
+ .ba-model-actions .ba-icon {
1198
+ width: 0.8rem;
1199
+ height: 0.8rem;
1200
+ }
1201
+
1202
+ .ba-dashboard-aside {
1203
+ display: flex;
1204
+ flex-direction: column;
1205
+ gap: 0.9rem;
1206
+ min-width: 0;
1207
+ }
1208
+
1209
+ .ba-recent-card {
1210
+ border-color: var(--ba-border);
1211
+ border-radius: var(--ba-radius);
1212
+ background: var(--ba-surface);
1213
+ box-shadow: var(--ba-shadow-sm);
1214
+ }
1215
+
1216
+ .ba-recent-card .card-header {
1217
+ padding: 0.75rem 0.9rem;
1218
+ border-block-end: 1px solid var(--ba-border);
1219
+ background: var(--ba-surface-muted);
1220
+ }
1221
+
1222
+ .ba-recent-card .card-body {
1223
+ padding: 0.75rem 0.9rem;
1224
+ }
1225
+
1226
+ .ba-card-title {
1227
+ display: flex;
1228
+ align-items: center;
1229
+ gap: 0.45rem;
1230
+ margin: 0;
1231
+ font-size: 0.9rem;
1232
+ }
1233
+
1234
+ .ba-card-title .ba-icon {
1235
+ width: 1rem;
1236
+ height: 1rem;
1237
+ color: var(--bs-fg-3);
1238
+ }
1239
+
1240
+ .ba-timeline {
1241
+ display: flex;
1242
+ flex-direction: column;
1243
+ gap: 0.55rem;
1244
+ margin: 0;
1245
+ padding: 0;
1246
+ list-style: none;
1247
+ }
1248
+
1249
+ .ba-timeline-item {
1250
+ display: grid;
1251
+ grid-template-columns: 1.75rem minmax(0, 1fr);
1252
+ gap: 0.55rem;
1253
+ align-items: start;
1254
+ }
1255
+
1256
+ .ba-timeline-icon {
1257
+ display: grid;
1258
+ place-items: center;
1259
+ width: 1.75rem;
1260
+ height: 1.75rem;
1261
+ border-radius: 50%;
1262
+ background: var(--bs-bg-2);
1263
+ color: var(--bs-fg-3);
1264
+ }
1265
+
1266
+ .ba-timeline-icon .ba-icon {
1267
+ width: 0.8rem;
1268
+ height: 0.8rem;
1269
+ }
1270
+
1271
+ .ba-log-add .ba-timeline-icon {
1272
+ background: var(--bs-success-bg-subtle);
1273
+ color: var(--bs-success-fg-emphasis);
1274
+ }
1275
+
1276
+ .ba-log-change .ba-timeline-icon {
1277
+ background: var(--bs-primary-bg-subtle);
1278
+ color: var(--bs-primary-fg-emphasis);
1279
+ }
1280
+
1281
+ .ba-log-delete .ba-timeline-icon {
1282
+ background: var(--bs-danger-bg-subtle);
1283
+ color: var(--bs-danger-fg-emphasis);
1284
+ }
1285
+
1286
+ .ba-timeline-content {
1287
+ display: flex;
1288
+ flex-direction: column;
1289
+ min-width: 0;
1290
+ padding-block-start: 0.1rem;
1291
+ }
1292
+
1293
+ .ba-timeline-object {
1294
+ overflow: hidden;
1295
+ color: var(--bs-fg-2);
1296
+ font-size: 0.82rem;
1297
+ font-weight: 500;
1298
+ text-overflow: ellipsis;
1299
+ white-space: nowrap;
1300
+ }
1301
+
1302
+ a.ba-timeline-object:hover,
1303
+ a.ba-timeline-object:focus {
1304
+ color: var(--bs-primary-fg);
1305
+ }
1306
+
1307
+ .ba-timeline-meta {
1308
+ color: var(--ba-text-muted);
1309
+ font-size: 0.72rem;
1310
+ }
1311
+
1312
+ /* --------------------------------------------------------------------------
1313
+ 8. Changelist
1314
+ -------------------------------------------------------------------------- */
1315
+
1316
+ .ba-changelist-layout {
1317
+ display: grid;
1318
+ grid-template-columns: minmax(0, 1fr) 17.5rem;
1319
+ gap: 1.15rem;
1320
+ align-items: start;
1321
+ }
1322
+
1323
+ #changelist:not(.filtered) .ba-changelist-layout {
1324
+ grid-template-columns: minmax(0, 1fr);
1325
+ }
1326
+
1327
+ .ba-changelist-main {
1328
+ display: flex;
1329
+ flex-direction: column;
1330
+ gap: 0.85rem;
1331
+ min-width: 0;
1332
+ }
1333
+
1334
+ .ba-result-summary {
1335
+ display: flex;
1336
+ flex-wrap: wrap;
1337
+ gap: 0.35rem;
1338
+ color: var(--ba-text-muted);
1339
+ font-size: 0.78rem;
1340
+ }
1341
+
1342
+ .ba-filters-toggle-row {
1343
+ display: none;
1344
+ }
1345
+
1346
+ .ba-filters-toggle {
1347
+ align-self: flex-start;
1348
+ }
1349
+
1350
+ .ba-filters-close {
1351
+ display: none;
1352
+ flex: 0 0 auto;
1353
+ width: 1.9rem;
1354
+ height: 1.9rem;
1355
+ }
1356
+
1357
+ .ba-list-actions {
1358
+ display: flex;
1359
+ justify-content: flex-end;
1360
+ }
1361
+
1362
+ .ba-toolbar,
1363
+ .ba-search {
1364
+ min-width: 0;
1365
+ }
1366
+
1367
+ .ba-toolbar {
1368
+ padding: 0.75rem;
1369
+ border: 1px solid var(--ba-border);
1370
+ border-radius: var(--ba-radius);
1371
+ background: var(--ba-surface);
1372
+ box-shadow: var(--ba-shadow-sm);
1373
+ }
1374
+
1375
+ .ba-search {
1376
+ display: flex;
1377
+ flex-direction: column;
1378
+ gap: 0.35rem;
1379
+ }
1380
+
1381
+ .ba-search-field {
1382
+ position: relative;
1383
+ display: flex;
1384
+ align-items: center;
1385
+ gap: 0.45rem;
1386
+ }
1387
+
1388
+ .ba-search-icon {
1389
+ position: absolute;
1390
+ inset-inline-start: 0.7rem;
1391
+ width: 0.95rem;
1392
+ height: 0.95rem;
1393
+ color: var(--bs-fg-4);
1394
+ pointer-events: none;
1395
+ }
1396
+
1397
+ #searchbar {
1398
+ flex: 1 1 auto;
1399
+ min-width: 0;
1400
+ min-height: 2.35rem;
1401
+ padding-inline-start: 2.1rem;
1402
+ border-color: var(--ba-control-border);
1403
+ }
1404
+
1405
+ .ba-search-field .btn {
1406
+ flex: 0 0 auto;
1407
+ }
1408
+
1409
+ .ba-search-count,
1410
+ .ba-search-help {
1411
+ padding-inline-start: 0.15rem;
1412
+ color: var(--bs-fg-3);
1413
+ font-size: 0.76rem;
1414
+ }
1415
+
1416
+ .ba-search-count a {
1417
+ font-weight: 600;
1418
+ }
1419
+
1420
+ .ba-date-hierarchy {
1421
+ display: flex;
1422
+ flex-wrap: wrap;
1423
+ align-items: center;
1424
+ gap: 0.45rem;
1425
+ padding: 0.5rem 0.15rem;
1426
+ color: var(--bs-fg-3);
1427
+ font-size: 0.8rem;
1428
+ }
1429
+
1430
+ .ba-date-hierarchy-links {
1431
+ display: flex;
1432
+ flex-wrap: wrap;
1433
+ align-items: center;
1434
+ gap: 0.25rem;
1435
+ }
1436
+
1437
+ .ba-date-hierarchy .date-back {
1438
+ display: inline-flex;
1439
+ align-items: center;
1440
+ gap: 0.2rem;
1441
+ padding: 0.25rem 0.5rem;
1442
+ border-radius: 999px;
1443
+ background: var(--bs-bg-2);
1444
+ color: var(--bs-fg-2);
1445
+ font-size: 0.78rem;
1446
+ font-weight: 600;
1447
+ }
1448
+
1449
+ .ba-date-chip {
1450
+ display: inline-flex;
1451
+ align-items: center;
1452
+ gap: 0.25rem;
1453
+ padding: 0.25rem 0.55rem;
1454
+ border: 1px solid var(--ba-border);
1455
+ border-radius: 999px;
1456
+ background: var(--ba-surface);
1457
+ color: var(--bs-fg-2);
1458
+ font-size: 0.78rem;
1459
+ font-weight: 500;
1460
+ }
1461
+
1462
+ a.ba-date-chip:hover,
1463
+ a.ba-date-chip:focus {
1464
+ border-color: var(--bs-primary-border);
1465
+ background: var(--bs-primary-bg-subtle);
1466
+ color: var(--bs-primary-fg-emphasis);
1467
+ }
1468
+
1469
+ .ba-date-chip.active {
1470
+ border-color: var(--bs-primary-border);
1471
+ background: var(--bs-primary-bg-subtle);
1472
+ color: var(--bs-primary-fg-emphasis);
1473
+ font-weight: 600;
1474
+ }
1475
+
1476
+ .ba-table-wrap {
1477
+ overflow-x: auto;
1478
+ border: 1px solid var(--ba-border);
1479
+ border-radius: var(--ba-radius);
1480
+ background: var(--ba-surface);
1481
+ box-shadow: var(--ba-shadow-sm);
1482
+ }
1483
+
1484
+ #result_list {
1485
+ --bs-table-bg: transparent;
1486
+ width: 100%;
1487
+ margin: 0;
1488
+ border-collapse: separate;
1489
+ border-spacing: 0;
1490
+ background: var(--ba-surface);
1491
+ font-size: 0.86rem;
1492
+ }
1493
+
1494
+ #result_list thead th {
1495
+ padding: 0.6rem 0.65rem;
1496
+ border-block-end: 1px solid var(--ba-border);
1497
+ background: var(--ba-surface-muted);
1498
+ color: var(--ba-text-muted);
1499
+ font-size: 0.75rem;
1500
+ font-weight: 800;
1501
+ letter-spacing: 0.04em;
1502
+ text-transform: uppercase;
1503
+ vertical-align: middle;
1504
+ white-space: nowrap;
1505
+ }
1506
+
1507
+ #result_list thead th a {
1508
+ color: var(--bs-fg-2);
1509
+ }
1510
+
1511
+ #result_list thead th a:hover,
1512
+ #result_list thead th a:focus {
1513
+ color: var(--bs-primary-fg);
1514
+ }
1515
+
1516
+ #result_list tbody td,
1517
+ #result_list tbody th {
1518
+ padding: 0.52rem 0.65rem;
1519
+ border-block-end: 1px solid var(--ba-border-muted);
1520
+ color: var(--bs-fg-2);
1521
+ vertical-align: middle;
1522
+ white-space: nowrap;
1523
+ }
1524
+
1525
+ #result_list tbody tr:last-child > * {
1526
+ border-block-end: 0;
1527
+ }
1528
+
1529
+ #result_list tbody tr.selected > * {
1530
+ background: var(--bs-primary-bg-subtle) !important;
1531
+ }
1532
+
1533
+ #result_list .action-checkbox,
1534
+ #result_list .action-checkbox-column {
1535
+ width: 2.1rem;
1536
+ padding-inline-end: 0.2rem;
1537
+ text-align: center;
1538
+ }
1539
+
1540
+ #result_list .action-checkbox input {
1541
+ margin: 0;
1542
+ }
1543
+
1544
+ #result_list td a {
1545
+ color: var(--bs-link-color);
1546
+ font-weight: 500;
1547
+ }
1548
+
1549
+ #result_list td a:hover,
1550
+ #result_list td a:focus {
1551
+ color: var(--bs-link-hover-color);
1552
+ text-decoration: underline;
1553
+ text-underline-offset: 0.16em;
1554
+ }
1555
+
1556
+ #result_list .field-is_active input,
1557
+ #result_list .field-order input {
1558
+ max-width: 5.5rem;
1559
+ }
1560
+
1561
+ #result_list input:not([type="checkbox"]):not([type="radio"]),
1562
+ #result_list select,
1563
+ #result_list textarea {
1564
+ min-height: 1.95rem;
1565
+ padding: 0.25rem 0.4rem;
1566
+ border: 1px solid var(--ba-control-border);
1567
+ border-radius: 0.3rem;
1568
+ background: var(--bs-bg-body);
1569
+ color: var(--bs-fg-body);
1570
+ font-size: 0.82rem;
1571
+ }
1572
+
1573
+ #result_list select {
1574
+ padding-inline-end: 1.6rem;
1575
+ background-image: var(--ba-select-arrow);
1576
+ background-position: right 0.45rem center;
1577
+ background-repeat: no-repeat;
1578
+ background-size: 0.65rem;
1579
+ }
1580
+
1581
+ [data-bs-theme="dark"] #result_list select {
1582
+ background-image: var(--ba-select-arrow-dark);
1583
+ }
1584
+
1585
+ #result_list input[type="checkbox"],
1586
+ #result_list input[type="radio"] {
1587
+ width: 1rem;
1588
+ height: 1rem;
1589
+ margin: 0;
1590
+ accent-color: var(--bs-primary-bg);
1591
+ vertical-align: middle;
1592
+ }
1593
+
1594
+ .ba-th-inner {
1595
+ display: flex;
1596
+ align-items: center;
1597
+ justify-content: space-between;
1598
+ gap: 0.35rem;
1599
+ min-width: 0;
1600
+ }
1601
+
1602
+ .ba-th-inner .text {
1603
+ min-width: 0;
1604
+ overflow: hidden;
1605
+ text-overflow: ellipsis;
1606
+ }
1607
+
1608
+ .ba-th-inner .text a {
1609
+ overflow: hidden;
1610
+ text-overflow: ellipsis;
1611
+ white-space: nowrap;
1612
+ }
1613
+
1614
+ .sortoptions {
1615
+ display: inline-flex;
1616
+ flex: 0 0 auto;
1617
+ align-items: center;
1618
+ gap: 0.1rem;
1619
+ margin-inline-start: 0;
1620
+ }
1621
+
1622
+ .sortoptions a {
1623
+ display: inline-grid;
1624
+ place-items: center;
1625
+ width: 1.5rem;
1626
+ height: 1.5rem;
1627
+ border-radius: 0.25rem;
1628
+ color: var(--bs-fg-4);
1629
+ font-size: 0.72rem;
1630
+ line-height: 1;
1631
+ text-decoration: none;
1632
+ }
1633
+
1634
+ .sortoptions a:hover,
1635
+ .sortoptions a:focus {
1636
+ background: var(--bs-bg-2);
1637
+ }
1638
+
1639
+ #result_list thead th .text a {
1640
+ display: block;
1641
+ padding-block: 0.2rem;
1642
+ }
1643
+
1644
+ .sortoptions a:hover,
1645
+ .sortoptions a:focus {
1646
+ color: var(--bs-primary-fg);
1647
+ }
1648
+
1649
+ .sortoptions .sortremove::before {
1650
+ content: "×";
1651
+ font-size: 0.8rem;
1652
+ }
1653
+
1654
+ .sortoptions .toggle.ascending::before {
1655
+ content: "▲";
1656
+ }
1657
+
1658
+ .sortoptions .toggle.descending::before {
1659
+ content: "▼";
1660
+ }
1661
+
1662
+ .sortpriority {
1663
+ display: inline-grid;
1664
+ place-items: center;
1665
+ width: 0.95rem;
1666
+ height: 0.95rem;
1667
+ border-radius: 50%;
1668
+ background: var(--bs-primary-bg-subtle);
1669
+ color: var(--bs-primary-fg-emphasis);
1670
+ font-size: 0.55rem;
1671
+ font-weight: 800;
1672
+ }
1673
+
1674
+ /* Filters */
1675
+
1676
+ .ba-filters {
1677
+ position: sticky;
1678
+ inset-block-start: calc(var(--ba-topbar-height) + 0.75rem);
1679
+ max-height: calc(100vh - var(--ba-topbar-height) - 1.5rem);
1680
+ overflow-y: auto;
1681
+ overscroll-behavior: contain;
1682
+ border: 1px solid var(--ba-border);
1683
+ border-radius: var(--ba-radius);
1684
+ background: var(--ba-surface);
1685
+ box-shadow: var(--ba-shadow-sm);
1686
+ }
1687
+
1688
+ .ba-filters-header {
1689
+ display: flex;
1690
+ flex-wrap: wrap;
1691
+ align-items: center;
1692
+ justify-content: space-between;
1693
+ gap: 0.35rem;
1694
+ padding: 0.7rem 0.85rem;
1695
+ border-block-end: 1px solid var(--ba-border);
1696
+ background: var(--ba-surface-muted);
1697
+ }
1698
+
1699
+ .ba-filters-header h2 {
1700
+ display: flex;
1701
+ align-items: center;
1702
+ gap: 0.4rem;
1703
+ margin: 0;
1704
+ font-size: 0.86rem;
1705
+ }
1706
+
1707
+ .ba-filters-header h2 .ba-icon {
1708
+ width: 0.95rem;
1709
+ height: 0.95rem;
1710
+ color: var(--bs-fg-3);
1711
+ }
1712
+
1713
+ .ba-filters-actions {
1714
+ display: flex;
1715
+ flex-wrap: wrap;
1716
+ gap: 0.35rem;
1717
+ font-size: 0.75rem;
1718
+ }
1719
+
1720
+ .ba-clear-filters {
1721
+ display: inline-flex;
1722
+ align-items: center;
1723
+ gap: 0.2rem;
1724
+ color: var(--bs-danger-fg);
1725
+ font-weight: 600;
1726
+ }
1727
+
1728
+ .ba-clear-filters .ba-icon {
1729
+ width: 0.7rem;
1730
+ height: 0.7rem;
1731
+ }
1732
+
1733
+ .ba-filters-body {
1734
+ padding: 0.15rem 0.85rem 0.55rem;
1735
+ }
1736
+
1737
+ .ba-filter {
1738
+ padding: 0.5rem 0;
1739
+ border-block-end: 1px solid var(--ba-border-muted);
1740
+ }
1741
+
1742
+ .ba-filter:last-child {
1743
+ border-block-end: 0;
1744
+ }
1745
+
1746
+ .ba-filter-summary {
1747
+ display: flex;
1748
+ align-items: center;
1749
+ justify-content: space-between;
1750
+ gap: 0.4rem;
1751
+ padding: 0.15rem 0;
1752
+ color: var(--bs-fg-2);
1753
+ font-size: 0.8rem;
1754
+ font-weight: 600;
1755
+ list-style: none;
1756
+ cursor: pointer;
1757
+ }
1758
+
1759
+ .ba-filter-summary::-webkit-details-marker {
1760
+ display: none;
1761
+ }
1762
+
1763
+ .ba-filter-summary:hover {
1764
+ color: var(--bs-primary-fg);
1765
+ }
1766
+
1767
+ .ba-filter-chevron {
1768
+ width: 0.8rem;
1769
+ height: 0.8rem;
1770
+ color: var(--bs-fg-4);
1771
+ transition: transform 0.15s ease;
1772
+ }
1773
+
1774
+ .ba-filter[open] .ba-filter-chevron {
1775
+ transform: rotate(180deg);
1776
+ }
1777
+
1778
+ .ba-filter-list {
1779
+ display: flex;
1780
+ flex-direction: column;
1781
+ gap: 0.08rem;
1782
+ margin: 0.35rem 0 0;
1783
+ padding: 0;
1784
+ list-style: none;
1785
+ }
1786
+
1787
+ .ba-filter-list a {
1788
+ display: flex;
1789
+ align-items: center;
1790
+ gap: 0.3rem;
1791
+ padding: 0.28rem 0.45rem;
1792
+ border-radius: 0.35rem;
1793
+ color: var(--bs-fg-3);
1794
+ font-size: 0.79rem;
1795
+ }
1796
+
1797
+ .ba-filter-list a:hover,
1798
+ .ba-filter-list a:focus {
1799
+ background: var(--bs-bg-2);
1800
+ color: var(--bs-fg-1);
1801
+ }
1802
+
1803
+ .ba-filter-list li.selected a {
1804
+ background: var(--bs-primary-bg-subtle);
1805
+ color: var(--bs-primary-fg-emphasis);
1806
+ font-weight: 600;
1807
+ }
1808
+
1809
+ .ba-filter-list a .ba-icon,
1810
+ .ba-filter-check {
1811
+ width: 0.72rem;
1812
+ height: 0.72rem;
1813
+ flex: 0 0 0.72rem;
1814
+ }
1815
+
1816
+ /* Actions */
1817
+
1818
+ .ba-actions {
1819
+ display: flex;
1820
+ flex-wrap: wrap;
1821
+ align-items: center;
1822
+ gap: 0.65rem;
1823
+ padding: 0.65rem 0.75rem;
1824
+ border: 1px solid var(--ba-border);
1825
+ border-radius: var(--ba-radius);
1826
+ background: var(--ba-surface);
1827
+ box-shadow: var(--ba-shadow-sm);
1828
+ font-size: 0.82rem;
1829
+ }
1830
+
1831
+ .ba-actions-top,
1832
+ .ba-actions-bottom {
1833
+ width: 100%;
1834
+ }
1835
+
1836
+ .ba-actions-fields {
1837
+ display: flex;
1838
+ flex-wrap: wrap;
1839
+ align-items: center;
1840
+ gap: 0.45rem;
1841
+ }
1842
+
1843
+ .ba-action-label {
1844
+ display: flex;
1845
+ align-items: center;
1846
+ gap: 0.35rem;
1847
+ margin: 0;
1848
+ color: var(--bs-fg-3);
1849
+ font-size: 0.78rem;
1850
+ font-weight: 600;
1851
+ }
1852
+
1853
+ .ba-actions select {
1854
+ min-width: 12rem;
1855
+ min-height: 2.1rem;
1856
+ padding: 0.3rem 2rem 0.3rem 0.55rem;
1857
+ border: 1px solid var(--ba-control-border);
1858
+ border-radius: var(--ba-radius-sm);
1859
+ background-color: var(--bs-bg-body);
1860
+ color: var(--bs-fg-body);
1861
+ font-size: 0.82rem;
1862
+ }
1863
+
1864
+ .ba-actions-selection {
1865
+ margin-inline-start: auto;
1866
+ color: var(--bs-fg-3);
1867
+ font-size: 0.78rem;
1868
+ }
1869
+
1870
+ .ba-actions-selection .question,
1871
+ .ba-actions-selection .clear {
1872
+ display: block;
1873
+ margin-block-start: 0.2rem;
1874
+ }
1875
+
1876
+ .ba-actions-selection a {
1877
+ font-weight: 600;
1878
+ }
1879
+
1880
+ /* Pagination */
1881
+
1882
+ .ba-changelist-footer {
1883
+ display: flex;
1884
+ flex-wrap: wrap;
1885
+ align-items: center;
1886
+ justify-content: space-between;
1887
+ gap: 0.75rem;
1888
+ }
1889
+
1890
+ .ba-pagination {
1891
+ display: flex;
1892
+ flex-wrap: wrap;
1893
+ align-items: center;
1894
+ justify-content: space-between;
1895
+ gap: 0.65rem;
1896
+ width: 100%;
1897
+ padding: 0.25rem 0;
1898
+ font-size: 0.8rem;
1899
+ }
1900
+
1901
+ .ba-pagination .pagination {
1902
+ margin: 0;
1903
+ }
1904
+
1905
+ .ba-pagination .this-page {
1906
+ display: flex;
1907
+ align-items: center;
1908
+ justify-content: center;
1909
+ min-height: var(--bs-pagination-min-height, 2.25rem);
1910
+ padding: var(--bs-pagination-padding-y, 0.35rem) var(--bs-pagination-padding-x, 0.65rem);
1911
+ border: 1px solid var(--bs-primary-bg);
1912
+ background: var(--bs-primary-bg);
1913
+ color: var(--bs-primary-contrast);
1914
+ font-weight: 700;
1915
+ }
1916
+
1917
+ .ba-pagination-summary {
1918
+ display: flex;
1919
+ flex-wrap: wrap;
1920
+ align-items: center;
1921
+ gap: 0.5rem;
1922
+ margin-inline-start: auto;
1923
+ color: var(--bs-fg-3);
1924
+ }
1925
+
1926
+ .ba-pagination-summary .showall {
1927
+ font-weight: 600;
1928
+ }
1929
+
1930
+ .pagination .page-item .page-link,
1931
+ .pagination .page-item .this-page,
1932
+ .pagination .page-item > a,
1933
+ .pagination .page-item > span {
1934
+ display: flex;
1935
+ align-items: center;
1936
+ justify-content: center;
1937
+ min-width: 2.1rem;
1938
+ min-height: 2.1rem;
1939
+ padding: 0.3rem 0.55rem;
1940
+ border: 1px solid var(--ba-control-border);
1941
+ background: var(--bs-bg-body);
1942
+ color: var(--bs-link-color);
1943
+ font-size: 0.8rem;
1944
+ font-weight: 500;
1945
+ text-decoration: none;
1946
+ }
1947
+
1948
+ .pagination .page-item > a:hover,
1949
+ .pagination .page-item > a:focus {
1950
+ border-color: var(--bs-primary-border);
1951
+ background: var(--bs-primary-bg-subtle);
1952
+ color: var(--bs-primary-fg-emphasis);
1953
+ }
1954
+
1955
+ .pagination .page-item > a[aria-current="page"],
1956
+ .pagination .page-item > span[aria-current="page"],
1957
+ .pagination .page-item.active > a,
1958
+ .pagination .page-item.active > span {
1959
+ border-color: var(--bs-primary-bg);
1960
+ background: var(--bs-primary-bg);
1961
+ color: var(--bs-primary-contrast);
1962
+ font-weight: 700;
1963
+ }
1964
+
1965
+ .pagination .page-item:first-child > a,
1966
+ .pagination .page-item:first-child > span {
1967
+ border-start-start-radius: var(--bs-radius-4);
1968
+ border-end-start-radius: var(--bs-radius-4);
1969
+ }
1970
+
1971
+ .pagination .page-item:last-child > a,
1972
+ .pagination .page-item:last-child > span {
1973
+ border-start-end-radius: var(--bs-radius-4);
1974
+ border-end-end-radius: var(--bs-radius-4);
1975
+ }
1976
+
1977
+ .pagination .page-item .page-link,
1978
+ .pagination .page-item .this-page {
1979
+ border-radius: var(--bs-radius-4);
1980
+ }
1981
+
1982
+ /* --------------------------------------------------------------------------
1983
+ 9. Form pages
1984
+ -------------------------------------------------------------------------- */
1985
+
1986
+ .ba-change-form {
1987
+ max-width: 78rem;
1988
+ }
1989
+
1990
+ .ba-fieldsets,
1991
+ .ba-inlines {
1992
+ display: flex;
1993
+ flex-direction: column;
1994
+ gap: 1rem;
1995
+ }
1996
+
1997
+ .ba-fieldset,
1998
+ .ba-inline-fieldset {
1999
+ min-width: 0;
2000
+ margin: 0;
2001
+ padding: 0;
2002
+ overflow: hidden;
2003
+ border: 1px solid var(--ba-border);
2004
+ border-radius: var(--ba-radius);
2005
+ background: var(--ba-surface);
2006
+ box-shadow: var(--ba-shadow-sm);
2007
+ }
2008
+
2009
+ .ba-fieldset-heading,
2010
+ .ba-inline-heading {
2011
+ display: flex;
2012
+ align-items: center;
2013
+ justify-content: space-between;
2014
+ gap: 0.5rem;
2015
+ margin: 0;
2016
+ padding: 0.8rem 1rem;
2017
+ border: 0;
2018
+ border-block-end: 1px solid var(--ba-border);
2019
+ background: var(--ba-surface-muted);
2020
+ color: var(--bs-fg-1);
2021
+ font-size: 0.94rem;
2022
+ font-weight: 700;
2023
+ letter-spacing: -0.01em;
2024
+ }
2025
+
2026
+ .ba-fieldset-description {
2027
+ padding: 0.75rem 1rem;
2028
+ border-block-end: 1px solid var(--ba-border-muted);
2029
+ background: var(--ba-bg-1, var(--bs-bg-1));
2030
+ color: var(--bs-fg-3);
2031
+ font-size: 0.82rem;
2032
+ }
2033
+
2034
+ .ba-collapse > .ba-collapse-summary {
2035
+ display: block;
2036
+ list-style: none;
2037
+ cursor: pointer;
2038
+ }
2039
+
2040
+ .ba-collapse > .ba-collapse-summary::-webkit-details-marker {
2041
+ display: none;
2042
+ }
2043
+
2044
+ .ba-collapse-chevron {
2045
+ width: 0.9rem;
2046
+ height: 0.9rem;
2047
+ color: var(--bs-fg-4);
2048
+ transition: transform 0.15s ease;
2049
+ }
2050
+
2051
+ .ba-collapse[open] > .ba-collapse-summary .ba-collapse-chevron {
2052
+ transform: rotate(180deg);
2053
+ }
2054
+
2055
+ .ba-form-row {
2056
+ margin: 0;
2057
+ padding: 0.85rem 1rem;
2058
+ border-block-end: 1px solid var(--ba-border-muted);
2059
+ }
2060
+
2061
+ .ba-form-row:last-child {
2062
+ border-block-end: 0;
2063
+ }
2064
+
2065
+ .ba-form-row.ba-form-multiline {
2066
+ display: grid;
2067
+ grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
2068
+ gap: 0.85rem;
2069
+ }
2070
+
2071
+ .ba-field {
2072
+ display: flex;
2073
+ flex-direction: column;
2074
+ align-items: stretch;
2075
+ gap: 0.32rem;
2076
+ min-width: 0;
2077
+ }
2078
+
2079
+ .ba-form-row.ba-form-multiline > .ba-field {
2080
+ padding: 0;
2081
+ }
2082
+
2083
+ .ba-field label,
2084
+ .ba-form-group label,
2085
+ .ba-form-group legend,
2086
+ .form-label {
2087
+ margin: 0;
2088
+ color: var(--bs-fg-2);
2089
+ font-size: 0.8rem;
2090
+ font-weight: 650;
2091
+ }
2092
+
2093
+ .required label,
2094
+ label.required {
2095
+ font-weight: 750;
2096
+ }
2097
+
2098
+ .required label::after,
2099
+ label.required::after {
2100
+ margin-inline-start: 0.15rem;
2101
+ color: var(--bs-danger-fg);
2102
+ content: "*";
2103
+ }
2104
+
2105
+ .ba-field input[type="text"],
2106
+ .ba-field input[type="password"],
2107
+ .ba-field input[type="email"],
2108
+ .ba-field input[type="url"],
2109
+ .ba-field input[type="number"],
2110
+ .ba-field input[type="date"],
2111
+ .ba-field input[type="time"],
2112
+ .ba-field input[type="datetime-local"],
2113
+ .ba-field input[type="search"],
2114
+ .ba-field input[type="tel"],
2115
+ .ba-field input[type="file"],
2116
+ .ba-field select,
2117
+ .ba-field textarea,
2118
+ .ba-form-group input[type="text"],
2119
+ .ba-form-group input[type="password"],
2120
+ .ba-form-group input[type="email"],
2121
+ .ba-form-group input[type="url"],
2122
+ .ba-form-group input[type="number"],
2123
+ .ba-form-group input[type="date"],
2124
+ .ba-form-group input[type="time"],
2125
+ .ba-form-group input[type="datetime-local"],
2126
+ .ba-form-group input[type="search"],
2127
+ .ba-form-group input[type="tel"],
2128
+ .ba-form-group select,
2129
+ .ba-form-group textarea,
2130
+ .ba-login-card input[type="text"],
2131
+ .ba-login-card input[type="password"],
2132
+ .ba-password-card input[type="text"],
2133
+ .ba-password-card input[type="password"] {
2134
+ width: 100%;
2135
+ max-width: 46rem;
2136
+ min-height: 2.35rem;
2137
+ padding: 0.45rem 0.65rem;
2138
+ border: 1px solid var(--ba-control-border);
2139
+ border-radius: var(--ba-radius-sm);
2140
+ background: var(--bs-bg-body);
2141
+ color: var(--bs-fg-body);
2142
+ font-family: inherit;
2143
+ font-size: 0.88rem;
2144
+ line-height: 1.35;
2145
+ transition:
2146
+ border-color 0.15s ease,
2147
+ box-shadow 0.15s ease,
2148
+ background-color 0.15s ease;
2149
+ }
2150
+
2151
+ .ba-field select,
2152
+ .ba-form-group select,
2153
+ .ba-actions select {
2154
+ padding-inline-end: 2rem;
2155
+ background-image: var(--ba-select-arrow);
2156
+ background-position: right 0.7rem center;
2157
+ background-repeat: no-repeat;
2158
+ background-size: 0.75rem;
2159
+ }
2160
+
2161
+ [data-bs-theme="dark"] .ba-field select,
2162
+ [data-bs-theme="dark"] .ba-form-group select,
2163
+ [data-bs-theme="dark"] .ba-actions select {
2164
+ background-image: var(--ba-select-arrow-dark);
2165
+ }
2166
+
2167
+ [dir="rtl"] .ba-field select,
2168
+ [dir="rtl"] .ba-form-group select,
2169
+ [dir="rtl"] .ba-actions select {
2170
+ background-position: left 0.7rem center;
2171
+ }
2172
+
2173
+ .ba-field textarea,
2174
+ .ba-form-group textarea {
2175
+ max-width: 54rem;
2176
+ min-height: 6.5rem;
2177
+ resize: vertical;
2178
+ }
2179
+
2180
+ .ba-field select[multiple],
2181
+ .ba-form-group select[multiple] {
2182
+ min-height: 10rem;
2183
+ padding: 0.35rem;
2184
+ }
2185
+
2186
+ .ba-field input[type="file"],
2187
+ .ba-form-group input[type="file"] {
2188
+ padding: 0.35rem;
2189
+ }
2190
+
2191
+ .ba-field input[type="file"]::file-selector-button,
2192
+ .ba-form-group input[type="file"]::file-selector-button {
2193
+ margin: -0.35rem 0.55rem -0.35rem -0.35rem;
2194
+ padding: 0.45rem 0.7rem;
2195
+ border: 0;
2196
+ border-radius: calc(var(--ba-radius-sm) - 2px);
2197
+ background: var(--bs-bg-2);
2198
+ color: var(--bs-fg-2);
2199
+ font-weight: 600;
2200
+ cursor: pointer;
2201
+ }
2202
+
2203
+ .ba-field input:hover,
2204
+ .ba-field select:hover,
2205
+ .ba-field textarea:hover,
2206
+ .ba-form-group input:hover,
2207
+ .ba-form-group select:hover,
2208
+ .ba-form-group textarea:hover,
2209
+ .ba-login-card input:hover,
2210
+ .ba-password-card input:hover {
2211
+ border-color: var(--ba-border-strong);
2212
+ }
2213
+
2214
+ .ba-field input:focus,
2215
+ .ba-field select:focus,
2216
+ .ba-field textarea:focus,
2217
+ .ba-form-group input:focus,
2218
+ .ba-form-group select:focus,
2219
+ .ba-form-group textarea:focus,
2220
+ .ba-login-card input:focus,
2221
+ .ba-password-card input:focus {
2222
+ border-color: var(--bs-primary-border);
2223
+ outline: var(--bs-focus-ring);
2224
+ outline-offset: -1px;
2225
+ background: var(--bs-bg-body);
2226
+ box-shadow: none;
2227
+ }
2228
+
2229
+ .ba-field input[type="checkbox"],
2230
+ .ba-field input[type="radio"],
2231
+ .ba-form-group input[type="checkbox"],
2232
+ .ba-form-group input[type="radio"],
2233
+ .ba-login-card input[type="checkbox"],
2234
+ .ba-password-card input[type="checkbox"] {
2235
+ width: 1rem;
2236
+ height: 1rem;
2237
+ margin: 0;
2238
+ accent-color: var(--bs-primary-bg);
2239
+ vertical-align: middle;
2240
+ }
2241
+
2242
+ .ba-checkbox {
2243
+ display: flex;
2244
+ align-items: center;
2245
+ gap: 0.45rem;
2246
+ }
2247
+
2248
+ .ba-field .datetime,
2249
+ .ba-field .date,
2250
+ .ba-field .time {
2251
+ display: flex;
2252
+ flex-wrap: wrap;
2253
+ align-items: center;
2254
+ gap: 0.4rem;
2255
+ margin: 0;
2256
+ }
2257
+
2258
+ .ba-field .datetime input,
2259
+ .ba-field .date input,
2260
+ .ba-field .time input,
2261
+ .ba-field input.vDateField,
2262
+ .ba-field input.vTimeField {
2263
+ flex: 1 1 9rem;
2264
+ width: auto;
2265
+ max-width: 14rem;
2266
+ }
2267
+
2268
+ .ba-field .datetimeshortcuts {
2269
+ flex: 0 0 auto;
2270
+ }
2271
+
2272
+ .ba-field .datetime br {
2273
+ display: none;
2274
+ }
2275
+
2276
+ .file-upload {
2277
+ margin: 0.25rem 0;
2278
+ font-size: 0.84rem;
2279
+ }
2280
+
2281
+ .clearable-file-input {
2282
+ display: inline-flex;
2283
+ align-items: center;
2284
+ gap: 0.3rem;
2285
+ margin-inline-start: 0.5rem;
2286
+ }
2287
+
2288
+ .ba-checkbox label {
2289
+ margin: 0;
2290
+ font-weight: 500;
2291
+ }
2292
+
2293
+ .ba-field .checkbox label {
2294
+ color: var(--bs-fg-2);
2295
+ font-size: 0.85rem;
2296
+ }
2297
+
2298
+ .ba-form-group {
2299
+ display: flex;
2300
+ flex-direction: column;
2301
+ gap: 0.32rem;
2302
+ margin-block-end: 0.9rem;
2303
+ }
2304
+
2305
+ fieldset.ba-form-group {
2306
+ min-width: 0;
2307
+ padding: 0;
2308
+ border: 0;
2309
+ }
2310
+
2311
+ .ba-radio-group legend {
2312
+ margin: 0;
2313
+ color: var(--bs-fg-2);
2314
+ font-size: 0.8rem;
2315
+ font-weight: 650;
2316
+ }
2317
+
2318
+ .radiolist {
2319
+ display: flex;
2320
+ flex-wrap: wrap;
2321
+ gap: 0.35rem 0.9rem;
2322
+ }
2323
+
2324
+ .radiolist > div,
2325
+ .radiolist label {
2326
+ display: inline-flex;
2327
+ align-items: center;
2328
+ gap: 0.3rem;
2329
+ margin: 0;
2330
+ }
2331
+
2332
+ .ba-form-group:last-of-type {
2333
+ margin-block-end: 0;
2334
+ }
2335
+
2336
+ .helptext,
2337
+ .help,
2338
+ .ba-help {
2339
+ color: var(--ba-text-muted);
2340
+ font-size: 0.75rem;
2341
+ line-height: 1.5;
2342
+ }
2343
+
2344
+ .ba-help ul,
2345
+ div.help ul {
2346
+ margin: 0.25rem 0 0;
2347
+ padding-inline-start: 1.1rem;
2348
+ }
2349
+
2350
+ .errors input,
2351
+ .errors select,
2352
+ .errors textarea,
2353
+ .ba-field.errors input,
2354
+ .ba-field.errors select,
2355
+ .ba-field.errors textarea,
2356
+ .ba-form-group.errors input,
2357
+ .ba-form-group.errors select,
2358
+ .ba-form-group.errors textarea {
2359
+ border-color: var(--bs-danger-border) !important;
2360
+ }
2361
+
2362
+ .errors input:focus,
2363
+ .errors select:focus,
2364
+ .errors textarea:focus,
2365
+ .ba-field.errors input:focus,
2366
+ .ba-field.errors select:focus,
2367
+ .ba-field.errors textarea:focus {
2368
+ outline-color: var(--bs-danger-focus-ring);
2369
+ }
2370
+
2371
+ .ba-readonly,
2372
+ .readonly {
2373
+ padding: 0.4rem 0;
2374
+ color: var(--bs-fg-2);
2375
+ font-size: 0.88rem;
2376
+ overflow-wrap: anywhere;
2377
+ }
2378
+
2379
+ .ba-nested-fieldset {
2380
+ width: 100%;
2381
+ margin: 0;
2382
+ padding: 0.25rem 0;
2383
+ border: 0;
2384
+ }
2385
+
2386
+ .ba-nested-fieldset > legend,
2387
+ .form-row > fieldset > legend {
2388
+ margin: 0 0 0.35rem;
2389
+ padding: 0;
2390
+ color: var(--bs-fg-2);
2391
+ font-size: 0.8rem;
2392
+ font-weight: 650;
2393
+ }
2394
+
2395
+ /* Submit bar */
2396
+
2397
+ .ba-submit-row {
2398
+ display: flex;
2399
+ flex-wrap: wrap;
2400
+ align-items: center;
2401
+ justify-content: space-between;
2402
+ gap: 0.75rem;
2403
+ margin-block-start: 1rem;
2404
+ padding: 0.65rem 0.8rem;
2405
+ border: 1px solid var(--ba-border);
2406
+ border-radius: var(--ba-radius);
2407
+ background: var(--ba-surface);
2408
+ box-shadow: var(--ba-shadow-sm);
2409
+ }
2410
+
2411
+ .ba-submit-row-static {
2412
+ margin-block-start: 1.15rem;
2413
+ padding: 0;
2414
+ border: 0;
2415
+ background: transparent;
2416
+ box-shadow: none;
2417
+ }
2418
+
2419
+ .ba-submit-actions {
2420
+ display: flex;
2421
+ flex-wrap: wrap;
2422
+ align-items: center;
2423
+ gap: 0.45rem;
2424
+ }
2425
+
2426
+ .ba-submit-actions .btn {
2427
+ gap: 0.35rem;
2428
+ }
2429
+
2430
+ .ba-submit-danger {
2431
+ margin-inline-start: auto;
2432
+ }
2433
+
2434
+ /* Inlines */
2435
+
2436
+ .ba-inline-group {
2437
+ margin-block-start: 1rem;
2438
+ }
2439
+
2440
+ .ba-inline-fieldset {
2441
+ overflow: hidden;
2442
+ }
2443
+
2444
+ .ba-inline-heading {
2445
+ cursor: default;
2446
+ }
2447
+
2448
+ .ba-inline-fieldset .ba-collapse > .ba-collapse-summary .ba-inline-heading {
2449
+ border-block-end: 0;
2450
+ }
2451
+
2452
+ .ba-inline-fieldset > .errorlist,
2453
+ .ba-inline-fieldset > .errorlist.nonform {
2454
+ margin: 0;
2455
+ padding: 0.65rem 1rem;
2456
+ }
2457
+
2458
+ .ba-inline-table {
2459
+ margin: 0;
2460
+ border-collapse: separate;
2461
+ border-spacing: 0;
2462
+ font-size: 0.83rem;
2463
+ }
2464
+
2465
+ .ba-inline-table thead th {
2466
+ padding: 0.5rem 0.55rem;
2467
+ border-block-end: 1px solid var(--ba-border);
2468
+ background: var(--ba-surface-muted);
2469
+ color: var(--ba-text-muted);
2470
+ font-size: 0.72rem;
2471
+ font-weight: 800;
2472
+ letter-spacing: 0.035em;
2473
+ text-transform: uppercase;
2474
+ white-space: nowrap;
2475
+ }
2476
+
2477
+ .ba-inline-table tbody td,
2478
+ .ba-inline-table tbody th {
2479
+ padding: 0.42rem 0.55rem;
2480
+ border-block-end: 1px solid var(--ba-border-muted);
2481
+ vertical-align: middle;
2482
+ }
2483
+
2484
+ .ba-inline-table tbody tr:last-child > * {
2485
+ border-block-end: 0;
2486
+ }
2487
+
2488
+ .ba-inline-table .form-row > td,
2489
+ .ba-inline-table .form-row > th {
2490
+ background: transparent;
2491
+ }
2492
+
2493
+ .ba-inline-table .original {
2494
+ min-width: 9rem;
2495
+ color: var(--bs-fg-3);
2496
+ font-size: 0.76rem;
2497
+ }
2498
+
2499
+ .ba-inline-table .original p {
2500
+ margin: 0;
2501
+ }
2502
+
2503
+ .ba-inline-table .field-__str__ {
2504
+ min-width: 10rem;
2505
+ }
2506
+
2507
+ .ba-inline-table input[type="text"],
2508
+ .ba-inline-table input[type="number"],
2509
+ .ba-inline-table input[type="date"],
2510
+ .ba-inline-table input[type="time"],
2511
+ .ba-inline-table input[type="datetime-local"],
2512
+ .ba-inline-table select,
2513
+ .ba-inline-table textarea {
2514
+ min-height: 2rem;
2515
+ padding: 0.28rem 0.45rem;
2516
+ border: 1px solid var(--ba-control-border);
2517
+ border-radius: 0.3rem;
2518
+ background: var(--bs-bg-body);
2519
+ color: var(--bs-fg-body);
2520
+ font-size: 0.82rem;
2521
+ }
2522
+
2523
+ .ba-inline-table textarea {
2524
+ min-height: 3rem;
2525
+ }
2526
+
2527
+ .ba-inline-table select {
2528
+ padding-inline-end: 1.6rem;
2529
+ background-image: var(--ba-select-arrow);
2530
+ background-position: right 0.45rem center;
2531
+ background-repeat: no-repeat;
2532
+ background-size: 0.65rem;
2533
+ }
2534
+
2535
+ [data-bs-theme="dark"] .ba-inline-table select {
2536
+ background-image: var(--ba-select-arrow-dark);
2537
+ }
2538
+
2539
+ .ba-inline-card {
2540
+ padding: 0.9rem 1rem 0.35rem;
2541
+ border-block-end: 1px solid var(--ba-border);
2542
+ }
2543
+
2544
+ .ba-inline-card:last-of-type {
2545
+ border-block-end: 0;
2546
+ }
2547
+
2548
+ .ba-inline-card-header {
2549
+ display: flex;
2550
+ flex-wrap: wrap;
2551
+ align-items: center;
2552
+ justify-content: space-between;
2553
+ gap: 0.5rem;
2554
+ margin-block-end: 0.35rem;
2555
+ padding-block-end: 0.5rem;
2556
+ border-block-end: 1px solid var(--ba-border-muted);
2557
+ }
2558
+
2559
+ .ba-inline-card-header h3 {
2560
+ display: flex;
2561
+ flex-wrap: wrap;
2562
+ align-items: center;
2563
+ gap: 0.35rem;
2564
+ margin: 0;
2565
+ font-size: 0.84rem;
2566
+ font-weight: 600;
2567
+ }
2568
+
2569
+ .ba-inline-card-header .delete {
2570
+ color: var(--bs-danger-fg);
2571
+ font-size: 0.76rem;
2572
+ }
2573
+
2574
+ .ba-inline-card .ba-fieldset {
2575
+ border: 0;
2576
+ border-radius: 0;
2577
+ background: transparent;
2578
+ box-shadow: none;
2579
+ }
2580
+
2581
+ .ba-inline-card .ba-fieldset-heading {
2582
+ padding: 0.35rem 0;
2583
+ border: 0;
2584
+ background: transparent;
2585
+ font-size: 0.78rem;
2586
+ }
2587
+
2588
+ .ba-inline-card .ba-form-row {
2589
+ padding-inline: 0;
2590
+ }
2591
+
2592
+ .add-row td {
2593
+ padding: 0.55rem !important;
2594
+ border-block-end: 0 !important;
2595
+ background: var(--ba-surface-muted);
2596
+ }
2597
+
2598
+ .add-row a,
2599
+ .add-row td > a {
2600
+ display: inline-flex;
2601
+ align-items: center;
2602
+ gap: 0.3rem;
2603
+ padding: 0.35rem 0.6rem;
2604
+ border: 1px dashed var(--ba-border-strong);
2605
+ border-radius: var(--ba-radius-sm);
2606
+ color: var(--bs-primary-fg);
2607
+ font-size: 0.8rem;
2608
+ font-weight: 600;
2609
+ }
2610
+
2611
+ .add-row a::before {
2612
+ content: "+";
2613
+ font-size: 1rem;
2614
+ font-weight: 800;
2615
+ line-height: 1;
2616
+ }
2617
+
2618
+ .add-row a:hover,
2619
+ .add-row a:focus {
2620
+ border-style: solid;
2621
+ background: var(--bs-primary-bg-subtle);
2622
+ color: var(--bs-primary-fg-emphasis);
2623
+ }
2624
+
2625
+ .inline-deletelink,
2626
+ .delete-row {
2627
+ display: inline-flex;
2628
+ align-items: center;
2629
+ gap: 0.25rem;
2630
+ color: var(--bs-danger-fg);
2631
+ font-size: 0.78rem;
2632
+ font-weight: 600;
2633
+ }
2634
+
2635
+ .inline-deletelink:hover,
2636
+ .inline-deletelink:focus,
2637
+ .delete-row:hover,
2638
+ .delete-row:focus {
2639
+ color: color-mix(in oklch, var(--bs-danger-fg) 80%, #000);
2640
+ text-decoration: underline;
2641
+ }
2642
+
2643
+ .empty-form {
2644
+ display: none !important;
2645
+ }
2646
+
2647
+ .inlinechangelink,
2648
+ .inlineviewlink {
2649
+ margin-inline-start: 0.35rem;
2650
+ font-size: 0.75rem;
2651
+ font-weight: 600;
2652
+ }
2653
+
2654
+ .row-form-errors td {
2655
+ background: var(--bs-danger-bg-subtle) !important;
2656
+ color: var(--bs-danger-fg-emphasis);
2657
+ }
2658
+
2659
+ /* Related widgets and Select2 */
2660
+
2661
+ .related-widget-wrapper,
2662
+ .ba-related-widget {
2663
+ display: flex;
2664
+ align-items: center;
2665
+ gap: 0.35rem;
2666
+ width: 100%;
2667
+ }
2668
+
2669
+ .related-widget-wrapper > select,
2670
+ .related-widget-wrapper > input,
2671
+ .related-widget-wrapper > .select2-container {
2672
+ flex: 1 1 auto;
2673
+ min-width: 0;
2674
+ max-width: 100%;
2675
+ }
2676
+
2677
+ .ba-raw-id {
2678
+ display: flex;
2679
+ align-items: center;
2680
+ gap: 0.35rem;
2681
+ width: 100%;
2682
+ }
2683
+
2684
+ .ba-raw-id > input {
2685
+ flex: 1 1 auto;
2686
+ min-width: 0;
2687
+ }
2688
+
2689
+ .ba-raw-id .related-lookup {
2690
+ flex: 0 0 auto;
2691
+ width: 2.1rem;
2692
+ height: 2.1rem;
2693
+ padding: 0;
2694
+ }
2695
+
2696
+ .ba-related-links {
2697
+ display: inline-flex;
2698
+ align-items: center;
2699
+ gap: 0.25rem;
2700
+ flex: 0 0 auto;
2701
+ }
2702
+
2703
+ .ba-related-links .btn,
2704
+ .related-widget-wrapper > .related-widget-wrapper-link {
2705
+ width: 2rem;
2706
+ height: 2rem;
2707
+ padding: 0;
2708
+ }
2709
+
2710
+ .ba-related-links .ba-icon,
2711
+ .related-widget-wrapper > .related-widget-wrapper-link .ba-icon {
2712
+ width: 0.85rem;
2713
+ height: 0.85rem;
2714
+ }
2715
+
2716
+ .selector {
2717
+ display: flex;
2718
+ gap: 0.5rem;
2719
+ }
2720
+
2721
+ .selector select {
2722
+ height: 13.5rem;
2723
+ border-radius: var(--ba-radius-sm);
2724
+ }
2725
+
2726
+ .selector-available,
2727
+ .selector-chosen {
2728
+ min-width: 0;
2729
+ }
2730
+
2731
+ .selector-available-title,
2732
+ .selector-chosen-title {
2733
+ padding: 0.45rem 0.55rem;
2734
+ border: 1px solid var(--ba-border);
2735
+ border-start-start-radius: var(--ba-radius-sm);
2736
+ border-start-end-radius: var(--ba-radius-sm);
2737
+ background: var(--ba-surface-muted);
2738
+ color: var(--bs-fg-2);
2739
+ font-size: 0.78rem;
2740
+ font-weight: 600;
2741
+ }
2742
+
2743
+ .selector-chosen-title {
2744
+ background: var(--bs-primary-bg-subtle);
2745
+ color: var(--bs-primary-fg-emphasis);
2746
+ }
2747
+
2748
+ .selector .selector-filter {
2749
+ padding: 0.4rem 0.55rem;
2750
+ border-color: var(--ba-border);
2751
+ font-size: 0.72rem;
2752
+ }
2753
+
2754
+ .selector .selector-filter input {
2755
+ width: 100%;
2756
+ min-height: 1.85rem;
2757
+ padding: 0.2rem 0.4rem;
2758
+ border: 1px solid var(--ba-control-border);
2759
+ border-radius: 0.3rem;
2760
+ background: var(--bs-bg-body);
2761
+ color: var(--bs-fg-body);
2762
+ }
2763
+
2764
+ .selector .selector-chooser {
2765
+ align-self: center;
2766
+ padding: 0.25rem;
2767
+ border-radius: 999px;
2768
+ background: var(--bs-bg-2);
2769
+ }
2770
+
2771
+ .selector-add,
2772
+ .selector-remove {
2773
+ border-radius: 0.25rem;
2774
+ }
2775
+
2776
+ .selector-chooseall,
2777
+ .selector-clearall {
2778
+ margin-block-start: 0.35rem;
2779
+ padding: 0.3rem 0.5rem;
2780
+ border-radius: 0.35rem;
2781
+ font-size: 0.72rem;
2782
+ }
2783
+
2784
+ .selector-chooseall:disabled,
2785
+ .selector-clearall:disabled {
2786
+ opacity: 1;
2787
+ border: 1px solid var(--ba-control-border);
2788
+ background: var(--bs-bg-2);
2789
+ color: var(--bs-fg-3);
2790
+ }
2791
+
2792
+ .datetimeshortcuts {
2793
+ display: inline-flex;
2794
+ align-items: center;
2795
+ gap: 0.25rem;
2796
+ margin-inline-start: 0.35rem;
2797
+ }
2798
+
2799
+ .datetimeshortcuts button {
2800
+ border-color: var(--ba-border);
2801
+ }
2802
+
2803
+ .timezonewarning {
2804
+ display: block;
2805
+ margin-block-start: 0.25rem;
2806
+ color: var(--bs-fg-3);
2807
+ font-size: 0.72rem;
2808
+ }
2809
+
2810
+ .calendarbox,
2811
+ .calendar-shortcuts {
2812
+ z-index: 1080;
2813
+ border: 1px solid var(--ba-border);
2814
+ border-radius: var(--ba-radius-sm);
2815
+ background: var(--ba-surface);
2816
+ box-shadow: var(--ba-shadow-lg);
2817
+ }
2818
+
2819
+ .calendarbox::backdrop,
2820
+ .clockbox::backdrop {
2821
+ background: rgb(7 15 25 / 0.25);
2822
+ }
2823
+
2824
+ .calendarbox {
2825
+ overflow: hidden;
2826
+ }
2827
+
2828
+ .calendar caption,
2829
+ .calendarbox h2 {
2830
+ background: var(--ba-surface-muted);
2831
+ color: var(--bs-fg-1);
2832
+ font-size: 0.8rem;
2833
+ font-weight: 700;
2834
+ }
2835
+
2836
+ .calendar td a:hover,
2837
+ .calendar td a:focus {
2838
+ border-radius: 0.25rem;
2839
+ background: var(--bs-primary-bg-subtle);
2840
+ color: var(--bs-primary-fg-emphasis);
2841
+ }
2842
+
2843
+ .calendar td.selected a {
2844
+ border-radius: 0.25rem;
2845
+ background: var(--bs-primary-bg);
2846
+ color: var(--bs-primary-contrast);
2847
+ }
2848
+
2849
+ .calendar-cancel {
2850
+ border: 0;
2851
+ border-block-start: 1px solid var(--ba-border);
2852
+ border-radius: 0;
2853
+ background: var(--ba-surface-muted);
2854
+ color: var(--bs-fg-2);
2855
+ }
2856
+
2857
+ /* --------------------------------------------------------------------------
2858
+ 10. Login
2859
+ -------------------------------------------------------------------------- */
2860
+
2861
+ body.login .ba-topbar-inner {
2862
+ min-height: 58px;
2863
+ }
2864
+
2865
+ .ba-login {
2866
+ display: grid;
2867
+ grid-template-columns: minmax(0, 1fr) minmax(22rem, 27rem);
2868
+ gap: 2rem;
2869
+ align-items: center;
2870
+ width: 100%;
2871
+ max-width: 68rem;
2872
+ min-height: calc(100vh - var(--ba-topbar-height) - 5rem);
2873
+ margin-inline: auto;
2874
+ padding: 1.5rem 0 2.5rem;
2875
+ }
2876
+
2877
+ .ba-login-brand {
2878
+ position: relative;
2879
+ overflow: hidden;
2880
+ padding: 2.5rem;
2881
+ border-radius: calc(var(--ba-radius) + 0.25rem);
2882
+ background:
2883
+ radial-gradient(circle at 18% 18%, rgb(201 155 84 / 0.2), transparent 42%),
2884
+ var(--ba-topbar-bg);
2885
+ color: var(--ba-topbar-fg);
2886
+ box-shadow: var(--ba-shadow-lg);
2887
+ }
2888
+
2889
+ .ba-login-brand::after {
2890
+ position: absolute;
2891
+ inset-block-end: -4rem;
2892
+ inset-inline-end: -4rem;
2893
+ width: 12rem;
2894
+ height: 12rem;
2895
+ border: 1px solid rgb(255 255 255 / 0.14);
2896
+ border-radius: 50%;
2897
+ content: "";
2898
+ }
2899
+
2900
+ .ba-login-brand-mark {
2901
+ display: grid;
2902
+ place-items: center;
2903
+ width: 3rem;
2904
+ height: 3rem;
2905
+ border-radius: 0.8rem;
2906
+ background: #fff;
2907
+ color: var(--ba-topbar-bg);
2908
+ font-size: 1.3rem;
2909
+ font-weight: 800;
2910
+ }
2911
+
2912
+ .ba-login-brand h1 {
2913
+ margin: 1.4rem 0 0.6rem;
2914
+ color: #fff;
2915
+ font-size: clamp(1.6rem, 3vw, 2.1rem);
2916
+ letter-spacing: -0.035em;
2917
+ }
2918
+
2919
+ .ba-login-brand p {
2920
+ max-width: 34ch;
2921
+ margin: 0;
2922
+ color: var(--ba-topbar-muted);
2923
+ font-size: 0.95rem;
2924
+ }
2925
+
2926
+ .ba-login-facts {
2927
+ display: flex;
2928
+ flex-direction: column;
2929
+ gap: 0.55rem;
2930
+ margin: 1.6rem 0 0;
2931
+ padding: 0;
2932
+ list-style: none;
2933
+ }
2934
+
2935
+ .ba-login-facts li {
2936
+ display: flex;
2937
+ align-items: center;
2938
+ gap: 0.55rem;
2939
+ color: var(--ba-topbar-fg);
2940
+ font-size: 0.85rem;
2941
+ }
2942
+
2943
+ .ba-login-facts .ba-icon {
2944
+ width: 1rem;
2945
+ height: 1rem;
2946
+ color: var(--ba-gold);
2947
+ }
2948
+
2949
+ .ba-login-card {
2950
+ width: 100%;
2951
+ border: 1px solid var(--ba-border);
2952
+ border-radius: var(--ba-radius);
2953
+ background: var(--ba-surface);
2954
+ box-shadow: var(--ba-shadow-lg);
2955
+ }
2956
+
2957
+ .ba-login-card .card-body {
2958
+ padding: 1.75rem;
2959
+ }
2960
+
2961
+ .ba-login-title {
2962
+ margin: 0 0 0.25rem;
2963
+ font-size: 1.6rem;
2964
+ letter-spacing: -0.03em;
2965
+ }
2966
+
2967
+ .ba-login-card .ba-muted {
2968
+ margin-block-end: 1.2rem;
2969
+ font-size: 0.87rem;
2970
+ }
2971
+
2972
+ .ba-login-card .errorlist {
2973
+ margin-block-start: 0.3rem;
2974
+ }
2975
+
2976
+ .ba-login-reset {
2977
+ margin-block: 0.85rem 1.1rem;
2978
+ font-size: 0.8rem;
2979
+ font-weight: 500;
2980
+ }
2981
+
2982
+ .ba-login-card .ba-form-group:last-of-type {
2983
+ margin-block-end: 1rem;
2984
+ }
2985
+
2986
+ .ba-login-submit {
2987
+ display: flex;
2988
+ align-items: center;
2989
+ justify-content: center;
2990
+ gap: 0.5rem;
2991
+ width: 100%;
2992
+ margin-block-start: 0.25rem;
2993
+ }
2994
+
2995
+ .ba-login-alert {
2996
+ margin-block-end: 1rem;
2997
+ }
2998
+
2999
+ body.login .ba-footer {
3000
+ padding-block-start: 0;
3001
+ border-block-start: 0;
3002
+ }
3003
+
3004
+ /* --------------------------------------------------------------------------
3005
+ 11. Delete, history, password, error and message cards
3006
+ -------------------------------------------------------------------------- */
3007
+
3008
+ .ba-delete,
3009
+ .ba-password,
3010
+ .ba-message-card,
3011
+ .ba-error-card {
3012
+ max-width: 52rem;
3013
+ }
3014
+
3015
+ .ba-confirm-card,
3016
+ .ba-password-card,
3017
+ .ba-message-card,
3018
+ .ba-error-card,
3019
+ .ba-history-card {
3020
+ overflow: hidden;
3021
+ border: 1px solid var(--ba-border);
3022
+ border-radius: var(--ba-radius);
3023
+ background: var(--ba-surface);
3024
+ box-shadow: var(--ba-shadow-sm);
3025
+ }
3026
+
3027
+ .ba-confirm-card .card-body,
3028
+ .ba-password-card .card-body,
3029
+ .ba-message-card .card-body,
3030
+ .ba-error-card .card-body {
3031
+ padding: 1.5rem;
3032
+ }
3033
+
3034
+ .ba-confirm-icon {
3035
+ display: grid;
3036
+ place-items: center;
3037
+ width: 2.5rem;
3038
+ height: 2.5rem;
3039
+ margin-block-end: 0.75rem;
3040
+ border-radius: 50%;
3041
+ background: var(--bs-danger-bg-subtle);
3042
+ color: var(--bs-danger-fg-emphasis);
3043
+ }
3044
+
3045
+ .ba-confirm-icon .ba-icon {
3046
+ width: 1.1rem;
3047
+ height: 1.1rem;
3048
+ }
3049
+
3050
+ .ba-confirm-icon.ba-confirm-success {
3051
+ background: var(--bs-success-bg-subtle);
3052
+ color: var(--bs-success-fg-emphasis);
3053
+ }
3054
+
3055
+ .ba-confirm-card h1,
3056
+ .ba-confirm-card h2,
3057
+ .ba-password-card h1,
3058
+ .ba-password-card h2,
3059
+ .ba-message-card h2,
3060
+ .ba-error-card h2 {
3061
+ margin: 0 0 0.5rem;
3062
+ font-size: 1.2rem;
3063
+ letter-spacing: -0.02em;
3064
+ }
3065
+
3066
+ .ba-confirm-card h3,
3067
+ .ba-password-card h3,
3068
+ .ba-message-card h3,
3069
+ .ba-error-card h3 {
3070
+ margin: 1rem 0 0.4rem;
3071
+ font-size: 0.95rem;
3072
+ }
3073
+
3074
+ .ba-confirm-card p,
3075
+ .ba-password-card p,
3076
+ .ba-message-card p,
3077
+ .ba-error-card p {
3078
+ color: var(--ba-text-muted);
3079
+ font-size: 0.88rem;
3080
+ }
3081
+
3082
+ .ba-confirm-actions {
3083
+ display: flex;
3084
+ flex-wrap: wrap;
3085
+ align-items: center;
3086
+ gap: 0.5rem;
3087
+ margin-block-start: 1.1rem;
3088
+ padding-block-start: 1rem;
3089
+ border-block-start: 1px solid var(--ba-border);
3090
+ }
3091
+
3092
+ .ba-object-list {
3093
+ max-height: 20rem;
3094
+ margin: 0.75rem 0;
3095
+ padding-inline-start: 1.2rem;
3096
+ overflow-y: auto;
3097
+ color: var(--ba-text-muted);
3098
+ font-size: 0.82rem;
3099
+ }
3100
+
3101
+ .ba-object-list li {
3102
+ margin-block: 0.15rem;
3103
+ }
3104
+
3105
+ .ba-error-code {
3106
+ display: block;
3107
+ margin-block-end: 0.25rem;
3108
+ color: var(--bs-primary-fg);
3109
+ font-size: 2.75rem;
3110
+ font-weight: 800;
3111
+ letter-spacing: -0.05em;
3112
+ line-height: 1;
3113
+ }
3114
+
3115
+ .ba-password {
3116
+ max-width: 42rem;
3117
+ }
3118
+
3119
+ .ba-history-card .card-body {
3120
+ padding: 0;
3121
+ }
3122
+
3123
+ .ba-history-card .ba-pagination {
3124
+ padding-inline: 0.85rem;
3125
+ }
3126
+
3127
+ .ba-history-card .ba-empty {
3128
+ margin: 1rem;
3129
+ }
3130
+
3131
+ .ba-message-card .card-body,
3132
+ .ba-error-card .card-body {
3133
+ text-align: center;
3134
+ }
3135
+
3136
+ .ba-message-card .ba-confirm-icon,
3137
+ .ba-error-card .ba-confirm-icon {
3138
+ margin-inline: auto;
3139
+ }
3140
+
3141
+ .ba-message-card .btn,
3142
+ .ba-error-card .btn {
3143
+ margin-block-start: 0.5rem;
3144
+ }
3145
+
3146
+ .ba-callout {
3147
+ margin-block-end: 1rem;
3148
+ }
3149
+
3150
+ /* --------------------------------------------------------------------------
3151
+ 12. Popups
3152
+ -------------------------------------------------------------------------- */
3153
+
3154
+ body.popup {
3155
+ background: var(--ba-surface);
3156
+ }
3157
+
3158
+ body.popup #main {
3159
+ display: block;
3160
+ max-width: none;
3161
+ }
3162
+
3163
+ body.popup .content {
3164
+ padding: 1rem;
3165
+ }
3166
+
3167
+ body.popup .titles-and-tools {
3168
+ margin-block-end: 0.75rem;
3169
+ }
3170
+
3171
+ body.popup .ba-submit-row {
3172
+ position: static;
3173
+ box-shadow: none;
3174
+ }
3175
+
3176
+ /* --------------------------------------------------------------------------
3177
+ 13. Responsive
3178
+ -------------------------------------------------------------------------- */
3179
+
3180
+ @media (max-width: 1199.98px) {
3181
+ .ba-dashboard {
3182
+ grid-template-columns: minmax(0, 1fr);
3183
+ }
3184
+
3185
+ .ba-changelist-layout {
3186
+ display: flex;
3187
+ flex-direction: column;
3188
+ }
3189
+
3190
+ .ba-filters {
3191
+ display: none;
3192
+ order: -1;
3193
+ position: static;
3194
+ max-height: none;
3195
+ overflow: visible;
3196
+ margin-block-end: 0.85rem;
3197
+ }
3198
+
3199
+ #changelist.ba-filters-open .ba-filters {
3200
+ display: block;
3201
+ }
3202
+
3203
+ .ba-filters-toggle-row {
3204
+ display: flex;
3205
+ }
3206
+
3207
+ .ba-filters-close {
3208
+ display: inline-flex;
3209
+ }
3210
+ }
3211
+
3212
+ @media (max-width: 1023.98px) {
3213
+ #main {
3214
+ display: block;
3215
+ }
3216
+
3217
+ #main.shifted::before {
3218
+ display: none;
3219
+ }
3220
+
3221
+ .ba-sidebar {
3222
+ position: fixed;
3223
+ inset-block-start: var(--ba-topbar-height);
3224
+ inset-block-end: 0;
3225
+ inset-inline-start: 0;
3226
+ z-index: 1045;
3227
+ width: min(86vw, 20rem);
3228
+ max-height: none;
3229
+ margin: 0;
3230
+ padding-block-end: 2rem;
3231
+ border-inline-end: 1px solid var(--ba-border);
3232
+ background: var(--ba-surface);
3233
+ box-shadow: 0.75rem 0 2rem rgb(0 0 0 / 0.18);
3234
+ visibility: visible;
3235
+ transform: translateX(-105%);
3236
+ transition: transform 0.2s ease;
3237
+ }
3238
+
3239
+ [dir="rtl"] .ba-sidebar {
3240
+ box-shadow: -0.75rem 0 2rem rgb(0 0 0 / 0.18);
3241
+ transform: translateX(105%);
3242
+ }
3243
+
3244
+ #main.shifted > .ba-sidebar {
3245
+ transform: translateX(0);
3246
+ }
3247
+
3248
+ .ba-sidebar-mobile-header {
3249
+ display: flex;
3250
+ align-items: center;
3251
+ justify-content: space-between;
3252
+ gap: 0.5rem;
3253
+ margin-block-end: 0.65rem;
3254
+ padding: 0 0.3rem;
3255
+ }
3256
+
3257
+ .ba-sidebar-backdrop {
3258
+ position: fixed;
3259
+ inset: var(--ba-topbar-height) 0 0;
3260
+ z-index: 1040;
3261
+ background: rgb(7 15 25 / 0.5);
3262
+ backdrop-filter: blur(2px);
3263
+ }
3264
+
3265
+ .ba-sidebar-backdrop[hidden] {
3266
+ display: none;
3267
+ }
3268
+
3269
+ body.ba-sidebar-open {
3270
+ overflow: hidden;
3271
+ }
3272
+
3273
+ .content {
3274
+ padding-inline: 0.9rem;
3275
+ }
3276
+
3277
+ .ba-breadcrumb-nav {
3278
+ padding-inline: 0.9rem;
3279
+ }
3280
+
3281
+ .ba-login {
3282
+ grid-template-columns: minmax(0, 1fr);
3283
+ max-width: 30rem;
3284
+ min-height: 0;
3285
+ padding-block: 1rem 2rem;
3286
+ }
3287
+
3288
+ .ba-login-brand {
3289
+ padding: 1.4rem;
3290
+ }
3291
+
3292
+ .ba-login-facts {
3293
+ display: none;
3294
+ }
3295
+
3296
+ .ba-login-brand h1 {
3297
+ margin-block-start: 0.9rem;
3298
+ font-size: 1.5rem;
3299
+ }
3300
+ }
3301
+
3302
+ @media (max-width: 767.98px) {
3303
+ :root {
3304
+ --ba-topbar-height: 58px;
3305
+ }
3306
+
3307
+ .ba-topbar-inner {
3308
+ gap: 0.5rem;
3309
+ padding-inline: 0.75rem;
3310
+ }
3311
+
3312
+ .ba-brand-subtitle {
3313
+ display: none;
3314
+ }
3315
+
3316
+ .ba-user-name {
3317
+ display: none;
3318
+ }
3319
+
3320
+ .ba-user-menu-button {
3321
+ padding-inline: 0.25rem;
3322
+ }
3323
+
3324
+ .ba-brand-title {
3325
+ max-width: 11rem;
3326
+ font-size: 0.9rem;
3327
+ }
3328
+
3329
+ .ba-page-title {
3330
+ font-size: 1.35rem;
3331
+ }
3332
+
3333
+ .ba-content,
3334
+ .content {
3335
+ padding-block-start: 0.85rem;
3336
+ }
3337
+
3338
+ .ba-toolbar,
3339
+ .ba-actions {
3340
+ padding: 0.55rem;
3341
+ }
3342
+
3343
+ .ba-actions-selection {
3344
+ width: 100%;
3345
+ margin-inline-start: 0;
3346
+ }
3347
+
3348
+ .ba-actions-fields {
3349
+ width: 100%;
3350
+ }
3351
+
3352
+ .ba-actions-fields .btn {
3353
+ width: 100%;
3354
+ }
3355
+
3356
+ .ba-actions select {
3357
+ flex: 1 1 auto;
3358
+ min-width: 0;
3359
+ }
3360
+
3361
+ .ba-form-row {
3362
+ padding: 0.75rem;
3363
+ }
3364
+
3365
+ .ba-fieldset-heading,
3366
+ .ba-inline-heading {
3367
+ padding: 0.7rem 0.75rem;
3368
+ }
3369
+
3370
+ .ba-submit-row {
3371
+ flex-direction: column;
3372
+ align-items: stretch;
3373
+ }
3374
+
3375
+ .ba-submit-actions {
3376
+ flex-direction: column;
3377
+ align-items: stretch;
3378
+ }
3379
+
3380
+ .ba-submit-actions .btn,
3381
+ .ba-submit-danger .btn,
3382
+ .ba-list-actions .btn {
3383
+ width: 100%;
3384
+ justify-content: center;
3385
+ }
3386
+
3387
+ .ba-submit-danger {
3388
+ margin-inline-start: 0;
3389
+ }
3390
+
3391
+ .ba-pagination {
3392
+ flex-direction: column;
3393
+ align-items: flex-start;
3394
+ }
3395
+
3396
+ .ba-pagination-summary {
3397
+ margin-inline-start: 0;
3398
+ }
3399
+
3400
+ .ba-login-card .card-body {
3401
+ padding: 1.25rem;
3402
+ }
3403
+
3404
+ .selector {
3405
+ flex-direction: column;
3406
+ }
3407
+
3408
+ .selector-available,
3409
+ .selector-chosen {
3410
+ width: 100%;
3411
+ }
3412
+
3413
+ .selector ul.selector-chooser {
3414
+ width: 100%;
3415
+ flex-direction: row;
3416
+ justify-content: center;
3417
+ margin-block: 0.35rem;
3418
+ transform: none;
3419
+ }
3420
+
3421
+ .selector-chooser li {
3422
+ display: inline-flex;
3423
+ }
3424
+
3425
+ .selector select {
3426
+ height: 10rem;
3427
+ }
3428
+
3429
+ .related-widget-wrapper {
3430
+ flex-wrap: wrap;
3431
+ }
3432
+
3433
+ .related-widget-wrapper > select,
3434
+ .related-widget-wrapper > .select2-container {
3435
+ flex-basis: 100%;
3436
+ }
3437
+ }
3438
+
3439
+ @media (max-width: 479.98px) {
3440
+ .ba-brand-text {
3441
+ position: absolute;
3442
+ width: 1px;
3443
+ height: 1px;
3444
+ padding: 0;
3445
+ overflow: hidden;
3446
+ clip: rect(0, 0, 0, 0);
3447
+ clip-path: inset(50%);
3448
+ white-space: nowrap;
3449
+ }
3450
+
3451
+ .ba-app-grid {
3452
+ grid-template-columns: minmax(0, 1fr);
3453
+ }
3454
+
3455
+ .ba-search-field {
3456
+ flex-wrap: wrap;
3457
+ }
3458
+
3459
+ .ba-search-icon {
3460
+ inset-block-start: 1.18rem;
3461
+ transform: translateY(-50%);
3462
+ }
3463
+
3464
+ .ba-search-field .btn {
3465
+ width: 100%;
3466
+ }
3467
+
3468
+ .ba-filters-header {
3469
+ align-items: flex-start;
3470
+ }
3471
+ }
3472
+
3473
+ @media (hover: none) {
3474
+ .ba-model-actions,
3475
+ .ba-nav-link {
3476
+ opacity: 1;
3477
+ }
3478
+ }
3479
+
3480
+ /* Small secondary copy needs a stronger contrast than --bs-fg-4 provides. */
3481
+ .ba-page-subtitle,
3482
+ .ba-footer,
3483
+ .ba-action-label,
3484
+ .ba-nav-app-title,
3485
+ .ba-filter-list a,
3486
+ .ba-actions-selection,
3487
+ .ba-pagination-summary,
3488
+ .ba-date-hierarchy,
3489
+ .ba-search-count,
3490
+ .ba-search-help,
3491
+ .ba-timeline-meta,
3492
+ .ba-user-menu .menu-header,
3493
+ .help,
3494
+ .ba-help,
3495
+ .quiet,
3496
+ small.quiet {
3497
+ color: var(--ba-text-muted);
3498
+ }
3499
+
3500
+ @media print {
3501
+ .ba-topbar,
3502
+ .ba-breadcrumb-nav,
3503
+ .ba-sidebar,
3504
+ .ba-sidebar-backdrop,
3505
+ .ba-footer,
3506
+ .ba-filters,
3507
+ .ba-object-tools,
3508
+ .ba-actions,
3509
+ .ba-submit-row,
3510
+ .ba-search,
3511
+ .ba-toolbar,
3512
+ .ba-pagination {
3513
+ display: none !important;
3514
+ }
3515
+
3516
+ #main,
3517
+ .content {
3518
+ display: block;
3519
+ max-width: none;
3520
+ padding: 0;
3521
+ }
3522
+
3523
+ .ba-fieldset,
3524
+ .ba-inline-fieldset,
3525
+ .ba-table-wrap,
3526
+ .card {
3527
+ border-color: #bbb;
3528
+ box-shadow: none;
3529
+ }
3530
+ }