bullframe.css 5.0.1 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/CHANGELOG.md +276 -234
  2. package/LICENSE +2 -2
  3. package/README.md +34 -455
  4. package/dist/css/bullframe-classless-dark.css +1218 -932
  5. package/dist/css/bullframe-classless-dark.css.map +1 -1
  6. package/dist/css/bullframe-classless-dark.min.css +1 -3
  7. package/dist/css/bullframe-classless-dark.min.css.map +1 -1
  8. package/dist/css/bullframe-classless-system-default.css +1316 -936
  9. package/dist/css/bullframe-classless-system-default.css.map +1 -1
  10. package/dist/css/bullframe-classless-system-default.min.css +1 -3
  11. package/dist/css/bullframe-classless-system-default.min.css.map +1 -1
  12. package/dist/css/bullframe-classless.css +1038 -715
  13. package/dist/css/bullframe-classless.css.map +1 -1
  14. package/dist/css/bullframe-classless.min.css +1 -3
  15. package/dist/css/bullframe-classless.min.css.map +1 -1
  16. package/dist/css/bullframe-dark.css +1943 -1459
  17. package/dist/css/bullframe-dark.css.map +1 -1
  18. package/dist/css/bullframe-dark.min.css +1 -3
  19. package/dist/css/bullframe-dark.min.css.map +1 -1
  20. package/dist/css/bullframe-system-default.css +2005 -1489
  21. package/dist/css/bullframe-system-default.css.map +1 -1
  22. package/dist/css/bullframe-system-default.min.css +1 -3
  23. package/dist/css/bullframe-system-default.min.css.map +1 -1
  24. package/dist/css/bullframe-utilities.css +769 -491
  25. package/dist/css/bullframe-utilities.css.map +1 -1
  26. package/dist/css/bullframe-utilities.min.css +1 -2
  27. package/dist/css/bullframe-utilities.min.css.map +1 -1
  28. package/dist/css/bullframe.css +1911 -1383
  29. package/dist/css/bullframe.css.map +1 -1
  30. package/dist/css/bullframe.min.css +1 -3
  31. package/dist/css/bullframe.min.css.map +1 -1
  32. package/package.json +71 -29
  33. package/.browserslistrc +0 -3
  34. package/.editorconfig +0 -15
  35. package/.htmlhintrc +0 -12
  36. package/.prettierignore +0 -1
  37. package/.stylelintignore +0 -3
  38. package/.stylelintrc.json +0 -26
  39. package/dist/css/bullframe-classless-dark-prefers.css +0 -1340
  40. package/dist/css/bullframe-classless-dark-prefers.css.map +0 -1
  41. package/dist/css/bullframe-classless-dark-prefers.min.css +0 -3
  42. package/dist/css/bullframe-classless-dark-prefers.min.css.map +0 -1
  43. package/dist/css/bullframe-dark-prefers.css +0 -2356
  44. package/dist/css/bullframe-dark-prefers.css.map +0 -1
  45. package/dist/css/bullframe-dark-prefers.min.css +0 -3
  46. package/dist/css/bullframe-dark-prefers.min.css.map +0 -1
  47. package/dist/docs/demo/css/style.css +0 -131
  48. package/dist/docs/demo/icons/android-chrome-192x192.png +0 -0
  49. package/dist/docs/demo/icons/android-chrome-384x384.png +0 -0
  50. package/dist/docs/demo/icons/apple-touch-icon.png +0 -0
  51. package/dist/docs/demo/icons/favicon-16x16.png +0 -0
  52. package/dist/docs/demo/icons/favicon-32x32.png +0 -0
  53. package/dist/docs/demo/icons/favicon.ico +0 -0
  54. package/dist/docs/demo/icons/mstile-150x150.png +0 -0
  55. package/dist/docs/demo/icons/safari-pinned-tab.svg +0 -28
  56. package/dist/docs/demo/images/logo.png +0 -0
  57. package/dist/docs/demo/images/placeholder-img-130x140.jpg +0 -0
  58. package/dist/docs/demo/images/placeholder-img-16x16.jpg +0 -0
  59. package/dist/docs/demo/images/placeholder-img-800x400.jpg +0 -0
  60. package/dist/docs/demo/images/video-poster.png +0 -0
  61. package/dist/docs/demo/index.html +0 -1152
  62. package/dist/docs/github-readme/bf-logo-full-dark.png +0 -0
  63. package/dist/docs/github-readme/bf-logo-full-light.png +0 -0
  64. package/prettier.config.js +0 -26
  65. package/src/docs/demo/css/style.css +0 -131
  66. package/src/docs/demo/icons/android-chrome-192x192.png +0 -0
  67. package/src/docs/demo/icons/android-chrome-384x384.png +0 -0
  68. package/src/docs/demo/icons/apple-touch-icon.png +0 -0
  69. package/src/docs/demo/icons/favicon-16x16.png +0 -0
  70. package/src/docs/demo/icons/favicon-32x32.png +0 -0
  71. package/src/docs/demo/icons/favicon.ico +0 -0
  72. package/src/docs/demo/icons/mstile-150x150.png +0 -0
  73. package/src/docs/demo/icons/safari-pinned-tab.svg +0 -28
  74. package/src/docs/demo/images/logo.png +0 -0
  75. package/src/docs/demo/images/placeholder-img-130x140.jpg +0 -0
  76. package/src/docs/demo/images/placeholder-img-16x16.jpg +0 -0
  77. package/src/docs/demo/images/placeholder-img-800x400.jpg +0 -0
  78. package/src/docs/demo/images/video-poster.png +0 -0
  79. package/src/docs/demo/index.html +0 -1152
  80. package/src/docs/github-readme/bf-logo-full-dark.png +0 -0
  81. package/src/docs/github-readme/bf-logo-full-light.png +0 -0
  82. package/src/scss/bullframe-classless-dark-prefers.scss +0 -2
  83. package/src/scss/bullframe-classless-dark.scss +0 -2
  84. package/src/scss/bullframe-classless-system-default.scss +0 -2
  85. package/src/scss/bullframe-classless.scss +0 -49
  86. package/src/scss/bullframe-dark-prefers.scss +0 -2
  87. package/src/scss/bullframe-dark.scss +0 -2
  88. package/src/scss/bullframe-system-default.scss +0 -2
  89. package/src/scss/bullframe-utilities.scss +0 -21
  90. package/src/scss/bullframe.scss +0 -49
  91. package/src/scss/custom/_author-styles.scss +0 -5
  92. package/src/scss/forms/_forms-normalization.scss +0 -316
  93. package/src/scss/forms/_forms-styling-radio-checkbox.scss +0 -82
  94. package/src/scss/forms/_forms-styling-range.scss +0 -113
  95. package/src/scss/forms/_forms-styling-select.scss +0 -65
  96. package/src/scss/forms/_forms-styling.scss +0 -131
  97. package/src/scss/miscellaneous/_misc-accessibility.scss +0 -36
  98. package/src/scss/miscellaneous/_misc-anchors.scss +0 -37
  99. package/src/scss/miscellaneous/_misc-embedded-content.scss +0 -117
  100. package/src/scss/miscellaneous/_misc-focus.scss +0 -79
  101. package/src/scss/miscellaneous/_misc-interactive.scss +0 -48
  102. package/src/scss/miscellaneous/_misc-layout.scss +0 -30
  103. package/src/scss/miscellaneous/_misc-lists.scss +0 -53
  104. package/src/scss/miscellaneous/_misc-scrolling.scss +0 -5
  105. package/src/scss/miscellaneous/_misc-shame.scss +0 -37
  106. package/src/scss/miscellaneous/_misc-tables.scss +0 -53
  107. package/src/scss/mixins/_mixin-dark-prefers.scss +0 -414
  108. package/src/scss/mixins/_mixin-dark.scss +0 -396
  109. package/src/scss/mixins/_mixin-grid-flex.scss +0 -80
  110. package/src/scss/mixins/_mixin-layout.scss +0 -42
  111. package/src/scss/mixins/_mixin-texts.scss +0 -37
  112. package/src/scss/typography/_typography-blockquotes.scss +0 -28
  113. package/src/scss/typography/_typography-headings.scss +0 -45
  114. package/src/scss/typography/_typography-html-body.scss +0 -75
  115. package/src/scss/typography/_typography-misc.scss +0 -90
  116. package/src/scss/typography/_typography-monospaced-elements.scss +0 -59
  117. package/src/scss/utilities/_utility-buttons.scss +0 -73
  118. package/src/scss/utilities/_utility-debugging.scss +0 -31
  119. package/src/scss/utilities/_utility-embeds.scss +0 -34
  120. package/src/scss/utilities/_utility-filters.scss +0 -21
  121. package/src/scss/utilities/_utility-form-states.scss +0 -89
  122. package/src/scss/utilities/_utility-global-dark-classless.scss +0 -3
  123. package/src/scss/utilities/_utility-global-dark-prefers-classless.scss +0 -3
  124. package/src/scss/utilities/_utility-global-dark-prefers.scss +0 -3
  125. package/src/scss/utilities/_utility-global-dark-scrollbars.scss +0 -34
  126. package/src/scss/utilities/_utility-global-dark.scss +0 -4
  127. package/src/scss/utilities/_utility-global-system-default-classless.scss +0 -3
  128. package/src/scss/utilities/_utility-global-system-default.scss +0 -3
  129. package/src/scss/utilities/_utility-grid-system.scss +0 -140
  130. package/src/scss/utilities/_utility-layout.scss +0 -187
  131. package/src/scss/utilities/_utility-lists.scss +0 -17
  132. package/src/scss/utilities/_utility-print.scss +0 -101
  133. package/src/scss/utilities/_utility-reduced-motion.scss +0 -29
  134. package/src/scss/utilities/_utility-spacing.scss +0 -148
  135. package/src/scss/utilities/_utility-tables.scss +0 -34
  136. package/src/scss/utilities/_utility-texts.scss +0 -225
  137. package/src/scss/utilities/_utility-z-index.scss +0 -83
  138. package/src/scss/variables/_variables-breakpoints.scss +0 -6
  139. package/src/scss/variables/_variables-colors.scss +0 -34
  140. package/src/scss/variables/_variables-spacing.scss +0 -24
  141. package/src/scss/variables/_variables-texts.scss +0 -8
  142. package/vite.config.js +0 -116
