bullframe.css 6.1.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.
Files changed (40) hide show
  1. package/CHANGELOG.md +24 -1
  2. package/README.md +34 -20
  3. package/bin/bullframe.mjs +277 -0
  4. package/dist/css/bullframe-classless-dark.css +1 -1
  5. package/dist/css/bullframe-classless-dark.min.css +1 -1
  6. package/dist/css/bullframe-classless-dark.min.css.map +1 -1
  7. package/dist/css/bullframe-classless-system-default.css +1 -1
  8. package/dist/css/bullframe-classless-system-default.min.css +1 -1
  9. package/dist/css/bullframe-classless-system-default.min.css.map +1 -1
  10. package/dist/css/bullframe-classless.css +1 -1
  11. package/dist/css/bullframe-classless.min.css +1 -1
  12. package/dist/css/bullframe-classless.min.css.map +1 -1
  13. package/dist/css/bullframe-dark.css +1 -1
  14. package/dist/css/bullframe-dark.min.css +1 -1
  15. package/dist/css/bullframe-dark.min.css.map +1 -1
  16. package/dist/css/bullframe-system-default.css +1 -1
  17. package/dist/css/bullframe-system-default.min.css +1 -1
  18. package/dist/css/bullframe-system-default.min.css.map +1 -1
  19. package/dist/css/bullframe-utilities.css +1 -1
  20. package/dist/css/bullframe-utilities.min.css +1 -1
  21. package/dist/css/bullframe-utilities.min.css.map +1 -1
  22. package/dist/css/bullframe.css +1 -1
  23. package/dist/css/bullframe.min.css +1 -1
  24. package/dist/css/bullframe.min.css.map +1 -1
  25. package/dist/skills/AGENTS.bullframe.md +46 -0
  26. package/dist/skills/_shared/builds.md +66 -0
  27. package/dist/skills/_shared/conventions.md +93 -0
  28. package/dist/skills/api.json +1023 -0
  29. package/dist/skills/bullframe-convert/SKILL.md +117 -0
  30. package/dist/skills/bullframe-convert/examples/after.html +43 -0
  31. package/dist/skills/bullframe-convert/examples/before.html +44 -0
  32. package/dist/skills/bullframe-core/SKILL.md +143 -0
  33. package/dist/skills/bullframe-docs-page/SKILL.md +89 -0
  34. package/dist/skills/bullframe-docs-page/examples/docs-page.html +72 -0
  35. package/dist/skills/bullframe-forms/SKILL.md +99 -0
  36. package/dist/skills/bullframe-forms/examples/contact-form.html +67 -0
  37. package/dist/skills/bullframe-landing-page/SKILL.md +96 -0
  38. package/dist/skills/bullframe-landing-page/examples/landing.html +98 -0
  39. package/dist/skills/index.json +134 -0
  40. package/package.json +15 -5
package/CHANGELOG.md CHANGED
@@ -7,6 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [6.2.0] - 2026-09-29
11
+
12
+ ### Added
13
+
14
+ - AI agent skills: `bullframe-core`, `bullframe-landing-page`, `bullframe-forms`, `bullframe-docs-page`, `bullframe-convert`; `npx bullframe.css skills install` (Claude, Cursor, Codex).
15
+ - Generated `api.json` (`.bf-*` classes, `--bf-*` tokens) in the package and at `/api.json`.
16
+ - AI skills docs page; docs site 404 page.
17
+ - `npm run test:e2e:sync-from-ci` to copy Playwright linux baselines from a CI run artifact.
18
+
19
+ ### Fixed
20
+
21
+ - Non-existent classes in Grid, Cards, Spacing, and Text docs.
22
+ - Wrong v6 token names in the migration guide.
23
+
24
+ ### Changed
25
+
26
+ - npm publish is manual from the release tag; **Publish to npm** is `workflow_dispatch` only (no `release: published` trigger).
27
+
28
+ ### Security
29
+
30
+ - Explicit `permissions: contents: read` on CI, Deploy docs, and Skills eval workflows.
31
+
10
32
  ## [6.1.0] - 2026-09-14
11
33
 
12
34
  ### Added
@@ -512,6 +534,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
512
534
  - Initial commit on 19 November 2012
513
535
  - Framework aimed to kickstart cross-browser responsive HTML/CSS development
514
536
 
515
- [Unreleased]: https://github.com/marcop135/bullframe.css/compare/v6.1.0...HEAD
537
+ [Unreleased]: https://github.com/marcop135/bullframe.css/compare/v6.2.0...HEAD
538
+ [6.2.0]: https://github.com/marcop135/bullframe.css/compare/v6.1.0...v6.2.0
516
539
  [6.1.0]: https://github.com/marcop135/bullframe.css/compare/v6.0.0...v6.1.0
517
540
  [6.0.0]: https://github.com/marcop135/bullframe.css/compare/v5.1.0...v6.0.0
package/README.md CHANGED
@@ -17,9 +17,13 @@ Semantic by default. Any stack.
17
17
 
18
18
  ---
19
19
 
20
- One-stylesheet CSS framework for plain HTML: no build step, no JavaScript. Typography, forms, tables, buttons, and layout out of the box.
20
+ One CSS file for plain HTML: type, forms, tables, buttons, and layout. No build step. No JavaScript.
21
21
 
22
- Light or dark. Built for pages and forms: landings, docs, help centers, and marketing microsites.
22
+ Class-based or classless. Light, dark, or system. About 8 kB gzipped. Drop it on a landing, docs site, or help center.
23
+
24
+ ## Quick start
25
+
26
+ 1. Add the stylesheet (CDN, always the latest release):
23
27
 
24
28
  <!-- sri:cdn:start -->
25
29
  ```html
@@ -27,7 +31,23 @@ Light or dark. Built for pages and forms: landings, docs, help centers, and mark
27
31
  ```
28
32
  <!-- sri:cdn:end -->
29
33
 
