bullframe.css 6.0.0 → 6.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +48 -1
- package/README.md +102 -28
- package/bin/bullframe.mjs +277 -0
- package/dist/css/bullframe-classless-dark.css +65 -58
- package/dist/css/bullframe-classless-dark.css.map +1 -1
- package/dist/css/bullframe-classless-dark.min.css +1 -1
- package/dist/css/bullframe-classless-dark.min.css.map +1 -1
- package/dist/css/bullframe-classless-system-default.css +61 -102
- package/dist/css/bullframe-classless-system-default.css.map +1 -1
- package/dist/css/bullframe-classless-system-default.min.css +1 -1
- package/dist/css/bullframe-classless-system-default.min.css.map +1 -1
- package/dist/css/bullframe-classless.css +37 -52
- package/dist/css/bullframe-classless.css.map +1 -1
- package/dist/css/bullframe-classless.min.css +1 -1
- package/dist/css/bullframe-classless.min.css.map +1 -1
- package/dist/css/bullframe-dark.css +216 -155
- package/dist/css/bullframe-dark.css.map +1 -1
- package/dist/css/bullframe-dark.min.css +1 -1
- package/dist/css/bullframe-dark.min.css.map +1 -1
- package/dist/css/bullframe-system-default.css +221 -154
- package/dist/css/bullframe-system-default.css.map +1 -1
- package/dist/css/bullframe-system-default.min.css +1 -1
- package/dist/css/bullframe-system-default.min.css.map +1 -1
- package/dist/css/bullframe-utilities.css +132 -65
- package/dist/css/bullframe-utilities.css.map +1 -1
- package/dist/css/bullframe-utilities.min.css +1 -1
- package/dist/css/bullframe-utilities.min.css.map +1 -1
- package/dist/css/bullframe.css +160 -115
- package/dist/css/bullframe.css.map +1 -1
- package/dist/css/bullframe.min.css +1 -1
- package/dist/css/bullframe.min.css.map +1 -1
- package/dist/skills/AGENTS.bullframe.md +46 -0
- package/dist/skills/_shared/builds.md +66 -0
- package/dist/skills/_shared/conventions.md +93 -0
- package/dist/skills/api.json +1023 -0
- package/dist/skills/bullframe-convert/SKILL.md +117 -0
- package/dist/skills/bullframe-convert/examples/after.html +43 -0
- package/dist/skills/bullframe-convert/examples/before.html +44 -0
- package/dist/skills/bullframe-core/SKILL.md +143 -0
- package/dist/skills/bullframe-docs-page/SKILL.md +89 -0
- package/dist/skills/bullframe-docs-page/examples/docs-page.html +72 -0
- package/dist/skills/bullframe-forms/SKILL.md +99 -0
- package/dist/skills/bullframe-forms/examples/contact-form.html +67 -0
- package/dist/skills/bullframe-landing-page/SKILL.md +96 -0
- package/dist/skills/bullframe-landing-page/examples/landing.html +98 -0
- package/dist/skills/index.json +134 -0
- package/package.json +21 -7
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* ! Bullframe CSS v6.
|
|
1
|
+
/* ! Bullframe CSS v6.2.0 | MIT License | https://github.com/marcop135/bullframe.css */
|
|
2
2
|
|
|
3
3
|
/* Class-based + system dark: bullframe.css, then dark rules under prefers-color-scheme. */
|
|
4
4
|
|
|
@@ -34,6 +34,11 @@
|
|
|
34
34
|
/* Invalid / error */
|
|
35
35
|
--bf-red: rgb(255 0 0);
|
|
36
36
|
|
|
37
|
+
/* Focus ring (prefers-contrast: more raises colour for WCAG 1.4.11) */
|
|
38
|
+
--bf-focus-ring-color: var(--bf-orange);
|
|
39
|
+
--bf-focus-ring-width: 0.2rem;
|
|
40
|
+
--bf-focus-ring-offset: 0.3rem;
|
|
41
|
+
|
|
37
42
|
/* Dark-mode surfaces (used by utility-global-dark*.css) */
|
|
38
43
|
--bf-dark-bg: rgb(28 28 28);
|
|
39
44
|
--bf-dark-link: rgb(77 165 255);
|
|
@@ -111,11 +116,6 @@ template {
|
|
|
111
116
|
* Light UA improvements; complements Bullframe base styles. */
|
|
112
117
|
|
|
113
118
|
@layer {
|
|
114
|
-
/* Spacing between content and focus outline (enhances focus.css). */
|
|
115
|
-
:focus-visible {
|
|
116
|
-
outline-offset: 3px;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
119
|
/* Disable mobile landscape text inflation on optimized layouts. */
|
|
120
120
|
html {
|
|
121
121
|
-webkit-text-size-adjust: none;
|
|
@@ -123,14 +123,11 @@ template {
|
|
|
123
123
|
text-size-adjust: none;
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
/* Comfortable default root line-height (body still uses --bf-body-line-height). */
|
|
127
|
-
html {
|
|
128
|
-
line-height: 1.5;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
126
|
/* Stable scrollbar gutter avoids layout jump on short pages. */
|
|
132
|
-
|
|
133
|
-
|
|
127
|
+
@supports (scrollbar-gutter: stable) {
|
|
128
|
+
html {
|
|
129
|
+
scrollbar-gutter: stable;
|
|
130
|
+
}
|
|
134
131
|
}
|
|
135
132
|
|
|
136
133
|
/* Nested h1 size/margin: match modern UA (Safari still nests sectioning styles). */
|
|
@@ -139,13 +136,6 @@ template {
|
|
|
139
136
|
margin-block: 0.67em;
|
|
140
137
|
}
|
|
141
138
|
|
|
142
|
-
/* abbr[title]: dotted underline + help cursor across engines. */
|
|
143
|
-
abbr[title] {
|
|
144
|
-
cursor: help;
|
|
145
|
-
text-decoration-line: underline;
|
|
146
|
-
text-decoration-style: dotted;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
139
|
/* mark: system Highlight colors under forced-colors. */
|
|
150
140
|
@media (forced-colors: active) {
|
|
151
141
|
mark {
|
|
@@ -215,17 +205,12 @@ template {
|
|
|
215
205
|
direction: ltr;
|
|
216
206
|
}
|
|
217
207
|
|
|
218
|
-
/* Tables:
|
|
208
|
+
/* Tables: outer border. Cell borders and padding come from
|
|
209
|
+
* miscellaneous/tables.css, which is unlayered and therefore wins. */
|
|
219
210
|
table {
|
|
220
211
|
border: 1px solid currentColor;
|
|
221
212
|
}
|
|
222
213
|
|
|
223
|
-
th,
|
|
224
|
-
td {
|
|
225
|
-
border: 1px solid currentColor;
|
|
226
|
-
padding: 0.25em 0.5em;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
214
|
/* Soft dialog / popover enter transitions (skip when reduced-motion is on). */
|
|
230
215
|
@media (prefers-reduced-motion: no-preference) {
|
|
231
216
|
dialog::backdrop {
|
|
@@ -259,26 +244,11 @@ template {
|
|
|
259
244
|
}
|
|
260
245
|
}
|
|
261
246
|
|
|
262
|
-
/* Keep [hidden] hard-hidden except until-found. */
|
|
263
|
-
[hidden]:not([hidden='until-found']) {
|
|
264
|
-
display: none !important;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
247
|
/* Images as blocks (max-width still from embedded-content.css). */
|
|
268
248
|
img {
|
|
269
249
|
display: block;
|
|
270
250
|
}
|
|
271
251
|
|
|
272
|
-
/* summary: pointer on the whole control, not only ::marker. */
|
|
273
|
-
summary {
|
|
274
|
-
cursor: default;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
/* iframes: no default border. */
|
|
278
|
-
iframe {
|
|
279
|
-
border: none;
|
|
280
|
-
}
|
|
281
|
-
|
|
282
252
|
/* Popovers: anchor near trigger when position-area is supported. */
|
|
283
253
|
@supports (position-area: block-end span-inline-end) {
|
|
284
254
|
[popover] {
|
|
@@ -356,7 +326,18 @@ h6 {
|
|
|
356
326
|
color: inherit;
|
|
357
327
|
line-height: 1.25;
|
|
358
328
|
margin-bottom: var(--bf-spacing-lg);
|
|
359
|
-
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/* Balanced headings where supported; no-op elsewhere. */
|
|
332
|
+
@supports (text-wrap: balance) {
|
|
333
|
+
h1,
|
|
334
|
+
h2,
|
|
335
|
+
h3,
|
|
336
|
+
h4,
|
|
337
|
+
h5,
|
|
338
|
+
h6 {
|
|
339
|
+
text-wrap: balance;
|
|
340
|
+
}
|
|
360
341
|
}
|
|
361
342
|
|
|
362
343
|
h1 {
|
|
@@ -441,6 +422,7 @@ strong {
|
|
|
441
422
|
font-weight: inherit;
|
|
442
423
|
}
|
|
443
424
|
|
|
425
|
+
/* stylelint-disable-next-line no-duplicate-selectors -- normalize.css Safari fix */
|
|
444
426
|
b,
|
|
445
427
|
strong {
|
|
446
428
|
font-weight: bolder;
|
|
@@ -1116,7 +1098,7 @@ a:not([href], [class]):hover {
|
|
|
1116
1098
|
a:not([href], [tabindex]):focus {
|
|
1117
1099
|
outline: 0;
|
|
1118
1100
|
}
|
|
1119
|
-
/* Keyboard-first focus:
|
|
1101
|
+
/* Keyboard-first focus: :focus-visible ring from --bf-focus-ring-*; mute mouse outline.
|
|
1120
1102
|
* Text-like controls clear UA outline here; field chrome is in forms/styling.css. */
|
|
1121
1103
|
|
|
1122
1104
|
:where(:focus:not(:focus-visible)) {
|
|
@@ -1129,8 +1111,8 @@ a:not([href], [tabindex]):focus {
|
|
|
1129
1111
|
}
|
|
1130
1112
|
|
|
1131
1113
|
:focus-visible {
|
|
1132
|
-
outline:
|
|
1133
|
-
outline-offset:
|
|
1114
|
+
outline: var(--bf-focus-ring-width) solid var(--bf-focus-ring-color);
|
|
1115
|
+
outline-offset: var(--bf-focus-ring-offset);
|
|
1134
1116
|
}
|
|
1135
1117
|
|
|
1136
1118
|
/* Clear UA outline on text-like controls (styled fields keep their own chrome).
|
|
@@ -1155,8 +1137,7 @@ button:focus,
|
|
|
1155
1137
|
[type='checkbox']:focus,
|
|
1156
1138
|
input[list]:focus,
|
|
1157
1139
|
select:focus,
|
|
1158
|
-
textarea:focus
|
|
1159
|
-
.bf-btn:focus {
|
|
1140
|
+
textarea:focus {
|
|
1160
1141
|
outline: 0;
|
|
1161
1142
|
}
|
|
1162
1143
|
/* List spacing and nav list reset. */
|
|
@@ -1187,7 +1168,6 @@ ol {
|
|
|
1187
1168
|
nav ol,
|
|
1188
1169
|
nav ul {
|
|
1189
1170
|
list-style: none;
|
|
1190
|
-
list-style-image: none;
|
|
1191
1171
|
margin-left: 0;
|
|
1192
1172
|
}
|
|
1193
1173
|
|
|
@@ -1430,6 +1410,12 @@ caption {
|
|
|
1430
1410
|
text-decoration: underline;
|
|
1431
1411
|
}
|
|
1432
1412
|
|
|
1413
|
+
/* Darker amber clears WCAG 1.4.11 (3:1) on white, --bf-light and --bf-dark-bg;
|
|
1414
|
+
* the default --bf-orange ring is only ~2:1 on white. */
|
|
1415
|
+
:root {
|
|
1416
|
+
--bf-focus-ring-color: rgb(184 115 0);
|
|
1417
|
+
}
|
|
1418
|
+
|
|
1433
1419
|
:focus-visible {
|
|
1434
1420
|
outline-width: 0.3rem;
|
|
1435
1421
|
outline-offset: 0.4rem;
|
|
@@ -1468,11 +1454,58 @@ caption {
|
|
|
1468
1454
|
button,
|
|
1469
1455
|
[type='button'],
|
|
1470
1456
|
[type='reset'],
|
|
1471
|
-
[type='submit']
|
|
1472
|
-
.bf-btn {
|
|
1457
|
+
[type='submit'] {
|
|
1473
1458
|
border: 1px solid ButtonText;
|
|
1474
1459
|
}
|
|
1475
1460
|
}
|
|
1461
|
+
/* Screen-reader and keyboard helpers (.bf-sr-only, .bf-skip-link, .bf-focusable).
|
|
1462
|
+
* Class-based and utilities builds only; classless ships no .bf-* classes. */
|
|
1463
|
+
|
|
1464
|
+
/* Visually hidden; available to screen readers (h5bp / Snook). */
|
|
1465
|
+
.bf-sr-only {
|
|
1466
|
+
border: 0 !important;
|
|
1467
|
+
clip: rect(0, 0, 0, 0) !important;
|
|
1468
|
+
height: 1px !important;
|
|
1469
|
+
margin: -1px !important;
|
|
1470
|
+
overflow: hidden !important;
|
|
1471
|
+
padding: 0 !important;
|
|
1472
|
+
position: absolute !important;
|
|
1473
|
+
white-space: nowrap !important;
|
|
1474
|
+
width: 1px !important;
|
|
1475
|
+
}
|
|
1476
|
+
|
|
1477
|
+
/* .bf-sr-only, revealed on focus. .focusable is the legacy name; both work. */
|
|
1478
|
+
.bf-sr-only.focusable:active,
|
|
1479
|
+
.bf-sr-only.focusable:focus,
|
|
1480
|
+
.bf-sr-only.bf-focusable:active,
|
|
1481
|
+
.bf-sr-only.bf-focusable:focus {
|
|
1482
|
+
clip: auto !important;
|
|
1483
|
+
height: auto !important;
|
|
1484
|
+
margin: 0 !important;
|
|
1485
|
+
overflow: visible !important;
|
|
1486
|
+
position: static !important;
|
|
1487
|
+
white-space: inherit !important;
|
|
1488
|
+
width: auto !important;
|
|
1489
|
+
}
|
|
1490
|
+
|
|
1491
|
+
/* Skip link: hidden until focused, then pinned to the top-left without
|
|
1492
|
+
* reflowing the page (unlike .bf-sr-only.focusable, which returns to flow). */
|
|
1493
|
+
.bf-skip-link {
|
|
1494
|
+
position: absolute;
|
|
1495
|
+
top: 0;
|
|
1496
|
+
left: 0;
|
|
1497
|
+
z-index: 9999;
|
|
1498
|
+
padding: var(--bf-spacing-md) var(--bf-spacing-lg);
|
|
1499
|
+
color: var(--bf-blue);
|
|
1500
|
+
background-color: var(--bf-white);
|
|
1501
|
+
border: 1px solid var(--bf-gray-light);
|
|
1502
|
+
transform: translateY(-100%);
|
|
1503
|
+
}
|
|
1504
|
+
|
|
1505
|
+
.bf-skip-link:focus,
|
|
1506
|
+
.bf-skip-link:focus-visible {
|
|
1507
|
+
transform: translateY(0);
|
|
1508
|
+
}
|
|
1476
1509
|
|
|
1477
1510
|
/* Utilities */
|
|
1478
1511
|
/* Display, visibility, float, position, and width helpers. */
|
|
@@ -1506,30 +1539,8 @@ caption {
|
|
|
1506
1539
|
padding: 0 !important;
|
|
1507
1540
|
}
|
|
1508
1541
|
|
|
1509
|
-
/*
|
|
1510
|
-
.
|
|
1511
|
-
border: 0 !important;
|
|
1512
|
-
clip: rect(0, 0, 0, 0) !important;
|
|
1513
|
-
height: 1px !important;
|
|
1514
|
-
margin: -1px !important;
|
|
1515
|
-
overflow: hidden !important;
|
|
1516
|
-
padding: 0 !important;
|
|
1517
|
-
position: absolute !important;
|
|
1518
|
-
white-space: nowrap !important;
|
|
1519
|
-
width: 1px !important;
|
|
1520
|
-
}
|
|
1521
|
-
|
|
1522
|
-
/* .bf-sr-only, revealed on focus (skip links). */
|
|
1523
|
-
.bf-sr-only.focusable:active,
|
|
1524
|
-
.bf-sr-only.focusable:focus {
|
|
1525
|
-
clip: auto !important;
|
|
1526
|
-
height: auto !important;
|
|
1527
|
-
margin: 0 !important;
|
|
1528
|
-
overflow: visible !important;
|
|
1529
|
-
position: static !important;
|
|
1530
|
-
white-space: inherit !important;
|
|
1531
|
-
width: auto !important;
|
|
1532
|
-
}
|
|
1542
|
+
/* .bf-sr-only, .bf-focusable and .bf-skip-link live in
|
|
1543
|
+
* miscellaneous/a11y-helpers.css (class-based and utilities builds). */
|
|
1533
1544
|
|
|
1534
1545
|
.bf-invisible {
|
|
1535
1546
|
visibility: hidden !important;
|
|
@@ -2115,19 +2126,24 @@ table th[class^='bf-col'] {
|
|
|
2115
2126
|
margin-right: 0 !important;
|
|
2116
2127
|
}
|
|
2117
2128
|
|
|
2118
|
-
.bf-m-
|
|
2129
|
+
/* .bf-m-N is the historical short form of .bf-m-b-N; both set margin-bottom. */
|
|
2130
|
+
.bf-m-1,
|
|
2131
|
+
.bf-m-b-1 {
|
|
2119
2132
|
margin-bottom: var(--bf-spacing-md) !important;
|
|
2120
2133
|
}
|
|
2121
2134
|
|
|
2122
|
-
.bf-m-2
|
|
2135
|
+
.bf-m-2,
|
|
2136
|
+
.bf-m-b-2 {
|
|
2123
2137
|
margin-bottom: var(--bf-spacing-lg) !important;
|
|
2124
2138
|
}
|
|
2125
2139
|
|
|
2126
|
-
.bf-m-3
|
|
2140
|
+
.bf-m-3,
|
|
2141
|
+
.bf-m-b-3 {
|
|
2127
2142
|
margin-bottom: var(--bf-spacing-xl) !important;
|
|
2128
2143
|
}
|
|
2129
2144
|
|
|
2130
|
-
.bf-m-4
|
|
2145
|
+
.bf-m-4,
|
|
2146
|
+
.bf-m-b-4 {
|
|
2131
2147
|
margin-bottom: var(--bf-spacing-xxl) !important;
|
|
2132
2148
|
}
|
|
2133
2149
|
|
|
@@ -2147,22 +2163,6 @@ table th[class^='bf-col'] {
|
|
|
2147
2163
|
margin-top: var(--bf-spacing-xxl) !important;
|
|
2148
2164
|
}
|
|
2149
2165
|
|
|
2150
|
-
.bf-m-b-1 {
|
|
2151
|
-
margin-bottom: var(--bf-spacing-md) !important;
|
|
2152
|
-
}
|
|
2153
|
-
|
|
2154
|
-
.bf-m-b-2 {
|
|
2155
|
-
margin-bottom: var(--bf-spacing-lg) !important;
|
|
2156
|
-
}
|
|
2157
|
-
|
|
2158
|
-
.bf-m-b-3 {
|
|
2159
|
-
margin-bottom: var(--bf-spacing-xl) !important;
|
|
2160
|
-
}
|
|
2161
|
-
|
|
2162
|
-
.bf-m-b-4 {
|
|
2163
|
-
margin-bottom: var(--bf-spacing-xxl) !important;
|
|
2164
|
-
}
|
|
2165
|
-
|
|
2166
2166
|
.bf-p-0 {
|
|
2167
2167
|
padding: 0 !important;
|
|
2168
2168
|
}
|
|
@@ -2183,19 +2183,24 @@ table th[class^='bf-col'] {
|
|
|
2183
2183
|
padding-right: 0 !important;
|
|
2184
2184
|
}
|
|
2185
2185
|
|
|
2186
|
-
.bf-p-
|
|
2186
|
+
/* .bf-p-N is the historical short form of .bf-p-b-N; both set padding-bottom. */
|
|
2187
|
+
.bf-p-1,
|
|
2188
|
+
.bf-p-b-1 {
|
|
2187
2189
|
padding-bottom: var(--bf-spacing-md) !important;
|
|
2188
2190
|
}
|
|
2189
2191
|
|
|
2190
|
-
.bf-p-2
|
|
2192
|
+
.bf-p-2,
|
|
2193
|
+
.bf-p-b-2 {
|
|
2191
2194
|
padding-bottom: var(--bf-spacing-lg) !important;
|
|
2192
2195
|
}
|
|
2193
2196
|
|
|
2194
|
-
.bf-p-3
|
|
2197
|
+
.bf-p-3,
|
|
2198
|
+
.bf-p-b-3 {
|
|
2195
2199
|
padding-bottom: var(--bf-spacing-xl) !important;
|
|
2196
2200
|
}
|
|
2197
2201
|
|
|
2198
|
-
.bf-p-4
|
|
2202
|
+
.bf-p-4,
|
|
2203
|
+
.bf-p-b-4 {
|
|
2199
2204
|
padding-bottom: var(--bf-spacing-xxl) !important;
|
|
2200
2205
|
}
|
|
2201
2206
|
|
|
@@ -2214,22 +2219,6 @@ table th[class^='bf-col'] {
|
|
|
2214
2219
|
.bf-p-t-4 {
|
|
2215
2220
|
padding-top: var(--bf-spacing-xxl) !important;
|
|
2216
2221
|
}
|
|
2217
|
-
|
|
2218
|
-
.bf-p-b-1 {
|
|
2219
|
-
padding-bottom: var(--bf-spacing-md) !important;
|
|
2220
|
-
}
|
|
2221
|
-
|
|
2222
|
-
.bf-p-b-2 {
|
|
2223
|
-
padding-bottom: var(--bf-spacing-lg) !important;
|
|
2224
|
-
}
|
|
2225
|
-
|
|
2226
|
-
.bf-p-b-3 {
|
|
2227
|
-
padding-bottom: var(--bf-spacing-xl) !important;
|
|
2228
|
-
}
|
|
2229
|
-
|
|
2230
|
-
.bf-p-b-4 {
|
|
2231
|
-
padding-bottom: var(--bf-spacing-xxl) !important;
|
|
2232
|
-
}
|
|
2233
2222
|
/* .bf-btn and variants. */
|
|
2234
2223
|
|
|
2235
2224
|
.bf-btn {
|
|
@@ -2255,6 +2244,10 @@ table th[class^='bf-col'] {
|
|
|
2255
2244
|
transition: all 0.2s;
|
|
2256
2245
|
}
|
|
2257
2246
|
|
|
2247
|
+
.bf-btn:focus {
|
|
2248
|
+
outline: 0;
|
|
2249
|
+
}
|
|
2250
|
+
|
|
2258
2251
|
.bf-btn:hover,
|
|
2259
2252
|
.bf-btn:active,
|
|
2260
2253
|
.bf-btn:focus {
|
|
@@ -2303,6 +2296,12 @@ table th[class^='bf-col'] {
|
|
|
2303
2296
|
background-color: var(--bf-gray-light);
|
|
2304
2297
|
outline: none !important;
|
|
2305
2298
|
}
|
|
2299
|
+
|
|
2300
|
+
@media (forced-colors: active) {
|
|
2301
|
+
.bf-btn {
|
|
2302
|
+
border: 1px solid ButtonText;
|
|
2303
|
+
}
|
|
2304
|
+
}
|
|
2306
2305
|
/* Focused / invalid / disabled form state classes. */
|
|
2307
2306
|
|
|
2308
2307
|
.bf-focused {
|
|
@@ -2619,6 +2618,52 @@ dt {
|
|
|
2619
2618
|
-webkit-font-smoothing: auto;
|
|
2620
2619
|
-moz-osx-font-smoothing: auto;
|
|
2621
2620
|
}
|
|
2621
|
+
/* Opt-in color-scheme. Put one on <html> so the UA themes native widgets
|
|
2622
|
+
* (date pickers, select popups, autofill, scrollbars) to match the build. */
|
|
2623
|
+
|
|
2624
|
+
.bf-scheme-light {
|
|
2625
|
+
color-scheme: light;
|
|
2626
|
+
}
|
|
2627
|
+
|
|
2628
|
+
.bf-scheme-dark {
|
|
2629
|
+
color-scheme: dark;
|
|
2630
|
+
}
|
|
2631
|
+
|
|
2632
|
+
.bf-scheme-auto {
|
|
2633
|
+
color-scheme: light dark;
|
|
2634
|
+
}
|
|
2635
|
+
/* Opt-in minimum target size (WCAG 2.5.8, 24x24 CSS px).
|
|
2636
|
+
* Grows the hit box only; the painted control keeps its size. */
|
|
2637
|
+
|
|
2638
|
+
.bf-target-size,
|
|
2639
|
+
.bf-target-size a,
|
|
2640
|
+
.bf-target-size button,
|
|
2641
|
+
.bf-target-size [type='button'],
|
|
2642
|
+
.bf-target-size [type='reset'],
|
|
2643
|
+
.bf-target-size [type='submit'],
|
|
2644
|
+
.bf-target-size [type='checkbox'],
|
|
2645
|
+
.bf-target-size [type='radio'],
|
|
2646
|
+
.bf-target-size select,
|
|
2647
|
+
.bf-target-size summary,
|
|
2648
|
+
.bf-target-size .bf-btn {
|
|
2649
|
+
min-block-size: 24px;
|
|
2650
|
+
min-inline-size: 24px;
|
|
2651
|
+
}
|
|
2652
|
+
|
|
2653
|
+
/* Inline links in running text are exempt (WCAG 2.5.8 inline exception). */
|
|
2654
|
+
.bf-target-size p a,
|
|
2655
|
+
.bf-target-size li a,
|
|
2656
|
+
.bf-target-size td a,
|
|
2657
|
+
.bf-target-size dd a {
|
|
2658
|
+
min-block-size: 0;
|
|
2659
|
+
min-inline-size: 0;
|
|
2660
|
+
}
|
|
2661
|
+
/* Opt-in accent-color: native checkbox, radio, range and progress follow
|
|
2662
|
+
* --bf-blue instead of the UA default. Put it on <html> or any container. */
|
|
2663
|
+
|
|
2664
|
+
.bf-accent-native {
|
|
2665
|
+
accent-color: var(--bf-blue);
|
|
2666
|
+
}
|
|
2622
2667
|
/* Print styles (adapted from h5bp main.css). */
|
|
2623
2668
|
|
|
2624
2669
|
@media print {
|
|
@@ -2700,8 +2745,17 @@ dt {
|
|
|
2700
2745
|
@media (prefers-color-scheme: dark) {
|
|
2701
2746
|
|
|
2702
2747
|
/* Shared dark-mode rules for always-dark and prefers-color-scheme builds.
|
|
2748
|
+
* Element rules come from _utility-global-dark-elements.css, which the
|
|
2749
|
+
* classless dark sheet imports too; only the .bf-* extras live here.
|
|
2703
2750
|
* Variant-only extras: utility-global-dark.css. Scrollbars: global-dark-scrollbars.css.
|
|
2704
2751
|
* Underscore prefix excludes this file from the buildAllCss glob. */
|
|
2752
|
+
}
|
|
2753
|
+
@media (prefers-color-scheme: dark) {
|
|
2754
|
+
|
|
2755
|
+
/* Element-level dark-mode rules, shared by the class-based and classless dark
|
|
2756
|
+
* sheets. Contains no .bf-* selector, so the classless builds can import it as
|
|
2757
|
+
* they are. Class-based extras live in _utility-global-dark-shared.css.
|
|
2758
|
+
* Underscore prefix excludes this file from the buildAllCss glob. */
|
|
2705
2759
|
|
|
2706
2760
|
html {
|
|
2707
2761
|
color: var(--bf-light);
|
|
@@ -2787,17 +2841,6 @@ textarea:focus {
|
|
|
2787
2841
|
box-shadow: 0 0 0 3px var(--bf-dark-shadow-focus);
|
|
2788
2842
|
}
|
|
2789
2843
|
|
|
2790
|
-
.bf-focused {
|
|
2791
|
-
border-color: var(--bf-dark-border-focus) !important;
|
|
2792
|
-
box-shadow: 0 0 0 3px var(--bf-dark-shadow-focus) !important;
|
|
2793
|
-
}
|
|
2794
|
-
|
|
2795
|
-
.bf-invalid,
|
|
2796
|
-
.bf-invalid:focus {
|
|
2797
|
-
color: var(--bf-dark-invalid) !important;
|
|
2798
|
-
border-color: var(--bf-dark-invalid) !important;
|
|
2799
|
-
}
|
|
2800
|
-
|
|
2801
2844
|
select:not([size], select[multiple]) {
|
|
2802
2845
|
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23f0f0f0' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e");
|
|
2803
2846
|
}
|
|
@@ -2830,8 +2873,7 @@ textarea::placeholder {
|
|
|
2830
2873
|
button,
|
|
2831
2874
|
[type='button'],
|
|
2832
2875
|
[type='reset'],
|
|
2833
|
-
[type='submit']
|
|
2834
|
-
.bf-btn {
|
|
2876
|
+
[type='submit'] {
|
|
2835
2877
|
background: var(--bf-gray-light);
|
|
2836
2878
|
}
|
|
2837
2879
|
|
|
@@ -2846,10 +2888,7 @@ button:focus,
|
|
|
2846
2888
|
[type='reset']:focus,
|
|
2847
2889
|
[type='submit']:hover,
|
|
2848
2890
|
[type='submit']:active,
|
|
2849
|
-
[type='submit']:focus
|
|
2850
|
-
.bf-btn:hover,
|
|
2851
|
-
.bf-btn:active,
|
|
2852
|
-
.bf-btn:focus {
|
|
2891
|
+
[type='submit']:focus {
|
|
2853
2892
|
background: var(--bf-dark-button-hover);
|
|
2854
2893
|
}
|
|
2855
2894
|
|
|
@@ -2860,7 +2899,56 @@ button:focus,
|
|
|
2860
2899
|
[type='reset']:active,
|
|
2861
2900
|
[type='reset']:focus,
|
|
2862
2901
|
[type='submit']:active,
|
|
2863
|
-
[type='submit']:focus
|
|
2902
|
+
[type='submit']:focus {
|
|
2903
|
+
box-shadow: 0 0 0 3px var(--bf-dark-button-shadow);
|
|
2904
|
+
}
|
|
2905
|
+
|
|
2906
|
+
dialog {
|
|
2907
|
+
color: var(--bf-light);
|
|
2908
|
+
background-color: var(--bf-dark-bg);
|
|
2909
|
+
}
|
|
2910
|
+
|
|
2911
|
+
caption {
|
|
2912
|
+
color: var(--bf-gray-light);
|
|
2913
|
+
}
|
|
2914
|
+
|
|
2915
|
+
progress[value] {
|
|
2916
|
+
background: var(--bf-gray-dark-extra);
|
|
2917
|
+
color: var(--bf-blue);
|
|
2918
|
+
}
|
|
2919
|
+
|
|
2920
|
+
progress[value]::-webkit-progress-bar {
|
|
2921
|
+
background: var(--bf-gray-dark-extra);
|
|
2922
|
+
}
|
|
2923
|
+
|
|
2924
|
+
progress[value]::-webkit-progress-value {
|
|
2925
|
+
background: var(--bf-blue);
|
|
2926
|
+
}
|
|
2927
|
+
}
|
|
2928
|
+
|
|
2929
|
+
@media (prefers-color-scheme: dark) {
|
|
2930
|
+
|
|
2931
|
+
.bf-focused {
|
|
2932
|
+
border-color: var(--bf-dark-border-focus) !important;
|
|
2933
|
+
box-shadow: 0 0 0 3px var(--bf-dark-shadow-focus) !important;
|
|
2934
|
+
}
|
|
2935
|
+
|
|
2936
|
+
.bf-invalid,
|
|
2937
|
+
.bf-invalid:focus {
|
|
2938
|
+
color: var(--bf-dark-invalid) !important;
|
|
2939
|
+
border-color: var(--bf-dark-invalid) !important;
|
|
2940
|
+
}
|
|
2941
|
+
|
|
2942
|
+
.bf-btn {
|
|
2943
|
+
background: var(--bf-gray-light);
|
|
2944
|
+
}
|
|
2945
|
+
|
|
2946
|
+
.bf-btn:hover,
|
|
2947
|
+
.bf-btn:active,
|
|
2948
|
+
.bf-btn:focus {
|
|
2949
|
+
background: var(--bf-dark-button-hover);
|
|
2950
|
+
}
|
|
2951
|
+
|
|
2864
2952
|
.bf-btn:active,
|
|
2865
2953
|
.bf-btn:focus {
|
|
2866
2954
|
box-shadow: 0 0 0 3px var(--bf-dark-button-shadow);
|
|
@@ -2890,29 +2978,8 @@ button:focus,
|
|
|
2890
2978
|
.bf-table-responsive--zebra tbody tr:nth-child(odd) {
|
|
2891
2979
|
background-color: var(--bf-gray-dark-extra);
|
|
2892
2980
|
}
|
|
2893
|
-
|
|
2894
|
-
dialog {
|
|
2895
|
-
color: var(--bf-light);
|
|
2896
|
-
background-color: var(--bf-dark-bg);
|
|
2897
2981
|
}
|
|
2898
2982
|
|
|
2899
|
-
caption {
|
|
2900
|
-
color: var(--bf-gray-light);
|
|
2901
|
-
}
|
|
2902
|
-
|
|
2903
|
-
progress[value] {
|
|
2904
|
-
background: var(--bf-gray-dark-extra);
|
|
2905
|
-
color: var(--bf-blue);
|
|
2906
|
-
}
|
|
2907
|
-
|
|
2908
|
-
progress[value]::-webkit-progress-bar {
|
|
2909
|
-
background: var(--bf-gray-dark-extra);
|
|
2910
|
-
}
|
|
2911
|
-
|
|
2912
|
-
progress[value]::-webkit-progress-value {
|
|
2913
|
-
background: var(--bf-blue);
|
|
2914
|
-
}
|
|
2915
|
-
}
|
|
2916
2983
|
@media (prefers-color-scheme: dark) {
|
|
2917
2984
|
|
|
2918
2985
|
/* Dark scrollbar colors (Firefox + WebKit). */
|