@@ -1,150 +1,83 @@
1
- /*! Bullframe CSS v5.0.0 | MIT License | https://github.com/marcop135/bullframe.css */
2
- .bf-container,
3
- .bf-container--fluid {
4
- box-sizing: border-box;
5
- display: block;
6
- margin-right: auto;
7
- margin-left: auto;
8
- padding-left: 1.5rem;
9
- padding-right: 1.5rem;
10
- }
11
-
12
- .bf-container {
13
- max-width: 114rem;
14
- }
15
-
16
- .bf-row {
17
- display: flex;
18
- flex-wrap: wrap;
19
- margin-left: -1.5rem;
20
- margin-right: -1.5rem;
21
- }
22
-
23
- [class^=bf-col-] {
24
- position: relative;
25
- min-height: 1px;
26
- padding-left: 1.5rem;
27
- padding-right: 1.5rem;
28
- flex-grow: 0;
29
- flex-shrink: 0;
30
- }
31
-
32
- .bf-no-gutters {
33
- margin-right: 0;
34
- margin-left: 0;
35
- }
36
- .bf-no-gutters > [class^=bf-col] {
37
- padding-right: 0;
38
- padding-left: 0;
39
- }
40
-
41
- .bf-col-12 {
42
- flex-basis: 100%;
43
- max-width: 100%;
44
- }
45
-
46
- .bf-col-11 {
47
- flex-basis: 91.6667%;
48
- max-width: 91.6667%;
49
- }
50
-
51
- .bf-col-10 {
52
- flex-basis: 83.3333%;
53
- max-width: 83.3333%;
54
- }
55
-
56
- .bf-col-9 {
57
- flex-basis: 75%;
58
- max-width: 75%;
59
- }
60
-
61
- .bf-col-8 {
62
- flex-basis: 66.6667%;
63
- max-width: 66.6667%;
64
- }
65
-
66
- .bf-col-7 {
67
- flex-basis: 58.3333%;
68
- max-width: 58.3333%;
69
- }
70
-
71
- .bf-col-6 {
72
- flex-basis: 50%;
73
- max-width: 50%;
74
- }
75
-
76
- .bf-col-5 {
77
- flex-basis: 41.6667%;
78
- max-width: 41.6667%;
79
- }
80
-
81
- .bf-col-4 {
82
- flex-basis: 33.3333%;
83
- max-width: 33.3333%;
84
- }
85
-
86
- .bf-col-3 {
87
- flex-basis: 25%;
88
- max-width: 25%;
89
- }
90
-
91
- .bf-col-2 {
92
- flex-basis: 16.6667%;
93
- max-width: 16.6667%;
94
- }
95
-
96
- .bf-col-1 {
97
- flex-basis: 8.3333%;
98
- max-width: 8.3333%;
99
- }
100
-
101
- @media (max-width: 575px) {
102
- .bf-container--break-xs .bf-row {
103
- margin-left: 0;
104
- margin-right: 0;
105
- }
106
- .bf-container--break-xs [class^=bf-col] {
107
- flex-basis: 100%;
108
- max-width: 100%;
109
- margin-left: 0;
110
- padding-left: 0;
111
- padding-right: 0;
112
- }
113
- }
114
- @media (max-width: 767px) {
115
- .bf-container--break-md .bf-row {
116
- margin-left: 0;
117
- margin-right: 0;
118
- }
119
- .bf-container--break-md [class^=bf-col] {
120
- flex-basis: 100%;
121
- max-width: 100%;
122
- margin-left: 0;
123
- padding-left: 0;
124
- padding-right: 0;
125
- }
126
- }
127
- @media (max-width: 991px) {
128
- .bf-container--break-lg .bf-row {
129
- margin-left: 0;
130
- margin-right: 0;
131
- }
132
- .bf-container--break-lg [class^=bf-col] {
133
- flex-basis: 100%;
134
- max-width: 100%;
135
- margin-left: 0;
136
- padding-left: 0;
137
- padding-right: 0;
138
- }
139
- }
140
- table td[class^=bf-col],
141
- table th[class^=bf-col] {
142
- position: static;
143
- }
1
+ /* ! Bullframe CSS v6.0.0 | MIT License | https://github.com/marcop135/bullframe.css */
2
+
3
+ /* Utilities-only build: tokens + .bf-* helpers (no base element styles). */
4
+
5
+ /* Variables */
6
+ /* Design tokens (--bf-*). Shared by every build variant.
7
+ * Override on :root (or a scope) to theme without rebuilding. */
8
+
9
+ :root {
10
+ /* Neutrals */
11
+ --bf-white: rgb(255 255 255);
12
+ --bf-light: rgb(240 240 240);
13
+ --bf-gray-light-extra: rgb(233 233 233);
14
+ --bf-gray-light: rgb(204 204 204);
15
+ --bf-gray: rgb(153 153 153);
16
+ --bf-gray-dark: rgb(102 102 102);
17
+ --bf-gray-dark-extra: rgb(51 51 51);
18
+ --bf-dark: rgb(34 34 34);
19
+ --bf-dark-extra: rgb(17 17 17);
20
+ --bf-black: rgb(0 0 0);
21
+
22
+ /* Highlight / mark */
23
+ --bf-yellow-light: rgb(255 255 153);
24
+ --bf-yellow: rgb(255 255 0);
25
+ --bf-orange: rgb(255 165 0);
26
+
27
+ /* Accent: WCAG AA on white (links 4.5:1) and white-on-blue buttons (4.5:1) */
28
+ --bf-blue: rgb(0 86 179);
29
+ --bf-blue-light: rgb(0 65 135);
30
+ --bf-blue-light-extra: rgb(190 216 254);
31
+
32
+ /* Invalid / error */
33
+ --bf-red: rgb(255 0 0);
34
+
35
+ /* Dark-mode surfaces (used by utility-global-dark*.css) */
36
+ --bf-dark-bg: rgb(28 28 28);
37
+ --bf-dark-link: rgb(77 165 255);
38
+ --bf-dark-link-hover: rgb(77 165 255);
39
+ --bf-dark-border-focus: rgb(26 140 255);
40
+ --bf-dark-shadow-focus: rgb(3 102 214 / 50%);
41
+ --bf-dark-mark-bg: rgb(230 230 0);
42
+ --bf-dark-ins-bg: rgb(255 255 200);
43
+ --bf-dark-button-hover: rgb(184 184 184);
44
+ --bf-dark-button-shadow: rgb(255 255 255 / 45%);
45
+ --bf-dark-invalid: rgb(255 38 38);
46
+
47
+ /* Spacing scale + grid gutter */
48
+ --bf-spacing-sm: 0.25rem;
49
+ --bf-spacing-md: 0.5rem;
50
+ --bf-spacing-lg: 1rem;
51
+ --bf-spacing-xl: 2rem;
52
+ --bf-spacing-xxl: 3rem;
53
+ --bf-spacing-grid-gutter: 1.5rem;
54
+
55
+ /* Type */
56
+ --bf-font-sans-serif:
57
+ -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell,
58
+ 'Helvetica Neue', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
59
+ 'Segoe UI Symbol', 'Noto Color Emoji';
60
+ --bf-font-serif: Georgia, Times, 'Times New Roman', serif;
61
+ --bf-font-monospace:
62
+ SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
63
+ --bf-body-font-size-rem: 1.6rem;
64
+ --bf-body-line-height: 1.5;
65
+
66
+ /* Breakpoint tokens (documentation / tooling; media queries use literal px below) */
67
+ --bf-breakpoint-xs: 0;
68
+ --bf-breakpoint-sm: 576px;
69
+ --bf-breakpoint-md: 768px;
70
+ --bf-breakpoint-lg: 992px;
71
+ --bf-breakpoint-xl: 1200px;
72
+ --bf-breakpoint-xxl: 1400px;
73
+ }
74
+
75
+ /* Utilities */
76
+ /* Display, visibility, float, position, and width helpers. */
144
77
 