30
- [Check the docs →](https://bullframecss.marcopontili.com/)
34
+ 2. Write semantic HTML. Headings, forms, tables, and buttons are styled without classes.
35
+
36
+ 3. Swap the build when you need classless, dark, or system. See [Builds](#builds).
37
+
38
+ Or install from npm:
39
+
40
+ ```bash
41
+ npm install bullframe.css
42
+ ```
43
+
44
+ ```js
45
+ import 'bullframe.css';
46
+ ```
47
+
48
+ Default import: class-based, light. Other builds: `bullframe.css/classless`, `bullframe.css/dark`, and so on.
49
+
50
+ [Docs](https://bullframecss.marcopontili.com/) · [Examples](https://bullframecss.marcopontili.com/examples)
31
51
 
32
52
  ## Features
33
53
 
@@ -35,10 +55,11 @@ Light or dark. Built for pages and forms: landings, docs, help centers, and mark
35
55
  - Classless when you want clean markup; classes when you need layout control
36
56
  - Light and dark out of the box, no theme script
37
57
  - One stylesheet, about 8 kB gzipped: type, forms, tables, buttons, layout
38
- - Restyle the whole page by changing a few colour tokens
39
- - Accessibility built in: clear focus, reduced motion respect, WCAG AA defaults
40
- - Works with any stack: drop it on a landing, docs site, or help center
58
+ - Restyle the page by changing a few colour tokens
59
+ - Accessibility built in: clear focus, reduced motion, WCAG AA defaults
60
+ - Works with any stack: landings, docs, help centers
41
61
  - npm or CDN; nothing to compile to use it
62
+ - AI skills for coding agents: `npx bullframe.css skills install`
42
63
 
43
64
  ## Examples
44
65
 
@@ -61,25 +82,17 @@ Ready to copy: landings, blogs, forms, docs. Plain HTML, one stylesheet.
61
82
 
62
83
  [Browse all examples →](https://bullframecss.marcopontili.com/examples)
63
84
 
64
- ## Install
85
+ ## AI skills
65
86
 
66
- ```bash
67
- npm install bullframe.css
68
- ```
87
+ Markdown skills for AI coding agents ship in the npm package. No server. No API key.
69
88
 
70
- ```js
71
- import 'bullframe.css';
89
+ ```bash
90
+ npx bullframe.css skills install
72
91
  ```
73
92
 
74
- Default import: class-based, light. Other builds: `bullframe.css/classless`, `bullframe.css/dark`, and so on. See [Builds](#builds) below.
75
-
76
- ### CDN
77
-
78
- ```html
79
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bullframe.css">
80
- ```
93
+ Writes skill files plus a managed `AGENTS.md` block, and the matching layout under `.claude`, `.cursor`, or `.agents` when those folders exist.
81
94
 
82
- Always the latest release. Swap the path for another build (e.g. `bullframe.css/dist/css/bullframe-classless.min.css`).
95
+ Details: [AI skills](https://bullframecss.marcopontili.com/ai-skills).
83
96
 
84
97
  ## Builds
85
98
 
@@ -114,6 +127,7 @@ Seven files in `dist/css/`, each with a minified twin and a source map. Pick one
114
127
  | [Components](https://bullframecss.marcopontili.com/components/) | Cards, modals, navigation, buttons |
115
128
  | [Theming](https://bullframecss.marcopontili.com/theming) | Colours and dark mode |
116
129
  | [API reference](https://bullframecss.marcopontili.com/api-reference) | Full token and class list |
130
+ | [AI skills](https://bullframecss.marcopontili.com/ai-skills) | Skills for AI coding agents |
117
131
  | [Changelog](./CHANGELOG.md) | Release notes |
118
132
 
119
133
  ## Contributing
@@ -0,0 +1,277 @@
1
+ #!/usr/bin/env node
2
+ /* Bullframe CSS command line.
3
+ *
4
+ * One job: copy the agent skills that ship in this package into the current project,
5
+ * in whatever layout the project's AI tooling reads. Zero dependencies, no network,
6
+ * no postinstall hook, and it never touches the framework's CSS.
7
+ *
8
+ * npx bullframe.css skills list
9
+ * npx bullframe.css skills install [--target claude,cursor,codex,agents,dir] [--dir <path>]
10
+ * npx bullframe.css skills path
11
+ */
12
+ import { cp, mkdir, readFile, writeFile, access } from 'node:fs/promises';
13
+ import { constants } from 'node:fs';
14
+ import path from 'node:path';
15
+ import { fileURLToPath } from 'node:url';
16
+
17
+ const here = path.dirname(fileURLToPath(import.meta.url));
18
+ const packageRoot = path.resolve(here, '..');
19
+ const skillsDir = path.join(packageRoot, 'dist', 'skills');
20
+
21
+ const START = '<!-- bullframe:skills:start -->';
22
+ const END = '<!-- bullframe:skills:end -->';
23
+ const LOCAL_DIR = 'bullframe-skills';
24
+
25
+ /** Tool targets that write into `$parent/skills/` with the same SKILL.md layout. */
26
+ const TOOL_TARGETS = {
27
+ claude: { parent: '.claude', label: '.claude/skills' },
28
+ cursor: { parent: '.cursor', label: '.cursor/skills' },
29
+ codex: { parent: '.agents', label: '.agents/skills' },
30
+ };
31
+
32
+ const KNOWN_TARGETS = [...Object.keys(TOOL_TARGETS), 'agents', 'dir'];
33
+
34
+ const USAGE = `bullframe.css - agent skills for the Bullframe CSS framework
35
+
36
+ Usage
37
+ npx bullframe.css skills list
38
+ npx bullframe.css skills install [options]
39
+ npx bullframe.css skills path
40
+
41
+ Install options
42
+ --target <list> Comma separated: claude, cursor, codex, agents, dir.
43
+ Default: agents, plus claude / cursor / codex when a
44
+ .claude, .cursor, or .agents directory exists.
45
+ --dir <path> Where the "dir" and "agents" targets copy the skills.
46
+ Default: ./${LOCAL_DIR}
47
+ --dry-run Print what would be written and exit without writing.
48
+ --force Overwrite files that already differ.
49
+
50
+ Other
51
+ --help, -h This text
52
+ --version, -v Package version
53
+ `;
54
+
55
+ function parseArgs(argv) {
56
+ const options = { targets: null, dir: null, dryRun: false, force: false };
57
+ const positional = [];
58
+
59
+ for (let i = 0; i < argv.length; i++) {
60
+ const arg = argv[i];
61
+ if (arg === '--target') options.targets = (argv[++i] ?? '').split(',').filter(Boolean);
62
+ else if (arg === '--dir') options.dir = argv[++i];
63
+ else if (arg === '--dry-run') options.dryRun = true;
64
+ else if (arg === '--force') options.force = true;
65
+ else if (arg === '--help' || arg === '-h') options.help = true;
66
+ else if (arg === '--version' || arg === '-v') options.version = true;
67
+ else if (arg.startsWith('-')) options.unknown = arg;
68
+ else positional.push(arg);
69
+ }
70
+
71
+ return { options, positional };
72
+ }
73
+
74
+ async function exists(target) {
75
+ try {
76
+ await access(target, constants.F_OK);
77
+ return true;
78
+ } catch {
79
+ return false;
80
+ }
81
+ }
82
+
83
+ async function readIndex() {
84
+ try {
85
+ return JSON.parse(await readFile(path.join(skillsDir, 'index.json'), 'utf8'));
86
+ } catch {
87
+ fail(
88
+ `no skills found in ${skillsDir}.\nInstall the published package, or run "npm run skills:build" in a clone.`
89
+ );
90
+ }
91
+ }
92
+
93
+ function fail(message) {
94
+ console.error(`bullframe: ${message}`);
95
+ process.exit(1);
96
+ }
97
+
98
+ /** Replace the managed block in place, or append it. Never duplicates. */
99
+ function mergeAgentsBlock(existing, body) {
100
+ const block = `${START}\n${body.trimEnd()}\n${END}\n`;
101
+ if (!existing) return block;
102
+
103
+ const start = existing.indexOf(START);
104
+ const end = existing.indexOf(END);
105
+ if (start !== -1 && end !== -1 && end > start) {
106
+ return existing.slice(0, start) + block.trimEnd() + existing.slice(end + END.length);
107
+ }
108
+
109
+ const separator = existing.endsWith('\n') ? '\n' : '\n\n';
110
+ return `${existing}${separator}${block}`;
111
+ }
112
+
113
+ async function writeFileIfNeeded(file, content, { dryRun, force }, written) {
114
+ const current = (await exists(file)) ? await readFile(file, 'utf8') : null;
115
+ if (current === content) {
116
+ written.push(`unchanged ${path.relative(process.cwd(), file)}`);
117
+ return;
118
+ }
119
+ if (current !== null && !force && !file.endsWith('AGENTS.md')) {
120
+ written.push(`skipped ${path.relative(process.cwd(), file)} (exists, use --force)`);
121
+ return;
122
+ }
123
+ written.push(
124
+ `${current === null ? 'wrote ' : 'updated '} ${path.relative(process.cwd(), file)}`
125
+ );
126
+ if (dryRun) return;
127
+ await mkdir(path.dirname(file), { recursive: true });
128
+ await writeFile(file, content, 'utf8');
129
+ }
130
+
131
+ async function copyTree(from, to, { dryRun }, written, label) {
132
+ written.push(`${dryRun ? 'would copy' : 'copied '} ${label}`);
133
+ if (dryRun) return;
134
+ await mkdir(path.dirname(to), { recursive: true });
135
+ await cp(from, to, { recursive: true, force: true });
136
+ }
137
+
138
+ /** Copy every skill plus `_shared` and `api.json` into `$parent/skills/`. */
139
+ async function installToolLayout(index, parentDir, label, options, written) {
140
+ const root = path.join(parentDir, 'skills');
141
+ for (const skill of index.skills) {
142
+ await copyTree(
143
+ path.join(skillsDir, skill.name),
144
+ path.join(root, skill.name),
145
+ options,
146
+ written,
147
+ `${label}/${skill.name}/`
148
+ );
149
+ }
150
+ await copyTree(
151
+ path.join(skillsDir, '_shared'),
152
+ path.join(root, '_shared'),
153
+ options,
154
+ written,
155
+ `${label}/_shared/`
156
+ );
157
+ await writeFileIfNeeded(
158
+ path.join(root, '_shared', 'api.json'),
159
+ await readFile(path.join(skillsDir, 'api.json'), 'utf8'),
160
+ { ...options, force: true },
161
+ written
162
+ );
163
+ }
164
+
165
+ async function listSkills() {
166
+ const index = await readIndex();
167
+ console.log(`bullframe.css ${index.version} - ${index.skills.length} skills\n`);
168
+ for (const skill of index.skills) {
169
+ console.log(` ${skill.name}`);
170
+ console.log(` ${skill.description}`);
171
+ if (skill.requires?.length) console.log(` requires: ${skill.requires.join(', ')}`);
172
+ }
173
+ console.log(`\nInstall with: npx bullframe.css skills install`);
174
+ }
175
+
176
+ async function installSkills(options) {
177
+ const index = await readIndex();
178
+ const cwd = process.cwd();
179
+ const localDir = path.resolve(cwd, options.dir ?? LOCAL_DIR);
180
+
181
+ let targets = options.targets;
182
+ if (!targets) {
183
+ targets = ['agents'];
184
+ for (const [name, { parent }] of Object.entries(TOOL_TARGETS)) {
185
+ if (await exists(path.join(cwd, parent))) targets.push(name);
186
+ }
187
+ }
188
+
189
+ const unknown = targets.filter((t) => !KNOWN_TARGETS.includes(t));
190
+ if (unknown.length) {
191
+ fail(`unknown target "${unknown[0]}". Use ${KNOWN_TARGETS.join(', ')}.`);
192
+ }
193
+
194
+ const written = [];
195
+
196
+ for (const name of Object.keys(TOOL_TARGETS)) {
197
+ if (!targets.includes(name)) continue;
198
+ const { parent, label } = TOOL_TARGETS[name];
199
+ await installToolLayout(index, path.join(cwd, parent), label, options, written);
200
+ }
201
+
202
+ if (targets.includes('agents') || targets.includes('dir')) {
203
+ for (const skill of index.skills) {
204
+ await copyTree(
205
+ path.join(skillsDir, skill.name),
206
+ path.join(localDir, skill.name),
207
+ options,
208
+ written,
209
+ `${path.relative(cwd, localDir)}/${skill.name}/`
210
+ );
211
+ }
212
+ for (const file of ['_shared', 'api.json', 'index.json']) {
213
+ await copyTree(
214
+ path.join(skillsDir, file),
215
+ path.join(localDir, file),
216
+ options,
217
+ written,
218
+ `${path.relative(cwd, localDir)}/${file}`
219
+ );
220
+ }
221
+ }
222
+
223
+ if (targets.includes('agents')) {
224
+ const agentsFile = path.join(cwd, 'AGENTS.md');
225
+ const body = await readFile(path.join(skillsDir, index.agentsBlock), 'utf8');
226
+ const existing = (await exists(agentsFile)) ? await readFile(agentsFile, 'utf8') : null;
227
+ await writeFileIfNeeded(
228
+ agentsFile,
229
+ mergeAgentsBlock(existing, body),
230
+ { ...options, force: true },
231
+ written
232
+ );
233
+ }
234
+
235
+ console.log(`bullframe.css ${index.version} - targets: ${targets.join(', ')}`);
236
+ for (const line of written) console.log(` ${line}`);
237
+ if (options.dryRun) console.log('\nDry run: nothing was written.');
238
+ }
239
+
240
+ async function main() {
241
+ const { options, positional } = parseArgs(process.argv.slice(2));
242
+
243
+ if (options.version) {
244
+ const pkg = JSON.parse(await readFile(path.join(packageRoot, 'package.json'), 'utf8'));
245
+ console.log(pkg.version);
246
+ return;
247
+ }
248
+ if (options.help || positional.length === 0) {
249
+ console.log(USAGE);
250
+ return;
251
+ }
252
+ if (options.unknown) {
253
+ console.error(`bullframe: unknown option "${options.unknown}"\n`);
254
+ console.log(USAGE);
255
+ process.exit(2);
256
+ }
257
+
258
+ const [group, command] = positional;
259
+ if (group !== 'skills') {
260
+ console.error(`bullframe: unknown command "${group}"\n`);
261
+ console.log(USAGE);
262
+ process.exit(2);
263
+ }
264
+
265
+ if (command === 'list') return listSkills();
266
+ if (command === 'install') return installSkills(options);
267
+ if (command === 'path') {
268
+ console.log(skillsDir);
269
+ return;
270
+ }
271
+
272
+ console.error(`bullframe: unknown subcommand "${command ?? ''}"\n`);
273
+ console.log(USAGE);
274
+ process.exit(2);
275
+ }
276
+
277
+ main().catch((error) => fail(error.message));
@@ -1,4 +1,4 @@
1
- /* ! Bullframe CSS v6.1.0 | MIT License | https://github.com/marcop135/bullframe.css */
1
+ /* ! Bullframe CSS v6.2.0 | MIT License | https://github.com/marcop135/bullframe.css */
2
2
 
3
3
  /* Always-dark classless build. */
4
4
 
@@ -1 +1 @@
1
- /* ! Bullframe CSS v6.1.0 | MIT License | https://github.com/marcop135/bullframe.css */:root{--bf-white:#fff;--bf-light:#f0f0f0;--bf-gray-light-extra:#e9e9e9;--bf-gray-light:#ccc;--bf-gray:#999;--bf-gray-dark:#666;--bf-gray-dark-extra:#333;--bf-dark:#222;--bf-dark-extra:#111;--bf-black:#000;--bf-yellow-light:#ff9;--bf-yellow:#ff0;--bf-orange:orange;--bf-blue:#0056b3;--bf-blue-light:#004187;--bf-blue-light-extra:#bed8fe;--bf-red:red;--bf-focus-ring-color:var(--bf-orange);--bf-focus-ring-width:0.2rem;--bf-focus-ring-offset:0.3rem;--bf-dark-bg:#1c1c1c;--bf-dark-link:#4da5ff;--bf-dark-link-hover:#4da5ff;--bf-dark-border-focus:#1a8cff;--bf-dark-shadow-focus:rgba(3,102,214,.5);--bf-dark-mark-bg:#e6e600;--bf-dark-ins-bg:#ffffc8;--bf-dark-button-hover:#b8b8b8;--bf-dark-button-shadow:hsla(0,0%,100%,.45);--bf-dark-invalid:#ff2626;--bf-spacing-sm:0.25rem;--bf-spacing-md:0.5rem;--bf-spacing-lg:1rem;--bf-spacing-xl:2rem;--bf-spacing-xxl:3rem;--bf-spacing-grid-gutter:1.5rem;--bf-font-sans-serif:-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";--bf-font-serif:Georgia,Times,"Times New Roman",serif;--bf-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bf-body-font-size-rem:1.6rem;--bf-body-line-height:1.5;--bf-breakpoint-xs:0;--bf-breakpoint-sm:576px;--bf-breakpoint-md:768px;--bf-breakpoint-lg:992px;--bf-breakpoint-xl:1200px;--bf-breakpoint-xxl:1400px}*,:after,:before{box-sizing:border-box}article,aside,details,dialog,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}template{display:none}[hidden]:where(:not([hidden=until-found])){display:none!important}@layer{html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none}@supports (scrollbar-gutter:stable){html{scrollbar-gutter:stable}}h1{font-size:2em;margin-block:.67em}@media (forced-colors:active){mark{background-color:Highlight;color:HighlightText}}audio,iframe,img,svg,video{max-block-size:100%;max-inline-size:100%}fieldset{min-inline-size:0}@supports selector(:has(*)){label:has(+input:not([type=radio],[type=checkbox]),select,textarea){display:block}}textarea:not([rows]){min-block-size:6em}button,input,select,textarea{font-family:inherit;font-size:inherit}[type=search]{-webkit-appearance:textfield}@supports (-webkit-touch-callout:none){[type=search]{background-color:canvas;border:1px solid -apple-system-secondary-label}}input:where([type=tel],[type=url],[type=email],[type=number]):not(:-moz-placeholder){direction:ltr}input:where([type=tel],[type=url],[type=email],[type=number]):not(:placeholder-shown){direction:ltr}table{border:1px solid}@media (prefers-reduced-motion:no-preference){dialog::backdrop{background:rgba(0,0,0,.3)}@supports (overlay:auto){[popover],dialog,dialog::backdrop{opacity:0;transition:opacity .3s ease-out,display allow-discrete .3s,overlay allow-discrete .3s}:popover-open,dialog[open],dialog[open]::backdrop{opacity:1}@starting-style{:popover-open,dialog[open],dialog[open]::backdrop{opacity:0}}}}img{display:block}@supports (position-area:block-end span-inline-end){[popover]{margin:0;position-area:block-end span-inline-end}}}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;color:var(--bf-dark);font-family:system-ui,sans-serif;font-size:62.5%;line-height:1.15;-webkit-tap-highlight-color:rgb(0 0 0/0)}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:var(--bf-body-font-size-rem);font-weight:400;line-height:var(--bf-body-line-height);margin:0;text-align:left;text-rendering:optimizeLegibility;word-wrap:break-word;background-color:var(--bf-white)}h1,h2,h3,h4,h5,h6{color:inherit;font-family:inherit;font-weight:600;line-height:1.25;margin-bottom:var(--bf-spacing-lg);margin-top:0}@supports (text-wrap:balance){h1,h2,h3,h4,h5,h6{text-wrap:balance}}h1{font-size:36px;font-size:3.6rem}h2{font-size:30px;font-size:3rem}h3{font-size:24px;font-size:2.4rem}h4{font-size:20px;font-size:2rem}h5,h6{font-size:16px;font-size:1.6rem}blockquote{font-style:italic;margin:0 0 var(--bf-spacing-xl);padding-left:0}blockquote p{margin-bottom:0}blockquote small{color:var(--bf-gray);display:block}blockquote small:before{content:"\2014 \00A0"}q{quotes:"\201C" "\201D" "\2018" "\2019"}p{margin:0 0 var(--bf-spacing-xl) 0}abbr[data-original-title],abbr[title]{border-bottom:0;cursor:help;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}mark{background-color:var(--bf-yellow)}ins,mark{color:var(--bf-black)}ins{background-color:var(--bf-yellow-light);text-decoration:none}b,strong{font-weight:inherit;font-weight:bolder}dfn{font-style:italic}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-8px;top:-.8rem}sub{bottom:-4px;bottom:-.4rem}small{font-size:80%}@supports selector(:has(*)){p:has(small){line-height:1.25}}hr{border-style:solid;border-width:1px 0 0;box-sizing:content-box;color:inherit;height:0;margin:var(--bf-spacing-xl) 0;overflow:visible;padding:0}hr,pre{display:block}pre{margin:0 0 var(--bf-spacing-xl) 0;overflow:auto;word-break:break-all;word-wrap:break-word;hyphens:none;white-space:pre;-ms-overflow-style:auto}code,kbd,pre,samp{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;font-size:.875em}code{word-wrap:break-word}a>code,pre code{color:inherit}pre code{font-size:inherit;word-break:normal}:where(html input,button,select,optgroup,textarea){color:inherit;font-family:inherit;font-size:inherit;line-height:inherit}:where(html input,button,[type=radio],[type=checkbox],select,optgroup,textarea){margin:0}:where(html input,select,textarea,legend){width:100%}:where(html label,button,[type=image],[type=submit],[type=reset],html [type=button],[type=radio],[type=checkbox]){width:auto}:where(html input,label,select,textarea,button,html [type=button],[type=reset],[type=submit],output){display:inline-block}:where([type=file]){background-color:transparent;display:block}:where(button,html input,select,textarea){background-image:none}:where(input,select,textarea){vertical-align:baseline}:where(form){margin:0}:where(fieldset){border:0;margin:0;min-width:0;padding:0}:where(legend){border:0;color:inherit;display:table;font-size:inherit;font-weight:400;line-height:1.375;margin-bottom:var(--bf-spacing-md);max-width:100%;padding:0;white-space:normal}:where(label){font-size:90%;font-weight:400;line-height:1.375;margin-bottom:var(--bf-spacing-md)}:where(label input,label select,label textarea){font-size:110%}::-webkit-inner-spin-button{height:auto}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-color-swatch-wrapper{padding:0}:where([type=search]){outline-offset:calc(var(--bf-spacing-sm)*-1)}:where(output){vertical-align:middle}:where(button,select){text-transform:none}:where(select){word-wrap:normal}:where([list]):not([type=date],[type=datetime-local],[type=month],[type=week],[type=time])::-webkit-calendar-picker-indicator{display:none!important}:where(optgroup){font-family:inherit;font-size:inherit;font-style:inherit;font-weight:600}:where(button,html [type=button],[type=reset],[type=submit],[type=email],[type=number],[type=text],[type=tel],[type=date],[type=datetime-local],[type=month],[type=week],[type=url],[type=image],[type=password],[type=search],[type=search]::-webkit-search-decoration,[type=search]::-webkit-search-cancel-button,input[list],textarea){-webkit-appearance:none;appearance:none}::file-selector-button{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto;font:inherit}:where(button,input,select,textarea){border-radius:var(--bf-spacing-sm)}:where([type=radio]){border-radius:50%}:where([type=checkbox]){border-radius:var(--bf-spacing-md)}:where([type=radio],[type=checkbox]){background-color:var(--bf-white);padding:0}:where([type=range i]){background-color:transparent}:where(select[size],select[multiple]){height:auto}:where(select[multiple]){background-image:none}:where(textarea){height:auto;min-height:60px;min-height:6rem;overflow:auto;resize:vertical;vertical-align:top}::-moz-focus-inner{border-style:none;padding:0}:where(button,[type=button],[type=reset],[type=submit]){background-clip:padding-box;line-height:normal;margin:0;overflow:visible;text-align:center;vertical-align:baseline;-webkit-tap-highlight-color:rgb(0 0 0/0);background-image:none;border:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}:where(button,[type=button],[type=reset],[type=submit]):active,:where(button,[type=button],[type=reset],[type=submit]):focus,:where(button,[type=button],[type=reset],[type=submit]):hover{color:var(--bf-dark);text-decoration:none}:where(button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled)){cursor:pointer}:where(input::-moz-placeholder,textarea::-moz-placeholder){color:var(--bf-gray-dark)}:where(input::placeholder,textarea::placeholder){color:var(--bf-gray-dark)}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}:where([type=email],[type=number],[type=password],[type=tel],[type=search],[type=text],[type=date],[type=datetime-local],[type=month],[type=week],[type=time],[type=url],input[list],select,textarea){background-color:var(--bf-white);border:1px solid var(--bf-gray);padding:var(--bf-spacing-md) calc(var(--bf-spacing-lg)*.75)}:where([type=email],[type=number],[type=password],[type=tel],[type=search],[type=text],[type=date],[type=datetime-local],[type=month],[type=week],[type=time],[type=url],input[list],select,textarea,[type=radio],[type=checkbox]):active,:where([type=email],[type=number],[type=password],[type=tel],[type=search],[type=text],[type=date],[type=datetime-local],[type=month],[type=week],[type=time],[type=url],input[list],select,textarea,[type=radio],[type=checkbox]):focus{border-color:var(--bf-blue);box-shadow:0 0 0 3px rgba(0,86,179,.25);transition:border .2s,background-color .2s,box-shadow .2s}:where(button,[type=button],[type=reset],[type=submit]){background:var(--bf-gray-light);color:var(--bf-dark);padding:calc(var(--bf-spacing-xl)/3) calc(var(--bf-spacing-xl)/3*2);transition:color .2s,background .2s,box-shadow .2s}:where(button,[type=button],[type=reset],[type=submit]):active,:where(button,[type=button],[type=reset],[type=submit]):focus:not(.bf-disabled):not([aria-disabled=true]),:where(button,[type=button],[type=reset],[type=submit]):hover{background:#b8b8b8;color:var(--bf-dark);text-decoration:none}:where(button,[type=button],[type=reset],[type=submit]):active,:where(button,[type=button],[type=reset],[type=submit]):focus:not(.bf-disabled):not([aria-disabled=true]){box-shadow:0 0 0 3px rgba(0,0,0,.15)}:where(fieldset[disabled] button,fieldset[disabled] input,fieldset[disabled] input:after,fieldset[disabled] input:before,fieldset[disabled] input:checked,fieldset[disabled] select,fieldset[disabled] textarea,fieldset[disabled] label,button[disabled],input[disabled],input[disabled]:after,input[disabled]:before,input[disabled]:checked,select[disabled],textarea[disabled],label[disabled],button:disabled,input:disabled,input:disabled:after,input:disabled:before,input:disabled:checked,select:disabled,textarea:disabled,label:disabled,button[aria-disabled=true],input[aria-disabled=true],input[aria-disabled=true]:after,input[aria-disabled=true]:before,input[aria-disabled=true]:checked,select[aria-disabled=true],textarea[aria-disabled=true],label[aria-disabled=true]){box-shadow:none!important;cursor:default!important;cursor:not-allowed!important;opacity:.5!important;outline:none!important;pointer-events:none!important;-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}:where(select):not([size],select[multiple]){-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--bf-white) url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0 0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .85rem center/8px 10px;padding-right:calc(var(--bf-spacing-lg) + var(--bf-spacing-lg))}:where([dir=rtl]) :where(select):not([size],select[multiple]),:where(select[dir=rtl]):not([size],select[multiple]){background-position:left .85rem top 50%;padding-left:calc(var(--bf-spacing-lg) + var(--bf-spacing-lg));padding-right:calc(var(--bf-spacing-lg)*.75)}@supports ((-webkit-appearance:none) or (-moz-appearance:none) or (appearance:none)){:where([type=range]){-webkit-appearance:none;-moz-appearance:none;appearance:none;height:1.4rem;width:100%}:where([type=range])::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:var(--bf-blue);border:0;border-radius:1.5rem;height:1.5rem;margin-top:-.25rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:1.5rem}:where([type=range])::-webkit-slider-thumb:active{background-color:var(--bf-blue)}:where([type=range])::-moz-range-thumb{-moz-appearance:none;appearance:none;background-color:var(--bf-blue);border:0;border-radius:1.5rem;height:1.5rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:1.5rem}:where([type=range])::-moz-range-thumb:active{background-color:var(--bf-blue)}:where([type=range])::-webkit-slider-runnable-track{background-color:var(--bf-gray-light-extra);border-color:transparent;color:transparent;cursor:pointer;height:.65rem;width:100%}:where([type=range])::-moz-range-track{background-color:var(--bf-gray-light-extra);border-color:transparent;color:transparent;cursor:pointer;height:.65rem;width:100%}:where([type=range]):focus{outline:none}:where([type=range]):focus::-webkit-slider-thumb{box-shadow:0 0 0 .1rem var(--bf-white),0 0 0 .2rem rgba(0,123,255,.25)}:where([type=range]):focus::-moz-range-thumb{box-shadow:0 0 0 .1rem var(--bf-white),0 0 0 .2rem rgba(0,123,255,.25)}:where([type=range])::-moz-focus-outer{border:0}:where([type=range]):disabled{pointer-events:none}:where([type=range]):disabled::-webkit-slider-thumb{background-color:var(--bf-gray-light)}:where([type=range]):disabled::-moz-range-thumb{background-color:var(--bf-gray-light)}}a{background-color:transparent;color:var(--bf-blue);text-decoration:none}a:focus,a:hover{color:var(--bf-blue-light);text-decoration:underline}a:not([href],[class]),a:not([href],[class]):hover,a:not([href],[tabindex]){color:inherit;text-decoration:none}a:not([href],[tabindex]):focus{outline:0}:where(:focus:not(:focus-visible)){outline:none}:where([tabindex="-1"]:focus:not(:focus-visible)){outline:0!important}:focus-visible{outline:var(--bf-focus-ring-width) solid var(--bf-focus-ring-color);outline-offset:var(--bf-focus-ring-offset)}[type=button]:focus,[type=checkbox]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=radio]:focus,[type=reset]:focus,[type=search]:focus,[type=submit]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,button:focus,input[list]:focus,select:focus,textarea:focus{outline:0}dl,menu,ol,ul{margin:0 0 var(--bf-spacing-xl) 0;padding:0}dd,menu ol,menu ul,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}ol,ul{margin-left:var(--bf-spacing-xl)}nav ol,nav ul{list-style:none;margin-left:0}dt{font-weight:700}dd{margin-left:0}nav li:before{content:"\200B";position:absolute}audio,canvas,progress,video{display:inline-block}audio,canvas,embed,iframe,img,object,video{max-width:100%}audio,canvas,img,svg,video{vertical-align:middle}img{border-style:none;height:auto}figure{margin:0}figcaption,figure{display:block}figcaption{font-size:90%;line-height:1.375}video{height:auto}audio{width:100%}audio:not([controls]){display:none;height:0}svg:not(:root){overflow:hidden}svg:not([fill]){fill:currentColor}meter,progress{display:inline-block;max-width:100%;vertical-align:baseline;width:100%}progress[value]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--bf-gray-light);border:none;height:20px;height:2rem}progress[value]::-webkit-progress-bar{background:var(--bf-gray-light)}iframe{border-style:none}address{font-style:normal;line-height:inherit;margin-bottom:var(--bf-spacing-lg)}details>summary:first-of-type{display:list-item}summary{cursor:pointer;font-weight:700;word-break:break-all}dialog{background-color:var(--bf-white);border:none;border-radius:var(--bf-spacing-sm);color:var(--bf-dark);height:-moz-fit-content;height:fit-content;max-width:calc(100vw - var(--bf-spacing-grid-gutter)*2);min-width:min(25rem,100%);padding:var(--bf-spacing-xl)}@media (min-width:768px){dialog{max-width:50rem}}dialog[open]{display:block!important}dialog::backdrop{background:rgba(0,0,0,.4)}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}table{border-collapse:collapse;border-color:currentcolor;caption-side:bottom;max-width:100%;text-indent:0}tbody,td,tfoot,th,thead,tr{border:0 solid;border-color:inherit}thead th{vertical-align:bottom}td,th{vertical-align:top}th{font-weight:700;text-align:inherit;text-align:-webkit-match-parent}caption{caption-side:bottom;color:var(--bf-gray);font-size:90%;line-height:1.375;padding-bottom:var(--bf-spacing-md);padding-top:var(--bf-spacing-md);text-align:left}:where([aria-busy=true i]){cursor:progress}:where([aria-disabled=true i],[disabled]){cursor:not-allowed}:where([aria-hidden=false i][hidden]){display:initial}:where([aria-hidden=false i][hidden]:not(:focus)){clip:rect(0,0,0,0);position:absolute}@media (prefers-contrast:more){a{text-decoration:underline}:root{--bf-focus-ring-color:#b87300}:focus-visible{outline-offset:.4rem;outline-width:.3rem}[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input[list],select,textarea{border-width:2px}}@media (forced-colors:active){:focus-visible{outline-color:Highlight}a{text-decoration:underline}[type=button],[type=reset],[type=submit],button{border:1px solid ButtonText}}html{color:var(--bf-light)}body{background-color:var(--bf-dark-bg)}a{color:var(--bf-dark-link)}a:focus,a:hover{color:var(--bf-dark-link-hover)}mark{background-color:var(--bf-dark-mark-bg)}ins{background-color:var(--bf-dark-ins-bg)}[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=range],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input[list],select,select:not([size],select[multiple]),textarea{background-color:var(--bf-dark-extra);border-color:var(--bf-black);color:var(--bf-gray-light)}[type=date]:active,[type=date]:focus,[type=datetime-local]:active,[type=datetime-local]:focus,[type=email]:active,[type=email]:focus,[type=month]:active,[type=month]:focus,[type=number]:active,[type=number]:focus,[type=password]:active,[type=password]:focus,[type=search]:active,[type=search]:focus,[type=tel]:active,[type=tel]:focus,[type=text]:active,[type=text]:focus,[type=time]:active,[type=time]:focus,[type=url]:active,[type=url]:focus,[type=week]:active,[type=week]:focus,input[list]:active,input[list]:focus,select:active,select:focus,select:not([size],select[multiple]):active,select:not([size],select[multiple]):focus,textarea:active,textarea:focus{background-color:var(--bf-dark-extra);border-color:var(--bf-dark-border-focus);box-shadow:0 0 0 3px var(--bf-dark-shadow-focus)}select:not([size],select[multiple]){background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3E%3Cpath fill='%23f0f0f0' d='M2 0 0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E")}[type=range],[type=range]:focus{background-color:transparent}[type=range]::-webkit-slider-runnable-track{background-color:var(--bf-dark-extra)}[type=range]::-moz-range-track{background-color:var(--bf-dark-extra)}input::-moz-placeholder,textarea::-moz-placeholder{color:var(--bf-gray)}input::placeholder,textarea::placeholder{color:var(--bf-gray)}[type=button],[type=reset],[type=submit],button{background:var(--bf-gray-light)}[type=button]:active,[type=button]:focus,[type=button]:hover,[type=reset]:active,[type=reset]:focus,[type=reset]:hover,[type=submit]:active,[type=submit]:focus,[type=submit]:hover,button:active,button:focus,button:hover{background:var(--bf-dark-button-hover)}[type=button]:active,[type=button]:focus,[type=reset]:active,[type=reset]:focus,[type=submit]:active,[type=submit]:focus,button:active,button:focus{box-shadow:0 0 0 3px var(--bf-dark-button-shadow)}dialog{background-color:var(--bf-dark-bg);color:var(--bf-light)}caption{color:var(--bf-gray-light)}progress[value]{background:var(--bf-gray-dark-extra);color:var(--bf-blue)}progress[value]::-webkit-progress-bar{background:var(--bf-gray-dark-extra)}progress[value]::-webkit-progress-value{background:var(--bf-blue)}a:focus,input:focus{outline-color:#d68c00}:focus-visible{outline-color:#d68c00}html{scrollbar-color:#616161 var(--bf-dark-extra)}::-webkit-scrollbar{height:1.5rem;width:1.5rem}::-webkit-scrollbar-track{background-color:var(--bf-dark-extra)}::-webkit-scrollbar-thumb{background-color:#616161}::-webkit-scrollbar-thumb:hover{background-color:#737373}
1
+ /* ! Bullframe CSS v6.2.0 | MIT License | https://github.com/marcop135/bullframe.css */:root{--bf-white:#fff;--bf-light:#f0f0f0;--bf-gray-light-extra:#e9e9e9;--bf-gray-light:#ccc;--bf-gray:#999;--bf-gray-dark:#666;--bf-gray-dark-extra:#333;--bf-dark:#222;--bf-dark-extra:#111;--bf-black:#000;--bf-yellow-light:#ff9;--bf-yellow:#ff0;--bf-orange:orange;--bf-blue:#0056b3;--bf-blue-light:#004187;--bf-blue-light-extra:#bed8fe;--bf-red:red;--bf-focus-ring-color:var(--bf-orange);--bf-focus-ring-width:0.2rem;--bf-focus-ring-offset:0.3rem;--bf-dark-bg:#1c1c1c;--bf-dark-link:#4da5ff;--bf-dark-link-hover:#4da5ff;--bf-dark-border-focus:#1a8cff;--bf-dark-shadow-focus:rgba(3,102,214,.5);--bf-dark-mark-bg:#e6e600;--bf-dark-ins-bg:#ffffc8;--bf-dark-button-hover:#b8b8b8;--bf-dark-button-shadow:hsla(0,0%,100%,.45);--bf-dark-invalid:#ff2626;--bf-spacing-sm:0.25rem;--bf-spacing-md:0.5rem;--bf-spacing-lg:1rem;--bf-spacing-xl:2rem;--bf-spacing-xxl:3rem;--bf-spacing-grid-gutter:1.5rem;--bf-font-sans-serif:-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";--bf-font-serif:Georgia,Times,"Times New Roman",serif;--bf-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bf-body-font-size-rem:1.6rem;--bf-body-line-height:1.5;--bf-breakpoint-xs:0;--bf-breakpoint-sm:576px;--bf-breakpoint-md:768px;--bf-breakpoint-lg:992px;--bf-breakpoint-xl:1200px;--bf-breakpoint-xxl:1400px}*,:after,:before{box-sizing:border-box}article,aside,details,dialog,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}template{display:none}[hidden]:where(:not([hidden=until-found])){display:none!important}@layer{html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none}@supports (scrollbar-gutter:stable){html{scrollbar-gutter:stable}}h1{font-size:2em;margin-block:.67em}@media (forced-colors:active){mark{background-color:Highlight;color:HighlightText}}audio,iframe,img,svg,video{max-block-size:100%;max-inline-size:100%}fieldset{min-inline-size:0}@supports selector(:has(*)){label:has(+input:not([type=radio],[type=checkbox]),select,textarea){display:block}}textarea:not([rows]){min-block-size:6em}button,input,select,textarea{font-family:inherit;font-size:inherit}[type=search]{-webkit-appearance:textfield}@supports (-webkit-touch-callout:none){[type=search]{background-color:canvas;border:1px solid -apple-system-secondary-label}}input:where([type=tel],[type=url],[type=email],[type=number]):not(:-moz-placeholder){direction:ltr}input:where([type=tel],[type=url],[type=email],[type=number]):not(:placeholder-shown){direction:ltr}table{border:1px solid}@media (prefers-reduced-motion:no-preference){dialog::backdrop{background:rgba(0,0,0,.3)}@supports (overlay:auto){[popover],dialog,dialog::backdrop{opacity:0;transition:opacity .3s ease-out,display allow-discrete .3s,overlay allow-discrete .3s}:popover-open,dialog[open],dialog[open]::backdrop{opacity:1}@starting-style{:popover-open,dialog[open],dialog[open]::backdrop{opacity:0}}}}img{display:block}@supports (position-area:block-end span-inline-end){[popover]{margin:0;position-area:block-end span-inline-end}}}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;color:var(--bf-dark);font-family:system-ui,sans-serif;font-size:62.5%;line-height:1.15;-webkit-tap-highlight-color:rgb(0 0 0/0)}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:var(--bf-body-font-size-rem);font-weight:400;line-height:var(--bf-body-line-height);margin:0;text-align:left;text-rendering:optimizeLegibility;word-wrap:break-word;background-color:var(--bf-white)}h1,h2,h3,h4,h5,h6{color:inherit;font-family:inherit;font-weight:600;line-height:1.25;margin-bottom:var(--bf-spacing-lg);margin-top:0}@supports (text-wrap:balance){h1,h2,h3,h4,h5,h6{text-wrap:balance}}h1{font-size:36px;font-size:3.6rem}h2{font-size:30px;font-size:3rem}h3{font-size:24px;font-size:2.4rem}h4{font-size:20px;font-size:2rem}h5,h6{font-size:16px;font-size:1.6rem}blockquote{font-style:italic;margin:0 0 var(--bf-spacing-xl);padding-left:0}blockquote p{margin-bottom:0}blockquote small{color:var(--bf-gray);display:block}blockquote small:before{content:"\2014 \00A0"}q{quotes:"\201C" "\201D" "\2018" "\2019"}p{margin:0 0 var(--bf-spacing-xl) 0}abbr[data-original-title],abbr[title]{border-bottom:0;cursor:help;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}mark{background-color:var(--bf-yellow)}ins,mark{color:var(--bf-black)}ins{background-color:var(--bf-yellow-light);text-decoration:none}b,strong{font-weight:inherit;font-weight:bolder}dfn{font-style:italic}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-8px;top:-.8rem}sub{bottom:-4px;bottom:-.4rem}small{font-size:80%}@supports selector(:has(*)){p:has(small){line-height:1.25}}hr{border-style:solid;border-width:1px 0 0;box-sizing:content-box;color:inherit;height:0;margin:var(--bf-spacing-xl) 0;overflow:visible;padding:0}hr,pre{display:block}pre{margin:0 0 var(--bf-spacing-xl) 0;overflow:auto;word-break:break-all;word-wrap:break-word;hyphens:none;white-space:pre;-ms-overflow-style:auto}code,kbd,pre,samp{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;font-size:.875em}code{word-wrap:break-word}a>code,pre code{color:inherit}pre code{font-size:inherit;word-break:normal}:where(html input,button,select,optgroup,textarea){color:inherit;font-family:inherit;font-size:inherit;line-height:inherit}:where(html input,button,[type=radio],[type=checkbox],select,optgroup,textarea){margin:0}:where(html input,select,textarea,legend){width:100%}:where(html label,button,[type=image],[type=submit],[type=reset],html [type=button],[type=radio],[type=checkbox]){width:auto}:where(html input,label,select,textarea,button,html [type=button],[type=reset],[type=submit],output){display:inline-block}:where([type=file]){background-color:transparent;display:block}:where(button,html input,select,textarea){background-image:none}:where(input,select,textarea){vertical-align:baseline}:where(form){margin:0}:where(fieldset){border:0;margin:0;min-width:0;padding:0}:where(legend){border:0;color:inherit;display:table;font-size:inherit;font-weight:400;line-height:1.375;margin-bottom:var(--bf-spacing-md);max-width:100%;padding:0;white-space:normal}:where(label){font-size:90%;font-weight:400;line-height:1.375;margin-bottom:var(--bf-spacing-md)}:where(label input,label select,label textarea){font-size:110%}::-webkit-inner-spin-button{height:auto}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-color-swatch-wrapper{padding:0}:where([type=search]){outline-offset:calc(var(--bf-spacing-sm)*-1)}:where(output){vertical-align:middle}:where(button,select){text-transform:none}:where(select){word-wrap:normal}:where([list]):not([type=date],[type=datetime-local],[type=month],[type=week],[type=time])::-webkit-calendar-picker-indicator{display:none!important}:where(optgroup){font-family:inherit;font-size:inherit;font-style:inherit;font-weight:600}:where(button,html [type=button],[type=reset],[type=submit],[type=email],[type=number],[type=text],[type=tel],[type=date],[type=datetime-local],[type=month],[type=week],[type=url],[type=image],[type=password],[type=search],[type=search]::-webkit-search-decoration,[type=search]::-webkit-search-cancel-button,input[list],textarea){-webkit-appearance:none;appearance:none}::file-selector-button{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto;font:inherit}:where(button,input,select,textarea){border-radius:var(--bf-spacing-sm)}:where([type=radio]){border-radius:50%}:where([type=checkbox]){border-radius:var(--bf-spacing-md)}:where([type=radio],[type=checkbox]){background-color:var(--bf-white);padding:0}:where([type=range i]){background-color:transparent}:where(select[size],select[multiple]){height:auto}:where(select[multiple]){background-image:none}:where(textarea){height:auto;min-height:60px;min-height:6rem;overflow:auto;resize:vertical;vertical-align:top}::-moz-focus-inner{border-style:none;padding:0}:where(button,[type=button],[type=reset],[type=submit]){background-clip:padding-box;line-height:normal;margin:0;overflow:visible;text-align:center;vertical-align:baseline;-webkit-tap-highlight-color:rgb(0 0 0/0);background-image:none;border:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}:where(button,[type=button],[type=reset],[type=submit]):active,:where(button,[type=button],[type=reset],[type=submit]):focus,:where(button,[type=button],[type=reset],[type=submit]):hover{color:var(--bf-dark);text-decoration:none}:where(button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled)){cursor:pointer}:where(input::-moz-placeholder,textarea::-moz-placeholder){color:var(--bf-gray-dark)}:where(input::placeholder,textarea::placeholder){color:var(--bf-gray-dark)}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}:where([type=email],[type=number],[type=password],[type=tel],[type=search],[type=text],[type=date],[type=datetime-local],[type=month],[type=week],[type=time],[type=url],input[list],select,textarea){background-color:var(--bf-white);border:1px solid var(--bf-gray);padding:var(--bf-spacing-md) calc(var(--bf-spacing-lg)*.75)}:where([type=email],[type=number],[type=password],[type=tel],[type=search],[type=text],[type=date],[type=datetime-local],[type=month],[type=week],[type=time],[type=url],input[list],select,textarea,[type=radio],[type=checkbox]):active,:where([type=email],[type=number],[type=password],[type=tel],[type=search],[type=text],[type=date],[type=datetime-local],[type=month],[type=week],[type=time],[type=url],input[list],select,textarea,[type=radio],[type=checkbox]):focus{border-color:var(--bf-blue);box-shadow:0 0 0 3px rgba(0,86,179,.25);transition:border .2s,background-color .2s,box-shadow .2s}:where(button,[type=button],[type=reset],[type=submit]){background:var(--bf-gray-light);color:var(--bf-dark);padding:calc(var(--bf-spacing-xl)/3) calc(var(--bf-spacing-xl)/3*2);transition:color .2s,background .2s,box-shadow .2s}:where(button,[type=button],[type=reset],[type=submit]):active,:where(button,[type=button],[type=reset],[type=submit]):focus:not(.bf-disabled):not([aria-disabled=true]),:where(button,[type=button],[type=reset],[type=submit]):hover{background:#b8b8b8;color:var(--bf-dark);text-decoration:none}:where(button,[type=button],[type=reset],[type=submit]):active,:where(button,[type=button],[type=reset],[type=submit]):focus:not(.bf-disabled):not([aria-disabled=true]){box-shadow:0 0 0 3px rgba(0,0,0,.15)}:where(fieldset[disabled] button,fieldset[disabled] input,fieldset[disabled] input:after,fieldset[disabled] input:before,fieldset[disabled] input:checked,fieldset[disabled] select,fieldset[disabled] textarea,fieldset[disabled] label,button[disabled],input[disabled],input[disabled]:after,input[disabled]:before,input[disabled]:checked,select[disabled],textarea[disabled],label[disabled],button:disabled,input:disabled,input:disabled:after,input:disabled:before,input:disabled:checked,select:disabled,textarea:disabled,label:disabled,button[aria-disabled=true],input[aria-disabled=true],input[aria-disabled=true]:after,input[aria-disabled=true]:before,input[aria-disabled=true]:checked,select[aria-disabled=true],textarea[aria-disabled=true],label[aria-disabled=true]){box-shadow:none!important;cursor:default!important;cursor:not-allowed!important;opacity:.5!important;outline:none!important;pointer-events:none!important;-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}:where(select):not([size],select[multiple]){-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--bf-white) url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0 0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .85rem center/8px 10px;padding-right:calc(var(--bf-spacing-lg) + var(--bf-spacing-lg))}:where([dir=rtl]) :where(select):not([size],select[multiple]),:where(select[dir=rtl]):not([size],select[multiple]){background-position:left .85rem top 50%;padding-left:calc(var(--bf-spacing-lg) + var(--bf-spacing-lg));padding-right:calc(var(--bf-spacing-lg)*.75)}@supports ((-webkit-appearance:none) or (-moz-appearance:none) or (appearance:none)){:where([type=range]){-webkit-appearance:none;-moz-appearance:none;appearance:none;height:1.4rem;width:100%}:where([type=range])::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:var(--bf-blue);border:0;border-radius:1.5rem;height:1.5rem;margin-top:-.25rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:1.5rem}:where([type=range])::-webkit-slider-thumb:active{background-color:var(--bf-blue)}:where([type=range])::-moz-range-thumb{-moz-appearance:none;appearance:none;background-color:var(--bf-blue);border:0;border-radius:1.5rem;height:1.5rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:1.5rem}:where([type=range])::-moz-range-thumb:active{background-color:var(--bf-blue)}:where([type=range])::-webkit-slider-runnable-track{background-color:var(--bf-gray-light-extra);border-color:transparent;color:transparent;cursor:pointer;height:.65rem;width:100%}:where([type=range])::-moz-range-track{background-color:var(--bf-gray-light-extra);border-color:transparent;color:transparent;cursor:pointer;height:.65rem;width:100%}:where([type=range]):focus{outline:none}:where([type=range]):focus::-webkit-slider-thumb{box-shadow:0 0 0 .1rem var(--bf-white),0 0 0 .2rem rgba(0,123,255,.25)}:where([type=range]):focus::-moz-range-thumb{box-shadow:0 0 0 .1rem var(--bf-white),0 0 0 .2rem rgba(0,123,255,.25)}:where([type=range])::-moz-focus-outer{border:0}:where([type=range]):disabled{pointer-events:none}:where([type=range]):disabled::-webkit-slider-thumb{background-color:var(--bf-gray-light)}:where([type=range]):disabled::-moz-range-thumb{background-color:var(--bf-gray-light)}}a{background-color:transparent;color:var(--bf-blue);text-decoration:none}a:focus,a:hover{color:var(--bf-blue-light);text-decoration:underline}a:not([href],[class]),a:not([href],[class]):hover,a:not([href],[tabindex]){color:inherit;text-decoration:none}a:not([href],[tabindex]):focus{outline:0}:where(:focus:not(:focus-visible)){outline:none}:where([tabindex="-1"]:focus:not(:focus-visible)){outline:0!important}:focus-visible{outline:var(--bf-focus-ring-width) solid var(--bf-focus-ring-color);outline-offset:var(--bf-focus-ring-offset)}[type=button]:focus,[type=checkbox]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=radio]:focus,[type=reset]:focus,[type=search]:focus,[type=submit]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,button:focus,input[list]:focus,select:focus,textarea:focus{outline:0}dl,menu,ol,ul{margin:0 0 var(--bf-spacing-xl) 0;padding:0}dd,menu ol,menu ul,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}ol,ul{margin-left:var(--bf-spacing-xl)}nav ol,nav ul{list-style:none;margin-left:0}dt{font-weight:700}dd{margin-left:0}nav li:before{content:"\200B";position:absolute}audio,canvas,progress,video{display:inline-block}audio,canvas,embed,iframe,img,object,video{max-width:100%}audio,canvas,img,svg,video{vertical-align:middle}img{border-style:none;height:auto}figure{margin:0}figcaption,figure{display:block}figcaption{font-size:90%;line-height:1.375}video{height:auto}audio{width:100%}audio:not([controls]){display:none;height:0}svg:not(:root){overflow:hidden}svg:not([fill]){fill:currentColor}meter,progress{display:inline-block;max-width:100%;vertical-align:baseline;width:100%}progress[value]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--bf-gray-light);border:none;height:20px;height:2rem}progress[value]::-webkit-progress-bar{background:var(--bf-gray-light)}iframe{border-style:none}address{font-style:normal;line-height:inherit;margin-bottom:var(--bf-spacing-lg)}details>summary:first-of-type{display:list-item}summary{cursor:pointer;font-weight:700;word-break:break-all}dialog{background-color:var(--bf-white);border:none;border-radius:var(--bf-spacing-sm);color:var(--bf-dark);height:-moz-fit-content;height:fit-content;max-width:calc(100vw - var(--bf-spacing-grid-gutter)*2);min-width:min(25rem,100%);padding:var(--bf-spacing-xl)}@media (min-width:768px){dialog{max-width:50rem}}dialog[open]{display:block!important}dialog::backdrop{background:rgba(0,0,0,.4)}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}table{border-collapse:collapse;border-color:currentcolor;caption-side:bottom;max-width:100%;text-indent:0}tbody,td,tfoot,th,thead,tr{border:0 solid;border-color:inherit}thead th{vertical-align:bottom}td,th{vertical-align:top}th{font-weight:700;text-align:inherit;text-align:-webkit-match-parent}caption{caption-side:bottom;color:var(--bf-gray);font-size:90%;line-height:1.375;padding-bottom:var(--bf-spacing-md);padding-top:var(--bf-spacing-md);text-align:left}:where([aria-busy=true i]){cursor:progress}:where([aria-disabled=true i],[disabled]){cursor:not-allowed}:where([aria-hidden=false i][hidden]){display:initial}:where([aria-hidden=false i][hidden]:not(:focus)){clip:rect(0,0,0,0);position:absolute}@media (prefers-contrast:more){a{text-decoration:underline}:root{--bf-focus-ring-color:#b87300}:focus-visible{outline-offset:.4rem;outline-width:.3rem}[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input[list],select,textarea{border-width:2px}}@media (forced-colors:active){:focus-visible{outline-color:Highlight}a{text-decoration:underline}[type=button],[type=reset],[type=submit],button{border:1px solid ButtonText}}html{color:var(--bf-light)}body{background-color:var(--bf-dark-bg)}a{color:var(--bf-dark-link)}a:focus,a:hover{color:var(--bf-dark-link-hover)}mark{background-color:var(--bf-dark-mark-bg)}ins{background-color:var(--bf-dark-ins-bg)}[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=range],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input[list],select,select:not([size],select[multiple]),textarea{background-color:var(--bf-dark-extra);border-color:var(--bf-black);color:var(--bf-gray-light)}[type=date]:active,[type=date]:focus,[type=datetime-local]:active,[type=datetime-local]:focus,[type=email]:active,[type=email]:focus,[type=month]:active,[type=month]:focus,[type=number]:active,[type=number]:focus,[type=password]:active,[type=password]:focus,[type=search]:active,[type=search]:focus,[type=tel]:active,[type=tel]:focus,[type=text]:active,[type=text]:focus,[type=time]:active,[type=time]:focus,[type=url]:active,[type=url]:focus,[type=week]:active,[type=week]:focus,input[list]:active,input[list]:focus,select:active,select:focus,select:not([size],select[multiple]):active,select:not([size],select[multiple]):focus,textarea:active,textarea:focus{background-color:var(--bf-dark-extra);border-color:var(--bf-dark-border-focus);box-shadow:0 0 0 3px var(--bf-dark-shadow-focus)}select:not([size],select[multiple]){background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3E%3Cpath fill='%23f0f0f0' d='M2 0 0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E")}[type=range],[type=range]:focus{background-color:transparent}[type=range]::-webkit-slider-runnable-track{background-color:var(--bf-dark-extra)}[type=range]::-moz-range-track{background-color:var(--bf-dark-extra)}input::-moz-placeholder,textarea::-moz-placeholder{color:var(--bf-gray)}input::placeholder,textarea::placeholder{color:var(--bf-gray)}[type=button],[type=reset],[type=submit],button{background:var(--bf-gray-light)}[type=button]:active,[type=button]:focus,[type=button]:hover,[type=reset]:active,[type=reset]:focus,[type=reset]:hover,[type=submit]:active,[type=submit]:focus,[type=submit]:hover,button:active,button:focus,button:hover{background:var(--bf-dark-button-hover)}[type=button]:active,[type=button]:focus,[type=reset]:active,[type=reset]:focus,[type=submit]:active,[type=submit]:focus,button:active,button:focus{box-shadow:0 0 0 3px var(--bf-dark-button-shadow)}dialog{background-color:var(--bf-dark-bg);color:var(--bf-light)}caption{color:var(--bf-gray-light)}progress[value]{background:var(--bf-gray-dark-extra);color:var(--bf-blue)}progress[value]::-webkit-progress-bar{background:var(--bf-gray-dark-extra)}progress[value]::-webkit-progress-value{background:var(--bf-blue)}a:focus,input:focus{outline-color:#d68c00}:focus-visible{outline-color:#d68c00}html{scrollbar-color:#616161 var(--bf-dark-extra)}::-webkit-scrollbar{height:1.5rem;width:1.5rem}::-webkit-scrollbar-track{background-color:var(--bf-dark-extra)}::-webkit-scrollbar-thumb{background-color:#616161}::-webkit-scrollbar-thumb:hover{background-color:#737373}