145
78
  .bf-clearfix::before,
146
79
  .bf-clearfix::after {
147
- content: " ";
80
+ content: ' ';
148
81
  display: table;
149
82
  }
150
83
 
@@ -162,7 +95,6 @@ table th[class^=bf-col] {
162
95
  }
163
96
 
164
97
  .bf-text-hide {
165
- /* stylelint-disable-next-line */
166
98
  font: 0/0 a !important;
167
99
  color: transparent !important;
168
100
  text-shadow: none !important;
@@ -172,16 +104,7 @@ table th[class^=bf-col] {
172
104
  padding: 0 !important;
173
105
  }
174
106
 
175
- /*
176
- // taken from https://github.com/h5bp/html5-boilerplate/blob/v7.3.0/dist/css/main.css
177
- //
178
- * Hide only visually, but have it available for screen readers:
179
- * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
180
- *
181
- * 1. For long content, line feeds are not interpreted as spaces and small width
182
- * causes content to wrap 1 word per line:
183
- * https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
184
- */
107
+ /* Visually hidden; available to screen readers (h5bp / Snook). */
185
108
  .bf-sr-only {
186
109
  border: 0 !important;
187
110
  clip: rect(0, 0, 0, 0) !important;
@@ -194,13 +117,7 @@ table th[class^=bf-col] {
194
117
  width: 1px !important;
195
118
  }
196
119
 
197
- /*
198
- // taken from https://github.com/h5bp/html5-boilerplate/blob/v7.3.0/dist/css/main.css
199
- //
200
- * Extends the .sr-only class to allow the element
201
- * to be focusable when navigated to via the keyboard:
202
- * https://www.drupal.org/node/897638
203
- */
120
+ /* .bf-sr-only, revealed on focus (skip links). */
204
121
  .bf-sr-only.focusable:active,
205
122
  .bf-sr-only.focusable:focus {
206
123
  clip: auto !important;
@@ -284,6 +201,11 @@ table th[class^=bf-col] {
284
201
  top: 0 !important;
285
202
  }
286
203
 
204
+ .bf-position-relative {
205
+ position: relative !important;
206
+ }
207
+
208
+ /* Absolute center inside a relative parent. */
287
209
  .bf-align-center-unknown {
288
210
  position: relative !important;
289
211
  }
@@ -296,9 +218,10 @@ table th[class^=bf-col] {
296
218
  }
297
219
 
298
220
  .bf-align-center-flex {
299
- display: flex;
300
- align-items: center;
301
- justify-content: center;
221
+ display: flex !important;
222
+ justify-content: center !important;
223
+ align-items: center !important;
224
+ height: 100vh !important;
302
225
  }
303
226
 
304
227
  .bf-width-25 {
@@ -324,439 +247,649 @@ table th[class^=bf-col] {
324
247
  .bf-width-auto {
325
248
  width: auto !important;
326
249
  }
250
+ /* Text alignment, weight, truncate, and font-stack helpers. */
327
251
 
328
- .bf-z-index-1 {
329
- z-index: 1;
252
+ .bf-t-transform-uppercase {
253
+ text-transform: uppercase !important;
330
254
  }
331
255
 
332
- .bf-z-index-2 {
333
- z-index: 2;
256
+ .bf-t-transform-none {
257
+ text-transform: none !important;
334
258
  }
335
259
 
336
- .bf-z-index-3 {
337
- z-index: 3;
260
+ .bf-t-left {
261
+ text-align: left !important;
338
262
  }
339
263
 
340
- .bf-z-index-4 {
341
- z-index: 4;
264
+ .bf-t-center {
265
+ text-align: center !important;
342
266
  }
343
267
 
344
- .bf-z-index-5 {
345
- z-index: 5;
268
+ .bf-t-right {
269
+ text-align: right !important;
346
270
  }
347
271
 
348
- .bf-z-index-6 {
349
- z-index: 6;
272
+ .bf-t-shadow {
273
+ text-shadow: 0 0 2px var(--bf-dark) !important;
274
+ text-shadow: 0 0 0.2rem var(--bf-dark) !important;
350
275
  }
351
276
 
352
- .bf-z-index-7 {
353
- z-index: 7;
277
+ .bf-t-italic {
278
+ font-style: italic !important;
354
279
  }
355
280
 
356
- .bf-z-index-8 {
357
- z-index: 8;
281
+ /* Reset italic inheritance (e.g. nested <i>). */
282
+ .bf-t-style-normal {
283
+ font-style: normal !important;
358
284
  }
359
285
 
360
- .bf-z-index-9 {
361
- z-index: 9;
286
+ /* Weight utilities (e.g. reset <b>). */
287
+ .bf-t-weight-300 {
288
+ font-weight: 300 !important;
362
289
  }
363
290
 
364
- .bf-z-index-10 {
365
- z-index: 10;
291
+ .bf-t-weight-400 {
292
+ font-weight: 400 !important;
366
293
  }
367
294
 
368
- .bf-z-index-20 {
369
- z-index: 20;
295
+ .bf-t-weight-500 {
296
+ font-weight: 500 !important;
370
297
  }
371
298
 
372
- .bf-z-index-30 {
373
- z-index: 30;
299
+ .bf-t-weight-600 {
300
+ font-weight: 600 !important;
374
301
  }
375
302
 
376
- .bf-z-index-40 {
377
- z-index: 40;
303
+ .bf-t-weight-700 {
304
+ font-weight: 700 !important;
378
305
  }
379
306
 
380
- .bf-z-index-50 {
381
- z-index: 50;
307
+ .bf-t-weight-800 {
308
+ font-weight: 800 !important;
382
309
  }
383
310
 
384
- .bf-z-index-60 {
385
- z-index: 60;
311
+ .bf-text-break {
312
+ word-wrap: break-word !important;
386
313
  }
387
314
 
388
- .bf-z-index-70 {
389
- z-index: 70;
315
+ .bf-t-truncate {
316
+ max-width: 100% !important;
317
+ overflow: hidden !important;
318
+ text-overflow: ellipsis !important;
319
+ white-space: nowrap !important;
320
+ word-wrap: normal !important;
390
321
  }
391
322
 
392
- .bf-z-index-80 {
393
- z-index: 80;
323
+ .bf-t-truncate--multiline-2 {
324
+ overflow: hidden !important;
325
+ text-overflow: ellipsis !important;
326
+ display: -webkit-box !important;
327
+ line-clamp: 2 !important;
328
+ -webkit-line-clamp: 2 !important;
329
+ -webkit-box-orient: vertical !important;
394
330
  }
395
331
 
396
- .bf-z-index-90 {
397
- z-index: 90;
332
+ .bf-t-truncate--multiline-3 {
333
+ overflow: hidden !important;
334
+ text-overflow: ellipsis !important;
335
+ display: -webkit-box !important;
336
+ line-clamp: 3 !important;
337
+ -webkit-line-clamp: 3 !important;
338
+ -webkit-box-orient: vertical !important;
398
339
  }
399
340
 
400
- .bf-z-index-100 {
401
- z-index: 100;
341
+ .bf-no-select {
342
+ -webkit-user-select: none !important;
343
+ -moz-user-select: none !important;
344
+ user-select: none !important;
345
+ -webkit-touch-callout: none !important;
402
346
  }
403
347
 
404
- .bf-z-index-200 {
405
- z-index: 200;
348
+ .bf-font-sans-serif {
349
+ font-family: var(--bf-font-sans-serif) !important;
406
350
  }
407
351
 
408
- .bf-z-index-300 {
409
- z-index: 200;
352
+ .bf-font-serif {
353
+ font-family: var(--bf-font-serif) !important;
410
354
  }
411
355
 
412
- .bf-m-0 {
413
- margin: 0 !important;
356
+ .bf-font-monospace {
357
+ font-family: var(--bf-font-monospace) !important;
414
358
  }
415
359
 
416
- .bf-m-t-0 {
360
+ /* Opt-in stacks from Modern Font Stacks (https://modernfontstacks.com/). */
361
+ .bf-sans-serif--system {
362
+ font-family: system-ui, sans-serif;
363
+ }
364
+
365
+ .bf-serif--transitional {
366
+ font-family: Charter, 'Bitstream Charter', 'Sitka Text', Cambria, serif;
367
+ }
368
+
369
+ .bf-serif--oldstyle {
370
+ font-family: 'Iowan Old Style', 'Palatino Linotype', 'URW Palladio L', P052, serif;
371
+ }
372
+
373
+ .bf-sans-serif--humanist {
374
+ font-family:
375
+ Seravek, 'Gill Sans Nova', Ubuntu, Calibri, 'DejaVu Sans', source-sans-pro, sans-serif;
376
+ }
377
+
378
+ .bf-sans-serif--geometric {
379
+ font-family: Avenir, Montserrat, Corbel, 'URW Gothic', source-sans-pro, sans-serif;
380
+ }
381
+
382
+ .bf-sans-serif--classical {
383
+ font-family: Optima, Candara, 'Noto Sans', source-sans-pro, sans-serif;
384
+ }
385
+
386
+ .bf-sans-serif--neo-grotesque {
387
+ font-family: Inter, Roboto, 'Helvetica Neue', 'Arial Nova', 'Nimbus Sans', Arial, sans-serif;
388
+ }
389
+
390
+ .bf-monospace--slab {
391
+ font-family: 'Nimbus Mono PS', 'Courier New', monospace;
392
+ }
393
+
394
+ .bf-monospace--code {
395
+ font-family:
396
+ ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono',
397
+ monospace;
398
+ }
399
+
400
+ .bf-sans-serif--industrial {
401
+ font-family:
402
+ Bahnschrift, 'DIN Alternate', 'Franklin Gothic Medium', 'Nimbus Sans Narrow',
403
+ sans-serif-condensed, sans-serif;
404
+ }
405
+
406
+ .bf-sans-serif--rounded {
407
+ font-family:
408
+ ui-rounded, 'Hiragino Maru Gothic ProN', Quicksand, Comfortaa, Manjari, 'Arial Rounded MT',
409
+ 'Arial Rounded MT Bold', Calibri, source-sans-pro, sans-serif;
410
+ }
411
+
412
+ .bf-serif--slab {
413
+ font-family: Rockwell, 'Rockwell Nova', 'Roboto Slab', 'DejaVu Serif', 'Sitka Small', serif;
414
+ }
415
+
416
+ .bf-serif--antique {
417
+ font-family:
418
+ Superclarendon, 'Bookman Old Style', 'URW Bookman', 'URW Bookman L', 'Georgia Pro', Georgia,
419
+ serif;
420
+ }
421
+
422
+ .bf-serif--didone {
423
+ font-family: Didot, 'Bodoni MT', 'Noto Serif Display', 'URW Palladio L', P052, Sylfaen, serif;
424
+ }
425
+
426
+ .bf-cursive--handwritten {
427
+ font-family: 'Segoe Print', 'Bradley Hand', Chilanka, TSCu_Comic, casual, cursive;
428
+ }
429
+
430
+ .bf-h1,
431
+ .bf-h2,
432
+ .bf-h3,
433
+ .bf-h4,
434
+ .bf-h5,
435
+ .bf-h6 {
436
+ font-weight: 600 !important;
417
437
  margin-top: 0 !important;
438
+ line-height: 1.2 !important;
439
+ margin-bottom: var(--bf-spacing-lg) !important;
418
440
  }
419
441
 
420
- .bf-m-b-0 {
421
- margin-bottom: 0 !important;
442
+ .bf-h1 {
443
+ font-size: 36px !important;
444
+ font-size: 3.6rem !important;
422
445
  }
423
446
 
424
- .bf-m-l-0 {
425
- margin-left: 0 !important;
447
+ .bf-h2 {
448
+ font-size: 30px !important;
449
+ font-size: 3rem !important;
426
450
  }
427
451
 
428
- .bf-m-r-0 {
429
- margin-right: 0 !important;
452
+ .bf-h3 {
453
+ font-size: 24px !important;
454
+ font-size: 2.4rem !important;
430
455
  }
431
456
 
432
- .bf-m-1 {
433
- margin-bottom: 0.5rem !important;
457
+ .bf-h4 {
458
+ font-size: 20px !important;
459
+ font-size: 2rem !important;
434
460
  }
435
461
 
436
- .bf-m-2 {
437
- margin-bottom: 1rem !important;
462
+ .bf-h5,
463
+ .bf-h6 {
464
+ font-size: 16px !important;
465
+ font-size: 1.6rem !important;
438
466
  }
439
467
 
440
- .bf-m-3 {
441
- margin-bottom: 2rem !important;
468
+ p.bf-lead {
469
+ font-size: 120% !important;
442
470
  }
443
471
 
444
- .bf-m-4 {
445
- margin-bottom: 3rem !important;
472
+ body.bf-responsive-typography {
473
+ font-size: clamp(1.5rem, 2vw, 1.8rem);
446
474
  }
475
+ /* 12-column flex grid: .bf-container / .bf-row / .bf-col-* (+ optional --break-* stacking). */
447
476
 
448
- .bf-m-t-1 {
449
- margin-top: 0.5rem !important;
477
+ .bf-container,
478
+ .bf-container--fluid {
479
+ box-sizing: border-box;
480
+ display: block;
481
+ margin-right: auto;
482
+ margin-left: auto;
483
+ padding-left: var(--bf-spacing-grid-gutter);
484
+ padding-right: var(--bf-spacing-grid-gutter);
450
485
  }
451
486
 
452
- .bf-m-t-2 {
453
- margin-top: 1rem !important;
487
+ .bf-container {
488
+ max-width: 114rem;
454
489
  }
455
490
 
456
- .bf-m-t-3 {
457
- margin-top: 2rem !important;
491
+ .bf-row {
492
+ display: flex;
493
+ flex-wrap: wrap;
494
+ margin-left: calc(-1 * var(--bf-spacing-grid-gutter));
495
+ margin-right: calc(-1 * var(--bf-spacing-grid-gutter));
458
496
  }
459
497
 
460
- .bf-m-t-4 {
461
- margin-top: 3rem !important;
498
+ [class^='bf-col-'] {
499
+ position: relative;
500
+ min-height: 1px;
501
+ padding-left: var(--bf-spacing-grid-gutter);
502
+ padding-right: var(--bf-spacing-grid-gutter);
503
+ flex-grow: 0;
504
+ flex-shrink: 0;
462
505
  }
463
506
 
464
- .bf-m-b-1 {
465
- margin-bottom: 0.5rem !important;
507
+ .bf-no-gutters {
508
+ margin-right: 0;
509
+ margin-left: 0;
466
510
  }
467
511
 
468
- .bf-m-b-2 {
469
- margin-bottom: 1rem !important;
512
+ .bf-no-gutters > [class^='bf-col'] {
513
+ padding-right: 0;
514
+ padding-left: 0;
470
515
  }
471
516
 
472
- .bf-m-b-3 {
473
- margin-bottom: 2rem !important;
517
+ /* Column spans (12ths). */
518
+ .bf-col-12 {
519
+ flex-basis: 100%;
520
+ max-width: 100%;
474
521
  }
475
522
 
476
- .bf-m-b-4 {
477
- margin-bottom: 3rem !important;
523
+ .bf-col-11 {
524
+ flex-basis: 91.6667%;
525
+ max-width: 91.6667%;
478
526
  }
479
527
 
480
- .bf-p-0 {
481
- padding: 0 !important;
528
+ .bf-col-10 {
529
+ flex-basis: 83.3333%;
530
+ max-width: 83.3333%;
482
531
  }
483
532
 
484
- .bf-p-t-0 {
485
- padding-top: 0 !important;
533
+ .bf-col-9 {
534
+ flex-basis: 75%;
535
+ max-width: 75%;
486
536
  }
487
537
 
488
- .bf-p-b-0 {
489
- padding-bottom: 0 !important;
538
+ .bf-col-8 {
539
+ flex-basis: 66.6667%;
540
+ max-width: 66.6667%;
490
541
  }
491
542
 
492
- .bf-p-l-0 {
493
- padding-left: 0 !important;
543
+ .bf-col-7 {
544
+ flex-basis: 58.3333%;
545
+ max-width: 58.3333%;
494
546
  }
495
547
 
496
- .bf-p-r-0 {
497
- padding-right: 0 !important;
548
+ .bf-col-6 {
549
+ flex-basis: 50%;
550
+ max-width: 50%;
498
551
  }
499
552
 
500
- .bf-p-1 {
501
- padding-bottom: 0.5rem !important;
553
+ .bf-col-5 {
554
+ flex-basis: 41.6667%;
555
+ max-width: 41.6667%;
502
556
  }
503
557
 
504
- .bf-p-2 {
505
- padding-bottom: 1rem !important;
558
+ .bf-col-4 {
559
+ flex-basis: 33.3333%;
560
+ max-width: 33.3333%;
506
561
  }
507
562
 
508
- .bf-p-3 {
509
- padding-bottom: 2rem !important;
563
+ .bf-col-3 {
564
+ flex-basis: 25%;
565
+ max-width: 25%;
510
566
  }
511
567
 
512
- .bf-p-4 {
513
- padding-bottom: 3rem !important;
568
+ .bf-col-2 {
569
+ flex-basis: 16.6667%;
570
+ max-width: 16.6667%;
514
571
  }
515
572
 
516
- .bf-p-t-1 {
517
- padding-top: 0.5rem !important;
573
+ .bf-col-1 {
574
+ flex-basis: 8.3333%;
575
+ max-width: 8.3333%;
518
576
  }
519
577
 
520
- .bf-p-t-2 {
521
- padding-top: 1rem !important;
578
+ /* Breakpoint stacking via .bf-container--break-{xs|md|lg}. */
579
+ @media (max-width: 575px) {
580
+ .bf-container--break-xs .bf-row {
581
+ margin-left: 0;
582
+ margin-right: 0;
583
+ }
584
+
585
+ .bf-container--break-xs [class^='bf-col'] {
586
+ flex-basis: 100%;
587
+ max-width: 100%;
588
+ margin-left: 0;
589
+ padding-left: 0;
590
+ padding-right: 0;
591
+ }
522
592
  }
523
593
 
524
- .bf-p-t-3 {
525
- padding-top: 2rem !important;
594
+ @media (max-width: 767px) {
595
+ .bf-container--break-md .bf-row {
596
+ margin-left: 0;
597
+ margin-right: 0;
598
+ }
599
+
600
+ .bf-container--break-md [class^='bf-col'] {
601
+ flex-basis: 100%;
602
+ max-width: 100%;
603
+ margin-left: 0;
604
+ padding-left: 0;
605
+ padding-right: 0;
606
+ }
526
607
  }
527
608
 
528
- .bf-p-t-4 {
529
- padding-top: 3rem !important;
609
+ @media (max-width: 991px) {
610
+ .bf-container--break-lg .bf-row {
611
+ margin-left: 0;
612
+ margin-right: 0;
613
+ }
614
+
615
+ .bf-container--break-lg [class^='bf-col'] {
616
+ flex-basis: 100%;
617
+ max-width: 100%;
618
+ margin-left: 0;
619
+ padding-left: 0;
620
+ padding-right: 0;
621
+ }
530
622
  }
531
623
 
532
- .bf-p-b-1 {
533
- padding-bottom: 0.5rem !important;
624
+ /* Table cells with col classes stay position:static (v4 compat). */
625
+ table td[class^='bf-col'],
626
+ table th[class^='bf-col'] {
627
+ position: static;
534
628
  }
629
+ /* Z-index scale (.bf-z-index-*). */
535
630
 
536
- .bf-p-b-2 {
537
- padding-bottom: 1rem !important;
631
+ .bf-z-index-1 {
632
+ z-index: 1;
633
+ }
634
+ .bf-z-index-2 {
635
+ z-index: 2;
636
+ }
637
+ .bf-z-index-3 {
638
+ z-index: 3;
639
+ }
640
+ .bf-z-index-4 {
641
+ z-index: 4;
642
+ }
643
+ .bf-z-index-5 {
644
+ z-index: 5;
645
+ }
646
+ .bf-z-index-6 {
647
+ z-index: 6;
648
+ }
649
+ .bf-z-index-7 {
650
+ z-index: 7;
651
+ }
652
+ .bf-z-index-8 {
653
+ z-index: 8;
654
+ }
655
+ .bf-z-index-9 {
656
+ z-index: 9;
657
+ }
658
+ .bf-z-index-10 {
659
+ z-index: 10;
660
+ }
661
+ .bf-z-index-20 {
662
+ z-index: 20;
663
+ }
664
+ .bf-z-index-30 {
665
+ z-index: 30;
666
+ }
667
+ .bf-z-index-40 {
668
+ z-index: 40;
669
+ }
670
+ .bf-z-index-50 {
671
+ z-index: 50;
672
+ }
673
+ .bf-z-index-60 {
674
+ z-index: 60;
675
+ }
676
+ .bf-z-index-70 {
677
+ z-index: 70;
678
+ }
679
+ .bf-z-index-80 {
680
+ z-index: 80;
681
+ }
682
+ .bf-z-index-90 {
683
+ z-index: 90;
684
+ }
685
+ .bf-z-index-100 {
686
+ z-index: 100;
687
+ }
688
+ .bf-z-index-200 {
689
+ z-index: 200;
690
+ }
691
+ .bf-z-index-300 {
692
+ z-index: 300;
693
+ }
694
+ /* Margin / padding scale (.bf-m-*, .bf-p-*). */
695
+
696
+ .bf-m-0 {
697
+ margin: 0 !important;
698
+ }
699
+
700
+ .bf-m-t-0 {
701
+ margin-top: 0 !important;
538
702
  }
539
703
 
540
- .bf-p-b-3 {
541
- padding-bottom: 2rem !important;
704
+ .bf-m-b-0 {
705
+ margin-bottom: 0 !important;
542
706
  }
543
707
 
544
- .bf-p-b-4 {
545
- padding-bottom: 3rem !important;
708
+ .bf-m-l-0 {
709
+ margin-left: 0 !important;
546
710
  }
547
711
 
548
- .bf-t-transform-uppercase {
549
- text-transform: uppercase !important;
712
+ .bf-m-r-0 {
713
+ margin-right: 0 !important;
550
714
  }
551
715
 
552
- .bf-t-transform-none {
553
- text-transform: none !important;
716
+ .bf-m-1 {
717
+ margin-bottom: var(--bf-spacing-md) !important;
554
718
  }
555
719
 
556
- .bf-t-left {
557
- text-align: left !important;
720
+ .bf-m-2 {
721
+ margin-bottom: var(--bf-spacing-lg) !important;
558
722
  }
559
723
 
560
- .bf-t-center {
561
- text-align: center !important;
724
+ .bf-m-3 {
725
+ margin-bottom: var(--bf-spacing-xl) !important;
562
726
  }
563
727
 
564
- .bf-t-right {
565
- text-align: right !important;
728
+ .bf-m-4 {
729
+ margin-bottom: var(--bf-spacing-xxl) !important;
566
730
  }
567
731
 
568
- .bf-t-shadow {
569
- text-shadow: 0 0 2px #222 !important;
570
- text-shadow: 0 0 0.2rem #222 !important;
732
+ .bf-m-t-1 {
733
+ margin-top: var(--bf-spacing-md) !important;
571
734
  }
572
735
 
573
- .bf-t-italic {
574
- font-style: italic !important;
736
+ .bf-m-t-2 {
737
+ margin-top: var(--bf-spacing-lg) !important;
575
738
  }
576
739
 
577
- .bf-t-style-normal {
578
- font-style: normal !important;
740
+ .bf-m-t-3 {
741
+ margin-top: var(--bf-spacing-xl) !important;
579
742
  }
580
743
 
581
- .bf-t-weight-300 {
582
- font-weight: 300 !important;
744
+ .bf-m-t-4 {
745
+ margin-top: var(--bf-spacing-xxl) !important;
583
746
  }
584
747
 
585
- .bf-t-weight-400 {
586
- font-weight: 400 !important;
748
+ .bf-m-b-1 {
749
+ margin-bottom: var(--bf-spacing-md) !important;
587
750
  }
588
751
 
589
- .bf-t-weight-500 {
590
- font-weight: 500 !important;
752
+ .bf-m-b-2 {
753
+ margin-bottom: var(--bf-spacing-lg) !important;
591
754
  }
592
755
 
593
- .bf-t-weight-600 {
594
- font-weight: 600 !important;
756
+ .bf-m-b-3 {
757
+ margin-bottom: var(--bf-spacing-xl) !important;
595
758
  }
596
759
 
597
- .bf-t-weight-700 {
598
- font-weight: 700 !important;
760
+ .bf-m-b-4 {
761
+ margin-bottom: var(--bf-spacing-xxl) !important;
599
762
  }
600
763
 
601
- .bf-t-weight-800 {
602
- font-weight: 800 !important;
764
+ .bf-p-0 {
765
+ padding: 0 !important;
603
766
  }
604
767
 
605
- .bf-text-break {
606
- word-wrap: break-word !important;
768
+ .bf-p-t-0 {
769
+ padding-top: 0 !important;
607
770
  }
608
771
 
609
- .bf-t-truncate {
610
- max-width: 100% !important;
611
- overflow: hidden !important;
612
- text-overflow: ellipsis !important;
613
- white-space: nowrap !important;
614
- word-wrap: normal !important;
772
+ .bf-p-b-0 {
773
+ padding-bottom: 0 !important;
615
774
  }
616
775
 
617
- .bf-t-truncate--multiline-2 {
618
- overflow: hidden !important;
619
- text-overflow: ellipsis !important;
620
- display: -webkit-box !important;
621
- line-clamp: 2 !important;
622
- -webkit-line-clamp: 2 !important;
623
- -webkit-box-orient: vertical !important;
776
+ .bf-p-l-0 {
777
+ padding-left: 0 !important;
624
778
  }
625
779
 
626
- .bf-t-truncate--multiline-3 {
627
- overflow: hidden !important;
628
- text-overflow: ellipsis !important;
629
- display: -webkit-box !important;
630
- line-clamp: 3 !important;
631
- -webkit-line-clamp: 3 !important;
632
- -webkit-box-orient: vertical !important;
780
+ .bf-p-r-0 {
781
+ padding-right: 0 !important;
633
782
  }
634
783
 
635
- .bf-no-select {
636
- -webkit-user-select: none !important;
637
- -moz-user-select: none !important;
638
- user-select: none !important;
639
- -webkit-touch-callout: none !important;
784
+ .bf-p-1 {
785
+ padding-bottom: var(--bf-spacing-md) !important;
640
786
  }
641
787
 
642
- .bf-font-sans-serif {
643
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !important;
788
+ .bf-p-2 {
789
+ padding-bottom: var(--bf-spacing-lg) !important;
644
790
  }
645
791
 
646
- .bf-font-serif {
647
- font-family: Georgia, Times, "Times New Roman", serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !important;
792
+ .bf-p-3 {
793
+ padding-bottom: var(--bf-spacing-xl) !important;
648
794
  }
649
795
 
650
- .bf-font-monospace {
651
- font-family: Menlo, Consolas, "Roboto Mono", "Ubuntu Monospace", "Noto Mono", "Oxygen Mono", "Liberation Mono", monospace, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !important;
796
+ .bf-p-4 {
797
+ padding-bottom: var(--bf-spacing-xxl) !important;
652
798
  }
653
799
 
654
- .bf-h1,
655
- .bf-h2,
656
- .bf-h3,
657
- .bf-h4,
658
- .bf-h5,
659
- .bf-h6 {
660
- font-weight: 600 !important;
661
- margin-top: 0 !important;
662
- line-height: 1.2 !important;
663
- margin-bottom: 10px !important;
664
- margin-bottom: 1rem !important;
800
+ .bf-p-t-1 {
801
+ padding-top: var(--bf-spacing-md) !important;
665
802
  }
666
803
 
667
- .bf-h1 {
668
- font-size: 36px !important;
669
- font-size: 3.6rem !important;
804
+ .bf-p-t-2 {
805
+ padding-top: var(--bf-spacing-lg) !important;
670
806
  }
671
807
 
672
- .bf-h2 {
673
- font-size: 30px !important;
674
- font-size: 3rem !important;
808
+ .bf-p-t-3 {
809
+ padding-top: var(--bf-spacing-xl) !important;
675
810
  }
676
811
 
677
- .bf-h3 {
678
- font-size: 24px !important;
679
- font-size: 2.4rem !important;
812
+ .bf-p-t-4 {
813
+ padding-top: var(--bf-spacing-xxl) !important;
680
814
  }
681
815
 
682
- .bf-h4 {
683
- font-size: 20px !important;
684
- font-size: 2rem !important;
816
+ .bf-p-b-1 {
817
+ padding-bottom: var(--bf-spacing-md) !important;
685
818
  }
686
819
 
687
- .bf-h5,
688
- .bf-h6 {
689
- font-size: 16px !important;
690
- font-size: 1.6rem !important;
820
+ .bf-p-b-2 {
821
+ padding-bottom: var(--bf-spacing-lg) !important;
691
822
  }
692
823
 
693
- p.bf-lead {
694
- font-size: 120% !important;
824
+ .bf-p-b-3 {
825
+ padding-bottom: var(--bf-spacing-xl) !important;
695
826
  }
696
827
 
697
- body.bf-responsive-typography {
698
- --body-rt-font-size-flex: calc(1.5rem + 3 * ((100vw - 320px) / 680));
699
- --body-rt-font-size-max: 1.8rem;
828
+ .bf-p-b-4 {
829
+ padding-bottom: var(--bf-spacing-xxl) !important;
700
830
  }
831
+ /* .bf-btn and variants. */
701
832
 
702
- @media (min-width: 320px) {
703
- body.bf-responsive-typography {
704
- font-size: var(--body-rt-font-size-flex);
705
- }
706
- }
707
- @media (min-width: 1000px) {
708
- body.bf-responsive-typography {
709
- font-size: var(--body-rt-font-size-max);
710
- }
711
- }
712
833
  .bf-btn {
713
834
  display: inline-block;
714
835
  cursor: pointer;
715
- color: #222;
716
- padding: 0.6666666667rem 1.3333333333rem;
836
+ color: var(--bf-dark);
837
+ padding: calc(var(--bf-spacing-xl) / 3) calc(calc(var(--bf-spacing-xl) / 3) * 2);
717
838
  line-height: normal;
718
839
  text-align: center;
719
840
  margin: 0;
720
841
  background-clip: padding-box;
721
842
  vertical-align: baseline;
722
843
  overflow: visible;
723
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
844
+ -webkit-tap-highlight-color: rgb(0 0 0 / 0%);
724
845
  -webkit-user-select: none;
725
846
  -moz-user-select: none;
726
847
  user-select: none;
727
- border-radius: 0.25rem;
848
+ border-radius: var(--bf-spacing-sm);
849
+
728
850
  border: 0;
729
851
  background-image: none;
730
- background-color: #ccc;
852
+ background-color: var(--bf-gray-light);
731
853
  transition: all 0.2s;
732
854
  }
733
- .bf-btn:hover, .bf-btn:active, .bf-btn:focus {
855
+
856
+ .bf-btn:hover,
857
+ .bf-btn:active,
858
+ .bf-btn:focus {
734
859
  text-decoration: none;
735
- color: #222;
736
- background: rgb(178.5, 178.5, 178.5);
737
- }
738
- .bf-btn:active, .bf-btn:focus {
739
- box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
860
+ color: var(--bf-dark);
861
+ background: rgb(184 184 184); /* --bf-gray-light, ~10% darker */
740
862
  }
863
+
864
+ .bf-btn:active,
741
865
  .bf-btn:focus {
742
- outline: 0;
866
+ box-shadow: 0 0 0 3px rgb(0 0 0 / 15%);
743
867
  }
868
+
869
+ /* Primary: white on --bf-blue (WCAG AA 4.5:1). */
744
870
  .bf-btn.bf-btn--primary {
745
- color: #fff;
746
- background: #007bff;
871
+ color: var(--bf-white);
872
+ background: var(--bf-blue);
747
873
  }
748
- .bf-btn.bf-btn--primary:hover, .bf-btn.bf-btn--primary:active, .bf-btn.bf-btn--primary:focus {
749
- color: #fff;
750
- background: rgb(0, 98.4, 204);
874
+
875
+ .bf-btn.bf-btn--primary:hover,
876
+ .bf-btn.bf-btn--primary:active,
877
+ .bf-btn.bf-btn--primary:focus {
878
+ color: var(--bf-white);
879
+ background: var(--bf-blue-light);
751
880
  }
752
- .bf-btn.bf-btn--primary:active, .bf-btn.bf-btn--primary:focus {
753
- box-shadow: 0 0 0 3px rgba(0, 86, 179, 0.25);
881
+
882
+ .bf-btn.bf-btn--primary:active,
883
+ .bf-btn.bf-btn--primary:focus {
884
+ box-shadow: 0 0 0 3px rgb(0 65 135 / 35%);
754
885
  }
755
886
 
756
- fieldset[disabled] .bf-btn,
757
- .bf-btn[disabled],
758
- .bf-btn:disabled,
759
- .bf-btn[aria-disabled=true] {
887
+ :where(
888
+ fieldset[disabled] .bf-btn,
889
+ .bf-btn[disabled],
890
+ .bf-btn:disabled,
891
+ .bf-btn[aria-disabled='true']
892
+ ) {
760
893
  cursor: default !important;
761
894
  cursor: not-allowed !important;
762
895
  pointer-events: none !important;
@@ -765,13 +898,18 @@ fieldset[disabled] .bf-btn,
765
898
  user-select: none !important;
766
899
  box-shadow: none !important;
767
900
  opacity: 0.5 !important;
768
- background-color: #ccc;
901
+ background-color: var(--bf-gray-light);
902
+ outline: none !important;
769
903
  }
904
+ /* Focused / invalid / disabled form state classes. */
770
905
 
771
906
  .bf-focused {
772
- transition: border 0.2s, background-color 0.2s, box-shadow 0.2s !important;
773
- border-color: #007bff !important;
774
- box-shadow: 0 0 0 3px rgba(0, 86, 179, 0.25) !important;
907
+ transition:
908
+ border 0.2s,
909
+ background-color 0.2s,
910
+ box-shadow 0.2s !important;
911
+ border-color: var(--bf-blue) !important;
912
+ box-shadow: 0 0 0 3px rgb(0 86 179 / 25%) !important;
775
913
  }
776
914
 
777
915
  .bf-disabled,
@@ -790,8 +928,8 @@ fieldset[disabled] .bf-btn,
790
928
  user-select: none !important;
791
929
  box-shadow: none !important;
792
930
  opacity: 0.5 !important;
793
- background-color: #fff;
794
- border-color: #999;
931
+ background-color: var(--bf-white);
932
+ border-color: var(--bf-gray);
795
933
  }
796
934
 
797
935
  label.bf-disabled {
@@ -800,9 +938,9 @@ label.bf-disabled {
800
938
  }
801
939
 
802
940
  button.bf-disabled,
803
- [type=button].bf-disabled,
804
- [type=reset].bf-disabled,
805
- [type=submit].bf-disabled,
941
+ [type='button'].bf-disabled,
942
+ [type='reset'].bf-disabled,
943
+ [type='submit'].bf-disabled,
806
944
  .bf-btn.bf-disabled {
807
945
  cursor: default;
808
946
  cursor: not-allowed;
@@ -812,25 +950,28 @@ button.bf-disabled,
812
950
  user-select: none;
813
951
  box-shadow: none;
814
952
  opacity: 0.5;
815
- color: #222;
816
- background: #ccc;
817
- }
818
- button.bf-disabled:hover, button.bf-disabled:active, button.bf-disabled:focus,
819
- [type=button].bf-disabled:hover,
820
- [type=button].bf-disabled:active,
821
- [type=button].bf-disabled:focus,
822
- [type=reset].bf-disabled:hover,
823
- [type=reset].bf-disabled:active,
824
- [type=reset].bf-disabled:focus,
825
- [type=submit].bf-disabled:hover,
826
- [type=submit].bf-disabled:active,
827
- [type=submit].bf-disabled:focus,
953
+ color: var(--bf-dark);
954
+ background: var(--bf-gray-light);
955
+ }
956
+
957
+ button.bf-disabled:hover,
958
+ button.bf-disabled:active,
959
+ button.bf-disabled:focus,
960
+ [type='button'].bf-disabled:hover,
961
+ [type='button'].bf-disabled:active,
962
+ [type='button'].bf-disabled:focus,
963
+ [type='reset'].bf-disabled:hover,
964
+ [type='reset'].bf-disabled:active,
965
+ [type='reset'].bf-disabled:focus,
966
+ [type='submit'].bf-disabled:hover,
967
+ [type='submit'].bf-disabled:active,
968
+ [type='submit'].bf-disabled:focus,
828
969
  .bf-btn.bf-disabled:hover,
829
970
  .bf-btn.bf-disabled:active,
830
971
  .bf-btn.bf-disabled:focus {
831
972
  box-shadow: none;
832
- color: #222;
833
- background: #ccc;
973
+ color: var(--bf-dark);
974
+ background: var(--bf-gray-light);
834
975
  }
835
976
 
836
977
  .bf-btn--primary.bf-disabled {
@@ -842,22 +983,110 @@ button.bf-disabled:hover, button.bf-disabled:active, button.bf-disabled:focus,
842
983
  user-select: none;
843
984
  box-shadow: none;
844
985
  opacity: 0.5;
845
- color: #fff;
846
- background: #007bff;
986
+ color: var(--bf-white);
987
+ background: var(--bf-blue);
847
988
  }
848
- .bf-btn--primary.bf-disabled:hover, .bf-btn--primary.bf-disabled:active, .bf-btn--primary.bf-disabled:focus {
989
+
990
+ .bf-btn--primary.bf-disabled:hover,
991
+ .bf-btn--primary.bf-disabled:active,
992
+ .bf-btn--primary.bf-disabled:focus {
849
993
  box-shadow: none;
850
- color: #fff;
851
- background: #007bff;
994
+ color: var(--bf-white);
995
+ background: var(--bf-blue);
852
996
  }
853
997
 
854
998
  .bf-invalid,
855
999
  .bf-invalid:focus {
856
- color: #f00 !important;
857
- border-color: #f00 !important;
858
- box-shadow: 0 0 0 3px rgba(255, 0, 0, 0.25) !important;
1000
+ color: var(--bf-red) !important;
1001
+ border-color: var(--bf-red) !important;
1002
+ box-shadow: 0 0 0 3px rgb(255 0 0 / 25%) !important;
1003
+ }
1004
+ /* Custom radio / checkbox appearance. */
1005
+
1006
+ .custom-checkbox-wrapper [type='checkbox'] {
1007
+ -webkit-appearance: none;
1008
+ -moz-appearance: none;
1009
+ appearance: none;
1010
+ height: 1.8rem;
1011
+ width: 1.8rem;
1012
+ vertical-align: top;
1013
+ position: relative;
1014
+ border: 1px solid var(--bf-gray);
1015
+ }
1016
+
1017
+ .custom-checkbox-wrapper [type='checkbox'] + label {
1018
+ line-height: 1.8rem;
1019
+ vertical-align: top;
1020
+ margin-left: var(--bf-spacing-md);
1021
+ }
1022
+
1023
+ *[dir='rtl'] .custom-checkbox-wrapper [type='checkbox'] + label,
1024
+ .custom-checkbox-wrapper [type='checkbox'][dir='rtl'] + label {
1025
+ margin-left: 0;
1026
+ margin-right: var(--bf-spacing-md);
1027
+ }
1028
+
1029
+ .custom-checkbox-wrapper [type='checkbox']::after {
1030
+ content: '';
1031
+ display: block;
1032
+ position: absolute;
1033
+ width: 0.6rem;
1034
+ height: 0.8rem;
1035
+ border: 2px solid var(--bf-white);
1036
+ border-top: 0;
1037
+ border-left: 0;
1038
+ left: 35%;
1039
+ top: 20%;
1040
+ transform: rotate(43deg);
1041
+ }
1042
+
1043
+ .custom-checkbox-wrapper [type='checkbox']:checked {
1044
+ background-color: var(--bf-blue);
1045
+ border-color: var(--bf-black);
1046
+ }
1047
+
1048
+ .custom-radio-wrapper [type='radio'] {
1049
+ -webkit-appearance: none;
1050
+ -moz-appearance: none;
1051
+ appearance: none;
1052
+ height: 1.8rem;
1053
+ width: 1.8rem;
1054
+ vertical-align: top;
1055
+ position: relative;
1056
+ border: 1px solid var(--bf-gray);
1057
+ }
1058
+
1059
+ .custom-radio-wrapper [type='radio'] + label {
1060
+ line-height: 1.8rem;
1061
+ vertical-align: top;
1062
+ margin-left: var(--bf-spacing-md);
1063
+ }
1064
+
1065
+ *[dir='rtl'] .custom-radio-wrapper [type='radio'] + label,
1066
+ .custom-radio-wrapper [type='radio'][dir='rtl'] + label {
1067
+ margin-left: 0;
1068
+ margin-right: var(--bf-spacing-md);
1069
+ }
1070
+
1071
+ .custom-radio-wrapper [type='radio']::after {
1072
+ content: '';
1073
+ display: block;
1074
+ position: absolute;
1075
+ width: 1.8rem;
1076
+ height: 1.8rem;
1077
+ left: -0.05rem;
1078
+ top: -0.05rem;
1079
+ border-radius: 50%;
1080
+ background: var(--bf-white);
1081
+ transform: scale(0.35);
859
1082
  }
860
1083
 
1084
+ .custom-radio-wrapper [type='radio']:checked {
1085
+ background-color: var(--bf-blue);
1086
+ border-color: var(--bf-black);
1087
+ }
1088
+ /* Unstyled and inline list helpers. */
1089
+
861
1090
  .bf-list-unstyled,
862
1091
  menu ul.bf-list-unstyled,
863
1092
  menu ol.bf-list-unstyled,
@@ -874,6 +1103,37 @@ dd.bf-list-unstyled {
874
1103
  dt {
875
1104
  font-weight: 700;
876
1105
  }
1106
+ /* Table padding, overflow, and zebra helpers. */
1107
+
1108
+ .bf-table th,
1109
+ .bf-table td {
1110
+ padding: var(--bf-spacing-lg);
1111
+ border-bottom: 1px solid var(--bf-gray);
1112
+ margin-bottom: var(--bf-spacing-md);
1113
+ }
1114
+
1115
+ /* Horizontal scroll wrapper. */
1116
+ .bf-table-responsive {
1117
+ overflow: auto hidden;
1118
+ -ms-overflow-style: scrollbar;
1119
+ }
1120
+
1121
+ .bf-table-responsive table {
1122
+ width: 100%;
1123
+ margin-bottom: var(--bf-spacing-md);
1124
+ }
1125
+
1126
+ /* Prefer always-visible scrollbars on WebKit. */
1127
+ .bf-table-responsive.scrollbar {
1128
+ -webkit-overflow-scrolling: auto;
1129
+ }
1130
+
1131
+ /* Odd-row striping. */
1132
+ .bf-table--zebra tbody tr:nth-child(odd),
1133
+ .bf-table-responsive--zebra tbody tr:nth-child(odd) {
1134
+ background-color: var(--bf-gray-light-extra);
1135
+ }
1136
+ /* Responsive embed box (Bootstrap-style aspect ratio). */
877
1137
 
878
1138
  .bf-embed-responsive {
879
1139
  position: relative;
@@ -882,15 +1142,22 @@ dt {
882
1142
  padding: 0;
883
1143
  overflow: hidden;
884
1144
  }
1145
+
885
1146
  .bf-embed-responsive::before {
886
1147
  display: block;
887
- content: "";
888
- padding-top: 56.25%;
1148
+ content: '';
1149
+ padding-top: 56.25%; /* 16:9 by default */
889
1150
  }
890
- .bf-embed-responsive .bf-embed-responsive--4-3::before {
1151
+
1152
+ .bf-embed-responsive.bf-embed-responsive--4-3::before {
891
1153
  padding-top: 75%;
892
1154
  }
893
- .bf-embed-responsive .bf-embed-responsive--item, .bf-embed-responsive iframe, .bf-embed-responsive embed, .bf-embed-responsive object, .bf-embed-responsive video {
1155
+
1156
+ .bf-embed-responsive .bf-embed-responsive--item,
1157
+ .bf-embed-responsive iframe,
1158
+ .bf-embed-responsive embed,
1159
+ .bf-embed-responsive object,
1160
+ .bf-embed-responsive video {
894
1161
  position: absolute;
895
1162
  top: 0;
896
1163
  bottom: 0;
@@ -899,119 +1166,130 @@ dt {
899
1166
  height: 100%;
900
1167
  border: 0;
901
1168
  }
1169
+ /* Reduced-motion opt-in (cssremedy-style). */
902
1170
 
903
- .bf-table th,
904
- .bf-table td {
905
- padding: 1rem;
906
- border-bottom: 1px solid #999;
907
- margin-bottom: 0.5rem;
908
- }
909
-
910
- .bf-table-responsive {
911
- overflow: auto hidden;
912
- -ms-overflow-style: scrollbar;
913
- }
914
-
915
- .bf-table-responsive table {
916
- width: 100%;
917
- margin-bottom: 0.5rem;
1171
+ @media (prefers-reduced-motion: reduce) {
1172
+ .bf-reduced-motion,
1173
+ .bf-reduced-motion::before,
1174
+ .bf-reduced-motion::after,
1175
+ .bf-reduced-motion *,
1176
+ .bf-reduced-motion *::before,
1177
+ .bf-reduced-motion *::after {
1178
+ animation-delay: -1ms !important;
1179
+ animation-duration: 1ms !important;
1180
+ animation-iteration-count: 1 !important;
1181
+ background-attachment: initial !important;
1182
+ scroll-behavior: auto !important;
1183
+ transition-delay: 0s !important;
1184
+ transition-duration: 0s !important;
1185
+ }
918
1186
  }
1187
+ /* Opt-in font-smoothing (.bf-antialiased / .bf-subpixel-antialiased).
1188
+ * Names match Tailwind. Not applied globally: Apple recommends subpixel for body text on macOS. */
919
1189
 
920
- .bf-table-responsive.scrollbar {
921
- -webkit-overflow-scrolling: auto;
1190
+ .bf-antialiased {
1191
+ -webkit-font-smoothing: antialiased;
1192
+ -moz-osx-font-smoothing: grayscale;
922
1193
  }
923
1194
 
924
- .bf-table--zebra tbody tr:nth-child(odd),
925
- .bf-table-responsive--zebra tbody tr:nth-child(odd) {
926
- background-color: #e9e9e9;
1195
+ .bf-subpixel-antialiased {
1196
+ -webkit-font-smoothing: auto;
1197
+ -moz-osx-font-smoothing: auto;
927
1198
  }
1199
+ /* Print styles (adapted from h5bp main.css). */
928
1200
 
929
- /* main.css 3.0.0 | MIT License | https://github.com/h5bp/main.css#readme */
930
- /* ==========================================================================
931
- Print styles.
932
- Inlined to avoid the additional HTTP request:
933
- https://www.phpied.com/delay-loading-your-print-css/
934
- ========================================================================== */
935
1201
  @media print {
936
1202
  *,
937
1203
  *::before,
938
1204
  *::after {
939
1205
  background: #fff !important;
940
1206
  color: #000 !important;
941
- /* Black prints faster */
942
1207
  box-shadow: none !important;
943
1208
  text-shadow: none !important;
944
1209
  }
1210
+
945
1211
  a,
946
1212
  a:visited {
947
1213
  text-decoration: underline;
948
1214
  }
1215
+
949
1216
  a[href]::after {
950
- content: " (" attr(href) ")";
1217
+ content: ' (' attr(href) ')';
951
1218
  }
1219
+
952
1220
  abbr[title]::after {
953
- content: " (" attr(title) ")";
1221
+ content: ' (' attr(title) ')';
954
1222
  }
955
- /*
956
- * Don't show links that are fragment identifiers,
957
- * or use the `javascript:` pseudo protocol
958
- */
959
- a[href^="#"]::after,
960
- a[href^="javascript:"]::after {
961
- content: "";
1223
+
1224
+ a[href^='#']::after,
1225
+ a[href^='javascript:']::after {
1226
+ content: '';
962
1227
  }
1228
+
963
1229
  pre {
964
1230
  white-space: pre-wrap !important;
965
1231
  }
1232
+
966
1233
  pre,
967
1234
  blockquote {
968
1235
  border: 1px solid #999;
969
1236
  page-break-inside: avoid;
970
1237
  }
1238
+
971
1239
  tr,
972
1240
  img {
973
1241
  page-break-inside: avoid;
974
1242
  }
1243
+
975
1244
  p,
976
1245
  h2,
977
1246
  h3 {
978
1247
  orphans: 3;
979
1248
  widows: 3;
980
1249
  }
1250
+
981
1251
  h2,
982
1252
  h3 {
983
1253
  page-break-after: avoid;
984
1254
  }
985
- }
986
- @media print {
1255
+
1256
+ /* Framework print tweaks. */
987
1257
  body,
988
1258
  .bf-container {
989
1259
  min-width: 992px !important;
990
1260
  }
1261
+
991
1262
  .bf-table-responsive {
992
1263
  overflow: auto;
993
1264
  }
1265
+
994
1266
  .bf-table-responsive table {
995
1267
  width: auto;
996
1268
  }
1269
+
997
1270
  .bf-table-responsive table,
998
1271
  .bf-table {
999
1272
  border-collapse: collapse !important;
1000
1273
  }
1001
1274
  }
1002
- @media (prefers-reduced-motion: reduce) {
1003
- .bf-reduced-motion,
1004
- .bf-reduced-motion::before,
1005
- .bf-reduced-motion::after,
1006
- .bf-reduced-motion *,
1007
- .bf-reduced-motion *::before,
1008
- .bf-reduced-motion *::after {
1009
- animation-delay: -1ms !important;
1010
- animation-duration: 1ms !important;
1011
- animation-iteration-count: 1 !important;
1012
- background-attachment: initial !important;
1013
- scroll-behavior: auto !important;
1014
- transition-delay: 0s !important;
1015
- transition-duration: 0s !important;
1016
- }
1017
- }
1275
+ /* Filter helpers (.bf-filter-*). */
1276
+
1277
+ .bf-filter-invert {
1278
+ filter: invert(100%) !important;
1279
+ }
1280
+
1281
+ .bf-filter-dim-images {
1282
+ filter: brightness(0.8) contrast(1.2);
1283
+ }
1284
+
1285
+ .bf-filter-grayscale {
1286
+ filter: grayscale(1) !important;
1287
+ }
1288
+
1289
+ .bf-filter-blur {
1290
+ filter: blur(0.3rem) !important;
1291
+ }
1292
+
1293
+ .bf-filter-none {
1294
+ filter: none !important;
1295
+ }