From 6999f6df21c255428f1bb5e1c598f4b3a77812ab Mon Sep 17 00:00:00 2001 From: Gio Divino Date: Sat, 8 Nov 2025 04:17:21 +0800 Subject: [PATCH 001/107] feat: add git tag to AzureUrl class Signed-off-by: Gio Divino --- .changeset/lemon-lines-give.md | 5 +++++ packages/integration/src/azure/AzureUrl.ts | 18 +++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 .changeset/lemon-lines-give.md diff --git a/.changeset/lemon-lines-give.md b/.changeset/lemon-lines-give.md new file mode 100644 index 0000000000..215f9f1a0e --- /dev/null +++ b/.changeset/lemon-lines-give.md @@ -0,0 +1,5 @@ +--- +'@backstage/integration': minor +--- + +The AzureUrl class in the @backstage/integration package is now able to process BOTH git branches and git tags. Initially this class only processed git branches and threw an error when non-branch Azure URLs were passed in. diff --git a/packages/integration/src/azure/AzureUrl.ts b/packages/integration/src/azure/AzureUrl.ts index 1161ab7a1b..627bf98567 100644 --- a/packages/integration/src/azure/AzureUrl.ts +++ b/packages/integration/src/azure/AzureUrl.ts @@ -14,8 +14,6 @@ * limitations under the License. */ -const VERSION_PREFIX_GIT_BRANCH = 'GB'; - export class AzureUrl { /** * Parses an azure URL as copied from the browser address bar. @@ -50,16 +48,19 @@ export class AzureUrl { const path = url.searchParams.get('path') ?? undefined; let ref; + let prefix; const version = url.searchParams.get('version'); if (version) { - const prefix = version.slice(0, 2); - if (prefix !== 'GB') { - throw new Error('Azure URL version must point to a git branch'); + prefix = version.slice(0, 2); + if (prefix !== 'GB' && prefix !== 'GT') { + throw new Error( + 'Azure URL version must point to a git branch or git tag', + ); } ref = version.slice(2); } - return new AzureUrl(url.origin, owner, project, repo, path, ref); + return new AzureUrl(url.origin, owner, project, repo, path, ref, prefix); } #origin: string; @@ -68,6 +69,7 @@ export class AzureUrl { #repo: string; #path?: string; #ref?: string; + #prefix?: string; private constructor( origin: string, @@ -76,6 +78,7 @@ export class AzureUrl { repo: string, path?: string, ref?: string, + prefix?: string, ) { this.#origin = origin; this.#owner = owner; @@ -83,6 +86,7 @@ export class AzureUrl { this.#repo = repo; this.#path = path; this.#ref = ref; + this.#prefix = prefix; } #baseUrl = (...parts: string[]): URL => { @@ -108,7 +112,7 @@ export class AzureUrl { url.searchParams.set('path', this.#path); } if (this.#ref) { - url.searchParams.set('version', VERSION_PREFIX_GIT_BRANCH + this.#ref); + url.searchParams.set('version', this.#prefix + this.#ref); } return url.toString(); From faab29a0148173d064b6bc47d86a1bfacdf711a5 Mon Sep 17 00:00:00 2001 From: Gio Divino Date: Tue, 25 Nov 2025 08:59:51 +0800 Subject: [PATCH 002/107] feat: add getPrefix function and more tests Signed-off-by: Gio Divino --- .../integration/src/azure/AzureUrl.test.ts | 82 +++++++++++++++++-- packages/integration/src/azure/AzureUrl.ts | 7 ++ 2 files changed, 84 insertions(+), 5 deletions(-) diff --git a/packages/integration/src/azure/AzureUrl.test.ts b/packages/integration/src/azure/AzureUrl.test.ts index a56f800133..7382476da4 100644 --- a/packages/integration/src/azure/AzureUrl.test.ts +++ b/packages/integration/src/azure/AzureUrl.test.ts @@ -27,6 +27,7 @@ describe('AzureUrl', () => { expect(url.getRepo()).toBe('my-project'); expect(url.getRef()).toBeUndefined(); expect(url.getPath()).toBeUndefined(); + expect(url.getPrefix()).toBeUndefined(); expect(url.toRepoUrl()).toBe( 'https://dev.azure.com/my-org/_git/my-project', @@ -52,6 +53,7 @@ describe('AzureUrl', () => { expect(url.getRepo()).toBe('my-project'); expect(url.getRef()).toBeUndefined(); expect(url.getPath()).toBe('/test.yaml'); + expect(url.getPrefix()).toBeUndefined(); expect(url.toRepoUrl()).toBe( 'https://dev.azure.com/my-org/_git/my-project?path=%2Ftest.yaml', @@ -67,7 +69,7 @@ describe('AzureUrl', () => { ); }); - it('should work with the short URL form with a path and ref', () => { + it('should work with the short URL form with a path and branch ref', () => { const url = AzureUrl.fromRepoUrl( 'https://dev.azure.com/my-org/_git/my-project?path=%2Ftest.yaml&version=GBtest-branch', ); @@ -77,6 +79,7 @@ describe('AzureUrl', () => { expect(url.getRepo()).toBe('my-project'); expect(url.getRef()).toBe('test-branch'); expect(url.getPath()).toBe('/test.yaml'); + expect(url.getPrefix()).toBe('GB'); expect(url.toRepoUrl()).toBe( 'https://dev.azure.com/my-org/_git/my-project?path=%2Ftest.yaml&version=GBtest-branch', @@ -92,6 +95,32 @@ describe('AzureUrl', () => { ); }); + it('should work with the short URL form with a path and tag ref', () => { + const url = AzureUrl.fromRepoUrl( + 'https://dev.azure.com/my-org/_git/my-project?path=%2Ftest.yaml&version=GTtest-tag', + ); + + expect(url.getOwner()).toBe('my-org'); + expect(url.getProject()).toBe('my-project'); + expect(url.getRepo()).toBe('my-project'); + expect(url.getRef()).toBe('test-tag'); + expect(url.getPath()).toBe('/test.yaml'); + expect(url.getPrefix()).toBe('GT'); + + expect(url.toRepoUrl()).toBe( + 'https://dev.azure.com/my-org/_git/my-project?path=%2Ftest.yaml&version=GTtest-tag', + ); + expect(url.toFileUrl()).toBe( + 'https://dev.azure.com/my-org/my-project/_apis/git/repositories/my-project/items?api-version=6.0&path=%2Ftest.yaml&version=test-tag', + ); + expect(url.toArchiveUrl()).toBe( + 'https://dev.azure.com/my-org/my-project/_apis/git/repositories/my-project/items?recursionLevel=full&download=true&api-version=6.0&scopePath=%2Ftest.yaml&version=test-tag', + ); + expect(url.toCommitsUrl()).toBe( + 'https://dev.azure.com/my-org/my-project/_apis/git/repositories/my-project/commits?api-version=6.0&searchCriteria.itemVersion.version=test-tag', + ); + }); + it('should work with the long URL', () => { const url = AzureUrl.fromRepoUrl( 'http://my-host/my-org/my-project/_git/my-repo', @@ -102,6 +131,7 @@ describe('AzureUrl', () => { expect(url.getRepo()).toBe('my-repo'); expect(url.getRef()).toBeUndefined(); expect(url.getPath()).toBeUndefined(); + expect(url.getPrefix()).toBeUndefined(); expect(url.toRepoUrl()).toBe( 'http://my-host/my-org/my-project/_git/my-repo', @@ -117,7 +147,7 @@ describe('AzureUrl', () => { ); }); - it('should work with the long URL form with a path and ref', () => { + it('should work with the long URL form with a path and branch ref', () => { const url = AzureUrl.fromRepoUrl( 'http://my-host/my-org/my-project/_git/my-repo?path=%2Ffolder&version=GBtest-branch', ); @@ -127,6 +157,7 @@ describe('AzureUrl', () => { expect(url.getRepo()).toBe('my-repo'); expect(url.getRef()).toBe('test-branch'); expect(url.getPath()).toBe('/folder'); + expect(url.getPrefix()).toBe('GB'); expect(url.toRepoUrl()).toBe( 'http://my-host/my-org/my-project/_git/my-repo?path=%2Ffolder&version=GBtest-branch', @@ -142,6 +173,32 @@ describe('AzureUrl', () => { ); }); + it('should work with the long URL form with a path and tag ref', () => { + const url = AzureUrl.fromRepoUrl( + 'http://my-host/my-org/my-project/_git/my-repo?path=%2Ffolder&version=GTtest-tag', + ); + + expect(url.getOwner()).toBe('my-org'); + expect(url.getProject()).toBe('my-project'); + expect(url.getRepo()).toBe('my-repo'); + expect(url.getRef()).toBe('test-tag'); + expect(url.getPath()).toBe('/folder'); + expect(url.getPrefix()).toBe('GT'); + + expect(url.toRepoUrl()).toBe( + 'http://my-host/my-org/my-project/_git/my-repo?path=%2Ffolder&version=GTtest-tag', + ); + expect(url.toFileUrl()).toBe( + 'http://my-host/my-org/my-project/_apis/git/repositories/my-repo/items?api-version=6.0&path=%2Ffolder&version=test-tag', + ); + expect(url.toArchiveUrl()).toBe( + 'http://my-host/my-org/my-project/_apis/git/repositories/my-repo/items?recursionLevel=full&download=true&api-version=6.0&scopePath=%2Ffolder&version=test-tag', + ); + expect(url.toCommitsUrl()).toBe( + 'http://my-host/my-org/my-project/_apis/git/repositories/my-repo/commits?api-version=6.0&searchCriteria.itemVersion.version=test-tag', + ); + }); + it('should work with the old tfs long URL', () => { const url = AzureUrl.fromRepoUrl( 'http://my-host/tfs/projects/my-project/_git/my-repo', @@ -152,9 +209,10 @@ describe('AzureUrl', () => { expect(url.getRepo()).toBe('my-repo'); expect(url.getRef()).toBeUndefined(); expect(url.getPath()).toBeUndefined(); + expect(url.getPrefix()).toBeUndefined(); }); - it('should work with the old tfs long URL form with a path and ref', () => { + it('should work with the old tfs long URL form with a path and branch ref', () => { const url = AzureUrl.fromRepoUrl( 'http://my-host/tfs/projects/my-project/_git/my-repo?path=%2Ffolder&version=GBtest-branch', ); @@ -164,14 +222,28 @@ describe('AzureUrl', () => { expect(url.getRepo()).toBe('my-repo'); expect(url.getRef()).toBe('test-branch'); expect(url.getPath()).toBe('/folder'); + expect(url.getPrefix()).toBe('GB'); }); - it('should reject non-branch refs', () => { + it('should work with the old tfs long URL form with a path and tag ref', () => { + const url = AzureUrl.fromRepoUrl( + 'http://my-host/tfs/projects/my-project/_git/my-repo?path=%2Ffolder&version=GTtest-tag', + ); + + expect(url.getOwner()).toBe('tfs/projects'); + expect(url.getProject()).toBe('my-project'); + expect(url.getRepo()).toBe('my-repo'); + expect(url.getRef()).toBe('test-tag'); + expect(url.getPath()).toBe('/folder'); + expect(url.getPrefix()).toBe('GT'); + }); + + it('should reject non-branch and non-tag refs', () => { expect(() => AzureUrl.fromRepoUrl( 'https://dev.azure.com/my-org/_git/my-project?version=GC6eead79870d998a3befd4bc7c72cc89e446f2970', ), - ).toThrow('Azure URL version must point to a git branch'); + ).toThrow('Azure URL version must point to a git branch or git tag'); }); it('should reject non-repo URLs', () => { diff --git a/packages/integration/src/azure/AzureUrl.ts b/packages/integration/src/azure/AzureUrl.ts index 627bf98567..a271403554 100644 --- a/packages/integration/src/azure/AzureUrl.ts +++ b/packages/integration/src/azure/AzureUrl.ts @@ -236,4 +236,11 @@ export class AzureUrl { getRef(): string | undefined { return this.#ref; } + + /** + * Returns the git prefix in the repo if the URL contains one. + */ + getPrefix(): string | undefined { + return this.#prefix; + } } From c341d36e08cac5042445f03aa2318425c52bf063 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 19 Jan 2026 15:15:22 +0100 Subject: [PATCH 003/107] REVIEWING.md: introduce new review process Signed-off-by: Patrik Oldsberg --- CONTRIBUTING.md | 2 +- LABELS.md | 21 +++++++++++++++++++++ OWNERS.md | 34 +++++++++++++++++----------------- REVIEWING.md | 30 ++++++++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 18 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 80381417a0..46b11576eb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -432,7 +432,7 @@ Once you've submitted a Pull Request (PR) the various bots will come out and do - checking for commits for their DCO (Developer Certificate of Origin) - kick off the various CI builds -Once these steps are completed, it's just a matter of being patient. As the reviewers have time, they will begin reviewing your PR. When the review process begins, there may be a few layers to this, but the general rule is that you need approval from one of the core maintainers and one from the specific area impacted by your PR. You may also have someone from the community review your changes. This can really help speed things up as they may catch some early items making the review for the maintainers simpler. Once you have the two (2) approvals, it's ready to be merged, a task that is also performed by the maintainers. +Once these steps are completed, it's just a matter of being patient. Reviews are coordinated by maintainers and reviewers based on project area ownership. Prioritization is driven by a number of different factors, but some important ones are size (smaller get higher priority) and alignment with current roadmap priorities. Timely responses to review comments also help keep the pull request moving faster. You may also have someone from the reviewers group review your pull request and request changes. Approval from a member of the reviewers group will greatly increase the priority of your pull request. ### Review Tips diff --git a/LABELS.md b/LABELS.md index f1af06d4fa..fecc115831 100644 --- a/LABELS.md +++ b/LABELS.md @@ -97,6 +97,27 @@ These labels indicate a workflow status for the owners. - `stale` - The issue or pull request has not seen any activity for a while and will be closed if no further activity is seen. - `no stale` - The issue or pull request should not be closed due to inactivity. +## Pull Request Labels + +The following labels indicate the status of a pull request: + +- `status:needs-review` - The pull request needs a review and will be visible in the review queue unless already assigned an owner. +- `status:needs-changes` - Changes have been requested by a reviewer and the pull request will not receive a review until the changes are made. A comment made on the pull request by the author will also push it back into the review queue. +- `status:needs-decision` - The pull request had been marked as more complex and needs a decision from the owners. Progress can still be made and discussion can continue, but expect the review to take longer. These pull requests are often good candidates to bring to a [SIG](https://github.com/backstage/community/tree/main/sigs) meeting. +- `status:awaiting-merge` - The pull request has been approved and is awaiting merge. If you have write access and authored the pull requests you can merge it yourself. If you do not have access to merge and the pull request has not been merged within a day of approval, please notify the assigned reviewer. + +The following labels indicate the size of a pull request: + +- `size:tiny` - Tiny pull requests receive a higher priority for reviews. +- `size:small` - Small pull requests receive a slightly higher priority for reviews. +- `size:medium` - Medium-sized pull request receive no change in priority for reviews. +- `size:large` - Large pull requests receive a slightly lower priority for reviews. +- `size:huge` - Huge pull requests receive a lower priority for reviews. + +The following additional labels also apply to pull requests: + +- `reviewer-approved` - The pull request has been approved by a member of the reviewers group. This pull request receives a much higher priority for reviews. + ## Common Issue Filters This is a collection of common issue filters that can help you find issues that you are looking for or that match your interests and skills. diff --git a/OWNERS.md b/OWNERS.md index 764237d9c1..acf47ce132 100644 --- a/OWNERS.md +++ b/OWNERS.md @@ -19,7 +19,7 @@ These are the separate project areas of Backstage, each with their own project a ### Auth -Team: @backstage/auth-maintainers +Team: @backstage/auth-maintainers — [Review board](https://github.com/orgs/backstage/projects/14/views/1?filterQuery=no%3Aassignee+label%3Astatus%3Aneeds-review+reviewers%3Aauth-maintainers) Scope: The Backstage auth plugin and modules, as well as client-side implementations. @@ -34,7 +34,7 @@ Scope: The Backstage auth plugin and modules, as well as client-side implementat ### Catalog -Team: @backstage/catalog-maintainers +Team: @backstage/catalog-maintainers — [Review board](https://github.com/orgs/backstage/projects/14/views/1?filterQuery=no%3Aassignee+label%3Astatus%3Aneeds-review+reviewers%3Acatalog-maintainers) Scope: The catalog plugin and catalog model @@ -63,7 +63,7 @@ Scope: Tooling and Community Repo Maintainers for the Backstage [Community Plugi ### Design System -Team: @backstage/design-system-maintainers +Team: @backstage/design-system-maintainers — [Review board](https://github.com/orgs/backstage/projects/14/views/1?filterQuery=no%3Aassignee+label%3Astatus%3Aneeds-review+reviewers%3Adesign-system-maintainers) Scope: The Backstage design system, component library, as well as surrounding tooling such as Storybook. @@ -74,7 +74,7 @@ Scope: The Backstage design system, component library, as well as surrounding to ### Documentation -Team: @backstage/documentation-maintainers +Team: @backstage/documentation-maintainers — [Review board](https://github.com/orgs/backstage/projects/14/views/1?filterQuery=no%3Aassignee+label%3Astatus%3Aneeds-review+reviewers%3Adocumentation-maintainers) Scope: The Backstage Documentation and Microsite, excluding the plugins listing @@ -86,7 +86,7 @@ Scope: The Backstage Documentation and Microsite, excluding the plugins listing ### Framework -Team: @backstage/framework-maintainers +Team: @backstage/framework-maintainers — [Review board](https://github.com/orgs/backstage/projects/14/views/1?filterQuery=no%3Aassignee+label%3Astatus%3Aneeds-review+reviewers%3Aframework-maintainers) Scope: The Backstage core framework, including all revisions of the frontend and backend systems, as well as the App plugin. @@ -113,7 +113,7 @@ Scope: The Backstage [Helm Chart(s)](https://github.com/backstage/charts). ### Home -Team: @backstage/home-maintainers +Team: @backstage/home-maintainers — [Review board](https://github.com/orgs/backstage/projects/14/views/1?filterQuery=no%3Aassignee+label%3Astatus%3Aneeds-review+reviewers%3Ahome-maintainers) Scope: The Backstage home page and information architecture @@ -128,7 +128,7 @@ Scope: The Backstage home page and information architecture ### Kubernetes -Team: @backstage/kubernetes-maintainers +Team: @backstage/kubernetes-maintainers — [Review board](https://github.com/orgs/backstage/projects/14/views/1?filterQuery=no%3Aassignee+label%3Astatus%3Aneeds-review+reviewers%3Akubernetes-maintainers) Scope: The Kubernetes plugin and the base it provides for other plugins to build upon. @@ -138,7 +138,7 @@ Scope: The Kubernetes plugin and the base it provides for other plugins to build ### Operations -Team: @backstage/operations-maintainers +Team: @backstage/operations-maintainers — [Review board](https://github.com/orgs/backstage/projects/14/views/1?filterQuery=no%3Aassignee+label%3Astatus%3Aneeds-review+reviewers%3Aoperations-maintainers) Scope: The management and operation of the main Backstage repository and release process, along with the surrounding tooling. @@ -153,7 +153,7 @@ Scope: The management and operation of the main Backstage repository and release ### Permission Framework -Team: @backstage/permission-maintainers +Team: @backstage/permission-maintainers — [Review board](https://github.com/orgs/backstage/projects/14/views/1?filterQuery=no%3Aassignee+label%3Astatus%3Aneeds-review+reviewers%3Apermission-maintainers) Scope: The Permission Framework and plugins integrating with the permission framework @@ -168,7 +168,7 @@ Scope: The Permission Framework and plugins integrating with the permission fram ### Search -Team: @backstage/search-maintainers +Team: @backstage/search-maintainers — [Review board](https://github.com/orgs/backstage/projects/14/views/1?filterQuery=no%3Aassignee+label%3Astatus%3Aneeds-review+reviewers%3Asearch-maintainers) Scope: The Backstage Search plugin @@ -180,7 +180,7 @@ Scope: The Backstage Search plugin ### TechDocs -Team: @backstage/techdocs-maintainers +Team: @backstage/techdocs-maintainers — [Review board](https://github.com/orgs/backstage/projects/14/views/1?filterQuery=no%3Aassignee+label%3Astatus%3Aneeds-review+reviewers%3Atechdocs-maintainers) Scope: The TechDocs plugin and related tooling @@ -194,7 +194,7 @@ Scope: The TechDocs plugin and related tooling ### Tooling -Team: @backstage/tooling-maintainers +Team: @backstage/tooling-maintainers — [Review board](https://github.com/orgs/backstage/projects/14/views/1?filterQuery=no%3Aassignee+label%3Astatus%3Aneeds-review+reviewers%3Atooling-maintainers) Scope: All published Backstage CLI tools in the main `backstage` repository that do not belong to other areas, including `@backstage/cli` and `@backstage/repo-tools`. @@ -214,7 +214,7 @@ These incubating project areas have shared ownership with @backstage/maintainers ### Auditor -Team: @backstage/auditor-maintainers +Team: @backstage/auditor-maintainers — [Review board](https://github.com/orgs/backstage/projects/14/views/1?filterQuery=no%3Aassignee+label%3Astatus%3Aneeds-review+reviewers%3Aauditor-maintainers) Scope: The auditor core service, along with auditor usage in the main repository @@ -224,7 +224,7 @@ Scope: The auditor core service, along with auditor usage in the main repository ### Events -Team: @backstage/events-maintainers +Team: @backstage/events-maintainers — [Review board](https://github.com/orgs/backstage/projects/14/views/1?filterQuery=no%3Aassignee+label%3Astatus%3Aneeds-review+reviewers%3Aevents-maintainers) Scope: The Events plugin and library, along with events modules in the main repository @@ -234,7 +234,7 @@ Scope: The Events plugin and library, along with events modules in the main repo ### Notifications -Team: @backstage/notifications-maintainers +Team: @backstage/notifications-maintainers — [Review board](https://github.com/orgs/backstage/projects/14/views/1?filterQuery=no%3Aassignee+label%3Astatus%3Aneeds-review+reviewers%3Anotifications-maintainers) Scope: The Notifications and Signals plugins and libraries @@ -244,7 +244,7 @@ Scope: The Notifications and Signals plugins and libraries ### OpenAPI Tooling -Team: @backstage/openapi-tooling-maintainers +Team: @backstage/openapi-tooling-maintainers — [Review board](https://github.com/orgs/backstage/projects/14/views/1?filterQuery=no%3Aassignee+label%3Astatus%3Aneeds-review+reviewers%3Aopenapi-tooling-maintainers) Scope: Tooling for frontend and backend schema-first OpenAPI development. @@ -254,7 +254,7 @@ Scope: Tooling for frontend and backend schema-first OpenAPI development. ### Scaffolder -Team: @backstage/scaffolder-maintainers +Team: @backstage/scaffolder-maintainers — [Review board](https://github.com/orgs/backstage/projects/14/views/1?filterQuery=no%3Aassignee+label%3Astatus%3Aneeds-review+reviewers%3Ascaffolder-maintainers) Scope: The Scaffolder frontend and backend plugins, and related tooling. diff --git a/REVIEWING.md b/REVIEWING.md index 66af880f43..07fac4c568 100644 --- a/REVIEWING.md +++ b/REVIEWING.md @@ -2,6 +2,36 @@ This file provides pointers for reviewing pull requests. While the main audience are reviewers, this can also be useful if you are contributing to this repository. +## Quick links + +- [Incoming Reviews](https://github.com/orgs/backstage/projects/14/views/1) +- [Personal Reviews](https://github.com/orgs/backstage/projects/14/views/2) +- Project area boards in [OWNERS.md](./OWNERS.md) + +## Review Workflow + +Pull request reviews are coordinated manually by maintainers and reviewers based on project area ownership. Reviews are prioritized and tracked using labels and GitHub Project boards. This review process only applies to the [main Backstage repository](https://github.com/backstage/backstage), other repositories may have their own review processes. + +All incoming pull request reviews are tracked on the [Incoming Reviews board](https://github.com/orgs/backstage/projects/14/views/1). This board can be used by members of the `@backstage/reviewers` group to find pull requests to review, as well as anyone else that wants an overview of all incoming pull requests. + +Project area maintainers can use the same board but with additional filters applied to only show incoming pull requests for their project area. These filtered boards are linked to for each project area in [OWNERS.md](./OWNERS.md). There is also a [personal review board](https://github.com/orgs/backstage/projects/14/views/2) that can be used to track reviews that you have been assigned to. + +There are several labels that help track the status and prioritize pull requests. You can find more information about these labels in [LABELS.md](./LABELS.md#pull-request-labels). + +### Review process for @backstage/reviewers + +Members of the `@backstage/reviewers` do not have any specific areas that they should focus on, they can choose to filter and focus on reviews from any part of the project. They do not assign themselves specific pull requests, but instead leave reviews directly on pull requests without any further process. + +Reviews from this group still have meaningful impact on the review process, as they are picked up by project automation. Approving reviews will add the `reviewer-approved` label to the pull request, which greatly increases its priority and visibility for owners in the area. Likewise, requesting changes will add the `status:needs-changes` label to the pull request, which will remove it from the review queue until the author has commented or made changes. + +### Review process for Project Area Maintainers + +Project area maintainers are responsible for reviewing and ultimately merging or closing pull requests towards their project area. They should use the global or filtered board for their project area to find pull requests to review. When they find a pull request that they want to review, they should assign themselves to the pull request, removing it from the review queue and placing it on their personal review board. + +Once a pull request has been asigned a single owner, it is their responsibility to review and eventually merge or close the pull request. They manage all ongoing requests on their personal review board, typically prioritizing the ones at the top of the board marked with `status:needs-review`. If a pull request is left unreviewed for too long, it will automatically be unassigned and returned to the review queue. Once a pull request has been approved by the assigned owner, the owner should merge the pull request themselves if it is an outside contribution, but otherwise generally leave that to the author of the PR. + +Some pull requests may require review from multiple project areas. In these cases the most relevant owner should assign themselves and coordinate with the other owners for additional reviews. If the most relevant owner is not clear, this is preferrably solved in a discussion among the owners. Frequent conflicts should lead to a discussion whether `CODEOWNERS` should be updated to simplify the review process. If some owners are currently unavailable, other owners can assign themselves to the pull request and bring it to the point where they approve the changes for their area, and then send the pull request back to the review queue. + ## Code Style See our code style documented at [STYLE.md](./STYLE.md). From 19659403055a1d4056613b28c1c7806e2eb89227 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 19 Jan 2026 15:55:04 +0100 Subject: [PATCH 004/107] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Patrik Oldsberg --- LABELS.md | 2 +- REVIEWING.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/LABELS.md b/LABELS.md index fecc115831..545349faac 100644 --- a/LABELS.md +++ b/LABELS.md @@ -110,7 +110,7 @@ The following labels indicate the size of a pull request: - `size:tiny` - Tiny pull requests receive a higher priority for reviews. - `size:small` - Small pull requests receive a slightly higher priority for reviews. -- `size:medium` - Medium-sized pull request receive no change in priority for reviews. +- `size:medium` - Medium-sized pull requests receive no change in priority for reviews. - `size:large` - Large pull requests receive a slightly lower priority for reviews. - `size:huge` - Huge pull requests receive a lower priority for reviews. diff --git a/REVIEWING.md b/REVIEWING.md index 07fac4c568..a4b31efa16 100644 --- a/REVIEWING.md +++ b/REVIEWING.md @@ -28,9 +28,9 @@ Reviews from this group still have meaningful impact on the review process, as t Project area maintainers are responsible for reviewing and ultimately merging or closing pull requests towards their project area. They should use the global or filtered board for their project area to find pull requests to review. When they find a pull request that they want to review, they should assign themselves to the pull request, removing it from the review queue and placing it on their personal review board. -Once a pull request has been asigned a single owner, it is their responsibility to review and eventually merge or close the pull request. They manage all ongoing requests on their personal review board, typically prioritizing the ones at the top of the board marked with `status:needs-review`. If a pull request is left unreviewed for too long, it will automatically be unassigned and returned to the review queue. Once a pull request has been approved by the assigned owner, the owner should merge the pull request themselves if it is an outside contribution, but otherwise generally leave that to the author of the PR. +Once a pull request has been assigned a single owner, it is their responsibility to review and eventually merge or close the pull request. They manage all ongoing requests on their personal review board, typically prioritizing the ones at the top of the board marked with `status:needs-review`. If a pull request is left unreviewed for too long, it will automatically be unassigned and returned to the review queue. Once a pull request has been approved by the assigned owner, the owner should merge the pull request themselves if it is an outside contribution, but otherwise generally leave that to the author of the PR. -Some pull requests may require review from multiple project areas. In these cases the most relevant owner should assign themselves and coordinate with the other owners for additional reviews. If the most relevant owner is not clear, this is preferrably solved in a discussion among the owners. Frequent conflicts should lead to a discussion whether `CODEOWNERS` should be updated to simplify the review process. If some owners are currently unavailable, other owners can assign themselves to the pull request and bring it to the point where they approve the changes for their area, and then send the pull request back to the review queue. +Some pull requests may require review from multiple project areas. In these cases the most relevant owner should assign themselves and coordinate with the other owners for additional reviews. If the most relevant owner is not clear, this is preferably solved in a discussion among the owners. Frequent conflicts should lead to a discussion whether `CODEOWNERS` should be updated to simplify the review process. If some owners are currently unavailable, other owners can assign themselves to the pull request and bring it to the point where they approve the changes for their area, and then send the pull request back to the review queue. ## Code Style From f1ffdb6c93e50b942ae995f46dab03f6277d223a Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 19 Jan 2026 16:04:42 +0100 Subject: [PATCH 005/107] Update LABELS.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Patrik Oldsberg --- LABELS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LABELS.md b/LABELS.md index 545349faac..9104bc3412 100644 --- a/LABELS.md +++ b/LABELS.md @@ -103,7 +103,7 @@ The following labels indicate the status of a pull request: - `status:needs-review` - The pull request needs a review and will be visible in the review queue unless already assigned an owner. - `status:needs-changes` - Changes have been requested by a reviewer and the pull request will not receive a review until the changes are made. A comment made on the pull request by the author will also push it back into the review queue. -- `status:needs-decision` - The pull request had been marked as more complex and needs a decision from the owners. Progress can still be made and discussion can continue, but expect the review to take longer. These pull requests are often good candidates to bring to a [SIG](https://github.com/backstage/community/tree/main/sigs) meeting. +- `status:needs-decision` - The pull request has been marked as more complex and needs a decision from the owners. Progress can still be made and discussion can continue, but expect the review to take longer. These pull requests are often good candidates to bring to a [SIG](https://github.com/backstage/community/tree/main/sigs) meeting. - `status:awaiting-merge` - The pull request has been approved and is awaiting merge. If you have write access and authored the pull requests you can merge it yourself. If you do not have access to merge and the pull request has not been merged within a day of approval, please notify the assigned reviewer. The following labels indicate the size of a pull request: From 2c8019a798208f82c63ccc40ec28a287614e2365 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 19 Jan 2026 16:07:52 +0100 Subject: [PATCH 006/107] Update LABELS.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Patrik Oldsberg --- LABELS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LABELS.md b/LABELS.md index 9104bc3412..732b4034dc 100644 --- a/LABELS.md +++ b/LABELS.md @@ -104,7 +104,7 @@ The following labels indicate the status of a pull request: - `status:needs-review` - The pull request needs a review and will be visible in the review queue unless already assigned an owner. - `status:needs-changes` - Changes have been requested by a reviewer and the pull request will not receive a review until the changes are made. A comment made on the pull request by the author will also push it back into the review queue. - `status:needs-decision` - The pull request has been marked as more complex and needs a decision from the owners. Progress can still be made and discussion can continue, but expect the review to take longer. These pull requests are often good candidates to bring to a [SIG](https://github.com/backstage/community/tree/main/sigs) meeting. -- `status:awaiting-merge` - The pull request has been approved and is awaiting merge. If you have write access and authored the pull requests you can merge it yourself. If you do not have access to merge and the pull request has not been merged within a day of approval, please notify the assigned reviewer. +- `status:awaiting-merge` - The pull request has been approved and is awaiting merge. If you have write access and authored the pull request you can merge it yourself. If you do not have access to merge and the pull request has not been merged within a day of approval, please notify the assigned reviewer. The following labels indicate the size of a pull request: From d0c59a218bdb5868a5f837da926a660641099941 Mon Sep 17 00:00:00 2001 From: nojaf Date: Mon, 19 Jan 2026 17:22:44 +0100 Subject: [PATCH 007/107] feat(search-elasticsearch): add authentication extension point for dynamic auth in ElasticSearch Signed-off-by: nojaf --- .../src/auth.ts | 117 +++++++++++ .../ElasticSearchAuthTransport.test.ts | 194 ++++++++++++++++++ .../src/engines/ElasticSearchAuthTransport.ts | 153 ++++++++++++++ .../engines/ElasticSearchSearchEngine.test.ts | 78 +++++++ .../src/engines/ElasticSearchSearchEngine.ts | 81 ++++++-- .../src/index.ts | 5 + .../src/module.ts | 25 +++ 7 files changed, 641 insertions(+), 12 deletions(-) create mode 100644 plugins/search-backend-module-elasticsearch/src/auth.ts create mode 100644 plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchAuthTransport.test.ts create mode 100644 plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchAuthTransport.ts diff --git a/plugins/search-backend-module-elasticsearch/src/auth.ts b/plugins/search-backend-module-elasticsearch/src/auth.ts new file mode 100644 index 0000000000..4491bc3b58 --- /dev/null +++ b/plugins/search-backend-module-elasticsearch/src/auth.ts @@ -0,0 +1,117 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createExtensionPoint } from '@backstage/backend-plugin-api'; + +/** + * A provider that supplies authentication headers for Elasticsearch/OpenSearch requests. + * + * @remarks + * + * This interface allows for dynamic authentication mechanisms such as bearer tokens + * that need to be refreshed or rotated. The `getAuthHeaders` method is called before + * each request to the Elasticsearch/OpenSearch cluster, allowing for just-in-time + * token retrieval and automatic rotation. + * + * @example + * + * ```ts + * const authProvider: ElasticSearchAuthProvider = { + * async getAuthHeaders() { + * const token = await myTokenService.getToken(); + * return { Authorization: `Bearer ${token}` }; + * }, + * }; + * ``` + * + * @public + */ +export interface ElasticSearchAuthProvider { + /** + * Returns authentication headers to be included in requests to Elasticsearch/OpenSearch. + * + * @remarks + * + * This method is called before each request, allowing for dynamic token refresh + * and rotation. Implementations should handle caching internally if needed to + * avoid excessive token generation. + * + * @returns A promise that resolves to a record of header names and values + */ + getAuthHeaders(): Promise>; +} + +/** + * Extension point for providing custom authentication to the Elasticsearch search engine. + * + * @remarks + * + * Use this extension point to provide dynamic authentication mechanisms such as + * bearer tokens with automatic rotation. When an auth provider is set, it takes + * precedence over any static authentication configured in app-config.yaml. + * + * @example + * + * ```ts + * import { createBackendModule } from '@backstage/backend-plugin-api'; + * import { elasticsearchAuthExtensionPoint } from '@backstage/plugin-search-backend-module-elasticsearch'; + * + * export default createBackendModule({ + * pluginId: 'search', + * moduleId: 'elasticsearch-custom-auth', + * register(env) { + * env.registerInit({ + * deps: { + * elasticsearchAuth: elasticsearchAuthExtensionPoint, + * }, + * async init({ elasticsearchAuth }) { + * elasticsearchAuth.setAuthProvider({ + * async getAuthHeaders() { + * const token = await fetchTokenFromIdentityService(); + * return { Authorization: `Bearer ${token}` }; + * }, + * }); + * }, + * }); + * }, + * }); + * ``` + * + * @public + */ +export interface ElasticSearchAuthExtensionPoint { + /** + * Sets the authentication provider for the Elasticsearch search engine. + * + * @remarks + * + * This method can only be called once. Subsequent calls will throw an error. + * The auth provider takes precedence over static authentication configuration. + * + * @param provider - The authentication provider to use + */ + setAuthProvider(provider: ElasticSearchAuthProvider): void; +} + +/** + * Extension point used to customize Elasticsearch/OpenSearch authentication. + * + * @public + */ +export const elasticsearchAuthExtensionPoint = + createExtensionPoint({ + id: 'search.elasticsearchEngine.auth', + }); diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchAuthTransport.test.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchAuthTransport.test.ts new file mode 100644 index 0000000000..0264f9b93c --- /dev/null +++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchAuthTransport.test.ts @@ -0,0 +1,194 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + createOpenSearchAuthTransport, + createElasticSearchAuthTransport, +} from './ElasticSearchAuthTransport'; +import { ElasticSearchAuthProvider } from '../auth'; + +describe('ElasticSearchAuthTransport', () => { + describe('createOpenSearchAuthTransport', () => { + it('should return a Transport class', () => { + const authProvider: ElasticSearchAuthProvider = { + getAuthHeaders: jest + .fn() + .mockResolvedValue({ Authorization: 'Bearer test' }), + }; + + const Transport = createOpenSearchAuthTransport(authProvider); + + expect(Transport).toBeDefined(); + expect(typeof Transport).toBe('function'); + }); + + it('should call getAuthHeaders when request is made', async () => { + const authProvider: ElasticSearchAuthProvider = { + getAuthHeaders: jest + .fn() + .mockResolvedValue({ Authorization: 'Bearer test-token' }), + }; + + const Transport = createOpenSearchAuthTransport(authProvider); + + // Create a mock parent class request method + const mockParentRequest = jest.fn().mockResolvedValue({ body: {} }); + + // Create an instance with mocked internals + const transportInstance = Object.create(Transport.prototype); + Object.getPrototypeOf(Object.getPrototypeOf(transportInstance)).request = + mockParentRequest; + + // Call request method (promise style) + const requestPromise = transportInstance.request( + { method: 'GET', path: '/' }, + {}, + ); + + // The auth provider should be called + await requestPromise.catch(() => {}); // Ignore errors from incomplete mock + expect(authProvider.getAuthHeaders).toHaveBeenCalled(); + }); + + it('should be usable as Transport option', () => { + const authProvider: ElasticSearchAuthProvider = { + getAuthHeaders: jest + .fn() + .mockResolvedValue({ Authorization: 'Bearer test' }), + }; + + const Transport = createOpenSearchAuthTransport(authProvider); + + // Verify the Transport has the expected static properties + expect(Transport).toHaveProperty('sniffReasons'); + }); + }); + + describe('createElasticSearchAuthTransport', () => { + it('should return a Transport class', () => { + const authProvider: ElasticSearchAuthProvider = { + getAuthHeaders: jest + .fn() + .mockResolvedValue({ Authorization: 'Bearer test' }), + }; + + const Transport = createElasticSearchAuthTransport(authProvider); + + expect(Transport).toBeDefined(); + expect(typeof Transport).toBe('function'); + }); + + it('should call getAuthHeaders when request is made', async () => { + const authProvider: ElasticSearchAuthProvider = { + getAuthHeaders: jest + .fn() + .mockResolvedValue({ Authorization: 'Bearer test-token' }), + }; + + const Transport = createElasticSearchAuthTransport(authProvider); + + // Create a mock parent class request method + const mockParentRequest = jest.fn().mockResolvedValue({ body: {} }); + + // Create an instance with mocked internals + const transportInstance = Object.create(Transport.prototype); + Object.getPrototypeOf(Object.getPrototypeOf(transportInstance)).request = + mockParentRequest; + + // Call request method (promise style) + const requestPromise = transportInstance.request( + { method: 'GET', path: '/' }, + {}, + ); + + // The auth provider should be called + await requestPromise.catch(() => {}); // Ignore errors from incomplete mock + expect(authProvider.getAuthHeaders).toHaveBeenCalled(); + }); + + it('should be usable as Transport option', () => { + const authProvider: ElasticSearchAuthProvider = { + getAuthHeaders: jest + .fn() + .mockResolvedValue({ Authorization: 'Bearer test' }), + }; + + const Transport = createElasticSearchAuthTransport(authProvider); + + // Verify the Transport has the expected static properties + expect(Transport).toHaveProperty('sniffReasons'); + }); + }); + + describe('auth provider integration', () => { + it('should support async token retrieval', async () => { + let tokenRetrievalCount = 0; + const authProvider: ElasticSearchAuthProvider = { + getAuthHeaders: jest.fn().mockImplementation(async () => { + tokenRetrievalCount++; + // Simulate async token fetch + await new Promise(resolve => setTimeout(resolve, 10)); + return { Authorization: `Bearer token-${tokenRetrievalCount}` }; + }), + }; + + // Just verify the provider works correctly + const headers1 = await authProvider.getAuthHeaders(); + const headers2 = await authProvider.getAuthHeaders(); + + expect(headers1.Authorization).toBe('Bearer token-1'); + expect(headers2.Authorization).toBe('Bearer token-2'); + expect(authProvider.getAuthHeaders).toHaveBeenCalledTimes(2); + }); + + it('should support token rotation pattern', async () => { + const tokens = ['initial-token', 'rotated-token', 'final-token']; + let currentTokenIndex = 0; + + const authProvider: ElasticSearchAuthProvider = { + getAuthHeaders: jest.fn().mockImplementation(async () => { + const token = tokens[currentTokenIndex]; + currentTokenIndex = Math.min( + currentTokenIndex + 1, + tokens.length - 1, + ); + return { Authorization: `Bearer ${token}` }; + }), + }; + + // Simulate multiple requests that would trigger token rotation + const headers1 = await authProvider.getAuthHeaders(); + const headers2 = await authProvider.getAuthHeaders(); + const headers3 = await authProvider.getAuthHeaders(); + + expect(headers1.Authorization).toBe('Bearer initial-token'); + expect(headers2.Authorization).toBe('Bearer rotated-token'); + expect(headers3.Authorization).toBe('Bearer final-token'); + }); + + it('should handle errors in getAuthHeaders gracefully', async () => { + const authProvider: ElasticSearchAuthProvider = { + getAuthHeaders: jest + .fn() + .mockRejectedValue(new Error('Token fetch failed')), + }; + + await expect(authProvider.getAuthHeaders()).rejects.toThrow( + 'Token fetch failed', + ); + }); + }); +}); diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchAuthTransport.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchAuthTransport.ts new file mode 100644 index 0000000000..991fdac71a --- /dev/null +++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchAuthTransport.ts @@ -0,0 +1,153 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Transport as OpenSearchTransport } from '@opensearch-project/opensearch'; +import { Transport as ElasticSearchTransport } from '@elastic/elasticsearch'; +import { ElasticSearchAuthProvider } from '../auth'; +import { ElasticSearchTransportConstructor } from './ElasticSearchClientOptions'; + +/** + * Creates a custom OpenSearch Transport class that injects authentication headers + * from the provided auth provider before each request. + * + * @param authProvider - The authentication provider to use for getting headers + * @returns A Transport class constructor that can be used with the OpenSearch client + * + * @internal + */ +export function createOpenSearchAuthTransport( + authProvider: ElasticSearchAuthProvider, +): ElasticSearchTransportConstructor { + class AuthTransport extends OpenSearchTransport { + request( + params: any, + optionsOrCallback: any = {}, + maybeCallback?: any, + ): any { + // options is optional, so if it's a function, it's the callback + const isOptionsCallback = typeof optionsOrCallback === 'function'; + const options = isOptionsCallback ? {} : optionsOrCallback; + const callback = isOptionsCallback ? optionsOrCallback : maybeCallback; + + // If callback style, wrap it to inject headers + if (callback !== undefined) { + authProvider + .getAuthHeaders() + .then(authHeaders => { + const mergedOptions = { + ...options, + headers: { + ...options.headers, + ...authHeaders, + }, + }; + return super.request(params, mergedOptions, callback); + }) + .catch(callback); + + // Return an abort-able object similar to the AWS transport + return { + abort: () => {}, + }; + } + + // Promise style + return authProvider.getAuthHeaders().then(authHeaders => { + const mergedOptions = { + ...options, + headers: { + ...options.headers, + ...authHeaders, + }, + }; + return super.request(params, mergedOptions); + }); + } + } + + return AuthTransport as unknown as ElasticSearchTransportConstructor; +} + +/** + * Creates a custom Elasticsearch Transport class that injects authentication headers + * from the provided auth provider before each request. + * + * @param authProvider - The authentication provider to use for getting headers + * @returns A Transport class constructor that can be used with the Elasticsearch client + * + * @internal + */ +export function createElasticSearchAuthTransport( + authProvider: ElasticSearchAuthProvider, +): ElasticSearchTransportConstructor { + class AuthTransport extends ElasticSearchTransport { + request(params: any, options?: any, callback?: any): any { + // Handle overloaded signatures + if (typeof options === 'function') { + // Callback style without options + const cb = options; + authProvider + .getAuthHeaders() + .then(authHeaders => { + const mergedOptions = { + headers: authHeaders, + }; + return super.request(params, mergedOptions, cb); + }) + .catch(cb); + + return { abort: () => {} }; + } + + if (callback !== undefined) { + // Callback style with options + authProvider + .getAuthHeaders() + .then(authHeaders => { + const mergedOptions = { + ...options, + headers: { + ...options?.headers, + ...authHeaders, + }, + }; + return super.request(params, mergedOptions, callback); + }) + .catch(callback); + + return { abort: () => {} }; + } + + // Promise style + const result = authProvider.getAuthHeaders().then(authHeaders => { + const mergedOptions = { + ...options, + headers: { + ...options?.headers, + ...authHeaders, + }, + }; + return super.request(params, mergedOptions); + }); + + // Add abort method to match TransportRequestPromise interface + (result as any).abort = () => {}; + return result; + } + } + + return AuthTransport as unknown as ElasticSearchTransportConstructor; +} diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts index 9b1f32c0ba..0b198047ee 100644 --- a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts +++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts @@ -996,6 +996,84 @@ describe('ElasticSearchSearchEngine', () => { }), ).not.toThrow(); }); + + it('should accept an authProvider and not require auth config', async () => { + const config = new ConfigReader({ + search: { + elasticsearch: { + node: 'http://test-node', + // No auth config - using authProvider instead + }, + }, + }); + + const authProvider = { + getAuthHeaders: jest + .fn() + .mockResolvedValue({ Authorization: 'Bearer test-token' }), + }; + + const engine = await ElasticSearchSearchEngine.fromConfig({ + logger: mockServices.logger.mock(), + config, + authProvider, + }); + + expect(engine).toBeDefined(); + }); + + it('should accept an authProvider with opensearch provider', async () => { + const config = new ConfigReader({ + search: { + elasticsearch: { + provider: 'opensearch', + node: 'http://test-node', + // No auth config - using authProvider instead + }, + }, + }); + + const authProvider = { + getAuthHeaders: jest + .fn() + .mockResolvedValue({ Authorization: 'Bearer test-token' }), + }; + + const engine = await ElasticSearchSearchEngine.fromConfig({ + logger: mockServices.logger.mock(), + config, + authProvider, + }); + + expect(engine).toBeDefined(); + }); + + it('should throw error when using authProvider with aws provider', async () => { + const config = new ConfigReader({ + search: { + elasticsearch: { + provider: 'aws', + node: 'http://test-node.us-east-1.es.amazonaws.com', + }, + }, + }); + + const authProvider = { + getAuthHeaders: jest + .fn() + .mockResolvedValue({ Authorization: 'Bearer test-token' }), + }; + + await expect( + ElasticSearchSearchEngine.fromConfig({ + logger: mockServices.logger.mock(), + config, + authProvider, + }), + ).rejects.toThrow( + 'Custom auth provider is not supported with AWS provider', + ); + }); }); }); diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.ts index c03541d9d0..96c2b99d84 100644 --- a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.ts +++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.ts @@ -41,6 +41,11 @@ import { DefaultAwsCredentialsManager, } from '@backstage/integration-aws-node'; import { LoggerService } from '@backstage/backend-plugin-api'; +import { ElasticSearchAuthProvider } from '../auth'; +import { + createOpenSearchAuthTransport, + createElasticSearchAuthTransport, +} from './ElasticSearchAuthTransport'; export type { ElasticSearchClientOptions }; @@ -82,6 +87,19 @@ export type ElasticSearchOptions = { aliasPostfix?: string; indexPrefix?: string; translator?: ElasticSearchQueryTranslator; + /** + * An optional authentication provider for dynamic authentication. + * + * @remarks + * + * When provided, this auth provider will be used to inject authentication + * headers into each request to Elasticsearch/OpenSearch. This is useful + * for scenarios requiring dynamic tokens (e.g., bearer tokens with rotation). + * + * The auth provider takes precedence over static authentication configured + * in app-config.yaml. + */ + authProvider?: ElasticSearchAuthProvider; }; /** @@ -180,11 +198,13 @@ export class ElasticSearchSearchEngine implements SearchEngine { aliasPostfix = `search`, indexPrefix = ``, translator, + authProvider, } = options; const credentialProvider = DefaultAwsCredentialsManager.fromConfig(config); const clientOptions = await this.createElasticSearchClientOptions( await credentialProvider?.getCredentialProvider(), config.getConfig('search.elasticsearch'), + authProvider, ); if (clientOptions.provider === 'elastic') { logger.info('Initializing Elastic.co ElasticSearch search engine.'); @@ -504,6 +524,7 @@ export class ElasticSearchSearchEngine implements SearchEngine { private static async createElasticSearchClientOptions( credentialProvider: AwsCredentialProvider, config?: Config, + authProvider?: ElasticSearchAuthProvider, ): Promise { if (!config) { throw new Error('No elastic search config found'); @@ -512,16 +533,26 @@ export class ElasticSearchSearchEngine implements SearchEngine { const sslConfig = clientOptionsConfig?.getOptionalConfig('ssl'); if (config.getOptionalString('provider') === 'elastic') { - const authConfig = config.getConfig('auth'); + const authConfig = authProvider ? undefined : config.getConfig('auth'); return { provider: 'elastic', cloud: { id: config.getString('cloudId'), }, - auth: { - username: authConfig.getString('username'), - password: authConfig.getString('password'), - }, + // When using authProvider, we inject auth via custom Transport, not static auth + ...(authConfig + ? { + auth: { + username: authConfig.getString('username'), + password: authConfig.getString('password'), + }, + } + : {}), + ...(authProvider + ? { + Transport: createElasticSearchAuthTransport(authProvider), + } + : {}), ...(sslConfig ? { ssl: { @@ -533,6 +564,12 @@ export class ElasticSearchSearchEngine implements SearchEngine { }; } if (config.getOptionalString('provider') === 'aws') { + // AWS provider uses SigV4 signing; authProvider is not applicable here + if (authProvider) { + throw new Error( + 'Custom auth provider is not supported with AWS provider. AWS uses SigV4 signing.', + ); + } const requestSigner = new RequestSigner(config.getString('node')); const service = config.getOptionalString('service') ?? requestSigner.service; @@ -560,14 +597,26 @@ export class ElasticSearchSearchEngine implements SearchEngine { }; } if (config.getOptionalString('provider') === 'opensearch') { - const authConfig = config.getConfig('auth'); + const authConfig = authProvider + ? undefined + : config.getOptionalConfig('auth'); return { provider: 'opensearch', node: config.getString('node'), - auth: { - username: authConfig.getString('username'), - password: authConfig.getString('password'), - }, + // When using authProvider, we inject auth via custom Transport, not static auth + ...(authConfig + ? { + auth: { + username: authConfig.getString('username'), + password: authConfig.getString('password'), + }, + } + : {}), + ...(authProvider + ? { + Transport: createOpenSearchAuthTransport(authProvider), + } + : {}), ...(sslConfig ? { ssl: { @@ -578,7 +627,10 @@ export class ElasticSearchSearchEngine implements SearchEngine { : {}), }; } - const authConfig = config.getOptionalConfig('auth'); + // Default provider (standard Elasticsearch) + const authConfig = authProvider + ? undefined + : config.getOptionalConfig('auth'); const auth = authConfig && (authConfig.has('apiKey') @@ -591,7 +643,12 @@ export class ElasticSearchSearchEngine implements SearchEngine { }); return { node: config.getString('node'), - auth, + ...(auth ? { auth } : {}), + ...(authProvider + ? { + Transport: createElasticSearchAuthTransport(authProvider), + } + : {}), ...(sslConfig ? { ssl: { diff --git a/plugins/search-backend-module-elasticsearch/src/index.ts b/plugins/search-backend-module-elasticsearch/src/index.ts index a6acf8cdc8..f043e9fe5e 100644 --- a/plugins/search-backend-module-elasticsearch/src/index.ts +++ b/plugins/search-backend-module-elasticsearch/src/index.ts @@ -22,6 +22,11 @@ export { default } from './module'; export * from './module'; +export type { + ElasticSearchAuthProvider, + ElasticSearchAuthExtensionPoint, +} from './auth'; +export { elasticsearchAuthExtensionPoint } from './auth'; export { decodeElasticSearchPageCursor, ElasticSearchSearchEngine, diff --git a/plugins/search-backend-module-elasticsearch/src/module.ts b/plugins/search-backend-module-elasticsearch/src/module.ts index d4ce249093..d4db5ce90a 100644 --- a/plugins/search-backend-module-elasticsearch/src/module.ts +++ b/plugins/search-backend-module-elasticsearch/src/module.ts @@ -23,6 +23,15 @@ import { ElasticSearchQueryTranslator, ElasticSearchSearchEngine, } from './engines/ElasticSearchSearchEngine'; +import { + type ElasticSearchAuthProvider, + type ElasticSearchAuthExtensionPoint, + elasticsearchAuthExtensionPoint, +} from './auth'; + +// Re-export auth types and extension point +export type { ElasticSearchAuthProvider, ElasticSearchAuthExtensionPoint }; +export { elasticsearchAuthExtensionPoint }; /** @public */ export interface ElasticSearchQueryTranslatorExtensionPoint { @@ -49,6 +58,7 @@ export default createBackendModule({ moduleId: 'elasticsearch-engine', register(env) { let translator: ElasticSearchQueryTranslator | undefined; + let authProvider: ElasticSearchAuthProvider | undefined; env.registerExtensionPoint(elasticsearchTranslatorExtensionPoint, { setTranslator(newTranslator) { @@ -61,6 +71,15 @@ export default createBackendModule({ }, }); + env.registerExtensionPoint(elasticsearchAuthExtensionPoint, { + setAuthProvider(provider) { + if (authProvider) { + throw new Error('ElasticSearch auth provider may only be set once'); + } + authProvider = provider; + }, + }); + env.registerInit({ deps: { searchEngineRegistry: searchEngineRegistryExtensionPoint, @@ -82,11 +101,17 @@ export default createBackendModule({ if (indexPrefix) { logger.info(`Index prefix will be used for indices: ${indexPrefix}`); } + if (authProvider) { + logger.info( + 'Using custom auth provider for ElasticSearch authentication.', + ); + } searchEngineRegistry.setSearchEngine( await ElasticSearchSearchEngine.fromConfig({ logger, config, translator, + authProvider, indexPrefix, }), ); From 583bd3ac8b23ae3435c56a707fa9498b3d177cad Mon Sep 17 00:00:00 2001 From: nojaf Date: Mon, 19 Jan 2026 17:27:34 +0100 Subject: [PATCH 008/107] chore: add changeset for elasticsearch auth extension point Signed-off-by: nojaf --- .../elasticsearch-auth-extension-point.md | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .changeset/elasticsearch-auth-extension-point.md diff --git a/.changeset/elasticsearch-auth-extension-point.md b/.changeset/elasticsearch-auth-extension-point.md new file mode 100644 index 0000000000..6ece6c4451 --- /dev/null +++ b/.changeset/elasticsearch-auth-extension-point.md @@ -0,0 +1,40 @@ +--- +'@backstage/plugin-search-backend-module-elasticsearch': minor +--- + +Added `elasticsearchAuthExtensionPoint` to enable dynamic authentication mechanisms such as bearer tokens with automatic rotation. + +This extension point allows adopters to provide custom auth providers that inject headers per-request, enabling: + +- Bearer token authentication +- Automatic token rotation +- Integration with corporate identity providers + +**Example usage:** + +```typescript +import { createBackendModule } from '@backstage/backend-plugin-api'; +import { elasticsearchAuthExtensionPoint } from '@backstage/plugin-search-backend-module-elasticsearch'; + +export default createBackendModule({ + pluginId: 'search', + moduleId: 'elasticsearch-custom-auth', + register(env) { + env.registerInit({ + deps: { + elasticsearchAuth: elasticsearchAuthExtensionPoint, + }, + async init({ elasticsearchAuth }) { + elasticsearchAuth.setAuthProvider({ + async getAuthHeaders() { + const token = await myTokenService.getToken(); + return { Authorization: `Bearer ${token}` }; + }, + }); + }, + }); + }, +}); +``` + +The auth provider takes precedence over static auth config when set. Note: AWS provider (SigV4) does not support custom auth providers. From 8afe080bf9ef150d0da613a19f18be8bd04127ec Mon Sep 17 00:00:00 2001 From: nojaf Date: Mon, 19 Jan 2026 17:45:04 +0100 Subject: [PATCH 009/107] chore: Add missing report Signed-off-by: nojaf --- .../report.api.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/plugins/search-backend-module-elasticsearch/report.api.md b/plugins/search-backend-module-elasticsearch/report.api.md index a4b4c7e356..9572504c9f 100644 --- a/plugins/search-backend-module-elasticsearch/report.api.md +++ b/plugins/search-backend-module-elasticsearch/report.api.md @@ -127,6 +127,19 @@ export type ElasticSearchAuth = }; }; +// @public +export interface ElasticSearchAuthExtensionPoint { + setAuthProvider(provider: ElasticSearchAuthProvider): void; +} + +// @public +export const elasticsearchAuthExtensionPoint: ExtensionPoint; + +// @public +export interface ElasticSearchAuthProvider { + getAuthHeaders(): Promise>; +} + // @public export type ElasticSearchClientOptions = | ElasticSearchElasticSearchClientOptions @@ -314,6 +327,7 @@ export type ElasticSearchOptions = { aliasPostfix?: string; indexPrefix?: string; translator?: ElasticSearchQueryTranslator; + authProvider?: ElasticSearchAuthProvider; }; // @public (undocumented) From 07a1788a17b2d7a3f4e8cad72638d1014c5db4e9 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 19 Jan 2026 22:29:15 +0100 Subject: [PATCH 010/107] REVIEWING.md: review updates and addition about using "request changes" Signed-off-by: Patrik Oldsberg --- REVIEWING.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/REVIEWING.md b/REVIEWING.md index a4b31efa16..ba8fc1eac7 100644 --- a/REVIEWING.md +++ b/REVIEWING.md @@ -10,14 +10,16 @@ This file provides pointers for reviewing pull requests. While the main audience ## Review Workflow -Pull request reviews are coordinated manually by maintainers and reviewers based on project area ownership. Reviews are prioritized and tracked using labels and GitHub Project boards. This review process only applies to the [main Backstage repository](https://github.com/backstage/backstage), other repositories may have their own review processes. +Pull request reviews are coordinated manually by maintainers and reviewers based on project area ownership. Reviews are prioritized and tracked using labels and GitHub Project boards. This review process applies to all pull requests in the [main Backstage repository](https://github.com/backstage/backstage), other repositories may have their own review processes. -All incoming pull request reviews are tracked on the [Incoming Reviews board](https://github.com/orgs/backstage/projects/14/views/1). This board can be used by members of the `@backstage/reviewers` group to find pull requests to review, as well as anyone else that wants an overview of all incoming pull requests. +All incoming pull request reviews are tracked on the [Incoming Reviews board](https://github.com/orgs/backstage/projects/14/views/1). This board can be used by members of the `@backstage/reviewers` group to find pull requests to review, as well as maintainers that want an overview of all incoming pull requests. Project area maintainers can use the same board but with additional filters applied to only show incoming pull requests for their project area. These filtered boards are linked to for each project area in [OWNERS.md](./OWNERS.md). There is also a [personal review board](https://github.com/orgs/backstage/projects/14/views/2) that can be used to track reviews that you have been assigned to. There are several labels that help track the status and prioritize pull requests. You can find more information about these labels in [LABELS.md](./LABELS.md#pull-request-labels). +All reviewers should always use the "request changes" option if they think the pull request should be changed in any way. This is both to clarify to the author that the pull request is not ready to be merged, but also to update the status of the pull request in the review queue. If you simply want to contribute to the discussion in a pull request you can just leave a regular comment. + ### Review process for @backstage/reviewers Members of the `@backstage/reviewers` do not have any specific areas that they should focus on, they can choose to filter and focus on reviews from any part of the project. They do not assign themselves specific pull requests, but instead leave reviews directly on pull requests without any further process. From 54125aa4168e1e3fbbe04e1a7a4670f4ca3162bf Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 19 Jan 2026 22:32:08 +0100 Subject: [PATCH 011/107] .github/vale: add "unreviewed" to vocabulary Signed-off-by: Patrik Oldsberg --- .github/vale/config/vocabularies/Backstage/accept.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/vale/config/vocabularies/Backstage/accept.txt b/.github/vale/config/vocabularies/Backstage/accept.txt index 62277b26d6..dbdbc57471 100644 --- a/.github/vale/config/vocabularies/Backstage/accept.txt +++ b/.github/vale/config/vocabularies/Backstage/accept.txt @@ -539,6 +539,7 @@ unmount unregister unregistering unregistration +unreviewed unstarred untemplated untracked From 7f88082b14278047539fe0cd1d6f06a95a05483f Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 20 Jan 2026 00:20:05 +0100 Subject: [PATCH 012/107] Update REVIEWING.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Patrik Oldsberg --- REVIEWING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/REVIEWING.md b/REVIEWING.md index ba8fc1eac7..1c49854f3c 100644 --- a/REVIEWING.md +++ b/REVIEWING.md @@ -18,7 +18,7 @@ Project area maintainers can use the same board but with additional filters appl There are several labels that help track the status and prioritize pull requests. You can find more information about these labels in [LABELS.md](./LABELS.md#pull-request-labels). -All reviewers should always use the "request changes" option if they think the pull request should be changed in any way. This is both to clarify to the author that the pull request is not ready to be merged, but also to update the status of the pull request in the review queue. If you simply want to contribute to the discussion in a pull request you can just leave a regular comment. +Reviewers should use the "request changes" option when they believe changes are necessary before the pull request can be merged. This is both to clarify to the author that the pull request is not ready to be merged, but also to update the status of the pull request in the review queue. If you simply want to contribute to the discussion in a pull request, or have minor or optional suggestions, you can just leave a regular comment. ### Review process for @backstage/reviewers From 8d4c48b3f142dcfe290a2ecdcfd66fe2b64cde64 Mon Sep 17 00:00:00 2001 From: samarthsinh2660 Date: Tue, 20 Jan 2026 11:51:39 +0530 Subject: [PATCH 013/107] fix(catalog): add vertical spacing between tags in catalog table Fixes issue where tags in the component list had no vertical margin, causing borders to overlap when tags wrap to multiple lines. Changed marginBottom: '0px' to margin: '2px' for consistent spacing. Fixes #31229 Signed-off-by: samarthsinh2660 --- .changeset/fix-catalog-tags-spacing.md | 5 +++++ plugins/catalog/src/components/CatalogTable/columns.tsx | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/fix-catalog-tags-spacing.md diff --git a/.changeset/fix-catalog-tags-spacing.md b/.changeset/fix-catalog-tags-spacing.md new file mode 100644 index 0000000000..6e2540fa0b --- /dev/null +++ b/.changeset/fix-catalog-tags-spacing.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Fixed vertical spacing between tags in the catalog table. Tags now have consistent 2px margin to prevent border overlap when wrapped to multiple lines. diff --git a/plugins/catalog/src/components/CatalogTable/columns.tsx b/plugins/catalog/src/components/CatalogTable/columns.tsx index 65094bc568..d2216149cd 100644 --- a/plugins/catalog/src/components/CatalogTable/columns.tsx +++ b/plugins/catalog/src/components/CatalogTable/columns.tsx @@ -174,7 +174,7 @@ export const columnFactories = Object.freeze({ label={t} size="small" variant="outlined" - style={{ marginBottom: '0px' }} + style={{ margin: '2px' }} /> ))} From b3aa11eeaa63a2cd0cefd46330483ba2412c3ff2 Mon Sep 17 00:00:00 2001 From: nojaf Date: Tue, 20 Jan 2026 10:04:38 +0100 Subject: [PATCH 014/107] test(search-elasticsearch): add test for elastic provider with authProvider Signed-off-by: nojaf --- .../engines/ElasticSearchSearchEngine.test.ts | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts index 0b198047ee..a17d6850ab 100644 --- a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts +++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts @@ -1048,6 +1048,36 @@ describe('ElasticSearchSearchEngine', () => { expect(engine).toBeDefined(); }); + it('should accept an authProvider with elastic provider', async () => { + // cloudId format: : + // The base64 part decodes to: $ + const cloudId = + 'test:dXMtY2VudHJhbDEuZ2NwLmNsb3VkLmVzLmlvJGFiY2QkZWZnaA=='; + const config = new ConfigReader({ + search: { + elasticsearch: { + provider: 'elastic', + cloudId, + // No auth config - using authProvider instead + }, + }, + }); + + const authProvider = { + getAuthHeaders: jest + .fn() + .mockResolvedValue({ Authorization: 'Bearer test-token' }), + }; + + const engine = await ElasticSearchSearchEngine.fromConfig({ + logger: mockServices.logger.mock(), + config, + authProvider, + }); + + expect(engine).toBeDefined(); + }); + it('should throw error when using authProvider with aws provider', async () => { const config = new ConfigReader({ search: { From f7e53f9a619021c7a2a0a06ac22f8d33162465b5 Mon Sep 17 00:00:00 2001 From: nojaf Date: Tue, 20 Jan 2026 10:08:23 +0100 Subject: [PATCH 015/107] refactor(search-elasticsearch): remove redundant auth exports from index Signed-off-by: nojaf --- plugins/search-backend-module-elasticsearch/src/index.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/plugins/search-backend-module-elasticsearch/src/index.ts b/plugins/search-backend-module-elasticsearch/src/index.ts index f043e9fe5e..a6acf8cdc8 100644 --- a/plugins/search-backend-module-elasticsearch/src/index.ts +++ b/plugins/search-backend-module-elasticsearch/src/index.ts @@ -22,11 +22,6 @@ export { default } from './module'; export * from './module'; -export type { - ElasticSearchAuthProvider, - ElasticSearchAuthExtensionPoint, -} from './auth'; -export { elasticsearchAuthExtensionPoint } from './auth'; export { decodeElasticSearchPageCursor, ElasticSearchSearchEngine, From 46da01c26ce84e0b3383f41aa164f614790918c4 Mon Sep 17 00:00:00 2001 From: nojaf Date: Tue, 20 Jan 2026 15:30:40 +0100 Subject: [PATCH 016/107] fix(search-backend-module-elasticsearch): use targeted index refresh instead of full cluster refresh Signed-off-by: nojaf --- .../src/engines/ElasticSearchSearchEngineIndexer.test.ts | 3 ++- .../src/engines/ElasticSearchSearchEngineIndexer.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.test.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.test.ts index 0ba2882c61..c36d81eb14 100644 --- a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.test.ts +++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.test.ts @@ -60,10 +60,11 @@ describe('ElasticSearchSearchEngineIndexer', () => { bulkSpy, ); refreshSpy = jest.fn().mockReturnValue({}); + // Use specific pattern to avoid conflict with /some-type-index__* wildcard mock mock.add( { method: 'GET', - path: '/:index/_refresh', + path: '/some-type-index__:ts/_refresh', }, refreshSpy, ); diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.ts index b57524e13a..484205e138 100644 --- a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.ts +++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.ts @@ -97,7 +97,8 @@ export class ElasticSearchSearchEngineIndexer extends BatchSearchEngineIndexer { : {}), }; }, - refreshOnCompletion: options.skipRefresh !== true, + refreshOnCompletion: + options.skipRefresh !== true ? that.indexName : false, }); // Safely catch errors thrown by the bulk helper client, e.g. HTTP timeouts From 702116561850cd980690db3b0e3346323a2ad4a1 Mon Sep 17 00:00:00 2001 From: nojaf Date: Tue, 20 Jan 2026 15:35:13 +0100 Subject: [PATCH 017/107] chore: add changeset for elasticsearch bulk refresh fix Signed-off-by: nojaf --- .changeset/fix-opensearch-bulk-refresh.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .changeset/fix-opensearch-bulk-refresh.md diff --git a/.changeset/fix-opensearch-bulk-refresh.md b/.changeset/fix-opensearch-bulk-refresh.md new file mode 100644 index 0000000000..29657235a1 --- /dev/null +++ b/.changeset/fix-opensearch-bulk-refresh.md @@ -0,0 +1,9 @@ +--- +'@backstage/plugin-search-backend-module-elasticsearch': patch +--- + +Fixed inefficient bulk refresh behavior where `refreshOnCompletion: true` caused a full cluster refresh of all indexes instead of refreshing only the specific index being populated. + +When using the Elasticsearch/OpenSearch bulk helper, passing `refreshOnCompletion: true` triggers a refresh of `_all` indexes. This change restores the original behavior of passing the specific index name, ensuring only the target index is refreshed after bulk indexing completes. + +This fix improves performance for OpenSearch/Elasticsearch deployments, especially in multi-tenant environments or clusters with many indexes. From 7f1d92bd40e412d7024e3e4d7a0d20bc1c629b3c Mon Sep 17 00:00:00 2001 From: Hope Hadfield Date: Tue, 25 Nov 2025 16:20:05 -0500 Subject: [PATCH 018/107] Update backend-dynamic-feature-service README to reflect current state Signed-off-by: Hope Hadfield --- .../backend-dynamic-feature-service/README.md | 177 +++++++++++++++--- 1 file changed, 151 insertions(+), 26 deletions(-) diff --git a/packages/backend-dynamic-feature-service/README.md b/packages/backend-dynamic-feature-service/README.md index 6f5af13636..330845f22d 100644 --- a/packages/backend-dynamic-feature-service/README.md +++ b/packages/backend-dynamic-feature-service/README.md @@ -1,47 +1,172 @@ # @backstage/backend-dynamic-feature-service -This package adds experimental support for **dynamic backend features (plugins and modules)**, according to the content of the proposal in [RFC 18390](https://github.com/backstage/backstage/issues/18390) +This package provides support for **dynamic backend features (plugins and modules)** in Backstage, allowing you to load plugins at runtime from a separate directory without including them in your main application's package.json. -## Testing the backend dynamic plugins feature +## Purpose -In order to test the dynamic backend plugins feature provided by this package, example applications, as well as example dynamic plugins have been provided in provided in the [showcase repository](https://github.com/janus-idp/dynamic-backend-plugins-showcase), and instructions are provided in the [related Readme](https://github.com/janus-idp/dynamic-backend-plugins-showcase#readme). +This enables: + +- **Plugin distribution**: Distributing plugins as standalone packages +- **Runtime flexibility**: Adding or updating plugins without rebuilding the entire application +- **Isolation**: Keeping plugin-specific dependencies separate from core application dependencies +- **Modular deployments**: Different environments can load different sets of plugins + +**Important:** This service handles loading only - packaging and distribution are separate concerns with multiple approaches available (see Packaging Approaches section). + +## Related Packages + +- **`@backstage/frontend-dynamic-feature-loader`**: Companion package for loading dynamic frontend plugins. This is **only** supported in the New Frontend System. For more details, checkout the [README](../frontend-dynamic-feature-loader/README.md). ## How it works -The dynamic plugin manager is a service that scans a configured root directory (`dynamicPlugins.rootDirectory` in the app config) for dynamic plugin packages, and loads them dynamically. +### Core Architecture -In the `backend` application, it can be enabled by adding the `backend-dynamic-feature-service` as a dependency in the `package.json` and the following lines in the `src/index.ts` file: +The service consists of several key components: -```ts -const backend = createBackend(); -+ -+ backend.add(dynamicPluginsFeatureLoader) // provides features loaded by dynamic plugins -+ +1. **Plugin Scanner**: Scans a configured directory (`dynamicPlugins.rootDirectory`) for plugin packages +2. **Module Loader**: Loads plugin modules +3. **Feature Loader**: Integrates loaded plugins into the Backstage backend system +4. **Frontend Asset Server**: Serves frontend plugin assets (JavaScript, CSS, manifests) over HTTP for dynamic frontend plugins + +### Loading Process + +1. **Discovery**: The scanner identifies valid plugin packages in the dynamic plugins root directory +2. **Validation**: Each package is validated for required fields (`main`, `backstage.role`) +3. **Loading**: The module loader loads the plugin code +4. **Integration**: Plugins are registered as Backstage features and made available to the backend + +## Usage + +### Basic Setup + +Add the service to your backend application: + +1. **Install the package**: + +```bash +yarn add @backstage/backend-dynamic-feature-service ``` -### About the expected dynamic plugin structure +2. **Add one line to your backend**: -Due to some limitations of the current backstage codebase, the plugins need to be completed and repackaged to by used as dynamic plugins: +```ts +import { createBackend } from '@backstage/backend-defaults'; +import { dynamicPluginsFeatureLoader } from '@backstage/backend-dynamic-feature-service'; -1. they must provide a named entry point (`dynamicPluginInstaller`) of a specific type (`BackendDynamicPluginInstaller`), as can be found in the `src/dynamic` sub-folder of each dynamic plugin example provided in the [showcase repository](https://github.com/janus-idp/dynamic-backend-plugins-showcase). -2. they would have a modified `package.json` file in which dependencies are updated to share `@backstage` dependencies with the main application. -3. they may embed some dependency whose code is then merged with the plugin code. +const backend = createBackend(); +// Add this line to enable dynamic plugin support: +backend.add(dynamicPluginsFeatureLoader); +// ... your other plugins +backend.start(); +``` -Points 2 and 3 can be done by the `export-dynamic-plugin` CLI command used to perform the repackaging +### Configuration -### About the `export-dynamic-plugin` command +Configure the dynamic plugins directory in your `app-config.yaml`: -The `export-dynamic-plugin` CLI command, used the dynamic plugin examples provided in the [showcase repository](https://github.com/janus-idp/dynamic-backend-plugins-showcase), is part of the `@janus-idp/cli` package, and can be used to help packaging the dynamic plugins according to the constraints mentioned above, in order to allow straightforward testing of the dynamic plugins feature. +```yaml +dynamicPlugins: + rootDirectory: dynamic-plugins-root +``` -However the `backend-dynamic-feature-service` experimental package does **not** depend on the use of this additional CLI command, and in future steps of this backend dynamic plugin work, the use of such a dedicated command might not even be necessary. +## Dynamic Plugin Packaging -### About the support of the legacy backend system +### Package Structure Requirements -The backend dynamic plugins feature clearly targets the new backend system. -However some level of compatibility is provided with current backstage codebase, which still uses the legacy backend system, in order to allow testing and exploring dynamic backend plugin support on the widest range of contexts and installations. -However, this is temporary and will be removed once the next backend is ready to be used and has completely replaced the old one. -This is why the API related to the old backend is already marked as deprecated. +Before exploring specific packaging approaches, it's important to understand what constitutes a valid dynamic plugin package. Dynamic plugins follow the basic rules of Node.js packages, including: -### Future work +**Package contents:** -The current implementation of the dynamic plugin manager is a first step towards the final implementation of the dynamic features loading, which will be completed / simplified in future steps, as the status of the backstage codebase allows it. +- **package.json**: Package metadata and configuration +- **JavaScript files**: Either loadable by the Node.js CommonJS module loaders for backend plugins, or RSPack/webpack assets for frontend plugins +- **Configuration schema** (optional): JSON schema file (typically `dist/.config-schema.json`) for plugin configuration validation +- **Private dependencies** (optional): Embedded `node_modules` folder containing private dependencies for backend plugins + +**Required package.json fields:** + +- `name`: Package identifier +- `version`: Package version +- `main`: Entry point to the plugin's JavaScript code +- `backstage.role`: Must be set to `"backend-plugin"` or `"backend-plugin-module"` + +### Packaging Approaches + +Since this service only handles loading, you would choose a packaging approach based on your plugin's dependencies: + +### 1. Simple npm pack + +**When to use:** Plugin only uses dependencies that are already provided by the main Backstage application. + +**How to apply:** + +```bash +cd my-backstage-plugin +yarn pack +# Results in: package.tgz + +# Extract to dynamic plugins directory +mkdir -p /path/to/dynamic-plugins-root/my-backstage-plugin +tar -xzf package.tgz -C /path/to/dynamic-plugins-root/my-backstage-plugin --strip-components=1 +``` + +**Why this works:** The plugin can resolve all its dependencies from the main application's `node_modules`. + +**Reality:** Most plugins have private dependencies not available in the main application, so this approach has limited applicability. + +### 2. Manual packaging with dependency installation + +**When to use:** Plugin has private dependencies not available in the main Backstage application. + +**How to apply:** + +```bash +# Package the plugin +cd my-backstage-plugin +yarn pack + +# Extract and install dependencies +mkdir -p /path/to/dynamic-plugins-root/my-backstage-plugin +tar -xzf package.tgz -C /path/to/dynamic-plugin-root/my-backstage-plugin --strip-components=1 +cp yarn.lock /path/to/dynamic-plugin-root/my-backstage-plugin +cd /path/to/dynamic-plugins-root/my-backstage-plugin +yarn install # Installs all the plugin's dependencies +``` + +**Why this works:** Each plugin gets its own `node_modules` directory with all its dependencies. + +**Example scenario:** Plugin needs `axios@1.4.0` which isn't available in the main application. + +**Limitation:** `@backstage/*` dependencies will also be installed in the plugin's `node_modules` and will take priority over the main application's versions, leading to a big number of unnecessary duplicated dependencies, and potentially breaking consistency between core Backstage packages. + +### 3. Custom packaging CLI tool + +**When to use:** When you want to produce self-contained dynamic plugin packages that can be directly extracted without any post-action, and systematically use the core `@backstage` dependencies provided by the Backstage application. + +**What a packaging CLI needs to do:** + +1. **Analyze plugin dependencies** - Identify which are Backstage core vs private dependencies +2. **Create distribution package** - Generate a new directory with modified structure: + - Move `@backstage/*` packages from `dependencies` to `peerDependencies` in package.json + - Keep only private dependencies in the `dependencies` section + - Keep the built JavaScript code unchanged + - Include only the filtered private dependencies in `node_modules` +3. **Result** - A self-contained package that uses the main app's `@backstage/*` packages but includes its own private dependencies + +**Benefits:** + +- Systematic use of main application's `@backstage/*` packages (no version conflicts), enabling the future implementation of `@backstage` dependency version checking at start time +- Self-contained packages with only necessary private dependencies +- No post-installation steps required (extract and run) +- Consistent dependency structure across all dynamic plugins +- Production-ready distribution format + +**Example implementation:** The [`@red-hat-developer-hub/cli`](https://github.com/redhat-developer/rhdh-cli) tool implements this approach: + +```bash +cd my-backstage-plugin +npx @red-hat-developer-hub/cli@latest plugin export +# Creates a self-contained package with embedded dependencies in the `/dist-dynamic` sub-folder + +# Deploy the generated package +cp -r dist-dynamic /path/to/dynamic-plugins-root/my-backstage-plugin +``` From 9b4c4145d4e634629ef7fb535102f0a3476fcda6 Mon Sep 17 00:00:00 2001 From: Hope Hadfield Date: Tue, 16 Dec 2025 09:45:49 -0500 Subject: [PATCH 019/107] add changeset Signed-off-by: Hope Hadfield --- .changeset/yellow-years-run.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/yellow-years-run.md diff --git a/.changeset/yellow-years-run.md b/.changeset/yellow-years-run.md new file mode 100644 index 0000000000..fc57664911 --- /dev/null +++ b/.changeset/yellow-years-run.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-dynamic-feature-service': patch +--- + +Updated README for backend-dynamic-feature-service From bd54341c6485d86e73ce439da230bee3c802b99d Mon Sep 17 00:00:00 2001 From: Hope Hadfield Date: Tue, 20 Jan 2026 10:22:37 -0500 Subject: [PATCH 020/107] implement suggestions Signed-off-by: Hope Hadfield --- packages/backend-dynamic-feature-service/README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/backend-dynamic-feature-service/README.md b/packages/backend-dynamic-feature-service/README.md index 330845f22d..8122810f96 100644 --- a/packages/backend-dynamic-feature-service/README.md +++ b/packages/backend-dynamic-feature-service/README.md @@ -1,12 +1,12 @@ # @backstage/backend-dynamic-feature-service -This package provides support for **dynamic backend features (plugins and modules)** in Backstage, allowing you to load plugins at runtime from a separate directory without including them in your main application's package.json. +This package provides experimental support for **dynamic backend features (plugins and modules)** in Backstage, allowing you to load plugins at runtime from a separate directory without including them in your main application's package.json. ## Purpose This enables: -- **Plugin distribution**: Distributing plugins as standalone packages +- **Plugin distribution**: Distributing plugins as standalone artifacts - **Runtime flexibility**: Adding or updating plugins without rebuilding the entire application - **Isolation**: Keeping plugin-specific dependencies separate from core application dependencies - **Modular deployments**: Different environments can load different sets of plugins @@ -136,8 +136,6 @@ yarn install # Installs all the plugin's dependencies **Example scenario:** Plugin needs `axios@1.4.0` which isn't available in the main application. -**Limitation:** `@backstage/*` dependencies will also be installed in the plugin's `node_modules` and will take priority over the main application's versions, leading to a big number of unnecessary duplicated dependencies, and potentially breaking consistency between core Backstage packages. - ### 3. Custom packaging CLI tool **When to use:** When you want to produce self-contained dynamic plugin packages that can be directly extracted without any post-action, and systematically use the core `@backstage` dependencies provided by the Backstage application. From 6edd37cb21785eef140ddaf8638812cb2f9b703d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 14:53:17 +0000 Subject: [PATCH 021/107] chore(deps): update actions/setup-python digest to a309ff8 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/verify_microsite.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/verify_microsite.yml b/.github/workflows/verify_microsite.yml index 472c710984..c62152a6e6 100644 --- a/.github/workflows/verify_microsite.yml +++ b/.github/workflows/verify_microsite.yml @@ -222,7 +222,7 @@ jobs: uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version: 22.x - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 with: python-version: '3.9' From da669cd76f0b330cd9f76ce0fb834e99ede60663 Mon Sep 17 00:00:00 2001 From: nojaf Date: Thu, 22 Jan 2026 16:14:19 +0100 Subject: [PATCH 022/107] Shorten changeset Signed-off-by: nojaf --- .../elasticsearch-auth-extension-point.md | 35 ------------------- 1 file changed, 35 deletions(-) diff --git a/.changeset/elasticsearch-auth-extension-point.md b/.changeset/elasticsearch-auth-extension-point.md index 6ece6c4451..e2e1152e65 100644 --- a/.changeset/elasticsearch-auth-extension-point.md +++ b/.changeset/elasticsearch-auth-extension-point.md @@ -3,38 +3,3 @@ --- Added `elasticsearchAuthExtensionPoint` to enable dynamic authentication mechanisms such as bearer tokens with automatic rotation. - -This extension point allows adopters to provide custom auth providers that inject headers per-request, enabling: - -- Bearer token authentication -- Automatic token rotation -- Integration with corporate identity providers - -**Example usage:** - -```typescript -import { createBackendModule } from '@backstage/backend-plugin-api'; -import { elasticsearchAuthExtensionPoint } from '@backstage/plugin-search-backend-module-elasticsearch'; - -export default createBackendModule({ - pluginId: 'search', - moduleId: 'elasticsearch-custom-auth', - register(env) { - env.registerInit({ - deps: { - elasticsearchAuth: elasticsearchAuthExtensionPoint, - }, - async init({ elasticsearchAuth }) { - elasticsearchAuth.setAuthProvider({ - async getAuthHeaders() { - const token = await myTokenService.getToken(); - return { Authorization: `Bearer ${token}` }; - }, - }); - }, - }); - }, -}); -``` - -The auth provider takes precedence over static auth config when set. Note: AWS provider (SigV4) does not support custom auth providers. From 7ac1e3e34be0228c75149a1f232d54bc8232047c Mon Sep 17 00:00:00 2001 From: nojaf Date: Thu, 22 Jan 2026 16:15:31 +0100 Subject: [PATCH 023/107] Update copyright year Signed-off-by: nojaf --- plugins/search-backend-module-elasticsearch/src/auth.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/search-backend-module-elasticsearch/src/auth.ts b/plugins/search-backend-module-elasticsearch/src/auth.ts index 4491bc3b58..af7da316d4 100644 --- a/plugins/search-backend-module-elasticsearch/src/auth.ts +++ b/plugins/search-backend-module-elasticsearch/src/auth.ts @@ -1,5 +1,5 @@ /* - * Copyright 2024 The Backstage Authors + * Copyright 2026 The Backstage Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. From 3cee0cd660df43df4b17dc9f6e00d705706537b2 Mon Sep 17 00:00:00 2001 From: Hellgren Heikki Date: Thu, 22 Jan 2026 15:54:15 +0200 Subject: [PATCH 024/107] chore: update devcontainer this is pre-work for upcoming Backstage ContribFest at KubeCon Amsterdam to hopefully make it easier for people to start contributing. node was updated to 24 to support the latest things in backstage, additionally necessary vscode plugins and settings are now included. Signed-off-by: Hellgren Heikki --- .../Dockerfile | 2 +- .devcontainer/devcontainer.env | 1 + .devcontainer/devcontainer.json | 61 +++++++++++++++++++ .devcontainer/setup.sh | 28 +++++++++ contrib/.devcontainer/README.md | 19 ------ contrib/.devcontainer/devcontainer.json | 27 -------- contrib/.devcontainer/postCreate.sh | 6 -- package.json | 1 + yarn.lock | 10 +++ 9 files changed, 102 insertions(+), 53 deletions(-) rename {contrib/.devcontainer => .devcontainer}/Dockerfile (78%) create mode 100644 .devcontainer/devcontainer.env create mode 100644 .devcontainer/devcontainer.json create mode 100755 .devcontainer/setup.sh delete mode 100644 contrib/.devcontainer/README.md delete mode 100644 contrib/.devcontainer/devcontainer.json delete mode 100755 contrib/.devcontainer/postCreate.sh diff --git a/contrib/.devcontainer/Dockerfile b/.devcontainer/Dockerfile similarity index 78% rename from contrib/.devcontainer/Dockerfile rename to .devcontainer/Dockerfile index 6407aa26dd..d29ef36dc6 100644 --- a/contrib/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/devcontainers/typescript-node:20 +FROM mcr.microsoft.com/devcontainers/typescript-node:24 RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ && apt-get -y install chromium \ diff --git a/.devcontainer/devcontainer.env b/.devcontainer/devcontainer.env new file mode 100644 index 0000000000..65350b61d4 --- /dev/null +++ b/.devcontainer/devcontainer.env @@ -0,0 +1 @@ +NODE_OPTIONS=--no-node-snapshot diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..08d02732be --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,61 @@ +{ + "name": "Backstage", + "forwardPorts": [3000, 7007], + "build": { "dockerfile": "Dockerfile" }, + "features": { + "ghcr.io/devcontainers/features/common-utils:2.5.5": {}, + "ghcr.io/devcontainers-contrib/features/mkdocs:2": {} + }, + "postCreateCommand": "bash .devcontainer/setup.sh", + "hostRequirements": { + "cpus": 2, + "memory": "4gb", + "storage": "32gb" + }, + "runArgs": [ + "--env-file", + ".devcontainer/devcontainer.env", + "--sysctl", + "net.ipv6.conf.all.disable_ipv6=1" + ], + "portsAttributes": { + "3000": { + "label": "Frontend port", + "onAutoForward": "silent", + "requireLocalPort": true + }, + "7007": { + "label": "Backend port", + "onAutoForward": "silent", + "requireLocalPort": true + }, + "9464": { + "onAutoForward": "silent" + } + }, + "customizations": { + "vscode": { + "extensions": [ + "esbenp.prettier-vscode", + "dbaeumer.vscode-eslint", + "Intility.vscode-backstage" + ], + "settings": { + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "eslint.validate": [ + "javascript", + "javascriptreact", + "typescript", + "typescriptreact" + ], + "files.eol": "\n", + "prettier.endOfLine": "lf", + "editor.codeActionsOnSave": { + "source.fixAll": "explicit", + "source.sortMembers": "explicit" + } + } + } + } +} diff --git a/.devcontainer/setup.sh b/.devcontainer/setup.sh new file mode 100755 index 0000000000..7615e2b3cc --- /dev/null +++ b/.devcontainer/setup.sh @@ -0,0 +1,28 @@ +#!/bin/bash +echo "Installing Backstage dependencies..." + +yarn install +export VIRTUAL_ENV=$HOME/venv +python3 -m venv $VIRTUAL_ENV +export PATH="$VIRTUAL_ENV/bin:$PATH" +python3 -m pip install mkdocs-techdocs-core + +echo "" +echo "╔════════════════════════════════════════════════════════╗ " +echo "║ 🚀 Setup Complete! Ready to launch Backstage! ║ " +echo "╠════════════════════════════════════════════════════════╣ " +echo "║ ║ " +echo "║ Open a new terminal and run: ║ " +echo "║ ║ " +echo "║ yarn start ║ " +echo "║ ║ " +echo "║ Then access Backstage at: ║ " +echo "║ ║ " +echo "║ http://localhost:3000 ║ " +echo "║ ║ " +echo "║ You might need to refresh the page once backend ║ " +echo "║ is ready. ║ " +echo "║ ║ " +echo "║ Happy coding! 🎉 ║ " +echo "╚════════════════════════════════════════════════════════╝ " +echo "" \ No newline at end of file diff --git a/contrib/.devcontainer/README.md b/contrib/.devcontainer/README.md deleted file mode 100644 index 4fca39b3ad..0000000000 --- a/contrib/.devcontainer/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# Devcontainer Configuration - -[Devcontainer](https://code.visualstudio.com/docs/devcontainers/containers) is a VSCode feature that allows developers -to share a common workspace definition, by leveraging Docker to run the workspace, and using VSCode Remote Development extension, you can make sure the developer experience is the same across different computers - -## Benefits - -- Developers only need to have VSCode and Docker installed -- All dependencies necessary to work in the repository are contained in the docker image -- Makes it easier for new developers to start contributing to the project -- No extra setup required - -## Known Issues - -- Performance is a known issue. Working inside devcontainers require developers to have a powerful computer. See [System Requirements](https://code.visualstudio.com/docs/devcontainers/containers#_system-requirements) - -## Usage - -Just copy the .devcontainer folder to the root of the directory, and VSCode will automatically detect the configuration and suggest that you re-open the repository using Devcontainer diff --git a/contrib/.devcontainer/devcontainer.json b/contrib/.devcontainer/devcontainer.json deleted file mode 100644 index 14e7d7f0ae..0000000000 --- a/contrib/.devcontainer/devcontainer.json +++ /dev/null @@ -1,27 +0,0 @@ -// For format details, see https://aka.ms/devcontainer.json. For config options, see the -// README at: https://github.com/devcontainers/templates/tree/main/src/typescript-node -{ - "name": "Base Backstage Workspace", - "build": { "dockerfile": "Dockerfile" }, - "features": { - "ghcr.io/devcontainers/features/common-utils:1": {}, - "ghcr.io/devcontainers/features/docker-from-docker:1": {}, - "ghcr.io/devcontainers-contrib/features/mkdocs:2": {} - }, - - // Use 'forwardPorts' to make a list of ports inside the container available locally. - "forwardPorts": [3000, 7007], - - // Use 'postCreateCommand' to run commands after the container is created. - "postCreateCommand": "bash .devcontainer/postCreate.sh", - - // Configure tool-specific properties. - "customizations": { - "vscode": { - "extensions": ["Intility.vscode-backstage"] - } - } - - // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. - // "remoteUser": "root" -} diff --git a/contrib/.devcontainer/postCreate.sh b/contrib/.devcontainer/postCreate.sh deleted file mode 100755 index 88f403de5e..0000000000 --- a/contrib/.devcontainer/postCreate.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -yarn install -export VIRTUAL_ENV=$HOME/venv -python3 -m venv $VIRTUAL_ENV -export PATH="$VIRTUAL_ENV/bin:$PATH" -python3 -m pip install mkdocs-techdocs-core \ No newline at end of file diff --git a/package.json b/package.json index b237af2fa3..70d0e3d145 100644 --- a/package.json +++ b/package.json @@ -134,6 +134,7 @@ "@backstage/eslint-plugin": "workspace:*", "@backstage/repo-tools": "workspace:*", "@changesets/cli": "^2.14.0", + "@devcontainers/cli": "^0.81.1", "@jest/environment-jsdom-abstract": "^30", "@octokit/rest": "^19.0.3", "@playwright/test": "^1.32.3", diff --git a/yarn.lock b/yarn.lock index c1696a6aa8..70be34a79f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8508,6 +8508,15 @@ __metadata: languageName: node linkType: hard +"@devcontainers/cli@npm:^0.81.1": + version: 0.81.1 + resolution: "@devcontainers/cli@npm:0.81.1" + bin: + devcontainer: devcontainer.js + checksum: 10/269c88697af36823d6d5d128dd8c08f28714ffd7050d76965da90907bbf579411162a2d499cf3d7ff2d37f442b5419db58d936e5a828b812d4b3d555c923a578 + languageName: node + linkType: hard + "@elastic/elasticsearch-mock@npm:^1.0.0": version: 1.0.0 resolution: "@elastic/elasticsearch-mock@npm:1.0.0" @@ -45374,6 +45383,7 @@ __metadata: "@backstage/eslint-plugin": "workspace:*" "@backstage/repo-tools": "workspace:*" "@changesets/cli": "npm:^2.14.0" + "@devcontainers/cli": "npm:^0.81.1" "@jest/environment-jsdom-abstract": "npm:^30" "@manypkg/get-packages": "npm:^1.1.3" "@octokit/rest": "npm:^19.0.3" From ac91d6fccb69a79d6098d91e3810daa1355b7b55 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 20:21:18 +0000 Subject: [PATCH 025/107] chore(deps): update actions/setup-python action to v6.2.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/verify_e2e-techdocs.yml | 2 +- .github/workflows/verify_e2e-windows.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/verify_e2e-techdocs.yml b/.github/workflows/verify_e2e-techdocs.yml index 6a7a4b2af7..d01b4f9c3e 100644 --- a/.github/workflows/verify_e2e-techdocs.yml +++ b/.github/workflows/verify_e2e-techdocs.yml @@ -37,7 +37,7 @@ jobs: egress-policy: audit - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: '3.9' diff --git a/.github/workflows/verify_e2e-windows.yml b/.github/workflows/verify_e2e-windows.yml index bd9b190a54..561963cc05 100644 --- a/.github/workflows/verify_e2e-windows.yml +++ b/.github/workflows/verify_e2e-windows.yml @@ -58,7 +58,7 @@ jobs: registry-url: https://registry.npmjs.org/ # Needed for auth - name: setup python - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: '3.10' From c4cae01af8c36ea722116b959305ca1052eb8cef Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 20:25:36 +0000 Subject: [PATCH 026/107] chore(deps): update docker/setup-buildx-action action to v3.12.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/deploy_docker-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy_docker-image.yml b/.github/workflows/deploy_docker-image.yml index 484d102b7a..75e0a759df 100644 --- a/.github/workflows/deploy_docker-image.yml +++ b/.github/workflows/deploy_docker-image.yml @@ -59,7 +59,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Set up Docker Buildx - uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1 + uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0 - name: Build and push uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 From 2ee354a36c3925598eead43bf00f0f51e824ca77 Mon Sep 17 00:00:00 2001 From: Phil Kuang Date: Thu, 22 Jan 2026 11:28:38 -0500 Subject: [PATCH 027/107] refactor(pg-search): return numberOfResults with queries Signed-off-by: Phil Kuang --- .changeset/lucky-masks-doubt.md | 5 +++++ plugins/search-backend-module-pg/report.api.md | 1 + .../src/PgSearchEngine/PgSearchEngine.test.ts | 6 ++++++ .../src/PgSearchEngine/PgSearchEngine.ts | 7 ++++++- .../src/database/DatabaseDocumentStore.test.ts | 12 ++++++++++++ .../src/database/DatabaseDocumentStore.ts | 1 + .../search-backend-module-pg/src/database/types.ts | 4 ++++ 7 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 .changeset/lucky-masks-doubt.md diff --git a/.changeset/lucky-masks-doubt.md b/.changeset/lucky-masks-doubt.md new file mode 100644 index 0000000000..b20633308f --- /dev/null +++ b/.changeset/lucky-masks-doubt.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search-backend-module-pg': patch +--- + +Return `numberOfResults` count with search query responses diff --git a/plugins/search-backend-module-pg/report.api.md b/plugins/search-backend-module-pg/report.api.md index 67e60b7822..317547cbdc 100644 --- a/plugins/search-backend-module-pg/report.api.md +++ b/plugins/search-backend-module-pg/report.api.md @@ -89,6 +89,7 @@ export interface DocumentResultRow { document: IndexableDocument; // (undocumented) highlight: IndexableDocument; + total_count: string; // (undocumented) type: string; } diff --git a/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.test.ts b/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.test.ts index bc3df76692..9c77a04e44 100644 --- a/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.test.ts +++ b/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.test.ts @@ -193,6 +193,7 @@ describe('PgSearchEngine', () => { database.transaction.mockImplementation(fn => fn(tx)); database.query.mockResolvedValue([ { + total_count: '1', document: { title: 'Hello World', text: 'Lorem Ipsum', @@ -212,6 +213,7 @@ describe('PgSearchEngine', () => { }); expect(results).toEqual({ + numberOfResults: 1, results: [ { document: { @@ -251,6 +253,7 @@ describe('PgSearchEngine', () => { Array(30) .fill(0) .map((_, i) => ({ + total_count: '30', document: { title: 'Hello World', text: 'Lorem Ipsum', @@ -270,6 +273,7 @@ describe('PgSearchEngine', () => { }); expect(results).toEqual({ + numberOfResults: 30, results: Array(25) .fill(0) .map((_, i) => ({ @@ -309,6 +313,7 @@ describe('PgSearchEngine', () => { Array(30) .fill(0) .map((_, i) => ({ + total_count: '30', document: { title: 'Hello World', text: 'Lorem Ipsum', @@ -330,6 +335,7 @@ describe('PgSearchEngine', () => { }); expect(results).toEqual({ + numberOfResults: 30, results: Array(30) .fill(0) .map((_, i) => ({ diff --git a/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.ts b/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.ts index 1a024be33c..ea75b1a739 100644 --- a/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.ts +++ b/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.ts @@ -269,7 +269,12 @@ export class PgSearchEngine implements SearchEngine { }), ); - return { results, nextPageCursor, previousPageCursor }; + return { + results, + numberOfResults: rows.length > 0 ? parseInt(rows[0].total_count, 10) : 0, + nextPageCursor, + previousPageCursor, + }; } } diff --git a/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.test.ts b/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.test.ts index ef249fa33d..7ef48d8398 100644 --- a/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.test.ts +++ b/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.test.ts @@ -274,6 +274,7 @@ describe('DatabaseDocumentStore', () => { expect(rows).toEqual([ { + total_count: '2', document: { location: 'LOCATION-1', text: 'Hello World', @@ -320,6 +321,7 @@ describe('DatabaseDocumentStore', () => { expect(rows).toEqual([ { + total_count: '2', document: { location: 'LOCATION-1', text: 'Around the world', @@ -329,6 +331,7 @@ describe('DatabaseDocumentStore', () => { type: 'test', }, { + total_count: '2', document: { location: 'LOCATION-1', text: 'Hello World', @@ -382,6 +385,7 @@ describe('DatabaseDocumentStore', () => { expect(rows).toEqual([ { + total_count: '1', document: { location: 'LOCATION-1', text: 'Hello World', @@ -436,6 +440,7 @@ describe('DatabaseDocumentStore', () => { expect(rows).toEqual([ { + total_count: '1', document: { location: 'LOCATION-1', text: 'Hello World', @@ -503,6 +508,7 @@ describe('DatabaseDocumentStore', () => { expect(rows).toEqual([ { + total_count: '4', document: { location: 'LOCATION-1', text: 'Hello World', @@ -513,6 +519,7 @@ describe('DatabaseDocumentStore', () => { type: 'my-type', }, { + total_count: '4', document: { location: 'LOCATION-1', text: 'Hello World', @@ -523,6 +530,7 @@ describe('DatabaseDocumentStore', () => { type: 'my-type', }, { + total_count: '4', document: { location: 'LOCATION-1', text: 'Hello World', @@ -533,6 +541,7 @@ describe('DatabaseDocumentStore', () => { type: 'my-type', }, { + total_count: '4', document: { location: 'LOCATION-1', text: 'Hello World', @@ -585,6 +594,7 @@ describe('DatabaseDocumentStore', () => { expect(rows).toEqual([ { + total_count: '1', document: { location: 'LOCATION-1', text: 'Hello World', @@ -635,6 +645,7 @@ describe('DatabaseDocumentStore', () => { expect(rows).toEqual([ { + total_count: '2', document: { title: 'Lorem Ipsum', text: 'Hello World', @@ -645,6 +656,7 @@ describe('DatabaseDocumentStore', () => { type: 'my-type', }, { + total_count: '2', document: { title: 'Dolor sit amet', text: 'Hello World', diff --git a/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.ts b/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.ts index 21512361a9..bd63756b06 100644 --- a/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.ts +++ b/plugins/search-backend-module-pg/src/database/DatabaseDocumentStore.ts @@ -215,6 +215,7 @@ export class DatabaseDocumentStore implements DatabaseStore { } query.select('type', 'document'); + query.select(tx.raw('COUNT(*) OVER() AS total_count')); if (pgTerm && options.useHighlight) { const headlineOptions = `MaxWords=${options.maxWords}, MinWords=${options.minWords}, ShortWord=${options.shortWord}, HighlightAll=${options.highlightAll}, MaxFragments=${options.maxFragments}, FragmentDelimiter=${options.fragmentDelimiter}, StartSel=${options.preTag}, StopSel=${options.postTag}`; diff --git a/plugins/search-backend-module-pg/src/database/types.ts b/plugins/search-backend-module-pg/src/database/types.ts index f8529fbebe..5012e1d792 100644 --- a/plugins/search-backend-module-pg/src/database/types.ts +++ b/plugins/search-backend-module-pg/src/database/types.ts @@ -58,6 +58,10 @@ export interface RawDocumentRow { /** @public */ export interface DocumentResultRow { + /** + * Total number of documents matching the query, regardless of pagination. + */ + total_count: string; document: IndexableDocument; type: string; highlight: IndexableDocument; From 5766fc71c62ef39bd469d81e3f03c66dad615625 Mon Sep 17 00:00:00 2001 From: Juan Pablo Garcia Ripa Date: Wed, 9 Jul 2025 21:33:23 +0200 Subject: [PATCH 028/107] validate plugin and module ids Signed-off-by: Juan Pablo Garcia Ripa --- .changeset/itchy-sites-cheer.md | 8 ++++ .../architecture/08-naming-patterns.md | 16 +++---- .../src/wiring/BackendInitializer.test.ts | 47 +++++++++++++++++++ .../src/wiring/createBackendModule.ts | 7 +++ .../src/wiring/createBackendPlugin.ts | 7 +++ packages/config/report.api.md | 3 ++ packages/config/src/constants.ts | 27 +++++++++++ packages/config/src/index.ts | 1 + packages/config/src/reader.ts | 3 +- 9 files changed, 109 insertions(+), 10 deletions(-) create mode 100644 .changeset/itchy-sites-cheer.md create mode 100644 packages/config/src/constants.ts diff --git a/.changeset/itchy-sites-cheer.md b/.changeset/itchy-sites-cheer.md new file mode 100644 index 0000000000..54f5f2fadf --- /dev/null +++ b/.changeset/itchy-sites-cheer.md @@ -0,0 +1,8 @@ +--- +'@backstage/backend-plugin-api': minor +'@backstage/backend-app-api': minor +'@backstage/config-loader': patch +'@backstage/config': patch +--- + +The backend will now throw an error if a plugin or a module doesn't have a valid ID diff --git a/docs/backend-system/architecture/08-naming-patterns.md b/docs/backend-system/architecture/08-naming-patterns.md index 585a9fe87c..990cc62b70 100644 --- a/docs/backend-system/architecture/08-naming-patterns.md +++ b/docs/backend-system/architecture/08-naming-patterns.md @@ -11,10 +11,10 @@ As a rule, all names should be camel case, with the exceptions of plugin and mod ### Plugins -| Description | Pattern | Examples | -| ----------- | ----------------- | ------------------------------------- | -| export | `Plugin` | `catalogPlugin`, `userSettingsPlugin` | -| ID | `''` | `'catalog'`, `'user-settings'` | +| Description | Pattern | Examples | Notes | +| ----------- | ----------------- | ------------------------------------- | --------------------------------------------------------------------- | +| export | `Plugin` | `catalogPlugin`, `userSettingsPlugin` | | +| ID | `''` | `'catalog'`, `'user-settings'` | letters, digits, dashes, and underscores only, starting with a letter | Example: @@ -27,10 +27,10 @@ export const userSettingsPlugin = createBackendPlugin({ ### Modules -| Description | Pattern | Examples | -| ----------- | ---------------------------- | ----------------------------------- | -| export | `Module` | `catalogModuleGithubEntityProvider` | -| ID | `''` | `'github-entity-provider'` | +| Description | Pattern | Examples | Notes | +| ----------- | ---------------------------- | ----------------------------------- | --------------------------------------------------------------------- | +| export | `Module` | `catalogModuleGithubEntityProvider` | | +| ID | `''` | `'github-entity-provider'` | letters, digits, dashes, and underscores only, starting with a letter | Example: diff --git a/packages/backend-app-api/src/wiring/BackendInitializer.test.ts b/packages/backend-app-api/src/wiring/BackendInitializer.test.ts index 1c0bf5a0ef..a64743233d 100644 --- a/packages/backend-app-api/src/wiring/BackendInitializer.test.ts +++ b/packages/backend-app-api/src/wiring/BackendInitializer.test.ts @@ -1011,6 +1011,53 @@ describe('BackendInitializer', () => { "Service or extension point dependencies of module 'test-mod' for plugin 'test' are missing for the following ref(s): serviceRef{a}", ); }); + it('should reject plugins with invalid pluginId', async () => { + const init = new BackendInitializer(baseFactories); + init.add( + createBackendPlugin({ + pluginId: 'test:invalid&id', + register(reg) { + reg.registerInit({ + deps: {}, + async init() {}, + }); + }, + }), + ); + await expect(init.start()).rejects.toThrow( + "Invalid pluginId 'test:invalid&id', must match the pattern /^[a-z][a-z0-9]*(?:[-_][a-z][a-z0-9]*)*$/i (letters, digits, dashes, and underscores only, starting with a letter)", + ); + }); + + it('should reject modules with invalid moduleId', async () => { + const init = new BackendInitializer(baseFactories); + init.add( + createBackendPlugin({ + pluginId: 'test', + register(reg) { + reg.registerInit({ + deps: {}, + async init() {}, + }); + }, + }), + ); + init.add( + createBackendModule({ + pluginId: 'test', + moduleId: 'invalid:module&id', + register(reg) { + reg.registerInit({ + deps: {}, + async init() {}, + }); + }, + }), + ); + await expect(init.start()).rejects.toThrow( + "Invalid moduleId 'invalid:module&id' for plugin 'test', must match the pattern /^[a-z][a-z0-9]*(?:[-_][a-z][a-z0-9]*)*$/i (letters, digits, dashes, and underscores only, starting with a letter)", + ); + }); it('should properly load double-default CJS modules', async () => { expect.assertions(3); diff --git a/packages/backend-plugin-api/src/wiring/createBackendModule.ts b/packages/backend-plugin-api/src/wiring/createBackendModule.ts index e2357a65d0..9d064d3b0d 100644 --- a/packages/backend-plugin-api/src/wiring/createBackendModule.ts +++ b/packages/backend-plugin-api/src/wiring/createBackendModule.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +import { CONFIG_KEY_PART_PATTERN } from '@backstage/config'; import { BackendFeature } from '../types'; import { BackendModuleRegistrationPoints, @@ -55,6 +56,12 @@ export function createBackendModule( options: CreateBackendModuleOptions, ): BackendFeature { function getRegistrations() { + if (!CONFIG_KEY_PART_PATTERN.test(options.moduleId)) { + throw new Error( + `Invalid moduleId '${options.moduleId}' for plugin '${options.pluginId}', must match the pattern ${CONFIG_KEY_PART_PATTERN} (letters, digits, dashes, and underscores only, starting with a letter)`, + ); + } + const extensionPoints: InternalBackendPluginRegistration['extensionPoints'] = []; let init: InternalBackendModuleRegistration['init'] | undefined = undefined; diff --git a/packages/backend-plugin-api/src/wiring/createBackendPlugin.ts b/packages/backend-plugin-api/src/wiring/createBackendPlugin.ts index 185500c495..e4d32197ff 100644 --- a/packages/backend-plugin-api/src/wiring/createBackendPlugin.ts +++ b/packages/backend-plugin-api/src/wiring/createBackendPlugin.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +import { CONFIG_KEY_PART_PATTERN } from '@backstage/config'; import { BackendFeature } from '../types'; import { BackendPluginRegistrationPoints, @@ -49,6 +50,12 @@ export function createBackendPlugin( options: CreateBackendPluginOptions, ): BackendFeature { function getRegistrations() { + if (!CONFIG_KEY_PART_PATTERN.test(options.pluginId)) { + throw new Error( + `Invalid pluginId '${options.pluginId}', must match the pattern ${CONFIG_KEY_PART_PATTERN} (letters, digits, dashes, and underscores only, starting with a letter)`, + ); + } + const extensionPoints: InternalBackendPluginRegistration['extensionPoints'] = []; let init: InternalBackendPluginRegistration['init'] | undefined = undefined; diff --git a/packages/config/report.api.md b/packages/config/report.api.md index 94c4652b44..2963960973 100644 --- a/packages/config/report.api.md +++ b/packages/config/report.api.md @@ -43,6 +43,9 @@ export type Config = { getOptionalStringArray(key: string): string[] | undefined; }; +// @public +export const CONFIG_KEY_PART_PATTERN: RegExp; + // @public export class ConfigReader implements Config { constructor( diff --git a/packages/config/src/constants.ts b/packages/config/src/constants.ts new file mode 100644 index 0000000000..acd5c50961 --- /dev/null +++ b/packages/config/src/constants.ts @@ -0,0 +1,27 @@ +/* + * Copyright 2025 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * The pattern that config keys must match. + * + * @remarks + * keys must only contain the letters `a` through `z` and digits, in groups separated by + * dashes or underscores. Additionally, the very first character of each such group + * must be a letter, not a digit + * + * @public + */ +export const CONFIG_KEY_PART_PATTERN = /^[a-z][a-z0-9]*(?:[-_][a-z0-9]+)*$/i; diff --git a/packages/config/src/index.ts b/packages/config/src/index.ts index c6254e97ba..2f3ade0189 100644 --- a/packages/config/src/index.ts +++ b/packages/config/src/index.ts @@ -29,3 +29,4 @@ export type { export { readDurationFromConfig } from './readDurationFromConfig'; export { ConfigReader } from './reader'; export type { AppConfig, Config } from './types'; +export { CONFIG_KEY_PART_PATTERN } from './constants'; diff --git a/packages/config/src/reader.ts b/packages/config/src/reader.ts index 8186ee8faa..18f010daac 100644 --- a/packages/config/src/reader.ts +++ b/packages/config/src/reader.ts @@ -17,8 +17,7 @@ import { JsonObject, JsonValue } from '@backstage/types'; import { AppConfig, Config } from './types'; -// Update the same pattern in config-loader package if this is changed -const CONFIG_KEY_PART_PATTERN = /^[a-z][a-z0-9]*(?:[-_:][a-z0-9]+)*$/i; +import { CONFIG_KEY_PART_PATTERN } from './constants'; function isObject(value: JsonValue | undefined): value is JsonObject { return typeof value === 'object' && value !== null && !Array.isArray(value); From 051b3af31d6ff6b061bc42232c32ee21384aee78 Mon Sep 17 00:00:00 2001 From: Juan Pablo Garcia Ripa Date: Wed, 9 Jul 2025 21:55:44 +0200 Subject: [PATCH 029/107] fix test and update invalid ids Signed-off-by: Juan Pablo Garcia Ripa --- .../backend-app-api/src/wiring/BackendInitializer.test.ts | 5 +++-- .../backend-dynamic-feature-service/src/schemas/frontend.ts | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/backend-app-api/src/wiring/BackendInitializer.test.ts b/packages/backend-app-api/src/wiring/BackendInitializer.test.ts index a64743233d..7be989a0ea 100644 --- a/packages/backend-app-api/src/wiring/BackendInitializer.test.ts +++ b/packages/backend-app-api/src/wiring/BackendInitializer.test.ts @@ -27,6 +27,7 @@ import { import { BackendInitializer } from './BackendInitializer'; import { mockServices } from '@backstage/backend-test-utils'; import { BackendStartupError } from './BackendStartupError'; +import { CONFIG_KEY_PART_PATTERN } from '@backstage/config'; const baseFactories = [ mockServices.rootLifecycle.factory(), @@ -1025,7 +1026,7 @@ describe('BackendInitializer', () => { }), ); await expect(init.start()).rejects.toThrow( - "Invalid pluginId 'test:invalid&id', must match the pattern /^[a-z][a-z0-9]*(?:[-_][a-z][a-z0-9]*)*$/i (letters, digits, dashes, and underscores only, starting with a letter)", + `Invalid pluginId 'test:invalid&id', must match the pattern ${CONFIG_KEY_PART_PATTERN} (letters, digits, dashes, and underscores only, starting with a letter)`, ); }); @@ -1055,7 +1056,7 @@ describe('BackendInitializer', () => { }), ); await expect(init.start()).rejects.toThrow( - "Invalid moduleId 'invalid:module&id' for plugin 'test', must match the pattern /^[a-z][a-z0-9]*(?:[-_][a-z][a-z0-9]*)*$/i (letters, digits, dashes, and underscores only, starting with a letter)", + `Invalid moduleId 'invalid:module&id' for plugin 'test', must match the pattern ${CONFIG_KEY_PART_PATTERN} (letters, digits, dashes, and underscores only, starting with a letter)`, ); }); diff --git a/packages/backend-dynamic-feature-service/src/schemas/frontend.ts b/packages/backend-dynamic-feature-service/src/schemas/frontend.ts index d101487318..bb83898f8c 100644 --- a/packages/backend-dynamic-feature-service/src/schemas/frontend.ts +++ b/packages/backend-dynamic-feature-service/src/schemas/frontend.ts @@ -31,7 +31,7 @@ import { */ export const dynamicPluginsFrontendSchemas = createBackendModule({ pluginId: 'app', - moduleId: 'core.dynamicplugins.frontendSchemas', + moduleId: 'core-dynamicplugins-frontendSchemas', register(reg) { reg.registerInit({ deps: { From f4470cd3a3b663ffdcfe484c67e47825dbac0961 Mon Sep 17 00:00:00 2001 From: Juan Pablo Garcia Ripa Date: Sun, 7 Sep 2025 22:50:30 +0200 Subject: [PATCH 030/107] make a warning for invalid plugin and module Ids Signed-off-by: Juan Pablo Garcia Ripa --- .../architecture/08-naming-patterns.md | 16 +++++------ .../src/wiring/constants.ts | 28 +++++++++++++++++++ .../src/wiring/createBackendModule.ts | 11 ++++++-- .../src/wiring/createBackendPlugin.ts | 11 ++++++-- 4 files changed, 52 insertions(+), 14 deletions(-) create mode 100644 packages/backend-plugin-api/src/wiring/constants.ts diff --git a/docs/backend-system/architecture/08-naming-patterns.md b/docs/backend-system/architecture/08-naming-patterns.md index 990cc62b70..b06d52c287 100644 --- a/docs/backend-system/architecture/08-naming-patterns.md +++ b/docs/backend-system/architecture/08-naming-patterns.md @@ -11,10 +11,10 @@ As a rule, all names should be camel case, with the exceptions of plugin and mod ### Plugins -| Description | Pattern | Examples | Notes | -| ----------- | ----------------- | ------------------------------------- | --------------------------------------------------------------------- | -| export | `Plugin` | `catalogPlugin`, `userSettingsPlugin` | | -| ID | `''` | `'catalog'`, `'user-settings'` | letters, digits, dashes, and underscores only, starting with a letter | +| Description | Pattern | Examples | Notes | +| ----------- | ----------------- | ------------------------------------- | -------------------------------------------------- | +| export | `Plugin` | `catalogPlugin`, `userSettingsPlugin` | | +| ID | `''` | `'catalog'`, `'user-settings'` | letters, digits,and dashes, starting with a letter | Example: @@ -27,10 +27,10 @@ export const userSettingsPlugin = createBackendPlugin({ ### Modules -| Description | Pattern | Examples | Notes | -| ----------- | ---------------------------- | ----------------------------------- | --------------------------------------------------------------------- | -| export | `Module` | `catalogModuleGithubEntityProvider` | | -| ID | `''` | `'github-entity-provider'` | letters, digits, dashes, and underscores only, starting with a letter | +| Description | Pattern | Examples | Notes | +| ----------- | ---------------------------- | ----------------------------------- | --------------------------------------------------- | +| export | `Module` | `catalogModuleGithubEntityProvider` | | +| ID | `''` | `'github-entity-provider'` | letters, digits, and dashes, starting with a letter | Example: diff --git a/packages/backend-plugin-api/src/wiring/constants.ts b/packages/backend-plugin-api/src/wiring/constants.ts new file mode 100644 index 0000000000..b5463d10da --- /dev/null +++ b/packages/backend-plugin-api/src/wiring/constants.ts @@ -0,0 +1,28 @@ +/* + * Copyright 2025 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * The pattern that IDs must match. + * + * @remarks + * ids must only contain the letters `a` through `z` and digits, in groups separated by + * dashes. Additionally, the very first character of each such group + * must be a letter, not a digit + * + * @public + */ +export const ID_PATTERN = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/i; +export const ID_PATTERN_OLD = /^[a-z][a-z0-9]*(?:[-_][a-z0-9]+)*$/i; diff --git a/packages/backend-plugin-api/src/wiring/createBackendModule.ts b/packages/backend-plugin-api/src/wiring/createBackendModule.ts index 9d064d3b0d..f65e11acae 100644 --- a/packages/backend-plugin-api/src/wiring/createBackendModule.ts +++ b/packages/backend-plugin-api/src/wiring/createBackendModule.ts @@ -14,8 +14,8 @@ * limitations under the License. */ -import { CONFIG_KEY_PART_PATTERN } from '@backstage/config'; import { BackendFeature } from '../types'; +import { ID_PATTERN, ID_PATTERN_OLD } from './constants'; import { BackendModuleRegistrationPoints, InternalBackendModuleRegistration, @@ -56,9 +56,14 @@ export function createBackendModule( options: CreateBackendModuleOptions, ): BackendFeature { function getRegistrations() { - if (!CONFIG_KEY_PART_PATTERN.test(options.moduleId)) { + if (!ID_PATTERN.test(options.moduleId)) { + console.warn( + `WARNING: The moduleId '${options.moduleId}' for plugin '${options.pluginId}', will be invalid soon please must match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, + ); + } + if (!ID_PATTERN_OLD.test(options.moduleId)) { throw new Error( - `Invalid moduleId '${options.moduleId}' for plugin '${options.pluginId}', must match the pattern ${CONFIG_KEY_PART_PATTERN} (letters, digits, dashes, and underscores only, starting with a letter)`, + `Invalid moduleId '${options.moduleId}' for plugin '${options.pluginId}', must match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, ); } diff --git a/packages/backend-plugin-api/src/wiring/createBackendPlugin.ts b/packages/backend-plugin-api/src/wiring/createBackendPlugin.ts index e4d32197ff..d2aa633620 100644 --- a/packages/backend-plugin-api/src/wiring/createBackendPlugin.ts +++ b/packages/backend-plugin-api/src/wiring/createBackendPlugin.ts @@ -14,13 +14,13 @@ * limitations under the License. */ -import { CONFIG_KEY_PART_PATTERN } from '@backstage/config'; import { BackendFeature } from '../types'; import { BackendPluginRegistrationPoints, InternalBackendPluginRegistration, InternalBackendRegistrations, } from './types'; +import { ID_PATTERN, ID_PATTERN_OLD } from './constants'; /** * The configuration options passed to {@link createBackendPlugin}. @@ -50,9 +50,14 @@ export function createBackendPlugin( options: CreateBackendPluginOptions, ): BackendFeature { function getRegistrations() { - if (!CONFIG_KEY_PART_PATTERN.test(options.pluginId)) { + if (!ID_PATTERN.test(options.pluginId)) { + console.warn( + `WARNING: The pluginId '${options.pluginId}' will be invalid soon please must match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, + ); + } + if (!ID_PATTERN_OLD.test(options.pluginId)) { throw new Error( - `Invalid pluginId '${options.pluginId}', must match the pattern ${CONFIG_KEY_PART_PATTERN} (letters, digits, dashes, and underscores only, starting with a letter)`, + `Invalid pluginId '${options.pluginId}', must match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, ); } From 9a16824fdbb32f6c1c90234e291487fca7b9c79f Mon Sep 17 00:00:00 2001 From: Juan Pablo Garcia Ripa Date: Thu, 25 Sep 2025 20:34:04 +0200 Subject: [PATCH 031/107] fix: error messages on tests Signed-off-by: Juan Pablo Garcia Ripa --- .../backend-app-api/src/wiring/BackendInitializer.test.ts | 7 ++++--- packages/config-loader/src/sources/EnvConfigSource.ts | 5 +---- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/backend-app-api/src/wiring/BackendInitializer.test.ts b/packages/backend-app-api/src/wiring/BackendInitializer.test.ts index 7be989a0ea..79f0f36540 100644 --- a/packages/backend-app-api/src/wiring/BackendInitializer.test.ts +++ b/packages/backend-app-api/src/wiring/BackendInitializer.test.ts @@ -27,7 +27,8 @@ import { import { BackendInitializer } from './BackendInitializer'; import { mockServices } from '@backstage/backend-test-utils'; import { BackendStartupError } from './BackendStartupError'; -import { CONFIG_KEY_PART_PATTERN } from '@backstage/config'; + +const ID_PATTERN = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/i; const baseFactories = [ mockServices.rootLifecycle.factory(), @@ -1026,7 +1027,7 @@ describe('BackendInitializer', () => { }), ); await expect(init.start()).rejects.toThrow( - `Invalid pluginId 'test:invalid&id', must match the pattern ${CONFIG_KEY_PART_PATTERN} (letters, digits, dashes, and underscores only, starting with a letter)`, + `Invalid pluginId 'test:invalid&id', must match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, ); }); @@ -1056,7 +1057,7 @@ describe('BackendInitializer', () => { }), ); await expect(init.start()).rejects.toThrow( - `Invalid moduleId 'invalid:module&id' for plugin 'test', must match the pattern ${CONFIG_KEY_PART_PATTERN} (letters, digits, dashes, and underscores only, starting with a letter)`, + `Invalid moduleId 'invalid:module&id' for plugin 'test', must match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, ); }); diff --git a/packages/config-loader/src/sources/EnvConfigSource.ts b/packages/config-loader/src/sources/EnvConfigSource.ts index 988110b370..ffb615754f 100644 --- a/packages/config-loader/src/sources/EnvConfigSource.ts +++ b/packages/config-loader/src/sources/EnvConfigSource.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { AppConfig } from '@backstage/config'; +import { AppConfig, CONFIG_KEY_PART_PATTERN } from '@backstage/config'; import { assertError } from '@backstage/errors'; import { JsonObject } from '@backstage/types'; import { AsyncConfigSourceGenerator, ConfigSource } from './types'; @@ -84,9 +84,6 @@ export class EnvConfigSource implements ConfigSource { const ENV_PREFIX = 'APP_CONFIG_'; -// Update the same pattern in config package if this is changed -const CONFIG_KEY_PART_PATTERN = /^[a-z][a-z0-9]*(?:[-_:][a-z0-9]+)*$/i; - /** * Read runtime configuration from the environment. * From 7d15a665c20e4693e0f3ed238a3853f9a57cbb05 Mon Sep 17 00:00:00 2001 From: Juan Pablo Garcia Ripa Date: Tue, 21 Oct 2025 17:18:30 +0200 Subject: [PATCH 032/107] fix: bring back the colon to the regex Signed-off-by: Juan Pablo Garcia Ripa --- packages/config/src/constants.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/config/src/constants.ts b/packages/config/src/constants.ts index acd5c50961..35a1d3652b 100644 --- a/packages/config/src/constants.ts +++ b/packages/config/src/constants.ts @@ -19,9 +19,9 @@ * * @remarks * keys must only contain the letters `a` through `z` and digits, in groups separated by - * dashes or underscores. Additionally, the very first character of each such group + * dashes or underscores and colon. Additionally, the very first character of each such group * must be a letter, not a digit * * @public */ -export const CONFIG_KEY_PART_PATTERN = /^[a-z][a-z0-9]*(?:[-_][a-z0-9]+)*$/i; +export const CONFIG_KEY_PART_PATTERN = /^[a-z][a-z0-9]*(?:[-_:][a-z0-9]+)*$/i; From 26880203adcc47d8d9a97249b83c811d7d962c2f Mon Sep 17 00:00:00 2001 From: Juan Pablo Garcia Ripa Date: Fri, 21 Nov 2025 13:17:24 +0100 Subject: [PATCH 033/107] Apply suggestion from @freben MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Fredrik Adelöw Signed-off-by: Juan Pablo Garcia Ripa --- packages/backend-plugin-api/src/wiring/createBackendPlugin.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend-plugin-api/src/wiring/createBackendPlugin.ts b/packages/backend-plugin-api/src/wiring/createBackendPlugin.ts index d2aa633620..0116f885d1 100644 --- a/packages/backend-plugin-api/src/wiring/createBackendPlugin.ts +++ b/packages/backend-plugin-api/src/wiring/createBackendPlugin.ts @@ -52,7 +52,7 @@ export function createBackendPlugin( function getRegistrations() { if (!ID_PATTERN.test(options.pluginId)) { console.warn( - `WARNING: The pluginId '${options.pluginId}' will be invalid soon please must match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, + `WARNING: The pluginId '${options.pluginId}' will be invalid soon, please change it to match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, ); } if (!ID_PATTERN_OLD.test(options.pluginId)) { From 6f8636f3de5270569c93f1602e0ac757fc5b4dc7 Mon Sep 17 00:00:00 2001 From: Juan Pablo Garcia Ripa Date: Thu, 27 Nov 2025 23:53:05 +0100 Subject: [PATCH 034/107] fix: remove unnecessary changes, and clarify the pattern comments Signed-off-by: Juan Pablo Garcia Ripa --- packages/backend-plugin-api/src/wiring/constants.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend-plugin-api/src/wiring/constants.ts b/packages/backend-plugin-api/src/wiring/constants.ts index b5463d10da..8527802b99 100644 --- a/packages/backend-plugin-api/src/wiring/constants.ts +++ b/packages/backend-plugin-api/src/wiring/constants.ts @@ -19,7 +19,7 @@ * * @remarks * ids must only contain the letters `a` through `z` and digits, in groups separated by - * dashes. Additionally, the very first character of each such group + * dashes. Additionally, the very first character of the first group * must be a letter, not a digit * * @public From 5d49075e1f27a05979a3ba109a684d1a8c19c548 Mon Sep 17 00:00:00 2001 From: Juan Pablo Garcia Ripa Date: Sun, 25 Jan 2026 13:55:42 +0100 Subject: [PATCH 035/107] revert config packages changes Signed-off-by: Juan Pablo Garcia Ripa --- .../src/sources/EnvConfigSource.ts | 5 +++- packages/config/report.api.md | 3 --- packages/config/src/constants.ts | 27 ------------------- packages/config/src/index.ts | 1 - packages/config/src/reader.ts | 3 ++- 5 files changed, 6 insertions(+), 33 deletions(-) delete mode 100644 packages/config/src/constants.ts diff --git a/packages/config-loader/src/sources/EnvConfigSource.ts b/packages/config-loader/src/sources/EnvConfigSource.ts index ffb615754f..988110b370 100644 --- a/packages/config-loader/src/sources/EnvConfigSource.ts +++ b/packages/config-loader/src/sources/EnvConfigSource.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { AppConfig, CONFIG_KEY_PART_PATTERN } from '@backstage/config'; +import { AppConfig } from '@backstage/config'; import { assertError } from '@backstage/errors'; import { JsonObject } from '@backstage/types'; import { AsyncConfigSourceGenerator, ConfigSource } from './types'; @@ -84,6 +84,9 @@ export class EnvConfigSource implements ConfigSource { const ENV_PREFIX = 'APP_CONFIG_'; +// Update the same pattern in config package if this is changed +const CONFIG_KEY_PART_PATTERN = /^[a-z][a-z0-9]*(?:[-_:][a-z0-9]+)*$/i; + /** * Read runtime configuration from the environment. * diff --git a/packages/config/report.api.md b/packages/config/report.api.md index 2963960973..94c4652b44 100644 --- a/packages/config/report.api.md +++ b/packages/config/report.api.md @@ -43,9 +43,6 @@ export type Config = { getOptionalStringArray(key: string): string[] | undefined; }; -// @public -export const CONFIG_KEY_PART_PATTERN: RegExp; - // @public export class ConfigReader implements Config { constructor( diff --git a/packages/config/src/constants.ts b/packages/config/src/constants.ts deleted file mode 100644 index 35a1d3652b..0000000000 --- a/packages/config/src/constants.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2025 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * The pattern that config keys must match. - * - * @remarks - * keys must only contain the letters `a` through `z` and digits, in groups separated by - * dashes or underscores and colon. Additionally, the very first character of each such group - * must be a letter, not a digit - * - * @public - */ -export const CONFIG_KEY_PART_PATTERN = /^[a-z][a-z0-9]*(?:[-_:][a-z0-9]+)*$/i; diff --git a/packages/config/src/index.ts b/packages/config/src/index.ts index 2f3ade0189..c6254e97ba 100644 --- a/packages/config/src/index.ts +++ b/packages/config/src/index.ts @@ -29,4 +29,3 @@ export type { export { readDurationFromConfig } from './readDurationFromConfig'; export { ConfigReader } from './reader'; export type { AppConfig, Config } from './types'; -export { CONFIG_KEY_PART_PATTERN } from './constants'; diff --git a/packages/config/src/reader.ts b/packages/config/src/reader.ts index 18f010daac..8186ee8faa 100644 --- a/packages/config/src/reader.ts +++ b/packages/config/src/reader.ts @@ -17,7 +17,8 @@ import { JsonObject, JsonValue } from '@backstage/types'; import { AppConfig, Config } from './types'; -import { CONFIG_KEY_PART_PATTERN } from './constants'; +// Update the same pattern in config-loader package if this is changed +const CONFIG_KEY_PART_PATTERN = /^[a-z][a-z0-9]*(?:[-_:][a-z0-9]+)*$/i; function isObject(value: JsonValue | undefined): value is JsonObject { return typeof value === 'object' && value !== null && !Array.isArray(value); From bb9b471bd342e12790bf1aa3756b579484ff5e91 Mon Sep 17 00:00:00 2001 From: Juan Pablo Garcia Ripa Date: Sun, 25 Jan 2026 16:55:44 +0100 Subject: [PATCH 036/107] add plugin id format warning on frontend framework Signed-off-by: Juan Pablo Garcia Ripa --- .changeset/odd-lemons-occur.md | 5 ++++ .changeset/salty-frogs-cry.md | 5 ++++ ...y-sites-cheer.md => slow-numbers-study.md} | 3 -- .../architecture/08-naming-patterns.md | 8 ++--- .../src/wiring/constants.ts | 3 ++ .../src/wiring/createBackendModule.ts | 22 +++++++------- .../src/wiring/createBackendPlugin.ts | 22 +++++++------- .../src/wiring/constants.ts | 30 +++++++++++++++++++ .../src/wiring/createFrontendPlugin.ts | 8 +++++ 9 files changed, 77 insertions(+), 29 deletions(-) create mode 100644 .changeset/odd-lemons-occur.md create mode 100644 .changeset/salty-frogs-cry.md rename .changeset/{itchy-sites-cheer.md => slow-numbers-study.md} (57%) create mode 100644 packages/frontend-plugin-api/src/wiring/constants.ts diff --git a/.changeset/odd-lemons-occur.md b/.changeset/odd-lemons-occur.md new file mode 100644 index 0000000000..8f97ad0bd8 --- /dev/null +++ b/.changeset/odd-lemons-occur.md @@ -0,0 +1,5 @@ +--- +'@backstage/frontend-plugin-api': minor +--- + +new deprecation warninf will be throw by the framework pluginId should have letters, digits,and dashes, starting with a letter diff --git a/.changeset/salty-frogs-cry.md b/.changeset/salty-frogs-cry.md new file mode 100644 index 0000000000..b0f3a66ffa --- /dev/null +++ b/.changeset/salty-frogs-cry.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-app-api': patch +--- + +add test for new pluginId and moduleId format validations diff --git a/.changeset/itchy-sites-cheer.md b/.changeset/slow-numbers-study.md similarity index 57% rename from .changeset/itchy-sites-cheer.md rename to .changeset/slow-numbers-study.md index 54f5f2fadf..e53009bffa 100644 --- a/.changeset/itchy-sites-cheer.md +++ b/.changeset/slow-numbers-study.md @@ -1,8 +1,5 @@ --- '@backstage/backend-plugin-api': minor -'@backstage/backend-app-api': minor -'@backstage/config-loader': patch -'@backstage/config': patch --- The backend will now throw an error if a plugin or a module doesn't have a valid ID diff --git a/docs/backend-system/architecture/08-naming-patterns.md b/docs/backend-system/architecture/08-naming-patterns.md index b06d52c287..d073f3382c 100644 --- a/docs/backend-system/architecture/08-naming-patterns.md +++ b/docs/backend-system/architecture/08-naming-patterns.md @@ -11,10 +11,10 @@ As a rule, all names should be camel case, with the exceptions of plugin and mod ### Plugins -| Description | Pattern | Examples | Notes | -| ----------- | ----------------- | ------------------------------------- | -------------------------------------------------- | -| export | `Plugin` | `catalogPlugin`, `userSettingsPlugin` | | -| ID | `''` | `'catalog'`, `'user-settings'` | letters, digits,and dashes, starting with a letter | +| Description | Pattern | Examples | Notes | +| ----------- | ----------------- | ------------------------------------- | --------------------------------------------------- | +| export | `Plugin` | `catalogPlugin`, `userSettingsPlugin` | | +| ID | `''` | `'catalog'`, `'user-settings'` | letters, digits, and dashes, starting with a letter | Example: diff --git a/packages/backend-plugin-api/src/wiring/constants.ts b/packages/backend-plugin-api/src/wiring/constants.ts index 8527802b99..48f8e5a5c7 100644 --- a/packages/backend-plugin-api/src/wiring/constants.ts +++ b/packages/backend-plugin-api/src/wiring/constants.ts @@ -14,6 +14,9 @@ * limitations under the License. */ +// NOTE: changing any of these constants need to be reflected in +// @backstage/frontend-plugin-api/src/wiring/constants.ts as well + /** * The pattern that IDs must match. * diff --git a/packages/backend-plugin-api/src/wiring/createBackendModule.ts b/packages/backend-plugin-api/src/wiring/createBackendModule.ts index f65e11acae..6dcc88eb3f 100644 --- a/packages/backend-plugin-api/src/wiring/createBackendModule.ts +++ b/packages/backend-plugin-api/src/wiring/createBackendModule.ts @@ -55,18 +55,18 @@ export interface CreateBackendModuleOptions { export function createBackendModule( options: CreateBackendModuleOptions, ): BackendFeature { - function getRegistrations() { - if (!ID_PATTERN.test(options.moduleId)) { - console.warn( - `WARNING: The moduleId '${options.moduleId}' for plugin '${options.pluginId}', will be invalid soon please must match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, - ); - } - if (!ID_PATTERN_OLD.test(options.moduleId)) { - throw new Error( - `Invalid moduleId '${options.moduleId}' for plugin '${options.pluginId}', must match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, - ); - } + if (!ID_PATTERN.test(options.moduleId)) { + console.warn( + `WARNING: The moduleId '${options.moduleId}' for plugin '${options.pluginId}', will be invalid soon, please change it to match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, + ); + } + if (!ID_PATTERN_OLD.test(options.moduleId)) { + throw new Error( + `Invalid moduleId '${options.moduleId}' for plugin '${options.pluginId}', must match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, + ); + } + function getRegistrations() { const extensionPoints: InternalBackendPluginRegistration['extensionPoints'] = []; let init: InternalBackendModuleRegistration['init'] | undefined = undefined; diff --git a/packages/backend-plugin-api/src/wiring/createBackendPlugin.ts b/packages/backend-plugin-api/src/wiring/createBackendPlugin.ts index 0116f885d1..1a3d3d4a68 100644 --- a/packages/backend-plugin-api/src/wiring/createBackendPlugin.ts +++ b/packages/backend-plugin-api/src/wiring/createBackendPlugin.ts @@ -49,18 +49,18 @@ export interface CreateBackendPluginOptions { export function createBackendPlugin( options: CreateBackendPluginOptions, ): BackendFeature { - function getRegistrations() { - if (!ID_PATTERN.test(options.pluginId)) { - console.warn( - `WARNING: The pluginId '${options.pluginId}' will be invalid soon, please change it to match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, - ); - } - if (!ID_PATTERN_OLD.test(options.pluginId)) { - throw new Error( - `Invalid pluginId '${options.pluginId}', must match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, - ); - } + if (!ID_PATTERN.test(options.pluginId)) { + console.warn( + `WARNING: The pluginId '${options.pluginId}' will be invalid soon, please change it to match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, + ); + } + if (!ID_PATTERN_OLD.test(options.pluginId)) { + throw new Error( + `Invalid pluginId '${options.pluginId}', must match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, + ); + } + function getRegistrations() { const extensionPoints: InternalBackendPluginRegistration['extensionPoints'] = []; let init: InternalBackendPluginRegistration['init'] | undefined = undefined; diff --git a/packages/frontend-plugin-api/src/wiring/constants.ts b/packages/frontend-plugin-api/src/wiring/constants.ts new file mode 100644 index 0000000000..5300cfc27f --- /dev/null +++ b/packages/frontend-plugin-api/src/wiring/constants.ts @@ -0,0 +1,30 @@ +/* + * Copyright 2025 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// NOTE: changing any of these constants need to be reflected in +// @backstage/backend-plugin-api/src/wiring/constants.ts as well + +/** + * The pattern that IDs must match. + * + * @remarks + * ids must only contain the letters `a` through `z` and digits, in groups separated by + * dashes. Additionally, the very first character of the first group + * must be a letter, not a digit + * + * @public + */ +export const ID_PATTERN = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/i; diff --git a/packages/frontend-plugin-api/src/wiring/createFrontendPlugin.ts b/packages/frontend-plugin-api/src/wiring/createFrontendPlugin.ts index 68b5826baa..ebd4142db3 100644 --- a/packages/frontend-plugin-api/src/wiring/createFrontendPlugin.ts +++ b/packages/frontend-plugin-api/src/wiring/createFrontendPlugin.ts @@ -30,6 +30,7 @@ import { FeatureFlagConfig } from './types'; import { MakeSortedExtensionsMap } from './MakeSortedExtensionsMap'; import { JsonObject } from '@backstage/types'; import { RouteRef, SubRouteRef, ExternalRouteRef } from '../routing'; +import { ID_PATTERN } from './constants'; /** * Information about the plugin. @@ -199,6 +200,13 @@ export function createFrontendPlugin< > { const pluginId = options.pluginId; + if (!ID_PATTERN.test(pluginId)) { + // eslint-disable-next-line no-console + console.warn( + `WARNING: The pluginId '${pluginId}' will be invalid soon, please change it to match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, + ); + } + const extensions = new Array>(); const extensionDefinitionsById = new Map< string, From bd7d15dd7ee86715d12546a28a1655cb1480670b Mon Sep 17 00:00:00 2001 From: Juan Pablo Garcia Ripa Date: Mon, 26 Jan 2026 00:04:49 +0100 Subject: [PATCH 037/107] add some test for invalid ids Signed-off-by: Juan Pablo Garcia Ripa --- .../src/wiring/BackendInitializer.test.ts | 49 ------------------- .../src/wiring/createBackendModule.test.ts | 17 +++++++ .../src/wiring/createBackendPlugin.test.ts | 16 ++++++ .../src/wiring/createFrontendPlugin.test.ts | 11 +++++ 4 files changed, 44 insertions(+), 49 deletions(-) diff --git a/packages/backend-app-api/src/wiring/BackendInitializer.test.ts b/packages/backend-app-api/src/wiring/BackendInitializer.test.ts index 79f0f36540..1c0bf5a0ef 100644 --- a/packages/backend-app-api/src/wiring/BackendInitializer.test.ts +++ b/packages/backend-app-api/src/wiring/BackendInitializer.test.ts @@ -28,8 +28,6 @@ import { BackendInitializer } from './BackendInitializer'; import { mockServices } from '@backstage/backend-test-utils'; import { BackendStartupError } from './BackendStartupError'; -const ID_PATTERN = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/i; - const baseFactories = [ mockServices.rootLifecycle.factory(), mockServices.lifecycle.factory(), @@ -1013,53 +1011,6 @@ describe('BackendInitializer', () => { "Service or extension point dependencies of module 'test-mod' for plugin 'test' are missing for the following ref(s): serviceRef{a}", ); }); - it('should reject plugins with invalid pluginId', async () => { - const init = new BackendInitializer(baseFactories); - init.add( - createBackendPlugin({ - pluginId: 'test:invalid&id', - register(reg) { - reg.registerInit({ - deps: {}, - async init() {}, - }); - }, - }), - ); - await expect(init.start()).rejects.toThrow( - `Invalid pluginId 'test:invalid&id', must match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, - ); - }); - - it('should reject modules with invalid moduleId', async () => { - const init = new BackendInitializer(baseFactories); - init.add( - createBackendPlugin({ - pluginId: 'test', - register(reg) { - reg.registerInit({ - deps: {}, - async init() {}, - }); - }, - }), - ); - init.add( - createBackendModule({ - pluginId: 'test', - moduleId: 'invalid:module&id', - register(reg) { - reg.registerInit({ - deps: {}, - async init() {}, - }); - }, - }), - ); - await expect(init.start()).rejects.toThrow( - `Invalid moduleId 'invalid:module&id' for plugin 'test', must match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, - ); - }); it('should properly load double-default CJS modules', async () => { expect.assertions(3); diff --git a/packages/backend-plugin-api/src/wiring/createBackendModule.test.ts b/packages/backend-plugin-api/src/wiring/createBackendModule.test.ts index 4d927c86f6..20b3599148 100644 --- a/packages/backend-plugin-api/src/wiring/createBackendModule.test.ts +++ b/packages/backend-plugin-api/src/wiring/createBackendModule.test.ts @@ -15,6 +15,7 @@ */ import { createServiceRef } from '../services'; +import { ID_PATTERN } from './constants'; import { createBackendModule } from './createBackendModule'; import { createExtensionPoint } from './createExtensionPoint'; import { InternalBackendRegistrations } from './types'; @@ -77,4 +78,20 @@ describe('createBackendModule', () => { expect(plugin.$$type).toEqual('@backstage/BackendFeature'); }); + it('should reject modules with invalid moduleId', async () => { + expect(() => + createBackendModule({ + pluginId: 'test', + moduleId: 'invalid:module&id', + register(reg) { + reg.registerInit({ + deps: {}, + async init() {}, + }); + }, + }), + ).toThrow( + `Invalid moduleId 'invalid:module&id' for plugin 'test', must match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, + ); + }); }); diff --git a/packages/backend-plugin-api/src/wiring/createBackendPlugin.test.ts b/packages/backend-plugin-api/src/wiring/createBackendPlugin.test.ts index 5acd8e46d7..4759bd2754 100644 --- a/packages/backend-plugin-api/src/wiring/createBackendPlugin.test.ts +++ b/packages/backend-plugin-api/src/wiring/createBackendPlugin.test.ts @@ -15,6 +15,7 @@ */ import { createServiceRef } from '../services'; +import { ID_PATTERN } from './constants'; import { createBackendPlugin } from './createBackendPlugin'; import { createExtensionPoint } from './createExtensionPoint'; import { InternalBackendRegistrations } from './types'; @@ -90,4 +91,19 @@ describe('createBackendPlugin', () => { expect(plugin.$$type).toEqual('@backstage/BackendFeature'); }); + it('should reject plugins with invalid pluginId', async () => { + expect(() => + createBackendPlugin({ + pluginId: 'test:invalid&id', + register(reg) { + reg.registerInit({ + deps: {}, + async init() {}, + }); + }, + }), + ).toThrow( + `Invalid pluginId 'test:invalid&id', must match the pattern ${ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`, + ); + }); }); diff --git a/packages/frontend-plugin-api/src/wiring/createFrontendPlugin.test.ts b/packages/frontend-plugin-api/src/wiring/createFrontendPlugin.test.ts index a3226721a1..1e1f7e1a84 100644 --- a/packages/frontend-plugin-api/src/wiring/createFrontendPlugin.test.ts +++ b/packages/frontend-plugin-api/src/wiring/createFrontendPlugin.test.ts @@ -142,6 +142,17 @@ describe('createFrontendPlugin', () => { expect(String(plugin)).toBe('Plugin{id=test}'); }); + it('should warn about invalid plugin IDs', () => { + const consoleWarn = jest + .spyOn(console, 'warn') + .mockImplementation(() => {}); + createFrontendPlugin({ pluginId: 'invalid&id' }); + expect(consoleWarn).toHaveBeenCalledWith( + expect.stringContaining("The pluginId 'invalid&id' will be invalid soon"), + ); + consoleWarn.mockRestore(); + }); + it('should create a plugin with extension instances', async () => { const plugin = createFrontendPlugin({ pluginId: 'test', From 71aa49196bd6c6822b1b3db3cb786ad7bc1f08cb Mon Sep 17 00:00:00 2001 From: Juan Pablo Garcia Ripa Date: Mon, 26 Jan 2026 00:11:33 +0100 Subject: [PATCH 038/107] spelling fixes Signed-off-by: Juan Pablo Garcia Ripa --- .changeset/odd-lemons-occur.md | 2 +- .changeset/salty-frogs-cry.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/odd-lemons-occur.md b/.changeset/odd-lemons-occur.md index 8f97ad0bd8..fbbdc760f6 100644 --- a/.changeset/odd-lemons-occur.md +++ b/.changeset/odd-lemons-occur.md @@ -2,4 +2,4 @@ '@backstage/frontend-plugin-api': minor --- -new deprecation warninf will be throw by the framework pluginId should have letters, digits,and dashes, starting with a letter +new deprecation warning will be throw by the framework `pluginId` should have letters, digits,and dashes, starting with a letter diff --git a/.changeset/salty-frogs-cry.md b/.changeset/salty-frogs-cry.md index b0f3a66ffa..bd3c187ff5 100644 --- a/.changeset/salty-frogs-cry.md +++ b/.changeset/salty-frogs-cry.md @@ -2,4 +2,4 @@ '@backstage/backend-app-api': patch --- -add test for new pluginId and moduleId format validations +Add test for new `pluginId` and `moduleId` format validations From 8ee1f4b6dd39086f14cd9ce793c39a891901c630 Mon Sep 17 00:00:00 2001 From: Juan Pablo Garcia Ripa Date: Mon, 26 Jan 2026 00:13:54 +0100 Subject: [PATCH 039/107] changes from @backstage/backend-app-api removed Signed-off-by: Juan Pablo Garcia Ripa --- .changeset/salty-frogs-cry.md | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 .changeset/salty-frogs-cry.md diff --git a/.changeset/salty-frogs-cry.md b/.changeset/salty-frogs-cry.md deleted file mode 100644 index bd3c187ff5..0000000000 --- a/.changeset/salty-frogs-cry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-app-api': patch ---- - -Add test for new `pluginId` and `moduleId` format validations From fcaea9208d336288fa8baee89bdeabcf4daae522 Mon Sep 17 00:00:00 2001 From: Juan Pablo Garcia Ripa Date: Mon, 26 Jan 2026 09:53:13 +0100 Subject: [PATCH 040/107] Update changes message Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Juan Pablo Garcia Ripa --- .changeset/odd-lemons-occur.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/odd-lemons-occur.md b/.changeset/odd-lemons-occur.md index fbbdc760f6..2b536bf012 100644 --- a/.changeset/odd-lemons-occur.md +++ b/.changeset/odd-lemons-occur.md @@ -2,4 +2,4 @@ '@backstage/frontend-plugin-api': minor --- -new deprecation warning will be throw by the framework `pluginId` should have letters, digits,and dashes, starting with a letter +new deprecation warning will be thrown by the framework `pluginId` should have letters, digits, and dashes, starting with a letter From feef8d91c7bd81995d2594195ff909991d9c49d4 Mon Sep 17 00:00:00 2001 From: "binary.baum" Date: Tue, 2 Dec 2025 13:26:31 +0100 Subject: [PATCH 041/107] set the default search type to all instead of software-catalog in the search page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: binary.baum Signed-off-by: Vödisch, Alexander --- .changeset/three-rooms-enjoy.md | 5 +++++ plugins/search/src/alpha.tsx | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 .changeset/three-rooms-enjoy.md diff --git a/.changeset/three-rooms-enjoy.md b/.changeset/three-rooms-enjoy.md new file mode 100644 index 0000000000..2679de1c7f --- /dev/null +++ b/.changeset/three-rooms-enjoy.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search': major +--- + +Set the default search type to `All` instead of `Software Catalog` in the search page. diff --git a/plugins/search/src/alpha.tsx b/plugins/search/src/alpha.tsx index 2efe9978e0..55382a4814 100644 --- a/plugins/search/src/alpha.tsx +++ b/plugins/search/src/alpha.tsx @@ -152,7 +152,6 @@ export const searchPage = PageBlueprint.makeWithOverrides({ Date: Tue, 2 Dec 2025 13:31:20 +0100 Subject: [PATCH 042/107] set the default search type to all instead of software-catalog in the search page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: binary.baum Signed-off-by: Vödisch, Alexander --- .changeset/three-rooms-enjoy.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/three-rooms-enjoy.md b/.changeset/three-rooms-enjoy.md index 2679de1c7f..d47c369ff9 100644 --- a/.changeset/three-rooms-enjoy.md +++ b/.changeset/three-rooms-enjoy.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-search': major +'@backstage/plugin-search': minor --- Set the default search type to `All` instead of `Software Catalog` in the search page. From 1da4e0eca2aed1877a1fc345b1d8d7ad71b08e32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=B6disch=2C=20Alexander?= Date: Mon, 26 Jan 2026 09:44:06 +0100 Subject: [PATCH 043/107] feat(search): add configurable default search type via app-config.yaml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Vödisch, Alexander --- .changeset/three-rooms-enjoy.md | 2 +- packages/app/src/components/search/SearchPage.tsx | 5 +++-- plugins/search/README.md | 1 + plugins/search/config.d.ts | 5 +++++ plugins/search/src/alpha.tsx | 5 +++++ 5 files changed, 15 insertions(+), 3 deletions(-) diff --git a/.changeset/three-rooms-enjoy.md b/.changeset/three-rooms-enjoy.md index d47c369ff9..9856aba0e8 100644 --- a/.changeset/three-rooms-enjoy.md +++ b/.changeset/three-rooms-enjoy.md @@ -2,4 +2,4 @@ '@backstage/plugin-search': minor --- -Set the default search type to `All` instead of `Software Catalog` in the search page. +Added support for configuring the default search type in the search page via the `search.defaultType` option in `app-config.yaml`. This applies to both the legacy and new frontend systems. If not set, the default is empty, which means searching for "all" types. diff --git a/packages/app/src/components/search/SearchPage.tsx b/packages/app/src/components/search/SearchPage.tsx index 743a08561c..b83b83bd65 100644 --- a/packages/app/src/components/search/SearchPage.tsx +++ b/packages/app/src/components/search/SearchPage.tsx @@ -22,7 +22,7 @@ import { Page, useSidebarPinState, } from '@backstage/core-components'; -import { useApi } from '@backstage/core-plugin-api'; +import { configApiRef, useApi } from '@backstage/core-plugin-api'; import { CatalogSearchResultListItem } from '@backstage/plugin-catalog'; import { CATALOG_FILTER_EXISTS, @@ -60,6 +60,7 @@ const SearchPage = () => { const { isMobile } = useSidebarPinState(); const { types } = useSearch(); const catalogApi = useApi(catalogApiRef); + const configApi = useApi(configApiRef); return ( @@ -73,7 +74,7 @@ const SearchPage = () => { @@ -152,6 +154,9 @@ export const searchPage = PageBlueprint.makeWithOverrides({ Date: Mon, 26 Jan 2026 19:54:35 +0000 Subject: [PATCH 044/107] chore(deps): update github/codeql-action action to v3.32.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- .github/workflows/sync_snyk-monitor.yml | 2 +- .github/workflows/verify_codeql.yml | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 08f6198757..909678d842 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: 'Upload to code-scanning' - uses: github/codeql-action/upload-sarif@4bdb89f48054571735e3792627da6195c57459e2 # v3.31.10 + uses: github/codeql-action/upload-sarif@439137e1b50c27ba9e2f9befc93e43091b449c34 # v3.32.0 with: sarif_file: results.sarif diff --git a/.github/workflows/sync_snyk-monitor.yml b/.github/workflows/sync_snyk-monitor.yml index 207ad64b49..f3e60a3b79 100644 --- a/.github/workflows/sync_snyk-monitor.yml +++ b/.github/workflows/sync_snyk-monitor.yml @@ -58,6 +58,6 @@ jobs: SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} NODE_OPTIONS: --max-old-space-size=7168 - name: Upload Snyk report - uses: github/codeql-action/upload-sarif@4bdb89f48054571735e3792627da6195c57459e2 # v3.31.10 + uses: github/codeql-action/upload-sarif@439137e1b50c27ba9e2f9befc93e43091b449c34 # v3.32.0 with: sarif_file: snyk.sarif diff --git a/.github/workflows/verify_codeql.yml b/.github/workflows/verify_codeql.yml index 8999824dd6..76a91d0ff3 100644 --- a/.github/workflows/verify_codeql.yml +++ b/.github/workflows/verify_codeql.yml @@ -55,7 +55,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@4bdb89f48054571735e3792627da6195c57459e2 # v3.31.10 + uses: github/codeql-action/init@439137e1b50c27ba9e2f9befc93e43091b449c34 # v3.32.0 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -66,7 +66,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@4bdb89f48054571735e3792627da6195c57459e2 # v3.31.10 + uses: github/codeql-action/autobuild@439137e1b50c27ba9e2f9befc93e43091b449c34 # v3.32.0 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -80,4 +80,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@4bdb89f48054571735e3792627da6195c57459e2 # v3.31.10 + uses: github/codeql-action/analyze@439137e1b50c27ba9e2f9befc93e43091b449c34 # v3.32.0 From 5e70ce80443159146ba4f0af026c5f553d43a86e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 27 Jan 2026 14:50:47 +0000 Subject: [PATCH 045/107] chore(deps): update dependency @docusaurus/tsconfig to v3.9.2 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- microsite/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/microsite/yarn.lock b/microsite/yarn.lock index f27a3b859f..2af0b11572 100644 --- a/microsite/yarn.lock +++ b/microsite/yarn.lock @@ -2650,9 +2650,9 @@ __metadata: linkType: hard "@docusaurus/tsconfig@npm:^3.1.1": - version: 3.5.2 - resolution: "@docusaurus/tsconfig@npm:3.5.2" - checksum: 10/808a17eaf422ae9a948c6558dd1e92d4700b067ead3a63a84049c6845bf94f84e311cd0e4d517047fe9ea057efe393bb22c2d5c92d727d06c9f895e971f2c3ea + version: 3.9.2 + resolution: "@docusaurus/tsconfig@npm:3.9.2" + checksum: 10/8e08e352ab8285d4601822dbd424700a7c875b30dd2eefb087f540e62e5a9f05026368625ce3e89948380f0b232ecd7a52e03ce069fab4de1e6a39dedf324d1b languageName: node linkType: hard From dfa4458cb132087bd2a96f85b3b6fe2b1deb80cd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 27 Jan 2026 14:51:04 +0000 Subject: [PATCH 046/107] chore(deps): update dependency docusaurus-plugin-openapi-docs to v4.6.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- microsite/yarn.lock | 187 ++++++++++++++++++++++++++------------------ 1 file changed, 113 insertions(+), 74 deletions(-) diff --git a/microsite/yarn.lock b/microsite/yarn.lock index f27a3b859f..8d168932ad 100644 --- a/microsite/yarn.lock +++ b/microsite/yarn.lock @@ -3648,28 +3648,27 @@ __metadata: languageName: node linkType: hard -"@redocly/config@npm:^0.20.1": - version: 0.20.3 - resolution: "@redocly/config@npm:0.20.3" - checksum: 10/dd9501c96d6aa7d6cd7d9879d9bbab6c62fced0adbc8ca2ee1cde37a65384e8b09972aad2dd3a3bef1ee48e6a6287b854deb9858b3fd27c8c36fc7aec039a496 +"@redocly/config@npm:^0.22.0": + version: 0.22.2 + resolution: "@redocly/config@npm:0.22.2" + checksum: 10/f4c33b9654a65c5407630bfebe83b46ea18fab3f5d40a0c69d4476ed1bf45cdc5edbad94cdef994e99fba14e27d1adc5ef1205422855604d1852d442518bb447 languageName: node linkType: hard -"@redocly/openapi-core@npm:^1.10.5": - version: 1.27.2 - resolution: "@redocly/openapi-core@npm:1.27.2" +"@redocly/openapi-core@npm:^1.34.3": + version: 1.34.6 + resolution: "@redocly/openapi-core@npm:1.34.6" dependencies: "@redocly/ajv": "npm:^8.11.2" - "@redocly/config": "npm:^0.20.1" + "@redocly/config": "npm:^0.22.0" colorette: "npm:^1.2.0" - https-proxy-agent: "npm:^7.0.4" + https-proxy-agent: "npm:^7.0.5" js-levenshtein: "npm:^1.1.6" js-yaml: "npm:^4.1.0" minimatch: "npm:^5.0.1" - node-fetch: "npm:^2.6.1" pluralize: "npm:^8.0.0" yaml-ast-parser: "npm:0.0.43" - checksum: 10/f23ee5db3ea31fa8eeb4e13644f4a70a1ce875a4a939a2a9f4c79020055a3d0ac32593e9716b8e9b1ab2478d14efa63a755400a798dc955421acd472ffdabbc8 + checksum: 10/d643b9d98c1de604796867bba0cd9ecd7f24773e121fa7f9381d2bde72bb176895a52b9b02856ede874d13c96e1fe8eade592fc63e70b58f271fa57c1e47d195 languageName: node linkType: hard @@ -5114,18 +5113,6 @@ __metadata: languageName: node linkType: hard -"ajv@npm:8.11.0": - version: 8.11.0 - resolution: "ajv@npm:8.11.0" - dependencies: - fast-deep-equal: "npm:^3.1.1" - json-schema-traverse: "npm:^1.0.0" - require-from-string: "npm:^2.0.2" - uri-js: "npm:^4.2.2" - checksum: 10/aa0dfd6cebdedde8e77747e84e7b7c55921930974b8547f54b4156164ff70445819398face32dafda4bd4c61bbc7513d308d4c2bf769f8ea6cb9c8449f9faf54 - languageName: node - linkType: hard - "ajv@npm:^6.12.5": version: 6.12.6 resolution: "ajv@npm:6.12.6" @@ -5138,7 +5125,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^8.0.0, ajv@npm:^8.9.0": +"ajv@npm:^8.0.0, ajv@npm:^8.11.0, ajv@npm:^8.9.0": version: 8.17.1 resolution: "ajv@npm:8.17.1" dependencies: @@ -5371,17 +5358,10 @@ __metadata: languageName: node linkType: hard -"async@npm:3.2.4": - version: 3.2.4 - resolution: "async@npm:3.2.4" - checksum: 10/bebb5dc2258c45b83fa1d3be179ae0eb468e1646a62d443c8d60a45e84041b28fccebe1e2d1f234bfc3dcad44e73dcdbf4ba63d98327c9f6556e3dbd47c2ae8b - languageName: node - linkType: hard - -"at-least-node@npm:^1.0.0": - version: 1.0.0 - resolution: "at-least-node@npm:1.0.0" - checksum: 10/463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e +"async@npm:3.2.6": + version: 3.2.6 + resolution: "async@npm:3.2.6" + checksum: 10/cb6e0561a3c01c4b56a799cc8bab6ea5fef45f069ab32500b6e19508db270ef2dffa55e5aed5865c5526e9907b1f8be61b27530823b411ffafb5e1538c86c368 languageName: node linkType: hard @@ -6177,7 +6157,7 @@ __metadata: languageName: node linkType: hard -"clsx@npm:^2.0.0": +"clsx@npm:^2.0.0, clsx@npm:^2.1.1": version: 2.1.1 resolution: "clsx@npm:2.1.1" checksum: 10/cdfb57fa6c7649bbff98d9028c2f0de2f91c86f551179541cf784b1cfdc1562dcb951955f46d54d930a3879931a980e32a46b598acaea274728dbe068deca919 @@ -7136,30 +7116,30 @@ __metadata: linkType: hard "docusaurus-plugin-openapi-docs@npm:^4.3.0": - version: 4.5.1 - resolution: "docusaurus-plugin-openapi-docs@npm:4.5.1" + version: 4.6.0 + resolution: "docusaurus-plugin-openapi-docs@npm:4.6.0" dependencies: "@apidevtools/json-schema-ref-parser": "npm:^11.5.4" - "@redocly/openapi-core": "npm:^1.10.5" + "@redocly/openapi-core": "npm:^1.34.3" allof-merge: "npm:^0.6.6" chalk: "npm:^4.1.2" - clsx: "npm:^1.1.1" - fs-extra: "npm:^9.0.1" + clsx: "npm:^2.1.1" + fs-extra: "npm:^11.3.0" json-pointer: "npm:^0.6.2" json5: "npm:^2.2.3" - lodash: "npm:^4.17.20" + lodash: "npm:^4.17.21" mustache: "npm:^4.2.0" - openapi-to-postmanv2: "npm:^4.21.0" - postman-collection: "npm:^4.4.0" - slugify: "npm:^1.6.5" + openapi-to-postmanv2: "npm:^5.0.0" + postman-collection: "npm:^5.0.2" + slugify: "npm:^1.6.6" swagger2openapi: "npm:^7.0.8" - xml-formatter: "npm:^2.6.1" + xml-formatter: "npm:^3.6.6" peerDependencies: "@docusaurus/plugin-content-docs": ^3.5.0 "@docusaurus/utils": ^3.5.0 "@docusaurus/utils-validation": ^3.5.0 react: ^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10/496ce49d494f06803a61eaa6c6810782668269574c12a1a55315742974884a7ffd6e2c75875d8fd9909611bdccaa4de42419e0debbf47def0db6974617b9e5ba + checksum: 10/5b547fb8ab2770990442eb5a0e20765e3286ceeff2590250d89d2dd798cbe600dbd3fb8a66632cb1ff76930dedc24f2cda2dc8b4c2aa22c74512b81ae57fb71a languageName: node linkType: hard @@ -8053,26 +8033,14 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^11.1.1, fs-extra@npm:^11.2.0": - version: 11.2.0 - resolution: "fs-extra@npm:11.2.0" +"fs-extra@npm:^11.1.1, fs-extra@npm:^11.2.0, fs-extra@npm:^11.3.0": + version: 11.3.3 + resolution: "fs-extra@npm:11.3.3" dependencies: graceful-fs: "npm:^4.2.0" jsonfile: "npm:^6.0.1" universalify: "npm:^2.0.0" - checksum: 10/0579bf6726a4cd054d4aa308f10b483f52478bb16284f32cf60b4ce0542063d551fca1a08a2af365e35db21a3fa5a06cf2a6ed614004b4368982bc754cb816b3 - languageName: node - linkType: hard - -"fs-extra@npm:^9.0.1": - version: 9.1.0 - resolution: "fs-extra@npm:9.1.0" - dependencies: - at-least-node: "npm:^1.0.0" - graceful-fs: "npm:^4.2.0" - jsonfile: "npm:^6.0.1" - universalify: "npm:^2.0.0" - checksum: 10/08600da1b49552ed23dfac598c8fc909c66776dd130fea54fbcad22e330f7fcc13488bb995f6bc9ce5651aa35b65702faf616fe76370ee56f1aade55da982dca + checksum: 10/daeaefafbebe8fa6efd2fb96fc926f2c952be5877811f00a6794f0d64e0128e3d0d93368cd328f8f063b45deacf385c40e3d931aa46014245431cd2f4f89c67a languageName: node linkType: hard @@ -8991,7 +8959,7 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^7.0.4": +"https-proxy-agent@npm:^7.0.5": version: 7.0.6 resolution: "https-proxy-agent@npm:7.0.6" dependencies: @@ -11532,6 +11500,15 @@ __metadata: languageName: node linkType: hard +"mime-format@npm:2.0.2": + version: 2.0.2 + resolution: "mime-format@npm:2.0.2" + dependencies: + charset: "npm:^1.0.0" + checksum: 10/8dfcb4310f0fad63b85455314972ad6660f40fa527056e45e633c5956189db44c9c73568d03cb2d68fb12e3fbe88f92ad92ab695e22121c7a37a299b3d4d38cc + languageName: node + linkType: hard + "mime-types@npm:2.1.18": version: 2.1.18 resolution: "mime-types@npm:2.1.18" @@ -11568,6 +11545,15 @@ __metadata: languageName: node linkType: hard +"mime@npm:3.0.0": + version: 3.0.0 + resolution: "mime@npm:3.0.0" + bin: + mime: cli.js + checksum: 10/b2d31580deb58be89adaa1877cbbf152b7604b980fd7ef8f08b9e96bfedf7d605d9c23a8ba62aa12c8580b910cd7c1d27b7331d0f40f7a14e17d5a0bbec3b49f + languageName: node + linkType: hard + "mimic-fn@npm:^2.1.0": version: 2.1.0 resolution: "mimic-fn@npm:2.1.0" @@ -12227,14 +12213,14 @@ __metadata: languageName: node linkType: hard -"openapi-to-postmanv2@npm:^4.21.0": - version: 4.25.0 - resolution: "openapi-to-postmanv2@npm:4.25.0" +"openapi-to-postmanv2@npm:^5.0.0": + version: 5.8.0 + resolution: "openapi-to-postmanv2@npm:5.8.0" dependencies: - ajv: "npm:8.11.0" + ajv: "npm:^8.11.0" ajv-draft-04: "npm:1.0.0" ajv-formats: "npm:2.1.1" - async: "npm:3.2.4" + async: "npm:3.2.6" commander: "npm:2.20.3" graphlib: "npm:2.1.8" js-yaml: "npm:4.1.0" @@ -12245,12 +12231,12 @@ __metadata: oas-resolver-browser: "npm:2.5.6" object-hash: "npm:3.0.0" path-browserify: "npm:1.0.1" - postman-collection: "npm:^4.4.0" + postman-collection: "npm:^5.0.0" swagger2openapi: "npm:7.0.8" yaml: "npm:1.10.2" bin: openapi2postmanv2: bin/openapi2postmanv2.js - checksum: 10/1f4dceab7cc5c3e7dd866c1fe2e6870279792a8a194cc5323cfd1d277457cf4a87354aa9b9c24b8c6ac0a29fe95014b93a824fbc167ff544493507d4714b87e8 + checksum: 10/da324b99a223a9621ae4471c151571d9835c40b706c8c42caaedc70fc79a73c69dc023ba27e373613f585407b855c68ee8d5e3ed530000ab03f39c36b1d644ef languageName: node linkType: hard @@ -13511,6 +13497,25 @@ __metadata: languageName: node linkType: hard +"postman-collection@npm:^5.0.0, postman-collection@npm:^5.0.2": + version: 5.2.0 + resolution: "postman-collection@npm:5.2.0" + dependencies: + "@faker-js/faker": "npm:5.5.3" + file-type: "npm:3.9.0" + http-reasons: "npm:0.1.0" + iconv-lite: "npm:0.6.3" + liquid-json: "npm:0.3.1" + lodash: "npm:4.17.21" + mime: "npm:3.0.0" + mime-format: "npm:2.0.2" + postman-url-encoder: "npm:3.0.8" + semver: "npm:7.7.1" + uuid: "npm:8.3.2" + checksum: 10/7b4feb1c09cd225ad6440488027b9c95329ee7ad3289f96e2d7454c779fc7d19e98157773889ecf72c1a41a695ab7b63ac8a83936a71a01ad09773fc4196ba92 + languageName: node + linkType: hard + "postman-url-encoder@npm:3.0.5": version: 3.0.5 resolution: "postman-url-encoder@npm:3.0.5" @@ -13520,6 +13525,15 @@ __metadata: languageName: node linkType: hard +"postman-url-encoder@npm:3.0.8": + version: 3.0.8 + resolution: "postman-url-encoder@npm:3.0.8" + dependencies: + punycode: "npm:^2.3.1" + checksum: 10/9873c95137ef3f69081cfa466ca8ee8793385770a82889e15524592607f05782bcbf385a69afe31d5730de2886e8f0071728443baca0c5bbf32608dc8dda79b3 + languageName: node + linkType: hard + "prettier@npm:^2.6.2": version: 2.8.8 resolution: "prettier@npm:2.8.8" @@ -13662,7 +13676,7 @@ __metadata: languageName: node linkType: hard -"punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.0": +"punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.0, punycode@npm:^2.3.1": version: 2.3.1 resolution: "punycode@npm:2.3.1" checksum: 10/febdc4362bead22f9e2608ff0171713230b57aff9dddc1c273aa2a651fbd366f94b7d6a71d78342a7c0819906750351ca7f2edd26ea41b626d87d6a13d1bd059 @@ -14734,7 +14748,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.6.3, semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.4": +"semver@npm:7.6.3": version: 7.6.3 resolution: "semver@npm:7.6.3" bin: @@ -14743,6 +14757,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:7.7.1, semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.4": + version: 7.7.1 + resolution: "semver@npm:7.7.1" + bin: + semver: bin/semver.js + checksum: 10/4cfa1eb91ef3751e20fc52e47a935a0118d56d6f15a837ab814da0c150778ba2ca4f1a4d9068b33070ea4273629e615066664c2cfcd7c272caf7a8a0f6518b2c + languageName: node + linkType: hard + "semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" @@ -15125,7 +15148,7 @@ __metadata: languageName: node linkType: hard -"slugify@npm:^1.6.5": +"slugify@npm:^1.6.6": version: 1.6.6 resolution: "slugify@npm:1.6.6" checksum: 10/d0737cdedc834c50f74227bc1a1cf4f449f3575893f031b0e8c59f501c73526c866a23e47261b262c7acdaaaaf30d6f9e8aaae22772b3f56e858ac84c35efa7b @@ -16767,6 +16790,15 @@ __metadata: languageName: node linkType: hard +"xml-formatter@npm:^3.6.6": + version: 3.6.7 + resolution: "xml-formatter@npm:3.6.7" + dependencies: + xml-parser-xo: "npm:^4.1.5" + checksum: 10/0bd9955ab43b60e0bbf55d092761f27dbe4a9871cc60554cc07f67d31a2ae50423d207b2d8f408aad7c5fb7651cc54cba325056b9ac7abcb5df246fc9826a8e3 + languageName: node + linkType: hard + "xml-js@npm:^1.6.11": version: 1.6.11 resolution: "xml-js@npm:1.6.11" @@ -16785,6 +16817,13 @@ __metadata: languageName: node linkType: hard +"xml-parser-xo@npm:^4.1.5": + version: 4.1.5 + resolution: "xml-parser-xo@npm:4.1.5" + checksum: 10/0a6d24a2deb757e6595314f500cadd7d1fb2b06b92798a5bf4bdff05fc3b50815c20ec5bd101293602ca5a65f95453ec4a7320e364e060bf33ad8f0520e027a9 + languageName: node + linkType: hard + "xtend@npm:^4.0.2": version: 4.0.2 resolution: "xtend@npm:4.0.2" From bcc6cf0d8c87bd1da5ba7aeea9c6f79b1aa57a89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 29 Jan 2026 13:26:48 +0100 Subject: [PATCH 047/107] bump version packages memory limits MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .github/workflows/sync_version-packages.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/sync_version-packages.yml b/.github/workflows/sync_version-packages.yml index 20374b24cf..18f374e124 100644 --- a/.github/workflows/sync_version-packages.yml +++ b/.github/workflows/sync_version-packages.yml @@ -13,6 +13,10 @@ jobs: name: Create Changeset PR runs-on: ubuntu-latest + env: + CI: true + NODE_OPTIONS: --max-old-space-size=8192 + steps: - name: Harden Runner uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3 From 48e0f44d9f19ad3278cc26c4bbee4a71609ecd21 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 Jan 2026 12:28:23 +0000 Subject: [PATCH 048/107] chore(deps): update dependency axios to v1.13.3 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index a9c7d9235b..0462f8a3d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -25251,7 +25251,7 @@ __metadata: languageName: node linkType: hard -"axios@npm:1.13.2, axios@npm:^1.0.0, axios@npm:^1.11.0, axios@npm:^1.12.2, axios@npm:^1.13.0, axios@npm:^1.7.4": +"axios@npm:1.13.2": version: 1.13.2 resolution: "axios@npm:1.13.2" dependencies: @@ -25262,6 +25262,17 @@ __metadata: languageName: node linkType: hard +"axios@npm:^1.0.0, axios@npm:^1.11.0, axios@npm:^1.12.2, axios@npm:^1.13.0, axios@npm:^1.7.4": + version: 1.13.4 + resolution: "axios@npm:1.13.4" + dependencies: + follow-redirects: "npm:^1.15.6" + form-data: "npm:^4.0.4" + proxy-from-env: "npm:^1.1.0" + checksum: 10/54b7ef71c64837f9d52475832337f520cf6fa85c94612e03a3a2aad7082804a2544741267122696662147e90e6d2746601346984cf531ae715ecdb56d586a04c + languageName: node + linkType: hard + "axobject-query@npm:^4.1.0": version: 4.1.0 resolution: "axobject-query@npm:4.1.0" From b8eb1284ba8c22b7d0bc33a64180256951e4435d Mon Sep 17 00:00:00 2001 From: Johan Persson Date: Thu, 29 Jan 2026 13:47:25 +0100 Subject: [PATCH 049/107] docs(ui): restore DecorativeBox for layout component examples Restores the striped DecorativeBox pattern for visualizing layout in Box, Flex, and Grid documentation examples. - Enhanced DecorativeBox to accept children and style props - Updated Box examples to use DecorativeBox with width/height props - Replaced inline boxStyle/labelBoxStyle in Flex and Grid with DecorativeBox - Improved Box surface example description Signed-off-by: Johan Persson --- docs-ui/src/app/components/box/components.tsx | 7 +-- docs-ui/src/app/components/box/page.mdx | 2 +- docs-ui/src/app/components/box/snippets.ts | 6 +-- .../src/app/components/flex/components.tsx | 41 ++++++----------- docs-ui/src/app/components/flex/snippets.ts | 24 +++++----- .../src/app/components/grid/components.tsx | 44 +++++++------------ docs-ui/src/app/components/grid/snippets.ts | 28 ++++++------ .../src/components/DecorativeBox/index.tsx | 16 ++++++- .../DecorativeBox/styles.module.css | 6 +++ 9 files changed, 83 insertions(+), 91 deletions(-) diff --git a/docs-ui/src/app/components/box/components.tsx b/docs-ui/src/app/components/box/components.tsx index e197ce2eb8..dac66f1f59 100644 --- a/docs-ui/src/app/components/box/components.tsx +++ b/docs-ui/src/app/components/box/components.tsx @@ -2,11 +2,12 @@ import { Box } from '../../../../../packages/ui/src/components/Box/Box'; import { Flex } from '../../../../../packages/ui/src/components/Flex/Flex'; +import { DecorativeBox } from '@/components/DecorativeBox'; export const Default = () => { return ( - - Hello World + + ); }; @@ -36,7 +37,7 @@ export const Responsive = () => { p={{ initial: '2', md: '4' }} display={{ initial: 'block', md: 'flex' }} > - Hello World + Resize to see change ); }; diff --git a/docs-ui/src/app/components/box/page.mdx b/docs-ui/src/app/components/box/page.mdx index f825ddfdbf..41ce6feba0 100644 --- a/docs-ui/src/app/components/box/page.mdx +++ b/docs-ui/src/app/components/box/page.mdx @@ -41,7 +41,7 @@ avoid collapsing margins but both are available. ### Surface -Here's a view when boxes have different surface levels. +Use surface levels to create visual hierarchy. } code={boxSurfaceSnippet} layout="side-by-side" /> diff --git a/docs-ui/src/app/components/box/snippets.ts b/docs-ui/src/app/components/box/snippets.ts index 5da9dbc34c..e9af07dec5 100644 --- a/docs-ui/src/app/components/box/snippets.ts +++ b/docs-ui/src/app/components/box/snippets.ts @@ -4,8 +4,8 @@ export const snippetUsage = `import { Box } from '@backstage/ui'; Content with padding and background `; -export const defaultSnippet = ` - Hello World +export const defaultSnippet = ` + `; export const boxSurfaceSnippet = ` @@ -19,5 +19,5 @@ export const boxResponsiveSnippet = ` - Hello World + Content `; diff --git a/docs-ui/src/app/components/flex/components.tsx b/docs-ui/src/app/components/flex/components.tsx index fba9aff201..ce6cc8c05f 100644 --- a/docs-ui/src/app/components/flex/components.tsx +++ b/docs-ui/src/app/components/flex/components.tsx @@ -1,29 +1,14 @@ 'use client'; import { Flex } from '../../../../../packages/ui/src/components/Flex/Flex'; -import { Box } from '../../../../../packages/ui/src/components/Box/Box'; - -const boxStyle = { - width: '64px', - height: '64px', - background: '#eaf2fd', - border: '1px solid #2563eb', - borderRadius: '4px', -}; - -const smallBoxStyle = { - padding: '8px 12px', - background: '#eaf2fd', - border: '1px solid #2563eb', - borderRadius: '4px', -}; +import { DecorativeBox } from '@/components/DecorativeBox'; export const Default = () => { return ( - - - + + + ); }; @@ -31,9 +16,9 @@ export const Default = () => { export const DirectionExample = () => { return ( - First - Second - Third + First + Second + Third ); }; @@ -41,9 +26,9 @@ export const DirectionExample = () => { export const ResponsiveExample = () => { return ( - Item 1 - Item 2 - Item 3 + 1 + 2 + 3 ); }; @@ -51,9 +36,9 @@ export const ResponsiveExample = () => { export const AlignExample = () => { return ( - Start - Middle - End + Start + Middle + End ); }; diff --git a/docs-ui/src/app/components/flex/snippets.ts b/docs-ui/src/app/components/flex/snippets.ts index b0c08ed140..8770880c79 100644 --- a/docs-ui/src/app/components/flex/snippets.ts +++ b/docs-ui/src/app/components/flex/snippets.ts @@ -7,25 +7,25 @@ export const flexUsageSnippet = `import { Flex } from '@backstage/ui'; `; export const defaultSnippet = ` - - - + + + `; export const flexDirectionSnippet = ` - First - Second - Third + First + Second + Third `; export const flexResponsiveSnippet = ` - Item 1 - Item 2 - Item 3 + 1 + 2 + 3 `; export const flexAlignSnippet = ` - Start - Middle - End + Start + Middle + End `; diff --git a/docs-ui/src/app/components/grid/components.tsx b/docs-ui/src/app/components/grid/components.tsx index 088897f004..0c0e5a0546 100644 --- a/docs-ui/src/app/components/grid/components.tsx +++ b/docs-ui/src/app/components/grid/components.tsx @@ -1,31 +1,17 @@ 'use client'; import { Grid } from '../../../../../packages/ui/src/components/Grid/Grid'; -import { Box } from '../../../../../packages/ui/src/components/Box/Box'; - -const boxStyle = { - height: '64px', - background: '#eaf2fd', - border: '1px solid #2563eb', - borderRadius: '4px', -}; - -const labelBoxStyle = { - padding: '8px 12px', - background: '#eaf2fd', - border: '1px solid #2563eb', - borderRadius: '4px', -}; +import { DecorativeBox } from '@/components/DecorativeBox'; export const Default = () => { return ( - - - - - - + + + + + + ); }; @@ -33,10 +19,10 @@ export const Default = () => { export const ResponsiveExample = () => { return ( - 1 - 2 - 3 - 4 + 1 + 2 + 3 + 4 ); }; @@ -44,11 +30,11 @@ export const ResponsiveExample = () => { export const GridItemExample = () => { return ( - - Spans 2 columns + + Spans 2 columns - 1 column - 1 column + 1 column + 1 column ); }; diff --git a/docs-ui/src/app/components/grid/snippets.ts b/docs-ui/src/app/components/grid/snippets.ts index f6d32b8802..2915a2ba4b 100644 --- a/docs-ui/src/app/components/grid/snippets.ts +++ b/docs-ui/src/app/components/grid/snippets.ts @@ -7,23 +7,25 @@ export const gridUsageSnippet = `import { Grid } from '@backstage/ui'; `; export const defaultSnippet = ` - - - - - - + + + + + + `; export const gridResponsiveSnippet = ` - 1 - 2 - 3 - 4 + 1 + 2 + 3 + 4 `; export const gridItemSnippet = ` - Spans 2 columns - 1 column - 1 column + + Spans 2 columns + + 1 column + 1 column `; diff --git a/docs-ui/src/components/DecorativeBox/index.tsx b/docs-ui/src/components/DecorativeBox/index.tsx index a5c20725bc..8af067459e 100644 --- a/docs-ui/src/components/DecorativeBox/index.tsx +++ b/docs-ui/src/components/DecorativeBox/index.tsx @@ -1,5 +1,17 @@ +'use client'; + +import { CSSProperties, ReactNode } from 'react'; import styles from './styles.module.css'; -export const DecorativeBox = () => { - return
; +interface DecorativeBoxProps { + children?: ReactNode; + style?: CSSProperties; +} + +export const DecorativeBox = ({ children, style }: DecorativeBoxProps) => { + return ( +
+ {children} +
+ ); }; diff --git a/docs-ui/src/components/DecorativeBox/styles.module.css b/docs-ui/src/components/DecorativeBox/styles.module.css index 84a6b579a0..a2a5c9407a 100644 --- a/docs-ui/src/components/DecorativeBox/styles.module.css +++ b/docs-ui/src/components/DecorativeBox/styles.module.css @@ -1,8 +1,14 @@ .box { min-width: 64px; min-height: 64px; + padding: 8px 12px; background-color: #eaf2fd; border-radius: 4px; box-shadow: 0 0 0 1px #2563eb; background-image: url("data:image/svg+xml,%3Csvg width='6' height='6' viewBox='0 0 6 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%232563eb' fill-opacity='0.3' fill-rule='evenodd'%3E%3Cpath d='M5 0h1L0 6V5zM6 5v1H5z'/%3E%3C/g%3E%3C/svg%3E"); + color: #2563eb; + font-weight: 500; + display: flex; + align-items: center; + justify-content: center; } From 864eb8c4c8d257f6f7e8d2077fecff6a96b2eaec Mon Sep 17 00:00:00 2001 From: Johan Persson Date: Thu, 29 Jan 2026 13:48:50 +0100 Subject: [PATCH 050/107] docs(ui): improve Container documentation Improves Container documentation to better explain its purpose as a page-level wrapper for plugin content. - Added Core Concepts section explaining centering, max-width, and gutters - Removed redundant Basic Usage example - Updated examples to use DecorativeBox - Improved PageTitle description Signed-off-by: Johan Persson --- .../app/components/container/components.tsx | 25 +++---------- docs-ui/src/app/components/container/page.mdx | 37 ++++++------------- .../src/app/components/container/snippets.ts | 18 +++------ 3 files changed, 24 insertions(+), 56 deletions(-) diff --git a/docs-ui/src/app/components/container/components.tsx b/docs-ui/src/app/components/container/components.tsx index 76eaf56ff1..a11bbd9463 100644 --- a/docs-ui/src/app/components/container/components.tsx +++ b/docs-ui/src/app/components/container/components.tsx @@ -1,33 +1,20 @@ 'use client'; import { Container } from '../../../../../packages/ui/src/components/Container/Container'; -import { Box } from '../../../../../packages/ui/src/components/Box/Box'; -import { Text } from '../../../../../packages/ui/src/components/Text/Text'; +import { DecorativeBox } from '@/components/DecorativeBox'; -export const Preview = () => { - return ( - - Content is centered with max-width - - ); -}; - -export const BasicUsagePreview = () => { +export const Default = () => { return ( - Hello World - Hello World - Hello World + Page content goes here ); }; -export const ResponsiveSpacingPreview = () => { +export const ResponsiveSpacing = () => { return ( - - Hello World - Hello World - Hello World + + Content with vertical spacing ); }; diff --git a/docs-ui/src/app/components/container/page.mdx b/docs-ui/src/app/components/container/page.mdx index 4ffca3bfc5..e0f4014a07 100644 --- a/docs-ui/src/app/components/container/page.mdx +++ b/docs-ui/src/app/components/container/page.mdx @@ -4,15 +4,10 @@ import { Snippet } from '@/components/Snippet'; import { containerPropDefs } from './props-definition'; import { containerUsageSnippet, - previewSnippet, - containerSimpleSnippet, + defaultSnippet, containerResponsiveSnippet, } from './snippets'; -import { - Preview, - BasicUsagePreview, - ResponsiveSpacingPreview, -} from './components'; +import { Default, ResponsiveSpacing } from './components'; import { PageTitle } from '@/components/PageTitle'; import { Theming } from '@/components/Theming'; import { ContainerDefinition } from '../../../utils/definitions'; @@ -21,38 +16,30 @@ import { ChangelogComponent } from '@/components/ChangelogComponent'; -} code={previewSnippet} /> +} code={defaultSnippet} /> ## Usage -## API reference +## Core Concepts + +Container provides the standard page layout for plugin content. It constrains content to a maximum width, centers it horizontally, and adds consistent horizontal gutters. Use it once per page to wrap your main content area. + +## API Reference ## Examples -### Basic Usage +### Responsive spacing -} - code={containerSimpleSnippet} - layout="side-by-side" -/> +Vertical spacing props accept breakpoint objects. -### Responsive Spacing - -Spacing props accept breakpoint objects for responsive behavior. - -} - code={containerResponsiveSnippet} - layout="side-by-side" -/> +} code={containerResponsiveSnippet} /> diff --git a/docs-ui/src/app/components/container/snippets.ts b/docs-ui/src/app/components/container/snippets.ts index b16c1b81fd..a314b52387 100644 --- a/docs-ui/src/app/components/container/snippets.ts +++ b/docs-ui/src/app/components/container/snippets.ts @@ -1,19 +1,13 @@ export const containerUsageSnippet = `import { Container } from "@backstage/ui"; -Hello World!`; - -export const previewSnippet = ` - Content is centered with max-width + + {/* Your plugin's main content */} `; -export const containerSimpleSnippet = ` - Hello World - Hello World - Hello World +export const defaultSnippet = ` + Page content goes here `; -export const containerResponsiveSnippet = ` - Hello World - Hello World - Hello World +export const containerResponsiveSnippet = ` + Content with vertical spacing `; From 55b2ef613833437c329b0f1605c82b4d35c01365 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 29 Jan 2026 13:58:21 +0100 Subject: [PATCH 051/107] Add changesets for API conflict error behavior Added changesets documenting that API factory conflicts are now treated as errors that block app startup, reverting the previous warning behavior. Signed-off-by: Patrik Oldsberg Signed-off-by: Patrik Oldsberg --- .changeset/api-override-conflict-error-defaults.md | 5 +++++ .changeset/api-override-conflict-error.md | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 .changeset/api-override-conflict-error-defaults.md create mode 100644 .changeset/api-override-conflict-error.md diff --git a/.changeset/api-override-conflict-error-defaults.md b/.changeset/api-override-conflict-error-defaults.md new file mode 100644 index 0000000000..703f76fb6e --- /dev/null +++ b/.changeset/api-override-conflict-error-defaults.md @@ -0,0 +1,5 @@ +--- +'@backstage/frontend-defaults': minor +--- + +**BREAKING**: The `API_FACTORY_CONFLICT` warning is now treated as an error and will prevent the app from starting. diff --git a/.changeset/api-override-conflict-error.md b/.changeset/api-override-conflict-error.md new file mode 100644 index 0000000000..ed88452ccf --- /dev/null +++ b/.changeset/api-override-conflict-error.md @@ -0,0 +1,5 @@ +--- +'@backstage/frontend-app-api': minor +--- + +**BREAKING**: Updated the behavior of the new API override logic to reject the override and block app startup instead of just logging a deprecation warning. From aac1f68de43f729dc9cd8680aac2a7994ebf1921 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Thu, 29 Jan 2026 13:19:34 +0000 Subject: [PATCH 052/107] Fix CSS Module purity errors for Next.js 16 compatibility After upgrading to Next.js 16.1.6, the build failed with CSS Module purity errors in Popover and Tooltip components. Next.js 16 with Turbopack enforces stricter validation requiring global selectors like [data-theme='dark'] to be combined with local classes. Changed nested selector structure: [data-theme='dark'] { .bui-Popover { ... } } To flattened structure: [data-theme='dark'] .bui-Popover { ... } This matches the pattern used in Dialog.module.css and satisfies Turbopack's CSS Module purity requirements. Signed-off-by: Charles de Dreuille --- .../src/components/Popover/Popover.module.css | 22 +++++++---------- .../src/components/Tooltip/Tooltip.module.css | 24 ++++++++----------- 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/packages/ui/src/components/Popover/Popover.module.css b/packages/ui/src/components/Popover/Popover.module.css index fe757c8dd4..5156b95ffc 100644 --- a/packages/ui/src/components/Popover/Popover.module.css +++ b/packages/ui/src/components/Popover/Popover.module.css @@ -122,20 +122,16 @@ } } - [data-theme='dark'] { - .bui-Popover { - background: var(--bui-bg-surface-2); - border: 1px solid var(--bui-gray-4); - } + [data-theme='dark'] .bui-Popover { + background: var(--bui-bg-surface-2); + border: 1px solid var(--bui-gray-4); + } - .bui-PopoverArrow { - svg path:nth-child(1) { - fill: var(--bui-bg-surface-2); - } + [data-theme='dark'] .bui-PopoverArrow svg path:nth-child(1) { + fill: var(--bui-bg-surface-2); + } - svg path:nth-child(2) { - fill: var(--bui-gray-4); - } - } + [data-theme='dark'] .bui-PopoverArrow svg path:nth-child(2) { + fill: var(--bui-gray-4); } } diff --git a/packages/ui/src/components/Tooltip/Tooltip.module.css b/packages/ui/src/components/Tooltip/Tooltip.module.css index 5c9c27eb8d..b668952848 100644 --- a/packages/ui/src/components/Tooltip/Tooltip.module.css +++ b/packages/ui/src/components/Tooltip/Tooltip.module.css @@ -106,21 +106,17 @@ } } - [data-theme='dark'] { - .bui-Tooltip { - background: var(--bui-bg-surface-2); - box-shadow: none; - border: 1px solid var(--bui-gray-4); - } + [data-theme='dark'] .bui-Tooltip { + background: var(--bui-bg-surface-2); + box-shadow: none; + border: 1px solid var(--bui-gray-4); + } - .bui-TooltipArrow { - svg path:nth-child(1) { - fill: var(--bui-bg-surface-2); - } + [data-theme='dark'] .bui-TooltipArrow svg path:nth-child(1) { + fill: var(--bui-bg-surface-2); + } - svg path:nth-child(2) { - fill: var(--bui-gray-4); - } - } + [data-theme='dark'] .bui-TooltipArrow svg path:nth-child(2) { + fill: var(--bui-gray-4); } } From f57aa1785a458b5e7c5949cff36d33885a58beef Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Thu, 29 Jan 2026 07:20:33 -0600 Subject: [PATCH 053/107] docs - Added ui:options Examples to the Sidebar Signed-off-by: Andre Wanlin --- microsite/sidebars.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/microsite/sidebars.ts b/microsite/sidebars.ts index 5432edd6db..1758e5a7a1 100644 --- a/microsite/sidebars.ts +++ b/microsite/sidebars.ts @@ -279,6 +279,7 @@ export default { 'features/software-templates/adding-templates', 'features/software-templates/writing-templates', 'features/software-templates/input-examples', + 'features/software-templates/ui-options-examples', 'features/software-templates/builtin-actions', 'features/software-templates/writing-custom-actions', 'features/software-templates/writing-tests-for-actions', From 4d1b7f4093aed3c28aa32c5991f56afec32bd9b5 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Thu, 29 Jan 2026 13:21:26 +0000 Subject: [PATCH 054/107] Add changeset for CSS Module fixes Signed-off-by: Charles de Dreuille --- .changeset/fix-nextjs16-css-modules.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .changeset/fix-nextjs16-css-modules.md diff --git a/.changeset/fix-nextjs16-css-modules.md b/.changeset/fix-nextjs16-css-modules.md new file mode 100644 index 0000000000..6e49f893c0 --- /dev/null +++ b/.changeset/fix-nextjs16-css-modules.md @@ -0,0 +1,11 @@ +--- +'@backstage/ui': patch +--- + +Fixed CSS Module purity errors for Next.js 16 compatibility + +After upgrading to Next.js 16.1.6, the build failed with CSS Module purity errors. Next.js 16 with Turbopack enforces stricter validation requiring global selectors like `[data-theme='dark']` to be combined with local classes. + +Changed nested selector structure from `[data-theme='dark'] { .class { } }` to flattened `[data-theme='dark'] .class { }`. + +**Affected components:** popover, tooltip From b9be9d33aacc708c2099be6816cdfb7b21fb3254 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Thu, 29 Jan 2026 13:30:36 +0000 Subject: [PATCH 055/107] Upgrade to ESLint 9 for Next.js 16 compatibility Next.js 16 requires ESLint 9 for proper flat config support. This commit: - Upgrades eslint from ^8 to ^9 - Migrates from .eslintrc.json to eslint.config.mjs (flat config) - Updates lint script to use eslint directly (next lint removed in Next.js 16) - Adds tsconfig.json includes for Next.js 16 dev types - Fixes layout.tsx to use proper theme CSS link tags Signed-off-by: Charles de Dreuille --- docs-ui/.eslintrc.json | 8 - docs-ui/eslint.config.mjs | 18 ++ docs-ui/package.json | 4 +- docs-ui/src/app/layout.tsx | 6 +- docs-ui/tsconfig.json | 17 +- docs-ui/yarn.lock | 356 ++++++++++++++++--------------------- 6 files changed, 189 insertions(+), 220 deletions(-) delete mode 100644 docs-ui/.eslintrc.json create mode 100644 docs-ui/eslint.config.mjs diff --git a/docs-ui/.eslintrc.json b/docs-ui/.eslintrc.json deleted file mode 100644 index be99640f75..0000000000 --- a/docs-ui/.eslintrc.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": ["next/core-web-vitals", "next/typescript"], - "rules": { - "notice/notice": "off", - "react/forbid-elements": "off", - "jsx-a11y/alt-text": "off" - } -} diff --git a/docs-ui/eslint.config.mjs b/docs-ui/eslint.config.mjs new file mode 100644 index 0000000000..3396ce7946 --- /dev/null +++ b/docs-ui/eslint.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig, globalIgnores } from 'eslint/config'; +import nextCoreWebVitals from 'eslint-config-next/core-web-vitals'; + +const eslintConfig = defineConfig([ + ...nextCoreWebVitals, + globalIgnores(['.next/**', 'dist/**', 'node_modules/**']), + { + rules: { + 'notice/notice': 'off', + 'react/forbid-elements': 'off', + 'jsx-a11y/alt-text': 'off', + '@next/next/no-css-tags': 'off', + 'react-hooks/set-state-in-effect': 'warn', + }, + }, +]); + +export default eslintConfig; diff --git a/docs-ui/package.json b/docs-ui/package.json index 861ba500bf..bb0b1a393d 100644 --- a/docs-ui/package.json +++ b/docs-ui/package.json @@ -5,7 +5,7 @@ "scripts": { "prebuild": "yarn sync:css", "build": "next build", - "lint": "next lint", + "lint": "eslint .", "prestart": "yarn sync:css", "start": "next dev", "sync:changelog": "node scripts/sync-changelog.mjs", @@ -47,7 +47,7 @@ "@types/react": "19.2.10", "@types/react-dom": "19.2.3", "chokidar": "^3.6.0", - "eslint": "^8", + "eslint": "^9", "eslint-config-next": "16.1.6", "lightningcss": "^1.28.2", "typescript": "^5", diff --git a/docs-ui/src/app/layout.tsx b/docs-ui/src/app/layout.tsx index ad056626d8..3647c572f5 100644 --- a/docs-ui/src/app/layout.tsx +++ b/docs-ui/src/app/layout.tsx @@ -8,8 +8,6 @@ import { MobileBottomNav } from '@/components/MobileBottomNav'; import styles from './layout.module.css'; import '../css/globals.css'; -import '/public/theme-backstage.css'; -import '/public/theme-spotify.css'; export const metadata: Metadata = { title: 'Backstage UI', @@ -49,6 +47,10 @@ export default async function RootLayout({ data-theme-name="backstage" suppressHydrationWarning > + + + + diff --git a/docs-ui/tsconfig.json b/docs-ui/tsconfig.json index b913cec0b3..2c7d5e0a3b 100644 --- a/docs-ui/tsconfig.json +++ b/docs-ui/tsconfig.json @@ -1,6 +1,10 @@ { "compilerOptions": { - "lib": ["dom", "dom.iterable", "esnext"], + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "strict": false, @@ -19,7 +23,9 @@ } ], "paths": { - "@/*": ["./src/*"] + "@/*": [ + "./src/*" + ] }, "target": "ES2017" }, @@ -30,7 +36,10 @@ ".next/types/**/*.ts", "dist/types/**/*.ts", "src/types/**/*.d.ts", - "dist/dev/types/**/*.ts" + "dist/dev/types/**/*.ts", + ".next/dev/types/**/*.ts" ], - "exclude": ["node_modules"] + "exclude": [ + "node_modules" + ] } diff --git a/docs-ui/yarn.lock b/docs-ui/yarn.lock index 3fb97dd76b..b0a0f4bb8f 100644 --- a/docs-ui/yarn.lock +++ b/docs-ui/yarn.lock @@ -375,7 +375,7 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.9.1": +"@eslint-community/eslint-utils@npm:^4.8.0, @eslint-community/eslint-utils@npm:^4.9.1": version: 4.9.1 resolution: "@eslint-community/eslint-utils@npm:4.9.1" dependencies: @@ -386,34 +386,80 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.12.2, @eslint-community/regexpp@npm:^4.6.1": +"@eslint-community/regexpp@npm:^4.12.1, @eslint-community/regexpp@npm:^4.12.2": version: 4.12.2 resolution: "@eslint-community/regexpp@npm:4.12.2" checksum: 10/049b280fddf71dd325514e0a520024969431dc3a8b02fa77476e6820e9122f28ab4c9168c11821f91a27982d2453bcd7a66193356ea84e84fb7c8d793be1ba0c languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.1.4": - version: 2.1.4 - resolution: "@eslint/eslintrc@npm:2.1.4" +"@eslint/config-array@npm:^0.21.1": + version: 0.21.1 + resolution: "@eslint/config-array@npm:0.21.1" dependencies: - ajv: "npm:^6.12.4" - debug: "npm:^4.3.2" - espree: "npm:^9.6.0" - globals: "npm:^13.19.0" - ignore: "npm:^5.2.0" - import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.1.0" + "@eslint/object-schema": "npm:^2.1.7" + debug: "npm:^4.3.1" minimatch: "npm:^3.1.2" - strip-json-comments: "npm:^3.1.1" - checksum: 10/7a3b14f4b40fc1a22624c3f84d9f467a3d9ea1ca6e9a372116cb92507e485260359465b58e25bcb6c9981b155416b98c9973ad9b796053fd7b3f776a6946bce8 + checksum: 10/6eaa0435972f735ce52d581f355a0b616e50a9b8a73304a7015398096e252798b9b3b968a67b524eefb0fdeacc57c4d960f0ec6432abe1c1e24be815b88c5d18 languageName: node linkType: hard -"@eslint/js@npm:8.57.1": - version: 8.57.1 - resolution: "@eslint/js@npm:8.57.1" - checksum: 10/7562b21be10c2adbfa4aa5bb2eccec2cb9ac649a3569560742202c8d1cb6c931ce634937a2f0f551e078403a1c1285d6c2c0aa345dafc986149665cd69fe8b59 +"@eslint/config-helpers@npm:^0.4.2": + version: 0.4.2 + resolution: "@eslint/config-helpers@npm:0.4.2" + dependencies: + "@eslint/core": "npm:^0.17.0" + checksum: 10/3f2b4712d8e391c36ec98bc200f7dea423dfe518e42956569666831b89ede83b33120c761dfd3ab6347d8e8894a6d4af47254a18d464a71c6046fd88065f6daf + languageName: node + linkType: hard + +"@eslint/core@npm:^0.17.0": + version: 0.17.0 + resolution: "@eslint/core@npm:0.17.0" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10/f9a428cc651ec15fb60d7d60c2a7bacad4666e12508320eafa98258e976fafaa77d7be7be91519e75f801f15f830105420b14a458d4aab121a2b0a59bc43517b + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^3.3.1": + version: 3.3.3 + resolution: "@eslint/eslintrc@npm:3.3.3" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^10.0.1" + globals: "npm:^14.0.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.1" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10/b586a364ff15ce1b68993aefc051ca330b1fece15fb5baf4a708d00113f9a14895cffd84a5f24c5a97bd4b4321130ab2314f90aa462a250f6b859c2da2cba1f3 + languageName: node + linkType: hard + +"@eslint/js@npm:9.39.2": + version: 9.39.2 + resolution: "@eslint/js@npm:9.39.2" + checksum: 10/6b7f676746f3111b5d1b23715319212ab9297868a0fa9980d483c3da8965d5841673aada2d5653e85a3f7156edee0893a7ae7035211b4efdcb2848154bb947f2 + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.7": + version: 2.1.7 + resolution: "@eslint/object-schema@npm:2.1.7" + checksum: 10/946ef5d6235b4d1c0907c6c6e6429c8895f535380c562b7705c131f63f2e961b06e8785043c86a293da48e0a60c6286d98ba395b8b32ea55561fe6e4417cb7e4 + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.4.1": + version: 0.4.1 + resolution: "@eslint/plugin-kit@npm:0.4.1" + dependencies: + "@eslint/core": "npm:^0.17.0" + levn: "npm:^0.4.1" + checksum: 10/c5947d0ffeddca77d996ac1b886a66060c1a15ed1d5e425d0c7e7d7044a4bd3813fc968892d03950a7831c9b89368a2f7b281e45dd3c74a048962b74bf3a1cb4 languageName: node linkType: hard @@ -455,14 +501,20 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.13.0": - version: 0.13.0 - resolution: "@humanwhocodes/config-array@npm:0.13.0" +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1" + checksum: 10/270d936be483ab5921702623bc74ce394bf12abbf57d9145a69e8a0d1c87eb1c768bd2d93af16c5705041e257e6d9cc7529311f63a1349f3678abc776fc28523 + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.7 + resolution: "@humanfs/node@npm:0.16.7" dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.3" - debug: "npm:^4.3.1" - minimatch: "npm:^3.0.5" - checksum: 10/524df31e61a85392a2433bf5d03164e03da26c03d009f27852e7dcfdafbc4a23f17f021dacf88e0a7a9fe04ca032017945d19b57a16e2676d9114c22a53a9d11 + "@humanfs/core": "npm:^0.19.1" + "@humanwhocodes/retry": "npm:^0.4.0" + checksum: 10/b3633d3dce898592cac515ba5e6693c78e6be92863541d3eaf2c009b10f52b2fa62ff6e6e06f240f2447ddbe7b5f1890bc34e9308470675c876eee207553a08d languageName: node linkType: hard @@ -473,10 +525,10 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^2.0.3": - version: 2.0.3 - resolution: "@humanwhocodes/object-schema@npm:2.0.3" - checksum: 10/05bb99ed06c16408a45a833f03a732f59bf6184795d4efadd33238ff8699190a8c871ad1121241bb6501589a9598dc83bf25b99dcbcf41e155cdf36e35e937a3 +"@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2": + version: 0.4.3 + resolution: "@humanwhocodes/retry@npm:0.4.3" + checksum: 10/0b32cfd362bea7a30fbf80bb38dcaf77fee9c2cae477ee80b460871d03590110ac9c77d654f04ec5beaf71b6f6a89851bdf6c1e34ccdf2f686bd86fcd97d9e61 languageName: node linkType: hard @@ -1005,7 +1057,7 @@ __metadata: languageName: node linkType: hard -"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": +"@nodelib/fs.walk@npm:^1.2.3": version: 1.2.8 resolution: "@nodelib/fs.walk@npm:1.2.8" dependencies: @@ -1305,7 +1357,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^1.0.0": +"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": version: 1.0.8 resolution: "@types/estree@npm:1.0.8" checksum: 10/25a4c16a6752538ffde2826c2cc0c6491d90e69cd6187bef4a006dd2c3c45469f049e643d7e516c515f21484dc3d48fd5c870be158a5beb72f5baf3dc43e4099 @@ -1321,6 +1373,13 @@ __metadata: languageName: node linkType: hard +"@types/json-schema@npm:^7.0.15": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 + languageName: node + linkType: hard + "@types/json5@npm:^0.0.29": version: 0.0.29 resolution: "@types/json5@npm:0.0.29" @@ -1587,7 +1646,7 @@ __metadata: languageName: node linkType: hard -"@ungap/structured-clone@npm:^1.0.0, @ungap/structured-clone@npm:^1.2.0": +"@ungap/structured-clone@npm:^1.0.0": version: 1.3.0 resolution: "@ungap/structured-clone@npm:1.3.0" checksum: 10/80d6910946f2b1552a2406650051c91bbd1f24a6bf854354203d84fe2714b3e8ce4618f49cc3410494173a1c1e8e9777372fe68dce74bd45faf0a7a1a6ccf448 @@ -1745,7 +1804,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.0, acorn@npm:^8.9.0": +"acorn@npm:^8.0.0, acorn@npm:^8.15.0": version: 8.15.0 resolution: "acorn@npm:8.15.0" bin: @@ -2277,7 +2336,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.6": +"cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" dependencies: @@ -2439,7 +2498,7 @@ __metadata: "@uiw/react-codemirror": "npm:^4.23.7" chokidar: "npm:^3.6.0" clsx: "npm:^2.1.1" - eslint: "npm:^8" + eslint: "npm:^9" eslint-config-next: "npm:16.1.6" html-react-parser: "npm:^5.2.5" lightningcss: "npm:^1.28.2" @@ -2464,15 +2523,6 @@ __metadata: languageName: node linkType: hard -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 10/b4b28f1df5c563f7d876e7461254a4597b8cabe915abe94d7c5d1633fed263fcf9a85e8d3836591fc2d040108e822b0d32758e5ec1fe31c590dc7e08086e3e48 - languageName: node - linkType: hard - "dom-serializer@npm:^2.0.0": version: 2.0.0 resolution: "dom-serializer@npm:2.0.0" @@ -2933,17 +2983,17 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^7.2.2": - version: 7.2.2 - resolution: "eslint-scope@npm:7.2.2" +"eslint-scope@npm:^8.4.0": + version: 8.4.0 + resolution: "eslint-scope@npm:8.4.0" dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^5.2.0" - checksum: 10/5c660fb905d5883ad018a6fea2b49f3cb5b1cbf2cd4bd08e98646e9864f9bc2c74c0839bed2d292e90a4a328833accc197c8f0baed89cbe8d605d6f918465491 + checksum: 10/e8e611701f65375e034c62123946e628894f0b54aa8cb11abe224816389abe5cd74cf16b62b72baa36504f22d1a958b9b8b0169b82397fe2e7997674c0d09b06 languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": +"eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 10/3f357c554a9ea794b094a09bd4187e5eacd1bc0d0653c3adeb87962c548e6a1ab8f982b86963ae1337f5d976004146536dcee5d0e2806665b193fbfbf1a9231b @@ -2957,71 +3007,72 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8": - version: 8.57.1 - resolution: "eslint@npm:8.57.1" +"eslint@npm:^9": + version: 9.39.2 + resolution: "eslint@npm:9.39.2" dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.6.1" - "@eslint/eslintrc": "npm:^2.1.4" - "@eslint/js": "npm:8.57.1" - "@humanwhocodes/config-array": "npm:^0.13.0" + "@eslint-community/eslint-utils": "npm:^4.8.0" + "@eslint-community/regexpp": "npm:^4.12.1" + "@eslint/config-array": "npm:^0.21.1" + "@eslint/config-helpers": "npm:^0.4.2" + "@eslint/core": "npm:^0.17.0" + "@eslint/eslintrc": "npm:^3.3.1" + "@eslint/js": "npm:9.39.2" + "@eslint/plugin-kit": "npm:^0.4.1" + "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" - "@nodelib/fs.walk": "npm:^1.2.8" - "@ungap/structured-clone": "npm:^1.2.0" + "@humanwhocodes/retry": "npm:^0.4.2" + "@types/estree": "npm:^1.0.6" ajv: "npm:^6.12.4" chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.2" + cross-spawn: "npm:^7.0.6" debug: "npm:^4.3.2" - doctrine: "npm:^3.0.0" escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^7.2.2" - eslint-visitor-keys: "npm:^3.4.3" - espree: "npm:^9.6.1" - esquery: "npm:^1.4.2" + eslint-scope: "npm:^8.4.0" + eslint-visitor-keys: "npm:^4.2.1" + espree: "npm:^10.4.0" + esquery: "npm:^1.5.0" esutils: "npm:^2.0.2" fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^6.0.1" + file-entry-cache: "npm:^8.0.0" find-up: "npm:^5.0.0" glob-parent: "npm:^6.0.2" - globals: "npm:^13.19.0" - graphemer: "npm:^1.4.0" ignore: "npm:^5.2.0" imurmurhash: "npm:^0.1.4" is-glob: "npm:^4.0.0" - is-path-inside: "npm:^3.0.3" - js-yaml: "npm:^4.1.0" json-stable-stringify-without-jsonify: "npm:^1.0.1" - levn: "npm:^0.4.1" lodash.merge: "npm:^4.6.2" minimatch: "npm:^3.1.2" natural-compare: "npm:^1.4.0" optionator: "npm:^0.9.3" - strip-ansi: "npm:^6.0.1" - text-table: "npm:^0.2.0" + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true bin: eslint: bin/eslint.js - checksum: 10/5504fa24879afdd9f9929b2fbfc2ee9b9441a3d464efd9790fbda5f05738858530182029f13323add68d19fec749d3ab4a70320ded091ca4432b1e9cc4ed104c + checksum: 10/53ff0e9c8264e7e8d40d50fdc0c0df0b701cfc5289beedfb686c214e3e7b199702f894bbd1bb48653727bb1ecbd1147cf5f555a4ae71e1daf35020cdc9072d9f languageName: node linkType: hard -"espree@npm:^9.6.0, espree@npm:^9.6.1": - version: 9.6.1 - resolution: "espree@npm:9.6.1" +"espree@npm:^10.0.1, espree@npm:^10.4.0": + version: 10.4.0 + resolution: "espree@npm:10.4.0" dependencies: - acorn: "npm:^8.9.0" + acorn: "npm:^8.15.0" acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10/255ab260f0d711a54096bdeda93adff0eadf02a6f9b92f02b323e83a2b7fc258797919437ad331efec3930475feb0142c5ecaaf3cdab4befebd336d47d3f3134 + eslint-visitor-keys: "npm:^4.2.1" + checksum: 10/9b355b32dbd1cc9f57121d5ee3be258fab87ebeb7c83fc6c02e5af1a74fc8c5ba79fe8c663e69ea112c3e84a1b95e6a2067ac4443ee7813bb85ac7581acb8bf9 languageName: node linkType: hard -"esquery@npm:^1.4.2": - version: 1.6.0 - resolution: "esquery@npm:1.6.0" +"esquery@npm:^1.5.0": + version: 1.7.0 + resolution: "esquery@npm:1.7.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10/c587fb8ec9ed83f2b1bc97cf2f6854cc30bf784a79d62ba08c6e358bf22280d69aee12827521cf38e69ae9761d23fb7fde593ce315610f85655c139d99b05e5a + checksum: 10/4afaf3089367e1f5885caa116ef386dffd8bfd64da21fd3d0e56e938d2667cfb2e5400ab4a825aa70e799bb3741e5b5d63c0b94d86e2d4cf3095c9e64b2f5a15 languageName: node linkType: hard @@ -3192,12 +3243,12 @@ __metadata: languageName: node linkType: hard -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" dependencies: - flat-cache: "npm:^3.0.4" - checksum: 10/099bb9d4ab332cb93c48b14807a6918a1da87c45dce91d4b61fd40e6505d56d0697da060cb901c729c90487067d93c9243f5da3dc9c41f0358483bfdebca736b + flat-cache: "npm:^4.0.0" + checksum: 10/afe55c4de4e0d226a23c1eae62a7219aafb390859122608a89fa4df6addf55c7fd3f1a2da6f5b41e7cdff496e4cf28bbd215d53eab5c817afa96d2b40c81bfb0 languageName: node linkType: hard @@ -3220,14 +3271,13 @@ __metadata: languageName: node linkType: hard -"flat-cache@npm:^3.0.4": - version: 3.2.0 - resolution: "flat-cache@npm:3.2.0" +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" dependencies: flatted: "npm:^3.2.9" - keyv: "npm:^4.5.3" - rimraf: "npm:^3.0.2" - checksum: 10/02381c6ece5e9fa5b826c9bbea481d7fd77645d96e4b0b1395238124d581d10e56f17f723d897b6d133970f7a57f0fab9148cbbb67237a0a0ffe794ba60c0c70 + keyv: "npm:^4.5.4" + checksum: 10/58ce851d9045fffc7871ce2bd718bc485ad7e777bf748c054904b87c351ff1080c2c11da00788d78738bfb51b71e4d5ea12d13b98eb36e3358851ffe495b62dc languageName: node linkType: hard @@ -3288,13 +3338,6 @@ __metadata: languageName: node linkType: hard -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 10/e703107c28e362d8d7b910bbcbfd371e640a3bb45ae157a362b5952c0030c0b6d4981140ec319b347bce7adc025dd7813da1ff908a945ac214d64f5402a51b96 - languageName: node - linkType: hard - "fsevents@npm:~2.3.2": version: 2.3.3 resolution: "fsevents@npm:2.3.3" @@ -3431,20 +3474,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.3": - version: 7.2.3 - resolution: "glob@npm:7.2.3" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^3.1.1" - once: "npm:^1.3.0" - path-is-absolute: "npm:^1.0.0" - checksum: 10/59452a9202c81d4508a43b8af7082ca5c76452b9fcc4a9ab17655822e6ce9b21d4f8fbadabe4fe3faef448294cec249af305e2cd824b7e9aaf689240e5e96a7b - languageName: node - linkType: hard - "globals@npm:16.4.0": version: 16.4.0 resolution: "globals@npm:16.4.0" @@ -3452,12 +3481,10 @@ __metadata: languageName: node linkType: hard -"globals@npm:^13.19.0": - version: 13.24.0 - resolution: "globals@npm:13.24.0" - dependencies: - type-fest: "npm:^0.20.2" - checksum: 10/62c5b1997d06674fc7191d3e01e324d3eda4d65ac9cc4e78329fa3b5c4fd42a0e1c8722822497a6964eee075255ce21ccf1eec2d83f92ef3f06653af4d0ee28e +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 10/03939c8af95c6df5014b137cac83aa909090c3a3985caef06ee9a5a669790877af8698ab38007e4c0186873adc14c0b13764acc754b16a754c216cc56aa5f021 languageName: node linkType: hard @@ -3485,13 +3512,6 @@ __metadata: languageName: node linkType: hard -"graphemer@npm:^1.4.0": - version: 1.4.0 - resolution: "graphemer@npm:1.4.0" - checksum: 10/6dd60dba97007b21e3a829fab3f771803cc1292977fe610e240ea72afd67e5690ac9eeaafc4a99710e78962e5936ab5a460787c2a1180f1cb0ccfac37d29f897 - languageName: node - linkType: hard - "has-bigints@npm:^1.0.2": version: 1.1.0 resolution: "has-bigints@npm:1.1.0" @@ -3754,23 +3774,6 @@ __metadata: languageName: node linkType: hard -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: "npm:^1.3.0" - wrappy: "npm:1" - checksum: 10/d2ebd65441a38c8336c223d1b80b921b9fa737e37ea466fd7e253cb000c64ae1f17fa59e68130ef5bda92cfd8d36b83d37dab0eb0a4558bcfec8e8cdfd2dcb67 - languageName: node - linkType: hard - -"inherits@npm:2": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 10/cd45e923bee15186c07fa4c89db0aace24824c482fb887b528304694b2aa6ff8a898da8657046a5dcf3e46cd6db6c61629551f9215f208d7c3f157cf9b290521 - languageName: node - linkType: hard - "inline-style-parser@npm:0.2.7": version: 0.2.7 resolution: "inline-style-parser@npm:0.2.7" @@ -4000,13 +4003,6 @@ __metadata: languageName: node linkType: hard -"is-path-inside@npm:^3.0.3": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: 10/abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 - languageName: node - linkType: hard - "is-plain-obj@npm:^4.0.0": version: 4.1.0 resolution: "is-plain-obj@npm:4.1.0" @@ -4153,7 +4149,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^4.1.0": +"js-yaml@npm:^4.1.1": version: 4.1.1 resolution: "js-yaml@npm:4.1.1" dependencies: @@ -4226,7 +4222,7 @@ __metadata: languageName: node linkType: hard -"keyv@npm:^4.5.3": +"keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" dependencies: @@ -4959,7 +4955,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -5341,15 +5337,6 @@ __metadata: languageName: node linkType: hard -"once@npm:^1.3.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: "npm:1" - checksum: 10/cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 - languageName: node - linkType: hard - "oniguruma-parser@npm:^0.12.1": version: 0.12.1 resolution: "oniguruma-parser@npm:0.12.1" @@ -5456,13 +5443,6 @@ __metadata: languageName: node linkType: hard -"path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 10/060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 - languageName: node - linkType: hard - "path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" @@ -5874,17 +5854,6 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: "npm:^7.1.3" - bin: - rimraf: bin.js - checksum: 10/063ffaccaaaca2cfd0ef3beafb12d6a03dd7ff1260d752d62a6077b5dfff6ae81bea571f655bb6b589d366930ec1bdd285d40d560c0dae9b12f125e54eb743d5 - languageName: node - linkType: hard - "run-parallel@npm:^1.1.9": version: 1.2.0 resolution: "run-parallel@npm:1.2.0" @@ -6473,13 +6442,6 @@ __metadata: languageName: node linkType: hard -"text-table@npm:^0.2.0": - version: 0.2.0 - resolution: "text-table@npm:0.2.0" - checksum: 10/4383b5baaeffa9bb4cda2ac33a4aa2e6d1f8aaf811848bf73513a9b88fd76372dc461f6fd6d2e9cb5100f48b473be32c6f95bd983509b7d92bb4d92c10747452 - languageName: node - linkType: hard - "tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.13, tinyglobby@npm:^0.2.15": version: 0.2.15 resolution: "tinyglobby@npm:0.2.15" @@ -6550,13 +6512,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 10/8907e16284b2d6cfa4f4817e93520121941baba36b39219ea36acfe64c86b9dbc10c9941af450bd60832c8f43464974d51c0957f9858bc66b952b66b6914cbb9 - languageName: node - linkType: hard - "type-fest@npm:^4.31.0": version: 4.41.0 resolution: "type-fest@npm:4.41.0" @@ -7027,13 +6982,6 @@ __metadata: languageName: node linkType: hard -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 10/159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 - languageName: node - linkType: hard - "yallist@npm:^3.0.2": version: 3.1.1 resolution: "yallist@npm:3.1.1" From e7159c00fe094e1ec09cb521643f146fe3cfd065 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Thu, 29 Jan 2026 13:34:12 +0000 Subject: [PATCH 056/107] Cleanup changeset Signed-off-by: Charles de Dreuille --- .changeset/fix-nextjs16-css-modules.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.changeset/fix-nextjs16-css-modules.md b/.changeset/fix-nextjs16-css-modules.md index 6e49f893c0..1cc223fb0d 100644 --- a/.changeset/fix-nextjs16-css-modules.md +++ b/.changeset/fix-nextjs16-css-modules.md @@ -2,10 +2,6 @@ '@backstage/ui': patch --- -Fixed CSS Module purity errors for Next.js 16 compatibility - -After upgrading to Next.js 16.1.6, the build failed with CSS Module purity errors. Next.js 16 with Turbopack enforces stricter validation requiring global selectors like `[data-theme='dark']` to be combined with local classes. - -Changed nested selector structure from `[data-theme='dark'] { .class { } }` to flattened `[data-theme='dark'] .class { }`. +Fixed CSS Module syntax to comply with Next.js 16 Turbopack validation by flattening nested dark theme selectors. **Affected components:** popover, tooltip From 2398c3d1d90fa632831638a11f90bdac53a8d447 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Thu, 29 Jan 2026 13:45:37 +0000 Subject: [PATCH 057/107] Update tsconfig.json Signed-off-by: Charles de Dreuille --- docs-ui/tsconfig.json | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/docs-ui/tsconfig.json b/docs-ui/tsconfig.json index 2c7d5e0a3b..bb167b721d 100644 --- a/docs-ui/tsconfig.json +++ b/docs-ui/tsconfig.json @@ -1,10 +1,6 @@ { "compilerOptions": { - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": false, @@ -23,9 +19,7 @@ } ], "paths": { - "@/*": [ - "./src/*" - ] + "@/*": ["./src/*"] }, "target": "ES2017" }, @@ -39,7 +33,5 @@ "dist/dev/types/**/*.ts", ".next/dev/types/**/*.ts" ], - "exclude": [ - "node_modules" - ] + "exclude": ["node_modules"] } From 43a4c0e6b587d983d31218ccbb9426b2b9255e87 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 Jan 2026 14:18:23 +0000 Subject: [PATCH 058/107] chore(deps): update dependency html-react-parser to v5.2.12 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs-ui/yarn.lock | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/docs-ui/yarn.lock b/docs-ui/yarn.lock index 3fb97dd76b..95e31d87b2 100644 --- a/docs-ui/yarn.lock +++ b/docs-ui/yarn.lock @@ -2500,7 +2500,7 @@ __metadata: languageName: node linkType: hard -"domutils@npm:^3.2.1": +"domutils@npm:^3.2.2": version: 3.2.2 resolution: "domutils@npm:3.2.2" dependencies: @@ -2566,10 +2566,10 @@ __metadata: languageName: node linkType: hard -"entities@npm:^6.0.0": - version: 6.0.1 - resolution: "entities@npm:6.0.1" - checksum: 10/62af1307202884349d2867f0aac5c60d8b57102ea0b0e768b16246099512c28e239254ad772d6834e7e14cb1b6f153fc3d0c031934e3183b086c86d3838d874a +"entities@npm:^7.0.1": + version: 7.0.1 + resolution: "entities@npm:7.0.1" + checksum: 10/3c0c58d869c45148463e96d21dee2d1b801bd3fe4cf47aa470cd26dfe81d59e9e0a9be92ae083fa02fa441283c883a471486e94538dcfb8544428aa80a55271b languageName: node linkType: hard @@ -3640,22 +3640,22 @@ __metadata: languageName: node linkType: hard -"html-dom-parser@npm:5.1.2": - version: 5.1.2 - resolution: "html-dom-parser@npm:5.1.2" +"html-dom-parser@npm:5.1.4": + version: 5.1.4 + resolution: "html-dom-parser@npm:5.1.4" dependencies: domhandler: "npm:5.0.3" - htmlparser2: "npm:10.0.0" - checksum: 10/d54fcdafbc0b2881c441a396965ad285072d2e4df62bebe7074d7aaa2a1fffc95e9286bcb81d6f241c4cdb10a84435fa623738985b635574acb3c84e994e8bb6 + htmlparser2: "npm:10.1.0" + checksum: 10/e2193fd081b229537cd7c735f27dac2de6b5789c822be1947ac54e104ecd852464313813c039e7bed0e2e574f5f6ce9d560b307fc0ba8d2d372c6a1c68a59117 languageName: node linkType: hard "html-react-parser@npm:^5.2.5": - version: 5.2.11 - resolution: "html-react-parser@npm:5.2.11" + version: 5.2.14 + resolution: "html-react-parser@npm:5.2.14" dependencies: domhandler: "npm:5.0.3" - html-dom-parser: "npm:5.1.2" + html-dom-parser: "npm:5.1.4" react-property: "npm:2.0.2" style-to-js: "npm:1.1.21" peerDependencies: @@ -3664,7 +3664,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10/5b52699e63e6ebd7c1c2d76f6b5214fdbf017571785c5c01f0630704a84fcd3b75a9539e0f4e8bb65e91d8871ee3e80980baa21660cfd9749587dafd96a959bf + checksum: 10/992d7362f0cc8a8987c844a2f317e779215cf49b01f54400ccb750f519bb867fa9ce157be4d0c3daf21e0e217cee6b752fdca473c7a7decd70f53c995952afaf languageName: node linkType: hard @@ -3675,15 +3675,15 @@ __metadata: languageName: node linkType: hard -"htmlparser2@npm:10.0.0": - version: 10.0.0 - resolution: "htmlparser2@npm:10.0.0" +"htmlparser2@npm:10.1.0": + version: 10.1.0 + resolution: "htmlparser2@npm:10.1.0" dependencies: domelementtype: "npm:^2.3.0" domhandler: "npm:^5.0.3" - domutils: "npm:^3.2.1" - entities: "npm:^6.0.0" - checksum: 10/768870f0e020dca19dc45df206cb6ac466c5dba6566c8fca4ca880347eed409f9977028d08644ac516bca8628ac9c7ded5a3847dc3ee1c043f049abf9e817154 + domutils: "npm:^3.2.2" + entities: "npm:^7.0.1" + checksum: 10/660fb094a53fb77a3c771db969778b58af0e8a572a1bdc8e5952a4241e4b04e0a6063b16f6422e22c821441081c8de339e3f06ddda362ac2a42c8767d5e5ad53 languageName: node linkType: hard From a416231b1c3d4da0e93f706669bab390907598f1 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Thu, 29 Jan 2026 14:19:48 +0000 Subject: [PATCH 059/107] Update accept.txt Signed-off-by: Charles de Dreuille --- .github/vale/config/vocabularies/Backstage/accept.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/vale/config/vocabularies/Backstage/accept.txt b/.github/vale/config/vocabularies/Backstage/accept.txt index 62277b26d6..d55d6ab15a 100644 --- a/.github/vale/config/vocabularies/Backstage/accept.txt +++ b/.github/vale/config/vocabularies/Backstage/accept.txt @@ -527,6 +527,7 @@ transpilers trixie truthy tsconfig +Turbopack TSDoc typeahead ui From 9db03083a0b5e2c22955975ce2bfba51f242afb5 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Thu, 29 Jan 2026 14:21:02 +0000 Subject: [PATCH 060/107] Update fix-nextjs16-css-modules.md Signed-off-by: Charles de Dreuille --- .changeset/fix-nextjs16-css-modules.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/fix-nextjs16-css-modules.md b/.changeset/fix-nextjs16-css-modules.md index 1cc223fb0d..faa60fc06a 100644 --- a/.changeset/fix-nextjs16-css-modules.md +++ b/.changeset/fix-nextjs16-css-modules.md @@ -4,4 +4,4 @@ Fixed CSS Module syntax to comply with Next.js 16 Turbopack validation by flattening nested dark theme selectors. -**Affected components:** popover, tooltip +**Affected components:** Popover, Tooltip From ad435e4344d9d77d640816bc228eb4262b95a007 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Thu, 29 Jan 2026 15:00:58 +0000 Subject: [PATCH 061/107] Fix React hooks ESLint errors without disabling rules Refactored components to avoid synchronous setState calls in effects by using proper React patterns: - TableOfContents: Use requestAnimationFrame to defer setState calls and useLayoutEffect for DOM measurements - CustomTheme: Use lazy state initialization for isClient and defer theme loading with requestAnimationFrame - PlaygroundContext: Use lazy initialization for localStorage hydration These changes maintain functionality while satisfying the strict react-hooks/set-state-in-effect ESLint rule. Signed-off-by: Charles de Dreuille --- docs-ui/eslint.config.mjs | 2 - .../components/CustomTheme/customTheme.tsx | 11 ++- .../TableOfContents/TableOfContents.tsx | 70 +++++++++++-------- docs-ui/src/utils/playground-context.tsx | 37 ++++------ 4 files changed, 59 insertions(+), 61 deletions(-) diff --git a/docs-ui/eslint.config.mjs b/docs-ui/eslint.config.mjs index 3396ce7946..2cb66fd509 100644 --- a/docs-ui/eslint.config.mjs +++ b/docs-ui/eslint.config.mjs @@ -9,8 +9,6 @@ const eslintConfig = defineConfig([ 'notice/notice': 'off', 'react/forbid-elements': 'off', 'jsx-a11y/alt-text': 'off', - '@next/next/no-css-tags': 'off', - 'react-hooks/set-state-in-effect': 'warn', }, }, ]); diff --git a/docs-ui/src/components/CustomTheme/customTheme.tsx b/docs-ui/src/components/CustomTheme/customTheme.tsx index ae765d7d88..3a4ae0edc8 100644 --- a/docs-ui/src/components/CustomTheme/customTheme.tsx +++ b/docs-ui/src/components/CustomTheme/customTheme.tsx @@ -46,7 +46,7 @@ const myTheme = createTheme({ }); export const CustomTheme = () => { - const [isClient, setIsClient] = useState(false); + const [isClient, setIsClient] = useState(() => typeof window !== 'undefined'); const [open, setOpen] = useState(true); const [customTheme, setCustomTheme] = useState(undefined); const { selectedThemeName } = usePlayground(); @@ -73,7 +73,10 @@ export const CustomTheme = () => { storedTheme = defaultTheme; localStorage.setItem('customThemeCss', storedTheme); } - setCustomTheme(storedTheme); + // Defer setState to avoid synchronous call in effect + requestAnimationFrame(() => { + setCustomTheme(storedTheme!); + }); updateStyleElement(storedTheme); } else { const styleElement = document.getElementById( @@ -85,10 +88,6 @@ export const CustomTheme = () => { } }, [selectedThemeName]); - useEffect(() => { - setIsClient(true); - }, []); - const handleSave = () => { if (customTheme) { localStorage.setItem('customThemeCss', customTheme); diff --git a/docs-ui/src/components/TableOfContents/TableOfContents.tsx b/docs-ui/src/components/TableOfContents/TableOfContents.tsx index d18265415b..3da5b95b15 100644 --- a/docs-ui/src/components/TableOfContents/TableOfContents.tsx +++ b/docs-ui/src/components/TableOfContents/TableOfContents.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useEffect, useState } from 'react'; +import { useEffect, useState, useLayoutEffect } from 'react'; import { usePathname } from 'next/navigation'; import styles from './TableOfContents.module.css'; @@ -17,6 +17,29 @@ export function TableOfContents() { const [indicatorHeight, setIndicatorHeight] = useState(0); const pathname = usePathname(); + // Update indicator position when activeId changes + useLayoutEffect(() => { + if (!activeId) return; + + // Use requestAnimationFrame to defer setState call + const rafId = requestAnimationFrame(() => { + const activeElement = document.querySelector( + `[data-toc-id="${activeId}"]`, + ) as HTMLElement; + if (activeElement) { + const list = activeElement.closest('ul'); + if (list) { + const listRect = list.getBoundingClientRect(); + const elementRect = activeElement.getBoundingClientRect(); + setIndicatorTop(elementRect.top - listRect.top); + setIndicatorHeight(elementRect.height); + } + } + }); + + return () => cancelAnimationFrame(rafId); + }, [activeId, headings]); + useEffect(() => { // Extract all H2 and H3 headings from the document const elements = Array.from( @@ -29,18 +52,6 @@ export function TableOfContents() { level: parseInt(element.tagName.substring(1)), })); - setHeadings(headingData); - - // Set initial active heading (first visible heading or first heading) - if (headingData.length > 0) { - const viewportTop = window.scrollY + 100; // offset for header - const visibleHeading = elements.find(element => { - const rect = element.getBoundingClientRect(); - return rect.top + window.scrollY >= viewportTop - 200; - }); - setActiveId(visibleHeading?.id || headingData[0].id); - } - // Set up IntersectionObserver to track visible headings const observerOptions = { rootMargin: '-80px 0px -80% 0px', @@ -62,29 +73,26 @@ export function TableOfContents() { elements.forEach(element => observer.observe(element)); + // Initialize headings and active ID after observer is set up + requestAnimationFrame(() => { + setHeadings(headingData); + + // Set initial active heading (first visible heading or first heading) + if (headingData.length > 0) { + const viewportTop = window.scrollY + 100; // offset for header + const visibleHeading = elements.find(element => { + const rect = element.getBoundingClientRect(); + return rect.top + window.scrollY >= viewportTop - 200; + }); + setActiveId(visibleHeading?.id || headingData[0].id); + } + }); + return () => { elements.forEach(element => observer.unobserve(element)); }; }, [pathname]); - // Update indicator position when activeId changes - useEffect(() => { - if (activeId) { - const activeElement = document.querySelector( - `[data-toc-id="${activeId}"]`, - ) as HTMLElement; - if (activeElement) { - const list = activeElement.closest('ul'); - if (list) { - const listRect = list.getBoundingClientRect(); - const elementRect = activeElement.getBoundingClientRect(); - setIndicatorTop(elementRect.top - listRect.top); - setIndicatorHeight(elementRect.height); - } - } - } - }, [activeId, headings]); - const handleClick = (id: string) => { const element = document.getElementById(id); if (element) { diff --git a/docs-ui/src/utils/playground-context.tsx b/docs-ui/src/utils/playground-context.tsx index a1cee6ecba..f4496787a5 100644 --- a/docs-ui/src/utils/playground-context.tsx +++ b/docs-ui/src/utils/playground-context.tsx @@ -22,13 +22,13 @@ const PlaygroundContext = createContext<{ setSelectedThemeName: (themeName: ThemeName) => void; }>({ selectedScreenSizes: [], - setSelectedScreenSizes: () => {}, + setSelectedScreenSizes: () => { }, selectedComponents: [], - setSelectedComponents: () => {}, + setSelectedComponents: () => { }, selectedTheme: new Set(['light']), - setSelectedTheme: () => {}, + setSelectedTheme: () => { }, selectedThemeName: 'backstage', - setSelectedThemeName: () => {}, + setSelectedThemeName: () => { }, }); // Create a provider component @@ -40,37 +40,30 @@ export const PlaygroundProvider = ({ children }: { children: ReactNode }) => { const [selectedComponents, setSelectedComponents] = useState( components.map(component => component.slug), ); - const [selectedTheme, setSelectedTheme] = useState>( - new Set(['light']), - ); - const [selectedThemeName, setSelectedThemeName] = - useState('backstage'); - // Load saved theme from localStorage after hydration - useEffect(() => { - if (isBrowser) { + // Use lazy initialization to load from localStorage + const [selectedTheme, setSelectedTheme] = useState>(() => { + if (typeof window !== 'undefined') { const savedThemeString = localStorage.getItem('theme-mode'); if (savedThemeString) { - // Parse the comma-separated string back into a Set const themeArray = savedThemeString .split(',') .filter(Boolean) as Theme[]; - setSelectedTheme(new Set(themeArray)); - } else { - setSelectedTheme(new Set(['light'])); + return new Set(themeArray); } } - }, [isBrowser]); + return new Set(['light']); + }); - // Load saved theme name from localStorage after hydration - useEffect(() => { - if (isBrowser) { + const [selectedThemeName, setSelectedThemeName] = useState(() => { + if (typeof window !== 'undefined') { const savedThemeName = localStorage.getItem('theme-name') as ThemeName; if (savedThemeName) { - setSelectedThemeName(savedThemeName); + return savedThemeName; } } - }, [isBrowser]); + return 'backstage'; + }); useEffect(() => { if (isBrowser) { From 73b56cc9c4873466f87d2d642b00050dcfede05b Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Thu, 29 Jan 2026 15:10:00 +0000 Subject: [PATCH 062/107] Move theme CSS files from public to src and fix imports Next.js cannot import CSS from the /public directory - it's for static assets only. Moved theme-backstage.css and theme-spotify.css from /public to /src/css and updated imports to use proper relative paths. This fixes the @next/next/no-css-tags ESLint warnings and follows Next.js best practices for CSS imports. Signed-off-by: Charles de Dreuille --- docs-ui/src/app/layout.tsx | 7 +++---- docs-ui/{public => src/css}/theme-backstage.css | 0 docs-ui/{public => src/css}/theme-spotify.css | 0 3 files changed, 3 insertions(+), 4 deletions(-) rename docs-ui/{public => src/css}/theme-backstage.css (100%) rename docs-ui/{public => src/css}/theme-spotify.css (100%) diff --git a/docs-ui/src/app/layout.tsx b/docs-ui/src/app/layout.tsx index 3647c572f5..d6a36ef9ac 100644 --- a/docs-ui/src/app/layout.tsx +++ b/docs-ui/src/app/layout.tsx @@ -8,6 +8,9 @@ import { MobileBottomNav } from '@/components/MobileBottomNav'; import styles from './layout.module.css'; import '../css/globals.css'; +import '../css/theme-backstage.css'; +import '../css/theme-spotify.css'; + export const metadata: Metadata = { title: 'Backstage UI', @@ -47,10 +50,6 @@ export default async function RootLayout({ data-theme-name="backstage" suppressHydrationWarning > - - - - diff --git a/docs-ui/public/theme-backstage.css b/docs-ui/src/css/theme-backstage.css similarity index 100% rename from docs-ui/public/theme-backstage.css rename to docs-ui/src/css/theme-backstage.css diff --git a/docs-ui/public/theme-spotify.css b/docs-ui/src/css/theme-spotify.css similarity index 100% rename from docs-ui/public/theme-spotify.css rename to docs-ui/src/css/theme-spotify.css From 29006ec722dc3d7749bc783015605a9d521200dd Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Thu, 29 Jan 2026 15:14:03 +0000 Subject: [PATCH 063/107] Update sync-css script to output to src/css instead of public Changed the CSS sync script to output theme files to src/css/ instead of public/, matching the new location for theme CSS files. Updated variable names from publicPath to outputPath for clarity and updated log messages to reflect the correct output location. Signed-off-by: Charles de Dreuille --- docs-ui/scripts/sync-css.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs-ui/scripts/sync-css.js b/docs-ui/scripts/sync-css.js index d68a852ce0..a9c228ac27 100644 --- a/docs-ui/scripts/sync-css.js +++ b/docs-ui/scripts/sync-css.js @@ -6,7 +6,7 @@ const chokidar = require('chokidar'); // Configuration const config = { UIPath: '../../packages/ui', - publicPath: '../public', + outputPath: '../src/css', files: [ { source: 'css/styles.css', @@ -24,13 +24,13 @@ const config = { class CSSSync { constructor() { this.UIPath = path.resolve(__dirname, config.UIPath); - this.publicPath = path.resolve(__dirname, config.publicPath); + this.outputPath = path.resolve(__dirname, config.outputPath); this.isWatching = process.argv.includes('--watch'); } async syncFile(fileConfig) { const sourcePath = path.join(this.UIPath, fileConfig.source); - const destPath = path.join(this.publicPath, fileConfig.destination); + const destPath = path.join(this.outputPath, fileConfig.destination); try { // Check if source file exists @@ -76,9 +76,9 @@ class CSSSync { ); if (successCount > 0) { - console.log('\n📁 Available CSS files in public/:'); + console.log('\n📁 Available CSS files in src/css/:'); config.files.forEach(file => { - const destPath = path.join(this.publicPath, file.destination); + const destPath = path.join(this.outputPath, file.destination); if (fs.existsSync(destPath)) { const stats = fs.statSync(destPath); const size = (stats.size / 1024).toFixed(2); @@ -129,7 +129,7 @@ class CSSSync { async run() { console.log('🎨 BUI CSS Sync Tool\n'); console.log(`📂 BUI path: ${this.UIPath}`); - console.log(`📂 Public path: ${this.publicPath}\n`); + console.log(`📂 Output path: ${this.outputPath}\n`); // Initial sync await this.syncAll(); From 62a3add97f475bb92759ee1664f73c2136b26c4e Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Thu, 29 Jan 2026 15:15:23 +0000 Subject: [PATCH 064/107] Fix some other issues Signed-off-by: Charles de Dreuille --- docs-ui/scripts/sync-changelog.mjs | 1 - docs-ui/src/components/TableOfContents/TableOfContents.tsx | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/docs-ui/scripts/sync-changelog.mjs b/docs-ui/scripts/sync-changelog.mjs index 0745979430..fa59db741b 100644 --- a/docs-ui/scripts/sync-changelog.mjs +++ b/docs-ui/scripts/sync-changelog.mjs @@ -1,5 +1,4 @@ #!/usr/bin/env node -/* eslint-disable no-restricted-syntax */ import fs from 'fs'; import path from 'path'; diff --git a/docs-ui/src/components/TableOfContents/TableOfContents.tsx b/docs-ui/src/components/TableOfContents/TableOfContents.tsx index 3da5b95b15..429d677b80 100644 --- a/docs-ui/src/components/TableOfContents/TableOfContents.tsx +++ b/docs-ui/src/components/TableOfContents/TableOfContents.tsx @@ -20,7 +20,7 @@ export function TableOfContents() { // Update indicator position when activeId changes useLayoutEffect(() => { if (!activeId) return; - + // Use requestAnimationFrame to defer setState call const rafId = requestAnimationFrame(() => { const activeElement = document.querySelector( From 5a2c4bbe8f1a170ff6e3d816361f8de85fbc583c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 Jan 2026 15:16:24 +0000 Subject: [PATCH 065/107] chore(deps): update dependency isomorphic-git to v1.36.3 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0462f8a3d9..75dacfbdfc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -35209,8 +35209,8 @@ __metadata: linkType: hard "isomorphic-git@npm:^1.23.0": - version: 1.36.1 - resolution: "isomorphic-git@npm:1.36.1" + version: 1.36.3 + resolution: "isomorphic-git@npm:1.36.3" dependencies: async-lock: "npm:^1.4.1" clean-git-ref: "npm:^2.0.1" @@ -35225,7 +35225,7 @@ __metadata: simple-get: "npm:^4.0.1" bin: isogit: cli.cjs - checksum: 10/f68670b53c5216284afe785f5327dcedffb99dcbe947b338e1f3b20338382506561ef178b77391d2ce95f16912eb8035b2b4d3d52d832cf1cd86ceabc9b9174a + checksum: 10/b6295326773ed3ba4b0f7abb7470c65f11de8b9e19ff0b8e58d85575491a461fae600a579e5de91c15398144eefec3f95c99082ac2c866abbc66e0dd225273c8 languageName: node linkType: hard From 088ec1fa25ce532ce3cc268a64f1a9e936756cc5 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Thu, 29 Jan 2026 15:30:01 +0000 Subject: [PATCH 066/107] Prettier Signed-off-by: Charles de Dreuille --- docs-ui/src/app/layout.tsx | 1 - docs-ui/src/css/theme-backstage.css | 7189 +++++++++++++++++++++- docs-ui/src/css/theme-spotify.css | 244 +- docs-ui/src/utils/playground-context.tsx | 8 +- 4 files changed, 7435 insertions(+), 7 deletions(-) diff --git a/docs-ui/src/app/layout.tsx b/docs-ui/src/app/layout.tsx index d6a36ef9ac..015ee8346c 100644 --- a/docs-ui/src/app/layout.tsx +++ b/docs-ui/src/app/layout.tsx @@ -11,7 +11,6 @@ import '../css/globals.css'; import '../css/theme-backstage.css'; import '../css/theme-spotify.css'; - export const metadata: Metadata = { title: 'Backstage UI', description: 'UI library for Backstage', diff --git a/docs-ui/src/css/theme-backstage.css b/docs-ui/src/css/theme-backstage.css index 2f444f2257..f3bf8bf83a 100644 --- a/docs-ui/src/css/theme-backstage.css +++ b/docs-ui/src/css/theme-backstage.css @@ -1 +1,7188 @@ -@layer tokens{:root{--bui-font-regular:system-ui;--bui-font-monospace:ui-monospace,"Menlo","Monaco","Consolas","Liberation Mono","Courier New",monospace;--bui-font-weight-regular:400;--bui-font-weight-bold:600;--bui-font-size-1:.625rem;--bui-font-size-2:.75rem;--bui-font-size-3:.875rem;--bui-font-size-4:1rem;--bui-font-size-5:1.25rem;--bui-font-size-6:1.5rem;--bui-font-size-7:2rem;--bui-font-size-8:3rem;--bui-font-size-9:4rem;--bui-font-size-10:5.75rem;--bui-space:.25rem;--bui-space-0_5:calc(var(--bui-space)*.5);--bui-space-1:var(--bui-space);--bui-space-1_5:calc(var(--bui-space)*1.5);--bui-space-2:calc(var(--bui-space)*2);--bui-space-3:calc(var(--bui-space)*3);--bui-space-4:calc(var(--bui-space)*4);--bui-space-5:calc(var(--bui-space)*5);--bui-space-6:calc(var(--bui-space)*6);--bui-space-7:calc(var(--bui-space)*7);--bui-space-8:calc(var(--bui-space)*8);--bui-space-9:calc(var(--bui-space)*9);--bui-space-10:calc(var(--bui-space)*10);--bui-space-11:calc(var(--bui-space)*11);--bui-space-12:calc(var(--bui-space)*12);--bui-space-13:calc(var(--bui-space)*13);--bui-space-14:calc(var(--bui-space)*14);--bui-radius-1:calc(.125rem);--bui-radius-2:calc(.25rem);--bui-radius-3:calc(.5rem);--bui-radius-4:calc(.75rem);--bui-radius-5:calc(1rem);--bui-radius-6:calc(1.25rem);--bui-radius-full:9999px;--bui-black:#000;--bui-white:#fff;--bui-gray-1:#f8f8f8;--bui-gray-2:#ececec;--bui-gray-3:#d9d9d9;--bui-gray-4:#c1c1c1;--bui-gray-5:#9e9e9e;--bui-gray-6:#8c8c8c;--bui-gray-7:#757575;--bui-gray-8:#595959;--bui-bg-surface-0:var(--bui-gray-1);--bui-bg-surface-1:var(--bui-white);--bui-bg-surface-2:var(--bui-gray-1);--bui-bg-surface-3:var(--bui-gray-2);--bui-bg-solid:#1f5493;--bui-bg-solid-hover:#163a66;--bui-bg-solid-pressed:#0f2b4e;--bui-bg-solid-disabled:#163a66;--bui-bg-neutral-on-surface-0:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-0-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-0-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-0-disabled:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-1:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-1-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-1-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-1-disabled:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-2:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-2-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-2-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-2-disabled:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-3:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-3-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-3-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-3-disabled:oklch(0% 0 0/.06);--bui-bg-danger:#ffe2e2;--bui-bg-warning:#ffedd5;--bui-bg-success:#dcfce7;--bui-bg-info:#dbeafe;--bui-fg-primary:var(--bui-black);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-link:#1f5493;--bui-fg-link-hover:#1f2d5c;--bui-fg-disabled:#9e9e9e;--bui-fg-solid:var(--bui-white);--bui-fg-solid-disabled:#98a8bc;--bui-fg-tint:#1f5493;--bui-fg-tint-disabled:var(--bui-gray-5);--bui-fg-danger:#991919;--bui-fg-warning:#92310a;--bui-fg-success:#116932;--bui-fg-info:#173da6;--bui-border:#0000001a;--bui-border-hover:#0003;--bui-border-pressed:#0006;--bui-border-disabled:#0000001a;--bui-border-info:#7ea9d6;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#1f5493;--bui-scrollbar:#a0a0a03b;--bui-scrollbar-thumb:#a0a0a0;--bui-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--bui-animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite}[data-theme-mode=dark]{--bui-gray-1:#191919;--bui-gray-2:#242424;--bui-gray-3:#373737;--bui-gray-4:#464646;--bui-gray-5:#575757;--bui-gray-6:#7b7b7b;--bui-gray-7:#9e9e9e;--bui-gray-8:#b4b4b4;--bui-bg-surface-0:#333;--bui-bg-surface-1:var(--bui-gray-1);--bui-bg-surface-2:var(--bui-gray-2);--bui-bg-surface-3:var(--bui-gray-3);--bui-bg-solid:#9cc9ff;--bui-bg-solid-hover:#83b9fd;--bui-bg-solid-pressed:#83b9fd;--bui-bg-solid-disabled:#1b3d68;--bui-bg-neutral-on-surface-0:oklch(100% 0 0/.1);--bui-bg-neutral-on-surface-0-hover:oklch(100% 0 0/.14);--bui-bg-neutral-on-surface-0-pressed:oklch(100% 0 0/.2);--bui-bg-neutral-on-surface-0-disabled:oklch(100% 0 0/.1);--bui-bg-neutral-on-surface-1:oklch(100% 0 0/.06);--bui-bg-neutral-on-surface-1-hover:oklch(100% 0 0/.1);--bui-bg-neutral-on-surface-1-pressed:oklch(100% 0 0/.16);--bui-bg-neutral-on-surface-1-disabled:oklch(100% 0 0/.06);--bui-bg-neutral-on-surface-2:oklch(100% 0 0/.08);--bui-bg-neutral-on-surface-2-hover:oklch(100% 0 0/.12);--bui-bg-neutral-on-surface-2-pressed:oklch(100% 0 0/.2);--bui-bg-neutral-on-surface-2-disabled:oklch(100% 0 0/.08);--bui-bg-neutral-on-surface-3:oklch(100% 0 0/.08);--bui-bg-neutral-on-surface-3-hover:oklch(100% 0 0/.12);--bui-bg-neutral-on-surface-3-pressed:oklch(100% 0 0/.2);--bui-bg-neutral-on-surface-3-disabled:oklch(100% 0 0/.08);--bui-bg-danger:#300c0c;--bui-bg-warning:#302008;--bui-bg-success:#042713;--bui-bg-info:#132049;--bui-fg-primary:var(--bui-white);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-link:#9cc9ff;--bui-fg-link-hover:#7eb5f7;--bui-fg-disabled:var(--bui-gray-7);--bui-fg-solid:#101821;--bui-fg-solid-disabled:#6191cc;--bui-fg-tint:#9cc9ff;--bui-fg-tint-disabled:var(--bui-gray-5);--bui-fg-danger:#fca5a5;--bui-fg-warning:#fdba74;--bui-fg-success:#86efac;--bui-fg-info:#a3cfff;--bui-border:#ffffff1f;--bui-border-hover:#fff6;--bui-border-pressed:#ffffff80;--bui-border-disabled:#fff3;--bui-border-info:#7ea9d6;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#1f5493;--bui-scrollbar:#3636363a;--bui-scrollbar-thumb:#575757;--bui-shadow:none}}@layer base{*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;tab-size:4;font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;line-height:1.15}body{margin:0}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{border-color:currentColor}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}:where(a){color:inherit;text-decoration:none}@keyframes pulse{50%{opacity:.5}}body{background-color:var(--bui-bg-surface-0);color:var(--bui-fg-primary);font-family:var(--bui-font-regular);font-weight:var(--bui-font-weight-regular);font-size:var(--bui-font-size-3);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[data-theme-mode=dark]{color-scheme:dark}[data-theme-mode=light]{color-scheme:light}}@layer components;@layer utilities{.bui-p{padding:var(--p)}.bui-p-0\.5{padding:var(--bui-space-0_5)}.bui-p-1{padding:var(--bui-space-1)}.bui-p-1\.5{padding:var(--bui-space-1_5)}.bui-p-2{padding:var(--bui-space-2)}.bui-p-3{padding:var(--bui-space-3)}.bui-p-4{padding:var(--bui-space-4)}.bui-p-5{padding:var(--bui-space-5)}.bui-p-6{padding:var(--bui-space-6)}.bui-p-7{padding:var(--bui-space-7)}.bui-p-8{padding:var(--bui-space-8)}.bui-p-9{padding:var(--bui-space-9)}.bui-p-10{padding:var(--bui-space-10)}.bui-p-11{padding:var(--bui-space-11)}.bui-p-12{padding:var(--bui-space-12)}.bui-p-13{padding:var(--bui-space-13)}.bui-p-14{padding:var(--bui-space-14)}@media (width>=640px){.xs\:bui-p{padding:var(--p-xs)}.xs\:bui-p-0\.5{padding:var(--bui-space-0_5)}.xs\:bui-p-1{padding:var(--bui-space-1)}.xs\:bui-p-1\.5{padding:var(--bui-space-1_5)}.xs\:bui-p-2{padding:var(--bui-space-2)}.xs\:bui-p-3{padding:var(--bui-space-3)}.xs\:bui-p-4{padding:var(--bui-space-4)}.xs\:bui-p-5{padding:var(--bui-space-5)}.xs\:bui-p-6{padding:var(--bui-space-6)}.xs\:bui-p-7{padding:var(--bui-space-7)}.xs\:bui-p-8{padding:var(--bui-space-8)}.xs\:bui-p-9{padding:var(--bui-space-9)}.xs\:bui-p-10{padding:var(--bui-space-10)}.xs\:bui-p-11{padding:var(--bui-space-11)}.xs\:bui-p-12{padding:var(--bui-space-12)}.xs\:bui-p-13{padding:var(--bui-space-13)}.xs\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-p{padding:var(--p-sm)}.sm\:bui-p-0\.5{padding:var(--bui-space-0_5)}.sm\:bui-p-1{padding:var(--bui-space-1)}.sm\:bui-p-1\.5{padding:var(--bui-space-1_5)}.sm\:bui-p-2{padding:var(--bui-space-2)}.sm\:bui-p-3{padding:var(--bui-space-3)}.sm\:bui-p-4{padding:var(--bui-space-4)}.sm\:bui-p-5{padding:var(--bui-space-5)}.sm\:bui-p-6{padding:var(--bui-space-6)}.sm\:bui-p-7{padding:var(--bui-space-7)}.sm\:bui-p-8{padding:var(--bui-space-8)}.sm\:bui-p-9{padding:var(--bui-space-9)}.sm\:bui-p-10{padding:var(--bui-space-10)}.sm\:bui-p-11{padding:var(--bui-space-11)}.sm\:bui-p-12{padding:var(--bui-space-12)}.sm\:bui-p-13{padding:var(--bui-space-13)}.sm\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-p{padding:var(--p-md)}.md\:bui-p-0\.5{padding:var(--bui-space-0_5)}.md\:bui-p-1{padding:var(--bui-space-1)}.md\:bui-p-1\.5{padding:var(--bui-space-1_5)}.md\:bui-p-2{padding:var(--bui-space-2)}.md\:bui-p-3{padding:var(--bui-space-3)}.md\:bui-p-4{padding:var(--bui-space-4)}.md\:bui-p-5{padding:var(--bui-space-5)}.md\:bui-p-6{padding:var(--bui-space-6)}.md\:bui-p-7{padding:var(--bui-space-7)}.md\:bui-p-8{padding:var(--bui-space-8)}.md\:bui-p-9{padding:var(--bui-space-9)}.md\:bui-p-10{padding:var(--bui-space-10)}.md\:bui-p-11{padding:var(--bui-space-11)}.md\:bui-p-12{padding:var(--bui-space-12)}.md\:bui-p-13{padding:var(--bui-space-13)}.md\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-p{padding:var(--p-lg)}.lg\:bui-p-0\.5{padding:var(--bui-space-0_5)}.lg\:bui-p-1{padding:var(--bui-space-1)}.lg\:bui-p-1\.5{padding:var(--bui-space-1_5)}.lg\:bui-p-2{padding:var(--bui-space-2)}.lg\:bui-p-3{padding:var(--bui-space-3)}.lg\:bui-p-4{padding:var(--bui-space-4)}.lg\:bui-p-5{padding:var(--bui-space-5)}.lg\:bui-p-6{padding:var(--bui-space-6)}.lg\:bui-p-7{padding:var(--bui-space-7)}.lg\:bui-p-8{padding:var(--bui-space-8)}.lg\:bui-p-9{padding:var(--bui-space-9)}.lg\:bui-p-10{padding:var(--bui-space-10)}.lg\:bui-p-11{padding:var(--bui-space-11)}.lg\:bui-p-12{padding:var(--bui-space-12)}.lg\:bui-p-13{padding:var(--bui-space-13)}.lg\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-p{padding:var(--p-xl)}.xl\:bui-p-0\.5{padding:var(--bui-space-0_5)}.xl\:bui-p-1{padding:var(--bui-space-1)}.xl\:bui-p-1\.5{padding:var(--bui-space-1_5)}.xl\:bui-p-2{padding:var(--bui-space-2)}.xl\:bui-p-3{padding:var(--bui-space-3)}.xl\:bui-p-4{padding:var(--bui-space-4)}.xl\:bui-p-5{padding:var(--bui-space-5)}.xl\:bui-p-6{padding:var(--bui-space-6)}.xl\:bui-p-7{padding:var(--bui-space-7)}.xl\:bui-p-8{padding:var(--bui-space-8)}.xl\:bui-p-9{padding:var(--bui-space-9)}.xl\:bui-p-10{padding:var(--bui-space-10)}.xl\:bui-p-11{padding:var(--bui-space-11)}.xl\:bui-p-12{padding:var(--bui-space-12)}.xl\:bui-p-13{padding:var(--bui-space-13)}.xl\:bui-p-14{padding:var(--bui-space-14)}}.bui-pl{padding-left:var(--pl)}.bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.bui-pl-1{padding-left:var(--bui-space-1)}.bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.bui-pl-2{padding-left:var(--bui-space-2)}.bui-pl-3{padding-left:var(--bui-space-3)}.bui-pl-4{padding-left:var(--bui-space-4)}.bui-pl-5{padding-left:var(--bui-space-5)}.bui-pl-6{padding-left:var(--bui-space-6)}.bui-pl-7{padding-left:var(--bui-space-7)}.bui-pl-8{padding-left:var(--bui-space-8)}.bui-pl-9{padding-left:var(--bui-space-9)}.bui-pl-10{padding-left:var(--bui-space-10)}.bui-pl-11{padding-left:var(--bui-space-11)}.bui-pl-12{padding-left:var(--bui-space-12)}.bui-pl-13{padding-left:var(--bui-space-13)}.bui-pl-14{padding-left:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pl{padding-left:var(--pl-xs)}.xs\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.xs\:bui-pl-1{padding-left:var(--bui-space-1)}.xs\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.xs\:bui-pl-2{padding-left:var(--bui-space-2)}.xs\:bui-pl-3{padding-left:var(--bui-space-3)}.xs\:bui-pl-4{padding-left:var(--bui-space-4)}.xs\:bui-pl-5{padding-left:var(--bui-space-5)}.xs\:bui-pl-6{padding-left:var(--bui-space-6)}.xs\:bui-pl-7{padding-left:var(--bui-space-7)}.xs\:bui-pl-8{padding-left:var(--bui-space-8)}.xs\:bui-pl-9{padding-left:var(--bui-space-9)}.xs\:bui-pl-10{padding-left:var(--bui-space-10)}.xs\:bui-pl-11{padding-left:var(--bui-space-11)}.xs\:bui-pl-12{padding-left:var(--bui-space-12)}.xs\:bui-pl-13{padding-left:var(--bui-space-13)}.xs\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pl{padding-left:var(--pl-sm)}.sm\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.sm\:bui-pl-1{padding-left:var(--bui-space-1)}.sm\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.sm\:bui-pl-2{padding-left:var(--bui-space-2)}.sm\:bui-pl-3{padding-left:var(--bui-space-3)}.sm\:bui-pl-4{padding-left:var(--bui-space-4)}.sm\:bui-pl-5{padding-left:var(--bui-space-5)}.sm\:bui-pl-6{padding-left:var(--bui-space-6)}.sm\:bui-pl-7{padding-left:var(--bui-space-7)}.sm\:bui-pl-8{padding-left:var(--bui-space-8)}.sm\:bui-pl-9{padding-left:var(--bui-space-9)}.sm\:bui-pl-10{padding-left:var(--bui-space-10)}.sm\:bui-pl-11{padding-left:var(--bui-space-11)}.sm\:bui-pl-12{padding-left:var(--bui-space-12)}.sm\:bui-pl-13{padding-left:var(--bui-space-13)}.sm\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pl{padding-left:var(--pl-md)}.md\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.md\:bui-pl-1{padding-left:var(--bui-space-1)}.md\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.md\:bui-pl-2{padding-left:var(--bui-space-2)}.md\:bui-pl-3{padding-left:var(--bui-space-3)}.md\:bui-pl-4{padding-left:var(--bui-space-4)}.md\:bui-pl-5{padding-left:var(--bui-space-5)}.md\:bui-pl-6{padding-left:var(--bui-space-6)}.md\:bui-pl-7{padding-left:var(--bui-space-7)}.md\:bui-pl-8{padding-left:var(--bui-space-8)}.md\:bui-pl-9{padding-left:var(--bui-space-9)}.md\:bui-pl-10{padding-left:var(--bui-space-10)}.md\:bui-pl-11{padding-left:var(--bui-space-11)}.md\:bui-pl-12{padding-left:var(--bui-space-12)}.md\:bui-pl-13{padding-left:var(--bui-space-13)}.md\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pl{padding-left:var(--pl-lg)}.lg\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.lg\:bui-pl-1{padding-left:var(--bui-space-1)}.lg\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.lg\:bui-pl-2{padding-left:var(--bui-space-2)}.lg\:bui-pl-3{padding-left:var(--bui-space-3)}.lg\:bui-pl-4{padding-left:var(--bui-space-4)}.lg\:bui-pl-5{padding-left:var(--bui-space-5)}.lg\:bui-pl-6{padding-left:var(--bui-space-6)}.lg\:bui-pl-7{padding-left:var(--bui-space-7)}.lg\:bui-pl-8{padding-left:var(--bui-space-8)}.lg\:bui-pl-9{padding-left:var(--bui-space-9)}.lg\:bui-pl-10{padding-left:var(--bui-space-10)}.lg\:bui-pl-11{padding-left:var(--bui-space-11)}.lg\:bui-pl-12{padding-left:var(--bui-space-12)}.lg\:bui-pl-13{padding-left:var(--bui-space-13)}.lg\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pl{padding-left:var(--pl-xl)}.xl\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.xl\:bui-pl-1{padding-left:var(--bui-space-1)}.xl\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.xl\:bui-pl-2{padding-left:var(--bui-space-2)}.xl\:bui-pl-3{padding-left:var(--bui-space-3)}.xl\:bui-pl-4{padding-left:var(--bui-space-4)}.xl\:bui-pl-5{padding-left:var(--bui-space-5)}.xl\:bui-pl-6{padding-left:var(--bui-space-6)}.xl\:bui-pl-7{padding-left:var(--bui-space-7)}.xl\:bui-pl-8{padding-left:var(--bui-space-8)}.xl\:bui-pl-9{padding-left:var(--bui-space-9)}.xl\:bui-pl-10{padding-left:var(--bui-space-10)}.xl\:bui-pl-11{padding-left:var(--bui-space-11)}.xl\:bui-pl-12{padding-left:var(--bui-space-12)}.xl\:bui-pl-13{padding-left:var(--bui-space-13)}.xl\:bui-pl-14{padding-left:var(--bui-space-14)}}.bui-pr{padding-right:var(--pr)}.bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.bui-pr-1{padding-right:var(--bui-space-1)}.bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.bui-pr-2{padding-right:var(--bui-space-2)}.bui-pr-3{padding-right:var(--bui-space-3)}.bui-pr-4{padding-right:var(--bui-space-4)}.bui-pr-5{padding-right:var(--bui-space-5)}.bui-pr-6{padding-right:var(--bui-space-6)}.bui-pr-7{padding-right:var(--bui-space-7)}.bui-pr-8{padding-right:var(--bui-space-8)}.bui-pr-9{padding-right:var(--bui-space-9)}.bui-pr-10{padding-right:var(--bui-space-10)}.bui-pr-11{padding-right:var(--bui-space-11)}.bui-pr-12{padding-right:var(--bui-space-12)}.bui-pr-13{padding-right:var(--bui-space-13)}.bui-pr-14{padding-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pr{padding-right:var(--pr-xs)}.xs\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.xs\:bui-pr-1{padding-right:var(--bui-space-1)}.xs\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.xs\:bui-pr-2{padding-right:var(--bui-space-2)}.xs\:bui-pr-3{padding-right:var(--bui-space-3)}.xs\:bui-pr-4{padding-right:var(--bui-space-4)}.xs\:bui-pr-5{padding-right:var(--bui-space-5)}.xs\:bui-pr-6{padding-right:var(--bui-space-6)}.xs\:bui-pr-7{padding-right:var(--bui-space-7)}.xs\:bui-pr-8{padding-right:var(--bui-space-8)}.xs\:bui-pr-9{padding-right:var(--bui-space-9)}.xs\:bui-pr-10{padding-right:var(--bui-space-10)}.xs\:bui-pr-11{padding-right:var(--bui-space-11)}.xs\:bui-pr-12{padding-right:var(--bui-space-12)}.xs\:bui-pr-13{padding-right:var(--bui-space-13)}.xs\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pr{padding-right:var(--pr-sm)}.sm\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.sm\:bui-pr-1{padding-right:var(--bui-space-1)}.sm\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.sm\:bui-pr-2{padding-right:var(--bui-space-2)}.sm\:bui-pr-3{padding-right:var(--bui-space-3)}.sm\:bui-pr-4{padding-right:var(--bui-space-4)}.sm\:bui-pr-5{padding-right:var(--bui-space-5)}.sm\:bui-pr-6{padding-right:var(--bui-space-6)}.sm\:bui-pr-7{padding-right:var(--bui-space-7)}.sm\:bui-pr-8{padding-right:var(--bui-space-8)}.sm\:bui-pr-9{padding-right:var(--bui-space-9)}.sm\:bui-pr-10{padding-right:var(--bui-space-10)}.sm\:bui-pr-11{padding-right:var(--bui-space-11)}.sm\:bui-pr-12{padding-right:var(--bui-space-12)}.sm\:bui-pr-13{padding-right:var(--bui-space-13)}.sm\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pr{padding-right:var(--pr-md)}.md\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.md\:bui-pr-1{padding-right:var(--bui-space-1)}.md\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.md\:bui-pr-2{padding-right:var(--bui-space-2)}.md\:bui-pr-3{padding-right:var(--bui-space-3)}.md\:bui-pr-4{padding-right:var(--bui-space-4)}.md\:bui-pr-5{padding-right:var(--bui-space-5)}.md\:bui-pr-6{padding-right:var(--bui-space-6)}.md\:bui-pr-7{padding-right:var(--bui-space-7)}.md\:bui-pr-8{padding-right:var(--bui-space-8)}.md\:bui-pr-9{padding-right:var(--bui-space-9)}.md\:bui-pr-10{padding-right:var(--bui-space-10)}.md\:bui-pr-11{padding-right:var(--bui-space-11)}.md\:bui-pr-12{padding-right:var(--bui-space-12)}.md\:bui-pr-13{padding-right:var(--bui-space-13)}.md\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pr{padding-right:var(--pr-lg)}.lg\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.lg\:bui-pr-1{padding-right:var(--bui-space-1)}.lg\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.lg\:bui-pr-2{padding-right:var(--bui-space-2)}.lg\:bui-pr-3{padding-right:var(--bui-space-3)}.lg\:bui-pr-4{padding-right:var(--bui-space-4)}.lg\:bui-pr-5{padding-right:var(--bui-space-5)}.lg\:bui-pr-6{padding-right:var(--bui-space-6)}.lg\:bui-pr-7{padding-right:var(--bui-space-7)}.lg\:bui-pr-8{padding-right:var(--bui-space-8)}.lg\:bui-pr-9{padding-right:var(--bui-space-9)}.lg\:bui-pr-10{padding-right:var(--bui-space-10)}.lg\:bui-pr-11{padding-right:var(--bui-space-11)}.lg\:bui-pr-12{padding-right:var(--bui-space-12)}.lg\:bui-pr-13{padding-right:var(--bui-space-13)}.lg\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pr{padding-right:var(--pr-xl)}.xl\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.xl\:bui-pr-1{padding-right:var(--bui-space-1)}.xl\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.xl\:bui-pr-2{padding-right:var(--bui-space-2)}.xl\:bui-pr-3{padding-right:var(--bui-space-3)}.xl\:bui-pr-4{padding-right:var(--bui-space-4)}.xl\:bui-pr-5{padding-right:var(--bui-space-5)}.xl\:bui-pr-6{padding-right:var(--bui-space-6)}.xl\:bui-pr-7{padding-right:var(--bui-space-7)}.xl\:bui-pr-8{padding-right:var(--bui-space-8)}.xl\:bui-pr-9{padding-right:var(--bui-space-9)}.xl\:bui-pr-10{padding-right:var(--bui-space-10)}.xl\:bui-pr-11{padding-right:var(--bui-space-11)}.xl\:bui-pr-12{padding-right:var(--bui-space-12)}.xl\:bui-pr-13{padding-right:var(--bui-space-13)}.xl\:bui-pr-14{padding-right:var(--bui-space-14)}}.bui-pt{padding-top:var(--pt)}.bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.bui-pt-1{padding-top:var(--bui-space-1)}.bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.bui-pt-2{padding-top:var(--bui-space-2)}.bui-pt-3{padding-top:var(--bui-space-3)}.bui-pt-4{padding-top:var(--bui-space-4)}.bui-pt-5{padding-top:var(--bui-space-5)}.bui-pt-6{padding-top:var(--bui-space-6)}.bui-pt-7{padding-top:var(--bui-space-7)}.bui-pt-8{padding-top:var(--bui-space-8)}.bui-pt-9{padding-top:var(--bui-space-9)}.bui-pt-10{padding-top:var(--bui-space-10)}.bui-pt-11{padding-top:var(--bui-space-11)}.bui-pt-12{padding-top:var(--bui-space-12)}.bui-pt-13{padding-top:var(--bui-space-13)}.bui-pt-14{padding-top:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pt{padding-top:var(--pt-xs)}.xs\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.xs\:bui-pt-1{padding-top:var(--bui-space-1)}.xs\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.xs\:bui-pt-2{padding-top:var(--bui-space-2)}.xs\:bui-pt-3{padding-top:var(--bui-space-3)}.xs\:bui-pt-4{padding-top:var(--bui-space-4)}.xs\:bui-pt-5{padding-top:var(--bui-space-5)}.xs\:bui-pt-6{padding-top:var(--bui-space-6)}.xs\:bui-pt-7{padding-top:var(--bui-space-7)}.xs\:bui-pt-8{padding-top:var(--bui-space-8)}.xs\:bui-pt-9{padding-top:var(--bui-space-9)}.xs\:bui-pt-10{padding-top:var(--bui-space-10)}.xs\:bui-pt-11{padding-top:var(--bui-space-11)}.xs\:bui-pt-12{padding-top:var(--bui-space-12)}.xs\:bui-pt-13{padding-top:var(--bui-space-13)}.xs\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pt{padding-top:var(--pt-sm)}.sm\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.sm\:bui-pt-1{padding-top:var(--bui-space-1)}.sm\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.sm\:bui-pt-2{padding-top:var(--bui-space-2)}.sm\:bui-pt-3{padding-top:var(--bui-space-3)}.sm\:bui-pt-4{padding-top:var(--bui-space-4)}.sm\:bui-pt-5{padding-top:var(--bui-space-5)}.sm\:bui-pt-6{padding-top:var(--bui-space-6)}.sm\:bui-pt-7{padding-top:var(--bui-space-7)}.sm\:bui-pt-8{padding-top:var(--bui-space-8)}.sm\:bui-pt-9{padding-top:var(--bui-space-9)}.sm\:bui-pt-10{padding-top:var(--bui-space-10)}.sm\:bui-pt-11{padding-top:var(--bui-space-11)}.sm\:bui-pt-12{padding-top:var(--bui-space-12)}.sm\:bui-pt-13{padding-top:var(--bui-space-13)}.sm\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pt{padding-top:var(--pt-md)}.md\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.md\:bui-pt-1{padding-top:var(--bui-space-1)}.md\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.md\:bui-pt-2{padding-top:var(--bui-space-2)}.md\:bui-pt-3{padding-top:var(--bui-space-3)}.md\:bui-pt-4{padding-top:var(--bui-space-4)}.md\:bui-pt-5{padding-top:var(--bui-space-5)}.md\:bui-pt-6{padding-top:var(--bui-space-6)}.md\:bui-pt-7{padding-top:var(--bui-space-7)}.md\:bui-pt-8{padding-top:var(--bui-space-8)}.md\:bui-pt-9{padding-top:var(--bui-space-9)}.md\:bui-pt-10{padding-top:var(--bui-space-10)}.md\:bui-pt-11{padding-top:var(--bui-space-11)}.md\:bui-pt-12{padding-top:var(--bui-space-12)}.md\:bui-pt-13{padding-top:var(--bui-space-13)}.md\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pt{padding-top:var(--pt-lg)}.lg\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.lg\:bui-pt-1{padding-top:var(--bui-space-1)}.lg\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.lg\:bui-pt-2{padding-top:var(--bui-space-2)}.lg\:bui-pt-3{padding-top:var(--bui-space-3)}.lg\:bui-pt-4{padding-top:var(--bui-space-4)}.lg\:bui-pt-5{padding-top:var(--bui-space-5)}.lg\:bui-pt-6{padding-top:var(--bui-space-6)}.lg\:bui-pt-7{padding-top:var(--bui-space-7)}.lg\:bui-pt-8{padding-top:var(--bui-space-8)}.lg\:bui-pt-9{padding-top:var(--bui-space-9)}.lg\:bui-pt-10{padding-top:var(--bui-space-10)}.lg\:bui-pt-11{padding-top:var(--bui-space-11)}.lg\:bui-pt-12{padding-top:var(--bui-space-12)}.lg\:bui-pt-13{padding-top:var(--bui-space-13)}.lg\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pt{padding-top:var(--pt-xl)}.xl\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.xl\:bui-pt-1{padding-top:var(--bui-space-1)}.xl\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.xl\:bui-pt-2{padding-top:var(--bui-space-2)}.xl\:bui-pt-3{padding-top:var(--bui-space-3)}.xl\:bui-pt-4{padding-top:var(--bui-space-4)}.xl\:bui-pt-5{padding-top:var(--bui-space-5)}.xl\:bui-pt-6{padding-top:var(--bui-space-6)}.xl\:bui-pt-7{padding-top:var(--bui-space-7)}.xl\:bui-pt-8{padding-top:var(--bui-space-8)}.xl\:bui-pt-9{padding-top:var(--bui-space-9)}.xl\:bui-pt-10{padding-top:var(--bui-space-10)}.xl\:bui-pt-11{padding-top:var(--bui-space-11)}.xl\:bui-pt-12{padding-top:var(--bui-space-12)}.xl\:bui-pt-13{padding-top:var(--bui-space-13)}.xl\:bui-pt-14{padding-top:var(--bui-space-14)}}.bui-pb{padding-bottom:var(--pb)}.bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.bui-pb-1{padding-bottom:var(--bui-space-1)}.bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.bui-pb-2{padding-bottom:var(--bui-space-2)}.bui-pb-3{padding-bottom:var(--bui-space-3)}.bui-pb-4{padding-bottom:var(--bui-space-4)}.bui-pb-5{padding-bottom:var(--bui-space-5)}.bui-pb-6{padding-bottom:var(--bui-space-6)}.bui-pb-7{padding-bottom:var(--bui-space-7)}.bui-pb-8{padding-bottom:var(--bui-space-8)}.bui-pb-9{padding-bottom:var(--bui-space-9)}.bui-pb-10{padding-bottom:var(--bui-space-10)}.bui-pb-11{padding-bottom:var(--bui-space-11)}.bui-pb-12{padding-bottom:var(--bui-space-12)}.bui-pb-13{padding-bottom:var(--bui-space-13)}.bui-pb-14{padding-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pb{padding-bottom:var(--pb-xs)}.xs\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.xs\:bui-pb-1{padding-bottom:var(--bui-space-1)}.xs\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.xs\:bui-pb-2{padding-bottom:var(--bui-space-2)}.xs\:bui-pb-3{padding-bottom:var(--bui-space-3)}.xs\:bui-pb-4{padding-bottom:var(--bui-space-4)}.xs\:bui-pb-5{padding-bottom:var(--bui-space-5)}.xs\:bui-pb-6{padding-bottom:var(--bui-space-6)}.xs\:bui-pb-7{padding-bottom:var(--bui-space-7)}.xs\:bui-pb-8{padding-bottom:var(--bui-space-8)}.xs\:bui-pb-9{padding-bottom:var(--bui-space-9)}.xs\:bui-pb-10{padding-bottom:var(--bui-space-10)}.xs\:bui-pb-11{padding-bottom:var(--bui-space-11)}.xs\:bui-pb-12{padding-bottom:var(--bui-space-12)}.xs\:bui-pb-13{padding-bottom:var(--bui-space-13)}.xs\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pb{padding-bottom:var(--pb-sm)}.sm\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.sm\:bui-pb-1{padding-bottom:var(--bui-space-1)}.sm\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.sm\:bui-pb-2{padding-bottom:var(--bui-space-2)}.sm\:bui-pb-3{padding-bottom:var(--bui-space-3)}.sm\:bui-pb-4{padding-bottom:var(--bui-space-4)}.sm\:bui-pb-5{padding-bottom:var(--bui-space-5)}.sm\:bui-pb-6{padding-bottom:var(--bui-space-6)}.sm\:bui-pb-7{padding-bottom:var(--bui-space-7)}.sm\:bui-pb-8{padding-bottom:var(--bui-space-8)}.sm\:bui-pb-9{padding-bottom:var(--bui-space-9)}.sm\:bui-pb-10{padding-bottom:var(--bui-space-10)}.sm\:bui-pb-11{padding-bottom:var(--bui-space-11)}.sm\:bui-pb-12{padding-bottom:var(--bui-space-12)}.sm\:bui-pb-13{padding-bottom:var(--bui-space-13)}.sm\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pb{padding-bottom:var(--pb-md)}.md\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.md\:bui-pb-1{padding-bottom:var(--bui-space-1)}.md\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.md\:bui-pb-2{padding-bottom:var(--bui-space-2)}.md\:bui-pb-3{padding-bottom:var(--bui-space-3)}.md\:bui-pb-4{padding-bottom:var(--bui-space-4)}.md\:bui-pb-5{padding-bottom:var(--bui-space-5)}.md\:bui-pb-6{padding-bottom:var(--bui-space-6)}.md\:bui-pb-7{padding-bottom:var(--bui-space-7)}.md\:bui-pb-8{padding-bottom:var(--bui-space-8)}.md\:bui-pb-9{padding-bottom:var(--bui-space-9)}.md\:bui-pb-10{padding-bottom:var(--bui-space-10)}.md\:bui-pb-11{padding-bottom:var(--bui-space-11)}.md\:bui-pb-12{padding-bottom:var(--bui-space-12)}.md\:bui-pb-13{padding-bottom:var(--bui-space-13)}.md\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pb{padding-bottom:var(--pb-lg)}.lg\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.lg\:bui-pb-1{padding-bottom:var(--bui-space-1)}.lg\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.lg\:bui-pb-2{padding-bottom:var(--bui-space-2)}.lg\:bui-pb-3{padding-bottom:var(--bui-space-3)}.lg\:bui-pb-4{padding-bottom:var(--bui-space-4)}.lg\:bui-pb-5{padding-bottom:var(--bui-space-5)}.lg\:bui-pb-6{padding-bottom:var(--bui-space-6)}.lg\:bui-pb-7{padding-bottom:var(--bui-space-7)}.lg\:bui-pb-8{padding-bottom:var(--bui-space-8)}.lg\:bui-pb-9{padding-bottom:var(--bui-space-9)}.lg\:bui-pb-10{padding-bottom:var(--bui-space-10)}.lg\:bui-pb-11{padding-bottom:var(--bui-space-11)}.lg\:bui-pb-12{padding-bottom:var(--bui-space-12)}.lg\:bui-pb-13{padding-bottom:var(--bui-space-13)}.lg\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pb{padding-bottom:var(--pb-xl)}.xl\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.xl\:bui-pb-1{padding-bottom:var(--bui-space-1)}.xl\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.xl\:bui-pb-2{padding-bottom:var(--bui-space-2)}.xl\:bui-pb-3{padding-bottom:var(--bui-space-3)}.xl\:bui-pb-4{padding-bottom:var(--bui-space-4)}.xl\:bui-pb-5{padding-bottom:var(--bui-space-5)}.xl\:bui-pb-6{padding-bottom:var(--bui-space-6)}.xl\:bui-pb-7{padding-bottom:var(--bui-space-7)}.xl\:bui-pb-8{padding-bottom:var(--bui-space-8)}.xl\:bui-pb-9{padding-bottom:var(--bui-space-9)}.xl\:bui-pb-10{padding-bottom:var(--bui-space-10)}.xl\:bui-pb-11{padding-bottom:var(--bui-space-11)}.xl\:bui-pb-12{padding-bottom:var(--bui-space-12)}.xl\:bui-pb-13{padding-bottom:var(--bui-space-13)}.xl\:bui-pb-14{padding-bottom:var(--bui-space-14)}}.bui-py{padding-top:var(--py);padding-bottom:var(--py)}.bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-py{padding-top:var(--py-xs);padding-bottom:var(--py-xs)}.xs\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.xs\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.xs\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.xs\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.xs\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.xs\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.xs\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.xs\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.xs\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.xs\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.xs\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.xs\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.xs\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.xs\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.xs\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.xs\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-py{padding-top:var(--py-sm);padding-bottom:var(--py-sm)}.sm\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.sm\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.sm\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.sm\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.sm\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.sm\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.sm\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.sm\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.sm\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.sm\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.sm\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.sm\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.sm\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.sm\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.sm\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.sm\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-py{padding-top:var(--py-md);padding-bottom:var(--py-md)}.md\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.md\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.md\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.md\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.md\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.md\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.md\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.md\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.md\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.md\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.md\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.md\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.md\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.md\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.md\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.md\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-py{padding-top:var(--py-lg);padding-bottom:var(--py-lg)}.lg\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.lg\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.lg\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.lg\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.lg\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.lg\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.lg\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.lg\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.lg\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.lg\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.lg\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.lg\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.lg\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.lg\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.lg\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.lg\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-py{padding-top:var(--py-xl);padding-bottom:var(--py-xl)}.xl\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.xl\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.xl\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.xl\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.xl\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.xl\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.xl\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.xl\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.xl\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.xl\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.xl\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.xl\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.xl\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.xl\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.xl\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.xl\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}.bui-px{padding-left:var(--px);padding-right:var(--px)}.bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-px{padding-left:var(--px-xs);padding-right:var(--px-xs)}.xs\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.xs\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.xs\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.xs\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.xs\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.xs\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.xs\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.xs\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.xs\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.xs\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.xs\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.xs\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.xs\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.xs\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.xs\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.xs\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-px{padding-left:var(--px-sm);padding-right:var(--px-sm)}.sm\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.sm\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.sm\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.sm\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.sm\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.sm\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.sm\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.sm\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.sm\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.sm\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.sm\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.sm\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.sm\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.sm\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.sm\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.sm\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-px{padding-left:var(--px-md);padding-right:var(--px-md)}.md\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.md\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.md\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.md\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.md\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.md\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.md\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.md\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.md\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.md\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.md\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.md\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.md\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.md\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.md\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.md\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-px{padding-left:var(--px-lg);padding-right:var(--px-lg)}.lg\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.lg\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.lg\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.lg\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.lg\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.lg\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.lg\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.lg\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.lg\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.lg\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.lg\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.lg\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.lg\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.lg\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.lg\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.lg\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-px{padding-left:var(--px-xl);padding-right:var(--px-xl)}.xl\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.xl\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.xl\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.xl\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.xl\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.xl\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.xl\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.xl\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.xl\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.xl\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.xl\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.xl\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.xl\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.xl\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.xl\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.xl\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}.bui-m{margin:var(--m)}.bui-m-0\.5{margin:var(--bui-space-0_5)}.bui-m-1{margin:var(--bui-space-1)}.bui-m-1\.5{margin:var(--bui-space-1_5)}.bui-m-2{margin:var(--bui-space-2)}.bui-m-3{margin:var(--bui-space-3)}.bui-m-4{margin:var(--bui-space-4)}.bui-m-5{margin:var(--bui-space-5)}.bui-m-6{margin:var(--bui-space-6)}.bui-m-7{margin:var(--bui-space-7)}.bui-m-8{margin:var(--bui-space-8)}.bui-m-9{margin:var(--bui-space-9)}.bui-m-10{margin:var(--bui-space-10)}.bui-m-11{margin:var(--bui-space-11)}.bui-m-12{margin:var(--bui-space-12)}.bui-m-13{margin:var(--bui-space-13)}.bui-m-14{margin:var(--bui-space-14)}@media (width>=640px){.xs\:bui-m{margin:var(--p-xs)}.xs\:bui-m-0\.5{margin:var(--bui-space-0_5)}.xs\:bui-m-1{margin:var(--bui-space-1)}.xs\:bui-m-1\.5{margin:var(--bui-space-1_5)}.xs\:bui-m-2{margin:var(--bui-space-2)}.xs\:bui-m-3{margin:var(--bui-space-3)}.xs\:bui-m-4{margin:var(--bui-space-4)}.xs\:bui-m-5{margin:var(--bui-space-5)}.xs\:bui-m-6{margin:var(--bui-space-6)}.xs\:bui-m-7{margin:var(--bui-space-7)}.xs\:bui-m-8{margin:var(--bui-space-8)}.xs\:bui-m-9{margin:var(--bui-space-9)}.xs\:bui-m-10{margin:var(--bui-space-10)}.xs\:bui-m-11{margin:var(--bui-space-11)}.xs\:bui-m-12{margin:var(--bui-space-12)}.xs\:bui-m-13{margin:var(--bui-space-13)}.xs\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-m{margin:var(--p-sm)}.sm\:bui-m-0\.5{margin:var(--bui-space-0_5)}.sm\:bui-m-1{margin:var(--bui-space-1)}.sm\:bui-m-1\.5{margin:var(--bui-space-1_5)}.sm\:bui-m-2{margin:var(--bui-space-2)}.sm\:bui-m-3{margin:var(--bui-space-3)}.sm\:bui-m-4{margin:var(--bui-space-4)}.sm\:bui-m-5{margin:var(--bui-space-5)}.sm\:bui-m-6{margin:var(--bui-space-6)}.sm\:bui-m-7{margin:var(--bui-space-7)}.sm\:bui-m-8{margin:var(--bui-space-8)}.sm\:bui-m-9{margin:var(--bui-space-9)}.sm\:bui-m-10{margin:var(--bui-space-10)}.sm\:bui-m-11{margin:var(--bui-space-11)}.sm\:bui-m-12{margin:var(--bui-space-12)}.sm\:bui-m-13{margin:var(--bui-space-13)}.sm\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-m{margin:var(--p-md)}.md\:bui-m-0\.5{margin:var(--bui-space-0_5)}.md\:bui-m-1{margin:var(--bui-space-1)}.md\:bui-m-1\.5{margin:var(--bui-space-1_5)}.md\:bui-m-2{margin:var(--bui-space-2)}.md\:bui-m-3{margin:var(--bui-space-3)}.md\:bui-m-4{margin:var(--bui-space-4)}.md\:bui-m-5{margin:var(--bui-space-5)}.md\:bui-m-6{margin:var(--bui-space-6)}.md\:bui-m-7{margin:var(--bui-space-7)}.md\:bui-m-8{margin:var(--bui-space-8)}.md\:bui-m-9{margin:var(--bui-space-9)}.md\:bui-m-10{margin:var(--bui-space-10)}.md\:bui-m-11{margin:var(--bui-space-11)}.md\:bui-m-12{margin:var(--bui-space-12)}.md\:bui-m-13{margin:var(--bui-space-13)}.md\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-m{margin:var(--p-lg)}.lg\:bui-m-0\.5{margin:var(--bui-space-0_5)}.lg\:bui-m-1{margin:var(--bui-space-1)}.lg\:bui-m-1\.5{margin:var(--bui-space-1_5)}.lg\:bui-m-2{margin:var(--bui-space-2)}.lg\:bui-m-3{margin:var(--bui-space-3)}.lg\:bui-m-4{margin:var(--bui-space-4)}.lg\:bui-m-5{margin:var(--bui-space-5)}.lg\:bui-m-6{margin:var(--bui-space-6)}.lg\:bui-m-7{margin:var(--bui-space-7)}.lg\:bui-m-8{margin:var(--bui-space-8)}.lg\:bui-m-9{margin:var(--bui-space-9)}.lg\:bui-m-10{margin:var(--bui-space-10)}.lg\:bui-m-11{margin:var(--bui-space-11)}.lg\:bui-m-12{margin:var(--bui-space-12)}.lg\:bui-m-13{margin:var(--bui-space-13)}.lg\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-m{margin:var(--p-xl)}.xl\:bui-m-0\.5{margin:var(--bui-space-0_5)}.xl\:bui-m-1{margin:var(--bui-space-1)}.xl\:bui-m-1\.5{margin:var(--bui-space-1_5)}.xl\:bui-m-2{margin:var(--bui-space-2)}.xl\:bui-m-3{margin:var(--bui-space-3)}.xl\:bui-m-4{margin:var(--bui-space-4)}.xl\:bui-m-5{margin:var(--bui-space-5)}.xl\:bui-m-6{margin:var(--bui-space-6)}.xl\:bui-m-7{margin:var(--bui-space-7)}.xl\:bui-m-8{margin:var(--bui-space-8)}.xl\:bui-m-9{margin:var(--bui-space-9)}.xl\:bui-m-10{margin:var(--bui-space-10)}.xl\:bui-m-11{margin:var(--bui-space-11)}.xl\:bui-m-12{margin:var(--bui-space-12)}.xl\:bui-m-13{margin:var(--bui-space-13)}.xl\:bui-m-14{margin:var(--bui-space-14)}}.bui-ml{margin-left:var(--ml)}.bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.bui-ml-1{margin-left:var(--bui-space-1)}.bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.bui-ml-2{margin-left:var(--bui-space-2)}.bui-ml-3{margin-left:var(--bui-space-3)}.bui-ml-4{margin-left:var(--bui-space-4)}.bui-ml-5{margin-left:var(--bui-space-5)}.bui-ml-6{margin-left:var(--bui-space-6)}.bui-ml-7{margin-left:var(--bui-space-7)}.bui-ml-8{margin-left:var(--bui-space-8)}.bui-ml-9{margin-left:var(--bui-space-9)}.bui-ml-10{margin-left:var(--bui-space-10)}.bui-ml-11{margin-left:var(--bui-space-11)}.bui-ml-12{margin-left:var(--bui-space-12)}.bui-ml-13{margin-left:var(--bui-space-13)}.bui-ml-14{margin-left:var(--bui-space-14)}@media (width>=640px){.xs\:bui-ml{margin-left:var(--ml-xs)}.xs\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.xs\:bui-ml-1{margin-left:var(--bui-space-1)}.xs\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.xs\:bui-ml-2{margin-left:var(--bui-space-2)}.xs\:bui-ml-3{margin-left:var(--bui-space-3)}.xs\:bui-ml-4{margin-left:var(--bui-space-4)}.xs\:bui-ml-5{margin-left:var(--bui-space-5)}.xs\:bui-ml-6{margin-left:var(--bui-space-6)}.xs\:bui-ml-7{margin-left:var(--bui-space-7)}.xs\:bui-ml-8{margin-left:var(--bui-space-8)}.xs\:bui-ml-9{margin-left:var(--bui-space-9)}.xs\:bui-ml-10{margin-left:var(--bui-space-10)}.xs\:bui-ml-11{margin-left:var(--bui-space-11)}.xs\:bui-ml-12{margin-left:var(--bui-space-12)}.xs\:bui-ml-13{margin-left:var(--bui-space-13)}.xs\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-ml{margin-left:var(--ml-sm)}.sm\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.sm\:bui-ml-1{margin-left:var(--bui-space-1)}.sm\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.sm\:bui-ml-2{margin-left:var(--bui-space-2)}.sm\:bui-ml-3{margin-left:var(--bui-space-3)}.sm\:bui-ml-4{margin-left:var(--bui-space-4)}.sm\:bui-ml-5{margin-left:var(--bui-space-5)}.sm\:bui-ml-6{margin-left:var(--bui-space-6)}.sm\:bui-ml-7{margin-left:var(--bui-space-7)}.sm\:bui-ml-8{margin-left:var(--bui-space-8)}.sm\:bui-ml-9{margin-left:var(--bui-space-9)}.sm\:bui-ml-10{margin-left:var(--bui-space-10)}.sm\:bui-ml-11{margin-left:var(--bui-space-11)}.sm\:bui-ml-12{margin-left:var(--bui-space-12)}.sm\:bui-ml-13{margin-left:var(--bui-space-13)}.sm\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-ml{margin-left:var(--ml-md)}.md\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.md\:bui-ml-1{margin-left:var(--bui-space-1)}.md\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.md\:bui-ml-2{margin-left:var(--bui-space-2)}.md\:bui-ml-3{margin-left:var(--bui-space-3)}.md\:bui-ml-4{margin-left:var(--bui-space-4)}.md\:bui-ml-5{margin-left:var(--bui-space-5)}.md\:bui-ml-6{margin-left:var(--bui-space-6)}.md\:bui-ml-7{margin-left:var(--bui-space-7)}.md\:bui-ml-8{margin-left:var(--bui-space-8)}.md\:bui-ml-9{margin-left:var(--bui-space-9)}.md\:bui-ml-10{margin-left:var(--bui-space-10)}.md\:bui-ml-11{margin-left:var(--bui-space-11)}.md\:bui-ml-12{margin-left:var(--bui-space-12)}.md\:bui-ml-13{margin-left:var(--bui-space-13)}.md\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-ml{margin-left:var(--ml-lg)}.lg\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.lg\:bui-ml-1{margin-left:var(--bui-space-1)}.lg\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.lg\:bui-ml-2{margin-left:var(--bui-space-2)}.lg\:bui-ml-3{margin-left:var(--bui-space-3)}.lg\:bui-ml-4{margin-left:var(--bui-space-4)}.lg\:bui-ml-5{margin-left:var(--bui-space-5)}.lg\:bui-ml-6{margin-left:var(--bui-space-6)}.lg\:bui-ml-7{margin-left:var(--bui-space-7)}.lg\:bui-ml-8{margin-left:var(--bui-space-8)}.lg\:bui-ml-9{margin-left:var(--bui-space-9)}.lg\:bui-ml-10{margin-left:var(--bui-space-10)}.lg\:bui-ml-11{margin-left:var(--bui-space-11)}.lg\:bui-ml-12{margin-left:var(--bui-space-12)}.lg\:bui-ml-13{margin-left:var(--bui-space-13)}.lg\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-ml{margin-left:var(--ml-xl)}.xl\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.xl\:bui-ml-1{margin-left:var(--bui-space-1)}.xl\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.xl\:bui-ml-2{margin-left:var(--bui-space-2)}.xl\:bui-ml-3{margin-left:var(--bui-space-3)}.xl\:bui-ml-4{margin-left:var(--bui-space-4)}.xl\:bui-ml-5{margin-left:var(--bui-space-5)}.xl\:bui-ml-6{margin-left:var(--bui-space-6)}.xl\:bui-ml-7{margin-left:var(--bui-space-7)}.xl\:bui-ml-8{margin-left:var(--bui-space-8)}.xl\:bui-ml-9{margin-left:var(--bui-space-9)}.xl\:bui-ml-10{margin-left:var(--bui-space-10)}.xl\:bui-ml-11{margin-left:var(--bui-space-11)}.xl\:bui-ml-12{margin-left:var(--bui-space-12)}.xl\:bui-ml-13{margin-left:var(--bui-space-13)}.xl\:bui-ml-14{margin-left:var(--bui-space-14)}}.bui-mr{margin-right:var(--mr)}.bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.bui-mr-1{margin-right:var(--bui-space-1)}.bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.bui-mr-2{margin-right:var(--bui-space-2)}.bui-mr-3{margin-right:var(--bui-space-3)}.bui-mr-4{margin-right:var(--bui-space-4)}.bui-mr-5{margin-right:var(--bui-space-5)}.bui-mr-6{margin-right:var(--bui-space-6)}.bui-mr-7{margin-right:var(--bui-space-7)}.bui-mr-8{margin-right:var(--bui-space-8)}.bui-mr-9{margin-right:var(--bui-space-9)}.bui-mr-10{margin-right:var(--bui-space-10)}.bui-mr-11{margin-right:var(--bui-space-11)}.bui-mr-12{margin-right:var(--bui-space-12)}.bui-mr-13{margin-right:var(--bui-space-13)}.bui-mr-14{margin-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mr{margin-right:var(--mr-xs)}.xs\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.xs\:bui-mr-1{margin-right:var(--bui-space-1)}.xs\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.xs\:bui-mr-2{margin-right:var(--bui-space-2)}.xs\:bui-mr-3{margin-right:var(--bui-space-3)}.xs\:bui-mr-4{margin-right:var(--bui-space-4)}.xs\:bui-mr-5{margin-right:var(--bui-space-5)}.xs\:bui-mr-6{margin-right:var(--bui-space-6)}.xs\:bui-mr-7{margin-right:var(--bui-space-7)}.xs\:bui-mr-8{margin-right:var(--bui-space-8)}.xs\:bui-mr-9{margin-right:var(--bui-space-9)}.xs\:bui-mr-10{margin-right:var(--bui-space-10)}.xs\:bui-mr-11{margin-right:var(--bui-space-11)}.xs\:bui-mr-12{margin-right:var(--bui-space-12)}.xs\:bui-mr-13{margin-right:var(--bui-space-13)}.xs\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mr{margin-right:var(--mr-sm)}.sm\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.sm\:bui-mr-1{margin-right:var(--bui-space-1)}.sm\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.sm\:bui-mr-2{margin-right:var(--bui-space-2)}.sm\:bui-mr-3{margin-right:var(--bui-space-3)}.sm\:bui-mr-4{margin-right:var(--bui-space-4)}.sm\:bui-mr-5{margin-right:var(--bui-space-5)}.sm\:bui-mr-6{margin-right:var(--bui-space-6)}.sm\:bui-mr-7{margin-right:var(--bui-space-7)}.sm\:bui-mr-8{margin-right:var(--bui-space-8)}.sm\:bui-mr-9{margin-right:var(--bui-space-9)}.sm\:bui-mr-10{margin-right:var(--bui-space-10)}.sm\:bui-mr-11{margin-right:var(--bui-space-11)}.sm\:bui-mr-12{margin-right:var(--bui-space-12)}.sm\:bui-mr-13{margin-right:var(--bui-space-13)}.sm\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mr{margin-right:var(--mr-md)}.md\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.md\:bui-mr-1{margin-right:var(--bui-space-1)}.md\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.md\:bui-mr-2{margin-right:var(--bui-space-2)}.md\:bui-mr-3{margin-right:var(--bui-space-3)}.md\:bui-mr-4{margin-right:var(--bui-space-4)}.md\:bui-mr-5{margin-right:var(--bui-space-5)}.md\:bui-mr-6{margin-right:var(--bui-space-6)}.md\:bui-mr-7{margin-right:var(--bui-space-7)}.md\:bui-mr-8{margin-right:var(--bui-space-8)}.md\:bui-mr-9{margin-right:var(--bui-space-9)}.md\:bui-mr-10{margin-right:var(--bui-space-10)}.md\:bui-mr-11{margin-right:var(--bui-space-11)}.md\:bui-mr-12{margin-right:var(--bui-space-12)}.md\:bui-mr-13{margin-right:var(--bui-space-13)}.md\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mr{margin-right:var(--mr-lg)}.lg\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.lg\:bui-mr-1{margin-right:var(--bui-space-1)}.lg\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.lg\:bui-mr-2{margin-right:var(--bui-space-2)}.lg\:bui-mr-3{margin-right:var(--bui-space-3)}.lg\:bui-mr-4{margin-right:var(--bui-space-4)}.lg\:bui-mr-5{margin-right:var(--bui-space-5)}.lg\:bui-mr-6{margin-right:var(--bui-space-6)}.lg\:bui-mr-7{margin-right:var(--bui-space-7)}.lg\:bui-mr-8{margin-right:var(--bui-space-8)}.lg\:bui-mr-9{margin-right:var(--bui-space-9)}.lg\:bui-mr-10{margin-right:var(--bui-space-10)}.lg\:bui-mr-11{margin-right:var(--bui-space-11)}.lg\:bui-mr-12{margin-right:var(--bui-space-12)}.lg\:bui-mr-13{margin-right:var(--bui-space-13)}.lg\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mr{margin-right:var(--mr-xl)}.xl\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.xl\:bui-mr-1{margin-right:var(--bui-space-1)}.xl\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.xl\:bui-mr-2{margin-right:var(--bui-space-2)}.xl\:bui-mr-3{margin-right:var(--bui-space-3)}.xl\:bui-mr-4{margin-right:var(--bui-space-4)}.xl\:bui-mr-5{margin-right:var(--bui-space-5)}.xl\:bui-mr-6{margin-right:var(--bui-space-6)}.xl\:bui-mr-7{margin-right:var(--bui-space-7)}.xl\:bui-mr-8{margin-right:var(--bui-space-8)}.xl\:bui-mr-9{margin-right:var(--bui-space-9)}.xl\:bui-mr-10{margin-right:var(--bui-space-10)}.xl\:bui-mr-11{margin-right:var(--bui-space-11)}.xl\:bui-mr-12{margin-right:var(--bui-space-12)}.xl\:bui-mr-13{margin-right:var(--bui-space-13)}.xl\:bui-mr-14{margin-right:var(--bui-space-14)}}.bui-mt{margin-top:var(--mt)}.bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.bui-mt-1{margin-top:var(--bui-space-1)}.bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.bui-mt-2{margin-top:var(--bui-space-2)}.bui-mt-3{margin-top:var(--bui-space-3)}.bui-mt-4{margin-top:var(--bui-space-4)}.bui-mt-5{margin-top:var(--bui-space-5)}.bui-mt-6{margin-top:var(--bui-space-6)}.bui-mt-7{margin-top:var(--bui-space-7)}.bui-mt-8{margin-top:var(--bui-space-8)}.bui-mt-9{margin-top:var(--bui-space-9)}.bui-mt-10{margin-top:var(--bui-space-10)}.bui-mt-11{margin-top:var(--bui-space-11)}.bui-mt-12{margin-top:var(--bui-space-12)}.bui-mt-13{margin-top:var(--bui-space-13)}.bui-mt-14{margin-top:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mt{margin-top:var(--mt-xs)}.xs\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.xs\:bui-mt-1{margin-top:var(--bui-space-1)}.xs\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.xs\:bui-mt-2{margin-top:var(--bui-space-2)}.xs\:bui-mt-3{margin-top:var(--bui-space-3)}.xs\:bui-mt-4{margin-top:var(--bui-space-4)}.xs\:bui-mt-5{margin-top:var(--bui-space-5)}.xs\:bui-mt-6{margin-top:var(--bui-space-6)}.xs\:bui-mt-7{margin-top:var(--bui-space-7)}.xs\:bui-mt-8{margin-top:var(--bui-space-8)}.xs\:bui-mt-9{margin-top:var(--bui-space-9)}.xs\:bui-mt-10{margin-top:var(--bui-space-10)}.xs\:bui-mt-11{margin-top:var(--bui-space-11)}.xs\:bui-mt-12{margin-top:var(--bui-space-12)}.xs\:bui-mt-13{margin-top:var(--bui-space-13)}.xs\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mt{margin-top:var(--mt-sm)}.sm\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.sm\:bui-mt-1{margin-top:var(--bui-space-1)}.sm\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.sm\:bui-mt-2{margin-top:var(--bui-space-2)}.sm\:bui-mt-3{margin-top:var(--bui-space-3)}.sm\:bui-mt-4{margin-top:var(--bui-space-4)}.sm\:bui-mt-5{margin-top:var(--bui-space-5)}.sm\:bui-mt-6{margin-top:var(--bui-space-6)}.sm\:bui-mt-7{margin-top:var(--bui-space-7)}.sm\:bui-mt-8{margin-top:var(--bui-space-8)}.sm\:bui-mt-9{margin-top:var(--bui-space-9)}.sm\:bui-mt-10{margin-top:var(--bui-space-10)}.sm\:bui-mt-11{margin-top:var(--bui-space-11)}.sm\:bui-mt-12{margin-top:var(--bui-space-12)}.sm\:bui-mt-13{margin-top:var(--bui-space-13)}.sm\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mt{margin-top:var(--mt-md)}.md\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.md\:bui-mt-1{margin-top:var(--bui-space-1)}.md\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.md\:bui-mt-2{margin-top:var(--bui-space-2)}.md\:bui-mt-3{margin-top:var(--bui-space-3)}.md\:bui-mt-4{margin-top:var(--bui-space-4)}.md\:bui-mt-5{margin-top:var(--bui-space-5)}.md\:bui-mt-6{margin-top:var(--bui-space-6)}.md\:bui-mt-7{margin-top:var(--bui-space-7)}.md\:bui-mt-8{margin-top:var(--bui-space-8)}.md\:bui-mt-9{margin-top:var(--bui-space-9)}.md\:bui-mt-10{margin-top:var(--bui-space-10)}.md\:bui-mt-11{margin-top:var(--bui-space-11)}.md\:bui-mt-12{margin-top:var(--bui-space-12)}.md\:bui-mt-13{margin-top:var(--bui-space-13)}.md\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mt{margin-top:var(--mt-lg)}.lg\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.lg\:bui-mt-1{margin-top:var(--bui-space-1)}.lg\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.lg\:bui-mt-2{margin-top:var(--bui-space-2)}.lg\:bui-mt-3{margin-top:var(--bui-space-3)}.lg\:bui-mt-4{margin-top:var(--bui-space-4)}.lg\:bui-mt-5{margin-top:var(--bui-space-5)}.lg\:bui-mt-6{margin-top:var(--bui-space-6)}.lg\:bui-mt-7{margin-top:var(--bui-space-7)}.lg\:bui-mt-8{margin-top:var(--bui-space-8)}.lg\:bui-mt-9{margin-top:var(--bui-space-9)}.lg\:bui-mt-10{margin-top:var(--bui-space-10)}.lg\:bui-mt-11{margin-top:var(--bui-space-11)}.lg\:bui-mt-12{margin-top:var(--bui-space-12)}.lg\:bui-mt-13{margin-top:var(--bui-space-13)}.lg\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mt{margin-top:var(--mt-xl)}.xl\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.xl\:bui-mt-1{margin-top:var(--bui-space-1)}.xl\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.xl\:bui-mt-2{margin-top:var(--bui-space-2)}.xl\:bui-mt-3{margin-top:var(--bui-space-3)}.xl\:bui-mt-4{margin-top:var(--bui-space-4)}.xl\:bui-mt-5{margin-top:var(--bui-space-5)}.xl\:bui-mt-6{margin-top:var(--bui-space-6)}.xl\:bui-mt-7{margin-top:var(--bui-space-7)}.xl\:bui-mt-8{margin-top:var(--bui-space-8)}.xl\:bui-mt-9{margin-top:var(--bui-space-9)}.xl\:bui-mt-10{margin-top:var(--bui-space-10)}.xl\:bui-mt-11{margin-top:var(--bui-space-11)}.xl\:bui-mt-12{margin-top:var(--bui-space-12)}.xl\:bui-mt-13{margin-top:var(--bui-space-13)}.xl\:bui-mt-14{margin-top:var(--bui-space-14)}}.bui-mb{margin-bottom:var(--mb)}.bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.bui-mb-1{margin-bottom:var(--bui-space-1)}.bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.bui-mb-2{margin-bottom:var(--bui-space-2)}.bui-mb-3{margin-bottom:var(--bui-space-3)}.bui-mb-4{margin-bottom:var(--bui-space-4)}.bui-mb-5{margin-bottom:var(--bui-space-5)}.bui-mb-6{margin-bottom:var(--bui-space-6)}.bui-mb-7{margin-bottom:var(--bui-space-7)}.bui-mb-8{margin-bottom:var(--bui-space-8)}.bui-mb-9{margin-bottom:var(--bui-space-9)}.bui-mb-10{margin-bottom:var(--bui-space-10)}.bui-mb-11{margin-bottom:var(--bui-space-11)}.bui-mb-12{margin-bottom:var(--bui-space-12)}.bui-mb-13{margin-bottom:var(--bui-space-13)}.bui-mb-14{margin-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mb{margin-bottom:var(--mb-xs)}.xs\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.xs\:bui-mb-1{margin-bottom:var(--bui-space-1)}.xs\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.xs\:bui-mb-2{margin-bottom:var(--bui-space-2)}.xs\:bui-mb-3{margin-bottom:var(--bui-space-3)}.xs\:bui-mb-4{margin-bottom:var(--bui-space-4)}.xs\:bui-mb-5{margin-bottom:var(--bui-space-5)}.xs\:bui-mb-6{margin-bottom:var(--bui-space-6)}.xs\:bui-mb-7{margin-bottom:var(--bui-space-7)}.xs\:bui-mb-8{margin-bottom:var(--bui-space-8)}.xs\:bui-mb-9{margin-bottom:var(--bui-space-9)}.xs\:bui-mb-10{margin-bottom:var(--bui-space-10)}.xs\:bui-mb-11{margin-bottom:var(--bui-space-11)}.xs\:bui-mb-12{margin-bottom:var(--bui-space-12)}.xs\:bui-mb-13{margin-bottom:var(--bui-space-13)}.xs\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mb{margin-bottom:var(--mb-sm)}.sm\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.sm\:bui-mb-1{margin-bottom:var(--bui-space-1)}.sm\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.sm\:bui-mb-2{margin-bottom:var(--bui-space-2)}.sm\:bui-mb-3{margin-bottom:var(--bui-space-3)}.sm\:bui-mb-4{margin-bottom:var(--bui-space-4)}.sm\:bui-mb-5{margin-bottom:var(--bui-space-5)}.sm\:bui-mb-6{margin-bottom:var(--bui-space-6)}.sm\:bui-mb-7{margin-bottom:var(--bui-space-7)}.sm\:bui-mb-8{margin-bottom:var(--bui-space-8)}.sm\:bui-mb-9{margin-bottom:var(--bui-space-9)}.sm\:bui-mb-10{margin-bottom:var(--bui-space-10)}.sm\:bui-mb-11{margin-bottom:var(--bui-space-11)}.sm\:bui-mb-12{margin-bottom:var(--bui-space-12)}.sm\:bui-mb-13{margin-bottom:var(--bui-space-13)}.sm\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mb{margin-bottom:var(--mb-md)}.md\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.md\:bui-mb-1{margin-bottom:var(--bui-space-1)}.md\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.md\:bui-mb-2{margin-bottom:var(--bui-space-2)}.md\:bui-mb-3{margin-bottom:var(--bui-space-3)}.md\:bui-mb-4{margin-bottom:var(--bui-space-4)}.md\:bui-mb-5{margin-bottom:var(--bui-space-5)}.md\:bui-mb-6{margin-bottom:var(--bui-space-6)}.md\:bui-mb-7{margin-bottom:var(--bui-space-7)}.md\:bui-mb-8{margin-bottom:var(--bui-space-8)}.md\:bui-mb-9{margin-bottom:var(--bui-space-9)}.md\:bui-mb-10{margin-bottom:var(--bui-space-10)}.md\:bui-mb-11{margin-bottom:var(--bui-space-11)}.md\:bui-mb-12{margin-bottom:var(--bui-space-12)}.md\:bui-mb-13{margin-bottom:var(--bui-space-13)}.md\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mb{margin-bottom:var(--mb-lg)}.lg\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.lg\:bui-mb-1{margin-bottom:var(--bui-space-1)}.lg\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.lg\:bui-mb-2{margin-bottom:var(--bui-space-2)}.lg\:bui-mb-3{margin-bottom:var(--bui-space-3)}.lg\:bui-mb-4{margin-bottom:var(--bui-space-4)}.lg\:bui-mb-5{margin-bottom:var(--bui-space-5)}.lg\:bui-mb-6{margin-bottom:var(--bui-space-6)}.lg\:bui-mb-7{margin-bottom:var(--bui-space-7)}.lg\:bui-mb-8{margin-bottom:var(--bui-space-8)}.lg\:bui-mb-9{margin-bottom:var(--bui-space-9)}.lg\:bui-mb-10{margin-bottom:var(--bui-space-10)}.lg\:bui-mb-11{margin-bottom:var(--bui-space-11)}.lg\:bui-mb-12{margin-bottom:var(--bui-space-12)}.lg\:bui-mb-13{margin-bottom:var(--bui-space-13)}.lg\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mb{margin-bottom:var(--mb-xl)}.xl\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.xl\:bui-mb-1{margin-bottom:var(--bui-space-1)}.xl\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.xl\:bui-mb-2{margin-bottom:var(--bui-space-2)}.xl\:bui-mb-3{margin-bottom:var(--bui-space-3)}.xl\:bui-mb-4{margin-bottom:var(--bui-space-4)}.xl\:bui-mb-5{margin-bottom:var(--bui-space-5)}.xl\:bui-mb-6{margin-bottom:var(--bui-space-6)}.xl\:bui-mb-7{margin-bottom:var(--bui-space-7)}.xl\:bui-mb-8{margin-bottom:var(--bui-space-8)}.xl\:bui-mb-9{margin-bottom:var(--bui-space-9)}.xl\:bui-mb-10{margin-bottom:var(--bui-space-10)}.xl\:bui-mb-11{margin-bottom:var(--bui-space-11)}.xl\:bui-mb-12{margin-bottom:var(--bui-space-12)}.xl\:bui-mb-13{margin-bottom:var(--bui-space-13)}.xl\:bui-mb-14{margin-bottom:var(--bui-space-14)}}.bui-my{margin-top:var(--my);margin-bottom:var(--my)}.bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-my{margin-top:var(--my-xs);margin-bottom:var(--my-xs)}.xs\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.xs\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.xs\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.xs\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.xs\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.xs\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.xs\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.xs\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.xs\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.xs\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.xs\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.xs\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.xs\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.xs\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.xs\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.xs\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-my{margin-top:var(--my-sm);margin-bottom:var(--my-sm)}.sm\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.sm\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.sm\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.sm\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.sm\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.sm\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.sm\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.sm\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.sm\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.sm\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.sm\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.sm\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.sm\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.sm\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.sm\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.sm\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-my{margin-top:var(--my-md);margin-bottom:var(--my-md)}.md\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.md\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.md\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.md\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.md\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.md\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.md\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.md\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.md\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.md\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.md\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.md\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.md\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.md\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.md\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.md\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-my{margin-top:var(--my-lg);margin-bottom:var(--my-lg)}.lg\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.lg\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.lg\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.lg\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.lg\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.lg\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.lg\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.lg\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.lg\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.lg\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.lg\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.lg\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.lg\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.lg\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.lg\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.lg\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-my{margin-top:var(--my-xl);margin-bottom:var(--my-xl)}.xl\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.xl\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.xl\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.xl\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.xl\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.xl\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.xl\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.xl\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.xl\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.xl\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.xl\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.xl\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.xl\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.xl\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.xl\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.xl\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}.bui-mx{margin-left:var(--mx);margin-right:var(--mx)}.bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mx{margin-left:var(--mx-xs);margin-right:var(--mx-xs)}.xs\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.xs\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.xs\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.xs\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.xs\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.xs\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.xs\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.xs\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.xs\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.xs\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.xs\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.xs\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.xs\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.xs\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.xs\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.xs\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mx{margin-left:var(--mx-sm);margin-right:var(--mx-sm)}.sm\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.sm\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.sm\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.sm\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.sm\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.sm\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.sm\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.sm\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.sm\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.sm\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.sm\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.sm\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.sm\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.sm\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.sm\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.sm\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mx{margin-left:var(--mx-md);margin-right:var(--mx-md)}.md\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.md\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.md\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.md\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.md\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.md\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.md\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.md\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.md\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.md\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.md\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.md\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.md\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.md\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.md\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.md\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mx{margin-left:var(--mx-lg);margin-right:var(--mx-lg)}.lg\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.lg\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.lg\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.lg\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.lg\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.lg\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.lg\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.lg\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.lg\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.lg\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.lg\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.lg\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.lg\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.lg\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.lg\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.lg\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mx{margin-left:var(--mx-xl);margin-right:var(--mx-xl)}.xl\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.xl\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.xl\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.xl\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.xl\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.xl\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.xl\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.xl\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.xl\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.xl\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.xl\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.xl\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.xl\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.xl\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.xl\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.xl\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}.bui-display-none{display:none}.bui-display-inline{display:inline}.bui-display-inline-block{display:inline-block}.bui-display-block{display:block}@media (width>=640px){.xs\:bui-display-none{display:none}.xs\:bui-display-inline{display:inline}.xs\:bui-display-inline-block{display:inline-block}.xs\:bui-display-block{display:block}}@media (width>=768px){.sm\:bui-display-none{display:none}.sm\:bui-display-inline{display:inline}.sm\:bui-display-inline-block{display:inline-block}.sm\:bui-display-block{display:block}}@media (width>=1024px){.md\:bui-display-none{display:none}.md\:bui-display-inline{display:inline}.md\:bui-display-inline-block{display:inline-block}.md\:bui-display-block{display:block}}@media (width>=1280px){.lg\:bui-display-none{display:none}.lg\:bui-display-inline{display:inline}.lg\:bui-display-inline-block{display:inline-block}.lg\:bui-display-block{display:block}}@media (width>=1536px){.xl\:bui-display-none{display:none}.xl\:bui-display-inline{display:inline}.xl\:bui-display-inline-block{display:inline-block}.xl\:bui-display-block{display:block}}.bui-w{width:var(--width)}.bui-min-w{min-width:var(--min-width)}.bui-max-w{max-width:var(--max-width)}@media (width>=640px){.xs\:bui-w{width:var(--width)}.xs\:bui-min-w{min-width:var(--min-width)}.xs\:bui-max-w{max-width:var(--max-width)}}@media (width>=768px){.sm\:bui-w{width:var(--width)}.sm\:bui-min-w{min-width:var(--min-width)}.sm\:bui-max-w{max-width:var(--max-width)}}@media (width>=1024px){.md\:bui-w{width:var(--width)}.md\:bui-min-w{min-width:var(--min-width)}.md\:bui-max-w{max-width:var(--max-width)}}@media (width>=1280px){.lg\:bui-w{width:var(--width)}.lg\:bui-min-w{min-width:var(--min-width)}.lg\:bui-max-w{max-width:var(--max-width)}}@media (width>=1536px){.xl\:bui-w{width:var(--width)}.xl\:bui-min-w{min-width:var(--min-width)}.xl\:bui-max-w{max-width:var(--max-width)}}.bui-h{height:var(--height)}.bui-min-h{min-height:var(--min-height)}.bui-max-h{max-height:var(--max-height)}@media (width>=640px){.xs\:bui-h{height:var(--height)}.xs\:bui-min-h{min-height:var(--min-height)}.xs\:bui-max-h{max-height:var(--max-height)}}@media (width>=768px){.sm\:bui-h{height:var(--height)}.sm\:bui-min-h{min-height:var(--min-height)}.sm\:bui-max-h{max-height:var(--max-height)}}@media (width>=1024px){.md\:bui-h{height:var(--height)}.md\:bui-min-h{min-height:var(--min-height)}.md\:bui-max-h{max-height:var(--max-height)}}@media (width>=1280px){.lg\:bui-h{height:var(--height)}.lg\:bui-min-h{min-height:var(--min-height)}.lg\:bui-max-h{max-height:var(--max-height)}}@media (width>=1536px){.xl\:bui-h{height:var(--height)}.xl\:bui-min-h{min-height:var(--min-height)}.xl\:bui-max-h{max-height:var(--max-height)}}.bui-position-absolute{position:absolute}.bui-position-fixed{position:fixed}.bui-position-sticky{position:sticky}.bui-position-relative{position:relative}.bui-position-static{position:static}@media (width>=640px){.xs\:bui-position-absolute{position:absolute}.xs\:bui-position-fixed{position:fixed}.xs\:bui-position-sticky{position:sticky}.xs\:bui-position-relative{position:relative}.xs\:bui-position-static{position:static}}@media (width>=768px){.sm\:bui-position-absolute{position:absolute}.sm\:bui-position-fixed{position:fixed}.sm\:bui-position-sticky{position:sticky}.sm\:bui-position-relative{position:relative}.sm\:bui-position-static{position:static}}@media (width>=1024px){.md\:bui-position-absolute{position:absolute}.md\:bui-position-fixed{position:fixed}.md\:bui-position-sticky{position:sticky}.md\:bui-position-relative{position:relative}.md\:bui-position-static{position:static}}@media (width>=1280px){.lg\:bui-position-absolute{position:absolute}.lg\:bui-position-fixed{position:fixed}.lg\:bui-position-sticky{position:sticky}.lg\:bui-position-relative{position:relative}.lg\:bui-position-static{position:static}}@media (width>=1536px){.xl\:bui-position-absolute{position:absolute}.xl\:bui-position-fixed{position:fixed}.xl\:bui-position-sticky{position:sticky}.xl\:bui-position-relative{position:relative}.xl\:bui-position-static{position:static}}.bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.bui-col-span-1{grid-column:span 1/span 1}.bui-col-span-2{grid-column:span 2/span 2}.bui-col-span-3{grid-column:span 3/span 3}.bui-col-span-4{grid-column:span 4/span 4}.bui-col-span-5{grid-column:span 5/span 5}.bui-col-span-6{grid-column:span 6/span 6}.bui-col-span-7{grid-column:span 7/span 7}.bui-col-span-8{grid-column:span 8/span 8}.bui-col-span-9{grid-column:span 9/span 9}.bui-col-span-10{grid-column:span 10/span 10}.bui-col-span-11{grid-column:span 11/span 11}.bui-col-span-12{grid-column:span 12/span 12}.bui-col-span-auto{grid-column:span auto/span auto}.bui-col-start-1{grid-column-start:1}.bui-col-start-2{grid-column-start:2}.bui-col-start-3{grid-column-start:3}.bui-col-start-4{grid-column-start:4}.bui-col-start-5{grid-column-start:5}.bui-col-start-6{grid-column-start:6}.bui-col-start-7{grid-column-start:7}.bui-col-start-8{grid-column-start:8}.bui-col-start-9{grid-column-start:9}.bui-col-start-10{grid-column-start:10}.bui-col-start-11{grid-column-start:11}.bui-col-start-12{grid-column-start:12}.bui-col-start-13{grid-column-start:13}.bui-col-start-auto{grid-column-start:auto}.bui-col-end-1{grid-column-end:1}.bui-col-end-2{grid-column-end:2}.bui-col-end-3{grid-column-end:3}.bui-col-end-4{grid-column-end:4}.bui-col-end-5{grid-column-end:5}.bui-col-end-6{grid-column-end:6}.bui-col-end-7{grid-column-end:7}.bui-col-end-8{grid-column-end:8}.bui-col-end-9{grid-column-end:9}.bui-col-end-10{grid-column-end:10}.bui-col-end-11{grid-column-end:11}.bui-col-end-12{grid-column-end:12}.bui-col-end-13{grid-column-end:13}.bui-col-end-auto{grid-column-end:auto}.bui-row-span-1{grid-row:span 1/span 1}.bui-row-span-2{grid-row:span 2/span 2}.bui-row-span-3{grid-row:span 3/span 3}.bui-row-span-4{grid-row:span 4/span 4}.bui-row-span-5{grid-row:span 5/span 5}.bui-row-span-6{grid-row:span 6/span 6}.bui-row-span-7{grid-row:span 7/span 7}.bui-row-span-8{grid-row:span 8/span 8}.bui-row-span-9{grid-row:span 9/span 9}.bui-row-span-10{grid-row:span 10/span 10}.bui-row-span-11{grid-row:span 11/span 11}.bui-row-span-12{grid-row:span 12/span 12}.bui-row-span-auto{grid-row:span auto/span auto}@media (width>=640px){.xs\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xs\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xs\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xs\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xs\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xs\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xs\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xs\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xs\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xs\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xs\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xs\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xs\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.xs\:bui-col-span-1{grid-column:span 1/span 1}.xs\:bui-col-span-2{grid-column:span 2/span 2}.xs\:bui-col-span-3{grid-column:span 3/span 3}.xs\:bui-col-span-4{grid-column:span 4/span 4}.xs\:bui-col-span-5{grid-column:span 5/span 5}.xs\:bui-col-span-6{grid-column:span 6/span 6}.xs\:bui-col-span-7{grid-column:span 7/span 7}.xs\:bui-col-span-8{grid-column:span 8/span 8}.xs\:bui-col-span-9{grid-column:span 9/span 9}.xs\:bui-col-span-10{grid-column:span 10/span 10}.xs\:bui-col-span-11{grid-column:span 11/span 11}.xs\:bui-col-span-12{grid-column:span 12/span 12}.xs\:bui-col-span-auto{grid-column:span auto/span auto}.xs\:bui-col-start-1{grid-column-start:1}.xs\:bui-col-start-2{grid-column-start:2}.xs\:bui-col-start-3{grid-column-start:3}.xs\:bui-col-start-4{grid-column-start:4}.xs\:bui-col-start-5{grid-column-start:5}.xs\:bui-col-start-6{grid-column-start:6}.xs\:bui-col-start-7{grid-column-start:7}.xs\:bui-col-start-8{grid-column-start:8}.xs\:bui-col-start-9{grid-column-start:9}.xs\:bui-col-start-10{grid-column-start:10}.xs\:bui-col-start-11{grid-column-start:11}.xs\:bui-col-start-12{grid-column-start:12}.xs\:bui-col-start-13{grid-column-start:13}.xs\:bui-col-start-auto{grid-column-start:auto}.xs\:bui-col-end-1{grid-column-end:1}.xs\:bui-col-end-2{grid-column-end:2}.xs\:bui-col-end-3{grid-column-end:3}.xs\:bui-col-end-4{grid-column-end:4}.xs\:bui-col-end-5{grid-column-end:5}.xs\:bui-col-end-6{grid-column-end:6}.xs\:bui-col-end-7{grid-column-end:7}.xs\:bui-col-end-8{grid-column-end:8}.xs\:bui-col-end-9{grid-column-end:9}.xs\:bui-col-end-10{grid-column-end:10}.xs\:bui-col-end-11{grid-column-end:11}.xs\:bui-col-end-12{grid-column-end:12}.xs\:bui-col-end-13{grid-column-end:13}.xs\:bui-col-end-auto{grid-column-end:auto}.xs\:bui-row-span-1{grid-row:span 1/span 1}.xs\:bui-row-span-2{grid-row:span 2/span 2}.xs\:bui-row-span-3{grid-row:span 3/span 3}.xs\:bui-row-span-4{grid-row:span 4/span 4}.xs\:bui-row-span-5{grid-row:span 5/span 5}.xs\:bui-row-span-6{grid-row:span 6/span 6}.xs\:bui-row-span-7{grid-row:span 7/span 7}.xs\:bui-row-span-8{grid-row:span 8/span 8}.xs\:bui-row-span-9{grid-row:span 9/span 9}.xs\:bui-row-span-10{grid-row:span 10/span 10}.xs\:bui-row-span-11{grid-row:span 11/span 11}.xs\:bui-row-span-12{grid-row:span 12/span 12}.xs\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=768px){.sm\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.sm\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.sm\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.sm\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.sm\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.sm\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.sm\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.sm\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.sm\:bui-col-span-1{grid-column:span 1/span 1}.sm\:bui-col-span-2{grid-column:span 2/span 2}.sm\:bui-col-span-3{grid-column:span 3/span 3}.sm\:bui-col-span-4{grid-column:span 4/span 4}.sm\:bui-col-span-5{grid-column:span 5/span 5}.sm\:bui-col-span-6{grid-column:span 6/span 6}.sm\:bui-col-span-7{grid-column:span 7/span 7}.sm\:bui-col-span-8{grid-column:span 8/span 8}.sm\:bui-col-span-9{grid-column:span 9/span 9}.sm\:bui-col-span-10{grid-column:span 10/span 10}.sm\:bui-col-span-11{grid-column:span 11/span 11}.sm\:bui-col-span-12{grid-column:span 12/span 12}.sm\:bui-col-span-auto{grid-column:span auto/span auto}.sm\:bui-col-start-1{grid-column-start:1}.sm\:bui-col-start-2{grid-column-start:2}.sm\:bui-col-start-3{grid-column-start:3}.sm\:bui-col-start-4{grid-column-start:4}.sm\:bui-col-start-5{grid-column-start:5}.sm\:bui-col-start-6{grid-column-start:6}.sm\:bui-col-start-7{grid-column-start:7}.sm\:bui-col-start-8{grid-column-start:8}.sm\:bui-col-start-9{grid-column-start:9}.sm\:bui-col-start-10{grid-column-start:10}.sm\:bui-col-start-11{grid-column-start:11}.sm\:bui-col-start-12{grid-column-start:12}.sm\:bui-col-start-13{grid-column-start:13}.sm\:bui-col-start-auto{grid-column-start:auto}.sm\:bui-col-end-1{grid-column-end:1}.sm\:bui-col-end-2{grid-column-end:2}.sm\:bui-col-end-3{grid-column-end:3}.sm\:bui-col-end-4{grid-column-end:4}.sm\:bui-col-end-5{grid-column-end:5}.sm\:bui-col-end-6{grid-column-end:6}.sm\:bui-col-end-7{grid-column-end:7}.sm\:bui-col-end-8{grid-column-end:8}.sm\:bui-col-end-9{grid-column-end:9}.sm\:bui-col-end-10{grid-column-end:10}.sm\:bui-col-end-11{grid-column-end:11}.sm\:bui-col-end-12{grid-column-end:12}.sm\:bui-col-end-13{grid-column-end:13}.sm\:bui-col-end-auto{grid-column-end:auto}.sm\:bui-row-span-1{grid-row:span 1/span 1}.sm\:bui-row-span-2{grid-row:span 2/span 2}.sm\:bui-row-span-3{grid-row:span 3/span 3}.sm\:bui-row-span-4{grid-row:span 4/span 4}.sm\:bui-row-span-5{grid-row:span 5/span 5}.sm\:bui-row-span-6{grid-row:span 6/span 6}.sm\:bui-row-span-7{grid-row:span 7/span 7}.sm\:bui-row-span-8{grid-row:span 8/span 8}.sm\:bui-row-span-9{grid-row:span 9/span 9}.sm\:bui-row-span-10{grid-row:span 10/span 10}.sm\:bui-row-span-11{grid-row:span 11/span 11}.sm\:bui-row-span-12{grid-row:span 12/span 12}.sm\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=1024px){.md\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.md\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.md\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.md\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.md\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.md\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.md\:bui-col-span-1{grid-column:span 1/span 1}.md\:bui-col-span-2{grid-column:span 2/span 2}.md\:bui-col-span-3{grid-column:span 3/span 3}.md\:bui-col-span-4{grid-column:span 4/span 4}.md\:bui-col-span-5{grid-column:span 5/span 5}.md\:bui-col-span-6{grid-column:span 6/span 6}.md\:bui-col-span-7{grid-column:span 7/span 7}.md\:bui-col-span-8{grid-column:span 8/span 8}.md\:bui-col-span-9{grid-column:span 9/span 9}.md\:bui-col-span-10{grid-column:span 10/span 10}.md\:bui-col-span-11{grid-column:span 11/span 11}.md\:bui-col-span-12{grid-column:span 12/span 12}.md\:bui-col-span-auto{grid-column:span auto/span auto}.md\:bui-col-start-1{grid-column-start:1}.md\:bui-col-start-2{grid-column-start:2}.md\:bui-col-start-3{grid-column-start:3}.md\:bui-col-start-4{grid-column-start:4}.md\:bui-col-start-5{grid-column-start:5}.md\:bui-col-start-6{grid-column-start:6}.md\:bui-col-start-7{grid-column-start:7}.md\:bui-col-start-8{grid-column-start:8}.md\:bui-col-start-9{grid-column-start:9}.md\:bui-col-start-10{grid-column-start:10}.md\:bui-col-start-11{grid-column-start:11}.md\:bui-col-start-12{grid-column-start:12}.md\:bui-col-start-13{grid-column-start:13}.md\:bui-col-start-auto{grid-column-start:auto}.md\:bui-col-end-1{grid-column-end:1}.md\:bui-col-end-2{grid-column-end:2}.md\:bui-col-end-3{grid-column-end:3}.md\:bui-col-end-4{grid-column-end:4}.md\:bui-col-end-5{grid-column-end:5}.md\:bui-col-end-6{grid-column-end:6}.md\:bui-col-end-7{grid-column-end:7}.md\:bui-col-end-8{grid-column-end:8}.md\:bui-col-end-9{grid-column-end:9}.md\:bui-col-end-10{grid-column-end:10}.md\:bui-col-end-11{grid-column-end:11}.md\:bui-col-end-12{grid-column-end:12}.md\:bui-col-end-13{grid-column-end:13}.md\:bui-col-end-auto{grid-column-end:auto}.md\:bui-row-span-1{grid-row:span 1/span 1}.md\:bui-row-span-2{grid-row:span 2/span 2}.md\:bui-row-span-3{grid-row:span 3/span 3}.md\:bui-row-span-4{grid-row:span 4/span 4}.md\:bui-row-span-5{grid-row:span 5/span 5}.md\:bui-row-span-6{grid-row:span 6/span 6}.md\:bui-row-span-7{grid-row:span 7/span 7}.md\:bui-row-span-8{grid-row:span 8/span 8}.md\:bui-row-span-9{grid-row:span 9/span 9}.md\:bui-row-span-10{grid-row:span 10/span 10}.md\:bui-row-span-11{grid-row:span 11/span 11}.md\:bui-row-span-12{grid-row:span 12/span 12}.md\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=1280px){.lg\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lg\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.lg\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lg\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.lg\:bui-col-span-1{grid-column:span 1/span 1}.lg\:bui-col-span-2{grid-column:span 2/span 2}.lg\:bui-col-span-3{grid-column:span 3/span 3}.lg\:bui-col-span-4{grid-column:span 4/span 4}.lg\:bui-col-span-5{grid-column:span 5/span 5}.lg\:bui-col-span-6{grid-column:span 6/span 6}.lg\:bui-col-span-7{grid-column:span 7/span 7}.lg\:bui-col-span-8{grid-column:span 8/span 8}.lg\:bui-col-span-9{grid-column:span 9/span 9}.lg\:bui-col-span-10{grid-column:span 10/span 10}.lg\:bui-col-span-11{grid-column:span 11/span 11}.lg\:bui-col-span-12{grid-column:span 12/span 12}.lg\:bui-col-span-auto{grid-column:span auto/span auto}.lg\:bui-col-start-1{grid-column-start:1}.lg\:bui-col-start-2{grid-column-start:2}.lg\:bui-col-start-3{grid-column-start:3}.lg\:bui-col-start-4{grid-column-start:4}.lg\:bui-col-start-5{grid-column-start:5}.lg\:bui-col-start-6{grid-column-start:6}.lg\:bui-col-start-7{grid-column-start:7}.lg\:bui-col-start-8{grid-column-start:8}.lg\:bui-col-start-9{grid-column-start:9}.lg\:bui-col-start-10{grid-column-start:10}.lg\:bui-col-start-11{grid-column-start:11}.lg\:bui-col-start-12{grid-column-start:12}.lg\:bui-col-start-13{grid-column-start:13}.lg\:bui-col-start-auto{grid-column-start:auto}.lg\:bui-col-end-1{grid-column-end:1}.lg\:bui-col-end-2{grid-column-end:2}.lg\:bui-col-end-3{grid-column-end:3}.lg\:bui-col-end-4{grid-column-end:4}.lg\:bui-col-end-5{grid-column-end:5}.lg\:bui-col-end-6{grid-column-end:6}.lg\:bui-col-end-7{grid-column-end:7}.lg\:bui-col-end-8{grid-column-end:8}.lg\:bui-col-end-9{grid-column-end:9}.lg\:bui-col-end-10{grid-column-end:10}.lg\:bui-col-end-11{grid-column-end:11}.lg\:bui-col-end-12{grid-column-end:12}.lg\:bui-col-end-13{grid-column-end:13}.lg\:bui-col-end-auto{grid-column-end:auto}.lg\:bui-row-span-1{grid-row:span 1/span 1}.lg\:bui-row-span-2{grid-row:span 2/span 2}.lg\:bui-row-span-3{grid-row:span 3/span 3}.lg\:bui-row-span-4{grid-row:span 4/span 4}.lg\:bui-row-span-5{grid-row:span 5/span 5}.lg\:bui-row-span-6{grid-row:span 6/span 6}.lg\:bui-row-span-7{grid-row:span 7/span 7}.lg\:bui-row-span-8{grid-row:span 8/span 8}.lg\:bui-row-span-9{grid-row:span 9/span 9}.lg\:bui-row-span-10{grid-row:span 10/span 10}.lg\:bui-row-span-11{grid-row:span 11/span 11}.lg\:bui-row-span-12{grid-row:span 12/span 12}.lg\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=1536px){.xl\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xl\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xl\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xl\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xl\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xl\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xl\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.xl\:bui-col-span-1{grid-column:span 1/span 1}.xl\:bui-col-span-2{grid-column:span 2/span 2}.xl\:bui-col-span-3{grid-column:span 3/span 3}.xl\:bui-col-span-4{grid-column:span 4/span 4}.xl\:bui-col-span-5{grid-column:span 5/span 5}.xl\:bui-col-span-6{grid-column:span 6/span 6}.xl\:bui-col-span-7{grid-column:span 7/span 7}.xl\:bui-col-span-8{grid-column:span 8/span 8}.xl\:bui-col-span-9{grid-column:span 9/span 9}.xl\:bui-col-span-10{grid-column:span 10/span 10}.xl\:bui-col-span-11{grid-column:span 11/span 11}.xl\:bui-col-span-12{grid-column:span 12/span 12}.xl\:bui-col-span-auto{grid-column:span auto/span auto}.xl\:bui-col-start-1{grid-column-start:1}.xl\:bui-col-start-2{grid-column-start:2}.xl\:bui-col-start-3{grid-column-start:3}.xl\:bui-col-start-4{grid-column-start:4}.xl\:bui-col-start-5{grid-column-start:5}.xl\:bui-col-start-6{grid-column-start:6}.xl\:bui-col-start-7{grid-column-start:7}.xl\:bui-col-start-8{grid-column-start:8}.xl\:bui-col-start-9{grid-column-start:9}.xl\:bui-col-start-10{grid-column-start:10}.xl\:bui-col-start-11{grid-column-start:11}.xl\:bui-col-start-12{grid-column-start:12}.xl\:bui-col-start-13{grid-column-start:13}.xl\:bui-col-start-auto{grid-column-start:auto}.xl\:bui-col-end-1{grid-column-end:1}.xl\:bui-col-end-2{grid-column-end:2}.xl\:bui-col-end-3{grid-column-end:3}.xl\:bui-col-end-4{grid-column-end:4}.xl\:bui-col-end-5{grid-column-end:5}.xl\:bui-col-end-6{grid-column-end:6}.xl\:bui-col-end-7{grid-column-end:7}.xl\:bui-col-end-8{grid-column-end:8}.xl\:bui-col-end-9{grid-column-end:9}.xl\:bui-col-end-10{grid-column-end:10}.xl\:bui-col-end-11{grid-column-end:11}.xl\:bui-col-end-12{grid-column-end:12}.xl\:bui-col-end-13{grid-column-end:13}.xl\:bui-col-end-auto{grid-column-end:auto}.xl\:bui-row-span-1{grid-row:span 1/span 1}.xl\:bui-row-span-2{grid-row:span 2/span 2}.xl\:bui-row-span-3{grid-row:span 3/span 3}.xl\:bui-row-span-4{grid-row:span 4/span 4}.xl\:bui-row-span-5{grid-row:span 5/span 5}.xl\:bui-row-span-6{grid-row:span 6/span 6}.xl\:bui-row-span-7{grid-row:span 7/span 7}.xl\:bui-row-span-8{grid-row:span 8/span 8}.xl\:bui-row-span-9{grid-row:span 9/span 9}.xl\:bui-row-span-10{grid-row:span 10/span 10}.xl\:bui-row-span-11{grid-row:span 11/span 11}.xl\:bui-row-span-12{grid-row:span 12/span 12}.xl\:bui-row-span-auto{grid-row:span auto/span auto}}.bui-gap{gap:var(--gap)}.bui-gap-0\.5{gap:var(--bui-space-0_5)}.bui-gap-1{gap:var(--bui-space-1)}.bui-gap-1\.5{gap:var(--bui-space-1_5)}.bui-gap-2{gap:var(--bui-space-2)}.bui-gap-3{gap:var(--bui-space-3)}.bui-gap-4{gap:var(--bui-space-4)}.bui-gap-5{gap:var(--bui-space-5)}.bui-gap-6{gap:var(--bui-space-6)}.bui-gap-7{gap:var(--bui-space-7)}.bui-gap-8{gap:var(--bui-space-8)}.bui-gap-9{gap:var(--bui-space-9)}.bui-gap-10{gap:var(--bui-space-10)}.bui-gap-11{gap:var(--bui-space-11)}.bui-gap-12{gap:var(--bui-space-12)}.bui-gap-13{gap:var(--bui-space-13)}.bui-gap-14{gap:var(--bui-space-14)}@media (width>=640px){.xs\:bui-gap{gap:var(--gap-xs)}.xs\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.xs\:bui-gap-1{gap:var(--bui-space-1)}.xs\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.xs\:bui-gap-2{gap:var(--bui-space-2)}.xs\:bui-gap-3{gap:var(--bui-space-3)}.xs\:bui-gap-4{gap:var(--bui-space-4)}.xs\:bui-gap-5{gap:var(--bui-space-5)}.xs\:bui-gap-6{gap:var(--bui-space-6)}.xs\:bui-gap-7{gap:var(--bui-space-7)}.xs\:bui-gap-8{gap:var(--bui-space-8)}.xs\:bui-gap-9{gap:var(--bui-space-9)}.xs\:bui-gap-10{gap:var(--bui-space-10)}.xs\:bui-gap-11{gap:var(--bui-space-11)}.xs\:bui-gap-12{gap:var(--bui-space-12)}.xs\:bui-gap-13{gap:var(--bui-space-13)}.xs\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-gap{gap:var(--gap-sm)}.sm\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.sm\:bui-gap-1{gap:var(--bui-space-1)}.sm\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.sm\:bui-gap-2{gap:var(--bui-space-2)}.sm\:bui-gap-3{gap:var(--bui-space-3)}.sm\:bui-gap-4{gap:var(--bui-space-4)}.sm\:bui-gap-5{gap:var(--bui-space-5)}.sm\:bui-gap-6{gap:var(--bui-space-6)}.sm\:bui-gap-7{gap:var(--bui-space-7)}.sm\:bui-gap-8{gap:var(--bui-space-8)}.sm\:bui-gap-9{gap:var(--bui-space-9)}.sm\:bui-gap-10{gap:var(--bui-space-10)}.sm\:bui-gap-11{gap:var(--bui-space-11)}.sm\:bui-gap-12{gap:var(--bui-space-12)}.sm\:bui-gap-13{gap:var(--bui-space-13)}.sm\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-gap{gap:var(--gap-md)}.md\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.md\:bui-gap-1{gap:var(--bui-space-1)}.md\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.md\:bui-gap-2{gap:var(--bui-space-2)}.md\:bui-gap-3{gap:var(--bui-space-3)}.md\:bui-gap-4{gap:var(--bui-space-4)}.md\:bui-gap-5{gap:var(--bui-space-5)}.md\:bui-gap-6{gap:var(--bui-space-6)}.md\:bui-gap-7{gap:var(--bui-space-7)}.md\:bui-gap-8{gap:var(--bui-space-8)}.md\:bui-gap-9{gap:var(--bui-space-9)}.md\:bui-gap-10{gap:var(--bui-space-10)}.md\:bui-gap-11{gap:var(--bui-space-11)}.md\:bui-gap-12{gap:var(--bui-space-12)}.md\:bui-gap-13{gap:var(--bui-space-13)}.md\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-gap{gap:var(--gap-lg)}.lg\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.lg\:bui-gap-1{gap:var(--bui-space-1)}.lg\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.lg\:bui-gap-2{gap:var(--bui-space-2)}.lg\:bui-gap-3{gap:var(--bui-space-3)}.lg\:bui-gap-4{gap:var(--bui-space-4)}.lg\:bui-gap-5{gap:var(--bui-space-5)}.lg\:bui-gap-6{gap:var(--bui-space-6)}.lg\:bui-gap-7{gap:var(--bui-space-7)}.lg\:bui-gap-8{gap:var(--bui-space-8)}.lg\:bui-gap-9{gap:var(--bui-space-9)}.lg\:bui-gap-10{gap:var(--bui-space-10)}.lg\:bui-gap-11{gap:var(--bui-space-11)}.lg\:bui-gap-12{gap:var(--bui-space-12)}.lg\:bui-gap-13{gap:var(--bui-space-13)}.lg\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-gap{gap:var(--gap-xl)}.xl\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.xl\:bui-gap-1{gap:var(--bui-space-1)}.xl\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.xl\:bui-gap-2{gap:var(--bui-space-2)}.xl\:bui-gap-3{gap:var(--bui-space-3)}.xl\:bui-gap-4{gap:var(--bui-space-4)}.xl\:bui-gap-5{gap:var(--bui-space-5)}.xl\:bui-gap-6{gap:var(--bui-space-6)}.xl\:bui-gap-7{gap:var(--bui-space-7)}.xl\:bui-gap-8{gap:var(--bui-space-8)}.xl\:bui-gap-9{gap:var(--bui-space-9)}.xl\:bui-gap-10{gap:var(--bui-space-10)}.xl\:bui-gap-11{gap:var(--bui-space-11)}.xl\:bui-gap-12{gap:var(--bui-space-12)}.xl\:bui-gap-13{gap:var(--bui-space-13)}.xl\:bui-gap-14{gap:var(--bui-space-14)}}.bui-align-start{align-items:start}.bui-align-center{align-items:center}.bui-align-end{align-items:end}.bui-align-baseline{align-items:baseline}.bui-align-stretch{align-items:stretch}.bui-jc-start{justify-content:start}.bui-jc-center{justify-content:center}.bui-jc-end{justify-content:end}.bui-jc-between{justify-content:space-between}.bui-fd-row{flex-direction:row}.bui-fd-column{flex-direction:column}.bui-fd-row-reverse{flex-direction:row-reverse}.bui-fd-column-reverse{flex-direction:column-reverse}@media (width>=640px){.xs\:bui-align-start{align-items:start}.xs\:bui-align-center{align-items:center}.xs\:bui-align-end{align-items:end}.xs\:bui-align-stretch{align-items:stretch}.xs\:bui-jc-start{justify-content:start}.xs\:bui-jc-center{justify-content:center}.xs\:bui-jc-end{justify-content:end}.xs\:bui-jc-between{justify-content:space-between}.xs\:bui-fd-row{flex-direction:row}.xs\:bui-fd-column{flex-direction:column}.xs\:bui-fd-row-reverse{flex-direction:row-reverse}.xs\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=768px){.sm\:bui-align-start{align-items:start}.sm\:bui-align-center{align-items:center}.sm\:bui-align-end{align-items:end}.sm\:bui-align-stretch{align-items:stretch}.sm\:bui-jc-start{justify-content:start}.sm\:bui-jc-center{justify-content:center}.sm\:bui-jc-end{justify-content:end}.sm\:bui-jc-between{justify-content:space-between}.sm\:bui-fd-row{flex-direction:row}.sm\:bui-fd-column{flex-direction:column}.sm\:bui-fd-row-reverse{flex-direction:row-reverse}.sm\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=1024px){.md\:bui-align-start{align-items:start}.md\:bui-align-center{align-items:center}.md\:bui-align-end{align-items:end}.md\:bui-align-stretch{align-items:stretch}.md\:bui-jc-start{justify-content:start}.md\:bui-jc-center{justify-content:center}.md\:bui-jc-end{justify-content:end}.md\:bui-jc-between{justify-content:space-between}.md\:bui-fd-row{flex-direction:row}.md\:bui-fd-column{flex-direction:column}.md\:bui-fd-row-reverse{flex-direction:row-reverse}.md\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=1280px){.lg\:bui-align-start{align-items:start}.lg\:bui-align-center{align-items:center}.lg\:bui-align-end{align-items:end}.lg\:bui-align-stretch{align-items:stretch}.lg\:bui-jc-start{justify-content:start}.lg\:bui-jc-center{justify-content:center}.lg\:bui-jc-end{justify-content:end}.lg\:bui-jc-between{justify-content:space-between}.lg\:bui-fd-row{flex-direction:row}.lg\:bui-fd-column{flex-direction:column}.lg\:bui-fd-row-reverse{flex-direction:row-reverse}.lg\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=1536px){.xl\:bui-align-start{align-items:start}.xl\:bui-align-center{align-items:center}.xl\:bui-align-end{align-items:end}.xl\:bui-align-stretch{align-items:stretch}.xl\:bui-jc-start{justify-content:start}.xl\:bui-jc-center{justify-content:center}.xl\:bui-jc-end{justify-content:end}.xl\:bui-jc-between{justify-content:space-between}.xl\:bui-fd-row{flex-direction:row}.xl\:bui-fd-column{flex-direction:column}.xl\:bui-fd-row-reverse{flex-direction:row-reverse}.xl\:bui-fd-column-reverse{flex-direction:column-reverse}}} \ No newline at end of file +@layer tokens { + :root { + --bui-font-regular: system-ui; + --bui-font-monospace: ui-monospace, 'Menlo', 'Monaco', 'Consolas', + 'Liberation Mono', 'Courier New', monospace; + --bui-font-weight-regular: 400; + --bui-font-weight-bold: 600; + --bui-font-size-1: 0.625rem; + --bui-font-size-2: 0.75rem; + --bui-font-size-3: 0.875rem; + --bui-font-size-4: 1rem; + --bui-font-size-5: 1.25rem; + --bui-font-size-6: 1.5rem; + --bui-font-size-7: 2rem; + --bui-font-size-8: 3rem; + --bui-font-size-9: 4rem; + --bui-font-size-10: 5.75rem; + --bui-space: 0.25rem; + --bui-space-0_5: calc(var(--bui-space) * 0.5); + --bui-space-1: var(--bui-space); + --bui-space-1_5: calc(var(--bui-space) * 1.5); + --bui-space-2: calc(var(--bui-space) * 2); + --bui-space-3: calc(var(--bui-space) * 3); + --bui-space-4: calc(var(--bui-space) * 4); + --bui-space-5: calc(var(--bui-space) * 5); + --bui-space-6: calc(var(--bui-space) * 6); + --bui-space-7: calc(var(--bui-space) * 7); + --bui-space-8: calc(var(--bui-space) * 8); + --bui-space-9: calc(var(--bui-space) * 9); + --bui-space-10: calc(var(--bui-space) * 10); + --bui-space-11: calc(var(--bui-space) * 11); + --bui-space-12: calc(var(--bui-space) * 12); + --bui-space-13: calc(var(--bui-space) * 13); + --bui-space-14: calc(var(--bui-space) * 14); + --bui-radius-1: calc(0.125rem); + --bui-radius-2: calc(0.25rem); + --bui-radius-3: calc(0.5rem); + --bui-radius-4: calc(0.75rem); + --bui-radius-5: calc(1rem); + --bui-radius-6: calc(1.25rem); + --bui-radius-full: 9999px; + --bui-black: #000; + --bui-white: #fff; + --bui-gray-1: #f8f8f8; + --bui-gray-2: #ececec; + --bui-gray-3: #d9d9d9; + --bui-gray-4: #c1c1c1; + --bui-gray-5: #9e9e9e; + --bui-gray-6: #8c8c8c; + --bui-gray-7: #757575; + --bui-gray-8: #595959; + --bui-bg-surface-0: var(--bui-gray-1); + --bui-bg-surface-1: var(--bui-white); + --bui-bg-surface-2: var(--bui-gray-1); + --bui-bg-surface-3: var(--bui-gray-2); + --bui-bg-solid: #1f5493; + --bui-bg-solid-hover: #163a66; + --bui-bg-solid-pressed: #0f2b4e; + --bui-bg-solid-disabled: #163a66; + --bui-bg-neutral-on-surface-0: oklch(0% 0 0/0.06); + --bui-bg-neutral-on-surface-0-hover: oklch(0% 0 0/0.12); + --bui-bg-neutral-on-surface-0-pressed: oklch(0% 0 0/0.16); + --bui-bg-neutral-on-surface-0-disabled: oklch(0% 0 0/0.06); + --bui-bg-neutral-on-surface-1: oklch(0% 0 0/0.06); + --bui-bg-neutral-on-surface-1-hover: oklch(0% 0 0/0.12); + --bui-bg-neutral-on-surface-1-pressed: oklch(0% 0 0/0.16); + --bui-bg-neutral-on-surface-1-disabled: oklch(0% 0 0/0.06); + --bui-bg-neutral-on-surface-2: oklch(0% 0 0/0.06); + --bui-bg-neutral-on-surface-2-hover: oklch(0% 0 0/0.12); + --bui-bg-neutral-on-surface-2-pressed: oklch(0% 0 0/0.16); + --bui-bg-neutral-on-surface-2-disabled: oklch(0% 0 0/0.06); + --bui-bg-neutral-on-surface-3: oklch(0% 0 0/0.06); + --bui-bg-neutral-on-surface-3-hover: oklch(0% 0 0/0.12); + --bui-bg-neutral-on-surface-3-pressed: oklch(0% 0 0/0.16); + --bui-bg-neutral-on-surface-3-disabled: oklch(0% 0 0/0.06); + --bui-bg-danger: #ffe2e2; + --bui-bg-warning: #ffedd5; + --bui-bg-success: #dcfce7; + --bui-bg-info: #dbeafe; + --bui-fg-primary: var(--bui-black); + --bui-fg-secondary: var(--bui-gray-7); + --bui-fg-link: #1f5493; + --bui-fg-link-hover: #1f2d5c; + --bui-fg-disabled: #9e9e9e; + --bui-fg-solid: var(--bui-white); + --bui-fg-solid-disabled: #98a8bc; + --bui-fg-tint: #1f5493; + --bui-fg-tint-disabled: var(--bui-gray-5); + --bui-fg-danger: #991919; + --bui-fg-warning: #92310a; + --bui-fg-success: #116932; + --bui-fg-info: #173da6; + --bui-border: #0000001a; + --bui-border-hover: #0003; + --bui-border-pressed: #0006; + --bui-border-disabled: #0000001a; + --bui-border-info: #7ea9d6; + --bui-border-danger: #f87a7a; + --bui-border-warning: #e36d05; + --bui-border-success: #53db83; + --bui-ring: #1f5493; + --bui-scrollbar: #a0a0a03b; + --bui-scrollbar-thumb: #a0a0a0; + --bui-shadow: 0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a; + --bui-animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; + } + [data-theme-mode='dark'] { + --bui-gray-1: #191919; + --bui-gray-2: #242424; + --bui-gray-3: #373737; + --bui-gray-4: #464646; + --bui-gray-5: #575757; + --bui-gray-6: #7b7b7b; + --bui-gray-7: #9e9e9e; + --bui-gray-8: #b4b4b4; + --bui-bg-surface-0: #333; + --bui-bg-surface-1: var(--bui-gray-1); + --bui-bg-surface-2: var(--bui-gray-2); + --bui-bg-surface-3: var(--bui-gray-3); + --bui-bg-solid: #9cc9ff; + --bui-bg-solid-hover: #83b9fd; + --bui-bg-solid-pressed: #83b9fd; + --bui-bg-solid-disabled: #1b3d68; + --bui-bg-neutral-on-surface-0: oklch(100% 0 0/0.1); + --bui-bg-neutral-on-surface-0-hover: oklch(100% 0 0/0.14); + --bui-bg-neutral-on-surface-0-pressed: oklch(100% 0 0/0.2); + --bui-bg-neutral-on-surface-0-disabled: oklch(100% 0 0/0.1); + --bui-bg-neutral-on-surface-1: oklch(100% 0 0/0.06); + --bui-bg-neutral-on-surface-1-hover: oklch(100% 0 0/0.1); + --bui-bg-neutral-on-surface-1-pressed: oklch(100% 0 0/0.16); + --bui-bg-neutral-on-surface-1-disabled: oklch(100% 0 0/0.06); + --bui-bg-neutral-on-surface-2: oklch(100% 0 0/0.08); + --bui-bg-neutral-on-surface-2-hover: oklch(100% 0 0/0.12); + --bui-bg-neutral-on-surface-2-pressed: oklch(100% 0 0/0.2); + --bui-bg-neutral-on-surface-2-disabled: oklch(100% 0 0/0.08); + --bui-bg-neutral-on-surface-3: oklch(100% 0 0/0.08); + --bui-bg-neutral-on-surface-3-hover: oklch(100% 0 0/0.12); + --bui-bg-neutral-on-surface-3-pressed: oklch(100% 0 0/0.2); + --bui-bg-neutral-on-surface-3-disabled: oklch(100% 0 0/0.08); + --bui-bg-danger: #300c0c; + --bui-bg-warning: #302008; + --bui-bg-success: #042713; + --bui-bg-info: #132049; + --bui-fg-primary: var(--bui-white); + --bui-fg-secondary: var(--bui-gray-7); + --bui-fg-link: #9cc9ff; + --bui-fg-link-hover: #7eb5f7; + --bui-fg-disabled: var(--bui-gray-7); + --bui-fg-solid: #101821; + --bui-fg-solid-disabled: #6191cc; + --bui-fg-tint: #9cc9ff; + --bui-fg-tint-disabled: var(--bui-gray-5); + --bui-fg-danger: #fca5a5; + --bui-fg-warning: #fdba74; + --bui-fg-success: #86efac; + --bui-fg-info: #a3cfff; + --bui-border: #ffffff1f; + --bui-border-hover: #fff6; + --bui-border-pressed: #ffffff80; + --bui-border-disabled: #fff3; + --bui-border-info: #7ea9d6; + --bui-border-danger: #f87a7a; + --bui-border-warning: #e36d05; + --bui-border-success: #53db83; + --bui-ring: #1f5493; + --bui-scrollbar: #3636363a; + --bui-scrollbar-thumb: #575757; + --bui-shadow: none; + } +} +@layer base { + *, + :before, + :after { + box-sizing: border-box; + } + html { + -webkit-text-size-adjust: 100%; + tab-size: 4; + font-family: system-ui, Segoe UI, Roboto, Helvetica, Arial, sans-serif, + Apple Color Emoji, Segoe UI Emoji; + line-height: 1.15; + } + body { + margin: 0; + } + b, + strong { + font-weight: bolder; + } + code, + kbd, + samp, + pre { + font-family: ui-monospace, SFMono-Regular, Consolas, Liberation Mono, Menlo, + monospace; + font-size: 1em; + } + small { + font-size: 80%; + } + sub, + sup { + vertical-align: baseline; + font-size: 75%; + line-height: 0; + position: relative; + } + sub { + bottom: -0.25em; + } + sup { + top: -0.5em; + } + table { + border-color: currentColor; + } + button, + input, + optgroup, + select, + textarea { + margin: 0; + font-family: inherit; + font-size: 100%; + line-height: 1.15; + } + button, + [type='button'], + [type='reset'], + [type='submit'] { + -webkit-appearance: button; + } + legend { + padding: 0; + } + progress { + vertical-align: baseline; + } + ::-webkit-inner-spin-button, + ::-webkit-outer-spin-button { + height: auto; + } + [type='search'] { + -webkit-appearance: textfield; + outline-offset: -2px; + } + ::-webkit-search-decoration { + -webkit-appearance: none; + } + ::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; + } + summary { + display: list-item; + } + :where(a) { + color: inherit; + text-decoration: none; + } + @keyframes pulse { + 50% { + opacity: 0.5; + } + } + body { + background-color: var(--bui-bg-surface-0); + color: var(--bui-fg-primary); + font-family: var(--bui-font-regular); + font-weight: var(--bui-font-weight-regular); + font-size: var(--bui-font-size-3); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + [data-theme-mode='dark'] { + color-scheme: dark; + } + [data-theme-mode='light'] { + color-scheme: light; + } +} +@layer components; +@layer utilities { + .bui-p { + padding: var(--p); + } + .bui-p-0\.5 { + padding: var(--bui-space-0_5); + } + .bui-p-1 { + padding: var(--bui-space-1); + } + .bui-p-1\.5 { + padding: var(--bui-space-1_5); + } + .bui-p-2 { + padding: var(--bui-space-2); + } + .bui-p-3 { + padding: var(--bui-space-3); + } + .bui-p-4 { + padding: var(--bui-space-4); + } + .bui-p-5 { + padding: var(--bui-space-5); + } + .bui-p-6 { + padding: var(--bui-space-6); + } + .bui-p-7 { + padding: var(--bui-space-7); + } + .bui-p-8 { + padding: var(--bui-space-8); + } + .bui-p-9 { + padding: var(--bui-space-9); + } + .bui-p-10 { + padding: var(--bui-space-10); + } + .bui-p-11 { + padding: var(--bui-space-11); + } + .bui-p-12 { + padding: var(--bui-space-12); + } + .bui-p-13 { + padding: var(--bui-space-13); + } + .bui-p-14 { + padding: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-p { + padding: var(--p-xs); + } + .xs\:bui-p-0\.5 { + padding: var(--bui-space-0_5); + } + .xs\:bui-p-1 { + padding: var(--bui-space-1); + } + .xs\:bui-p-1\.5 { + padding: var(--bui-space-1_5); + } + .xs\:bui-p-2 { + padding: var(--bui-space-2); + } + .xs\:bui-p-3 { + padding: var(--bui-space-3); + } + .xs\:bui-p-4 { + padding: var(--bui-space-4); + } + .xs\:bui-p-5 { + padding: var(--bui-space-5); + } + .xs\:bui-p-6 { + padding: var(--bui-space-6); + } + .xs\:bui-p-7 { + padding: var(--bui-space-7); + } + .xs\:bui-p-8 { + padding: var(--bui-space-8); + } + .xs\:bui-p-9 { + padding: var(--bui-space-9); + } + .xs\:bui-p-10 { + padding: var(--bui-space-10); + } + .xs\:bui-p-11 { + padding: var(--bui-space-11); + } + .xs\:bui-p-12 { + padding: var(--bui-space-12); + } + .xs\:bui-p-13 { + padding: var(--bui-space-13); + } + .xs\:bui-p-14 { + padding: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-p { + padding: var(--p-sm); + } + .sm\:bui-p-0\.5 { + padding: var(--bui-space-0_5); + } + .sm\:bui-p-1 { + padding: var(--bui-space-1); + } + .sm\:bui-p-1\.5 { + padding: var(--bui-space-1_5); + } + .sm\:bui-p-2 { + padding: var(--bui-space-2); + } + .sm\:bui-p-3 { + padding: var(--bui-space-3); + } + .sm\:bui-p-4 { + padding: var(--bui-space-4); + } + .sm\:bui-p-5 { + padding: var(--bui-space-5); + } + .sm\:bui-p-6 { + padding: var(--bui-space-6); + } + .sm\:bui-p-7 { + padding: var(--bui-space-7); + } + .sm\:bui-p-8 { + padding: var(--bui-space-8); + } + .sm\:bui-p-9 { + padding: var(--bui-space-9); + } + .sm\:bui-p-10 { + padding: var(--bui-space-10); + } + .sm\:bui-p-11 { + padding: var(--bui-space-11); + } + .sm\:bui-p-12 { + padding: var(--bui-space-12); + } + .sm\:bui-p-13 { + padding: var(--bui-space-13); + } + .sm\:bui-p-14 { + padding: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-p { + padding: var(--p-md); + } + .md\:bui-p-0\.5 { + padding: var(--bui-space-0_5); + } + .md\:bui-p-1 { + padding: var(--bui-space-1); + } + .md\:bui-p-1\.5 { + padding: var(--bui-space-1_5); + } + .md\:bui-p-2 { + padding: var(--bui-space-2); + } + .md\:bui-p-3 { + padding: var(--bui-space-3); + } + .md\:bui-p-4 { + padding: var(--bui-space-4); + } + .md\:bui-p-5 { + padding: var(--bui-space-5); + } + .md\:bui-p-6 { + padding: var(--bui-space-6); + } + .md\:bui-p-7 { + padding: var(--bui-space-7); + } + .md\:bui-p-8 { + padding: var(--bui-space-8); + } + .md\:bui-p-9 { + padding: var(--bui-space-9); + } + .md\:bui-p-10 { + padding: var(--bui-space-10); + } + .md\:bui-p-11 { + padding: var(--bui-space-11); + } + .md\:bui-p-12 { + padding: var(--bui-space-12); + } + .md\:bui-p-13 { + padding: var(--bui-space-13); + } + .md\:bui-p-14 { + padding: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-p { + padding: var(--p-lg); + } + .lg\:bui-p-0\.5 { + padding: var(--bui-space-0_5); + } + .lg\:bui-p-1 { + padding: var(--bui-space-1); + } + .lg\:bui-p-1\.5 { + padding: var(--bui-space-1_5); + } + .lg\:bui-p-2 { + padding: var(--bui-space-2); + } + .lg\:bui-p-3 { + padding: var(--bui-space-3); + } + .lg\:bui-p-4 { + padding: var(--bui-space-4); + } + .lg\:bui-p-5 { + padding: var(--bui-space-5); + } + .lg\:bui-p-6 { + padding: var(--bui-space-6); + } + .lg\:bui-p-7 { + padding: var(--bui-space-7); + } + .lg\:bui-p-8 { + padding: var(--bui-space-8); + } + .lg\:bui-p-9 { + padding: var(--bui-space-9); + } + .lg\:bui-p-10 { + padding: var(--bui-space-10); + } + .lg\:bui-p-11 { + padding: var(--bui-space-11); + } + .lg\:bui-p-12 { + padding: var(--bui-space-12); + } + .lg\:bui-p-13 { + padding: var(--bui-space-13); + } + .lg\:bui-p-14 { + padding: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-p { + padding: var(--p-xl); + } + .xl\:bui-p-0\.5 { + padding: var(--bui-space-0_5); + } + .xl\:bui-p-1 { + padding: var(--bui-space-1); + } + .xl\:bui-p-1\.5 { + padding: var(--bui-space-1_5); + } + .xl\:bui-p-2 { + padding: var(--bui-space-2); + } + .xl\:bui-p-3 { + padding: var(--bui-space-3); + } + .xl\:bui-p-4 { + padding: var(--bui-space-4); + } + .xl\:bui-p-5 { + padding: var(--bui-space-5); + } + .xl\:bui-p-6 { + padding: var(--bui-space-6); + } + .xl\:bui-p-7 { + padding: var(--bui-space-7); + } + .xl\:bui-p-8 { + padding: var(--bui-space-8); + } + .xl\:bui-p-9 { + padding: var(--bui-space-9); + } + .xl\:bui-p-10 { + padding: var(--bui-space-10); + } + .xl\:bui-p-11 { + padding: var(--bui-space-11); + } + .xl\:bui-p-12 { + padding: var(--bui-space-12); + } + .xl\:bui-p-13 { + padding: var(--bui-space-13); + } + .xl\:bui-p-14 { + padding: var(--bui-space-14); + } + } + .bui-pl { + padding-left: var(--pl); + } + .bui-pl-0\.5 { + padding-left: var(--bui-space-0_5); + } + .bui-pl-1 { + padding-left: var(--bui-space-1); + } + .bui-pl-1\.5 { + padding-left: var(--bui-space-1_5); + } + .bui-pl-2 { + padding-left: var(--bui-space-2); + } + .bui-pl-3 { + padding-left: var(--bui-space-3); + } + .bui-pl-4 { + padding-left: var(--bui-space-4); + } + .bui-pl-5 { + padding-left: var(--bui-space-5); + } + .bui-pl-6 { + padding-left: var(--bui-space-6); + } + .bui-pl-7 { + padding-left: var(--bui-space-7); + } + .bui-pl-8 { + padding-left: var(--bui-space-8); + } + .bui-pl-9 { + padding-left: var(--bui-space-9); + } + .bui-pl-10 { + padding-left: var(--bui-space-10); + } + .bui-pl-11 { + padding-left: var(--bui-space-11); + } + .bui-pl-12 { + padding-left: var(--bui-space-12); + } + .bui-pl-13 { + padding-left: var(--bui-space-13); + } + .bui-pl-14 { + padding-left: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-pl { + padding-left: var(--pl-xs); + } + .xs\:bui-pl-0\.5 { + padding-left: var(--bui-space-0_5); + } + .xs\:bui-pl-1 { + padding-left: var(--bui-space-1); + } + .xs\:bui-pl-1\.5 { + padding-left: var(--bui-space-1_5); + } + .xs\:bui-pl-2 { + padding-left: var(--bui-space-2); + } + .xs\:bui-pl-3 { + padding-left: var(--bui-space-3); + } + .xs\:bui-pl-4 { + padding-left: var(--bui-space-4); + } + .xs\:bui-pl-5 { + padding-left: var(--bui-space-5); + } + .xs\:bui-pl-6 { + padding-left: var(--bui-space-6); + } + .xs\:bui-pl-7 { + padding-left: var(--bui-space-7); + } + .xs\:bui-pl-8 { + padding-left: var(--bui-space-8); + } + .xs\:bui-pl-9 { + padding-left: var(--bui-space-9); + } + .xs\:bui-pl-10 { + padding-left: var(--bui-space-10); + } + .xs\:bui-pl-11 { + padding-left: var(--bui-space-11); + } + .xs\:bui-pl-12 { + padding-left: var(--bui-space-12); + } + .xs\:bui-pl-13 { + padding-left: var(--bui-space-13); + } + .xs\:bui-pl-14 { + padding-left: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-pl { + padding-left: var(--pl-sm); + } + .sm\:bui-pl-0\.5 { + padding-left: var(--bui-space-0_5); + } + .sm\:bui-pl-1 { + padding-left: var(--bui-space-1); + } + .sm\:bui-pl-1\.5 { + padding-left: var(--bui-space-1_5); + } + .sm\:bui-pl-2 { + padding-left: var(--bui-space-2); + } + .sm\:bui-pl-3 { + padding-left: var(--bui-space-3); + } + .sm\:bui-pl-4 { + padding-left: var(--bui-space-4); + } + .sm\:bui-pl-5 { + padding-left: var(--bui-space-5); + } + .sm\:bui-pl-6 { + padding-left: var(--bui-space-6); + } + .sm\:bui-pl-7 { + padding-left: var(--bui-space-7); + } + .sm\:bui-pl-8 { + padding-left: var(--bui-space-8); + } + .sm\:bui-pl-9 { + padding-left: var(--bui-space-9); + } + .sm\:bui-pl-10 { + padding-left: var(--bui-space-10); + } + .sm\:bui-pl-11 { + padding-left: var(--bui-space-11); + } + .sm\:bui-pl-12 { + padding-left: var(--bui-space-12); + } + .sm\:bui-pl-13 { + padding-left: var(--bui-space-13); + } + .sm\:bui-pl-14 { + padding-left: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-pl { + padding-left: var(--pl-md); + } + .md\:bui-pl-0\.5 { + padding-left: var(--bui-space-0_5); + } + .md\:bui-pl-1 { + padding-left: var(--bui-space-1); + } + .md\:bui-pl-1\.5 { + padding-left: var(--bui-space-1_5); + } + .md\:bui-pl-2 { + padding-left: var(--bui-space-2); + } + .md\:bui-pl-3 { + padding-left: var(--bui-space-3); + } + .md\:bui-pl-4 { + padding-left: var(--bui-space-4); + } + .md\:bui-pl-5 { + padding-left: var(--bui-space-5); + } + .md\:bui-pl-6 { + padding-left: var(--bui-space-6); + } + .md\:bui-pl-7 { + padding-left: var(--bui-space-7); + } + .md\:bui-pl-8 { + padding-left: var(--bui-space-8); + } + .md\:bui-pl-9 { + padding-left: var(--bui-space-9); + } + .md\:bui-pl-10 { + padding-left: var(--bui-space-10); + } + .md\:bui-pl-11 { + padding-left: var(--bui-space-11); + } + .md\:bui-pl-12 { + padding-left: var(--bui-space-12); + } + .md\:bui-pl-13 { + padding-left: var(--bui-space-13); + } + .md\:bui-pl-14 { + padding-left: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-pl { + padding-left: var(--pl-lg); + } + .lg\:bui-pl-0\.5 { + padding-left: var(--bui-space-0_5); + } + .lg\:bui-pl-1 { + padding-left: var(--bui-space-1); + } + .lg\:bui-pl-1\.5 { + padding-left: var(--bui-space-1_5); + } + .lg\:bui-pl-2 { + padding-left: var(--bui-space-2); + } + .lg\:bui-pl-3 { + padding-left: var(--bui-space-3); + } + .lg\:bui-pl-4 { + padding-left: var(--bui-space-4); + } + .lg\:bui-pl-5 { + padding-left: var(--bui-space-5); + } + .lg\:bui-pl-6 { + padding-left: var(--bui-space-6); + } + .lg\:bui-pl-7 { + padding-left: var(--bui-space-7); + } + .lg\:bui-pl-8 { + padding-left: var(--bui-space-8); + } + .lg\:bui-pl-9 { + padding-left: var(--bui-space-9); + } + .lg\:bui-pl-10 { + padding-left: var(--bui-space-10); + } + .lg\:bui-pl-11 { + padding-left: var(--bui-space-11); + } + .lg\:bui-pl-12 { + padding-left: var(--bui-space-12); + } + .lg\:bui-pl-13 { + padding-left: var(--bui-space-13); + } + .lg\:bui-pl-14 { + padding-left: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-pl { + padding-left: var(--pl-xl); + } + .xl\:bui-pl-0\.5 { + padding-left: var(--bui-space-0_5); + } + .xl\:bui-pl-1 { + padding-left: var(--bui-space-1); + } + .xl\:bui-pl-1\.5 { + padding-left: var(--bui-space-1_5); + } + .xl\:bui-pl-2 { + padding-left: var(--bui-space-2); + } + .xl\:bui-pl-3 { + padding-left: var(--bui-space-3); + } + .xl\:bui-pl-4 { + padding-left: var(--bui-space-4); + } + .xl\:bui-pl-5 { + padding-left: var(--bui-space-5); + } + .xl\:bui-pl-6 { + padding-left: var(--bui-space-6); + } + .xl\:bui-pl-7 { + padding-left: var(--bui-space-7); + } + .xl\:bui-pl-8 { + padding-left: var(--bui-space-8); + } + .xl\:bui-pl-9 { + padding-left: var(--bui-space-9); + } + .xl\:bui-pl-10 { + padding-left: var(--bui-space-10); + } + .xl\:bui-pl-11 { + padding-left: var(--bui-space-11); + } + .xl\:bui-pl-12 { + padding-left: var(--bui-space-12); + } + .xl\:bui-pl-13 { + padding-left: var(--bui-space-13); + } + .xl\:bui-pl-14 { + padding-left: var(--bui-space-14); + } + } + .bui-pr { + padding-right: var(--pr); + } + .bui-pr-0\.5 { + padding-right: var(--bui-space-0_5); + } + .bui-pr-1 { + padding-right: var(--bui-space-1); + } + .bui-pr-1\.5 { + padding-right: var(--bui-space-1_5); + } + .bui-pr-2 { + padding-right: var(--bui-space-2); + } + .bui-pr-3 { + padding-right: var(--bui-space-3); + } + .bui-pr-4 { + padding-right: var(--bui-space-4); + } + .bui-pr-5 { + padding-right: var(--bui-space-5); + } + .bui-pr-6 { + padding-right: var(--bui-space-6); + } + .bui-pr-7 { + padding-right: var(--bui-space-7); + } + .bui-pr-8 { + padding-right: var(--bui-space-8); + } + .bui-pr-9 { + padding-right: var(--bui-space-9); + } + .bui-pr-10 { + padding-right: var(--bui-space-10); + } + .bui-pr-11 { + padding-right: var(--bui-space-11); + } + .bui-pr-12 { + padding-right: var(--bui-space-12); + } + .bui-pr-13 { + padding-right: var(--bui-space-13); + } + .bui-pr-14 { + padding-right: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-pr { + padding-right: var(--pr-xs); + } + .xs\:bui-pr-0\.5 { + padding-right: var(--bui-space-0_5); + } + .xs\:bui-pr-1 { + padding-right: var(--bui-space-1); + } + .xs\:bui-pr-1\.5 { + padding-right: var(--bui-space-1_5); + } + .xs\:bui-pr-2 { + padding-right: var(--bui-space-2); + } + .xs\:bui-pr-3 { + padding-right: var(--bui-space-3); + } + .xs\:bui-pr-4 { + padding-right: var(--bui-space-4); + } + .xs\:bui-pr-5 { + padding-right: var(--bui-space-5); + } + .xs\:bui-pr-6 { + padding-right: var(--bui-space-6); + } + .xs\:bui-pr-7 { + padding-right: var(--bui-space-7); + } + .xs\:bui-pr-8 { + padding-right: var(--bui-space-8); + } + .xs\:bui-pr-9 { + padding-right: var(--bui-space-9); + } + .xs\:bui-pr-10 { + padding-right: var(--bui-space-10); + } + .xs\:bui-pr-11 { + padding-right: var(--bui-space-11); + } + .xs\:bui-pr-12 { + padding-right: var(--bui-space-12); + } + .xs\:bui-pr-13 { + padding-right: var(--bui-space-13); + } + .xs\:bui-pr-14 { + padding-right: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-pr { + padding-right: var(--pr-sm); + } + .sm\:bui-pr-0\.5 { + padding-right: var(--bui-space-0_5); + } + .sm\:bui-pr-1 { + padding-right: var(--bui-space-1); + } + .sm\:bui-pr-1\.5 { + padding-right: var(--bui-space-1_5); + } + .sm\:bui-pr-2 { + padding-right: var(--bui-space-2); + } + .sm\:bui-pr-3 { + padding-right: var(--bui-space-3); + } + .sm\:bui-pr-4 { + padding-right: var(--bui-space-4); + } + .sm\:bui-pr-5 { + padding-right: var(--bui-space-5); + } + .sm\:bui-pr-6 { + padding-right: var(--bui-space-6); + } + .sm\:bui-pr-7 { + padding-right: var(--bui-space-7); + } + .sm\:bui-pr-8 { + padding-right: var(--bui-space-8); + } + .sm\:bui-pr-9 { + padding-right: var(--bui-space-9); + } + .sm\:bui-pr-10 { + padding-right: var(--bui-space-10); + } + .sm\:bui-pr-11 { + padding-right: var(--bui-space-11); + } + .sm\:bui-pr-12 { + padding-right: var(--bui-space-12); + } + .sm\:bui-pr-13 { + padding-right: var(--bui-space-13); + } + .sm\:bui-pr-14 { + padding-right: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-pr { + padding-right: var(--pr-md); + } + .md\:bui-pr-0\.5 { + padding-right: var(--bui-space-0_5); + } + .md\:bui-pr-1 { + padding-right: var(--bui-space-1); + } + .md\:bui-pr-1\.5 { + padding-right: var(--bui-space-1_5); + } + .md\:bui-pr-2 { + padding-right: var(--bui-space-2); + } + .md\:bui-pr-3 { + padding-right: var(--bui-space-3); + } + .md\:bui-pr-4 { + padding-right: var(--bui-space-4); + } + .md\:bui-pr-5 { + padding-right: var(--bui-space-5); + } + .md\:bui-pr-6 { + padding-right: var(--bui-space-6); + } + .md\:bui-pr-7 { + padding-right: var(--bui-space-7); + } + .md\:bui-pr-8 { + padding-right: var(--bui-space-8); + } + .md\:bui-pr-9 { + padding-right: var(--bui-space-9); + } + .md\:bui-pr-10 { + padding-right: var(--bui-space-10); + } + .md\:bui-pr-11 { + padding-right: var(--bui-space-11); + } + .md\:bui-pr-12 { + padding-right: var(--bui-space-12); + } + .md\:bui-pr-13 { + padding-right: var(--bui-space-13); + } + .md\:bui-pr-14 { + padding-right: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-pr { + padding-right: var(--pr-lg); + } + .lg\:bui-pr-0\.5 { + padding-right: var(--bui-space-0_5); + } + .lg\:bui-pr-1 { + padding-right: var(--bui-space-1); + } + .lg\:bui-pr-1\.5 { + padding-right: var(--bui-space-1_5); + } + .lg\:bui-pr-2 { + padding-right: var(--bui-space-2); + } + .lg\:bui-pr-3 { + padding-right: var(--bui-space-3); + } + .lg\:bui-pr-4 { + padding-right: var(--bui-space-4); + } + .lg\:bui-pr-5 { + padding-right: var(--bui-space-5); + } + .lg\:bui-pr-6 { + padding-right: var(--bui-space-6); + } + .lg\:bui-pr-7 { + padding-right: var(--bui-space-7); + } + .lg\:bui-pr-8 { + padding-right: var(--bui-space-8); + } + .lg\:bui-pr-9 { + padding-right: var(--bui-space-9); + } + .lg\:bui-pr-10 { + padding-right: var(--bui-space-10); + } + .lg\:bui-pr-11 { + padding-right: var(--bui-space-11); + } + .lg\:bui-pr-12 { + padding-right: var(--bui-space-12); + } + .lg\:bui-pr-13 { + padding-right: var(--bui-space-13); + } + .lg\:bui-pr-14 { + padding-right: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-pr { + padding-right: var(--pr-xl); + } + .xl\:bui-pr-0\.5 { + padding-right: var(--bui-space-0_5); + } + .xl\:bui-pr-1 { + padding-right: var(--bui-space-1); + } + .xl\:bui-pr-1\.5 { + padding-right: var(--bui-space-1_5); + } + .xl\:bui-pr-2 { + padding-right: var(--bui-space-2); + } + .xl\:bui-pr-3 { + padding-right: var(--bui-space-3); + } + .xl\:bui-pr-4 { + padding-right: var(--bui-space-4); + } + .xl\:bui-pr-5 { + padding-right: var(--bui-space-5); + } + .xl\:bui-pr-6 { + padding-right: var(--bui-space-6); + } + .xl\:bui-pr-7 { + padding-right: var(--bui-space-7); + } + .xl\:bui-pr-8 { + padding-right: var(--bui-space-8); + } + .xl\:bui-pr-9 { + padding-right: var(--bui-space-9); + } + .xl\:bui-pr-10 { + padding-right: var(--bui-space-10); + } + .xl\:bui-pr-11 { + padding-right: var(--bui-space-11); + } + .xl\:bui-pr-12 { + padding-right: var(--bui-space-12); + } + .xl\:bui-pr-13 { + padding-right: var(--bui-space-13); + } + .xl\:bui-pr-14 { + padding-right: var(--bui-space-14); + } + } + .bui-pt { + padding-top: var(--pt); + } + .bui-pt-0\.5 { + padding-top: var(--bui-space-0_5); + } + .bui-pt-1 { + padding-top: var(--bui-space-1); + } + .bui-pt-1\.5 { + padding-top: var(--bui-space-1_5); + } + .bui-pt-2 { + padding-top: var(--bui-space-2); + } + .bui-pt-3 { + padding-top: var(--bui-space-3); + } + .bui-pt-4 { + padding-top: var(--bui-space-4); + } + .bui-pt-5 { + padding-top: var(--bui-space-5); + } + .bui-pt-6 { + padding-top: var(--bui-space-6); + } + .bui-pt-7 { + padding-top: var(--bui-space-7); + } + .bui-pt-8 { + padding-top: var(--bui-space-8); + } + .bui-pt-9 { + padding-top: var(--bui-space-9); + } + .bui-pt-10 { + padding-top: var(--bui-space-10); + } + .bui-pt-11 { + padding-top: var(--bui-space-11); + } + .bui-pt-12 { + padding-top: var(--bui-space-12); + } + .bui-pt-13 { + padding-top: var(--bui-space-13); + } + .bui-pt-14 { + padding-top: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-pt { + padding-top: var(--pt-xs); + } + .xs\:bui-pt-0\.5 { + padding-top: var(--bui-space-0_5); + } + .xs\:bui-pt-1 { + padding-top: var(--bui-space-1); + } + .xs\:bui-pt-1\.5 { + padding-top: var(--bui-space-1_5); + } + .xs\:bui-pt-2 { + padding-top: var(--bui-space-2); + } + .xs\:bui-pt-3 { + padding-top: var(--bui-space-3); + } + .xs\:bui-pt-4 { + padding-top: var(--bui-space-4); + } + .xs\:bui-pt-5 { + padding-top: var(--bui-space-5); + } + .xs\:bui-pt-6 { + padding-top: var(--bui-space-6); + } + .xs\:bui-pt-7 { + padding-top: var(--bui-space-7); + } + .xs\:bui-pt-8 { + padding-top: var(--bui-space-8); + } + .xs\:bui-pt-9 { + padding-top: var(--bui-space-9); + } + .xs\:bui-pt-10 { + padding-top: var(--bui-space-10); + } + .xs\:bui-pt-11 { + padding-top: var(--bui-space-11); + } + .xs\:bui-pt-12 { + padding-top: var(--bui-space-12); + } + .xs\:bui-pt-13 { + padding-top: var(--bui-space-13); + } + .xs\:bui-pt-14 { + padding-top: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-pt { + padding-top: var(--pt-sm); + } + .sm\:bui-pt-0\.5 { + padding-top: var(--bui-space-0_5); + } + .sm\:bui-pt-1 { + padding-top: var(--bui-space-1); + } + .sm\:bui-pt-1\.5 { + padding-top: var(--bui-space-1_5); + } + .sm\:bui-pt-2 { + padding-top: var(--bui-space-2); + } + .sm\:bui-pt-3 { + padding-top: var(--bui-space-3); + } + .sm\:bui-pt-4 { + padding-top: var(--bui-space-4); + } + .sm\:bui-pt-5 { + padding-top: var(--bui-space-5); + } + .sm\:bui-pt-6 { + padding-top: var(--bui-space-6); + } + .sm\:bui-pt-7 { + padding-top: var(--bui-space-7); + } + .sm\:bui-pt-8 { + padding-top: var(--bui-space-8); + } + .sm\:bui-pt-9 { + padding-top: var(--bui-space-9); + } + .sm\:bui-pt-10 { + padding-top: var(--bui-space-10); + } + .sm\:bui-pt-11 { + padding-top: var(--bui-space-11); + } + .sm\:bui-pt-12 { + padding-top: var(--bui-space-12); + } + .sm\:bui-pt-13 { + padding-top: var(--bui-space-13); + } + .sm\:bui-pt-14 { + padding-top: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-pt { + padding-top: var(--pt-md); + } + .md\:bui-pt-0\.5 { + padding-top: var(--bui-space-0_5); + } + .md\:bui-pt-1 { + padding-top: var(--bui-space-1); + } + .md\:bui-pt-1\.5 { + padding-top: var(--bui-space-1_5); + } + .md\:bui-pt-2 { + padding-top: var(--bui-space-2); + } + .md\:bui-pt-3 { + padding-top: var(--bui-space-3); + } + .md\:bui-pt-4 { + padding-top: var(--bui-space-4); + } + .md\:bui-pt-5 { + padding-top: var(--bui-space-5); + } + .md\:bui-pt-6 { + padding-top: var(--bui-space-6); + } + .md\:bui-pt-7 { + padding-top: var(--bui-space-7); + } + .md\:bui-pt-8 { + padding-top: var(--bui-space-8); + } + .md\:bui-pt-9 { + padding-top: var(--bui-space-9); + } + .md\:bui-pt-10 { + padding-top: var(--bui-space-10); + } + .md\:bui-pt-11 { + padding-top: var(--bui-space-11); + } + .md\:bui-pt-12 { + padding-top: var(--bui-space-12); + } + .md\:bui-pt-13 { + padding-top: var(--bui-space-13); + } + .md\:bui-pt-14 { + padding-top: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-pt { + padding-top: var(--pt-lg); + } + .lg\:bui-pt-0\.5 { + padding-top: var(--bui-space-0_5); + } + .lg\:bui-pt-1 { + padding-top: var(--bui-space-1); + } + .lg\:bui-pt-1\.5 { + padding-top: var(--bui-space-1_5); + } + .lg\:bui-pt-2 { + padding-top: var(--bui-space-2); + } + .lg\:bui-pt-3 { + padding-top: var(--bui-space-3); + } + .lg\:bui-pt-4 { + padding-top: var(--bui-space-4); + } + .lg\:bui-pt-5 { + padding-top: var(--bui-space-5); + } + .lg\:bui-pt-6 { + padding-top: var(--bui-space-6); + } + .lg\:bui-pt-7 { + padding-top: var(--bui-space-7); + } + .lg\:bui-pt-8 { + padding-top: var(--bui-space-8); + } + .lg\:bui-pt-9 { + padding-top: var(--bui-space-9); + } + .lg\:bui-pt-10 { + padding-top: var(--bui-space-10); + } + .lg\:bui-pt-11 { + padding-top: var(--bui-space-11); + } + .lg\:bui-pt-12 { + padding-top: var(--bui-space-12); + } + .lg\:bui-pt-13 { + padding-top: var(--bui-space-13); + } + .lg\:bui-pt-14 { + padding-top: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-pt { + padding-top: var(--pt-xl); + } + .xl\:bui-pt-0\.5 { + padding-top: var(--bui-space-0_5); + } + .xl\:bui-pt-1 { + padding-top: var(--bui-space-1); + } + .xl\:bui-pt-1\.5 { + padding-top: var(--bui-space-1_5); + } + .xl\:bui-pt-2 { + padding-top: var(--bui-space-2); + } + .xl\:bui-pt-3 { + padding-top: var(--bui-space-3); + } + .xl\:bui-pt-4 { + padding-top: var(--bui-space-4); + } + .xl\:bui-pt-5 { + padding-top: var(--bui-space-5); + } + .xl\:bui-pt-6 { + padding-top: var(--bui-space-6); + } + .xl\:bui-pt-7 { + padding-top: var(--bui-space-7); + } + .xl\:bui-pt-8 { + padding-top: var(--bui-space-8); + } + .xl\:bui-pt-9 { + padding-top: var(--bui-space-9); + } + .xl\:bui-pt-10 { + padding-top: var(--bui-space-10); + } + .xl\:bui-pt-11 { + padding-top: var(--bui-space-11); + } + .xl\:bui-pt-12 { + padding-top: var(--bui-space-12); + } + .xl\:bui-pt-13 { + padding-top: var(--bui-space-13); + } + .xl\:bui-pt-14 { + padding-top: var(--bui-space-14); + } + } + .bui-pb { + padding-bottom: var(--pb); + } + .bui-pb-0\.5 { + padding-bottom: var(--bui-space-0_5); + } + .bui-pb-1 { + padding-bottom: var(--bui-space-1); + } + .bui-pb-1\.5 { + padding-bottom: var(--bui-space-1_5); + } + .bui-pb-2 { + padding-bottom: var(--bui-space-2); + } + .bui-pb-3 { + padding-bottom: var(--bui-space-3); + } + .bui-pb-4 { + padding-bottom: var(--bui-space-4); + } + .bui-pb-5 { + padding-bottom: var(--bui-space-5); + } + .bui-pb-6 { + padding-bottom: var(--bui-space-6); + } + .bui-pb-7 { + padding-bottom: var(--bui-space-7); + } + .bui-pb-8 { + padding-bottom: var(--bui-space-8); + } + .bui-pb-9 { + padding-bottom: var(--bui-space-9); + } + .bui-pb-10 { + padding-bottom: var(--bui-space-10); + } + .bui-pb-11 { + padding-bottom: var(--bui-space-11); + } + .bui-pb-12 { + padding-bottom: var(--bui-space-12); + } + .bui-pb-13 { + padding-bottom: var(--bui-space-13); + } + .bui-pb-14 { + padding-bottom: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-pb { + padding-bottom: var(--pb-xs); + } + .xs\:bui-pb-0\.5 { + padding-bottom: var(--bui-space-0_5); + } + .xs\:bui-pb-1 { + padding-bottom: var(--bui-space-1); + } + .xs\:bui-pb-1\.5 { + padding-bottom: var(--bui-space-1_5); + } + .xs\:bui-pb-2 { + padding-bottom: var(--bui-space-2); + } + .xs\:bui-pb-3 { + padding-bottom: var(--bui-space-3); + } + .xs\:bui-pb-4 { + padding-bottom: var(--bui-space-4); + } + .xs\:bui-pb-5 { + padding-bottom: var(--bui-space-5); + } + .xs\:bui-pb-6 { + padding-bottom: var(--bui-space-6); + } + .xs\:bui-pb-7 { + padding-bottom: var(--bui-space-7); + } + .xs\:bui-pb-8 { + padding-bottom: var(--bui-space-8); + } + .xs\:bui-pb-9 { + padding-bottom: var(--bui-space-9); + } + .xs\:bui-pb-10 { + padding-bottom: var(--bui-space-10); + } + .xs\:bui-pb-11 { + padding-bottom: var(--bui-space-11); + } + .xs\:bui-pb-12 { + padding-bottom: var(--bui-space-12); + } + .xs\:bui-pb-13 { + padding-bottom: var(--bui-space-13); + } + .xs\:bui-pb-14 { + padding-bottom: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-pb { + padding-bottom: var(--pb-sm); + } + .sm\:bui-pb-0\.5 { + padding-bottom: var(--bui-space-0_5); + } + .sm\:bui-pb-1 { + padding-bottom: var(--bui-space-1); + } + .sm\:bui-pb-1\.5 { + padding-bottom: var(--bui-space-1_5); + } + .sm\:bui-pb-2 { + padding-bottom: var(--bui-space-2); + } + .sm\:bui-pb-3 { + padding-bottom: var(--bui-space-3); + } + .sm\:bui-pb-4 { + padding-bottom: var(--bui-space-4); + } + .sm\:bui-pb-5 { + padding-bottom: var(--bui-space-5); + } + .sm\:bui-pb-6 { + padding-bottom: var(--bui-space-6); + } + .sm\:bui-pb-7 { + padding-bottom: var(--bui-space-7); + } + .sm\:bui-pb-8 { + padding-bottom: var(--bui-space-8); + } + .sm\:bui-pb-9 { + padding-bottom: var(--bui-space-9); + } + .sm\:bui-pb-10 { + padding-bottom: var(--bui-space-10); + } + .sm\:bui-pb-11 { + padding-bottom: var(--bui-space-11); + } + .sm\:bui-pb-12 { + padding-bottom: var(--bui-space-12); + } + .sm\:bui-pb-13 { + padding-bottom: var(--bui-space-13); + } + .sm\:bui-pb-14 { + padding-bottom: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-pb { + padding-bottom: var(--pb-md); + } + .md\:bui-pb-0\.5 { + padding-bottom: var(--bui-space-0_5); + } + .md\:bui-pb-1 { + padding-bottom: var(--bui-space-1); + } + .md\:bui-pb-1\.5 { + padding-bottom: var(--bui-space-1_5); + } + .md\:bui-pb-2 { + padding-bottom: var(--bui-space-2); + } + .md\:bui-pb-3 { + padding-bottom: var(--bui-space-3); + } + .md\:bui-pb-4 { + padding-bottom: var(--bui-space-4); + } + .md\:bui-pb-5 { + padding-bottom: var(--bui-space-5); + } + .md\:bui-pb-6 { + padding-bottom: var(--bui-space-6); + } + .md\:bui-pb-7 { + padding-bottom: var(--bui-space-7); + } + .md\:bui-pb-8 { + padding-bottom: var(--bui-space-8); + } + .md\:bui-pb-9 { + padding-bottom: var(--bui-space-9); + } + .md\:bui-pb-10 { + padding-bottom: var(--bui-space-10); + } + .md\:bui-pb-11 { + padding-bottom: var(--bui-space-11); + } + .md\:bui-pb-12 { + padding-bottom: var(--bui-space-12); + } + .md\:bui-pb-13 { + padding-bottom: var(--bui-space-13); + } + .md\:bui-pb-14 { + padding-bottom: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-pb { + padding-bottom: var(--pb-lg); + } + .lg\:bui-pb-0\.5 { + padding-bottom: var(--bui-space-0_5); + } + .lg\:bui-pb-1 { + padding-bottom: var(--bui-space-1); + } + .lg\:bui-pb-1\.5 { + padding-bottom: var(--bui-space-1_5); + } + .lg\:bui-pb-2 { + padding-bottom: var(--bui-space-2); + } + .lg\:bui-pb-3 { + padding-bottom: var(--bui-space-3); + } + .lg\:bui-pb-4 { + padding-bottom: var(--bui-space-4); + } + .lg\:bui-pb-5 { + padding-bottom: var(--bui-space-5); + } + .lg\:bui-pb-6 { + padding-bottom: var(--bui-space-6); + } + .lg\:bui-pb-7 { + padding-bottom: var(--bui-space-7); + } + .lg\:bui-pb-8 { + padding-bottom: var(--bui-space-8); + } + .lg\:bui-pb-9 { + padding-bottom: var(--bui-space-9); + } + .lg\:bui-pb-10 { + padding-bottom: var(--bui-space-10); + } + .lg\:bui-pb-11 { + padding-bottom: var(--bui-space-11); + } + .lg\:bui-pb-12 { + padding-bottom: var(--bui-space-12); + } + .lg\:bui-pb-13 { + padding-bottom: var(--bui-space-13); + } + .lg\:bui-pb-14 { + padding-bottom: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-pb { + padding-bottom: var(--pb-xl); + } + .xl\:bui-pb-0\.5 { + padding-bottom: var(--bui-space-0_5); + } + .xl\:bui-pb-1 { + padding-bottom: var(--bui-space-1); + } + .xl\:bui-pb-1\.5 { + padding-bottom: var(--bui-space-1_5); + } + .xl\:bui-pb-2 { + padding-bottom: var(--bui-space-2); + } + .xl\:bui-pb-3 { + padding-bottom: var(--bui-space-3); + } + .xl\:bui-pb-4 { + padding-bottom: var(--bui-space-4); + } + .xl\:bui-pb-5 { + padding-bottom: var(--bui-space-5); + } + .xl\:bui-pb-6 { + padding-bottom: var(--bui-space-6); + } + .xl\:bui-pb-7 { + padding-bottom: var(--bui-space-7); + } + .xl\:bui-pb-8 { + padding-bottom: var(--bui-space-8); + } + .xl\:bui-pb-9 { + padding-bottom: var(--bui-space-9); + } + .xl\:bui-pb-10 { + padding-bottom: var(--bui-space-10); + } + .xl\:bui-pb-11 { + padding-bottom: var(--bui-space-11); + } + .xl\:bui-pb-12 { + padding-bottom: var(--bui-space-12); + } + .xl\:bui-pb-13 { + padding-bottom: var(--bui-space-13); + } + .xl\:bui-pb-14 { + padding-bottom: var(--bui-space-14); + } + } + .bui-py { + padding-top: var(--py); + padding-bottom: var(--py); + } + .bui-py-0\.5 { + padding-top: var(--bui-space-0_5); + padding-bottom: var(--bui-space-0_5); + } + .bui-py-1 { + padding-top: var(--bui-space-1); + padding-bottom: var(--bui-space-1); + } + .bui-py-1\.5 { + padding-top: var(--bui-space-1_5); + padding-bottom: var(--bui-space-1_5); + } + .bui-py-2 { + padding-top: var(--bui-space-2); + padding-bottom: var(--bui-space-2); + } + .bui-py-3 { + padding-top: var(--bui-space-3); + padding-bottom: var(--bui-space-3); + } + .bui-py-4 { + padding-top: var(--bui-space-4); + padding-bottom: var(--bui-space-4); + } + .bui-py-5 { + padding-top: var(--bui-space-5); + padding-bottom: var(--bui-space-5); + } + .bui-py-6 { + padding-top: var(--bui-space-6); + padding-bottom: var(--bui-space-6); + } + .bui-py-7 { + padding-top: var(--bui-space-7); + padding-bottom: var(--bui-space-7); + } + .bui-py-8 { + padding-top: var(--bui-space-8); + padding-bottom: var(--bui-space-8); + } + .bui-py-9 { + padding-top: var(--bui-space-9); + padding-bottom: var(--bui-space-9); + } + .bui-py-10 { + padding-top: var(--bui-space-10); + padding-bottom: var(--bui-space-10); + } + .bui-py-11 { + padding-top: var(--bui-space-11); + padding-bottom: var(--bui-space-11); + } + .bui-py-12 { + padding-top: var(--bui-space-12); + padding-bottom: var(--bui-space-12); + } + .bui-py-13 { + padding-top: var(--bui-space-13); + padding-bottom: var(--bui-space-13); + } + .bui-py-14 { + padding-top: var(--bui-space-14); + padding-bottom: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-py { + padding-top: var(--py-xs); + padding-bottom: var(--py-xs); + } + .xs\:bui-py-0\.5 { + padding-top: var(--bui-space-0_5); + padding-bottom: var(--bui-space-0_5); + } + .xs\:bui-py-1 { + padding-top: var(--bui-space-1); + padding-bottom: var(--bui-space-1); + } + .xs\:bui-py-1\.5 { + padding-top: var(--bui-space-1_5); + padding-bottom: var(--bui-space-1_5); + } + .xs\:bui-py-2 { + padding-top: var(--bui-space-2); + padding-bottom: var(--bui-space-2); + } + .xs\:bui-py-3 { + padding-top: var(--bui-space-3); + padding-bottom: var(--bui-space-3); + } + .xs\:bui-py-4 { + padding-top: var(--bui-space-4); + padding-bottom: var(--bui-space-4); + } + .xs\:bui-py-5 { + padding-top: var(--bui-space-5); + padding-bottom: var(--bui-space-5); + } + .xs\:bui-py-6 { + padding-top: var(--bui-space-6); + padding-bottom: var(--bui-space-6); + } + .xs\:bui-py-7 { + padding-top: var(--bui-space-7); + padding-bottom: var(--bui-space-7); + } + .xs\:bui-py-8 { + padding-top: var(--bui-space-8); + padding-bottom: var(--bui-space-8); + } + .xs\:bui-py-9 { + padding-top: var(--bui-space-9); + padding-bottom: var(--bui-space-9); + } + .xs\:bui-py-10 { + padding-top: var(--bui-space-10); + padding-bottom: var(--bui-space-10); + } + .xs\:bui-py-11 { + padding-top: var(--bui-space-11); + padding-bottom: var(--bui-space-11); + } + .xs\:bui-py-12 { + padding-top: var(--bui-space-12); + padding-bottom: var(--bui-space-12); + } + .xs\:bui-py-13 { + padding-top: var(--bui-space-13); + padding-bottom: var(--bui-space-13); + } + .xs\:bui-py-14 { + padding-top: var(--bui-space-14); + padding-bottom: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-py { + padding-top: var(--py-sm); + padding-bottom: var(--py-sm); + } + .sm\:bui-py-0\.5 { + padding-top: var(--bui-space-0_5); + padding-bottom: var(--bui-space-0_5); + } + .sm\:bui-py-1 { + padding-top: var(--bui-space-1); + padding-bottom: var(--bui-space-1); + } + .sm\:bui-py-1\.5 { + padding-top: var(--bui-space-1_5); + padding-bottom: var(--bui-space-1_5); + } + .sm\:bui-py-2 { + padding-top: var(--bui-space-2); + padding-bottom: var(--bui-space-2); + } + .sm\:bui-py-3 { + padding-top: var(--bui-space-3); + padding-bottom: var(--bui-space-3); + } + .sm\:bui-py-4 { + padding-top: var(--bui-space-4); + padding-bottom: var(--bui-space-4); + } + .sm\:bui-py-5 { + padding-top: var(--bui-space-5); + padding-bottom: var(--bui-space-5); + } + .sm\:bui-py-6 { + padding-top: var(--bui-space-6); + padding-bottom: var(--bui-space-6); + } + .sm\:bui-py-7 { + padding-top: var(--bui-space-7); + padding-bottom: var(--bui-space-7); + } + .sm\:bui-py-8 { + padding-top: var(--bui-space-8); + padding-bottom: var(--bui-space-8); + } + .sm\:bui-py-9 { + padding-top: var(--bui-space-9); + padding-bottom: var(--bui-space-9); + } + .sm\:bui-py-10 { + padding-top: var(--bui-space-10); + padding-bottom: var(--bui-space-10); + } + .sm\:bui-py-11 { + padding-top: var(--bui-space-11); + padding-bottom: var(--bui-space-11); + } + .sm\:bui-py-12 { + padding-top: var(--bui-space-12); + padding-bottom: var(--bui-space-12); + } + .sm\:bui-py-13 { + padding-top: var(--bui-space-13); + padding-bottom: var(--bui-space-13); + } + .sm\:bui-py-14 { + padding-top: var(--bui-space-14); + padding-bottom: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-py { + padding-top: var(--py-md); + padding-bottom: var(--py-md); + } + .md\:bui-py-0\.5 { + padding-top: var(--bui-space-0_5); + padding-bottom: var(--bui-space-0_5); + } + .md\:bui-py-1 { + padding-top: var(--bui-space-1); + padding-bottom: var(--bui-space-1); + } + .md\:bui-py-1\.5 { + padding-top: var(--bui-space-1_5); + padding-bottom: var(--bui-space-1_5); + } + .md\:bui-py-2 { + padding-top: var(--bui-space-2); + padding-bottom: var(--bui-space-2); + } + .md\:bui-py-3 { + padding-top: var(--bui-space-3); + padding-bottom: var(--bui-space-3); + } + .md\:bui-py-4 { + padding-top: var(--bui-space-4); + padding-bottom: var(--bui-space-4); + } + .md\:bui-py-5 { + padding-top: var(--bui-space-5); + padding-bottom: var(--bui-space-5); + } + .md\:bui-py-6 { + padding-top: var(--bui-space-6); + padding-bottom: var(--bui-space-6); + } + .md\:bui-py-7 { + padding-top: var(--bui-space-7); + padding-bottom: var(--bui-space-7); + } + .md\:bui-py-8 { + padding-top: var(--bui-space-8); + padding-bottom: var(--bui-space-8); + } + .md\:bui-py-9 { + padding-top: var(--bui-space-9); + padding-bottom: var(--bui-space-9); + } + .md\:bui-py-10 { + padding-top: var(--bui-space-10); + padding-bottom: var(--bui-space-10); + } + .md\:bui-py-11 { + padding-top: var(--bui-space-11); + padding-bottom: var(--bui-space-11); + } + .md\:bui-py-12 { + padding-top: var(--bui-space-12); + padding-bottom: var(--bui-space-12); + } + .md\:bui-py-13 { + padding-top: var(--bui-space-13); + padding-bottom: var(--bui-space-13); + } + .md\:bui-py-14 { + padding-top: var(--bui-space-14); + padding-bottom: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-py { + padding-top: var(--py-lg); + padding-bottom: var(--py-lg); + } + .lg\:bui-py-0\.5 { + padding-top: var(--bui-space-0_5); + padding-bottom: var(--bui-space-0_5); + } + .lg\:bui-py-1 { + padding-top: var(--bui-space-1); + padding-bottom: var(--bui-space-1); + } + .lg\:bui-py-1\.5 { + padding-top: var(--bui-space-1_5); + padding-bottom: var(--bui-space-1_5); + } + .lg\:bui-py-2 { + padding-top: var(--bui-space-2); + padding-bottom: var(--bui-space-2); + } + .lg\:bui-py-3 { + padding-top: var(--bui-space-3); + padding-bottom: var(--bui-space-3); + } + .lg\:bui-py-4 { + padding-top: var(--bui-space-4); + padding-bottom: var(--bui-space-4); + } + .lg\:bui-py-5 { + padding-top: var(--bui-space-5); + padding-bottom: var(--bui-space-5); + } + .lg\:bui-py-6 { + padding-top: var(--bui-space-6); + padding-bottom: var(--bui-space-6); + } + .lg\:bui-py-7 { + padding-top: var(--bui-space-7); + padding-bottom: var(--bui-space-7); + } + .lg\:bui-py-8 { + padding-top: var(--bui-space-8); + padding-bottom: var(--bui-space-8); + } + .lg\:bui-py-9 { + padding-top: var(--bui-space-9); + padding-bottom: var(--bui-space-9); + } + .lg\:bui-py-10 { + padding-top: var(--bui-space-10); + padding-bottom: var(--bui-space-10); + } + .lg\:bui-py-11 { + padding-top: var(--bui-space-11); + padding-bottom: var(--bui-space-11); + } + .lg\:bui-py-12 { + padding-top: var(--bui-space-12); + padding-bottom: var(--bui-space-12); + } + .lg\:bui-py-13 { + padding-top: var(--bui-space-13); + padding-bottom: var(--bui-space-13); + } + .lg\:bui-py-14 { + padding-top: var(--bui-space-14); + padding-bottom: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-py { + padding-top: var(--py-xl); + padding-bottom: var(--py-xl); + } + .xl\:bui-py-0\.5 { + padding-top: var(--bui-space-0_5); + padding-bottom: var(--bui-space-0_5); + } + .xl\:bui-py-1 { + padding-top: var(--bui-space-1); + padding-bottom: var(--bui-space-1); + } + .xl\:bui-py-1\.5 { + padding-top: var(--bui-space-1_5); + padding-bottom: var(--bui-space-1_5); + } + .xl\:bui-py-2 { + padding-top: var(--bui-space-2); + padding-bottom: var(--bui-space-2); + } + .xl\:bui-py-3 { + padding-top: var(--bui-space-3); + padding-bottom: var(--bui-space-3); + } + .xl\:bui-py-4 { + padding-top: var(--bui-space-4); + padding-bottom: var(--bui-space-4); + } + .xl\:bui-py-5 { + padding-top: var(--bui-space-5); + padding-bottom: var(--bui-space-5); + } + .xl\:bui-py-6 { + padding-top: var(--bui-space-6); + padding-bottom: var(--bui-space-6); + } + .xl\:bui-py-7 { + padding-top: var(--bui-space-7); + padding-bottom: var(--bui-space-7); + } + .xl\:bui-py-8 { + padding-top: var(--bui-space-8); + padding-bottom: var(--bui-space-8); + } + .xl\:bui-py-9 { + padding-top: var(--bui-space-9); + padding-bottom: var(--bui-space-9); + } + .xl\:bui-py-10 { + padding-top: var(--bui-space-10); + padding-bottom: var(--bui-space-10); + } + .xl\:bui-py-11 { + padding-top: var(--bui-space-11); + padding-bottom: var(--bui-space-11); + } + .xl\:bui-py-12 { + padding-top: var(--bui-space-12); + padding-bottom: var(--bui-space-12); + } + .xl\:bui-py-13 { + padding-top: var(--bui-space-13); + padding-bottom: var(--bui-space-13); + } + .xl\:bui-py-14 { + padding-top: var(--bui-space-14); + padding-bottom: var(--bui-space-14); + } + } + .bui-px { + padding-left: var(--px); + padding-right: var(--px); + } + .bui-px-0\.5 { + padding-left: var(--bui-space-0_5); + padding-right: var(--bui-space-0_5); + } + .bui-px-1 { + padding-left: var(--bui-space-1); + padding-right: var(--bui-space-1); + } + .bui-px-1\.5 { + padding-left: var(--bui-space-1_5); + padding-right: var(--bui-space-1_5); + } + .bui-px-2 { + padding-left: var(--bui-space-2); + padding-right: var(--bui-space-2); + } + .bui-px-3 { + padding-left: var(--bui-space-3); + padding-right: var(--bui-space-3); + } + .bui-px-4 { + padding-left: var(--bui-space-4); + padding-right: var(--bui-space-4); + } + .bui-px-5 { + padding-left: var(--bui-space-5); + padding-right: var(--bui-space-5); + } + .bui-px-6 { + padding-left: var(--bui-space-6); + padding-right: var(--bui-space-6); + } + .bui-px-7 { + padding-left: var(--bui-space-7); + padding-right: var(--bui-space-7); + } + .bui-px-8 { + padding-left: var(--bui-space-8); + padding-right: var(--bui-space-8); + } + .bui-px-9 { + padding-left: var(--bui-space-9); + padding-right: var(--bui-space-9); + } + .bui-px-10 { + padding-left: var(--bui-space-10); + padding-right: var(--bui-space-10); + } + .bui-px-11 { + padding-left: var(--bui-space-11); + padding-right: var(--bui-space-11); + } + .bui-px-12 { + padding-left: var(--bui-space-12); + padding-right: var(--bui-space-12); + } + .bui-px-13 { + padding-left: var(--bui-space-13); + padding-right: var(--bui-space-13); + } + .bui-px-14 { + padding-left: var(--bui-space-14); + padding-right: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-px { + padding-left: var(--px-xs); + padding-right: var(--px-xs); + } + .xs\:bui-px-0\.5 { + padding-left: var(--bui-space-0_5); + padding-right: var(--bui-space-0_5); + } + .xs\:bui-px-1 { + padding-left: var(--bui-space-1); + padding-right: var(--bui-space-1); + } + .xs\:bui-px-1\.5 { + padding-left: var(--bui-space-1_5); + padding-right: var(--bui-space-1_5); + } + .xs\:bui-px-2 { + padding-left: var(--bui-space-2); + padding-right: var(--bui-space-2); + } + .xs\:bui-px-3 { + padding-left: var(--bui-space-3); + padding-right: var(--bui-space-3); + } + .xs\:bui-px-4 { + padding-left: var(--bui-space-4); + padding-right: var(--bui-space-4); + } + .xs\:bui-px-5 { + padding-left: var(--bui-space-5); + padding-right: var(--bui-space-5); + } + .xs\:bui-px-6 { + padding-left: var(--bui-space-6); + padding-right: var(--bui-space-6); + } + .xs\:bui-px-7 { + padding-left: var(--bui-space-7); + padding-right: var(--bui-space-7); + } + .xs\:bui-px-8 { + padding-left: var(--bui-space-8); + padding-right: var(--bui-space-8); + } + .xs\:bui-px-9 { + padding-left: var(--bui-space-9); + padding-right: var(--bui-space-9); + } + .xs\:bui-px-10 { + padding-left: var(--bui-space-10); + padding-right: var(--bui-space-10); + } + .xs\:bui-px-11 { + padding-left: var(--bui-space-11); + padding-right: var(--bui-space-11); + } + .xs\:bui-px-12 { + padding-left: var(--bui-space-12); + padding-right: var(--bui-space-12); + } + .xs\:bui-px-13 { + padding-left: var(--bui-space-13); + padding-right: var(--bui-space-13); + } + .xs\:bui-px-14 { + padding-left: var(--bui-space-14); + padding-right: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-px { + padding-left: var(--px-sm); + padding-right: var(--px-sm); + } + .sm\:bui-px-0\.5 { + padding-left: var(--bui-space-0_5); + padding-right: var(--bui-space-0_5); + } + .sm\:bui-px-1 { + padding-left: var(--bui-space-1); + padding-right: var(--bui-space-1); + } + .sm\:bui-px-1\.5 { + padding-left: var(--bui-space-1_5); + padding-right: var(--bui-space-1_5); + } + .sm\:bui-px-2 { + padding-left: var(--bui-space-2); + padding-right: var(--bui-space-2); + } + .sm\:bui-px-3 { + padding-left: var(--bui-space-3); + padding-right: var(--bui-space-3); + } + .sm\:bui-px-4 { + padding-left: var(--bui-space-4); + padding-right: var(--bui-space-4); + } + .sm\:bui-px-5 { + padding-left: var(--bui-space-5); + padding-right: var(--bui-space-5); + } + .sm\:bui-px-6 { + padding-left: var(--bui-space-6); + padding-right: var(--bui-space-6); + } + .sm\:bui-px-7 { + padding-left: var(--bui-space-7); + padding-right: var(--bui-space-7); + } + .sm\:bui-px-8 { + padding-left: var(--bui-space-8); + padding-right: var(--bui-space-8); + } + .sm\:bui-px-9 { + padding-left: var(--bui-space-9); + padding-right: var(--bui-space-9); + } + .sm\:bui-px-10 { + padding-left: var(--bui-space-10); + padding-right: var(--bui-space-10); + } + .sm\:bui-px-11 { + padding-left: var(--bui-space-11); + padding-right: var(--bui-space-11); + } + .sm\:bui-px-12 { + padding-left: var(--bui-space-12); + padding-right: var(--bui-space-12); + } + .sm\:bui-px-13 { + padding-left: var(--bui-space-13); + padding-right: var(--bui-space-13); + } + .sm\:bui-px-14 { + padding-left: var(--bui-space-14); + padding-right: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-px { + padding-left: var(--px-md); + padding-right: var(--px-md); + } + .md\:bui-px-0\.5 { + padding-left: var(--bui-space-0_5); + padding-right: var(--bui-space-0_5); + } + .md\:bui-px-1 { + padding-left: var(--bui-space-1); + padding-right: var(--bui-space-1); + } + .md\:bui-px-1\.5 { + padding-left: var(--bui-space-1_5); + padding-right: var(--bui-space-1_5); + } + .md\:bui-px-2 { + padding-left: var(--bui-space-2); + padding-right: var(--bui-space-2); + } + .md\:bui-px-3 { + padding-left: var(--bui-space-3); + padding-right: var(--bui-space-3); + } + .md\:bui-px-4 { + padding-left: var(--bui-space-4); + padding-right: var(--bui-space-4); + } + .md\:bui-px-5 { + padding-left: var(--bui-space-5); + padding-right: var(--bui-space-5); + } + .md\:bui-px-6 { + padding-left: var(--bui-space-6); + padding-right: var(--bui-space-6); + } + .md\:bui-px-7 { + padding-left: var(--bui-space-7); + padding-right: var(--bui-space-7); + } + .md\:bui-px-8 { + padding-left: var(--bui-space-8); + padding-right: var(--bui-space-8); + } + .md\:bui-px-9 { + padding-left: var(--bui-space-9); + padding-right: var(--bui-space-9); + } + .md\:bui-px-10 { + padding-left: var(--bui-space-10); + padding-right: var(--bui-space-10); + } + .md\:bui-px-11 { + padding-left: var(--bui-space-11); + padding-right: var(--bui-space-11); + } + .md\:bui-px-12 { + padding-left: var(--bui-space-12); + padding-right: var(--bui-space-12); + } + .md\:bui-px-13 { + padding-left: var(--bui-space-13); + padding-right: var(--bui-space-13); + } + .md\:bui-px-14 { + padding-left: var(--bui-space-14); + padding-right: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-px { + padding-left: var(--px-lg); + padding-right: var(--px-lg); + } + .lg\:bui-px-0\.5 { + padding-left: var(--bui-space-0_5); + padding-right: var(--bui-space-0_5); + } + .lg\:bui-px-1 { + padding-left: var(--bui-space-1); + padding-right: var(--bui-space-1); + } + .lg\:bui-px-1\.5 { + padding-left: var(--bui-space-1_5); + padding-right: var(--bui-space-1_5); + } + .lg\:bui-px-2 { + padding-left: var(--bui-space-2); + padding-right: var(--bui-space-2); + } + .lg\:bui-px-3 { + padding-left: var(--bui-space-3); + padding-right: var(--bui-space-3); + } + .lg\:bui-px-4 { + padding-left: var(--bui-space-4); + padding-right: var(--bui-space-4); + } + .lg\:bui-px-5 { + padding-left: var(--bui-space-5); + padding-right: var(--bui-space-5); + } + .lg\:bui-px-6 { + padding-left: var(--bui-space-6); + padding-right: var(--bui-space-6); + } + .lg\:bui-px-7 { + padding-left: var(--bui-space-7); + padding-right: var(--bui-space-7); + } + .lg\:bui-px-8 { + padding-left: var(--bui-space-8); + padding-right: var(--bui-space-8); + } + .lg\:bui-px-9 { + padding-left: var(--bui-space-9); + padding-right: var(--bui-space-9); + } + .lg\:bui-px-10 { + padding-left: var(--bui-space-10); + padding-right: var(--bui-space-10); + } + .lg\:bui-px-11 { + padding-left: var(--bui-space-11); + padding-right: var(--bui-space-11); + } + .lg\:bui-px-12 { + padding-left: var(--bui-space-12); + padding-right: var(--bui-space-12); + } + .lg\:bui-px-13 { + padding-left: var(--bui-space-13); + padding-right: var(--bui-space-13); + } + .lg\:bui-px-14 { + padding-left: var(--bui-space-14); + padding-right: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-px { + padding-left: var(--px-xl); + padding-right: var(--px-xl); + } + .xl\:bui-px-0\.5 { + padding-left: var(--bui-space-0_5); + padding-right: var(--bui-space-0_5); + } + .xl\:bui-px-1 { + padding-left: var(--bui-space-1); + padding-right: var(--bui-space-1); + } + .xl\:bui-px-1\.5 { + padding-left: var(--bui-space-1_5); + padding-right: var(--bui-space-1_5); + } + .xl\:bui-px-2 { + padding-left: var(--bui-space-2); + padding-right: var(--bui-space-2); + } + .xl\:bui-px-3 { + padding-left: var(--bui-space-3); + padding-right: var(--bui-space-3); + } + .xl\:bui-px-4 { + padding-left: var(--bui-space-4); + padding-right: var(--bui-space-4); + } + .xl\:bui-px-5 { + padding-left: var(--bui-space-5); + padding-right: var(--bui-space-5); + } + .xl\:bui-px-6 { + padding-left: var(--bui-space-6); + padding-right: var(--bui-space-6); + } + .xl\:bui-px-7 { + padding-left: var(--bui-space-7); + padding-right: var(--bui-space-7); + } + .xl\:bui-px-8 { + padding-left: var(--bui-space-8); + padding-right: var(--bui-space-8); + } + .xl\:bui-px-9 { + padding-left: var(--bui-space-9); + padding-right: var(--bui-space-9); + } + .xl\:bui-px-10 { + padding-left: var(--bui-space-10); + padding-right: var(--bui-space-10); + } + .xl\:bui-px-11 { + padding-left: var(--bui-space-11); + padding-right: var(--bui-space-11); + } + .xl\:bui-px-12 { + padding-left: var(--bui-space-12); + padding-right: var(--bui-space-12); + } + .xl\:bui-px-13 { + padding-left: var(--bui-space-13); + padding-right: var(--bui-space-13); + } + .xl\:bui-px-14 { + padding-left: var(--bui-space-14); + padding-right: var(--bui-space-14); + } + } + .bui-m { + margin: var(--m); + } + .bui-m-0\.5 { + margin: var(--bui-space-0_5); + } + .bui-m-1 { + margin: var(--bui-space-1); + } + .bui-m-1\.5 { + margin: var(--bui-space-1_5); + } + .bui-m-2 { + margin: var(--bui-space-2); + } + .bui-m-3 { + margin: var(--bui-space-3); + } + .bui-m-4 { + margin: var(--bui-space-4); + } + .bui-m-5 { + margin: var(--bui-space-5); + } + .bui-m-6 { + margin: var(--bui-space-6); + } + .bui-m-7 { + margin: var(--bui-space-7); + } + .bui-m-8 { + margin: var(--bui-space-8); + } + .bui-m-9 { + margin: var(--bui-space-9); + } + .bui-m-10 { + margin: var(--bui-space-10); + } + .bui-m-11 { + margin: var(--bui-space-11); + } + .bui-m-12 { + margin: var(--bui-space-12); + } + .bui-m-13 { + margin: var(--bui-space-13); + } + .bui-m-14 { + margin: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-m { + margin: var(--p-xs); + } + .xs\:bui-m-0\.5 { + margin: var(--bui-space-0_5); + } + .xs\:bui-m-1 { + margin: var(--bui-space-1); + } + .xs\:bui-m-1\.5 { + margin: var(--bui-space-1_5); + } + .xs\:bui-m-2 { + margin: var(--bui-space-2); + } + .xs\:bui-m-3 { + margin: var(--bui-space-3); + } + .xs\:bui-m-4 { + margin: var(--bui-space-4); + } + .xs\:bui-m-5 { + margin: var(--bui-space-5); + } + .xs\:bui-m-6 { + margin: var(--bui-space-6); + } + .xs\:bui-m-7 { + margin: var(--bui-space-7); + } + .xs\:bui-m-8 { + margin: var(--bui-space-8); + } + .xs\:bui-m-9 { + margin: var(--bui-space-9); + } + .xs\:bui-m-10 { + margin: var(--bui-space-10); + } + .xs\:bui-m-11 { + margin: var(--bui-space-11); + } + .xs\:bui-m-12 { + margin: var(--bui-space-12); + } + .xs\:bui-m-13 { + margin: var(--bui-space-13); + } + .xs\:bui-m-14 { + margin: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-m { + margin: var(--p-sm); + } + .sm\:bui-m-0\.5 { + margin: var(--bui-space-0_5); + } + .sm\:bui-m-1 { + margin: var(--bui-space-1); + } + .sm\:bui-m-1\.5 { + margin: var(--bui-space-1_5); + } + .sm\:bui-m-2 { + margin: var(--bui-space-2); + } + .sm\:bui-m-3 { + margin: var(--bui-space-3); + } + .sm\:bui-m-4 { + margin: var(--bui-space-4); + } + .sm\:bui-m-5 { + margin: var(--bui-space-5); + } + .sm\:bui-m-6 { + margin: var(--bui-space-6); + } + .sm\:bui-m-7 { + margin: var(--bui-space-7); + } + .sm\:bui-m-8 { + margin: var(--bui-space-8); + } + .sm\:bui-m-9 { + margin: var(--bui-space-9); + } + .sm\:bui-m-10 { + margin: var(--bui-space-10); + } + .sm\:bui-m-11 { + margin: var(--bui-space-11); + } + .sm\:bui-m-12 { + margin: var(--bui-space-12); + } + .sm\:bui-m-13 { + margin: var(--bui-space-13); + } + .sm\:bui-m-14 { + margin: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-m { + margin: var(--p-md); + } + .md\:bui-m-0\.5 { + margin: var(--bui-space-0_5); + } + .md\:bui-m-1 { + margin: var(--bui-space-1); + } + .md\:bui-m-1\.5 { + margin: var(--bui-space-1_5); + } + .md\:bui-m-2 { + margin: var(--bui-space-2); + } + .md\:bui-m-3 { + margin: var(--bui-space-3); + } + .md\:bui-m-4 { + margin: var(--bui-space-4); + } + .md\:bui-m-5 { + margin: var(--bui-space-5); + } + .md\:bui-m-6 { + margin: var(--bui-space-6); + } + .md\:bui-m-7 { + margin: var(--bui-space-7); + } + .md\:bui-m-8 { + margin: var(--bui-space-8); + } + .md\:bui-m-9 { + margin: var(--bui-space-9); + } + .md\:bui-m-10 { + margin: var(--bui-space-10); + } + .md\:bui-m-11 { + margin: var(--bui-space-11); + } + .md\:bui-m-12 { + margin: var(--bui-space-12); + } + .md\:bui-m-13 { + margin: var(--bui-space-13); + } + .md\:bui-m-14 { + margin: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-m { + margin: var(--p-lg); + } + .lg\:bui-m-0\.5 { + margin: var(--bui-space-0_5); + } + .lg\:bui-m-1 { + margin: var(--bui-space-1); + } + .lg\:bui-m-1\.5 { + margin: var(--bui-space-1_5); + } + .lg\:bui-m-2 { + margin: var(--bui-space-2); + } + .lg\:bui-m-3 { + margin: var(--bui-space-3); + } + .lg\:bui-m-4 { + margin: var(--bui-space-4); + } + .lg\:bui-m-5 { + margin: var(--bui-space-5); + } + .lg\:bui-m-6 { + margin: var(--bui-space-6); + } + .lg\:bui-m-7 { + margin: var(--bui-space-7); + } + .lg\:bui-m-8 { + margin: var(--bui-space-8); + } + .lg\:bui-m-9 { + margin: var(--bui-space-9); + } + .lg\:bui-m-10 { + margin: var(--bui-space-10); + } + .lg\:bui-m-11 { + margin: var(--bui-space-11); + } + .lg\:bui-m-12 { + margin: var(--bui-space-12); + } + .lg\:bui-m-13 { + margin: var(--bui-space-13); + } + .lg\:bui-m-14 { + margin: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-m { + margin: var(--p-xl); + } + .xl\:bui-m-0\.5 { + margin: var(--bui-space-0_5); + } + .xl\:bui-m-1 { + margin: var(--bui-space-1); + } + .xl\:bui-m-1\.5 { + margin: var(--bui-space-1_5); + } + .xl\:bui-m-2 { + margin: var(--bui-space-2); + } + .xl\:bui-m-3 { + margin: var(--bui-space-3); + } + .xl\:bui-m-4 { + margin: var(--bui-space-4); + } + .xl\:bui-m-5 { + margin: var(--bui-space-5); + } + .xl\:bui-m-6 { + margin: var(--bui-space-6); + } + .xl\:bui-m-7 { + margin: var(--bui-space-7); + } + .xl\:bui-m-8 { + margin: var(--bui-space-8); + } + .xl\:bui-m-9 { + margin: var(--bui-space-9); + } + .xl\:bui-m-10 { + margin: var(--bui-space-10); + } + .xl\:bui-m-11 { + margin: var(--bui-space-11); + } + .xl\:bui-m-12 { + margin: var(--bui-space-12); + } + .xl\:bui-m-13 { + margin: var(--bui-space-13); + } + .xl\:bui-m-14 { + margin: var(--bui-space-14); + } + } + .bui-ml { + margin-left: var(--ml); + } + .bui-ml-0\.5 { + margin-left: var(--bui-space-0_5); + } + .bui-ml-1 { + margin-left: var(--bui-space-1); + } + .bui-ml-1\.5 { + margin-left: var(--bui-space-1_5); + } + .bui-ml-2 { + margin-left: var(--bui-space-2); + } + .bui-ml-3 { + margin-left: var(--bui-space-3); + } + .bui-ml-4 { + margin-left: var(--bui-space-4); + } + .bui-ml-5 { + margin-left: var(--bui-space-5); + } + .bui-ml-6 { + margin-left: var(--bui-space-6); + } + .bui-ml-7 { + margin-left: var(--bui-space-7); + } + .bui-ml-8 { + margin-left: var(--bui-space-8); + } + .bui-ml-9 { + margin-left: var(--bui-space-9); + } + .bui-ml-10 { + margin-left: var(--bui-space-10); + } + .bui-ml-11 { + margin-left: var(--bui-space-11); + } + .bui-ml-12 { + margin-left: var(--bui-space-12); + } + .bui-ml-13 { + margin-left: var(--bui-space-13); + } + .bui-ml-14 { + margin-left: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-ml { + margin-left: var(--ml-xs); + } + .xs\:bui-ml-0\.5 { + margin-left: var(--bui-space-0_5); + } + .xs\:bui-ml-1 { + margin-left: var(--bui-space-1); + } + .xs\:bui-ml-1\.5 { + margin-left: var(--bui-space-1_5); + } + .xs\:bui-ml-2 { + margin-left: var(--bui-space-2); + } + .xs\:bui-ml-3 { + margin-left: var(--bui-space-3); + } + .xs\:bui-ml-4 { + margin-left: var(--bui-space-4); + } + .xs\:bui-ml-5 { + margin-left: var(--bui-space-5); + } + .xs\:bui-ml-6 { + margin-left: var(--bui-space-6); + } + .xs\:bui-ml-7 { + margin-left: var(--bui-space-7); + } + .xs\:bui-ml-8 { + margin-left: var(--bui-space-8); + } + .xs\:bui-ml-9 { + margin-left: var(--bui-space-9); + } + .xs\:bui-ml-10 { + margin-left: var(--bui-space-10); + } + .xs\:bui-ml-11 { + margin-left: var(--bui-space-11); + } + .xs\:bui-ml-12 { + margin-left: var(--bui-space-12); + } + .xs\:bui-ml-13 { + margin-left: var(--bui-space-13); + } + .xs\:bui-ml-14 { + margin-left: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-ml { + margin-left: var(--ml-sm); + } + .sm\:bui-ml-0\.5 { + margin-left: var(--bui-space-0_5); + } + .sm\:bui-ml-1 { + margin-left: var(--bui-space-1); + } + .sm\:bui-ml-1\.5 { + margin-left: var(--bui-space-1_5); + } + .sm\:bui-ml-2 { + margin-left: var(--bui-space-2); + } + .sm\:bui-ml-3 { + margin-left: var(--bui-space-3); + } + .sm\:bui-ml-4 { + margin-left: var(--bui-space-4); + } + .sm\:bui-ml-5 { + margin-left: var(--bui-space-5); + } + .sm\:bui-ml-6 { + margin-left: var(--bui-space-6); + } + .sm\:bui-ml-7 { + margin-left: var(--bui-space-7); + } + .sm\:bui-ml-8 { + margin-left: var(--bui-space-8); + } + .sm\:bui-ml-9 { + margin-left: var(--bui-space-9); + } + .sm\:bui-ml-10 { + margin-left: var(--bui-space-10); + } + .sm\:bui-ml-11 { + margin-left: var(--bui-space-11); + } + .sm\:bui-ml-12 { + margin-left: var(--bui-space-12); + } + .sm\:bui-ml-13 { + margin-left: var(--bui-space-13); + } + .sm\:bui-ml-14 { + margin-left: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-ml { + margin-left: var(--ml-md); + } + .md\:bui-ml-0\.5 { + margin-left: var(--bui-space-0_5); + } + .md\:bui-ml-1 { + margin-left: var(--bui-space-1); + } + .md\:bui-ml-1\.5 { + margin-left: var(--bui-space-1_5); + } + .md\:bui-ml-2 { + margin-left: var(--bui-space-2); + } + .md\:bui-ml-3 { + margin-left: var(--bui-space-3); + } + .md\:bui-ml-4 { + margin-left: var(--bui-space-4); + } + .md\:bui-ml-5 { + margin-left: var(--bui-space-5); + } + .md\:bui-ml-6 { + margin-left: var(--bui-space-6); + } + .md\:bui-ml-7 { + margin-left: var(--bui-space-7); + } + .md\:bui-ml-8 { + margin-left: var(--bui-space-8); + } + .md\:bui-ml-9 { + margin-left: var(--bui-space-9); + } + .md\:bui-ml-10 { + margin-left: var(--bui-space-10); + } + .md\:bui-ml-11 { + margin-left: var(--bui-space-11); + } + .md\:bui-ml-12 { + margin-left: var(--bui-space-12); + } + .md\:bui-ml-13 { + margin-left: var(--bui-space-13); + } + .md\:bui-ml-14 { + margin-left: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-ml { + margin-left: var(--ml-lg); + } + .lg\:bui-ml-0\.5 { + margin-left: var(--bui-space-0_5); + } + .lg\:bui-ml-1 { + margin-left: var(--bui-space-1); + } + .lg\:bui-ml-1\.5 { + margin-left: var(--bui-space-1_5); + } + .lg\:bui-ml-2 { + margin-left: var(--bui-space-2); + } + .lg\:bui-ml-3 { + margin-left: var(--bui-space-3); + } + .lg\:bui-ml-4 { + margin-left: var(--bui-space-4); + } + .lg\:bui-ml-5 { + margin-left: var(--bui-space-5); + } + .lg\:bui-ml-6 { + margin-left: var(--bui-space-6); + } + .lg\:bui-ml-7 { + margin-left: var(--bui-space-7); + } + .lg\:bui-ml-8 { + margin-left: var(--bui-space-8); + } + .lg\:bui-ml-9 { + margin-left: var(--bui-space-9); + } + .lg\:bui-ml-10 { + margin-left: var(--bui-space-10); + } + .lg\:bui-ml-11 { + margin-left: var(--bui-space-11); + } + .lg\:bui-ml-12 { + margin-left: var(--bui-space-12); + } + .lg\:bui-ml-13 { + margin-left: var(--bui-space-13); + } + .lg\:bui-ml-14 { + margin-left: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-ml { + margin-left: var(--ml-xl); + } + .xl\:bui-ml-0\.5 { + margin-left: var(--bui-space-0_5); + } + .xl\:bui-ml-1 { + margin-left: var(--bui-space-1); + } + .xl\:bui-ml-1\.5 { + margin-left: var(--bui-space-1_5); + } + .xl\:bui-ml-2 { + margin-left: var(--bui-space-2); + } + .xl\:bui-ml-3 { + margin-left: var(--bui-space-3); + } + .xl\:bui-ml-4 { + margin-left: var(--bui-space-4); + } + .xl\:bui-ml-5 { + margin-left: var(--bui-space-5); + } + .xl\:bui-ml-6 { + margin-left: var(--bui-space-6); + } + .xl\:bui-ml-7 { + margin-left: var(--bui-space-7); + } + .xl\:bui-ml-8 { + margin-left: var(--bui-space-8); + } + .xl\:bui-ml-9 { + margin-left: var(--bui-space-9); + } + .xl\:bui-ml-10 { + margin-left: var(--bui-space-10); + } + .xl\:bui-ml-11 { + margin-left: var(--bui-space-11); + } + .xl\:bui-ml-12 { + margin-left: var(--bui-space-12); + } + .xl\:bui-ml-13 { + margin-left: var(--bui-space-13); + } + .xl\:bui-ml-14 { + margin-left: var(--bui-space-14); + } + } + .bui-mr { + margin-right: var(--mr); + } + .bui-mr-0\.5 { + margin-right: var(--bui-space-0_5); + } + .bui-mr-1 { + margin-right: var(--bui-space-1); + } + .bui-mr-1\.5 { + margin-right: var(--bui-space-1_5); + } + .bui-mr-2 { + margin-right: var(--bui-space-2); + } + .bui-mr-3 { + margin-right: var(--bui-space-3); + } + .bui-mr-4 { + margin-right: var(--bui-space-4); + } + .bui-mr-5 { + margin-right: var(--bui-space-5); + } + .bui-mr-6 { + margin-right: var(--bui-space-6); + } + .bui-mr-7 { + margin-right: var(--bui-space-7); + } + .bui-mr-8 { + margin-right: var(--bui-space-8); + } + .bui-mr-9 { + margin-right: var(--bui-space-9); + } + .bui-mr-10 { + margin-right: var(--bui-space-10); + } + .bui-mr-11 { + margin-right: var(--bui-space-11); + } + .bui-mr-12 { + margin-right: var(--bui-space-12); + } + .bui-mr-13 { + margin-right: var(--bui-space-13); + } + .bui-mr-14 { + margin-right: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-mr { + margin-right: var(--mr-xs); + } + .xs\:bui-mr-0\.5 { + margin-right: var(--bui-space-0_5); + } + .xs\:bui-mr-1 { + margin-right: var(--bui-space-1); + } + .xs\:bui-mr-1\.5 { + margin-right: var(--bui-space-1_5); + } + .xs\:bui-mr-2 { + margin-right: var(--bui-space-2); + } + .xs\:bui-mr-3 { + margin-right: var(--bui-space-3); + } + .xs\:bui-mr-4 { + margin-right: var(--bui-space-4); + } + .xs\:bui-mr-5 { + margin-right: var(--bui-space-5); + } + .xs\:bui-mr-6 { + margin-right: var(--bui-space-6); + } + .xs\:bui-mr-7 { + margin-right: var(--bui-space-7); + } + .xs\:bui-mr-8 { + margin-right: var(--bui-space-8); + } + .xs\:bui-mr-9 { + margin-right: var(--bui-space-9); + } + .xs\:bui-mr-10 { + margin-right: var(--bui-space-10); + } + .xs\:bui-mr-11 { + margin-right: var(--bui-space-11); + } + .xs\:bui-mr-12 { + margin-right: var(--bui-space-12); + } + .xs\:bui-mr-13 { + margin-right: var(--bui-space-13); + } + .xs\:bui-mr-14 { + margin-right: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-mr { + margin-right: var(--mr-sm); + } + .sm\:bui-mr-0\.5 { + margin-right: var(--bui-space-0_5); + } + .sm\:bui-mr-1 { + margin-right: var(--bui-space-1); + } + .sm\:bui-mr-1\.5 { + margin-right: var(--bui-space-1_5); + } + .sm\:bui-mr-2 { + margin-right: var(--bui-space-2); + } + .sm\:bui-mr-3 { + margin-right: var(--bui-space-3); + } + .sm\:bui-mr-4 { + margin-right: var(--bui-space-4); + } + .sm\:bui-mr-5 { + margin-right: var(--bui-space-5); + } + .sm\:bui-mr-6 { + margin-right: var(--bui-space-6); + } + .sm\:bui-mr-7 { + margin-right: var(--bui-space-7); + } + .sm\:bui-mr-8 { + margin-right: var(--bui-space-8); + } + .sm\:bui-mr-9 { + margin-right: var(--bui-space-9); + } + .sm\:bui-mr-10 { + margin-right: var(--bui-space-10); + } + .sm\:bui-mr-11 { + margin-right: var(--bui-space-11); + } + .sm\:bui-mr-12 { + margin-right: var(--bui-space-12); + } + .sm\:bui-mr-13 { + margin-right: var(--bui-space-13); + } + .sm\:bui-mr-14 { + margin-right: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-mr { + margin-right: var(--mr-md); + } + .md\:bui-mr-0\.5 { + margin-right: var(--bui-space-0_5); + } + .md\:bui-mr-1 { + margin-right: var(--bui-space-1); + } + .md\:bui-mr-1\.5 { + margin-right: var(--bui-space-1_5); + } + .md\:bui-mr-2 { + margin-right: var(--bui-space-2); + } + .md\:bui-mr-3 { + margin-right: var(--bui-space-3); + } + .md\:bui-mr-4 { + margin-right: var(--bui-space-4); + } + .md\:bui-mr-5 { + margin-right: var(--bui-space-5); + } + .md\:bui-mr-6 { + margin-right: var(--bui-space-6); + } + .md\:bui-mr-7 { + margin-right: var(--bui-space-7); + } + .md\:bui-mr-8 { + margin-right: var(--bui-space-8); + } + .md\:bui-mr-9 { + margin-right: var(--bui-space-9); + } + .md\:bui-mr-10 { + margin-right: var(--bui-space-10); + } + .md\:bui-mr-11 { + margin-right: var(--bui-space-11); + } + .md\:bui-mr-12 { + margin-right: var(--bui-space-12); + } + .md\:bui-mr-13 { + margin-right: var(--bui-space-13); + } + .md\:bui-mr-14 { + margin-right: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-mr { + margin-right: var(--mr-lg); + } + .lg\:bui-mr-0\.5 { + margin-right: var(--bui-space-0_5); + } + .lg\:bui-mr-1 { + margin-right: var(--bui-space-1); + } + .lg\:bui-mr-1\.5 { + margin-right: var(--bui-space-1_5); + } + .lg\:bui-mr-2 { + margin-right: var(--bui-space-2); + } + .lg\:bui-mr-3 { + margin-right: var(--bui-space-3); + } + .lg\:bui-mr-4 { + margin-right: var(--bui-space-4); + } + .lg\:bui-mr-5 { + margin-right: var(--bui-space-5); + } + .lg\:bui-mr-6 { + margin-right: var(--bui-space-6); + } + .lg\:bui-mr-7 { + margin-right: var(--bui-space-7); + } + .lg\:bui-mr-8 { + margin-right: var(--bui-space-8); + } + .lg\:bui-mr-9 { + margin-right: var(--bui-space-9); + } + .lg\:bui-mr-10 { + margin-right: var(--bui-space-10); + } + .lg\:bui-mr-11 { + margin-right: var(--bui-space-11); + } + .lg\:bui-mr-12 { + margin-right: var(--bui-space-12); + } + .lg\:bui-mr-13 { + margin-right: var(--bui-space-13); + } + .lg\:bui-mr-14 { + margin-right: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-mr { + margin-right: var(--mr-xl); + } + .xl\:bui-mr-0\.5 { + margin-right: var(--bui-space-0_5); + } + .xl\:bui-mr-1 { + margin-right: var(--bui-space-1); + } + .xl\:bui-mr-1\.5 { + margin-right: var(--bui-space-1_5); + } + .xl\:bui-mr-2 { + margin-right: var(--bui-space-2); + } + .xl\:bui-mr-3 { + margin-right: var(--bui-space-3); + } + .xl\:bui-mr-4 { + margin-right: var(--bui-space-4); + } + .xl\:bui-mr-5 { + margin-right: var(--bui-space-5); + } + .xl\:bui-mr-6 { + margin-right: var(--bui-space-6); + } + .xl\:bui-mr-7 { + margin-right: var(--bui-space-7); + } + .xl\:bui-mr-8 { + margin-right: var(--bui-space-8); + } + .xl\:bui-mr-9 { + margin-right: var(--bui-space-9); + } + .xl\:bui-mr-10 { + margin-right: var(--bui-space-10); + } + .xl\:bui-mr-11 { + margin-right: var(--bui-space-11); + } + .xl\:bui-mr-12 { + margin-right: var(--bui-space-12); + } + .xl\:bui-mr-13 { + margin-right: var(--bui-space-13); + } + .xl\:bui-mr-14 { + margin-right: var(--bui-space-14); + } + } + .bui-mt { + margin-top: var(--mt); + } + .bui-mt-0\.5 { + margin-top: var(--bui-space-0_5); + } + .bui-mt-1 { + margin-top: var(--bui-space-1); + } + .bui-mt-1\.5 { + margin-top: var(--bui-space-1_5); + } + .bui-mt-2 { + margin-top: var(--bui-space-2); + } + .bui-mt-3 { + margin-top: var(--bui-space-3); + } + .bui-mt-4 { + margin-top: var(--bui-space-4); + } + .bui-mt-5 { + margin-top: var(--bui-space-5); + } + .bui-mt-6 { + margin-top: var(--bui-space-6); + } + .bui-mt-7 { + margin-top: var(--bui-space-7); + } + .bui-mt-8 { + margin-top: var(--bui-space-8); + } + .bui-mt-9 { + margin-top: var(--bui-space-9); + } + .bui-mt-10 { + margin-top: var(--bui-space-10); + } + .bui-mt-11 { + margin-top: var(--bui-space-11); + } + .bui-mt-12 { + margin-top: var(--bui-space-12); + } + .bui-mt-13 { + margin-top: var(--bui-space-13); + } + .bui-mt-14 { + margin-top: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-mt { + margin-top: var(--mt-xs); + } + .xs\:bui-mt-0\.5 { + margin-top: var(--bui-space-0_5); + } + .xs\:bui-mt-1 { + margin-top: var(--bui-space-1); + } + .xs\:bui-mt-1\.5 { + margin-top: var(--bui-space-1_5); + } + .xs\:bui-mt-2 { + margin-top: var(--bui-space-2); + } + .xs\:bui-mt-3 { + margin-top: var(--bui-space-3); + } + .xs\:bui-mt-4 { + margin-top: var(--bui-space-4); + } + .xs\:bui-mt-5 { + margin-top: var(--bui-space-5); + } + .xs\:bui-mt-6 { + margin-top: var(--bui-space-6); + } + .xs\:bui-mt-7 { + margin-top: var(--bui-space-7); + } + .xs\:bui-mt-8 { + margin-top: var(--bui-space-8); + } + .xs\:bui-mt-9 { + margin-top: var(--bui-space-9); + } + .xs\:bui-mt-10 { + margin-top: var(--bui-space-10); + } + .xs\:bui-mt-11 { + margin-top: var(--bui-space-11); + } + .xs\:bui-mt-12 { + margin-top: var(--bui-space-12); + } + .xs\:bui-mt-13 { + margin-top: var(--bui-space-13); + } + .xs\:bui-mt-14 { + margin-top: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-mt { + margin-top: var(--mt-sm); + } + .sm\:bui-mt-0\.5 { + margin-top: var(--bui-space-0_5); + } + .sm\:bui-mt-1 { + margin-top: var(--bui-space-1); + } + .sm\:bui-mt-1\.5 { + margin-top: var(--bui-space-1_5); + } + .sm\:bui-mt-2 { + margin-top: var(--bui-space-2); + } + .sm\:bui-mt-3 { + margin-top: var(--bui-space-3); + } + .sm\:bui-mt-4 { + margin-top: var(--bui-space-4); + } + .sm\:bui-mt-5 { + margin-top: var(--bui-space-5); + } + .sm\:bui-mt-6 { + margin-top: var(--bui-space-6); + } + .sm\:bui-mt-7 { + margin-top: var(--bui-space-7); + } + .sm\:bui-mt-8 { + margin-top: var(--bui-space-8); + } + .sm\:bui-mt-9 { + margin-top: var(--bui-space-9); + } + .sm\:bui-mt-10 { + margin-top: var(--bui-space-10); + } + .sm\:bui-mt-11 { + margin-top: var(--bui-space-11); + } + .sm\:bui-mt-12 { + margin-top: var(--bui-space-12); + } + .sm\:bui-mt-13 { + margin-top: var(--bui-space-13); + } + .sm\:bui-mt-14 { + margin-top: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-mt { + margin-top: var(--mt-md); + } + .md\:bui-mt-0\.5 { + margin-top: var(--bui-space-0_5); + } + .md\:bui-mt-1 { + margin-top: var(--bui-space-1); + } + .md\:bui-mt-1\.5 { + margin-top: var(--bui-space-1_5); + } + .md\:bui-mt-2 { + margin-top: var(--bui-space-2); + } + .md\:bui-mt-3 { + margin-top: var(--bui-space-3); + } + .md\:bui-mt-4 { + margin-top: var(--bui-space-4); + } + .md\:bui-mt-5 { + margin-top: var(--bui-space-5); + } + .md\:bui-mt-6 { + margin-top: var(--bui-space-6); + } + .md\:bui-mt-7 { + margin-top: var(--bui-space-7); + } + .md\:bui-mt-8 { + margin-top: var(--bui-space-8); + } + .md\:bui-mt-9 { + margin-top: var(--bui-space-9); + } + .md\:bui-mt-10 { + margin-top: var(--bui-space-10); + } + .md\:bui-mt-11 { + margin-top: var(--bui-space-11); + } + .md\:bui-mt-12 { + margin-top: var(--bui-space-12); + } + .md\:bui-mt-13 { + margin-top: var(--bui-space-13); + } + .md\:bui-mt-14 { + margin-top: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-mt { + margin-top: var(--mt-lg); + } + .lg\:bui-mt-0\.5 { + margin-top: var(--bui-space-0_5); + } + .lg\:bui-mt-1 { + margin-top: var(--bui-space-1); + } + .lg\:bui-mt-1\.5 { + margin-top: var(--bui-space-1_5); + } + .lg\:bui-mt-2 { + margin-top: var(--bui-space-2); + } + .lg\:bui-mt-3 { + margin-top: var(--bui-space-3); + } + .lg\:bui-mt-4 { + margin-top: var(--bui-space-4); + } + .lg\:bui-mt-5 { + margin-top: var(--bui-space-5); + } + .lg\:bui-mt-6 { + margin-top: var(--bui-space-6); + } + .lg\:bui-mt-7 { + margin-top: var(--bui-space-7); + } + .lg\:bui-mt-8 { + margin-top: var(--bui-space-8); + } + .lg\:bui-mt-9 { + margin-top: var(--bui-space-9); + } + .lg\:bui-mt-10 { + margin-top: var(--bui-space-10); + } + .lg\:bui-mt-11 { + margin-top: var(--bui-space-11); + } + .lg\:bui-mt-12 { + margin-top: var(--bui-space-12); + } + .lg\:bui-mt-13 { + margin-top: var(--bui-space-13); + } + .lg\:bui-mt-14 { + margin-top: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-mt { + margin-top: var(--mt-xl); + } + .xl\:bui-mt-0\.5 { + margin-top: var(--bui-space-0_5); + } + .xl\:bui-mt-1 { + margin-top: var(--bui-space-1); + } + .xl\:bui-mt-1\.5 { + margin-top: var(--bui-space-1_5); + } + .xl\:bui-mt-2 { + margin-top: var(--bui-space-2); + } + .xl\:bui-mt-3 { + margin-top: var(--bui-space-3); + } + .xl\:bui-mt-4 { + margin-top: var(--bui-space-4); + } + .xl\:bui-mt-5 { + margin-top: var(--bui-space-5); + } + .xl\:bui-mt-6 { + margin-top: var(--bui-space-6); + } + .xl\:bui-mt-7 { + margin-top: var(--bui-space-7); + } + .xl\:bui-mt-8 { + margin-top: var(--bui-space-8); + } + .xl\:bui-mt-9 { + margin-top: var(--bui-space-9); + } + .xl\:bui-mt-10 { + margin-top: var(--bui-space-10); + } + .xl\:bui-mt-11 { + margin-top: var(--bui-space-11); + } + .xl\:bui-mt-12 { + margin-top: var(--bui-space-12); + } + .xl\:bui-mt-13 { + margin-top: var(--bui-space-13); + } + .xl\:bui-mt-14 { + margin-top: var(--bui-space-14); + } + } + .bui-mb { + margin-bottom: var(--mb); + } + .bui-mb-0\.5 { + margin-bottom: var(--bui-space-0_5); + } + .bui-mb-1 { + margin-bottom: var(--bui-space-1); + } + .bui-mb-1\.5 { + margin-bottom: var(--bui-space-1_5); + } + .bui-mb-2 { + margin-bottom: var(--bui-space-2); + } + .bui-mb-3 { + margin-bottom: var(--bui-space-3); + } + .bui-mb-4 { + margin-bottom: var(--bui-space-4); + } + .bui-mb-5 { + margin-bottom: var(--bui-space-5); + } + .bui-mb-6 { + margin-bottom: var(--bui-space-6); + } + .bui-mb-7 { + margin-bottom: var(--bui-space-7); + } + .bui-mb-8 { + margin-bottom: var(--bui-space-8); + } + .bui-mb-9 { + margin-bottom: var(--bui-space-9); + } + .bui-mb-10 { + margin-bottom: var(--bui-space-10); + } + .bui-mb-11 { + margin-bottom: var(--bui-space-11); + } + .bui-mb-12 { + margin-bottom: var(--bui-space-12); + } + .bui-mb-13 { + margin-bottom: var(--bui-space-13); + } + .bui-mb-14 { + margin-bottom: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-mb { + margin-bottom: var(--mb-xs); + } + .xs\:bui-mb-0\.5 { + margin-bottom: var(--bui-space-0_5); + } + .xs\:bui-mb-1 { + margin-bottom: var(--bui-space-1); + } + .xs\:bui-mb-1\.5 { + margin-bottom: var(--bui-space-1_5); + } + .xs\:bui-mb-2 { + margin-bottom: var(--bui-space-2); + } + .xs\:bui-mb-3 { + margin-bottom: var(--bui-space-3); + } + .xs\:bui-mb-4 { + margin-bottom: var(--bui-space-4); + } + .xs\:bui-mb-5 { + margin-bottom: var(--bui-space-5); + } + .xs\:bui-mb-6 { + margin-bottom: var(--bui-space-6); + } + .xs\:bui-mb-7 { + margin-bottom: var(--bui-space-7); + } + .xs\:bui-mb-8 { + margin-bottom: var(--bui-space-8); + } + .xs\:bui-mb-9 { + margin-bottom: var(--bui-space-9); + } + .xs\:bui-mb-10 { + margin-bottom: var(--bui-space-10); + } + .xs\:bui-mb-11 { + margin-bottom: var(--bui-space-11); + } + .xs\:bui-mb-12 { + margin-bottom: var(--bui-space-12); + } + .xs\:bui-mb-13 { + margin-bottom: var(--bui-space-13); + } + .xs\:bui-mb-14 { + margin-bottom: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-mb { + margin-bottom: var(--mb-sm); + } + .sm\:bui-mb-0\.5 { + margin-bottom: var(--bui-space-0_5); + } + .sm\:bui-mb-1 { + margin-bottom: var(--bui-space-1); + } + .sm\:bui-mb-1\.5 { + margin-bottom: var(--bui-space-1_5); + } + .sm\:bui-mb-2 { + margin-bottom: var(--bui-space-2); + } + .sm\:bui-mb-3 { + margin-bottom: var(--bui-space-3); + } + .sm\:bui-mb-4 { + margin-bottom: var(--bui-space-4); + } + .sm\:bui-mb-5 { + margin-bottom: var(--bui-space-5); + } + .sm\:bui-mb-6 { + margin-bottom: var(--bui-space-6); + } + .sm\:bui-mb-7 { + margin-bottom: var(--bui-space-7); + } + .sm\:bui-mb-8 { + margin-bottom: var(--bui-space-8); + } + .sm\:bui-mb-9 { + margin-bottom: var(--bui-space-9); + } + .sm\:bui-mb-10 { + margin-bottom: var(--bui-space-10); + } + .sm\:bui-mb-11 { + margin-bottom: var(--bui-space-11); + } + .sm\:bui-mb-12 { + margin-bottom: var(--bui-space-12); + } + .sm\:bui-mb-13 { + margin-bottom: var(--bui-space-13); + } + .sm\:bui-mb-14 { + margin-bottom: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-mb { + margin-bottom: var(--mb-md); + } + .md\:bui-mb-0\.5 { + margin-bottom: var(--bui-space-0_5); + } + .md\:bui-mb-1 { + margin-bottom: var(--bui-space-1); + } + .md\:bui-mb-1\.5 { + margin-bottom: var(--bui-space-1_5); + } + .md\:bui-mb-2 { + margin-bottom: var(--bui-space-2); + } + .md\:bui-mb-3 { + margin-bottom: var(--bui-space-3); + } + .md\:bui-mb-4 { + margin-bottom: var(--bui-space-4); + } + .md\:bui-mb-5 { + margin-bottom: var(--bui-space-5); + } + .md\:bui-mb-6 { + margin-bottom: var(--bui-space-6); + } + .md\:bui-mb-7 { + margin-bottom: var(--bui-space-7); + } + .md\:bui-mb-8 { + margin-bottom: var(--bui-space-8); + } + .md\:bui-mb-9 { + margin-bottom: var(--bui-space-9); + } + .md\:bui-mb-10 { + margin-bottom: var(--bui-space-10); + } + .md\:bui-mb-11 { + margin-bottom: var(--bui-space-11); + } + .md\:bui-mb-12 { + margin-bottom: var(--bui-space-12); + } + .md\:bui-mb-13 { + margin-bottom: var(--bui-space-13); + } + .md\:bui-mb-14 { + margin-bottom: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-mb { + margin-bottom: var(--mb-lg); + } + .lg\:bui-mb-0\.5 { + margin-bottom: var(--bui-space-0_5); + } + .lg\:bui-mb-1 { + margin-bottom: var(--bui-space-1); + } + .lg\:bui-mb-1\.5 { + margin-bottom: var(--bui-space-1_5); + } + .lg\:bui-mb-2 { + margin-bottom: var(--bui-space-2); + } + .lg\:bui-mb-3 { + margin-bottom: var(--bui-space-3); + } + .lg\:bui-mb-4 { + margin-bottom: var(--bui-space-4); + } + .lg\:bui-mb-5 { + margin-bottom: var(--bui-space-5); + } + .lg\:bui-mb-6 { + margin-bottom: var(--bui-space-6); + } + .lg\:bui-mb-7 { + margin-bottom: var(--bui-space-7); + } + .lg\:bui-mb-8 { + margin-bottom: var(--bui-space-8); + } + .lg\:bui-mb-9 { + margin-bottom: var(--bui-space-9); + } + .lg\:bui-mb-10 { + margin-bottom: var(--bui-space-10); + } + .lg\:bui-mb-11 { + margin-bottom: var(--bui-space-11); + } + .lg\:bui-mb-12 { + margin-bottom: var(--bui-space-12); + } + .lg\:bui-mb-13 { + margin-bottom: var(--bui-space-13); + } + .lg\:bui-mb-14 { + margin-bottom: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-mb { + margin-bottom: var(--mb-xl); + } + .xl\:bui-mb-0\.5 { + margin-bottom: var(--bui-space-0_5); + } + .xl\:bui-mb-1 { + margin-bottom: var(--bui-space-1); + } + .xl\:bui-mb-1\.5 { + margin-bottom: var(--bui-space-1_5); + } + .xl\:bui-mb-2 { + margin-bottom: var(--bui-space-2); + } + .xl\:bui-mb-3 { + margin-bottom: var(--bui-space-3); + } + .xl\:bui-mb-4 { + margin-bottom: var(--bui-space-4); + } + .xl\:bui-mb-5 { + margin-bottom: var(--bui-space-5); + } + .xl\:bui-mb-6 { + margin-bottom: var(--bui-space-6); + } + .xl\:bui-mb-7 { + margin-bottom: var(--bui-space-7); + } + .xl\:bui-mb-8 { + margin-bottom: var(--bui-space-8); + } + .xl\:bui-mb-9 { + margin-bottom: var(--bui-space-9); + } + .xl\:bui-mb-10 { + margin-bottom: var(--bui-space-10); + } + .xl\:bui-mb-11 { + margin-bottom: var(--bui-space-11); + } + .xl\:bui-mb-12 { + margin-bottom: var(--bui-space-12); + } + .xl\:bui-mb-13 { + margin-bottom: var(--bui-space-13); + } + .xl\:bui-mb-14 { + margin-bottom: var(--bui-space-14); + } + } + .bui-my { + margin-top: var(--my); + margin-bottom: var(--my); + } + .bui-my-0\.5 { + margin-top: var(--bui-space-0_5); + margin-bottom: var(--bui-space-0_5); + } + .bui-my-1 { + margin-top: var(--bui-space-1); + margin-bottom: var(--bui-space-1); + } + .bui-my-1\.5 { + margin-top: var(--bui-space-1_5); + margin-bottom: var(--bui-space-1_5); + } + .bui-my-2 { + margin-top: var(--bui-space-2); + margin-bottom: var(--bui-space-2); + } + .bui-my-3 { + margin-top: var(--bui-space-3); + margin-bottom: var(--bui-space-3); + } + .bui-my-4 { + margin-top: var(--bui-space-4); + margin-bottom: var(--bui-space-4); + } + .bui-my-5 { + margin-top: var(--bui-space-5); + margin-bottom: var(--bui-space-5); + } + .bui-my-6 { + margin-top: var(--bui-space-6); + margin-bottom: var(--bui-space-6); + } + .bui-my-7 { + margin-top: var(--bui-space-7); + margin-bottom: var(--bui-space-7); + } + .bui-my-8 { + margin-top: var(--bui-space-8); + margin-bottom: var(--bui-space-8); + } + .bui-my-9 { + margin-top: var(--bui-space-9); + margin-bottom: var(--bui-space-9); + } + .bui-my-10 { + margin-top: var(--bui-space-10); + margin-bottom: var(--bui-space-10); + } + .bui-my-11 { + margin-top: var(--bui-space-11); + margin-bottom: var(--bui-space-11); + } + .bui-my-12 { + margin-top: var(--bui-space-12); + margin-bottom: var(--bui-space-12); + } + .bui-my-13 { + margin-top: var(--bui-space-13); + margin-bottom: var(--bui-space-13); + } + .bui-my-14 { + margin-top: var(--bui-space-14); + margin-bottom: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-my { + margin-top: var(--my-xs); + margin-bottom: var(--my-xs); + } + .xs\:bui-my-0\.5 { + margin-top: var(--bui-space-0_5); + margin-bottom: var(--bui-space-0_5); + } + .xs\:bui-my-1 { + margin-top: var(--bui-space-1); + margin-bottom: var(--bui-space-1); + } + .xs\:bui-my-1\.5 { + margin-top: var(--bui-space-1_5); + margin-bottom: var(--bui-space-1_5); + } + .xs\:bui-my-2 { + margin-top: var(--bui-space-2); + margin-bottom: var(--bui-space-2); + } + .xs\:bui-my-3 { + margin-top: var(--bui-space-3); + margin-bottom: var(--bui-space-3); + } + .xs\:bui-my-4 { + margin-top: var(--bui-space-4); + margin-bottom: var(--bui-space-4); + } + .xs\:bui-my-5 { + margin-top: var(--bui-space-5); + margin-bottom: var(--bui-space-5); + } + .xs\:bui-my-6 { + margin-top: var(--bui-space-6); + margin-bottom: var(--bui-space-6); + } + .xs\:bui-my-7 { + margin-top: var(--bui-space-7); + margin-bottom: var(--bui-space-7); + } + .xs\:bui-my-8 { + margin-top: var(--bui-space-8); + margin-bottom: var(--bui-space-8); + } + .xs\:bui-my-9 { + margin-top: var(--bui-space-9); + margin-bottom: var(--bui-space-9); + } + .xs\:bui-my-10 { + margin-top: var(--bui-space-10); + margin-bottom: var(--bui-space-10); + } + .xs\:bui-my-11 { + margin-top: var(--bui-space-11); + margin-bottom: var(--bui-space-11); + } + .xs\:bui-my-12 { + margin-top: var(--bui-space-12); + margin-bottom: var(--bui-space-12); + } + .xs\:bui-my-13 { + margin-top: var(--bui-space-13); + margin-bottom: var(--bui-space-13); + } + .xs\:bui-my-14 { + margin-top: var(--bui-space-14); + margin-bottom: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-my { + margin-top: var(--my-sm); + margin-bottom: var(--my-sm); + } + .sm\:bui-my-0\.5 { + margin-top: var(--bui-space-0_5); + margin-bottom: var(--bui-space-0_5); + } + .sm\:bui-my-1 { + margin-top: var(--bui-space-1); + margin-bottom: var(--bui-space-1); + } + .sm\:bui-my-1\.5 { + margin-top: var(--bui-space-1_5); + margin-bottom: var(--bui-space-1_5); + } + .sm\:bui-my-2 { + margin-top: var(--bui-space-2); + margin-bottom: var(--bui-space-2); + } + .sm\:bui-my-3 { + margin-top: var(--bui-space-3); + margin-bottom: var(--bui-space-3); + } + .sm\:bui-my-4 { + margin-top: var(--bui-space-4); + margin-bottom: var(--bui-space-4); + } + .sm\:bui-my-5 { + margin-top: var(--bui-space-5); + margin-bottom: var(--bui-space-5); + } + .sm\:bui-my-6 { + margin-top: var(--bui-space-6); + margin-bottom: var(--bui-space-6); + } + .sm\:bui-my-7 { + margin-top: var(--bui-space-7); + margin-bottom: var(--bui-space-7); + } + .sm\:bui-my-8 { + margin-top: var(--bui-space-8); + margin-bottom: var(--bui-space-8); + } + .sm\:bui-my-9 { + margin-top: var(--bui-space-9); + margin-bottom: var(--bui-space-9); + } + .sm\:bui-my-10 { + margin-top: var(--bui-space-10); + margin-bottom: var(--bui-space-10); + } + .sm\:bui-my-11 { + margin-top: var(--bui-space-11); + margin-bottom: var(--bui-space-11); + } + .sm\:bui-my-12 { + margin-top: var(--bui-space-12); + margin-bottom: var(--bui-space-12); + } + .sm\:bui-my-13 { + margin-top: var(--bui-space-13); + margin-bottom: var(--bui-space-13); + } + .sm\:bui-my-14 { + margin-top: var(--bui-space-14); + margin-bottom: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-my { + margin-top: var(--my-md); + margin-bottom: var(--my-md); + } + .md\:bui-my-0\.5 { + margin-top: var(--bui-space-0_5); + margin-bottom: var(--bui-space-0_5); + } + .md\:bui-my-1 { + margin-top: var(--bui-space-1); + margin-bottom: var(--bui-space-1); + } + .md\:bui-my-1\.5 { + margin-top: var(--bui-space-1_5); + margin-bottom: var(--bui-space-1_5); + } + .md\:bui-my-2 { + margin-top: var(--bui-space-2); + margin-bottom: var(--bui-space-2); + } + .md\:bui-my-3 { + margin-top: var(--bui-space-3); + margin-bottom: var(--bui-space-3); + } + .md\:bui-my-4 { + margin-top: var(--bui-space-4); + margin-bottom: var(--bui-space-4); + } + .md\:bui-my-5 { + margin-top: var(--bui-space-5); + margin-bottom: var(--bui-space-5); + } + .md\:bui-my-6 { + margin-top: var(--bui-space-6); + margin-bottom: var(--bui-space-6); + } + .md\:bui-my-7 { + margin-top: var(--bui-space-7); + margin-bottom: var(--bui-space-7); + } + .md\:bui-my-8 { + margin-top: var(--bui-space-8); + margin-bottom: var(--bui-space-8); + } + .md\:bui-my-9 { + margin-top: var(--bui-space-9); + margin-bottom: var(--bui-space-9); + } + .md\:bui-my-10 { + margin-top: var(--bui-space-10); + margin-bottom: var(--bui-space-10); + } + .md\:bui-my-11 { + margin-top: var(--bui-space-11); + margin-bottom: var(--bui-space-11); + } + .md\:bui-my-12 { + margin-top: var(--bui-space-12); + margin-bottom: var(--bui-space-12); + } + .md\:bui-my-13 { + margin-top: var(--bui-space-13); + margin-bottom: var(--bui-space-13); + } + .md\:bui-my-14 { + margin-top: var(--bui-space-14); + margin-bottom: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-my { + margin-top: var(--my-lg); + margin-bottom: var(--my-lg); + } + .lg\:bui-my-0\.5 { + margin-top: var(--bui-space-0_5); + margin-bottom: var(--bui-space-0_5); + } + .lg\:bui-my-1 { + margin-top: var(--bui-space-1); + margin-bottom: var(--bui-space-1); + } + .lg\:bui-my-1\.5 { + margin-top: var(--bui-space-1_5); + margin-bottom: var(--bui-space-1_5); + } + .lg\:bui-my-2 { + margin-top: var(--bui-space-2); + margin-bottom: var(--bui-space-2); + } + .lg\:bui-my-3 { + margin-top: var(--bui-space-3); + margin-bottom: var(--bui-space-3); + } + .lg\:bui-my-4 { + margin-top: var(--bui-space-4); + margin-bottom: var(--bui-space-4); + } + .lg\:bui-my-5 { + margin-top: var(--bui-space-5); + margin-bottom: var(--bui-space-5); + } + .lg\:bui-my-6 { + margin-top: var(--bui-space-6); + margin-bottom: var(--bui-space-6); + } + .lg\:bui-my-7 { + margin-top: var(--bui-space-7); + margin-bottom: var(--bui-space-7); + } + .lg\:bui-my-8 { + margin-top: var(--bui-space-8); + margin-bottom: var(--bui-space-8); + } + .lg\:bui-my-9 { + margin-top: var(--bui-space-9); + margin-bottom: var(--bui-space-9); + } + .lg\:bui-my-10 { + margin-top: var(--bui-space-10); + margin-bottom: var(--bui-space-10); + } + .lg\:bui-my-11 { + margin-top: var(--bui-space-11); + margin-bottom: var(--bui-space-11); + } + .lg\:bui-my-12 { + margin-top: var(--bui-space-12); + margin-bottom: var(--bui-space-12); + } + .lg\:bui-my-13 { + margin-top: var(--bui-space-13); + margin-bottom: var(--bui-space-13); + } + .lg\:bui-my-14 { + margin-top: var(--bui-space-14); + margin-bottom: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-my { + margin-top: var(--my-xl); + margin-bottom: var(--my-xl); + } + .xl\:bui-my-0\.5 { + margin-top: var(--bui-space-0_5); + margin-bottom: var(--bui-space-0_5); + } + .xl\:bui-my-1 { + margin-top: var(--bui-space-1); + margin-bottom: var(--bui-space-1); + } + .xl\:bui-my-1\.5 { + margin-top: var(--bui-space-1_5); + margin-bottom: var(--bui-space-1_5); + } + .xl\:bui-my-2 { + margin-top: var(--bui-space-2); + margin-bottom: var(--bui-space-2); + } + .xl\:bui-my-3 { + margin-top: var(--bui-space-3); + margin-bottom: var(--bui-space-3); + } + .xl\:bui-my-4 { + margin-top: var(--bui-space-4); + margin-bottom: var(--bui-space-4); + } + .xl\:bui-my-5 { + margin-top: var(--bui-space-5); + margin-bottom: var(--bui-space-5); + } + .xl\:bui-my-6 { + margin-top: var(--bui-space-6); + margin-bottom: var(--bui-space-6); + } + .xl\:bui-my-7 { + margin-top: var(--bui-space-7); + margin-bottom: var(--bui-space-7); + } + .xl\:bui-my-8 { + margin-top: var(--bui-space-8); + margin-bottom: var(--bui-space-8); + } + .xl\:bui-my-9 { + margin-top: var(--bui-space-9); + margin-bottom: var(--bui-space-9); + } + .xl\:bui-my-10 { + margin-top: var(--bui-space-10); + margin-bottom: var(--bui-space-10); + } + .xl\:bui-my-11 { + margin-top: var(--bui-space-11); + margin-bottom: var(--bui-space-11); + } + .xl\:bui-my-12 { + margin-top: var(--bui-space-12); + margin-bottom: var(--bui-space-12); + } + .xl\:bui-my-13 { + margin-top: var(--bui-space-13); + margin-bottom: var(--bui-space-13); + } + .xl\:bui-my-14 { + margin-top: var(--bui-space-14); + margin-bottom: var(--bui-space-14); + } + } + .bui-mx { + margin-left: var(--mx); + margin-right: var(--mx); + } + .bui-mx-0\.5 { + margin-left: var(--bui-space-0_5); + margin-right: var(--bui-space-0_5); + } + .bui-mx-1 { + margin-left: var(--bui-space-1); + margin-right: var(--bui-space-1); + } + .bui-mx-1\.5 { + margin-left: var(--bui-space-1_5); + margin-right: var(--bui-space-1_5); + } + .bui-mx-2 { + margin-left: var(--bui-space-2); + margin-right: var(--bui-space-2); + } + .bui-mx-3 { + margin-left: var(--bui-space-3); + margin-right: var(--bui-space-3); + } + .bui-mx-4 { + margin-left: var(--bui-space-4); + margin-right: var(--bui-space-4); + } + .bui-mx-5 { + margin-left: var(--bui-space-5); + margin-right: var(--bui-space-5); + } + .bui-mx-6 { + margin-left: var(--bui-space-6); + margin-right: var(--bui-space-6); + } + .bui-mx-7 { + margin-left: var(--bui-space-7); + margin-right: var(--bui-space-7); + } + .bui-mx-8 { + margin-left: var(--bui-space-8); + margin-right: var(--bui-space-8); + } + .bui-mx-9 { + margin-left: var(--bui-space-9); + margin-right: var(--bui-space-9); + } + .bui-mx-10 { + margin-left: var(--bui-space-10); + margin-right: var(--bui-space-10); + } + .bui-mx-11 { + margin-left: var(--bui-space-11); + margin-right: var(--bui-space-11); + } + .bui-mx-12 { + margin-left: var(--bui-space-12); + margin-right: var(--bui-space-12); + } + .bui-mx-13 { + margin-left: var(--bui-space-13); + margin-right: var(--bui-space-13); + } + .bui-mx-14 { + margin-left: var(--bui-space-14); + margin-right: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-mx { + margin-left: var(--mx-xs); + margin-right: var(--mx-xs); + } + .xs\:bui-mx-0\.5 { + margin-left: var(--bui-space-0_5); + margin-right: var(--bui-space-0_5); + } + .xs\:bui-mx-1 { + margin-left: var(--bui-space-1); + margin-right: var(--bui-space-1); + } + .xs\:bui-mx-1\.5 { + margin-left: var(--bui-space-1_5); + margin-right: var(--bui-space-1_5); + } + .xs\:bui-mx-2 { + margin-left: var(--bui-space-2); + margin-right: var(--bui-space-2); + } + .xs\:bui-mx-3 { + margin-left: var(--bui-space-3); + margin-right: var(--bui-space-3); + } + .xs\:bui-mx-4 { + margin-left: var(--bui-space-4); + margin-right: var(--bui-space-4); + } + .xs\:bui-mx-5 { + margin-left: var(--bui-space-5); + margin-right: var(--bui-space-5); + } + .xs\:bui-mx-6 { + margin-left: var(--bui-space-6); + margin-right: var(--bui-space-6); + } + .xs\:bui-mx-7 { + margin-left: var(--bui-space-7); + margin-right: var(--bui-space-7); + } + .xs\:bui-mx-8 { + margin-left: var(--bui-space-8); + margin-right: var(--bui-space-8); + } + .xs\:bui-mx-9 { + margin-left: var(--bui-space-9); + margin-right: var(--bui-space-9); + } + .xs\:bui-mx-10 { + margin-left: var(--bui-space-10); + margin-right: var(--bui-space-10); + } + .xs\:bui-mx-11 { + margin-left: var(--bui-space-11); + margin-right: var(--bui-space-11); + } + .xs\:bui-mx-12 { + margin-left: var(--bui-space-12); + margin-right: var(--bui-space-12); + } + .xs\:bui-mx-13 { + margin-left: var(--bui-space-13); + margin-right: var(--bui-space-13); + } + .xs\:bui-mx-14 { + margin-left: var(--bui-space-14); + margin-right: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-mx { + margin-left: var(--mx-sm); + margin-right: var(--mx-sm); + } + .sm\:bui-mx-0\.5 { + margin-left: var(--bui-space-0_5); + margin-right: var(--bui-space-0_5); + } + .sm\:bui-mx-1 { + margin-left: var(--bui-space-1); + margin-right: var(--bui-space-1); + } + .sm\:bui-mx-1\.5 { + margin-left: var(--bui-space-1_5); + margin-right: var(--bui-space-1_5); + } + .sm\:bui-mx-2 { + margin-left: var(--bui-space-2); + margin-right: var(--bui-space-2); + } + .sm\:bui-mx-3 { + margin-left: var(--bui-space-3); + margin-right: var(--bui-space-3); + } + .sm\:bui-mx-4 { + margin-left: var(--bui-space-4); + margin-right: var(--bui-space-4); + } + .sm\:bui-mx-5 { + margin-left: var(--bui-space-5); + margin-right: var(--bui-space-5); + } + .sm\:bui-mx-6 { + margin-left: var(--bui-space-6); + margin-right: var(--bui-space-6); + } + .sm\:bui-mx-7 { + margin-left: var(--bui-space-7); + margin-right: var(--bui-space-7); + } + .sm\:bui-mx-8 { + margin-left: var(--bui-space-8); + margin-right: var(--bui-space-8); + } + .sm\:bui-mx-9 { + margin-left: var(--bui-space-9); + margin-right: var(--bui-space-9); + } + .sm\:bui-mx-10 { + margin-left: var(--bui-space-10); + margin-right: var(--bui-space-10); + } + .sm\:bui-mx-11 { + margin-left: var(--bui-space-11); + margin-right: var(--bui-space-11); + } + .sm\:bui-mx-12 { + margin-left: var(--bui-space-12); + margin-right: var(--bui-space-12); + } + .sm\:bui-mx-13 { + margin-left: var(--bui-space-13); + margin-right: var(--bui-space-13); + } + .sm\:bui-mx-14 { + margin-left: var(--bui-space-14); + margin-right: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-mx { + margin-left: var(--mx-md); + margin-right: var(--mx-md); + } + .md\:bui-mx-0\.5 { + margin-left: var(--bui-space-0_5); + margin-right: var(--bui-space-0_5); + } + .md\:bui-mx-1 { + margin-left: var(--bui-space-1); + margin-right: var(--bui-space-1); + } + .md\:bui-mx-1\.5 { + margin-left: var(--bui-space-1_5); + margin-right: var(--bui-space-1_5); + } + .md\:bui-mx-2 { + margin-left: var(--bui-space-2); + margin-right: var(--bui-space-2); + } + .md\:bui-mx-3 { + margin-left: var(--bui-space-3); + margin-right: var(--bui-space-3); + } + .md\:bui-mx-4 { + margin-left: var(--bui-space-4); + margin-right: var(--bui-space-4); + } + .md\:bui-mx-5 { + margin-left: var(--bui-space-5); + margin-right: var(--bui-space-5); + } + .md\:bui-mx-6 { + margin-left: var(--bui-space-6); + margin-right: var(--bui-space-6); + } + .md\:bui-mx-7 { + margin-left: var(--bui-space-7); + margin-right: var(--bui-space-7); + } + .md\:bui-mx-8 { + margin-left: var(--bui-space-8); + margin-right: var(--bui-space-8); + } + .md\:bui-mx-9 { + margin-left: var(--bui-space-9); + margin-right: var(--bui-space-9); + } + .md\:bui-mx-10 { + margin-left: var(--bui-space-10); + margin-right: var(--bui-space-10); + } + .md\:bui-mx-11 { + margin-left: var(--bui-space-11); + margin-right: var(--bui-space-11); + } + .md\:bui-mx-12 { + margin-left: var(--bui-space-12); + margin-right: var(--bui-space-12); + } + .md\:bui-mx-13 { + margin-left: var(--bui-space-13); + margin-right: var(--bui-space-13); + } + .md\:bui-mx-14 { + margin-left: var(--bui-space-14); + margin-right: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-mx { + margin-left: var(--mx-lg); + margin-right: var(--mx-lg); + } + .lg\:bui-mx-0\.5 { + margin-left: var(--bui-space-0_5); + margin-right: var(--bui-space-0_5); + } + .lg\:bui-mx-1 { + margin-left: var(--bui-space-1); + margin-right: var(--bui-space-1); + } + .lg\:bui-mx-1\.5 { + margin-left: var(--bui-space-1_5); + margin-right: var(--bui-space-1_5); + } + .lg\:bui-mx-2 { + margin-left: var(--bui-space-2); + margin-right: var(--bui-space-2); + } + .lg\:bui-mx-3 { + margin-left: var(--bui-space-3); + margin-right: var(--bui-space-3); + } + .lg\:bui-mx-4 { + margin-left: var(--bui-space-4); + margin-right: var(--bui-space-4); + } + .lg\:bui-mx-5 { + margin-left: var(--bui-space-5); + margin-right: var(--bui-space-5); + } + .lg\:bui-mx-6 { + margin-left: var(--bui-space-6); + margin-right: var(--bui-space-6); + } + .lg\:bui-mx-7 { + margin-left: var(--bui-space-7); + margin-right: var(--bui-space-7); + } + .lg\:bui-mx-8 { + margin-left: var(--bui-space-8); + margin-right: var(--bui-space-8); + } + .lg\:bui-mx-9 { + margin-left: var(--bui-space-9); + margin-right: var(--bui-space-9); + } + .lg\:bui-mx-10 { + margin-left: var(--bui-space-10); + margin-right: var(--bui-space-10); + } + .lg\:bui-mx-11 { + margin-left: var(--bui-space-11); + margin-right: var(--bui-space-11); + } + .lg\:bui-mx-12 { + margin-left: var(--bui-space-12); + margin-right: var(--bui-space-12); + } + .lg\:bui-mx-13 { + margin-left: var(--bui-space-13); + margin-right: var(--bui-space-13); + } + .lg\:bui-mx-14 { + margin-left: var(--bui-space-14); + margin-right: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-mx { + margin-left: var(--mx-xl); + margin-right: var(--mx-xl); + } + .xl\:bui-mx-0\.5 { + margin-left: var(--bui-space-0_5); + margin-right: var(--bui-space-0_5); + } + .xl\:bui-mx-1 { + margin-left: var(--bui-space-1); + margin-right: var(--bui-space-1); + } + .xl\:bui-mx-1\.5 { + margin-left: var(--bui-space-1_5); + margin-right: var(--bui-space-1_5); + } + .xl\:bui-mx-2 { + margin-left: var(--bui-space-2); + margin-right: var(--bui-space-2); + } + .xl\:bui-mx-3 { + margin-left: var(--bui-space-3); + margin-right: var(--bui-space-3); + } + .xl\:bui-mx-4 { + margin-left: var(--bui-space-4); + margin-right: var(--bui-space-4); + } + .xl\:bui-mx-5 { + margin-left: var(--bui-space-5); + margin-right: var(--bui-space-5); + } + .xl\:bui-mx-6 { + margin-left: var(--bui-space-6); + margin-right: var(--bui-space-6); + } + .xl\:bui-mx-7 { + margin-left: var(--bui-space-7); + margin-right: var(--bui-space-7); + } + .xl\:bui-mx-8 { + margin-left: var(--bui-space-8); + margin-right: var(--bui-space-8); + } + .xl\:bui-mx-9 { + margin-left: var(--bui-space-9); + margin-right: var(--bui-space-9); + } + .xl\:bui-mx-10 { + margin-left: var(--bui-space-10); + margin-right: var(--bui-space-10); + } + .xl\:bui-mx-11 { + margin-left: var(--bui-space-11); + margin-right: var(--bui-space-11); + } + .xl\:bui-mx-12 { + margin-left: var(--bui-space-12); + margin-right: var(--bui-space-12); + } + .xl\:bui-mx-13 { + margin-left: var(--bui-space-13); + margin-right: var(--bui-space-13); + } + .xl\:bui-mx-14 { + margin-left: var(--bui-space-14); + margin-right: var(--bui-space-14); + } + } + .bui-display-none { + display: none; + } + .bui-display-inline { + display: inline; + } + .bui-display-inline-block { + display: inline-block; + } + .bui-display-block { + display: block; + } + @media (width>=640px) { + .xs\:bui-display-none { + display: none; + } + .xs\:bui-display-inline { + display: inline; + } + .xs\:bui-display-inline-block { + display: inline-block; + } + .xs\:bui-display-block { + display: block; + } + } + @media (width>=768px) { + .sm\:bui-display-none { + display: none; + } + .sm\:bui-display-inline { + display: inline; + } + .sm\:bui-display-inline-block { + display: inline-block; + } + .sm\:bui-display-block { + display: block; + } + } + @media (width>=1024px) { + .md\:bui-display-none { + display: none; + } + .md\:bui-display-inline { + display: inline; + } + .md\:bui-display-inline-block { + display: inline-block; + } + .md\:bui-display-block { + display: block; + } + } + @media (width>=1280px) { + .lg\:bui-display-none { + display: none; + } + .lg\:bui-display-inline { + display: inline; + } + .lg\:bui-display-inline-block { + display: inline-block; + } + .lg\:bui-display-block { + display: block; + } + } + @media (width>=1536px) { + .xl\:bui-display-none { + display: none; + } + .xl\:bui-display-inline { + display: inline; + } + .xl\:bui-display-inline-block { + display: inline-block; + } + .xl\:bui-display-block { + display: block; + } + } + .bui-w { + width: var(--width); + } + .bui-min-w { + min-width: var(--min-width); + } + .bui-max-w { + max-width: var(--max-width); + } + @media (width>=640px) { + .xs\:bui-w { + width: var(--width); + } + .xs\:bui-min-w { + min-width: var(--min-width); + } + .xs\:bui-max-w { + max-width: var(--max-width); + } + } + @media (width>=768px) { + .sm\:bui-w { + width: var(--width); + } + .sm\:bui-min-w { + min-width: var(--min-width); + } + .sm\:bui-max-w { + max-width: var(--max-width); + } + } + @media (width>=1024px) { + .md\:bui-w { + width: var(--width); + } + .md\:bui-min-w { + min-width: var(--min-width); + } + .md\:bui-max-w { + max-width: var(--max-width); + } + } + @media (width>=1280px) { + .lg\:bui-w { + width: var(--width); + } + .lg\:bui-min-w { + min-width: var(--min-width); + } + .lg\:bui-max-w { + max-width: var(--max-width); + } + } + @media (width>=1536px) { + .xl\:bui-w { + width: var(--width); + } + .xl\:bui-min-w { + min-width: var(--min-width); + } + .xl\:bui-max-w { + max-width: var(--max-width); + } + } + .bui-h { + height: var(--height); + } + .bui-min-h { + min-height: var(--min-height); + } + .bui-max-h { + max-height: var(--max-height); + } + @media (width>=640px) { + .xs\:bui-h { + height: var(--height); + } + .xs\:bui-min-h { + min-height: var(--min-height); + } + .xs\:bui-max-h { + max-height: var(--max-height); + } + } + @media (width>=768px) { + .sm\:bui-h { + height: var(--height); + } + .sm\:bui-min-h { + min-height: var(--min-height); + } + .sm\:bui-max-h { + max-height: var(--max-height); + } + } + @media (width>=1024px) { + .md\:bui-h { + height: var(--height); + } + .md\:bui-min-h { + min-height: var(--min-height); + } + .md\:bui-max-h { + max-height: var(--max-height); + } + } + @media (width>=1280px) { + .lg\:bui-h { + height: var(--height); + } + .lg\:bui-min-h { + min-height: var(--min-height); + } + .lg\:bui-max-h { + max-height: var(--max-height); + } + } + @media (width>=1536px) { + .xl\:bui-h { + height: var(--height); + } + .xl\:bui-min-h { + min-height: var(--min-height); + } + .xl\:bui-max-h { + max-height: var(--max-height); + } + } + .bui-position-absolute { + position: absolute; + } + .bui-position-fixed { + position: fixed; + } + .bui-position-sticky { + position: sticky; + } + .bui-position-relative { + position: relative; + } + .bui-position-static { + position: static; + } + @media (width>=640px) { + .xs\:bui-position-absolute { + position: absolute; + } + .xs\:bui-position-fixed { + position: fixed; + } + .xs\:bui-position-sticky { + position: sticky; + } + .xs\:bui-position-relative { + position: relative; + } + .xs\:bui-position-static { + position: static; + } + } + @media (width>=768px) { + .sm\:bui-position-absolute { + position: absolute; + } + .sm\:bui-position-fixed { + position: fixed; + } + .sm\:bui-position-sticky { + position: sticky; + } + .sm\:bui-position-relative { + position: relative; + } + .sm\:bui-position-static { + position: static; + } + } + @media (width>=1024px) { + .md\:bui-position-absolute { + position: absolute; + } + .md\:bui-position-fixed { + position: fixed; + } + .md\:bui-position-sticky { + position: sticky; + } + .md\:bui-position-relative { + position: relative; + } + .md\:bui-position-static { + position: static; + } + } + @media (width>=1280px) { + .lg\:bui-position-absolute { + position: absolute; + } + .lg\:bui-position-fixed { + position: fixed; + } + .lg\:bui-position-sticky { + position: sticky; + } + .lg\:bui-position-relative { + position: relative; + } + .lg\:bui-position-static { + position: static; + } + } + @media (width>=1536px) { + .xl\:bui-position-absolute { + position: absolute; + } + .xl\:bui-position-fixed { + position: fixed; + } + .xl\:bui-position-sticky { + position: sticky; + } + .xl\:bui-position-relative { + position: relative; + } + .xl\:bui-position-static { + position: static; + } + } + .bui-columns-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + .bui-columns-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + .bui-columns-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .bui-columns-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + .bui-columns-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + .bui-columns-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + .bui-columns-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + .bui-columns-8 { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + .bui-columns-9 { + grid-template-columns: repeat(9, minmax(0, 1fr)); + } + .bui-columns-10 { + grid-template-columns: repeat(10, minmax(0, 1fr)); + } + .bui-columns-11 { + grid-template-columns: repeat(11, minmax(0, 1fr)); + } + .bui-columns-12 { + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + .bui-columns-auto { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + .bui-col-span-1 { + grid-column: span 1 / span 1; + } + .bui-col-span-2 { + grid-column: span 2 / span 2; + } + .bui-col-span-3 { + grid-column: span 3 / span 3; + } + .bui-col-span-4 { + grid-column: span 4 / span 4; + } + .bui-col-span-5 { + grid-column: span 5 / span 5; + } + .bui-col-span-6 { + grid-column: span 6 / span 6; + } + .bui-col-span-7 { + grid-column: span 7 / span 7; + } + .bui-col-span-8 { + grid-column: span 8 / span 8; + } + .bui-col-span-9 { + grid-column: span 9 / span 9; + } + .bui-col-span-10 { + grid-column: span 10 / span 10; + } + .bui-col-span-11 { + grid-column: span 11 / span 11; + } + .bui-col-span-12 { + grid-column: span 12 / span 12; + } + .bui-col-span-auto { + grid-column: span auto/span auto; + } + .bui-col-start-1 { + grid-column-start: 1; + } + .bui-col-start-2 { + grid-column-start: 2; + } + .bui-col-start-3 { + grid-column-start: 3; + } + .bui-col-start-4 { + grid-column-start: 4; + } + .bui-col-start-5 { + grid-column-start: 5; + } + .bui-col-start-6 { + grid-column-start: 6; + } + .bui-col-start-7 { + grid-column-start: 7; + } + .bui-col-start-8 { + grid-column-start: 8; + } + .bui-col-start-9 { + grid-column-start: 9; + } + .bui-col-start-10 { + grid-column-start: 10; + } + .bui-col-start-11 { + grid-column-start: 11; + } + .bui-col-start-12 { + grid-column-start: 12; + } + .bui-col-start-13 { + grid-column-start: 13; + } + .bui-col-start-auto { + grid-column-start: auto; + } + .bui-col-end-1 { + grid-column-end: 1; + } + .bui-col-end-2 { + grid-column-end: 2; + } + .bui-col-end-3 { + grid-column-end: 3; + } + .bui-col-end-4 { + grid-column-end: 4; + } + .bui-col-end-5 { + grid-column-end: 5; + } + .bui-col-end-6 { + grid-column-end: 6; + } + .bui-col-end-7 { + grid-column-end: 7; + } + .bui-col-end-8 { + grid-column-end: 8; + } + .bui-col-end-9 { + grid-column-end: 9; + } + .bui-col-end-10 { + grid-column-end: 10; + } + .bui-col-end-11 { + grid-column-end: 11; + } + .bui-col-end-12 { + grid-column-end: 12; + } + .bui-col-end-13 { + grid-column-end: 13; + } + .bui-col-end-auto { + grid-column-end: auto; + } + .bui-row-span-1 { + grid-row: span 1 / span 1; + } + .bui-row-span-2 { + grid-row: span 2 / span 2; + } + .bui-row-span-3 { + grid-row: span 3 / span 3; + } + .bui-row-span-4 { + grid-row: span 4 / span 4; + } + .bui-row-span-5 { + grid-row: span 5 / span 5; + } + .bui-row-span-6 { + grid-row: span 6 / span 6; + } + .bui-row-span-7 { + grid-row: span 7 / span 7; + } + .bui-row-span-8 { + grid-row: span 8 / span 8; + } + .bui-row-span-9 { + grid-row: span 9 / span 9; + } + .bui-row-span-10 { + grid-row: span 10 / span 10; + } + .bui-row-span-11 { + grid-row: span 11 / span 11; + } + .bui-row-span-12 { + grid-row: span 12 / span 12; + } + .bui-row-span-auto { + grid-row: span auto/span auto; + } + @media (width>=640px) { + .xs\:bui-columns-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + .xs\:bui-columns-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + .xs\:bui-columns-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .xs\:bui-columns-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + .xs\:bui-columns-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + .xs\:bui-columns-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + .xs\:bui-columns-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + .xs\:bui-columns-8 { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + .xs\:bui-columns-9 { + grid-template-columns: repeat(9, minmax(0, 1fr)); + } + .xs\:bui-columns-10 { + grid-template-columns: repeat(10, minmax(0, 1fr)); + } + .xs\:bui-columns-11 { + grid-template-columns: repeat(11, minmax(0, 1fr)); + } + .xs\:bui-columns-12 { + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + .xs\:bui-columns-auto { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + .xs\:bui-col-span-1 { + grid-column: span 1 / span 1; + } + .xs\:bui-col-span-2 { + grid-column: span 2 / span 2; + } + .xs\:bui-col-span-3 { + grid-column: span 3 / span 3; + } + .xs\:bui-col-span-4 { + grid-column: span 4 / span 4; + } + .xs\:bui-col-span-5 { + grid-column: span 5 / span 5; + } + .xs\:bui-col-span-6 { + grid-column: span 6 / span 6; + } + .xs\:bui-col-span-7 { + grid-column: span 7 / span 7; + } + .xs\:bui-col-span-8 { + grid-column: span 8 / span 8; + } + .xs\:bui-col-span-9 { + grid-column: span 9 / span 9; + } + .xs\:bui-col-span-10 { + grid-column: span 10 / span 10; + } + .xs\:bui-col-span-11 { + grid-column: span 11 / span 11; + } + .xs\:bui-col-span-12 { + grid-column: span 12 / span 12; + } + .xs\:bui-col-span-auto { + grid-column: span auto/span auto; + } + .xs\:bui-col-start-1 { + grid-column-start: 1; + } + .xs\:bui-col-start-2 { + grid-column-start: 2; + } + .xs\:bui-col-start-3 { + grid-column-start: 3; + } + .xs\:bui-col-start-4 { + grid-column-start: 4; + } + .xs\:bui-col-start-5 { + grid-column-start: 5; + } + .xs\:bui-col-start-6 { + grid-column-start: 6; + } + .xs\:bui-col-start-7 { + grid-column-start: 7; + } + .xs\:bui-col-start-8 { + grid-column-start: 8; + } + .xs\:bui-col-start-9 { + grid-column-start: 9; + } + .xs\:bui-col-start-10 { + grid-column-start: 10; + } + .xs\:bui-col-start-11 { + grid-column-start: 11; + } + .xs\:bui-col-start-12 { + grid-column-start: 12; + } + .xs\:bui-col-start-13 { + grid-column-start: 13; + } + .xs\:bui-col-start-auto { + grid-column-start: auto; + } + .xs\:bui-col-end-1 { + grid-column-end: 1; + } + .xs\:bui-col-end-2 { + grid-column-end: 2; + } + .xs\:bui-col-end-3 { + grid-column-end: 3; + } + .xs\:bui-col-end-4 { + grid-column-end: 4; + } + .xs\:bui-col-end-5 { + grid-column-end: 5; + } + .xs\:bui-col-end-6 { + grid-column-end: 6; + } + .xs\:bui-col-end-7 { + grid-column-end: 7; + } + .xs\:bui-col-end-8 { + grid-column-end: 8; + } + .xs\:bui-col-end-9 { + grid-column-end: 9; + } + .xs\:bui-col-end-10 { + grid-column-end: 10; + } + .xs\:bui-col-end-11 { + grid-column-end: 11; + } + .xs\:bui-col-end-12 { + grid-column-end: 12; + } + .xs\:bui-col-end-13 { + grid-column-end: 13; + } + .xs\:bui-col-end-auto { + grid-column-end: auto; + } + .xs\:bui-row-span-1 { + grid-row: span 1 / span 1; + } + .xs\:bui-row-span-2 { + grid-row: span 2 / span 2; + } + .xs\:bui-row-span-3 { + grid-row: span 3 / span 3; + } + .xs\:bui-row-span-4 { + grid-row: span 4 / span 4; + } + .xs\:bui-row-span-5 { + grid-row: span 5 / span 5; + } + .xs\:bui-row-span-6 { + grid-row: span 6 / span 6; + } + .xs\:bui-row-span-7 { + grid-row: span 7 / span 7; + } + .xs\:bui-row-span-8 { + grid-row: span 8 / span 8; + } + .xs\:bui-row-span-9 { + grid-row: span 9 / span 9; + } + .xs\:bui-row-span-10 { + grid-row: span 10 / span 10; + } + .xs\:bui-row-span-11 { + grid-row: span 11 / span 11; + } + .xs\:bui-row-span-12 { + grid-row: span 12 / span 12; + } + .xs\:bui-row-span-auto { + grid-row: span auto/span auto; + } + } + @media (width>=768px) { + .sm\:bui-columns-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + .sm\:bui-columns-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + .sm\:bui-columns-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .sm\:bui-columns-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + .sm\:bui-columns-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + .sm\:bui-columns-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + .sm\:bui-columns-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + .sm\:bui-columns-8 { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + .sm\:bui-columns-9 { + grid-template-columns: repeat(9, minmax(0, 1fr)); + } + .sm\:bui-columns-10 { + grid-template-columns: repeat(10, minmax(0, 1fr)); + } + .sm\:bui-columns-11 { + grid-template-columns: repeat(11, minmax(0, 1fr)); + } + .sm\:bui-columns-12 { + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + .sm\:bui-columns-auto { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + .sm\:bui-col-span-1 { + grid-column: span 1 / span 1; + } + .sm\:bui-col-span-2 { + grid-column: span 2 / span 2; + } + .sm\:bui-col-span-3 { + grid-column: span 3 / span 3; + } + .sm\:bui-col-span-4 { + grid-column: span 4 / span 4; + } + .sm\:bui-col-span-5 { + grid-column: span 5 / span 5; + } + .sm\:bui-col-span-6 { + grid-column: span 6 / span 6; + } + .sm\:bui-col-span-7 { + grid-column: span 7 / span 7; + } + .sm\:bui-col-span-8 { + grid-column: span 8 / span 8; + } + .sm\:bui-col-span-9 { + grid-column: span 9 / span 9; + } + .sm\:bui-col-span-10 { + grid-column: span 10 / span 10; + } + .sm\:bui-col-span-11 { + grid-column: span 11 / span 11; + } + .sm\:bui-col-span-12 { + grid-column: span 12 / span 12; + } + .sm\:bui-col-span-auto { + grid-column: span auto/span auto; + } + .sm\:bui-col-start-1 { + grid-column-start: 1; + } + .sm\:bui-col-start-2 { + grid-column-start: 2; + } + .sm\:bui-col-start-3 { + grid-column-start: 3; + } + .sm\:bui-col-start-4 { + grid-column-start: 4; + } + .sm\:bui-col-start-5 { + grid-column-start: 5; + } + .sm\:bui-col-start-6 { + grid-column-start: 6; + } + .sm\:bui-col-start-7 { + grid-column-start: 7; + } + .sm\:bui-col-start-8 { + grid-column-start: 8; + } + .sm\:bui-col-start-9 { + grid-column-start: 9; + } + .sm\:bui-col-start-10 { + grid-column-start: 10; + } + .sm\:bui-col-start-11 { + grid-column-start: 11; + } + .sm\:bui-col-start-12 { + grid-column-start: 12; + } + .sm\:bui-col-start-13 { + grid-column-start: 13; + } + .sm\:bui-col-start-auto { + grid-column-start: auto; + } + .sm\:bui-col-end-1 { + grid-column-end: 1; + } + .sm\:bui-col-end-2 { + grid-column-end: 2; + } + .sm\:bui-col-end-3 { + grid-column-end: 3; + } + .sm\:bui-col-end-4 { + grid-column-end: 4; + } + .sm\:bui-col-end-5 { + grid-column-end: 5; + } + .sm\:bui-col-end-6 { + grid-column-end: 6; + } + .sm\:bui-col-end-7 { + grid-column-end: 7; + } + .sm\:bui-col-end-8 { + grid-column-end: 8; + } + .sm\:bui-col-end-9 { + grid-column-end: 9; + } + .sm\:bui-col-end-10 { + grid-column-end: 10; + } + .sm\:bui-col-end-11 { + grid-column-end: 11; + } + .sm\:bui-col-end-12 { + grid-column-end: 12; + } + .sm\:bui-col-end-13 { + grid-column-end: 13; + } + .sm\:bui-col-end-auto { + grid-column-end: auto; + } + .sm\:bui-row-span-1 { + grid-row: span 1 / span 1; + } + .sm\:bui-row-span-2 { + grid-row: span 2 / span 2; + } + .sm\:bui-row-span-3 { + grid-row: span 3 / span 3; + } + .sm\:bui-row-span-4 { + grid-row: span 4 / span 4; + } + .sm\:bui-row-span-5 { + grid-row: span 5 / span 5; + } + .sm\:bui-row-span-6 { + grid-row: span 6 / span 6; + } + .sm\:bui-row-span-7 { + grid-row: span 7 / span 7; + } + .sm\:bui-row-span-8 { + grid-row: span 8 / span 8; + } + .sm\:bui-row-span-9 { + grid-row: span 9 / span 9; + } + .sm\:bui-row-span-10 { + grid-row: span 10 / span 10; + } + .sm\:bui-row-span-11 { + grid-row: span 11 / span 11; + } + .sm\:bui-row-span-12 { + grid-row: span 12 / span 12; + } + .sm\:bui-row-span-auto { + grid-row: span auto/span auto; + } + } + @media (width>=1024px) { + .md\:bui-columns-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + .md\:bui-columns-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + .md\:bui-columns-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .md\:bui-columns-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + .md\:bui-columns-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + .md\:bui-columns-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + .md\:bui-columns-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + .md\:bui-columns-8 { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + .md\:bui-columns-9 { + grid-template-columns: repeat(9, minmax(0, 1fr)); + } + .md\:bui-columns-10 { + grid-template-columns: repeat(10, minmax(0, 1fr)); + } + .md\:bui-columns-11 { + grid-template-columns: repeat(11, minmax(0, 1fr)); + } + .md\:bui-columns-12 { + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + .md\:bui-columns-auto { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + .md\:bui-col-span-1 { + grid-column: span 1 / span 1; + } + .md\:bui-col-span-2 { + grid-column: span 2 / span 2; + } + .md\:bui-col-span-3 { + grid-column: span 3 / span 3; + } + .md\:bui-col-span-4 { + grid-column: span 4 / span 4; + } + .md\:bui-col-span-5 { + grid-column: span 5 / span 5; + } + .md\:bui-col-span-6 { + grid-column: span 6 / span 6; + } + .md\:bui-col-span-7 { + grid-column: span 7 / span 7; + } + .md\:bui-col-span-8 { + grid-column: span 8 / span 8; + } + .md\:bui-col-span-9 { + grid-column: span 9 / span 9; + } + .md\:bui-col-span-10 { + grid-column: span 10 / span 10; + } + .md\:bui-col-span-11 { + grid-column: span 11 / span 11; + } + .md\:bui-col-span-12 { + grid-column: span 12 / span 12; + } + .md\:bui-col-span-auto { + grid-column: span auto/span auto; + } + .md\:bui-col-start-1 { + grid-column-start: 1; + } + .md\:bui-col-start-2 { + grid-column-start: 2; + } + .md\:bui-col-start-3 { + grid-column-start: 3; + } + .md\:bui-col-start-4 { + grid-column-start: 4; + } + .md\:bui-col-start-5 { + grid-column-start: 5; + } + .md\:bui-col-start-6 { + grid-column-start: 6; + } + .md\:bui-col-start-7 { + grid-column-start: 7; + } + .md\:bui-col-start-8 { + grid-column-start: 8; + } + .md\:bui-col-start-9 { + grid-column-start: 9; + } + .md\:bui-col-start-10 { + grid-column-start: 10; + } + .md\:bui-col-start-11 { + grid-column-start: 11; + } + .md\:bui-col-start-12 { + grid-column-start: 12; + } + .md\:bui-col-start-13 { + grid-column-start: 13; + } + .md\:bui-col-start-auto { + grid-column-start: auto; + } + .md\:bui-col-end-1 { + grid-column-end: 1; + } + .md\:bui-col-end-2 { + grid-column-end: 2; + } + .md\:bui-col-end-3 { + grid-column-end: 3; + } + .md\:bui-col-end-4 { + grid-column-end: 4; + } + .md\:bui-col-end-5 { + grid-column-end: 5; + } + .md\:bui-col-end-6 { + grid-column-end: 6; + } + .md\:bui-col-end-7 { + grid-column-end: 7; + } + .md\:bui-col-end-8 { + grid-column-end: 8; + } + .md\:bui-col-end-9 { + grid-column-end: 9; + } + .md\:bui-col-end-10 { + grid-column-end: 10; + } + .md\:bui-col-end-11 { + grid-column-end: 11; + } + .md\:bui-col-end-12 { + grid-column-end: 12; + } + .md\:bui-col-end-13 { + grid-column-end: 13; + } + .md\:bui-col-end-auto { + grid-column-end: auto; + } + .md\:bui-row-span-1 { + grid-row: span 1 / span 1; + } + .md\:bui-row-span-2 { + grid-row: span 2 / span 2; + } + .md\:bui-row-span-3 { + grid-row: span 3 / span 3; + } + .md\:bui-row-span-4 { + grid-row: span 4 / span 4; + } + .md\:bui-row-span-5 { + grid-row: span 5 / span 5; + } + .md\:bui-row-span-6 { + grid-row: span 6 / span 6; + } + .md\:bui-row-span-7 { + grid-row: span 7 / span 7; + } + .md\:bui-row-span-8 { + grid-row: span 8 / span 8; + } + .md\:bui-row-span-9 { + grid-row: span 9 / span 9; + } + .md\:bui-row-span-10 { + grid-row: span 10 / span 10; + } + .md\:bui-row-span-11 { + grid-row: span 11 / span 11; + } + .md\:bui-row-span-12 { + grid-row: span 12 / span 12; + } + .md\:bui-row-span-auto { + grid-row: span auto/span auto; + } + } + @media (width>=1280px) { + .lg\:bui-columns-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + .lg\:bui-columns-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + .lg\:bui-columns-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .lg\:bui-columns-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + .lg\:bui-columns-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + .lg\:bui-columns-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + .lg\:bui-columns-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + .lg\:bui-columns-8 { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + .lg\:bui-columns-9 { + grid-template-columns: repeat(9, minmax(0, 1fr)); + } + .lg\:bui-columns-10 { + grid-template-columns: repeat(10, minmax(0, 1fr)); + } + .lg\:bui-columns-11 { + grid-template-columns: repeat(11, minmax(0, 1fr)); + } + .lg\:bui-columns-12 { + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + .lg\:bui-columns-auto { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + .lg\:bui-col-span-1 { + grid-column: span 1 / span 1; + } + .lg\:bui-col-span-2 { + grid-column: span 2 / span 2; + } + .lg\:bui-col-span-3 { + grid-column: span 3 / span 3; + } + .lg\:bui-col-span-4 { + grid-column: span 4 / span 4; + } + .lg\:bui-col-span-5 { + grid-column: span 5 / span 5; + } + .lg\:bui-col-span-6 { + grid-column: span 6 / span 6; + } + .lg\:bui-col-span-7 { + grid-column: span 7 / span 7; + } + .lg\:bui-col-span-8 { + grid-column: span 8 / span 8; + } + .lg\:bui-col-span-9 { + grid-column: span 9 / span 9; + } + .lg\:bui-col-span-10 { + grid-column: span 10 / span 10; + } + .lg\:bui-col-span-11 { + grid-column: span 11 / span 11; + } + .lg\:bui-col-span-12 { + grid-column: span 12 / span 12; + } + .lg\:bui-col-span-auto { + grid-column: span auto/span auto; + } + .lg\:bui-col-start-1 { + grid-column-start: 1; + } + .lg\:bui-col-start-2 { + grid-column-start: 2; + } + .lg\:bui-col-start-3 { + grid-column-start: 3; + } + .lg\:bui-col-start-4 { + grid-column-start: 4; + } + .lg\:bui-col-start-5 { + grid-column-start: 5; + } + .lg\:bui-col-start-6 { + grid-column-start: 6; + } + .lg\:bui-col-start-7 { + grid-column-start: 7; + } + .lg\:bui-col-start-8 { + grid-column-start: 8; + } + .lg\:bui-col-start-9 { + grid-column-start: 9; + } + .lg\:bui-col-start-10 { + grid-column-start: 10; + } + .lg\:bui-col-start-11 { + grid-column-start: 11; + } + .lg\:bui-col-start-12 { + grid-column-start: 12; + } + .lg\:bui-col-start-13 { + grid-column-start: 13; + } + .lg\:bui-col-start-auto { + grid-column-start: auto; + } + .lg\:bui-col-end-1 { + grid-column-end: 1; + } + .lg\:bui-col-end-2 { + grid-column-end: 2; + } + .lg\:bui-col-end-3 { + grid-column-end: 3; + } + .lg\:bui-col-end-4 { + grid-column-end: 4; + } + .lg\:bui-col-end-5 { + grid-column-end: 5; + } + .lg\:bui-col-end-6 { + grid-column-end: 6; + } + .lg\:bui-col-end-7 { + grid-column-end: 7; + } + .lg\:bui-col-end-8 { + grid-column-end: 8; + } + .lg\:bui-col-end-9 { + grid-column-end: 9; + } + .lg\:bui-col-end-10 { + grid-column-end: 10; + } + .lg\:bui-col-end-11 { + grid-column-end: 11; + } + .lg\:bui-col-end-12 { + grid-column-end: 12; + } + .lg\:bui-col-end-13 { + grid-column-end: 13; + } + .lg\:bui-col-end-auto { + grid-column-end: auto; + } + .lg\:bui-row-span-1 { + grid-row: span 1 / span 1; + } + .lg\:bui-row-span-2 { + grid-row: span 2 / span 2; + } + .lg\:bui-row-span-3 { + grid-row: span 3 / span 3; + } + .lg\:bui-row-span-4 { + grid-row: span 4 / span 4; + } + .lg\:bui-row-span-5 { + grid-row: span 5 / span 5; + } + .lg\:bui-row-span-6 { + grid-row: span 6 / span 6; + } + .lg\:bui-row-span-7 { + grid-row: span 7 / span 7; + } + .lg\:bui-row-span-8 { + grid-row: span 8 / span 8; + } + .lg\:bui-row-span-9 { + grid-row: span 9 / span 9; + } + .lg\:bui-row-span-10 { + grid-row: span 10 / span 10; + } + .lg\:bui-row-span-11 { + grid-row: span 11 / span 11; + } + .lg\:bui-row-span-12 { + grid-row: span 12 / span 12; + } + .lg\:bui-row-span-auto { + grid-row: span auto/span auto; + } + } + @media (width>=1536px) { + .xl\:bui-columns-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + .xl\:bui-columns-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + .xl\:bui-columns-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .xl\:bui-columns-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + .xl\:bui-columns-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + .xl\:bui-columns-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + .xl\:bui-columns-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + .xl\:bui-columns-8 { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + .xl\:bui-columns-9 { + grid-template-columns: repeat(9, minmax(0, 1fr)); + } + .xl\:bui-columns-10 { + grid-template-columns: repeat(10, minmax(0, 1fr)); + } + .xl\:bui-columns-11 { + grid-template-columns: repeat(11, minmax(0, 1fr)); + } + .xl\:bui-columns-12 { + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + .xl\:bui-columns-auto { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + .xl\:bui-col-span-1 { + grid-column: span 1 / span 1; + } + .xl\:bui-col-span-2 { + grid-column: span 2 / span 2; + } + .xl\:bui-col-span-3 { + grid-column: span 3 / span 3; + } + .xl\:bui-col-span-4 { + grid-column: span 4 / span 4; + } + .xl\:bui-col-span-5 { + grid-column: span 5 / span 5; + } + .xl\:bui-col-span-6 { + grid-column: span 6 / span 6; + } + .xl\:bui-col-span-7 { + grid-column: span 7 / span 7; + } + .xl\:bui-col-span-8 { + grid-column: span 8 / span 8; + } + .xl\:bui-col-span-9 { + grid-column: span 9 / span 9; + } + .xl\:bui-col-span-10 { + grid-column: span 10 / span 10; + } + .xl\:bui-col-span-11 { + grid-column: span 11 / span 11; + } + .xl\:bui-col-span-12 { + grid-column: span 12 / span 12; + } + .xl\:bui-col-span-auto { + grid-column: span auto/span auto; + } + .xl\:bui-col-start-1 { + grid-column-start: 1; + } + .xl\:bui-col-start-2 { + grid-column-start: 2; + } + .xl\:bui-col-start-3 { + grid-column-start: 3; + } + .xl\:bui-col-start-4 { + grid-column-start: 4; + } + .xl\:bui-col-start-5 { + grid-column-start: 5; + } + .xl\:bui-col-start-6 { + grid-column-start: 6; + } + .xl\:bui-col-start-7 { + grid-column-start: 7; + } + .xl\:bui-col-start-8 { + grid-column-start: 8; + } + .xl\:bui-col-start-9 { + grid-column-start: 9; + } + .xl\:bui-col-start-10 { + grid-column-start: 10; + } + .xl\:bui-col-start-11 { + grid-column-start: 11; + } + .xl\:bui-col-start-12 { + grid-column-start: 12; + } + .xl\:bui-col-start-13 { + grid-column-start: 13; + } + .xl\:bui-col-start-auto { + grid-column-start: auto; + } + .xl\:bui-col-end-1 { + grid-column-end: 1; + } + .xl\:bui-col-end-2 { + grid-column-end: 2; + } + .xl\:bui-col-end-3 { + grid-column-end: 3; + } + .xl\:bui-col-end-4 { + grid-column-end: 4; + } + .xl\:bui-col-end-5 { + grid-column-end: 5; + } + .xl\:bui-col-end-6 { + grid-column-end: 6; + } + .xl\:bui-col-end-7 { + grid-column-end: 7; + } + .xl\:bui-col-end-8 { + grid-column-end: 8; + } + .xl\:bui-col-end-9 { + grid-column-end: 9; + } + .xl\:bui-col-end-10 { + grid-column-end: 10; + } + .xl\:bui-col-end-11 { + grid-column-end: 11; + } + .xl\:bui-col-end-12 { + grid-column-end: 12; + } + .xl\:bui-col-end-13 { + grid-column-end: 13; + } + .xl\:bui-col-end-auto { + grid-column-end: auto; + } + .xl\:bui-row-span-1 { + grid-row: span 1 / span 1; + } + .xl\:bui-row-span-2 { + grid-row: span 2 / span 2; + } + .xl\:bui-row-span-3 { + grid-row: span 3 / span 3; + } + .xl\:bui-row-span-4 { + grid-row: span 4 / span 4; + } + .xl\:bui-row-span-5 { + grid-row: span 5 / span 5; + } + .xl\:bui-row-span-6 { + grid-row: span 6 / span 6; + } + .xl\:bui-row-span-7 { + grid-row: span 7 / span 7; + } + .xl\:bui-row-span-8 { + grid-row: span 8 / span 8; + } + .xl\:bui-row-span-9 { + grid-row: span 9 / span 9; + } + .xl\:bui-row-span-10 { + grid-row: span 10 / span 10; + } + .xl\:bui-row-span-11 { + grid-row: span 11 / span 11; + } + .xl\:bui-row-span-12 { + grid-row: span 12 / span 12; + } + .xl\:bui-row-span-auto { + grid-row: span auto/span auto; + } + } + .bui-gap { + gap: var(--gap); + } + .bui-gap-0\.5 { + gap: var(--bui-space-0_5); + } + .bui-gap-1 { + gap: var(--bui-space-1); + } + .bui-gap-1\.5 { + gap: var(--bui-space-1_5); + } + .bui-gap-2 { + gap: var(--bui-space-2); + } + .bui-gap-3 { + gap: var(--bui-space-3); + } + .bui-gap-4 { + gap: var(--bui-space-4); + } + .bui-gap-5 { + gap: var(--bui-space-5); + } + .bui-gap-6 { + gap: var(--bui-space-6); + } + .bui-gap-7 { + gap: var(--bui-space-7); + } + .bui-gap-8 { + gap: var(--bui-space-8); + } + .bui-gap-9 { + gap: var(--bui-space-9); + } + .bui-gap-10 { + gap: var(--bui-space-10); + } + .bui-gap-11 { + gap: var(--bui-space-11); + } + .bui-gap-12 { + gap: var(--bui-space-12); + } + .bui-gap-13 { + gap: var(--bui-space-13); + } + .bui-gap-14 { + gap: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-gap { + gap: var(--gap-xs); + } + .xs\:bui-gap-0\.5 { + gap: var(--bui-space-0_5); + } + .xs\:bui-gap-1 { + gap: var(--bui-space-1); + } + .xs\:bui-gap-1\.5 { + gap: var(--bui-space-1_5); + } + .xs\:bui-gap-2 { + gap: var(--bui-space-2); + } + .xs\:bui-gap-3 { + gap: var(--bui-space-3); + } + .xs\:bui-gap-4 { + gap: var(--bui-space-4); + } + .xs\:bui-gap-5 { + gap: var(--bui-space-5); + } + .xs\:bui-gap-6 { + gap: var(--bui-space-6); + } + .xs\:bui-gap-7 { + gap: var(--bui-space-7); + } + .xs\:bui-gap-8 { + gap: var(--bui-space-8); + } + .xs\:bui-gap-9 { + gap: var(--bui-space-9); + } + .xs\:bui-gap-10 { + gap: var(--bui-space-10); + } + .xs\:bui-gap-11 { + gap: var(--bui-space-11); + } + .xs\:bui-gap-12 { + gap: var(--bui-space-12); + } + .xs\:bui-gap-13 { + gap: var(--bui-space-13); + } + .xs\:bui-gap-14 { + gap: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-gap { + gap: var(--gap-sm); + } + .sm\:bui-gap-0\.5 { + gap: var(--bui-space-0_5); + } + .sm\:bui-gap-1 { + gap: var(--bui-space-1); + } + .sm\:bui-gap-1\.5 { + gap: var(--bui-space-1_5); + } + .sm\:bui-gap-2 { + gap: var(--bui-space-2); + } + .sm\:bui-gap-3 { + gap: var(--bui-space-3); + } + .sm\:bui-gap-4 { + gap: var(--bui-space-4); + } + .sm\:bui-gap-5 { + gap: var(--bui-space-5); + } + .sm\:bui-gap-6 { + gap: var(--bui-space-6); + } + .sm\:bui-gap-7 { + gap: var(--bui-space-7); + } + .sm\:bui-gap-8 { + gap: var(--bui-space-8); + } + .sm\:bui-gap-9 { + gap: var(--bui-space-9); + } + .sm\:bui-gap-10 { + gap: var(--bui-space-10); + } + .sm\:bui-gap-11 { + gap: var(--bui-space-11); + } + .sm\:bui-gap-12 { + gap: var(--bui-space-12); + } + .sm\:bui-gap-13 { + gap: var(--bui-space-13); + } + .sm\:bui-gap-14 { + gap: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-gap { + gap: var(--gap-md); + } + .md\:bui-gap-0\.5 { + gap: var(--bui-space-0_5); + } + .md\:bui-gap-1 { + gap: var(--bui-space-1); + } + .md\:bui-gap-1\.5 { + gap: var(--bui-space-1_5); + } + .md\:bui-gap-2 { + gap: var(--bui-space-2); + } + .md\:bui-gap-3 { + gap: var(--bui-space-3); + } + .md\:bui-gap-4 { + gap: var(--bui-space-4); + } + .md\:bui-gap-5 { + gap: var(--bui-space-5); + } + .md\:bui-gap-6 { + gap: var(--bui-space-6); + } + .md\:bui-gap-7 { + gap: var(--bui-space-7); + } + .md\:bui-gap-8 { + gap: var(--bui-space-8); + } + .md\:bui-gap-9 { + gap: var(--bui-space-9); + } + .md\:bui-gap-10 { + gap: var(--bui-space-10); + } + .md\:bui-gap-11 { + gap: var(--bui-space-11); + } + .md\:bui-gap-12 { + gap: var(--bui-space-12); + } + .md\:bui-gap-13 { + gap: var(--bui-space-13); + } + .md\:bui-gap-14 { + gap: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-gap { + gap: var(--gap-lg); + } + .lg\:bui-gap-0\.5 { + gap: var(--bui-space-0_5); + } + .lg\:bui-gap-1 { + gap: var(--bui-space-1); + } + .lg\:bui-gap-1\.5 { + gap: var(--bui-space-1_5); + } + .lg\:bui-gap-2 { + gap: var(--bui-space-2); + } + .lg\:bui-gap-3 { + gap: var(--bui-space-3); + } + .lg\:bui-gap-4 { + gap: var(--bui-space-4); + } + .lg\:bui-gap-5 { + gap: var(--bui-space-5); + } + .lg\:bui-gap-6 { + gap: var(--bui-space-6); + } + .lg\:bui-gap-7 { + gap: var(--bui-space-7); + } + .lg\:bui-gap-8 { + gap: var(--bui-space-8); + } + .lg\:bui-gap-9 { + gap: var(--bui-space-9); + } + .lg\:bui-gap-10 { + gap: var(--bui-space-10); + } + .lg\:bui-gap-11 { + gap: var(--bui-space-11); + } + .lg\:bui-gap-12 { + gap: var(--bui-space-12); + } + .lg\:bui-gap-13 { + gap: var(--bui-space-13); + } + .lg\:bui-gap-14 { + gap: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-gap { + gap: var(--gap-xl); + } + .xl\:bui-gap-0\.5 { + gap: var(--bui-space-0_5); + } + .xl\:bui-gap-1 { + gap: var(--bui-space-1); + } + .xl\:bui-gap-1\.5 { + gap: var(--bui-space-1_5); + } + .xl\:bui-gap-2 { + gap: var(--bui-space-2); + } + .xl\:bui-gap-3 { + gap: var(--bui-space-3); + } + .xl\:bui-gap-4 { + gap: var(--bui-space-4); + } + .xl\:bui-gap-5 { + gap: var(--bui-space-5); + } + .xl\:bui-gap-6 { + gap: var(--bui-space-6); + } + .xl\:bui-gap-7 { + gap: var(--bui-space-7); + } + .xl\:bui-gap-8 { + gap: var(--bui-space-8); + } + .xl\:bui-gap-9 { + gap: var(--bui-space-9); + } + .xl\:bui-gap-10 { + gap: var(--bui-space-10); + } + .xl\:bui-gap-11 { + gap: var(--bui-space-11); + } + .xl\:bui-gap-12 { + gap: var(--bui-space-12); + } + .xl\:bui-gap-13 { + gap: var(--bui-space-13); + } + .xl\:bui-gap-14 { + gap: var(--bui-space-14); + } + } + .bui-align-start { + align-items: start; + } + .bui-align-center { + align-items: center; + } + .bui-align-end { + align-items: end; + } + .bui-align-baseline { + align-items: baseline; + } + .bui-align-stretch { + align-items: stretch; + } + .bui-jc-start { + justify-content: start; + } + .bui-jc-center { + justify-content: center; + } + .bui-jc-end { + justify-content: end; + } + .bui-jc-between { + justify-content: space-between; + } + .bui-fd-row { + flex-direction: row; + } + .bui-fd-column { + flex-direction: column; + } + .bui-fd-row-reverse { + flex-direction: row-reverse; + } + .bui-fd-column-reverse { + flex-direction: column-reverse; + } + @media (width>=640px) { + .xs\:bui-align-start { + align-items: start; + } + .xs\:bui-align-center { + align-items: center; + } + .xs\:bui-align-end { + align-items: end; + } + .xs\:bui-align-stretch { + align-items: stretch; + } + .xs\:bui-jc-start { + justify-content: start; + } + .xs\:bui-jc-center { + justify-content: center; + } + .xs\:bui-jc-end { + justify-content: end; + } + .xs\:bui-jc-between { + justify-content: space-between; + } + .xs\:bui-fd-row { + flex-direction: row; + } + .xs\:bui-fd-column { + flex-direction: column; + } + .xs\:bui-fd-row-reverse { + flex-direction: row-reverse; + } + .xs\:bui-fd-column-reverse { + flex-direction: column-reverse; + } + } + @media (width>=768px) { + .sm\:bui-align-start { + align-items: start; + } + .sm\:bui-align-center { + align-items: center; + } + .sm\:bui-align-end { + align-items: end; + } + .sm\:bui-align-stretch { + align-items: stretch; + } + .sm\:bui-jc-start { + justify-content: start; + } + .sm\:bui-jc-center { + justify-content: center; + } + .sm\:bui-jc-end { + justify-content: end; + } + .sm\:bui-jc-between { + justify-content: space-between; + } + .sm\:bui-fd-row { + flex-direction: row; + } + .sm\:bui-fd-column { + flex-direction: column; + } + .sm\:bui-fd-row-reverse { + flex-direction: row-reverse; + } + .sm\:bui-fd-column-reverse { + flex-direction: column-reverse; + } + } + @media (width>=1024px) { + .md\:bui-align-start { + align-items: start; + } + .md\:bui-align-center { + align-items: center; + } + .md\:bui-align-end { + align-items: end; + } + .md\:bui-align-stretch { + align-items: stretch; + } + .md\:bui-jc-start { + justify-content: start; + } + .md\:bui-jc-center { + justify-content: center; + } + .md\:bui-jc-end { + justify-content: end; + } + .md\:bui-jc-between { + justify-content: space-between; + } + .md\:bui-fd-row { + flex-direction: row; + } + .md\:bui-fd-column { + flex-direction: column; + } + .md\:bui-fd-row-reverse { + flex-direction: row-reverse; + } + .md\:bui-fd-column-reverse { + flex-direction: column-reverse; + } + } + @media (width>=1280px) { + .lg\:bui-align-start { + align-items: start; + } + .lg\:bui-align-center { + align-items: center; + } + .lg\:bui-align-end { + align-items: end; + } + .lg\:bui-align-stretch { + align-items: stretch; + } + .lg\:bui-jc-start { + justify-content: start; + } + .lg\:bui-jc-center { + justify-content: center; + } + .lg\:bui-jc-end { + justify-content: end; + } + .lg\:bui-jc-between { + justify-content: space-between; + } + .lg\:bui-fd-row { + flex-direction: row; + } + .lg\:bui-fd-column { + flex-direction: column; + } + .lg\:bui-fd-row-reverse { + flex-direction: row-reverse; + } + .lg\:bui-fd-column-reverse { + flex-direction: column-reverse; + } + } + @media (width>=1536px) { + .xl\:bui-align-start { + align-items: start; + } + .xl\:bui-align-center { + align-items: center; + } + .xl\:bui-align-end { + align-items: end; + } + .xl\:bui-align-stretch { + align-items: stretch; + } + .xl\:bui-jc-start { + justify-content: start; + } + .xl\:bui-jc-center { + justify-content: center; + } + .xl\:bui-jc-end { + justify-content: end; + } + .xl\:bui-jc-between { + justify-content: space-between; + } + .xl\:bui-fd-row { + flex-direction: row; + } + .xl\:bui-fd-column { + flex-direction: column; + } + .xl\:bui-fd-row-reverse { + flex-direction: row-reverse; + } + .xl\:bui-fd-column-reverse { + flex-direction: column-reverse; + } + } +} diff --git a/docs-ui/src/css/theme-spotify.css b/docs-ui/src/css/theme-spotify.css index 22eda0cabe..f8b18d6a31 100644 --- a/docs-ui/src/css/theme-spotify.css +++ b/docs-ui/src/css/theme-spotify.css @@ -1 +1,243 @@ -@font-face{font-family:CircularSpTitle;font-weight:900;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSpTitle-Black-4588c99025b967475c31695b0743dd1a.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSpTitle-Black-506746f387a26f25aa3d023b3e501d34.woff)format("woff")}@font-face{font-family:CircularSpTitle;font-weight:700;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSpTitle-Bold-b2586b06a2e1522e9d879d84c2792a58.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSpTitle-Bold-1624fb2df28c20d7203d7fb86ce8b481.woff)format("woff")}@font-face{font-family:CircularSp;font-weight:700;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSp-Bold-602e7aefc706aa36c6ec1324b9bbc461.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSp-Bold-856afe2da4ba4e61239b129e2c16d633.woff)format("woff")}@font-face{font-family:CircularSp;font-weight:400;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSp-Book-a00e99ef9996a3a157fb6b746856d04f.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSp-Book-3f73da7d35bd81c706bce7bbb84964de.woff)format("woff")}@font-face{font-family:CircularSp;font-weight:700;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSp-Bold-602e7aefc706aa36c6ec1324b9bbc461.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSp-Bold-856afe2da4ba4e61239b129e2c16d633.woff)format("woff")}[data-theme-name=spotify]{--bui-font-text:CircularSp,CircularSp-Arab,CircularSp-Hebr,CircularSp-Cyrl,CircularSp-Grek,CircularSp-Deva;--bui-font-title:CircularSpTitle,CircularSp-Arab,CircularSp-Hebr,CircularSp-Cyrl,CircularSp-Grek,CircularSp-Deva;--bui-font-regular:CircularSp,CircularSp-Arab,CircularSp-Hebr,CircularSp-Cyrl,CircularSp-Grek,CircularSp-Deva;& .bui-Button{border-radius:var(--bui-radius-3);padding-inline:var(--bui-space-3)}& .bui-ButtonIcon{padding:0}& .bui-MenuPopup{box-sizing:border-box;max-width:21.25rem}& .bui-MenuSubmenuTrigger,& .bui-MenuItem{height:auto;min-height:2rem}& .bui-Text{font-family:var(--bui-font-text)}& .bui-Heading{font-family:var(--bui-font-title)}& .bui-TableRow{border-radius:var(--bui-radius-4);border:none}& .bui-TableRow:hover td:first-child{border-top-left-radius:var(--bui-radius-2);border-bottom-left-radius:var(--bui-radius-2)}& .bui-TableRow:hover td:last-child{border-top-right-radius:var(--bui-radius-2);border-bottom-right-radius:var(--bui-radius-2)}& .bui-TableBody:before,& .bui-TableBody:after{line-height:var(--bui-space-1);content:"‌";display:block}& .bui-TableHeader .bui-TableRow{border-bottom:1px solid var(--bui-border)}& .bui-TableHead{font-size:var(--bui-font-size-2);color:var(--bui-fg-secondary);font-weight:var(--bui-font-weight-regular)}& .bui-HeaderToolbar{padding-top:var(--bui-space-2);padding-inline:var(--bui-space-2)}& .bui-HeaderToolbarWrapper{border-radius:var(--bui-radius-3);padding-inline:var(--bui-space-3);border:none}& .bui-HeaderToolbarControls{right:calc(var(--bui-space-3) - 1px)}& .bui-HeaderTabsWrapper{margin-top:var(--bui-space-2);margin-inline:var(--bui-space-2);border-radius:var(--bui-radius-3);padding-inline:var(--bui-space-1);border:none}& .bui-Input{border-radius:var(--bui-radius-3)}& .bui-Tag{border-radius:var(--bui-radius-full)}}[data-theme-mode=light][data-theme-name=spotify]{--bui-bg-solid:#1ed760;--bui-bg-solid-hover:#3be477;--bui-bg-solid-pressed:#1abc54;--bui-bg-solid-disabled:#0f6c30;--bui-fg-primary:var(--bui-black);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-solid:var(--bui-black);--bui-fg-solid-disabled:#62ab7c;--bui-border:var(--bui-gray-3);--bui-border-hover:#0000004d;--bui-border-pressed:#00000080;--bui-border-disabled:#0000001a;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#0003;& .bui-HeaderToolbarWrapper,& .bui-HeaderTabsWrapper{border:1px solid var(--bui-border)}}[data-theme-mode=dark][data-theme-name=spotify]{--bui-bg-surface-0:var(--bui-black);--bui-bg-solid:#1ed760;--bui-bg-solid-hover:#3be477;--bui-bg-solid-pressed:#1abc54;--bui-bg-solid-disabled:#0f6c30;--bui-bg-danger:#3b1219;--bui-bg-warning:#302008;--bui-bg-success:#132d21;--bui-fg-primary:var(--bui-white);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-link:var(--bui-white);--bui-fg-link-hover:var(--bui-white);--bui-fg-disabled:var(--bui-gray-5);--bui-fg-solid:var(--bui-black);--bui-fg-solid-disabled:#072f15;--bui-fg-tint:var(--bui-white);--bui-fg-tint-disabled:var(--bui-gray-5);--bui-fg-danger:#e22b2b;--bui-fg-warning:#e36d05;--bui-fg-success:#1db954;--bui-border:var(--bui-gray-3);--bui-border-hover:#fff6;--bui-border-pressed:#ffffff80;--bui-border-disabled:#fff3;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#fff3} \ No newline at end of file +@font-face { + font-family: CircularSpTitle; + font-weight: 900; + font-display: swap; + unicode-range: U+0, U+D, U+20-7E, U+A0-17E, U+18F, U+192, U+1A0-1A1, U+1AF-1B0, + U+1B5-1B6, U+1C4-1C6, U+1F1-1F3, U+1FA-1FF, U+218-21B, U+237, U+259, + U+2BB-2BC, U+2C6-2C7, U+2C9, U+2D8-2DD, U+300-301, U+303, U+309, U+323, + U+394, U+3A9, U+3BC, U+3C0, U+1E80-1E85, U+1E8A-1E8B, U+1EA0-1EF9, U+1FD6, + U+2007-2008, U+200B, U+2010-2011, U+2013-2014, U+2018-201A, U+201C-201E, + U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2042, U+2044, + U+2051, U+2070, U+2074-2079, U+2080-2089, U+20AB-20AC, U+2113, U+2117, + U+2122, U+2126, U+2160-2169, U+216C-216F, U+2190-2193, U+2196-2199, U+21A9, + U+21B0-21B5, U+21C6, U+2202, U+2206, U+220F, U+2211-2212, U+2215, + U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+22C5, U+24C5, + U+25A0-25A1, U+25AF, U+25B2-25B3, U+25CA-25CB, U+25CF, U+262E, U+2713, + U+2715, U+2780-2788, U+E000, U+E002, U+F6C3, U+FB00-FB04, U+FEFF, U+FF0C, + U+FF0E, U+FF1A-FF1B, U+FFFF; + src: url(https://encore.scdn.co/fonts/CircularSpTitle-Black-4588c99025b967475c31695b0743dd1a.woff2) + format('woff2'), + url(https://encore.scdn.co/fonts/CircularSpTitle-Black-506746f387a26f25aa3d023b3e501d34.woff) + format('woff'); +} +@font-face { + font-family: CircularSpTitle; + font-weight: 700; + font-display: swap; + unicode-range: U+0, U+D, U+20-7E, U+A0-17E, U+18F, U+192, U+1A0-1A1, U+1AF-1B0, + U+1B5-1B6, U+1C4-1C6, U+1F1-1F3, U+1FA-1FF, U+218-21B, U+237, U+259, + U+2BB-2BC, U+2C6-2C7, U+2C9, U+2D8-2DD, U+300-301, U+303, U+309, U+323, + U+394, U+3A9, U+3BC, U+3C0, U+1E80-1E85, U+1E8A-1E8B, U+1EA0-1EF9, U+1FD6, + U+2007-2008, U+200B, U+2010-2011, U+2013-2014, U+2018-201A, U+201C-201E, + U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2042, U+2044, + U+2051, U+2070, U+2074-2079, U+2080-2089, U+20AB-20AC, U+2113, U+2117, + U+2122, U+2126, U+2160-2169, U+216C-216F, U+2190-2193, U+2196-2199, U+21A9, + U+21B0-21B5, U+21C6, U+2202, U+2206, U+220F, U+2211-2212, U+2215, + U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+22C5, U+24C5, + U+25A0-25A1, U+25AF, U+25B2-25B3, U+25CA-25CB, U+25CF, U+262E, U+2713, + U+2715, U+2780-2788, U+E000, U+E002, U+F6C3, U+FB00-FB04, U+FEFF, U+FF0C, + U+FF0E, U+FF1A-FF1B, U+FFFF; + src: url(https://encore.scdn.co/fonts/CircularSpTitle-Bold-b2586b06a2e1522e9d879d84c2792a58.woff2) + format('woff2'), + url(https://encore.scdn.co/fonts/CircularSpTitle-Bold-1624fb2df28c20d7203d7fb86ce8b481.woff) + format('woff'); +} +@font-face { + font-family: CircularSp; + font-weight: 700; + font-display: swap; + unicode-range: U+0, U+D, U+20-7E, U+A0-17E, U+18F, U+192, U+1A0-1A1, U+1AF-1B0, + U+1B5-1B6, U+1C4-1C6, U+1F1-1F3, U+1FA-1FF, U+218-21B, U+237, U+259, + U+2BB-2BC, U+2C6-2C7, U+2C9, U+2D8-2DD, U+300-301, U+303, U+309, U+323, + U+394, U+3A9, U+3BC, U+3C0, U+1E80-1E85, U+1E8A-1E8B, U+1EA0-1EF9, U+1FD6, + U+2007-2008, U+200B, U+2010-2011, U+2013-2014, U+2018-201A, U+201C-201E, + U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2042, U+2044, + U+2051, U+2070, U+2074-2079, U+2080-2089, U+20AB-20AC, U+2113, U+2117, + U+2122, U+2126, U+2160-2169, U+216C-216F, U+2190-2193, U+2196-2199, U+21A9, + U+21B0-21B5, U+21C6, U+2202, U+2206, U+220F, U+2211-2212, U+2215, + U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+22C5, U+24C5, + U+25A0-25A1, U+25AF, U+25B2-25B3, U+25CA-25CB, U+25CF, U+262E, U+2713, + U+2715, U+2780-2788, U+E000, U+E002, U+F6C3, U+FB00-FB04, U+FEFF, U+FF0C, + U+FF0E, U+FF1A-FF1B, U+FFFF; + src: url(https://encore.scdn.co/fonts/CircularSp-Bold-602e7aefc706aa36c6ec1324b9bbc461.woff2) + format('woff2'), + url(https://encore.scdn.co/fonts/CircularSp-Bold-856afe2da4ba4e61239b129e2c16d633.woff) + format('woff'); +} +@font-face { + font-family: CircularSp; + font-weight: 400; + font-display: swap; + unicode-range: U+0, U+D, U+20-7E, U+A0-17E, U+18F, U+192, U+1A0-1A1, U+1AF-1B0, + U+1B5-1B6, U+1C4-1C6, U+1F1-1F3, U+1FA-1FF, U+218-21B, U+237, U+259, + U+2BB-2BC, U+2C6-2C7, U+2C9, U+2D8-2DD, U+300-301, U+303, U+309, U+323, + U+394, U+3A9, U+3BC, U+3C0, U+1E80-1E85, U+1E8A-1E8B, U+1EA0-1EF9, U+1FD6, + U+2007-2008, U+200B, U+2010-2011, U+2013-2014, U+2018-201A, U+201C-201E, + U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2042, U+2044, + U+2051, U+2070, U+2074-2079, U+2080-2089, U+20AB-20AC, U+2113, U+2117, + U+2122, U+2126, U+2160-2169, U+216C-216F, U+2190-2193, U+2196-2199, U+21A9, + U+21B0-21B5, U+21C6, U+2202, U+2206, U+220F, U+2211-2212, U+2215, + U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+22C5, U+24C5, + U+25A0-25A1, U+25AF, U+25B2-25B3, U+25CA-25CB, U+25CF, U+262E, U+2713, + U+2715, U+2780-2788, U+E000, U+E002, U+F6C3, U+FB00-FB04, U+FEFF, U+FF0C, + U+FF0E, U+FF1A-FF1B, U+FFFF; + src: url(https://encore.scdn.co/fonts/CircularSp-Book-a00e99ef9996a3a157fb6b746856d04f.woff2) + format('woff2'), + url(https://encore.scdn.co/fonts/CircularSp-Book-3f73da7d35bd81c706bce7bbb84964de.woff) + format('woff'); +} +@font-face { + font-family: CircularSp; + font-weight: 700; + font-display: swap; + unicode-range: U+0, U+D, U+20-7E, U+A0-17E, U+18F, U+192, U+1A0-1A1, U+1AF-1B0, + U+1B5-1B6, U+1C4-1C6, U+1F1-1F3, U+1FA-1FF, U+218-21B, U+237, U+259, + U+2BB-2BC, U+2C6-2C7, U+2C9, U+2D8-2DD, U+300-301, U+303, U+309, U+323, + U+394, U+3A9, U+3BC, U+3C0, U+1E80-1E85, U+1E8A-1E8B, U+1EA0-1EF9, U+1FD6, + U+2007-2008, U+200B, U+2010-2011, U+2013-2014, U+2018-201A, U+201C-201E, + U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2042, U+2044, + U+2051, U+2070, U+2074-2079, U+2080-2089, U+20AB-20AC, U+2113, U+2117, + U+2122, U+2126, U+2160-2169, U+216C-216F, U+2190-2193, U+2196-2199, U+21A9, + U+21B0-21B5, U+21C6, U+2202, U+2206, U+220F, U+2211-2212, U+2215, + U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+22C5, U+24C5, + U+25A0-25A1, U+25AF, U+25B2-25B3, U+25CA-25CB, U+25CF, U+262E, U+2713, + U+2715, U+2780-2788, U+E000, U+E002, U+F6C3, U+FB00-FB04, U+FEFF, U+FF0C, + U+FF0E, U+FF1A-FF1B, U+FFFF; + src: url(https://encore.scdn.co/fonts/CircularSp-Bold-602e7aefc706aa36c6ec1324b9bbc461.woff2) + format('woff2'), + url(https://encore.scdn.co/fonts/CircularSp-Bold-856afe2da4ba4e61239b129e2c16d633.woff) + format('woff'); +} +[data-theme-name='spotify'] { + --bui-font-text: CircularSp, CircularSp-Arab, CircularSp-Hebr, CircularSp-Cyrl, + CircularSp-Grek, CircularSp-Deva; + --bui-font-title: CircularSpTitle, CircularSp-Arab, CircularSp-Hebr, + CircularSp-Cyrl, CircularSp-Grek, CircularSp-Deva; + --bui-font-regular: CircularSp, CircularSp-Arab, CircularSp-Hebr, + CircularSp-Cyrl, CircularSp-Grek, CircularSp-Deva; + & .bui-Button { + border-radius: var(--bui-radius-3); + padding-inline: var(--bui-space-3); + } + & .bui-ButtonIcon { + padding: 0; + } + & .bui-MenuPopup { + box-sizing: border-box; + max-width: 21.25rem; + } + & .bui-MenuSubmenuTrigger, + & .bui-MenuItem { + height: auto; + min-height: 2rem; + } + & .bui-Text { + font-family: var(--bui-font-text); + } + & .bui-Heading { + font-family: var(--bui-font-title); + } + & .bui-TableRow { + border-radius: var(--bui-radius-4); + border: none; + } + & .bui-TableRow:hover td:first-child { + border-top-left-radius: var(--bui-radius-2); + border-bottom-left-radius: var(--bui-radius-2); + } + & .bui-TableRow:hover td:last-child { + border-top-right-radius: var(--bui-radius-2); + border-bottom-right-radius: var(--bui-radius-2); + } + & .bui-TableBody:before, + & .bui-TableBody:after { + line-height: var(--bui-space-1); + content: '‌'; + display: block; + } + & .bui-TableHeader .bui-TableRow { + border-bottom: 1px solid var(--bui-border); + } + & .bui-TableHead { + font-size: var(--bui-font-size-2); + color: var(--bui-fg-secondary); + font-weight: var(--bui-font-weight-regular); + } + & .bui-HeaderToolbar { + padding-top: var(--bui-space-2); + padding-inline: var(--bui-space-2); + } + & .bui-HeaderToolbarWrapper { + border-radius: var(--bui-radius-3); + padding-inline: var(--bui-space-3); + border: none; + } + & .bui-HeaderToolbarControls { + right: calc(var(--bui-space-3) - 1px); + } + & .bui-HeaderTabsWrapper { + margin-top: var(--bui-space-2); + margin-inline: var(--bui-space-2); + border-radius: var(--bui-radius-3); + padding-inline: var(--bui-space-1); + border: none; + } + & .bui-Input { + border-radius: var(--bui-radius-3); + } + & .bui-Tag { + border-radius: var(--bui-radius-full); + } +} +[data-theme-mode='light'][data-theme-name='spotify'] { + --bui-bg-solid: #1ed760; + --bui-bg-solid-hover: #3be477; + --bui-bg-solid-pressed: #1abc54; + --bui-bg-solid-disabled: #0f6c30; + --bui-fg-primary: var(--bui-black); + --bui-fg-secondary: var(--bui-gray-7); + --bui-fg-solid: var(--bui-black); + --bui-fg-solid-disabled: #62ab7c; + --bui-border: var(--bui-gray-3); + --bui-border-hover: #0000004d; + --bui-border-pressed: #00000080; + --bui-border-disabled: #0000001a; + --bui-border-danger: #f87a7a; + --bui-border-warning: #e36d05; + --bui-border-success: #53db83; + --bui-ring: #0003; + & .bui-HeaderToolbarWrapper, + & .bui-HeaderTabsWrapper { + border: 1px solid var(--bui-border); + } +} +[data-theme-mode='dark'][data-theme-name='spotify'] { + --bui-bg-surface-0: var(--bui-black); + --bui-bg-solid: #1ed760; + --bui-bg-solid-hover: #3be477; + --bui-bg-solid-pressed: #1abc54; + --bui-bg-solid-disabled: #0f6c30; + --bui-bg-danger: #3b1219; + --bui-bg-warning: #302008; + --bui-bg-success: #132d21; + --bui-fg-primary: var(--bui-white); + --bui-fg-secondary: var(--bui-gray-7); + --bui-fg-link: var(--bui-white); + --bui-fg-link-hover: var(--bui-white); + --bui-fg-disabled: var(--bui-gray-5); + --bui-fg-solid: var(--bui-black); + --bui-fg-solid-disabled: #072f15; + --bui-fg-tint: var(--bui-white); + --bui-fg-tint-disabled: var(--bui-gray-5); + --bui-fg-danger: #e22b2b; + --bui-fg-warning: #e36d05; + --bui-fg-success: #1db954; + --bui-border: var(--bui-gray-3); + --bui-border-hover: #fff6; + --bui-border-pressed: #ffffff80; + --bui-border-disabled: #fff3; + --bui-border-danger: #f87a7a; + --bui-border-warning: #e36d05; + --bui-border-success: #53db83; + --bui-ring: #fff3; +} diff --git a/docs-ui/src/utils/playground-context.tsx b/docs-ui/src/utils/playground-context.tsx index f4496787a5..5bfdf5c6fe 100644 --- a/docs-ui/src/utils/playground-context.tsx +++ b/docs-ui/src/utils/playground-context.tsx @@ -22,13 +22,13 @@ const PlaygroundContext = createContext<{ setSelectedThemeName: (themeName: ThemeName) => void; }>({ selectedScreenSizes: [], - setSelectedScreenSizes: () => { }, + setSelectedScreenSizes: () => {}, selectedComponents: [], - setSelectedComponents: () => { }, + setSelectedComponents: () => {}, selectedTheme: new Set(['light']), - setSelectedTheme: () => { }, + setSelectedTheme: () => {}, selectedThemeName: 'backstage', - setSelectedThemeName: () => { }, + setSelectedThemeName: () => {}, }); // Create a provider component From 2bcd34df8dbfa00418f9bec84621c49a275ea487 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Ramberg?= <31762177+bjornramberg@users.noreply.github.com> Date: Thu, 29 Jan 2026 16:43:08 +0100 Subject: [PATCH 067/107] Change IKEA IT AB to IKEA Retail in ADOPTERS.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updated IKEA IT AB entry to IKEA Retail with new details. Signed-off-by: Björn Ramberg <31762177+bjornramberg@users.noreply.github.com> --- ADOPTERS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ADOPTERS.md b/ADOPTERS.md index 2b3cad0b25..b1b36bc155 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -91,7 +91,7 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | [HP Inc](https://www.hp.com) | [Damon Kaswell](https://github.com/dekoding) | DevEx engagement hub (dev portal: docs, standards, Q&A) and extensive assets catalog (APIs, services, code, data, etc.) for the pan-HP internal developer community. | | [VMware](https://www.vmware.com) | [Waldir Montoya](https://github.com/waldirmontoya25), [Kris Applegate](https://github.com/krisapplegate), [Jamie Klassen](https://github.com/jamieklassen) | Part of [Tanzu Application Platform](https://docs.vmware.com/en/VMware-Tanzu-Application-Platform/index.html) offering; internal developer portal | | [Ualá](https://www.uala.com.ar/) | [Santiago Bernal](https://github.com/sabernal) | Initial work being done to centralize documentation for all our microservices and APIs, as well as scaffolding new services and tracking code quality | -| [IKEA IT AB](https://www.ingka.com) | [@bjornramberg](https://github.com/bjornramberg), [@supriyachitale](https://github.com/supriyachitale) | Supporting engineers at scale with self serve access and connecting the dots of our engineering platform and services, enabling product teams to move faster and go further, and unleashing innovation, reuse and co-creation across the organisation. | +| [IKEA Retail](https://www.ingka.com) | [Björn Ramberg](https://github.com/bjornramberg), [Martin Norin](https://github.com/martin-norin) | Centralized developer portal, supporting the internal engineering community with self serve access, documentation, templates, catalog and more. | | [Invitae](https://www.invitae.com/en) | [@ryan-hanchett](https://github.com/ryan-hanchett), [@gmandler42](https://github.com/gmandler42) | Centralized Developer Experience portal, putting all of our tooling behind a single pane of glass and creating a living service catalog. | | [Fortum](https://www.fortum.com/) | [@brunoamaroalmeida](https://github.com/brunoamaroalmeida), [@dhaval-vithalani](https://github.com/dhaval-vithalani), [@sunilkumarmohanty](https://github.com/sunilkumarmohanty) | A central portal containing information about our applications, services, processes and other software assets to be used by Fortum software engineering community. | | [Procore](https://www.procore.com/jobs/engineering) | [@shayon](https://github.com/Shayon), [@kurtaking](https://github.com/kurtaking), [@pc-bob](https://github.com/pc-bob) | Developer portal - centralized software catalog and templates to enable self serve and reduce cognitive load. | From 7e70b860ef62779bf31f94a714b1cc4b2f973845 Mon Sep 17 00:00:00 2001 From: Vincenzo Scamporlino Date: Thu, 29 Jan 2026 21:19:40 +0100 Subject: [PATCH 068/107] Update .changeset/fix-catalog-tags-spacing.md Signed-off-by: Vincenzo Scamporlino --- .changeset/fix-catalog-tags-spacing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/fix-catalog-tags-spacing.md b/.changeset/fix-catalog-tags-spacing.md index 6e2540fa0b..e611273a04 100644 --- a/.changeset/fix-catalog-tags-spacing.md +++ b/.changeset/fix-catalog-tags-spacing.md @@ -2,4 +2,4 @@ '@backstage/plugin-catalog': patch --- -Fixed vertical spacing between tags in the catalog table. Tags now have consistent 2px margin to prevent border overlap when wrapped to multiple lines. +Fixed vertical spacing between tags in the catalog table. From a21f50fc57089c669099668213b81717ea9b6996 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 30 Jan 2026 11:36:09 +0100 Subject: [PATCH 069/107] docs: apply minor fixes from feedback Signed-off-by: Patrik Oldsberg --- docs/auth/index.md | 2 ++ docs/auth/oidc.md | 16 ++++++++++++++-- .../core-services/root-http-router.md | 2 +- .../software-templates/writing-custom-actions.md | 6 +++--- docs/getting-started/index.md | 2 +- docs/notifications/index.md | 3 --- docs/overview/threat-model.md | 2 +- docs/plugins/proxying.md | 3 +++ docs/tooling/cli/03-commands.md | 2 +- docs/tooling/package-metadata.md | 4 ++-- 10 files changed, 28 insertions(+), 14 deletions(-) diff --git a/docs/auth/index.md b/docs/auth/index.md index 1d668f6961..71d205cc01 100644 --- a/docs/auth/index.md +++ b/docs/auth/index.md @@ -211,6 +211,8 @@ to get the existing session, which is exactly what the `ProxiedSignInPage` does. thing you need to do to configure the `ProxiedSignInPage` is to pass the ID of the provider like this: ```tsx title="packages/app/src/App.tsx" +import { ProxiedSignInPage } from '@backstage/core-components'; + const app = createApp({ components: { SignInPage: props => , diff --git a/docs/auth/oidc.md b/docs/auth/oidc.md index 55827ab1dc..7754c4089d 100644 --- a/docs/auth/oidc.md +++ b/docs/auth/oidc.md @@ -136,7 +136,15 @@ auth: - resolver: emailMatchingUserEntityProfileEmail ``` -If none of the built-in resolvers are suitable, you can alternatively write a custom resolver. See an example below: +If none of the built-in resolvers are suitable, you can alternatively write a custom resolver. + +First, install the OIDC provider module: + +```bash +yarn ./packages/backend add @backstage/plugin-auth-backend-module-oidc-provider +``` + +Then create a custom resolver as shown below: ```ts title="in packages/backend/src/index.ts" /* highlight-add-start */ @@ -146,6 +154,10 @@ import { createOAuthProviderFactory, } from '@backstage/plugin-auth-node'; import { oidcAuthenticator } from '@backstage/plugin-auth-backend-module-oidc-provider'; +import { + stringifyEntityRef, + DEFAULT_NAMESPACE, +} from '@backstage/catalog-model'; const myAuthProviderModule = createBackendModule({ // This ID must be exactly "auth" because that's the plugin it targets @@ -168,7 +180,7 @@ const myAuthProviderModule = createBackendModule({ async signInResolver(info, ctx) { const userRef = stringifyEntityRef({ kind: 'User', - name: info.result.userinfo.sub, + name: info.result.fullProfile.userinfo.sub, namespace: DEFAULT_NAMESPACE, }); return ctx.issueToken({ diff --git a/docs/backend-system/core-services/root-http-router.md b/docs/backend-system/core-services/root-http-router.md index 9c2c60957f..2f7f324005 100644 --- a/docs/backend-system/core-services/root-http-router.md +++ b/docs/backend-system/core-services/root-http-router.md @@ -164,7 +164,7 @@ Note that requests towards `/api/*` will never be handled by the `routes` handle The root HTTP Router service also allows for configuration of the underlying Node.js HTTP server object. This is useful for modifying settings on the HTTP server itself, such as server [`timeout`](https://nodejs.org/api/http.html#servertimeout), [`keepAliveTimeout`](https://nodejs.org/api/http.html#serverkeepalivetimeout), and [`headersTimeout`](https://nodejs.org/api/http.html#serverheaderstimeout). -A `applyDefaults` helper is also made available to use the default app/router configuration while still enabling custom server configuration +An `applyDefaults` helper is also made available to use the default app/router configuration while still enabling custom server configuration ```ts import { rootHttpRouterServiceFactory } from '@backstage/backend-defaults/rootHttpRouter'; diff --git a/docs/features/software-templates/writing-custom-actions.md b/docs/features/software-templates/writing-custom-actions.md index 1a64406b04..7e0ee1c5a9 100644 --- a/docs/features/software-templates/writing-custom-actions.md +++ b/docs/features/software-templates/writing-custom-actions.md @@ -91,8 +91,8 @@ The `createTemplateAction` takes an object which specifies the following: may ship with the `scaffolder-backend` plugin. - `description` - An optional field to describe the purpose of the action. This will populate in the `/create/actions` endpoint. -- `schema.input` - A `zod` or JSON schema object for input values to your function -- `schema.output` - A `zod` or JSON schema object for values which are output from the +- `schema.input` - A `zod` schema object for input values to your function +- `schema.output` - A `zod` schema object for values which are output from the function using `ctx.output` - `handler` - the actual code which is run as part of the action, with a context @@ -195,7 +195,7 @@ argument. It looks like the following: executed successfully on the previous run. - `ctx.logger` - a [LoggerService](../../backend-system/core-services/logger.md) instance for additional logging inside your action - `ctx.workspacePath` - a string of the working directory of the template run -- `ctx.input` - an object which should match the `zod` or JSON schema provided in the +- `ctx.input` - an object which should match the `zod` schema provided in the `schema.input` part of the action definition - `ctx.output` - a function which you can call to set outputs that match the `zod` schema in `schema.output` for ex. `ctx.output('downloadUrl', myDownloadUrl)` diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index c7aabb7bd5..d7c4ee96c8 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -81,7 +81,7 @@ This guide also assumes a basic understanding of working on a Linux based operat - Using `nvm` (recommended) - [Installing nvm](https://github.com/nvm-sh/nvm#install--update-script) - [Install and change Node version with nvm](https://nodejs.org/en/download/package-manager/#nvm) - - Node 24 is a good starting point, this can be installed using `nvm install lts/krypton` + - Node 22 or 24 are recommended, these can be installed using `nvm install 22` or `nvm install 24` - [Binary Download](https://nodejs.org/en/download/) - [Package manager](https://nodejs.org/en/download/package-manager/) - [Using NodeSource packages](https://github.com/nodesource/distributions/blob/master/README.md) diff --git a/docs/notifications/index.md b/docs/notifications/index.md index dce58d3214..3d7dc0eaac 100644 --- a/docs/notifications/index.md +++ b/docs/notifications/index.md @@ -147,9 +147,6 @@ add the `UserNotificationSettingsCard` to your frontend. ```tsx title="packages/app/src/App.tsx" }> - - - Date: Fri, 30 Jan 2026 11:58:43 +0100 Subject: [PATCH 070/107] Update docs/auth/oidc.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Fredrik Adelöw Signed-off-by: Patrik Oldsberg --- docs/auth/oidc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/auth/oidc.md b/docs/auth/oidc.md index 7754c4089d..a55719e564 100644 --- a/docs/auth/oidc.md +++ b/docs/auth/oidc.md @@ -141,7 +141,7 @@ If none of the built-in resolvers are suitable, you can alternatively write a cu First, install the OIDC provider module: ```bash -yarn ./packages/backend add @backstage/plugin-auth-backend-module-oidc-provider +yarn --cwd packages/backend add @backstage/plugin-auth-backend-module-oidc-provider ``` Then create a custom resolver as shown below: From aa745036e8cb935671dff728ce1ee332a8d631c5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jan 2026 13:01:39 +0000 Subject: [PATCH 071/107] chore(deps): update dependency @rspack/core to v1.7.4 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 96 +++++++++++++++++++++++++++---------------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/yarn.lock b/yarn.lock index 75dacfbdfc..e1a67ff1aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17044,92 +17044,92 @@ __metadata: languageName: node linkType: hard -"@rspack/binding-darwin-arm64@npm:1.7.3": - version: 1.7.3 - resolution: "@rspack/binding-darwin-arm64@npm:1.7.3" +"@rspack/binding-darwin-arm64@npm:1.7.4": + version: 1.7.4 + resolution: "@rspack/binding-darwin-arm64@npm:1.7.4" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rspack/binding-darwin-x64@npm:1.7.3": - version: 1.7.3 - resolution: "@rspack/binding-darwin-x64@npm:1.7.3" +"@rspack/binding-darwin-x64@npm:1.7.4": + version: 1.7.4 + resolution: "@rspack/binding-darwin-x64@npm:1.7.4" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rspack/binding-linux-arm64-gnu@npm:1.7.3": - version: 1.7.3 - resolution: "@rspack/binding-linux-arm64-gnu@npm:1.7.3" +"@rspack/binding-linux-arm64-gnu@npm:1.7.4": + version: 1.7.4 + resolution: "@rspack/binding-linux-arm64-gnu@npm:1.7.4" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rspack/binding-linux-arm64-musl@npm:1.7.3": - version: 1.7.3 - resolution: "@rspack/binding-linux-arm64-musl@npm:1.7.3" +"@rspack/binding-linux-arm64-musl@npm:1.7.4": + version: 1.7.4 + resolution: "@rspack/binding-linux-arm64-musl@npm:1.7.4" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rspack/binding-linux-x64-gnu@npm:1.7.3": - version: 1.7.3 - resolution: "@rspack/binding-linux-x64-gnu@npm:1.7.3" +"@rspack/binding-linux-x64-gnu@npm:1.7.4": + version: 1.7.4 + resolution: "@rspack/binding-linux-x64-gnu@npm:1.7.4" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rspack/binding-linux-x64-musl@npm:1.7.3": - version: 1.7.3 - resolution: "@rspack/binding-linux-x64-musl@npm:1.7.3" +"@rspack/binding-linux-x64-musl@npm:1.7.4": + version: 1.7.4 + resolution: "@rspack/binding-linux-x64-musl@npm:1.7.4" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rspack/binding-wasm32-wasi@npm:1.7.3": - version: 1.7.3 - resolution: "@rspack/binding-wasm32-wasi@npm:1.7.3" +"@rspack/binding-wasm32-wasi@npm:1.7.4": + version: 1.7.4 + resolution: "@rspack/binding-wasm32-wasi@npm:1.7.4" dependencies: "@napi-rs/wasm-runtime": "npm:1.0.7" conditions: cpu=wasm32 languageName: node linkType: hard -"@rspack/binding-win32-arm64-msvc@npm:1.7.3": - version: 1.7.3 - resolution: "@rspack/binding-win32-arm64-msvc@npm:1.7.3" +"@rspack/binding-win32-arm64-msvc@npm:1.7.4": + version: 1.7.4 + resolution: "@rspack/binding-win32-arm64-msvc@npm:1.7.4" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rspack/binding-win32-ia32-msvc@npm:1.7.3": - version: 1.7.3 - resolution: "@rspack/binding-win32-ia32-msvc@npm:1.7.3" +"@rspack/binding-win32-ia32-msvc@npm:1.7.4": + version: 1.7.4 + resolution: "@rspack/binding-win32-ia32-msvc@npm:1.7.4" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rspack/binding-win32-x64-msvc@npm:1.7.3": - version: 1.7.3 - resolution: "@rspack/binding-win32-x64-msvc@npm:1.7.3" +"@rspack/binding-win32-x64-msvc@npm:1.7.4": + version: 1.7.4 + resolution: "@rspack/binding-win32-x64-msvc@npm:1.7.4" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@rspack/binding@npm:1.7.3": - version: 1.7.3 - resolution: "@rspack/binding@npm:1.7.3" +"@rspack/binding@npm:1.7.4": + version: 1.7.4 + resolution: "@rspack/binding@npm:1.7.4" dependencies: - "@rspack/binding-darwin-arm64": "npm:1.7.3" - "@rspack/binding-darwin-x64": "npm:1.7.3" - "@rspack/binding-linux-arm64-gnu": "npm:1.7.3" - "@rspack/binding-linux-arm64-musl": "npm:1.7.3" - "@rspack/binding-linux-x64-gnu": "npm:1.7.3" - "@rspack/binding-linux-x64-musl": "npm:1.7.3" - "@rspack/binding-wasm32-wasi": "npm:1.7.3" - "@rspack/binding-win32-arm64-msvc": "npm:1.7.3" - "@rspack/binding-win32-ia32-msvc": "npm:1.7.3" - "@rspack/binding-win32-x64-msvc": "npm:1.7.3" + "@rspack/binding-darwin-arm64": "npm:1.7.4" + "@rspack/binding-darwin-x64": "npm:1.7.4" + "@rspack/binding-linux-arm64-gnu": "npm:1.7.4" + "@rspack/binding-linux-arm64-musl": "npm:1.7.4" + "@rspack/binding-linux-x64-gnu": "npm:1.7.4" + "@rspack/binding-linux-x64-musl": "npm:1.7.4" + "@rspack/binding-wasm32-wasi": "npm:1.7.4" + "@rspack/binding-win32-arm64-msvc": "npm:1.7.4" + "@rspack/binding-win32-ia32-msvc": "npm:1.7.4" + "@rspack/binding-win32-x64-msvc": "npm:1.7.4" dependenciesMeta: "@rspack/binding-darwin-arm64": optional: true @@ -17151,23 +17151,23 @@ __metadata: optional: true "@rspack/binding-win32-x64-msvc": optional: true - checksum: 10/295c59c22370f71e0f8543fca9819d7d13741e02ef340f1fdda84789d800e324a91d7e54c5119ec0e2a64d4074efff7d2a7f989522bef2d8cb12fb7abffbb5d5 + checksum: 10/0d082e962980ace986c546ac359e7d4b5fada21ce38980db792c70ef97257841257b64a0b65c5d3c2e2660d58ab05b1d7302defc752f325c616507f5837fb98d languageName: node linkType: hard "@rspack/core@npm:^1.4.11": - version: 1.7.3 - resolution: "@rspack/core@npm:1.7.3" + version: 1.7.4 + resolution: "@rspack/core@npm:1.7.4" dependencies: "@module-federation/runtime-tools": "npm:0.22.0" - "@rspack/binding": "npm:1.7.3" + "@rspack/binding": "npm:1.7.4" "@rspack/lite-tapable": "npm:1.1.0" peerDependencies: "@swc/helpers": ">=0.5.1" peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 10/cd6a4d8dea6eb2fe8fd97b1266ef3ab0bdefd02970f70f0154b20c7ba3b4235cb92e712cf7f9f42bf64786663422ee46e85917b15fe06b563da22bc39ca5f35e + checksum: 10/ecce39e64993ba9f5792c737b6d61960946c59399254f5903651a53b6e61761f8bc2a20dfdf81b1b819e1b0f1e26257456d902244485fd035e5a585b5a28a623 languageName: node linkType: hard From e940a185e4a91c32e6b35ae34de44ffcf9eecd78 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jan 2026 13:02:45 +0000 Subject: [PATCH 072/107] chore(deps): update dependency @types/nodemailer to v7.0.9 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/yarn.lock b/yarn.lock index 75dacfbdfc..dffa3418c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -765,7 +765,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-sesv2@npm:^3.839.0, @aws-sdk/client-sesv2@npm:^3.911.0": +"@aws-sdk/client-sesv2@npm:^3.911.0": version: 3.946.0 resolution: "@aws-sdk/client-sesv2@npm:3.946.0" dependencies: @@ -21579,12 +21579,11 @@ __metadata: linkType: hard "@types/nodemailer@npm:^7.0.0": - version: 7.0.5 - resolution: "@types/nodemailer@npm:7.0.5" + version: 7.0.9 + resolution: "@types/nodemailer@npm:7.0.9" dependencies: - "@aws-sdk/client-sesv2": "npm:^3.839.0" "@types/node": "npm:*" - checksum: 10/2defc792256092b18ee7ca2ef18ba47343ce5239da32ad9d5219f8f6d57279fa1540415219105ce690f5fb9bf343288e81c315d41deb3e3e8f293d91c382ab4f + checksum: 10/6bfca388af668a05a68e750a7acbd5736a3dcdf96f34f23bf4211ab152572d55008fd813e38bf03f944c6edbd002a7f98d6cee048343b8e840b3b91a00befac9 languageName: node linkType: hard From 7108c158f21dbc74eafbbc23e9847fba5cc231b2 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Fri, 30 Jan 2026 13:31:09 +0000 Subject: [PATCH 073/107] Remove requestAnimationFrame hack and use proper ESLint disable Replaced the requestAnimationFrame workaround with an explicit ESLint disable comment. The setState call in this effect is intentional and valid - it's syncing component state with localStorage when switching to the custom theme, which is a legitimate use case for effects. This is clearer and more maintainable than hiding the intent with requestAnimationFrame. Signed-off-by: Charles de Dreuille --- docs-ui/src/components/CustomTheme/customTheme.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs-ui/src/components/CustomTheme/customTheme.tsx b/docs-ui/src/components/CustomTheme/customTheme.tsx index 3a4ae0edc8..532f2bab9d 100644 --- a/docs-ui/src/components/CustomTheme/customTheme.tsx +++ b/docs-ui/src/components/CustomTheme/customTheme.tsx @@ -73,10 +73,10 @@ export const CustomTheme = () => { storedTheme = defaultTheme; localStorage.setItem('customThemeCss', storedTheme); } - // Defer setState to avoid synchronous call in effect - requestAnimationFrame(() => { - setCustomTheme(storedTheme!); - }); + // This setState is intentional - we're syncing component state with localStorage + // when the user switches to the custom theme. This is a valid effect pattern. + // eslint-disable-next-line react-hooks/set-state-in-effect + setCustomTheme(storedTheme); updateStyleElement(storedTheme); } else { const styleElement = document.getElementById( From 9da3b29044b2f2a8011bb90be8061aa7c30676e6 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Fri, 30 Jan 2026 13:44:41 +0000 Subject: [PATCH 074/107] Improve custom theme hydration issues Signed-off-by: Charles de Dreuille --- .../components/CustomTheme/customTheme.tsx | 57 ++++++--- docs-ui/src/utils/playground-context.tsx | 109 +++++++++++------- 2 files changed, 111 insertions(+), 55 deletions(-) diff --git a/docs-ui/src/components/CustomTheme/customTheme.tsx b/docs-ui/src/components/CustomTheme/customTheme.tsx index 532f2bab9d..539113140a 100644 --- a/docs-ui/src/components/CustomTheme/customTheme.tsx +++ b/docs-ui/src/components/CustomTheme/customTheme.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useEffect, useState, useCallback } from 'react'; +import { useEffect, useState, useCallback, useSyncExternalStore } from 'react'; import CodeMirror from '@uiw/react-codemirror'; import { sass } from '@codemirror/lang-sass'; import styles from './styles.module.css'; @@ -14,6 +14,10 @@ const defaultTheme = `:root { --bui-bg-solid: #000; }`; +// Stable server snapshots for useSyncExternalStore +const serverIsClient = false; +const serverDefaultTheme = defaultTheme; + const myTheme = createTheme({ theme: 'light', settings: { @@ -46,12 +50,41 @@ const myTheme = createTheme({ }); export const CustomTheme = () => { - const [isClient, setIsClient] = useState(() => typeof window !== 'undefined'); const [open, setOpen] = useState(true); - const [customTheme, setCustomTheme] = useState(undefined); const { selectedThemeName } = usePlayground(); const [savedMessage, setSavedMessage] = useState('Save'); + // SSR-safe client detection + const isClient = useSyncExternalStore( + () => () => {}, + () => true, + () => serverIsClient, + ); + + // SSR-safe localStorage access for custom theme + const customThemeFromStorage = useSyncExternalStore( + callback => { + window.addEventListener('storage', callback); + return () => window.removeEventListener('storage', callback); + }, + () => { + const stored = localStorage.getItem('customThemeCss'); + if (!stored) { + localStorage.setItem('customThemeCss', defaultTheme); + return defaultTheme; + } + return stored; + }, + () => serverDefaultTheme, + ); + + const [customTheme, setCustomTheme] = useState(customThemeFromStorage); + + // Sync from storage when it changes + useEffect(() => { + setCustomTheme(customThemeFromStorage); + }, [customThemeFromStorage]); + const updateStyleElement = (theme: string) => { let styleElement = document.getElementById( 'custom-theme-style', @@ -66,19 +99,11 @@ export const CustomTheme = () => { styleElement.textContent = theme; }; + // Apply custom theme to DOM useEffect(() => { - if (selectedThemeName === 'custom') { - let storedTheme = localStorage.getItem('customThemeCss'); - if (!storedTheme) { - storedTheme = defaultTheme; - localStorage.setItem('customThemeCss', storedTheme); - } - // This setState is intentional - we're syncing component state with localStorage - // when the user switches to the custom theme. This is a valid effect pattern. - // eslint-disable-next-line react-hooks/set-state-in-effect - setCustomTheme(storedTheme); - updateStyleElement(storedTheme); - } else { + if (selectedThemeName === 'custom' && customTheme && isClient) { + updateStyleElement(customTheme); + } else if (isClient) { const styleElement = document.getElementById( 'custom-theme-style', ) as HTMLStyleElement; @@ -86,7 +111,7 @@ export const CustomTheme = () => { styleElement.remove(); } } - }, [selectedThemeName]); + }, [selectedThemeName, customTheme, isClient]); const handleSave = () => { if (customTheme) { diff --git a/docs-ui/src/utils/playground-context.tsx b/docs-ui/src/utils/playground-context.tsx index 5bfdf5c6fe..252194535b 100644 --- a/docs-ui/src/utils/playground-context.tsx +++ b/docs-ui/src/utils/playground-context.tsx @@ -4,6 +4,7 @@ import { ReactNode, useState, useEffect, + useSyncExternalStore, } from 'react'; import { components } from './data'; @@ -31,6 +32,14 @@ const PlaygroundContext = createContext<{ setSelectedThemeName: () => {}, }); +// Stable server snapshots (outside component to avoid recreating) +const defaultThemeSet = new Set(['light']); +const defaultThemeName: ThemeName = 'backstage'; + +// Cache for theme Sets to avoid creating new objects on every getSnapshot call +let cachedThemeValue: string | null = null; +let cachedThemeSet: Set = defaultThemeSet; + // Create a provider component export const PlaygroundProvider = ({ children }: { children: ReactNode }) => { // Check if running in a browser environment @@ -41,49 +50,71 @@ export const PlaygroundProvider = ({ children }: { children: ReactNode }) => { components.map(component => component.slug), ); - // Use lazy initialization to load from localStorage - const [selectedTheme, setSelectedTheme] = useState>(() => { - if (typeof window !== 'undefined') { - const savedThemeString = localStorage.getItem('theme-mode'); - if (savedThemeString) { - const themeArray = savedThemeString - .split(',') - .filter(Boolean) as Theme[]; - return new Set(themeArray); - } - } - return new Set(['light']); - }); + // Use useSyncExternalStore for SSR-safe localStorage access + const selectedTheme = useSyncExternalStore( + callback => { + window.addEventListener('storage', callback); + return () => window.removeEventListener('storage', callback); + }, + () => { + const saved = localStorage.getItem('theme-mode'); - const [selectedThemeName, setSelectedThemeName] = useState(() => { - if (typeof window !== 'undefined') { - const savedThemeName = localStorage.getItem('theme-name') as ThemeName; - if (savedThemeName) { - return savedThemeName; + // Return cached Set if value hasn't changed + if (saved === cachedThemeValue) { + return cachedThemeSet; } - } - return 'backstage'; - }); + + // Update cache with new value + cachedThemeValue = saved; + if (saved) { + const themeArray = saved.split(',').filter(Boolean) as Theme[]; + cachedThemeSet = new Set(themeArray); + } else { + cachedThemeSet = defaultThemeSet; + } + + return cachedThemeSet; + }, + () => defaultThemeSet, // Stable server snapshot + ); + + const selectedThemeName = useSyncExternalStore( + callback => { + window.addEventListener('storage', callback); + return () => window.removeEventListener('storage', callback); + }, + () => { + const saved = localStorage.getItem('theme-name') as ThemeName; + return saved || defaultThemeName; + }, + () => defaultThemeName, // Stable server snapshot + ); + + // Keep setter functions that update both state and localStorage + const setSelectedTheme = (keys: Set) => { + const value = Array.from(keys).join(','); + localStorage.setItem('theme-mode', value); + // Invalidate cache + cachedThemeValue = null; + window.dispatchEvent(new Event('storage')); + }; + + const setSelectedThemeName = (name: ThemeName) => { + localStorage.setItem('theme-name', name); + window.dispatchEvent(new Event('storage')); + }; + + // Sync to DOM attributes when values change + useEffect(() => { + document.documentElement.setAttribute( + 'data-theme-mode', + Array.from(selectedTheme).join(','), + ); + }, [selectedTheme]); useEffect(() => { - if (isBrowser) { - document.documentElement.setAttribute( - 'data-theme-mode', - Array.from(selectedTheme).join(','), - ); - localStorage.setItem('theme-mode', Array.from(selectedTheme).join(',')); - } - }, [selectedTheme, isBrowser]); - - useEffect(() => { - if (isBrowser) { - document.documentElement.setAttribute( - 'data-theme-name', - selectedThemeName || 'backstage', - ); - localStorage.setItem('theme-name', selectedThemeName || 'backstage'); - } - }, [selectedThemeName, isBrowser]); + document.documentElement.setAttribute('data-theme-name', selectedThemeName); + }, [selectedThemeName]); return ( Date: Fri, 30 Jan 2026 14:27:53 +0000 Subject: [PATCH 075/107] chore: support Entra authentication for Azure Database for PostgreSQL (#31855) * chore: support Entra authentication for Azure Database for PostgreSQL Signed-off-by: Arjan Randhawa * chore: refactor methods (pr comments) Signed-off-by: Arjan Randhawa * chore: remove unsued helper function Signed-off-by: Arjan Randhawa * chore: Use Config over ConfigReader (PR Comments) Signed-off-by: Arjan * chore: Use consistent config name Signed-off-by: Arjan --------- Signed-off-by: Arjan Randhawa Signed-off-by: Arjan --- .changeset/solid-dryers-leave.md | 5 + .../config/vocabularies/Backstage/accept.txt | 1 + docs/getting-started/config/database.md | 82 +++++ packages/backend-defaults/config.d.ts | 26 ++ packages/backend-defaults/package.json | 1 + .../database/connectors/postgres.test.ts | 307 ++++++++++++++++++ .../database/connectors/postgres.ts | 186 ++++++++++- yarn.lock | 1 + 8 files changed, 592 insertions(+), 17 deletions(-) create mode 100644 .changeset/solid-dryers-leave.md diff --git a/.changeset/solid-dryers-leave.md b/.changeset/solid-dryers-leave.md new file mode 100644 index 0000000000..db1eb86c6c --- /dev/null +++ b/.changeset/solid-dryers-leave.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-defaults': patch +--- + +Support `connection.type: azure` in database client to use Microsoft Entra authentication with Azure database for PostgreSQL diff --git a/.github/vale/config/vocabularies/Backstage/accept.txt b/.github/vale/config/vocabularies/Backstage/accept.txt index 62277b26d6..a24731be67 100644 --- a/.github/vale/config/vocabularies/Backstage/accept.txt +++ b/.github/vale/config/vocabularies/Backstage/accept.txt @@ -345,6 +345,7 @@ parallelization param params parseable +passwordless Patrik pattison Peloton diff --git a/docs/getting-started/config/database.md b/docs/getting-started/config/database.md index d325c73d5f..cb482d5dc0 100644 --- a/docs/getting-started/config/database.md +++ b/docs/getting-started/config/database.md @@ -106,6 +106,88 @@ When filling these out, you have 2 choices, If you opt for the second option of replacing the entire string, take care to not commit your `app-config.yaml` to source control. It may contain passwords that you don't want leaked. +## Passwordless PostgreSQL in the Cloud + +If you want to host your PostgreSQL server in the cloud with passwordless authentication, you can use Azure Database for PostgreSQL with Microsoft Entra authentication or Google Cloud SQL for PostgreSQL with Cloud IAM. + +### Azure with Entra authentication + +Remove `password` from the connection configuration and set `type` to `azure`. + +Optionally set `tokenCredential` with the following properties. If no credential information is provided, it will default to using Default Azure Credential and a tokenRenewalOffsetTime of 5 minutes. + +#### Credential Selection + +The credential type is automatically inferred based on the fields you provide: + +- Client Secret Credential is used when all three are provided: + - `tenantId` + - `clientId` + - `clientSecret` +- Managed Identity Credential is used when only `clientId` is provided. This enables user-assigned managed identity. +- Default Azure Credential is used when no credential fields are provided. Default Azure Credential supports [many credential types](https://learn.microsoft.com/azure/developer/javascript/sdk/authentication/credential-chains#use-defaultazurecredential-for-flexibility), choosing one based on the runtime environment. + +#### Token Renewal + +Set `tokenRenewalOffsetTime` to control how early OAuth tokens should be refreshed. + +The value may be: + +- A human-readable string such as '1d', '2 hours', '30 seconds' +- A duration object, e.g. { minutes: 3, seconds: 30 } + +Azure PostgreSQL uses short-lived Entra ID access tokens. +By default, the database connector refreshes tokens 5 minutes before they expire. + +#### User Configuration + +Set `user` to the display name of your Entra ID group, service principal, or managed identity. Set it to the user principal name if you're authenticating with a user's credentials. + +#### Example + +```yaml title="app-config.yaml" +backend: + database: + client: pg + connection: + # highlight-add-start + type: azure + tokenCredential: + tokenRenewalOffsetTime: 5 minutes + # highlight-add-end + host: ${POSTGRES_HOST} + port: ${POSTGRES_PORT} + user: ${POSTGRES_USER} + # highlight-remove-start + password: ${POSTGRES_PASSWORD} + # highlight-remove-end +``` + +### Google with Cloud IAM + +Remove `password` from the connection configuration and set `type` to `cloudsql`. + +Under the hood, this implements [Automatic IAM Database Authentication](https://github.com/GoogleCloudPlatform/cloud-sql-nodejs-connector?tab=readme-ov-file#automatic-iam-database-authentication). + +For an IAM user account, set `user` to the user's email address. For a service account, set `user` to the service account's email without the .gserviceaccount.com domain suffix. + +```yaml title="app-config.yaml" +backend: + database: + client: pg + connection: + # highlight-add-start + type: cloudsql + instance: my-project:region:my-instance + # highlight-add-end + host: ${POSTGRES_HOST} + port: ${POSTGRES_PORT} + user: ${POSTGRES_USER} + # highlight-remove-start + password: ${POSTGRES_PASSWORD} + # highlight-remove-end +``` + ::: [Start the Backstage app](../index.md#2-run-the-backstage-app): diff --git a/packages/backend-defaults/config.d.ts b/packages/backend-defaults/config.d.ts index 5a651ef6cd..f978fa5924 100644 --- a/packages/backend-defaults/config.d.ts +++ b/packages/backend-defaults/config.d.ts @@ -592,6 +592,32 @@ export interface Config { */ connection: | string + | { + /** + * The specific config for Azure database for PostgreSQL connections with Entra authentication + */ + type: 'azure'; + /** + * Optional Azure token credential configuration + */ + tokenCredential?: { + /** + * How early before an access token expires to refresh it with a new one. + * Defaults to 5 minutes + * Supported formats: + * - A string in the format of '1d', '2 seconds' etc. as supported by the `ms` library. + * - A standard ISO formatted duration string, e.g. 'P2DT6H' or 'PT1M'. + * - An object with individual units (in plural) as keys, e.g. `{ days: 2, hours: 6 }`. + */ + tokenRenewableOffsetTime?: string | HumanDuration; + clientId?: string; + /** + * @visibility secret + */ + clientSecret?: string; + tenantId?: string; + }; + } | { /** * The specific config for cloudsql connections diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index ad40caac5c..14f68a54df 100644 --- a/packages/backend-defaults/package.json +++ b/packages/backend-defaults/package.json @@ -131,6 +131,7 @@ "@aws-sdk/client-s3": "^3.350.0", "@aws-sdk/credential-providers": "^3.350.0", "@aws-sdk/types": "^3.347.0", + "@azure/identity": "^4.0.0", "@azure/storage-blob": "^12.5.0", "@backstage/backend-app-api": "workspace:^", "@backstage/backend-dev-utils": "workspace:^", diff --git a/packages/backend-defaults/src/entrypoints/database/connectors/postgres.test.ts b/packages/backend-defaults/src/entrypoints/database/connectors/postgres.test.ts index debbaf79d0..7205fbd2f5 100644 --- a/packages/backend-defaults/src/entrypoints/database/connectors/postgres.test.ts +++ b/packages/backend-defaults/src/entrypoints/database/connectors/postgres.test.ts @@ -25,6 +25,7 @@ import { import { type Knex } from 'knex'; jest.mock('@google-cloud/cloud-sql-connector'); +jest.mock('@azure/identity'); describe('postgres', () => { const createMockConnection = () => ({ @@ -140,6 +141,271 @@ describe('postgres', () => { }); }); + it('should default to using default azure credentials when type is azure with no credentials', async () => { + const { DefaultAzureCredential } = jest.requireMock( + '@azure/identity', + ) as jest.Mocked; + + const tokenExpirationTimestamp = new Date( + '2025-01-01T12:34:56.789', + ).valueOf(); + + DefaultAzureCredential.prototype.getToken.mockResolvedValue({ + token: 'afaketoken', + expiresOnTimestamp: tokenExpirationTimestamp, + }); + + const configResult = await buildPgDatabaseConfig( + new ConfigReader({ + client: 'pg', + connection: { + type: 'azure', + user: 'some-user@domain.com', + port: 5423, + database: 'other_db', + }, + }), + ); + + expect(DefaultAzureCredential).toHaveBeenCalled(); + expect(configResult).toMatchObject({ + client: 'pg', + connection: expect.any(Function), + useNullAsDefault: true, + }); + + const connectionResult = await configResult.connection(); + + expect(connectionResult).toMatchObject({ + user: 'some-user@domain.com', + password: 'afaketoken', + port: 5423, + expirationChecker: expect.any(Function), + }); + expect(connectionResult).not.toHaveProperty('allowedClockSkewMs'); + expect(connectionResult).not.toHaveProperty('type'); + expect(connectionResult).not.toHaveProperty('tokenCredential'); + }); + + it('uses the correct config when using azure managed identity', async () => { + const { ManagedIdentityCredential } = jest.requireMock( + '@azure/identity', + ) as jest.Mocked; + + const tokenExpirationTimestamp = new Date( + '2025-01-01T12:34:56.789', + ).valueOf(); + + ManagedIdentityCredential.prototype.getToken.mockResolvedValue({ + token: 'afaketoken', + expiresOnTimestamp: tokenExpirationTimestamp, + }); + + const configResult = await buildPgDatabaseConfig( + new ConfigReader({ + client: 'pg', + connection: { + type: 'azure', + user: 'some-user@domain.com', + port: 5423, + database: 'other_db', + tokenCredential: { + clientId: 'my-client-id', + }, + }, + }), + ); + + expect(ManagedIdentityCredential).toHaveBeenCalledWith('my-client-id'); + expect(configResult).toMatchObject({ + client: 'pg', + connection: expect.any(Function), + useNullAsDefault: true, + }); + + const connectionResult = await configResult.connection(); + + expect(connectionResult).toMatchObject({ + user: 'some-user@domain.com', + password: 'afaketoken', + port: 5423, + expirationChecker: expect.any(Function), + }); + expect(connectionResult).not.toHaveProperty('type'); + expect(connectionResult).not.toHaveProperty('tokenCredential'); + }); + + it('uses the correct config when using azure client secret credentials', async () => { + const { ClientSecretCredential } = jest.requireMock( + '@azure/identity', + ) as jest.Mocked; + + const tokenExpirationTimestamp = new Date( + '2025-01-01T12:34:56.789', + ).valueOf(); + + ClientSecretCredential.prototype.getToken.mockResolvedValue({ + token: 'afaketoken', + expiresOnTimestamp: tokenExpirationTimestamp, + }); + + const configResult = await buildPgDatabaseConfig( + new ConfigReader({ + client: 'pg', + connection: { + type: 'azure', + user: 'some-user@domain.com', + port: 5423, + database: 'other_db', + tokenCredential: { + clientId: 'my-client-id', + tenantId: 'my-tenant-id', + clientSecret: 'my-client-secret', + }, + }, + }), + ); + + expect(ClientSecretCredential).toHaveBeenCalledWith( + 'my-tenant-id', + 'my-client-id', + 'my-client-secret', + ); + expect(configResult).toMatchObject({ + client: 'pg', + connection: expect.any(Function), + useNullAsDefault: true, + }); + + const connectionResult = await configResult.connection(); + + expect(connectionResult).toMatchObject({ + user: 'some-user@domain.com', + password: 'afaketoken', + port: 5423, + expirationChecker: expect.any(Function), + }); + expect(connectionResult).not.toHaveProperty('type'); + expect(connectionResult).not.toHaveProperty('tokenCredential'); + }); + + it('removes tokenCredential from the final connection', async () => { + const { DefaultAzureCredential } = jest.requireMock( + '@azure/identity', + ) as jest.Mocked; + DefaultAzureCredential.prototype.getToken.mockResolvedValue({ + token: 't', + expiresOnTimestamp: Date.now() + 1000, + }); + + const config = new ConfigReader({ + client: 'pg', + connection: { + type: 'azure', + instance: 'unused', + tokenCredential: { clientId: 'x' }, + }, + }); + + const configResult = await buildPgDatabaseConfig(config); + const connection = await configResult.connection(); + + expect(connection).not.toHaveProperty('tokenCredential'); + }); + + it('instructs knex to get a new connection object when the old azure token expires', async () => { + const { DefaultAzureCredential } = jest.requireMock( + '@azure/identity', + ) as jest.Mocked; + + const tokenExpirationTimestamp = new Date( + '2025-01-01T12:34:56.789', + ).valueOf(); + + DefaultAzureCredential.prototype.getToken.mockResolvedValue({ + token: 'afaketoken', + expiresOnTimestamp: tokenExpirationTimestamp, + }); + + let configResult = await buildPgDatabaseConfig( + new ConfigReader({ + client: 'pg', + connection: { + type: 'azure', + tokenCredential: { + tokenRenewableOffsetTime: '1 minute', + }, + user: 'some-user@domain.com', + database: 'other_db', + port: 5423, + }, + }), + ); + + let connectionResult = await configResult.connection(); + + jest.useFakeTimers({ now: tokenExpirationTimestamp - 90_000 }); + let expirationResult = await connectionResult.expirationChecker(); + expect(expirationResult).toBe(false); + + jest.useFakeTimers({ now: tokenExpirationTimestamp - 60_000 }); + expirationResult = await connectionResult.expirationChecker(); + expect(expirationResult).toBe(true); + + jest.useFakeTimers({ now: tokenExpirationTimestamp }); + expirationResult = await connectionResult.expirationChecker(); + expect(expirationResult).toBe(true); + + // Check the default tokenRenewableOffsetTime of 5 minutes + configResult = await buildPgDatabaseConfig( + new ConfigReader({ + client: 'pg', + connection: { + type: 'azure', + user: 'user@contoso.com', + database: 'other_db', + port: 5423, + }, + }), + ); + + connectionResult = await configResult.connection(); + jest.useFakeTimers({ now: tokenExpirationTimestamp - 450_000 }); + expirationResult = await connectionResult.expirationChecker(); + expect(expirationResult).toBe(false); + + jest.useFakeTimers({ now: tokenExpirationTimestamp - 300_000 }); + expirationResult = await connectionResult.expirationChecker(); + expect(expirationResult).toBe(true); + + jest.useFakeTimers({ now: tokenExpirationTimestamp }); + expirationResult = await connectionResult.expirationChecker(); + expect(expirationResult).toBe(true); + }); + + it('throws an error when Azure token acquisition fails', async () => { + const { DefaultAzureCredential } = jest.requireMock( + '@azure/identity', + ) as jest.Mocked; + + DefaultAzureCredential.prototype.getToken.mockResolvedValue(null as any); + + const configResult = await buildPgDatabaseConfig( + new ConfigReader({ + client: 'pg', + connection: { + type: 'azure', + user: 'some-user@domain.com', + database: 'other_db', + }, + }), + ); + + await expect(configResult.connection()).rejects.toThrow( + 'Failed to acquire Azure access token for database authentication', + ); + }); + it('uses the correct config when using cloudsql', async () => { expect( await buildPgDatabaseConfig( @@ -251,6 +517,47 @@ describe('postgres', () => { }); }); + it('passes configured ipType to connector.getOptions', async () => { + const { Connector } = jest.requireMock( + '@google-cloud/cloud-sql-connector', + ) as jest.Mocked; + + const mockStream = (): any => {}; + Connector.prototype.getOptions.mockResolvedValue({ stream: mockStream }); + + await buildPgDatabaseConfig( + new ConfigReader({ + client: 'pg', + connection: { + type: 'cloudsql', + instance: 'proj:region:inst', + ipAddressType: 'PUBLIC', + }, + }), + ); + + expect(Connector.prototype.getOptions).toHaveBeenCalledWith({ + authType: 'IAM', + instanceConnectionName: 'proj:region:inst', + ipType: 'PUBLIC', + }); + }); + + it('throws when connection.ipAddressType is invalid', async () => { + await expect( + buildPgDatabaseConfig( + new ConfigReader({ + client: 'pg', + connection: { + type: 'cloudsql', + instance: 'proj:region:inst', + ipAddressType: 'INVALID', + }, + }), + ), + ).rejects.toThrow(/Invalid connection.ipAddressType/); + }); + it('passes ip settings to cloud-sql-connector', async () => { const { Connector } = jest.requireMock( '@google-cloud/cloud-sql-connector', diff --git a/packages/backend-defaults/src/entrypoints/database/connectors/postgres.ts b/packages/backend-defaults/src/entrypoints/database/connectors/postgres.ts index 380ff2bd0c..afc2125c00 100644 --- a/packages/backend-defaults/src/entrypoints/database/connectors/postgres.ts +++ b/packages/backend-defaults/src/entrypoints/database/connectors/postgres.ts @@ -15,9 +15,17 @@ */ import { LifecycleService, LoggerService } from '@backstage/backend-plugin-api'; -import { Config } from '@backstage/config'; +import { + Config, + ConfigReader, + readDurationFromConfig, +} from '@backstage/config'; import { ForwardedError } from '@backstage/errors'; -import { JsonObject } from '@backstage/types'; +import { + durationToMilliseconds, + HumanDuration, + JsonObject, +} from '@backstage/types'; import knexFactory, { Knex } from 'knex'; import { merge, omit } from 'lodash'; import limiterFactory from 'p-limit'; @@ -25,6 +33,7 @@ import { Client } from 'pg'; import { Connector } from '../types'; import { mergeDatabaseConfig } from './mergeDatabaseConfig'; import format from 'pg-format'; +import { TokenCredential } from '@azure/identity'; // Limits the number of concurrent DDL operations to 1 const ddlLimiter = limiterFactory(1); @@ -74,26 +83,142 @@ export async function buildPgDatabaseConfig( }, overrides, ); - - const sanitizedConfig = JSON.parse(JSON.stringify(config)); - - // Trim additional properties from the connection object passed to knex - delete sanitizedConfig.connection.type; - delete sanitizedConfig.connection.instance; + const mergedConfigReader = new ConfigReader(config); if (config.connection.type === 'default' || !config.connection.type) { - return sanitizedConfig; + const connectionValue = config.connection; + const sanitizedConnection = + typeof connectionValue === 'string' || connectionValue instanceof String + ? connectionValue + : // connection is an object, omit config-only props + omit(connectionValue as Record, [ + 'type', + 'instance', + 'tokenCredential', + ]); + + return { + ...config, + connection: sanitizedConnection, + }; } - if (config.connection.type !== 'cloudsql') { - throw new Error(`Unknown connection type: ${config.connection.type}`); + switch (config.connection.type) { + case 'azure': + return buildAzurePgConfig(mergedConfigReader); + case 'cloudsql': + return buildCloudSqlConfig(mergedConfigReader); + default: + throw new Error(`Unknown connection type: ${config.connection.type}`); + } +} + +/* Note: the following type definition is intentionally duplicated in + * /packages/backend-defaults/config.d.ts so the clientSecret property + * can be annotated with "@visibility secret" there. + */ +export type AzureTokenCredentialConfig = { + /** + * How early before an access token expires to refresh it with a new one. + * Defaults to 5 minutes + * Supported formats: + * - A string in the format of '1d', '2 seconds' etc. as supported by the `ms` + * library. + * - A standard ISO formatted duration string, e.g. 'P2DT6H' or 'PT1M'. + * - An object with individual units (in plural) as keys, e.g. `{ days: 2, hours: 6 }`. + */ + tokenRenewableOffsetTime?: string | HumanDuration; + /** + * The client ID of a user-assigned managed identity. + * If not provided, the system-assigned managed identity is used. + */ + clientId?: string; + clientSecret?: string; + tenantId?: string; +}; + +export async function buildAzurePgConfig(config: Config): Promise { + const { + DefaultAzureCredential, + ManagedIdentityCredential, + ClientSecretCredential, + } = require('@azure/identity'); + + const tokenConfig = config.getOptionalConfig('connection.tokenCredential'); + + const tokenRenewableOffsetTime = durationToMilliseconds( + tokenConfig?.has('tokenRenewableOffsetTime') + ? readDurationFromConfig(tokenConfig, { key: 'tokenRenewableOffsetTime' }) + : { minutes: 5 }, + ); + + const clientId = tokenConfig?.getOptionalString('clientId'); + const tenantId = tokenConfig?.getOptionalString('tenantId'); + const clientSecret = tokenConfig?.getOptionalString('clientSecret'); + let credential: TokenCredential; + + /** + * Determine which TokenCredential to use based on provided config + * 1. If clientId, tenantId and clientSecret are provided, use ClientSecretCredential + * 2. If only clientId is provided, use ManagedIdentityCredential with user-assigned identity + * 3. Otherwise, use DefaultAzureCredential (which may use system-assigned identity among other methods) + */ + if (clientId && tenantId && clientSecret) { + credential = new ClientSecretCredential(tenantId, clientId, clientSecret); + } else if (clientId) { + credential = new ManagedIdentityCredential(clientId); + } else { + credential = new DefaultAzureCredential(); } - if (config.client !== 'pg') { + const rawConfig = config.get() as Record; + + const normalized = normalizeConnection(rawConfig.connection as any); + const sanitizedConnection = omit(normalized, [ + 'type', + 'instance', + 'tokenCredential', + ]) as Partial; + + async function getConnectionConfig() { + const token = await credential.getToken( + 'https://ossrdbms-aad.database.windows.net/.default', + ); + + if (!token) { + throw new Error( + 'Failed to acquire Azure access token for database authentication', + ); + } + + const connectionConfig = { + ...sanitizedConnection, + password: token.token, + expirationChecker: () => + /* return true if the token is within the renewable offset time */ + token.expiresOnTimestamp - tokenRenewableOffsetTime <= Date.now(), + }; + + return connectionConfig; + } + + return { + ...(rawConfig as Record), + connection: getConnectionConfig, + }; +} + +export async function buildCloudSqlConfig( + config: Config, +): Promise { + const client = config.getOptionalString('client'); + + if (client && client !== 'pg') { throw new Error('Cloud SQL only supports the pg client'); } - if (!config.connection.instance) { + const instance = config.getOptionalString('connection.instance'); + if (!instance) { throw new Error('Missing instance connection name for Cloud SQL'); } @@ -103,17 +228,44 @@ export async function buildPgDatabaseConfig( AuthTypes, } = require('@google-cloud/cloud-sql-connector') as typeof import('@google-cloud/cloud-sql-connector'); const connector = new CloudSqlConnector(); + + type IpType = (typeof IpAddressTypes)[keyof typeof IpAddressTypes]; + const ipTypeRaw = config.getOptionalString('connection.ipAddressType'); + + let ipType: IpType | undefined; + if (ipTypeRaw !== undefined) { + if ( + !(Object.values(IpAddressTypes) as Array).includes( + ipTypeRaw as any, + ) + ) { + throw new Error( + `Invalid connection.ipAddressType: ${ipTypeRaw}; valid values: ${Object.values( + IpAddressTypes, + ).join(', ')}`, + ); + } + ipType = ipTypeRaw as unknown as IpType; + } + const clientOpts = await connector.getOptions({ - instanceConnectionName: config.connection.instance, - ipType: config.connection.ipAddressType ?? IpAddressTypes.PUBLIC, + instanceConnectionName: instance, + ipType: ipType ?? IpAddressTypes.PUBLIC, authType: AuthTypes.IAM, }); + const rawConfig = config.get() as Record; + const normalized = normalizeConnection(rawConfig.connection as any); + const sanitizedConnection = omit(normalized, [ + 'type', + 'instance', + ]) as Partial; + return { - ...sanitizedConfig, + ...(rawConfig as Record), client: 'pg', connection: { - ...sanitizedConfig.connection, + ...sanitizedConnection, ...clientOpts, }, }; diff --git a/yarn.lock b/yarn.lock index 64a3a9a0b4..884970d0df 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2969,6 +2969,7 @@ __metadata: "@aws-sdk/credential-providers": "npm:^3.350.0" "@aws-sdk/types": "npm:^3.347.0" "@aws-sdk/util-stream-node": "npm:^3.350.0" + "@azure/identity": "npm:^4.0.0" "@azure/storage-blob": "npm:^12.5.0" "@backstage/backend-app-api": "workspace:^" "@backstage/backend-dev-utils": "workspace:^" From 28803964bec68edffd3ffd258a766652945cf2e5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jan 2026 15:06:17 +0000 Subject: [PATCH 076/107] chore(deps): update dependency nodemailer to v7.0.13 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 884970d0df..b0964e0c27 100644 --- a/yarn.lock +++ b/yarn.lock @@ -40195,9 +40195,9 @@ __metadata: linkType: hard "nodemailer@npm:^7.0.7": - version: 7.0.12 - resolution: "nodemailer@npm:7.0.12" - checksum: 10/31a2713be588fb6849d05698cb355a88902a64e17e63b1a5c8a10db3acc4349c329c3bbd83bc5bdefda92f8df5e0297364502f93042c0bae87c48e5652b663b7 + version: 7.0.13 + resolution: "nodemailer@npm:7.0.13" + checksum: 10/4ae37bfb6896f1555de150c1098a7c1b28eb1da240a4c7adede81a8af0dcc184298cfbf804930599c076ea574428e0c18c6b28f0dc2072cebb30c1da5fd0b688 languageName: node linkType: hard From c33764ee9d04a2951178556b6c58690a5981a9b9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jan 2026 15:09:15 +0000 Subject: [PATCH 077/107] chore(deps): update dependency @playwright/test to v1.58.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/yarn.lock b/yarn.lock index 884970d0df..1d9206495e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14290,13 +14290,13 @@ __metadata: linkType: hard "@playwright/test@npm:^1.32.3": - version: 1.57.0 - resolution: "@playwright/test@npm:1.57.0" + version: 1.58.0 + resolution: "@playwright/test@npm:1.58.0" dependencies: - playwright: "npm:1.57.0" + playwright: "npm:1.58.0" bin: playwright: cli.js - checksum: 10/07f5ba4841b2db1dea70d821004c5156b692488e13523c096ce3487d30f95f34ccf30ba6467ece60c86faac27ae382213b7eacab48a695550981b2e811e5e579 + checksum: 10/1ab8c4d408c919e1357bb43e5682d1ce66bb792516fd6269dd5cff9c9b7cc82e026b3fc864ba723714337dc610ac46110ed8307d610feb92f5002abbb03a6392 languageName: node linkType: hard @@ -42190,27 +42190,27 @@ __metadata: languageName: node linkType: hard -"playwright-core@npm:1.57.0": - version: 1.57.0 - resolution: "playwright-core@npm:1.57.0" +"playwright-core@npm:1.58.0": + version: 1.58.0 + resolution: "playwright-core@npm:1.58.0" bin: playwright-core: cli.js - checksum: 10/ec066602f0196f036006caee14a30d0a57533a76673bb9a0c609ef56e21decf018f0e8d402ba2fb18251393be6a1c9e193c83266f1670fe50838c5340e220de0 + checksum: 10/718549cdcd22e55f42887e7b832276c9a50e112b278d22a2242bb00c401021623fedf9554c7090f132e389b5bbe11a987ce71e3c877e767eed4dd9bfe573019c languageName: node linkType: hard -"playwright@npm:1.57.0": - version: 1.57.0 - resolution: "playwright@npm:1.57.0" +"playwright@npm:1.58.0": + version: 1.58.0 + resolution: "playwright@npm:1.58.0" dependencies: fsevents: "npm:2.3.2" - playwright-core: "npm:1.57.0" + playwright-core: "npm:1.58.0" dependenciesMeta: fsevents: optional: true bin: playwright: cli.js - checksum: 10/241559210f98ef11b6bd6413f2d29da7ef67c7865b72053192f0d164fab9e0d3bd47913b3351d5de6433a8aff2d8424d4b8bd668df420bf4dda7ae9fcd37b942 + checksum: 10/5ef5d0977906046400cee9a359f18c87eafb3e3193a33a22351cc84740c0dffb3cff7b9f2320d1e200817dbf24e63b747a0546b6c671a9fd95937e2402682ad9 languageName: node linkType: hard From bc880a6eede3595fdcfbfc129492714d0e1d1f13 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jan 2026 16:04:35 +0000 Subject: [PATCH 078/107] chore(deps): update dependency @rspack/dev-server to v1.2.1 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 78 ++++++++++++++++++++----------------------------------- 1 file changed, 28 insertions(+), 50 deletions(-) diff --git a/yarn.lock b/yarn.lock index a221c0a71a..7b2c5703e7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17173,17 +17173,40 @@ __metadata: linkType: hard "@rspack/dev-server@npm:^1.1.4": - version: 1.1.5 - resolution: "@rspack/dev-server@npm:1.1.5" + version: 1.2.1 + resolution: "@rspack/dev-server@npm:1.2.1" dependencies: + "@types/bonjour": "npm:^3.5.13" + "@types/connect-history-api-fallback": "npm:^1.5.4" + "@types/express": "npm:^4.17.25" + "@types/express-serve-static-core": "npm:^4.17.21" + "@types/serve-index": "npm:^1.9.4" + "@types/serve-static": "npm:^1.15.5" + "@types/sockjs": "npm:^0.3.36" + "@types/ws": "npm:^8.5.10" + ansi-html-community: "npm:^0.0.8" + bonjour-service: "npm:^1.2.1" chokidar: "npm:^3.6.0" + colorette: "npm:^2.0.10" + compression: "npm:^1.8.1" + connect-history-api-fallback: "npm:^2.0.0" + express: "npm:^4.22.1" + graceful-fs: "npm:^4.2.6" http-proxy-middleware: "npm:^2.0.9" + ipaddr.js: "npm:^2.1.0" + launch-editor: "npm:^2.6.1" + open: "npm:^10.0.3" p-retry: "npm:^6.2.0" - webpack-dev-server: "npm:5.2.2" + schema-utils: "npm:^4.2.0" + selfsigned: "npm:^2.4.1" + serve-index: "npm:^1.9.1" + sockjs: "npm:^0.3.24" + spdy: "npm:^4.0.2" + webpack-dev-middleware: "npm:^7.4.2" ws: "npm:^8.18.0" peerDependencies: "@rspack/core": "*" - checksum: 10/67a747d998f9a2449cb1c6c5791ffc812c9d99a7219595359ce960063f344fde9f8f2000bbc9633dc490082f69b74a20b8f319697bd19beca65bd108f5dff5e5 + checksum: 10/154808faef8079dc1d6eae1712455864cc7bc1ec686f3020f7117ad3e5f2906940f27ec514eb40230276132371570ecdf6b47f7ab117ad209462bcba7c2b0692 languageName: node linkType: hard @@ -31051,7 +31074,7 @@ __metadata: languageName: node linkType: hard -"express@npm:^4.14.0, express@npm:^4.21.0, express@npm:^4.21.2, express@npm:^4.22.0, express@npm:^4.22.1": +"express@npm:^4.14.0, express@npm:^4.21.0, express@npm:^4.22.0, express@npm:^4.22.1": version: 4.22.1 resolution: "express@npm:4.22.1" dependencies: @@ -50403,51 +50426,6 @@ __metadata: languageName: node linkType: hard -"webpack-dev-server@npm:5.2.2": - version: 5.2.2 - resolution: "webpack-dev-server@npm:5.2.2" - dependencies: - "@types/bonjour": "npm:^3.5.13" - "@types/connect-history-api-fallback": "npm:^1.5.4" - "@types/express": "npm:^4.17.21" - "@types/express-serve-static-core": "npm:^4.17.21" - "@types/serve-index": "npm:^1.9.4" - "@types/serve-static": "npm:^1.15.5" - "@types/sockjs": "npm:^0.3.36" - "@types/ws": "npm:^8.5.10" - ansi-html-community: "npm:^0.0.8" - bonjour-service: "npm:^1.2.1" - chokidar: "npm:^3.6.0" - colorette: "npm:^2.0.10" - compression: "npm:^1.7.4" - connect-history-api-fallback: "npm:^2.0.0" - express: "npm:^4.21.2" - graceful-fs: "npm:^4.2.6" - http-proxy-middleware: "npm:^2.0.9" - ipaddr.js: "npm:^2.1.0" - launch-editor: "npm:^2.6.1" - open: "npm:^10.0.3" - p-retry: "npm:^6.2.0" - schema-utils: "npm:^4.2.0" - selfsigned: "npm:^2.4.1" - serve-index: "npm:^1.9.1" - sockjs: "npm:^0.3.24" - spdy: "npm:^4.0.2" - webpack-dev-middleware: "npm:^7.4.2" - ws: "npm:^8.18.0" - peerDependencies: - webpack: ^5.0.0 - peerDependenciesMeta: - webpack: - optional: true - webpack-cli: - optional: true - bin: - webpack-dev-server: bin/webpack-dev-server.js - checksum: 10/59517409cd38c01a875a03b9658f3d20d492b5b8bead9ded4a0f3d33e6857daf2d352fe89f0181dcaea6d0fbe84b0494cb4750a87120fe81cdbb3c32b499451c - languageName: node - linkType: hard - "webpack-dev-server@npm:^5.0.0": version: 5.2.3 resolution: "webpack-dev-server@npm:5.2.3" From 580de5ade2322fc665bd2c6e73051065c48f6d2c Mon Sep 17 00:00:00 2001 From: Aramis Sennyey <159921952+aramissennyeydd@users.noreply.github.com> Date: Fri, 30 Jan 2026 11:46:18 -0500 Subject: [PATCH 079/107] docs: fix overlapping generated pages (#32603) Signed-off-by: aramissennyeydd --- microsite/sidebars.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/microsite/sidebars.ts b/microsite/sidebars.ts index 1758e5a7a1..b5955702a9 100644 --- a/microsite/sidebars.ts +++ b/microsite/sidebars.ts @@ -467,6 +467,7 @@ export default { { label: 'Architecture', description: 'Architecture of the backend system.', + differentiator: 'backend-system/', }, [ 'backend-system/architecture/index', @@ -546,6 +547,7 @@ export default { { label: 'Architecture', description: 'Architecture of the new frontend system.', + differentiator: 'frontend-system/', }, [ 'frontend-system/architecture/index', From ef3af4f55596945351cb732c66389c3619eed387 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jan 2026 17:14:52 +0000 Subject: [PATCH 080/107] chore(deps): update dependency express-session to v1.19.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/yarn.lock b/yarn.lock index a221c0a71a..97c448d9d1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -27566,13 +27566,6 @@ __metadata: languageName: node linkType: hard -"cookie-signature@npm:1.0.7, cookie-signature@npm:~1.0.6": - version: 1.0.7 - resolution: "cookie-signature@npm:1.0.7" - checksum: 10/1a62808cd30d15fb43b70e19829b64d04b0802d8ef00275b57d152de4ae6a3208ca05c197b6668d104c4d9de389e53ccc2d3bc6bcaaffd9602461417d8c40710 - languageName: node - linkType: hard - "cookie-signature@npm:^1.2.1, cookie-signature@npm:^1.2.2": version: 1.2.2 resolution: "cookie-signature@npm:1.2.2" @@ -27580,7 +27573,14 @@ __metadata: languageName: node linkType: hard -"cookie@npm:0.7.2, cookie@npm:^0.7.0, cookie@npm:^0.7.1, cookie@npm:^0.7.2, cookie@npm:~0.7.1": +"cookie-signature@npm:~1.0.6, cookie-signature@npm:~1.0.7": + version: 1.0.7 + resolution: "cookie-signature@npm:1.0.7" + checksum: 10/1a62808cd30d15fb43b70e19829b64d04b0802d8ef00275b57d152de4ae6a3208ca05c197b6668d104c4d9de389e53ccc2d3bc6bcaaffd9602461417d8c40710 + languageName: node + linkType: hard + +"cookie@npm:0.7.2, cookie@npm:^0.7.0, cookie@npm:^0.7.1, cookie@npm:^0.7.2, cookie@npm:~0.7.1, cookie@npm:~0.7.2": version: 0.7.2 resolution: "cookie@npm:0.7.2" checksum: 10/24b286c556420d4ba4e9bc09120c9d3db7d28ace2bd0f8ccee82422ce42322f73c8312441271e5eefafbead725980e5996cc02766dbb89a90ac7f5636ede608f @@ -28464,7 +28464,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:2.6.9, debug@npm:^2.6.0": +"debug@npm:2.6.9, debug@npm:^2.6.0, debug@npm:~2.6.9": version: 2.6.9 resolution: "debug@npm:2.6.9" dependencies: @@ -31036,18 +31036,18 @@ __metadata: linkType: hard "express-session@npm:^1.17.1, express-session@npm:^1.17.3": - version: 1.18.2 - resolution: "express-session@npm:1.18.2" + version: 1.19.0 + resolution: "express-session@npm:1.19.0" dependencies: - cookie: "npm:0.7.2" - cookie-signature: "npm:1.0.7" - debug: "npm:2.6.9" + cookie: "npm:~0.7.2" + cookie-signature: "npm:~1.0.7" + debug: "npm:~2.6.9" depd: "npm:~2.0.0" on-headers: "npm:~1.1.0" parseurl: "npm:~1.3.3" - safe-buffer: "npm:5.2.1" + safe-buffer: "npm:~5.2.1" uid-safe: "npm:~2.1.5" - checksum: 10/1a89a4d3e579e1d2a729dc604c254c3e942b24a279681371c2d8042b1080f9e6de4ca787a091ec1a9178c9f2cc5c19bcb9f3929632d44db8972263e26c2cc4b8 + checksum: 10/5f36b51d344ec40adb5b9cd8a915fd694cdaf64832632411d4f6e6de8e9a83d873a20389e9c3cce966fece76a18c0384c5f2763b3ac089f801e8d6e92cb543e6 languageName: node linkType: hard @@ -45655,7 +45655,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0, safe-buffer@npm:~5.2.1": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10/32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451 From 110fec026b6176b45446cd6a2d8a0e60918edd56 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Fri, 30 Jan 2026 17:49:06 +0000 Subject: [PATCH 081/107] Improve Link component styles Signed-off-by: Charles de Dreuille --- .changeset/wicked-walls-accept.md | 49 + .../src/app/components/link/components.tsx | 40 +- docs-ui/src/app/components/link/page.mdx | 11 +- .../app/components/link/props-definition.tsx | 6 + docs-ui/src/app/components/link/snippets.ts | 8 +- docs-ui/src/css/theme-backstage.css | 7189 +---------------- docs-ui/src/css/theme-spotify.css | 244 +- packages/ui/css/styles.css | 24 +- packages/ui/report.api.md | 5 +- .../ui/src/components/Alert/Alert.module.css | 8 +- .../ui/src/components/Link/Link.module.css | 23 +- .../ui/src/components/Link/Link.stories.tsx | 49 +- packages/ui/src/components/Link/Link.tsx | 1 + packages/ui/src/components/Link/definition.ts | 1 + packages/ui/src/components/Link/types.ts | 1 + packages/ui/src/css/tokens.css | 29 +- packages/ui/src/types.ts | 2 +- 17 files changed, 200 insertions(+), 7490 deletions(-) create mode 100644 .changeset/wicked-walls-accept.md diff --git a/.changeset/wicked-walls-accept.md b/.changeset/wicked-walls-accept.md new file mode 100644 index 0000000000..6e8c9cf96d --- /dev/null +++ b/.changeset/wicked-walls-accept.md @@ -0,0 +1,49 @@ +--- +'@backstage/ui': minor +--- + +Added new status foreground tokens and improved Link component styling + +**New Status Tokens:** + +Added dedicated tokens for status colors that distinguish between usage on status backgrounds vs. standalone usage: + +- `--bui-fg-danger-on-bg` / `--bui-fg-danger` +- `--bui-fg-warning-on-bg` / `--bui-fg-warning` +- `--bui-fg-success-on-bg` / `--bui-fg-success` +- `--bui-fg-info-on-bg` / `--bui-fg-info` + +The `-on-bg` variants are designed for text on colored backgrounds, while the base variants are for standalone status indicators with improved visibility and contrast. + +**Migration:** + +If you're using status foreground colors on colored backgrounds, update to the new `-on-bg` tokens: + +```diff +.error-badge { +- color: var(--bui-fg-danger); ++ color: var(--bui-fg-danger-on-bg); + background: var(--bui-bg-danger); +} +``` + +For standalone status indicators (icons, badges, text), continue using the base tokens which now have updated values for better visibility. + +**Link Component Updates:** + +1. **New `standalone` prop**: Links now have a `standalone` variant that removes the default underline (shows only on hover) +2. **New `info` color**: Added support for `color="info"` +3. **Improved default underline styling**: Links now show underlines by default with refined styling using `color-mix` for better visual hierarchy + +```tsx +// Default link - shows underline by default +Sign up + +// Standalone link - underline only on hover +Sign up + +// Info color link +Learn more +``` + +**Affected components:** Link diff --git a/docs-ui/src/app/components/link/components.tsx b/docs-ui/src/app/components/link/components.tsx index ac4bd05801..320dd52517 100644 --- a/docs-ui/src/app/components/link/components.tsx +++ b/docs-ui/src/app/components/link/components.tsx @@ -7,7 +7,9 @@ import { MemoryRouter } from 'react-router-dom'; export const Default = () => { return ( - Sign up for Backstage + + Sign up for Backstage + ); }; @@ -15,7 +17,7 @@ export const Default = () => { export const ExternalLink = () => { return ( - + Sign up for Backstage @@ -58,22 +60,25 @@ export const AllVariants = () => { export const AllColors = () => { return ( - - + + Primary - + Secondary - + Danger - + Warning - + Success + + Info + ); @@ -83,13 +88,28 @@ export const Weight = () => { return ( - + Regular - + Bold ); }; + +export const Standalone = () => { + return ( + + + + Default link + + + Standalone link + + + + ); +}; diff --git a/docs-ui/src/app/components/link/page.mdx b/docs-ui/src/app/components/link/page.mdx index 13710ee259..a7e425a253 100644 --- a/docs-ui/src/app/components/link/page.mdx +++ b/docs-ui/src/app/components/link/page.mdx @@ -10,6 +10,7 @@ import { allVariantsSnippet, allColorsSnippet, weightSnippet, + standaloneSnippet, } from './snippets'; import { Default, @@ -17,6 +18,7 @@ import { AllVariants, AllColors, Weight, + Standalone, } from './components'; import { PageTitle } from '@/components/PageTitle'; import { Theming } from '@/components/Theming'; @@ -55,6 +57,7 @@ Use `target="_blank"` to open links in a new tab. py={4} preview={} code={externalLinkSnippet} + layout="side-by-side" /> ### Variants @@ -79,7 +82,13 @@ Status colors for contextual links. ### Weight -} code={weightSnippet} /> +} code={weightSnippet} layout="side-by-side" /> + +### Standalone + +Use `standalone` to remove the underline by default. The underline will appear on hover. + +} code={standaloneSnippet} layout="side-by-side" /> diff --git a/docs-ui/src/app/components/link/props-definition.tsx b/docs-ui/src/app/components/link/props-definition.tsx index 7d3b762a24..f0aa95114e 100644 --- a/docs-ui/src/app/components/link/props-definition.tsx +++ b/docs-ui/src/app/components/link/props-definition.tsx @@ -66,6 +66,12 @@ export const linkPropDefs: Record = { type: 'boolean', description: 'Truncates text with ellipsis when it overflows its container.', + default: 'false', + }, + standalone: { + type: 'boolean', + description: 'Removes underline by default. Underline appears on hover.', + default: 'false', }, ...childrenPropDefs, ...classNamePropDefs, diff --git a/docs-ui/src/app/components/link/snippets.ts b/docs-ui/src/app/components/link/snippets.ts index 234b3fe983..386ad9f1a0 100644 --- a/docs-ui/src/app/components/link/snippets.ts +++ b/docs-ui/src/app/components/link/snippets.ts @@ -4,7 +4,7 @@ export const linkUsageSnippet = `import { Link } from '@backstage/ui'; export const defaultSnippet = `Sign up for Backstage`; -export const externalLinkSnippet = ` +export const externalLinkSnippet = ` Sign up for Backstage `; @@ -25,9 +25,15 @@ export const allColorsSnippet = ` Danger Warning Success + Info `; export const weightSnippet = ` Regular Bold `; + +export const standaloneSnippet = ` + Default link + Standalone link +`; diff --git a/docs-ui/src/css/theme-backstage.css b/docs-ui/src/css/theme-backstage.css index f3bf8bf83a..ad4d2cefb5 100644 --- a/docs-ui/src/css/theme-backstage.css +++ b/docs-ui/src/css/theme-backstage.css @@ -1,7188 +1 @@ -@layer tokens { - :root { - --bui-font-regular: system-ui; - --bui-font-monospace: ui-monospace, 'Menlo', 'Monaco', 'Consolas', - 'Liberation Mono', 'Courier New', monospace; - --bui-font-weight-regular: 400; - --bui-font-weight-bold: 600; - --bui-font-size-1: 0.625rem; - --bui-font-size-2: 0.75rem; - --bui-font-size-3: 0.875rem; - --bui-font-size-4: 1rem; - --bui-font-size-5: 1.25rem; - --bui-font-size-6: 1.5rem; - --bui-font-size-7: 2rem; - --bui-font-size-8: 3rem; - --bui-font-size-9: 4rem; - --bui-font-size-10: 5.75rem; - --bui-space: 0.25rem; - --bui-space-0_5: calc(var(--bui-space) * 0.5); - --bui-space-1: var(--bui-space); - --bui-space-1_5: calc(var(--bui-space) * 1.5); - --bui-space-2: calc(var(--bui-space) * 2); - --bui-space-3: calc(var(--bui-space) * 3); - --bui-space-4: calc(var(--bui-space) * 4); - --bui-space-5: calc(var(--bui-space) * 5); - --bui-space-6: calc(var(--bui-space) * 6); - --bui-space-7: calc(var(--bui-space) * 7); - --bui-space-8: calc(var(--bui-space) * 8); - --bui-space-9: calc(var(--bui-space) * 9); - --bui-space-10: calc(var(--bui-space) * 10); - --bui-space-11: calc(var(--bui-space) * 11); - --bui-space-12: calc(var(--bui-space) * 12); - --bui-space-13: calc(var(--bui-space) * 13); - --bui-space-14: calc(var(--bui-space) * 14); - --bui-radius-1: calc(0.125rem); - --bui-radius-2: calc(0.25rem); - --bui-radius-3: calc(0.5rem); - --bui-radius-4: calc(0.75rem); - --bui-radius-5: calc(1rem); - --bui-radius-6: calc(1.25rem); - --bui-radius-full: 9999px; - --bui-black: #000; - --bui-white: #fff; - --bui-gray-1: #f8f8f8; - --bui-gray-2: #ececec; - --bui-gray-3: #d9d9d9; - --bui-gray-4: #c1c1c1; - --bui-gray-5: #9e9e9e; - --bui-gray-6: #8c8c8c; - --bui-gray-7: #757575; - --bui-gray-8: #595959; - --bui-bg-surface-0: var(--bui-gray-1); - --bui-bg-surface-1: var(--bui-white); - --bui-bg-surface-2: var(--bui-gray-1); - --bui-bg-surface-3: var(--bui-gray-2); - --bui-bg-solid: #1f5493; - --bui-bg-solid-hover: #163a66; - --bui-bg-solid-pressed: #0f2b4e; - --bui-bg-solid-disabled: #163a66; - --bui-bg-neutral-on-surface-0: oklch(0% 0 0/0.06); - --bui-bg-neutral-on-surface-0-hover: oklch(0% 0 0/0.12); - --bui-bg-neutral-on-surface-0-pressed: oklch(0% 0 0/0.16); - --bui-bg-neutral-on-surface-0-disabled: oklch(0% 0 0/0.06); - --bui-bg-neutral-on-surface-1: oklch(0% 0 0/0.06); - --bui-bg-neutral-on-surface-1-hover: oklch(0% 0 0/0.12); - --bui-bg-neutral-on-surface-1-pressed: oklch(0% 0 0/0.16); - --bui-bg-neutral-on-surface-1-disabled: oklch(0% 0 0/0.06); - --bui-bg-neutral-on-surface-2: oklch(0% 0 0/0.06); - --bui-bg-neutral-on-surface-2-hover: oklch(0% 0 0/0.12); - --bui-bg-neutral-on-surface-2-pressed: oklch(0% 0 0/0.16); - --bui-bg-neutral-on-surface-2-disabled: oklch(0% 0 0/0.06); - --bui-bg-neutral-on-surface-3: oklch(0% 0 0/0.06); - --bui-bg-neutral-on-surface-3-hover: oklch(0% 0 0/0.12); - --bui-bg-neutral-on-surface-3-pressed: oklch(0% 0 0/0.16); - --bui-bg-neutral-on-surface-3-disabled: oklch(0% 0 0/0.06); - --bui-bg-danger: #ffe2e2; - --bui-bg-warning: #ffedd5; - --bui-bg-success: #dcfce7; - --bui-bg-info: #dbeafe; - --bui-fg-primary: var(--bui-black); - --bui-fg-secondary: var(--bui-gray-7); - --bui-fg-link: #1f5493; - --bui-fg-link-hover: #1f2d5c; - --bui-fg-disabled: #9e9e9e; - --bui-fg-solid: var(--bui-white); - --bui-fg-solid-disabled: #98a8bc; - --bui-fg-tint: #1f5493; - --bui-fg-tint-disabled: var(--bui-gray-5); - --bui-fg-danger: #991919; - --bui-fg-warning: #92310a; - --bui-fg-success: #116932; - --bui-fg-info: #173da6; - --bui-border: #0000001a; - --bui-border-hover: #0003; - --bui-border-pressed: #0006; - --bui-border-disabled: #0000001a; - --bui-border-info: #7ea9d6; - --bui-border-danger: #f87a7a; - --bui-border-warning: #e36d05; - --bui-border-success: #53db83; - --bui-ring: #1f5493; - --bui-scrollbar: #a0a0a03b; - --bui-scrollbar-thumb: #a0a0a0; - --bui-shadow: 0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a; - --bui-animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; - } - [data-theme-mode='dark'] { - --bui-gray-1: #191919; - --bui-gray-2: #242424; - --bui-gray-3: #373737; - --bui-gray-4: #464646; - --bui-gray-5: #575757; - --bui-gray-6: #7b7b7b; - --bui-gray-7: #9e9e9e; - --bui-gray-8: #b4b4b4; - --bui-bg-surface-0: #333; - --bui-bg-surface-1: var(--bui-gray-1); - --bui-bg-surface-2: var(--bui-gray-2); - --bui-bg-surface-3: var(--bui-gray-3); - --bui-bg-solid: #9cc9ff; - --bui-bg-solid-hover: #83b9fd; - --bui-bg-solid-pressed: #83b9fd; - --bui-bg-solid-disabled: #1b3d68; - --bui-bg-neutral-on-surface-0: oklch(100% 0 0/0.1); - --bui-bg-neutral-on-surface-0-hover: oklch(100% 0 0/0.14); - --bui-bg-neutral-on-surface-0-pressed: oklch(100% 0 0/0.2); - --bui-bg-neutral-on-surface-0-disabled: oklch(100% 0 0/0.1); - --bui-bg-neutral-on-surface-1: oklch(100% 0 0/0.06); - --bui-bg-neutral-on-surface-1-hover: oklch(100% 0 0/0.1); - --bui-bg-neutral-on-surface-1-pressed: oklch(100% 0 0/0.16); - --bui-bg-neutral-on-surface-1-disabled: oklch(100% 0 0/0.06); - --bui-bg-neutral-on-surface-2: oklch(100% 0 0/0.08); - --bui-bg-neutral-on-surface-2-hover: oklch(100% 0 0/0.12); - --bui-bg-neutral-on-surface-2-pressed: oklch(100% 0 0/0.2); - --bui-bg-neutral-on-surface-2-disabled: oklch(100% 0 0/0.08); - --bui-bg-neutral-on-surface-3: oklch(100% 0 0/0.08); - --bui-bg-neutral-on-surface-3-hover: oklch(100% 0 0/0.12); - --bui-bg-neutral-on-surface-3-pressed: oklch(100% 0 0/0.2); - --bui-bg-neutral-on-surface-3-disabled: oklch(100% 0 0/0.08); - --bui-bg-danger: #300c0c; - --bui-bg-warning: #302008; - --bui-bg-success: #042713; - --bui-bg-info: #132049; - --bui-fg-primary: var(--bui-white); - --bui-fg-secondary: var(--bui-gray-7); - --bui-fg-link: #9cc9ff; - --bui-fg-link-hover: #7eb5f7; - --bui-fg-disabled: var(--bui-gray-7); - --bui-fg-solid: #101821; - --bui-fg-solid-disabled: #6191cc; - --bui-fg-tint: #9cc9ff; - --bui-fg-tint-disabled: var(--bui-gray-5); - --bui-fg-danger: #fca5a5; - --bui-fg-warning: #fdba74; - --bui-fg-success: #86efac; - --bui-fg-info: #a3cfff; - --bui-border: #ffffff1f; - --bui-border-hover: #fff6; - --bui-border-pressed: #ffffff80; - --bui-border-disabled: #fff3; - --bui-border-info: #7ea9d6; - --bui-border-danger: #f87a7a; - --bui-border-warning: #e36d05; - --bui-border-success: #53db83; - --bui-ring: #1f5493; - --bui-scrollbar: #3636363a; - --bui-scrollbar-thumb: #575757; - --bui-shadow: none; - } -} -@layer base { - *, - :before, - :after { - box-sizing: border-box; - } - html { - -webkit-text-size-adjust: 100%; - tab-size: 4; - font-family: system-ui, Segoe UI, Roboto, Helvetica, Arial, sans-serif, - Apple Color Emoji, Segoe UI Emoji; - line-height: 1.15; - } - body { - margin: 0; - } - b, - strong { - font-weight: bolder; - } - code, - kbd, - samp, - pre { - font-family: ui-monospace, SFMono-Regular, Consolas, Liberation Mono, Menlo, - monospace; - font-size: 1em; - } - small { - font-size: 80%; - } - sub, - sup { - vertical-align: baseline; - font-size: 75%; - line-height: 0; - position: relative; - } - sub { - bottom: -0.25em; - } - sup { - top: -0.5em; - } - table { - border-color: currentColor; - } - button, - input, - optgroup, - select, - textarea { - margin: 0; - font-family: inherit; - font-size: 100%; - line-height: 1.15; - } - button, - [type='button'], - [type='reset'], - [type='submit'] { - -webkit-appearance: button; - } - legend { - padding: 0; - } - progress { - vertical-align: baseline; - } - ::-webkit-inner-spin-button, - ::-webkit-outer-spin-button { - height: auto; - } - [type='search'] { - -webkit-appearance: textfield; - outline-offset: -2px; - } - ::-webkit-search-decoration { - -webkit-appearance: none; - } - ::-webkit-file-upload-button { - -webkit-appearance: button; - font: inherit; - } - summary { - display: list-item; - } - :where(a) { - color: inherit; - text-decoration: none; - } - @keyframes pulse { - 50% { - opacity: 0.5; - } - } - body { - background-color: var(--bui-bg-surface-0); - color: var(--bui-fg-primary); - font-family: var(--bui-font-regular); - font-weight: var(--bui-font-weight-regular); - font-size: var(--bui-font-size-3); - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } - [data-theme-mode='dark'] { - color-scheme: dark; - } - [data-theme-mode='light'] { - color-scheme: light; - } -} -@layer components; -@layer utilities { - .bui-p { - padding: var(--p); - } - .bui-p-0\.5 { - padding: var(--bui-space-0_5); - } - .bui-p-1 { - padding: var(--bui-space-1); - } - .bui-p-1\.5 { - padding: var(--bui-space-1_5); - } - .bui-p-2 { - padding: var(--bui-space-2); - } - .bui-p-3 { - padding: var(--bui-space-3); - } - .bui-p-4 { - padding: var(--bui-space-4); - } - .bui-p-5 { - padding: var(--bui-space-5); - } - .bui-p-6 { - padding: var(--bui-space-6); - } - .bui-p-7 { - padding: var(--bui-space-7); - } - .bui-p-8 { - padding: var(--bui-space-8); - } - .bui-p-9 { - padding: var(--bui-space-9); - } - .bui-p-10 { - padding: var(--bui-space-10); - } - .bui-p-11 { - padding: var(--bui-space-11); - } - .bui-p-12 { - padding: var(--bui-space-12); - } - .bui-p-13 { - padding: var(--bui-space-13); - } - .bui-p-14 { - padding: var(--bui-space-14); - } - @media (width>=640px) { - .xs\:bui-p { - padding: var(--p-xs); - } - .xs\:bui-p-0\.5 { - padding: var(--bui-space-0_5); - } - .xs\:bui-p-1 { - padding: var(--bui-space-1); - } - .xs\:bui-p-1\.5 { - padding: var(--bui-space-1_5); - } - .xs\:bui-p-2 { - padding: var(--bui-space-2); - } - .xs\:bui-p-3 { - padding: var(--bui-space-3); - } - .xs\:bui-p-4 { - padding: var(--bui-space-4); - } - .xs\:bui-p-5 { - padding: var(--bui-space-5); - } - .xs\:bui-p-6 { - padding: var(--bui-space-6); - } - .xs\:bui-p-7 { - padding: var(--bui-space-7); - } - .xs\:bui-p-8 { - padding: var(--bui-space-8); - } - .xs\:bui-p-9 { - padding: var(--bui-space-9); - } - .xs\:bui-p-10 { - padding: var(--bui-space-10); - } - .xs\:bui-p-11 { - padding: var(--bui-space-11); - } - .xs\:bui-p-12 { - padding: var(--bui-space-12); - } - .xs\:bui-p-13 { - padding: var(--bui-space-13); - } - .xs\:bui-p-14 { - padding: var(--bui-space-14); - } - } - @media (width>=768px) { - .sm\:bui-p { - padding: var(--p-sm); - } - .sm\:bui-p-0\.5 { - padding: var(--bui-space-0_5); - } - .sm\:bui-p-1 { - padding: var(--bui-space-1); - } - .sm\:bui-p-1\.5 { - padding: var(--bui-space-1_5); - } - .sm\:bui-p-2 { - padding: var(--bui-space-2); - } - .sm\:bui-p-3 { - padding: var(--bui-space-3); - } - .sm\:bui-p-4 { - padding: var(--bui-space-4); - } - .sm\:bui-p-5 { - padding: var(--bui-space-5); - } - .sm\:bui-p-6 { - padding: var(--bui-space-6); - } - .sm\:bui-p-7 { - padding: var(--bui-space-7); - } - .sm\:bui-p-8 { - padding: var(--bui-space-8); - } - .sm\:bui-p-9 { - padding: var(--bui-space-9); - } - .sm\:bui-p-10 { - padding: var(--bui-space-10); - } - .sm\:bui-p-11 { - padding: var(--bui-space-11); - } - .sm\:bui-p-12 { - padding: var(--bui-space-12); - } - .sm\:bui-p-13 { - padding: var(--bui-space-13); - } - .sm\:bui-p-14 { - padding: var(--bui-space-14); - } - } - @media (width>=1024px) { - .md\:bui-p { - padding: var(--p-md); - } - .md\:bui-p-0\.5 { - padding: var(--bui-space-0_5); - } - .md\:bui-p-1 { - padding: var(--bui-space-1); - } - .md\:bui-p-1\.5 { - padding: var(--bui-space-1_5); - } - .md\:bui-p-2 { - padding: var(--bui-space-2); - } - .md\:bui-p-3 { - padding: var(--bui-space-3); - } - .md\:bui-p-4 { - padding: var(--bui-space-4); - } - .md\:bui-p-5 { - padding: var(--bui-space-5); - } - .md\:bui-p-6 { - padding: var(--bui-space-6); - } - .md\:bui-p-7 { - padding: var(--bui-space-7); - } - .md\:bui-p-8 { - padding: var(--bui-space-8); - } - .md\:bui-p-9 { - padding: var(--bui-space-9); - } - .md\:bui-p-10 { - padding: var(--bui-space-10); - } - .md\:bui-p-11 { - padding: var(--bui-space-11); - } - .md\:bui-p-12 { - padding: var(--bui-space-12); - } - .md\:bui-p-13 { - padding: var(--bui-space-13); - } - .md\:bui-p-14 { - padding: var(--bui-space-14); - } - } - @media (width>=1280px) { - .lg\:bui-p { - padding: var(--p-lg); - } - .lg\:bui-p-0\.5 { - padding: var(--bui-space-0_5); - } - .lg\:bui-p-1 { - padding: var(--bui-space-1); - } - .lg\:bui-p-1\.5 { - padding: var(--bui-space-1_5); - } - .lg\:bui-p-2 { - padding: var(--bui-space-2); - } - .lg\:bui-p-3 { - padding: var(--bui-space-3); - } - .lg\:bui-p-4 { - padding: var(--bui-space-4); - } - .lg\:bui-p-5 { - padding: var(--bui-space-5); - } - .lg\:bui-p-6 { - padding: var(--bui-space-6); - } - .lg\:bui-p-7 { - padding: var(--bui-space-7); - } - .lg\:bui-p-8 { - padding: var(--bui-space-8); - } - .lg\:bui-p-9 { - padding: var(--bui-space-9); - } - .lg\:bui-p-10 { - padding: var(--bui-space-10); - } - .lg\:bui-p-11 { - padding: var(--bui-space-11); - } - .lg\:bui-p-12 { - padding: var(--bui-space-12); - } - .lg\:bui-p-13 { - padding: var(--bui-space-13); - } - .lg\:bui-p-14 { - padding: var(--bui-space-14); - } - } - @media (width>=1536px) { - .xl\:bui-p { - padding: var(--p-xl); - } - .xl\:bui-p-0\.5 { - padding: var(--bui-space-0_5); - } - .xl\:bui-p-1 { - padding: var(--bui-space-1); - } - .xl\:bui-p-1\.5 { - padding: var(--bui-space-1_5); - } - .xl\:bui-p-2 { - padding: var(--bui-space-2); - } - .xl\:bui-p-3 { - padding: var(--bui-space-3); - } - .xl\:bui-p-4 { - padding: var(--bui-space-4); - } - .xl\:bui-p-5 { - padding: var(--bui-space-5); - } - .xl\:bui-p-6 { - padding: var(--bui-space-6); - } - .xl\:bui-p-7 { - padding: var(--bui-space-7); - } - .xl\:bui-p-8 { - padding: var(--bui-space-8); - } - .xl\:bui-p-9 { - padding: var(--bui-space-9); - } - .xl\:bui-p-10 { - padding: var(--bui-space-10); - } - .xl\:bui-p-11 { - padding: var(--bui-space-11); - } - .xl\:bui-p-12 { - padding: var(--bui-space-12); - } - .xl\:bui-p-13 { - padding: var(--bui-space-13); - } - .xl\:bui-p-14 { - padding: var(--bui-space-14); - } - } - .bui-pl { - padding-left: var(--pl); - } - .bui-pl-0\.5 { - padding-left: var(--bui-space-0_5); - } - .bui-pl-1 { - padding-left: var(--bui-space-1); - } - .bui-pl-1\.5 { - padding-left: var(--bui-space-1_5); - } - .bui-pl-2 { - padding-left: var(--bui-space-2); - } - .bui-pl-3 { - padding-left: var(--bui-space-3); - } - .bui-pl-4 { - padding-left: var(--bui-space-4); - } - .bui-pl-5 { - padding-left: var(--bui-space-5); - } - .bui-pl-6 { - padding-left: var(--bui-space-6); - } - .bui-pl-7 { - padding-left: var(--bui-space-7); - } - .bui-pl-8 { - padding-left: var(--bui-space-8); - } - .bui-pl-9 { - padding-left: var(--bui-space-9); - } - .bui-pl-10 { - padding-left: var(--bui-space-10); - } - .bui-pl-11 { - padding-left: var(--bui-space-11); - } - .bui-pl-12 { - padding-left: var(--bui-space-12); - } - .bui-pl-13 { - padding-left: var(--bui-space-13); - } - .bui-pl-14 { - padding-left: var(--bui-space-14); - } - @media (width>=640px) { - .xs\:bui-pl { - padding-left: var(--pl-xs); - } - .xs\:bui-pl-0\.5 { - padding-left: var(--bui-space-0_5); - } - .xs\:bui-pl-1 { - padding-left: var(--bui-space-1); - } - .xs\:bui-pl-1\.5 { - padding-left: var(--bui-space-1_5); - } - .xs\:bui-pl-2 { - padding-left: var(--bui-space-2); - } - .xs\:bui-pl-3 { - padding-left: var(--bui-space-3); - } - .xs\:bui-pl-4 { - padding-left: var(--bui-space-4); - } - .xs\:bui-pl-5 { - padding-left: var(--bui-space-5); - } - .xs\:bui-pl-6 { - padding-left: var(--bui-space-6); - } - .xs\:bui-pl-7 { - padding-left: var(--bui-space-7); - } - .xs\:bui-pl-8 { - padding-left: var(--bui-space-8); - } - .xs\:bui-pl-9 { - padding-left: var(--bui-space-9); - } - .xs\:bui-pl-10 { - padding-left: var(--bui-space-10); - } - .xs\:bui-pl-11 { - padding-left: var(--bui-space-11); - } - .xs\:bui-pl-12 { - padding-left: var(--bui-space-12); - } - .xs\:bui-pl-13 { - padding-left: var(--bui-space-13); - } - .xs\:bui-pl-14 { - padding-left: var(--bui-space-14); - } - } - @media (width>=768px) { - .sm\:bui-pl { - padding-left: var(--pl-sm); - } - .sm\:bui-pl-0\.5 { - padding-left: var(--bui-space-0_5); - } - .sm\:bui-pl-1 { - padding-left: var(--bui-space-1); - } - .sm\:bui-pl-1\.5 { - padding-left: var(--bui-space-1_5); - } - .sm\:bui-pl-2 { - padding-left: var(--bui-space-2); - } - .sm\:bui-pl-3 { - padding-left: var(--bui-space-3); - } - .sm\:bui-pl-4 { - padding-left: var(--bui-space-4); - } - .sm\:bui-pl-5 { - padding-left: var(--bui-space-5); - } - .sm\:bui-pl-6 { - padding-left: var(--bui-space-6); - } - .sm\:bui-pl-7 { - padding-left: var(--bui-space-7); - } - .sm\:bui-pl-8 { - padding-left: var(--bui-space-8); - } - .sm\:bui-pl-9 { - padding-left: var(--bui-space-9); - } - .sm\:bui-pl-10 { - padding-left: var(--bui-space-10); - } - .sm\:bui-pl-11 { - padding-left: var(--bui-space-11); - } - .sm\:bui-pl-12 { - padding-left: var(--bui-space-12); - } - .sm\:bui-pl-13 { - padding-left: var(--bui-space-13); - } - .sm\:bui-pl-14 { - padding-left: var(--bui-space-14); - } - } - @media (width>=1024px) { - .md\:bui-pl { - padding-left: var(--pl-md); - } - .md\:bui-pl-0\.5 { - padding-left: var(--bui-space-0_5); - } - .md\:bui-pl-1 { - padding-left: var(--bui-space-1); - } - .md\:bui-pl-1\.5 { - padding-left: var(--bui-space-1_5); - } - .md\:bui-pl-2 { - padding-left: var(--bui-space-2); - } - .md\:bui-pl-3 { - padding-left: var(--bui-space-3); - } - .md\:bui-pl-4 { - padding-left: var(--bui-space-4); - } - .md\:bui-pl-5 { - padding-left: var(--bui-space-5); - } - .md\:bui-pl-6 { - padding-left: var(--bui-space-6); - } - .md\:bui-pl-7 { - padding-left: var(--bui-space-7); - } - .md\:bui-pl-8 { - padding-left: var(--bui-space-8); - } - .md\:bui-pl-9 { - padding-left: var(--bui-space-9); - } - .md\:bui-pl-10 { - padding-left: var(--bui-space-10); - } - .md\:bui-pl-11 { - padding-left: var(--bui-space-11); - } - .md\:bui-pl-12 { - padding-left: var(--bui-space-12); - } - .md\:bui-pl-13 { - padding-left: var(--bui-space-13); - } - .md\:bui-pl-14 { - padding-left: var(--bui-space-14); - } - } - @media (width>=1280px) { - .lg\:bui-pl { - padding-left: var(--pl-lg); - } - .lg\:bui-pl-0\.5 { - padding-left: var(--bui-space-0_5); - } - .lg\:bui-pl-1 { - padding-left: var(--bui-space-1); - } - .lg\:bui-pl-1\.5 { - padding-left: var(--bui-space-1_5); - } - .lg\:bui-pl-2 { - padding-left: var(--bui-space-2); - } - .lg\:bui-pl-3 { - padding-left: var(--bui-space-3); - } - .lg\:bui-pl-4 { - padding-left: var(--bui-space-4); - } - .lg\:bui-pl-5 { - padding-left: var(--bui-space-5); - } - .lg\:bui-pl-6 { - padding-left: var(--bui-space-6); - } - .lg\:bui-pl-7 { - padding-left: var(--bui-space-7); - } - .lg\:bui-pl-8 { - padding-left: var(--bui-space-8); - } - .lg\:bui-pl-9 { - padding-left: var(--bui-space-9); - } - .lg\:bui-pl-10 { - padding-left: var(--bui-space-10); - } - .lg\:bui-pl-11 { - padding-left: var(--bui-space-11); - } - .lg\:bui-pl-12 { - padding-left: var(--bui-space-12); - } - .lg\:bui-pl-13 { - padding-left: var(--bui-space-13); - } - .lg\:bui-pl-14 { - padding-left: var(--bui-space-14); - } - } - @media (width>=1536px) { - .xl\:bui-pl { - padding-left: var(--pl-xl); - } - .xl\:bui-pl-0\.5 { - padding-left: var(--bui-space-0_5); - } - .xl\:bui-pl-1 { - padding-left: var(--bui-space-1); - } - .xl\:bui-pl-1\.5 { - padding-left: var(--bui-space-1_5); - } - .xl\:bui-pl-2 { - padding-left: var(--bui-space-2); - } - .xl\:bui-pl-3 { - padding-left: var(--bui-space-3); - } - .xl\:bui-pl-4 { - padding-left: var(--bui-space-4); - } - .xl\:bui-pl-5 { - padding-left: var(--bui-space-5); - } - .xl\:bui-pl-6 { - padding-left: var(--bui-space-6); - } - .xl\:bui-pl-7 { - padding-left: var(--bui-space-7); - } - .xl\:bui-pl-8 { - padding-left: var(--bui-space-8); - } - .xl\:bui-pl-9 { - padding-left: var(--bui-space-9); - } - .xl\:bui-pl-10 { - padding-left: var(--bui-space-10); - } - .xl\:bui-pl-11 { - padding-left: var(--bui-space-11); - } - .xl\:bui-pl-12 { - padding-left: var(--bui-space-12); - } - .xl\:bui-pl-13 { - padding-left: var(--bui-space-13); - } - .xl\:bui-pl-14 { - padding-left: var(--bui-space-14); - } - } - .bui-pr { - padding-right: var(--pr); - } - .bui-pr-0\.5 { - padding-right: var(--bui-space-0_5); - } - .bui-pr-1 { - padding-right: var(--bui-space-1); - } - .bui-pr-1\.5 { - padding-right: var(--bui-space-1_5); - } - .bui-pr-2 { - padding-right: var(--bui-space-2); - } - .bui-pr-3 { - padding-right: var(--bui-space-3); - } - .bui-pr-4 { - padding-right: var(--bui-space-4); - } - .bui-pr-5 { - padding-right: var(--bui-space-5); - } - .bui-pr-6 { - padding-right: var(--bui-space-6); - } - .bui-pr-7 { - padding-right: var(--bui-space-7); - } - .bui-pr-8 { - padding-right: var(--bui-space-8); - } - .bui-pr-9 { - padding-right: var(--bui-space-9); - } - .bui-pr-10 { - padding-right: var(--bui-space-10); - } - .bui-pr-11 { - padding-right: var(--bui-space-11); - } - .bui-pr-12 { - padding-right: var(--bui-space-12); - } - .bui-pr-13 { - padding-right: var(--bui-space-13); - } - .bui-pr-14 { - padding-right: var(--bui-space-14); - } - @media (width>=640px) { - .xs\:bui-pr { - padding-right: var(--pr-xs); - } - .xs\:bui-pr-0\.5 { - padding-right: var(--bui-space-0_5); - } - .xs\:bui-pr-1 { - padding-right: var(--bui-space-1); - } - .xs\:bui-pr-1\.5 { - padding-right: var(--bui-space-1_5); - } - .xs\:bui-pr-2 { - padding-right: var(--bui-space-2); - } - .xs\:bui-pr-3 { - padding-right: var(--bui-space-3); - } - .xs\:bui-pr-4 { - padding-right: var(--bui-space-4); - } - .xs\:bui-pr-5 { - padding-right: var(--bui-space-5); - } - .xs\:bui-pr-6 { - padding-right: var(--bui-space-6); - } - .xs\:bui-pr-7 { - padding-right: var(--bui-space-7); - } - .xs\:bui-pr-8 { - padding-right: var(--bui-space-8); - } - .xs\:bui-pr-9 { - padding-right: var(--bui-space-9); - } - .xs\:bui-pr-10 { - padding-right: var(--bui-space-10); - } - .xs\:bui-pr-11 { - padding-right: var(--bui-space-11); - } - .xs\:bui-pr-12 { - padding-right: var(--bui-space-12); - } - .xs\:bui-pr-13 { - padding-right: var(--bui-space-13); - } - .xs\:bui-pr-14 { - padding-right: var(--bui-space-14); - } - } - @media (width>=768px) { - .sm\:bui-pr { - padding-right: var(--pr-sm); - } - .sm\:bui-pr-0\.5 { - padding-right: var(--bui-space-0_5); - } - .sm\:bui-pr-1 { - padding-right: var(--bui-space-1); - } - .sm\:bui-pr-1\.5 { - padding-right: var(--bui-space-1_5); - } - .sm\:bui-pr-2 { - padding-right: var(--bui-space-2); - } - .sm\:bui-pr-3 { - padding-right: var(--bui-space-3); - } - .sm\:bui-pr-4 { - padding-right: var(--bui-space-4); - } - .sm\:bui-pr-5 { - padding-right: var(--bui-space-5); - } - .sm\:bui-pr-6 { - padding-right: var(--bui-space-6); - } - .sm\:bui-pr-7 { - padding-right: var(--bui-space-7); - } - .sm\:bui-pr-8 { - padding-right: var(--bui-space-8); - } - .sm\:bui-pr-9 { - padding-right: var(--bui-space-9); - } - .sm\:bui-pr-10 { - padding-right: var(--bui-space-10); - } - .sm\:bui-pr-11 { - padding-right: var(--bui-space-11); - } - .sm\:bui-pr-12 { - padding-right: var(--bui-space-12); - } - .sm\:bui-pr-13 { - padding-right: var(--bui-space-13); - } - .sm\:bui-pr-14 { - padding-right: var(--bui-space-14); - } - } - @media (width>=1024px) { - .md\:bui-pr { - padding-right: var(--pr-md); - } - .md\:bui-pr-0\.5 { - padding-right: var(--bui-space-0_5); - } - .md\:bui-pr-1 { - padding-right: var(--bui-space-1); - } - .md\:bui-pr-1\.5 { - padding-right: var(--bui-space-1_5); - } - .md\:bui-pr-2 { - padding-right: var(--bui-space-2); - } - .md\:bui-pr-3 { - padding-right: var(--bui-space-3); - } - .md\:bui-pr-4 { - padding-right: var(--bui-space-4); - } - .md\:bui-pr-5 { - padding-right: var(--bui-space-5); - } - .md\:bui-pr-6 { - padding-right: var(--bui-space-6); - } - .md\:bui-pr-7 { - padding-right: var(--bui-space-7); - } - .md\:bui-pr-8 { - padding-right: var(--bui-space-8); - } - .md\:bui-pr-9 { - padding-right: var(--bui-space-9); - } - .md\:bui-pr-10 { - padding-right: var(--bui-space-10); - } - .md\:bui-pr-11 { - padding-right: var(--bui-space-11); - } - .md\:bui-pr-12 { - padding-right: var(--bui-space-12); - } - .md\:bui-pr-13 { - padding-right: var(--bui-space-13); - } - .md\:bui-pr-14 { - padding-right: var(--bui-space-14); - } - } - @media (width>=1280px) { - .lg\:bui-pr { - padding-right: var(--pr-lg); - } - .lg\:bui-pr-0\.5 { - padding-right: var(--bui-space-0_5); - } - .lg\:bui-pr-1 { - padding-right: var(--bui-space-1); - } - .lg\:bui-pr-1\.5 { - padding-right: var(--bui-space-1_5); - } - .lg\:bui-pr-2 { - padding-right: var(--bui-space-2); - } - .lg\:bui-pr-3 { - padding-right: var(--bui-space-3); - } - .lg\:bui-pr-4 { - padding-right: var(--bui-space-4); - } - .lg\:bui-pr-5 { - padding-right: var(--bui-space-5); - } - .lg\:bui-pr-6 { - padding-right: var(--bui-space-6); - } - .lg\:bui-pr-7 { - padding-right: var(--bui-space-7); - } - .lg\:bui-pr-8 { - padding-right: var(--bui-space-8); - } - .lg\:bui-pr-9 { - padding-right: var(--bui-space-9); - } - .lg\:bui-pr-10 { - padding-right: var(--bui-space-10); - } - .lg\:bui-pr-11 { - padding-right: var(--bui-space-11); - } - .lg\:bui-pr-12 { - padding-right: var(--bui-space-12); - } - .lg\:bui-pr-13 { - padding-right: var(--bui-space-13); - } - .lg\:bui-pr-14 { - padding-right: var(--bui-space-14); - } - } - @media (width>=1536px) { - .xl\:bui-pr { - padding-right: var(--pr-xl); - } - .xl\:bui-pr-0\.5 { - padding-right: var(--bui-space-0_5); - } - .xl\:bui-pr-1 { - padding-right: var(--bui-space-1); - } - .xl\:bui-pr-1\.5 { - padding-right: var(--bui-space-1_5); - } - .xl\:bui-pr-2 { - padding-right: var(--bui-space-2); - } - .xl\:bui-pr-3 { - padding-right: var(--bui-space-3); - } - .xl\:bui-pr-4 { - padding-right: var(--bui-space-4); - } - .xl\:bui-pr-5 { - padding-right: var(--bui-space-5); - } - .xl\:bui-pr-6 { - padding-right: var(--bui-space-6); - } - .xl\:bui-pr-7 { - padding-right: var(--bui-space-7); - } - .xl\:bui-pr-8 { - padding-right: var(--bui-space-8); - } - .xl\:bui-pr-9 { - padding-right: var(--bui-space-9); - } - .xl\:bui-pr-10 { - padding-right: var(--bui-space-10); - } - .xl\:bui-pr-11 { - padding-right: var(--bui-space-11); - } - .xl\:bui-pr-12 { - padding-right: var(--bui-space-12); - } - .xl\:bui-pr-13 { - padding-right: var(--bui-space-13); - } - .xl\:bui-pr-14 { - padding-right: var(--bui-space-14); - } - } - .bui-pt { - padding-top: var(--pt); - } - .bui-pt-0\.5 { - padding-top: var(--bui-space-0_5); - } - .bui-pt-1 { - padding-top: var(--bui-space-1); - } - .bui-pt-1\.5 { - padding-top: var(--bui-space-1_5); - } - .bui-pt-2 { - padding-top: var(--bui-space-2); - } - .bui-pt-3 { - padding-top: var(--bui-space-3); - } - .bui-pt-4 { - padding-top: var(--bui-space-4); - } - .bui-pt-5 { - padding-top: var(--bui-space-5); - } - .bui-pt-6 { - padding-top: var(--bui-space-6); - } - .bui-pt-7 { - padding-top: var(--bui-space-7); - } - .bui-pt-8 { - padding-top: var(--bui-space-8); - } - .bui-pt-9 { - padding-top: var(--bui-space-9); - } - .bui-pt-10 { - padding-top: var(--bui-space-10); - } - .bui-pt-11 { - padding-top: var(--bui-space-11); - } - .bui-pt-12 { - padding-top: var(--bui-space-12); - } - .bui-pt-13 { - padding-top: var(--bui-space-13); - } - .bui-pt-14 { - padding-top: var(--bui-space-14); - } - @media (width>=640px) { - .xs\:bui-pt { - padding-top: var(--pt-xs); - } - .xs\:bui-pt-0\.5 { - padding-top: var(--bui-space-0_5); - } - .xs\:bui-pt-1 { - padding-top: var(--bui-space-1); - } - .xs\:bui-pt-1\.5 { - padding-top: var(--bui-space-1_5); - } - .xs\:bui-pt-2 { - padding-top: var(--bui-space-2); - } - .xs\:bui-pt-3 { - padding-top: var(--bui-space-3); - } - .xs\:bui-pt-4 { - padding-top: var(--bui-space-4); - } - .xs\:bui-pt-5 { - padding-top: var(--bui-space-5); - } - .xs\:bui-pt-6 { - padding-top: var(--bui-space-6); - } - .xs\:bui-pt-7 { - padding-top: var(--bui-space-7); - } - .xs\:bui-pt-8 { - padding-top: var(--bui-space-8); - } - .xs\:bui-pt-9 { - padding-top: var(--bui-space-9); - } - .xs\:bui-pt-10 { - padding-top: var(--bui-space-10); - } - .xs\:bui-pt-11 { - padding-top: var(--bui-space-11); - } - .xs\:bui-pt-12 { - padding-top: var(--bui-space-12); - } - .xs\:bui-pt-13 { - padding-top: var(--bui-space-13); - } - .xs\:bui-pt-14 { - padding-top: var(--bui-space-14); - } - } - @media (width>=768px) { - .sm\:bui-pt { - padding-top: var(--pt-sm); - } - .sm\:bui-pt-0\.5 { - padding-top: var(--bui-space-0_5); - } - .sm\:bui-pt-1 { - padding-top: var(--bui-space-1); - } - .sm\:bui-pt-1\.5 { - padding-top: var(--bui-space-1_5); - } - .sm\:bui-pt-2 { - padding-top: var(--bui-space-2); - } - .sm\:bui-pt-3 { - padding-top: var(--bui-space-3); - } - .sm\:bui-pt-4 { - padding-top: var(--bui-space-4); - } - .sm\:bui-pt-5 { - padding-top: var(--bui-space-5); - } - .sm\:bui-pt-6 { - padding-top: var(--bui-space-6); - } - .sm\:bui-pt-7 { - padding-top: var(--bui-space-7); - } - .sm\:bui-pt-8 { - padding-top: var(--bui-space-8); - } - .sm\:bui-pt-9 { - padding-top: var(--bui-space-9); - } - .sm\:bui-pt-10 { - padding-top: var(--bui-space-10); - } - .sm\:bui-pt-11 { - padding-top: var(--bui-space-11); - } - .sm\:bui-pt-12 { - padding-top: var(--bui-space-12); - } - .sm\:bui-pt-13 { - padding-top: var(--bui-space-13); - } - .sm\:bui-pt-14 { - padding-top: var(--bui-space-14); - } - } - @media (width>=1024px) { - .md\:bui-pt { - padding-top: var(--pt-md); - } - .md\:bui-pt-0\.5 { - padding-top: var(--bui-space-0_5); - } - .md\:bui-pt-1 { - padding-top: var(--bui-space-1); - } - .md\:bui-pt-1\.5 { - padding-top: var(--bui-space-1_5); - } - .md\:bui-pt-2 { - padding-top: var(--bui-space-2); - } - .md\:bui-pt-3 { - padding-top: var(--bui-space-3); - } - .md\:bui-pt-4 { - padding-top: var(--bui-space-4); - } - .md\:bui-pt-5 { - padding-top: var(--bui-space-5); - } - .md\:bui-pt-6 { - padding-top: var(--bui-space-6); - } - .md\:bui-pt-7 { - padding-top: var(--bui-space-7); - } - .md\:bui-pt-8 { - padding-top: var(--bui-space-8); - } - .md\:bui-pt-9 { - padding-top: var(--bui-space-9); - } - .md\:bui-pt-10 { - padding-top: var(--bui-space-10); - } - .md\:bui-pt-11 { - padding-top: var(--bui-space-11); - } - .md\:bui-pt-12 { - padding-top: var(--bui-space-12); - } - .md\:bui-pt-13 { - padding-top: var(--bui-space-13); - } - .md\:bui-pt-14 { - padding-top: var(--bui-space-14); - } - } - @media (width>=1280px) { - .lg\:bui-pt { - padding-top: var(--pt-lg); - } - .lg\:bui-pt-0\.5 { - padding-top: var(--bui-space-0_5); - } - .lg\:bui-pt-1 { - padding-top: var(--bui-space-1); - } - .lg\:bui-pt-1\.5 { - padding-top: var(--bui-space-1_5); - } - .lg\:bui-pt-2 { - padding-top: var(--bui-space-2); - } - .lg\:bui-pt-3 { - padding-top: var(--bui-space-3); - } - .lg\:bui-pt-4 { - padding-top: var(--bui-space-4); - } - .lg\:bui-pt-5 { - padding-top: var(--bui-space-5); - } - .lg\:bui-pt-6 { - padding-top: var(--bui-space-6); - } - .lg\:bui-pt-7 { - padding-top: var(--bui-space-7); - } - .lg\:bui-pt-8 { - padding-top: var(--bui-space-8); - } - .lg\:bui-pt-9 { - padding-top: var(--bui-space-9); - } - .lg\:bui-pt-10 { - padding-top: var(--bui-space-10); - } - .lg\:bui-pt-11 { - padding-top: var(--bui-space-11); - } - .lg\:bui-pt-12 { - padding-top: var(--bui-space-12); - } - .lg\:bui-pt-13 { - padding-top: var(--bui-space-13); - } - .lg\:bui-pt-14 { - padding-top: var(--bui-space-14); - } - } - @media (width>=1536px) { - .xl\:bui-pt { - padding-top: var(--pt-xl); - } - .xl\:bui-pt-0\.5 { - padding-top: var(--bui-space-0_5); - } - .xl\:bui-pt-1 { - padding-top: var(--bui-space-1); - } - .xl\:bui-pt-1\.5 { - padding-top: var(--bui-space-1_5); - } - .xl\:bui-pt-2 { - padding-top: var(--bui-space-2); - } - .xl\:bui-pt-3 { - padding-top: var(--bui-space-3); - } - .xl\:bui-pt-4 { - padding-top: var(--bui-space-4); - } - .xl\:bui-pt-5 { - padding-top: var(--bui-space-5); - } - .xl\:bui-pt-6 { - padding-top: var(--bui-space-6); - } - .xl\:bui-pt-7 { - padding-top: var(--bui-space-7); - } - .xl\:bui-pt-8 { - padding-top: var(--bui-space-8); - } - .xl\:bui-pt-9 { - padding-top: var(--bui-space-9); - } - .xl\:bui-pt-10 { - padding-top: var(--bui-space-10); - } - .xl\:bui-pt-11 { - padding-top: var(--bui-space-11); - } - .xl\:bui-pt-12 { - padding-top: var(--bui-space-12); - } - .xl\:bui-pt-13 { - padding-top: var(--bui-space-13); - } - .xl\:bui-pt-14 { - padding-top: var(--bui-space-14); - } - } - .bui-pb { - padding-bottom: var(--pb); - } - .bui-pb-0\.5 { - padding-bottom: var(--bui-space-0_5); - } - .bui-pb-1 { - padding-bottom: var(--bui-space-1); - } - .bui-pb-1\.5 { - padding-bottom: var(--bui-space-1_5); - } - .bui-pb-2 { - padding-bottom: var(--bui-space-2); - } - .bui-pb-3 { - padding-bottom: var(--bui-space-3); - } - .bui-pb-4 { - padding-bottom: var(--bui-space-4); - } - .bui-pb-5 { - padding-bottom: var(--bui-space-5); - } - .bui-pb-6 { - padding-bottom: var(--bui-space-6); - } - .bui-pb-7 { - padding-bottom: var(--bui-space-7); - } - .bui-pb-8 { - padding-bottom: var(--bui-space-8); - } - .bui-pb-9 { - padding-bottom: var(--bui-space-9); - } - .bui-pb-10 { - padding-bottom: var(--bui-space-10); - } - .bui-pb-11 { - padding-bottom: var(--bui-space-11); - } - .bui-pb-12 { - padding-bottom: var(--bui-space-12); - } - .bui-pb-13 { - padding-bottom: var(--bui-space-13); - } - .bui-pb-14 { - padding-bottom: var(--bui-space-14); - } - @media (width>=640px) { - .xs\:bui-pb { - padding-bottom: var(--pb-xs); - } - .xs\:bui-pb-0\.5 { - padding-bottom: var(--bui-space-0_5); - } - .xs\:bui-pb-1 { - padding-bottom: var(--bui-space-1); - } - .xs\:bui-pb-1\.5 { - padding-bottom: var(--bui-space-1_5); - } - .xs\:bui-pb-2 { - padding-bottom: var(--bui-space-2); - } - .xs\:bui-pb-3 { - padding-bottom: var(--bui-space-3); - } - .xs\:bui-pb-4 { - padding-bottom: var(--bui-space-4); - } - .xs\:bui-pb-5 { - padding-bottom: var(--bui-space-5); - } - .xs\:bui-pb-6 { - padding-bottom: var(--bui-space-6); - } - .xs\:bui-pb-7 { - padding-bottom: var(--bui-space-7); - } - .xs\:bui-pb-8 { - padding-bottom: var(--bui-space-8); - } - .xs\:bui-pb-9 { - padding-bottom: var(--bui-space-9); - } - .xs\:bui-pb-10 { - padding-bottom: var(--bui-space-10); - } - .xs\:bui-pb-11 { - padding-bottom: var(--bui-space-11); - } - .xs\:bui-pb-12 { - padding-bottom: var(--bui-space-12); - } - .xs\:bui-pb-13 { - padding-bottom: var(--bui-space-13); - } - .xs\:bui-pb-14 { - padding-bottom: var(--bui-space-14); - } - } - @media (width>=768px) { - .sm\:bui-pb { - padding-bottom: var(--pb-sm); - } - .sm\:bui-pb-0\.5 { - padding-bottom: var(--bui-space-0_5); - } - .sm\:bui-pb-1 { - padding-bottom: var(--bui-space-1); - } - .sm\:bui-pb-1\.5 { - padding-bottom: var(--bui-space-1_5); - } - .sm\:bui-pb-2 { - padding-bottom: var(--bui-space-2); - } - .sm\:bui-pb-3 { - padding-bottom: var(--bui-space-3); - } - .sm\:bui-pb-4 { - padding-bottom: var(--bui-space-4); - } - .sm\:bui-pb-5 { - padding-bottom: var(--bui-space-5); - } - .sm\:bui-pb-6 { - padding-bottom: var(--bui-space-6); - } - .sm\:bui-pb-7 { - padding-bottom: var(--bui-space-7); - } - .sm\:bui-pb-8 { - padding-bottom: var(--bui-space-8); - } - .sm\:bui-pb-9 { - padding-bottom: var(--bui-space-9); - } - .sm\:bui-pb-10 { - padding-bottom: var(--bui-space-10); - } - .sm\:bui-pb-11 { - padding-bottom: var(--bui-space-11); - } - .sm\:bui-pb-12 { - padding-bottom: var(--bui-space-12); - } - .sm\:bui-pb-13 { - padding-bottom: var(--bui-space-13); - } - .sm\:bui-pb-14 { - padding-bottom: var(--bui-space-14); - } - } - @media (width>=1024px) { - .md\:bui-pb { - padding-bottom: var(--pb-md); - } - .md\:bui-pb-0\.5 { - padding-bottom: var(--bui-space-0_5); - } - .md\:bui-pb-1 { - padding-bottom: var(--bui-space-1); - } - .md\:bui-pb-1\.5 { - padding-bottom: var(--bui-space-1_5); - } - .md\:bui-pb-2 { - padding-bottom: var(--bui-space-2); - } - .md\:bui-pb-3 { - padding-bottom: var(--bui-space-3); - } - .md\:bui-pb-4 { - padding-bottom: var(--bui-space-4); - } - .md\:bui-pb-5 { - padding-bottom: var(--bui-space-5); - } - .md\:bui-pb-6 { - padding-bottom: var(--bui-space-6); - } - .md\:bui-pb-7 { - padding-bottom: var(--bui-space-7); - } - .md\:bui-pb-8 { - padding-bottom: var(--bui-space-8); - } - .md\:bui-pb-9 { - padding-bottom: var(--bui-space-9); - } - .md\:bui-pb-10 { - padding-bottom: var(--bui-space-10); - } - .md\:bui-pb-11 { - padding-bottom: var(--bui-space-11); - } - .md\:bui-pb-12 { - padding-bottom: var(--bui-space-12); - } - .md\:bui-pb-13 { - padding-bottom: var(--bui-space-13); - } - .md\:bui-pb-14 { - padding-bottom: var(--bui-space-14); - } - } - @media (width>=1280px) { - .lg\:bui-pb { - padding-bottom: var(--pb-lg); - } - .lg\:bui-pb-0\.5 { - padding-bottom: var(--bui-space-0_5); - } - .lg\:bui-pb-1 { - padding-bottom: var(--bui-space-1); - } - .lg\:bui-pb-1\.5 { - padding-bottom: var(--bui-space-1_5); - } - .lg\:bui-pb-2 { - padding-bottom: var(--bui-space-2); - } - .lg\:bui-pb-3 { - padding-bottom: var(--bui-space-3); - } - .lg\:bui-pb-4 { - padding-bottom: var(--bui-space-4); - } - .lg\:bui-pb-5 { - padding-bottom: var(--bui-space-5); - } - .lg\:bui-pb-6 { - padding-bottom: var(--bui-space-6); - } - .lg\:bui-pb-7 { - padding-bottom: var(--bui-space-7); - } - .lg\:bui-pb-8 { - padding-bottom: var(--bui-space-8); - } - .lg\:bui-pb-9 { - padding-bottom: var(--bui-space-9); - } - .lg\:bui-pb-10 { - padding-bottom: var(--bui-space-10); - } - .lg\:bui-pb-11 { - padding-bottom: var(--bui-space-11); - } - .lg\:bui-pb-12 { - padding-bottom: var(--bui-space-12); - } - .lg\:bui-pb-13 { - padding-bottom: var(--bui-space-13); - } - .lg\:bui-pb-14 { - padding-bottom: var(--bui-space-14); - } - } - @media (width>=1536px) { - .xl\:bui-pb { - padding-bottom: var(--pb-xl); - } - .xl\:bui-pb-0\.5 { - padding-bottom: var(--bui-space-0_5); - } - .xl\:bui-pb-1 { - padding-bottom: var(--bui-space-1); - } - .xl\:bui-pb-1\.5 { - padding-bottom: var(--bui-space-1_5); - } - .xl\:bui-pb-2 { - padding-bottom: var(--bui-space-2); - } - .xl\:bui-pb-3 { - padding-bottom: var(--bui-space-3); - } - .xl\:bui-pb-4 { - padding-bottom: var(--bui-space-4); - } - .xl\:bui-pb-5 { - padding-bottom: var(--bui-space-5); - } - .xl\:bui-pb-6 { - padding-bottom: var(--bui-space-6); - } - .xl\:bui-pb-7 { - padding-bottom: var(--bui-space-7); - } - .xl\:bui-pb-8 { - padding-bottom: var(--bui-space-8); - } - .xl\:bui-pb-9 { - padding-bottom: var(--bui-space-9); - } - .xl\:bui-pb-10 { - padding-bottom: var(--bui-space-10); - } - .xl\:bui-pb-11 { - padding-bottom: var(--bui-space-11); - } - .xl\:bui-pb-12 { - padding-bottom: var(--bui-space-12); - } - .xl\:bui-pb-13 { - padding-bottom: var(--bui-space-13); - } - .xl\:bui-pb-14 { - padding-bottom: var(--bui-space-14); - } - } - .bui-py { - padding-top: var(--py); - padding-bottom: var(--py); - } - .bui-py-0\.5 { - padding-top: var(--bui-space-0_5); - padding-bottom: var(--bui-space-0_5); - } - .bui-py-1 { - padding-top: var(--bui-space-1); - padding-bottom: var(--bui-space-1); - } - .bui-py-1\.5 { - padding-top: var(--bui-space-1_5); - padding-bottom: var(--bui-space-1_5); - } - .bui-py-2 { - padding-top: var(--bui-space-2); - padding-bottom: var(--bui-space-2); - } - .bui-py-3 { - padding-top: var(--bui-space-3); - padding-bottom: var(--bui-space-3); - } - .bui-py-4 { - padding-top: var(--bui-space-4); - padding-bottom: var(--bui-space-4); - } - .bui-py-5 { - padding-top: var(--bui-space-5); - padding-bottom: var(--bui-space-5); - } - .bui-py-6 { - padding-top: var(--bui-space-6); - padding-bottom: var(--bui-space-6); - } - .bui-py-7 { - padding-top: var(--bui-space-7); - padding-bottom: var(--bui-space-7); - } - .bui-py-8 { - padding-top: var(--bui-space-8); - padding-bottom: var(--bui-space-8); - } - .bui-py-9 { - padding-top: var(--bui-space-9); - padding-bottom: var(--bui-space-9); - } - .bui-py-10 { - padding-top: var(--bui-space-10); - padding-bottom: var(--bui-space-10); - } - .bui-py-11 { - padding-top: var(--bui-space-11); - padding-bottom: var(--bui-space-11); - } - .bui-py-12 { - padding-top: var(--bui-space-12); - padding-bottom: var(--bui-space-12); - } - .bui-py-13 { - padding-top: var(--bui-space-13); - padding-bottom: var(--bui-space-13); - } - .bui-py-14 { - padding-top: var(--bui-space-14); - padding-bottom: var(--bui-space-14); - } - @media (width>=640px) { - .xs\:bui-py { - padding-top: var(--py-xs); - padding-bottom: var(--py-xs); - } - .xs\:bui-py-0\.5 { - padding-top: var(--bui-space-0_5); - padding-bottom: var(--bui-space-0_5); - } - .xs\:bui-py-1 { - padding-top: var(--bui-space-1); - padding-bottom: var(--bui-space-1); - } - .xs\:bui-py-1\.5 { - padding-top: var(--bui-space-1_5); - padding-bottom: var(--bui-space-1_5); - } - .xs\:bui-py-2 { - padding-top: var(--bui-space-2); - padding-bottom: var(--bui-space-2); - } - .xs\:bui-py-3 { - padding-top: var(--bui-space-3); - padding-bottom: var(--bui-space-3); - } - .xs\:bui-py-4 { - padding-top: var(--bui-space-4); - padding-bottom: var(--bui-space-4); - } - .xs\:bui-py-5 { - padding-top: var(--bui-space-5); - padding-bottom: var(--bui-space-5); - } - .xs\:bui-py-6 { - padding-top: var(--bui-space-6); - padding-bottom: var(--bui-space-6); - } - .xs\:bui-py-7 { - padding-top: var(--bui-space-7); - padding-bottom: var(--bui-space-7); - } - .xs\:bui-py-8 { - padding-top: var(--bui-space-8); - padding-bottom: var(--bui-space-8); - } - .xs\:bui-py-9 { - padding-top: var(--bui-space-9); - padding-bottom: var(--bui-space-9); - } - .xs\:bui-py-10 { - padding-top: var(--bui-space-10); - padding-bottom: var(--bui-space-10); - } - .xs\:bui-py-11 { - padding-top: var(--bui-space-11); - padding-bottom: var(--bui-space-11); - } - .xs\:bui-py-12 { - padding-top: var(--bui-space-12); - padding-bottom: var(--bui-space-12); - } - .xs\:bui-py-13 { - padding-top: var(--bui-space-13); - padding-bottom: var(--bui-space-13); - } - .xs\:bui-py-14 { - padding-top: var(--bui-space-14); - padding-bottom: var(--bui-space-14); - } - } - @media (width>=768px) { - .sm\:bui-py { - padding-top: var(--py-sm); - padding-bottom: var(--py-sm); - } - .sm\:bui-py-0\.5 { - padding-top: var(--bui-space-0_5); - padding-bottom: var(--bui-space-0_5); - } - .sm\:bui-py-1 { - padding-top: var(--bui-space-1); - padding-bottom: var(--bui-space-1); - } - .sm\:bui-py-1\.5 { - padding-top: var(--bui-space-1_5); - padding-bottom: var(--bui-space-1_5); - } - .sm\:bui-py-2 { - padding-top: var(--bui-space-2); - padding-bottom: var(--bui-space-2); - } - .sm\:bui-py-3 { - padding-top: var(--bui-space-3); - padding-bottom: var(--bui-space-3); - } - .sm\:bui-py-4 { - padding-top: var(--bui-space-4); - padding-bottom: var(--bui-space-4); - } - .sm\:bui-py-5 { - padding-top: var(--bui-space-5); - padding-bottom: var(--bui-space-5); - } - .sm\:bui-py-6 { - padding-top: var(--bui-space-6); - padding-bottom: var(--bui-space-6); - } - .sm\:bui-py-7 { - padding-top: var(--bui-space-7); - padding-bottom: var(--bui-space-7); - } - .sm\:bui-py-8 { - padding-top: var(--bui-space-8); - padding-bottom: var(--bui-space-8); - } - .sm\:bui-py-9 { - padding-top: var(--bui-space-9); - padding-bottom: var(--bui-space-9); - } - .sm\:bui-py-10 { - padding-top: var(--bui-space-10); - padding-bottom: var(--bui-space-10); - } - .sm\:bui-py-11 { - padding-top: var(--bui-space-11); - padding-bottom: var(--bui-space-11); - } - .sm\:bui-py-12 { - padding-top: var(--bui-space-12); - padding-bottom: var(--bui-space-12); - } - .sm\:bui-py-13 { - padding-top: var(--bui-space-13); - padding-bottom: var(--bui-space-13); - } - .sm\:bui-py-14 { - padding-top: var(--bui-space-14); - padding-bottom: var(--bui-space-14); - } - } - @media (width>=1024px) { - .md\:bui-py { - padding-top: var(--py-md); - padding-bottom: var(--py-md); - } - .md\:bui-py-0\.5 { - padding-top: var(--bui-space-0_5); - padding-bottom: var(--bui-space-0_5); - } - .md\:bui-py-1 { - padding-top: var(--bui-space-1); - padding-bottom: var(--bui-space-1); - } - .md\:bui-py-1\.5 { - padding-top: var(--bui-space-1_5); - padding-bottom: var(--bui-space-1_5); - } - .md\:bui-py-2 { - padding-top: var(--bui-space-2); - padding-bottom: var(--bui-space-2); - } - .md\:bui-py-3 { - padding-top: var(--bui-space-3); - padding-bottom: var(--bui-space-3); - } - .md\:bui-py-4 { - padding-top: var(--bui-space-4); - padding-bottom: var(--bui-space-4); - } - .md\:bui-py-5 { - padding-top: var(--bui-space-5); - padding-bottom: var(--bui-space-5); - } - .md\:bui-py-6 { - padding-top: var(--bui-space-6); - padding-bottom: var(--bui-space-6); - } - .md\:bui-py-7 { - padding-top: var(--bui-space-7); - padding-bottom: var(--bui-space-7); - } - .md\:bui-py-8 { - padding-top: var(--bui-space-8); - padding-bottom: var(--bui-space-8); - } - .md\:bui-py-9 { - padding-top: var(--bui-space-9); - padding-bottom: var(--bui-space-9); - } - .md\:bui-py-10 { - padding-top: var(--bui-space-10); - padding-bottom: var(--bui-space-10); - } - .md\:bui-py-11 { - padding-top: var(--bui-space-11); - padding-bottom: var(--bui-space-11); - } - .md\:bui-py-12 { - padding-top: var(--bui-space-12); - padding-bottom: var(--bui-space-12); - } - .md\:bui-py-13 { - padding-top: var(--bui-space-13); - padding-bottom: var(--bui-space-13); - } - .md\:bui-py-14 { - padding-top: var(--bui-space-14); - padding-bottom: var(--bui-space-14); - } - } - @media (width>=1280px) { - .lg\:bui-py { - padding-top: var(--py-lg); - padding-bottom: var(--py-lg); - } - .lg\:bui-py-0\.5 { - padding-top: var(--bui-space-0_5); - padding-bottom: var(--bui-space-0_5); - } - .lg\:bui-py-1 { - padding-top: var(--bui-space-1); - padding-bottom: var(--bui-space-1); - } - .lg\:bui-py-1\.5 { - padding-top: var(--bui-space-1_5); - padding-bottom: var(--bui-space-1_5); - } - .lg\:bui-py-2 { - padding-top: var(--bui-space-2); - padding-bottom: var(--bui-space-2); - } - .lg\:bui-py-3 { - padding-top: var(--bui-space-3); - padding-bottom: var(--bui-space-3); - } - .lg\:bui-py-4 { - padding-top: var(--bui-space-4); - padding-bottom: var(--bui-space-4); - } - .lg\:bui-py-5 { - padding-top: var(--bui-space-5); - padding-bottom: var(--bui-space-5); - } - .lg\:bui-py-6 { - padding-top: var(--bui-space-6); - padding-bottom: var(--bui-space-6); - } - .lg\:bui-py-7 { - padding-top: var(--bui-space-7); - padding-bottom: var(--bui-space-7); - } - .lg\:bui-py-8 { - padding-top: var(--bui-space-8); - padding-bottom: var(--bui-space-8); - } - .lg\:bui-py-9 { - padding-top: var(--bui-space-9); - padding-bottom: var(--bui-space-9); - } - .lg\:bui-py-10 { - padding-top: var(--bui-space-10); - padding-bottom: var(--bui-space-10); - } - .lg\:bui-py-11 { - padding-top: var(--bui-space-11); - padding-bottom: var(--bui-space-11); - } - .lg\:bui-py-12 { - padding-top: var(--bui-space-12); - padding-bottom: var(--bui-space-12); - } - .lg\:bui-py-13 { - padding-top: var(--bui-space-13); - padding-bottom: var(--bui-space-13); - } - .lg\:bui-py-14 { - padding-top: var(--bui-space-14); - padding-bottom: var(--bui-space-14); - } - } - @media (width>=1536px) { - .xl\:bui-py { - padding-top: var(--py-xl); - padding-bottom: var(--py-xl); - } - .xl\:bui-py-0\.5 { - padding-top: var(--bui-space-0_5); - padding-bottom: var(--bui-space-0_5); - } - .xl\:bui-py-1 { - padding-top: var(--bui-space-1); - padding-bottom: var(--bui-space-1); - } - .xl\:bui-py-1\.5 { - padding-top: var(--bui-space-1_5); - padding-bottom: var(--bui-space-1_5); - } - .xl\:bui-py-2 { - padding-top: var(--bui-space-2); - padding-bottom: var(--bui-space-2); - } - .xl\:bui-py-3 { - padding-top: var(--bui-space-3); - padding-bottom: var(--bui-space-3); - } - .xl\:bui-py-4 { - padding-top: var(--bui-space-4); - padding-bottom: var(--bui-space-4); - } - .xl\:bui-py-5 { - padding-top: var(--bui-space-5); - padding-bottom: var(--bui-space-5); - } - .xl\:bui-py-6 { - padding-top: var(--bui-space-6); - padding-bottom: var(--bui-space-6); - } - .xl\:bui-py-7 { - padding-top: var(--bui-space-7); - padding-bottom: var(--bui-space-7); - } - .xl\:bui-py-8 { - padding-top: var(--bui-space-8); - padding-bottom: var(--bui-space-8); - } - .xl\:bui-py-9 { - padding-top: var(--bui-space-9); - padding-bottom: var(--bui-space-9); - } - .xl\:bui-py-10 { - padding-top: var(--bui-space-10); - padding-bottom: var(--bui-space-10); - } - .xl\:bui-py-11 { - padding-top: var(--bui-space-11); - padding-bottom: var(--bui-space-11); - } - .xl\:bui-py-12 { - padding-top: var(--bui-space-12); - padding-bottom: var(--bui-space-12); - } - .xl\:bui-py-13 { - padding-top: var(--bui-space-13); - padding-bottom: var(--bui-space-13); - } - .xl\:bui-py-14 { - padding-top: var(--bui-space-14); - padding-bottom: var(--bui-space-14); - } - } - .bui-px { - padding-left: var(--px); - padding-right: var(--px); - } - .bui-px-0\.5 { - padding-left: var(--bui-space-0_5); - padding-right: var(--bui-space-0_5); - } - .bui-px-1 { - padding-left: var(--bui-space-1); - padding-right: var(--bui-space-1); - } - .bui-px-1\.5 { - padding-left: var(--bui-space-1_5); - padding-right: var(--bui-space-1_5); - } - .bui-px-2 { - padding-left: var(--bui-space-2); - padding-right: var(--bui-space-2); - } - .bui-px-3 { - padding-left: var(--bui-space-3); - padding-right: var(--bui-space-3); - } - .bui-px-4 { - padding-left: var(--bui-space-4); - padding-right: var(--bui-space-4); - } - .bui-px-5 { - padding-left: var(--bui-space-5); - padding-right: var(--bui-space-5); - } - .bui-px-6 { - padding-left: var(--bui-space-6); - padding-right: var(--bui-space-6); - } - .bui-px-7 { - padding-left: var(--bui-space-7); - padding-right: var(--bui-space-7); - } - .bui-px-8 { - padding-left: var(--bui-space-8); - padding-right: var(--bui-space-8); - } - .bui-px-9 { - padding-left: var(--bui-space-9); - padding-right: var(--bui-space-9); - } - .bui-px-10 { - padding-left: var(--bui-space-10); - padding-right: var(--bui-space-10); - } - .bui-px-11 { - padding-left: var(--bui-space-11); - padding-right: var(--bui-space-11); - } - .bui-px-12 { - padding-left: var(--bui-space-12); - padding-right: var(--bui-space-12); - } - .bui-px-13 { - padding-left: var(--bui-space-13); - padding-right: var(--bui-space-13); - } - .bui-px-14 { - padding-left: var(--bui-space-14); - padding-right: var(--bui-space-14); - } - @media (width>=640px) { - .xs\:bui-px { - padding-left: var(--px-xs); - padding-right: var(--px-xs); - } - .xs\:bui-px-0\.5 { - padding-left: var(--bui-space-0_5); - padding-right: var(--bui-space-0_5); - } - .xs\:bui-px-1 { - padding-left: var(--bui-space-1); - padding-right: var(--bui-space-1); - } - .xs\:bui-px-1\.5 { - padding-left: var(--bui-space-1_5); - padding-right: var(--bui-space-1_5); - } - .xs\:bui-px-2 { - padding-left: var(--bui-space-2); - padding-right: var(--bui-space-2); - } - .xs\:bui-px-3 { - padding-left: var(--bui-space-3); - padding-right: var(--bui-space-3); - } - .xs\:bui-px-4 { - padding-left: var(--bui-space-4); - padding-right: var(--bui-space-4); - } - .xs\:bui-px-5 { - padding-left: var(--bui-space-5); - padding-right: var(--bui-space-5); - } - .xs\:bui-px-6 { - padding-left: var(--bui-space-6); - padding-right: var(--bui-space-6); - } - .xs\:bui-px-7 { - padding-left: var(--bui-space-7); - padding-right: var(--bui-space-7); - } - .xs\:bui-px-8 { - padding-left: var(--bui-space-8); - padding-right: var(--bui-space-8); - } - .xs\:bui-px-9 { - padding-left: var(--bui-space-9); - padding-right: var(--bui-space-9); - } - .xs\:bui-px-10 { - padding-left: var(--bui-space-10); - padding-right: var(--bui-space-10); - } - .xs\:bui-px-11 { - padding-left: var(--bui-space-11); - padding-right: var(--bui-space-11); - } - .xs\:bui-px-12 { - padding-left: var(--bui-space-12); - padding-right: var(--bui-space-12); - } - .xs\:bui-px-13 { - padding-left: var(--bui-space-13); - padding-right: var(--bui-space-13); - } - .xs\:bui-px-14 { - padding-left: var(--bui-space-14); - padding-right: var(--bui-space-14); - } - } - @media (width>=768px) { - .sm\:bui-px { - padding-left: var(--px-sm); - padding-right: var(--px-sm); - } - .sm\:bui-px-0\.5 { - padding-left: var(--bui-space-0_5); - padding-right: var(--bui-space-0_5); - } - .sm\:bui-px-1 { - padding-left: var(--bui-space-1); - padding-right: var(--bui-space-1); - } - .sm\:bui-px-1\.5 { - padding-left: var(--bui-space-1_5); - padding-right: var(--bui-space-1_5); - } - .sm\:bui-px-2 { - padding-left: var(--bui-space-2); - padding-right: var(--bui-space-2); - } - .sm\:bui-px-3 { - padding-left: var(--bui-space-3); - padding-right: var(--bui-space-3); - } - .sm\:bui-px-4 { - padding-left: var(--bui-space-4); - padding-right: var(--bui-space-4); - } - .sm\:bui-px-5 { - padding-left: var(--bui-space-5); - padding-right: var(--bui-space-5); - } - .sm\:bui-px-6 { - padding-left: var(--bui-space-6); - padding-right: var(--bui-space-6); - } - .sm\:bui-px-7 { - padding-left: var(--bui-space-7); - padding-right: var(--bui-space-7); - } - .sm\:bui-px-8 { - padding-left: var(--bui-space-8); - padding-right: var(--bui-space-8); - } - .sm\:bui-px-9 { - padding-left: var(--bui-space-9); - padding-right: var(--bui-space-9); - } - .sm\:bui-px-10 { - padding-left: var(--bui-space-10); - padding-right: var(--bui-space-10); - } - .sm\:bui-px-11 { - padding-left: var(--bui-space-11); - padding-right: var(--bui-space-11); - } - .sm\:bui-px-12 { - padding-left: var(--bui-space-12); - padding-right: var(--bui-space-12); - } - .sm\:bui-px-13 { - padding-left: var(--bui-space-13); - padding-right: var(--bui-space-13); - } - .sm\:bui-px-14 { - padding-left: var(--bui-space-14); - padding-right: var(--bui-space-14); - } - } - @media (width>=1024px) { - .md\:bui-px { - padding-left: var(--px-md); - padding-right: var(--px-md); - } - .md\:bui-px-0\.5 { - padding-left: var(--bui-space-0_5); - padding-right: var(--bui-space-0_5); - } - .md\:bui-px-1 { - padding-left: var(--bui-space-1); - padding-right: var(--bui-space-1); - } - .md\:bui-px-1\.5 { - padding-left: var(--bui-space-1_5); - padding-right: var(--bui-space-1_5); - } - .md\:bui-px-2 { - padding-left: var(--bui-space-2); - padding-right: var(--bui-space-2); - } - .md\:bui-px-3 { - padding-left: var(--bui-space-3); - padding-right: var(--bui-space-3); - } - .md\:bui-px-4 { - padding-left: var(--bui-space-4); - padding-right: var(--bui-space-4); - } - .md\:bui-px-5 { - padding-left: var(--bui-space-5); - padding-right: var(--bui-space-5); - } - .md\:bui-px-6 { - padding-left: var(--bui-space-6); - padding-right: var(--bui-space-6); - } - .md\:bui-px-7 { - padding-left: var(--bui-space-7); - padding-right: var(--bui-space-7); - } - .md\:bui-px-8 { - padding-left: var(--bui-space-8); - padding-right: var(--bui-space-8); - } - .md\:bui-px-9 { - padding-left: var(--bui-space-9); - padding-right: var(--bui-space-9); - } - .md\:bui-px-10 { - padding-left: var(--bui-space-10); - padding-right: var(--bui-space-10); - } - .md\:bui-px-11 { - padding-left: var(--bui-space-11); - padding-right: var(--bui-space-11); - } - .md\:bui-px-12 { - padding-left: var(--bui-space-12); - padding-right: var(--bui-space-12); - } - .md\:bui-px-13 { - padding-left: var(--bui-space-13); - padding-right: var(--bui-space-13); - } - .md\:bui-px-14 { - padding-left: var(--bui-space-14); - padding-right: var(--bui-space-14); - } - } - @media (width>=1280px) { - .lg\:bui-px { - padding-left: var(--px-lg); - padding-right: var(--px-lg); - } - .lg\:bui-px-0\.5 { - padding-left: var(--bui-space-0_5); - padding-right: var(--bui-space-0_5); - } - .lg\:bui-px-1 { - padding-left: var(--bui-space-1); - padding-right: var(--bui-space-1); - } - .lg\:bui-px-1\.5 { - padding-left: var(--bui-space-1_5); - padding-right: var(--bui-space-1_5); - } - .lg\:bui-px-2 { - padding-left: var(--bui-space-2); - padding-right: var(--bui-space-2); - } - .lg\:bui-px-3 { - padding-left: var(--bui-space-3); - padding-right: var(--bui-space-3); - } - .lg\:bui-px-4 { - padding-left: var(--bui-space-4); - padding-right: var(--bui-space-4); - } - .lg\:bui-px-5 { - padding-left: var(--bui-space-5); - padding-right: var(--bui-space-5); - } - .lg\:bui-px-6 { - padding-left: var(--bui-space-6); - padding-right: var(--bui-space-6); - } - .lg\:bui-px-7 { - padding-left: var(--bui-space-7); - padding-right: var(--bui-space-7); - } - .lg\:bui-px-8 { - padding-left: var(--bui-space-8); - padding-right: var(--bui-space-8); - } - .lg\:bui-px-9 { - padding-left: var(--bui-space-9); - padding-right: var(--bui-space-9); - } - .lg\:bui-px-10 { - padding-left: var(--bui-space-10); - padding-right: var(--bui-space-10); - } - .lg\:bui-px-11 { - padding-left: var(--bui-space-11); - padding-right: var(--bui-space-11); - } - .lg\:bui-px-12 { - padding-left: var(--bui-space-12); - padding-right: var(--bui-space-12); - } - .lg\:bui-px-13 { - padding-left: var(--bui-space-13); - padding-right: var(--bui-space-13); - } - .lg\:bui-px-14 { - padding-left: var(--bui-space-14); - padding-right: var(--bui-space-14); - } - } - @media (width>=1536px) { - .xl\:bui-px { - padding-left: var(--px-xl); - padding-right: var(--px-xl); - } - .xl\:bui-px-0\.5 { - padding-left: var(--bui-space-0_5); - padding-right: var(--bui-space-0_5); - } - .xl\:bui-px-1 { - padding-left: var(--bui-space-1); - padding-right: var(--bui-space-1); - } - .xl\:bui-px-1\.5 { - padding-left: var(--bui-space-1_5); - padding-right: var(--bui-space-1_5); - } - .xl\:bui-px-2 { - padding-left: var(--bui-space-2); - padding-right: var(--bui-space-2); - } - .xl\:bui-px-3 { - padding-left: var(--bui-space-3); - padding-right: var(--bui-space-3); - } - .xl\:bui-px-4 { - padding-left: var(--bui-space-4); - padding-right: var(--bui-space-4); - } - .xl\:bui-px-5 { - padding-left: var(--bui-space-5); - padding-right: var(--bui-space-5); - } - .xl\:bui-px-6 { - padding-left: var(--bui-space-6); - padding-right: var(--bui-space-6); - } - .xl\:bui-px-7 { - padding-left: var(--bui-space-7); - padding-right: var(--bui-space-7); - } - .xl\:bui-px-8 { - padding-left: var(--bui-space-8); - padding-right: var(--bui-space-8); - } - .xl\:bui-px-9 { - padding-left: var(--bui-space-9); - padding-right: var(--bui-space-9); - } - .xl\:bui-px-10 { - padding-left: var(--bui-space-10); - padding-right: var(--bui-space-10); - } - .xl\:bui-px-11 { - padding-left: var(--bui-space-11); - padding-right: var(--bui-space-11); - } - .xl\:bui-px-12 { - padding-left: var(--bui-space-12); - padding-right: var(--bui-space-12); - } - .xl\:bui-px-13 { - padding-left: var(--bui-space-13); - padding-right: var(--bui-space-13); - } - .xl\:bui-px-14 { - padding-left: var(--bui-space-14); - padding-right: var(--bui-space-14); - } - } - .bui-m { - margin: var(--m); - } - .bui-m-0\.5 { - margin: var(--bui-space-0_5); - } - .bui-m-1 { - margin: var(--bui-space-1); - } - .bui-m-1\.5 { - margin: var(--bui-space-1_5); - } - .bui-m-2 { - margin: var(--bui-space-2); - } - .bui-m-3 { - margin: var(--bui-space-3); - } - .bui-m-4 { - margin: var(--bui-space-4); - } - .bui-m-5 { - margin: var(--bui-space-5); - } - .bui-m-6 { - margin: var(--bui-space-6); - } - .bui-m-7 { - margin: var(--bui-space-7); - } - .bui-m-8 { - margin: var(--bui-space-8); - } - .bui-m-9 { - margin: var(--bui-space-9); - } - .bui-m-10 { - margin: var(--bui-space-10); - } - .bui-m-11 { - margin: var(--bui-space-11); - } - .bui-m-12 { - margin: var(--bui-space-12); - } - .bui-m-13 { - margin: var(--bui-space-13); - } - .bui-m-14 { - margin: var(--bui-space-14); - } - @media (width>=640px) { - .xs\:bui-m { - margin: var(--p-xs); - } - .xs\:bui-m-0\.5 { - margin: var(--bui-space-0_5); - } - .xs\:bui-m-1 { - margin: var(--bui-space-1); - } - .xs\:bui-m-1\.5 { - margin: var(--bui-space-1_5); - } - .xs\:bui-m-2 { - margin: var(--bui-space-2); - } - .xs\:bui-m-3 { - margin: var(--bui-space-3); - } - .xs\:bui-m-4 { - margin: var(--bui-space-4); - } - .xs\:bui-m-5 { - margin: var(--bui-space-5); - } - .xs\:bui-m-6 { - margin: var(--bui-space-6); - } - .xs\:bui-m-7 { - margin: var(--bui-space-7); - } - .xs\:bui-m-8 { - margin: var(--bui-space-8); - } - .xs\:bui-m-9 { - margin: var(--bui-space-9); - } - .xs\:bui-m-10 { - margin: var(--bui-space-10); - } - .xs\:bui-m-11 { - margin: var(--bui-space-11); - } - .xs\:bui-m-12 { - margin: var(--bui-space-12); - } - .xs\:bui-m-13 { - margin: var(--bui-space-13); - } - .xs\:bui-m-14 { - margin: var(--bui-space-14); - } - } - @media (width>=768px) { - .sm\:bui-m { - margin: var(--p-sm); - } - .sm\:bui-m-0\.5 { - margin: var(--bui-space-0_5); - } - .sm\:bui-m-1 { - margin: var(--bui-space-1); - } - .sm\:bui-m-1\.5 { - margin: var(--bui-space-1_5); - } - .sm\:bui-m-2 { - margin: var(--bui-space-2); - } - .sm\:bui-m-3 { - margin: var(--bui-space-3); - } - .sm\:bui-m-4 { - margin: var(--bui-space-4); - } - .sm\:bui-m-5 { - margin: var(--bui-space-5); - } - .sm\:bui-m-6 { - margin: var(--bui-space-6); - } - .sm\:bui-m-7 { - margin: var(--bui-space-7); - } - .sm\:bui-m-8 { - margin: var(--bui-space-8); - } - .sm\:bui-m-9 { - margin: var(--bui-space-9); - } - .sm\:bui-m-10 { - margin: var(--bui-space-10); - } - .sm\:bui-m-11 { - margin: var(--bui-space-11); - } - .sm\:bui-m-12 { - margin: var(--bui-space-12); - } - .sm\:bui-m-13 { - margin: var(--bui-space-13); - } - .sm\:bui-m-14 { - margin: var(--bui-space-14); - } - } - @media (width>=1024px) { - .md\:bui-m { - margin: var(--p-md); - } - .md\:bui-m-0\.5 { - margin: var(--bui-space-0_5); - } - .md\:bui-m-1 { - margin: var(--bui-space-1); - } - .md\:bui-m-1\.5 { - margin: var(--bui-space-1_5); - } - .md\:bui-m-2 { - margin: var(--bui-space-2); - } - .md\:bui-m-3 { - margin: var(--bui-space-3); - } - .md\:bui-m-4 { - margin: var(--bui-space-4); - } - .md\:bui-m-5 { - margin: var(--bui-space-5); - } - .md\:bui-m-6 { - margin: var(--bui-space-6); - } - .md\:bui-m-7 { - margin: var(--bui-space-7); - } - .md\:bui-m-8 { - margin: var(--bui-space-8); - } - .md\:bui-m-9 { - margin: var(--bui-space-9); - } - .md\:bui-m-10 { - margin: var(--bui-space-10); - } - .md\:bui-m-11 { - margin: var(--bui-space-11); - } - .md\:bui-m-12 { - margin: var(--bui-space-12); - } - .md\:bui-m-13 { - margin: var(--bui-space-13); - } - .md\:bui-m-14 { - margin: var(--bui-space-14); - } - } - @media (width>=1280px) { - .lg\:bui-m { - margin: var(--p-lg); - } - .lg\:bui-m-0\.5 { - margin: var(--bui-space-0_5); - } - .lg\:bui-m-1 { - margin: var(--bui-space-1); - } - .lg\:bui-m-1\.5 { - margin: var(--bui-space-1_5); - } - .lg\:bui-m-2 { - margin: var(--bui-space-2); - } - .lg\:bui-m-3 { - margin: var(--bui-space-3); - } - .lg\:bui-m-4 { - margin: var(--bui-space-4); - } - .lg\:bui-m-5 { - margin: var(--bui-space-5); - } - .lg\:bui-m-6 { - margin: var(--bui-space-6); - } - .lg\:bui-m-7 { - margin: var(--bui-space-7); - } - .lg\:bui-m-8 { - margin: var(--bui-space-8); - } - .lg\:bui-m-9 { - margin: var(--bui-space-9); - } - .lg\:bui-m-10 { - margin: var(--bui-space-10); - } - .lg\:bui-m-11 { - margin: var(--bui-space-11); - } - .lg\:bui-m-12 { - margin: var(--bui-space-12); - } - .lg\:bui-m-13 { - margin: var(--bui-space-13); - } - .lg\:bui-m-14 { - margin: var(--bui-space-14); - } - } - @media (width>=1536px) { - .xl\:bui-m { - margin: var(--p-xl); - } - .xl\:bui-m-0\.5 { - margin: var(--bui-space-0_5); - } - .xl\:bui-m-1 { - margin: var(--bui-space-1); - } - .xl\:bui-m-1\.5 { - margin: var(--bui-space-1_5); - } - .xl\:bui-m-2 { - margin: var(--bui-space-2); - } - .xl\:bui-m-3 { - margin: var(--bui-space-3); - } - .xl\:bui-m-4 { - margin: var(--bui-space-4); - } - .xl\:bui-m-5 { - margin: var(--bui-space-5); - } - .xl\:bui-m-6 { - margin: var(--bui-space-6); - } - .xl\:bui-m-7 { - margin: var(--bui-space-7); - } - .xl\:bui-m-8 { - margin: var(--bui-space-8); - } - .xl\:bui-m-9 { - margin: var(--bui-space-9); - } - .xl\:bui-m-10 { - margin: var(--bui-space-10); - } - .xl\:bui-m-11 { - margin: var(--bui-space-11); - } - .xl\:bui-m-12 { - margin: var(--bui-space-12); - } - .xl\:bui-m-13 { - margin: var(--bui-space-13); - } - .xl\:bui-m-14 { - margin: var(--bui-space-14); - } - } - .bui-ml { - margin-left: var(--ml); - } - .bui-ml-0\.5 { - margin-left: var(--bui-space-0_5); - } - .bui-ml-1 { - margin-left: var(--bui-space-1); - } - .bui-ml-1\.5 { - margin-left: var(--bui-space-1_5); - } - .bui-ml-2 { - margin-left: var(--bui-space-2); - } - .bui-ml-3 { - margin-left: var(--bui-space-3); - } - .bui-ml-4 { - margin-left: var(--bui-space-4); - } - .bui-ml-5 { - margin-left: var(--bui-space-5); - } - .bui-ml-6 { - margin-left: var(--bui-space-6); - } - .bui-ml-7 { - margin-left: var(--bui-space-7); - } - .bui-ml-8 { - margin-left: var(--bui-space-8); - } - .bui-ml-9 { - margin-left: var(--bui-space-9); - } - .bui-ml-10 { - margin-left: var(--bui-space-10); - } - .bui-ml-11 { - margin-left: var(--bui-space-11); - } - .bui-ml-12 { - margin-left: var(--bui-space-12); - } - .bui-ml-13 { - margin-left: var(--bui-space-13); - } - .bui-ml-14 { - margin-left: var(--bui-space-14); - } - @media (width>=640px) { - .xs\:bui-ml { - margin-left: var(--ml-xs); - } - .xs\:bui-ml-0\.5 { - margin-left: var(--bui-space-0_5); - } - .xs\:bui-ml-1 { - margin-left: var(--bui-space-1); - } - .xs\:bui-ml-1\.5 { - margin-left: var(--bui-space-1_5); - } - .xs\:bui-ml-2 { - margin-left: var(--bui-space-2); - } - .xs\:bui-ml-3 { - margin-left: var(--bui-space-3); - } - .xs\:bui-ml-4 { - margin-left: var(--bui-space-4); - } - .xs\:bui-ml-5 { - margin-left: var(--bui-space-5); - } - .xs\:bui-ml-6 { - margin-left: var(--bui-space-6); - } - .xs\:bui-ml-7 { - margin-left: var(--bui-space-7); - } - .xs\:bui-ml-8 { - margin-left: var(--bui-space-8); - } - .xs\:bui-ml-9 { - margin-left: var(--bui-space-9); - } - .xs\:bui-ml-10 { - margin-left: var(--bui-space-10); - } - .xs\:bui-ml-11 { - margin-left: var(--bui-space-11); - } - .xs\:bui-ml-12 { - margin-left: var(--bui-space-12); - } - .xs\:bui-ml-13 { - margin-left: var(--bui-space-13); - } - .xs\:bui-ml-14 { - margin-left: var(--bui-space-14); - } - } - @media (width>=768px) { - .sm\:bui-ml { - margin-left: var(--ml-sm); - } - .sm\:bui-ml-0\.5 { - margin-left: var(--bui-space-0_5); - } - .sm\:bui-ml-1 { - margin-left: var(--bui-space-1); - } - .sm\:bui-ml-1\.5 { - margin-left: var(--bui-space-1_5); - } - .sm\:bui-ml-2 { - margin-left: var(--bui-space-2); - } - .sm\:bui-ml-3 { - margin-left: var(--bui-space-3); - } - .sm\:bui-ml-4 { - margin-left: var(--bui-space-4); - } - .sm\:bui-ml-5 { - margin-left: var(--bui-space-5); - } - .sm\:bui-ml-6 { - margin-left: var(--bui-space-6); - } - .sm\:bui-ml-7 { - margin-left: var(--bui-space-7); - } - .sm\:bui-ml-8 { - margin-left: var(--bui-space-8); - } - .sm\:bui-ml-9 { - margin-left: var(--bui-space-9); - } - .sm\:bui-ml-10 { - margin-left: var(--bui-space-10); - } - .sm\:bui-ml-11 { - margin-left: var(--bui-space-11); - } - .sm\:bui-ml-12 { - margin-left: var(--bui-space-12); - } - .sm\:bui-ml-13 { - margin-left: var(--bui-space-13); - } - .sm\:bui-ml-14 { - margin-left: var(--bui-space-14); - } - } - @media (width>=1024px) { - .md\:bui-ml { - margin-left: var(--ml-md); - } - .md\:bui-ml-0\.5 { - margin-left: var(--bui-space-0_5); - } - .md\:bui-ml-1 { - margin-left: var(--bui-space-1); - } - .md\:bui-ml-1\.5 { - margin-left: var(--bui-space-1_5); - } - .md\:bui-ml-2 { - margin-left: var(--bui-space-2); - } - .md\:bui-ml-3 { - margin-left: var(--bui-space-3); - } - .md\:bui-ml-4 { - margin-left: var(--bui-space-4); - } - .md\:bui-ml-5 { - margin-left: var(--bui-space-5); - } - .md\:bui-ml-6 { - margin-left: var(--bui-space-6); - } - .md\:bui-ml-7 { - margin-left: var(--bui-space-7); - } - .md\:bui-ml-8 { - margin-left: var(--bui-space-8); - } - .md\:bui-ml-9 { - margin-left: var(--bui-space-9); - } - .md\:bui-ml-10 { - margin-left: var(--bui-space-10); - } - .md\:bui-ml-11 { - margin-left: var(--bui-space-11); - } - .md\:bui-ml-12 { - margin-left: var(--bui-space-12); - } - .md\:bui-ml-13 { - margin-left: var(--bui-space-13); - } - .md\:bui-ml-14 { - margin-left: var(--bui-space-14); - } - } - @media (width>=1280px) { - .lg\:bui-ml { - margin-left: var(--ml-lg); - } - .lg\:bui-ml-0\.5 { - margin-left: var(--bui-space-0_5); - } - .lg\:bui-ml-1 { - margin-left: var(--bui-space-1); - } - .lg\:bui-ml-1\.5 { - margin-left: var(--bui-space-1_5); - } - .lg\:bui-ml-2 { - margin-left: var(--bui-space-2); - } - .lg\:bui-ml-3 { - margin-left: var(--bui-space-3); - } - .lg\:bui-ml-4 { - margin-left: var(--bui-space-4); - } - .lg\:bui-ml-5 { - margin-left: var(--bui-space-5); - } - .lg\:bui-ml-6 { - margin-left: var(--bui-space-6); - } - .lg\:bui-ml-7 { - margin-left: var(--bui-space-7); - } - .lg\:bui-ml-8 { - margin-left: var(--bui-space-8); - } - .lg\:bui-ml-9 { - margin-left: var(--bui-space-9); - } - .lg\:bui-ml-10 { - margin-left: var(--bui-space-10); - } - .lg\:bui-ml-11 { - margin-left: var(--bui-space-11); - } - .lg\:bui-ml-12 { - margin-left: var(--bui-space-12); - } - .lg\:bui-ml-13 { - margin-left: var(--bui-space-13); - } - .lg\:bui-ml-14 { - margin-left: var(--bui-space-14); - } - } - @media (width>=1536px) { - .xl\:bui-ml { - margin-left: var(--ml-xl); - } - .xl\:bui-ml-0\.5 { - margin-left: var(--bui-space-0_5); - } - .xl\:bui-ml-1 { - margin-left: var(--bui-space-1); - } - .xl\:bui-ml-1\.5 { - margin-left: var(--bui-space-1_5); - } - .xl\:bui-ml-2 { - margin-left: var(--bui-space-2); - } - .xl\:bui-ml-3 { - margin-left: var(--bui-space-3); - } - .xl\:bui-ml-4 { - margin-left: var(--bui-space-4); - } - .xl\:bui-ml-5 { - margin-left: var(--bui-space-5); - } - .xl\:bui-ml-6 { - margin-left: var(--bui-space-6); - } - .xl\:bui-ml-7 { - margin-left: var(--bui-space-7); - } - .xl\:bui-ml-8 { - margin-left: var(--bui-space-8); - } - .xl\:bui-ml-9 { - margin-left: var(--bui-space-9); - } - .xl\:bui-ml-10 { - margin-left: var(--bui-space-10); - } - .xl\:bui-ml-11 { - margin-left: var(--bui-space-11); - } - .xl\:bui-ml-12 { - margin-left: var(--bui-space-12); - } - .xl\:bui-ml-13 { - margin-left: var(--bui-space-13); - } - .xl\:bui-ml-14 { - margin-left: var(--bui-space-14); - } - } - .bui-mr { - margin-right: var(--mr); - } - .bui-mr-0\.5 { - margin-right: var(--bui-space-0_5); - } - .bui-mr-1 { - margin-right: var(--bui-space-1); - } - .bui-mr-1\.5 { - margin-right: var(--bui-space-1_5); - } - .bui-mr-2 { - margin-right: var(--bui-space-2); - } - .bui-mr-3 { - margin-right: var(--bui-space-3); - } - .bui-mr-4 { - margin-right: var(--bui-space-4); - } - .bui-mr-5 { - margin-right: var(--bui-space-5); - } - .bui-mr-6 { - margin-right: var(--bui-space-6); - } - .bui-mr-7 { - margin-right: var(--bui-space-7); - } - .bui-mr-8 { - margin-right: var(--bui-space-8); - } - .bui-mr-9 { - margin-right: var(--bui-space-9); - } - .bui-mr-10 { - margin-right: var(--bui-space-10); - } - .bui-mr-11 { - margin-right: var(--bui-space-11); - } - .bui-mr-12 { - margin-right: var(--bui-space-12); - } - .bui-mr-13 { - margin-right: var(--bui-space-13); - } - .bui-mr-14 { - margin-right: var(--bui-space-14); - } - @media (width>=640px) { - .xs\:bui-mr { - margin-right: var(--mr-xs); - } - .xs\:bui-mr-0\.5 { - margin-right: var(--bui-space-0_5); - } - .xs\:bui-mr-1 { - margin-right: var(--bui-space-1); - } - .xs\:bui-mr-1\.5 { - margin-right: var(--bui-space-1_5); - } - .xs\:bui-mr-2 { - margin-right: var(--bui-space-2); - } - .xs\:bui-mr-3 { - margin-right: var(--bui-space-3); - } - .xs\:bui-mr-4 { - margin-right: var(--bui-space-4); - } - .xs\:bui-mr-5 { - margin-right: var(--bui-space-5); - } - .xs\:bui-mr-6 { - margin-right: var(--bui-space-6); - } - .xs\:bui-mr-7 { - margin-right: var(--bui-space-7); - } - .xs\:bui-mr-8 { - margin-right: var(--bui-space-8); - } - .xs\:bui-mr-9 { - margin-right: var(--bui-space-9); - } - .xs\:bui-mr-10 { - margin-right: var(--bui-space-10); - } - .xs\:bui-mr-11 { - margin-right: var(--bui-space-11); - } - .xs\:bui-mr-12 { - margin-right: var(--bui-space-12); - } - .xs\:bui-mr-13 { - margin-right: var(--bui-space-13); - } - .xs\:bui-mr-14 { - margin-right: var(--bui-space-14); - } - } - @media (width>=768px) { - .sm\:bui-mr { - margin-right: var(--mr-sm); - } - .sm\:bui-mr-0\.5 { - margin-right: var(--bui-space-0_5); - } - .sm\:bui-mr-1 { - margin-right: var(--bui-space-1); - } - .sm\:bui-mr-1\.5 { - margin-right: var(--bui-space-1_5); - } - .sm\:bui-mr-2 { - margin-right: var(--bui-space-2); - } - .sm\:bui-mr-3 { - margin-right: var(--bui-space-3); - } - .sm\:bui-mr-4 { - margin-right: var(--bui-space-4); - } - .sm\:bui-mr-5 { - margin-right: var(--bui-space-5); - } - .sm\:bui-mr-6 { - margin-right: var(--bui-space-6); - } - .sm\:bui-mr-7 { - margin-right: var(--bui-space-7); - } - .sm\:bui-mr-8 { - margin-right: var(--bui-space-8); - } - .sm\:bui-mr-9 { - margin-right: var(--bui-space-9); - } - .sm\:bui-mr-10 { - margin-right: var(--bui-space-10); - } - .sm\:bui-mr-11 { - margin-right: var(--bui-space-11); - } - .sm\:bui-mr-12 { - margin-right: var(--bui-space-12); - } - .sm\:bui-mr-13 { - margin-right: var(--bui-space-13); - } - .sm\:bui-mr-14 { - margin-right: var(--bui-space-14); - } - } - @media (width>=1024px) { - .md\:bui-mr { - margin-right: var(--mr-md); - } - .md\:bui-mr-0\.5 { - margin-right: var(--bui-space-0_5); - } - .md\:bui-mr-1 { - margin-right: var(--bui-space-1); - } - .md\:bui-mr-1\.5 { - margin-right: var(--bui-space-1_5); - } - .md\:bui-mr-2 { - margin-right: var(--bui-space-2); - } - .md\:bui-mr-3 { - margin-right: var(--bui-space-3); - } - .md\:bui-mr-4 { - margin-right: var(--bui-space-4); - } - .md\:bui-mr-5 { - margin-right: var(--bui-space-5); - } - .md\:bui-mr-6 { - margin-right: var(--bui-space-6); - } - .md\:bui-mr-7 { - margin-right: var(--bui-space-7); - } - .md\:bui-mr-8 { - margin-right: var(--bui-space-8); - } - .md\:bui-mr-9 { - margin-right: var(--bui-space-9); - } - .md\:bui-mr-10 { - margin-right: var(--bui-space-10); - } - .md\:bui-mr-11 { - margin-right: var(--bui-space-11); - } - .md\:bui-mr-12 { - margin-right: var(--bui-space-12); - } - .md\:bui-mr-13 { - margin-right: var(--bui-space-13); - } - .md\:bui-mr-14 { - margin-right: var(--bui-space-14); - } - } - @media (width>=1280px) { - .lg\:bui-mr { - margin-right: var(--mr-lg); - } - .lg\:bui-mr-0\.5 { - margin-right: var(--bui-space-0_5); - } - .lg\:bui-mr-1 { - margin-right: var(--bui-space-1); - } - .lg\:bui-mr-1\.5 { - margin-right: var(--bui-space-1_5); - } - .lg\:bui-mr-2 { - margin-right: var(--bui-space-2); - } - .lg\:bui-mr-3 { - margin-right: var(--bui-space-3); - } - .lg\:bui-mr-4 { - margin-right: var(--bui-space-4); - } - .lg\:bui-mr-5 { - margin-right: var(--bui-space-5); - } - .lg\:bui-mr-6 { - margin-right: var(--bui-space-6); - } - .lg\:bui-mr-7 { - margin-right: var(--bui-space-7); - } - .lg\:bui-mr-8 { - margin-right: var(--bui-space-8); - } - .lg\:bui-mr-9 { - margin-right: var(--bui-space-9); - } - .lg\:bui-mr-10 { - margin-right: var(--bui-space-10); - } - .lg\:bui-mr-11 { - margin-right: var(--bui-space-11); - } - .lg\:bui-mr-12 { - margin-right: var(--bui-space-12); - } - .lg\:bui-mr-13 { - margin-right: var(--bui-space-13); - } - .lg\:bui-mr-14 { - margin-right: var(--bui-space-14); - } - } - @media (width>=1536px) { - .xl\:bui-mr { - margin-right: var(--mr-xl); - } - .xl\:bui-mr-0\.5 { - margin-right: var(--bui-space-0_5); - } - .xl\:bui-mr-1 { - margin-right: var(--bui-space-1); - } - .xl\:bui-mr-1\.5 { - margin-right: var(--bui-space-1_5); - } - .xl\:bui-mr-2 { - margin-right: var(--bui-space-2); - } - .xl\:bui-mr-3 { - margin-right: var(--bui-space-3); - } - .xl\:bui-mr-4 { - margin-right: var(--bui-space-4); - } - .xl\:bui-mr-5 { - margin-right: var(--bui-space-5); - } - .xl\:bui-mr-6 { - margin-right: var(--bui-space-6); - } - .xl\:bui-mr-7 { - margin-right: var(--bui-space-7); - } - .xl\:bui-mr-8 { - margin-right: var(--bui-space-8); - } - .xl\:bui-mr-9 { - margin-right: var(--bui-space-9); - } - .xl\:bui-mr-10 { - margin-right: var(--bui-space-10); - } - .xl\:bui-mr-11 { - margin-right: var(--bui-space-11); - } - .xl\:bui-mr-12 { - margin-right: var(--bui-space-12); - } - .xl\:bui-mr-13 { - margin-right: var(--bui-space-13); - } - .xl\:bui-mr-14 { - margin-right: var(--bui-space-14); - } - } - .bui-mt { - margin-top: var(--mt); - } - .bui-mt-0\.5 { - margin-top: var(--bui-space-0_5); - } - .bui-mt-1 { - margin-top: var(--bui-space-1); - } - .bui-mt-1\.5 { - margin-top: var(--bui-space-1_5); - } - .bui-mt-2 { - margin-top: var(--bui-space-2); - } - .bui-mt-3 { - margin-top: var(--bui-space-3); - } - .bui-mt-4 { - margin-top: var(--bui-space-4); - } - .bui-mt-5 { - margin-top: var(--bui-space-5); - } - .bui-mt-6 { - margin-top: var(--bui-space-6); - } - .bui-mt-7 { - margin-top: var(--bui-space-7); - } - .bui-mt-8 { - margin-top: var(--bui-space-8); - } - .bui-mt-9 { - margin-top: var(--bui-space-9); - } - .bui-mt-10 { - margin-top: var(--bui-space-10); - } - .bui-mt-11 { - margin-top: var(--bui-space-11); - } - .bui-mt-12 { - margin-top: var(--bui-space-12); - } - .bui-mt-13 { - margin-top: var(--bui-space-13); - } - .bui-mt-14 { - margin-top: var(--bui-space-14); - } - @media (width>=640px) { - .xs\:bui-mt { - margin-top: var(--mt-xs); - } - .xs\:bui-mt-0\.5 { - margin-top: var(--bui-space-0_5); - } - .xs\:bui-mt-1 { - margin-top: var(--bui-space-1); - } - .xs\:bui-mt-1\.5 { - margin-top: var(--bui-space-1_5); - } - .xs\:bui-mt-2 { - margin-top: var(--bui-space-2); - } - .xs\:bui-mt-3 { - margin-top: var(--bui-space-3); - } - .xs\:bui-mt-4 { - margin-top: var(--bui-space-4); - } - .xs\:bui-mt-5 { - margin-top: var(--bui-space-5); - } - .xs\:bui-mt-6 { - margin-top: var(--bui-space-6); - } - .xs\:bui-mt-7 { - margin-top: var(--bui-space-7); - } - .xs\:bui-mt-8 { - margin-top: var(--bui-space-8); - } - .xs\:bui-mt-9 { - margin-top: var(--bui-space-9); - } - .xs\:bui-mt-10 { - margin-top: var(--bui-space-10); - } - .xs\:bui-mt-11 { - margin-top: var(--bui-space-11); - } - .xs\:bui-mt-12 { - margin-top: var(--bui-space-12); - } - .xs\:bui-mt-13 { - margin-top: var(--bui-space-13); - } - .xs\:bui-mt-14 { - margin-top: var(--bui-space-14); - } - } - @media (width>=768px) { - .sm\:bui-mt { - margin-top: var(--mt-sm); - } - .sm\:bui-mt-0\.5 { - margin-top: var(--bui-space-0_5); - } - .sm\:bui-mt-1 { - margin-top: var(--bui-space-1); - } - .sm\:bui-mt-1\.5 { - margin-top: var(--bui-space-1_5); - } - .sm\:bui-mt-2 { - margin-top: var(--bui-space-2); - } - .sm\:bui-mt-3 { - margin-top: var(--bui-space-3); - } - .sm\:bui-mt-4 { - margin-top: var(--bui-space-4); - } - .sm\:bui-mt-5 { - margin-top: var(--bui-space-5); - } - .sm\:bui-mt-6 { - margin-top: var(--bui-space-6); - } - .sm\:bui-mt-7 { - margin-top: var(--bui-space-7); - } - .sm\:bui-mt-8 { - margin-top: var(--bui-space-8); - } - .sm\:bui-mt-9 { - margin-top: var(--bui-space-9); - } - .sm\:bui-mt-10 { - margin-top: var(--bui-space-10); - } - .sm\:bui-mt-11 { - margin-top: var(--bui-space-11); - } - .sm\:bui-mt-12 { - margin-top: var(--bui-space-12); - } - .sm\:bui-mt-13 { - margin-top: var(--bui-space-13); - } - .sm\:bui-mt-14 { - margin-top: var(--bui-space-14); - } - } - @media (width>=1024px) { - .md\:bui-mt { - margin-top: var(--mt-md); - } - .md\:bui-mt-0\.5 { - margin-top: var(--bui-space-0_5); - } - .md\:bui-mt-1 { - margin-top: var(--bui-space-1); - } - .md\:bui-mt-1\.5 { - margin-top: var(--bui-space-1_5); - } - .md\:bui-mt-2 { - margin-top: var(--bui-space-2); - } - .md\:bui-mt-3 { - margin-top: var(--bui-space-3); - } - .md\:bui-mt-4 { - margin-top: var(--bui-space-4); - } - .md\:bui-mt-5 { - margin-top: var(--bui-space-5); - } - .md\:bui-mt-6 { - margin-top: var(--bui-space-6); - } - .md\:bui-mt-7 { - margin-top: var(--bui-space-7); - } - .md\:bui-mt-8 { - margin-top: var(--bui-space-8); - } - .md\:bui-mt-9 { - margin-top: var(--bui-space-9); - } - .md\:bui-mt-10 { - margin-top: var(--bui-space-10); - } - .md\:bui-mt-11 { - margin-top: var(--bui-space-11); - } - .md\:bui-mt-12 { - margin-top: var(--bui-space-12); - } - .md\:bui-mt-13 { - margin-top: var(--bui-space-13); - } - .md\:bui-mt-14 { - margin-top: var(--bui-space-14); - } - } - @media (width>=1280px) { - .lg\:bui-mt { - margin-top: var(--mt-lg); - } - .lg\:bui-mt-0\.5 { - margin-top: var(--bui-space-0_5); - } - .lg\:bui-mt-1 { - margin-top: var(--bui-space-1); - } - .lg\:bui-mt-1\.5 { - margin-top: var(--bui-space-1_5); - } - .lg\:bui-mt-2 { - margin-top: var(--bui-space-2); - } - .lg\:bui-mt-3 { - margin-top: var(--bui-space-3); - } - .lg\:bui-mt-4 { - margin-top: var(--bui-space-4); - } - .lg\:bui-mt-5 { - margin-top: var(--bui-space-5); - } - .lg\:bui-mt-6 { - margin-top: var(--bui-space-6); - } - .lg\:bui-mt-7 { - margin-top: var(--bui-space-7); - } - .lg\:bui-mt-8 { - margin-top: var(--bui-space-8); - } - .lg\:bui-mt-9 { - margin-top: var(--bui-space-9); - } - .lg\:bui-mt-10 { - margin-top: var(--bui-space-10); - } - .lg\:bui-mt-11 { - margin-top: var(--bui-space-11); - } - .lg\:bui-mt-12 { - margin-top: var(--bui-space-12); - } - .lg\:bui-mt-13 { - margin-top: var(--bui-space-13); - } - .lg\:bui-mt-14 { - margin-top: var(--bui-space-14); - } - } - @media (width>=1536px) { - .xl\:bui-mt { - margin-top: var(--mt-xl); - } - .xl\:bui-mt-0\.5 { - margin-top: var(--bui-space-0_5); - } - .xl\:bui-mt-1 { - margin-top: var(--bui-space-1); - } - .xl\:bui-mt-1\.5 { - margin-top: var(--bui-space-1_5); - } - .xl\:bui-mt-2 { - margin-top: var(--bui-space-2); - } - .xl\:bui-mt-3 { - margin-top: var(--bui-space-3); - } - .xl\:bui-mt-4 { - margin-top: var(--bui-space-4); - } - .xl\:bui-mt-5 { - margin-top: var(--bui-space-5); - } - .xl\:bui-mt-6 { - margin-top: var(--bui-space-6); - } - .xl\:bui-mt-7 { - margin-top: var(--bui-space-7); - } - .xl\:bui-mt-8 { - margin-top: var(--bui-space-8); - } - .xl\:bui-mt-9 { - margin-top: var(--bui-space-9); - } - .xl\:bui-mt-10 { - margin-top: var(--bui-space-10); - } - .xl\:bui-mt-11 { - margin-top: var(--bui-space-11); - } - .xl\:bui-mt-12 { - margin-top: var(--bui-space-12); - } - .xl\:bui-mt-13 { - margin-top: var(--bui-space-13); - } - .xl\:bui-mt-14 { - margin-top: var(--bui-space-14); - } - } - .bui-mb { - margin-bottom: var(--mb); - } - .bui-mb-0\.5 { - margin-bottom: var(--bui-space-0_5); - } - .bui-mb-1 { - margin-bottom: var(--bui-space-1); - } - .bui-mb-1\.5 { - margin-bottom: var(--bui-space-1_5); - } - .bui-mb-2 { - margin-bottom: var(--bui-space-2); - } - .bui-mb-3 { - margin-bottom: var(--bui-space-3); - } - .bui-mb-4 { - margin-bottom: var(--bui-space-4); - } - .bui-mb-5 { - margin-bottom: var(--bui-space-5); - } - .bui-mb-6 { - margin-bottom: var(--bui-space-6); - } - .bui-mb-7 { - margin-bottom: var(--bui-space-7); - } - .bui-mb-8 { - margin-bottom: var(--bui-space-8); - } - .bui-mb-9 { - margin-bottom: var(--bui-space-9); - } - .bui-mb-10 { - margin-bottom: var(--bui-space-10); - } - .bui-mb-11 { - margin-bottom: var(--bui-space-11); - } - .bui-mb-12 { - margin-bottom: var(--bui-space-12); - } - .bui-mb-13 { - margin-bottom: var(--bui-space-13); - } - .bui-mb-14 { - margin-bottom: var(--bui-space-14); - } - @media (width>=640px) { - .xs\:bui-mb { - margin-bottom: var(--mb-xs); - } - .xs\:bui-mb-0\.5 { - margin-bottom: var(--bui-space-0_5); - } - .xs\:bui-mb-1 { - margin-bottom: var(--bui-space-1); - } - .xs\:bui-mb-1\.5 { - margin-bottom: var(--bui-space-1_5); - } - .xs\:bui-mb-2 { - margin-bottom: var(--bui-space-2); - } - .xs\:bui-mb-3 { - margin-bottom: var(--bui-space-3); - } - .xs\:bui-mb-4 { - margin-bottom: var(--bui-space-4); - } - .xs\:bui-mb-5 { - margin-bottom: var(--bui-space-5); - } - .xs\:bui-mb-6 { - margin-bottom: var(--bui-space-6); - } - .xs\:bui-mb-7 { - margin-bottom: var(--bui-space-7); - } - .xs\:bui-mb-8 { - margin-bottom: var(--bui-space-8); - } - .xs\:bui-mb-9 { - margin-bottom: var(--bui-space-9); - } - .xs\:bui-mb-10 { - margin-bottom: var(--bui-space-10); - } - .xs\:bui-mb-11 { - margin-bottom: var(--bui-space-11); - } - .xs\:bui-mb-12 { - margin-bottom: var(--bui-space-12); - } - .xs\:bui-mb-13 { - margin-bottom: var(--bui-space-13); - } - .xs\:bui-mb-14 { - margin-bottom: var(--bui-space-14); - } - } - @media (width>=768px) { - .sm\:bui-mb { - margin-bottom: var(--mb-sm); - } - .sm\:bui-mb-0\.5 { - margin-bottom: var(--bui-space-0_5); - } - .sm\:bui-mb-1 { - margin-bottom: var(--bui-space-1); - } - .sm\:bui-mb-1\.5 { - margin-bottom: var(--bui-space-1_5); - } - .sm\:bui-mb-2 { - margin-bottom: var(--bui-space-2); - } - .sm\:bui-mb-3 { - margin-bottom: var(--bui-space-3); - } - .sm\:bui-mb-4 { - margin-bottom: var(--bui-space-4); - } - .sm\:bui-mb-5 { - margin-bottom: var(--bui-space-5); - } - .sm\:bui-mb-6 { - margin-bottom: var(--bui-space-6); - } - .sm\:bui-mb-7 { - margin-bottom: var(--bui-space-7); - } - .sm\:bui-mb-8 { - margin-bottom: var(--bui-space-8); - } - .sm\:bui-mb-9 { - margin-bottom: var(--bui-space-9); - } - .sm\:bui-mb-10 { - margin-bottom: var(--bui-space-10); - } - .sm\:bui-mb-11 { - margin-bottom: var(--bui-space-11); - } - .sm\:bui-mb-12 { - margin-bottom: var(--bui-space-12); - } - .sm\:bui-mb-13 { - margin-bottom: var(--bui-space-13); - } - .sm\:bui-mb-14 { - margin-bottom: var(--bui-space-14); - } - } - @media (width>=1024px) { - .md\:bui-mb { - margin-bottom: var(--mb-md); - } - .md\:bui-mb-0\.5 { - margin-bottom: var(--bui-space-0_5); - } - .md\:bui-mb-1 { - margin-bottom: var(--bui-space-1); - } - .md\:bui-mb-1\.5 { - margin-bottom: var(--bui-space-1_5); - } - .md\:bui-mb-2 { - margin-bottom: var(--bui-space-2); - } - .md\:bui-mb-3 { - margin-bottom: var(--bui-space-3); - } - .md\:bui-mb-4 { - margin-bottom: var(--bui-space-4); - } - .md\:bui-mb-5 { - margin-bottom: var(--bui-space-5); - } - .md\:bui-mb-6 { - margin-bottom: var(--bui-space-6); - } - .md\:bui-mb-7 { - margin-bottom: var(--bui-space-7); - } - .md\:bui-mb-8 { - margin-bottom: var(--bui-space-8); - } - .md\:bui-mb-9 { - margin-bottom: var(--bui-space-9); - } - .md\:bui-mb-10 { - margin-bottom: var(--bui-space-10); - } - .md\:bui-mb-11 { - margin-bottom: var(--bui-space-11); - } - .md\:bui-mb-12 { - margin-bottom: var(--bui-space-12); - } - .md\:bui-mb-13 { - margin-bottom: var(--bui-space-13); - } - .md\:bui-mb-14 { - margin-bottom: var(--bui-space-14); - } - } - @media (width>=1280px) { - .lg\:bui-mb { - margin-bottom: var(--mb-lg); - } - .lg\:bui-mb-0\.5 { - margin-bottom: var(--bui-space-0_5); - } - .lg\:bui-mb-1 { - margin-bottom: var(--bui-space-1); - } - .lg\:bui-mb-1\.5 { - margin-bottom: var(--bui-space-1_5); - } - .lg\:bui-mb-2 { - margin-bottom: var(--bui-space-2); - } - .lg\:bui-mb-3 { - margin-bottom: var(--bui-space-3); - } - .lg\:bui-mb-4 { - margin-bottom: var(--bui-space-4); - } - .lg\:bui-mb-5 { - margin-bottom: var(--bui-space-5); - } - .lg\:bui-mb-6 { - margin-bottom: var(--bui-space-6); - } - .lg\:bui-mb-7 { - margin-bottom: var(--bui-space-7); - } - .lg\:bui-mb-8 { - margin-bottom: var(--bui-space-8); - } - .lg\:bui-mb-9 { - margin-bottom: var(--bui-space-9); - } - .lg\:bui-mb-10 { - margin-bottom: var(--bui-space-10); - } - .lg\:bui-mb-11 { - margin-bottom: var(--bui-space-11); - } - .lg\:bui-mb-12 { - margin-bottom: var(--bui-space-12); - } - .lg\:bui-mb-13 { - margin-bottom: var(--bui-space-13); - } - .lg\:bui-mb-14 { - margin-bottom: var(--bui-space-14); - } - } - @media (width>=1536px) { - .xl\:bui-mb { - margin-bottom: var(--mb-xl); - } - .xl\:bui-mb-0\.5 { - margin-bottom: var(--bui-space-0_5); - } - .xl\:bui-mb-1 { - margin-bottom: var(--bui-space-1); - } - .xl\:bui-mb-1\.5 { - margin-bottom: var(--bui-space-1_5); - } - .xl\:bui-mb-2 { - margin-bottom: var(--bui-space-2); - } - .xl\:bui-mb-3 { - margin-bottom: var(--bui-space-3); - } - .xl\:bui-mb-4 { - margin-bottom: var(--bui-space-4); - } - .xl\:bui-mb-5 { - margin-bottom: var(--bui-space-5); - } - .xl\:bui-mb-6 { - margin-bottom: var(--bui-space-6); - } - .xl\:bui-mb-7 { - margin-bottom: var(--bui-space-7); - } - .xl\:bui-mb-8 { - margin-bottom: var(--bui-space-8); - } - .xl\:bui-mb-9 { - margin-bottom: var(--bui-space-9); - } - .xl\:bui-mb-10 { - margin-bottom: var(--bui-space-10); - } - .xl\:bui-mb-11 { - margin-bottom: var(--bui-space-11); - } - .xl\:bui-mb-12 { - margin-bottom: var(--bui-space-12); - } - .xl\:bui-mb-13 { - margin-bottom: var(--bui-space-13); - } - .xl\:bui-mb-14 { - margin-bottom: var(--bui-space-14); - } - } - .bui-my { - margin-top: var(--my); - margin-bottom: var(--my); - } - .bui-my-0\.5 { - margin-top: var(--bui-space-0_5); - margin-bottom: var(--bui-space-0_5); - } - .bui-my-1 { - margin-top: var(--bui-space-1); - margin-bottom: var(--bui-space-1); - } - .bui-my-1\.5 { - margin-top: var(--bui-space-1_5); - margin-bottom: var(--bui-space-1_5); - } - .bui-my-2 { - margin-top: var(--bui-space-2); - margin-bottom: var(--bui-space-2); - } - .bui-my-3 { - margin-top: var(--bui-space-3); - margin-bottom: var(--bui-space-3); - } - .bui-my-4 { - margin-top: var(--bui-space-4); - margin-bottom: var(--bui-space-4); - } - .bui-my-5 { - margin-top: var(--bui-space-5); - margin-bottom: var(--bui-space-5); - } - .bui-my-6 { - margin-top: var(--bui-space-6); - margin-bottom: var(--bui-space-6); - } - .bui-my-7 { - margin-top: var(--bui-space-7); - margin-bottom: var(--bui-space-7); - } - .bui-my-8 { - margin-top: var(--bui-space-8); - margin-bottom: var(--bui-space-8); - } - .bui-my-9 { - margin-top: var(--bui-space-9); - margin-bottom: var(--bui-space-9); - } - .bui-my-10 { - margin-top: var(--bui-space-10); - margin-bottom: var(--bui-space-10); - } - .bui-my-11 { - margin-top: var(--bui-space-11); - margin-bottom: var(--bui-space-11); - } - .bui-my-12 { - margin-top: var(--bui-space-12); - margin-bottom: var(--bui-space-12); - } - .bui-my-13 { - margin-top: var(--bui-space-13); - margin-bottom: var(--bui-space-13); - } - .bui-my-14 { - margin-top: var(--bui-space-14); - margin-bottom: var(--bui-space-14); - } - @media (width>=640px) { - .xs\:bui-my { - margin-top: var(--my-xs); - margin-bottom: var(--my-xs); - } - .xs\:bui-my-0\.5 { - margin-top: var(--bui-space-0_5); - margin-bottom: var(--bui-space-0_5); - } - .xs\:bui-my-1 { - margin-top: var(--bui-space-1); - margin-bottom: var(--bui-space-1); - } - .xs\:bui-my-1\.5 { - margin-top: var(--bui-space-1_5); - margin-bottom: var(--bui-space-1_5); - } - .xs\:bui-my-2 { - margin-top: var(--bui-space-2); - margin-bottom: var(--bui-space-2); - } - .xs\:bui-my-3 { - margin-top: var(--bui-space-3); - margin-bottom: var(--bui-space-3); - } - .xs\:bui-my-4 { - margin-top: var(--bui-space-4); - margin-bottom: var(--bui-space-4); - } - .xs\:bui-my-5 { - margin-top: var(--bui-space-5); - margin-bottom: var(--bui-space-5); - } - .xs\:bui-my-6 { - margin-top: var(--bui-space-6); - margin-bottom: var(--bui-space-6); - } - .xs\:bui-my-7 { - margin-top: var(--bui-space-7); - margin-bottom: var(--bui-space-7); - } - .xs\:bui-my-8 { - margin-top: var(--bui-space-8); - margin-bottom: var(--bui-space-8); - } - .xs\:bui-my-9 { - margin-top: var(--bui-space-9); - margin-bottom: var(--bui-space-9); - } - .xs\:bui-my-10 { - margin-top: var(--bui-space-10); - margin-bottom: var(--bui-space-10); - } - .xs\:bui-my-11 { - margin-top: var(--bui-space-11); - margin-bottom: var(--bui-space-11); - } - .xs\:bui-my-12 { - margin-top: var(--bui-space-12); - margin-bottom: var(--bui-space-12); - } - .xs\:bui-my-13 { - margin-top: var(--bui-space-13); - margin-bottom: var(--bui-space-13); - } - .xs\:bui-my-14 { - margin-top: var(--bui-space-14); - margin-bottom: var(--bui-space-14); - } - } - @media (width>=768px) { - .sm\:bui-my { - margin-top: var(--my-sm); - margin-bottom: var(--my-sm); - } - .sm\:bui-my-0\.5 { - margin-top: var(--bui-space-0_5); - margin-bottom: var(--bui-space-0_5); - } - .sm\:bui-my-1 { - margin-top: var(--bui-space-1); - margin-bottom: var(--bui-space-1); - } - .sm\:bui-my-1\.5 { - margin-top: var(--bui-space-1_5); - margin-bottom: var(--bui-space-1_5); - } - .sm\:bui-my-2 { - margin-top: var(--bui-space-2); - margin-bottom: var(--bui-space-2); - } - .sm\:bui-my-3 { - margin-top: var(--bui-space-3); - margin-bottom: var(--bui-space-3); - } - .sm\:bui-my-4 { - margin-top: var(--bui-space-4); - margin-bottom: var(--bui-space-4); - } - .sm\:bui-my-5 { - margin-top: var(--bui-space-5); - margin-bottom: var(--bui-space-5); - } - .sm\:bui-my-6 { - margin-top: var(--bui-space-6); - margin-bottom: var(--bui-space-6); - } - .sm\:bui-my-7 { - margin-top: var(--bui-space-7); - margin-bottom: var(--bui-space-7); - } - .sm\:bui-my-8 { - margin-top: var(--bui-space-8); - margin-bottom: var(--bui-space-8); - } - .sm\:bui-my-9 { - margin-top: var(--bui-space-9); - margin-bottom: var(--bui-space-9); - } - .sm\:bui-my-10 { - margin-top: var(--bui-space-10); - margin-bottom: var(--bui-space-10); - } - .sm\:bui-my-11 { - margin-top: var(--bui-space-11); - margin-bottom: var(--bui-space-11); - } - .sm\:bui-my-12 { - margin-top: var(--bui-space-12); - margin-bottom: var(--bui-space-12); - } - .sm\:bui-my-13 { - margin-top: var(--bui-space-13); - margin-bottom: var(--bui-space-13); - } - .sm\:bui-my-14 { - margin-top: var(--bui-space-14); - margin-bottom: var(--bui-space-14); - } - } - @media (width>=1024px) { - .md\:bui-my { - margin-top: var(--my-md); - margin-bottom: var(--my-md); - } - .md\:bui-my-0\.5 { - margin-top: var(--bui-space-0_5); - margin-bottom: var(--bui-space-0_5); - } - .md\:bui-my-1 { - margin-top: var(--bui-space-1); - margin-bottom: var(--bui-space-1); - } - .md\:bui-my-1\.5 { - margin-top: var(--bui-space-1_5); - margin-bottom: var(--bui-space-1_5); - } - .md\:bui-my-2 { - margin-top: var(--bui-space-2); - margin-bottom: var(--bui-space-2); - } - .md\:bui-my-3 { - margin-top: var(--bui-space-3); - margin-bottom: var(--bui-space-3); - } - .md\:bui-my-4 { - margin-top: var(--bui-space-4); - margin-bottom: var(--bui-space-4); - } - .md\:bui-my-5 { - margin-top: var(--bui-space-5); - margin-bottom: var(--bui-space-5); - } - .md\:bui-my-6 { - margin-top: var(--bui-space-6); - margin-bottom: var(--bui-space-6); - } - .md\:bui-my-7 { - margin-top: var(--bui-space-7); - margin-bottom: var(--bui-space-7); - } - .md\:bui-my-8 { - margin-top: var(--bui-space-8); - margin-bottom: var(--bui-space-8); - } - .md\:bui-my-9 { - margin-top: var(--bui-space-9); - margin-bottom: var(--bui-space-9); - } - .md\:bui-my-10 { - margin-top: var(--bui-space-10); - margin-bottom: var(--bui-space-10); - } - .md\:bui-my-11 { - margin-top: var(--bui-space-11); - margin-bottom: var(--bui-space-11); - } - .md\:bui-my-12 { - margin-top: var(--bui-space-12); - margin-bottom: var(--bui-space-12); - } - .md\:bui-my-13 { - margin-top: var(--bui-space-13); - margin-bottom: var(--bui-space-13); - } - .md\:bui-my-14 { - margin-top: var(--bui-space-14); - margin-bottom: var(--bui-space-14); - } - } - @media (width>=1280px) { - .lg\:bui-my { - margin-top: var(--my-lg); - margin-bottom: var(--my-lg); - } - .lg\:bui-my-0\.5 { - margin-top: var(--bui-space-0_5); - margin-bottom: var(--bui-space-0_5); - } - .lg\:bui-my-1 { - margin-top: var(--bui-space-1); - margin-bottom: var(--bui-space-1); - } - .lg\:bui-my-1\.5 { - margin-top: var(--bui-space-1_5); - margin-bottom: var(--bui-space-1_5); - } - .lg\:bui-my-2 { - margin-top: var(--bui-space-2); - margin-bottom: var(--bui-space-2); - } - .lg\:bui-my-3 { - margin-top: var(--bui-space-3); - margin-bottom: var(--bui-space-3); - } - .lg\:bui-my-4 { - margin-top: var(--bui-space-4); - margin-bottom: var(--bui-space-4); - } - .lg\:bui-my-5 { - margin-top: var(--bui-space-5); - margin-bottom: var(--bui-space-5); - } - .lg\:bui-my-6 { - margin-top: var(--bui-space-6); - margin-bottom: var(--bui-space-6); - } - .lg\:bui-my-7 { - margin-top: var(--bui-space-7); - margin-bottom: var(--bui-space-7); - } - .lg\:bui-my-8 { - margin-top: var(--bui-space-8); - margin-bottom: var(--bui-space-8); - } - .lg\:bui-my-9 { - margin-top: var(--bui-space-9); - margin-bottom: var(--bui-space-9); - } - .lg\:bui-my-10 { - margin-top: var(--bui-space-10); - margin-bottom: var(--bui-space-10); - } - .lg\:bui-my-11 { - margin-top: var(--bui-space-11); - margin-bottom: var(--bui-space-11); - } - .lg\:bui-my-12 { - margin-top: var(--bui-space-12); - margin-bottom: var(--bui-space-12); - } - .lg\:bui-my-13 { - margin-top: var(--bui-space-13); - margin-bottom: var(--bui-space-13); - } - .lg\:bui-my-14 { - margin-top: var(--bui-space-14); - margin-bottom: var(--bui-space-14); - } - } - @media (width>=1536px) { - .xl\:bui-my { - margin-top: var(--my-xl); - margin-bottom: var(--my-xl); - } - .xl\:bui-my-0\.5 { - margin-top: var(--bui-space-0_5); - margin-bottom: var(--bui-space-0_5); - } - .xl\:bui-my-1 { - margin-top: var(--bui-space-1); - margin-bottom: var(--bui-space-1); - } - .xl\:bui-my-1\.5 { - margin-top: var(--bui-space-1_5); - margin-bottom: var(--bui-space-1_5); - } - .xl\:bui-my-2 { - margin-top: var(--bui-space-2); - margin-bottom: var(--bui-space-2); - } - .xl\:bui-my-3 { - margin-top: var(--bui-space-3); - margin-bottom: var(--bui-space-3); - } - .xl\:bui-my-4 { - margin-top: var(--bui-space-4); - margin-bottom: var(--bui-space-4); - } - .xl\:bui-my-5 { - margin-top: var(--bui-space-5); - margin-bottom: var(--bui-space-5); - } - .xl\:bui-my-6 { - margin-top: var(--bui-space-6); - margin-bottom: var(--bui-space-6); - } - .xl\:bui-my-7 { - margin-top: var(--bui-space-7); - margin-bottom: var(--bui-space-7); - } - .xl\:bui-my-8 { - margin-top: var(--bui-space-8); - margin-bottom: var(--bui-space-8); - } - .xl\:bui-my-9 { - margin-top: var(--bui-space-9); - margin-bottom: var(--bui-space-9); - } - .xl\:bui-my-10 { - margin-top: var(--bui-space-10); - margin-bottom: var(--bui-space-10); - } - .xl\:bui-my-11 { - margin-top: var(--bui-space-11); - margin-bottom: var(--bui-space-11); - } - .xl\:bui-my-12 { - margin-top: var(--bui-space-12); - margin-bottom: var(--bui-space-12); - } - .xl\:bui-my-13 { - margin-top: var(--bui-space-13); - margin-bottom: var(--bui-space-13); - } - .xl\:bui-my-14 { - margin-top: var(--bui-space-14); - margin-bottom: var(--bui-space-14); - } - } - .bui-mx { - margin-left: var(--mx); - margin-right: var(--mx); - } - .bui-mx-0\.5 { - margin-left: var(--bui-space-0_5); - margin-right: var(--bui-space-0_5); - } - .bui-mx-1 { - margin-left: var(--bui-space-1); - margin-right: var(--bui-space-1); - } - .bui-mx-1\.5 { - margin-left: var(--bui-space-1_5); - margin-right: var(--bui-space-1_5); - } - .bui-mx-2 { - margin-left: var(--bui-space-2); - margin-right: var(--bui-space-2); - } - .bui-mx-3 { - margin-left: var(--bui-space-3); - margin-right: var(--bui-space-3); - } - .bui-mx-4 { - margin-left: var(--bui-space-4); - margin-right: var(--bui-space-4); - } - .bui-mx-5 { - margin-left: var(--bui-space-5); - margin-right: var(--bui-space-5); - } - .bui-mx-6 { - margin-left: var(--bui-space-6); - margin-right: var(--bui-space-6); - } - .bui-mx-7 { - margin-left: var(--bui-space-7); - margin-right: var(--bui-space-7); - } - .bui-mx-8 { - margin-left: var(--bui-space-8); - margin-right: var(--bui-space-8); - } - .bui-mx-9 { - margin-left: var(--bui-space-9); - margin-right: var(--bui-space-9); - } - .bui-mx-10 { - margin-left: var(--bui-space-10); - margin-right: var(--bui-space-10); - } - .bui-mx-11 { - margin-left: var(--bui-space-11); - margin-right: var(--bui-space-11); - } - .bui-mx-12 { - margin-left: var(--bui-space-12); - margin-right: var(--bui-space-12); - } - .bui-mx-13 { - margin-left: var(--bui-space-13); - margin-right: var(--bui-space-13); - } - .bui-mx-14 { - margin-left: var(--bui-space-14); - margin-right: var(--bui-space-14); - } - @media (width>=640px) { - .xs\:bui-mx { - margin-left: var(--mx-xs); - margin-right: var(--mx-xs); - } - .xs\:bui-mx-0\.5 { - margin-left: var(--bui-space-0_5); - margin-right: var(--bui-space-0_5); - } - .xs\:bui-mx-1 { - margin-left: var(--bui-space-1); - margin-right: var(--bui-space-1); - } - .xs\:bui-mx-1\.5 { - margin-left: var(--bui-space-1_5); - margin-right: var(--bui-space-1_5); - } - .xs\:bui-mx-2 { - margin-left: var(--bui-space-2); - margin-right: var(--bui-space-2); - } - .xs\:bui-mx-3 { - margin-left: var(--bui-space-3); - margin-right: var(--bui-space-3); - } - .xs\:bui-mx-4 { - margin-left: var(--bui-space-4); - margin-right: var(--bui-space-4); - } - .xs\:bui-mx-5 { - margin-left: var(--bui-space-5); - margin-right: var(--bui-space-5); - } - .xs\:bui-mx-6 { - margin-left: var(--bui-space-6); - margin-right: var(--bui-space-6); - } - .xs\:bui-mx-7 { - margin-left: var(--bui-space-7); - margin-right: var(--bui-space-7); - } - .xs\:bui-mx-8 { - margin-left: var(--bui-space-8); - margin-right: var(--bui-space-8); - } - .xs\:bui-mx-9 { - margin-left: var(--bui-space-9); - margin-right: var(--bui-space-9); - } - .xs\:bui-mx-10 { - margin-left: var(--bui-space-10); - margin-right: var(--bui-space-10); - } - .xs\:bui-mx-11 { - margin-left: var(--bui-space-11); - margin-right: var(--bui-space-11); - } - .xs\:bui-mx-12 { - margin-left: var(--bui-space-12); - margin-right: var(--bui-space-12); - } - .xs\:bui-mx-13 { - margin-left: var(--bui-space-13); - margin-right: var(--bui-space-13); - } - .xs\:bui-mx-14 { - margin-left: var(--bui-space-14); - margin-right: var(--bui-space-14); - } - } - @media (width>=768px) { - .sm\:bui-mx { - margin-left: var(--mx-sm); - margin-right: var(--mx-sm); - } - .sm\:bui-mx-0\.5 { - margin-left: var(--bui-space-0_5); - margin-right: var(--bui-space-0_5); - } - .sm\:bui-mx-1 { - margin-left: var(--bui-space-1); - margin-right: var(--bui-space-1); - } - .sm\:bui-mx-1\.5 { - margin-left: var(--bui-space-1_5); - margin-right: var(--bui-space-1_5); - } - .sm\:bui-mx-2 { - margin-left: var(--bui-space-2); - margin-right: var(--bui-space-2); - } - .sm\:bui-mx-3 { - margin-left: var(--bui-space-3); - margin-right: var(--bui-space-3); - } - .sm\:bui-mx-4 { - margin-left: var(--bui-space-4); - margin-right: var(--bui-space-4); - } - .sm\:bui-mx-5 { - margin-left: var(--bui-space-5); - margin-right: var(--bui-space-5); - } - .sm\:bui-mx-6 { - margin-left: var(--bui-space-6); - margin-right: var(--bui-space-6); - } - .sm\:bui-mx-7 { - margin-left: var(--bui-space-7); - margin-right: var(--bui-space-7); - } - .sm\:bui-mx-8 { - margin-left: var(--bui-space-8); - margin-right: var(--bui-space-8); - } - .sm\:bui-mx-9 { - margin-left: var(--bui-space-9); - margin-right: var(--bui-space-9); - } - .sm\:bui-mx-10 { - margin-left: var(--bui-space-10); - margin-right: var(--bui-space-10); - } - .sm\:bui-mx-11 { - margin-left: var(--bui-space-11); - margin-right: var(--bui-space-11); - } - .sm\:bui-mx-12 { - margin-left: var(--bui-space-12); - margin-right: var(--bui-space-12); - } - .sm\:bui-mx-13 { - margin-left: var(--bui-space-13); - margin-right: var(--bui-space-13); - } - .sm\:bui-mx-14 { - margin-left: var(--bui-space-14); - margin-right: var(--bui-space-14); - } - } - @media (width>=1024px) { - .md\:bui-mx { - margin-left: var(--mx-md); - margin-right: var(--mx-md); - } - .md\:bui-mx-0\.5 { - margin-left: var(--bui-space-0_5); - margin-right: var(--bui-space-0_5); - } - .md\:bui-mx-1 { - margin-left: var(--bui-space-1); - margin-right: var(--bui-space-1); - } - .md\:bui-mx-1\.5 { - margin-left: var(--bui-space-1_5); - margin-right: var(--bui-space-1_5); - } - .md\:bui-mx-2 { - margin-left: var(--bui-space-2); - margin-right: var(--bui-space-2); - } - .md\:bui-mx-3 { - margin-left: var(--bui-space-3); - margin-right: var(--bui-space-3); - } - .md\:bui-mx-4 { - margin-left: var(--bui-space-4); - margin-right: var(--bui-space-4); - } - .md\:bui-mx-5 { - margin-left: var(--bui-space-5); - margin-right: var(--bui-space-5); - } - .md\:bui-mx-6 { - margin-left: var(--bui-space-6); - margin-right: var(--bui-space-6); - } - .md\:bui-mx-7 { - margin-left: var(--bui-space-7); - margin-right: var(--bui-space-7); - } - .md\:bui-mx-8 { - margin-left: var(--bui-space-8); - margin-right: var(--bui-space-8); - } - .md\:bui-mx-9 { - margin-left: var(--bui-space-9); - margin-right: var(--bui-space-9); - } - .md\:bui-mx-10 { - margin-left: var(--bui-space-10); - margin-right: var(--bui-space-10); - } - .md\:bui-mx-11 { - margin-left: var(--bui-space-11); - margin-right: var(--bui-space-11); - } - .md\:bui-mx-12 { - margin-left: var(--bui-space-12); - margin-right: var(--bui-space-12); - } - .md\:bui-mx-13 { - margin-left: var(--bui-space-13); - margin-right: var(--bui-space-13); - } - .md\:bui-mx-14 { - margin-left: var(--bui-space-14); - margin-right: var(--bui-space-14); - } - } - @media (width>=1280px) { - .lg\:bui-mx { - margin-left: var(--mx-lg); - margin-right: var(--mx-lg); - } - .lg\:bui-mx-0\.5 { - margin-left: var(--bui-space-0_5); - margin-right: var(--bui-space-0_5); - } - .lg\:bui-mx-1 { - margin-left: var(--bui-space-1); - margin-right: var(--bui-space-1); - } - .lg\:bui-mx-1\.5 { - margin-left: var(--bui-space-1_5); - margin-right: var(--bui-space-1_5); - } - .lg\:bui-mx-2 { - margin-left: var(--bui-space-2); - margin-right: var(--bui-space-2); - } - .lg\:bui-mx-3 { - margin-left: var(--bui-space-3); - margin-right: var(--bui-space-3); - } - .lg\:bui-mx-4 { - margin-left: var(--bui-space-4); - margin-right: var(--bui-space-4); - } - .lg\:bui-mx-5 { - margin-left: var(--bui-space-5); - margin-right: var(--bui-space-5); - } - .lg\:bui-mx-6 { - margin-left: var(--bui-space-6); - margin-right: var(--bui-space-6); - } - .lg\:bui-mx-7 { - margin-left: var(--bui-space-7); - margin-right: var(--bui-space-7); - } - .lg\:bui-mx-8 { - margin-left: var(--bui-space-8); - margin-right: var(--bui-space-8); - } - .lg\:bui-mx-9 { - margin-left: var(--bui-space-9); - margin-right: var(--bui-space-9); - } - .lg\:bui-mx-10 { - margin-left: var(--bui-space-10); - margin-right: var(--bui-space-10); - } - .lg\:bui-mx-11 { - margin-left: var(--bui-space-11); - margin-right: var(--bui-space-11); - } - .lg\:bui-mx-12 { - margin-left: var(--bui-space-12); - margin-right: var(--bui-space-12); - } - .lg\:bui-mx-13 { - margin-left: var(--bui-space-13); - margin-right: var(--bui-space-13); - } - .lg\:bui-mx-14 { - margin-left: var(--bui-space-14); - margin-right: var(--bui-space-14); - } - } - @media (width>=1536px) { - .xl\:bui-mx { - margin-left: var(--mx-xl); - margin-right: var(--mx-xl); - } - .xl\:bui-mx-0\.5 { - margin-left: var(--bui-space-0_5); - margin-right: var(--bui-space-0_5); - } - .xl\:bui-mx-1 { - margin-left: var(--bui-space-1); - margin-right: var(--bui-space-1); - } - .xl\:bui-mx-1\.5 { - margin-left: var(--bui-space-1_5); - margin-right: var(--bui-space-1_5); - } - .xl\:bui-mx-2 { - margin-left: var(--bui-space-2); - margin-right: var(--bui-space-2); - } - .xl\:bui-mx-3 { - margin-left: var(--bui-space-3); - margin-right: var(--bui-space-3); - } - .xl\:bui-mx-4 { - margin-left: var(--bui-space-4); - margin-right: var(--bui-space-4); - } - .xl\:bui-mx-5 { - margin-left: var(--bui-space-5); - margin-right: var(--bui-space-5); - } - .xl\:bui-mx-6 { - margin-left: var(--bui-space-6); - margin-right: var(--bui-space-6); - } - .xl\:bui-mx-7 { - margin-left: var(--bui-space-7); - margin-right: var(--bui-space-7); - } - .xl\:bui-mx-8 { - margin-left: var(--bui-space-8); - margin-right: var(--bui-space-8); - } - .xl\:bui-mx-9 { - margin-left: var(--bui-space-9); - margin-right: var(--bui-space-9); - } - .xl\:bui-mx-10 { - margin-left: var(--bui-space-10); - margin-right: var(--bui-space-10); - } - .xl\:bui-mx-11 { - margin-left: var(--bui-space-11); - margin-right: var(--bui-space-11); - } - .xl\:bui-mx-12 { - margin-left: var(--bui-space-12); - margin-right: var(--bui-space-12); - } - .xl\:bui-mx-13 { - margin-left: var(--bui-space-13); - margin-right: var(--bui-space-13); - } - .xl\:bui-mx-14 { - margin-left: var(--bui-space-14); - margin-right: var(--bui-space-14); - } - } - .bui-display-none { - display: none; - } - .bui-display-inline { - display: inline; - } - .bui-display-inline-block { - display: inline-block; - } - .bui-display-block { - display: block; - } - @media (width>=640px) { - .xs\:bui-display-none { - display: none; - } - .xs\:bui-display-inline { - display: inline; - } - .xs\:bui-display-inline-block { - display: inline-block; - } - .xs\:bui-display-block { - display: block; - } - } - @media (width>=768px) { - .sm\:bui-display-none { - display: none; - } - .sm\:bui-display-inline { - display: inline; - } - .sm\:bui-display-inline-block { - display: inline-block; - } - .sm\:bui-display-block { - display: block; - } - } - @media (width>=1024px) { - .md\:bui-display-none { - display: none; - } - .md\:bui-display-inline { - display: inline; - } - .md\:bui-display-inline-block { - display: inline-block; - } - .md\:bui-display-block { - display: block; - } - } - @media (width>=1280px) { - .lg\:bui-display-none { - display: none; - } - .lg\:bui-display-inline { - display: inline; - } - .lg\:bui-display-inline-block { - display: inline-block; - } - .lg\:bui-display-block { - display: block; - } - } - @media (width>=1536px) { - .xl\:bui-display-none { - display: none; - } - .xl\:bui-display-inline { - display: inline; - } - .xl\:bui-display-inline-block { - display: inline-block; - } - .xl\:bui-display-block { - display: block; - } - } - .bui-w { - width: var(--width); - } - .bui-min-w { - min-width: var(--min-width); - } - .bui-max-w { - max-width: var(--max-width); - } - @media (width>=640px) { - .xs\:bui-w { - width: var(--width); - } - .xs\:bui-min-w { - min-width: var(--min-width); - } - .xs\:bui-max-w { - max-width: var(--max-width); - } - } - @media (width>=768px) { - .sm\:bui-w { - width: var(--width); - } - .sm\:bui-min-w { - min-width: var(--min-width); - } - .sm\:bui-max-w { - max-width: var(--max-width); - } - } - @media (width>=1024px) { - .md\:bui-w { - width: var(--width); - } - .md\:bui-min-w { - min-width: var(--min-width); - } - .md\:bui-max-w { - max-width: var(--max-width); - } - } - @media (width>=1280px) { - .lg\:bui-w { - width: var(--width); - } - .lg\:bui-min-w { - min-width: var(--min-width); - } - .lg\:bui-max-w { - max-width: var(--max-width); - } - } - @media (width>=1536px) { - .xl\:bui-w { - width: var(--width); - } - .xl\:bui-min-w { - min-width: var(--min-width); - } - .xl\:bui-max-w { - max-width: var(--max-width); - } - } - .bui-h { - height: var(--height); - } - .bui-min-h { - min-height: var(--min-height); - } - .bui-max-h { - max-height: var(--max-height); - } - @media (width>=640px) { - .xs\:bui-h { - height: var(--height); - } - .xs\:bui-min-h { - min-height: var(--min-height); - } - .xs\:bui-max-h { - max-height: var(--max-height); - } - } - @media (width>=768px) { - .sm\:bui-h { - height: var(--height); - } - .sm\:bui-min-h { - min-height: var(--min-height); - } - .sm\:bui-max-h { - max-height: var(--max-height); - } - } - @media (width>=1024px) { - .md\:bui-h { - height: var(--height); - } - .md\:bui-min-h { - min-height: var(--min-height); - } - .md\:bui-max-h { - max-height: var(--max-height); - } - } - @media (width>=1280px) { - .lg\:bui-h { - height: var(--height); - } - .lg\:bui-min-h { - min-height: var(--min-height); - } - .lg\:bui-max-h { - max-height: var(--max-height); - } - } - @media (width>=1536px) { - .xl\:bui-h { - height: var(--height); - } - .xl\:bui-min-h { - min-height: var(--min-height); - } - .xl\:bui-max-h { - max-height: var(--max-height); - } - } - .bui-position-absolute { - position: absolute; - } - .bui-position-fixed { - position: fixed; - } - .bui-position-sticky { - position: sticky; - } - .bui-position-relative { - position: relative; - } - .bui-position-static { - position: static; - } - @media (width>=640px) { - .xs\:bui-position-absolute { - position: absolute; - } - .xs\:bui-position-fixed { - position: fixed; - } - .xs\:bui-position-sticky { - position: sticky; - } - .xs\:bui-position-relative { - position: relative; - } - .xs\:bui-position-static { - position: static; - } - } - @media (width>=768px) { - .sm\:bui-position-absolute { - position: absolute; - } - .sm\:bui-position-fixed { - position: fixed; - } - .sm\:bui-position-sticky { - position: sticky; - } - .sm\:bui-position-relative { - position: relative; - } - .sm\:bui-position-static { - position: static; - } - } - @media (width>=1024px) { - .md\:bui-position-absolute { - position: absolute; - } - .md\:bui-position-fixed { - position: fixed; - } - .md\:bui-position-sticky { - position: sticky; - } - .md\:bui-position-relative { - position: relative; - } - .md\:bui-position-static { - position: static; - } - } - @media (width>=1280px) { - .lg\:bui-position-absolute { - position: absolute; - } - .lg\:bui-position-fixed { - position: fixed; - } - .lg\:bui-position-sticky { - position: sticky; - } - .lg\:bui-position-relative { - position: relative; - } - .lg\:bui-position-static { - position: static; - } - } - @media (width>=1536px) { - .xl\:bui-position-absolute { - position: absolute; - } - .xl\:bui-position-fixed { - position: fixed; - } - .xl\:bui-position-sticky { - position: sticky; - } - .xl\:bui-position-relative { - position: relative; - } - .xl\:bui-position-static { - position: static; - } - } - .bui-columns-1 { - grid-template-columns: repeat(1, minmax(0, 1fr)); - } - .bui-columns-2 { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } - .bui-columns-3 { - grid-template-columns: repeat(3, minmax(0, 1fr)); - } - .bui-columns-4 { - grid-template-columns: repeat(4, minmax(0, 1fr)); - } - .bui-columns-5 { - grid-template-columns: repeat(5, minmax(0, 1fr)); - } - .bui-columns-6 { - grid-template-columns: repeat(6, minmax(0, 1fr)); - } - .bui-columns-7 { - grid-template-columns: repeat(7, minmax(0, 1fr)); - } - .bui-columns-8 { - grid-template-columns: repeat(8, minmax(0, 1fr)); - } - .bui-columns-9 { - grid-template-columns: repeat(9, minmax(0, 1fr)); - } - .bui-columns-10 { - grid-template-columns: repeat(10, minmax(0, 1fr)); - } - .bui-columns-11 { - grid-template-columns: repeat(11, minmax(0, 1fr)); - } - .bui-columns-12 { - grid-template-columns: repeat(12, minmax(0, 1fr)); - } - .bui-columns-auto { - grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); - } - .bui-col-span-1 { - grid-column: span 1 / span 1; - } - .bui-col-span-2 { - grid-column: span 2 / span 2; - } - .bui-col-span-3 { - grid-column: span 3 / span 3; - } - .bui-col-span-4 { - grid-column: span 4 / span 4; - } - .bui-col-span-5 { - grid-column: span 5 / span 5; - } - .bui-col-span-6 { - grid-column: span 6 / span 6; - } - .bui-col-span-7 { - grid-column: span 7 / span 7; - } - .bui-col-span-8 { - grid-column: span 8 / span 8; - } - .bui-col-span-9 { - grid-column: span 9 / span 9; - } - .bui-col-span-10 { - grid-column: span 10 / span 10; - } - .bui-col-span-11 { - grid-column: span 11 / span 11; - } - .bui-col-span-12 { - grid-column: span 12 / span 12; - } - .bui-col-span-auto { - grid-column: span auto/span auto; - } - .bui-col-start-1 { - grid-column-start: 1; - } - .bui-col-start-2 { - grid-column-start: 2; - } - .bui-col-start-3 { - grid-column-start: 3; - } - .bui-col-start-4 { - grid-column-start: 4; - } - .bui-col-start-5 { - grid-column-start: 5; - } - .bui-col-start-6 { - grid-column-start: 6; - } - .bui-col-start-7 { - grid-column-start: 7; - } - .bui-col-start-8 { - grid-column-start: 8; - } - .bui-col-start-9 { - grid-column-start: 9; - } - .bui-col-start-10 { - grid-column-start: 10; - } - .bui-col-start-11 { - grid-column-start: 11; - } - .bui-col-start-12 { - grid-column-start: 12; - } - .bui-col-start-13 { - grid-column-start: 13; - } - .bui-col-start-auto { - grid-column-start: auto; - } - .bui-col-end-1 { - grid-column-end: 1; - } - .bui-col-end-2 { - grid-column-end: 2; - } - .bui-col-end-3 { - grid-column-end: 3; - } - .bui-col-end-4 { - grid-column-end: 4; - } - .bui-col-end-5 { - grid-column-end: 5; - } - .bui-col-end-6 { - grid-column-end: 6; - } - .bui-col-end-7 { - grid-column-end: 7; - } - .bui-col-end-8 { - grid-column-end: 8; - } - .bui-col-end-9 { - grid-column-end: 9; - } - .bui-col-end-10 { - grid-column-end: 10; - } - .bui-col-end-11 { - grid-column-end: 11; - } - .bui-col-end-12 { - grid-column-end: 12; - } - .bui-col-end-13 { - grid-column-end: 13; - } - .bui-col-end-auto { - grid-column-end: auto; - } - .bui-row-span-1 { - grid-row: span 1 / span 1; - } - .bui-row-span-2 { - grid-row: span 2 / span 2; - } - .bui-row-span-3 { - grid-row: span 3 / span 3; - } - .bui-row-span-4 { - grid-row: span 4 / span 4; - } - .bui-row-span-5 { - grid-row: span 5 / span 5; - } - .bui-row-span-6 { - grid-row: span 6 / span 6; - } - .bui-row-span-7 { - grid-row: span 7 / span 7; - } - .bui-row-span-8 { - grid-row: span 8 / span 8; - } - .bui-row-span-9 { - grid-row: span 9 / span 9; - } - .bui-row-span-10 { - grid-row: span 10 / span 10; - } - .bui-row-span-11 { - grid-row: span 11 / span 11; - } - .bui-row-span-12 { - grid-row: span 12 / span 12; - } - .bui-row-span-auto { - grid-row: span auto/span auto; - } - @media (width>=640px) { - .xs\:bui-columns-1 { - grid-template-columns: repeat(1, minmax(0, 1fr)); - } - .xs\:bui-columns-2 { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } - .xs\:bui-columns-3 { - grid-template-columns: repeat(3, minmax(0, 1fr)); - } - .xs\:bui-columns-4 { - grid-template-columns: repeat(4, minmax(0, 1fr)); - } - .xs\:bui-columns-5 { - grid-template-columns: repeat(5, minmax(0, 1fr)); - } - .xs\:bui-columns-6 { - grid-template-columns: repeat(6, minmax(0, 1fr)); - } - .xs\:bui-columns-7 { - grid-template-columns: repeat(7, minmax(0, 1fr)); - } - .xs\:bui-columns-8 { - grid-template-columns: repeat(8, minmax(0, 1fr)); - } - .xs\:bui-columns-9 { - grid-template-columns: repeat(9, minmax(0, 1fr)); - } - .xs\:bui-columns-10 { - grid-template-columns: repeat(10, minmax(0, 1fr)); - } - .xs\:bui-columns-11 { - grid-template-columns: repeat(11, minmax(0, 1fr)); - } - .xs\:bui-columns-12 { - grid-template-columns: repeat(12, minmax(0, 1fr)); - } - .xs\:bui-columns-auto { - grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); - } - .xs\:bui-col-span-1 { - grid-column: span 1 / span 1; - } - .xs\:bui-col-span-2 { - grid-column: span 2 / span 2; - } - .xs\:bui-col-span-3 { - grid-column: span 3 / span 3; - } - .xs\:bui-col-span-4 { - grid-column: span 4 / span 4; - } - .xs\:bui-col-span-5 { - grid-column: span 5 / span 5; - } - .xs\:bui-col-span-6 { - grid-column: span 6 / span 6; - } - .xs\:bui-col-span-7 { - grid-column: span 7 / span 7; - } - .xs\:bui-col-span-8 { - grid-column: span 8 / span 8; - } - .xs\:bui-col-span-9 { - grid-column: span 9 / span 9; - } - .xs\:bui-col-span-10 { - grid-column: span 10 / span 10; - } - .xs\:bui-col-span-11 { - grid-column: span 11 / span 11; - } - .xs\:bui-col-span-12 { - grid-column: span 12 / span 12; - } - .xs\:bui-col-span-auto { - grid-column: span auto/span auto; - } - .xs\:bui-col-start-1 { - grid-column-start: 1; - } - .xs\:bui-col-start-2 { - grid-column-start: 2; - } - .xs\:bui-col-start-3 { - grid-column-start: 3; - } - .xs\:bui-col-start-4 { - grid-column-start: 4; - } - .xs\:bui-col-start-5 { - grid-column-start: 5; - } - .xs\:bui-col-start-6 { - grid-column-start: 6; - } - .xs\:bui-col-start-7 { - grid-column-start: 7; - } - .xs\:bui-col-start-8 { - grid-column-start: 8; - } - .xs\:bui-col-start-9 { - grid-column-start: 9; - } - .xs\:bui-col-start-10 { - grid-column-start: 10; - } - .xs\:bui-col-start-11 { - grid-column-start: 11; - } - .xs\:bui-col-start-12 { - grid-column-start: 12; - } - .xs\:bui-col-start-13 { - grid-column-start: 13; - } - .xs\:bui-col-start-auto { - grid-column-start: auto; - } - .xs\:bui-col-end-1 { - grid-column-end: 1; - } - .xs\:bui-col-end-2 { - grid-column-end: 2; - } - .xs\:bui-col-end-3 { - grid-column-end: 3; - } - .xs\:bui-col-end-4 { - grid-column-end: 4; - } - .xs\:bui-col-end-5 { - grid-column-end: 5; - } - .xs\:bui-col-end-6 { - grid-column-end: 6; - } - .xs\:bui-col-end-7 { - grid-column-end: 7; - } - .xs\:bui-col-end-8 { - grid-column-end: 8; - } - .xs\:bui-col-end-9 { - grid-column-end: 9; - } - .xs\:bui-col-end-10 { - grid-column-end: 10; - } - .xs\:bui-col-end-11 { - grid-column-end: 11; - } - .xs\:bui-col-end-12 { - grid-column-end: 12; - } - .xs\:bui-col-end-13 { - grid-column-end: 13; - } - .xs\:bui-col-end-auto { - grid-column-end: auto; - } - .xs\:bui-row-span-1 { - grid-row: span 1 / span 1; - } - .xs\:bui-row-span-2 { - grid-row: span 2 / span 2; - } - .xs\:bui-row-span-3 { - grid-row: span 3 / span 3; - } - .xs\:bui-row-span-4 { - grid-row: span 4 / span 4; - } - .xs\:bui-row-span-5 { - grid-row: span 5 / span 5; - } - .xs\:bui-row-span-6 { - grid-row: span 6 / span 6; - } - .xs\:bui-row-span-7 { - grid-row: span 7 / span 7; - } - .xs\:bui-row-span-8 { - grid-row: span 8 / span 8; - } - .xs\:bui-row-span-9 { - grid-row: span 9 / span 9; - } - .xs\:bui-row-span-10 { - grid-row: span 10 / span 10; - } - .xs\:bui-row-span-11 { - grid-row: span 11 / span 11; - } - .xs\:bui-row-span-12 { - grid-row: span 12 / span 12; - } - .xs\:bui-row-span-auto { - grid-row: span auto/span auto; - } - } - @media (width>=768px) { - .sm\:bui-columns-1 { - grid-template-columns: repeat(1, minmax(0, 1fr)); - } - .sm\:bui-columns-2 { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } - .sm\:bui-columns-3 { - grid-template-columns: repeat(3, minmax(0, 1fr)); - } - .sm\:bui-columns-4 { - grid-template-columns: repeat(4, minmax(0, 1fr)); - } - .sm\:bui-columns-5 { - grid-template-columns: repeat(5, minmax(0, 1fr)); - } - .sm\:bui-columns-6 { - grid-template-columns: repeat(6, minmax(0, 1fr)); - } - .sm\:bui-columns-7 { - grid-template-columns: repeat(7, minmax(0, 1fr)); - } - .sm\:bui-columns-8 { - grid-template-columns: repeat(8, minmax(0, 1fr)); - } - .sm\:bui-columns-9 { - grid-template-columns: repeat(9, minmax(0, 1fr)); - } - .sm\:bui-columns-10 { - grid-template-columns: repeat(10, minmax(0, 1fr)); - } - .sm\:bui-columns-11 { - grid-template-columns: repeat(11, minmax(0, 1fr)); - } - .sm\:bui-columns-12 { - grid-template-columns: repeat(12, minmax(0, 1fr)); - } - .sm\:bui-columns-auto { - grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); - } - .sm\:bui-col-span-1 { - grid-column: span 1 / span 1; - } - .sm\:bui-col-span-2 { - grid-column: span 2 / span 2; - } - .sm\:bui-col-span-3 { - grid-column: span 3 / span 3; - } - .sm\:bui-col-span-4 { - grid-column: span 4 / span 4; - } - .sm\:bui-col-span-5 { - grid-column: span 5 / span 5; - } - .sm\:bui-col-span-6 { - grid-column: span 6 / span 6; - } - .sm\:bui-col-span-7 { - grid-column: span 7 / span 7; - } - .sm\:bui-col-span-8 { - grid-column: span 8 / span 8; - } - .sm\:bui-col-span-9 { - grid-column: span 9 / span 9; - } - .sm\:bui-col-span-10 { - grid-column: span 10 / span 10; - } - .sm\:bui-col-span-11 { - grid-column: span 11 / span 11; - } - .sm\:bui-col-span-12 { - grid-column: span 12 / span 12; - } - .sm\:bui-col-span-auto { - grid-column: span auto/span auto; - } - .sm\:bui-col-start-1 { - grid-column-start: 1; - } - .sm\:bui-col-start-2 { - grid-column-start: 2; - } - .sm\:bui-col-start-3 { - grid-column-start: 3; - } - .sm\:bui-col-start-4 { - grid-column-start: 4; - } - .sm\:bui-col-start-5 { - grid-column-start: 5; - } - .sm\:bui-col-start-6 { - grid-column-start: 6; - } - .sm\:bui-col-start-7 { - grid-column-start: 7; - } - .sm\:bui-col-start-8 { - grid-column-start: 8; - } - .sm\:bui-col-start-9 { - grid-column-start: 9; - } - .sm\:bui-col-start-10 { - grid-column-start: 10; - } - .sm\:bui-col-start-11 { - grid-column-start: 11; - } - .sm\:bui-col-start-12 { - grid-column-start: 12; - } - .sm\:bui-col-start-13 { - grid-column-start: 13; - } - .sm\:bui-col-start-auto { - grid-column-start: auto; - } - .sm\:bui-col-end-1 { - grid-column-end: 1; - } - .sm\:bui-col-end-2 { - grid-column-end: 2; - } - .sm\:bui-col-end-3 { - grid-column-end: 3; - } - .sm\:bui-col-end-4 { - grid-column-end: 4; - } - .sm\:bui-col-end-5 { - grid-column-end: 5; - } - .sm\:bui-col-end-6 { - grid-column-end: 6; - } - .sm\:bui-col-end-7 { - grid-column-end: 7; - } - .sm\:bui-col-end-8 { - grid-column-end: 8; - } - .sm\:bui-col-end-9 { - grid-column-end: 9; - } - .sm\:bui-col-end-10 { - grid-column-end: 10; - } - .sm\:bui-col-end-11 { - grid-column-end: 11; - } - .sm\:bui-col-end-12 { - grid-column-end: 12; - } - .sm\:bui-col-end-13 { - grid-column-end: 13; - } - .sm\:bui-col-end-auto { - grid-column-end: auto; - } - .sm\:bui-row-span-1 { - grid-row: span 1 / span 1; - } - .sm\:bui-row-span-2 { - grid-row: span 2 / span 2; - } - .sm\:bui-row-span-3 { - grid-row: span 3 / span 3; - } - .sm\:bui-row-span-4 { - grid-row: span 4 / span 4; - } - .sm\:bui-row-span-5 { - grid-row: span 5 / span 5; - } - .sm\:bui-row-span-6 { - grid-row: span 6 / span 6; - } - .sm\:bui-row-span-7 { - grid-row: span 7 / span 7; - } - .sm\:bui-row-span-8 { - grid-row: span 8 / span 8; - } - .sm\:bui-row-span-9 { - grid-row: span 9 / span 9; - } - .sm\:bui-row-span-10 { - grid-row: span 10 / span 10; - } - .sm\:bui-row-span-11 { - grid-row: span 11 / span 11; - } - .sm\:bui-row-span-12 { - grid-row: span 12 / span 12; - } - .sm\:bui-row-span-auto { - grid-row: span auto/span auto; - } - } - @media (width>=1024px) { - .md\:bui-columns-1 { - grid-template-columns: repeat(1, minmax(0, 1fr)); - } - .md\:bui-columns-2 { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } - .md\:bui-columns-3 { - grid-template-columns: repeat(3, minmax(0, 1fr)); - } - .md\:bui-columns-4 { - grid-template-columns: repeat(4, minmax(0, 1fr)); - } - .md\:bui-columns-5 { - grid-template-columns: repeat(5, minmax(0, 1fr)); - } - .md\:bui-columns-6 { - grid-template-columns: repeat(6, minmax(0, 1fr)); - } - .md\:bui-columns-7 { - grid-template-columns: repeat(7, minmax(0, 1fr)); - } - .md\:bui-columns-8 { - grid-template-columns: repeat(8, minmax(0, 1fr)); - } - .md\:bui-columns-9 { - grid-template-columns: repeat(9, minmax(0, 1fr)); - } - .md\:bui-columns-10 { - grid-template-columns: repeat(10, minmax(0, 1fr)); - } - .md\:bui-columns-11 { - grid-template-columns: repeat(11, minmax(0, 1fr)); - } - .md\:bui-columns-12 { - grid-template-columns: repeat(12, minmax(0, 1fr)); - } - .md\:bui-columns-auto { - grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); - } - .md\:bui-col-span-1 { - grid-column: span 1 / span 1; - } - .md\:bui-col-span-2 { - grid-column: span 2 / span 2; - } - .md\:bui-col-span-3 { - grid-column: span 3 / span 3; - } - .md\:bui-col-span-4 { - grid-column: span 4 / span 4; - } - .md\:bui-col-span-5 { - grid-column: span 5 / span 5; - } - .md\:bui-col-span-6 { - grid-column: span 6 / span 6; - } - .md\:bui-col-span-7 { - grid-column: span 7 / span 7; - } - .md\:bui-col-span-8 { - grid-column: span 8 / span 8; - } - .md\:bui-col-span-9 { - grid-column: span 9 / span 9; - } - .md\:bui-col-span-10 { - grid-column: span 10 / span 10; - } - .md\:bui-col-span-11 { - grid-column: span 11 / span 11; - } - .md\:bui-col-span-12 { - grid-column: span 12 / span 12; - } - .md\:bui-col-span-auto { - grid-column: span auto/span auto; - } - .md\:bui-col-start-1 { - grid-column-start: 1; - } - .md\:bui-col-start-2 { - grid-column-start: 2; - } - .md\:bui-col-start-3 { - grid-column-start: 3; - } - .md\:bui-col-start-4 { - grid-column-start: 4; - } - .md\:bui-col-start-5 { - grid-column-start: 5; - } - .md\:bui-col-start-6 { - grid-column-start: 6; - } - .md\:bui-col-start-7 { - grid-column-start: 7; - } - .md\:bui-col-start-8 { - grid-column-start: 8; - } - .md\:bui-col-start-9 { - grid-column-start: 9; - } - .md\:bui-col-start-10 { - grid-column-start: 10; - } - .md\:bui-col-start-11 { - grid-column-start: 11; - } - .md\:bui-col-start-12 { - grid-column-start: 12; - } - .md\:bui-col-start-13 { - grid-column-start: 13; - } - .md\:bui-col-start-auto { - grid-column-start: auto; - } - .md\:bui-col-end-1 { - grid-column-end: 1; - } - .md\:bui-col-end-2 { - grid-column-end: 2; - } - .md\:bui-col-end-3 { - grid-column-end: 3; - } - .md\:bui-col-end-4 { - grid-column-end: 4; - } - .md\:bui-col-end-5 { - grid-column-end: 5; - } - .md\:bui-col-end-6 { - grid-column-end: 6; - } - .md\:bui-col-end-7 { - grid-column-end: 7; - } - .md\:bui-col-end-8 { - grid-column-end: 8; - } - .md\:bui-col-end-9 { - grid-column-end: 9; - } - .md\:bui-col-end-10 { - grid-column-end: 10; - } - .md\:bui-col-end-11 { - grid-column-end: 11; - } - .md\:bui-col-end-12 { - grid-column-end: 12; - } - .md\:bui-col-end-13 { - grid-column-end: 13; - } - .md\:bui-col-end-auto { - grid-column-end: auto; - } - .md\:bui-row-span-1 { - grid-row: span 1 / span 1; - } - .md\:bui-row-span-2 { - grid-row: span 2 / span 2; - } - .md\:bui-row-span-3 { - grid-row: span 3 / span 3; - } - .md\:bui-row-span-4 { - grid-row: span 4 / span 4; - } - .md\:bui-row-span-5 { - grid-row: span 5 / span 5; - } - .md\:bui-row-span-6 { - grid-row: span 6 / span 6; - } - .md\:bui-row-span-7 { - grid-row: span 7 / span 7; - } - .md\:bui-row-span-8 { - grid-row: span 8 / span 8; - } - .md\:bui-row-span-9 { - grid-row: span 9 / span 9; - } - .md\:bui-row-span-10 { - grid-row: span 10 / span 10; - } - .md\:bui-row-span-11 { - grid-row: span 11 / span 11; - } - .md\:bui-row-span-12 { - grid-row: span 12 / span 12; - } - .md\:bui-row-span-auto { - grid-row: span auto/span auto; - } - } - @media (width>=1280px) { - .lg\:bui-columns-1 { - grid-template-columns: repeat(1, minmax(0, 1fr)); - } - .lg\:bui-columns-2 { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } - .lg\:bui-columns-3 { - grid-template-columns: repeat(3, minmax(0, 1fr)); - } - .lg\:bui-columns-4 { - grid-template-columns: repeat(4, minmax(0, 1fr)); - } - .lg\:bui-columns-5 { - grid-template-columns: repeat(5, minmax(0, 1fr)); - } - .lg\:bui-columns-6 { - grid-template-columns: repeat(6, minmax(0, 1fr)); - } - .lg\:bui-columns-7 { - grid-template-columns: repeat(7, minmax(0, 1fr)); - } - .lg\:bui-columns-8 { - grid-template-columns: repeat(8, minmax(0, 1fr)); - } - .lg\:bui-columns-9 { - grid-template-columns: repeat(9, minmax(0, 1fr)); - } - .lg\:bui-columns-10 { - grid-template-columns: repeat(10, minmax(0, 1fr)); - } - .lg\:bui-columns-11 { - grid-template-columns: repeat(11, minmax(0, 1fr)); - } - .lg\:bui-columns-12 { - grid-template-columns: repeat(12, minmax(0, 1fr)); - } - .lg\:bui-columns-auto { - grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); - } - .lg\:bui-col-span-1 { - grid-column: span 1 / span 1; - } - .lg\:bui-col-span-2 { - grid-column: span 2 / span 2; - } - .lg\:bui-col-span-3 { - grid-column: span 3 / span 3; - } - .lg\:bui-col-span-4 { - grid-column: span 4 / span 4; - } - .lg\:bui-col-span-5 { - grid-column: span 5 / span 5; - } - .lg\:bui-col-span-6 { - grid-column: span 6 / span 6; - } - .lg\:bui-col-span-7 { - grid-column: span 7 / span 7; - } - .lg\:bui-col-span-8 { - grid-column: span 8 / span 8; - } - .lg\:bui-col-span-9 { - grid-column: span 9 / span 9; - } - .lg\:bui-col-span-10 { - grid-column: span 10 / span 10; - } - .lg\:bui-col-span-11 { - grid-column: span 11 / span 11; - } - .lg\:bui-col-span-12 { - grid-column: span 12 / span 12; - } - .lg\:bui-col-span-auto { - grid-column: span auto/span auto; - } - .lg\:bui-col-start-1 { - grid-column-start: 1; - } - .lg\:bui-col-start-2 { - grid-column-start: 2; - } - .lg\:bui-col-start-3 { - grid-column-start: 3; - } - .lg\:bui-col-start-4 { - grid-column-start: 4; - } - .lg\:bui-col-start-5 { - grid-column-start: 5; - } - .lg\:bui-col-start-6 { - grid-column-start: 6; - } - .lg\:bui-col-start-7 { - grid-column-start: 7; - } - .lg\:bui-col-start-8 { - grid-column-start: 8; - } - .lg\:bui-col-start-9 { - grid-column-start: 9; - } - .lg\:bui-col-start-10 { - grid-column-start: 10; - } - .lg\:bui-col-start-11 { - grid-column-start: 11; - } - .lg\:bui-col-start-12 { - grid-column-start: 12; - } - .lg\:bui-col-start-13 { - grid-column-start: 13; - } - .lg\:bui-col-start-auto { - grid-column-start: auto; - } - .lg\:bui-col-end-1 { - grid-column-end: 1; - } - .lg\:bui-col-end-2 { - grid-column-end: 2; - } - .lg\:bui-col-end-3 { - grid-column-end: 3; - } - .lg\:bui-col-end-4 { - grid-column-end: 4; - } - .lg\:bui-col-end-5 { - grid-column-end: 5; - } - .lg\:bui-col-end-6 { - grid-column-end: 6; - } - .lg\:bui-col-end-7 { - grid-column-end: 7; - } - .lg\:bui-col-end-8 { - grid-column-end: 8; - } - .lg\:bui-col-end-9 { - grid-column-end: 9; - } - .lg\:bui-col-end-10 { - grid-column-end: 10; - } - .lg\:bui-col-end-11 { - grid-column-end: 11; - } - .lg\:bui-col-end-12 { - grid-column-end: 12; - } - .lg\:bui-col-end-13 { - grid-column-end: 13; - } - .lg\:bui-col-end-auto { - grid-column-end: auto; - } - .lg\:bui-row-span-1 { - grid-row: span 1 / span 1; - } - .lg\:bui-row-span-2 { - grid-row: span 2 / span 2; - } - .lg\:bui-row-span-3 { - grid-row: span 3 / span 3; - } - .lg\:bui-row-span-4 { - grid-row: span 4 / span 4; - } - .lg\:bui-row-span-5 { - grid-row: span 5 / span 5; - } - .lg\:bui-row-span-6 { - grid-row: span 6 / span 6; - } - .lg\:bui-row-span-7 { - grid-row: span 7 / span 7; - } - .lg\:bui-row-span-8 { - grid-row: span 8 / span 8; - } - .lg\:bui-row-span-9 { - grid-row: span 9 / span 9; - } - .lg\:bui-row-span-10 { - grid-row: span 10 / span 10; - } - .lg\:bui-row-span-11 { - grid-row: span 11 / span 11; - } - .lg\:bui-row-span-12 { - grid-row: span 12 / span 12; - } - .lg\:bui-row-span-auto { - grid-row: span auto/span auto; - } - } - @media (width>=1536px) { - .xl\:bui-columns-1 { - grid-template-columns: repeat(1, minmax(0, 1fr)); - } - .xl\:bui-columns-2 { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } - .xl\:bui-columns-3 { - grid-template-columns: repeat(3, minmax(0, 1fr)); - } - .xl\:bui-columns-4 { - grid-template-columns: repeat(4, minmax(0, 1fr)); - } - .xl\:bui-columns-5 { - grid-template-columns: repeat(5, minmax(0, 1fr)); - } - .xl\:bui-columns-6 { - grid-template-columns: repeat(6, minmax(0, 1fr)); - } - .xl\:bui-columns-7 { - grid-template-columns: repeat(7, minmax(0, 1fr)); - } - .xl\:bui-columns-8 { - grid-template-columns: repeat(8, minmax(0, 1fr)); - } - .xl\:bui-columns-9 { - grid-template-columns: repeat(9, minmax(0, 1fr)); - } - .xl\:bui-columns-10 { - grid-template-columns: repeat(10, minmax(0, 1fr)); - } - .xl\:bui-columns-11 { - grid-template-columns: repeat(11, minmax(0, 1fr)); - } - .xl\:bui-columns-12 { - grid-template-columns: repeat(12, minmax(0, 1fr)); - } - .xl\:bui-columns-auto { - grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); - } - .xl\:bui-col-span-1 { - grid-column: span 1 / span 1; - } - .xl\:bui-col-span-2 { - grid-column: span 2 / span 2; - } - .xl\:bui-col-span-3 { - grid-column: span 3 / span 3; - } - .xl\:bui-col-span-4 { - grid-column: span 4 / span 4; - } - .xl\:bui-col-span-5 { - grid-column: span 5 / span 5; - } - .xl\:bui-col-span-6 { - grid-column: span 6 / span 6; - } - .xl\:bui-col-span-7 { - grid-column: span 7 / span 7; - } - .xl\:bui-col-span-8 { - grid-column: span 8 / span 8; - } - .xl\:bui-col-span-9 { - grid-column: span 9 / span 9; - } - .xl\:bui-col-span-10 { - grid-column: span 10 / span 10; - } - .xl\:bui-col-span-11 { - grid-column: span 11 / span 11; - } - .xl\:bui-col-span-12 { - grid-column: span 12 / span 12; - } - .xl\:bui-col-span-auto { - grid-column: span auto/span auto; - } - .xl\:bui-col-start-1 { - grid-column-start: 1; - } - .xl\:bui-col-start-2 { - grid-column-start: 2; - } - .xl\:bui-col-start-3 { - grid-column-start: 3; - } - .xl\:bui-col-start-4 { - grid-column-start: 4; - } - .xl\:bui-col-start-5 { - grid-column-start: 5; - } - .xl\:bui-col-start-6 { - grid-column-start: 6; - } - .xl\:bui-col-start-7 { - grid-column-start: 7; - } - .xl\:bui-col-start-8 { - grid-column-start: 8; - } - .xl\:bui-col-start-9 { - grid-column-start: 9; - } - .xl\:bui-col-start-10 { - grid-column-start: 10; - } - .xl\:bui-col-start-11 { - grid-column-start: 11; - } - .xl\:bui-col-start-12 { - grid-column-start: 12; - } - .xl\:bui-col-start-13 { - grid-column-start: 13; - } - .xl\:bui-col-start-auto { - grid-column-start: auto; - } - .xl\:bui-col-end-1 { - grid-column-end: 1; - } - .xl\:bui-col-end-2 { - grid-column-end: 2; - } - .xl\:bui-col-end-3 { - grid-column-end: 3; - } - .xl\:bui-col-end-4 { - grid-column-end: 4; - } - .xl\:bui-col-end-5 { - grid-column-end: 5; - } - .xl\:bui-col-end-6 { - grid-column-end: 6; - } - .xl\:bui-col-end-7 { - grid-column-end: 7; - } - .xl\:bui-col-end-8 { - grid-column-end: 8; - } - .xl\:bui-col-end-9 { - grid-column-end: 9; - } - .xl\:bui-col-end-10 { - grid-column-end: 10; - } - .xl\:bui-col-end-11 { - grid-column-end: 11; - } - .xl\:bui-col-end-12 { - grid-column-end: 12; - } - .xl\:bui-col-end-13 { - grid-column-end: 13; - } - .xl\:bui-col-end-auto { - grid-column-end: auto; - } - .xl\:bui-row-span-1 { - grid-row: span 1 / span 1; - } - .xl\:bui-row-span-2 { - grid-row: span 2 / span 2; - } - .xl\:bui-row-span-3 { - grid-row: span 3 / span 3; - } - .xl\:bui-row-span-4 { - grid-row: span 4 / span 4; - } - .xl\:bui-row-span-5 { - grid-row: span 5 / span 5; - } - .xl\:bui-row-span-6 { - grid-row: span 6 / span 6; - } - .xl\:bui-row-span-7 { - grid-row: span 7 / span 7; - } - .xl\:bui-row-span-8 { - grid-row: span 8 / span 8; - } - .xl\:bui-row-span-9 { - grid-row: span 9 / span 9; - } - .xl\:bui-row-span-10 { - grid-row: span 10 / span 10; - } - .xl\:bui-row-span-11 { - grid-row: span 11 / span 11; - } - .xl\:bui-row-span-12 { - grid-row: span 12 / span 12; - } - .xl\:bui-row-span-auto { - grid-row: span auto/span auto; - } - } - .bui-gap { - gap: var(--gap); - } - .bui-gap-0\.5 { - gap: var(--bui-space-0_5); - } - .bui-gap-1 { - gap: var(--bui-space-1); - } - .bui-gap-1\.5 { - gap: var(--bui-space-1_5); - } - .bui-gap-2 { - gap: var(--bui-space-2); - } - .bui-gap-3 { - gap: var(--bui-space-3); - } - .bui-gap-4 { - gap: var(--bui-space-4); - } - .bui-gap-5 { - gap: var(--bui-space-5); - } - .bui-gap-6 { - gap: var(--bui-space-6); - } - .bui-gap-7 { - gap: var(--bui-space-7); - } - .bui-gap-8 { - gap: var(--bui-space-8); - } - .bui-gap-9 { - gap: var(--bui-space-9); - } - .bui-gap-10 { - gap: var(--bui-space-10); - } - .bui-gap-11 { - gap: var(--bui-space-11); - } - .bui-gap-12 { - gap: var(--bui-space-12); - } - .bui-gap-13 { - gap: var(--bui-space-13); - } - .bui-gap-14 { - gap: var(--bui-space-14); - } - @media (width>=640px) { - .xs\:bui-gap { - gap: var(--gap-xs); - } - .xs\:bui-gap-0\.5 { - gap: var(--bui-space-0_5); - } - .xs\:bui-gap-1 { - gap: var(--bui-space-1); - } - .xs\:bui-gap-1\.5 { - gap: var(--bui-space-1_5); - } - .xs\:bui-gap-2 { - gap: var(--bui-space-2); - } - .xs\:bui-gap-3 { - gap: var(--bui-space-3); - } - .xs\:bui-gap-4 { - gap: var(--bui-space-4); - } - .xs\:bui-gap-5 { - gap: var(--bui-space-5); - } - .xs\:bui-gap-6 { - gap: var(--bui-space-6); - } - .xs\:bui-gap-7 { - gap: var(--bui-space-7); - } - .xs\:bui-gap-8 { - gap: var(--bui-space-8); - } - .xs\:bui-gap-9 { - gap: var(--bui-space-9); - } - .xs\:bui-gap-10 { - gap: var(--bui-space-10); - } - .xs\:bui-gap-11 { - gap: var(--bui-space-11); - } - .xs\:bui-gap-12 { - gap: var(--bui-space-12); - } - .xs\:bui-gap-13 { - gap: var(--bui-space-13); - } - .xs\:bui-gap-14 { - gap: var(--bui-space-14); - } - } - @media (width>=768px) { - .sm\:bui-gap { - gap: var(--gap-sm); - } - .sm\:bui-gap-0\.5 { - gap: var(--bui-space-0_5); - } - .sm\:bui-gap-1 { - gap: var(--bui-space-1); - } - .sm\:bui-gap-1\.5 { - gap: var(--bui-space-1_5); - } - .sm\:bui-gap-2 { - gap: var(--bui-space-2); - } - .sm\:bui-gap-3 { - gap: var(--bui-space-3); - } - .sm\:bui-gap-4 { - gap: var(--bui-space-4); - } - .sm\:bui-gap-5 { - gap: var(--bui-space-5); - } - .sm\:bui-gap-6 { - gap: var(--bui-space-6); - } - .sm\:bui-gap-7 { - gap: var(--bui-space-7); - } - .sm\:bui-gap-8 { - gap: var(--bui-space-8); - } - .sm\:bui-gap-9 { - gap: var(--bui-space-9); - } - .sm\:bui-gap-10 { - gap: var(--bui-space-10); - } - .sm\:bui-gap-11 { - gap: var(--bui-space-11); - } - .sm\:bui-gap-12 { - gap: var(--bui-space-12); - } - .sm\:bui-gap-13 { - gap: var(--bui-space-13); - } - .sm\:bui-gap-14 { - gap: var(--bui-space-14); - } - } - @media (width>=1024px) { - .md\:bui-gap { - gap: var(--gap-md); - } - .md\:bui-gap-0\.5 { - gap: var(--bui-space-0_5); - } - .md\:bui-gap-1 { - gap: var(--bui-space-1); - } - .md\:bui-gap-1\.5 { - gap: var(--bui-space-1_5); - } - .md\:bui-gap-2 { - gap: var(--bui-space-2); - } - .md\:bui-gap-3 { - gap: var(--bui-space-3); - } - .md\:bui-gap-4 { - gap: var(--bui-space-4); - } - .md\:bui-gap-5 { - gap: var(--bui-space-5); - } - .md\:bui-gap-6 { - gap: var(--bui-space-6); - } - .md\:bui-gap-7 { - gap: var(--bui-space-7); - } - .md\:bui-gap-8 { - gap: var(--bui-space-8); - } - .md\:bui-gap-9 { - gap: var(--bui-space-9); - } - .md\:bui-gap-10 { - gap: var(--bui-space-10); - } - .md\:bui-gap-11 { - gap: var(--bui-space-11); - } - .md\:bui-gap-12 { - gap: var(--bui-space-12); - } - .md\:bui-gap-13 { - gap: var(--bui-space-13); - } - .md\:bui-gap-14 { - gap: var(--bui-space-14); - } - } - @media (width>=1280px) { - .lg\:bui-gap { - gap: var(--gap-lg); - } - .lg\:bui-gap-0\.5 { - gap: var(--bui-space-0_5); - } - .lg\:bui-gap-1 { - gap: var(--bui-space-1); - } - .lg\:bui-gap-1\.5 { - gap: var(--bui-space-1_5); - } - .lg\:bui-gap-2 { - gap: var(--bui-space-2); - } - .lg\:bui-gap-3 { - gap: var(--bui-space-3); - } - .lg\:bui-gap-4 { - gap: var(--bui-space-4); - } - .lg\:bui-gap-5 { - gap: var(--bui-space-5); - } - .lg\:bui-gap-6 { - gap: var(--bui-space-6); - } - .lg\:bui-gap-7 { - gap: var(--bui-space-7); - } - .lg\:bui-gap-8 { - gap: var(--bui-space-8); - } - .lg\:bui-gap-9 { - gap: var(--bui-space-9); - } - .lg\:bui-gap-10 { - gap: var(--bui-space-10); - } - .lg\:bui-gap-11 { - gap: var(--bui-space-11); - } - .lg\:bui-gap-12 { - gap: var(--bui-space-12); - } - .lg\:bui-gap-13 { - gap: var(--bui-space-13); - } - .lg\:bui-gap-14 { - gap: var(--bui-space-14); - } - } - @media (width>=1536px) { - .xl\:bui-gap { - gap: var(--gap-xl); - } - .xl\:bui-gap-0\.5 { - gap: var(--bui-space-0_5); - } - .xl\:bui-gap-1 { - gap: var(--bui-space-1); - } - .xl\:bui-gap-1\.5 { - gap: var(--bui-space-1_5); - } - .xl\:bui-gap-2 { - gap: var(--bui-space-2); - } - .xl\:bui-gap-3 { - gap: var(--bui-space-3); - } - .xl\:bui-gap-4 { - gap: var(--bui-space-4); - } - .xl\:bui-gap-5 { - gap: var(--bui-space-5); - } - .xl\:bui-gap-6 { - gap: var(--bui-space-6); - } - .xl\:bui-gap-7 { - gap: var(--bui-space-7); - } - .xl\:bui-gap-8 { - gap: var(--bui-space-8); - } - .xl\:bui-gap-9 { - gap: var(--bui-space-9); - } - .xl\:bui-gap-10 { - gap: var(--bui-space-10); - } - .xl\:bui-gap-11 { - gap: var(--bui-space-11); - } - .xl\:bui-gap-12 { - gap: var(--bui-space-12); - } - .xl\:bui-gap-13 { - gap: var(--bui-space-13); - } - .xl\:bui-gap-14 { - gap: var(--bui-space-14); - } - } - .bui-align-start { - align-items: start; - } - .bui-align-center { - align-items: center; - } - .bui-align-end { - align-items: end; - } - .bui-align-baseline { - align-items: baseline; - } - .bui-align-stretch { - align-items: stretch; - } - .bui-jc-start { - justify-content: start; - } - .bui-jc-center { - justify-content: center; - } - .bui-jc-end { - justify-content: end; - } - .bui-jc-between { - justify-content: space-between; - } - .bui-fd-row { - flex-direction: row; - } - .bui-fd-column { - flex-direction: column; - } - .bui-fd-row-reverse { - flex-direction: row-reverse; - } - .bui-fd-column-reverse { - flex-direction: column-reverse; - } - @media (width>=640px) { - .xs\:bui-align-start { - align-items: start; - } - .xs\:bui-align-center { - align-items: center; - } - .xs\:bui-align-end { - align-items: end; - } - .xs\:bui-align-stretch { - align-items: stretch; - } - .xs\:bui-jc-start { - justify-content: start; - } - .xs\:bui-jc-center { - justify-content: center; - } - .xs\:bui-jc-end { - justify-content: end; - } - .xs\:bui-jc-between { - justify-content: space-between; - } - .xs\:bui-fd-row { - flex-direction: row; - } - .xs\:bui-fd-column { - flex-direction: column; - } - .xs\:bui-fd-row-reverse { - flex-direction: row-reverse; - } - .xs\:bui-fd-column-reverse { - flex-direction: column-reverse; - } - } - @media (width>=768px) { - .sm\:bui-align-start { - align-items: start; - } - .sm\:bui-align-center { - align-items: center; - } - .sm\:bui-align-end { - align-items: end; - } - .sm\:bui-align-stretch { - align-items: stretch; - } - .sm\:bui-jc-start { - justify-content: start; - } - .sm\:bui-jc-center { - justify-content: center; - } - .sm\:bui-jc-end { - justify-content: end; - } - .sm\:bui-jc-between { - justify-content: space-between; - } - .sm\:bui-fd-row { - flex-direction: row; - } - .sm\:bui-fd-column { - flex-direction: column; - } - .sm\:bui-fd-row-reverse { - flex-direction: row-reverse; - } - .sm\:bui-fd-column-reverse { - flex-direction: column-reverse; - } - } - @media (width>=1024px) { - .md\:bui-align-start { - align-items: start; - } - .md\:bui-align-center { - align-items: center; - } - .md\:bui-align-end { - align-items: end; - } - .md\:bui-align-stretch { - align-items: stretch; - } - .md\:bui-jc-start { - justify-content: start; - } - .md\:bui-jc-center { - justify-content: center; - } - .md\:bui-jc-end { - justify-content: end; - } - .md\:bui-jc-between { - justify-content: space-between; - } - .md\:bui-fd-row { - flex-direction: row; - } - .md\:bui-fd-column { - flex-direction: column; - } - .md\:bui-fd-row-reverse { - flex-direction: row-reverse; - } - .md\:bui-fd-column-reverse { - flex-direction: column-reverse; - } - } - @media (width>=1280px) { - .lg\:bui-align-start { - align-items: start; - } - .lg\:bui-align-center { - align-items: center; - } - .lg\:bui-align-end { - align-items: end; - } - .lg\:bui-align-stretch { - align-items: stretch; - } - .lg\:bui-jc-start { - justify-content: start; - } - .lg\:bui-jc-center { - justify-content: center; - } - .lg\:bui-jc-end { - justify-content: end; - } - .lg\:bui-jc-between { - justify-content: space-between; - } - .lg\:bui-fd-row { - flex-direction: row; - } - .lg\:bui-fd-column { - flex-direction: column; - } - .lg\:bui-fd-row-reverse { - flex-direction: row-reverse; - } - .lg\:bui-fd-column-reverse { - flex-direction: column-reverse; - } - } - @media (width>=1536px) { - .xl\:bui-align-start { - align-items: start; - } - .xl\:bui-align-center { - align-items: center; - } - .xl\:bui-align-end { - align-items: end; - } - .xl\:bui-align-stretch { - align-items: stretch; - } - .xl\:bui-jc-start { - justify-content: start; - } - .xl\:bui-jc-center { - justify-content: center; - } - .xl\:bui-jc-end { - justify-content: end; - } - .xl\:bui-jc-between { - justify-content: space-between; - } - .xl\:bui-fd-row { - flex-direction: row; - } - .xl\:bui-fd-column { - flex-direction: column; - } - .xl\:bui-fd-row-reverse { - flex-direction: row-reverse; - } - .xl\:bui-fd-column-reverse { - flex-direction: column-reverse; - } - } -} +@layer tokens{:root{--bui-font-regular:system-ui;--bui-font-monospace:ui-monospace,"Menlo","Monaco","Consolas","Liberation Mono","Courier New",monospace;--bui-font-weight-regular:400;--bui-font-weight-bold:600;--bui-font-size-1:.625rem;--bui-font-size-2:.75rem;--bui-font-size-3:.875rem;--bui-font-size-4:1rem;--bui-font-size-5:1.25rem;--bui-font-size-6:1.5rem;--bui-font-size-7:2rem;--bui-font-size-8:3rem;--bui-font-size-9:4rem;--bui-font-size-10:5.75rem;--bui-space:.25rem;--bui-space-0_5:calc(var(--bui-space)*.5);--bui-space-1:var(--bui-space);--bui-space-1_5:calc(var(--bui-space)*1.5);--bui-space-2:calc(var(--bui-space)*2);--bui-space-3:calc(var(--bui-space)*3);--bui-space-4:calc(var(--bui-space)*4);--bui-space-5:calc(var(--bui-space)*5);--bui-space-6:calc(var(--bui-space)*6);--bui-space-7:calc(var(--bui-space)*7);--bui-space-8:calc(var(--bui-space)*8);--bui-space-9:calc(var(--bui-space)*9);--bui-space-10:calc(var(--bui-space)*10);--bui-space-11:calc(var(--bui-space)*11);--bui-space-12:calc(var(--bui-space)*12);--bui-space-13:calc(var(--bui-space)*13);--bui-space-14:calc(var(--bui-space)*14);--bui-radius-1:calc(.125rem);--bui-radius-2:calc(.25rem);--bui-radius-3:calc(.5rem);--bui-radius-4:calc(.75rem);--bui-radius-5:calc(1rem);--bui-radius-6:calc(1.25rem);--bui-radius-full:9999px;--bui-black:#000;--bui-white:#fff;--bui-gray-1:#f8f8f8;--bui-gray-2:#ececec;--bui-gray-3:#d9d9d9;--bui-gray-4:#c1c1c1;--bui-gray-5:#9e9e9e;--bui-gray-6:#8c8c8c;--bui-gray-7:#757575;--bui-gray-8:#595959;--bui-bg-surface-0:var(--bui-gray-1);--bui-bg-surface-1:var(--bui-white);--bui-bg-surface-2:var(--bui-gray-1);--bui-bg-surface-3:var(--bui-gray-2);--bui-bg-solid:#1f5493;--bui-bg-solid-hover:#163a66;--bui-bg-solid-pressed:#0f2b4e;--bui-bg-solid-disabled:#163a66;--bui-bg-neutral-on-surface-0:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-0-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-0-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-0-disabled:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-1:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-1-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-1-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-1-disabled:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-2:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-2-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-2-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-2-disabled:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-3:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-3-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-3-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-3-disabled:oklch(0% 0 0/.06);--bui-bg-danger:#ffe2e2;--bui-bg-warning:#ffedd5;--bui-bg-success:#dcfce7;--bui-bg-info:#dbeafe;--bui-fg-primary:var(--bui-black);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-link:#1f5493;--bui-fg-link-hover:#1f2d5c;--bui-fg-disabled:#9e9e9e;--bui-fg-solid:var(--bui-white);--bui-fg-solid-disabled:#98a8bc;--bui-fg-tint:#1f5493;--bui-fg-tint-disabled:var(--bui-gray-5);--bui-fg-danger-on-bg:#991919;--bui-fg-warning-on-bg:#92310a;--bui-fg-success-on-bg:#116932;--bui-fg-info-on-bg:#173da6;--bui-fg-danger:#ec3b18;--bui-fg-warning:#ef7a32;--bui-fg-success:#1ed760;--bui-fg-info:#0d74ce;--bui-border:#0000001a;--bui-border-hover:#0003;--bui-border-pressed:#0006;--bui-border-disabled:#0000001a;--bui-border-info:#7ea9d6;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#1f5493;--bui-scrollbar:#a0a0a03b;--bui-scrollbar-thumb:#a0a0a0;--bui-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--bui-animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite}[data-theme-mode=dark]{--bui-gray-1:#191919;--bui-gray-2:#242424;--bui-gray-3:#373737;--bui-gray-4:#464646;--bui-gray-5:#575757;--bui-gray-6:#7b7b7b;--bui-gray-7:#9e9e9e;--bui-gray-8:#b4b4b4;--bui-bg-surface-0:#333;--bui-bg-surface-1:var(--bui-gray-1);--bui-bg-surface-2:var(--bui-gray-2);--bui-bg-surface-3:var(--bui-gray-3);--bui-bg-solid:#9cc9ff;--bui-bg-solid-hover:#83b9fd;--bui-bg-solid-pressed:#83b9fd;--bui-bg-solid-disabled:#1b3d68;--bui-bg-neutral-on-surface-0:oklch(100% 0 0/.1);--bui-bg-neutral-on-surface-0-hover:oklch(100% 0 0/.14);--bui-bg-neutral-on-surface-0-pressed:oklch(100% 0 0/.2);--bui-bg-neutral-on-surface-0-disabled:oklch(100% 0 0/.1);--bui-bg-neutral-on-surface-1:oklch(100% 0 0/.06);--bui-bg-neutral-on-surface-1-hover:oklch(100% 0 0/.1);--bui-bg-neutral-on-surface-1-pressed:oklch(100% 0 0/.16);--bui-bg-neutral-on-surface-1-disabled:oklch(100% 0 0/.06);--bui-bg-neutral-on-surface-2:oklch(100% 0 0/.08);--bui-bg-neutral-on-surface-2-hover:oklch(100% 0 0/.12);--bui-bg-neutral-on-surface-2-pressed:oklch(100% 0 0/.2);--bui-bg-neutral-on-surface-2-disabled:oklch(100% 0 0/.08);--bui-bg-neutral-on-surface-3:oklch(100% 0 0/.08);--bui-bg-neutral-on-surface-3-hover:oklch(100% 0 0/.12);--bui-bg-neutral-on-surface-3-pressed:oklch(100% 0 0/.2);--bui-bg-neutral-on-surface-3-disabled:oklch(100% 0 0/.08);--bui-bg-danger:#300c0c;--bui-bg-warning:#302008;--bui-bg-success:#042713;--bui-bg-info:#132049;--bui-fg-primary:var(--bui-white);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-link:#9cc9ff;--bui-fg-link-hover:#7eb5f7;--bui-fg-disabled:var(--bui-gray-7);--bui-fg-solid:#101821;--bui-fg-solid-disabled:#6191cc;--bui-fg-tint:#9cc9ff;--bui-fg-tint-disabled:var(--bui-gray-5);--bui-fg-danger-on-bg:#fca5a5;--bui-fg-warning-on-bg:#fdba74;--bui-fg-success-on-bg:#86efac;--bui-fg-info-on-bg:#a3cfff;--bui-fg-danger:#ff5a30;--bui-fg-warning:#ffa057;--bui-fg-success:#1ed760;--bui-fg-info:#70b8ff;--bui-border:#ffffff1f;--bui-border-hover:#fff6;--bui-border-pressed:#ffffff80;--bui-border-disabled:#fff3;--bui-border-info:#7ea9d6;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#1f5493;--bui-scrollbar:#3636363a;--bui-scrollbar-thumb:#575757;--bui-shadow:none}}@layer base{*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;tab-size:4;font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;line-height:1.15}body{margin:0}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{border-color:currentColor}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}:where(a){color:inherit;text-decoration:none}@keyframes pulse{50%{opacity:.5}}body{background-color:var(--bui-bg-surface-0);color:var(--bui-fg-primary);font-family:var(--bui-font-regular);font-weight:var(--bui-font-weight-regular);font-size:var(--bui-font-size-3);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[data-theme-mode=dark]{color-scheme:dark}[data-theme-mode=light]{color-scheme:light}}@layer components;@layer utilities{.bui-p{padding:var(--p)}.bui-p-0\.5{padding:var(--bui-space-0_5)}.bui-p-1{padding:var(--bui-space-1)}.bui-p-1\.5{padding:var(--bui-space-1_5)}.bui-p-2{padding:var(--bui-space-2)}.bui-p-3{padding:var(--bui-space-3)}.bui-p-4{padding:var(--bui-space-4)}.bui-p-5{padding:var(--bui-space-5)}.bui-p-6{padding:var(--bui-space-6)}.bui-p-7{padding:var(--bui-space-7)}.bui-p-8{padding:var(--bui-space-8)}.bui-p-9{padding:var(--bui-space-9)}.bui-p-10{padding:var(--bui-space-10)}.bui-p-11{padding:var(--bui-space-11)}.bui-p-12{padding:var(--bui-space-12)}.bui-p-13{padding:var(--bui-space-13)}.bui-p-14{padding:var(--bui-space-14)}@media (width>=640px){.xs\:bui-p{padding:var(--p-xs)}.xs\:bui-p-0\.5{padding:var(--bui-space-0_5)}.xs\:bui-p-1{padding:var(--bui-space-1)}.xs\:bui-p-1\.5{padding:var(--bui-space-1_5)}.xs\:bui-p-2{padding:var(--bui-space-2)}.xs\:bui-p-3{padding:var(--bui-space-3)}.xs\:bui-p-4{padding:var(--bui-space-4)}.xs\:bui-p-5{padding:var(--bui-space-5)}.xs\:bui-p-6{padding:var(--bui-space-6)}.xs\:bui-p-7{padding:var(--bui-space-7)}.xs\:bui-p-8{padding:var(--bui-space-8)}.xs\:bui-p-9{padding:var(--bui-space-9)}.xs\:bui-p-10{padding:var(--bui-space-10)}.xs\:bui-p-11{padding:var(--bui-space-11)}.xs\:bui-p-12{padding:var(--bui-space-12)}.xs\:bui-p-13{padding:var(--bui-space-13)}.xs\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-p{padding:var(--p-sm)}.sm\:bui-p-0\.5{padding:var(--bui-space-0_5)}.sm\:bui-p-1{padding:var(--bui-space-1)}.sm\:bui-p-1\.5{padding:var(--bui-space-1_5)}.sm\:bui-p-2{padding:var(--bui-space-2)}.sm\:bui-p-3{padding:var(--bui-space-3)}.sm\:bui-p-4{padding:var(--bui-space-4)}.sm\:bui-p-5{padding:var(--bui-space-5)}.sm\:bui-p-6{padding:var(--bui-space-6)}.sm\:bui-p-7{padding:var(--bui-space-7)}.sm\:bui-p-8{padding:var(--bui-space-8)}.sm\:bui-p-9{padding:var(--bui-space-9)}.sm\:bui-p-10{padding:var(--bui-space-10)}.sm\:bui-p-11{padding:var(--bui-space-11)}.sm\:bui-p-12{padding:var(--bui-space-12)}.sm\:bui-p-13{padding:var(--bui-space-13)}.sm\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-p{padding:var(--p-md)}.md\:bui-p-0\.5{padding:var(--bui-space-0_5)}.md\:bui-p-1{padding:var(--bui-space-1)}.md\:bui-p-1\.5{padding:var(--bui-space-1_5)}.md\:bui-p-2{padding:var(--bui-space-2)}.md\:bui-p-3{padding:var(--bui-space-3)}.md\:bui-p-4{padding:var(--bui-space-4)}.md\:bui-p-5{padding:var(--bui-space-5)}.md\:bui-p-6{padding:var(--bui-space-6)}.md\:bui-p-7{padding:var(--bui-space-7)}.md\:bui-p-8{padding:var(--bui-space-8)}.md\:bui-p-9{padding:var(--bui-space-9)}.md\:bui-p-10{padding:var(--bui-space-10)}.md\:bui-p-11{padding:var(--bui-space-11)}.md\:bui-p-12{padding:var(--bui-space-12)}.md\:bui-p-13{padding:var(--bui-space-13)}.md\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-p{padding:var(--p-lg)}.lg\:bui-p-0\.5{padding:var(--bui-space-0_5)}.lg\:bui-p-1{padding:var(--bui-space-1)}.lg\:bui-p-1\.5{padding:var(--bui-space-1_5)}.lg\:bui-p-2{padding:var(--bui-space-2)}.lg\:bui-p-3{padding:var(--bui-space-3)}.lg\:bui-p-4{padding:var(--bui-space-4)}.lg\:bui-p-5{padding:var(--bui-space-5)}.lg\:bui-p-6{padding:var(--bui-space-6)}.lg\:bui-p-7{padding:var(--bui-space-7)}.lg\:bui-p-8{padding:var(--bui-space-8)}.lg\:bui-p-9{padding:var(--bui-space-9)}.lg\:bui-p-10{padding:var(--bui-space-10)}.lg\:bui-p-11{padding:var(--bui-space-11)}.lg\:bui-p-12{padding:var(--bui-space-12)}.lg\:bui-p-13{padding:var(--bui-space-13)}.lg\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-p{padding:var(--p-xl)}.xl\:bui-p-0\.5{padding:var(--bui-space-0_5)}.xl\:bui-p-1{padding:var(--bui-space-1)}.xl\:bui-p-1\.5{padding:var(--bui-space-1_5)}.xl\:bui-p-2{padding:var(--bui-space-2)}.xl\:bui-p-3{padding:var(--bui-space-3)}.xl\:bui-p-4{padding:var(--bui-space-4)}.xl\:bui-p-5{padding:var(--bui-space-5)}.xl\:bui-p-6{padding:var(--bui-space-6)}.xl\:bui-p-7{padding:var(--bui-space-7)}.xl\:bui-p-8{padding:var(--bui-space-8)}.xl\:bui-p-9{padding:var(--bui-space-9)}.xl\:bui-p-10{padding:var(--bui-space-10)}.xl\:bui-p-11{padding:var(--bui-space-11)}.xl\:bui-p-12{padding:var(--bui-space-12)}.xl\:bui-p-13{padding:var(--bui-space-13)}.xl\:bui-p-14{padding:var(--bui-space-14)}}.bui-pl{padding-left:var(--pl)}.bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.bui-pl-1{padding-left:var(--bui-space-1)}.bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.bui-pl-2{padding-left:var(--bui-space-2)}.bui-pl-3{padding-left:var(--bui-space-3)}.bui-pl-4{padding-left:var(--bui-space-4)}.bui-pl-5{padding-left:var(--bui-space-5)}.bui-pl-6{padding-left:var(--bui-space-6)}.bui-pl-7{padding-left:var(--bui-space-7)}.bui-pl-8{padding-left:var(--bui-space-8)}.bui-pl-9{padding-left:var(--bui-space-9)}.bui-pl-10{padding-left:var(--bui-space-10)}.bui-pl-11{padding-left:var(--bui-space-11)}.bui-pl-12{padding-left:var(--bui-space-12)}.bui-pl-13{padding-left:var(--bui-space-13)}.bui-pl-14{padding-left:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pl{padding-left:var(--pl-xs)}.xs\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.xs\:bui-pl-1{padding-left:var(--bui-space-1)}.xs\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.xs\:bui-pl-2{padding-left:var(--bui-space-2)}.xs\:bui-pl-3{padding-left:var(--bui-space-3)}.xs\:bui-pl-4{padding-left:var(--bui-space-4)}.xs\:bui-pl-5{padding-left:var(--bui-space-5)}.xs\:bui-pl-6{padding-left:var(--bui-space-6)}.xs\:bui-pl-7{padding-left:var(--bui-space-7)}.xs\:bui-pl-8{padding-left:var(--bui-space-8)}.xs\:bui-pl-9{padding-left:var(--bui-space-9)}.xs\:bui-pl-10{padding-left:var(--bui-space-10)}.xs\:bui-pl-11{padding-left:var(--bui-space-11)}.xs\:bui-pl-12{padding-left:var(--bui-space-12)}.xs\:bui-pl-13{padding-left:var(--bui-space-13)}.xs\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pl{padding-left:var(--pl-sm)}.sm\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.sm\:bui-pl-1{padding-left:var(--bui-space-1)}.sm\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.sm\:bui-pl-2{padding-left:var(--bui-space-2)}.sm\:bui-pl-3{padding-left:var(--bui-space-3)}.sm\:bui-pl-4{padding-left:var(--bui-space-4)}.sm\:bui-pl-5{padding-left:var(--bui-space-5)}.sm\:bui-pl-6{padding-left:var(--bui-space-6)}.sm\:bui-pl-7{padding-left:var(--bui-space-7)}.sm\:bui-pl-8{padding-left:var(--bui-space-8)}.sm\:bui-pl-9{padding-left:var(--bui-space-9)}.sm\:bui-pl-10{padding-left:var(--bui-space-10)}.sm\:bui-pl-11{padding-left:var(--bui-space-11)}.sm\:bui-pl-12{padding-left:var(--bui-space-12)}.sm\:bui-pl-13{padding-left:var(--bui-space-13)}.sm\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pl{padding-left:var(--pl-md)}.md\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.md\:bui-pl-1{padding-left:var(--bui-space-1)}.md\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.md\:bui-pl-2{padding-left:var(--bui-space-2)}.md\:bui-pl-3{padding-left:var(--bui-space-3)}.md\:bui-pl-4{padding-left:var(--bui-space-4)}.md\:bui-pl-5{padding-left:var(--bui-space-5)}.md\:bui-pl-6{padding-left:var(--bui-space-6)}.md\:bui-pl-7{padding-left:var(--bui-space-7)}.md\:bui-pl-8{padding-left:var(--bui-space-8)}.md\:bui-pl-9{padding-left:var(--bui-space-9)}.md\:bui-pl-10{padding-left:var(--bui-space-10)}.md\:bui-pl-11{padding-left:var(--bui-space-11)}.md\:bui-pl-12{padding-left:var(--bui-space-12)}.md\:bui-pl-13{padding-left:var(--bui-space-13)}.md\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pl{padding-left:var(--pl-lg)}.lg\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.lg\:bui-pl-1{padding-left:var(--bui-space-1)}.lg\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.lg\:bui-pl-2{padding-left:var(--bui-space-2)}.lg\:bui-pl-3{padding-left:var(--bui-space-3)}.lg\:bui-pl-4{padding-left:var(--bui-space-4)}.lg\:bui-pl-5{padding-left:var(--bui-space-5)}.lg\:bui-pl-6{padding-left:var(--bui-space-6)}.lg\:bui-pl-7{padding-left:var(--bui-space-7)}.lg\:bui-pl-8{padding-left:var(--bui-space-8)}.lg\:bui-pl-9{padding-left:var(--bui-space-9)}.lg\:bui-pl-10{padding-left:var(--bui-space-10)}.lg\:bui-pl-11{padding-left:var(--bui-space-11)}.lg\:bui-pl-12{padding-left:var(--bui-space-12)}.lg\:bui-pl-13{padding-left:var(--bui-space-13)}.lg\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pl{padding-left:var(--pl-xl)}.xl\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.xl\:bui-pl-1{padding-left:var(--bui-space-1)}.xl\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.xl\:bui-pl-2{padding-left:var(--bui-space-2)}.xl\:bui-pl-3{padding-left:var(--bui-space-3)}.xl\:bui-pl-4{padding-left:var(--bui-space-4)}.xl\:bui-pl-5{padding-left:var(--bui-space-5)}.xl\:bui-pl-6{padding-left:var(--bui-space-6)}.xl\:bui-pl-7{padding-left:var(--bui-space-7)}.xl\:bui-pl-8{padding-left:var(--bui-space-8)}.xl\:bui-pl-9{padding-left:var(--bui-space-9)}.xl\:bui-pl-10{padding-left:var(--bui-space-10)}.xl\:bui-pl-11{padding-left:var(--bui-space-11)}.xl\:bui-pl-12{padding-left:var(--bui-space-12)}.xl\:bui-pl-13{padding-left:var(--bui-space-13)}.xl\:bui-pl-14{padding-left:var(--bui-space-14)}}.bui-pr{padding-right:var(--pr)}.bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.bui-pr-1{padding-right:var(--bui-space-1)}.bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.bui-pr-2{padding-right:var(--bui-space-2)}.bui-pr-3{padding-right:var(--bui-space-3)}.bui-pr-4{padding-right:var(--bui-space-4)}.bui-pr-5{padding-right:var(--bui-space-5)}.bui-pr-6{padding-right:var(--bui-space-6)}.bui-pr-7{padding-right:var(--bui-space-7)}.bui-pr-8{padding-right:var(--bui-space-8)}.bui-pr-9{padding-right:var(--bui-space-9)}.bui-pr-10{padding-right:var(--bui-space-10)}.bui-pr-11{padding-right:var(--bui-space-11)}.bui-pr-12{padding-right:var(--bui-space-12)}.bui-pr-13{padding-right:var(--bui-space-13)}.bui-pr-14{padding-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pr{padding-right:var(--pr-xs)}.xs\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.xs\:bui-pr-1{padding-right:var(--bui-space-1)}.xs\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.xs\:bui-pr-2{padding-right:var(--bui-space-2)}.xs\:bui-pr-3{padding-right:var(--bui-space-3)}.xs\:bui-pr-4{padding-right:var(--bui-space-4)}.xs\:bui-pr-5{padding-right:var(--bui-space-5)}.xs\:bui-pr-6{padding-right:var(--bui-space-6)}.xs\:bui-pr-7{padding-right:var(--bui-space-7)}.xs\:bui-pr-8{padding-right:var(--bui-space-8)}.xs\:bui-pr-9{padding-right:var(--bui-space-9)}.xs\:bui-pr-10{padding-right:var(--bui-space-10)}.xs\:bui-pr-11{padding-right:var(--bui-space-11)}.xs\:bui-pr-12{padding-right:var(--bui-space-12)}.xs\:bui-pr-13{padding-right:var(--bui-space-13)}.xs\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pr{padding-right:var(--pr-sm)}.sm\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.sm\:bui-pr-1{padding-right:var(--bui-space-1)}.sm\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.sm\:bui-pr-2{padding-right:var(--bui-space-2)}.sm\:bui-pr-3{padding-right:var(--bui-space-3)}.sm\:bui-pr-4{padding-right:var(--bui-space-4)}.sm\:bui-pr-5{padding-right:var(--bui-space-5)}.sm\:bui-pr-6{padding-right:var(--bui-space-6)}.sm\:bui-pr-7{padding-right:var(--bui-space-7)}.sm\:bui-pr-8{padding-right:var(--bui-space-8)}.sm\:bui-pr-9{padding-right:var(--bui-space-9)}.sm\:bui-pr-10{padding-right:var(--bui-space-10)}.sm\:bui-pr-11{padding-right:var(--bui-space-11)}.sm\:bui-pr-12{padding-right:var(--bui-space-12)}.sm\:bui-pr-13{padding-right:var(--bui-space-13)}.sm\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pr{padding-right:var(--pr-md)}.md\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.md\:bui-pr-1{padding-right:var(--bui-space-1)}.md\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.md\:bui-pr-2{padding-right:var(--bui-space-2)}.md\:bui-pr-3{padding-right:var(--bui-space-3)}.md\:bui-pr-4{padding-right:var(--bui-space-4)}.md\:bui-pr-5{padding-right:var(--bui-space-5)}.md\:bui-pr-6{padding-right:var(--bui-space-6)}.md\:bui-pr-7{padding-right:var(--bui-space-7)}.md\:bui-pr-8{padding-right:var(--bui-space-8)}.md\:bui-pr-9{padding-right:var(--bui-space-9)}.md\:bui-pr-10{padding-right:var(--bui-space-10)}.md\:bui-pr-11{padding-right:var(--bui-space-11)}.md\:bui-pr-12{padding-right:var(--bui-space-12)}.md\:bui-pr-13{padding-right:var(--bui-space-13)}.md\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pr{padding-right:var(--pr-lg)}.lg\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.lg\:bui-pr-1{padding-right:var(--bui-space-1)}.lg\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.lg\:bui-pr-2{padding-right:var(--bui-space-2)}.lg\:bui-pr-3{padding-right:var(--bui-space-3)}.lg\:bui-pr-4{padding-right:var(--bui-space-4)}.lg\:bui-pr-5{padding-right:var(--bui-space-5)}.lg\:bui-pr-6{padding-right:var(--bui-space-6)}.lg\:bui-pr-7{padding-right:var(--bui-space-7)}.lg\:bui-pr-8{padding-right:var(--bui-space-8)}.lg\:bui-pr-9{padding-right:var(--bui-space-9)}.lg\:bui-pr-10{padding-right:var(--bui-space-10)}.lg\:bui-pr-11{padding-right:var(--bui-space-11)}.lg\:bui-pr-12{padding-right:var(--bui-space-12)}.lg\:bui-pr-13{padding-right:var(--bui-space-13)}.lg\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pr{padding-right:var(--pr-xl)}.xl\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.xl\:bui-pr-1{padding-right:var(--bui-space-1)}.xl\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.xl\:bui-pr-2{padding-right:var(--bui-space-2)}.xl\:bui-pr-3{padding-right:var(--bui-space-3)}.xl\:bui-pr-4{padding-right:var(--bui-space-4)}.xl\:bui-pr-5{padding-right:var(--bui-space-5)}.xl\:bui-pr-6{padding-right:var(--bui-space-6)}.xl\:bui-pr-7{padding-right:var(--bui-space-7)}.xl\:bui-pr-8{padding-right:var(--bui-space-8)}.xl\:bui-pr-9{padding-right:var(--bui-space-9)}.xl\:bui-pr-10{padding-right:var(--bui-space-10)}.xl\:bui-pr-11{padding-right:var(--bui-space-11)}.xl\:bui-pr-12{padding-right:var(--bui-space-12)}.xl\:bui-pr-13{padding-right:var(--bui-space-13)}.xl\:bui-pr-14{padding-right:var(--bui-space-14)}}.bui-pt{padding-top:var(--pt)}.bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.bui-pt-1{padding-top:var(--bui-space-1)}.bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.bui-pt-2{padding-top:var(--bui-space-2)}.bui-pt-3{padding-top:var(--bui-space-3)}.bui-pt-4{padding-top:var(--bui-space-4)}.bui-pt-5{padding-top:var(--bui-space-5)}.bui-pt-6{padding-top:var(--bui-space-6)}.bui-pt-7{padding-top:var(--bui-space-7)}.bui-pt-8{padding-top:var(--bui-space-8)}.bui-pt-9{padding-top:var(--bui-space-9)}.bui-pt-10{padding-top:var(--bui-space-10)}.bui-pt-11{padding-top:var(--bui-space-11)}.bui-pt-12{padding-top:var(--bui-space-12)}.bui-pt-13{padding-top:var(--bui-space-13)}.bui-pt-14{padding-top:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pt{padding-top:var(--pt-xs)}.xs\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.xs\:bui-pt-1{padding-top:var(--bui-space-1)}.xs\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.xs\:bui-pt-2{padding-top:var(--bui-space-2)}.xs\:bui-pt-3{padding-top:var(--bui-space-3)}.xs\:bui-pt-4{padding-top:var(--bui-space-4)}.xs\:bui-pt-5{padding-top:var(--bui-space-5)}.xs\:bui-pt-6{padding-top:var(--bui-space-6)}.xs\:bui-pt-7{padding-top:var(--bui-space-7)}.xs\:bui-pt-8{padding-top:var(--bui-space-8)}.xs\:bui-pt-9{padding-top:var(--bui-space-9)}.xs\:bui-pt-10{padding-top:var(--bui-space-10)}.xs\:bui-pt-11{padding-top:var(--bui-space-11)}.xs\:bui-pt-12{padding-top:var(--bui-space-12)}.xs\:bui-pt-13{padding-top:var(--bui-space-13)}.xs\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pt{padding-top:var(--pt-sm)}.sm\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.sm\:bui-pt-1{padding-top:var(--bui-space-1)}.sm\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.sm\:bui-pt-2{padding-top:var(--bui-space-2)}.sm\:bui-pt-3{padding-top:var(--bui-space-3)}.sm\:bui-pt-4{padding-top:var(--bui-space-4)}.sm\:bui-pt-5{padding-top:var(--bui-space-5)}.sm\:bui-pt-6{padding-top:var(--bui-space-6)}.sm\:bui-pt-7{padding-top:var(--bui-space-7)}.sm\:bui-pt-8{padding-top:var(--bui-space-8)}.sm\:bui-pt-9{padding-top:var(--bui-space-9)}.sm\:bui-pt-10{padding-top:var(--bui-space-10)}.sm\:bui-pt-11{padding-top:var(--bui-space-11)}.sm\:bui-pt-12{padding-top:var(--bui-space-12)}.sm\:bui-pt-13{padding-top:var(--bui-space-13)}.sm\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pt{padding-top:var(--pt-md)}.md\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.md\:bui-pt-1{padding-top:var(--bui-space-1)}.md\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.md\:bui-pt-2{padding-top:var(--bui-space-2)}.md\:bui-pt-3{padding-top:var(--bui-space-3)}.md\:bui-pt-4{padding-top:var(--bui-space-4)}.md\:bui-pt-5{padding-top:var(--bui-space-5)}.md\:bui-pt-6{padding-top:var(--bui-space-6)}.md\:bui-pt-7{padding-top:var(--bui-space-7)}.md\:bui-pt-8{padding-top:var(--bui-space-8)}.md\:bui-pt-9{padding-top:var(--bui-space-9)}.md\:bui-pt-10{padding-top:var(--bui-space-10)}.md\:bui-pt-11{padding-top:var(--bui-space-11)}.md\:bui-pt-12{padding-top:var(--bui-space-12)}.md\:bui-pt-13{padding-top:var(--bui-space-13)}.md\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pt{padding-top:var(--pt-lg)}.lg\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.lg\:bui-pt-1{padding-top:var(--bui-space-1)}.lg\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.lg\:bui-pt-2{padding-top:var(--bui-space-2)}.lg\:bui-pt-3{padding-top:var(--bui-space-3)}.lg\:bui-pt-4{padding-top:var(--bui-space-4)}.lg\:bui-pt-5{padding-top:var(--bui-space-5)}.lg\:bui-pt-6{padding-top:var(--bui-space-6)}.lg\:bui-pt-7{padding-top:var(--bui-space-7)}.lg\:bui-pt-8{padding-top:var(--bui-space-8)}.lg\:bui-pt-9{padding-top:var(--bui-space-9)}.lg\:bui-pt-10{padding-top:var(--bui-space-10)}.lg\:bui-pt-11{padding-top:var(--bui-space-11)}.lg\:bui-pt-12{padding-top:var(--bui-space-12)}.lg\:bui-pt-13{padding-top:var(--bui-space-13)}.lg\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pt{padding-top:var(--pt-xl)}.xl\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.xl\:bui-pt-1{padding-top:var(--bui-space-1)}.xl\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.xl\:bui-pt-2{padding-top:var(--bui-space-2)}.xl\:bui-pt-3{padding-top:var(--bui-space-3)}.xl\:bui-pt-4{padding-top:var(--bui-space-4)}.xl\:bui-pt-5{padding-top:var(--bui-space-5)}.xl\:bui-pt-6{padding-top:var(--bui-space-6)}.xl\:bui-pt-7{padding-top:var(--bui-space-7)}.xl\:bui-pt-8{padding-top:var(--bui-space-8)}.xl\:bui-pt-9{padding-top:var(--bui-space-9)}.xl\:bui-pt-10{padding-top:var(--bui-space-10)}.xl\:bui-pt-11{padding-top:var(--bui-space-11)}.xl\:bui-pt-12{padding-top:var(--bui-space-12)}.xl\:bui-pt-13{padding-top:var(--bui-space-13)}.xl\:bui-pt-14{padding-top:var(--bui-space-14)}}.bui-pb{padding-bottom:var(--pb)}.bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.bui-pb-1{padding-bottom:var(--bui-space-1)}.bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.bui-pb-2{padding-bottom:var(--bui-space-2)}.bui-pb-3{padding-bottom:var(--bui-space-3)}.bui-pb-4{padding-bottom:var(--bui-space-4)}.bui-pb-5{padding-bottom:var(--bui-space-5)}.bui-pb-6{padding-bottom:var(--bui-space-6)}.bui-pb-7{padding-bottom:var(--bui-space-7)}.bui-pb-8{padding-bottom:var(--bui-space-8)}.bui-pb-9{padding-bottom:var(--bui-space-9)}.bui-pb-10{padding-bottom:var(--bui-space-10)}.bui-pb-11{padding-bottom:var(--bui-space-11)}.bui-pb-12{padding-bottom:var(--bui-space-12)}.bui-pb-13{padding-bottom:var(--bui-space-13)}.bui-pb-14{padding-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pb{padding-bottom:var(--pb-xs)}.xs\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.xs\:bui-pb-1{padding-bottom:var(--bui-space-1)}.xs\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.xs\:bui-pb-2{padding-bottom:var(--bui-space-2)}.xs\:bui-pb-3{padding-bottom:var(--bui-space-3)}.xs\:bui-pb-4{padding-bottom:var(--bui-space-4)}.xs\:bui-pb-5{padding-bottom:var(--bui-space-5)}.xs\:bui-pb-6{padding-bottom:var(--bui-space-6)}.xs\:bui-pb-7{padding-bottom:var(--bui-space-7)}.xs\:bui-pb-8{padding-bottom:var(--bui-space-8)}.xs\:bui-pb-9{padding-bottom:var(--bui-space-9)}.xs\:bui-pb-10{padding-bottom:var(--bui-space-10)}.xs\:bui-pb-11{padding-bottom:var(--bui-space-11)}.xs\:bui-pb-12{padding-bottom:var(--bui-space-12)}.xs\:bui-pb-13{padding-bottom:var(--bui-space-13)}.xs\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pb{padding-bottom:var(--pb-sm)}.sm\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.sm\:bui-pb-1{padding-bottom:var(--bui-space-1)}.sm\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.sm\:bui-pb-2{padding-bottom:var(--bui-space-2)}.sm\:bui-pb-3{padding-bottom:var(--bui-space-3)}.sm\:bui-pb-4{padding-bottom:var(--bui-space-4)}.sm\:bui-pb-5{padding-bottom:var(--bui-space-5)}.sm\:bui-pb-6{padding-bottom:var(--bui-space-6)}.sm\:bui-pb-7{padding-bottom:var(--bui-space-7)}.sm\:bui-pb-8{padding-bottom:var(--bui-space-8)}.sm\:bui-pb-9{padding-bottom:var(--bui-space-9)}.sm\:bui-pb-10{padding-bottom:var(--bui-space-10)}.sm\:bui-pb-11{padding-bottom:var(--bui-space-11)}.sm\:bui-pb-12{padding-bottom:var(--bui-space-12)}.sm\:bui-pb-13{padding-bottom:var(--bui-space-13)}.sm\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pb{padding-bottom:var(--pb-md)}.md\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.md\:bui-pb-1{padding-bottom:var(--bui-space-1)}.md\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.md\:bui-pb-2{padding-bottom:var(--bui-space-2)}.md\:bui-pb-3{padding-bottom:var(--bui-space-3)}.md\:bui-pb-4{padding-bottom:var(--bui-space-4)}.md\:bui-pb-5{padding-bottom:var(--bui-space-5)}.md\:bui-pb-6{padding-bottom:var(--bui-space-6)}.md\:bui-pb-7{padding-bottom:var(--bui-space-7)}.md\:bui-pb-8{padding-bottom:var(--bui-space-8)}.md\:bui-pb-9{padding-bottom:var(--bui-space-9)}.md\:bui-pb-10{padding-bottom:var(--bui-space-10)}.md\:bui-pb-11{padding-bottom:var(--bui-space-11)}.md\:bui-pb-12{padding-bottom:var(--bui-space-12)}.md\:bui-pb-13{padding-bottom:var(--bui-space-13)}.md\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pb{padding-bottom:var(--pb-lg)}.lg\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.lg\:bui-pb-1{padding-bottom:var(--bui-space-1)}.lg\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.lg\:bui-pb-2{padding-bottom:var(--bui-space-2)}.lg\:bui-pb-3{padding-bottom:var(--bui-space-3)}.lg\:bui-pb-4{padding-bottom:var(--bui-space-4)}.lg\:bui-pb-5{padding-bottom:var(--bui-space-5)}.lg\:bui-pb-6{padding-bottom:var(--bui-space-6)}.lg\:bui-pb-7{padding-bottom:var(--bui-space-7)}.lg\:bui-pb-8{padding-bottom:var(--bui-space-8)}.lg\:bui-pb-9{padding-bottom:var(--bui-space-9)}.lg\:bui-pb-10{padding-bottom:var(--bui-space-10)}.lg\:bui-pb-11{padding-bottom:var(--bui-space-11)}.lg\:bui-pb-12{padding-bottom:var(--bui-space-12)}.lg\:bui-pb-13{padding-bottom:var(--bui-space-13)}.lg\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pb{padding-bottom:var(--pb-xl)}.xl\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.xl\:bui-pb-1{padding-bottom:var(--bui-space-1)}.xl\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.xl\:bui-pb-2{padding-bottom:var(--bui-space-2)}.xl\:bui-pb-3{padding-bottom:var(--bui-space-3)}.xl\:bui-pb-4{padding-bottom:var(--bui-space-4)}.xl\:bui-pb-5{padding-bottom:var(--bui-space-5)}.xl\:bui-pb-6{padding-bottom:var(--bui-space-6)}.xl\:bui-pb-7{padding-bottom:var(--bui-space-7)}.xl\:bui-pb-8{padding-bottom:var(--bui-space-8)}.xl\:bui-pb-9{padding-bottom:var(--bui-space-9)}.xl\:bui-pb-10{padding-bottom:var(--bui-space-10)}.xl\:bui-pb-11{padding-bottom:var(--bui-space-11)}.xl\:bui-pb-12{padding-bottom:var(--bui-space-12)}.xl\:bui-pb-13{padding-bottom:var(--bui-space-13)}.xl\:bui-pb-14{padding-bottom:var(--bui-space-14)}}.bui-py{padding-top:var(--py);padding-bottom:var(--py)}.bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-py{padding-top:var(--py-xs);padding-bottom:var(--py-xs)}.xs\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.xs\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.xs\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.xs\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.xs\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.xs\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.xs\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.xs\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.xs\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.xs\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.xs\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.xs\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.xs\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.xs\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.xs\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.xs\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-py{padding-top:var(--py-sm);padding-bottom:var(--py-sm)}.sm\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.sm\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.sm\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.sm\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.sm\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.sm\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.sm\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.sm\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.sm\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.sm\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.sm\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.sm\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.sm\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.sm\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.sm\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.sm\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-py{padding-top:var(--py-md);padding-bottom:var(--py-md)}.md\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.md\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.md\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.md\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.md\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.md\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.md\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.md\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.md\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.md\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.md\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.md\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.md\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.md\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.md\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.md\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-py{padding-top:var(--py-lg);padding-bottom:var(--py-lg)}.lg\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.lg\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.lg\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.lg\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.lg\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.lg\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.lg\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.lg\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.lg\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.lg\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.lg\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.lg\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.lg\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.lg\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.lg\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.lg\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-py{padding-top:var(--py-xl);padding-bottom:var(--py-xl)}.xl\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.xl\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.xl\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.xl\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.xl\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.xl\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.xl\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.xl\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.xl\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.xl\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.xl\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.xl\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.xl\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.xl\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.xl\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.xl\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}.bui-px{padding-left:var(--px);padding-right:var(--px)}.bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-px{padding-left:var(--px-xs);padding-right:var(--px-xs)}.xs\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.xs\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.xs\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.xs\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.xs\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.xs\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.xs\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.xs\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.xs\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.xs\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.xs\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.xs\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.xs\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.xs\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.xs\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.xs\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-px{padding-left:var(--px-sm);padding-right:var(--px-sm)}.sm\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.sm\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.sm\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.sm\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.sm\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.sm\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.sm\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.sm\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.sm\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.sm\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.sm\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.sm\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.sm\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.sm\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.sm\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.sm\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-px{padding-left:var(--px-md);padding-right:var(--px-md)}.md\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.md\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.md\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.md\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.md\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.md\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.md\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.md\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.md\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.md\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.md\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.md\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.md\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.md\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.md\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.md\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-px{padding-left:var(--px-lg);padding-right:var(--px-lg)}.lg\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.lg\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.lg\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.lg\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.lg\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.lg\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.lg\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.lg\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.lg\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.lg\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.lg\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.lg\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.lg\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.lg\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.lg\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.lg\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-px{padding-left:var(--px-xl);padding-right:var(--px-xl)}.xl\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.xl\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.xl\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.xl\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.xl\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.xl\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.xl\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.xl\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.xl\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.xl\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.xl\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.xl\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.xl\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.xl\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.xl\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.xl\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}.bui-m{margin:var(--m)}.bui-m-0\.5{margin:var(--bui-space-0_5)}.bui-m-1{margin:var(--bui-space-1)}.bui-m-1\.5{margin:var(--bui-space-1_5)}.bui-m-2{margin:var(--bui-space-2)}.bui-m-3{margin:var(--bui-space-3)}.bui-m-4{margin:var(--bui-space-4)}.bui-m-5{margin:var(--bui-space-5)}.bui-m-6{margin:var(--bui-space-6)}.bui-m-7{margin:var(--bui-space-7)}.bui-m-8{margin:var(--bui-space-8)}.bui-m-9{margin:var(--bui-space-9)}.bui-m-10{margin:var(--bui-space-10)}.bui-m-11{margin:var(--bui-space-11)}.bui-m-12{margin:var(--bui-space-12)}.bui-m-13{margin:var(--bui-space-13)}.bui-m-14{margin:var(--bui-space-14)}@media (width>=640px){.xs\:bui-m{margin:var(--p-xs)}.xs\:bui-m-0\.5{margin:var(--bui-space-0_5)}.xs\:bui-m-1{margin:var(--bui-space-1)}.xs\:bui-m-1\.5{margin:var(--bui-space-1_5)}.xs\:bui-m-2{margin:var(--bui-space-2)}.xs\:bui-m-3{margin:var(--bui-space-3)}.xs\:bui-m-4{margin:var(--bui-space-4)}.xs\:bui-m-5{margin:var(--bui-space-5)}.xs\:bui-m-6{margin:var(--bui-space-6)}.xs\:bui-m-7{margin:var(--bui-space-7)}.xs\:bui-m-8{margin:var(--bui-space-8)}.xs\:bui-m-9{margin:var(--bui-space-9)}.xs\:bui-m-10{margin:var(--bui-space-10)}.xs\:bui-m-11{margin:var(--bui-space-11)}.xs\:bui-m-12{margin:var(--bui-space-12)}.xs\:bui-m-13{margin:var(--bui-space-13)}.xs\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-m{margin:var(--p-sm)}.sm\:bui-m-0\.5{margin:var(--bui-space-0_5)}.sm\:bui-m-1{margin:var(--bui-space-1)}.sm\:bui-m-1\.5{margin:var(--bui-space-1_5)}.sm\:bui-m-2{margin:var(--bui-space-2)}.sm\:bui-m-3{margin:var(--bui-space-3)}.sm\:bui-m-4{margin:var(--bui-space-4)}.sm\:bui-m-5{margin:var(--bui-space-5)}.sm\:bui-m-6{margin:var(--bui-space-6)}.sm\:bui-m-7{margin:var(--bui-space-7)}.sm\:bui-m-8{margin:var(--bui-space-8)}.sm\:bui-m-9{margin:var(--bui-space-9)}.sm\:bui-m-10{margin:var(--bui-space-10)}.sm\:bui-m-11{margin:var(--bui-space-11)}.sm\:bui-m-12{margin:var(--bui-space-12)}.sm\:bui-m-13{margin:var(--bui-space-13)}.sm\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-m{margin:var(--p-md)}.md\:bui-m-0\.5{margin:var(--bui-space-0_5)}.md\:bui-m-1{margin:var(--bui-space-1)}.md\:bui-m-1\.5{margin:var(--bui-space-1_5)}.md\:bui-m-2{margin:var(--bui-space-2)}.md\:bui-m-3{margin:var(--bui-space-3)}.md\:bui-m-4{margin:var(--bui-space-4)}.md\:bui-m-5{margin:var(--bui-space-5)}.md\:bui-m-6{margin:var(--bui-space-6)}.md\:bui-m-7{margin:var(--bui-space-7)}.md\:bui-m-8{margin:var(--bui-space-8)}.md\:bui-m-9{margin:var(--bui-space-9)}.md\:bui-m-10{margin:var(--bui-space-10)}.md\:bui-m-11{margin:var(--bui-space-11)}.md\:bui-m-12{margin:var(--bui-space-12)}.md\:bui-m-13{margin:var(--bui-space-13)}.md\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-m{margin:var(--p-lg)}.lg\:bui-m-0\.5{margin:var(--bui-space-0_5)}.lg\:bui-m-1{margin:var(--bui-space-1)}.lg\:bui-m-1\.5{margin:var(--bui-space-1_5)}.lg\:bui-m-2{margin:var(--bui-space-2)}.lg\:bui-m-3{margin:var(--bui-space-3)}.lg\:bui-m-4{margin:var(--bui-space-4)}.lg\:bui-m-5{margin:var(--bui-space-5)}.lg\:bui-m-6{margin:var(--bui-space-6)}.lg\:bui-m-7{margin:var(--bui-space-7)}.lg\:bui-m-8{margin:var(--bui-space-8)}.lg\:bui-m-9{margin:var(--bui-space-9)}.lg\:bui-m-10{margin:var(--bui-space-10)}.lg\:bui-m-11{margin:var(--bui-space-11)}.lg\:bui-m-12{margin:var(--bui-space-12)}.lg\:bui-m-13{margin:var(--bui-space-13)}.lg\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-m{margin:var(--p-xl)}.xl\:bui-m-0\.5{margin:var(--bui-space-0_5)}.xl\:bui-m-1{margin:var(--bui-space-1)}.xl\:bui-m-1\.5{margin:var(--bui-space-1_5)}.xl\:bui-m-2{margin:var(--bui-space-2)}.xl\:bui-m-3{margin:var(--bui-space-3)}.xl\:bui-m-4{margin:var(--bui-space-4)}.xl\:bui-m-5{margin:var(--bui-space-5)}.xl\:bui-m-6{margin:var(--bui-space-6)}.xl\:bui-m-7{margin:var(--bui-space-7)}.xl\:bui-m-8{margin:var(--bui-space-8)}.xl\:bui-m-9{margin:var(--bui-space-9)}.xl\:bui-m-10{margin:var(--bui-space-10)}.xl\:bui-m-11{margin:var(--bui-space-11)}.xl\:bui-m-12{margin:var(--bui-space-12)}.xl\:bui-m-13{margin:var(--bui-space-13)}.xl\:bui-m-14{margin:var(--bui-space-14)}}.bui-ml{margin-left:var(--ml)}.bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.bui-ml-1{margin-left:var(--bui-space-1)}.bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.bui-ml-2{margin-left:var(--bui-space-2)}.bui-ml-3{margin-left:var(--bui-space-3)}.bui-ml-4{margin-left:var(--bui-space-4)}.bui-ml-5{margin-left:var(--bui-space-5)}.bui-ml-6{margin-left:var(--bui-space-6)}.bui-ml-7{margin-left:var(--bui-space-7)}.bui-ml-8{margin-left:var(--bui-space-8)}.bui-ml-9{margin-left:var(--bui-space-9)}.bui-ml-10{margin-left:var(--bui-space-10)}.bui-ml-11{margin-left:var(--bui-space-11)}.bui-ml-12{margin-left:var(--bui-space-12)}.bui-ml-13{margin-left:var(--bui-space-13)}.bui-ml-14{margin-left:var(--bui-space-14)}@media (width>=640px){.xs\:bui-ml{margin-left:var(--ml-xs)}.xs\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.xs\:bui-ml-1{margin-left:var(--bui-space-1)}.xs\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.xs\:bui-ml-2{margin-left:var(--bui-space-2)}.xs\:bui-ml-3{margin-left:var(--bui-space-3)}.xs\:bui-ml-4{margin-left:var(--bui-space-4)}.xs\:bui-ml-5{margin-left:var(--bui-space-5)}.xs\:bui-ml-6{margin-left:var(--bui-space-6)}.xs\:bui-ml-7{margin-left:var(--bui-space-7)}.xs\:bui-ml-8{margin-left:var(--bui-space-8)}.xs\:bui-ml-9{margin-left:var(--bui-space-9)}.xs\:bui-ml-10{margin-left:var(--bui-space-10)}.xs\:bui-ml-11{margin-left:var(--bui-space-11)}.xs\:bui-ml-12{margin-left:var(--bui-space-12)}.xs\:bui-ml-13{margin-left:var(--bui-space-13)}.xs\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-ml{margin-left:var(--ml-sm)}.sm\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.sm\:bui-ml-1{margin-left:var(--bui-space-1)}.sm\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.sm\:bui-ml-2{margin-left:var(--bui-space-2)}.sm\:bui-ml-3{margin-left:var(--bui-space-3)}.sm\:bui-ml-4{margin-left:var(--bui-space-4)}.sm\:bui-ml-5{margin-left:var(--bui-space-5)}.sm\:bui-ml-6{margin-left:var(--bui-space-6)}.sm\:bui-ml-7{margin-left:var(--bui-space-7)}.sm\:bui-ml-8{margin-left:var(--bui-space-8)}.sm\:bui-ml-9{margin-left:var(--bui-space-9)}.sm\:bui-ml-10{margin-left:var(--bui-space-10)}.sm\:bui-ml-11{margin-left:var(--bui-space-11)}.sm\:bui-ml-12{margin-left:var(--bui-space-12)}.sm\:bui-ml-13{margin-left:var(--bui-space-13)}.sm\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-ml{margin-left:var(--ml-md)}.md\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.md\:bui-ml-1{margin-left:var(--bui-space-1)}.md\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.md\:bui-ml-2{margin-left:var(--bui-space-2)}.md\:bui-ml-3{margin-left:var(--bui-space-3)}.md\:bui-ml-4{margin-left:var(--bui-space-4)}.md\:bui-ml-5{margin-left:var(--bui-space-5)}.md\:bui-ml-6{margin-left:var(--bui-space-6)}.md\:bui-ml-7{margin-left:var(--bui-space-7)}.md\:bui-ml-8{margin-left:var(--bui-space-8)}.md\:bui-ml-9{margin-left:var(--bui-space-9)}.md\:bui-ml-10{margin-left:var(--bui-space-10)}.md\:bui-ml-11{margin-left:var(--bui-space-11)}.md\:bui-ml-12{margin-left:var(--bui-space-12)}.md\:bui-ml-13{margin-left:var(--bui-space-13)}.md\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-ml{margin-left:var(--ml-lg)}.lg\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.lg\:bui-ml-1{margin-left:var(--bui-space-1)}.lg\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.lg\:bui-ml-2{margin-left:var(--bui-space-2)}.lg\:bui-ml-3{margin-left:var(--bui-space-3)}.lg\:bui-ml-4{margin-left:var(--bui-space-4)}.lg\:bui-ml-5{margin-left:var(--bui-space-5)}.lg\:bui-ml-6{margin-left:var(--bui-space-6)}.lg\:bui-ml-7{margin-left:var(--bui-space-7)}.lg\:bui-ml-8{margin-left:var(--bui-space-8)}.lg\:bui-ml-9{margin-left:var(--bui-space-9)}.lg\:bui-ml-10{margin-left:var(--bui-space-10)}.lg\:bui-ml-11{margin-left:var(--bui-space-11)}.lg\:bui-ml-12{margin-left:var(--bui-space-12)}.lg\:bui-ml-13{margin-left:var(--bui-space-13)}.lg\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-ml{margin-left:var(--ml-xl)}.xl\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.xl\:bui-ml-1{margin-left:var(--bui-space-1)}.xl\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.xl\:bui-ml-2{margin-left:var(--bui-space-2)}.xl\:bui-ml-3{margin-left:var(--bui-space-3)}.xl\:bui-ml-4{margin-left:var(--bui-space-4)}.xl\:bui-ml-5{margin-left:var(--bui-space-5)}.xl\:bui-ml-6{margin-left:var(--bui-space-6)}.xl\:bui-ml-7{margin-left:var(--bui-space-7)}.xl\:bui-ml-8{margin-left:var(--bui-space-8)}.xl\:bui-ml-9{margin-left:var(--bui-space-9)}.xl\:bui-ml-10{margin-left:var(--bui-space-10)}.xl\:bui-ml-11{margin-left:var(--bui-space-11)}.xl\:bui-ml-12{margin-left:var(--bui-space-12)}.xl\:bui-ml-13{margin-left:var(--bui-space-13)}.xl\:bui-ml-14{margin-left:var(--bui-space-14)}}.bui-mr{margin-right:var(--mr)}.bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.bui-mr-1{margin-right:var(--bui-space-1)}.bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.bui-mr-2{margin-right:var(--bui-space-2)}.bui-mr-3{margin-right:var(--bui-space-3)}.bui-mr-4{margin-right:var(--bui-space-4)}.bui-mr-5{margin-right:var(--bui-space-5)}.bui-mr-6{margin-right:var(--bui-space-6)}.bui-mr-7{margin-right:var(--bui-space-7)}.bui-mr-8{margin-right:var(--bui-space-8)}.bui-mr-9{margin-right:var(--bui-space-9)}.bui-mr-10{margin-right:var(--bui-space-10)}.bui-mr-11{margin-right:var(--bui-space-11)}.bui-mr-12{margin-right:var(--bui-space-12)}.bui-mr-13{margin-right:var(--bui-space-13)}.bui-mr-14{margin-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mr{margin-right:var(--mr-xs)}.xs\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.xs\:bui-mr-1{margin-right:var(--bui-space-1)}.xs\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.xs\:bui-mr-2{margin-right:var(--bui-space-2)}.xs\:bui-mr-3{margin-right:var(--bui-space-3)}.xs\:bui-mr-4{margin-right:var(--bui-space-4)}.xs\:bui-mr-5{margin-right:var(--bui-space-5)}.xs\:bui-mr-6{margin-right:var(--bui-space-6)}.xs\:bui-mr-7{margin-right:var(--bui-space-7)}.xs\:bui-mr-8{margin-right:var(--bui-space-8)}.xs\:bui-mr-9{margin-right:var(--bui-space-9)}.xs\:bui-mr-10{margin-right:var(--bui-space-10)}.xs\:bui-mr-11{margin-right:var(--bui-space-11)}.xs\:bui-mr-12{margin-right:var(--bui-space-12)}.xs\:bui-mr-13{margin-right:var(--bui-space-13)}.xs\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mr{margin-right:var(--mr-sm)}.sm\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.sm\:bui-mr-1{margin-right:var(--bui-space-1)}.sm\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.sm\:bui-mr-2{margin-right:var(--bui-space-2)}.sm\:bui-mr-3{margin-right:var(--bui-space-3)}.sm\:bui-mr-4{margin-right:var(--bui-space-4)}.sm\:bui-mr-5{margin-right:var(--bui-space-5)}.sm\:bui-mr-6{margin-right:var(--bui-space-6)}.sm\:bui-mr-7{margin-right:var(--bui-space-7)}.sm\:bui-mr-8{margin-right:var(--bui-space-8)}.sm\:bui-mr-9{margin-right:var(--bui-space-9)}.sm\:bui-mr-10{margin-right:var(--bui-space-10)}.sm\:bui-mr-11{margin-right:var(--bui-space-11)}.sm\:bui-mr-12{margin-right:var(--bui-space-12)}.sm\:bui-mr-13{margin-right:var(--bui-space-13)}.sm\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mr{margin-right:var(--mr-md)}.md\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.md\:bui-mr-1{margin-right:var(--bui-space-1)}.md\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.md\:bui-mr-2{margin-right:var(--bui-space-2)}.md\:bui-mr-3{margin-right:var(--bui-space-3)}.md\:bui-mr-4{margin-right:var(--bui-space-4)}.md\:bui-mr-5{margin-right:var(--bui-space-5)}.md\:bui-mr-6{margin-right:var(--bui-space-6)}.md\:bui-mr-7{margin-right:var(--bui-space-7)}.md\:bui-mr-8{margin-right:var(--bui-space-8)}.md\:bui-mr-9{margin-right:var(--bui-space-9)}.md\:bui-mr-10{margin-right:var(--bui-space-10)}.md\:bui-mr-11{margin-right:var(--bui-space-11)}.md\:bui-mr-12{margin-right:var(--bui-space-12)}.md\:bui-mr-13{margin-right:var(--bui-space-13)}.md\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mr{margin-right:var(--mr-lg)}.lg\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.lg\:bui-mr-1{margin-right:var(--bui-space-1)}.lg\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.lg\:bui-mr-2{margin-right:var(--bui-space-2)}.lg\:bui-mr-3{margin-right:var(--bui-space-3)}.lg\:bui-mr-4{margin-right:var(--bui-space-4)}.lg\:bui-mr-5{margin-right:var(--bui-space-5)}.lg\:bui-mr-6{margin-right:var(--bui-space-6)}.lg\:bui-mr-7{margin-right:var(--bui-space-7)}.lg\:bui-mr-8{margin-right:var(--bui-space-8)}.lg\:bui-mr-9{margin-right:var(--bui-space-9)}.lg\:bui-mr-10{margin-right:var(--bui-space-10)}.lg\:bui-mr-11{margin-right:var(--bui-space-11)}.lg\:bui-mr-12{margin-right:var(--bui-space-12)}.lg\:bui-mr-13{margin-right:var(--bui-space-13)}.lg\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mr{margin-right:var(--mr-xl)}.xl\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.xl\:bui-mr-1{margin-right:var(--bui-space-1)}.xl\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.xl\:bui-mr-2{margin-right:var(--bui-space-2)}.xl\:bui-mr-3{margin-right:var(--bui-space-3)}.xl\:bui-mr-4{margin-right:var(--bui-space-4)}.xl\:bui-mr-5{margin-right:var(--bui-space-5)}.xl\:bui-mr-6{margin-right:var(--bui-space-6)}.xl\:bui-mr-7{margin-right:var(--bui-space-7)}.xl\:bui-mr-8{margin-right:var(--bui-space-8)}.xl\:bui-mr-9{margin-right:var(--bui-space-9)}.xl\:bui-mr-10{margin-right:var(--bui-space-10)}.xl\:bui-mr-11{margin-right:var(--bui-space-11)}.xl\:bui-mr-12{margin-right:var(--bui-space-12)}.xl\:bui-mr-13{margin-right:var(--bui-space-13)}.xl\:bui-mr-14{margin-right:var(--bui-space-14)}}.bui-mt{margin-top:var(--mt)}.bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.bui-mt-1{margin-top:var(--bui-space-1)}.bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.bui-mt-2{margin-top:var(--bui-space-2)}.bui-mt-3{margin-top:var(--bui-space-3)}.bui-mt-4{margin-top:var(--bui-space-4)}.bui-mt-5{margin-top:var(--bui-space-5)}.bui-mt-6{margin-top:var(--bui-space-6)}.bui-mt-7{margin-top:var(--bui-space-7)}.bui-mt-8{margin-top:var(--bui-space-8)}.bui-mt-9{margin-top:var(--bui-space-9)}.bui-mt-10{margin-top:var(--bui-space-10)}.bui-mt-11{margin-top:var(--bui-space-11)}.bui-mt-12{margin-top:var(--bui-space-12)}.bui-mt-13{margin-top:var(--bui-space-13)}.bui-mt-14{margin-top:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mt{margin-top:var(--mt-xs)}.xs\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.xs\:bui-mt-1{margin-top:var(--bui-space-1)}.xs\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.xs\:bui-mt-2{margin-top:var(--bui-space-2)}.xs\:bui-mt-3{margin-top:var(--bui-space-3)}.xs\:bui-mt-4{margin-top:var(--bui-space-4)}.xs\:bui-mt-5{margin-top:var(--bui-space-5)}.xs\:bui-mt-6{margin-top:var(--bui-space-6)}.xs\:bui-mt-7{margin-top:var(--bui-space-7)}.xs\:bui-mt-8{margin-top:var(--bui-space-8)}.xs\:bui-mt-9{margin-top:var(--bui-space-9)}.xs\:bui-mt-10{margin-top:var(--bui-space-10)}.xs\:bui-mt-11{margin-top:var(--bui-space-11)}.xs\:bui-mt-12{margin-top:var(--bui-space-12)}.xs\:bui-mt-13{margin-top:var(--bui-space-13)}.xs\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mt{margin-top:var(--mt-sm)}.sm\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.sm\:bui-mt-1{margin-top:var(--bui-space-1)}.sm\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.sm\:bui-mt-2{margin-top:var(--bui-space-2)}.sm\:bui-mt-3{margin-top:var(--bui-space-3)}.sm\:bui-mt-4{margin-top:var(--bui-space-4)}.sm\:bui-mt-5{margin-top:var(--bui-space-5)}.sm\:bui-mt-6{margin-top:var(--bui-space-6)}.sm\:bui-mt-7{margin-top:var(--bui-space-7)}.sm\:bui-mt-8{margin-top:var(--bui-space-8)}.sm\:bui-mt-9{margin-top:var(--bui-space-9)}.sm\:bui-mt-10{margin-top:var(--bui-space-10)}.sm\:bui-mt-11{margin-top:var(--bui-space-11)}.sm\:bui-mt-12{margin-top:var(--bui-space-12)}.sm\:bui-mt-13{margin-top:var(--bui-space-13)}.sm\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mt{margin-top:var(--mt-md)}.md\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.md\:bui-mt-1{margin-top:var(--bui-space-1)}.md\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.md\:bui-mt-2{margin-top:var(--bui-space-2)}.md\:bui-mt-3{margin-top:var(--bui-space-3)}.md\:bui-mt-4{margin-top:var(--bui-space-4)}.md\:bui-mt-5{margin-top:var(--bui-space-5)}.md\:bui-mt-6{margin-top:var(--bui-space-6)}.md\:bui-mt-7{margin-top:var(--bui-space-7)}.md\:bui-mt-8{margin-top:var(--bui-space-8)}.md\:bui-mt-9{margin-top:var(--bui-space-9)}.md\:bui-mt-10{margin-top:var(--bui-space-10)}.md\:bui-mt-11{margin-top:var(--bui-space-11)}.md\:bui-mt-12{margin-top:var(--bui-space-12)}.md\:bui-mt-13{margin-top:var(--bui-space-13)}.md\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mt{margin-top:var(--mt-lg)}.lg\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.lg\:bui-mt-1{margin-top:var(--bui-space-1)}.lg\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.lg\:bui-mt-2{margin-top:var(--bui-space-2)}.lg\:bui-mt-3{margin-top:var(--bui-space-3)}.lg\:bui-mt-4{margin-top:var(--bui-space-4)}.lg\:bui-mt-5{margin-top:var(--bui-space-5)}.lg\:bui-mt-6{margin-top:var(--bui-space-6)}.lg\:bui-mt-7{margin-top:var(--bui-space-7)}.lg\:bui-mt-8{margin-top:var(--bui-space-8)}.lg\:bui-mt-9{margin-top:var(--bui-space-9)}.lg\:bui-mt-10{margin-top:var(--bui-space-10)}.lg\:bui-mt-11{margin-top:var(--bui-space-11)}.lg\:bui-mt-12{margin-top:var(--bui-space-12)}.lg\:bui-mt-13{margin-top:var(--bui-space-13)}.lg\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mt{margin-top:var(--mt-xl)}.xl\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.xl\:bui-mt-1{margin-top:var(--bui-space-1)}.xl\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.xl\:bui-mt-2{margin-top:var(--bui-space-2)}.xl\:bui-mt-3{margin-top:var(--bui-space-3)}.xl\:bui-mt-4{margin-top:var(--bui-space-4)}.xl\:bui-mt-5{margin-top:var(--bui-space-5)}.xl\:bui-mt-6{margin-top:var(--bui-space-6)}.xl\:bui-mt-7{margin-top:var(--bui-space-7)}.xl\:bui-mt-8{margin-top:var(--bui-space-8)}.xl\:bui-mt-9{margin-top:var(--bui-space-9)}.xl\:bui-mt-10{margin-top:var(--bui-space-10)}.xl\:bui-mt-11{margin-top:var(--bui-space-11)}.xl\:bui-mt-12{margin-top:var(--bui-space-12)}.xl\:bui-mt-13{margin-top:var(--bui-space-13)}.xl\:bui-mt-14{margin-top:var(--bui-space-14)}}.bui-mb{margin-bottom:var(--mb)}.bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.bui-mb-1{margin-bottom:var(--bui-space-1)}.bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.bui-mb-2{margin-bottom:var(--bui-space-2)}.bui-mb-3{margin-bottom:var(--bui-space-3)}.bui-mb-4{margin-bottom:var(--bui-space-4)}.bui-mb-5{margin-bottom:var(--bui-space-5)}.bui-mb-6{margin-bottom:var(--bui-space-6)}.bui-mb-7{margin-bottom:var(--bui-space-7)}.bui-mb-8{margin-bottom:var(--bui-space-8)}.bui-mb-9{margin-bottom:var(--bui-space-9)}.bui-mb-10{margin-bottom:var(--bui-space-10)}.bui-mb-11{margin-bottom:var(--bui-space-11)}.bui-mb-12{margin-bottom:var(--bui-space-12)}.bui-mb-13{margin-bottom:var(--bui-space-13)}.bui-mb-14{margin-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mb{margin-bottom:var(--mb-xs)}.xs\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.xs\:bui-mb-1{margin-bottom:var(--bui-space-1)}.xs\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.xs\:bui-mb-2{margin-bottom:var(--bui-space-2)}.xs\:bui-mb-3{margin-bottom:var(--bui-space-3)}.xs\:bui-mb-4{margin-bottom:var(--bui-space-4)}.xs\:bui-mb-5{margin-bottom:var(--bui-space-5)}.xs\:bui-mb-6{margin-bottom:var(--bui-space-6)}.xs\:bui-mb-7{margin-bottom:var(--bui-space-7)}.xs\:bui-mb-8{margin-bottom:var(--bui-space-8)}.xs\:bui-mb-9{margin-bottom:var(--bui-space-9)}.xs\:bui-mb-10{margin-bottom:var(--bui-space-10)}.xs\:bui-mb-11{margin-bottom:var(--bui-space-11)}.xs\:bui-mb-12{margin-bottom:var(--bui-space-12)}.xs\:bui-mb-13{margin-bottom:var(--bui-space-13)}.xs\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mb{margin-bottom:var(--mb-sm)}.sm\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.sm\:bui-mb-1{margin-bottom:var(--bui-space-1)}.sm\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.sm\:bui-mb-2{margin-bottom:var(--bui-space-2)}.sm\:bui-mb-3{margin-bottom:var(--bui-space-3)}.sm\:bui-mb-4{margin-bottom:var(--bui-space-4)}.sm\:bui-mb-5{margin-bottom:var(--bui-space-5)}.sm\:bui-mb-6{margin-bottom:var(--bui-space-6)}.sm\:bui-mb-7{margin-bottom:var(--bui-space-7)}.sm\:bui-mb-8{margin-bottom:var(--bui-space-8)}.sm\:bui-mb-9{margin-bottom:var(--bui-space-9)}.sm\:bui-mb-10{margin-bottom:var(--bui-space-10)}.sm\:bui-mb-11{margin-bottom:var(--bui-space-11)}.sm\:bui-mb-12{margin-bottom:var(--bui-space-12)}.sm\:bui-mb-13{margin-bottom:var(--bui-space-13)}.sm\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mb{margin-bottom:var(--mb-md)}.md\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.md\:bui-mb-1{margin-bottom:var(--bui-space-1)}.md\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.md\:bui-mb-2{margin-bottom:var(--bui-space-2)}.md\:bui-mb-3{margin-bottom:var(--bui-space-3)}.md\:bui-mb-4{margin-bottom:var(--bui-space-4)}.md\:bui-mb-5{margin-bottom:var(--bui-space-5)}.md\:bui-mb-6{margin-bottom:var(--bui-space-6)}.md\:bui-mb-7{margin-bottom:var(--bui-space-7)}.md\:bui-mb-8{margin-bottom:var(--bui-space-8)}.md\:bui-mb-9{margin-bottom:var(--bui-space-9)}.md\:bui-mb-10{margin-bottom:var(--bui-space-10)}.md\:bui-mb-11{margin-bottom:var(--bui-space-11)}.md\:bui-mb-12{margin-bottom:var(--bui-space-12)}.md\:bui-mb-13{margin-bottom:var(--bui-space-13)}.md\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mb{margin-bottom:var(--mb-lg)}.lg\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.lg\:bui-mb-1{margin-bottom:var(--bui-space-1)}.lg\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.lg\:bui-mb-2{margin-bottom:var(--bui-space-2)}.lg\:bui-mb-3{margin-bottom:var(--bui-space-3)}.lg\:bui-mb-4{margin-bottom:var(--bui-space-4)}.lg\:bui-mb-5{margin-bottom:var(--bui-space-5)}.lg\:bui-mb-6{margin-bottom:var(--bui-space-6)}.lg\:bui-mb-7{margin-bottom:var(--bui-space-7)}.lg\:bui-mb-8{margin-bottom:var(--bui-space-8)}.lg\:bui-mb-9{margin-bottom:var(--bui-space-9)}.lg\:bui-mb-10{margin-bottom:var(--bui-space-10)}.lg\:bui-mb-11{margin-bottom:var(--bui-space-11)}.lg\:bui-mb-12{margin-bottom:var(--bui-space-12)}.lg\:bui-mb-13{margin-bottom:var(--bui-space-13)}.lg\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mb{margin-bottom:var(--mb-xl)}.xl\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.xl\:bui-mb-1{margin-bottom:var(--bui-space-1)}.xl\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.xl\:bui-mb-2{margin-bottom:var(--bui-space-2)}.xl\:bui-mb-3{margin-bottom:var(--bui-space-3)}.xl\:bui-mb-4{margin-bottom:var(--bui-space-4)}.xl\:bui-mb-5{margin-bottom:var(--bui-space-5)}.xl\:bui-mb-6{margin-bottom:var(--bui-space-6)}.xl\:bui-mb-7{margin-bottom:var(--bui-space-7)}.xl\:bui-mb-8{margin-bottom:var(--bui-space-8)}.xl\:bui-mb-9{margin-bottom:var(--bui-space-9)}.xl\:bui-mb-10{margin-bottom:var(--bui-space-10)}.xl\:bui-mb-11{margin-bottom:var(--bui-space-11)}.xl\:bui-mb-12{margin-bottom:var(--bui-space-12)}.xl\:bui-mb-13{margin-bottom:var(--bui-space-13)}.xl\:bui-mb-14{margin-bottom:var(--bui-space-14)}}.bui-my{margin-top:var(--my);margin-bottom:var(--my)}.bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-my{margin-top:var(--my-xs);margin-bottom:var(--my-xs)}.xs\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.xs\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.xs\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.xs\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.xs\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.xs\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.xs\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.xs\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.xs\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.xs\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.xs\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.xs\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.xs\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.xs\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.xs\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.xs\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-my{margin-top:var(--my-sm);margin-bottom:var(--my-sm)}.sm\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.sm\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.sm\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.sm\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.sm\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.sm\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.sm\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.sm\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.sm\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.sm\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.sm\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.sm\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.sm\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.sm\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.sm\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.sm\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-my{margin-top:var(--my-md);margin-bottom:var(--my-md)}.md\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.md\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.md\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.md\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.md\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.md\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.md\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.md\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.md\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.md\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.md\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.md\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.md\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.md\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.md\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.md\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-my{margin-top:var(--my-lg);margin-bottom:var(--my-lg)}.lg\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.lg\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.lg\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.lg\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.lg\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.lg\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.lg\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.lg\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.lg\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.lg\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.lg\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.lg\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.lg\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.lg\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.lg\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.lg\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-my{margin-top:var(--my-xl);margin-bottom:var(--my-xl)}.xl\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.xl\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.xl\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.xl\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.xl\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.xl\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.xl\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.xl\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.xl\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.xl\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.xl\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.xl\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.xl\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.xl\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.xl\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.xl\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}.bui-mx{margin-left:var(--mx);margin-right:var(--mx)}.bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mx{margin-left:var(--mx-xs);margin-right:var(--mx-xs)}.xs\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.xs\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.xs\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.xs\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.xs\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.xs\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.xs\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.xs\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.xs\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.xs\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.xs\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.xs\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.xs\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.xs\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.xs\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.xs\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mx{margin-left:var(--mx-sm);margin-right:var(--mx-sm)}.sm\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.sm\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.sm\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.sm\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.sm\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.sm\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.sm\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.sm\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.sm\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.sm\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.sm\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.sm\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.sm\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.sm\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.sm\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.sm\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mx{margin-left:var(--mx-md);margin-right:var(--mx-md)}.md\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.md\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.md\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.md\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.md\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.md\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.md\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.md\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.md\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.md\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.md\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.md\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.md\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.md\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.md\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.md\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mx{margin-left:var(--mx-lg);margin-right:var(--mx-lg)}.lg\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.lg\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.lg\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.lg\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.lg\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.lg\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.lg\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.lg\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.lg\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.lg\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.lg\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.lg\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.lg\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.lg\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.lg\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.lg\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mx{margin-left:var(--mx-xl);margin-right:var(--mx-xl)}.xl\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.xl\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.xl\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.xl\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.xl\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.xl\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.xl\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.xl\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.xl\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.xl\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.xl\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.xl\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.xl\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.xl\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.xl\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.xl\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}.bui-display-none{display:none}.bui-display-inline{display:inline}.bui-display-inline-block{display:inline-block}.bui-display-block{display:block}@media (width>=640px){.xs\:bui-display-none{display:none}.xs\:bui-display-inline{display:inline}.xs\:bui-display-inline-block{display:inline-block}.xs\:bui-display-block{display:block}}@media (width>=768px){.sm\:bui-display-none{display:none}.sm\:bui-display-inline{display:inline}.sm\:bui-display-inline-block{display:inline-block}.sm\:bui-display-block{display:block}}@media (width>=1024px){.md\:bui-display-none{display:none}.md\:bui-display-inline{display:inline}.md\:bui-display-inline-block{display:inline-block}.md\:bui-display-block{display:block}}@media (width>=1280px){.lg\:bui-display-none{display:none}.lg\:bui-display-inline{display:inline}.lg\:bui-display-inline-block{display:inline-block}.lg\:bui-display-block{display:block}}@media (width>=1536px){.xl\:bui-display-none{display:none}.xl\:bui-display-inline{display:inline}.xl\:bui-display-inline-block{display:inline-block}.xl\:bui-display-block{display:block}}.bui-w{width:var(--width)}.bui-min-w{min-width:var(--min-width)}.bui-max-w{max-width:var(--max-width)}@media (width>=640px){.xs\:bui-w{width:var(--width)}.xs\:bui-min-w{min-width:var(--min-width)}.xs\:bui-max-w{max-width:var(--max-width)}}@media (width>=768px){.sm\:bui-w{width:var(--width)}.sm\:bui-min-w{min-width:var(--min-width)}.sm\:bui-max-w{max-width:var(--max-width)}}@media (width>=1024px){.md\:bui-w{width:var(--width)}.md\:bui-min-w{min-width:var(--min-width)}.md\:bui-max-w{max-width:var(--max-width)}}@media (width>=1280px){.lg\:bui-w{width:var(--width)}.lg\:bui-min-w{min-width:var(--min-width)}.lg\:bui-max-w{max-width:var(--max-width)}}@media (width>=1536px){.xl\:bui-w{width:var(--width)}.xl\:bui-min-w{min-width:var(--min-width)}.xl\:bui-max-w{max-width:var(--max-width)}}.bui-h{height:var(--height)}.bui-min-h{min-height:var(--min-height)}.bui-max-h{max-height:var(--max-height)}@media (width>=640px){.xs\:bui-h{height:var(--height)}.xs\:bui-min-h{min-height:var(--min-height)}.xs\:bui-max-h{max-height:var(--max-height)}}@media (width>=768px){.sm\:bui-h{height:var(--height)}.sm\:bui-min-h{min-height:var(--min-height)}.sm\:bui-max-h{max-height:var(--max-height)}}@media (width>=1024px){.md\:bui-h{height:var(--height)}.md\:bui-min-h{min-height:var(--min-height)}.md\:bui-max-h{max-height:var(--max-height)}}@media (width>=1280px){.lg\:bui-h{height:var(--height)}.lg\:bui-min-h{min-height:var(--min-height)}.lg\:bui-max-h{max-height:var(--max-height)}}@media (width>=1536px){.xl\:bui-h{height:var(--height)}.xl\:bui-min-h{min-height:var(--min-height)}.xl\:bui-max-h{max-height:var(--max-height)}}.bui-position-absolute{position:absolute}.bui-position-fixed{position:fixed}.bui-position-sticky{position:sticky}.bui-position-relative{position:relative}.bui-position-static{position:static}@media (width>=640px){.xs\:bui-position-absolute{position:absolute}.xs\:bui-position-fixed{position:fixed}.xs\:bui-position-sticky{position:sticky}.xs\:bui-position-relative{position:relative}.xs\:bui-position-static{position:static}}@media (width>=768px){.sm\:bui-position-absolute{position:absolute}.sm\:bui-position-fixed{position:fixed}.sm\:bui-position-sticky{position:sticky}.sm\:bui-position-relative{position:relative}.sm\:bui-position-static{position:static}}@media (width>=1024px){.md\:bui-position-absolute{position:absolute}.md\:bui-position-fixed{position:fixed}.md\:bui-position-sticky{position:sticky}.md\:bui-position-relative{position:relative}.md\:bui-position-static{position:static}}@media (width>=1280px){.lg\:bui-position-absolute{position:absolute}.lg\:bui-position-fixed{position:fixed}.lg\:bui-position-sticky{position:sticky}.lg\:bui-position-relative{position:relative}.lg\:bui-position-static{position:static}}@media (width>=1536px){.xl\:bui-position-absolute{position:absolute}.xl\:bui-position-fixed{position:fixed}.xl\:bui-position-sticky{position:sticky}.xl\:bui-position-relative{position:relative}.xl\:bui-position-static{position:static}}.bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.bui-col-span-1{grid-column:span 1/span 1}.bui-col-span-2{grid-column:span 2/span 2}.bui-col-span-3{grid-column:span 3/span 3}.bui-col-span-4{grid-column:span 4/span 4}.bui-col-span-5{grid-column:span 5/span 5}.bui-col-span-6{grid-column:span 6/span 6}.bui-col-span-7{grid-column:span 7/span 7}.bui-col-span-8{grid-column:span 8/span 8}.bui-col-span-9{grid-column:span 9/span 9}.bui-col-span-10{grid-column:span 10/span 10}.bui-col-span-11{grid-column:span 11/span 11}.bui-col-span-12{grid-column:span 12/span 12}.bui-col-span-auto{grid-column:span auto/span auto}.bui-col-start-1{grid-column-start:1}.bui-col-start-2{grid-column-start:2}.bui-col-start-3{grid-column-start:3}.bui-col-start-4{grid-column-start:4}.bui-col-start-5{grid-column-start:5}.bui-col-start-6{grid-column-start:6}.bui-col-start-7{grid-column-start:7}.bui-col-start-8{grid-column-start:8}.bui-col-start-9{grid-column-start:9}.bui-col-start-10{grid-column-start:10}.bui-col-start-11{grid-column-start:11}.bui-col-start-12{grid-column-start:12}.bui-col-start-13{grid-column-start:13}.bui-col-start-auto{grid-column-start:auto}.bui-col-end-1{grid-column-end:1}.bui-col-end-2{grid-column-end:2}.bui-col-end-3{grid-column-end:3}.bui-col-end-4{grid-column-end:4}.bui-col-end-5{grid-column-end:5}.bui-col-end-6{grid-column-end:6}.bui-col-end-7{grid-column-end:7}.bui-col-end-8{grid-column-end:8}.bui-col-end-9{grid-column-end:9}.bui-col-end-10{grid-column-end:10}.bui-col-end-11{grid-column-end:11}.bui-col-end-12{grid-column-end:12}.bui-col-end-13{grid-column-end:13}.bui-col-end-auto{grid-column-end:auto}.bui-row-span-1{grid-row:span 1/span 1}.bui-row-span-2{grid-row:span 2/span 2}.bui-row-span-3{grid-row:span 3/span 3}.bui-row-span-4{grid-row:span 4/span 4}.bui-row-span-5{grid-row:span 5/span 5}.bui-row-span-6{grid-row:span 6/span 6}.bui-row-span-7{grid-row:span 7/span 7}.bui-row-span-8{grid-row:span 8/span 8}.bui-row-span-9{grid-row:span 9/span 9}.bui-row-span-10{grid-row:span 10/span 10}.bui-row-span-11{grid-row:span 11/span 11}.bui-row-span-12{grid-row:span 12/span 12}.bui-row-span-auto{grid-row:span auto/span auto}@media (width>=640px){.xs\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xs\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xs\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xs\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xs\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xs\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xs\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xs\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xs\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xs\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xs\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xs\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xs\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.xs\:bui-col-span-1{grid-column:span 1/span 1}.xs\:bui-col-span-2{grid-column:span 2/span 2}.xs\:bui-col-span-3{grid-column:span 3/span 3}.xs\:bui-col-span-4{grid-column:span 4/span 4}.xs\:bui-col-span-5{grid-column:span 5/span 5}.xs\:bui-col-span-6{grid-column:span 6/span 6}.xs\:bui-col-span-7{grid-column:span 7/span 7}.xs\:bui-col-span-8{grid-column:span 8/span 8}.xs\:bui-col-span-9{grid-column:span 9/span 9}.xs\:bui-col-span-10{grid-column:span 10/span 10}.xs\:bui-col-span-11{grid-column:span 11/span 11}.xs\:bui-col-span-12{grid-column:span 12/span 12}.xs\:bui-col-span-auto{grid-column:span auto/span auto}.xs\:bui-col-start-1{grid-column-start:1}.xs\:bui-col-start-2{grid-column-start:2}.xs\:bui-col-start-3{grid-column-start:3}.xs\:bui-col-start-4{grid-column-start:4}.xs\:bui-col-start-5{grid-column-start:5}.xs\:bui-col-start-6{grid-column-start:6}.xs\:bui-col-start-7{grid-column-start:7}.xs\:bui-col-start-8{grid-column-start:8}.xs\:bui-col-start-9{grid-column-start:9}.xs\:bui-col-start-10{grid-column-start:10}.xs\:bui-col-start-11{grid-column-start:11}.xs\:bui-col-start-12{grid-column-start:12}.xs\:bui-col-start-13{grid-column-start:13}.xs\:bui-col-start-auto{grid-column-start:auto}.xs\:bui-col-end-1{grid-column-end:1}.xs\:bui-col-end-2{grid-column-end:2}.xs\:bui-col-end-3{grid-column-end:3}.xs\:bui-col-end-4{grid-column-end:4}.xs\:bui-col-end-5{grid-column-end:5}.xs\:bui-col-end-6{grid-column-end:6}.xs\:bui-col-end-7{grid-column-end:7}.xs\:bui-col-end-8{grid-column-end:8}.xs\:bui-col-end-9{grid-column-end:9}.xs\:bui-col-end-10{grid-column-end:10}.xs\:bui-col-end-11{grid-column-end:11}.xs\:bui-col-end-12{grid-column-end:12}.xs\:bui-col-end-13{grid-column-end:13}.xs\:bui-col-end-auto{grid-column-end:auto}.xs\:bui-row-span-1{grid-row:span 1/span 1}.xs\:bui-row-span-2{grid-row:span 2/span 2}.xs\:bui-row-span-3{grid-row:span 3/span 3}.xs\:bui-row-span-4{grid-row:span 4/span 4}.xs\:bui-row-span-5{grid-row:span 5/span 5}.xs\:bui-row-span-6{grid-row:span 6/span 6}.xs\:bui-row-span-7{grid-row:span 7/span 7}.xs\:bui-row-span-8{grid-row:span 8/span 8}.xs\:bui-row-span-9{grid-row:span 9/span 9}.xs\:bui-row-span-10{grid-row:span 10/span 10}.xs\:bui-row-span-11{grid-row:span 11/span 11}.xs\:bui-row-span-12{grid-row:span 12/span 12}.xs\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=768px){.sm\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.sm\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.sm\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.sm\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.sm\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.sm\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.sm\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.sm\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.sm\:bui-col-span-1{grid-column:span 1/span 1}.sm\:bui-col-span-2{grid-column:span 2/span 2}.sm\:bui-col-span-3{grid-column:span 3/span 3}.sm\:bui-col-span-4{grid-column:span 4/span 4}.sm\:bui-col-span-5{grid-column:span 5/span 5}.sm\:bui-col-span-6{grid-column:span 6/span 6}.sm\:bui-col-span-7{grid-column:span 7/span 7}.sm\:bui-col-span-8{grid-column:span 8/span 8}.sm\:bui-col-span-9{grid-column:span 9/span 9}.sm\:bui-col-span-10{grid-column:span 10/span 10}.sm\:bui-col-span-11{grid-column:span 11/span 11}.sm\:bui-col-span-12{grid-column:span 12/span 12}.sm\:bui-col-span-auto{grid-column:span auto/span auto}.sm\:bui-col-start-1{grid-column-start:1}.sm\:bui-col-start-2{grid-column-start:2}.sm\:bui-col-start-3{grid-column-start:3}.sm\:bui-col-start-4{grid-column-start:4}.sm\:bui-col-start-5{grid-column-start:5}.sm\:bui-col-start-6{grid-column-start:6}.sm\:bui-col-start-7{grid-column-start:7}.sm\:bui-col-start-8{grid-column-start:8}.sm\:bui-col-start-9{grid-column-start:9}.sm\:bui-col-start-10{grid-column-start:10}.sm\:bui-col-start-11{grid-column-start:11}.sm\:bui-col-start-12{grid-column-start:12}.sm\:bui-col-start-13{grid-column-start:13}.sm\:bui-col-start-auto{grid-column-start:auto}.sm\:bui-col-end-1{grid-column-end:1}.sm\:bui-col-end-2{grid-column-end:2}.sm\:bui-col-end-3{grid-column-end:3}.sm\:bui-col-end-4{grid-column-end:4}.sm\:bui-col-end-5{grid-column-end:5}.sm\:bui-col-end-6{grid-column-end:6}.sm\:bui-col-end-7{grid-column-end:7}.sm\:bui-col-end-8{grid-column-end:8}.sm\:bui-col-end-9{grid-column-end:9}.sm\:bui-col-end-10{grid-column-end:10}.sm\:bui-col-end-11{grid-column-end:11}.sm\:bui-col-end-12{grid-column-end:12}.sm\:bui-col-end-13{grid-column-end:13}.sm\:bui-col-end-auto{grid-column-end:auto}.sm\:bui-row-span-1{grid-row:span 1/span 1}.sm\:bui-row-span-2{grid-row:span 2/span 2}.sm\:bui-row-span-3{grid-row:span 3/span 3}.sm\:bui-row-span-4{grid-row:span 4/span 4}.sm\:bui-row-span-5{grid-row:span 5/span 5}.sm\:bui-row-span-6{grid-row:span 6/span 6}.sm\:bui-row-span-7{grid-row:span 7/span 7}.sm\:bui-row-span-8{grid-row:span 8/span 8}.sm\:bui-row-span-9{grid-row:span 9/span 9}.sm\:bui-row-span-10{grid-row:span 10/span 10}.sm\:bui-row-span-11{grid-row:span 11/span 11}.sm\:bui-row-span-12{grid-row:span 12/span 12}.sm\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=1024px){.md\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.md\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.md\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.md\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.md\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.md\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.md\:bui-col-span-1{grid-column:span 1/span 1}.md\:bui-col-span-2{grid-column:span 2/span 2}.md\:bui-col-span-3{grid-column:span 3/span 3}.md\:bui-col-span-4{grid-column:span 4/span 4}.md\:bui-col-span-5{grid-column:span 5/span 5}.md\:bui-col-span-6{grid-column:span 6/span 6}.md\:bui-col-span-7{grid-column:span 7/span 7}.md\:bui-col-span-8{grid-column:span 8/span 8}.md\:bui-col-span-9{grid-column:span 9/span 9}.md\:bui-col-span-10{grid-column:span 10/span 10}.md\:bui-col-span-11{grid-column:span 11/span 11}.md\:bui-col-span-12{grid-column:span 12/span 12}.md\:bui-col-span-auto{grid-column:span auto/span auto}.md\:bui-col-start-1{grid-column-start:1}.md\:bui-col-start-2{grid-column-start:2}.md\:bui-col-start-3{grid-column-start:3}.md\:bui-col-start-4{grid-column-start:4}.md\:bui-col-start-5{grid-column-start:5}.md\:bui-col-start-6{grid-column-start:6}.md\:bui-col-start-7{grid-column-start:7}.md\:bui-col-start-8{grid-column-start:8}.md\:bui-col-start-9{grid-column-start:9}.md\:bui-col-start-10{grid-column-start:10}.md\:bui-col-start-11{grid-column-start:11}.md\:bui-col-start-12{grid-column-start:12}.md\:bui-col-start-13{grid-column-start:13}.md\:bui-col-start-auto{grid-column-start:auto}.md\:bui-col-end-1{grid-column-end:1}.md\:bui-col-end-2{grid-column-end:2}.md\:bui-col-end-3{grid-column-end:3}.md\:bui-col-end-4{grid-column-end:4}.md\:bui-col-end-5{grid-column-end:5}.md\:bui-col-end-6{grid-column-end:6}.md\:bui-col-end-7{grid-column-end:7}.md\:bui-col-end-8{grid-column-end:8}.md\:bui-col-end-9{grid-column-end:9}.md\:bui-col-end-10{grid-column-end:10}.md\:bui-col-end-11{grid-column-end:11}.md\:bui-col-end-12{grid-column-end:12}.md\:bui-col-end-13{grid-column-end:13}.md\:bui-col-end-auto{grid-column-end:auto}.md\:bui-row-span-1{grid-row:span 1/span 1}.md\:bui-row-span-2{grid-row:span 2/span 2}.md\:bui-row-span-3{grid-row:span 3/span 3}.md\:bui-row-span-4{grid-row:span 4/span 4}.md\:bui-row-span-5{grid-row:span 5/span 5}.md\:bui-row-span-6{grid-row:span 6/span 6}.md\:bui-row-span-7{grid-row:span 7/span 7}.md\:bui-row-span-8{grid-row:span 8/span 8}.md\:bui-row-span-9{grid-row:span 9/span 9}.md\:bui-row-span-10{grid-row:span 10/span 10}.md\:bui-row-span-11{grid-row:span 11/span 11}.md\:bui-row-span-12{grid-row:span 12/span 12}.md\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=1280px){.lg\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lg\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.lg\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lg\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.lg\:bui-col-span-1{grid-column:span 1/span 1}.lg\:bui-col-span-2{grid-column:span 2/span 2}.lg\:bui-col-span-3{grid-column:span 3/span 3}.lg\:bui-col-span-4{grid-column:span 4/span 4}.lg\:bui-col-span-5{grid-column:span 5/span 5}.lg\:bui-col-span-6{grid-column:span 6/span 6}.lg\:bui-col-span-7{grid-column:span 7/span 7}.lg\:bui-col-span-8{grid-column:span 8/span 8}.lg\:bui-col-span-9{grid-column:span 9/span 9}.lg\:bui-col-span-10{grid-column:span 10/span 10}.lg\:bui-col-span-11{grid-column:span 11/span 11}.lg\:bui-col-span-12{grid-column:span 12/span 12}.lg\:bui-col-span-auto{grid-column:span auto/span auto}.lg\:bui-col-start-1{grid-column-start:1}.lg\:bui-col-start-2{grid-column-start:2}.lg\:bui-col-start-3{grid-column-start:3}.lg\:bui-col-start-4{grid-column-start:4}.lg\:bui-col-start-5{grid-column-start:5}.lg\:bui-col-start-6{grid-column-start:6}.lg\:bui-col-start-7{grid-column-start:7}.lg\:bui-col-start-8{grid-column-start:8}.lg\:bui-col-start-9{grid-column-start:9}.lg\:bui-col-start-10{grid-column-start:10}.lg\:bui-col-start-11{grid-column-start:11}.lg\:bui-col-start-12{grid-column-start:12}.lg\:bui-col-start-13{grid-column-start:13}.lg\:bui-col-start-auto{grid-column-start:auto}.lg\:bui-col-end-1{grid-column-end:1}.lg\:bui-col-end-2{grid-column-end:2}.lg\:bui-col-end-3{grid-column-end:3}.lg\:bui-col-end-4{grid-column-end:4}.lg\:bui-col-end-5{grid-column-end:5}.lg\:bui-col-end-6{grid-column-end:6}.lg\:bui-col-end-7{grid-column-end:7}.lg\:bui-col-end-8{grid-column-end:8}.lg\:bui-col-end-9{grid-column-end:9}.lg\:bui-col-end-10{grid-column-end:10}.lg\:bui-col-end-11{grid-column-end:11}.lg\:bui-col-end-12{grid-column-end:12}.lg\:bui-col-end-13{grid-column-end:13}.lg\:bui-col-end-auto{grid-column-end:auto}.lg\:bui-row-span-1{grid-row:span 1/span 1}.lg\:bui-row-span-2{grid-row:span 2/span 2}.lg\:bui-row-span-3{grid-row:span 3/span 3}.lg\:bui-row-span-4{grid-row:span 4/span 4}.lg\:bui-row-span-5{grid-row:span 5/span 5}.lg\:bui-row-span-6{grid-row:span 6/span 6}.lg\:bui-row-span-7{grid-row:span 7/span 7}.lg\:bui-row-span-8{grid-row:span 8/span 8}.lg\:bui-row-span-9{grid-row:span 9/span 9}.lg\:bui-row-span-10{grid-row:span 10/span 10}.lg\:bui-row-span-11{grid-row:span 11/span 11}.lg\:bui-row-span-12{grid-row:span 12/span 12}.lg\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=1536px){.xl\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xl\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xl\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xl\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xl\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xl\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xl\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.xl\:bui-col-span-1{grid-column:span 1/span 1}.xl\:bui-col-span-2{grid-column:span 2/span 2}.xl\:bui-col-span-3{grid-column:span 3/span 3}.xl\:bui-col-span-4{grid-column:span 4/span 4}.xl\:bui-col-span-5{grid-column:span 5/span 5}.xl\:bui-col-span-6{grid-column:span 6/span 6}.xl\:bui-col-span-7{grid-column:span 7/span 7}.xl\:bui-col-span-8{grid-column:span 8/span 8}.xl\:bui-col-span-9{grid-column:span 9/span 9}.xl\:bui-col-span-10{grid-column:span 10/span 10}.xl\:bui-col-span-11{grid-column:span 11/span 11}.xl\:bui-col-span-12{grid-column:span 12/span 12}.xl\:bui-col-span-auto{grid-column:span auto/span auto}.xl\:bui-col-start-1{grid-column-start:1}.xl\:bui-col-start-2{grid-column-start:2}.xl\:bui-col-start-3{grid-column-start:3}.xl\:bui-col-start-4{grid-column-start:4}.xl\:bui-col-start-5{grid-column-start:5}.xl\:bui-col-start-6{grid-column-start:6}.xl\:bui-col-start-7{grid-column-start:7}.xl\:bui-col-start-8{grid-column-start:8}.xl\:bui-col-start-9{grid-column-start:9}.xl\:bui-col-start-10{grid-column-start:10}.xl\:bui-col-start-11{grid-column-start:11}.xl\:bui-col-start-12{grid-column-start:12}.xl\:bui-col-start-13{grid-column-start:13}.xl\:bui-col-start-auto{grid-column-start:auto}.xl\:bui-col-end-1{grid-column-end:1}.xl\:bui-col-end-2{grid-column-end:2}.xl\:bui-col-end-3{grid-column-end:3}.xl\:bui-col-end-4{grid-column-end:4}.xl\:bui-col-end-5{grid-column-end:5}.xl\:bui-col-end-6{grid-column-end:6}.xl\:bui-col-end-7{grid-column-end:7}.xl\:bui-col-end-8{grid-column-end:8}.xl\:bui-col-end-9{grid-column-end:9}.xl\:bui-col-end-10{grid-column-end:10}.xl\:bui-col-end-11{grid-column-end:11}.xl\:bui-col-end-12{grid-column-end:12}.xl\:bui-col-end-13{grid-column-end:13}.xl\:bui-col-end-auto{grid-column-end:auto}.xl\:bui-row-span-1{grid-row:span 1/span 1}.xl\:bui-row-span-2{grid-row:span 2/span 2}.xl\:bui-row-span-3{grid-row:span 3/span 3}.xl\:bui-row-span-4{grid-row:span 4/span 4}.xl\:bui-row-span-5{grid-row:span 5/span 5}.xl\:bui-row-span-6{grid-row:span 6/span 6}.xl\:bui-row-span-7{grid-row:span 7/span 7}.xl\:bui-row-span-8{grid-row:span 8/span 8}.xl\:bui-row-span-9{grid-row:span 9/span 9}.xl\:bui-row-span-10{grid-row:span 10/span 10}.xl\:bui-row-span-11{grid-row:span 11/span 11}.xl\:bui-row-span-12{grid-row:span 12/span 12}.xl\:bui-row-span-auto{grid-row:span auto/span auto}}.bui-gap{gap:var(--gap)}.bui-gap-0\.5{gap:var(--bui-space-0_5)}.bui-gap-1{gap:var(--bui-space-1)}.bui-gap-1\.5{gap:var(--bui-space-1_5)}.bui-gap-2{gap:var(--bui-space-2)}.bui-gap-3{gap:var(--bui-space-3)}.bui-gap-4{gap:var(--bui-space-4)}.bui-gap-5{gap:var(--bui-space-5)}.bui-gap-6{gap:var(--bui-space-6)}.bui-gap-7{gap:var(--bui-space-7)}.bui-gap-8{gap:var(--bui-space-8)}.bui-gap-9{gap:var(--bui-space-9)}.bui-gap-10{gap:var(--bui-space-10)}.bui-gap-11{gap:var(--bui-space-11)}.bui-gap-12{gap:var(--bui-space-12)}.bui-gap-13{gap:var(--bui-space-13)}.bui-gap-14{gap:var(--bui-space-14)}@media (width>=640px){.xs\:bui-gap{gap:var(--gap-xs)}.xs\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.xs\:bui-gap-1{gap:var(--bui-space-1)}.xs\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.xs\:bui-gap-2{gap:var(--bui-space-2)}.xs\:bui-gap-3{gap:var(--bui-space-3)}.xs\:bui-gap-4{gap:var(--bui-space-4)}.xs\:bui-gap-5{gap:var(--bui-space-5)}.xs\:bui-gap-6{gap:var(--bui-space-6)}.xs\:bui-gap-7{gap:var(--bui-space-7)}.xs\:bui-gap-8{gap:var(--bui-space-8)}.xs\:bui-gap-9{gap:var(--bui-space-9)}.xs\:bui-gap-10{gap:var(--bui-space-10)}.xs\:bui-gap-11{gap:var(--bui-space-11)}.xs\:bui-gap-12{gap:var(--bui-space-12)}.xs\:bui-gap-13{gap:var(--bui-space-13)}.xs\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-gap{gap:var(--gap-sm)}.sm\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.sm\:bui-gap-1{gap:var(--bui-space-1)}.sm\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.sm\:bui-gap-2{gap:var(--bui-space-2)}.sm\:bui-gap-3{gap:var(--bui-space-3)}.sm\:bui-gap-4{gap:var(--bui-space-4)}.sm\:bui-gap-5{gap:var(--bui-space-5)}.sm\:bui-gap-6{gap:var(--bui-space-6)}.sm\:bui-gap-7{gap:var(--bui-space-7)}.sm\:bui-gap-8{gap:var(--bui-space-8)}.sm\:bui-gap-9{gap:var(--bui-space-9)}.sm\:bui-gap-10{gap:var(--bui-space-10)}.sm\:bui-gap-11{gap:var(--bui-space-11)}.sm\:bui-gap-12{gap:var(--bui-space-12)}.sm\:bui-gap-13{gap:var(--bui-space-13)}.sm\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-gap{gap:var(--gap-md)}.md\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.md\:bui-gap-1{gap:var(--bui-space-1)}.md\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.md\:bui-gap-2{gap:var(--bui-space-2)}.md\:bui-gap-3{gap:var(--bui-space-3)}.md\:bui-gap-4{gap:var(--bui-space-4)}.md\:bui-gap-5{gap:var(--bui-space-5)}.md\:bui-gap-6{gap:var(--bui-space-6)}.md\:bui-gap-7{gap:var(--bui-space-7)}.md\:bui-gap-8{gap:var(--bui-space-8)}.md\:bui-gap-9{gap:var(--bui-space-9)}.md\:bui-gap-10{gap:var(--bui-space-10)}.md\:bui-gap-11{gap:var(--bui-space-11)}.md\:bui-gap-12{gap:var(--bui-space-12)}.md\:bui-gap-13{gap:var(--bui-space-13)}.md\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-gap{gap:var(--gap-lg)}.lg\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.lg\:bui-gap-1{gap:var(--bui-space-1)}.lg\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.lg\:bui-gap-2{gap:var(--bui-space-2)}.lg\:bui-gap-3{gap:var(--bui-space-3)}.lg\:bui-gap-4{gap:var(--bui-space-4)}.lg\:bui-gap-5{gap:var(--bui-space-5)}.lg\:bui-gap-6{gap:var(--bui-space-6)}.lg\:bui-gap-7{gap:var(--bui-space-7)}.lg\:bui-gap-8{gap:var(--bui-space-8)}.lg\:bui-gap-9{gap:var(--bui-space-9)}.lg\:bui-gap-10{gap:var(--bui-space-10)}.lg\:bui-gap-11{gap:var(--bui-space-11)}.lg\:bui-gap-12{gap:var(--bui-space-12)}.lg\:bui-gap-13{gap:var(--bui-space-13)}.lg\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-gap{gap:var(--gap-xl)}.xl\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.xl\:bui-gap-1{gap:var(--bui-space-1)}.xl\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.xl\:bui-gap-2{gap:var(--bui-space-2)}.xl\:bui-gap-3{gap:var(--bui-space-3)}.xl\:bui-gap-4{gap:var(--bui-space-4)}.xl\:bui-gap-5{gap:var(--bui-space-5)}.xl\:bui-gap-6{gap:var(--bui-space-6)}.xl\:bui-gap-7{gap:var(--bui-space-7)}.xl\:bui-gap-8{gap:var(--bui-space-8)}.xl\:bui-gap-9{gap:var(--bui-space-9)}.xl\:bui-gap-10{gap:var(--bui-space-10)}.xl\:bui-gap-11{gap:var(--bui-space-11)}.xl\:bui-gap-12{gap:var(--bui-space-12)}.xl\:bui-gap-13{gap:var(--bui-space-13)}.xl\:bui-gap-14{gap:var(--bui-space-14)}}.bui-align-start{align-items:start}.bui-align-center{align-items:center}.bui-align-end{align-items:end}.bui-align-baseline{align-items:baseline}.bui-align-stretch{align-items:stretch}.bui-jc-start{justify-content:start}.bui-jc-center{justify-content:center}.bui-jc-end{justify-content:end}.bui-jc-between{justify-content:space-between}.bui-fd-row{flex-direction:row}.bui-fd-column{flex-direction:column}.bui-fd-row-reverse{flex-direction:row-reverse}.bui-fd-column-reverse{flex-direction:column-reverse}@media (width>=640px){.xs\:bui-align-start{align-items:start}.xs\:bui-align-center{align-items:center}.xs\:bui-align-end{align-items:end}.xs\:bui-align-stretch{align-items:stretch}.xs\:bui-jc-start{justify-content:start}.xs\:bui-jc-center{justify-content:center}.xs\:bui-jc-end{justify-content:end}.xs\:bui-jc-between{justify-content:space-between}.xs\:bui-fd-row{flex-direction:row}.xs\:bui-fd-column{flex-direction:column}.xs\:bui-fd-row-reverse{flex-direction:row-reverse}.xs\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=768px){.sm\:bui-align-start{align-items:start}.sm\:bui-align-center{align-items:center}.sm\:bui-align-end{align-items:end}.sm\:bui-align-stretch{align-items:stretch}.sm\:bui-jc-start{justify-content:start}.sm\:bui-jc-center{justify-content:center}.sm\:bui-jc-end{justify-content:end}.sm\:bui-jc-between{justify-content:space-between}.sm\:bui-fd-row{flex-direction:row}.sm\:bui-fd-column{flex-direction:column}.sm\:bui-fd-row-reverse{flex-direction:row-reverse}.sm\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=1024px){.md\:bui-align-start{align-items:start}.md\:bui-align-center{align-items:center}.md\:bui-align-end{align-items:end}.md\:bui-align-stretch{align-items:stretch}.md\:bui-jc-start{justify-content:start}.md\:bui-jc-center{justify-content:center}.md\:bui-jc-end{justify-content:end}.md\:bui-jc-between{justify-content:space-between}.md\:bui-fd-row{flex-direction:row}.md\:bui-fd-column{flex-direction:column}.md\:bui-fd-row-reverse{flex-direction:row-reverse}.md\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=1280px){.lg\:bui-align-start{align-items:start}.lg\:bui-align-center{align-items:center}.lg\:bui-align-end{align-items:end}.lg\:bui-align-stretch{align-items:stretch}.lg\:bui-jc-start{justify-content:start}.lg\:bui-jc-center{justify-content:center}.lg\:bui-jc-end{justify-content:end}.lg\:bui-jc-between{justify-content:space-between}.lg\:bui-fd-row{flex-direction:row}.lg\:bui-fd-column{flex-direction:column}.lg\:bui-fd-row-reverse{flex-direction:row-reverse}.lg\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=1536px){.xl\:bui-align-start{align-items:start}.xl\:bui-align-center{align-items:center}.xl\:bui-align-end{align-items:end}.xl\:bui-align-stretch{align-items:stretch}.xl\:bui-jc-start{justify-content:start}.xl\:bui-jc-center{justify-content:center}.xl\:bui-jc-end{justify-content:end}.xl\:bui-jc-between{justify-content:space-between}.xl\:bui-fd-row{flex-direction:row}.xl\:bui-fd-column{flex-direction:column}.xl\:bui-fd-row-reverse{flex-direction:row-reverse}.xl\:bui-fd-column-reverse{flex-direction:column-reverse}}} \ No newline at end of file diff --git a/docs-ui/src/css/theme-spotify.css b/docs-ui/src/css/theme-spotify.css index f8b18d6a31..22eda0cabe 100644 --- a/docs-ui/src/css/theme-spotify.css +++ b/docs-ui/src/css/theme-spotify.css @@ -1,243 +1 @@ -@font-face { - font-family: CircularSpTitle; - font-weight: 900; - font-display: swap; - unicode-range: U+0, U+D, U+20-7E, U+A0-17E, U+18F, U+192, U+1A0-1A1, U+1AF-1B0, - U+1B5-1B6, U+1C4-1C6, U+1F1-1F3, U+1FA-1FF, U+218-21B, U+237, U+259, - U+2BB-2BC, U+2C6-2C7, U+2C9, U+2D8-2DD, U+300-301, U+303, U+309, U+323, - U+394, U+3A9, U+3BC, U+3C0, U+1E80-1E85, U+1E8A-1E8B, U+1EA0-1EF9, U+1FD6, - U+2007-2008, U+200B, U+2010-2011, U+2013-2014, U+2018-201A, U+201C-201E, - U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2042, U+2044, - U+2051, U+2070, U+2074-2079, U+2080-2089, U+20AB-20AC, U+2113, U+2117, - U+2122, U+2126, U+2160-2169, U+216C-216F, U+2190-2193, U+2196-2199, U+21A9, - U+21B0-21B5, U+21C6, U+2202, U+2206, U+220F, U+2211-2212, U+2215, - U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+22C5, U+24C5, - U+25A0-25A1, U+25AF, U+25B2-25B3, U+25CA-25CB, U+25CF, U+262E, U+2713, - U+2715, U+2780-2788, U+E000, U+E002, U+F6C3, U+FB00-FB04, U+FEFF, U+FF0C, - U+FF0E, U+FF1A-FF1B, U+FFFF; - src: url(https://encore.scdn.co/fonts/CircularSpTitle-Black-4588c99025b967475c31695b0743dd1a.woff2) - format('woff2'), - url(https://encore.scdn.co/fonts/CircularSpTitle-Black-506746f387a26f25aa3d023b3e501d34.woff) - format('woff'); -} -@font-face { - font-family: CircularSpTitle; - font-weight: 700; - font-display: swap; - unicode-range: U+0, U+D, U+20-7E, U+A0-17E, U+18F, U+192, U+1A0-1A1, U+1AF-1B0, - U+1B5-1B6, U+1C4-1C6, U+1F1-1F3, U+1FA-1FF, U+218-21B, U+237, U+259, - U+2BB-2BC, U+2C6-2C7, U+2C9, U+2D8-2DD, U+300-301, U+303, U+309, U+323, - U+394, U+3A9, U+3BC, U+3C0, U+1E80-1E85, U+1E8A-1E8B, U+1EA0-1EF9, U+1FD6, - U+2007-2008, U+200B, U+2010-2011, U+2013-2014, U+2018-201A, U+201C-201E, - U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2042, U+2044, - U+2051, U+2070, U+2074-2079, U+2080-2089, U+20AB-20AC, U+2113, U+2117, - U+2122, U+2126, U+2160-2169, U+216C-216F, U+2190-2193, U+2196-2199, U+21A9, - U+21B0-21B5, U+21C6, U+2202, U+2206, U+220F, U+2211-2212, U+2215, - U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+22C5, U+24C5, - U+25A0-25A1, U+25AF, U+25B2-25B3, U+25CA-25CB, U+25CF, U+262E, U+2713, - U+2715, U+2780-2788, U+E000, U+E002, U+F6C3, U+FB00-FB04, U+FEFF, U+FF0C, - U+FF0E, U+FF1A-FF1B, U+FFFF; - src: url(https://encore.scdn.co/fonts/CircularSpTitle-Bold-b2586b06a2e1522e9d879d84c2792a58.woff2) - format('woff2'), - url(https://encore.scdn.co/fonts/CircularSpTitle-Bold-1624fb2df28c20d7203d7fb86ce8b481.woff) - format('woff'); -} -@font-face { - font-family: CircularSp; - font-weight: 700; - font-display: swap; - unicode-range: U+0, U+D, U+20-7E, U+A0-17E, U+18F, U+192, U+1A0-1A1, U+1AF-1B0, - U+1B5-1B6, U+1C4-1C6, U+1F1-1F3, U+1FA-1FF, U+218-21B, U+237, U+259, - U+2BB-2BC, U+2C6-2C7, U+2C9, U+2D8-2DD, U+300-301, U+303, U+309, U+323, - U+394, U+3A9, U+3BC, U+3C0, U+1E80-1E85, U+1E8A-1E8B, U+1EA0-1EF9, U+1FD6, - U+2007-2008, U+200B, U+2010-2011, U+2013-2014, U+2018-201A, U+201C-201E, - U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2042, U+2044, - U+2051, U+2070, U+2074-2079, U+2080-2089, U+20AB-20AC, U+2113, U+2117, - U+2122, U+2126, U+2160-2169, U+216C-216F, U+2190-2193, U+2196-2199, U+21A9, - U+21B0-21B5, U+21C6, U+2202, U+2206, U+220F, U+2211-2212, U+2215, - U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+22C5, U+24C5, - U+25A0-25A1, U+25AF, U+25B2-25B3, U+25CA-25CB, U+25CF, U+262E, U+2713, - U+2715, U+2780-2788, U+E000, U+E002, U+F6C3, U+FB00-FB04, U+FEFF, U+FF0C, - U+FF0E, U+FF1A-FF1B, U+FFFF; - src: url(https://encore.scdn.co/fonts/CircularSp-Bold-602e7aefc706aa36c6ec1324b9bbc461.woff2) - format('woff2'), - url(https://encore.scdn.co/fonts/CircularSp-Bold-856afe2da4ba4e61239b129e2c16d633.woff) - format('woff'); -} -@font-face { - font-family: CircularSp; - font-weight: 400; - font-display: swap; - unicode-range: U+0, U+D, U+20-7E, U+A0-17E, U+18F, U+192, U+1A0-1A1, U+1AF-1B0, - U+1B5-1B6, U+1C4-1C6, U+1F1-1F3, U+1FA-1FF, U+218-21B, U+237, U+259, - U+2BB-2BC, U+2C6-2C7, U+2C9, U+2D8-2DD, U+300-301, U+303, U+309, U+323, - U+394, U+3A9, U+3BC, U+3C0, U+1E80-1E85, U+1E8A-1E8B, U+1EA0-1EF9, U+1FD6, - U+2007-2008, U+200B, U+2010-2011, U+2013-2014, U+2018-201A, U+201C-201E, - U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2042, U+2044, - U+2051, U+2070, U+2074-2079, U+2080-2089, U+20AB-20AC, U+2113, U+2117, - U+2122, U+2126, U+2160-2169, U+216C-216F, U+2190-2193, U+2196-2199, U+21A9, - U+21B0-21B5, U+21C6, U+2202, U+2206, U+220F, U+2211-2212, U+2215, - U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+22C5, U+24C5, - U+25A0-25A1, U+25AF, U+25B2-25B3, U+25CA-25CB, U+25CF, U+262E, U+2713, - U+2715, U+2780-2788, U+E000, U+E002, U+F6C3, U+FB00-FB04, U+FEFF, U+FF0C, - U+FF0E, U+FF1A-FF1B, U+FFFF; - src: url(https://encore.scdn.co/fonts/CircularSp-Book-a00e99ef9996a3a157fb6b746856d04f.woff2) - format('woff2'), - url(https://encore.scdn.co/fonts/CircularSp-Book-3f73da7d35bd81c706bce7bbb84964de.woff) - format('woff'); -} -@font-face { - font-family: CircularSp; - font-weight: 700; - font-display: swap; - unicode-range: U+0, U+D, U+20-7E, U+A0-17E, U+18F, U+192, U+1A0-1A1, U+1AF-1B0, - U+1B5-1B6, U+1C4-1C6, U+1F1-1F3, U+1FA-1FF, U+218-21B, U+237, U+259, - U+2BB-2BC, U+2C6-2C7, U+2C9, U+2D8-2DD, U+300-301, U+303, U+309, U+323, - U+394, U+3A9, U+3BC, U+3C0, U+1E80-1E85, U+1E8A-1E8B, U+1EA0-1EF9, U+1FD6, - U+2007-2008, U+200B, U+2010-2011, U+2013-2014, U+2018-201A, U+201C-201E, - U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2042, U+2044, - U+2051, U+2070, U+2074-2079, U+2080-2089, U+20AB-20AC, U+2113, U+2117, - U+2122, U+2126, U+2160-2169, U+216C-216F, U+2190-2193, U+2196-2199, U+21A9, - U+21B0-21B5, U+21C6, U+2202, U+2206, U+220F, U+2211-2212, U+2215, - U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+22C5, U+24C5, - U+25A0-25A1, U+25AF, U+25B2-25B3, U+25CA-25CB, U+25CF, U+262E, U+2713, - U+2715, U+2780-2788, U+E000, U+E002, U+F6C3, U+FB00-FB04, U+FEFF, U+FF0C, - U+FF0E, U+FF1A-FF1B, U+FFFF; - src: url(https://encore.scdn.co/fonts/CircularSp-Bold-602e7aefc706aa36c6ec1324b9bbc461.woff2) - format('woff2'), - url(https://encore.scdn.co/fonts/CircularSp-Bold-856afe2da4ba4e61239b129e2c16d633.woff) - format('woff'); -} -[data-theme-name='spotify'] { - --bui-font-text: CircularSp, CircularSp-Arab, CircularSp-Hebr, CircularSp-Cyrl, - CircularSp-Grek, CircularSp-Deva; - --bui-font-title: CircularSpTitle, CircularSp-Arab, CircularSp-Hebr, - CircularSp-Cyrl, CircularSp-Grek, CircularSp-Deva; - --bui-font-regular: CircularSp, CircularSp-Arab, CircularSp-Hebr, - CircularSp-Cyrl, CircularSp-Grek, CircularSp-Deva; - & .bui-Button { - border-radius: var(--bui-radius-3); - padding-inline: var(--bui-space-3); - } - & .bui-ButtonIcon { - padding: 0; - } - & .bui-MenuPopup { - box-sizing: border-box; - max-width: 21.25rem; - } - & .bui-MenuSubmenuTrigger, - & .bui-MenuItem { - height: auto; - min-height: 2rem; - } - & .bui-Text { - font-family: var(--bui-font-text); - } - & .bui-Heading { - font-family: var(--bui-font-title); - } - & .bui-TableRow { - border-radius: var(--bui-radius-4); - border: none; - } - & .bui-TableRow:hover td:first-child { - border-top-left-radius: var(--bui-radius-2); - border-bottom-left-radius: var(--bui-radius-2); - } - & .bui-TableRow:hover td:last-child { - border-top-right-radius: var(--bui-radius-2); - border-bottom-right-radius: var(--bui-radius-2); - } - & .bui-TableBody:before, - & .bui-TableBody:after { - line-height: var(--bui-space-1); - content: '‌'; - display: block; - } - & .bui-TableHeader .bui-TableRow { - border-bottom: 1px solid var(--bui-border); - } - & .bui-TableHead { - font-size: var(--bui-font-size-2); - color: var(--bui-fg-secondary); - font-weight: var(--bui-font-weight-regular); - } - & .bui-HeaderToolbar { - padding-top: var(--bui-space-2); - padding-inline: var(--bui-space-2); - } - & .bui-HeaderToolbarWrapper { - border-radius: var(--bui-radius-3); - padding-inline: var(--bui-space-3); - border: none; - } - & .bui-HeaderToolbarControls { - right: calc(var(--bui-space-3) - 1px); - } - & .bui-HeaderTabsWrapper { - margin-top: var(--bui-space-2); - margin-inline: var(--bui-space-2); - border-radius: var(--bui-radius-3); - padding-inline: var(--bui-space-1); - border: none; - } - & .bui-Input { - border-radius: var(--bui-radius-3); - } - & .bui-Tag { - border-radius: var(--bui-radius-full); - } -} -[data-theme-mode='light'][data-theme-name='spotify'] { - --bui-bg-solid: #1ed760; - --bui-bg-solid-hover: #3be477; - --bui-bg-solid-pressed: #1abc54; - --bui-bg-solid-disabled: #0f6c30; - --bui-fg-primary: var(--bui-black); - --bui-fg-secondary: var(--bui-gray-7); - --bui-fg-solid: var(--bui-black); - --bui-fg-solid-disabled: #62ab7c; - --bui-border: var(--bui-gray-3); - --bui-border-hover: #0000004d; - --bui-border-pressed: #00000080; - --bui-border-disabled: #0000001a; - --bui-border-danger: #f87a7a; - --bui-border-warning: #e36d05; - --bui-border-success: #53db83; - --bui-ring: #0003; - & .bui-HeaderToolbarWrapper, - & .bui-HeaderTabsWrapper { - border: 1px solid var(--bui-border); - } -} -[data-theme-mode='dark'][data-theme-name='spotify'] { - --bui-bg-surface-0: var(--bui-black); - --bui-bg-solid: #1ed760; - --bui-bg-solid-hover: #3be477; - --bui-bg-solid-pressed: #1abc54; - --bui-bg-solid-disabled: #0f6c30; - --bui-bg-danger: #3b1219; - --bui-bg-warning: #302008; - --bui-bg-success: #132d21; - --bui-fg-primary: var(--bui-white); - --bui-fg-secondary: var(--bui-gray-7); - --bui-fg-link: var(--bui-white); - --bui-fg-link-hover: var(--bui-white); - --bui-fg-disabled: var(--bui-gray-5); - --bui-fg-solid: var(--bui-black); - --bui-fg-solid-disabled: #072f15; - --bui-fg-tint: var(--bui-white); - --bui-fg-tint-disabled: var(--bui-gray-5); - --bui-fg-danger: #e22b2b; - --bui-fg-warning: #e36d05; - --bui-fg-success: #1db954; - --bui-border: var(--bui-gray-3); - --bui-border-hover: #fff6; - --bui-border-pressed: #ffffff80; - --bui-border-disabled: #fff3; - --bui-border-danger: #f87a7a; - --bui-border-warning: #e36d05; - --bui-border-success: #53db83; - --bui-ring: #fff3; -} +@font-face{font-family:CircularSpTitle;font-weight:900;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSpTitle-Black-4588c99025b967475c31695b0743dd1a.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSpTitle-Black-506746f387a26f25aa3d023b3e501d34.woff)format("woff")}@font-face{font-family:CircularSpTitle;font-weight:700;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSpTitle-Bold-b2586b06a2e1522e9d879d84c2792a58.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSpTitle-Bold-1624fb2df28c20d7203d7fb86ce8b481.woff)format("woff")}@font-face{font-family:CircularSp;font-weight:700;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSp-Bold-602e7aefc706aa36c6ec1324b9bbc461.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSp-Bold-856afe2da4ba4e61239b129e2c16d633.woff)format("woff")}@font-face{font-family:CircularSp;font-weight:400;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSp-Book-a00e99ef9996a3a157fb6b746856d04f.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSp-Book-3f73da7d35bd81c706bce7bbb84964de.woff)format("woff")}@font-face{font-family:CircularSp;font-weight:700;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSp-Bold-602e7aefc706aa36c6ec1324b9bbc461.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSp-Bold-856afe2da4ba4e61239b129e2c16d633.woff)format("woff")}[data-theme-name=spotify]{--bui-font-text:CircularSp,CircularSp-Arab,CircularSp-Hebr,CircularSp-Cyrl,CircularSp-Grek,CircularSp-Deva;--bui-font-title:CircularSpTitle,CircularSp-Arab,CircularSp-Hebr,CircularSp-Cyrl,CircularSp-Grek,CircularSp-Deva;--bui-font-regular:CircularSp,CircularSp-Arab,CircularSp-Hebr,CircularSp-Cyrl,CircularSp-Grek,CircularSp-Deva;& .bui-Button{border-radius:var(--bui-radius-3);padding-inline:var(--bui-space-3)}& .bui-ButtonIcon{padding:0}& .bui-MenuPopup{box-sizing:border-box;max-width:21.25rem}& .bui-MenuSubmenuTrigger,& .bui-MenuItem{height:auto;min-height:2rem}& .bui-Text{font-family:var(--bui-font-text)}& .bui-Heading{font-family:var(--bui-font-title)}& .bui-TableRow{border-radius:var(--bui-radius-4);border:none}& .bui-TableRow:hover td:first-child{border-top-left-radius:var(--bui-radius-2);border-bottom-left-radius:var(--bui-radius-2)}& .bui-TableRow:hover td:last-child{border-top-right-radius:var(--bui-radius-2);border-bottom-right-radius:var(--bui-radius-2)}& .bui-TableBody:before,& .bui-TableBody:after{line-height:var(--bui-space-1);content:"‌";display:block}& .bui-TableHeader .bui-TableRow{border-bottom:1px solid var(--bui-border)}& .bui-TableHead{font-size:var(--bui-font-size-2);color:var(--bui-fg-secondary);font-weight:var(--bui-font-weight-regular)}& .bui-HeaderToolbar{padding-top:var(--bui-space-2);padding-inline:var(--bui-space-2)}& .bui-HeaderToolbarWrapper{border-radius:var(--bui-radius-3);padding-inline:var(--bui-space-3);border:none}& .bui-HeaderToolbarControls{right:calc(var(--bui-space-3) - 1px)}& .bui-HeaderTabsWrapper{margin-top:var(--bui-space-2);margin-inline:var(--bui-space-2);border-radius:var(--bui-radius-3);padding-inline:var(--bui-space-1);border:none}& .bui-Input{border-radius:var(--bui-radius-3)}& .bui-Tag{border-radius:var(--bui-radius-full)}}[data-theme-mode=light][data-theme-name=spotify]{--bui-bg-solid:#1ed760;--bui-bg-solid-hover:#3be477;--bui-bg-solid-pressed:#1abc54;--bui-bg-solid-disabled:#0f6c30;--bui-fg-primary:var(--bui-black);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-solid:var(--bui-black);--bui-fg-solid-disabled:#62ab7c;--bui-border:var(--bui-gray-3);--bui-border-hover:#0000004d;--bui-border-pressed:#00000080;--bui-border-disabled:#0000001a;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#0003;& .bui-HeaderToolbarWrapper,& .bui-HeaderTabsWrapper{border:1px solid var(--bui-border)}}[data-theme-mode=dark][data-theme-name=spotify]{--bui-bg-surface-0:var(--bui-black);--bui-bg-solid:#1ed760;--bui-bg-solid-hover:#3be477;--bui-bg-solid-pressed:#1abc54;--bui-bg-solid-disabled:#0f6c30;--bui-bg-danger:#3b1219;--bui-bg-warning:#302008;--bui-bg-success:#132d21;--bui-fg-primary:var(--bui-white);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-link:var(--bui-white);--bui-fg-link-hover:var(--bui-white);--bui-fg-disabled:var(--bui-gray-5);--bui-fg-solid:var(--bui-black);--bui-fg-solid-disabled:#072f15;--bui-fg-tint:var(--bui-white);--bui-fg-tint-disabled:var(--bui-gray-5);--bui-fg-danger:#e22b2b;--bui-fg-warning:#e36d05;--bui-fg-success:#1db954;--bui-border:var(--bui-gray-3);--bui-border-hover:#fff6;--bui-border-pressed:#ffffff80;--bui-border-disabled:#fff3;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#fff3} \ No newline at end of file diff --git a/packages/ui/css/styles.css b/packages/ui/css/styles.css index 1564855309..f53fdb0b2a 100644 --- a/packages/ui/css/styles.css +++ b/packages/ui/css/styles.css @@ -88,10 +88,14 @@ --bui-fg-solid-disabled: #98a8bc; --bui-fg-tint: #1f5493; --bui-fg-tint-disabled: var(--bui-gray-5); - --bui-fg-danger: #991919; - --bui-fg-warning: #92310a; - --bui-fg-success: #116932; - --bui-fg-info: #173da6; + --bui-fg-danger-on-bg: #991919; + --bui-fg-warning-on-bg: #92310a; + --bui-fg-success-on-bg: #116932; + --bui-fg-info-on-bg: #173da6; + --bui-fg-danger: #ec3b18; + --bui-fg-warning: #ef7a32; + --bui-fg-success: #1ed760; + --bui-fg-info: #0d74ce; --bui-border: #0000001a; --bui-border-hover: #0003; --bui-border-pressed: #0006; @@ -153,10 +157,14 @@ --bui-fg-solid-disabled: #6191cc; --bui-fg-tint: #9cc9ff; --bui-fg-tint-disabled: var(--bui-gray-5); - --bui-fg-danger: #fca5a5; - --bui-fg-warning: #fdba74; - --bui-fg-success: #86efac; - --bui-fg-info: #a3cfff; + --bui-fg-danger-on-bg: #fca5a5; + --bui-fg-warning-on-bg: #fdba74; + --bui-fg-success-on-bg: #86efac; + --bui-fg-info-on-bg: #a3cfff; + --bui-fg-danger: #ff5a30; + --bui-fg-warning: #ffa057; + --bui-fg-success: #1ed760; + --bui-fg-info: #70b8ff; --bui-border: #ffffff1f; --bui-border-hover: #fff6; --bui-border-pressed: #ffffff80; diff --git a/packages/ui/report.api.md b/packages/ui/report.api.md index b4211d2499..efe88de249 100644 --- a/packages/ui/report.api.md +++ b/packages/ui/report.api.md @@ -1115,6 +1115,7 @@ export const LinkDefinition: { 'success', ]; readonly truncate: readonly [true, false]; + readonly standalone: readonly [true, false]; }; }; @@ -1128,6 +1129,8 @@ export interface LinkProps extends LinkProps_2 { | TextColorStatus | Partial>; // (undocumented) + standalone?: boolean; + // (undocumented) title?: string; // (undocumented) truncate?: boolean; @@ -1906,7 +1909,7 @@ export { Text_2 as Text }; export type TextColors = 'primary' | 'secondary'; // @public (undocumented) -export type TextColorStatus = 'danger' | 'warning' | 'success'; +export type TextColorStatus = 'danger' | 'warning' | 'success' | 'info'; // @public export const TextDefinition: { diff --git a/packages/ui/src/components/Alert/Alert.module.css b/packages/ui/src/components/Alert/Alert.module.css index 643a7d09b0..9c2fc6a586 100644 --- a/packages/ui/src/components/Alert/Alert.module.css +++ b/packages/ui/src/components/Alert/Alert.module.css @@ -36,22 +36,22 @@ .bui-Alert[data-status='info'] { --alert-bg: var(--bui-bg-info); - --alert-fg: var(--bui-fg-info); + --alert-fg: var(--bui-fg-info-on-bg); } .bui-Alert[data-status='success'] { --alert-bg: var(--bui-bg-success); - --alert-fg: var(--bui-fg-success); + --alert-fg: var(--bui-fg-success-on-bg); } .bui-Alert[data-status='warning'] { --alert-bg: var(--bui-bg-warning); - --alert-fg: var(--bui-fg-warning); + --alert-fg: var(--bui-fg-warning-on-bg); } .bui-Alert[data-status='danger'] { --alert-bg: var(--bui-bg-danger); - --alert-fg: var(--bui-fg-danger); + --alert-fg: var(--bui-fg-danger-on-bg); } .bui-AlertIcon { diff --git a/packages/ui/src/components/Link/Link.module.css b/packages/ui/src/components/Link/Link.module.css index a319dfb66b..27ffe244fb 100644 --- a/packages/ui/src/components/Link/Link.module.css +++ b/packages/ui/src/components/Link/Link.module.css @@ -22,9 +22,14 @@ padding: 0; margin: 0; cursor: pointer; - text-decoration-line: none; display: inline-block; + text-decoration-line: underline; + text-decoration-style: solid; + text-decoration-thickness: min(2px, max(1px, 0.05em)); + text-underline-offset: calc(0.025em + 2px); + text-decoration-color: color-mix(in srgb, currentColor 30%, transparent); + &:hover { text-decoration-line: underline; text-decoration-style: solid; @@ -102,9 +107,25 @@ color: var(--bui-fg-success); } + .bui-Link[data-color='info'] { + color: var(--bui-fg-info); + } + .bui-Link[data-truncate] { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + + .bui-Link[data-standalone] { + text-decoration-line: none; + + &:hover { + text-decoration-line: underline; + text-decoration-style: solid; + text-decoration-thickness: min(2px, max(1px, 0.05em)); + text-underline-offset: calc(0.025em + 2px); + text-decoration-color: color-mix(in srgb, currentColor 30%, transparent); + } + } } diff --git a/packages/ui/src/components/Link/Link.stories.tsx b/packages/ui/src/components/Link/Link.stories.tsx index 7d680e5616..fafb5948d9 100644 --- a/packages/ui/src/components/Link/Link.stories.tsx +++ b/packages/ui/src/components/Link/Link.stories.tsx @@ -102,6 +102,12 @@ export const AllColors = meta.story({ color="success" children="I am success" /> + ), }); @@ -235,6 +241,25 @@ export const Truncate = meta.story({ }, }); +export const Standalone = meta.story({ + args: { + href: '/', + children: 'Standalone link (no underline by default)', + standalone: true, + }, +}); + +export const StandaloneComparison = meta.story({ + render: () => ( + + Default link (underline by default): + + Standalone link (underline on hover only): + + + ), +}); + export const Responsive = meta.story({ args: { ...Default.input.args, @@ -244,27 +269,3 @@ export const Responsive = meta.story({ }, }, }); - -export const Playground = meta.story({ - args: { - ...Default.input.args, - }, - render: args => ( - - Title X Small - - Body X Small - - Body Small - - Body Medium - - Body Large - - Title Small - - Title Medium - - - ), -}); diff --git a/packages/ui/src/components/Link/Link.tsx b/packages/ui/src/components/Link/Link.tsx index fb9d25e805..efdca26750 100644 --- a/packages/ui/src/components/Link/Link.tsx +++ b/packages/ui/src/components/Link/Link.tsx @@ -44,6 +44,7 @@ const LinkInternal = forwardRef((props, ref) => { weight, color, truncate, + standalone, slot, ...restProps } = cleanedProps; diff --git a/packages/ui/src/components/Link/definition.ts b/packages/ui/src/components/Link/definition.ts index cece929f11..c52d8a336c 100644 --- a/packages/ui/src/components/Link/definition.ts +++ b/packages/ui/src/components/Link/definition.ts @@ -29,5 +29,6 @@ export const LinkDefinition = { weight: ['regular', 'bold'] as const, color: ['primary', 'secondary', 'danger', 'warning', 'success'] as const, truncate: [true, false] as const, + standalone: [true, false] as const, }, } as const satisfies ComponentDefinition; diff --git a/packages/ui/src/components/Link/types.ts b/packages/ui/src/components/Link/types.ts index 796676e593..9259a8a1d7 100644 --- a/packages/ui/src/components/Link/types.ts +++ b/packages/ui/src/components/Link/types.ts @@ -33,6 +33,7 @@ export interface LinkProps extends AriaLinkProps { | TextColorStatus | Partial>; truncate?: boolean; + standalone?: boolean; // This is used to set the title attribute on the link title?: string; diff --git a/packages/ui/src/css/tokens.css b/packages/ui/src/css/tokens.css index 992a49b2f2..90d838539e 100644 --- a/packages/ui/src/css/tokens.css +++ b/packages/ui/src/css/tokens.css @@ -118,6 +118,7 @@ --bui-bg-warning: #ffedd5; --bui-bg-success: #dcfce7; --bui-bg-info: #dbeafe; + /* Foreground colors */ --bui-fg-primary: var(--bui-black); @@ -129,10 +130,16 @@ --bui-fg-solid-disabled: #98a8bc; --bui-fg-tint: #1f5493; --bui-fg-tint-disabled: var(--bui-gray-5); - --bui-fg-danger: #991919; - --bui-fg-warning: #92310a; - --bui-fg-success: #116932; - --bui-fg-info: #173da6; + + /* Foreground Statuses */ + --bui-fg-danger-on-bg: #991919; + --bui-fg-warning-on-bg: #92310a; + --bui-fg-success-on-bg: #116932; + --bui-fg-info-on-bg: #173da6; + --bui-fg-danger: #EC3B18; + --bui-fg-warning: #EF7A32; + --bui-fg-success: #1ED760; + --bui-fg-info: #0D74CE; /* Border colors */ --bui-border: rgba(0, 0, 0, 0.1); @@ -217,10 +224,16 @@ --bui-fg-solid-disabled: #6191cc; --bui-fg-tint: #9cc9ff; --bui-fg-tint-disabled: var(--bui-gray-5); - --bui-fg-danger: #fca5a5; - --bui-fg-warning: #fdba74; - --bui-fg-success: #86efac; - --bui-fg-info: #a3cfff; + + /* Foreground statuses */ + --bui-fg-danger-on-bg: #fca5a5; + --bui-fg-warning-on-bg: #fdba74; + --bui-fg-success-on-bg: #86efac; + --bui-fg-info-on-bg: #a3cfff; + --bui-fg-danger: #FF5A30; + --bui-fg-warning: #FFA057; + --bui-fg-success: #1ED760; + --bui-fg-info: #70B8FF; /* Border colors */ --bui-border: rgba(255, 255, 255, 0.12); diff --git a/packages/ui/src/types.ts b/packages/ui/src/types.ts index 0b23dfd10e..933e1d8aa9 100644 --- a/packages/ui/src/types.ts +++ b/packages/ui/src/types.ts @@ -131,7 +131,7 @@ export type TextVariants = export type TextColors = 'primary' | 'secondary'; /** @public */ -export type TextColorStatus = 'danger' | 'warning' | 'success'; +export type TextColorStatus = 'danger' | 'warning' | 'success' | 'info'; /** @public */ export type TextWeights = 'regular' | 'bold'; From d07be1b41f91d34a9bded3011e7f419d78bbf070 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Fri, 30 Jan 2026 17:57:33 +0000 Subject: [PATCH 082/107] Remove link + tint tokens Signed-off-by: Charles de Dreuille --- .changeset/wicked-walls-accept.md | 52 ++++++++++++++++++----------- .storybook/themes/spotify.css | 4 --- docs-ui/src/css/theme-backstage.css | 2 +- docs-ui/src/css/theme-spotify.css | 2 +- packages/ui/css/styles.css | 8 ----- packages/ui/src/css/tokens.css | 8 ----- 6 files changed, 34 insertions(+), 42 deletions(-) diff --git a/.changeset/wicked-walls-accept.md b/.changeset/wicked-walls-accept.md index 6e8c9cf96d..1a56c5a893 100644 --- a/.changeset/wicked-walls-accept.md +++ b/.changeset/wicked-walls-accept.md @@ -2,7 +2,16 @@ '@backstage/ui': minor --- -Added new status foreground tokens and improved Link component styling +**BREAKING**: Removed link and tint color tokens, added new status foreground tokens, and improved Link component styling + +**Removed Tokens (BREAKING):** + +The following color tokens have been removed: + +- `--bui-fg-link` (and all related tokens: `-hover`, `-pressed`, `-disabled`) +- `--bui-fg-tint` (and all related tokens: `-hover`, `-pressed`, `-disabled`) +- `--bui-bg-tint` (and all related tokens: `-hover`, `-pressed`, `-disabled`) +- `--bui-border-tint` (and all related tokens) **New Status Tokens:** @@ -17,6 +26,28 @@ The `-on-bg` variants are designed for text on colored backgrounds, while the ba **Migration:** +For link colors, migrate to one of the following alternatives: + +```diff +.custom-link { +- color: var(--bui-fg-link); ++ color: var(--bui-fg-info); /* For informational links */ ++ /* or */ ++ color: var(--bui-fg-primary); /* For standard text links */ +} +``` + +For tint colors (backgrounds, foregrounds, borders), migrate to appropriate status or neutral colors: + +```diff +.info-section { +- background: var(--bui-bg-tint); ++ background: var(--bui-bg-info); /* For informational sections */ ++ /* or */ ++ background: var(--bui-bg-neutral-on-surface-0); /* For neutral emphasis */ +} +``` + If you're using status foreground colors on colored backgrounds, update to the new `-on-bg` tokens: ```diff @@ -27,23 +58,4 @@ If you're using status foreground colors on colored backgrounds, update to the n } ``` -For standalone status indicators (icons, badges, text), continue using the base tokens which now have updated values for better visibility. - -**Link Component Updates:** - -1. **New `standalone` prop**: Links now have a `standalone` variant that removes the default underline (shows only on hover) -2. **New `info` color**: Added support for `color="info"` -3. **Improved default underline styling**: Links now show underlines by default with refined styling using `color-mix` for better visual hierarchy - -```tsx -// Default link - shows underline by default -Sign up - -// Standalone link - underline only on hover -Sign up - -// Info color link -Learn more -``` - **Affected components:** Link diff --git a/.storybook/themes/spotify.css b/.storybook/themes/spotify.css index 352c633a15..4f8b1b137d 100644 --- a/.storybook/themes/spotify.css +++ b/.storybook/themes/spotify.css @@ -259,13 +259,9 @@ --bui-fg-primary: var(--bui-white); --bui-fg-secondary: var(--bui-gray-7); - --bui-fg-link: var(--bui-white); - --bui-fg-link-hover: var(--bui-white); --bui-fg-disabled: var(--bui-gray-5); --bui-fg-solid: var(--bui-black); --bui-fg-solid-disabled: #072f15; - --bui-fg-tint: var(--bui-white); - --bui-fg-tint-disabled: var(--bui-gray-5); --bui-fg-danger: #e22b2b; --bui-fg-warning: #e36d05; --bui-fg-success: #1db954; diff --git a/docs-ui/src/css/theme-backstage.css b/docs-ui/src/css/theme-backstage.css index ad4d2cefb5..4bd50bc04e 100644 --- a/docs-ui/src/css/theme-backstage.css +++ b/docs-ui/src/css/theme-backstage.css @@ -1 +1 @@ -@layer tokens{:root{--bui-font-regular:system-ui;--bui-font-monospace:ui-monospace,"Menlo","Monaco","Consolas","Liberation Mono","Courier New",monospace;--bui-font-weight-regular:400;--bui-font-weight-bold:600;--bui-font-size-1:.625rem;--bui-font-size-2:.75rem;--bui-font-size-3:.875rem;--bui-font-size-4:1rem;--bui-font-size-5:1.25rem;--bui-font-size-6:1.5rem;--bui-font-size-7:2rem;--bui-font-size-8:3rem;--bui-font-size-9:4rem;--bui-font-size-10:5.75rem;--bui-space:.25rem;--bui-space-0_5:calc(var(--bui-space)*.5);--bui-space-1:var(--bui-space);--bui-space-1_5:calc(var(--bui-space)*1.5);--bui-space-2:calc(var(--bui-space)*2);--bui-space-3:calc(var(--bui-space)*3);--bui-space-4:calc(var(--bui-space)*4);--bui-space-5:calc(var(--bui-space)*5);--bui-space-6:calc(var(--bui-space)*6);--bui-space-7:calc(var(--bui-space)*7);--bui-space-8:calc(var(--bui-space)*8);--bui-space-9:calc(var(--bui-space)*9);--bui-space-10:calc(var(--bui-space)*10);--bui-space-11:calc(var(--bui-space)*11);--bui-space-12:calc(var(--bui-space)*12);--bui-space-13:calc(var(--bui-space)*13);--bui-space-14:calc(var(--bui-space)*14);--bui-radius-1:calc(.125rem);--bui-radius-2:calc(.25rem);--bui-radius-3:calc(.5rem);--bui-radius-4:calc(.75rem);--bui-radius-5:calc(1rem);--bui-radius-6:calc(1.25rem);--bui-radius-full:9999px;--bui-black:#000;--bui-white:#fff;--bui-gray-1:#f8f8f8;--bui-gray-2:#ececec;--bui-gray-3:#d9d9d9;--bui-gray-4:#c1c1c1;--bui-gray-5:#9e9e9e;--bui-gray-6:#8c8c8c;--bui-gray-7:#757575;--bui-gray-8:#595959;--bui-bg-surface-0:var(--bui-gray-1);--bui-bg-surface-1:var(--bui-white);--bui-bg-surface-2:var(--bui-gray-1);--bui-bg-surface-3:var(--bui-gray-2);--bui-bg-solid:#1f5493;--bui-bg-solid-hover:#163a66;--bui-bg-solid-pressed:#0f2b4e;--bui-bg-solid-disabled:#163a66;--bui-bg-neutral-on-surface-0:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-0-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-0-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-0-disabled:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-1:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-1-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-1-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-1-disabled:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-2:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-2-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-2-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-2-disabled:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-3:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-3-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-3-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-3-disabled:oklch(0% 0 0/.06);--bui-bg-danger:#ffe2e2;--bui-bg-warning:#ffedd5;--bui-bg-success:#dcfce7;--bui-bg-info:#dbeafe;--bui-fg-primary:var(--bui-black);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-link:#1f5493;--bui-fg-link-hover:#1f2d5c;--bui-fg-disabled:#9e9e9e;--bui-fg-solid:var(--bui-white);--bui-fg-solid-disabled:#98a8bc;--bui-fg-tint:#1f5493;--bui-fg-tint-disabled:var(--bui-gray-5);--bui-fg-danger-on-bg:#991919;--bui-fg-warning-on-bg:#92310a;--bui-fg-success-on-bg:#116932;--bui-fg-info-on-bg:#173da6;--bui-fg-danger:#ec3b18;--bui-fg-warning:#ef7a32;--bui-fg-success:#1ed760;--bui-fg-info:#0d74ce;--bui-border:#0000001a;--bui-border-hover:#0003;--bui-border-pressed:#0006;--bui-border-disabled:#0000001a;--bui-border-info:#7ea9d6;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#1f5493;--bui-scrollbar:#a0a0a03b;--bui-scrollbar-thumb:#a0a0a0;--bui-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--bui-animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite}[data-theme-mode=dark]{--bui-gray-1:#191919;--bui-gray-2:#242424;--bui-gray-3:#373737;--bui-gray-4:#464646;--bui-gray-5:#575757;--bui-gray-6:#7b7b7b;--bui-gray-7:#9e9e9e;--bui-gray-8:#b4b4b4;--bui-bg-surface-0:#333;--bui-bg-surface-1:var(--bui-gray-1);--bui-bg-surface-2:var(--bui-gray-2);--bui-bg-surface-3:var(--bui-gray-3);--bui-bg-solid:#9cc9ff;--bui-bg-solid-hover:#83b9fd;--bui-bg-solid-pressed:#83b9fd;--bui-bg-solid-disabled:#1b3d68;--bui-bg-neutral-on-surface-0:oklch(100% 0 0/.1);--bui-bg-neutral-on-surface-0-hover:oklch(100% 0 0/.14);--bui-bg-neutral-on-surface-0-pressed:oklch(100% 0 0/.2);--bui-bg-neutral-on-surface-0-disabled:oklch(100% 0 0/.1);--bui-bg-neutral-on-surface-1:oklch(100% 0 0/.06);--bui-bg-neutral-on-surface-1-hover:oklch(100% 0 0/.1);--bui-bg-neutral-on-surface-1-pressed:oklch(100% 0 0/.16);--bui-bg-neutral-on-surface-1-disabled:oklch(100% 0 0/.06);--bui-bg-neutral-on-surface-2:oklch(100% 0 0/.08);--bui-bg-neutral-on-surface-2-hover:oklch(100% 0 0/.12);--bui-bg-neutral-on-surface-2-pressed:oklch(100% 0 0/.2);--bui-bg-neutral-on-surface-2-disabled:oklch(100% 0 0/.08);--bui-bg-neutral-on-surface-3:oklch(100% 0 0/.08);--bui-bg-neutral-on-surface-3-hover:oklch(100% 0 0/.12);--bui-bg-neutral-on-surface-3-pressed:oklch(100% 0 0/.2);--bui-bg-neutral-on-surface-3-disabled:oklch(100% 0 0/.08);--bui-bg-danger:#300c0c;--bui-bg-warning:#302008;--bui-bg-success:#042713;--bui-bg-info:#132049;--bui-fg-primary:var(--bui-white);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-link:#9cc9ff;--bui-fg-link-hover:#7eb5f7;--bui-fg-disabled:var(--bui-gray-7);--bui-fg-solid:#101821;--bui-fg-solid-disabled:#6191cc;--bui-fg-tint:#9cc9ff;--bui-fg-tint-disabled:var(--bui-gray-5);--bui-fg-danger-on-bg:#fca5a5;--bui-fg-warning-on-bg:#fdba74;--bui-fg-success-on-bg:#86efac;--bui-fg-info-on-bg:#a3cfff;--bui-fg-danger:#ff5a30;--bui-fg-warning:#ffa057;--bui-fg-success:#1ed760;--bui-fg-info:#70b8ff;--bui-border:#ffffff1f;--bui-border-hover:#fff6;--bui-border-pressed:#ffffff80;--bui-border-disabled:#fff3;--bui-border-info:#7ea9d6;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#1f5493;--bui-scrollbar:#3636363a;--bui-scrollbar-thumb:#575757;--bui-shadow:none}}@layer base{*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;tab-size:4;font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;line-height:1.15}body{margin:0}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{border-color:currentColor}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}:where(a){color:inherit;text-decoration:none}@keyframes pulse{50%{opacity:.5}}body{background-color:var(--bui-bg-surface-0);color:var(--bui-fg-primary);font-family:var(--bui-font-regular);font-weight:var(--bui-font-weight-regular);font-size:var(--bui-font-size-3);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[data-theme-mode=dark]{color-scheme:dark}[data-theme-mode=light]{color-scheme:light}}@layer components;@layer utilities{.bui-p{padding:var(--p)}.bui-p-0\.5{padding:var(--bui-space-0_5)}.bui-p-1{padding:var(--bui-space-1)}.bui-p-1\.5{padding:var(--bui-space-1_5)}.bui-p-2{padding:var(--bui-space-2)}.bui-p-3{padding:var(--bui-space-3)}.bui-p-4{padding:var(--bui-space-4)}.bui-p-5{padding:var(--bui-space-5)}.bui-p-6{padding:var(--bui-space-6)}.bui-p-7{padding:var(--bui-space-7)}.bui-p-8{padding:var(--bui-space-8)}.bui-p-9{padding:var(--bui-space-9)}.bui-p-10{padding:var(--bui-space-10)}.bui-p-11{padding:var(--bui-space-11)}.bui-p-12{padding:var(--bui-space-12)}.bui-p-13{padding:var(--bui-space-13)}.bui-p-14{padding:var(--bui-space-14)}@media (width>=640px){.xs\:bui-p{padding:var(--p-xs)}.xs\:bui-p-0\.5{padding:var(--bui-space-0_5)}.xs\:bui-p-1{padding:var(--bui-space-1)}.xs\:bui-p-1\.5{padding:var(--bui-space-1_5)}.xs\:bui-p-2{padding:var(--bui-space-2)}.xs\:bui-p-3{padding:var(--bui-space-3)}.xs\:bui-p-4{padding:var(--bui-space-4)}.xs\:bui-p-5{padding:var(--bui-space-5)}.xs\:bui-p-6{padding:var(--bui-space-6)}.xs\:bui-p-7{padding:var(--bui-space-7)}.xs\:bui-p-8{padding:var(--bui-space-8)}.xs\:bui-p-9{padding:var(--bui-space-9)}.xs\:bui-p-10{padding:var(--bui-space-10)}.xs\:bui-p-11{padding:var(--bui-space-11)}.xs\:bui-p-12{padding:var(--bui-space-12)}.xs\:bui-p-13{padding:var(--bui-space-13)}.xs\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-p{padding:var(--p-sm)}.sm\:bui-p-0\.5{padding:var(--bui-space-0_5)}.sm\:bui-p-1{padding:var(--bui-space-1)}.sm\:bui-p-1\.5{padding:var(--bui-space-1_5)}.sm\:bui-p-2{padding:var(--bui-space-2)}.sm\:bui-p-3{padding:var(--bui-space-3)}.sm\:bui-p-4{padding:var(--bui-space-4)}.sm\:bui-p-5{padding:var(--bui-space-5)}.sm\:bui-p-6{padding:var(--bui-space-6)}.sm\:bui-p-7{padding:var(--bui-space-7)}.sm\:bui-p-8{padding:var(--bui-space-8)}.sm\:bui-p-9{padding:var(--bui-space-9)}.sm\:bui-p-10{padding:var(--bui-space-10)}.sm\:bui-p-11{padding:var(--bui-space-11)}.sm\:bui-p-12{padding:var(--bui-space-12)}.sm\:bui-p-13{padding:var(--bui-space-13)}.sm\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-p{padding:var(--p-md)}.md\:bui-p-0\.5{padding:var(--bui-space-0_5)}.md\:bui-p-1{padding:var(--bui-space-1)}.md\:bui-p-1\.5{padding:var(--bui-space-1_5)}.md\:bui-p-2{padding:var(--bui-space-2)}.md\:bui-p-3{padding:var(--bui-space-3)}.md\:bui-p-4{padding:var(--bui-space-4)}.md\:bui-p-5{padding:var(--bui-space-5)}.md\:bui-p-6{padding:var(--bui-space-6)}.md\:bui-p-7{padding:var(--bui-space-7)}.md\:bui-p-8{padding:var(--bui-space-8)}.md\:bui-p-9{padding:var(--bui-space-9)}.md\:bui-p-10{padding:var(--bui-space-10)}.md\:bui-p-11{padding:var(--bui-space-11)}.md\:bui-p-12{padding:var(--bui-space-12)}.md\:bui-p-13{padding:var(--bui-space-13)}.md\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-p{padding:var(--p-lg)}.lg\:bui-p-0\.5{padding:var(--bui-space-0_5)}.lg\:bui-p-1{padding:var(--bui-space-1)}.lg\:bui-p-1\.5{padding:var(--bui-space-1_5)}.lg\:bui-p-2{padding:var(--bui-space-2)}.lg\:bui-p-3{padding:var(--bui-space-3)}.lg\:bui-p-4{padding:var(--bui-space-4)}.lg\:bui-p-5{padding:var(--bui-space-5)}.lg\:bui-p-6{padding:var(--bui-space-6)}.lg\:bui-p-7{padding:var(--bui-space-7)}.lg\:bui-p-8{padding:var(--bui-space-8)}.lg\:bui-p-9{padding:var(--bui-space-9)}.lg\:bui-p-10{padding:var(--bui-space-10)}.lg\:bui-p-11{padding:var(--bui-space-11)}.lg\:bui-p-12{padding:var(--bui-space-12)}.lg\:bui-p-13{padding:var(--bui-space-13)}.lg\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-p{padding:var(--p-xl)}.xl\:bui-p-0\.5{padding:var(--bui-space-0_5)}.xl\:bui-p-1{padding:var(--bui-space-1)}.xl\:bui-p-1\.5{padding:var(--bui-space-1_5)}.xl\:bui-p-2{padding:var(--bui-space-2)}.xl\:bui-p-3{padding:var(--bui-space-3)}.xl\:bui-p-4{padding:var(--bui-space-4)}.xl\:bui-p-5{padding:var(--bui-space-5)}.xl\:bui-p-6{padding:var(--bui-space-6)}.xl\:bui-p-7{padding:var(--bui-space-7)}.xl\:bui-p-8{padding:var(--bui-space-8)}.xl\:bui-p-9{padding:var(--bui-space-9)}.xl\:bui-p-10{padding:var(--bui-space-10)}.xl\:bui-p-11{padding:var(--bui-space-11)}.xl\:bui-p-12{padding:var(--bui-space-12)}.xl\:bui-p-13{padding:var(--bui-space-13)}.xl\:bui-p-14{padding:var(--bui-space-14)}}.bui-pl{padding-left:var(--pl)}.bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.bui-pl-1{padding-left:var(--bui-space-1)}.bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.bui-pl-2{padding-left:var(--bui-space-2)}.bui-pl-3{padding-left:var(--bui-space-3)}.bui-pl-4{padding-left:var(--bui-space-4)}.bui-pl-5{padding-left:var(--bui-space-5)}.bui-pl-6{padding-left:var(--bui-space-6)}.bui-pl-7{padding-left:var(--bui-space-7)}.bui-pl-8{padding-left:var(--bui-space-8)}.bui-pl-9{padding-left:var(--bui-space-9)}.bui-pl-10{padding-left:var(--bui-space-10)}.bui-pl-11{padding-left:var(--bui-space-11)}.bui-pl-12{padding-left:var(--bui-space-12)}.bui-pl-13{padding-left:var(--bui-space-13)}.bui-pl-14{padding-left:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pl{padding-left:var(--pl-xs)}.xs\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.xs\:bui-pl-1{padding-left:var(--bui-space-1)}.xs\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.xs\:bui-pl-2{padding-left:var(--bui-space-2)}.xs\:bui-pl-3{padding-left:var(--bui-space-3)}.xs\:bui-pl-4{padding-left:var(--bui-space-4)}.xs\:bui-pl-5{padding-left:var(--bui-space-5)}.xs\:bui-pl-6{padding-left:var(--bui-space-6)}.xs\:bui-pl-7{padding-left:var(--bui-space-7)}.xs\:bui-pl-8{padding-left:var(--bui-space-8)}.xs\:bui-pl-9{padding-left:var(--bui-space-9)}.xs\:bui-pl-10{padding-left:var(--bui-space-10)}.xs\:bui-pl-11{padding-left:var(--bui-space-11)}.xs\:bui-pl-12{padding-left:var(--bui-space-12)}.xs\:bui-pl-13{padding-left:var(--bui-space-13)}.xs\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pl{padding-left:var(--pl-sm)}.sm\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.sm\:bui-pl-1{padding-left:var(--bui-space-1)}.sm\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.sm\:bui-pl-2{padding-left:var(--bui-space-2)}.sm\:bui-pl-3{padding-left:var(--bui-space-3)}.sm\:bui-pl-4{padding-left:var(--bui-space-4)}.sm\:bui-pl-5{padding-left:var(--bui-space-5)}.sm\:bui-pl-6{padding-left:var(--bui-space-6)}.sm\:bui-pl-7{padding-left:var(--bui-space-7)}.sm\:bui-pl-8{padding-left:var(--bui-space-8)}.sm\:bui-pl-9{padding-left:var(--bui-space-9)}.sm\:bui-pl-10{padding-left:var(--bui-space-10)}.sm\:bui-pl-11{padding-left:var(--bui-space-11)}.sm\:bui-pl-12{padding-left:var(--bui-space-12)}.sm\:bui-pl-13{padding-left:var(--bui-space-13)}.sm\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pl{padding-left:var(--pl-md)}.md\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.md\:bui-pl-1{padding-left:var(--bui-space-1)}.md\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.md\:bui-pl-2{padding-left:var(--bui-space-2)}.md\:bui-pl-3{padding-left:var(--bui-space-3)}.md\:bui-pl-4{padding-left:var(--bui-space-4)}.md\:bui-pl-5{padding-left:var(--bui-space-5)}.md\:bui-pl-6{padding-left:var(--bui-space-6)}.md\:bui-pl-7{padding-left:var(--bui-space-7)}.md\:bui-pl-8{padding-left:var(--bui-space-8)}.md\:bui-pl-9{padding-left:var(--bui-space-9)}.md\:bui-pl-10{padding-left:var(--bui-space-10)}.md\:bui-pl-11{padding-left:var(--bui-space-11)}.md\:bui-pl-12{padding-left:var(--bui-space-12)}.md\:bui-pl-13{padding-left:var(--bui-space-13)}.md\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pl{padding-left:var(--pl-lg)}.lg\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.lg\:bui-pl-1{padding-left:var(--bui-space-1)}.lg\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.lg\:bui-pl-2{padding-left:var(--bui-space-2)}.lg\:bui-pl-3{padding-left:var(--bui-space-3)}.lg\:bui-pl-4{padding-left:var(--bui-space-4)}.lg\:bui-pl-5{padding-left:var(--bui-space-5)}.lg\:bui-pl-6{padding-left:var(--bui-space-6)}.lg\:bui-pl-7{padding-left:var(--bui-space-7)}.lg\:bui-pl-8{padding-left:var(--bui-space-8)}.lg\:bui-pl-9{padding-left:var(--bui-space-9)}.lg\:bui-pl-10{padding-left:var(--bui-space-10)}.lg\:bui-pl-11{padding-left:var(--bui-space-11)}.lg\:bui-pl-12{padding-left:var(--bui-space-12)}.lg\:bui-pl-13{padding-left:var(--bui-space-13)}.lg\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pl{padding-left:var(--pl-xl)}.xl\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.xl\:bui-pl-1{padding-left:var(--bui-space-1)}.xl\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.xl\:bui-pl-2{padding-left:var(--bui-space-2)}.xl\:bui-pl-3{padding-left:var(--bui-space-3)}.xl\:bui-pl-4{padding-left:var(--bui-space-4)}.xl\:bui-pl-5{padding-left:var(--bui-space-5)}.xl\:bui-pl-6{padding-left:var(--bui-space-6)}.xl\:bui-pl-7{padding-left:var(--bui-space-7)}.xl\:bui-pl-8{padding-left:var(--bui-space-8)}.xl\:bui-pl-9{padding-left:var(--bui-space-9)}.xl\:bui-pl-10{padding-left:var(--bui-space-10)}.xl\:bui-pl-11{padding-left:var(--bui-space-11)}.xl\:bui-pl-12{padding-left:var(--bui-space-12)}.xl\:bui-pl-13{padding-left:var(--bui-space-13)}.xl\:bui-pl-14{padding-left:var(--bui-space-14)}}.bui-pr{padding-right:var(--pr)}.bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.bui-pr-1{padding-right:var(--bui-space-1)}.bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.bui-pr-2{padding-right:var(--bui-space-2)}.bui-pr-3{padding-right:var(--bui-space-3)}.bui-pr-4{padding-right:var(--bui-space-4)}.bui-pr-5{padding-right:var(--bui-space-5)}.bui-pr-6{padding-right:var(--bui-space-6)}.bui-pr-7{padding-right:var(--bui-space-7)}.bui-pr-8{padding-right:var(--bui-space-8)}.bui-pr-9{padding-right:var(--bui-space-9)}.bui-pr-10{padding-right:var(--bui-space-10)}.bui-pr-11{padding-right:var(--bui-space-11)}.bui-pr-12{padding-right:var(--bui-space-12)}.bui-pr-13{padding-right:var(--bui-space-13)}.bui-pr-14{padding-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pr{padding-right:var(--pr-xs)}.xs\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.xs\:bui-pr-1{padding-right:var(--bui-space-1)}.xs\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.xs\:bui-pr-2{padding-right:var(--bui-space-2)}.xs\:bui-pr-3{padding-right:var(--bui-space-3)}.xs\:bui-pr-4{padding-right:var(--bui-space-4)}.xs\:bui-pr-5{padding-right:var(--bui-space-5)}.xs\:bui-pr-6{padding-right:var(--bui-space-6)}.xs\:bui-pr-7{padding-right:var(--bui-space-7)}.xs\:bui-pr-8{padding-right:var(--bui-space-8)}.xs\:bui-pr-9{padding-right:var(--bui-space-9)}.xs\:bui-pr-10{padding-right:var(--bui-space-10)}.xs\:bui-pr-11{padding-right:var(--bui-space-11)}.xs\:bui-pr-12{padding-right:var(--bui-space-12)}.xs\:bui-pr-13{padding-right:var(--bui-space-13)}.xs\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pr{padding-right:var(--pr-sm)}.sm\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.sm\:bui-pr-1{padding-right:var(--bui-space-1)}.sm\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.sm\:bui-pr-2{padding-right:var(--bui-space-2)}.sm\:bui-pr-3{padding-right:var(--bui-space-3)}.sm\:bui-pr-4{padding-right:var(--bui-space-4)}.sm\:bui-pr-5{padding-right:var(--bui-space-5)}.sm\:bui-pr-6{padding-right:var(--bui-space-6)}.sm\:bui-pr-7{padding-right:var(--bui-space-7)}.sm\:bui-pr-8{padding-right:var(--bui-space-8)}.sm\:bui-pr-9{padding-right:var(--bui-space-9)}.sm\:bui-pr-10{padding-right:var(--bui-space-10)}.sm\:bui-pr-11{padding-right:var(--bui-space-11)}.sm\:bui-pr-12{padding-right:var(--bui-space-12)}.sm\:bui-pr-13{padding-right:var(--bui-space-13)}.sm\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pr{padding-right:var(--pr-md)}.md\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.md\:bui-pr-1{padding-right:var(--bui-space-1)}.md\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.md\:bui-pr-2{padding-right:var(--bui-space-2)}.md\:bui-pr-3{padding-right:var(--bui-space-3)}.md\:bui-pr-4{padding-right:var(--bui-space-4)}.md\:bui-pr-5{padding-right:var(--bui-space-5)}.md\:bui-pr-6{padding-right:var(--bui-space-6)}.md\:bui-pr-7{padding-right:var(--bui-space-7)}.md\:bui-pr-8{padding-right:var(--bui-space-8)}.md\:bui-pr-9{padding-right:var(--bui-space-9)}.md\:bui-pr-10{padding-right:var(--bui-space-10)}.md\:bui-pr-11{padding-right:var(--bui-space-11)}.md\:bui-pr-12{padding-right:var(--bui-space-12)}.md\:bui-pr-13{padding-right:var(--bui-space-13)}.md\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pr{padding-right:var(--pr-lg)}.lg\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.lg\:bui-pr-1{padding-right:var(--bui-space-1)}.lg\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.lg\:bui-pr-2{padding-right:var(--bui-space-2)}.lg\:bui-pr-3{padding-right:var(--bui-space-3)}.lg\:bui-pr-4{padding-right:var(--bui-space-4)}.lg\:bui-pr-5{padding-right:var(--bui-space-5)}.lg\:bui-pr-6{padding-right:var(--bui-space-6)}.lg\:bui-pr-7{padding-right:var(--bui-space-7)}.lg\:bui-pr-8{padding-right:var(--bui-space-8)}.lg\:bui-pr-9{padding-right:var(--bui-space-9)}.lg\:bui-pr-10{padding-right:var(--bui-space-10)}.lg\:bui-pr-11{padding-right:var(--bui-space-11)}.lg\:bui-pr-12{padding-right:var(--bui-space-12)}.lg\:bui-pr-13{padding-right:var(--bui-space-13)}.lg\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pr{padding-right:var(--pr-xl)}.xl\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.xl\:bui-pr-1{padding-right:var(--bui-space-1)}.xl\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.xl\:bui-pr-2{padding-right:var(--bui-space-2)}.xl\:bui-pr-3{padding-right:var(--bui-space-3)}.xl\:bui-pr-4{padding-right:var(--bui-space-4)}.xl\:bui-pr-5{padding-right:var(--bui-space-5)}.xl\:bui-pr-6{padding-right:var(--bui-space-6)}.xl\:bui-pr-7{padding-right:var(--bui-space-7)}.xl\:bui-pr-8{padding-right:var(--bui-space-8)}.xl\:bui-pr-9{padding-right:var(--bui-space-9)}.xl\:bui-pr-10{padding-right:var(--bui-space-10)}.xl\:bui-pr-11{padding-right:var(--bui-space-11)}.xl\:bui-pr-12{padding-right:var(--bui-space-12)}.xl\:bui-pr-13{padding-right:var(--bui-space-13)}.xl\:bui-pr-14{padding-right:var(--bui-space-14)}}.bui-pt{padding-top:var(--pt)}.bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.bui-pt-1{padding-top:var(--bui-space-1)}.bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.bui-pt-2{padding-top:var(--bui-space-2)}.bui-pt-3{padding-top:var(--bui-space-3)}.bui-pt-4{padding-top:var(--bui-space-4)}.bui-pt-5{padding-top:var(--bui-space-5)}.bui-pt-6{padding-top:var(--bui-space-6)}.bui-pt-7{padding-top:var(--bui-space-7)}.bui-pt-8{padding-top:var(--bui-space-8)}.bui-pt-9{padding-top:var(--bui-space-9)}.bui-pt-10{padding-top:var(--bui-space-10)}.bui-pt-11{padding-top:var(--bui-space-11)}.bui-pt-12{padding-top:var(--bui-space-12)}.bui-pt-13{padding-top:var(--bui-space-13)}.bui-pt-14{padding-top:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pt{padding-top:var(--pt-xs)}.xs\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.xs\:bui-pt-1{padding-top:var(--bui-space-1)}.xs\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.xs\:bui-pt-2{padding-top:var(--bui-space-2)}.xs\:bui-pt-3{padding-top:var(--bui-space-3)}.xs\:bui-pt-4{padding-top:var(--bui-space-4)}.xs\:bui-pt-5{padding-top:var(--bui-space-5)}.xs\:bui-pt-6{padding-top:var(--bui-space-6)}.xs\:bui-pt-7{padding-top:var(--bui-space-7)}.xs\:bui-pt-8{padding-top:var(--bui-space-8)}.xs\:bui-pt-9{padding-top:var(--bui-space-9)}.xs\:bui-pt-10{padding-top:var(--bui-space-10)}.xs\:bui-pt-11{padding-top:var(--bui-space-11)}.xs\:bui-pt-12{padding-top:var(--bui-space-12)}.xs\:bui-pt-13{padding-top:var(--bui-space-13)}.xs\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pt{padding-top:var(--pt-sm)}.sm\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.sm\:bui-pt-1{padding-top:var(--bui-space-1)}.sm\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.sm\:bui-pt-2{padding-top:var(--bui-space-2)}.sm\:bui-pt-3{padding-top:var(--bui-space-3)}.sm\:bui-pt-4{padding-top:var(--bui-space-4)}.sm\:bui-pt-5{padding-top:var(--bui-space-5)}.sm\:bui-pt-6{padding-top:var(--bui-space-6)}.sm\:bui-pt-7{padding-top:var(--bui-space-7)}.sm\:bui-pt-8{padding-top:var(--bui-space-8)}.sm\:bui-pt-9{padding-top:var(--bui-space-9)}.sm\:bui-pt-10{padding-top:var(--bui-space-10)}.sm\:bui-pt-11{padding-top:var(--bui-space-11)}.sm\:bui-pt-12{padding-top:var(--bui-space-12)}.sm\:bui-pt-13{padding-top:var(--bui-space-13)}.sm\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pt{padding-top:var(--pt-md)}.md\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.md\:bui-pt-1{padding-top:var(--bui-space-1)}.md\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.md\:bui-pt-2{padding-top:var(--bui-space-2)}.md\:bui-pt-3{padding-top:var(--bui-space-3)}.md\:bui-pt-4{padding-top:var(--bui-space-4)}.md\:bui-pt-5{padding-top:var(--bui-space-5)}.md\:bui-pt-6{padding-top:var(--bui-space-6)}.md\:bui-pt-7{padding-top:var(--bui-space-7)}.md\:bui-pt-8{padding-top:var(--bui-space-8)}.md\:bui-pt-9{padding-top:var(--bui-space-9)}.md\:bui-pt-10{padding-top:var(--bui-space-10)}.md\:bui-pt-11{padding-top:var(--bui-space-11)}.md\:bui-pt-12{padding-top:var(--bui-space-12)}.md\:bui-pt-13{padding-top:var(--bui-space-13)}.md\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pt{padding-top:var(--pt-lg)}.lg\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.lg\:bui-pt-1{padding-top:var(--bui-space-1)}.lg\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.lg\:bui-pt-2{padding-top:var(--bui-space-2)}.lg\:bui-pt-3{padding-top:var(--bui-space-3)}.lg\:bui-pt-4{padding-top:var(--bui-space-4)}.lg\:bui-pt-5{padding-top:var(--bui-space-5)}.lg\:bui-pt-6{padding-top:var(--bui-space-6)}.lg\:bui-pt-7{padding-top:var(--bui-space-7)}.lg\:bui-pt-8{padding-top:var(--bui-space-8)}.lg\:bui-pt-9{padding-top:var(--bui-space-9)}.lg\:bui-pt-10{padding-top:var(--bui-space-10)}.lg\:bui-pt-11{padding-top:var(--bui-space-11)}.lg\:bui-pt-12{padding-top:var(--bui-space-12)}.lg\:bui-pt-13{padding-top:var(--bui-space-13)}.lg\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pt{padding-top:var(--pt-xl)}.xl\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.xl\:bui-pt-1{padding-top:var(--bui-space-1)}.xl\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.xl\:bui-pt-2{padding-top:var(--bui-space-2)}.xl\:bui-pt-3{padding-top:var(--bui-space-3)}.xl\:bui-pt-4{padding-top:var(--bui-space-4)}.xl\:bui-pt-5{padding-top:var(--bui-space-5)}.xl\:bui-pt-6{padding-top:var(--bui-space-6)}.xl\:bui-pt-7{padding-top:var(--bui-space-7)}.xl\:bui-pt-8{padding-top:var(--bui-space-8)}.xl\:bui-pt-9{padding-top:var(--bui-space-9)}.xl\:bui-pt-10{padding-top:var(--bui-space-10)}.xl\:bui-pt-11{padding-top:var(--bui-space-11)}.xl\:bui-pt-12{padding-top:var(--bui-space-12)}.xl\:bui-pt-13{padding-top:var(--bui-space-13)}.xl\:bui-pt-14{padding-top:var(--bui-space-14)}}.bui-pb{padding-bottom:var(--pb)}.bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.bui-pb-1{padding-bottom:var(--bui-space-1)}.bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.bui-pb-2{padding-bottom:var(--bui-space-2)}.bui-pb-3{padding-bottom:var(--bui-space-3)}.bui-pb-4{padding-bottom:var(--bui-space-4)}.bui-pb-5{padding-bottom:var(--bui-space-5)}.bui-pb-6{padding-bottom:var(--bui-space-6)}.bui-pb-7{padding-bottom:var(--bui-space-7)}.bui-pb-8{padding-bottom:var(--bui-space-8)}.bui-pb-9{padding-bottom:var(--bui-space-9)}.bui-pb-10{padding-bottom:var(--bui-space-10)}.bui-pb-11{padding-bottom:var(--bui-space-11)}.bui-pb-12{padding-bottom:var(--bui-space-12)}.bui-pb-13{padding-bottom:var(--bui-space-13)}.bui-pb-14{padding-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pb{padding-bottom:var(--pb-xs)}.xs\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.xs\:bui-pb-1{padding-bottom:var(--bui-space-1)}.xs\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.xs\:bui-pb-2{padding-bottom:var(--bui-space-2)}.xs\:bui-pb-3{padding-bottom:var(--bui-space-3)}.xs\:bui-pb-4{padding-bottom:var(--bui-space-4)}.xs\:bui-pb-5{padding-bottom:var(--bui-space-5)}.xs\:bui-pb-6{padding-bottom:var(--bui-space-6)}.xs\:bui-pb-7{padding-bottom:var(--bui-space-7)}.xs\:bui-pb-8{padding-bottom:var(--bui-space-8)}.xs\:bui-pb-9{padding-bottom:var(--bui-space-9)}.xs\:bui-pb-10{padding-bottom:var(--bui-space-10)}.xs\:bui-pb-11{padding-bottom:var(--bui-space-11)}.xs\:bui-pb-12{padding-bottom:var(--bui-space-12)}.xs\:bui-pb-13{padding-bottom:var(--bui-space-13)}.xs\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pb{padding-bottom:var(--pb-sm)}.sm\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.sm\:bui-pb-1{padding-bottom:var(--bui-space-1)}.sm\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.sm\:bui-pb-2{padding-bottom:var(--bui-space-2)}.sm\:bui-pb-3{padding-bottom:var(--bui-space-3)}.sm\:bui-pb-4{padding-bottom:var(--bui-space-4)}.sm\:bui-pb-5{padding-bottom:var(--bui-space-5)}.sm\:bui-pb-6{padding-bottom:var(--bui-space-6)}.sm\:bui-pb-7{padding-bottom:var(--bui-space-7)}.sm\:bui-pb-8{padding-bottom:var(--bui-space-8)}.sm\:bui-pb-9{padding-bottom:var(--bui-space-9)}.sm\:bui-pb-10{padding-bottom:var(--bui-space-10)}.sm\:bui-pb-11{padding-bottom:var(--bui-space-11)}.sm\:bui-pb-12{padding-bottom:var(--bui-space-12)}.sm\:bui-pb-13{padding-bottom:var(--bui-space-13)}.sm\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pb{padding-bottom:var(--pb-md)}.md\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.md\:bui-pb-1{padding-bottom:var(--bui-space-1)}.md\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.md\:bui-pb-2{padding-bottom:var(--bui-space-2)}.md\:bui-pb-3{padding-bottom:var(--bui-space-3)}.md\:bui-pb-4{padding-bottom:var(--bui-space-4)}.md\:bui-pb-5{padding-bottom:var(--bui-space-5)}.md\:bui-pb-6{padding-bottom:var(--bui-space-6)}.md\:bui-pb-7{padding-bottom:var(--bui-space-7)}.md\:bui-pb-8{padding-bottom:var(--bui-space-8)}.md\:bui-pb-9{padding-bottom:var(--bui-space-9)}.md\:bui-pb-10{padding-bottom:var(--bui-space-10)}.md\:bui-pb-11{padding-bottom:var(--bui-space-11)}.md\:bui-pb-12{padding-bottom:var(--bui-space-12)}.md\:bui-pb-13{padding-bottom:var(--bui-space-13)}.md\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pb{padding-bottom:var(--pb-lg)}.lg\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.lg\:bui-pb-1{padding-bottom:var(--bui-space-1)}.lg\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.lg\:bui-pb-2{padding-bottom:var(--bui-space-2)}.lg\:bui-pb-3{padding-bottom:var(--bui-space-3)}.lg\:bui-pb-4{padding-bottom:var(--bui-space-4)}.lg\:bui-pb-5{padding-bottom:var(--bui-space-5)}.lg\:bui-pb-6{padding-bottom:var(--bui-space-6)}.lg\:bui-pb-7{padding-bottom:var(--bui-space-7)}.lg\:bui-pb-8{padding-bottom:var(--bui-space-8)}.lg\:bui-pb-9{padding-bottom:var(--bui-space-9)}.lg\:bui-pb-10{padding-bottom:var(--bui-space-10)}.lg\:bui-pb-11{padding-bottom:var(--bui-space-11)}.lg\:bui-pb-12{padding-bottom:var(--bui-space-12)}.lg\:bui-pb-13{padding-bottom:var(--bui-space-13)}.lg\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pb{padding-bottom:var(--pb-xl)}.xl\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.xl\:bui-pb-1{padding-bottom:var(--bui-space-1)}.xl\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.xl\:bui-pb-2{padding-bottom:var(--bui-space-2)}.xl\:bui-pb-3{padding-bottom:var(--bui-space-3)}.xl\:bui-pb-4{padding-bottom:var(--bui-space-4)}.xl\:bui-pb-5{padding-bottom:var(--bui-space-5)}.xl\:bui-pb-6{padding-bottom:var(--bui-space-6)}.xl\:bui-pb-7{padding-bottom:var(--bui-space-7)}.xl\:bui-pb-8{padding-bottom:var(--bui-space-8)}.xl\:bui-pb-9{padding-bottom:var(--bui-space-9)}.xl\:bui-pb-10{padding-bottom:var(--bui-space-10)}.xl\:bui-pb-11{padding-bottom:var(--bui-space-11)}.xl\:bui-pb-12{padding-bottom:var(--bui-space-12)}.xl\:bui-pb-13{padding-bottom:var(--bui-space-13)}.xl\:bui-pb-14{padding-bottom:var(--bui-space-14)}}.bui-py{padding-top:var(--py);padding-bottom:var(--py)}.bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-py{padding-top:var(--py-xs);padding-bottom:var(--py-xs)}.xs\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.xs\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.xs\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.xs\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.xs\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.xs\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.xs\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.xs\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.xs\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.xs\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.xs\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.xs\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.xs\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.xs\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.xs\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.xs\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-py{padding-top:var(--py-sm);padding-bottom:var(--py-sm)}.sm\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.sm\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.sm\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.sm\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.sm\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.sm\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.sm\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.sm\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.sm\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.sm\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.sm\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.sm\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.sm\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.sm\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.sm\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.sm\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-py{padding-top:var(--py-md);padding-bottom:var(--py-md)}.md\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.md\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.md\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.md\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.md\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.md\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.md\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.md\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.md\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.md\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.md\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.md\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.md\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.md\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.md\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.md\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-py{padding-top:var(--py-lg);padding-bottom:var(--py-lg)}.lg\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.lg\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.lg\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.lg\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.lg\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.lg\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.lg\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.lg\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.lg\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.lg\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.lg\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.lg\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.lg\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.lg\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.lg\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.lg\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-py{padding-top:var(--py-xl);padding-bottom:var(--py-xl)}.xl\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.xl\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.xl\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.xl\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.xl\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.xl\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.xl\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.xl\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.xl\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.xl\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.xl\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.xl\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.xl\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.xl\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.xl\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.xl\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}.bui-px{padding-left:var(--px);padding-right:var(--px)}.bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-px{padding-left:var(--px-xs);padding-right:var(--px-xs)}.xs\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.xs\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.xs\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.xs\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.xs\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.xs\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.xs\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.xs\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.xs\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.xs\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.xs\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.xs\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.xs\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.xs\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.xs\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.xs\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-px{padding-left:var(--px-sm);padding-right:var(--px-sm)}.sm\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.sm\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.sm\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.sm\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.sm\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.sm\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.sm\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.sm\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.sm\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.sm\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.sm\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.sm\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.sm\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.sm\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.sm\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.sm\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-px{padding-left:var(--px-md);padding-right:var(--px-md)}.md\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.md\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.md\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.md\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.md\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.md\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.md\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.md\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.md\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.md\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.md\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.md\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.md\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.md\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.md\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.md\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-px{padding-left:var(--px-lg);padding-right:var(--px-lg)}.lg\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.lg\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.lg\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.lg\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.lg\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.lg\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.lg\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.lg\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.lg\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.lg\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.lg\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.lg\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.lg\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.lg\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.lg\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.lg\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-px{padding-left:var(--px-xl);padding-right:var(--px-xl)}.xl\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.xl\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.xl\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.xl\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.xl\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.xl\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.xl\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.xl\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.xl\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.xl\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.xl\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.xl\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.xl\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.xl\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.xl\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.xl\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}.bui-m{margin:var(--m)}.bui-m-0\.5{margin:var(--bui-space-0_5)}.bui-m-1{margin:var(--bui-space-1)}.bui-m-1\.5{margin:var(--bui-space-1_5)}.bui-m-2{margin:var(--bui-space-2)}.bui-m-3{margin:var(--bui-space-3)}.bui-m-4{margin:var(--bui-space-4)}.bui-m-5{margin:var(--bui-space-5)}.bui-m-6{margin:var(--bui-space-6)}.bui-m-7{margin:var(--bui-space-7)}.bui-m-8{margin:var(--bui-space-8)}.bui-m-9{margin:var(--bui-space-9)}.bui-m-10{margin:var(--bui-space-10)}.bui-m-11{margin:var(--bui-space-11)}.bui-m-12{margin:var(--bui-space-12)}.bui-m-13{margin:var(--bui-space-13)}.bui-m-14{margin:var(--bui-space-14)}@media (width>=640px){.xs\:bui-m{margin:var(--p-xs)}.xs\:bui-m-0\.5{margin:var(--bui-space-0_5)}.xs\:bui-m-1{margin:var(--bui-space-1)}.xs\:bui-m-1\.5{margin:var(--bui-space-1_5)}.xs\:bui-m-2{margin:var(--bui-space-2)}.xs\:bui-m-3{margin:var(--bui-space-3)}.xs\:bui-m-4{margin:var(--bui-space-4)}.xs\:bui-m-5{margin:var(--bui-space-5)}.xs\:bui-m-6{margin:var(--bui-space-6)}.xs\:bui-m-7{margin:var(--bui-space-7)}.xs\:bui-m-8{margin:var(--bui-space-8)}.xs\:bui-m-9{margin:var(--bui-space-9)}.xs\:bui-m-10{margin:var(--bui-space-10)}.xs\:bui-m-11{margin:var(--bui-space-11)}.xs\:bui-m-12{margin:var(--bui-space-12)}.xs\:bui-m-13{margin:var(--bui-space-13)}.xs\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-m{margin:var(--p-sm)}.sm\:bui-m-0\.5{margin:var(--bui-space-0_5)}.sm\:bui-m-1{margin:var(--bui-space-1)}.sm\:bui-m-1\.5{margin:var(--bui-space-1_5)}.sm\:bui-m-2{margin:var(--bui-space-2)}.sm\:bui-m-3{margin:var(--bui-space-3)}.sm\:bui-m-4{margin:var(--bui-space-4)}.sm\:bui-m-5{margin:var(--bui-space-5)}.sm\:bui-m-6{margin:var(--bui-space-6)}.sm\:bui-m-7{margin:var(--bui-space-7)}.sm\:bui-m-8{margin:var(--bui-space-8)}.sm\:bui-m-9{margin:var(--bui-space-9)}.sm\:bui-m-10{margin:var(--bui-space-10)}.sm\:bui-m-11{margin:var(--bui-space-11)}.sm\:bui-m-12{margin:var(--bui-space-12)}.sm\:bui-m-13{margin:var(--bui-space-13)}.sm\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-m{margin:var(--p-md)}.md\:bui-m-0\.5{margin:var(--bui-space-0_5)}.md\:bui-m-1{margin:var(--bui-space-1)}.md\:bui-m-1\.5{margin:var(--bui-space-1_5)}.md\:bui-m-2{margin:var(--bui-space-2)}.md\:bui-m-3{margin:var(--bui-space-3)}.md\:bui-m-4{margin:var(--bui-space-4)}.md\:bui-m-5{margin:var(--bui-space-5)}.md\:bui-m-6{margin:var(--bui-space-6)}.md\:bui-m-7{margin:var(--bui-space-7)}.md\:bui-m-8{margin:var(--bui-space-8)}.md\:bui-m-9{margin:var(--bui-space-9)}.md\:bui-m-10{margin:var(--bui-space-10)}.md\:bui-m-11{margin:var(--bui-space-11)}.md\:bui-m-12{margin:var(--bui-space-12)}.md\:bui-m-13{margin:var(--bui-space-13)}.md\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-m{margin:var(--p-lg)}.lg\:bui-m-0\.5{margin:var(--bui-space-0_5)}.lg\:bui-m-1{margin:var(--bui-space-1)}.lg\:bui-m-1\.5{margin:var(--bui-space-1_5)}.lg\:bui-m-2{margin:var(--bui-space-2)}.lg\:bui-m-3{margin:var(--bui-space-3)}.lg\:bui-m-4{margin:var(--bui-space-4)}.lg\:bui-m-5{margin:var(--bui-space-5)}.lg\:bui-m-6{margin:var(--bui-space-6)}.lg\:bui-m-7{margin:var(--bui-space-7)}.lg\:bui-m-8{margin:var(--bui-space-8)}.lg\:bui-m-9{margin:var(--bui-space-9)}.lg\:bui-m-10{margin:var(--bui-space-10)}.lg\:bui-m-11{margin:var(--bui-space-11)}.lg\:bui-m-12{margin:var(--bui-space-12)}.lg\:bui-m-13{margin:var(--bui-space-13)}.lg\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-m{margin:var(--p-xl)}.xl\:bui-m-0\.5{margin:var(--bui-space-0_5)}.xl\:bui-m-1{margin:var(--bui-space-1)}.xl\:bui-m-1\.5{margin:var(--bui-space-1_5)}.xl\:bui-m-2{margin:var(--bui-space-2)}.xl\:bui-m-3{margin:var(--bui-space-3)}.xl\:bui-m-4{margin:var(--bui-space-4)}.xl\:bui-m-5{margin:var(--bui-space-5)}.xl\:bui-m-6{margin:var(--bui-space-6)}.xl\:bui-m-7{margin:var(--bui-space-7)}.xl\:bui-m-8{margin:var(--bui-space-8)}.xl\:bui-m-9{margin:var(--bui-space-9)}.xl\:bui-m-10{margin:var(--bui-space-10)}.xl\:bui-m-11{margin:var(--bui-space-11)}.xl\:bui-m-12{margin:var(--bui-space-12)}.xl\:bui-m-13{margin:var(--bui-space-13)}.xl\:bui-m-14{margin:var(--bui-space-14)}}.bui-ml{margin-left:var(--ml)}.bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.bui-ml-1{margin-left:var(--bui-space-1)}.bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.bui-ml-2{margin-left:var(--bui-space-2)}.bui-ml-3{margin-left:var(--bui-space-3)}.bui-ml-4{margin-left:var(--bui-space-4)}.bui-ml-5{margin-left:var(--bui-space-5)}.bui-ml-6{margin-left:var(--bui-space-6)}.bui-ml-7{margin-left:var(--bui-space-7)}.bui-ml-8{margin-left:var(--bui-space-8)}.bui-ml-9{margin-left:var(--bui-space-9)}.bui-ml-10{margin-left:var(--bui-space-10)}.bui-ml-11{margin-left:var(--bui-space-11)}.bui-ml-12{margin-left:var(--bui-space-12)}.bui-ml-13{margin-left:var(--bui-space-13)}.bui-ml-14{margin-left:var(--bui-space-14)}@media (width>=640px){.xs\:bui-ml{margin-left:var(--ml-xs)}.xs\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.xs\:bui-ml-1{margin-left:var(--bui-space-1)}.xs\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.xs\:bui-ml-2{margin-left:var(--bui-space-2)}.xs\:bui-ml-3{margin-left:var(--bui-space-3)}.xs\:bui-ml-4{margin-left:var(--bui-space-4)}.xs\:bui-ml-5{margin-left:var(--bui-space-5)}.xs\:bui-ml-6{margin-left:var(--bui-space-6)}.xs\:bui-ml-7{margin-left:var(--bui-space-7)}.xs\:bui-ml-8{margin-left:var(--bui-space-8)}.xs\:bui-ml-9{margin-left:var(--bui-space-9)}.xs\:bui-ml-10{margin-left:var(--bui-space-10)}.xs\:bui-ml-11{margin-left:var(--bui-space-11)}.xs\:bui-ml-12{margin-left:var(--bui-space-12)}.xs\:bui-ml-13{margin-left:var(--bui-space-13)}.xs\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-ml{margin-left:var(--ml-sm)}.sm\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.sm\:bui-ml-1{margin-left:var(--bui-space-1)}.sm\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.sm\:bui-ml-2{margin-left:var(--bui-space-2)}.sm\:bui-ml-3{margin-left:var(--bui-space-3)}.sm\:bui-ml-4{margin-left:var(--bui-space-4)}.sm\:bui-ml-5{margin-left:var(--bui-space-5)}.sm\:bui-ml-6{margin-left:var(--bui-space-6)}.sm\:bui-ml-7{margin-left:var(--bui-space-7)}.sm\:bui-ml-8{margin-left:var(--bui-space-8)}.sm\:bui-ml-9{margin-left:var(--bui-space-9)}.sm\:bui-ml-10{margin-left:var(--bui-space-10)}.sm\:bui-ml-11{margin-left:var(--bui-space-11)}.sm\:bui-ml-12{margin-left:var(--bui-space-12)}.sm\:bui-ml-13{margin-left:var(--bui-space-13)}.sm\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-ml{margin-left:var(--ml-md)}.md\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.md\:bui-ml-1{margin-left:var(--bui-space-1)}.md\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.md\:bui-ml-2{margin-left:var(--bui-space-2)}.md\:bui-ml-3{margin-left:var(--bui-space-3)}.md\:bui-ml-4{margin-left:var(--bui-space-4)}.md\:bui-ml-5{margin-left:var(--bui-space-5)}.md\:bui-ml-6{margin-left:var(--bui-space-6)}.md\:bui-ml-7{margin-left:var(--bui-space-7)}.md\:bui-ml-8{margin-left:var(--bui-space-8)}.md\:bui-ml-9{margin-left:var(--bui-space-9)}.md\:bui-ml-10{margin-left:var(--bui-space-10)}.md\:bui-ml-11{margin-left:var(--bui-space-11)}.md\:bui-ml-12{margin-left:var(--bui-space-12)}.md\:bui-ml-13{margin-left:var(--bui-space-13)}.md\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-ml{margin-left:var(--ml-lg)}.lg\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.lg\:bui-ml-1{margin-left:var(--bui-space-1)}.lg\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.lg\:bui-ml-2{margin-left:var(--bui-space-2)}.lg\:bui-ml-3{margin-left:var(--bui-space-3)}.lg\:bui-ml-4{margin-left:var(--bui-space-4)}.lg\:bui-ml-5{margin-left:var(--bui-space-5)}.lg\:bui-ml-6{margin-left:var(--bui-space-6)}.lg\:bui-ml-7{margin-left:var(--bui-space-7)}.lg\:bui-ml-8{margin-left:var(--bui-space-8)}.lg\:bui-ml-9{margin-left:var(--bui-space-9)}.lg\:bui-ml-10{margin-left:var(--bui-space-10)}.lg\:bui-ml-11{margin-left:var(--bui-space-11)}.lg\:bui-ml-12{margin-left:var(--bui-space-12)}.lg\:bui-ml-13{margin-left:var(--bui-space-13)}.lg\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-ml{margin-left:var(--ml-xl)}.xl\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.xl\:bui-ml-1{margin-left:var(--bui-space-1)}.xl\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.xl\:bui-ml-2{margin-left:var(--bui-space-2)}.xl\:bui-ml-3{margin-left:var(--bui-space-3)}.xl\:bui-ml-4{margin-left:var(--bui-space-4)}.xl\:bui-ml-5{margin-left:var(--bui-space-5)}.xl\:bui-ml-6{margin-left:var(--bui-space-6)}.xl\:bui-ml-7{margin-left:var(--bui-space-7)}.xl\:bui-ml-8{margin-left:var(--bui-space-8)}.xl\:bui-ml-9{margin-left:var(--bui-space-9)}.xl\:bui-ml-10{margin-left:var(--bui-space-10)}.xl\:bui-ml-11{margin-left:var(--bui-space-11)}.xl\:bui-ml-12{margin-left:var(--bui-space-12)}.xl\:bui-ml-13{margin-left:var(--bui-space-13)}.xl\:bui-ml-14{margin-left:var(--bui-space-14)}}.bui-mr{margin-right:var(--mr)}.bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.bui-mr-1{margin-right:var(--bui-space-1)}.bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.bui-mr-2{margin-right:var(--bui-space-2)}.bui-mr-3{margin-right:var(--bui-space-3)}.bui-mr-4{margin-right:var(--bui-space-4)}.bui-mr-5{margin-right:var(--bui-space-5)}.bui-mr-6{margin-right:var(--bui-space-6)}.bui-mr-7{margin-right:var(--bui-space-7)}.bui-mr-8{margin-right:var(--bui-space-8)}.bui-mr-9{margin-right:var(--bui-space-9)}.bui-mr-10{margin-right:var(--bui-space-10)}.bui-mr-11{margin-right:var(--bui-space-11)}.bui-mr-12{margin-right:var(--bui-space-12)}.bui-mr-13{margin-right:var(--bui-space-13)}.bui-mr-14{margin-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mr{margin-right:var(--mr-xs)}.xs\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.xs\:bui-mr-1{margin-right:var(--bui-space-1)}.xs\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.xs\:bui-mr-2{margin-right:var(--bui-space-2)}.xs\:bui-mr-3{margin-right:var(--bui-space-3)}.xs\:bui-mr-4{margin-right:var(--bui-space-4)}.xs\:bui-mr-5{margin-right:var(--bui-space-5)}.xs\:bui-mr-6{margin-right:var(--bui-space-6)}.xs\:bui-mr-7{margin-right:var(--bui-space-7)}.xs\:bui-mr-8{margin-right:var(--bui-space-8)}.xs\:bui-mr-9{margin-right:var(--bui-space-9)}.xs\:bui-mr-10{margin-right:var(--bui-space-10)}.xs\:bui-mr-11{margin-right:var(--bui-space-11)}.xs\:bui-mr-12{margin-right:var(--bui-space-12)}.xs\:bui-mr-13{margin-right:var(--bui-space-13)}.xs\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mr{margin-right:var(--mr-sm)}.sm\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.sm\:bui-mr-1{margin-right:var(--bui-space-1)}.sm\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.sm\:bui-mr-2{margin-right:var(--bui-space-2)}.sm\:bui-mr-3{margin-right:var(--bui-space-3)}.sm\:bui-mr-4{margin-right:var(--bui-space-4)}.sm\:bui-mr-5{margin-right:var(--bui-space-5)}.sm\:bui-mr-6{margin-right:var(--bui-space-6)}.sm\:bui-mr-7{margin-right:var(--bui-space-7)}.sm\:bui-mr-8{margin-right:var(--bui-space-8)}.sm\:bui-mr-9{margin-right:var(--bui-space-9)}.sm\:bui-mr-10{margin-right:var(--bui-space-10)}.sm\:bui-mr-11{margin-right:var(--bui-space-11)}.sm\:bui-mr-12{margin-right:var(--bui-space-12)}.sm\:bui-mr-13{margin-right:var(--bui-space-13)}.sm\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mr{margin-right:var(--mr-md)}.md\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.md\:bui-mr-1{margin-right:var(--bui-space-1)}.md\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.md\:bui-mr-2{margin-right:var(--bui-space-2)}.md\:bui-mr-3{margin-right:var(--bui-space-3)}.md\:bui-mr-4{margin-right:var(--bui-space-4)}.md\:bui-mr-5{margin-right:var(--bui-space-5)}.md\:bui-mr-6{margin-right:var(--bui-space-6)}.md\:bui-mr-7{margin-right:var(--bui-space-7)}.md\:bui-mr-8{margin-right:var(--bui-space-8)}.md\:bui-mr-9{margin-right:var(--bui-space-9)}.md\:bui-mr-10{margin-right:var(--bui-space-10)}.md\:bui-mr-11{margin-right:var(--bui-space-11)}.md\:bui-mr-12{margin-right:var(--bui-space-12)}.md\:bui-mr-13{margin-right:var(--bui-space-13)}.md\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mr{margin-right:var(--mr-lg)}.lg\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.lg\:bui-mr-1{margin-right:var(--bui-space-1)}.lg\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.lg\:bui-mr-2{margin-right:var(--bui-space-2)}.lg\:bui-mr-3{margin-right:var(--bui-space-3)}.lg\:bui-mr-4{margin-right:var(--bui-space-4)}.lg\:bui-mr-5{margin-right:var(--bui-space-5)}.lg\:bui-mr-6{margin-right:var(--bui-space-6)}.lg\:bui-mr-7{margin-right:var(--bui-space-7)}.lg\:bui-mr-8{margin-right:var(--bui-space-8)}.lg\:bui-mr-9{margin-right:var(--bui-space-9)}.lg\:bui-mr-10{margin-right:var(--bui-space-10)}.lg\:bui-mr-11{margin-right:var(--bui-space-11)}.lg\:bui-mr-12{margin-right:var(--bui-space-12)}.lg\:bui-mr-13{margin-right:var(--bui-space-13)}.lg\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mr{margin-right:var(--mr-xl)}.xl\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.xl\:bui-mr-1{margin-right:var(--bui-space-1)}.xl\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.xl\:bui-mr-2{margin-right:var(--bui-space-2)}.xl\:bui-mr-3{margin-right:var(--bui-space-3)}.xl\:bui-mr-4{margin-right:var(--bui-space-4)}.xl\:bui-mr-5{margin-right:var(--bui-space-5)}.xl\:bui-mr-6{margin-right:var(--bui-space-6)}.xl\:bui-mr-7{margin-right:var(--bui-space-7)}.xl\:bui-mr-8{margin-right:var(--bui-space-8)}.xl\:bui-mr-9{margin-right:var(--bui-space-9)}.xl\:bui-mr-10{margin-right:var(--bui-space-10)}.xl\:bui-mr-11{margin-right:var(--bui-space-11)}.xl\:bui-mr-12{margin-right:var(--bui-space-12)}.xl\:bui-mr-13{margin-right:var(--bui-space-13)}.xl\:bui-mr-14{margin-right:var(--bui-space-14)}}.bui-mt{margin-top:var(--mt)}.bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.bui-mt-1{margin-top:var(--bui-space-1)}.bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.bui-mt-2{margin-top:var(--bui-space-2)}.bui-mt-3{margin-top:var(--bui-space-3)}.bui-mt-4{margin-top:var(--bui-space-4)}.bui-mt-5{margin-top:var(--bui-space-5)}.bui-mt-6{margin-top:var(--bui-space-6)}.bui-mt-7{margin-top:var(--bui-space-7)}.bui-mt-8{margin-top:var(--bui-space-8)}.bui-mt-9{margin-top:var(--bui-space-9)}.bui-mt-10{margin-top:var(--bui-space-10)}.bui-mt-11{margin-top:var(--bui-space-11)}.bui-mt-12{margin-top:var(--bui-space-12)}.bui-mt-13{margin-top:var(--bui-space-13)}.bui-mt-14{margin-top:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mt{margin-top:var(--mt-xs)}.xs\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.xs\:bui-mt-1{margin-top:var(--bui-space-1)}.xs\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.xs\:bui-mt-2{margin-top:var(--bui-space-2)}.xs\:bui-mt-3{margin-top:var(--bui-space-3)}.xs\:bui-mt-4{margin-top:var(--bui-space-4)}.xs\:bui-mt-5{margin-top:var(--bui-space-5)}.xs\:bui-mt-6{margin-top:var(--bui-space-6)}.xs\:bui-mt-7{margin-top:var(--bui-space-7)}.xs\:bui-mt-8{margin-top:var(--bui-space-8)}.xs\:bui-mt-9{margin-top:var(--bui-space-9)}.xs\:bui-mt-10{margin-top:var(--bui-space-10)}.xs\:bui-mt-11{margin-top:var(--bui-space-11)}.xs\:bui-mt-12{margin-top:var(--bui-space-12)}.xs\:bui-mt-13{margin-top:var(--bui-space-13)}.xs\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mt{margin-top:var(--mt-sm)}.sm\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.sm\:bui-mt-1{margin-top:var(--bui-space-1)}.sm\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.sm\:bui-mt-2{margin-top:var(--bui-space-2)}.sm\:bui-mt-3{margin-top:var(--bui-space-3)}.sm\:bui-mt-4{margin-top:var(--bui-space-4)}.sm\:bui-mt-5{margin-top:var(--bui-space-5)}.sm\:bui-mt-6{margin-top:var(--bui-space-6)}.sm\:bui-mt-7{margin-top:var(--bui-space-7)}.sm\:bui-mt-8{margin-top:var(--bui-space-8)}.sm\:bui-mt-9{margin-top:var(--bui-space-9)}.sm\:bui-mt-10{margin-top:var(--bui-space-10)}.sm\:bui-mt-11{margin-top:var(--bui-space-11)}.sm\:bui-mt-12{margin-top:var(--bui-space-12)}.sm\:bui-mt-13{margin-top:var(--bui-space-13)}.sm\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mt{margin-top:var(--mt-md)}.md\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.md\:bui-mt-1{margin-top:var(--bui-space-1)}.md\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.md\:bui-mt-2{margin-top:var(--bui-space-2)}.md\:bui-mt-3{margin-top:var(--bui-space-3)}.md\:bui-mt-4{margin-top:var(--bui-space-4)}.md\:bui-mt-5{margin-top:var(--bui-space-5)}.md\:bui-mt-6{margin-top:var(--bui-space-6)}.md\:bui-mt-7{margin-top:var(--bui-space-7)}.md\:bui-mt-8{margin-top:var(--bui-space-8)}.md\:bui-mt-9{margin-top:var(--bui-space-9)}.md\:bui-mt-10{margin-top:var(--bui-space-10)}.md\:bui-mt-11{margin-top:var(--bui-space-11)}.md\:bui-mt-12{margin-top:var(--bui-space-12)}.md\:bui-mt-13{margin-top:var(--bui-space-13)}.md\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mt{margin-top:var(--mt-lg)}.lg\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.lg\:bui-mt-1{margin-top:var(--bui-space-1)}.lg\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.lg\:bui-mt-2{margin-top:var(--bui-space-2)}.lg\:bui-mt-3{margin-top:var(--bui-space-3)}.lg\:bui-mt-4{margin-top:var(--bui-space-4)}.lg\:bui-mt-5{margin-top:var(--bui-space-5)}.lg\:bui-mt-6{margin-top:var(--bui-space-6)}.lg\:bui-mt-7{margin-top:var(--bui-space-7)}.lg\:bui-mt-8{margin-top:var(--bui-space-8)}.lg\:bui-mt-9{margin-top:var(--bui-space-9)}.lg\:bui-mt-10{margin-top:var(--bui-space-10)}.lg\:bui-mt-11{margin-top:var(--bui-space-11)}.lg\:bui-mt-12{margin-top:var(--bui-space-12)}.lg\:bui-mt-13{margin-top:var(--bui-space-13)}.lg\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mt{margin-top:var(--mt-xl)}.xl\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.xl\:bui-mt-1{margin-top:var(--bui-space-1)}.xl\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.xl\:bui-mt-2{margin-top:var(--bui-space-2)}.xl\:bui-mt-3{margin-top:var(--bui-space-3)}.xl\:bui-mt-4{margin-top:var(--bui-space-4)}.xl\:bui-mt-5{margin-top:var(--bui-space-5)}.xl\:bui-mt-6{margin-top:var(--bui-space-6)}.xl\:bui-mt-7{margin-top:var(--bui-space-7)}.xl\:bui-mt-8{margin-top:var(--bui-space-8)}.xl\:bui-mt-9{margin-top:var(--bui-space-9)}.xl\:bui-mt-10{margin-top:var(--bui-space-10)}.xl\:bui-mt-11{margin-top:var(--bui-space-11)}.xl\:bui-mt-12{margin-top:var(--bui-space-12)}.xl\:bui-mt-13{margin-top:var(--bui-space-13)}.xl\:bui-mt-14{margin-top:var(--bui-space-14)}}.bui-mb{margin-bottom:var(--mb)}.bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.bui-mb-1{margin-bottom:var(--bui-space-1)}.bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.bui-mb-2{margin-bottom:var(--bui-space-2)}.bui-mb-3{margin-bottom:var(--bui-space-3)}.bui-mb-4{margin-bottom:var(--bui-space-4)}.bui-mb-5{margin-bottom:var(--bui-space-5)}.bui-mb-6{margin-bottom:var(--bui-space-6)}.bui-mb-7{margin-bottom:var(--bui-space-7)}.bui-mb-8{margin-bottom:var(--bui-space-8)}.bui-mb-9{margin-bottom:var(--bui-space-9)}.bui-mb-10{margin-bottom:var(--bui-space-10)}.bui-mb-11{margin-bottom:var(--bui-space-11)}.bui-mb-12{margin-bottom:var(--bui-space-12)}.bui-mb-13{margin-bottom:var(--bui-space-13)}.bui-mb-14{margin-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mb{margin-bottom:var(--mb-xs)}.xs\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.xs\:bui-mb-1{margin-bottom:var(--bui-space-1)}.xs\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.xs\:bui-mb-2{margin-bottom:var(--bui-space-2)}.xs\:bui-mb-3{margin-bottom:var(--bui-space-3)}.xs\:bui-mb-4{margin-bottom:var(--bui-space-4)}.xs\:bui-mb-5{margin-bottom:var(--bui-space-5)}.xs\:bui-mb-6{margin-bottom:var(--bui-space-6)}.xs\:bui-mb-7{margin-bottom:var(--bui-space-7)}.xs\:bui-mb-8{margin-bottom:var(--bui-space-8)}.xs\:bui-mb-9{margin-bottom:var(--bui-space-9)}.xs\:bui-mb-10{margin-bottom:var(--bui-space-10)}.xs\:bui-mb-11{margin-bottom:var(--bui-space-11)}.xs\:bui-mb-12{margin-bottom:var(--bui-space-12)}.xs\:bui-mb-13{margin-bottom:var(--bui-space-13)}.xs\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mb{margin-bottom:var(--mb-sm)}.sm\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.sm\:bui-mb-1{margin-bottom:var(--bui-space-1)}.sm\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.sm\:bui-mb-2{margin-bottom:var(--bui-space-2)}.sm\:bui-mb-3{margin-bottom:var(--bui-space-3)}.sm\:bui-mb-4{margin-bottom:var(--bui-space-4)}.sm\:bui-mb-5{margin-bottom:var(--bui-space-5)}.sm\:bui-mb-6{margin-bottom:var(--bui-space-6)}.sm\:bui-mb-7{margin-bottom:var(--bui-space-7)}.sm\:bui-mb-8{margin-bottom:var(--bui-space-8)}.sm\:bui-mb-9{margin-bottom:var(--bui-space-9)}.sm\:bui-mb-10{margin-bottom:var(--bui-space-10)}.sm\:bui-mb-11{margin-bottom:var(--bui-space-11)}.sm\:bui-mb-12{margin-bottom:var(--bui-space-12)}.sm\:bui-mb-13{margin-bottom:var(--bui-space-13)}.sm\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mb{margin-bottom:var(--mb-md)}.md\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.md\:bui-mb-1{margin-bottom:var(--bui-space-1)}.md\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.md\:bui-mb-2{margin-bottom:var(--bui-space-2)}.md\:bui-mb-3{margin-bottom:var(--bui-space-3)}.md\:bui-mb-4{margin-bottom:var(--bui-space-4)}.md\:bui-mb-5{margin-bottom:var(--bui-space-5)}.md\:bui-mb-6{margin-bottom:var(--bui-space-6)}.md\:bui-mb-7{margin-bottom:var(--bui-space-7)}.md\:bui-mb-8{margin-bottom:var(--bui-space-8)}.md\:bui-mb-9{margin-bottom:var(--bui-space-9)}.md\:bui-mb-10{margin-bottom:var(--bui-space-10)}.md\:bui-mb-11{margin-bottom:var(--bui-space-11)}.md\:bui-mb-12{margin-bottom:var(--bui-space-12)}.md\:bui-mb-13{margin-bottom:var(--bui-space-13)}.md\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mb{margin-bottom:var(--mb-lg)}.lg\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.lg\:bui-mb-1{margin-bottom:var(--bui-space-1)}.lg\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.lg\:bui-mb-2{margin-bottom:var(--bui-space-2)}.lg\:bui-mb-3{margin-bottom:var(--bui-space-3)}.lg\:bui-mb-4{margin-bottom:var(--bui-space-4)}.lg\:bui-mb-5{margin-bottom:var(--bui-space-5)}.lg\:bui-mb-6{margin-bottom:var(--bui-space-6)}.lg\:bui-mb-7{margin-bottom:var(--bui-space-7)}.lg\:bui-mb-8{margin-bottom:var(--bui-space-8)}.lg\:bui-mb-9{margin-bottom:var(--bui-space-9)}.lg\:bui-mb-10{margin-bottom:var(--bui-space-10)}.lg\:bui-mb-11{margin-bottom:var(--bui-space-11)}.lg\:bui-mb-12{margin-bottom:var(--bui-space-12)}.lg\:bui-mb-13{margin-bottom:var(--bui-space-13)}.lg\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mb{margin-bottom:var(--mb-xl)}.xl\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.xl\:bui-mb-1{margin-bottom:var(--bui-space-1)}.xl\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.xl\:bui-mb-2{margin-bottom:var(--bui-space-2)}.xl\:bui-mb-3{margin-bottom:var(--bui-space-3)}.xl\:bui-mb-4{margin-bottom:var(--bui-space-4)}.xl\:bui-mb-5{margin-bottom:var(--bui-space-5)}.xl\:bui-mb-6{margin-bottom:var(--bui-space-6)}.xl\:bui-mb-7{margin-bottom:var(--bui-space-7)}.xl\:bui-mb-8{margin-bottom:var(--bui-space-8)}.xl\:bui-mb-9{margin-bottom:var(--bui-space-9)}.xl\:bui-mb-10{margin-bottom:var(--bui-space-10)}.xl\:bui-mb-11{margin-bottom:var(--bui-space-11)}.xl\:bui-mb-12{margin-bottom:var(--bui-space-12)}.xl\:bui-mb-13{margin-bottom:var(--bui-space-13)}.xl\:bui-mb-14{margin-bottom:var(--bui-space-14)}}.bui-my{margin-top:var(--my);margin-bottom:var(--my)}.bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-my{margin-top:var(--my-xs);margin-bottom:var(--my-xs)}.xs\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.xs\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.xs\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.xs\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.xs\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.xs\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.xs\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.xs\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.xs\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.xs\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.xs\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.xs\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.xs\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.xs\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.xs\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.xs\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-my{margin-top:var(--my-sm);margin-bottom:var(--my-sm)}.sm\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.sm\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.sm\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.sm\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.sm\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.sm\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.sm\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.sm\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.sm\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.sm\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.sm\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.sm\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.sm\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.sm\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.sm\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.sm\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-my{margin-top:var(--my-md);margin-bottom:var(--my-md)}.md\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.md\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.md\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.md\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.md\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.md\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.md\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.md\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.md\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.md\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.md\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.md\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.md\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.md\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.md\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.md\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-my{margin-top:var(--my-lg);margin-bottom:var(--my-lg)}.lg\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.lg\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.lg\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.lg\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.lg\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.lg\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.lg\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.lg\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.lg\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.lg\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.lg\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.lg\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.lg\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.lg\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.lg\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.lg\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-my{margin-top:var(--my-xl);margin-bottom:var(--my-xl)}.xl\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.xl\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.xl\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.xl\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.xl\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.xl\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.xl\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.xl\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.xl\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.xl\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.xl\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.xl\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.xl\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.xl\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.xl\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.xl\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}.bui-mx{margin-left:var(--mx);margin-right:var(--mx)}.bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mx{margin-left:var(--mx-xs);margin-right:var(--mx-xs)}.xs\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.xs\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.xs\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.xs\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.xs\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.xs\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.xs\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.xs\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.xs\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.xs\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.xs\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.xs\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.xs\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.xs\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.xs\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.xs\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mx{margin-left:var(--mx-sm);margin-right:var(--mx-sm)}.sm\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.sm\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.sm\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.sm\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.sm\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.sm\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.sm\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.sm\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.sm\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.sm\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.sm\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.sm\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.sm\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.sm\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.sm\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.sm\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mx{margin-left:var(--mx-md);margin-right:var(--mx-md)}.md\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.md\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.md\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.md\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.md\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.md\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.md\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.md\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.md\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.md\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.md\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.md\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.md\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.md\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.md\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.md\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mx{margin-left:var(--mx-lg);margin-right:var(--mx-lg)}.lg\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.lg\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.lg\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.lg\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.lg\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.lg\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.lg\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.lg\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.lg\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.lg\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.lg\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.lg\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.lg\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.lg\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.lg\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.lg\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mx{margin-left:var(--mx-xl);margin-right:var(--mx-xl)}.xl\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.xl\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.xl\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.xl\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.xl\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.xl\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.xl\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.xl\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.xl\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.xl\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.xl\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.xl\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.xl\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.xl\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.xl\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.xl\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}.bui-display-none{display:none}.bui-display-inline{display:inline}.bui-display-inline-block{display:inline-block}.bui-display-block{display:block}@media (width>=640px){.xs\:bui-display-none{display:none}.xs\:bui-display-inline{display:inline}.xs\:bui-display-inline-block{display:inline-block}.xs\:bui-display-block{display:block}}@media (width>=768px){.sm\:bui-display-none{display:none}.sm\:bui-display-inline{display:inline}.sm\:bui-display-inline-block{display:inline-block}.sm\:bui-display-block{display:block}}@media (width>=1024px){.md\:bui-display-none{display:none}.md\:bui-display-inline{display:inline}.md\:bui-display-inline-block{display:inline-block}.md\:bui-display-block{display:block}}@media (width>=1280px){.lg\:bui-display-none{display:none}.lg\:bui-display-inline{display:inline}.lg\:bui-display-inline-block{display:inline-block}.lg\:bui-display-block{display:block}}@media (width>=1536px){.xl\:bui-display-none{display:none}.xl\:bui-display-inline{display:inline}.xl\:bui-display-inline-block{display:inline-block}.xl\:bui-display-block{display:block}}.bui-w{width:var(--width)}.bui-min-w{min-width:var(--min-width)}.bui-max-w{max-width:var(--max-width)}@media (width>=640px){.xs\:bui-w{width:var(--width)}.xs\:bui-min-w{min-width:var(--min-width)}.xs\:bui-max-w{max-width:var(--max-width)}}@media (width>=768px){.sm\:bui-w{width:var(--width)}.sm\:bui-min-w{min-width:var(--min-width)}.sm\:bui-max-w{max-width:var(--max-width)}}@media (width>=1024px){.md\:bui-w{width:var(--width)}.md\:bui-min-w{min-width:var(--min-width)}.md\:bui-max-w{max-width:var(--max-width)}}@media (width>=1280px){.lg\:bui-w{width:var(--width)}.lg\:bui-min-w{min-width:var(--min-width)}.lg\:bui-max-w{max-width:var(--max-width)}}@media (width>=1536px){.xl\:bui-w{width:var(--width)}.xl\:bui-min-w{min-width:var(--min-width)}.xl\:bui-max-w{max-width:var(--max-width)}}.bui-h{height:var(--height)}.bui-min-h{min-height:var(--min-height)}.bui-max-h{max-height:var(--max-height)}@media (width>=640px){.xs\:bui-h{height:var(--height)}.xs\:bui-min-h{min-height:var(--min-height)}.xs\:bui-max-h{max-height:var(--max-height)}}@media (width>=768px){.sm\:bui-h{height:var(--height)}.sm\:bui-min-h{min-height:var(--min-height)}.sm\:bui-max-h{max-height:var(--max-height)}}@media (width>=1024px){.md\:bui-h{height:var(--height)}.md\:bui-min-h{min-height:var(--min-height)}.md\:bui-max-h{max-height:var(--max-height)}}@media (width>=1280px){.lg\:bui-h{height:var(--height)}.lg\:bui-min-h{min-height:var(--min-height)}.lg\:bui-max-h{max-height:var(--max-height)}}@media (width>=1536px){.xl\:bui-h{height:var(--height)}.xl\:bui-min-h{min-height:var(--min-height)}.xl\:bui-max-h{max-height:var(--max-height)}}.bui-position-absolute{position:absolute}.bui-position-fixed{position:fixed}.bui-position-sticky{position:sticky}.bui-position-relative{position:relative}.bui-position-static{position:static}@media (width>=640px){.xs\:bui-position-absolute{position:absolute}.xs\:bui-position-fixed{position:fixed}.xs\:bui-position-sticky{position:sticky}.xs\:bui-position-relative{position:relative}.xs\:bui-position-static{position:static}}@media (width>=768px){.sm\:bui-position-absolute{position:absolute}.sm\:bui-position-fixed{position:fixed}.sm\:bui-position-sticky{position:sticky}.sm\:bui-position-relative{position:relative}.sm\:bui-position-static{position:static}}@media (width>=1024px){.md\:bui-position-absolute{position:absolute}.md\:bui-position-fixed{position:fixed}.md\:bui-position-sticky{position:sticky}.md\:bui-position-relative{position:relative}.md\:bui-position-static{position:static}}@media (width>=1280px){.lg\:bui-position-absolute{position:absolute}.lg\:bui-position-fixed{position:fixed}.lg\:bui-position-sticky{position:sticky}.lg\:bui-position-relative{position:relative}.lg\:bui-position-static{position:static}}@media (width>=1536px){.xl\:bui-position-absolute{position:absolute}.xl\:bui-position-fixed{position:fixed}.xl\:bui-position-sticky{position:sticky}.xl\:bui-position-relative{position:relative}.xl\:bui-position-static{position:static}}.bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.bui-col-span-1{grid-column:span 1/span 1}.bui-col-span-2{grid-column:span 2/span 2}.bui-col-span-3{grid-column:span 3/span 3}.bui-col-span-4{grid-column:span 4/span 4}.bui-col-span-5{grid-column:span 5/span 5}.bui-col-span-6{grid-column:span 6/span 6}.bui-col-span-7{grid-column:span 7/span 7}.bui-col-span-8{grid-column:span 8/span 8}.bui-col-span-9{grid-column:span 9/span 9}.bui-col-span-10{grid-column:span 10/span 10}.bui-col-span-11{grid-column:span 11/span 11}.bui-col-span-12{grid-column:span 12/span 12}.bui-col-span-auto{grid-column:span auto/span auto}.bui-col-start-1{grid-column-start:1}.bui-col-start-2{grid-column-start:2}.bui-col-start-3{grid-column-start:3}.bui-col-start-4{grid-column-start:4}.bui-col-start-5{grid-column-start:5}.bui-col-start-6{grid-column-start:6}.bui-col-start-7{grid-column-start:7}.bui-col-start-8{grid-column-start:8}.bui-col-start-9{grid-column-start:9}.bui-col-start-10{grid-column-start:10}.bui-col-start-11{grid-column-start:11}.bui-col-start-12{grid-column-start:12}.bui-col-start-13{grid-column-start:13}.bui-col-start-auto{grid-column-start:auto}.bui-col-end-1{grid-column-end:1}.bui-col-end-2{grid-column-end:2}.bui-col-end-3{grid-column-end:3}.bui-col-end-4{grid-column-end:4}.bui-col-end-5{grid-column-end:5}.bui-col-end-6{grid-column-end:6}.bui-col-end-7{grid-column-end:7}.bui-col-end-8{grid-column-end:8}.bui-col-end-9{grid-column-end:9}.bui-col-end-10{grid-column-end:10}.bui-col-end-11{grid-column-end:11}.bui-col-end-12{grid-column-end:12}.bui-col-end-13{grid-column-end:13}.bui-col-end-auto{grid-column-end:auto}.bui-row-span-1{grid-row:span 1/span 1}.bui-row-span-2{grid-row:span 2/span 2}.bui-row-span-3{grid-row:span 3/span 3}.bui-row-span-4{grid-row:span 4/span 4}.bui-row-span-5{grid-row:span 5/span 5}.bui-row-span-6{grid-row:span 6/span 6}.bui-row-span-7{grid-row:span 7/span 7}.bui-row-span-8{grid-row:span 8/span 8}.bui-row-span-9{grid-row:span 9/span 9}.bui-row-span-10{grid-row:span 10/span 10}.bui-row-span-11{grid-row:span 11/span 11}.bui-row-span-12{grid-row:span 12/span 12}.bui-row-span-auto{grid-row:span auto/span auto}@media (width>=640px){.xs\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xs\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xs\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xs\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xs\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xs\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xs\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xs\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xs\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xs\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xs\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xs\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xs\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.xs\:bui-col-span-1{grid-column:span 1/span 1}.xs\:bui-col-span-2{grid-column:span 2/span 2}.xs\:bui-col-span-3{grid-column:span 3/span 3}.xs\:bui-col-span-4{grid-column:span 4/span 4}.xs\:bui-col-span-5{grid-column:span 5/span 5}.xs\:bui-col-span-6{grid-column:span 6/span 6}.xs\:bui-col-span-7{grid-column:span 7/span 7}.xs\:bui-col-span-8{grid-column:span 8/span 8}.xs\:bui-col-span-9{grid-column:span 9/span 9}.xs\:bui-col-span-10{grid-column:span 10/span 10}.xs\:bui-col-span-11{grid-column:span 11/span 11}.xs\:bui-col-span-12{grid-column:span 12/span 12}.xs\:bui-col-span-auto{grid-column:span auto/span auto}.xs\:bui-col-start-1{grid-column-start:1}.xs\:bui-col-start-2{grid-column-start:2}.xs\:bui-col-start-3{grid-column-start:3}.xs\:bui-col-start-4{grid-column-start:4}.xs\:bui-col-start-5{grid-column-start:5}.xs\:bui-col-start-6{grid-column-start:6}.xs\:bui-col-start-7{grid-column-start:7}.xs\:bui-col-start-8{grid-column-start:8}.xs\:bui-col-start-9{grid-column-start:9}.xs\:bui-col-start-10{grid-column-start:10}.xs\:bui-col-start-11{grid-column-start:11}.xs\:bui-col-start-12{grid-column-start:12}.xs\:bui-col-start-13{grid-column-start:13}.xs\:bui-col-start-auto{grid-column-start:auto}.xs\:bui-col-end-1{grid-column-end:1}.xs\:bui-col-end-2{grid-column-end:2}.xs\:bui-col-end-3{grid-column-end:3}.xs\:bui-col-end-4{grid-column-end:4}.xs\:bui-col-end-5{grid-column-end:5}.xs\:bui-col-end-6{grid-column-end:6}.xs\:bui-col-end-7{grid-column-end:7}.xs\:bui-col-end-8{grid-column-end:8}.xs\:bui-col-end-9{grid-column-end:9}.xs\:bui-col-end-10{grid-column-end:10}.xs\:bui-col-end-11{grid-column-end:11}.xs\:bui-col-end-12{grid-column-end:12}.xs\:bui-col-end-13{grid-column-end:13}.xs\:bui-col-end-auto{grid-column-end:auto}.xs\:bui-row-span-1{grid-row:span 1/span 1}.xs\:bui-row-span-2{grid-row:span 2/span 2}.xs\:bui-row-span-3{grid-row:span 3/span 3}.xs\:bui-row-span-4{grid-row:span 4/span 4}.xs\:bui-row-span-5{grid-row:span 5/span 5}.xs\:bui-row-span-6{grid-row:span 6/span 6}.xs\:bui-row-span-7{grid-row:span 7/span 7}.xs\:bui-row-span-8{grid-row:span 8/span 8}.xs\:bui-row-span-9{grid-row:span 9/span 9}.xs\:bui-row-span-10{grid-row:span 10/span 10}.xs\:bui-row-span-11{grid-row:span 11/span 11}.xs\:bui-row-span-12{grid-row:span 12/span 12}.xs\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=768px){.sm\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.sm\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.sm\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.sm\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.sm\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.sm\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.sm\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.sm\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.sm\:bui-col-span-1{grid-column:span 1/span 1}.sm\:bui-col-span-2{grid-column:span 2/span 2}.sm\:bui-col-span-3{grid-column:span 3/span 3}.sm\:bui-col-span-4{grid-column:span 4/span 4}.sm\:bui-col-span-5{grid-column:span 5/span 5}.sm\:bui-col-span-6{grid-column:span 6/span 6}.sm\:bui-col-span-7{grid-column:span 7/span 7}.sm\:bui-col-span-8{grid-column:span 8/span 8}.sm\:bui-col-span-9{grid-column:span 9/span 9}.sm\:bui-col-span-10{grid-column:span 10/span 10}.sm\:bui-col-span-11{grid-column:span 11/span 11}.sm\:bui-col-span-12{grid-column:span 12/span 12}.sm\:bui-col-span-auto{grid-column:span auto/span auto}.sm\:bui-col-start-1{grid-column-start:1}.sm\:bui-col-start-2{grid-column-start:2}.sm\:bui-col-start-3{grid-column-start:3}.sm\:bui-col-start-4{grid-column-start:4}.sm\:bui-col-start-5{grid-column-start:5}.sm\:bui-col-start-6{grid-column-start:6}.sm\:bui-col-start-7{grid-column-start:7}.sm\:bui-col-start-8{grid-column-start:8}.sm\:bui-col-start-9{grid-column-start:9}.sm\:bui-col-start-10{grid-column-start:10}.sm\:bui-col-start-11{grid-column-start:11}.sm\:bui-col-start-12{grid-column-start:12}.sm\:bui-col-start-13{grid-column-start:13}.sm\:bui-col-start-auto{grid-column-start:auto}.sm\:bui-col-end-1{grid-column-end:1}.sm\:bui-col-end-2{grid-column-end:2}.sm\:bui-col-end-3{grid-column-end:3}.sm\:bui-col-end-4{grid-column-end:4}.sm\:bui-col-end-5{grid-column-end:5}.sm\:bui-col-end-6{grid-column-end:6}.sm\:bui-col-end-7{grid-column-end:7}.sm\:bui-col-end-8{grid-column-end:8}.sm\:bui-col-end-9{grid-column-end:9}.sm\:bui-col-end-10{grid-column-end:10}.sm\:bui-col-end-11{grid-column-end:11}.sm\:bui-col-end-12{grid-column-end:12}.sm\:bui-col-end-13{grid-column-end:13}.sm\:bui-col-end-auto{grid-column-end:auto}.sm\:bui-row-span-1{grid-row:span 1/span 1}.sm\:bui-row-span-2{grid-row:span 2/span 2}.sm\:bui-row-span-3{grid-row:span 3/span 3}.sm\:bui-row-span-4{grid-row:span 4/span 4}.sm\:bui-row-span-5{grid-row:span 5/span 5}.sm\:bui-row-span-6{grid-row:span 6/span 6}.sm\:bui-row-span-7{grid-row:span 7/span 7}.sm\:bui-row-span-8{grid-row:span 8/span 8}.sm\:bui-row-span-9{grid-row:span 9/span 9}.sm\:bui-row-span-10{grid-row:span 10/span 10}.sm\:bui-row-span-11{grid-row:span 11/span 11}.sm\:bui-row-span-12{grid-row:span 12/span 12}.sm\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=1024px){.md\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.md\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.md\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.md\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.md\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.md\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.md\:bui-col-span-1{grid-column:span 1/span 1}.md\:bui-col-span-2{grid-column:span 2/span 2}.md\:bui-col-span-3{grid-column:span 3/span 3}.md\:bui-col-span-4{grid-column:span 4/span 4}.md\:bui-col-span-5{grid-column:span 5/span 5}.md\:bui-col-span-6{grid-column:span 6/span 6}.md\:bui-col-span-7{grid-column:span 7/span 7}.md\:bui-col-span-8{grid-column:span 8/span 8}.md\:bui-col-span-9{grid-column:span 9/span 9}.md\:bui-col-span-10{grid-column:span 10/span 10}.md\:bui-col-span-11{grid-column:span 11/span 11}.md\:bui-col-span-12{grid-column:span 12/span 12}.md\:bui-col-span-auto{grid-column:span auto/span auto}.md\:bui-col-start-1{grid-column-start:1}.md\:bui-col-start-2{grid-column-start:2}.md\:bui-col-start-3{grid-column-start:3}.md\:bui-col-start-4{grid-column-start:4}.md\:bui-col-start-5{grid-column-start:5}.md\:bui-col-start-6{grid-column-start:6}.md\:bui-col-start-7{grid-column-start:7}.md\:bui-col-start-8{grid-column-start:8}.md\:bui-col-start-9{grid-column-start:9}.md\:bui-col-start-10{grid-column-start:10}.md\:bui-col-start-11{grid-column-start:11}.md\:bui-col-start-12{grid-column-start:12}.md\:bui-col-start-13{grid-column-start:13}.md\:bui-col-start-auto{grid-column-start:auto}.md\:bui-col-end-1{grid-column-end:1}.md\:bui-col-end-2{grid-column-end:2}.md\:bui-col-end-3{grid-column-end:3}.md\:bui-col-end-4{grid-column-end:4}.md\:bui-col-end-5{grid-column-end:5}.md\:bui-col-end-6{grid-column-end:6}.md\:bui-col-end-7{grid-column-end:7}.md\:bui-col-end-8{grid-column-end:8}.md\:bui-col-end-9{grid-column-end:9}.md\:bui-col-end-10{grid-column-end:10}.md\:bui-col-end-11{grid-column-end:11}.md\:bui-col-end-12{grid-column-end:12}.md\:bui-col-end-13{grid-column-end:13}.md\:bui-col-end-auto{grid-column-end:auto}.md\:bui-row-span-1{grid-row:span 1/span 1}.md\:bui-row-span-2{grid-row:span 2/span 2}.md\:bui-row-span-3{grid-row:span 3/span 3}.md\:bui-row-span-4{grid-row:span 4/span 4}.md\:bui-row-span-5{grid-row:span 5/span 5}.md\:bui-row-span-6{grid-row:span 6/span 6}.md\:bui-row-span-7{grid-row:span 7/span 7}.md\:bui-row-span-8{grid-row:span 8/span 8}.md\:bui-row-span-9{grid-row:span 9/span 9}.md\:bui-row-span-10{grid-row:span 10/span 10}.md\:bui-row-span-11{grid-row:span 11/span 11}.md\:bui-row-span-12{grid-row:span 12/span 12}.md\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=1280px){.lg\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lg\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.lg\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lg\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.lg\:bui-col-span-1{grid-column:span 1/span 1}.lg\:bui-col-span-2{grid-column:span 2/span 2}.lg\:bui-col-span-3{grid-column:span 3/span 3}.lg\:bui-col-span-4{grid-column:span 4/span 4}.lg\:bui-col-span-5{grid-column:span 5/span 5}.lg\:bui-col-span-6{grid-column:span 6/span 6}.lg\:bui-col-span-7{grid-column:span 7/span 7}.lg\:bui-col-span-8{grid-column:span 8/span 8}.lg\:bui-col-span-9{grid-column:span 9/span 9}.lg\:bui-col-span-10{grid-column:span 10/span 10}.lg\:bui-col-span-11{grid-column:span 11/span 11}.lg\:bui-col-span-12{grid-column:span 12/span 12}.lg\:bui-col-span-auto{grid-column:span auto/span auto}.lg\:bui-col-start-1{grid-column-start:1}.lg\:bui-col-start-2{grid-column-start:2}.lg\:bui-col-start-3{grid-column-start:3}.lg\:bui-col-start-4{grid-column-start:4}.lg\:bui-col-start-5{grid-column-start:5}.lg\:bui-col-start-6{grid-column-start:6}.lg\:bui-col-start-7{grid-column-start:7}.lg\:bui-col-start-8{grid-column-start:8}.lg\:bui-col-start-9{grid-column-start:9}.lg\:bui-col-start-10{grid-column-start:10}.lg\:bui-col-start-11{grid-column-start:11}.lg\:bui-col-start-12{grid-column-start:12}.lg\:bui-col-start-13{grid-column-start:13}.lg\:bui-col-start-auto{grid-column-start:auto}.lg\:bui-col-end-1{grid-column-end:1}.lg\:bui-col-end-2{grid-column-end:2}.lg\:bui-col-end-3{grid-column-end:3}.lg\:bui-col-end-4{grid-column-end:4}.lg\:bui-col-end-5{grid-column-end:5}.lg\:bui-col-end-6{grid-column-end:6}.lg\:bui-col-end-7{grid-column-end:7}.lg\:bui-col-end-8{grid-column-end:8}.lg\:bui-col-end-9{grid-column-end:9}.lg\:bui-col-end-10{grid-column-end:10}.lg\:bui-col-end-11{grid-column-end:11}.lg\:bui-col-end-12{grid-column-end:12}.lg\:bui-col-end-13{grid-column-end:13}.lg\:bui-col-end-auto{grid-column-end:auto}.lg\:bui-row-span-1{grid-row:span 1/span 1}.lg\:bui-row-span-2{grid-row:span 2/span 2}.lg\:bui-row-span-3{grid-row:span 3/span 3}.lg\:bui-row-span-4{grid-row:span 4/span 4}.lg\:bui-row-span-5{grid-row:span 5/span 5}.lg\:bui-row-span-6{grid-row:span 6/span 6}.lg\:bui-row-span-7{grid-row:span 7/span 7}.lg\:bui-row-span-8{grid-row:span 8/span 8}.lg\:bui-row-span-9{grid-row:span 9/span 9}.lg\:bui-row-span-10{grid-row:span 10/span 10}.lg\:bui-row-span-11{grid-row:span 11/span 11}.lg\:bui-row-span-12{grid-row:span 12/span 12}.lg\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=1536px){.xl\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xl\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xl\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xl\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xl\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xl\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xl\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.xl\:bui-col-span-1{grid-column:span 1/span 1}.xl\:bui-col-span-2{grid-column:span 2/span 2}.xl\:bui-col-span-3{grid-column:span 3/span 3}.xl\:bui-col-span-4{grid-column:span 4/span 4}.xl\:bui-col-span-5{grid-column:span 5/span 5}.xl\:bui-col-span-6{grid-column:span 6/span 6}.xl\:bui-col-span-7{grid-column:span 7/span 7}.xl\:bui-col-span-8{grid-column:span 8/span 8}.xl\:bui-col-span-9{grid-column:span 9/span 9}.xl\:bui-col-span-10{grid-column:span 10/span 10}.xl\:bui-col-span-11{grid-column:span 11/span 11}.xl\:bui-col-span-12{grid-column:span 12/span 12}.xl\:bui-col-span-auto{grid-column:span auto/span auto}.xl\:bui-col-start-1{grid-column-start:1}.xl\:bui-col-start-2{grid-column-start:2}.xl\:bui-col-start-3{grid-column-start:3}.xl\:bui-col-start-4{grid-column-start:4}.xl\:bui-col-start-5{grid-column-start:5}.xl\:bui-col-start-6{grid-column-start:6}.xl\:bui-col-start-7{grid-column-start:7}.xl\:bui-col-start-8{grid-column-start:8}.xl\:bui-col-start-9{grid-column-start:9}.xl\:bui-col-start-10{grid-column-start:10}.xl\:bui-col-start-11{grid-column-start:11}.xl\:bui-col-start-12{grid-column-start:12}.xl\:bui-col-start-13{grid-column-start:13}.xl\:bui-col-start-auto{grid-column-start:auto}.xl\:bui-col-end-1{grid-column-end:1}.xl\:bui-col-end-2{grid-column-end:2}.xl\:bui-col-end-3{grid-column-end:3}.xl\:bui-col-end-4{grid-column-end:4}.xl\:bui-col-end-5{grid-column-end:5}.xl\:bui-col-end-6{grid-column-end:6}.xl\:bui-col-end-7{grid-column-end:7}.xl\:bui-col-end-8{grid-column-end:8}.xl\:bui-col-end-9{grid-column-end:9}.xl\:bui-col-end-10{grid-column-end:10}.xl\:bui-col-end-11{grid-column-end:11}.xl\:bui-col-end-12{grid-column-end:12}.xl\:bui-col-end-13{grid-column-end:13}.xl\:bui-col-end-auto{grid-column-end:auto}.xl\:bui-row-span-1{grid-row:span 1/span 1}.xl\:bui-row-span-2{grid-row:span 2/span 2}.xl\:bui-row-span-3{grid-row:span 3/span 3}.xl\:bui-row-span-4{grid-row:span 4/span 4}.xl\:bui-row-span-5{grid-row:span 5/span 5}.xl\:bui-row-span-6{grid-row:span 6/span 6}.xl\:bui-row-span-7{grid-row:span 7/span 7}.xl\:bui-row-span-8{grid-row:span 8/span 8}.xl\:bui-row-span-9{grid-row:span 9/span 9}.xl\:bui-row-span-10{grid-row:span 10/span 10}.xl\:bui-row-span-11{grid-row:span 11/span 11}.xl\:bui-row-span-12{grid-row:span 12/span 12}.xl\:bui-row-span-auto{grid-row:span auto/span auto}}.bui-gap{gap:var(--gap)}.bui-gap-0\.5{gap:var(--bui-space-0_5)}.bui-gap-1{gap:var(--bui-space-1)}.bui-gap-1\.5{gap:var(--bui-space-1_5)}.bui-gap-2{gap:var(--bui-space-2)}.bui-gap-3{gap:var(--bui-space-3)}.bui-gap-4{gap:var(--bui-space-4)}.bui-gap-5{gap:var(--bui-space-5)}.bui-gap-6{gap:var(--bui-space-6)}.bui-gap-7{gap:var(--bui-space-7)}.bui-gap-8{gap:var(--bui-space-8)}.bui-gap-9{gap:var(--bui-space-9)}.bui-gap-10{gap:var(--bui-space-10)}.bui-gap-11{gap:var(--bui-space-11)}.bui-gap-12{gap:var(--bui-space-12)}.bui-gap-13{gap:var(--bui-space-13)}.bui-gap-14{gap:var(--bui-space-14)}@media (width>=640px){.xs\:bui-gap{gap:var(--gap-xs)}.xs\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.xs\:bui-gap-1{gap:var(--bui-space-1)}.xs\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.xs\:bui-gap-2{gap:var(--bui-space-2)}.xs\:bui-gap-3{gap:var(--bui-space-3)}.xs\:bui-gap-4{gap:var(--bui-space-4)}.xs\:bui-gap-5{gap:var(--bui-space-5)}.xs\:bui-gap-6{gap:var(--bui-space-6)}.xs\:bui-gap-7{gap:var(--bui-space-7)}.xs\:bui-gap-8{gap:var(--bui-space-8)}.xs\:bui-gap-9{gap:var(--bui-space-9)}.xs\:bui-gap-10{gap:var(--bui-space-10)}.xs\:bui-gap-11{gap:var(--bui-space-11)}.xs\:bui-gap-12{gap:var(--bui-space-12)}.xs\:bui-gap-13{gap:var(--bui-space-13)}.xs\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-gap{gap:var(--gap-sm)}.sm\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.sm\:bui-gap-1{gap:var(--bui-space-1)}.sm\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.sm\:bui-gap-2{gap:var(--bui-space-2)}.sm\:bui-gap-3{gap:var(--bui-space-3)}.sm\:bui-gap-4{gap:var(--bui-space-4)}.sm\:bui-gap-5{gap:var(--bui-space-5)}.sm\:bui-gap-6{gap:var(--bui-space-6)}.sm\:bui-gap-7{gap:var(--bui-space-7)}.sm\:bui-gap-8{gap:var(--bui-space-8)}.sm\:bui-gap-9{gap:var(--bui-space-9)}.sm\:bui-gap-10{gap:var(--bui-space-10)}.sm\:bui-gap-11{gap:var(--bui-space-11)}.sm\:bui-gap-12{gap:var(--bui-space-12)}.sm\:bui-gap-13{gap:var(--bui-space-13)}.sm\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-gap{gap:var(--gap-md)}.md\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.md\:bui-gap-1{gap:var(--bui-space-1)}.md\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.md\:bui-gap-2{gap:var(--bui-space-2)}.md\:bui-gap-3{gap:var(--bui-space-3)}.md\:bui-gap-4{gap:var(--bui-space-4)}.md\:bui-gap-5{gap:var(--bui-space-5)}.md\:bui-gap-6{gap:var(--bui-space-6)}.md\:bui-gap-7{gap:var(--bui-space-7)}.md\:bui-gap-8{gap:var(--bui-space-8)}.md\:bui-gap-9{gap:var(--bui-space-9)}.md\:bui-gap-10{gap:var(--bui-space-10)}.md\:bui-gap-11{gap:var(--bui-space-11)}.md\:bui-gap-12{gap:var(--bui-space-12)}.md\:bui-gap-13{gap:var(--bui-space-13)}.md\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-gap{gap:var(--gap-lg)}.lg\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.lg\:bui-gap-1{gap:var(--bui-space-1)}.lg\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.lg\:bui-gap-2{gap:var(--bui-space-2)}.lg\:bui-gap-3{gap:var(--bui-space-3)}.lg\:bui-gap-4{gap:var(--bui-space-4)}.lg\:bui-gap-5{gap:var(--bui-space-5)}.lg\:bui-gap-6{gap:var(--bui-space-6)}.lg\:bui-gap-7{gap:var(--bui-space-7)}.lg\:bui-gap-8{gap:var(--bui-space-8)}.lg\:bui-gap-9{gap:var(--bui-space-9)}.lg\:bui-gap-10{gap:var(--bui-space-10)}.lg\:bui-gap-11{gap:var(--bui-space-11)}.lg\:bui-gap-12{gap:var(--bui-space-12)}.lg\:bui-gap-13{gap:var(--bui-space-13)}.lg\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-gap{gap:var(--gap-xl)}.xl\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.xl\:bui-gap-1{gap:var(--bui-space-1)}.xl\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.xl\:bui-gap-2{gap:var(--bui-space-2)}.xl\:bui-gap-3{gap:var(--bui-space-3)}.xl\:bui-gap-4{gap:var(--bui-space-4)}.xl\:bui-gap-5{gap:var(--bui-space-5)}.xl\:bui-gap-6{gap:var(--bui-space-6)}.xl\:bui-gap-7{gap:var(--bui-space-7)}.xl\:bui-gap-8{gap:var(--bui-space-8)}.xl\:bui-gap-9{gap:var(--bui-space-9)}.xl\:bui-gap-10{gap:var(--bui-space-10)}.xl\:bui-gap-11{gap:var(--bui-space-11)}.xl\:bui-gap-12{gap:var(--bui-space-12)}.xl\:bui-gap-13{gap:var(--bui-space-13)}.xl\:bui-gap-14{gap:var(--bui-space-14)}}.bui-align-start{align-items:start}.bui-align-center{align-items:center}.bui-align-end{align-items:end}.bui-align-baseline{align-items:baseline}.bui-align-stretch{align-items:stretch}.bui-jc-start{justify-content:start}.bui-jc-center{justify-content:center}.bui-jc-end{justify-content:end}.bui-jc-between{justify-content:space-between}.bui-fd-row{flex-direction:row}.bui-fd-column{flex-direction:column}.bui-fd-row-reverse{flex-direction:row-reverse}.bui-fd-column-reverse{flex-direction:column-reverse}@media (width>=640px){.xs\:bui-align-start{align-items:start}.xs\:bui-align-center{align-items:center}.xs\:bui-align-end{align-items:end}.xs\:bui-align-stretch{align-items:stretch}.xs\:bui-jc-start{justify-content:start}.xs\:bui-jc-center{justify-content:center}.xs\:bui-jc-end{justify-content:end}.xs\:bui-jc-between{justify-content:space-between}.xs\:bui-fd-row{flex-direction:row}.xs\:bui-fd-column{flex-direction:column}.xs\:bui-fd-row-reverse{flex-direction:row-reverse}.xs\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=768px){.sm\:bui-align-start{align-items:start}.sm\:bui-align-center{align-items:center}.sm\:bui-align-end{align-items:end}.sm\:bui-align-stretch{align-items:stretch}.sm\:bui-jc-start{justify-content:start}.sm\:bui-jc-center{justify-content:center}.sm\:bui-jc-end{justify-content:end}.sm\:bui-jc-between{justify-content:space-between}.sm\:bui-fd-row{flex-direction:row}.sm\:bui-fd-column{flex-direction:column}.sm\:bui-fd-row-reverse{flex-direction:row-reverse}.sm\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=1024px){.md\:bui-align-start{align-items:start}.md\:bui-align-center{align-items:center}.md\:bui-align-end{align-items:end}.md\:bui-align-stretch{align-items:stretch}.md\:bui-jc-start{justify-content:start}.md\:bui-jc-center{justify-content:center}.md\:bui-jc-end{justify-content:end}.md\:bui-jc-between{justify-content:space-between}.md\:bui-fd-row{flex-direction:row}.md\:bui-fd-column{flex-direction:column}.md\:bui-fd-row-reverse{flex-direction:row-reverse}.md\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=1280px){.lg\:bui-align-start{align-items:start}.lg\:bui-align-center{align-items:center}.lg\:bui-align-end{align-items:end}.lg\:bui-align-stretch{align-items:stretch}.lg\:bui-jc-start{justify-content:start}.lg\:bui-jc-center{justify-content:center}.lg\:bui-jc-end{justify-content:end}.lg\:bui-jc-between{justify-content:space-between}.lg\:bui-fd-row{flex-direction:row}.lg\:bui-fd-column{flex-direction:column}.lg\:bui-fd-row-reverse{flex-direction:row-reverse}.lg\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=1536px){.xl\:bui-align-start{align-items:start}.xl\:bui-align-center{align-items:center}.xl\:bui-align-end{align-items:end}.xl\:bui-align-stretch{align-items:stretch}.xl\:bui-jc-start{justify-content:start}.xl\:bui-jc-center{justify-content:center}.xl\:bui-jc-end{justify-content:end}.xl\:bui-jc-between{justify-content:space-between}.xl\:bui-fd-row{flex-direction:row}.xl\:bui-fd-column{flex-direction:column}.xl\:bui-fd-row-reverse{flex-direction:row-reverse}.xl\:bui-fd-column-reverse{flex-direction:column-reverse}}} \ No newline at end of file +@layer tokens{:root{--bui-font-regular:system-ui;--bui-font-monospace:ui-monospace,"Menlo","Monaco","Consolas","Liberation Mono","Courier New",monospace;--bui-font-weight-regular:400;--bui-font-weight-bold:600;--bui-font-size-1:.625rem;--bui-font-size-2:.75rem;--bui-font-size-3:.875rem;--bui-font-size-4:1rem;--bui-font-size-5:1.25rem;--bui-font-size-6:1.5rem;--bui-font-size-7:2rem;--bui-font-size-8:3rem;--bui-font-size-9:4rem;--bui-font-size-10:5.75rem;--bui-space:.25rem;--bui-space-0_5:calc(var(--bui-space)*.5);--bui-space-1:var(--bui-space);--bui-space-1_5:calc(var(--bui-space)*1.5);--bui-space-2:calc(var(--bui-space)*2);--bui-space-3:calc(var(--bui-space)*3);--bui-space-4:calc(var(--bui-space)*4);--bui-space-5:calc(var(--bui-space)*5);--bui-space-6:calc(var(--bui-space)*6);--bui-space-7:calc(var(--bui-space)*7);--bui-space-8:calc(var(--bui-space)*8);--bui-space-9:calc(var(--bui-space)*9);--bui-space-10:calc(var(--bui-space)*10);--bui-space-11:calc(var(--bui-space)*11);--bui-space-12:calc(var(--bui-space)*12);--bui-space-13:calc(var(--bui-space)*13);--bui-space-14:calc(var(--bui-space)*14);--bui-radius-1:calc(.125rem);--bui-radius-2:calc(.25rem);--bui-radius-3:calc(.5rem);--bui-radius-4:calc(.75rem);--bui-radius-5:calc(1rem);--bui-radius-6:calc(1.25rem);--bui-radius-full:9999px;--bui-black:#000;--bui-white:#fff;--bui-gray-1:#f8f8f8;--bui-gray-2:#ececec;--bui-gray-3:#d9d9d9;--bui-gray-4:#c1c1c1;--bui-gray-5:#9e9e9e;--bui-gray-6:#8c8c8c;--bui-gray-7:#757575;--bui-gray-8:#595959;--bui-bg-surface-0:var(--bui-gray-1);--bui-bg-surface-1:var(--bui-white);--bui-bg-surface-2:var(--bui-gray-1);--bui-bg-surface-3:var(--bui-gray-2);--bui-bg-solid:#1f5493;--bui-bg-solid-hover:#163a66;--bui-bg-solid-pressed:#0f2b4e;--bui-bg-solid-disabled:#163a66;--bui-bg-neutral-on-surface-0:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-0-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-0-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-0-disabled:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-1:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-1-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-1-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-1-disabled:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-2:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-2-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-2-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-2-disabled:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-3:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-3-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-3-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-3-disabled:oklch(0% 0 0/.06);--bui-bg-danger:#ffe2e2;--bui-bg-warning:#ffedd5;--bui-bg-success:#dcfce7;--bui-bg-info:#dbeafe;--bui-fg-primary:var(--bui-black);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-disabled:#9e9e9e;--bui-fg-solid:var(--bui-white);--bui-fg-solid-disabled:#98a8bc;--bui-fg-danger-on-bg:#991919;--bui-fg-warning-on-bg:#92310a;--bui-fg-success-on-bg:#116932;--bui-fg-info-on-bg:#173da6;--bui-fg-danger:#ec3b18;--bui-fg-warning:#ef7a32;--bui-fg-success:#1ed760;--bui-fg-info:#0d74ce;--bui-border:#0000001a;--bui-border-hover:#0003;--bui-border-pressed:#0006;--bui-border-disabled:#0000001a;--bui-border-info:#7ea9d6;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#1f5493;--bui-scrollbar:#a0a0a03b;--bui-scrollbar-thumb:#a0a0a0;--bui-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--bui-animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite}[data-theme-mode=dark]{--bui-gray-1:#191919;--bui-gray-2:#242424;--bui-gray-3:#373737;--bui-gray-4:#464646;--bui-gray-5:#575757;--bui-gray-6:#7b7b7b;--bui-gray-7:#9e9e9e;--bui-gray-8:#b4b4b4;--bui-bg-surface-0:#333;--bui-bg-surface-1:var(--bui-gray-1);--bui-bg-surface-2:var(--bui-gray-2);--bui-bg-surface-3:var(--bui-gray-3);--bui-bg-solid:#9cc9ff;--bui-bg-solid-hover:#83b9fd;--bui-bg-solid-pressed:#83b9fd;--bui-bg-solid-disabled:#1b3d68;--bui-bg-neutral-on-surface-0:oklch(100% 0 0/.1);--bui-bg-neutral-on-surface-0-hover:oklch(100% 0 0/.14);--bui-bg-neutral-on-surface-0-pressed:oklch(100% 0 0/.2);--bui-bg-neutral-on-surface-0-disabled:oklch(100% 0 0/.1);--bui-bg-neutral-on-surface-1:oklch(100% 0 0/.06);--bui-bg-neutral-on-surface-1-hover:oklch(100% 0 0/.1);--bui-bg-neutral-on-surface-1-pressed:oklch(100% 0 0/.16);--bui-bg-neutral-on-surface-1-disabled:oklch(100% 0 0/.06);--bui-bg-neutral-on-surface-2:oklch(100% 0 0/.08);--bui-bg-neutral-on-surface-2-hover:oklch(100% 0 0/.12);--bui-bg-neutral-on-surface-2-pressed:oklch(100% 0 0/.2);--bui-bg-neutral-on-surface-2-disabled:oklch(100% 0 0/.08);--bui-bg-neutral-on-surface-3:oklch(100% 0 0/.08);--bui-bg-neutral-on-surface-3-hover:oklch(100% 0 0/.12);--bui-bg-neutral-on-surface-3-pressed:oklch(100% 0 0/.2);--bui-bg-neutral-on-surface-3-disabled:oklch(100% 0 0/.08);--bui-bg-danger:#300c0c;--bui-bg-warning:#302008;--bui-bg-success:#042713;--bui-bg-info:#132049;--bui-fg-primary:var(--bui-white);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-disabled:var(--bui-gray-7);--bui-fg-solid:#101821;--bui-fg-solid-disabled:#6191cc;--bui-fg-danger-on-bg:#fca5a5;--bui-fg-warning-on-bg:#fdba74;--bui-fg-success-on-bg:#86efac;--bui-fg-info-on-bg:#a3cfff;--bui-fg-danger:#ff5a30;--bui-fg-warning:#ffa057;--bui-fg-success:#1ed760;--bui-fg-info:#70b8ff;--bui-border:#ffffff1f;--bui-border-hover:#fff6;--bui-border-pressed:#ffffff80;--bui-border-disabled:#fff3;--bui-border-info:#7ea9d6;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#1f5493;--bui-scrollbar:#3636363a;--bui-scrollbar-thumb:#575757;--bui-shadow:none}}@layer base{*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;tab-size:4;font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;line-height:1.15}body{margin:0}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{border-color:currentColor}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}:where(a){color:inherit;text-decoration:none}@keyframes pulse{50%{opacity:.5}}body{background-color:var(--bui-bg-surface-0);color:var(--bui-fg-primary);font-family:var(--bui-font-regular);font-weight:var(--bui-font-weight-regular);font-size:var(--bui-font-size-3);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[data-theme-mode=dark]{color-scheme:dark}[data-theme-mode=light]{color-scheme:light}}@layer components;@layer utilities{.bui-p{padding:var(--p)}.bui-p-0\.5{padding:var(--bui-space-0_5)}.bui-p-1{padding:var(--bui-space-1)}.bui-p-1\.5{padding:var(--bui-space-1_5)}.bui-p-2{padding:var(--bui-space-2)}.bui-p-3{padding:var(--bui-space-3)}.bui-p-4{padding:var(--bui-space-4)}.bui-p-5{padding:var(--bui-space-5)}.bui-p-6{padding:var(--bui-space-6)}.bui-p-7{padding:var(--bui-space-7)}.bui-p-8{padding:var(--bui-space-8)}.bui-p-9{padding:var(--bui-space-9)}.bui-p-10{padding:var(--bui-space-10)}.bui-p-11{padding:var(--bui-space-11)}.bui-p-12{padding:var(--bui-space-12)}.bui-p-13{padding:var(--bui-space-13)}.bui-p-14{padding:var(--bui-space-14)}@media (width>=640px){.xs\:bui-p{padding:var(--p-xs)}.xs\:bui-p-0\.5{padding:var(--bui-space-0_5)}.xs\:bui-p-1{padding:var(--bui-space-1)}.xs\:bui-p-1\.5{padding:var(--bui-space-1_5)}.xs\:bui-p-2{padding:var(--bui-space-2)}.xs\:bui-p-3{padding:var(--bui-space-3)}.xs\:bui-p-4{padding:var(--bui-space-4)}.xs\:bui-p-5{padding:var(--bui-space-5)}.xs\:bui-p-6{padding:var(--bui-space-6)}.xs\:bui-p-7{padding:var(--bui-space-7)}.xs\:bui-p-8{padding:var(--bui-space-8)}.xs\:bui-p-9{padding:var(--bui-space-9)}.xs\:bui-p-10{padding:var(--bui-space-10)}.xs\:bui-p-11{padding:var(--bui-space-11)}.xs\:bui-p-12{padding:var(--bui-space-12)}.xs\:bui-p-13{padding:var(--bui-space-13)}.xs\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-p{padding:var(--p-sm)}.sm\:bui-p-0\.5{padding:var(--bui-space-0_5)}.sm\:bui-p-1{padding:var(--bui-space-1)}.sm\:bui-p-1\.5{padding:var(--bui-space-1_5)}.sm\:bui-p-2{padding:var(--bui-space-2)}.sm\:bui-p-3{padding:var(--bui-space-3)}.sm\:bui-p-4{padding:var(--bui-space-4)}.sm\:bui-p-5{padding:var(--bui-space-5)}.sm\:bui-p-6{padding:var(--bui-space-6)}.sm\:bui-p-7{padding:var(--bui-space-7)}.sm\:bui-p-8{padding:var(--bui-space-8)}.sm\:bui-p-9{padding:var(--bui-space-9)}.sm\:bui-p-10{padding:var(--bui-space-10)}.sm\:bui-p-11{padding:var(--bui-space-11)}.sm\:bui-p-12{padding:var(--bui-space-12)}.sm\:bui-p-13{padding:var(--bui-space-13)}.sm\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-p{padding:var(--p-md)}.md\:bui-p-0\.5{padding:var(--bui-space-0_5)}.md\:bui-p-1{padding:var(--bui-space-1)}.md\:bui-p-1\.5{padding:var(--bui-space-1_5)}.md\:bui-p-2{padding:var(--bui-space-2)}.md\:bui-p-3{padding:var(--bui-space-3)}.md\:bui-p-4{padding:var(--bui-space-4)}.md\:bui-p-5{padding:var(--bui-space-5)}.md\:bui-p-6{padding:var(--bui-space-6)}.md\:bui-p-7{padding:var(--bui-space-7)}.md\:bui-p-8{padding:var(--bui-space-8)}.md\:bui-p-9{padding:var(--bui-space-9)}.md\:bui-p-10{padding:var(--bui-space-10)}.md\:bui-p-11{padding:var(--bui-space-11)}.md\:bui-p-12{padding:var(--bui-space-12)}.md\:bui-p-13{padding:var(--bui-space-13)}.md\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-p{padding:var(--p-lg)}.lg\:bui-p-0\.5{padding:var(--bui-space-0_5)}.lg\:bui-p-1{padding:var(--bui-space-1)}.lg\:bui-p-1\.5{padding:var(--bui-space-1_5)}.lg\:bui-p-2{padding:var(--bui-space-2)}.lg\:bui-p-3{padding:var(--bui-space-3)}.lg\:bui-p-4{padding:var(--bui-space-4)}.lg\:bui-p-5{padding:var(--bui-space-5)}.lg\:bui-p-6{padding:var(--bui-space-6)}.lg\:bui-p-7{padding:var(--bui-space-7)}.lg\:bui-p-8{padding:var(--bui-space-8)}.lg\:bui-p-9{padding:var(--bui-space-9)}.lg\:bui-p-10{padding:var(--bui-space-10)}.lg\:bui-p-11{padding:var(--bui-space-11)}.lg\:bui-p-12{padding:var(--bui-space-12)}.lg\:bui-p-13{padding:var(--bui-space-13)}.lg\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-p{padding:var(--p-xl)}.xl\:bui-p-0\.5{padding:var(--bui-space-0_5)}.xl\:bui-p-1{padding:var(--bui-space-1)}.xl\:bui-p-1\.5{padding:var(--bui-space-1_5)}.xl\:bui-p-2{padding:var(--bui-space-2)}.xl\:bui-p-3{padding:var(--bui-space-3)}.xl\:bui-p-4{padding:var(--bui-space-4)}.xl\:bui-p-5{padding:var(--bui-space-5)}.xl\:bui-p-6{padding:var(--bui-space-6)}.xl\:bui-p-7{padding:var(--bui-space-7)}.xl\:bui-p-8{padding:var(--bui-space-8)}.xl\:bui-p-9{padding:var(--bui-space-9)}.xl\:bui-p-10{padding:var(--bui-space-10)}.xl\:bui-p-11{padding:var(--bui-space-11)}.xl\:bui-p-12{padding:var(--bui-space-12)}.xl\:bui-p-13{padding:var(--bui-space-13)}.xl\:bui-p-14{padding:var(--bui-space-14)}}.bui-pl{padding-left:var(--pl)}.bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.bui-pl-1{padding-left:var(--bui-space-1)}.bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.bui-pl-2{padding-left:var(--bui-space-2)}.bui-pl-3{padding-left:var(--bui-space-3)}.bui-pl-4{padding-left:var(--bui-space-4)}.bui-pl-5{padding-left:var(--bui-space-5)}.bui-pl-6{padding-left:var(--bui-space-6)}.bui-pl-7{padding-left:var(--bui-space-7)}.bui-pl-8{padding-left:var(--bui-space-8)}.bui-pl-9{padding-left:var(--bui-space-9)}.bui-pl-10{padding-left:var(--bui-space-10)}.bui-pl-11{padding-left:var(--bui-space-11)}.bui-pl-12{padding-left:var(--bui-space-12)}.bui-pl-13{padding-left:var(--bui-space-13)}.bui-pl-14{padding-left:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pl{padding-left:var(--pl-xs)}.xs\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.xs\:bui-pl-1{padding-left:var(--bui-space-1)}.xs\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.xs\:bui-pl-2{padding-left:var(--bui-space-2)}.xs\:bui-pl-3{padding-left:var(--bui-space-3)}.xs\:bui-pl-4{padding-left:var(--bui-space-4)}.xs\:bui-pl-5{padding-left:var(--bui-space-5)}.xs\:bui-pl-6{padding-left:var(--bui-space-6)}.xs\:bui-pl-7{padding-left:var(--bui-space-7)}.xs\:bui-pl-8{padding-left:var(--bui-space-8)}.xs\:bui-pl-9{padding-left:var(--bui-space-9)}.xs\:bui-pl-10{padding-left:var(--bui-space-10)}.xs\:bui-pl-11{padding-left:var(--bui-space-11)}.xs\:bui-pl-12{padding-left:var(--bui-space-12)}.xs\:bui-pl-13{padding-left:var(--bui-space-13)}.xs\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pl{padding-left:var(--pl-sm)}.sm\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.sm\:bui-pl-1{padding-left:var(--bui-space-1)}.sm\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.sm\:bui-pl-2{padding-left:var(--bui-space-2)}.sm\:bui-pl-3{padding-left:var(--bui-space-3)}.sm\:bui-pl-4{padding-left:var(--bui-space-4)}.sm\:bui-pl-5{padding-left:var(--bui-space-5)}.sm\:bui-pl-6{padding-left:var(--bui-space-6)}.sm\:bui-pl-7{padding-left:var(--bui-space-7)}.sm\:bui-pl-8{padding-left:var(--bui-space-8)}.sm\:bui-pl-9{padding-left:var(--bui-space-9)}.sm\:bui-pl-10{padding-left:var(--bui-space-10)}.sm\:bui-pl-11{padding-left:var(--bui-space-11)}.sm\:bui-pl-12{padding-left:var(--bui-space-12)}.sm\:bui-pl-13{padding-left:var(--bui-space-13)}.sm\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pl{padding-left:var(--pl-md)}.md\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.md\:bui-pl-1{padding-left:var(--bui-space-1)}.md\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.md\:bui-pl-2{padding-left:var(--bui-space-2)}.md\:bui-pl-3{padding-left:var(--bui-space-3)}.md\:bui-pl-4{padding-left:var(--bui-space-4)}.md\:bui-pl-5{padding-left:var(--bui-space-5)}.md\:bui-pl-6{padding-left:var(--bui-space-6)}.md\:bui-pl-7{padding-left:var(--bui-space-7)}.md\:bui-pl-8{padding-left:var(--bui-space-8)}.md\:bui-pl-9{padding-left:var(--bui-space-9)}.md\:bui-pl-10{padding-left:var(--bui-space-10)}.md\:bui-pl-11{padding-left:var(--bui-space-11)}.md\:bui-pl-12{padding-left:var(--bui-space-12)}.md\:bui-pl-13{padding-left:var(--bui-space-13)}.md\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pl{padding-left:var(--pl-lg)}.lg\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.lg\:bui-pl-1{padding-left:var(--bui-space-1)}.lg\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.lg\:bui-pl-2{padding-left:var(--bui-space-2)}.lg\:bui-pl-3{padding-left:var(--bui-space-3)}.lg\:bui-pl-4{padding-left:var(--bui-space-4)}.lg\:bui-pl-5{padding-left:var(--bui-space-5)}.lg\:bui-pl-6{padding-left:var(--bui-space-6)}.lg\:bui-pl-7{padding-left:var(--bui-space-7)}.lg\:bui-pl-8{padding-left:var(--bui-space-8)}.lg\:bui-pl-9{padding-left:var(--bui-space-9)}.lg\:bui-pl-10{padding-left:var(--bui-space-10)}.lg\:bui-pl-11{padding-left:var(--bui-space-11)}.lg\:bui-pl-12{padding-left:var(--bui-space-12)}.lg\:bui-pl-13{padding-left:var(--bui-space-13)}.lg\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pl{padding-left:var(--pl-xl)}.xl\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.xl\:bui-pl-1{padding-left:var(--bui-space-1)}.xl\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.xl\:bui-pl-2{padding-left:var(--bui-space-2)}.xl\:bui-pl-3{padding-left:var(--bui-space-3)}.xl\:bui-pl-4{padding-left:var(--bui-space-4)}.xl\:bui-pl-5{padding-left:var(--bui-space-5)}.xl\:bui-pl-6{padding-left:var(--bui-space-6)}.xl\:bui-pl-7{padding-left:var(--bui-space-7)}.xl\:bui-pl-8{padding-left:var(--bui-space-8)}.xl\:bui-pl-9{padding-left:var(--bui-space-9)}.xl\:bui-pl-10{padding-left:var(--bui-space-10)}.xl\:bui-pl-11{padding-left:var(--bui-space-11)}.xl\:bui-pl-12{padding-left:var(--bui-space-12)}.xl\:bui-pl-13{padding-left:var(--bui-space-13)}.xl\:bui-pl-14{padding-left:var(--bui-space-14)}}.bui-pr{padding-right:var(--pr)}.bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.bui-pr-1{padding-right:var(--bui-space-1)}.bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.bui-pr-2{padding-right:var(--bui-space-2)}.bui-pr-3{padding-right:var(--bui-space-3)}.bui-pr-4{padding-right:var(--bui-space-4)}.bui-pr-5{padding-right:var(--bui-space-5)}.bui-pr-6{padding-right:var(--bui-space-6)}.bui-pr-7{padding-right:var(--bui-space-7)}.bui-pr-8{padding-right:var(--bui-space-8)}.bui-pr-9{padding-right:var(--bui-space-9)}.bui-pr-10{padding-right:var(--bui-space-10)}.bui-pr-11{padding-right:var(--bui-space-11)}.bui-pr-12{padding-right:var(--bui-space-12)}.bui-pr-13{padding-right:var(--bui-space-13)}.bui-pr-14{padding-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pr{padding-right:var(--pr-xs)}.xs\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.xs\:bui-pr-1{padding-right:var(--bui-space-1)}.xs\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.xs\:bui-pr-2{padding-right:var(--bui-space-2)}.xs\:bui-pr-3{padding-right:var(--bui-space-3)}.xs\:bui-pr-4{padding-right:var(--bui-space-4)}.xs\:bui-pr-5{padding-right:var(--bui-space-5)}.xs\:bui-pr-6{padding-right:var(--bui-space-6)}.xs\:bui-pr-7{padding-right:var(--bui-space-7)}.xs\:bui-pr-8{padding-right:var(--bui-space-8)}.xs\:bui-pr-9{padding-right:var(--bui-space-9)}.xs\:bui-pr-10{padding-right:var(--bui-space-10)}.xs\:bui-pr-11{padding-right:var(--bui-space-11)}.xs\:bui-pr-12{padding-right:var(--bui-space-12)}.xs\:bui-pr-13{padding-right:var(--bui-space-13)}.xs\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pr{padding-right:var(--pr-sm)}.sm\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.sm\:bui-pr-1{padding-right:var(--bui-space-1)}.sm\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.sm\:bui-pr-2{padding-right:var(--bui-space-2)}.sm\:bui-pr-3{padding-right:var(--bui-space-3)}.sm\:bui-pr-4{padding-right:var(--bui-space-4)}.sm\:bui-pr-5{padding-right:var(--bui-space-5)}.sm\:bui-pr-6{padding-right:var(--bui-space-6)}.sm\:bui-pr-7{padding-right:var(--bui-space-7)}.sm\:bui-pr-8{padding-right:var(--bui-space-8)}.sm\:bui-pr-9{padding-right:var(--bui-space-9)}.sm\:bui-pr-10{padding-right:var(--bui-space-10)}.sm\:bui-pr-11{padding-right:var(--bui-space-11)}.sm\:bui-pr-12{padding-right:var(--bui-space-12)}.sm\:bui-pr-13{padding-right:var(--bui-space-13)}.sm\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pr{padding-right:var(--pr-md)}.md\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.md\:bui-pr-1{padding-right:var(--bui-space-1)}.md\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.md\:bui-pr-2{padding-right:var(--bui-space-2)}.md\:bui-pr-3{padding-right:var(--bui-space-3)}.md\:bui-pr-4{padding-right:var(--bui-space-4)}.md\:bui-pr-5{padding-right:var(--bui-space-5)}.md\:bui-pr-6{padding-right:var(--bui-space-6)}.md\:bui-pr-7{padding-right:var(--bui-space-7)}.md\:bui-pr-8{padding-right:var(--bui-space-8)}.md\:bui-pr-9{padding-right:var(--bui-space-9)}.md\:bui-pr-10{padding-right:var(--bui-space-10)}.md\:bui-pr-11{padding-right:var(--bui-space-11)}.md\:bui-pr-12{padding-right:var(--bui-space-12)}.md\:bui-pr-13{padding-right:var(--bui-space-13)}.md\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pr{padding-right:var(--pr-lg)}.lg\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.lg\:bui-pr-1{padding-right:var(--bui-space-1)}.lg\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.lg\:bui-pr-2{padding-right:var(--bui-space-2)}.lg\:bui-pr-3{padding-right:var(--bui-space-3)}.lg\:bui-pr-4{padding-right:var(--bui-space-4)}.lg\:bui-pr-5{padding-right:var(--bui-space-5)}.lg\:bui-pr-6{padding-right:var(--bui-space-6)}.lg\:bui-pr-7{padding-right:var(--bui-space-7)}.lg\:bui-pr-8{padding-right:var(--bui-space-8)}.lg\:bui-pr-9{padding-right:var(--bui-space-9)}.lg\:bui-pr-10{padding-right:var(--bui-space-10)}.lg\:bui-pr-11{padding-right:var(--bui-space-11)}.lg\:bui-pr-12{padding-right:var(--bui-space-12)}.lg\:bui-pr-13{padding-right:var(--bui-space-13)}.lg\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pr{padding-right:var(--pr-xl)}.xl\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.xl\:bui-pr-1{padding-right:var(--bui-space-1)}.xl\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.xl\:bui-pr-2{padding-right:var(--bui-space-2)}.xl\:bui-pr-3{padding-right:var(--bui-space-3)}.xl\:bui-pr-4{padding-right:var(--bui-space-4)}.xl\:bui-pr-5{padding-right:var(--bui-space-5)}.xl\:bui-pr-6{padding-right:var(--bui-space-6)}.xl\:bui-pr-7{padding-right:var(--bui-space-7)}.xl\:bui-pr-8{padding-right:var(--bui-space-8)}.xl\:bui-pr-9{padding-right:var(--bui-space-9)}.xl\:bui-pr-10{padding-right:var(--bui-space-10)}.xl\:bui-pr-11{padding-right:var(--bui-space-11)}.xl\:bui-pr-12{padding-right:var(--bui-space-12)}.xl\:bui-pr-13{padding-right:var(--bui-space-13)}.xl\:bui-pr-14{padding-right:var(--bui-space-14)}}.bui-pt{padding-top:var(--pt)}.bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.bui-pt-1{padding-top:var(--bui-space-1)}.bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.bui-pt-2{padding-top:var(--bui-space-2)}.bui-pt-3{padding-top:var(--bui-space-3)}.bui-pt-4{padding-top:var(--bui-space-4)}.bui-pt-5{padding-top:var(--bui-space-5)}.bui-pt-6{padding-top:var(--bui-space-6)}.bui-pt-7{padding-top:var(--bui-space-7)}.bui-pt-8{padding-top:var(--bui-space-8)}.bui-pt-9{padding-top:var(--bui-space-9)}.bui-pt-10{padding-top:var(--bui-space-10)}.bui-pt-11{padding-top:var(--bui-space-11)}.bui-pt-12{padding-top:var(--bui-space-12)}.bui-pt-13{padding-top:var(--bui-space-13)}.bui-pt-14{padding-top:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pt{padding-top:var(--pt-xs)}.xs\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.xs\:bui-pt-1{padding-top:var(--bui-space-1)}.xs\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.xs\:bui-pt-2{padding-top:var(--bui-space-2)}.xs\:bui-pt-3{padding-top:var(--bui-space-3)}.xs\:bui-pt-4{padding-top:var(--bui-space-4)}.xs\:bui-pt-5{padding-top:var(--bui-space-5)}.xs\:bui-pt-6{padding-top:var(--bui-space-6)}.xs\:bui-pt-7{padding-top:var(--bui-space-7)}.xs\:bui-pt-8{padding-top:var(--bui-space-8)}.xs\:bui-pt-9{padding-top:var(--bui-space-9)}.xs\:bui-pt-10{padding-top:var(--bui-space-10)}.xs\:bui-pt-11{padding-top:var(--bui-space-11)}.xs\:bui-pt-12{padding-top:var(--bui-space-12)}.xs\:bui-pt-13{padding-top:var(--bui-space-13)}.xs\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pt{padding-top:var(--pt-sm)}.sm\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.sm\:bui-pt-1{padding-top:var(--bui-space-1)}.sm\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.sm\:bui-pt-2{padding-top:var(--bui-space-2)}.sm\:bui-pt-3{padding-top:var(--bui-space-3)}.sm\:bui-pt-4{padding-top:var(--bui-space-4)}.sm\:bui-pt-5{padding-top:var(--bui-space-5)}.sm\:bui-pt-6{padding-top:var(--bui-space-6)}.sm\:bui-pt-7{padding-top:var(--bui-space-7)}.sm\:bui-pt-8{padding-top:var(--bui-space-8)}.sm\:bui-pt-9{padding-top:var(--bui-space-9)}.sm\:bui-pt-10{padding-top:var(--bui-space-10)}.sm\:bui-pt-11{padding-top:var(--bui-space-11)}.sm\:bui-pt-12{padding-top:var(--bui-space-12)}.sm\:bui-pt-13{padding-top:var(--bui-space-13)}.sm\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pt{padding-top:var(--pt-md)}.md\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.md\:bui-pt-1{padding-top:var(--bui-space-1)}.md\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.md\:bui-pt-2{padding-top:var(--bui-space-2)}.md\:bui-pt-3{padding-top:var(--bui-space-3)}.md\:bui-pt-4{padding-top:var(--bui-space-4)}.md\:bui-pt-5{padding-top:var(--bui-space-5)}.md\:bui-pt-6{padding-top:var(--bui-space-6)}.md\:bui-pt-7{padding-top:var(--bui-space-7)}.md\:bui-pt-8{padding-top:var(--bui-space-8)}.md\:bui-pt-9{padding-top:var(--bui-space-9)}.md\:bui-pt-10{padding-top:var(--bui-space-10)}.md\:bui-pt-11{padding-top:var(--bui-space-11)}.md\:bui-pt-12{padding-top:var(--bui-space-12)}.md\:bui-pt-13{padding-top:var(--bui-space-13)}.md\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pt{padding-top:var(--pt-lg)}.lg\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.lg\:bui-pt-1{padding-top:var(--bui-space-1)}.lg\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.lg\:bui-pt-2{padding-top:var(--bui-space-2)}.lg\:bui-pt-3{padding-top:var(--bui-space-3)}.lg\:bui-pt-4{padding-top:var(--bui-space-4)}.lg\:bui-pt-5{padding-top:var(--bui-space-5)}.lg\:bui-pt-6{padding-top:var(--bui-space-6)}.lg\:bui-pt-7{padding-top:var(--bui-space-7)}.lg\:bui-pt-8{padding-top:var(--bui-space-8)}.lg\:bui-pt-9{padding-top:var(--bui-space-9)}.lg\:bui-pt-10{padding-top:var(--bui-space-10)}.lg\:bui-pt-11{padding-top:var(--bui-space-11)}.lg\:bui-pt-12{padding-top:var(--bui-space-12)}.lg\:bui-pt-13{padding-top:var(--bui-space-13)}.lg\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pt{padding-top:var(--pt-xl)}.xl\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.xl\:bui-pt-1{padding-top:var(--bui-space-1)}.xl\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.xl\:bui-pt-2{padding-top:var(--bui-space-2)}.xl\:bui-pt-3{padding-top:var(--bui-space-3)}.xl\:bui-pt-4{padding-top:var(--bui-space-4)}.xl\:bui-pt-5{padding-top:var(--bui-space-5)}.xl\:bui-pt-6{padding-top:var(--bui-space-6)}.xl\:bui-pt-7{padding-top:var(--bui-space-7)}.xl\:bui-pt-8{padding-top:var(--bui-space-8)}.xl\:bui-pt-9{padding-top:var(--bui-space-9)}.xl\:bui-pt-10{padding-top:var(--bui-space-10)}.xl\:bui-pt-11{padding-top:var(--bui-space-11)}.xl\:bui-pt-12{padding-top:var(--bui-space-12)}.xl\:bui-pt-13{padding-top:var(--bui-space-13)}.xl\:bui-pt-14{padding-top:var(--bui-space-14)}}.bui-pb{padding-bottom:var(--pb)}.bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.bui-pb-1{padding-bottom:var(--bui-space-1)}.bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.bui-pb-2{padding-bottom:var(--bui-space-2)}.bui-pb-3{padding-bottom:var(--bui-space-3)}.bui-pb-4{padding-bottom:var(--bui-space-4)}.bui-pb-5{padding-bottom:var(--bui-space-5)}.bui-pb-6{padding-bottom:var(--bui-space-6)}.bui-pb-7{padding-bottom:var(--bui-space-7)}.bui-pb-8{padding-bottom:var(--bui-space-8)}.bui-pb-9{padding-bottom:var(--bui-space-9)}.bui-pb-10{padding-bottom:var(--bui-space-10)}.bui-pb-11{padding-bottom:var(--bui-space-11)}.bui-pb-12{padding-bottom:var(--bui-space-12)}.bui-pb-13{padding-bottom:var(--bui-space-13)}.bui-pb-14{padding-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pb{padding-bottom:var(--pb-xs)}.xs\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.xs\:bui-pb-1{padding-bottom:var(--bui-space-1)}.xs\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.xs\:bui-pb-2{padding-bottom:var(--bui-space-2)}.xs\:bui-pb-3{padding-bottom:var(--bui-space-3)}.xs\:bui-pb-4{padding-bottom:var(--bui-space-4)}.xs\:bui-pb-5{padding-bottom:var(--bui-space-5)}.xs\:bui-pb-6{padding-bottom:var(--bui-space-6)}.xs\:bui-pb-7{padding-bottom:var(--bui-space-7)}.xs\:bui-pb-8{padding-bottom:var(--bui-space-8)}.xs\:bui-pb-9{padding-bottom:var(--bui-space-9)}.xs\:bui-pb-10{padding-bottom:var(--bui-space-10)}.xs\:bui-pb-11{padding-bottom:var(--bui-space-11)}.xs\:bui-pb-12{padding-bottom:var(--bui-space-12)}.xs\:bui-pb-13{padding-bottom:var(--bui-space-13)}.xs\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pb{padding-bottom:var(--pb-sm)}.sm\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.sm\:bui-pb-1{padding-bottom:var(--bui-space-1)}.sm\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.sm\:bui-pb-2{padding-bottom:var(--bui-space-2)}.sm\:bui-pb-3{padding-bottom:var(--bui-space-3)}.sm\:bui-pb-4{padding-bottom:var(--bui-space-4)}.sm\:bui-pb-5{padding-bottom:var(--bui-space-5)}.sm\:bui-pb-6{padding-bottom:var(--bui-space-6)}.sm\:bui-pb-7{padding-bottom:var(--bui-space-7)}.sm\:bui-pb-8{padding-bottom:var(--bui-space-8)}.sm\:bui-pb-9{padding-bottom:var(--bui-space-9)}.sm\:bui-pb-10{padding-bottom:var(--bui-space-10)}.sm\:bui-pb-11{padding-bottom:var(--bui-space-11)}.sm\:bui-pb-12{padding-bottom:var(--bui-space-12)}.sm\:bui-pb-13{padding-bottom:var(--bui-space-13)}.sm\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pb{padding-bottom:var(--pb-md)}.md\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.md\:bui-pb-1{padding-bottom:var(--bui-space-1)}.md\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.md\:bui-pb-2{padding-bottom:var(--bui-space-2)}.md\:bui-pb-3{padding-bottom:var(--bui-space-3)}.md\:bui-pb-4{padding-bottom:var(--bui-space-4)}.md\:bui-pb-5{padding-bottom:var(--bui-space-5)}.md\:bui-pb-6{padding-bottom:var(--bui-space-6)}.md\:bui-pb-7{padding-bottom:var(--bui-space-7)}.md\:bui-pb-8{padding-bottom:var(--bui-space-8)}.md\:bui-pb-9{padding-bottom:var(--bui-space-9)}.md\:bui-pb-10{padding-bottom:var(--bui-space-10)}.md\:bui-pb-11{padding-bottom:var(--bui-space-11)}.md\:bui-pb-12{padding-bottom:var(--bui-space-12)}.md\:bui-pb-13{padding-bottom:var(--bui-space-13)}.md\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pb{padding-bottom:var(--pb-lg)}.lg\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.lg\:bui-pb-1{padding-bottom:var(--bui-space-1)}.lg\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.lg\:bui-pb-2{padding-bottom:var(--bui-space-2)}.lg\:bui-pb-3{padding-bottom:var(--bui-space-3)}.lg\:bui-pb-4{padding-bottom:var(--bui-space-4)}.lg\:bui-pb-5{padding-bottom:var(--bui-space-5)}.lg\:bui-pb-6{padding-bottom:var(--bui-space-6)}.lg\:bui-pb-7{padding-bottom:var(--bui-space-7)}.lg\:bui-pb-8{padding-bottom:var(--bui-space-8)}.lg\:bui-pb-9{padding-bottom:var(--bui-space-9)}.lg\:bui-pb-10{padding-bottom:var(--bui-space-10)}.lg\:bui-pb-11{padding-bottom:var(--bui-space-11)}.lg\:bui-pb-12{padding-bottom:var(--bui-space-12)}.lg\:bui-pb-13{padding-bottom:var(--bui-space-13)}.lg\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pb{padding-bottom:var(--pb-xl)}.xl\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.xl\:bui-pb-1{padding-bottom:var(--bui-space-1)}.xl\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.xl\:bui-pb-2{padding-bottom:var(--bui-space-2)}.xl\:bui-pb-3{padding-bottom:var(--bui-space-3)}.xl\:bui-pb-4{padding-bottom:var(--bui-space-4)}.xl\:bui-pb-5{padding-bottom:var(--bui-space-5)}.xl\:bui-pb-6{padding-bottom:var(--bui-space-6)}.xl\:bui-pb-7{padding-bottom:var(--bui-space-7)}.xl\:bui-pb-8{padding-bottom:var(--bui-space-8)}.xl\:bui-pb-9{padding-bottom:var(--bui-space-9)}.xl\:bui-pb-10{padding-bottom:var(--bui-space-10)}.xl\:bui-pb-11{padding-bottom:var(--bui-space-11)}.xl\:bui-pb-12{padding-bottom:var(--bui-space-12)}.xl\:bui-pb-13{padding-bottom:var(--bui-space-13)}.xl\:bui-pb-14{padding-bottom:var(--bui-space-14)}}.bui-py{padding-top:var(--py);padding-bottom:var(--py)}.bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-py{padding-top:var(--py-xs);padding-bottom:var(--py-xs)}.xs\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.xs\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.xs\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.xs\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.xs\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.xs\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.xs\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.xs\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.xs\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.xs\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.xs\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.xs\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.xs\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.xs\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.xs\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.xs\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-py{padding-top:var(--py-sm);padding-bottom:var(--py-sm)}.sm\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.sm\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.sm\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.sm\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.sm\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.sm\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.sm\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.sm\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.sm\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.sm\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.sm\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.sm\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.sm\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.sm\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.sm\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.sm\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-py{padding-top:var(--py-md);padding-bottom:var(--py-md)}.md\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.md\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.md\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.md\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.md\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.md\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.md\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.md\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.md\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.md\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.md\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.md\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.md\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.md\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.md\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.md\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-py{padding-top:var(--py-lg);padding-bottom:var(--py-lg)}.lg\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.lg\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.lg\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.lg\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.lg\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.lg\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.lg\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.lg\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.lg\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.lg\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.lg\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.lg\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.lg\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.lg\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.lg\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.lg\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-py{padding-top:var(--py-xl);padding-bottom:var(--py-xl)}.xl\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.xl\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.xl\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.xl\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.xl\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.xl\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.xl\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.xl\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.xl\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.xl\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.xl\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.xl\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.xl\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.xl\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.xl\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.xl\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}.bui-px{padding-left:var(--px);padding-right:var(--px)}.bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-px{padding-left:var(--px-xs);padding-right:var(--px-xs)}.xs\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.xs\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.xs\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.xs\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.xs\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.xs\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.xs\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.xs\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.xs\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.xs\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.xs\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.xs\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.xs\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.xs\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.xs\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.xs\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-px{padding-left:var(--px-sm);padding-right:var(--px-sm)}.sm\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.sm\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.sm\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.sm\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.sm\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.sm\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.sm\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.sm\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.sm\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.sm\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.sm\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.sm\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.sm\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.sm\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.sm\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.sm\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-px{padding-left:var(--px-md);padding-right:var(--px-md)}.md\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.md\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.md\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.md\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.md\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.md\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.md\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.md\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.md\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.md\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.md\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.md\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.md\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.md\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.md\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.md\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-px{padding-left:var(--px-lg);padding-right:var(--px-lg)}.lg\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.lg\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.lg\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.lg\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.lg\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.lg\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.lg\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.lg\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.lg\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.lg\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.lg\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.lg\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.lg\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.lg\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.lg\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.lg\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-px{padding-left:var(--px-xl);padding-right:var(--px-xl)}.xl\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.xl\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.xl\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.xl\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.xl\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.xl\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.xl\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.xl\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.xl\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.xl\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.xl\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.xl\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.xl\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.xl\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.xl\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.xl\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}.bui-m{margin:var(--m)}.bui-m-0\.5{margin:var(--bui-space-0_5)}.bui-m-1{margin:var(--bui-space-1)}.bui-m-1\.5{margin:var(--bui-space-1_5)}.bui-m-2{margin:var(--bui-space-2)}.bui-m-3{margin:var(--bui-space-3)}.bui-m-4{margin:var(--bui-space-4)}.bui-m-5{margin:var(--bui-space-5)}.bui-m-6{margin:var(--bui-space-6)}.bui-m-7{margin:var(--bui-space-7)}.bui-m-8{margin:var(--bui-space-8)}.bui-m-9{margin:var(--bui-space-9)}.bui-m-10{margin:var(--bui-space-10)}.bui-m-11{margin:var(--bui-space-11)}.bui-m-12{margin:var(--bui-space-12)}.bui-m-13{margin:var(--bui-space-13)}.bui-m-14{margin:var(--bui-space-14)}@media (width>=640px){.xs\:bui-m{margin:var(--p-xs)}.xs\:bui-m-0\.5{margin:var(--bui-space-0_5)}.xs\:bui-m-1{margin:var(--bui-space-1)}.xs\:bui-m-1\.5{margin:var(--bui-space-1_5)}.xs\:bui-m-2{margin:var(--bui-space-2)}.xs\:bui-m-3{margin:var(--bui-space-3)}.xs\:bui-m-4{margin:var(--bui-space-4)}.xs\:bui-m-5{margin:var(--bui-space-5)}.xs\:bui-m-6{margin:var(--bui-space-6)}.xs\:bui-m-7{margin:var(--bui-space-7)}.xs\:bui-m-8{margin:var(--bui-space-8)}.xs\:bui-m-9{margin:var(--bui-space-9)}.xs\:bui-m-10{margin:var(--bui-space-10)}.xs\:bui-m-11{margin:var(--bui-space-11)}.xs\:bui-m-12{margin:var(--bui-space-12)}.xs\:bui-m-13{margin:var(--bui-space-13)}.xs\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-m{margin:var(--p-sm)}.sm\:bui-m-0\.5{margin:var(--bui-space-0_5)}.sm\:bui-m-1{margin:var(--bui-space-1)}.sm\:bui-m-1\.5{margin:var(--bui-space-1_5)}.sm\:bui-m-2{margin:var(--bui-space-2)}.sm\:bui-m-3{margin:var(--bui-space-3)}.sm\:bui-m-4{margin:var(--bui-space-4)}.sm\:bui-m-5{margin:var(--bui-space-5)}.sm\:bui-m-6{margin:var(--bui-space-6)}.sm\:bui-m-7{margin:var(--bui-space-7)}.sm\:bui-m-8{margin:var(--bui-space-8)}.sm\:bui-m-9{margin:var(--bui-space-9)}.sm\:bui-m-10{margin:var(--bui-space-10)}.sm\:bui-m-11{margin:var(--bui-space-11)}.sm\:bui-m-12{margin:var(--bui-space-12)}.sm\:bui-m-13{margin:var(--bui-space-13)}.sm\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-m{margin:var(--p-md)}.md\:bui-m-0\.5{margin:var(--bui-space-0_5)}.md\:bui-m-1{margin:var(--bui-space-1)}.md\:bui-m-1\.5{margin:var(--bui-space-1_5)}.md\:bui-m-2{margin:var(--bui-space-2)}.md\:bui-m-3{margin:var(--bui-space-3)}.md\:bui-m-4{margin:var(--bui-space-4)}.md\:bui-m-5{margin:var(--bui-space-5)}.md\:bui-m-6{margin:var(--bui-space-6)}.md\:bui-m-7{margin:var(--bui-space-7)}.md\:bui-m-8{margin:var(--bui-space-8)}.md\:bui-m-9{margin:var(--bui-space-9)}.md\:bui-m-10{margin:var(--bui-space-10)}.md\:bui-m-11{margin:var(--bui-space-11)}.md\:bui-m-12{margin:var(--bui-space-12)}.md\:bui-m-13{margin:var(--bui-space-13)}.md\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-m{margin:var(--p-lg)}.lg\:bui-m-0\.5{margin:var(--bui-space-0_5)}.lg\:bui-m-1{margin:var(--bui-space-1)}.lg\:bui-m-1\.5{margin:var(--bui-space-1_5)}.lg\:bui-m-2{margin:var(--bui-space-2)}.lg\:bui-m-3{margin:var(--bui-space-3)}.lg\:bui-m-4{margin:var(--bui-space-4)}.lg\:bui-m-5{margin:var(--bui-space-5)}.lg\:bui-m-6{margin:var(--bui-space-6)}.lg\:bui-m-7{margin:var(--bui-space-7)}.lg\:bui-m-8{margin:var(--bui-space-8)}.lg\:bui-m-9{margin:var(--bui-space-9)}.lg\:bui-m-10{margin:var(--bui-space-10)}.lg\:bui-m-11{margin:var(--bui-space-11)}.lg\:bui-m-12{margin:var(--bui-space-12)}.lg\:bui-m-13{margin:var(--bui-space-13)}.lg\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-m{margin:var(--p-xl)}.xl\:bui-m-0\.5{margin:var(--bui-space-0_5)}.xl\:bui-m-1{margin:var(--bui-space-1)}.xl\:bui-m-1\.5{margin:var(--bui-space-1_5)}.xl\:bui-m-2{margin:var(--bui-space-2)}.xl\:bui-m-3{margin:var(--bui-space-3)}.xl\:bui-m-4{margin:var(--bui-space-4)}.xl\:bui-m-5{margin:var(--bui-space-5)}.xl\:bui-m-6{margin:var(--bui-space-6)}.xl\:bui-m-7{margin:var(--bui-space-7)}.xl\:bui-m-8{margin:var(--bui-space-8)}.xl\:bui-m-9{margin:var(--bui-space-9)}.xl\:bui-m-10{margin:var(--bui-space-10)}.xl\:bui-m-11{margin:var(--bui-space-11)}.xl\:bui-m-12{margin:var(--bui-space-12)}.xl\:bui-m-13{margin:var(--bui-space-13)}.xl\:bui-m-14{margin:var(--bui-space-14)}}.bui-ml{margin-left:var(--ml)}.bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.bui-ml-1{margin-left:var(--bui-space-1)}.bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.bui-ml-2{margin-left:var(--bui-space-2)}.bui-ml-3{margin-left:var(--bui-space-3)}.bui-ml-4{margin-left:var(--bui-space-4)}.bui-ml-5{margin-left:var(--bui-space-5)}.bui-ml-6{margin-left:var(--bui-space-6)}.bui-ml-7{margin-left:var(--bui-space-7)}.bui-ml-8{margin-left:var(--bui-space-8)}.bui-ml-9{margin-left:var(--bui-space-9)}.bui-ml-10{margin-left:var(--bui-space-10)}.bui-ml-11{margin-left:var(--bui-space-11)}.bui-ml-12{margin-left:var(--bui-space-12)}.bui-ml-13{margin-left:var(--bui-space-13)}.bui-ml-14{margin-left:var(--bui-space-14)}@media (width>=640px){.xs\:bui-ml{margin-left:var(--ml-xs)}.xs\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.xs\:bui-ml-1{margin-left:var(--bui-space-1)}.xs\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.xs\:bui-ml-2{margin-left:var(--bui-space-2)}.xs\:bui-ml-3{margin-left:var(--bui-space-3)}.xs\:bui-ml-4{margin-left:var(--bui-space-4)}.xs\:bui-ml-5{margin-left:var(--bui-space-5)}.xs\:bui-ml-6{margin-left:var(--bui-space-6)}.xs\:bui-ml-7{margin-left:var(--bui-space-7)}.xs\:bui-ml-8{margin-left:var(--bui-space-8)}.xs\:bui-ml-9{margin-left:var(--bui-space-9)}.xs\:bui-ml-10{margin-left:var(--bui-space-10)}.xs\:bui-ml-11{margin-left:var(--bui-space-11)}.xs\:bui-ml-12{margin-left:var(--bui-space-12)}.xs\:bui-ml-13{margin-left:var(--bui-space-13)}.xs\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-ml{margin-left:var(--ml-sm)}.sm\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.sm\:bui-ml-1{margin-left:var(--bui-space-1)}.sm\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.sm\:bui-ml-2{margin-left:var(--bui-space-2)}.sm\:bui-ml-3{margin-left:var(--bui-space-3)}.sm\:bui-ml-4{margin-left:var(--bui-space-4)}.sm\:bui-ml-5{margin-left:var(--bui-space-5)}.sm\:bui-ml-6{margin-left:var(--bui-space-6)}.sm\:bui-ml-7{margin-left:var(--bui-space-7)}.sm\:bui-ml-8{margin-left:var(--bui-space-8)}.sm\:bui-ml-9{margin-left:var(--bui-space-9)}.sm\:bui-ml-10{margin-left:var(--bui-space-10)}.sm\:bui-ml-11{margin-left:var(--bui-space-11)}.sm\:bui-ml-12{margin-left:var(--bui-space-12)}.sm\:bui-ml-13{margin-left:var(--bui-space-13)}.sm\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-ml{margin-left:var(--ml-md)}.md\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.md\:bui-ml-1{margin-left:var(--bui-space-1)}.md\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.md\:bui-ml-2{margin-left:var(--bui-space-2)}.md\:bui-ml-3{margin-left:var(--bui-space-3)}.md\:bui-ml-4{margin-left:var(--bui-space-4)}.md\:bui-ml-5{margin-left:var(--bui-space-5)}.md\:bui-ml-6{margin-left:var(--bui-space-6)}.md\:bui-ml-7{margin-left:var(--bui-space-7)}.md\:bui-ml-8{margin-left:var(--bui-space-8)}.md\:bui-ml-9{margin-left:var(--bui-space-9)}.md\:bui-ml-10{margin-left:var(--bui-space-10)}.md\:bui-ml-11{margin-left:var(--bui-space-11)}.md\:bui-ml-12{margin-left:var(--bui-space-12)}.md\:bui-ml-13{margin-left:var(--bui-space-13)}.md\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-ml{margin-left:var(--ml-lg)}.lg\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.lg\:bui-ml-1{margin-left:var(--bui-space-1)}.lg\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.lg\:bui-ml-2{margin-left:var(--bui-space-2)}.lg\:bui-ml-3{margin-left:var(--bui-space-3)}.lg\:bui-ml-4{margin-left:var(--bui-space-4)}.lg\:bui-ml-5{margin-left:var(--bui-space-5)}.lg\:bui-ml-6{margin-left:var(--bui-space-6)}.lg\:bui-ml-7{margin-left:var(--bui-space-7)}.lg\:bui-ml-8{margin-left:var(--bui-space-8)}.lg\:bui-ml-9{margin-left:var(--bui-space-9)}.lg\:bui-ml-10{margin-left:var(--bui-space-10)}.lg\:bui-ml-11{margin-left:var(--bui-space-11)}.lg\:bui-ml-12{margin-left:var(--bui-space-12)}.lg\:bui-ml-13{margin-left:var(--bui-space-13)}.lg\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-ml{margin-left:var(--ml-xl)}.xl\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.xl\:bui-ml-1{margin-left:var(--bui-space-1)}.xl\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.xl\:bui-ml-2{margin-left:var(--bui-space-2)}.xl\:bui-ml-3{margin-left:var(--bui-space-3)}.xl\:bui-ml-4{margin-left:var(--bui-space-4)}.xl\:bui-ml-5{margin-left:var(--bui-space-5)}.xl\:bui-ml-6{margin-left:var(--bui-space-6)}.xl\:bui-ml-7{margin-left:var(--bui-space-7)}.xl\:bui-ml-8{margin-left:var(--bui-space-8)}.xl\:bui-ml-9{margin-left:var(--bui-space-9)}.xl\:bui-ml-10{margin-left:var(--bui-space-10)}.xl\:bui-ml-11{margin-left:var(--bui-space-11)}.xl\:bui-ml-12{margin-left:var(--bui-space-12)}.xl\:bui-ml-13{margin-left:var(--bui-space-13)}.xl\:bui-ml-14{margin-left:var(--bui-space-14)}}.bui-mr{margin-right:var(--mr)}.bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.bui-mr-1{margin-right:var(--bui-space-1)}.bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.bui-mr-2{margin-right:var(--bui-space-2)}.bui-mr-3{margin-right:var(--bui-space-3)}.bui-mr-4{margin-right:var(--bui-space-4)}.bui-mr-5{margin-right:var(--bui-space-5)}.bui-mr-6{margin-right:var(--bui-space-6)}.bui-mr-7{margin-right:var(--bui-space-7)}.bui-mr-8{margin-right:var(--bui-space-8)}.bui-mr-9{margin-right:var(--bui-space-9)}.bui-mr-10{margin-right:var(--bui-space-10)}.bui-mr-11{margin-right:var(--bui-space-11)}.bui-mr-12{margin-right:var(--bui-space-12)}.bui-mr-13{margin-right:var(--bui-space-13)}.bui-mr-14{margin-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mr{margin-right:var(--mr-xs)}.xs\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.xs\:bui-mr-1{margin-right:var(--bui-space-1)}.xs\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.xs\:bui-mr-2{margin-right:var(--bui-space-2)}.xs\:bui-mr-3{margin-right:var(--bui-space-3)}.xs\:bui-mr-4{margin-right:var(--bui-space-4)}.xs\:bui-mr-5{margin-right:var(--bui-space-5)}.xs\:bui-mr-6{margin-right:var(--bui-space-6)}.xs\:bui-mr-7{margin-right:var(--bui-space-7)}.xs\:bui-mr-8{margin-right:var(--bui-space-8)}.xs\:bui-mr-9{margin-right:var(--bui-space-9)}.xs\:bui-mr-10{margin-right:var(--bui-space-10)}.xs\:bui-mr-11{margin-right:var(--bui-space-11)}.xs\:bui-mr-12{margin-right:var(--bui-space-12)}.xs\:bui-mr-13{margin-right:var(--bui-space-13)}.xs\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mr{margin-right:var(--mr-sm)}.sm\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.sm\:bui-mr-1{margin-right:var(--bui-space-1)}.sm\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.sm\:bui-mr-2{margin-right:var(--bui-space-2)}.sm\:bui-mr-3{margin-right:var(--bui-space-3)}.sm\:bui-mr-4{margin-right:var(--bui-space-4)}.sm\:bui-mr-5{margin-right:var(--bui-space-5)}.sm\:bui-mr-6{margin-right:var(--bui-space-6)}.sm\:bui-mr-7{margin-right:var(--bui-space-7)}.sm\:bui-mr-8{margin-right:var(--bui-space-8)}.sm\:bui-mr-9{margin-right:var(--bui-space-9)}.sm\:bui-mr-10{margin-right:var(--bui-space-10)}.sm\:bui-mr-11{margin-right:var(--bui-space-11)}.sm\:bui-mr-12{margin-right:var(--bui-space-12)}.sm\:bui-mr-13{margin-right:var(--bui-space-13)}.sm\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mr{margin-right:var(--mr-md)}.md\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.md\:bui-mr-1{margin-right:var(--bui-space-1)}.md\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.md\:bui-mr-2{margin-right:var(--bui-space-2)}.md\:bui-mr-3{margin-right:var(--bui-space-3)}.md\:bui-mr-4{margin-right:var(--bui-space-4)}.md\:bui-mr-5{margin-right:var(--bui-space-5)}.md\:bui-mr-6{margin-right:var(--bui-space-6)}.md\:bui-mr-7{margin-right:var(--bui-space-7)}.md\:bui-mr-8{margin-right:var(--bui-space-8)}.md\:bui-mr-9{margin-right:var(--bui-space-9)}.md\:bui-mr-10{margin-right:var(--bui-space-10)}.md\:bui-mr-11{margin-right:var(--bui-space-11)}.md\:bui-mr-12{margin-right:var(--bui-space-12)}.md\:bui-mr-13{margin-right:var(--bui-space-13)}.md\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mr{margin-right:var(--mr-lg)}.lg\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.lg\:bui-mr-1{margin-right:var(--bui-space-1)}.lg\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.lg\:bui-mr-2{margin-right:var(--bui-space-2)}.lg\:bui-mr-3{margin-right:var(--bui-space-3)}.lg\:bui-mr-4{margin-right:var(--bui-space-4)}.lg\:bui-mr-5{margin-right:var(--bui-space-5)}.lg\:bui-mr-6{margin-right:var(--bui-space-6)}.lg\:bui-mr-7{margin-right:var(--bui-space-7)}.lg\:bui-mr-8{margin-right:var(--bui-space-8)}.lg\:bui-mr-9{margin-right:var(--bui-space-9)}.lg\:bui-mr-10{margin-right:var(--bui-space-10)}.lg\:bui-mr-11{margin-right:var(--bui-space-11)}.lg\:bui-mr-12{margin-right:var(--bui-space-12)}.lg\:bui-mr-13{margin-right:var(--bui-space-13)}.lg\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mr{margin-right:var(--mr-xl)}.xl\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.xl\:bui-mr-1{margin-right:var(--bui-space-1)}.xl\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.xl\:bui-mr-2{margin-right:var(--bui-space-2)}.xl\:bui-mr-3{margin-right:var(--bui-space-3)}.xl\:bui-mr-4{margin-right:var(--bui-space-4)}.xl\:bui-mr-5{margin-right:var(--bui-space-5)}.xl\:bui-mr-6{margin-right:var(--bui-space-6)}.xl\:bui-mr-7{margin-right:var(--bui-space-7)}.xl\:bui-mr-8{margin-right:var(--bui-space-8)}.xl\:bui-mr-9{margin-right:var(--bui-space-9)}.xl\:bui-mr-10{margin-right:var(--bui-space-10)}.xl\:bui-mr-11{margin-right:var(--bui-space-11)}.xl\:bui-mr-12{margin-right:var(--bui-space-12)}.xl\:bui-mr-13{margin-right:var(--bui-space-13)}.xl\:bui-mr-14{margin-right:var(--bui-space-14)}}.bui-mt{margin-top:var(--mt)}.bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.bui-mt-1{margin-top:var(--bui-space-1)}.bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.bui-mt-2{margin-top:var(--bui-space-2)}.bui-mt-3{margin-top:var(--bui-space-3)}.bui-mt-4{margin-top:var(--bui-space-4)}.bui-mt-5{margin-top:var(--bui-space-5)}.bui-mt-6{margin-top:var(--bui-space-6)}.bui-mt-7{margin-top:var(--bui-space-7)}.bui-mt-8{margin-top:var(--bui-space-8)}.bui-mt-9{margin-top:var(--bui-space-9)}.bui-mt-10{margin-top:var(--bui-space-10)}.bui-mt-11{margin-top:var(--bui-space-11)}.bui-mt-12{margin-top:var(--bui-space-12)}.bui-mt-13{margin-top:var(--bui-space-13)}.bui-mt-14{margin-top:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mt{margin-top:var(--mt-xs)}.xs\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.xs\:bui-mt-1{margin-top:var(--bui-space-1)}.xs\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.xs\:bui-mt-2{margin-top:var(--bui-space-2)}.xs\:bui-mt-3{margin-top:var(--bui-space-3)}.xs\:bui-mt-4{margin-top:var(--bui-space-4)}.xs\:bui-mt-5{margin-top:var(--bui-space-5)}.xs\:bui-mt-6{margin-top:var(--bui-space-6)}.xs\:bui-mt-7{margin-top:var(--bui-space-7)}.xs\:bui-mt-8{margin-top:var(--bui-space-8)}.xs\:bui-mt-9{margin-top:var(--bui-space-9)}.xs\:bui-mt-10{margin-top:var(--bui-space-10)}.xs\:bui-mt-11{margin-top:var(--bui-space-11)}.xs\:bui-mt-12{margin-top:var(--bui-space-12)}.xs\:bui-mt-13{margin-top:var(--bui-space-13)}.xs\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mt{margin-top:var(--mt-sm)}.sm\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.sm\:bui-mt-1{margin-top:var(--bui-space-1)}.sm\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.sm\:bui-mt-2{margin-top:var(--bui-space-2)}.sm\:bui-mt-3{margin-top:var(--bui-space-3)}.sm\:bui-mt-4{margin-top:var(--bui-space-4)}.sm\:bui-mt-5{margin-top:var(--bui-space-5)}.sm\:bui-mt-6{margin-top:var(--bui-space-6)}.sm\:bui-mt-7{margin-top:var(--bui-space-7)}.sm\:bui-mt-8{margin-top:var(--bui-space-8)}.sm\:bui-mt-9{margin-top:var(--bui-space-9)}.sm\:bui-mt-10{margin-top:var(--bui-space-10)}.sm\:bui-mt-11{margin-top:var(--bui-space-11)}.sm\:bui-mt-12{margin-top:var(--bui-space-12)}.sm\:bui-mt-13{margin-top:var(--bui-space-13)}.sm\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mt{margin-top:var(--mt-md)}.md\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.md\:bui-mt-1{margin-top:var(--bui-space-1)}.md\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.md\:bui-mt-2{margin-top:var(--bui-space-2)}.md\:bui-mt-3{margin-top:var(--bui-space-3)}.md\:bui-mt-4{margin-top:var(--bui-space-4)}.md\:bui-mt-5{margin-top:var(--bui-space-5)}.md\:bui-mt-6{margin-top:var(--bui-space-6)}.md\:bui-mt-7{margin-top:var(--bui-space-7)}.md\:bui-mt-8{margin-top:var(--bui-space-8)}.md\:bui-mt-9{margin-top:var(--bui-space-9)}.md\:bui-mt-10{margin-top:var(--bui-space-10)}.md\:bui-mt-11{margin-top:var(--bui-space-11)}.md\:bui-mt-12{margin-top:var(--bui-space-12)}.md\:bui-mt-13{margin-top:var(--bui-space-13)}.md\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mt{margin-top:var(--mt-lg)}.lg\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.lg\:bui-mt-1{margin-top:var(--bui-space-1)}.lg\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.lg\:bui-mt-2{margin-top:var(--bui-space-2)}.lg\:bui-mt-3{margin-top:var(--bui-space-3)}.lg\:bui-mt-4{margin-top:var(--bui-space-4)}.lg\:bui-mt-5{margin-top:var(--bui-space-5)}.lg\:bui-mt-6{margin-top:var(--bui-space-6)}.lg\:bui-mt-7{margin-top:var(--bui-space-7)}.lg\:bui-mt-8{margin-top:var(--bui-space-8)}.lg\:bui-mt-9{margin-top:var(--bui-space-9)}.lg\:bui-mt-10{margin-top:var(--bui-space-10)}.lg\:bui-mt-11{margin-top:var(--bui-space-11)}.lg\:bui-mt-12{margin-top:var(--bui-space-12)}.lg\:bui-mt-13{margin-top:var(--bui-space-13)}.lg\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mt{margin-top:var(--mt-xl)}.xl\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.xl\:bui-mt-1{margin-top:var(--bui-space-1)}.xl\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.xl\:bui-mt-2{margin-top:var(--bui-space-2)}.xl\:bui-mt-3{margin-top:var(--bui-space-3)}.xl\:bui-mt-4{margin-top:var(--bui-space-4)}.xl\:bui-mt-5{margin-top:var(--bui-space-5)}.xl\:bui-mt-6{margin-top:var(--bui-space-6)}.xl\:bui-mt-7{margin-top:var(--bui-space-7)}.xl\:bui-mt-8{margin-top:var(--bui-space-8)}.xl\:bui-mt-9{margin-top:var(--bui-space-9)}.xl\:bui-mt-10{margin-top:var(--bui-space-10)}.xl\:bui-mt-11{margin-top:var(--bui-space-11)}.xl\:bui-mt-12{margin-top:var(--bui-space-12)}.xl\:bui-mt-13{margin-top:var(--bui-space-13)}.xl\:bui-mt-14{margin-top:var(--bui-space-14)}}.bui-mb{margin-bottom:var(--mb)}.bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.bui-mb-1{margin-bottom:var(--bui-space-1)}.bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.bui-mb-2{margin-bottom:var(--bui-space-2)}.bui-mb-3{margin-bottom:var(--bui-space-3)}.bui-mb-4{margin-bottom:var(--bui-space-4)}.bui-mb-5{margin-bottom:var(--bui-space-5)}.bui-mb-6{margin-bottom:var(--bui-space-6)}.bui-mb-7{margin-bottom:var(--bui-space-7)}.bui-mb-8{margin-bottom:var(--bui-space-8)}.bui-mb-9{margin-bottom:var(--bui-space-9)}.bui-mb-10{margin-bottom:var(--bui-space-10)}.bui-mb-11{margin-bottom:var(--bui-space-11)}.bui-mb-12{margin-bottom:var(--bui-space-12)}.bui-mb-13{margin-bottom:var(--bui-space-13)}.bui-mb-14{margin-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mb{margin-bottom:var(--mb-xs)}.xs\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.xs\:bui-mb-1{margin-bottom:var(--bui-space-1)}.xs\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.xs\:bui-mb-2{margin-bottom:var(--bui-space-2)}.xs\:bui-mb-3{margin-bottom:var(--bui-space-3)}.xs\:bui-mb-4{margin-bottom:var(--bui-space-4)}.xs\:bui-mb-5{margin-bottom:var(--bui-space-5)}.xs\:bui-mb-6{margin-bottom:var(--bui-space-6)}.xs\:bui-mb-7{margin-bottom:var(--bui-space-7)}.xs\:bui-mb-8{margin-bottom:var(--bui-space-8)}.xs\:bui-mb-9{margin-bottom:var(--bui-space-9)}.xs\:bui-mb-10{margin-bottom:var(--bui-space-10)}.xs\:bui-mb-11{margin-bottom:var(--bui-space-11)}.xs\:bui-mb-12{margin-bottom:var(--bui-space-12)}.xs\:bui-mb-13{margin-bottom:var(--bui-space-13)}.xs\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mb{margin-bottom:var(--mb-sm)}.sm\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.sm\:bui-mb-1{margin-bottom:var(--bui-space-1)}.sm\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.sm\:bui-mb-2{margin-bottom:var(--bui-space-2)}.sm\:bui-mb-3{margin-bottom:var(--bui-space-3)}.sm\:bui-mb-4{margin-bottom:var(--bui-space-4)}.sm\:bui-mb-5{margin-bottom:var(--bui-space-5)}.sm\:bui-mb-6{margin-bottom:var(--bui-space-6)}.sm\:bui-mb-7{margin-bottom:var(--bui-space-7)}.sm\:bui-mb-8{margin-bottom:var(--bui-space-8)}.sm\:bui-mb-9{margin-bottom:var(--bui-space-9)}.sm\:bui-mb-10{margin-bottom:var(--bui-space-10)}.sm\:bui-mb-11{margin-bottom:var(--bui-space-11)}.sm\:bui-mb-12{margin-bottom:var(--bui-space-12)}.sm\:bui-mb-13{margin-bottom:var(--bui-space-13)}.sm\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mb{margin-bottom:var(--mb-md)}.md\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.md\:bui-mb-1{margin-bottom:var(--bui-space-1)}.md\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.md\:bui-mb-2{margin-bottom:var(--bui-space-2)}.md\:bui-mb-3{margin-bottom:var(--bui-space-3)}.md\:bui-mb-4{margin-bottom:var(--bui-space-4)}.md\:bui-mb-5{margin-bottom:var(--bui-space-5)}.md\:bui-mb-6{margin-bottom:var(--bui-space-6)}.md\:bui-mb-7{margin-bottom:var(--bui-space-7)}.md\:bui-mb-8{margin-bottom:var(--bui-space-8)}.md\:bui-mb-9{margin-bottom:var(--bui-space-9)}.md\:bui-mb-10{margin-bottom:var(--bui-space-10)}.md\:bui-mb-11{margin-bottom:var(--bui-space-11)}.md\:bui-mb-12{margin-bottom:var(--bui-space-12)}.md\:bui-mb-13{margin-bottom:var(--bui-space-13)}.md\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mb{margin-bottom:var(--mb-lg)}.lg\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.lg\:bui-mb-1{margin-bottom:var(--bui-space-1)}.lg\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.lg\:bui-mb-2{margin-bottom:var(--bui-space-2)}.lg\:bui-mb-3{margin-bottom:var(--bui-space-3)}.lg\:bui-mb-4{margin-bottom:var(--bui-space-4)}.lg\:bui-mb-5{margin-bottom:var(--bui-space-5)}.lg\:bui-mb-6{margin-bottom:var(--bui-space-6)}.lg\:bui-mb-7{margin-bottom:var(--bui-space-7)}.lg\:bui-mb-8{margin-bottom:var(--bui-space-8)}.lg\:bui-mb-9{margin-bottom:var(--bui-space-9)}.lg\:bui-mb-10{margin-bottom:var(--bui-space-10)}.lg\:bui-mb-11{margin-bottom:var(--bui-space-11)}.lg\:bui-mb-12{margin-bottom:var(--bui-space-12)}.lg\:bui-mb-13{margin-bottom:var(--bui-space-13)}.lg\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mb{margin-bottom:var(--mb-xl)}.xl\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.xl\:bui-mb-1{margin-bottom:var(--bui-space-1)}.xl\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.xl\:bui-mb-2{margin-bottom:var(--bui-space-2)}.xl\:bui-mb-3{margin-bottom:var(--bui-space-3)}.xl\:bui-mb-4{margin-bottom:var(--bui-space-4)}.xl\:bui-mb-5{margin-bottom:var(--bui-space-5)}.xl\:bui-mb-6{margin-bottom:var(--bui-space-6)}.xl\:bui-mb-7{margin-bottom:var(--bui-space-7)}.xl\:bui-mb-8{margin-bottom:var(--bui-space-8)}.xl\:bui-mb-9{margin-bottom:var(--bui-space-9)}.xl\:bui-mb-10{margin-bottom:var(--bui-space-10)}.xl\:bui-mb-11{margin-bottom:var(--bui-space-11)}.xl\:bui-mb-12{margin-bottom:var(--bui-space-12)}.xl\:bui-mb-13{margin-bottom:var(--bui-space-13)}.xl\:bui-mb-14{margin-bottom:var(--bui-space-14)}}.bui-my{margin-top:var(--my);margin-bottom:var(--my)}.bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-my{margin-top:var(--my-xs);margin-bottom:var(--my-xs)}.xs\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.xs\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.xs\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.xs\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.xs\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.xs\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.xs\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.xs\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.xs\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.xs\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.xs\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.xs\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.xs\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.xs\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.xs\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.xs\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-my{margin-top:var(--my-sm);margin-bottom:var(--my-sm)}.sm\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.sm\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.sm\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.sm\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.sm\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.sm\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.sm\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.sm\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.sm\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.sm\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.sm\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.sm\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.sm\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.sm\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.sm\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.sm\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-my{margin-top:var(--my-md);margin-bottom:var(--my-md)}.md\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.md\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.md\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.md\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.md\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.md\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.md\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.md\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.md\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.md\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.md\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.md\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.md\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.md\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.md\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.md\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-my{margin-top:var(--my-lg);margin-bottom:var(--my-lg)}.lg\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.lg\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.lg\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.lg\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.lg\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.lg\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.lg\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.lg\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.lg\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.lg\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.lg\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.lg\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.lg\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.lg\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.lg\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.lg\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-my{margin-top:var(--my-xl);margin-bottom:var(--my-xl)}.xl\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.xl\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.xl\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.xl\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.xl\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.xl\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.xl\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.xl\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.xl\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.xl\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.xl\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.xl\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.xl\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.xl\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.xl\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.xl\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}.bui-mx{margin-left:var(--mx);margin-right:var(--mx)}.bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mx{margin-left:var(--mx-xs);margin-right:var(--mx-xs)}.xs\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.xs\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.xs\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.xs\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.xs\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.xs\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.xs\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.xs\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.xs\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.xs\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.xs\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.xs\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.xs\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.xs\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.xs\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.xs\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mx{margin-left:var(--mx-sm);margin-right:var(--mx-sm)}.sm\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.sm\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.sm\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.sm\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.sm\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.sm\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.sm\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.sm\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.sm\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.sm\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.sm\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.sm\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.sm\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.sm\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.sm\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.sm\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mx{margin-left:var(--mx-md);margin-right:var(--mx-md)}.md\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.md\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.md\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.md\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.md\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.md\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.md\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.md\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.md\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.md\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.md\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.md\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.md\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.md\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.md\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.md\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mx{margin-left:var(--mx-lg);margin-right:var(--mx-lg)}.lg\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.lg\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.lg\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.lg\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.lg\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.lg\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.lg\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.lg\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.lg\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.lg\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.lg\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.lg\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.lg\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.lg\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.lg\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.lg\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mx{margin-left:var(--mx-xl);margin-right:var(--mx-xl)}.xl\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.xl\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.xl\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.xl\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.xl\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.xl\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.xl\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.xl\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.xl\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.xl\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.xl\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.xl\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.xl\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.xl\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.xl\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.xl\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}.bui-display-none{display:none}.bui-display-inline{display:inline}.bui-display-inline-block{display:inline-block}.bui-display-block{display:block}@media (width>=640px){.xs\:bui-display-none{display:none}.xs\:bui-display-inline{display:inline}.xs\:bui-display-inline-block{display:inline-block}.xs\:bui-display-block{display:block}}@media (width>=768px){.sm\:bui-display-none{display:none}.sm\:bui-display-inline{display:inline}.sm\:bui-display-inline-block{display:inline-block}.sm\:bui-display-block{display:block}}@media (width>=1024px){.md\:bui-display-none{display:none}.md\:bui-display-inline{display:inline}.md\:bui-display-inline-block{display:inline-block}.md\:bui-display-block{display:block}}@media (width>=1280px){.lg\:bui-display-none{display:none}.lg\:bui-display-inline{display:inline}.lg\:bui-display-inline-block{display:inline-block}.lg\:bui-display-block{display:block}}@media (width>=1536px){.xl\:bui-display-none{display:none}.xl\:bui-display-inline{display:inline}.xl\:bui-display-inline-block{display:inline-block}.xl\:bui-display-block{display:block}}.bui-w{width:var(--width)}.bui-min-w{min-width:var(--min-width)}.bui-max-w{max-width:var(--max-width)}@media (width>=640px){.xs\:bui-w{width:var(--width)}.xs\:bui-min-w{min-width:var(--min-width)}.xs\:bui-max-w{max-width:var(--max-width)}}@media (width>=768px){.sm\:bui-w{width:var(--width)}.sm\:bui-min-w{min-width:var(--min-width)}.sm\:bui-max-w{max-width:var(--max-width)}}@media (width>=1024px){.md\:bui-w{width:var(--width)}.md\:bui-min-w{min-width:var(--min-width)}.md\:bui-max-w{max-width:var(--max-width)}}@media (width>=1280px){.lg\:bui-w{width:var(--width)}.lg\:bui-min-w{min-width:var(--min-width)}.lg\:bui-max-w{max-width:var(--max-width)}}@media (width>=1536px){.xl\:bui-w{width:var(--width)}.xl\:bui-min-w{min-width:var(--min-width)}.xl\:bui-max-w{max-width:var(--max-width)}}.bui-h{height:var(--height)}.bui-min-h{min-height:var(--min-height)}.bui-max-h{max-height:var(--max-height)}@media (width>=640px){.xs\:bui-h{height:var(--height)}.xs\:bui-min-h{min-height:var(--min-height)}.xs\:bui-max-h{max-height:var(--max-height)}}@media (width>=768px){.sm\:bui-h{height:var(--height)}.sm\:bui-min-h{min-height:var(--min-height)}.sm\:bui-max-h{max-height:var(--max-height)}}@media (width>=1024px){.md\:bui-h{height:var(--height)}.md\:bui-min-h{min-height:var(--min-height)}.md\:bui-max-h{max-height:var(--max-height)}}@media (width>=1280px){.lg\:bui-h{height:var(--height)}.lg\:bui-min-h{min-height:var(--min-height)}.lg\:bui-max-h{max-height:var(--max-height)}}@media (width>=1536px){.xl\:bui-h{height:var(--height)}.xl\:bui-min-h{min-height:var(--min-height)}.xl\:bui-max-h{max-height:var(--max-height)}}.bui-position-absolute{position:absolute}.bui-position-fixed{position:fixed}.bui-position-sticky{position:sticky}.bui-position-relative{position:relative}.bui-position-static{position:static}@media (width>=640px){.xs\:bui-position-absolute{position:absolute}.xs\:bui-position-fixed{position:fixed}.xs\:bui-position-sticky{position:sticky}.xs\:bui-position-relative{position:relative}.xs\:bui-position-static{position:static}}@media (width>=768px){.sm\:bui-position-absolute{position:absolute}.sm\:bui-position-fixed{position:fixed}.sm\:bui-position-sticky{position:sticky}.sm\:bui-position-relative{position:relative}.sm\:bui-position-static{position:static}}@media (width>=1024px){.md\:bui-position-absolute{position:absolute}.md\:bui-position-fixed{position:fixed}.md\:bui-position-sticky{position:sticky}.md\:bui-position-relative{position:relative}.md\:bui-position-static{position:static}}@media (width>=1280px){.lg\:bui-position-absolute{position:absolute}.lg\:bui-position-fixed{position:fixed}.lg\:bui-position-sticky{position:sticky}.lg\:bui-position-relative{position:relative}.lg\:bui-position-static{position:static}}@media (width>=1536px){.xl\:bui-position-absolute{position:absolute}.xl\:bui-position-fixed{position:fixed}.xl\:bui-position-sticky{position:sticky}.xl\:bui-position-relative{position:relative}.xl\:bui-position-static{position:static}}.bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.bui-col-span-1{grid-column:span 1/span 1}.bui-col-span-2{grid-column:span 2/span 2}.bui-col-span-3{grid-column:span 3/span 3}.bui-col-span-4{grid-column:span 4/span 4}.bui-col-span-5{grid-column:span 5/span 5}.bui-col-span-6{grid-column:span 6/span 6}.bui-col-span-7{grid-column:span 7/span 7}.bui-col-span-8{grid-column:span 8/span 8}.bui-col-span-9{grid-column:span 9/span 9}.bui-col-span-10{grid-column:span 10/span 10}.bui-col-span-11{grid-column:span 11/span 11}.bui-col-span-12{grid-column:span 12/span 12}.bui-col-span-auto{grid-column:span auto/span auto}.bui-col-start-1{grid-column-start:1}.bui-col-start-2{grid-column-start:2}.bui-col-start-3{grid-column-start:3}.bui-col-start-4{grid-column-start:4}.bui-col-start-5{grid-column-start:5}.bui-col-start-6{grid-column-start:6}.bui-col-start-7{grid-column-start:7}.bui-col-start-8{grid-column-start:8}.bui-col-start-9{grid-column-start:9}.bui-col-start-10{grid-column-start:10}.bui-col-start-11{grid-column-start:11}.bui-col-start-12{grid-column-start:12}.bui-col-start-13{grid-column-start:13}.bui-col-start-auto{grid-column-start:auto}.bui-col-end-1{grid-column-end:1}.bui-col-end-2{grid-column-end:2}.bui-col-end-3{grid-column-end:3}.bui-col-end-4{grid-column-end:4}.bui-col-end-5{grid-column-end:5}.bui-col-end-6{grid-column-end:6}.bui-col-end-7{grid-column-end:7}.bui-col-end-8{grid-column-end:8}.bui-col-end-9{grid-column-end:9}.bui-col-end-10{grid-column-end:10}.bui-col-end-11{grid-column-end:11}.bui-col-end-12{grid-column-end:12}.bui-col-end-13{grid-column-end:13}.bui-col-end-auto{grid-column-end:auto}.bui-row-span-1{grid-row:span 1/span 1}.bui-row-span-2{grid-row:span 2/span 2}.bui-row-span-3{grid-row:span 3/span 3}.bui-row-span-4{grid-row:span 4/span 4}.bui-row-span-5{grid-row:span 5/span 5}.bui-row-span-6{grid-row:span 6/span 6}.bui-row-span-7{grid-row:span 7/span 7}.bui-row-span-8{grid-row:span 8/span 8}.bui-row-span-9{grid-row:span 9/span 9}.bui-row-span-10{grid-row:span 10/span 10}.bui-row-span-11{grid-row:span 11/span 11}.bui-row-span-12{grid-row:span 12/span 12}.bui-row-span-auto{grid-row:span auto/span auto}@media (width>=640px){.xs\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xs\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xs\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xs\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xs\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xs\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xs\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xs\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xs\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xs\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xs\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xs\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xs\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.xs\:bui-col-span-1{grid-column:span 1/span 1}.xs\:bui-col-span-2{grid-column:span 2/span 2}.xs\:bui-col-span-3{grid-column:span 3/span 3}.xs\:bui-col-span-4{grid-column:span 4/span 4}.xs\:bui-col-span-5{grid-column:span 5/span 5}.xs\:bui-col-span-6{grid-column:span 6/span 6}.xs\:bui-col-span-7{grid-column:span 7/span 7}.xs\:bui-col-span-8{grid-column:span 8/span 8}.xs\:bui-col-span-9{grid-column:span 9/span 9}.xs\:bui-col-span-10{grid-column:span 10/span 10}.xs\:bui-col-span-11{grid-column:span 11/span 11}.xs\:bui-col-span-12{grid-column:span 12/span 12}.xs\:bui-col-span-auto{grid-column:span auto/span auto}.xs\:bui-col-start-1{grid-column-start:1}.xs\:bui-col-start-2{grid-column-start:2}.xs\:bui-col-start-3{grid-column-start:3}.xs\:bui-col-start-4{grid-column-start:4}.xs\:bui-col-start-5{grid-column-start:5}.xs\:bui-col-start-6{grid-column-start:6}.xs\:bui-col-start-7{grid-column-start:7}.xs\:bui-col-start-8{grid-column-start:8}.xs\:bui-col-start-9{grid-column-start:9}.xs\:bui-col-start-10{grid-column-start:10}.xs\:bui-col-start-11{grid-column-start:11}.xs\:bui-col-start-12{grid-column-start:12}.xs\:bui-col-start-13{grid-column-start:13}.xs\:bui-col-start-auto{grid-column-start:auto}.xs\:bui-col-end-1{grid-column-end:1}.xs\:bui-col-end-2{grid-column-end:2}.xs\:bui-col-end-3{grid-column-end:3}.xs\:bui-col-end-4{grid-column-end:4}.xs\:bui-col-end-5{grid-column-end:5}.xs\:bui-col-end-6{grid-column-end:6}.xs\:bui-col-end-7{grid-column-end:7}.xs\:bui-col-end-8{grid-column-end:8}.xs\:bui-col-end-9{grid-column-end:9}.xs\:bui-col-end-10{grid-column-end:10}.xs\:bui-col-end-11{grid-column-end:11}.xs\:bui-col-end-12{grid-column-end:12}.xs\:bui-col-end-13{grid-column-end:13}.xs\:bui-col-end-auto{grid-column-end:auto}.xs\:bui-row-span-1{grid-row:span 1/span 1}.xs\:bui-row-span-2{grid-row:span 2/span 2}.xs\:bui-row-span-3{grid-row:span 3/span 3}.xs\:bui-row-span-4{grid-row:span 4/span 4}.xs\:bui-row-span-5{grid-row:span 5/span 5}.xs\:bui-row-span-6{grid-row:span 6/span 6}.xs\:bui-row-span-7{grid-row:span 7/span 7}.xs\:bui-row-span-8{grid-row:span 8/span 8}.xs\:bui-row-span-9{grid-row:span 9/span 9}.xs\:bui-row-span-10{grid-row:span 10/span 10}.xs\:bui-row-span-11{grid-row:span 11/span 11}.xs\:bui-row-span-12{grid-row:span 12/span 12}.xs\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=768px){.sm\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.sm\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.sm\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.sm\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.sm\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.sm\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.sm\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.sm\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.sm\:bui-col-span-1{grid-column:span 1/span 1}.sm\:bui-col-span-2{grid-column:span 2/span 2}.sm\:bui-col-span-3{grid-column:span 3/span 3}.sm\:bui-col-span-4{grid-column:span 4/span 4}.sm\:bui-col-span-5{grid-column:span 5/span 5}.sm\:bui-col-span-6{grid-column:span 6/span 6}.sm\:bui-col-span-7{grid-column:span 7/span 7}.sm\:bui-col-span-8{grid-column:span 8/span 8}.sm\:bui-col-span-9{grid-column:span 9/span 9}.sm\:bui-col-span-10{grid-column:span 10/span 10}.sm\:bui-col-span-11{grid-column:span 11/span 11}.sm\:bui-col-span-12{grid-column:span 12/span 12}.sm\:bui-col-span-auto{grid-column:span auto/span auto}.sm\:bui-col-start-1{grid-column-start:1}.sm\:bui-col-start-2{grid-column-start:2}.sm\:bui-col-start-3{grid-column-start:3}.sm\:bui-col-start-4{grid-column-start:4}.sm\:bui-col-start-5{grid-column-start:5}.sm\:bui-col-start-6{grid-column-start:6}.sm\:bui-col-start-7{grid-column-start:7}.sm\:bui-col-start-8{grid-column-start:8}.sm\:bui-col-start-9{grid-column-start:9}.sm\:bui-col-start-10{grid-column-start:10}.sm\:bui-col-start-11{grid-column-start:11}.sm\:bui-col-start-12{grid-column-start:12}.sm\:bui-col-start-13{grid-column-start:13}.sm\:bui-col-start-auto{grid-column-start:auto}.sm\:bui-col-end-1{grid-column-end:1}.sm\:bui-col-end-2{grid-column-end:2}.sm\:bui-col-end-3{grid-column-end:3}.sm\:bui-col-end-4{grid-column-end:4}.sm\:bui-col-end-5{grid-column-end:5}.sm\:bui-col-end-6{grid-column-end:6}.sm\:bui-col-end-7{grid-column-end:7}.sm\:bui-col-end-8{grid-column-end:8}.sm\:bui-col-end-9{grid-column-end:9}.sm\:bui-col-end-10{grid-column-end:10}.sm\:bui-col-end-11{grid-column-end:11}.sm\:bui-col-end-12{grid-column-end:12}.sm\:bui-col-end-13{grid-column-end:13}.sm\:bui-col-end-auto{grid-column-end:auto}.sm\:bui-row-span-1{grid-row:span 1/span 1}.sm\:bui-row-span-2{grid-row:span 2/span 2}.sm\:bui-row-span-3{grid-row:span 3/span 3}.sm\:bui-row-span-4{grid-row:span 4/span 4}.sm\:bui-row-span-5{grid-row:span 5/span 5}.sm\:bui-row-span-6{grid-row:span 6/span 6}.sm\:bui-row-span-7{grid-row:span 7/span 7}.sm\:bui-row-span-8{grid-row:span 8/span 8}.sm\:bui-row-span-9{grid-row:span 9/span 9}.sm\:bui-row-span-10{grid-row:span 10/span 10}.sm\:bui-row-span-11{grid-row:span 11/span 11}.sm\:bui-row-span-12{grid-row:span 12/span 12}.sm\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=1024px){.md\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.md\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.md\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.md\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.md\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.md\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.md\:bui-col-span-1{grid-column:span 1/span 1}.md\:bui-col-span-2{grid-column:span 2/span 2}.md\:bui-col-span-3{grid-column:span 3/span 3}.md\:bui-col-span-4{grid-column:span 4/span 4}.md\:bui-col-span-5{grid-column:span 5/span 5}.md\:bui-col-span-6{grid-column:span 6/span 6}.md\:bui-col-span-7{grid-column:span 7/span 7}.md\:bui-col-span-8{grid-column:span 8/span 8}.md\:bui-col-span-9{grid-column:span 9/span 9}.md\:bui-col-span-10{grid-column:span 10/span 10}.md\:bui-col-span-11{grid-column:span 11/span 11}.md\:bui-col-span-12{grid-column:span 12/span 12}.md\:bui-col-span-auto{grid-column:span auto/span auto}.md\:bui-col-start-1{grid-column-start:1}.md\:bui-col-start-2{grid-column-start:2}.md\:bui-col-start-3{grid-column-start:3}.md\:bui-col-start-4{grid-column-start:4}.md\:bui-col-start-5{grid-column-start:5}.md\:bui-col-start-6{grid-column-start:6}.md\:bui-col-start-7{grid-column-start:7}.md\:bui-col-start-8{grid-column-start:8}.md\:bui-col-start-9{grid-column-start:9}.md\:bui-col-start-10{grid-column-start:10}.md\:bui-col-start-11{grid-column-start:11}.md\:bui-col-start-12{grid-column-start:12}.md\:bui-col-start-13{grid-column-start:13}.md\:bui-col-start-auto{grid-column-start:auto}.md\:bui-col-end-1{grid-column-end:1}.md\:bui-col-end-2{grid-column-end:2}.md\:bui-col-end-3{grid-column-end:3}.md\:bui-col-end-4{grid-column-end:4}.md\:bui-col-end-5{grid-column-end:5}.md\:bui-col-end-6{grid-column-end:6}.md\:bui-col-end-7{grid-column-end:7}.md\:bui-col-end-8{grid-column-end:8}.md\:bui-col-end-9{grid-column-end:9}.md\:bui-col-end-10{grid-column-end:10}.md\:bui-col-end-11{grid-column-end:11}.md\:bui-col-end-12{grid-column-end:12}.md\:bui-col-end-13{grid-column-end:13}.md\:bui-col-end-auto{grid-column-end:auto}.md\:bui-row-span-1{grid-row:span 1/span 1}.md\:bui-row-span-2{grid-row:span 2/span 2}.md\:bui-row-span-3{grid-row:span 3/span 3}.md\:bui-row-span-4{grid-row:span 4/span 4}.md\:bui-row-span-5{grid-row:span 5/span 5}.md\:bui-row-span-6{grid-row:span 6/span 6}.md\:bui-row-span-7{grid-row:span 7/span 7}.md\:bui-row-span-8{grid-row:span 8/span 8}.md\:bui-row-span-9{grid-row:span 9/span 9}.md\:bui-row-span-10{grid-row:span 10/span 10}.md\:bui-row-span-11{grid-row:span 11/span 11}.md\:bui-row-span-12{grid-row:span 12/span 12}.md\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=1280px){.lg\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lg\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.lg\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lg\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.lg\:bui-col-span-1{grid-column:span 1/span 1}.lg\:bui-col-span-2{grid-column:span 2/span 2}.lg\:bui-col-span-3{grid-column:span 3/span 3}.lg\:bui-col-span-4{grid-column:span 4/span 4}.lg\:bui-col-span-5{grid-column:span 5/span 5}.lg\:bui-col-span-6{grid-column:span 6/span 6}.lg\:bui-col-span-7{grid-column:span 7/span 7}.lg\:bui-col-span-8{grid-column:span 8/span 8}.lg\:bui-col-span-9{grid-column:span 9/span 9}.lg\:bui-col-span-10{grid-column:span 10/span 10}.lg\:bui-col-span-11{grid-column:span 11/span 11}.lg\:bui-col-span-12{grid-column:span 12/span 12}.lg\:bui-col-span-auto{grid-column:span auto/span auto}.lg\:bui-col-start-1{grid-column-start:1}.lg\:bui-col-start-2{grid-column-start:2}.lg\:bui-col-start-3{grid-column-start:3}.lg\:bui-col-start-4{grid-column-start:4}.lg\:bui-col-start-5{grid-column-start:5}.lg\:bui-col-start-6{grid-column-start:6}.lg\:bui-col-start-7{grid-column-start:7}.lg\:bui-col-start-8{grid-column-start:8}.lg\:bui-col-start-9{grid-column-start:9}.lg\:bui-col-start-10{grid-column-start:10}.lg\:bui-col-start-11{grid-column-start:11}.lg\:bui-col-start-12{grid-column-start:12}.lg\:bui-col-start-13{grid-column-start:13}.lg\:bui-col-start-auto{grid-column-start:auto}.lg\:bui-col-end-1{grid-column-end:1}.lg\:bui-col-end-2{grid-column-end:2}.lg\:bui-col-end-3{grid-column-end:3}.lg\:bui-col-end-4{grid-column-end:4}.lg\:bui-col-end-5{grid-column-end:5}.lg\:bui-col-end-6{grid-column-end:6}.lg\:bui-col-end-7{grid-column-end:7}.lg\:bui-col-end-8{grid-column-end:8}.lg\:bui-col-end-9{grid-column-end:9}.lg\:bui-col-end-10{grid-column-end:10}.lg\:bui-col-end-11{grid-column-end:11}.lg\:bui-col-end-12{grid-column-end:12}.lg\:bui-col-end-13{grid-column-end:13}.lg\:bui-col-end-auto{grid-column-end:auto}.lg\:bui-row-span-1{grid-row:span 1/span 1}.lg\:bui-row-span-2{grid-row:span 2/span 2}.lg\:bui-row-span-3{grid-row:span 3/span 3}.lg\:bui-row-span-4{grid-row:span 4/span 4}.lg\:bui-row-span-5{grid-row:span 5/span 5}.lg\:bui-row-span-6{grid-row:span 6/span 6}.lg\:bui-row-span-7{grid-row:span 7/span 7}.lg\:bui-row-span-8{grid-row:span 8/span 8}.lg\:bui-row-span-9{grid-row:span 9/span 9}.lg\:bui-row-span-10{grid-row:span 10/span 10}.lg\:bui-row-span-11{grid-row:span 11/span 11}.lg\:bui-row-span-12{grid-row:span 12/span 12}.lg\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=1536px){.xl\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xl\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xl\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xl\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xl\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xl\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xl\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.xl\:bui-col-span-1{grid-column:span 1/span 1}.xl\:bui-col-span-2{grid-column:span 2/span 2}.xl\:bui-col-span-3{grid-column:span 3/span 3}.xl\:bui-col-span-4{grid-column:span 4/span 4}.xl\:bui-col-span-5{grid-column:span 5/span 5}.xl\:bui-col-span-6{grid-column:span 6/span 6}.xl\:bui-col-span-7{grid-column:span 7/span 7}.xl\:bui-col-span-8{grid-column:span 8/span 8}.xl\:bui-col-span-9{grid-column:span 9/span 9}.xl\:bui-col-span-10{grid-column:span 10/span 10}.xl\:bui-col-span-11{grid-column:span 11/span 11}.xl\:bui-col-span-12{grid-column:span 12/span 12}.xl\:bui-col-span-auto{grid-column:span auto/span auto}.xl\:bui-col-start-1{grid-column-start:1}.xl\:bui-col-start-2{grid-column-start:2}.xl\:bui-col-start-3{grid-column-start:3}.xl\:bui-col-start-4{grid-column-start:4}.xl\:bui-col-start-5{grid-column-start:5}.xl\:bui-col-start-6{grid-column-start:6}.xl\:bui-col-start-7{grid-column-start:7}.xl\:bui-col-start-8{grid-column-start:8}.xl\:bui-col-start-9{grid-column-start:9}.xl\:bui-col-start-10{grid-column-start:10}.xl\:bui-col-start-11{grid-column-start:11}.xl\:bui-col-start-12{grid-column-start:12}.xl\:bui-col-start-13{grid-column-start:13}.xl\:bui-col-start-auto{grid-column-start:auto}.xl\:bui-col-end-1{grid-column-end:1}.xl\:bui-col-end-2{grid-column-end:2}.xl\:bui-col-end-3{grid-column-end:3}.xl\:bui-col-end-4{grid-column-end:4}.xl\:bui-col-end-5{grid-column-end:5}.xl\:bui-col-end-6{grid-column-end:6}.xl\:bui-col-end-7{grid-column-end:7}.xl\:bui-col-end-8{grid-column-end:8}.xl\:bui-col-end-9{grid-column-end:9}.xl\:bui-col-end-10{grid-column-end:10}.xl\:bui-col-end-11{grid-column-end:11}.xl\:bui-col-end-12{grid-column-end:12}.xl\:bui-col-end-13{grid-column-end:13}.xl\:bui-col-end-auto{grid-column-end:auto}.xl\:bui-row-span-1{grid-row:span 1/span 1}.xl\:bui-row-span-2{grid-row:span 2/span 2}.xl\:bui-row-span-3{grid-row:span 3/span 3}.xl\:bui-row-span-4{grid-row:span 4/span 4}.xl\:bui-row-span-5{grid-row:span 5/span 5}.xl\:bui-row-span-6{grid-row:span 6/span 6}.xl\:bui-row-span-7{grid-row:span 7/span 7}.xl\:bui-row-span-8{grid-row:span 8/span 8}.xl\:bui-row-span-9{grid-row:span 9/span 9}.xl\:bui-row-span-10{grid-row:span 10/span 10}.xl\:bui-row-span-11{grid-row:span 11/span 11}.xl\:bui-row-span-12{grid-row:span 12/span 12}.xl\:bui-row-span-auto{grid-row:span auto/span auto}}.bui-gap{gap:var(--gap)}.bui-gap-0\.5{gap:var(--bui-space-0_5)}.bui-gap-1{gap:var(--bui-space-1)}.bui-gap-1\.5{gap:var(--bui-space-1_5)}.bui-gap-2{gap:var(--bui-space-2)}.bui-gap-3{gap:var(--bui-space-3)}.bui-gap-4{gap:var(--bui-space-4)}.bui-gap-5{gap:var(--bui-space-5)}.bui-gap-6{gap:var(--bui-space-6)}.bui-gap-7{gap:var(--bui-space-7)}.bui-gap-8{gap:var(--bui-space-8)}.bui-gap-9{gap:var(--bui-space-9)}.bui-gap-10{gap:var(--bui-space-10)}.bui-gap-11{gap:var(--bui-space-11)}.bui-gap-12{gap:var(--bui-space-12)}.bui-gap-13{gap:var(--bui-space-13)}.bui-gap-14{gap:var(--bui-space-14)}@media (width>=640px){.xs\:bui-gap{gap:var(--gap-xs)}.xs\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.xs\:bui-gap-1{gap:var(--bui-space-1)}.xs\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.xs\:bui-gap-2{gap:var(--bui-space-2)}.xs\:bui-gap-3{gap:var(--bui-space-3)}.xs\:bui-gap-4{gap:var(--bui-space-4)}.xs\:bui-gap-5{gap:var(--bui-space-5)}.xs\:bui-gap-6{gap:var(--bui-space-6)}.xs\:bui-gap-7{gap:var(--bui-space-7)}.xs\:bui-gap-8{gap:var(--bui-space-8)}.xs\:bui-gap-9{gap:var(--bui-space-9)}.xs\:bui-gap-10{gap:var(--bui-space-10)}.xs\:bui-gap-11{gap:var(--bui-space-11)}.xs\:bui-gap-12{gap:var(--bui-space-12)}.xs\:bui-gap-13{gap:var(--bui-space-13)}.xs\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-gap{gap:var(--gap-sm)}.sm\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.sm\:bui-gap-1{gap:var(--bui-space-1)}.sm\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.sm\:bui-gap-2{gap:var(--bui-space-2)}.sm\:bui-gap-3{gap:var(--bui-space-3)}.sm\:bui-gap-4{gap:var(--bui-space-4)}.sm\:bui-gap-5{gap:var(--bui-space-5)}.sm\:bui-gap-6{gap:var(--bui-space-6)}.sm\:bui-gap-7{gap:var(--bui-space-7)}.sm\:bui-gap-8{gap:var(--bui-space-8)}.sm\:bui-gap-9{gap:var(--bui-space-9)}.sm\:bui-gap-10{gap:var(--bui-space-10)}.sm\:bui-gap-11{gap:var(--bui-space-11)}.sm\:bui-gap-12{gap:var(--bui-space-12)}.sm\:bui-gap-13{gap:var(--bui-space-13)}.sm\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-gap{gap:var(--gap-md)}.md\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.md\:bui-gap-1{gap:var(--bui-space-1)}.md\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.md\:bui-gap-2{gap:var(--bui-space-2)}.md\:bui-gap-3{gap:var(--bui-space-3)}.md\:bui-gap-4{gap:var(--bui-space-4)}.md\:bui-gap-5{gap:var(--bui-space-5)}.md\:bui-gap-6{gap:var(--bui-space-6)}.md\:bui-gap-7{gap:var(--bui-space-7)}.md\:bui-gap-8{gap:var(--bui-space-8)}.md\:bui-gap-9{gap:var(--bui-space-9)}.md\:bui-gap-10{gap:var(--bui-space-10)}.md\:bui-gap-11{gap:var(--bui-space-11)}.md\:bui-gap-12{gap:var(--bui-space-12)}.md\:bui-gap-13{gap:var(--bui-space-13)}.md\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-gap{gap:var(--gap-lg)}.lg\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.lg\:bui-gap-1{gap:var(--bui-space-1)}.lg\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.lg\:bui-gap-2{gap:var(--bui-space-2)}.lg\:bui-gap-3{gap:var(--bui-space-3)}.lg\:bui-gap-4{gap:var(--bui-space-4)}.lg\:bui-gap-5{gap:var(--bui-space-5)}.lg\:bui-gap-6{gap:var(--bui-space-6)}.lg\:bui-gap-7{gap:var(--bui-space-7)}.lg\:bui-gap-8{gap:var(--bui-space-8)}.lg\:bui-gap-9{gap:var(--bui-space-9)}.lg\:bui-gap-10{gap:var(--bui-space-10)}.lg\:bui-gap-11{gap:var(--bui-space-11)}.lg\:bui-gap-12{gap:var(--bui-space-12)}.lg\:bui-gap-13{gap:var(--bui-space-13)}.lg\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-gap{gap:var(--gap-xl)}.xl\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.xl\:bui-gap-1{gap:var(--bui-space-1)}.xl\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.xl\:bui-gap-2{gap:var(--bui-space-2)}.xl\:bui-gap-3{gap:var(--bui-space-3)}.xl\:bui-gap-4{gap:var(--bui-space-4)}.xl\:bui-gap-5{gap:var(--bui-space-5)}.xl\:bui-gap-6{gap:var(--bui-space-6)}.xl\:bui-gap-7{gap:var(--bui-space-7)}.xl\:bui-gap-8{gap:var(--bui-space-8)}.xl\:bui-gap-9{gap:var(--bui-space-9)}.xl\:bui-gap-10{gap:var(--bui-space-10)}.xl\:bui-gap-11{gap:var(--bui-space-11)}.xl\:bui-gap-12{gap:var(--bui-space-12)}.xl\:bui-gap-13{gap:var(--bui-space-13)}.xl\:bui-gap-14{gap:var(--bui-space-14)}}.bui-align-start{align-items:start}.bui-align-center{align-items:center}.bui-align-end{align-items:end}.bui-align-baseline{align-items:baseline}.bui-align-stretch{align-items:stretch}.bui-jc-start{justify-content:start}.bui-jc-center{justify-content:center}.bui-jc-end{justify-content:end}.bui-jc-between{justify-content:space-between}.bui-fd-row{flex-direction:row}.bui-fd-column{flex-direction:column}.bui-fd-row-reverse{flex-direction:row-reverse}.bui-fd-column-reverse{flex-direction:column-reverse}@media (width>=640px){.xs\:bui-align-start{align-items:start}.xs\:bui-align-center{align-items:center}.xs\:bui-align-end{align-items:end}.xs\:bui-align-stretch{align-items:stretch}.xs\:bui-jc-start{justify-content:start}.xs\:bui-jc-center{justify-content:center}.xs\:bui-jc-end{justify-content:end}.xs\:bui-jc-between{justify-content:space-between}.xs\:bui-fd-row{flex-direction:row}.xs\:bui-fd-column{flex-direction:column}.xs\:bui-fd-row-reverse{flex-direction:row-reverse}.xs\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=768px){.sm\:bui-align-start{align-items:start}.sm\:bui-align-center{align-items:center}.sm\:bui-align-end{align-items:end}.sm\:bui-align-stretch{align-items:stretch}.sm\:bui-jc-start{justify-content:start}.sm\:bui-jc-center{justify-content:center}.sm\:bui-jc-end{justify-content:end}.sm\:bui-jc-between{justify-content:space-between}.sm\:bui-fd-row{flex-direction:row}.sm\:bui-fd-column{flex-direction:column}.sm\:bui-fd-row-reverse{flex-direction:row-reverse}.sm\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=1024px){.md\:bui-align-start{align-items:start}.md\:bui-align-center{align-items:center}.md\:bui-align-end{align-items:end}.md\:bui-align-stretch{align-items:stretch}.md\:bui-jc-start{justify-content:start}.md\:bui-jc-center{justify-content:center}.md\:bui-jc-end{justify-content:end}.md\:bui-jc-between{justify-content:space-between}.md\:bui-fd-row{flex-direction:row}.md\:bui-fd-column{flex-direction:column}.md\:bui-fd-row-reverse{flex-direction:row-reverse}.md\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=1280px){.lg\:bui-align-start{align-items:start}.lg\:bui-align-center{align-items:center}.lg\:bui-align-end{align-items:end}.lg\:bui-align-stretch{align-items:stretch}.lg\:bui-jc-start{justify-content:start}.lg\:bui-jc-center{justify-content:center}.lg\:bui-jc-end{justify-content:end}.lg\:bui-jc-between{justify-content:space-between}.lg\:bui-fd-row{flex-direction:row}.lg\:bui-fd-column{flex-direction:column}.lg\:bui-fd-row-reverse{flex-direction:row-reverse}.lg\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=1536px){.xl\:bui-align-start{align-items:start}.xl\:bui-align-center{align-items:center}.xl\:bui-align-end{align-items:end}.xl\:bui-align-stretch{align-items:stretch}.xl\:bui-jc-start{justify-content:start}.xl\:bui-jc-center{justify-content:center}.xl\:bui-jc-end{justify-content:end}.xl\:bui-jc-between{justify-content:space-between}.xl\:bui-fd-row{flex-direction:row}.xl\:bui-fd-column{flex-direction:column}.xl\:bui-fd-row-reverse{flex-direction:row-reverse}.xl\:bui-fd-column-reverse{flex-direction:column-reverse}}} \ No newline at end of file diff --git a/docs-ui/src/css/theme-spotify.css b/docs-ui/src/css/theme-spotify.css index 22eda0cabe..233c924a6d 100644 --- a/docs-ui/src/css/theme-spotify.css +++ b/docs-ui/src/css/theme-spotify.css @@ -1 +1 @@ -@font-face{font-family:CircularSpTitle;font-weight:900;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSpTitle-Black-4588c99025b967475c31695b0743dd1a.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSpTitle-Black-506746f387a26f25aa3d023b3e501d34.woff)format("woff")}@font-face{font-family:CircularSpTitle;font-weight:700;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSpTitle-Bold-b2586b06a2e1522e9d879d84c2792a58.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSpTitle-Bold-1624fb2df28c20d7203d7fb86ce8b481.woff)format("woff")}@font-face{font-family:CircularSp;font-weight:700;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSp-Bold-602e7aefc706aa36c6ec1324b9bbc461.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSp-Bold-856afe2da4ba4e61239b129e2c16d633.woff)format("woff")}@font-face{font-family:CircularSp;font-weight:400;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSp-Book-a00e99ef9996a3a157fb6b746856d04f.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSp-Book-3f73da7d35bd81c706bce7bbb84964de.woff)format("woff")}@font-face{font-family:CircularSp;font-weight:700;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSp-Bold-602e7aefc706aa36c6ec1324b9bbc461.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSp-Bold-856afe2da4ba4e61239b129e2c16d633.woff)format("woff")}[data-theme-name=spotify]{--bui-font-text:CircularSp,CircularSp-Arab,CircularSp-Hebr,CircularSp-Cyrl,CircularSp-Grek,CircularSp-Deva;--bui-font-title:CircularSpTitle,CircularSp-Arab,CircularSp-Hebr,CircularSp-Cyrl,CircularSp-Grek,CircularSp-Deva;--bui-font-regular:CircularSp,CircularSp-Arab,CircularSp-Hebr,CircularSp-Cyrl,CircularSp-Grek,CircularSp-Deva;& .bui-Button{border-radius:var(--bui-radius-3);padding-inline:var(--bui-space-3)}& .bui-ButtonIcon{padding:0}& .bui-MenuPopup{box-sizing:border-box;max-width:21.25rem}& .bui-MenuSubmenuTrigger,& .bui-MenuItem{height:auto;min-height:2rem}& .bui-Text{font-family:var(--bui-font-text)}& .bui-Heading{font-family:var(--bui-font-title)}& .bui-TableRow{border-radius:var(--bui-radius-4);border:none}& .bui-TableRow:hover td:first-child{border-top-left-radius:var(--bui-radius-2);border-bottom-left-radius:var(--bui-radius-2)}& .bui-TableRow:hover td:last-child{border-top-right-radius:var(--bui-radius-2);border-bottom-right-radius:var(--bui-radius-2)}& .bui-TableBody:before,& .bui-TableBody:after{line-height:var(--bui-space-1);content:"‌";display:block}& .bui-TableHeader .bui-TableRow{border-bottom:1px solid var(--bui-border)}& .bui-TableHead{font-size:var(--bui-font-size-2);color:var(--bui-fg-secondary);font-weight:var(--bui-font-weight-regular)}& .bui-HeaderToolbar{padding-top:var(--bui-space-2);padding-inline:var(--bui-space-2)}& .bui-HeaderToolbarWrapper{border-radius:var(--bui-radius-3);padding-inline:var(--bui-space-3);border:none}& .bui-HeaderToolbarControls{right:calc(var(--bui-space-3) - 1px)}& .bui-HeaderTabsWrapper{margin-top:var(--bui-space-2);margin-inline:var(--bui-space-2);border-radius:var(--bui-radius-3);padding-inline:var(--bui-space-1);border:none}& .bui-Input{border-radius:var(--bui-radius-3)}& .bui-Tag{border-radius:var(--bui-radius-full)}}[data-theme-mode=light][data-theme-name=spotify]{--bui-bg-solid:#1ed760;--bui-bg-solid-hover:#3be477;--bui-bg-solid-pressed:#1abc54;--bui-bg-solid-disabled:#0f6c30;--bui-fg-primary:var(--bui-black);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-solid:var(--bui-black);--bui-fg-solid-disabled:#62ab7c;--bui-border:var(--bui-gray-3);--bui-border-hover:#0000004d;--bui-border-pressed:#00000080;--bui-border-disabled:#0000001a;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#0003;& .bui-HeaderToolbarWrapper,& .bui-HeaderTabsWrapper{border:1px solid var(--bui-border)}}[data-theme-mode=dark][data-theme-name=spotify]{--bui-bg-surface-0:var(--bui-black);--bui-bg-solid:#1ed760;--bui-bg-solid-hover:#3be477;--bui-bg-solid-pressed:#1abc54;--bui-bg-solid-disabled:#0f6c30;--bui-bg-danger:#3b1219;--bui-bg-warning:#302008;--bui-bg-success:#132d21;--bui-fg-primary:var(--bui-white);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-link:var(--bui-white);--bui-fg-link-hover:var(--bui-white);--bui-fg-disabled:var(--bui-gray-5);--bui-fg-solid:var(--bui-black);--bui-fg-solid-disabled:#072f15;--bui-fg-tint:var(--bui-white);--bui-fg-tint-disabled:var(--bui-gray-5);--bui-fg-danger:#e22b2b;--bui-fg-warning:#e36d05;--bui-fg-success:#1db954;--bui-border:var(--bui-gray-3);--bui-border-hover:#fff6;--bui-border-pressed:#ffffff80;--bui-border-disabled:#fff3;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#fff3} \ No newline at end of file +@font-face{font-family:CircularSpTitle;font-weight:900;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSpTitle-Black-4588c99025b967475c31695b0743dd1a.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSpTitle-Black-506746f387a26f25aa3d023b3e501d34.woff)format("woff")}@font-face{font-family:CircularSpTitle;font-weight:700;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSpTitle-Bold-b2586b06a2e1522e9d879d84c2792a58.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSpTitle-Bold-1624fb2df28c20d7203d7fb86ce8b481.woff)format("woff")}@font-face{font-family:CircularSp;font-weight:700;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSp-Bold-602e7aefc706aa36c6ec1324b9bbc461.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSp-Bold-856afe2da4ba4e61239b129e2c16d633.woff)format("woff")}@font-face{font-family:CircularSp;font-weight:400;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSp-Book-a00e99ef9996a3a157fb6b746856d04f.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSp-Book-3f73da7d35bd81c706bce7bbb84964de.woff)format("woff")}@font-face{font-family:CircularSp;font-weight:700;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSp-Bold-602e7aefc706aa36c6ec1324b9bbc461.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSp-Bold-856afe2da4ba4e61239b129e2c16d633.woff)format("woff")}[data-theme-name=spotify]{--bui-font-text:CircularSp,CircularSp-Arab,CircularSp-Hebr,CircularSp-Cyrl,CircularSp-Grek,CircularSp-Deva;--bui-font-title:CircularSpTitle,CircularSp-Arab,CircularSp-Hebr,CircularSp-Cyrl,CircularSp-Grek,CircularSp-Deva;--bui-font-regular:CircularSp,CircularSp-Arab,CircularSp-Hebr,CircularSp-Cyrl,CircularSp-Grek,CircularSp-Deva;& .bui-Button{border-radius:var(--bui-radius-3);padding-inline:var(--bui-space-3)}& .bui-ButtonIcon{padding:0}& .bui-MenuPopup{box-sizing:border-box;max-width:21.25rem}& .bui-MenuSubmenuTrigger,& .bui-MenuItem{height:auto;min-height:2rem}& .bui-Text{font-family:var(--bui-font-text)}& .bui-Heading{font-family:var(--bui-font-title)}& .bui-TableRow{border-radius:var(--bui-radius-4);border:none}& .bui-TableRow:hover td:first-child{border-top-left-radius:var(--bui-radius-2);border-bottom-left-radius:var(--bui-radius-2)}& .bui-TableRow:hover td:last-child{border-top-right-radius:var(--bui-radius-2);border-bottom-right-radius:var(--bui-radius-2)}& .bui-TableBody:before,& .bui-TableBody:after{line-height:var(--bui-space-1);content:"‌";display:block}& .bui-TableHeader .bui-TableRow{border-bottom:1px solid var(--bui-border)}& .bui-TableHead{font-size:var(--bui-font-size-2);color:var(--bui-fg-secondary);font-weight:var(--bui-font-weight-regular)}& .bui-HeaderToolbar{padding-top:var(--bui-space-2);padding-inline:var(--bui-space-2)}& .bui-HeaderToolbarWrapper{border-radius:var(--bui-radius-3);padding-inline:var(--bui-space-3);border:none}& .bui-HeaderToolbarControls{right:calc(var(--bui-space-3) - 1px)}& .bui-HeaderTabsWrapper{margin-top:var(--bui-space-2);margin-inline:var(--bui-space-2);border-radius:var(--bui-radius-3);padding-inline:var(--bui-space-1);border:none}& .bui-Input{border-radius:var(--bui-radius-3)}& .bui-Tag{border-radius:var(--bui-radius-full)}}[data-theme-mode=light][data-theme-name=spotify]{--bui-bg-solid:#1ed760;--bui-bg-solid-hover:#3be477;--bui-bg-solid-pressed:#1abc54;--bui-bg-solid-disabled:#0f6c30;--bui-fg-primary:var(--bui-black);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-solid:var(--bui-black);--bui-fg-solid-disabled:#62ab7c;--bui-border:var(--bui-gray-3);--bui-border-hover:#0000004d;--bui-border-pressed:#00000080;--bui-border-disabled:#0000001a;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#0003;& .bui-HeaderToolbarWrapper,& .bui-HeaderTabsWrapper{border:1px solid var(--bui-border)}}[data-theme-mode=dark][data-theme-name=spotify]{--bui-bg-surface-0:var(--bui-black);--bui-bg-solid:#1ed760;--bui-bg-solid-hover:#3be477;--bui-bg-solid-pressed:#1abc54;--bui-bg-solid-disabled:#0f6c30;--bui-bg-danger:#3b1219;--bui-bg-warning:#302008;--bui-bg-success:#132d21;--bui-fg-primary:var(--bui-white);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-disabled:var(--bui-gray-5);--bui-fg-solid:var(--bui-black);--bui-fg-solid-disabled:#072f15;--bui-fg-danger:#e22b2b;--bui-fg-warning:#e36d05;--bui-fg-success:#1db954;--bui-border:var(--bui-gray-3);--bui-border-hover:#fff6;--bui-border-pressed:#ffffff80;--bui-border-disabled:#fff3;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#fff3} \ No newline at end of file diff --git a/packages/ui/css/styles.css b/packages/ui/css/styles.css index f53fdb0b2a..7538f53bbe 100644 --- a/packages/ui/css/styles.css +++ b/packages/ui/css/styles.css @@ -81,13 +81,9 @@ --bui-bg-info: #dbeafe; --bui-fg-primary: var(--bui-black); --bui-fg-secondary: var(--bui-gray-7); - --bui-fg-link: #1f5493; - --bui-fg-link-hover: #1f2d5c; --bui-fg-disabled: #9e9e9e; --bui-fg-solid: var(--bui-white); --bui-fg-solid-disabled: #98a8bc; - --bui-fg-tint: #1f5493; - --bui-fg-tint-disabled: var(--bui-gray-5); --bui-fg-danger-on-bg: #991919; --bui-fg-warning-on-bg: #92310a; --bui-fg-success-on-bg: #116932; @@ -150,13 +146,9 @@ --bui-bg-info: #132049; --bui-fg-primary: var(--bui-white); --bui-fg-secondary: var(--bui-gray-7); - --bui-fg-link: #9cc9ff; - --bui-fg-link-hover: #7eb5f7; --bui-fg-disabled: var(--bui-gray-7); --bui-fg-solid: #101821; --bui-fg-solid-disabled: #6191cc; - --bui-fg-tint: #9cc9ff; - --bui-fg-tint-disabled: var(--bui-gray-5); --bui-fg-danger-on-bg: #fca5a5; --bui-fg-warning-on-bg: #fdba74; --bui-fg-success-on-bg: #86efac; diff --git a/packages/ui/src/css/tokens.css b/packages/ui/src/css/tokens.css index 90d838539e..3747636e18 100644 --- a/packages/ui/src/css/tokens.css +++ b/packages/ui/src/css/tokens.css @@ -123,13 +123,9 @@ /* Foreground colors */ --bui-fg-primary: var(--bui-black); --bui-fg-secondary: var(--bui-gray-7); - --bui-fg-link: #1f5493; - --bui-fg-link-hover: #1f2d5c; --bui-fg-disabled: #9e9e9e; --bui-fg-solid: var(--bui-white); --bui-fg-solid-disabled: #98a8bc; - --bui-fg-tint: #1f5493; - --bui-fg-tint-disabled: var(--bui-gray-5); /* Foreground Statuses */ --bui-fg-danger-on-bg: #991919; @@ -217,13 +213,9 @@ /* Foreground colors */ --bui-fg-primary: var(--bui-white); --bui-fg-secondary: var(--bui-gray-7); - --bui-fg-link: #9cc9ff; - --bui-fg-link-hover: #7eb5f7; --bui-fg-disabled: var(--bui-gray-7); --bui-fg-solid: #101821; --bui-fg-solid-disabled: #6191cc; - --bui-fg-tint: #9cc9ff; - --bui-fg-tint-disabled: var(--bui-gray-5); /* Foreground statuses */ --bui-fg-danger-on-bg: #fca5a5; From a88c437e386f64eaf6f5fd5087ca8d8ceda9b1bd Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Fri, 30 Jan 2026 18:08:20 +0000 Subject: [PATCH 083/107] Updated docs Signed-off-by: Charles de Dreuille --- .changeset/small-rice-arrive.md | 14 +++ .changeset/wicked-walls-accept.md | 2 - docs-ui/src/app/tokens/page.mdx | 112 +++++++++--------- docs/conf/user-interface/index.md | 37 +++--- .../convertMuiToBuiTheme.test.ts | 28 ++++- .../BuiThemerPage/convertMuiToBuiTheme.ts | 21 ++-- 6 files changed, 122 insertions(+), 92 deletions(-) create mode 100644 .changeset/small-rice-arrive.md diff --git a/.changeset/small-rice-arrive.md b/.changeset/small-rice-arrive.md new file mode 100644 index 0000000000..a30bec6a82 --- /dev/null +++ b/.changeset/small-rice-arrive.md @@ -0,0 +1,14 @@ +--- +'@backstage/plugin-mui-to-bui': patch +--- + +Updated MUI to BUI theme converter to align with latest token changes + +**Changes:** + +- Removed generation of deprecated tokens: `--bui-fg-link`, `--bui-fg-link-hover`, `--bui-fg-tint`, `--bui-fg-tint-disabled`, `--bui-bg-tint` and all its variants +- Added generation of new `info` status tokens: `--bui-fg-info`, `--bui-fg-info-on-bg`, `--bui-bg-info`, `--bui-border-info` +- Updated status color mapping to generate both standalone and `-on-bg` variants for danger, warning, success, and info +- Status colors now use `.main` for standalone variants and `.dark` for `-on-bg` variants, providing better visual hierarchy + +The converter now generates tokens that match the updated BUI design system structure, with clear distinction between status colors for standalone use vs. use on colored backgrounds. diff --git a/.changeset/wicked-walls-accept.md b/.changeset/wicked-walls-accept.md index 1a56c5a893..dc5e86a0d4 100644 --- a/.changeset/wicked-walls-accept.md +++ b/.changeset/wicked-walls-accept.md @@ -4,8 +4,6 @@ **BREAKING**: Removed link and tint color tokens, added new status foreground tokens, and improved Link component styling -**Removed Tokens (BREAKING):** - The following color tokens have been removed: - `--bui-fg-link` (and all related tokens: `-hover`, `-pressed`, `-disabled`) diff --git a/docs-ui/src/app/tokens/page.mdx b/docs-ui/src/app/tokens/page.mdx index 97266afbf4..ffad2ffa55 100644 --- a/docs-ui/src/app/tokens/page.mdx +++ b/docs-ui/src/app/tokens/page.mdx @@ -240,30 +240,6 @@ color of your app. Used for solid background colors when disabled. - - - --bui-bg-tint - - Used for tint background colors. - - - - --bui-bg-tint-hover - - Used for tint background colors when hovered. - - - - --bui-bg-tint-focus - - Used for tint background colors when active. - - - - --bui-bg-tint-disabled - - Used for tint background colors when disabled. - --bui-bg-danger @@ -282,6 +258,12 @@ color of your app. Used to show success information. + + + --bui-bg-info + + Used to show informational content. + @@ -315,22 +297,6 @@ are prefixed with `fg` to make it easier to identify. It should be used on top of main background surfaces. - - - --bui-fg-link - - - It should be used on top of main background surfaces. - - - - - --bui-fg-link-hover - - - It should be used on top of main background surfaces. - - --bui-fg-disabled @@ -347,28 +313,12 @@ are prefixed with `fg` to make it easier to identify. It should be used on top of solid background colors. - - - --bui-fg-tint - - - It should be used on top of tint background colors. - - - - - --bui-fg-tint-disabled - - - It should be used on top of tint background colors when disabled. - - --bui-fg-danger - It should be used on top of danger background colors. + Used for error states and destructive actions. @@ -376,17 +326,57 @@ are prefixed with `fg` to make it easier to identify. --bui-fg-warning - It should be used on top of warning background colors. + Used for warning states and cautionary information. --bui-fg-success + + Used for success states and positive feedback. + + + + + --bui-fg-info + + + Used for informational content and neutral status. + + + + + --bui-fg-danger-on-bg + + + It should be used on top of danger background colors. + + + + + --bui-fg-warning-on-bg + + + It should be used on top of warning background colors. + + + + + --bui-fg-success-on-bg + It should be used on top of success background colors. + + + --bui-fg-info-on-bg + + + It should be used on top of info background colors. + + @@ -449,6 +439,12 @@ low contrast to help as a separator with the different background colors. It should be used on top of `--bui-bg-success`. + + + --bui-border-info + + It should be used on top of `--bui-bg-info`. + diff --git a/docs/conf/user-interface/index.md b/docs/conf/user-interface/index.md index e0fb645d78..002383c6f4 100644 --- a/docs/conf/user-interface/index.md +++ b/docs/conf/user-interface/index.md @@ -131,7 +131,10 @@ And if you’d like to go even further, you can target specific component class | `--bui-fg-solid` | This is for texts or icons on top of a solid backgrounds. | | `--bui-fg-primary` | Your primary text or icon colours. | | `--bui-fg-secondary` | Your secondary text or icon colours. | -| `--bui-fg-link` | Used for links. | +| `--bui-fg-danger` | Used for error states and destructive actions. | +| `--bui-fg-warning` | Used for warning states and cautionary information. | +| `--bui-fg-success` | Used for success states and positive feedback. | +| `--bui-fg-info` | Used for informational content and neutral status. | | `--bui-border` | Main borders around surfaces like `Card`, `Dialog`, ... | | `--bui-font-regular` | The main font of your app. | @@ -169,31 +172,29 @@ These colors are used for the background of your application. We are mostly usin | `--bui-bg-solid-hover` | Used for solid background colors when hovered. | | `--bui-bg-solid-pressed` | Used for solid background colors when pressed. | | `--bui-bg-solid-disabled` | Used for solid background colors when disabled. | -| `--bui-bg-tint` | Used for tint background colors. | -| `--bui-bg-tint-hover` | Used for tint background colors when hovered. | -| `--bui-bg-tint-focus` | Used for tint background colors when active. | -| `--bui-bg-tint-disabled` | Used for tint background colors when disabled. | | `--bui-bg-danger` | Used to show errors information. | | `--bui-bg-warning` | Used to show warnings information. | | `--bui-bg-success` | Used to show success information. | +| `--bui-bg-info` | Used to show informational content. | #### Foreground colors Foreground colours are meant to work in pair with a background colours. Typically this would work for icons, texts, shapes, ... Use a matching name to know what foreground color to use. These colors are prefixed with `fg` to make it easier to identify. -| Token Name | Description | -| ------------------------ | ----------------------------------------------------------------- | -| `--bui-fg-primary` | It should be used on top of main background surfaces. | -| `--bui-fg-secondary` | It should be used on top of main background surfaces. | -| `--bui-fg-link` | It should be used on top of main background surfaces. | -| `--bui-fg-link-hover` | It should be used on top of main background surfaces. | -| `--bui-fg-disabled` | It should be used on top of main background surfaces. | -| `--bui-fg-solid` | It should be used on top of solid background colors. | -| `--bui-fg-tint` | It should be used on top of tint background colors. | -| `--bui-fg-tint-disabled` | It should be used on top of tint background colors when disabled. | -| `--bui-fg-danger` | It should be used on top of danger background colors. | -| `--bui-fg-warning` | It should be used on top of warning background colors. | -| `--bui-fg-success` | It should be used on top of success background colors. | +| Token Name | Description | +| ------------------------ | ------------------------------------------------------ | +| `--bui-fg-primary` | It should be used on top of main background surfaces. | +| `--bui-fg-secondary` | It should be used on top of main background surfaces. | +| `--bui-fg-disabled` | It should be used on top of main background surfaces. | +| `--bui-fg-solid` | It should be used on top of solid background colors. | +| `--bui-fg-danger` | Used for error states and destructive actions. | +| `--bui-fg-warning` | Used for warning states and cautionary information. | +| `--bui-fg-success` | Used for success states and positive feedback. | +| `--bui-fg-info` | Used for informational content and neutral status. | +| `--bui-fg-danger-on-bg` | It should be used on top of danger background colors. | +| `--bui-fg-warning-on-bg` | It should be used on top of warning background colors. | +| `--bui-fg-success-on-bg` | It should be used on top of success background colors. | +| `--bui-fg-info-on-bg` | It should be used on top of info background colors. | #### Border colors diff --git a/plugins/mui-to-bui/src/components/BuiThemerPage/convertMuiToBuiTheme.test.ts b/plugins/mui-to-bui/src/components/BuiThemerPage/convertMuiToBuiTheme.test.ts index 48bb318a71..a5f7cfd36f 100644 --- a/plugins/mui-to-bui/src/components/BuiThemerPage/convertMuiToBuiTheme.test.ts +++ b/plugins/mui-to-bui/src/components/BuiThemerPage/convertMuiToBuiTheme.test.ts @@ -151,6 +151,10 @@ describe('convertMuiToBuiTheme', () => { expect(result.css).toContain('--bui-bg-danger: #ffcdd2;'); expect(result.css).toContain('--bui-bg-warning: #ffe0b2;'); expect(result.css).toContain('--bui-bg-success: #c8e6c9;'); + // Info background may be hex or rgba depending on theme + expect(result.css).toMatch( + /--bui-bg-info:\s*(#[0-9a-f]{6}|rgba?\([^)]*\));/i, + ); }); it('should generate foreground colors correctly', () => { @@ -178,10 +182,8 @@ describe('convertMuiToBuiTheme', () => { const result = convertMuiToBuiTheme(theme); - expect(result.css).toContain('--bui-fg-link: #1976d2;'); - expect(result.css).toContain('--bui-fg-link-hover: #115293;'); expect(result.css).toContain('--bui-fg-disabled: #cccccc;'); - // Foreground danger/warning/success may be hex or rgb depending on theme + // Foreground status colors (standalone) expect(result.css).toMatch( /--bui-fg-danger:\s*(#[0-9a-f]{6}|rgb\([^)]*\));/i, ); @@ -191,6 +193,22 @@ describe('convertMuiToBuiTheme', () => { expect(result.css).toMatch( /--bui-fg-success:\s*(#[0-9a-f]{6}|rgb\([^)]*\));/i, ); + expect(result.css).toMatch( + /--bui-fg-info:\s*(#[0-9a-f]{6}|rgb\([^)]*\));/i, + ); + // Foreground status colors (on background) + expect(result.css).toMatch( + /--bui-fg-danger-on-bg:\s*(#[0-9a-f]{6}|rgb\([^)]*\));/i, + ); + expect(result.css).toMatch( + /--bui-fg-warning-on-bg:\s*(#[0-9a-f]{6}|rgb\([^)]*\));/i, + ); + expect(result.css).toMatch( + /--bui-fg-success-on-bg:\s*(#[0-9a-f]{6}|rgb\([^)]*\));/i, + ); + expect(result.css).toMatch( + /--bui-fg-info-on-bg:\s*(#[0-9a-f]{6}|rgb\([^)]*\));/i, + ); }); it('should generate border colors correctly', () => { @@ -215,6 +233,10 @@ describe('convertMuiToBuiTheme', () => { expect(result.css).toContain('--bui-border-danger: #f44336;'); expect(result.css).toContain('--bui-border-warning: #ff9800;'); expect(result.css).toContain('--bui-border-success: #4caf50;'); + // Info border may be hex or rgb depending on theme + expect(result.css).toMatch( + /--bui-border-info:\s*(#[0-9a-f]{6}|rgb\([^)]*\));/i, + ); }); it('should handle function-based spacing', () => { diff --git a/plugins/mui-to-bui/src/components/BuiThemerPage/convertMuiToBuiTheme.ts b/plugins/mui-to-bui/src/components/BuiThemerPage/convertMuiToBuiTheme.ts index 029d70cec7..dc72e3d597 100644 --- a/plugins/mui-to-bui/src/components/BuiThemerPage/convertMuiToBuiTheme.ts +++ b/plugins/mui-to-bui/src/components/BuiThemerPage/convertMuiToBuiTheme.ts @@ -94,16 +94,17 @@ function generateBuiVariables(theme: Mui5Theme): Record { Object.entries({ primary: palette.text.primary, secondary: palette.textSubtle, - link: palette.link ?? palette.primary.main, - 'link-hover': palette.linkHover ?? palette.primary.dark, disabled: palette.text.disabled, solid: palette.primary.contrastText, 'solid-disabled': palette.text.disabled, - tint: palette.textSubtle, - 'tint-disabled': palette.textVerySubtle, - danger: palette.error.dark, - warning: palette.warning.dark, - success: palette.success.dark, + danger: palette.error.main, + warning: palette.warning.main, + success: palette.success.main, + info: palette.info?.main ?? palette.primary.main, + 'danger-on-bg': palette.error.dark, + 'warning-on-bg': palette.warning.dark, + 'success-on-bg': palette.success.dark, + 'info-on-bg': palette.info?.dark ?? palette.primary.dark, }).forEach(([key, value]) => { styleObject[`--bui-fg-${key}`] = value; }); @@ -118,13 +119,10 @@ function generateBuiVariables(theme: Mui5Theme): Record { 'solid-hover': blend(palette.primary.main, palette.primary.dark, 0.5), 'solid-pressed': palette.primary.dark, 'solid-disabled': palette.action.disabledBackground, - tint: 'transparent', - 'tint-hover': alpha(palette.primary.main, 0.4), - 'tint-pressed': alpha(palette.primary.main, 0.6), - 'tint-disabled': palette.action.disabledBackground, danger: palette.error.light, warning: palette.warning.light, success: palette.success.light, + info: palette.info?.light ?? alpha(palette.primary.main, 0.1), }).forEach(([key, value]) => { styleObject[`--bui-bg-${key}`] = value; }); @@ -134,6 +132,7 @@ function generateBuiVariables(theme: Mui5Theme): Record { danger: palette.error.main, warning: palette.warning.main, success: palette.success.main, + info: palette.info?.main ?? palette.primary.main, }).forEach(([key, value]) => { styleObject[`--bui-border-${key}`] = value; }); From 909bd7826e4920f417174215dcb4913d4751283c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jan 2026 18:09:49 +0000 Subject: [PATCH 084/107] chore(deps): update dependency keyv to v5.6.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5d7b790adf..1a06512610 100644 --- a/yarn.lock +++ b/yarn.lock @@ -36704,11 +36704,11 @@ __metadata: linkType: hard "keyv@npm:*, keyv@npm:^5.2.1": - version: 5.5.5 - resolution: "keyv@npm:5.5.5" + version: 5.6.0 + resolution: "keyv@npm:5.6.0" dependencies: "@keyv/serialize": "npm:^1.1.1" - checksum: 10/4bbc2119151d67bfc04d3a08fc98f4efac5e171e8c99519fc7bc9ae9e05df4d1c6c835a5d133d563ed109a20db4688f3f9738400cbd3674f6303cdfc4490d429 + checksum: 10/f1de999fdf635d703d091981a0a3844fb20081e01d45c6743ada7d01f3a6570dc47d1882e10d0a98d31075b342db8e62b4ebe4f5bf473dcd0903064d718709c1 languageName: node linkType: hard From b40cf332a2fd063b060d94acc9dd4e6f514b66a2 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Fri, 30 Jan 2026 18:15:19 +0000 Subject: [PATCH 085/107] Add new info to Text Signed-off-by: Charles de Dreuille --- docs-ui/src/app/components/text/components.tsx | 1 + docs-ui/src/app/components/text/snippets.ts | 1 + packages/ui/src/components/Link/definition.ts | 9 ++++++++- packages/ui/src/components/Text/Text.module.css | 4 ++++ packages/ui/src/components/Text/Text.stories.tsx | 1 + packages/ui/src/components/Text/definition.ts | 9 ++++++++- 6 files changed, 23 insertions(+), 2 deletions(-) diff --git a/docs-ui/src/app/components/text/components.tsx b/docs-ui/src/app/components/text/components.tsx index ef803ea2fb..8021a1dde6 100644 --- a/docs-ui/src/app/components/text/components.tsx +++ b/docs-ui/src/app/components/text/components.tsx @@ -30,6 +30,7 @@ export const Colors = () => { Danger Warning Success + Info ); }; diff --git a/docs-ui/src/app/components/text/snippets.ts b/docs-ui/src/app/components/text/snippets.ts index 7f2c222186..b8cc26bd6b 100644 --- a/docs-ui/src/app/components/text/snippets.ts +++ b/docs-ui/src/app/components/text/snippets.ts @@ -21,6 +21,7 @@ export const colorsSnippet = ` Danger Warning Success + Info `; export const weightsSnippet = ` diff --git a/packages/ui/src/components/Link/definition.ts b/packages/ui/src/components/Link/definition.ts index c52d8a336c..58b780c812 100644 --- a/packages/ui/src/components/Link/definition.ts +++ b/packages/ui/src/components/Link/definition.ts @@ -27,7 +27,14 @@ export const LinkDefinition = { dataAttributes: { variant: ['subtitle', 'body', 'caption', 'label'] as const, weight: ['regular', 'bold'] as const, - color: ['primary', 'secondary', 'danger', 'warning', 'success'] as const, + color: [ + 'primary', + 'secondary', + 'danger', + 'warning', + 'success', + 'info', + ] as const, truncate: [true, false] as const, standalone: [true, false] as const, }, diff --git a/packages/ui/src/components/Text/Text.module.css b/packages/ui/src/components/Text/Text.module.css index 57de6f0ef8..b7b7b9f203 100644 --- a/packages/ui/src/components/Text/Text.module.css +++ b/packages/ui/src/components/Text/Text.module.css @@ -91,6 +91,10 @@ color: var(--bui-fg-success); } + .bui-Text[data-color='info'] { + color: var(--bui-fg-info); + } + .bui-Text[data-truncate] { overflow: hidden; text-overflow: ellipsis; diff --git a/packages/ui/src/components/Text/Text.stories.tsx b/packages/ui/src/components/Text/Text.stories.tsx index 09a317716a..e8dff19318 100644 --- a/packages/ui/src/components/Text/Text.stories.tsx +++ b/packages/ui/src/components/Text/Text.stories.tsx @@ -101,6 +101,7 @@ export const AllColors = meta.story({ + ), }); diff --git a/packages/ui/src/components/Text/definition.ts b/packages/ui/src/components/Text/definition.ts index dbbfd6b72a..ad676405c7 100644 --- a/packages/ui/src/components/Text/definition.ts +++ b/packages/ui/src/components/Text/definition.ts @@ -27,7 +27,14 @@ export const TextDefinition = { dataAttributes: { variant: ['subtitle', 'body', 'caption', 'label'] as const, weight: ['regular', 'bold'] as const, - color: ['primary', 'secondary', 'danger', 'warning', 'success'] as const, + color: [ + 'primary', + 'secondary', + 'danger', + 'warning', + 'success', + 'info', + ] as const, truncate: [true, false] as const, }, } as const satisfies ComponentDefinition; From 418bc9957ce06fb399d878550a57f499153c2e16 Mon Sep 17 00:00:00 2001 From: benjdlambert Date: Fri, 30 Jan 2026 19:22:00 +0100 Subject: [PATCH 086/107] chore: small tweaks Signed-off-by: benjdlambert --- .changeset/sharp-doodles-retire.md | 5 + .../mkdocs_with_duplicate_merge_hooks.yml | 12 + .../__fixtures__/mkdocs_with_hooks.yml | 5 + .../mkdocs_with_merge_key_hooks.yml | 8 + .../mkdocs_with_parser_differential_hooks.yml | 16 + .../src/stages/generate/helpers.test.ts | 306 +++++++++++++++++- .../src/stages/generate/helpers.ts | 70 ++++ .../src/stages/generate/mkdocsPatchers.ts | 58 +++- .../src/stages/generate/techdocs.ts | 10 + 9 files changed, 487 insertions(+), 3 deletions(-) create mode 100644 .changeset/sharp-doodles-retire.md create mode 100644 plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_duplicate_merge_hooks.yml create mode 100644 plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_hooks.yml create mode 100644 plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_merge_key_hooks.yml create mode 100644 plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_parser_differential_hooks.yml diff --git a/.changeset/sharp-doodles-retire.md b/.changeset/sharp-doodles-retire.md new file mode 100644 index 0000000000..2062b7ec34 --- /dev/null +++ b/.changeset/sharp-doodles-retire.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-node': patch +--- + +Some security fixes diff --git a/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_duplicate_merge_hooks.yml b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_duplicate_merge_hooks.yml new file mode 100644 index 0000000000..145412e730 --- /dev/null +++ b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_duplicate_merge_hooks.yml @@ -0,0 +1,12 @@ +# This file uses duplicate merge keys (<<) which causes parser differential: +# - js-yaml: hooks: null (first merge key wins) +# - PyYAML: hooks: [hello.py] (last merge key wins) +site_name: Test +plugins: + - techdocs-core +array_base: &array_base + hooks: [hello.py] +null_base: &null_base + hooks: null +<<: *null_base +<<: *array_base diff --git a/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_hooks.yml b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_hooks.yml new file mode 100644 index 0000000000..333ba6db36 --- /dev/null +++ b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_hooks.yml @@ -0,0 +1,5 @@ +site_name: Test site name +site_description: Test site description +hooks: + - hooks/my_hook.py + - hooks/another_hook.py diff --git a/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_merge_key_hooks.yml b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_merge_key_hooks.yml new file mode 100644 index 0000000000..f3b5dbdc93 --- /dev/null +++ b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_merge_key_hooks.yml @@ -0,0 +1,8 @@ +site_name: Test +plugins: + - techdocs-core +extra: + array_hooks: &array_hooks + hooks: + - custom_hook.py +<<: *array_hooks diff --git a/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_parser_differential_hooks.yml b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_parser_differential_hooks.yml new file mode 100644 index 0000000000..42f574dcaf --- /dev/null +++ b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_parser_differential_hooks.yml @@ -0,0 +1,16 @@ +# This file intentionally uses duplicate merge keys (<<) which is technically +# invalid YAML, but is accepted by most parsers with different behaviors: +# - js-yaml: uses the first merge key value (hooks: null) +# - PyYAML: uses the last merge key value (hooks: [custom_hook.py]) +# This tests that sanitization catches hooks regardless of parser interpretation. +site_name: Test +plugins: + - techdocs-core +extra: + null_hooks: &null_hooks + hooks: null + array_hooks: &array_hooks + hooks: + - custom_hook.py +<<: *null_hooks +<<: *array_hooks diff --git a/plugins/techdocs-node/src/stages/generate/helpers.test.ts b/plugins/techdocs-node/src/stages/generate/helpers.test.ts index 8a066e2c42..9b24ab9aa9 100644 --- a/plugins/techdocs-node/src/stages/generate/helpers.test.ts +++ b/plugins/techdocs-node/src/stages/generate/helpers.test.ts @@ -30,11 +30,13 @@ import { getRepoUrlFromLocationAnnotation, patchIndexPreBuild, storeEtagMetadata, + validateDocsDirectory, validateMkdocsYaml, } from './helpers'; import { patchMkdocsYmlPreBuild, patchMkdocsYmlWithPlugins, + sanitizeMkdocsYml, } from './mkdocsPatchers'; import yaml from 'js-yaml'; @@ -92,6 +94,24 @@ const mkdocsYmlWithAdditionalPluginsWithConfig = fs.readFileSync( const mkdocsYmlWithEnvTag = fs.readFileSync( resolvePath(__filename, '../__fixtures__/mkdocs_with_env_tag.yml'), ); +const mkdocsYmlWithHooks = fs.readFileSync( + resolvePath(__filename, '../__fixtures__/mkdocs_with_hooks.yml'), +); +const mkdocsYmlWithMergeKeyHooks = fs.readFileSync( + resolvePath(__filename, '../__fixtures__/mkdocs_with_merge_key_hooks.yml'), +); +const mkdocsYmlWithParserDifferentialHooks = fs.readFileSync( + resolvePath( + __filename, + '../__fixtures__/mkdocs_with_parser_differential_hooks.yml', + ), +); +const mkdocsYmlWithDuplicateMergeHooks = fs.readFileSync( + resolvePath( + __filename, + '../__fixtures__/mkdocs_with_duplicate_merge_hooks.yml', + ), +); const mockLogger = mockServices.logger.mock(); const warn = jest.spyOn(mockLogger, 'warn'); @@ -441,8 +461,6 @@ describe('helpers', () => { }; expect(parsedYml.plugins).toHaveLength(4); expect(parsedYml.plugins).toContain('techdocs-core'); - // we want our original object with its properties to be preserved, and for the basic string form of the plugin - // to NOT be added as well. expect(parsedYml.plugins).not.toContain('custom-plugin'); expect(parsedYml.plugins).toContainEqual({ 'custom-plugin': { with: { configuration: 1 } }, @@ -727,4 +745,288 @@ describe('helpers', () => { ).resolves.toBeUndefined(); }); }); + + describe('sanitizeMkdocsYml', () => { + beforeEach(() => { + warn.mockClear(); + mockDir.setContent({ + 'mkdocs_with_hooks.yml': mkdocsYmlWithHooks, + 'mkdocs.yml': mkdocsYml, + }); + }); + + it('should remove disallowed keys from mkdocs.yml and log a warning', async () => { + await sanitizeMkdocsYml( + mockDir.resolve('mkdocs_with_hooks.yml'), + mockLogger, + ); + + const updatedMkdocsYml = await fs.readFile( + mockDir.resolve('mkdocs_with_hooks.yml'), + ); + const parsedYml = yaml.load(updatedMkdocsYml.toString()) as { + hooks?: string[]; + site_name: string; + }; + expect(parsedYml.hooks).toBeUndefined(); + expect(parsedYml.site_name).toBe('Test site name'); + expect(warn).toHaveBeenCalledWith( + expect.stringContaining( + 'Removed the following unsupported configuration keys from mkdocs.yml: hooks', + ), + ); + }); + + it('should not modify mkdocs.yml when no disallowed keys are present', async () => { + await sanitizeMkdocsYml(mockDir.resolve('mkdocs.yml'), mockLogger); + + const updatedMkdocsYml = await fs.readFile(mockDir.resolve('mkdocs.yml')); + const parsedYml = yaml.load(updatedMkdocsYml.toString()) as { + hooks?: string[]; + site_name: string; + }; + expect(parsedYml.hooks).toBeUndefined(); + expect(parsedYml.site_name).toBe('Test site name'); + expect(warn).not.toHaveBeenCalled(); + }); + + it('should remove multiple disallowed keys and list them all in the warning', async () => { + const mkdocsWithMultipleDisallowed = `site_name: Test +hooks: + - hook.py +some_unknown_key: value +another_unknown: true +`; + mockDir.setContent({ + 'mkdocs_multiple.yml': mkdocsWithMultipleDisallowed, + }); + + await sanitizeMkdocsYml( + mockDir.resolve('mkdocs_multiple.yml'), + mockLogger, + ); + + const updatedMkdocsYml = await fs.readFile( + mockDir.resolve('mkdocs_multiple.yml'), + ); + const parsedYml = yaml.load(updatedMkdocsYml.toString()) as Record< + string, + unknown + >; + expect(parsedYml.hooks).toBeUndefined(); + expect(parsedYml.some_unknown_key).toBeUndefined(); + expect(parsedYml.another_unknown).toBeUndefined(); + expect(parsedYml.site_name).toBe('Test'); + expect(warn).toHaveBeenCalledWith( + expect.stringMatching( + /Removed the following unsupported configuration keys.*hooks.*some_unknown_key.*another_unknown|Removed the following unsupported configuration keys.*hooks.*another_unknown.*some_unknown_key/, + ), + ); + }); + + it('should remove hooks introduced via YAML merge keys', async () => { + mockDir.setContent({ + 'mkdocs_merge_keys.yml': mkdocsYmlWithMergeKeyHooks, + }); + + await sanitizeMkdocsYml( + mockDir.resolve('mkdocs_merge_keys.yml'), + mockLogger, + ); + + const updatedMkdocsYml = await fs.readFile( + mockDir.resolve('mkdocs_merge_keys.yml'), + ); + const parsedYml = yaml.load(updatedMkdocsYml.toString()) as Record< + string, + unknown + >; + + expect(parsedYml.hooks).toBeUndefined(); + expect(parsedYml.site_name).toBe('Test'); + expect(parsedYml.plugins).toEqual(['techdocs-core']); + expect(updatedMkdocsYml.toString()).not.toContain('<<:'); + + expect(warn).toHaveBeenCalledWith( + expect.stringContaining( + 'Removed the following unsupported configuration keys from mkdocs.yml: hooks', + ), + ); + }); + + it('should remove hooks when parsers interpret duplicate merge keys differently', async () => { + mockDir.setContent({ + 'mkdocs_parser_diff.yml': mkdocsYmlWithParserDifferentialHooks, + }); + + await sanitizeMkdocsYml( + mockDir.resolve('mkdocs_parser_diff.yml'), + mockLogger, + ); + + const updatedMkdocsYml = await fs.readFile( + mockDir.resolve('mkdocs_parser_diff.yml'), + ); + const parsedYml = yaml.load(updatedMkdocsYml.toString()) as Record< + string, + unknown + >; + + expect(parsedYml.hooks).toBeUndefined(); + expect(parsedYml.site_name).toBe('Test'); + expect(parsedYml.plugins).toEqual(['techdocs-core']); + expect(parsedYml.extra).toBeDefined(); + expect(updatedMkdocsYml.toString()).not.toContain('<<:'); + + expect(warn).toHaveBeenCalledWith( + expect.stringContaining( + 'Removed the following unsupported configuration keys from mkdocs.yml: hooks', + ), + ); + }); + + it('should remove hooks with duplicate merge keys and top-level anchors', async () => { + mockDir.setContent({ + 'mkdocs_duplicate_merge.yml': mkdocsYmlWithDuplicateMergeHooks, + }); + + await sanitizeMkdocsYml( + mockDir.resolve('mkdocs_duplicate_merge.yml'), + mockLogger, + ); + + const updatedMkdocsYml = await fs.readFile( + mockDir.resolve('mkdocs_duplicate_merge.yml'), + ); + const parsedYml = yaml.load(updatedMkdocsYml.toString()) as Record< + string, + unknown + >; + + expect(parsedYml.hooks).toBeUndefined(); + expect(parsedYml.site_name).toBe('Test'); + expect(parsedYml.plugins).toEqual(['techdocs-core']); + expect(updatedMkdocsYml.toString()).not.toContain('<<:'); + + expect(warn).toHaveBeenCalledWith(expect.stringContaining('hooks')); + }); + }); + + describe('validateDocsDirectory', () => { + it('should pass for a valid docs directory with no symlinks', async () => { + mockDir.setContent({ + docs: { + 'index.md': 'Hello', + 'guide.md': 'Guide content', + }, + }); + + await expect( + validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), + ).resolves.toBeUndefined(); + }); + + it('should pass for symlinks pointing within the input directory', async () => { + mockDir.setContent({ + docs: { + 'index.md': 'Hello', + }, + 'other.md': 'Other content', + }); + + // Create a symlink within the input directory + await fs.symlink( + mockDir.resolve('other.md'), + mockDir.resolve('docs/link.md'), + ); + + await expect( + validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), + ).resolves.toBeUndefined(); + }); + + it('should reject symlinks pointing outside the input directory', async () => { + mockDir.setContent({ + docs: { + 'index.md': 'Hello', + }, + }); + + // Create a symlink pointing outside the input directory + await fs.symlink('/tmp', mockDir.resolve('docs/escape.md')); + + await expect( + validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), + ).rejects.toThrow(/not allowed to refer to a location outside/i); + }); + + it('should reject symlinks to sensitive files like /etc/passwd', async () => { + mockDir.setContent({ + docs: { + 'index.md': 'Hello', + }, + }); + + // Create a symlink to /etc/passwd + await fs.symlink('/etc/passwd', mockDir.resolve('docs/passwd.md')); + + await expect( + validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), + ).rejects.toThrow(/not allowed to refer to a location outside/i); + }); + + it('should reject symlinks in nested directories', async () => { + mockDir.setContent({ + docs: { + 'index.md': 'Hello', + nested: { + 'page.md': 'Nested page', + }, + }, + }); + + // Create a symlink in a nested directory pointing outside + await fs.symlink('/etc/passwd', mockDir.resolve('docs/nested/escape.md')); + + await expect( + validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), + ).rejects.toThrow(/not allowed to refer to a location outside/i); + }); + + it('should reject directory symlinks pointing outside', async () => { + mockDir.setContent({ + docs: { + 'index.md': 'Hello', + }, + }); + + // Create a directory symlink pointing outside + await fs.symlink('/tmp', mockDir.resolve('docs/external-dir')); + + await expect( + validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), + ).rejects.toThrow(/not allowed to refer to a location outside/i); + }); + + it('should pass for directory symlinks within input directory', async () => { + mockDir.setContent({ + docs: { + 'index.md': 'Hello', + }, + assets: { + 'image.png': 'binary content', + }, + }); + + // Create a directory symlink within input directory + await fs.symlink( + mockDir.resolve('assets'), + mockDir.resolve('docs/assets'), + ); + + await expect( + validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), + ).resolves.toBeUndefined(); + }); + }); }); diff --git a/plugins/techdocs-node/src/stages/generate/helpers.ts b/plugins/techdocs-node/src/stages/generate/helpers.ts index fa0311b47c..1b0813f18d 100644 --- a/plugins/techdocs-node/src/stages/generate/helpers.ts +++ b/plugins/techdocs-node/src/stages/generate/helpers.ts @@ -15,6 +15,7 @@ */ import { isChildPath, LoggerService } from '@backstage/backend-plugin-api'; +import { NotAllowedError } from '@backstage/errors'; import { Entity } from '@backstage/catalog-model'; import { assertError, ForwardedError } from '@backstage/errors'; import { ScmIntegrationRegistry } from '@backstage/integration'; @@ -266,6 +267,51 @@ export const getMkdocsYml = async ( }; }; +/** + * Allowlist of MkDocs configuration keys supported by TechDocs. + * + * @see https://www.mkdocs.org/user-guide/configuration/ + */ +export const ALLOWED_MKDOCS_KEYS = new Set([ + // Site information + 'site_name', + 'site_url', + 'site_description', + 'site_author', + // Repository + 'repo_url', + 'repo_name', + 'edit_uri', + 'edit_uri_template', + // Build directories + 'docs_dir', + 'site_dir', + // Documentation layout + 'nav', + 'exclude_docs', + 'not_in_nav', + // Build settings + 'theme', + 'plugins', + 'markdown_extensions', + 'extra', + 'extra_css', + 'extra_templates', + // Preview controls + 'use_directory_urls', + 'strict', + 'dev_addr', + 'watch', + // Metadata + 'copyright', + 'remote_branch', + 'remote_name', + 'validation', + // Deprecated + 'google_analytics', + 'INHERIT', +]); + /** * Validating mkdocs config file for incorrect/insecure values * Throws on invalid configs @@ -288,6 +334,7 @@ export const validateMkdocsYaml = async ( } const parsedMkdocsYml: Record = mkdocsYml; + if ( parsedMkdocsYml.docs_dir && !isChildPath(inputDir, resolvePath(inputDir, parsedMkdocsYml.docs_dir)) @@ -300,6 +347,29 @@ export const validateMkdocsYaml = async ( return parsedMkdocsYml.docs_dir; }; +/** + * Validates that the docs directory doesn't contain symlinks pointing outside + * the input directory. This prevents path traversal attacks where malicious + * symlinks could be used to read arbitrary files from the host filesystem. + * + * @param docsDir - The docs directory to validate (absolute path) + * @param inputDir - The root input directory that symlinks must stay within + */ +export const validateDocsDirectory = async ( + docsDir: string, + inputDir: string, +): Promise => { + const files = await getFileTreeRecursively(docsDir); + + for (const file of files) { + if (!isChildPath(inputDir, file)) { + throw new NotAllowedError( + `Path ${file} is not allowed to refer to a location outside ${inputDir}`, + ); + } + } +}; + /** * Update docs/index.md file before TechDocs generator uses it to generate docs site, * falling back to docs/README.md or README.md in case a default docs/index.md diff --git a/plugins/techdocs-node/src/stages/generate/mkdocsPatchers.ts b/plugins/techdocs-node/src/stages/generate/mkdocsPatchers.ts index 804c06f129..cd506d3b28 100644 --- a/plugins/techdocs-node/src/stages/generate/mkdocsPatchers.ts +++ b/plugins/techdocs-node/src/stages/generate/mkdocsPatchers.ts @@ -16,7 +16,11 @@ import fs from 'fs-extra'; import yaml from 'js-yaml'; import { ParsedLocationAnnotation } from '../../helpers'; -import { getRepoUrlFromLocationAnnotation, MKDOCS_SCHEMA } from './helpers'; +import { + ALLOWED_MKDOCS_KEYS, + getRepoUrlFromLocationAnnotation, + MKDOCS_SCHEMA, +} from './helpers'; import { assertError } from '@backstage/errors'; import { ScmIntegrationRegistry } from '@backstage/integration'; import { LoggerService } from '@backstage/backend-plugin-api'; @@ -180,3 +184,55 @@ export const patchMkdocsYmlWithPlugins = async ( return changesMade; }); }; + +/** + * Sanitize mkdocs.yml by keeping only allowed configuration keys. + * + * TechDocs only supports a subset of MkDocs configuration options. + * This function reconstructs the config with only allowed keys, + * discarding everything else. This approach ensures that any unknown + * or potentially dangerous configuration options are not passed to MkDocs. + * + * The file is always rewritten to ensure YAML features like merge keys + * and anchors are resolved into plain configuration. + * + * @param mkdocsYmlPath - Absolute path to mkdocs.yml or equivalent of a docs site + * @param logger - A logger instance + */ +export const sanitizeMkdocsYml = async ( + mkdocsYmlPath: string, + logger: LoggerService, +) => { + await patchMkdocsFile(mkdocsYmlPath, logger, mkdocsYml => { + // Identify keys that will be removed for logging + const removedKeys = Object.keys(mkdocsYml).filter( + key => !ALLOWED_MKDOCS_KEYS.has(key), + ); + + if (removedKeys.length > 0) { + logger.warn( + `Removed the following unsupported configuration keys from mkdocs.yml: ${removedKeys.join( + ', ', + )}. ` + + `TechDocs only supports a subset of MkDocs configuration options.`, + ); + } + + // Build a new object with only allowed keys + const sanitized: Record = {}; + for (const key of ALLOWED_MKDOCS_KEYS) { + if (key in mkdocsYml) { + sanitized[key] = (mkdocsYml as Record)[key]; + } + } + + // Clear the original object and copy sanitized values back + for (const key of Object.keys(mkdocsYml)) { + delete (mkdocsYml as Record)[key]; + } + Object.assign(mkdocsYml, sanitized); + + // Always rewrite to ensure clean YAML output (resolves merge keys, anchors, etc.) + return true; + }); +}; diff --git a/plugins/techdocs-node/src/stages/generate/techdocs.ts b/plugins/techdocs-node/src/stages/generate/techdocs.ts index 077963b6c7..ed357c5c81 100644 --- a/plugins/techdocs-node/src/stages/generate/techdocs.ts +++ b/plugins/techdocs-node/src/stages/generate/techdocs.ts @@ -26,12 +26,14 @@ import { patchIndexPreBuild, runCommand, storeEtagMetadata, + validateDocsDirectory, validateMkdocsYaml, } from './helpers'; import { patchMkdocsYmlPreBuild, patchMkdocsYmlWithPlugins, + sanitizeMkdocsYml, } from './mkdocsPatchers'; import { GeneratorBase, @@ -112,6 +114,14 @@ export class TechdocsGenerator implements GeneratorBase { // validate the docs_dir first const docsDir = await validateMkdocsYaml(inputDir, content); + // Remove unsupported configuration keys + await sanitizeMkdocsYml(mkdocsYmlPath, childLogger); + + // Validate that no symlinks in the docs directory point outside the input directory + // This prevents path traversal attacks where malicious symlinks could leak host files + const resolvedDocsDir = path.join(inputDir, docsDir ?? 'docs'); + await validateDocsDirectory(resolvedDocsDir, inputDir); + if (parsedLocationAnnotation) { await patchMkdocsYmlPreBuild( mkdocsYmlPath, From 6192f335b9609a580bee96d211f15a3ea2de61dc Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Fri, 30 Jan 2026 18:26:59 +0000 Subject: [PATCH 087/107] Update HeaderPage.tsx Signed-off-by: Charles de Dreuille --- docs-ui/src/app/components/link/page.mdx | 16 +- docs-ui/src/app/tokens/page.mdx | 8 +- docs-ui/src/css/theme-backstage.css | 7189 ++++++++++++++++- docs-ui/src/css/theme-spotify.css | 240 +- .../src/components/HeaderPage/HeaderPage.tsx | 1 + packages/ui/src/css/tokens.css | 17 +- 6 files changed, 7452 insertions(+), 19 deletions(-) diff --git a/docs-ui/src/app/components/link/page.mdx b/docs-ui/src/app/components/link/page.mdx index a7e425a253..8715bb270b 100644 --- a/docs-ui/src/app/components/link/page.mdx +++ b/docs-ui/src/app/components/link/page.mdx @@ -82,13 +82,25 @@ Status colors for contextual links. ### Weight -} code={weightSnippet} layout="side-by-side" /> +} + code={weightSnippet} + layout="side-by-side" +/> ### Standalone Use `standalone` to remove the underline by default. The underline will appear on hover. -} code={standaloneSnippet} layout="side-by-side" /> +} + code={standaloneSnippet} + layout="side-by-side" +/> diff --git a/docs-ui/src/app/tokens/page.mdx b/docs-ui/src/app/tokens/page.mdx index ffad2ffa55..fdc8aa9a90 100644 --- a/docs-ui/src/app/tokens/page.mdx +++ b/docs-ui/src/app/tokens/page.mdx @@ -317,9 +317,7 @@ are prefixed with `fg` to make it easier to identify. --bui-fg-danger - - Used for error states and destructive actions. - + Used for error states and destructive actions. @@ -333,9 +331,7 @@ are prefixed with `fg` to make it easier to identify. --bui-fg-success - - Used for success states and positive feedback. - + Used for success states and positive feedback. diff --git a/docs-ui/src/css/theme-backstage.css b/docs-ui/src/css/theme-backstage.css index 4bd50bc04e..e1ba6ba5b0 100644 --- a/docs-ui/src/css/theme-backstage.css +++ b/docs-ui/src/css/theme-backstage.css @@ -1 +1,7188 @@ -@layer tokens{:root{--bui-font-regular:system-ui;--bui-font-monospace:ui-monospace,"Menlo","Monaco","Consolas","Liberation Mono","Courier New",monospace;--bui-font-weight-regular:400;--bui-font-weight-bold:600;--bui-font-size-1:.625rem;--bui-font-size-2:.75rem;--bui-font-size-3:.875rem;--bui-font-size-4:1rem;--bui-font-size-5:1.25rem;--bui-font-size-6:1.5rem;--bui-font-size-7:2rem;--bui-font-size-8:3rem;--bui-font-size-9:4rem;--bui-font-size-10:5.75rem;--bui-space:.25rem;--bui-space-0_5:calc(var(--bui-space)*.5);--bui-space-1:var(--bui-space);--bui-space-1_5:calc(var(--bui-space)*1.5);--bui-space-2:calc(var(--bui-space)*2);--bui-space-3:calc(var(--bui-space)*3);--bui-space-4:calc(var(--bui-space)*4);--bui-space-5:calc(var(--bui-space)*5);--bui-space-6:calc(var(--bui-space)*6);--bui-space-7:calc(var(--bui-space)*7);--bui-space-8:calc(var(--bui-space)*8);--bui-space-9:calc(var(--bui-space)*9);--bui-space-10:calc(var(--bui-space)*10);--bui-space-11:calc(var(--bui-space)*11);--bui-space-12:calc(var(--bui-space)*12);--bui-space-13:calc(var(--bui-space)*13);--bui-space-14:calc(var(--bui-space)*14);--bui-radius-1:calc(.125rem);--bui-radius-2:calc(.25rem);--bui-radius-3:calc(.5rem);--bui-radius-4:calc(.75rem);--bui-radius-5:calc(1rem);--bui-radius-6:calc(1.25rem);--bui-radius-full:9999px;--bui-black:#000;--bui-white:#fff;--bui-gray-1:#f8f8f8;--bui-gray-2:#ececec;--bui-gray-3:#d9d9d9;--bui-gray-4:#c1c1c1;--bui-gray-5:#9e9e9e;--bui-gray-6:#8c8c8c;--bui-gray-7:#757575;--bui-gray-8:#595959;--bui-bg-surface-0:var(--bui-gray-1);--bui-bg-surface-1:var(--bui-white);--bui-bg-surface-2:var(--bui-gray-1);--bui-bg-surface-3:var(--bui-gray-2);--bui-bg-solid:#1f5493;--bui-bg-solid-hover:#163a66;--bui-bg-solid-pressed:#0f2b4e;--bui-bg-solid-disabled:#163a66;--bui-bg-neutral-on-surface-0:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-0-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-0-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-0-disabled:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-1:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-1-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-1-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-1-disabled:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-2:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-2-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-2-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-2-disabled:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-3:oklch(0% 0 0/.06);--bui-bg-neutral-on-surface-3-hover:oklch(0% 0 0/.12);--bui-bg-neutral-on-surface-3-pressed:oklch(0% 0 0/.16);--bui-bg-neutral-on-surface-3-disabled:oklch(0% 0 0/.06);--bui-bg-danger:#ffe2e2;--bui-bg-warning:#ffedd5;--bui-bg-success:#dcfce7;--bui-bg-info:#dbeafe;--bui-fg-primary:var(--bui-black);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-disabled:#9e9e9e;--bui-fg-solid:var(--bui-white);--bui-fg-solid-disabled:#98a8bc;--bui-fg-danger-on-bg:#991919;--bui-fg-warning-on-bg:#92310a;--bui-fg-success-on-bg:#116932;--bui-fg-info-on-bg:#173da6;--bui-fg-danger:#ec3b18;--bui-fg-warning:#ef7a32;--bui-fg-success:#1ed760;--bui-fg-info:#0d74ce;--bui-border:#0000001a;--bui-border-hover:#0003;--bui-border-pressed:#0006;--bui-border-disabled:#0000001a;--bui-border-info:#7ea9d6;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#1f5493;--bui-scrollbar:#a0a0a03b;--bui-scrollbar-thumb:#a0a0a0;--bui-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--bui-animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite}[data-theme-mode=dark]{--bui-gray-1:#191919;--bui-gray-2:#242424;--bui-gray-3:#373737;--bui-gray-4:#464646;--bui-gray-5:#575757;--bui-gray-6:#7b7b7b;--bui-gray-7:#9e9e9e;--bui-gray-8:#b4b4b4;--bui-bg-surface-0:#333;--bui-bg-surface-1:var(--bui-gray-1);--bui-bg-surface-2:var(--bui-gray-2);--bui-bg-surface-3:var(--bui-gray-3);--bui-bg-solid:#9cc9ff;--bui-bg-solid-hover:#83b9fd;--bui-bg-solid-pressed:#83b9fd;--bui-bg-solid-disabled:#1b3d68;--bui-bg-neutral-on-surface-0:oklch(100% 0 0/.1);--bui-bg-neutral-on-surface-0-hover:oklch(100% 0 0/.14);--bui-bg-neutral-on-surface-0-pressed:oklch(100% 0 0/.2);--bui-bg-neutral-on-surface-0-disabled:oklch(100% 0 0/.1);--bui-bg-neutral-on-surface-1:oklch(100% 0 0/.06);--bui-bg-neutral-on-surface-1-hover:oklch(100% 0 0/.1);--bui-bg-neutral-on-surface-1-pressed:oklch(100% 0 0/.16);--bui-bg-neutral-on-surface-1-disabled:oklch(100% 0 0/.06);--bui-bg-neutral-on-surface-2:oklch(100% 0 0/.08);--bui-bg-neutral-on-surface-2-hover:oklch(100% 0 0/.12);--bui-bg-neutral-on-surface-2-pressed:oklch(100% 0 0/.2);--bui-bg-neutral-on-surface-2-disabled:oklch(100% 0 0/.08);--bui-bg-neutral-on-surface-3:oklch(100% 0 0/.08);--bui-bg-neutral-on-surface-3-hover:oklch(100% 0 0/.12);--bui-bg-neutral-on-surface-3-pressed:oklch(100% 0 0/.2);--bui-bg-neutral-on-surface-3-disabled:oklch(100% 0 0/.08);--bui-bg-danger:#300c0c;--bui-bg-warning:#302008;--bui-bg-success:#042713;--bui-bg-info:#132049;--bui-fg-primary:var(--bui-white);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-disabled:var(--bui-gray-7);--bui-fg-solid:#101821;--bui-fg-solid-disabled:#6191cc;--bui-fg-danger-on-bg:#fca5a5;--bui-fg-warning-on-bg:#fdba74;--bui-fg-success-on-bg:#86efac;--bui-fg-info-on-bg:#a3cfff;--bui-fg-danger:#ff5a30;--bui-fg-warning:#ffa057;--bui-fg-success:#1ed760;--bui-fg-info:#70b8ff;--bui-border:#ffffff1f;--bui-border-hover:#fff6;--bui-border-pressed:#ffffff80;--bui-border-disabled:#fff3;--bui-border-info:#7ea9d6;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#1f5493;--bui-scrollbar:#3636363a;--bui-scrollbar-thumb:#575757;--bui-shadow:none}}@layer base{*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;tab-size:4;font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;line-height:1.15}body{margin:0}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{border-color:currentColor}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}:where(a){color:inherit;text-decoration:none}@keyframes pulse{50%{opacity:.5}}body{background-color:var(--bui-bg-surface-0);color:var(--bui-fg-primary);font-family:var(--bui-font-regular);font-weight:var(--bui-font-weight-regular);font-size:var(--bui-font-size-3);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[data-theme-mode=dark]{color-scheme:dark}[data-theme-mode=light]{color-scheme:light}}@layer components;@layer utilities{.bui-p{padding:var(--p)}.bui-p-0\.5{padding:var(--bui-space-0_5)}.bui-p-1{padding:var(--bui-space-1)}.bui-p-1\.5{padding:var(--bui-space-1_5)}.bui-p-2{padding:var(--bui-space-2)}.bui-p-3{padding:var(--bui-space-3)}.bui-p-4{padding:var(--bui-space-4)}.bui-p-5{padding:var(--bui-space-5)}.bui-p-6{padding:var(--bui-space-6)}.bui-p-7{padding:var(--bui-space-7)}.bui-p-8{padding:var(--bui-space-8)}.bui-p-9{padding:var(--bui-space-9)}.bui-p-10{padding:var(--bui-space-10)}.bui-p-11{padding:var(--bui-space-11)}.bui-p-12{padding:var(--bui-space-12)}.bui-p-13{padding:var(--bui-space-13)}.bui-p-14{padding:var(--bui-space-14)}@media (width>=640px){.xs\:bui-p{padding:var(--p-xs)}.xs\:bui-p-0\.5{padding:var(--bui-space-0_5)}.xs\:bui-p-1{padding:var(--bui-space-1)}.xs\:bui-p-1\.5{padding:var(--bui-space-1_5)}.xs\:bui-p-2{padding:var(--bui-space-2)}.xs\:bui-p-3{padding:var(--bui-space-3)}.xs\:bui-p-4{padding:var(--bui-space-4)}.xs\:bui-p-5{padding:var(--bui-space-5)}.xs\:bui-p-6{padding:var(--bui-space-6)}.xs\:bui-p-7{padding:var(--bui-space-7)}.xs\:bui-p-8{padding:var(--bui-space-8)}.xs\:bui-p-9{padding:var(--bui-space-9)}.xs\:bui-p-10{padding:var(--bui-space-10)}.xs\:bui-p-11{padding:var(--bui-space-11)}.xs\:bui-p-12{padding:var(--bui-space-12)}.xs\:bui-p-13{padding:var(--bui-space-13)}.xs\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-p{padding:var(--p-sm)}.sm\:bui-p-0\.5{padding:var(--bui-space-0_5)}.sm\:bui-p-1{padding:var(--bui-space-1)}.sm\:bui-p-1\.5{padding:var(--bui-space-1_5)}.sm\:bui-p-2{padding:var(--bui-space-2)}.sm\:bui-p-3{padding:var(--bui-space-3)}.sm\:bui-p-4{padding:var(--bui-space-4)}.sm\:bui-p-5{padding:var(--bui-space-5)}.sm\:bui-p-6{padding:var(--bui-space-6)}.sm\:bui-p-7{padding:var(--bui-space-7)}.sm\:bui-p-8{padding:var(--bui-space-8)}.sm\:bui-p-9{padding:var(--bui-space-9)}.sm\:bui-p-10{padding:var(--bui-space-10)}.sm\:bui-p-11{padding:var(--bui-space-11)}.sm\:bui-p-12{padding:var(--bui-space-12)}.sm\:bui-p-13{padding:var(--bui-space-13)}.sm\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-p{padding:var(--p-md)}.md\:bui-p-0\.5{padding:var(--bui-space-0_5)}.md\:bui-p-1{padding:var(--bui-space-1)}.md\:bui-p-1\.5{padding:var(--bui-space-1_5)}.md\:bui-p-2{padding:var(--bui-space-2)}.md\:bui-p-3{padding:var(--bui-space-3)}.md\:bui-p-4{padding:var(--bui-space-4)}.md\:bui-p-5{padding:var(--bui-space-5)}.md\:bui-p-6{padding:var(--bui-space-6)}.md\:bui-p-7{padding:var(--bui-space-7)}.md\:bui-p-8{padding:var(--bui-space-8)}.md\:bui-p-9{padding:var(--bui-space-9)}.md\:bui-p-10{padding:var(--bui-space-10)}.md\:bui-p-11{padding:var(--bui-space-11)}.md\:bui-p-12{padding:var(--bui-space-12)}.md\:bui-p-13{padding:var(--bui-space-13)}.md\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-p{padding:var(--p-lg)}.lg\:bui-p-0\.5{padding:var(--bui-space-0_5)}.lg\:bui-p-1{padding:var(--bui-space-1)}.lg\:bui-p-1\.5{padding:var(--bui-space-1_5)}.lg\:bui-p-2{padding:var(--bui-space-2)}.lg\:bui-p-3{padding:var(--bui-space-3)}.lg\:bui-p-4{padding:var(--bui-space-4)}.lg\:bui-p-5{padding:var(--bui-space-5)}.lg\:bui-p-6{padding:var(--bui-space-6)}.lg\:bui-p-7{padding:var(--bui-space-7)}.lg\:bui-p-8{padding:var(--bui-space-8)}.lg\:bui-p-9{padding:var(--bui-space-9)}.lg\:bui-p-10{padding:var(--bui-space-10)}.lg\:bui-p-11{padding:var(--bui-space-11)}.lg\:bui-p-12{padding:var(--bui-space-12)}.lg\:bui-p-13{padding:var(--bui-space-13)}.lg\:bui-p-14{padding:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-p{padding:var(--p-xl)}.xl\:bui-p-0\.5{padding:var(--bui-space-0_5)}.xl\:bui-p-1{padding:var(--bui-space-1)}.xl\:bui-p-1\.5{padding:var(--bui-space-1_5)}.xl\:bui-p-2{padding:var(--bui-space-2)}.xl\:bui-p-3{padding:var(--bui-space-3)}.xl\:bui-p-4{padding:var(--bui-space-4)}.xl\:bui-p-5{padding:var(--bui-space-5)}.xl\:bui-p-6{padding:var(--bui-space-6)}.xl\:bui-p-7{padding:var(--bui-space-7)}.xl\:bui-p-8{padding:var(--bui-space-8)}.xl\:bui-p-9{padding:var(--bui-space-9)}.xl\:bui-p-10{padding:var(--bui-space-10)}.xl\:bui-p-11{padding:var(--bui-space-11)}.xl\:bui-p-12{padding:var(--bui-space-12)}.xl\:bui-p-13{padding:var(--bui-space-13)}.xl\:bui-p-14{padding:var(--bui-space-14)}}.bui-pl{padding-left:var(--pl)}.bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.bui-pl-1{padding-left:var(--bui-space-1)}.bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.bui-pl-2{padding-left:var(--bui-space-2)}.bui-pl-3{padding-left:var(--bui-space-3)}.bui-pl-4{padding-left:var(--bui-space-4)}.bui-pl-5{padding-left:var(--bui-space-5)}.bui-pl-6{padding-left:var(--bui-space-6)}.bui-pl-7{padding-left:var(--bui-space-7)}.bui-pl-8{padding-left:var(--bui-space-8)}.bui-pl-9{padding-left:var(--bui-space-9)}.bui-pl-10{padding-left:var(--bui-space-10)}.bui-pl-11{padding-left:var(--bui-space-11)}.bui-pl-12{padding-left:var(--bui-space-12)}.bui-pl-13{padding-left:var(--bui-space-13)}.bui-pl-14{padding-left:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pl{padding-left:var(--pl-xs)}.xs\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.xs\:bui-pl-1{padding-left:var(--bui-space-1)}.xs\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.xs\:bui-pl-2{padding-left:var(--bui-space-2)}.xs\:bui-pl-3{padding-left:var(--bui-space-3)}.xs\:bui-pl-4{padding-left:var(--bui-space-4)}.xs\:bui-pl-5{padding-left:var(--bui-space-5)}.xs\:bui-pl-6{padding-left:var(--bui-space-6)}.xs\:bui-pl-7{padding-left:var(--bui-space-7)}.xs\:bui-pl-8{padding-left:var(--bui-space-8)}.xs\:bui-pl-9{padding-left:var(--bui-space-9)}.xs\:bui-pl-10{padding-left:var(--bui-space-10)}.xs\:bui-pl-11{padding-left:var(--bui-space-11)}.xs\:bui-pl-12{padding-left:var(--bui-space-12)}.xs\:bui-pl-13{padding-left:var(--bui-space-13)}.xs\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pl{padding-left:var(--pl-sm)}.sm\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.sm\:bui-pl-1{padding-left:var(--bui-space-1)}.sm\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.sm\:bui-pl-2{padding-left:var(--bui-space-2)}.sm\:bui-pl-3{padding-left:var(--bui-space-3)}.sm\:bui-pl-4{padding-left:var(--bui-space-4)}.sm\:bui-pl-5{padding-left:var(--bui-space-5)}.sm\:bui-pl-6{padding-left:var(--bui-space-6)}.sm\:bui-pl-7{padding-left:var(--bui-space-7)}.sm\:bui-pl-8{padding-left:var(--bui-space-8)}.sm\:bui-pl-9{padding-left:var(--bui-space-9)}.sm\:bui-pl-10{padding-left:var(--bui-space-10)}.sm\:bui-pl-11{padding-left:var(--bui-space-11)}.sm\:bui-pl-12{padding-left:var(--bui-space-12)}.sm\:bui-pl-13{padding-left:var(--bui-space-13)}.sm\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pl{padding-left:var(--pl-md)}.md\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.md\:bui-pl-1{padding-left:var(--bui-space-1)}.md\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.md\:bui-pl-2{padding-left:var(--bui-space-2)}.md\:bui-pl-3{padding-left:var(--bui-space-3)}.md\:bui-pl-4{padding-left:var(--bui-space-4)}.md\:bui-pl-5{padding-left:var(--bui-space-5)}.md\:bui-pl-6{padding-left:var(--bui-space-6)}.md\:bui-pl-7{padding-left:var(--bui-space-7)}.md\:bui-pl-8{padding-left:var(--bui-space-8)}.md\:bui-pl-9{padding-left:var(--bui-space-9)}.md\:bui-pl-10{padding-left:var(--bui-space-10)}.md\:bui-pl-11{padding-left:var(--bui-space-11)}.md\:bui-pl-12{padding-left:var(--bui-space-12)}.md\:bui-pl-13{padding-left:var(--bui-space-13)}.md\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pl{padding-left:var(--pl-lg)}.lg\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.lg\:bui-pl-1{padding-left:var(--bui-space-1)}.lg\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.lg\:bui-pl-2{padding-left:var(--bui-space-2)}.lg\:bui-pl-3{padding-left:var(--bui-space-3)}.lg\:bui-pl-4{padding-left:var(--bui-space-4)}.lg\:bui-pl-5{padding-left:var(--bui-space-5)}.lg\:bui-pl-6{padding-left:var(--bui-space-6)}.lg\:bui-pl-7{padding-left:var(--bui-space-7)}.lg\:bui-pl-8{padding-left:var(--bui-space-8)}.lg\:bui-pl-9{padding-left:var(--bui-space-9)}.lg\:bui-pl-10{padding-left:var(--bui-space-10)}.lg\:bui-pl-11{padding-left:var(--bui-space-11)}.lg\:bui-pl-12{padding-left:var(--bui-space-12)}.lg\:bui-pl-13{padding-left:var(--bui-space-13)}.lg\:bui-pl-14{padding-left:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pl{padding-left:var(--pl-xl)}.xl\:bui-pl-0\.5{padding-left:var(--bui-space-0_5)}.xl\:bui-pl-1{padding-left:var(--bui-space-1)}.xl\:bui-pl-1\.5{padding-left:var(--bui-space-1_5)}.xl\:bui-pl-2{padding-left:var(--bui-space-2)}.xl\:bui-pl-3{padding-left:var(--bui-space-3)}.xl\:bui-pl-4{padding-left:var(--bui-space-4)}.xl\:bui-pl-5{padding-left:var(--bui-space-5)}.xl\:bui-pl-6{padding-left:var(--bui-space-6)}.xl\:bui-pl-7{padding-left:var(--bui-space-7)}.xl\:bui-pl-8{padding-left:var(--bui-space-8)}.xl\:bui-pl-9{padding-left:var(--bui-space-9)}.xl\:bui-pl-10{padding-left:var(--bui-space-10)}.xl\:bui-pl-11{padding-left:var(--bui-space-11)}.xl\:bui-pl-12{padding-left:var(--bui-space-12)}.xl\:bui-pl-13{padding-left:var(--bui-space-13)}.xl\:bui-pl-14{padding-left:var(--bui-space-14)}}.bui-pr{padding-right:var(--pr)}.bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.bui-pr-1{padding-right:var(--bui-space-1)}.bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.bui-pr-2{padding-right:var(--bui-space-2)}.bui-pr-3{padding-right:var(--bui-space-3)}.bui-pr-4{padding-right:var(--bui-space-4)}.bui-pr-5{padding-right:var(--bui-space-5)}.bui-pr-6{padding-right:var(--bui-space-6)}.bui-pr-7{padding-right:var(--bui-space-7)}.bui-pr-8{padding-right:var(--bui-space-8)}.bui-pr-9{padding-right:var(--bui-space-9)}.bui-pr-10{padding-right:var(--bui-space-10)}.bui-pr-11{padding-right:var(--bui-space-11)}.bui-pr-12{padding-right:var(--bui-space-12)}.bui-pr-13{padding-right:var(--bui-space-13)}.bui-pr-14{padding-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pr{padding-right:var(--pr-xs)}.xs\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.xs\:bui-pr-1{padding-right:var(--bui-space-1)}.xs\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.xs\:bui-pr-2{padding-right:var(--bui-space-2)}.xs\:bui-pr-3{padding-right:var(--bui-space-3)}.xs\:bui-pr-4{padding-right:var(--bui-space-4)}.xs\:bui-pr-5{padding-right:var(--bui-space-5)}.xs\:bui-pr-6{padding-right:var(--bui-space-6)}.xs\:bui-pr-7{padding-right:var(--bui-space-7)}.xs\:bui-pr-8{padding-right:var(--bui-space-8)}.xs\:bui-pr-9{padding-right:var(--bui-space-9)}.xs\:bui-pr-10{padding-right:var(--bui-space-10)}.xs\:bui-pr-11{padding-right:var(--bui-space-11)}.xs\:bui-pr-12{padding-right:var(--bui-space-12)}.xs\:bui-pr-13{padding-right:var(--bui-space-13)}.xs\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pr{padding-right:var(--pr-sm)}.sm\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.sm\:bui-pr-1{padding-right:var(--bui-space-1)}.sm\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.sm\:bui-pr-2{padding-right:var(--bui-space-2)}.sm\:bui-pr-3{padding-right:var(--bui-space-3)}.sm\:bui-pr-4{padding-right:var(--bui-space-4)}.sm\:bui-pr-5{padding-right:var(--bui-space-5)}.sm\:bui-pr-6{padding-right:var(--bui-space-6)}.sm\:bui-pr-7{padding-right:var(--bui-space-7)}.sm\:bui-pr-8{padding-right:var(--bui-space-8)}.sm\:bui-pr-9{padding-right:var(--bui-space-9)}.sm\:bui-pr-10{padding-right:var(--bui-space-10)}.sm\:bui-pr-11{padding-right:var(--bui-space-11)}.sm\:bui-pr-12{padding-right:var(--bui-space-12)}.sm\:bui-pr-13{padding-right:var(--bui-space-13)}.sm\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pr{padding-right:var(--pr-md)}.md\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.md\:bui-pr-1{padding-right:var(--bui-space-1)}.md\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.md\:bui-pr-2{padding-right:var(--bui-space-2)}.md\:bui-pr-3{padding-right:var(--bui-space-3)}.md\:bui-pr-4{padding-right:var(--bui-space-4)}.md\:bui-pr-5{padding-right:var(--bui-space-5)}.md\:bui-pr-6{padding-right:var(--bui-space-6)}.md\:bui-pr-7{padding-right:var(--bui-space-7)}.md\:bui-pr-8{padding-right:var(--bui-space-8)}.md\:bui-pr-9{padding-right:var(--bui-space-9)}.md\:bui-pr-10{padding-right:var(--bui-space-10)}.md\:bui-pr-11{padding-right:var(--bui-space-11)}.md\:bui-pr-12{padding-right:var(--bui-space-12)}.md\:bui-pr-13{padding-right:var(--bui-space-13)}.md\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pr{padding-right:var(--pr-lg)}.lg\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.lg\:bui-pr-1{padding-right:var(--bui-space-1)}.lg\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.lg\:bui-pr-2{padding-right:var(--bui-space-2)}.lg\:bui-pr-3{padding-right:var(--bui-space-3)}.lg\:bui-pr-4{padding-right:var(--bui-space-4)}.lg\:bui-pr-5{padding-right:var(--bui-space-5)}.lg\:bui-pr-6{padding-right:var(--bui-space-6)}.lg\:bui-pr-7{padding-right:var(--bui-space-7)}.lg\:bui-pr-8{padding-right:var(--bui-space-8)}.lg\:bui-pr-9{padding-right:var(--bui-space-9)}.lg\:bui-pr-10{padding-right:var(--bui-space-10)}.lg\:bui-pr-11{padding-right:var(--bui-space-11)}.lg\:bui-pr-12{padding-right:var(--bui-space-12)}.lg\:bui-pr-13{padding-right:var(--bui-space-13)}.lg\:bui-pr-14{padding-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pr{padding-right:var(--pr-xl)}.xl\:bui-pr-0\.5{padding-right:var(--bui-space-0_5)}.xl\:bui-pr-1{padding-right:var(--bui-space-1)}.xl\:bui-pr-1\.5{padding-right:var(--bui-space-1_5)}.xl\:bui-pr-2{padding-right:var(--bui-space-2)}.xl\:bui-pr-3{padding-right:var(--bui-space-3)}.xl\:bui-pr-4{padding-right:var(--bui-space-4)}.xl\:bui-pr-5{padding-right:var(--bui-space-5)}.xl\:bui-pr-6{padding-right:var(--bui-space-6)}.xl\:bui-pr-7{padding-right:var(--bui-space-7)}.xl\:bui-pr-8{padding-right:var(--bui-space-8)}.xl\:bui-pr-9{padding-right:var(--bui-space-9)}.xl\:bui-pr-10{padding-right:var(--bui-space-10)}.xl\:bui-pr-11{padding-right:var(--bui-space-11)}.xl\:bui-pr-12{padding-right:var(--bui-space-12)}.xl\:bui-pr-13{padding-right:var(--bui-space-13)}.xl\:bui-pr-14{padding-right:var(--bui-space-14)}}.bui-pt{padding-top:var(--pt)}.bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.bui-pt-1{padding-top:var(--bui-space-1)}.bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.bui-pt-2{padding-top:var(--bui-space-2)}.bui-pt-3{padding-top:var(--bui-space-3)}.bui-pt-4{padding-top:var(--bui-space-4)}.bui-pt-5{padding-top:var(--bui-space-5)}.bui-pt-6{padding-top:var(--bui-space-6)}.bui-pt-7{padding-top:var(--bui-space-7)}.bui-pt-8{padding-top:var(--bui-space-8)}.bui-pt-9{padding-top:var(--bui-space-9)}.bui-pt-10{padding-top:var(--bui-space-10)}.bui-pt-11{padding-top:var(--bui-space-11)}.bui-pt-12{padding-top:var(--bui-space-12)}.bui-pt-13{padding-top:var(--bui-space-13)}.bui-pt-14{padding-top:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pt{padding-top:var(--pt-xs)}.xs\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.xs\:bui-pt-1{padding-top:var(--bui-space-1)}.xs\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.xs\:bui-pt-2{padding-top:var(--bui-space-2)}.xs\:bui-pt-3{padding-top:var(--bui-space-3)}.xs\:bui-pt-4{padding-top:var(--bui-space-4)}.xs\:bui-pt-5{padding-top:var(--bui-space-5)}.xs\:bui-pt-6{padding-top:var(--bui-space-6)}.xs\:bui-pt-7{padding-top:var(--bui-space-7)}.xs\:bui-pt-8{padding-top:var(--bui-space-8)}.xs\:bui-pt-9{padding-top:var(--bui-space-9)}.xs\:bui-pt-10{padding-top:var(--bui-space-10)}.xs\:bui-pt-11{padding-top:var(--bui-space-11)}.xs\:bui-pt-12{padding-top:var(--bui-space-12)}.xs\:bui-pt-13{padding-top:var(--bui-space-13)}.xs\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pt{padding-top:var(--pt-sm)}.sm\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.sm\:bui-pt-1{padding-top:var(--bui-space-1)}.sm\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.sm\:bui-pt-2{padding-top:var(--bui-space-2)}.sm\:bui-pt-3{padding-top:var(--bui-space-3)}.sm\:bui-pt-4{padding-top:var(--bui-space-4)}.sm\:bui-pt-5{padding-top:var(--bui-space-5)}.sm\:bui-pt-6{padding-top:var(--bui-space-6)}.sm\:bui-pt-7{padding-top:var(--bui-space-7)}.sm\:bui-pt-8{padding-top:var(--bui-space-8)}.sm\:bui-pt-9{padding-top:var(--bui-space-9)}.sm\:bui-pt-10{padding-top:var(--bui-space-10)}.sm\:bui-pt-11{padding-top:var(--bui-space-11)}.sm\:bui-pt-12{padding-top:var(--bui-space-12)}.sm\:bui-pt-13{padding-top:var(--bui-space-13)}.sm\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pt{padding-top:var(--pt-md)}.md\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.md\:bui-pt-1{padding-top:var(--bui-space-1)}.md\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.md\:bui-pt-2{padding-top:var(--bui-space-2)}.md\:bui-pt-3{padding-top:var(--bui-space-3)}.md\:bui-pt-4{padding-top:var(--bui-space-4)}.md\:bui-pt-5{padding-top:var(--bui-space-5)}.md\:bui-pt-6{padding-top:var(--bui-space-6)}.md\:bui-pt-7{padding-top:var(--bui-space-7)}.md\:bui-pt-8{padding-top:var(--bui-space-8)}.md\:bui-pt-9{padding-top:var(--bui-space-9)}.md\:bui-pt-10{padding-top:var(--bui-space-10)}.md\:bui-pt-11{padding-top:var(--bui-space-11)}.md\:bui-pt-12{padding-top:var(--bui-space-12)}.md\:bui-pt-13{padding-top:var(--bui-space-13)}.md\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pt{padding-top:var(--pt-lg)}.lg\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.lg\:bui-pt-1{padding-top:var(--bui-space-1)}.lg\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.lg\:bui-pt-2{padding-top:var(--bui-space-2)}.lg\:bui-pt-3{padding-top:var(--bui-space-3)}.lg\:bui-pt-4{padding-top:var(--bui-space-4)}.lg\:bui-pt-5{padding-top:var(--bui-space-5)}.lg\:bui-pt-6{padding-top:var(--bui-space-6)}.lg\:bui-pt-7{padding-top:var(--bui-space-7)}.lg\:bui-pt-8{padding-top:var(--bui-space-8)}.lg\:bui-pt-9{padding-top:var(--bui-space-9)}.lg\:bui-pt-10{padding-top:var(--bui-space-10)}.lg\:bui-pt-11{padding-top:var(--bui-space-11)}.lg\:bui-pt-12{padding-top:var(--bui-space-12)}.lg\:bui-pt-13{padding-top:var(--bui-space-13)}.lg\:bui-pt-14{padding-top:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pt{padding-top:var(--pt-xl)}.xl\:bui-pt-0\.5{padding-top:var(--bui-space-0_5)}.xl\:bui-pt-1{padding-top:var(--bui-space-1)}.xl\:bui-pt-1\.5{padding-top:var(--bui-space-1_5)}.xl\:bui-pt-2{padding-top:var(--bui-space-2)}.xl\:bui-pt-3{padding-top:var(--bui-space-3)}.xl\:bui-pt-4{padding-top:var(--bui-space-4)}.xl\:bui-pt-5{padding-top:var(--bui-space-5)}.xl\:bui-pt-6{padding-top:var(--bui-space-6)}.xl\:bui-pt-7{padding-top:var(--bui-space-7)}.xl\:bui-pt-8{padding-top:var(--bui-space-8)}.xl\:bui-pt-9{padding-top:var(--bui-space-9)}.xl\:bui-pt-10{padding-top:var(--bui-space-10)}.xl\:bui-pt-11{padding-top:var(--bui-space-11)}.xl\:bui-pt-12{padding-top:var(--bui-space-12)}.xl\:bui-pt-13{padding-top:var(--bui-space-13)}.xl\:bui-pt-14{padding-top:var(--bui-space-14)}}.bui-pb{padding-bottom:var(--pb)}.bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.bui-pb-1{padding-bottom:var(--bui-space-1)}.bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.bui-pb-2{padding-bottom:var(--bui-space-2)}.bui-pb-3{padding-bottom:var(--bui-space-3)}.bui-pb-4{padding-bottom:var(--bui-space-4)}.bui-pb-5{padding-bottom:var(--bui-space-5)}.bui-pb-6{padding-bottom:var(--bui-space-6)}.bui-pb-7{padding-bottom:var(--bui-space-7)}.bui-pb-8{padding-bottom:var(--bui-space-8)}.bui-pb-9{padding-bottom:var(--bui-space-9)}.bui-pb-10{padding-bottom:var(--bui-space-10)}.bui-pb-11{padding-bottom:var(--bui-space-11)}.bui-pb-12{padding-bottom:var(--bui-space-12)}.bui-pb-13{padding-bottom:var(--bui-space-13)}.bui-pb-14{padding-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-pb{padding-bottom:var(--pb-xs)}.xs\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.xs\:bui-pb-1{padding-bottom:var(--bui-space-1)}.xs\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.xs\:bui-pb-2{padding-bottom:var(--bui-space-2)}.xs\:bui-pb-3{padding-bottom:var(--bui-space-3)}.xs\:bui-pb-4{padding-bottom:var(--bui-space-4)}.xs\:bui-pb-5{padding-bottom:var(--bui-space-5)}.xs\:bui-pb-6{padding-bottom:var(--bui-space-6)}.xs\:bui-pb-7{padding-bottom:var(--bui-space-7)}.xs\:bui-pb-8{padding-bottom:var(--bui-space-8)}.xs\:bui-pb-9{padding-bottom:var(--bui-space-9)}.xs\:bui-pb-10{padding-bottom:var(--bui-space-10)}.xs\:bui-pb-11{padding-bottom:var(--bui-space-11)}.xs\:bui-pb-12{padding-bottom:var(--bui-space-12)}.xs\:bui-pb-13{padding-bottom:var(--bui-space-13)}.xs\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-pb{padding-bottom:var(--pb-sm)}.sm\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.sm\:bui-pb-1{padding-bottom:var(--bui-space-1)}.sm\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.sm\:bui-pb-2{padding-bottom:var(--bui-space-2)}.sm\:bui-pb-3{padding-bottom:var(--bui-space-3)}.sm\:bui-pb-4{padding-bottom:var(--bui-space-4)}.sm\:bui-pb-5{padding-bottom:var(--bui-space-5)}.sm\:bui-pb-6{padding-bottom:var(--bui-space-6)}.sm\:bui-pb-7{padding-bottom:var(--bui-space-7)}.sm\:bui-pb-8{padding-bottom:var(--bui-space-8)}.sm\:bui-pb-9{padding-bottom:var(--bui-space-9)}.sm\:bui-pb-10{padding-bottom:var(--bui-space-10)}.sm\:bui-pb-11{padding-bottom:var(--bui-space-11)}.sm\:bui-pb-12{padding-bottom:var(--bui-space-12)}.sm\:bui-pb-13{padding-bottom:var(--bui-space-13)}.sm\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-pb{padding-bottom:var(--pb-md)}.md\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.md\:bui-pb-1{padding-bottom:var(--bui-space-1)}.md\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.md\:bui-pb-2{padding-bottom:var(--bui-space-2)}.md\:bui-pb-3{padding-bottom:var(--bui-space-3)}.md\:bui-pb-4{padding-bottom:var(--bui-space-4)}.md\:bui-pb-5{padding-bottom:var(--bui-space-5)}.md\:bui-pb-6{padding-bottom:var(--bui-space-6)}.md\:bui-pb-7{padding-bottom:var(--bui-space-7)}.md\:bui-pb-8{padding-bottom:var(--bui-space-8)}.md\:bui-pb-9{padding-bottom:var(--bui-space-9)}.md\:bui-pb-10{padding-bottom:var(--bui-space-10)}.md\:bui-pb-11{padding-bottom:var(--bui-space-11)}.md\:bui-pb-12{padding-bottom:var(--bui-space-12)}.md\:bui-pb-13{padding-bottom:var(--bui-space-13)}.md\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-pb{padding-bottom:var(--pb-lg)}.lg\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.lg\:bui-pb-1{padding-bottom:var(--bui-space-1)}.lg\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.lg\:bui-pb-2{padding-bottom:var(--bui-space-2)}.lg\:bui-pb-3{padding-bottom:var(--bui-space-3)}.lg\:bui-pb-4{padding-bottom:var(--bui-space-4)}.lg\:bui-pb-5{padding-bottom:var(--bui-space-5)}.lg\:bui-pb-6{padding-bottom:var(--bui-space-6)}.lg\:bui-pb-7{padding-bottom:var(--bui-space-7)}.lg\:bui-pb-8{padding-bottom:var(--bui-space-8)}.lg\:bui-pb-9{padding-bottom:var(--bui-space-9)}.lg\:bui-pb-10{padding-bottom:var(--bui-space-10)}.lg\:bui-pb-11{padding-bottom:var(--bui-space-11)}.lg\:bui-pb-12{padding-bottom:var(--bui-space-12)}.lg\:bui-pb-13{padding-bottom:var(--bui-space-13)}.lg\:bui-pb-14{padding-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-pb{padding-bottom:var(--pb-xl)}.xl\:bui-pb-0\.5{padding-bottom:var(--bui-space-0_5)}.xl\:bui-pb-1{padding-bottom:var(--bui-space-1)}.xl\:bui-pb-1\.5{padding-bottom:var(--bui-space-1_5)}.xl\:bui-pb-2{padding-bottom:var(--bui-space-2)}.xl\:bui-pb-3{padding-bottom:var(--bui-space-3)}.xl\:bui-pb-4{padding-bottom:var(--bui-space-4)}.xl\:bui-pb-5{padding-bottom:var(--bui-space-5)}.xl\:bui-pb-6{padding-bottom:var(--bui-space-6)}.xl\:bui-pb-7{padding-bottom:var(--bui-space-7)}.xl\:bui-pb-8{padding-bottom:var(--bui-space-8)}.xl\:bui-pb-9{padding-bottom:var(--bui-space-9)}.xl\:bui-pb-10{padding-bottom:var(--bui-space-10)}.xl\:bui-pb-11{padding-bottom:var(--bui-space-11)}.xl\:bui-pb-12{padding-bottom:var(--bui-space-12)}.xl\:bui-pb-13{padding-bottom:var(--bui-space-13)}.xl\:bui-pb-14{padding-bottom:var(--bui-space-14)}}.bui-py{padding-top:var(--py);padding-bottom:var(--py)}.bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-py{padding-top:var(--py-xs);padding-bottom:var(--py-xs)}.xs\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.xs\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.xs\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.xs\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.xs\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.xs\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.xs\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.xs\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.xs\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.xs\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.xs\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.xs\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.xs\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.xs\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.xs\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.xs\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-py{padding-top:var(--py-sm);padding-bottom:var(--py-sm)}.sm\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.sm\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.sm\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.sm\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.sm\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.sm\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.sm\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.sm\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.sm\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.sm\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.sm\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.sm\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.sm\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.sm\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.sm\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.sm\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-py{padding-top:var(--py-md);padding-bottom:var(--py-md)}.md\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.md\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.md\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.md\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.md\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.md\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.md\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.md\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.md\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.md\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.md\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.md\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.md\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.md\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.md\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.md\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-py{padding-top:var(--py-lg);padding-bottom:var(--py-lg)}.lg\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.lg\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.lg\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.lg\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.lg\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.lg\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.lg\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.lg\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.lg\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.lg\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.lg\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.lg\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.lg\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.lg\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.lg\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.lg\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-py{padding-top:var(--py-xl);padding-bottom:var(--py-xl)}.xl\:bui-py-0\.5{padding-top:var(--bui-space-0_5);padding-bottom:var(--bui-space-0_5)}.xl\:bui-py-1{padding-top:var(--bui-space-1);padding-bottom:var(--bui-space-1)}.xl\:bui-py-1\.5{padding-top:var(--bui-space-1_5);padding-bottom:var(--bui-space-1_5)}.xl\:bui-py-2{padding-top:var(--bui-space-2);padding-bottom:var(--bui-space-2)}.xl\:bui-py-3{padding-top:var(--bui-space-3);padding-bottom:var(--bui-space-3)}.xl\:bui-py-4{padding-top:var(--bui-space-4);padding-bottom:var(--bui-space-4)}.xl\:bui-py-5{padding-top:var(--bui-space-5);padding-bottom:var(--bui-space-5)}.xl\:bui-py-6{padding-top:var(--bui-space-6);padding-bottom:var(--bui-space-6)}.xl\:bui-py-7{padding-top:var(--bui-space-7);padding-bottom:var(--bui-space-7)}.xl\:bui-py-8{padding-top:var(--bui-space-8);padding-bottom:var(--bui-space-8)}.xl\:bui-py-9{padding-top:var(--bui-space-9);padding-bottom:var(--bui-space-9)}.xl\:bui-py-10{padding-top:var(--bui-space-10);padding-bottom:var(--bui-space-10)}.xl\:bui-py-11{padding-top:var(--bui-space-11);padding-bottom:var(--bui-space-11)}.xl\:bui-py-12{padding-top:var(--bui-space-12);padding-bottom:var(--bui-space-12)}.xl\:bui-py-13{padding-top:var(--bui-space-13);padding-bottom:var(--bui-space-13)}.xl\:bui-py-14{padding-top:var(--bui-space-14);padding-bottom:var(--bui-space-14)}}.bui-px{padding-left:var(--px);padding-right:var(--px)}.bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-px{padding-left:var(--px-xs);padding-right:var(--px-xs)}.xs\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.xs\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.xs\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.xs\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.xs\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.xs\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.xs\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.xs\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.xs\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.xs\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.xs\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.xs\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.xs\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.xs\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.xs\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.xs\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-px{padding-left:var(--px-sm);padding-right:var(--px-sm)}.sm\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.sm\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.sm\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.sm\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.sm\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.sm\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.sm\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.sm\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.sm\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.sm\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.sm\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.sm\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.sm\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.sm\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.sm\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.sm\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-px{padding-left:var(--px-md);padding-right:var(--px-md)}.md\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.md\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.md\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.md\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.md\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.md\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.md\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.md\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.md\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.md\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.md\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.md\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.md\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.md\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.md\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.md\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-px{padding-left:var(--px-lg);padding-right:var(--px-lg)}.lg\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.lg\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.lg\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.lg\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.lg\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.lg\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.lg\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.lg\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.lg\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.lg\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.lg\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.lg\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.lg\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.lg\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.lg\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.lg\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-px{padding-left:var(--px-xl);padding-right:var(--px-xl)}.xl\:bui-px-0\.5{padding-left:var(--bui-space-0_5);padding-right:var(--bui-space-0_5)}.xl\:bui-px-1{padding-left:var(--bui-space-1);padding-right:var(--bui-space-1)}.xl\:bui-px-1\.5{padding-left:var(--bui-space-1_5);padding-right:var(--bui-space-1_5)}.xl\:bui-px-2{padding-left:var(--bui-space-2);padding-right:var(--bui-space-2)}.xl\:bui-px-3{padding-left:var(--bui-space-3);padding-right:var(--bui-space-3)}.xl\:bui-px-4{padding-left:var(--bui-space-4);padding-right:var(--bui-space-4)}.xl\:bui-px-5{padding-left:var(--bui-space-5);padding-right:var(--bui-space-5)}.xl\:bui-px-6{padding-left:var(--bui-space-6);padding-right:var(--bui-space-6)}.xl\:bui-px-7{padding-left:var(--bui-space-7);padding-right:var(--bui-space-7)}.xl\:bui-px-8{padding-left:var(--bui-space-8);padding-right:var(--bui-space-8)}.xl\:bui-px-9{padding-left:var(--bui-space-9);padding-right:var(--bui-space-9)}.xl\:bui-px-10{padding-left:var(--bui-space-10);padding-right:var(--bui-space-10)}.xl\:bui-px-11{padding-left:var(--bui-space-11);padding-right:var(--bui-space-11)}.xl\:bui-px-12{padding-left:var(--bui-space-12);padding-right:var(--bui-space-12)}.xl\:bui-px-13{padding-left:var(--bui-space-13);padding-right:var(--bui-space-13)}.xl\:bui-px-14{padding-left:var(--bui-space-14);padding-right:var(--bui-space-14)}}.bui-m{margin:var(--m)}.bui-m-0\.5{margin:var(--bui-space-0_5)}.bui-m-1{margin:var(--bui-space-1)}.bui-m-1\.5{margin:var(--bui-space-1_5)}.bui-m-2{margin:var(--bui-space-2)}.bui-m-3{margin:var(--bui-space-3)}.bui-m-4{margin:var(--bui-space-4)}.bui-m-5{margin:var(--bui-space-5)}.bui-m-6{margin:var(--bui-space-6)}.bui-m-7{margin:var(--bui-space-7)}.bui-m-8{margin:var(--bui-space-8)}.bui-m-9{margin:var(--bui-space-9)}.bui-m-10{margin:var(--bui-space-10)}.bui-m-11{margin:var(--bui-space-11)}.bui-m-12{margin:var(--bui-space-12)}.bui-m-13{margin:var(--bui-space-13)}.bui-m-14{margin:var(--bui-space-14)}@media (width>=640px){.xs\:bui-m{margin:var(--p-xs)}.xs\:bui-m-0\.5{margin:var(--bui-space-0_5)}.xs\:bui-m-1{margin:var(--bui-space-1)}.xs\:bui-m-1\.5{margin:var(--bui-space-1_5)}.xs\:bui-m-2{margin:var(--bui-space-2)}.xs\:bui-m-3{margin:var(--bui-space-3)}.xs\:bui-m-4{margin:var(--bui-space-4)}.xs\:bui-m-5{margin:var(--bui-space-5)}.xs\:bui-m-6{margin:var(--bui-space-6)}.xs\:bui-m-7{margin:var(--bui-space-7)}.xs\:bui-m-8{margin:var(--bui-space-8)}.xs\:bui-m-9{margin:var(--bui-space-9)}.xs\:bui-m-10{margin:var(--bui-space-10)}.xs\:bui-m-11{margin:var(--bui-space-11)}.xs\:bui-m-12{margin:var(--bui-space-12)}.xs\:bui-m-13{margin:var(--bui-space-13)}.xs\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-m{margin:var(--p-sm)}.sm\:bui-m-0\.5{margin:var(--bui-space-0_5)}.sm\:bui-m-1{margin:var(--bui-space-1)}.sm\:bui-m-1\.5{margin:var(--bui-space-1_5)}.sm\:bui-m-2{margin:var(--bui-space-2)}.sm\:bui-m-3{margin:var(--bui-space-3)}.sm\:bui-m-4{margin:var(--bui-space-4)}.sm\:bui-m-5{margin:var(--bui-space-5)}.sm\:bui-m-6{margin:var(--bui-space-6)}.sm\:bui-m-7{margin:var(--bui-space-7)}.sm\:bui-m-8{margin:var(--bui-space-8)}.sm\:bui-m-9{margin:var(--bui-space-9)}.sm\:bui-m-10{margin:var(--bui-space-10)}.sm\:bui-m-11{margin:var(--bui-space-11)}.sm\:bui-m-12{margin:var(--bui-space-12)}.sm\:bui-m-13{margin:var(--bui-space-13)}.sm\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-m{margin:var(--p-md)}.md\:bui-m-0\.5{margin:var(--bui-space-0_5)}.md\:bui-m-1{margin:var(--bui-space-1)}.md\:bui-m-1\.5{margin:var(--bui-space-1_5)}.md\:bui-m-2{margin:var(--bui-space-2)}.md\:bui-m-3{margin:var(--bui-space-3)}.md\:bui-m-4{margin:var(--bui-space-4)}.md\:bui-m-5{margin:var(--bui-space-5)}.md\:bui-m-6{margin:var(--bui-space-6)}.md\:bui-m-7{margin:var(--bui-space-7)}.md\:bui-m-8{margin:var(--bui-space-8)}.md\:bui-m-9{margin:var(--bui-space-9)}.md\:bui-m-10{margin:var(--bui-space-10)}.md\:bui-m-11{margin:var(--bui-space-11)}.md\:bui-m-12{margin:var(--bui-space-12)}.md\:bui-m-13{margin:var(--bui-space-13)}.md\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-m{margin:var(--p-lg)}.lg\:bui-m-0\.5{margin:var(--bui-space-0_5)}.lg\:bui-m-1{margin:var(--bui-space-1)}.lg\:bui-m-1\.5{margin:var(--bui-space-1_5)}.lg\:bui-m-2{margin:var(--bui-space-2)}.lg\:bui-m-3{margin:var(--bui-space-3)}.lg\:bui-m-4{margin:var(--bui-space-4)}.lg\:bui-m-5{margin:var(--bui-space-5)}.lg\:bui-m-6{margin:var(--bui-space-6)}.lg\:bui-m-7{margin:var(--bui-space-7)}.lg\:bui-m-8{margin:var(--bui-space-8)}.lg\:bui-m-9{margin:var(--bui-space-9)}.lg\:bui-m-10{margin:var(--bui-space-10)}.lg\:bui-m-11{margin:var(--bui-space-11)}.lg\:bui-m-12{margin:var(--bui-space-12)}.lg\:bui-m-13{margin:var(--bui-space-13)}.lg\:bui-m-14{margin:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-m{margin:var(--p-xl)}.xl\:bui-m-0\.5{margin:var(--bui-space-0_5)}.xl\:bui-m-1{margin:var(--bui-space-1)}.xl\:bui-m-1\.5{margin:var(--bui-space-1_5)}.xl\:bui-m-2{margin:var(--bui-space-2)}.xl\:bui-m-3{margin:var(--bui-space-3)}.xl\:bui-m-4{margin:var(--bui-space-4)}.xl\:bui-m-5{margin:var(--bui-space-5)}.xl\:bui-m-6{margin:var(--bui-space-6)}.xl\:bui-m-7{margin:var(--bui-space-7)}.xl\:bui-m-8{margin:var(--bui-space-8)}.xl\:bui-m-9{margin:var(--bui-space-9)}.xl\:bui-m-10{margin:var(--bui-space-10)}.xl\:bui-m-11{margin:var(--bui-space-11)}.xl\:bui-m-12{margin:var(--bui-space-12)}.xl\:bui-m-13{margin:var(--bui-space-13)}.xl\:bui-m-14{margin:var(--bui-space-14)}}.bui-ml{margin-left:var(--ml)}.bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.bui-ml-1{margin-left:var(--bui-space-1)}.bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.bui-ml-2{margin-left:var(--bui-space-2)}.bui-ml-3{margin-left:var(--bui-space-3)}.bui-ml-4{margin-left:var(--bui-space-4)}.bui-ml-5{margin-left:var(--bui-space-5)}.bui-ml-6{margin-left:var(--bui-space-6)}.bui-ml-7{margin-left:var(--bui-space-7)}.bui-ml-8{margin-left:var(--bui-space-8)}.bui-ml-9{margin-left:var(--bui-space-9)}.bui-ml-10{margin-left:var(--bui-space-10)}.bui-ml-11{margin-left:var(--bui-space-11)}.bui-ml-12{margin-left:var(--bui-space-12)}.bui-ml-13{margin-left:var(--bui-space-13)}.bui-ml-14{margin-left:var(--bui-space-14)}@media (width>=640px){.xs\:bui-ml{margin-left:var(--ml-xs)}.xs\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.xs\:bui-ml-1{margin-left:var(--bui-space-1)}.xs\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.xs\:bui-ml-2{margin-left:var(--bui-space-2)}.xs\:bui-ml-3{margin-left:var(--bui-space-3)}.xs\:bui-ml-4{margin-left:var(--bui-space-4)}.xs\:bui-ml-5{margin-left:var(--bui-space-5)}.xs\:bui-ml-6{margin-left:var(--bui-space-6)}.xs\:bui-ml-7{margin-left:var(--bui-space-7)}.xs\:bui-ml-8{margin-left:var(--bui-space-8)}.xs\:bui-ml-9{margin-left:var(--bui-space-9)}.xs\:bui-ml-10{margin-left:var(--bui-space-10)}.xs\:bui-ml-11{margin-left:var(--bui-space-11)}.xs\:bui-ml-12{margin-left:var(--bui-space-12)}.xs\:bui-ml-13{margin-left:var(--bui-space-13)}.xs\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-ml{margin-left:var(--ml-sm)}.sm\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.sm\:bui-ml-1{margin-left:var(--bui-space-1)}.sm\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.sm\:bui-ml-2{margin-left:var(--bui-space-2)}.sm\:bui-ml-3{margin-left:var(--bui-space-3)}.sm\:bui-ml-4{margin-left:var(--bui-space-4)}.sm\:bui-ml-5{margin-left:var(--bui-space-5)}.sm\:bui-ml-6{margin-left:var(--bui-space-6)}.sm\:bui-ml-7{margin-left:var(--bui-space-7)}.sm\:bui-ml-8{margin-left:var(--bui-space-8)}.sm\:bui-ml-9{margin-left:var(--bui-space-9)}.sm\:bui-ml-10{margin-left:var(--bui-space-10)}.sm\:bui-ml-11{margin-left:var(--bui-space-11)}.sm\:bui-ml-12{margin-left:var(--bui-space-12)}.sm\:bui-ml-13{margin-left:var(--bui-space-13)}.sm\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-ml{margin-left:var(--ml-md)}.md\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.md\:bui-ml-1{margin-left:var(--bui-space-1)}.md\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.md\:bui-ml-2{margin-left:var(--bui-space-2)}.md\:bui-ml-3{margin-left:var(--bui-space-3)}.md\:bui-ml-4{margin-left:var(--bui-space-4)}.md\:bui-ml-5{margin-left:var(--bui-space-5)}.md\:bui-ml-6{margin-left:var(--bui-space-6)}.md\:bui-ml-7{margin-left:var(--bui-space-7)}.md\:bui-ml-8{margin-left:var(--bui-space-8)}.md\:bui-ml-9{margin-left:var(--bui-space-9)}.md\:bui-ml-10{margin-left:var(--bui-space-10)}.md\:bui-ml-11{margin-left:var(--bui-space-11)}.md\:bui-ml-12{margin-left:var(--bui-space-12)}.md\:bui-ml-13{margin-left:var(--bui-space-13)}.md\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-ml{margin-left:var(--ml-lg)}.lg\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.lg\:bui-ml-1{margin-left:var(--bui-space-1)}.lg\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.lg\:bui-ml-2{margin-left:var(--bui-space-2)}.lg\:bui-ml-3{margin-left:var(--bui-space-3)}.lg\:bui-ml-4{margin-left:var(--bui-space-4)}.lg\:bui-ml-5{margin-left:var(--bui-space-5)}.lg\:bui-ml-6{margin-left:var(--bui-space-6)}.lg\:bui-ml-7{margin-left:var(--bui-space-7)}.lg\:bui-ml-8{margin-left:var(--bui-space-8)}.lg\:bui-ml-9{margin-left:var(--bui-space-9)}.lg\:bui-ml-10{margin-left:var(--bui-space-10)}.lg\:bui-ml-11{margin-left:var(--bui-space-11)}.lg\:bui-ml-12{margin-left:var(--bui-space-12)}.lg\:bui-ml-13{margin-left:var(--bui-space-13)}.lg\:bui-ml-14{margin-left:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-ml{margin-left:var(--ml-xl)}.xl\:bui-ml-0\.5{margin-left:var(--bui-space-0_5)}.xl\:bui-ml-1{margin-left:var(--bui-space-1)}.xl\:bui-ml-1\.5{margin-left:var(--bui-space-1_5)}.xl\:bui-ml-2{margin-left:var(--bui-space-2)}.xl\:bui-ml-3{margin-left:var(--bui-space-3)}.xl\:bui-ml-4{margin-left:var(--bui-space-4)}.xl\:bui-ml-5{margin-left:var(--bui-space-5)}.xl\:bui-ml-6{margin-left:var(--bui-space-6)}.xl\:bui-ml-7{margin-left:var(--bui-space-7)}.xl\:bui-ml-8{margin-left:var(--bui-space-8)}.xl\:bui-ml-9{margin-left:var(--bui-space-9)}.xl\:bui-ml-10{margin-left:var(--bui-space-10)}.xl\:bui-ml-11{margin-left:var(--bui-space-11)}.xl\:bui-ml-12{margin-left:var(--bui-space-12)}.xl\:bui-ml-13{margin-left:var(--bui-space-13)}.xl\:bui-ml-14{margin-left:var(--bui-space-14)}}.bui-mr{margin-right:var(--mr)}.bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.bui-mr-1{margin-right:var(--bui-space-1)}.bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.bui-mr-2{margin-right:var(--bui-space-2)}.bui-mr-3{margin-right:var(--bui-space-3)}.bui-mr-4{margin-right:var(--bui-space-4)}.bui-mr-5{margin-right:var(--bui-space-5)}.bui-mr-6{margin-right:var(--bui-space-6)}.bui-mr-7{margin-right:var(--bui-space-7)}.bui-mr-8{margin-right:var(--bui-space-8)}.bui-mr-9{margin-right:var(--bui-space-9)}.bui-mr-10{margin-right:var(--bui-space-10)}.bui-mr-11{margin-right:var(--bui-space-11)}.bui-mr-12{margin-right:var(--bui-space-12)}.bui-mr-13{margin-right:var(--bui-space-13)}.bui-mr-14{margin-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mr{margin-right:var(--mr-xs)}.xs\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.xs\:bui-mr-1{margin-right:var(--bui-space-1)}.xs\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.xs\:bui-mr-2{margin-right:var(--bui-space-2)}.xs\:bui-mr-3{margin-right:var(--bui-space-3)}.xs\:bui-mr-4{margin-right:var(--bui-space-4)}.xs\:bui-mr-5{margin-right:var(--bui-space-5)}.xs\:bui-mr-6{margin-right:var(--bui-space-6)}.xs\:bui-mr-7{margin-right:var(--bui-space-7)}.xs\:bui-mr-8{margin-right:var(--bui-space-8)}.xs\:bui-mr-9{margin-right:var(--bui-space-9)}.xs\:bui-mr-10{margin-right:var(--bui-space-10)}.xs\:bui-mr-11{margin-right:var(--bui-space-11)}.xs\:bui-mr-12{margin-right:var(--bui-space-12)}.xs\:bui-mr-13{margin-right:var(--bui-space-13)}.xs\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mr{margin-right:var(--mr-sm)}.sm\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.sm\:bui-mr-1{margin-right:var(--bui-space-1)}.sm\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.sm\:bui-mr-2{margin-right:var(--bui-space-2)}.sm\:bui-mr-3{margin-right:var(--bui-space-3)}.sm\:bui-mr-4{margin-right:var(--bui-space-4)}.sm\:bui-mr-5{margin-right:var(--bui-space-5)}.sm\:bui-mr-6{margin-right:var(--bui-space-6)}.sm\:bui-mr-7{margin-right:var(--bui-space-7)}.sm\:bui-mr-8{margin-right:var(--bui-space-8)}.sm\:bui-mr-9{margin-right:var(--bui-space-9)}.sm\:bui-mr-10{margin-right:var(--bui-space-10)}.sm\:bui-mr-11{margin-right:var(--bui-space-11)}.sm\:bui-mr-12{margin-right:var(--bui-space-12)}.sm\:bui-mr-13{margin-right:var(--bui-space-13)}.sm\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mr{margin-right:var(--mr-md)}.md\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.md\:bui-mr-1{margin-right:var(--bui-space-1)}.md\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.md\:bui-mr-2{margin-right:var(--bui-space-2)}.md\:bui-mr-3{margin-right:var(--bui-space-3)}.md\:bui-mr-4{margin-right:var(--bui-space-4)}.md\:bui-mr-5{margin-right:var(--bui-space-5)}.md\:bui-mr-6{margin-right:var(--bui-space-6)}.md\:bui-mr-7{margin-right:var(--bui-space-7)}.md\:bui-mr-8{margin-right:var(--bui-space-8)}.md\:bui-mr-9{margin-right:var(--bui-space-9)}.md\:bui-mr-10{margin-right:var(--bui-space-10)}.md\:bui-mr-11{margin-right:var(--bui-space-11)}.md\:bui-mr-12{margin-right:var(--bui-space-12)}.md\:bui-mr-13{margin-right:var(--bui-space-13)}.md\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mr{margin-right:var(--mr-lg)}.lg\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.lg\:bui-mr-1{margin-right:var(--bui-space-1)}.lg\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.lg\:bui-mr-2{margin-right:var(--bui-space-2)}.lg\:bui-mr-3{margin-right:var(--bui-space-3)}.lg\:bui-mr-4{margin-right:var(--bui-space-4)}.lg\:bui-mr-5{margin-right:var(--bui-space-5)}.lg\:bui-mr-6{margin-right:var(--bui-space-6)}.lg\:bui-mr-7{margin-right:var(--bui-space-7)}.lg\:bui-mr-8{margin-right:var(--bui-space-8)}.lg\:bui-mr-9{margin-right:var(--bui-space-9)}.lg\:bui-mr-10{margin-right:var(--bui-space-10)}.lg\:bui-mr-11{margin-right:var(--bui-space-11)}.lg\:bui-mr-12{margin-right:var(--bui-space-12)}.lg\:bui-mr-13{margin-right:var(--bui-space-13)}.lg\:bui-mr-14{margin-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mr{margin-right:var(--mr-xl)}.xl\:bui-mr-0\.5{margin-right:var(--bui-space-0_5)}.xl\:bui-mr-1{margin-right:var(--bui-space-1)}.xl\:bui-mr-1\.5{margin-right:var(--bui-space-1_5)}.xl\:bui-mr-2{margin-right:var(--bui-space-2)}.xl\:bui-mr-3{margin-right:var(--bui-space-3)}.xl\:bui-mr-4{margin-right:var(--bui-space-4)}.xl\:bui-mr-5{margin-right:var(--bui-space-5)}.xl\:bui-mr-6{margin-right:var(--bui-space-6)}.xl\:bui-mr-7{margin-right:var(--bui-space-7)}.xl\:bui-mr-8{margin-right:var(--bui-space-8)}.xl\:bui-mr-9{margin-right:var(--bui-space-9)}.xl\:bui-mr-10{margin-right:var(--bui-space-10)}.xl\:bui-mr-11{margin-right:var(--bui-space-11)}.xl\:bui-mr-12{margin-right:var(--bui-space-12)}.xl\:bui-mr-13{margin-right:var(--bui-space-13)}.xl\:bui-mr-14{margin-right:var(--bui-space-14)}}.bui-mt{margin-top:var(--mt)}.bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.bui-mt-1{margin-top:var(--bui-space-1)}.bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.bui-mt-2{margin-top:var(--bui-space-2)}.bui-mt-3{margin-top:var(--bui-space-3)}.bui-mt-4{margin-top:var(--bui-space-4)}.bui-mt-5{margin-top:var(--bui-space-5)}.bui-mt-6{margin-top:var(--bui-space-6)}.bui-mt-7{margin-top:var(--bui-space-7)}.bui-mt-8{margin-top:var(--bui-space-8)}.bui-mt-9{margin-top:var(--bui-space-9)}.bui-mt-10{margin-top:var(--bui-space-10)}.bui-mt-11{margin-top:var(--bui-space-11)}.bui-mt-12{margin-top:var(--bui-space-12)}.bui-mt-13{margin-top:var(--bui-space-13)}.bui-mt-14{margin-top:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mt{margin-top:var(--mt-xs)}.xs\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.xs\:bui-mt-1{margin-top:var(--bui-space-1)}.xs\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.xs\:bui-mt-2{margin-top:var(--bui-space-2)}.xs\:bui-mt-3{margin-top:var(--bui-space-3)}.xs\:bui-mt-4{margin-top:var(--bui-space-4)}.xs\:bui-mt-5{margin-top:var(--bui-space-5)}.xs\:bui-mt-6{margin-top:var(--bui-space-6)}.xs\:bui-mt-7{margin-top:var(--bui-space-7)}.xs\:bui-mt-8{margin-top:var(--bui-space-8)}.xs\:bui-mt-9{margin-top:var(--bui-space-9)}.xs\:bui-mt-10{margin-top:var(--bui-space-10)}.xs\:bui-mt-11{margin-top:var(--bui-space-11)}.xs\:bui-mt-12{margin-top:var(--bui-space-12)}.xs\:bui-mt-13{margin-top:var(--bui-space-13)}.xs\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mt{margin-top:var(--mt-sm)}.sm\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.sm\:bui-mt-1{margin-top:var(--bui-space-1)}.sm\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.sm\:bui-mt-2{margin-top:var(--bui-space-2)}.sm\:bui-mt-3{margin-top:var(--bui-space-3)}.sm\:bui-mt-4{margin-top:var(--bui-space-4)}.sm\:bui-mt-5{margin-top:var(--bui-space-5)}.sm\:bui-mt-6{margin-top:var(--bui-space-6)}.sm\:bui-mt-7{margin-top:var(--bui-space-7)}.sm\:bui-mt-8{margin-top:var(--bui-space-8)}.sm\:bui-mt-9{margin-top:var(--bui-space-9)}.sm\:bui-mt-10{margin-top:var(--bui-space-10)}.sm\:bui-mt-11{margin-top:var(--bui-space-11)}.sm\:bui-mt-12{margin-top:var(--bui-space-12)}.sm\:bui-mt-13{margin-top:var(--bui-space-13)}.sm\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mt{margin-top:var(--mt-md)}.md\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.md\:bui-mt-1{margin-top:var(--bui-space-1)}.md\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.md\:bui-mt-2{margin-top:var(--bui-space-2)}.md\:bui-mt-3{margin-top:var(--bui-space-3)}.md\:bui-mt-4{margin-top:var(--bui-space-4)}.md\:bui-mt-5{margin-top:var(--bui-space-5)}.md\:bui-mt-6{margin-top:var(--bui-space-6)}.md\:bui-mt-7{margin-top:var(--bui-space-7)}.md\:bui-mt-8{margin-top:var(--bui-space-8)}.md\:bui-mt-9{margin-top:var(--bui-space-9)}.md\:bui-mt-10{margin-top:var(--bui-space-10)}.md\:bui-mt-11{margin-top:var(--bui-space-11)}.md\:bui-mt-12{margin-top:var(--bui-space-12)}.md\:bui-mt-13{margin-top:var(--bui-space-13)}.md\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mt{margin-top:var(--mt-lg)}.lg\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.lg\:bui-mt-1{margin-top:var(--bui-space-1)}.lg\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.lg\:bui-mt-2{margin-top:var(--bui-space-2)}.lg\:bui-mt-3{margin-top:var(--bui-space-3)}.lg\:bui-mt-4{margin-top:var(--bui-space-4)}.lg\:bui-mt-5{margin-top:var(--bui-space-5)}.lg\:bui-mt-6{margin-top:var(--bui-space-6)}.lg\:bui-mt-7{margin-top:var(--bui-space-7)}.lg\:bui-mt-8{margin-top:var(--bui-space-8)}.lg\:bui-mt-9{margin-top:var(--bui-space-9)}.lg\:bui-mt-10{margin-top:var(--bui-space-10)}.lg\:bui-mt-11{margin-top:var(--bui-space-11)}.lg\:bui-mt-12{margin-top:var(--bui-space-12)}.lg\:bui-mt-13{margin-top:var(--bui-space-13)}.lg\:bui-mt-14{margin-top:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mt{margin-top:var(--mt-xl)}.xl\:bui-mt-0\.5{margin-top:var(--bui-space-0_5)}.xl\:bui-mt-1{margin-top:var(--bui-space-1)}.xl\:bui-mt-1\.5{margin-top:var(--bui-space-1_5)}.xl\:bui-mt-2{margin-top:var(--bui-space-2)}.xl\:bui-mt-3{margin-top:var(--bui-space-3)}.xl\:bui-mt-4{margin-top:var(--bui-space-4)}.xl\:bui-mt-5{margin-top:var(--bui-space-5)}.xl\:bui-mt-6{margin-top:var(--bui-space-6)}.xl\:bui-mt-7{margin-top:var(--bui-space-7)}.xl\:bui-mt-8{margin-top:var(--bui-space-8)}.xl\:bui-mt-9{margin-top:var(--bui-space-9)}.xl\:bui-mt-10{margin-top:var(--bui-space-10)}.xl\:bui-mt-11{margin-top:var(--bui-space-11)}.xl\:bui-mt-12{margin-top:var(--bui-space-12)}.xl\:bui-mt-13{margin-top:var(--bui-space-13)}.xl\:bui-mt-14{margin-top:var(--bui-space-14)}}.bui-mb{margin-bottom:var(--mb)}.bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.bui-mb-1{margin-bottom:var(--bui-space-1)}.bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.bui-mb-2{margin-bottom:var(--bui-space-2)}.bui-mb-3{margin-bottom:var(--bui-space-3)}.bui-mb-4{margin-bottom:var(--bui-space-4)}.bui-mb-5{margin-bottom:var(--bui-space-5)}.bui-mb-6{margin-bottom:var(--bui-space-6)}.bui-mb-7{margin-bottom:var(--bui-space-7)}.bui-mb-8{margin-bottom:var(--bui-space-8)}.bui-mb-9{margin-bottom:var(--bui-space-9)}.bui-mb-10{margin-bottom:var(--bui-space-10)}.bui-mb-11{margin-bottom:var(--bui-space-11)}.bui-mb-12{margin-bottom:var(--bui-space-12)}.bui-mb-13{margin-bottom:var(--bui-space-13)}.bui-mb-14{margin-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mb{margin-bottom:var(--mb-xs)}.xs\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.xs\:bui-mb-1{margin-bottom:var(--bui-space-1)}.xs\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.xs\:bui-mb-2{margin-bottom:var(--bui-space-2)}.xs\:bui-mb-3{margin-bottom:var(--bui-space-3)}.xs\:bui-mb-4{margin-bottom:var(--bui-space-4)}.xs\:bui-mb-5{margin-bottom:var(--bui-space-5)}.xs\:bui-mb-6{margin-bottom:var(--bui-space-6)}.xs\:bui-mb-7{margin-bottom:var(--bui-space-7)}.xs\:bui-mb-8{margin-bottom:var(--bui-space-8)}.xs\:bui-mb-9{margin-bottom:var(--bui-space-9)}.xs\:bui-mb-10{margin-bottom:var(--bui-space-10)}.xs\:bui-mb-11{margin-bottom:var(--bui-space-11)}.xs\:bui-mb-12{margin-bottom:var(--bui-space-12)}.xs\:bui-mb-13{margin-bottom:var(--bui-space-13)}.xs\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mb{margin-bottom:var(--mb-sm)}.sm\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.sm\:bui-mb-1{margin-bottom:var(--bui-space-1)}.sm\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.sm\:bui-mb-2{margin-bottom:var(--bui-space-2)}.sm\:bui-mb-3{margin-bottom:var(--bui-space-3)}.sm\:bui-mb-4{margin-bottom:var(--bui-space-4)}.sm\:bui-mb-5{margin-bottom:var(--bui-space-5)}.sm\:bui-mb-6{margin-bottom:var(--bui-space-6)}.sm\:bui-mb-7{margin-bottom:var(--bui-space-7)}.sm\:bui-mb-8{margin-bottom:var(--bui-space-8)}.sm\:bui-mb-9{margin-bottom:var(--bui-space-9)}.sm\:bui-mb-10{margin-bottom:var(--bui-space-10)}.sm\:bui-mb-11{margin-bottom:var(--bui-space-11)}.sm\:bui-mb-12{margin-bottom:var(--bui-space-12)}.sm\:bui-mb-13{margin-bottom:var(--bui-space-13)}.sm\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mb{margin-bottom:var(--mb-md)}.md\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.md\:bui-mb-1{margin-bottom:var(--bui-space-1)}.md\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.md\:bui-mb-2{margin-bottom:var(--bui-space-2)}.md\:bui-mb-3{margin-bottom:var(--bui-space-3)}.md\:bui-mb-4{margin-bottom:var(--bui-space-4)}.md\:bui-mb-5{margin-bottom:var(--bui-space-5)}.md\:bui-mb-6{margin-bottom:var(--bui-space-6)}.md\:bui-mb-7{margin-bottom:var(--bui-space-7)}.md\:bui-mb-8{margin-bottom:var(--bui-space-8)}.md\:bui-mb-9{margin-bottom:var(--bui-space-9)}.md\:bui-mb-10{margin-bottom:var(--bui-space-10)}.md\:bui-mb-11{margin-bottom:var(--bui-space-11)}.md\:bui-mb-12{margin-bottom:var(--bui-space-12)}.md\:bui-mb-13{margin-bottom:var(--bui-space-13)}.md\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mb{margin-bottom:var(--mb-lg)}.lg\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.lg\:bui-mb-1{margin-bottom:var(--bui-space-1)}.lg\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.lg\:bui-mb-2{margin-bottom:var(--bui-space-2)}.lg\:bui-mb-3{margin-bottom:var(--bui-space-3)}.lg\:bui-mb-4{margin-bottom:var(--bui-space-4)}.lg\:bui-mb-5{margin-bottom:var(--bui-space-5)}.lg\:bui-mb-6{margin-bottom:var(--bui-space-6)}.lg\:bui-mb-7{margin-bottom:var(--bui-space-7)}.lg\:bui-mb-8{margin-bottom:var(--bui-space-8)}.lg\:bui-mb-9{margin-bottom:var(--bui-space-9)}.lg\:bui-mb-10{margin-bottom:var(--bui-space-10)}.lg\:bui-mb-11{margin-bottom:var(--bui-space-11)}.lg\:bui-mb-12{margin-bottom:var(--bui-space-12)}.lg\:bui-mb-13{margin-bottom:var(--bui-space-13)}.lg\:bui-mb-14{margin-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mb{margin-bottom:var(--mb-xl)}.xl\:bui-mb-0\.5{margin-bottom:var(--bui-space-0_5)}.xl\:bui-mb-1{margin-bottom:var(--bui-space-1)}.xl\:bui-mb-1\.5{margin-bottom:var(--bui-space-1_5)}.xl\:bui-mb-2{margin-bottom:var(--bui-space-2)}.xl\:bui-mb-3{margin-bottom:var(--bui-space-3)}.xl\:bui-mb-4{margin-bottom:var(--bui-space-4)}.xl\:bui-mb-5{margin-bottom:var(--bui-space-5)}.xl\:bui-mb-6{margin-bottom:var(--bui-space-6)}.xl\:bui-mb-7{margin-bottom:var(--bui-space-7)}.xl\:bui-mb-8{margin-bottom:var(--bui-space-8)}.xl\:bui-mb-9{margin-bottom:var(--bui-space-9)}.xl\:bui-mb-10{margin-bottom:var(--bui-space-10)}.xl\:bui-mb-11{margin-bottom:var(--bui-space-11)}.xl\:bui-mb-12{margin-bottom:var(--bui-space-12)}.xl\:bui-mb-13{margin-bottom:var(--bui-space-13)}.xl\:bui-mb-14{margin-bottom:var(--bui-space-14)}}.bui-my{margin-top:var(--my);margin-bottom:var(--my)}.bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}@media (width>=640px){.xs\:bui-my{margin-top:var(--my-xs);margin-bottom:var(--my-xs)}.xs\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.xs\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.xs\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.xs\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.xs\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.xs\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.xs\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.xs\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.xs\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.xs\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.xs\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.xs\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.xs\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.xs\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.xs\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.xs\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-my{margin-top:var(--my-sm);margin-bottom:var(--my-sm)}.sm\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.sm\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.sm\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.sm\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.sm\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.sm\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.sm\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.sm\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.sm\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.sm\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.sm\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.sm\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.sm\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.sm\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.sm\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.sm\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-my{margin-top:var(--my-md);margin-bottom:var(--my-md)}.md\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.md\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.md\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.md\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.md\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.md\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.md\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.md\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.md\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.md\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.md\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.md\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.md\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.md\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.md\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.md\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-my{margin-top:var(--my-lg);margin-bottom:var(--my-lg)}.lg\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.lg\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.lg\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.lg\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.lg\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.lg\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.lg\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.lg\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.lg\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.lg\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.lg\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.lg\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.lg\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.lg\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.lg\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.lg\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-my{margin-top:var(--my-xl);margin-bottom:var(--my-xl)}.xl\:bui-my-0\.5{margin-top:var(--bui-space-0_5);margin-bottom:var(--bui-space-0_5)}.xl\:bui-my-1{margin-top:var(--bui-space-1);margin-bottom:var(--bui-space-1)}.xl\:bui-my-1\.5{margin-top:var(--bui-space-1_5);margin-bottom:var(--bui-space-1_5)}.xl\:bui-my-2{margin-top:var(--bui-space-2);margin-bottom:var(--bui-space-2)}.xl\:bui-my-3{margin-top:var(--bui-space-3);margin-bottom:var(--bui-space-3)}.xl\:bui-my-4{margin-top:var(--bui-space-4);margin-bottom:var(--bui-space-4)}.xl\:bui-my-5{margin-top:var(--bui-space-5);margin-bottom:var(--bui-space-5)}.xl\:bui-my-6{margin-top:var(--bui-space-6);margin-bottom:var(--bui-space-6)}.xl\:bui-my-7{margin-top:var(--bui-space-7);margin-bottom:var(--bui-space-7)}.xl\:bui-my-8{margin-top:var(--bui-space-8);margin-bottom:var(--bui-space-8)}.xl\:bui-my-9{margin-top:var(--bui-space-9);margin-bottom:var(--bui-space-9)}.xl\:bui-my-10{margin-top:var(--bui-space-10);margin-bottom:var(--bui-space-10)}.xl\:bui-my-11{margin-top:var(--bui-space-11);margin-bottom:var(--bui-space-11)}.xl\:bui-my-12{margin-top:var(--bui-space-12);margin-bottom:var(--bui-space-12)}.xl\:bui-my-13{margin-top:var(--bui-space-13);margin-bottom:var(--bui-space-13)}.xl\:bui-my-14{margin-top:var(--bui-space-14);margin-bottom:var(--bui-space-14)}}.bui-mx{margin-left:var(--mx);margin-right:var(--mx)}.bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}@media (width>=640px){.xs\:bui-mx{margin-left:var(--mx-xs);margin-right:var(--mx-xs)}.xs\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.xs\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.xs\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.xs\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.xs\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.xs\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.xs\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.xs\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.xs\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.xs\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.xs\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.xs\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.xs\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.xs\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.xs\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.xs\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-mx{margin-left:var(--mx-sm);margin-right:var(--mx-sm)}.sm\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.sm\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.sm\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.sm\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.sm\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.sm\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.sm\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.sm\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.sm\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.sm\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.sm\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.sm\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.sm\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.sm\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.sm\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.sm\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-mx{margin-left:var(--mx-md);margin-right:var(--mx-md)}.md\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.md\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.md\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.md\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.md\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.md\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.md\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.md\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.md\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.md\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.md\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.md\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.md\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.md\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.md\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.md\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-mx{margin-left:var(--mx-lg);margin-right:var(--mx-lg)}.lg\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.lg\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.lg\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.lg\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.lg\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.lg\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.lg\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.lg\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.lg\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.lg\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.lg\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.lg\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.lg\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.lg\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.lg\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.lg\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-mx{margin-left:var(--mx-xl);margin-right:var(--mx-xl)}.xl\:bui-mx-0\.5{margin-left:var(--bui-space-0_5);margin-right:var(--bui-space-0_5)}.xl\:bui-mx-1{margin-left:var(--bui-space-1);margin-right:var(--bui-space-1)}.xl\:bui-mx-1\.5{margin-left:var(--bui-space-1_5);margin-right:var(--bui-space-1_5)}.xl\:bui-mx-2{margin-left:var(--bui-space-2);margin-right:var(--bui-space-2)}.xl\:bui-mx-3{margin-left:var(--bui-space-3);margin-right:var(--bui-space-3)}.xl\:bui-mx-4{margin-left:var(--bui-space-4);margin-right:var(--bui-space-4)}.xl\:bui-mx-5{margin-left:var(--bui-space-5);margin-right:var(--bui-space-5)}.xl\:bui-mx-6{margin-left:var(--bui-space-6);margin-right:var(--bui-space-6)}.xl\:bui-mx-7{margin-left:var(--bui-space-7);margin-right:var(--bui-space-7)}.xl\:bui-mx-8{margin-left:var(--bui-space-8);margin-right:var(--bui-space-8)}.xl\:bui-mx-9{margin-left:var(--bui-space-9);margin-right:var(--bui-space-9)}.xl\:bui-mx-10{margin-left:var(--bui-space-10);margin-right:var(--bui-space-10)}.xl\:bui-mx-11{margin-left:var(--bui-space-11);margin-right:var(--bui-space-11)}.xl\:bui-mx-12{margin-left:var(--bui-space-12);margin-right:var(--bui-space-12)}.xl\:bui-mx-13{margin-left:var(--bui-space-13);margin-right:var(--bui-space-13)}.xl\:bui-mx-14{margin-left:var(--bui-space-14);margin-right:var(--bui-space-14)}}.bui-display-none{display:none}.bui-display-inline{display:inline}.bui-display-inline-block{display:inline-block}.bui-display-block{display:block}@media (width>=640px){.xs\:bui-display-none{display:none}.xs\:bui-display-inline{display:inline}.xs\:bui-display-inline-block{display:inline-block}.xs\:bui-display-block{display:block}}@media (width>=768px){.sm\:bui-display-none{display:none}.sm\:bui-display-inline{display:inline}.sm\:bui-display-inline-block{display:inline-block}.sm\:bui-display-block{display:block}}@media (width>=1024px){.md\:bui-display-none{display:none}.md\:bui-display-inline{display:inline}.md\:bui-display-inline-block{display:inline-block}.md\:bui-display-block{display:block}}@media (width>=1280px){.lg\:bui-display-none{display:none}.lg\:bui-display-inline{display:inline}.lg\:bui-display-inline-block{display:inline-block}.lg\:bui-display-block{display:block}}@media (width>=1536px){.xl\:bui-display-none{display:none}.xl\:bui-display-inline{display:inline}.xl\:bui-display-inline-block{display:inline-block}.xl\:bui-display-block{display:block}}.bui-w{width:var(--width)}.bui-min-w{min-width:var(--min-width)}.bui-max-w{max-width:var(--max-width)}@media (width>=640px){.xs\:bui-w{width:var(--width)}.xs\:bui-min-w{min-width:var(--min-width)}.xs\:bui-max-w{max-width:var(--max-width)}}@media (width>=768px){.sm\:bui-w{width:var(--width)}.sm\:bui-min-w{min-width:var(--min-width)}.sm\:bui-max-w{max-width:var(--max-width)}}@media (width>=1024px){.md\:bui-w{width:var(--width)}.md\:bui-min-w{min-width:var(--min-width)}.md\:bui-max-w{max-width:var(--max-width)}}@media (width>=1280px){.lg\:bui-w{width:var(--width)}.lg\:bui-min-w{min-width:var(--min-width)}.lg\:bui-max-w{max-width:var(--max-width)}}@media (width>=1536px){.xl\:bui-w{width:var(--width)}.xl\:bui-min-w{min-width:var(--min-width)}.xl\:bui-max-w{max-width:var(--max-width)}}.bui-h{height:var(--height)}.bui-min-h{min-height:var(--min-height)}.bui-max-h{max-height:var(--max-height)}@media (width>=640px){.xs\:bui-h{height:var(--height)}.xs\:bui-min-h{min-height:var(--min-height)}.xs\:bui-max-h{max-height:var(--max-height)}}@media (width>=768px){.sm\:bui-h{height:var(--height)}.sm\:bui-min-h{min-height:var(--min-height)}.sm\:bui-max-h{max-height:var(--max-height)}}@media (width>=1024px){.md\:bui-h{height:var(--height)}.md\:bui-min-h{min-height:var(--min-height)}.md\:bui-max-h{max-height:var(--max-height)}}@media (width>=1280px){.lg\:bui-h{height:var(--height)}.lg\:bui-min-h{min-height:var(--min-height)}.lg\:bui-max-h{max-height:var(--max-height)}}@media (width>=1536px){.xl\:bui-h{height:var(--height)}.xl\:bui-min-h{min-height:var(--min-height)}.xl\:bui-max-h{max-height:var(--max-height)}}.bui-position-absolute{position:absolute}.bui-position-fixed{position:fixed}.bui-position-sticky{position:sticky}.bui-position-relative{position:relative}.bui-position-static{position:static}@media (width>=640px){.xs\:bui-position-absolute{position:absolute}.xs\:bui-position-fixed{position:fixed}.xs\:bui-position-sticky{position:sticky}.xs\:bui-position-relative{position:relative}.xs\:bui-position-static{position:static}}@media (width>=768px){.sm\:bui-position-absolute{position:absolute}.sm\:bui-position-fixed{position:fixed}.sm\:bui-position-sticky{position:sticky}.sm\:bui-position-relative{position:relative}.sm\:bui-position-static{position:static}}@media (width>=1024px){.md\:bui-position-absolute{position:absolute}.md\:bui-position-fixed{position:fixed}.md\:bui-position-sticky{position:sticky}.md\:bui-position-relative{position:relative}.md\:bui-position-static{position:static}}@media (width>=1280px){.lg\:bui-position-absolute{position:absolute}.lg\:bui-position-fixed{position:fixed}.lg\:bui-position-sticky{position:sticky}.lg\:bui-position-relative{position:relative}.lg\:bui-position-static{position:static}}@media (width>=1536px){.xl\:bui-position-absolute{position:absolute}.xl\:bui-position-fixed{position:fixed}.xl\:bui-position-sticky{position:sticky}.xl\:bui-position-relative{position:relative}.xl\:bui-position-static{position:static}}.bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.bui-col-span-1{grid-column:span 1/span 1}.bui-col-span-2{grid-column:span 2/span 2}.bui-col-span-3{grid-column:span 3/span 3}.bui-col-span-4{grid-column:span 4/span 4}.bui-col-span-5{grid-column:span 5/span 5}.bui-col-span-6{grid-column:span 6/span 6}.bui-col-span-7{grid-column:span 7/span 7}.bui-col-span-8{grid-column:span 8/span 8}.bui-col-span-9{grid-column:span 9/span 9}.bui-col-span-10{grid-column:span 10/span 10}.bui-col-span-11{grid-column:span 11/span 11}.bui-col-span-12{grid-column:span 12/span 12}.bui-col-span-auto{grid-column:span auto/span auto}.bui-col-start-1{grid-column-start:1}.bui-col-start-2{grid-column-start:2}.bui-col-start-3{grid-column-start:3}.bui-col-start-4{grid-column-start:4}.bui-col-start-5{grid-column-start:5}.bui-col-start-6{grid-column-start:6}.bui-col-start-7{grid-column-start:7}.bui-col-start-8{grid-column-start:8}.bui-col-start-9{grid-column-start:9}.bui-col-start-10{grid-column-start:10}.bui-col-start-11{grid-column-start:11}.bui-col-start-12{grid-column-start:12}.bui-col-start-13{grid-column-start:13}.bui-col-start-auto{grid-column-start:auto}.bui-col-end-1{grid-column-end:1}.bui-col-end-2{grid-column-end:2}.bui-col-end-3{grid-column-end:3}.bui-col-end-4{grid-column-end:4}.bui-col-end-5{grid-column-end:5}.bui-col-end-6{grid-column-end:6}.bui-col-end-7{grid-column-end:7}.bui-col-end-8{grid-column-end:8}.bui-col-end-9{grid-column-end:9}.bui-col-end-10{grid-column-end:10}.bui-col-end-11{grid-column-end:11}.bui-col-end-12{grid-column-end:12}.bui-col-end-13{grid-column-end:13}.bui-col-end-auto{grid-column-end:auto}.bui-row-span-1{grid-row:span 1/span 1}.bui-row-span-2{grid-row:span 2/span 2}.bui-row-span-3{grid-row:span 3/span 3}.bui-row-span-4{grid-row:span 4/span 4}.bui-row-span-5{grid-row:span 5/span 5}.bui-row-span-6{grid-row:span 6/span 6}.bui-row-span-7{grid-row:span 7/span 7}.bui-row-span-8{grid-row:span 8/span 8}.bui-row-span-9{grid-row:span 9/span 9}.bui-row-span-10{grid-row:span 10/span 10}.bui-row-span-11{grid-row:span 11/span 11}.bui-row-span-12{grid-row:span 12/span 12}.bui-row-span-auto{grid-row:span auto/span auto}@media (width>=640px){.xs\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xs\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xs\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xs\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xs\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xs\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xs\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xs\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xs\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xs\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xs\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xs\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xs\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.xs\:bui-col-span-1{grid-column:span 1/span 1}.xs\:bui-col-span-2{grid-column:span 2/span 2}.xs\:bui-col-span-3{grid-column:span 3/span 3}.xs\:bui-col-span-4{grid-column:span 4/span 4}.xs\:bui-col-span-5{grid-column:span 5/span 5}.xs\:bui-col-span-6{grid-column:span 6/span 6}.xs\:bui-col-span-7{grid-column:span 7/span 7}.xs\:bui-col-span-8{grid-column:span 8/span 8}.xs\:bui-col-span-9{grid-column:span 9/span 9}.xs\:bui-col-span-10{grid-column:span 10/span 10}.xs\:bui-col-span-11{grid-column:span 11/span 11}.xs\:bui-col-span-12{grid-column:span 12/span 12}.xs\:bui-col-span-auto{grid-column:span auto/span auto}.xs\:bui-col-start-1{grid-column-start:1}.xs\:bui-col-start-2{grid-column-start:2}.xs\:bui-col-start-3{grid-column-start:3}.xs\:bui-col-start-4{grid-column-start:4}.xs\:bui-col-start-5{grid-column-start:5}.xs\:bui-col-start-6{grid-column-start:6}.xs\:bui-col-start-7{grid-column-start:7}.xs\:bui-col-start-8{grid-column-start:8}.xs\:bui-col-start-9{grid-column-start:9}.xs\:bui-col-start-10{grid-column-start:10}.xs\:bui-col-start-11{grid-column-start:11}.xs\:bui-col-start-12{grid-column-start:12}.xs\:bui-col-start-13{grid-column-start:13}.xs\:bui-col-start-auto{grid-column-start:auto}.xs\:bui-col-end-1{grid-column-end:1}.xs\:bui-col-end-2{grid-column-end:2}.xs\:bui-col-end-3{grid-column-end:3}.xs\:bui-col-end-4{grid-column-end:4}.xs\:bui-col-end-5{grid-column-end:5}.xs\:bui-col-end-6{grid-column-end:6}.xs\:bui-col-end-7{grid-column-end:7}.xs\:bui-col-end-8{grid-column-end:8}.xs\:bui-col-end-9{grid-column-end:9}.xs\:bui-col-end-10{grid-column-end:10}.xs\:bui-col-end-11{grid-column-end:11}.xs\:bui-col-end-12{grid-column-end:12}.xs\:bui-col-end-13{grid-column-end:13}.xs\:bui-col-end-auto{grid-column-end:auto}.xs\:bui-row-span-1{grid-row:span 1/span 1}.xs\:bui-row-span-2{grid-row:span 2/span 2}.xs\:bui-row-span-3{grid-row:span 3/span 3}.xs\:bui-row-span-4{grid-row:span 4/span 4}.xs\:bui-row-span-5{grid-row:span 5/span 5}.xs\:bui-row-span-6{grid-row:span 6/span 6}.xs\:bui-row-span-7{grid-row:span 7/span 7}.xs\:bui-row-span-8{grid-row:span 8/span 8}.xs\:bui-row-span-9{grid-row:span 9/span 9}.xs\:bui-row-span-10{grid-row:span 10/span 10}.xs\:bui-row-span-11{grid-row:span 11/span 11}.xs\:bui-row-span-12{grid-row:span 12/span 12}.xs\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=768px){.sm\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.sm\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.sm\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.sm\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.sm\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.sm\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.sm\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.sm\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.sm\:bui-col-span-1{grid-column:span 1/span 1}.sm\:bui-col-span-2{grid-column:span 2/span 2}.sm\:bui-col-span-3{grid-column:span 3/span 3}.sm\:bui-col-span-4{grid-column:span 4/span 4}.sm\:bui-col-span-5{grid-column:span 5/span 5}.sm\:bui-col-span-6{grid-column:span 6/span 6}.sm\:bui-col-span-7{grid-column:span 7/span 7}.sm\:bui-col-span-8{grid-column:span 8/span 8}.sm\:bui-col-span-9{grid-column:span 9/span 9}.sm\:bui-col-span-10{grid-column:span 10/span 10}.sm\:bui-col-span-11{grid-column:span 11/span 11}.sm\:bui-col-span-12{grid-column:span 12/span 12}.sm\:bui-col-span-auto{grid-column:span auto/span auto}.sm\:bui-col-start-1{grid-column-start:1}.sm\:bui-col-start-2{grid-column-start:2}.sm\:bui-col-start-3{grid-column-start:3}.sm\:bui-col-start-4{grid-column-start:4}.sm\:bui-col-start-5{grid-column-start:5}.sm\:bui-col-start-6{grid-column-start:6}.sm\:bui-col-start-7{grid-column-start:7}.sm\:bui-col-start-8{grid-column-start:8}.sm\:bui-col-start-9{grid-column-start:9}.sm\:bui-col-start-10{grid-column-start:10}.sm\:bui-col-start-11{grid-column-start:11}.sm\:bui-col-start-12{grid-column-start:12}.sm\:bui-col-start-13{grid-column-start:13}.sm\:bui-col-start-auto{grid-column-start:auto}.sm\:bui-col-end-1{grid-column-end:1}.sm\:bui-col-end-2{grid-column-end:2}.sm\:bui-col-end-3{grid-column-end:3}.sm\:bui-col-end-4{grid-column-end:4}.sm\:bui-col-end-5{grid-column-end:5}.sm\:bui-col-end-6{grid-column-end:6}.sm\:bui-col-end-7{grid-column-end:7}.sm\:bui-col-end-8{grid-column-end:8}.sm\:bui-col-end-9{grid-column-end:9}.sm\:bui-col-end-10{grid-column-end:10}.sm\:bui-col-end-11{grid-column-end:11}.sm\:bui-col-end-12{grid-column-end:12}.sm\:bui-col-end-13{grid-column-end:13}.sm\:bui-col-end-auto{grid-column-end:auto}.sm\:bui-row-span-1{grid-row:span 1/span 1}.sm\:bui-row-span-2{grid-row:span 2/span 2}.sm\:bui-row-span-3{grid-row:span 3/span 3}.sm\:bui-row-span-4{grid-row:span 4/span 4}.sm\:bui-row-span-5{grid-row:span 5/span 5}.sm\:bui-row-span-6{grid-row:span 6/span 6}.sm\:bui-row-span-7{grid-row:span 7/span 7}.sm\:bui-row-span-8{grid-row:span 8/span 8}.sm\:bui-row-span-9{grid-row:span 9/span 9}.sm\:bui-row-span-10{grid-row:span 10/span 10}.sm\:bui-row-span-11{grid-row:span 11/span 11}.sm\:bui-row-span-12{grid-row:span 12/span 12}.sm\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=1024px){.md\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.md\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.md\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.md\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.md\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.md\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.md\:bui-col-span-1{grid-column:span 1/span 1}.md\:bui-col-span-2{grid-column:span 2/span 2}.md\:bui-col-span-3{grid-column:span 3/span 3}.md\:bui-col-span-4{grid-column:span 4/span 4}.md\:bui-col-span-5{grid-column:span 5/span 5}.md\:bui-col-span-6{grid-column:span 6/span 6}.md\:bui-col-span-7{grid-column:span 7/span 7}.md\:bui-col-span-8{grid-column:span 8/span 8}.md\:bui-col-span-9{grid-column:span 9/span 9}.md\:bui-col-span-10{grid-column:span 10/span 10}.md\:bui-col-span-11{grid-column:span 11/span 11}.md\:bui-col-span-12{grid-column:span 12/span 12}.md\:bui-col-span-auto{grid-column:span auto/span auto}.md\:bui-col-start-1{grid-column-start:1}.md\:bui-col-start-2{grid-column-start:2}.md\:bui-col-start-3{grid-column-start:3}.md\:bui-col-start-4{grid-column-start:4}.md\:bui-col-start-5{grid-column-start:5}.md\:bui-col-start-6{grid-column-start:6}.md\:bui-col-start-7{grid-column-start:7}.md\:bui-col-start-8{grid-column-start:8}.md\:bui-col-start-9{grid-column-start:9}.md\:bui-col-start-10{grid-column-start:10}.md\:bui-col-start-11{grid-column-start:11}.md\:bui-col-start-12{grid-column-start:12}.md\:bui-col-start-13{grid-column-start:13}.md\:bui-col-start-auto{grid-column-start:auto}.md\:bui-col-end-1{grid-column-end:1}.md\:bui-col-end-2{grid-column-end:2}.md\:bui-col-end-3{grid-column-end:3}.md\:bui-col-end-4{grid-column-end:4}.md\:bui-col-end-5{grid-column-end:5}.md\:bui-col-end-6{grid-column-end:6}.md\:bui-col-end-7{grid-column-end:7}.md\:bui-col-end-8{grid-column-end:8}.md\:bui-col-end-9{grid-column-end:9}.md\:bui-col-end-10{grid-column-end:10}.md\:bui-col-end-11{grid-column-end:11}.md\:bui-col-end-12{grid-column-end:12}.md\:bui-col-end-13{grid-column-end:13}.md\:bui-col-end-auto{grid-column-end:auto}.md\:bui-row-span-1{grid-row:span 1/span 1}.md\:bui-row-span-2{grid-row:span 2/span 2}.md\:bui-row-span-3{grid-row:span 3/span 3}.md\:bui-row-span-4{grid-row:span 4/span 4}.md\:bui-row-span-5{grid-row:span 5/span 5}.md\:bui-row-span-6{grid-row:span 6/span 6}.md\:bui-row-span-7{grid-row:span 7/span 7}.md\:bui-row-span-8{grid-row:span 8/span 8}.md\:bui-row-span-9{grid-row:span 9/span 9}.md\:bui-row-span-10{grid-row:span 10/span 10}.md\:bui-row-span-11{grid-row:span 11/span 11}.md\:bui-row-span-12{grid-row:span 12/span 12}.md\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=1280px){.lg\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lg\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.lg\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lg\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.lg\:bui-col-span-1{grid-column:span 1/span 1}.lg\:bui-col-span-2{grid-column:span 2/span 2}.lg\:bui-col-span-3{grid-column:span 3/span 3}.lg\:bui-col-span-4{grid-column:span 4/span 4}.lg\:bui-col-span-5{grid-column:span 5/span 5}.lg\:bui-col-span-6{grid-column:span 6/span 6}.lg\:bui-col-span-7{grid-column:span 7/span 7}.lg\:bui-col-span-8{grid-column:span 8/span 8}.lg\:bui-col-span-9{grid-column:span 9/span 9}.lg\:bui-col-span-10{grid-column:span 10/span 10}.lg\:bui-col-span-11{grid-column:span 11/span 11}.lg\:bui-col-span-12{grid-column:span 12/span 12}.lg\:bui-col-span-auto{grid-column:span auto/span auto}.lg\:bui-col-start-1{grid-column-start:1}.lg\:bui-col-start-2{grid-column-start:2}.lg\:bui-col-start-3{grid-column-start:3}.lg\:bui-col-start-4{grid-column-start:4}.lg\:bui-col-start-5{grid-column-start:5}.lg\:bui-col-start-6{grid-column-start:6}.lg\:bui-col-start-7{grid-column-start:7}.lg\:bui-col-start-8{grid-column-start:8}.lg\:bui-col-start-9{grid-column-start:9}.lg\:bui-col-start-10{grid-column-start:10}.lg\:bui-col-start-11{grid-column-start:11}.lg\:bui-col-start-12{grid-column-start:12}.lg\:bui-col-start-13{grid-column-start:13}.lg\:bui-col-start-auto{grid-column-start:auto}.lg\:bui-col-end-1{grid-column-end:1}.lg\:bui-col-end-2{grid-column-end:2}.lg\:bui-col-end-3{grid-column-end:3}.lg\:bui-col-end-4{grid-column-end:4}.lg\:bui-col-end-5{grid-column-end:5}.lg\:bui-col-end-6{grid-column-end:6}.lg\:bui-col-end-7{grid-column-end:7}.lg\:bui-col-end-8{grid-column-end:8}.lg\:bui-col-end-9{grid-column-end:9}.lg\:bui-col-end-10{grid-column-end:10}.lg\:bui-col-end-11{grid-column-end:11}.lg\:bui-col-end-12{grid-column-end:12}.lg\:bui-col-end-13{grid-column-end:13}.lg\:bui-col-end-auto{grid-column-end:auto}.lg\:bui-row-span-1{grid-row:span 1/span 1}.lg\:bui-row-span-2{grid-row:span 2/span 2}.lg\:bui-row-span-3{grid-row:span 3/span 3}.lg\:bui-row-span-4{grid-row:span 4/span 4}.lg\:bui-row-span-5{grid-row:span 5/span 5}.lg\:bui-row-span-6{grid-row:span 6/span 6}.lg\:bui-row-span-7{grid-row:span 7/span 7}.lg\:bui-row-span-8{grid-row:span 8/span 8}.lg\:bui-row-span-9{grid-row:span 9/span 9}.lg\:bui-row-span-10{grid-row:span 10/span 10}.lg\:bui-row-span-11{grid-row:span 11/span 11}.lg\:bui-row-span-12{grid-row:span 12/span 12}.lg\:bui-row-span-auto{grid-row:span auto/span auto}}@media (width>=1536px){.xl\:bui-columns-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xl\:bui-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:bui-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:bui-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:bui-columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:bui-columns-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:bui-columns-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xl\:bui-columns-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xl\:bui-columns-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xl\:bui-columns-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:bui-columns-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xl\:bui-columns-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xl\:bui-columns-auto{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.xl\:bui-col-span-1{grid-column:span 1/span 1}.xl\:bui-col-span-2{grid-column:span 2/span 2}.xl\:bui-col-span-3{grid-column:span 3/span 3}.xl\:bui-col-span-4{grid-column:span 4/span 4}.xl\:bui-col-span-5{grid-column:span 5/span 5}.xl\:bui-col-span-6{grid-column:span 6/span 6}.xl\:bui-col-span-7{grid-column:span 7/span 7}.xl\:bui-col-span-8{grid-column:span 8/span 8}.xl\:bui-col-span-9{grid-column:span 9/span 9}.xl\:bui-col-span-10{grid-column:span 10/span 10}.xl\:bui-col-span-11{grid-column:span 11/span 11}.xl\:bui-col-span-12{grid-column:span 12/span 12}.xl\:bui-col-span-auto{grid-column:span auto/span auto}.xl\:bui-col-start-1{grid-column-start:1}.xl\:bui-col-start-2{grid-column-start:2}.xl\:bui-col-start-3{grid-column-start:3}.xl\:bui-col-start-4{grid-column-start:4}.xl\:bui-col-start-5{grid-column-start:5}.xl\:bui-col-start-6{grid-column-start:6}.xl\:bui-col-start-7{grid-column-start:7}.xl\:bui-col-start-8{grid-column-start:8}.xl\:bui-col-start-9{grid-column-start:9}.xl\:bui-col-start-10{grid-column-start:10}.xl\:bui-col-start-11{grid-column-start:11}.xl\:bui-col-start-12{grid-column-start:12}.xl\:bui-col-start-13{grid-column-start:13}.xl\:bui-col-start-auto{grid-column-start:auto}.xl\:bui-col-end-1{grid-column-end:1}.xl\:bui-col-end-2{grid-column-end:2}.xl\:bui-col-end-3{grid-column-end:3}.xl\:bui-col-end-4{grid-column-end:4}.xl\:bui-col-end-5{grid-column-end:5}.xl\:bui-col-end-6{grid-column-end:6}.xl\:bui-col-end-7{grid-column-end:7}.xl\:bui-col-end-8{grid-column-end:8}.xl\:bui-col-end-9{grid-column-end:9}.xl\:bui-col-end-10{grid-column-end:10}.xl\:bui-col-end-11{grid-column-end:11}.xl\:bui-col-end-12{grid-column-end:12}.xl\:bui-col-end-13{grid-column-end:13}.xl\:bui-col-end-auto{grid-column-end:auto}.xl\:bui-row-span-1{grid-row:span 1/span 1}.xl\:bui-row-span-2{grid-row:span 2/span 2}.xl\:bui-row-span-3{grid-row:span 3/span 3}.xl\:bui-row-span-4{grid-row:span 4/span 4}.xl\:bui-row-span-5{grid-row:span 5/span 5}.xl\:bui-row-span-6{grid-row:span 6/span 6}.xl\:bui-row-span-7{grid-row:span 7/span 7}.xl\:bui-row-span-8{grid-row:span 8/span 8}.xl\:bui-row-span-9{grid-row:span 9/span 9}.xl\:bui-row-span-10{grid-row:span 10/span 10}.xl\:bui-row-span-11{grid-row:span 11/span 11}.xl\:bui-row-span-12{grid-row:span 12/span 12}.xl\:bui-row-span-auto{grid-row:span auto/span auto}}.bui-gap{gap:var(--gap)}.bui-gap-0\.5{gap:var(--bui-space-0_5)}.bui-gap-1{gap:var(--bui-space-1)}.bui-gap-1\.5{gap:var(--bui-space-1_5)}.bui-gap-2{gap:var(--bui-space-2)}.bui-gap-3{gap:var(--bui-space-3)}.bui-gap-4{gap:var(--bui-space-4)}.bui-gap-5{gap:var(--bui-space-5)}.bui-gap-6{gap:var(--bui-space-6)}.bui-gap-7{gap:var(--bui-space-7)}.bui-gap-8{gap:var(--bui-space-8)}.bui-gap-9{gap:var(--bui-space-9)}.bui-gap-10{gap:var(--bui-space-10)}.bui-gap-11{gap:var(--bui-space-11)}.bui-gap-12{gap:var(--bui-space-12)}.bui-gap-13{gap:var(--bui-space-13)}.bui-gap-14{gap:var(--bui-space-14)}@media (width>=640px){.xs\:bui-gap{gap:var(--gap-xs)}.xs\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.xs\:bui-gap-1{gap:var(--bui-space-1)}.xs\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.xs\:bui-gap-2{gap:var(--bui-space-2)}.xs\:bui-gap-3{gap:var(--bui-space-3)}.xs\:bui-gap-4{gap:var(--bui-space-4)}.xs\:bui-gap-5{gap:var(--bui-space-5)}.xs\:bui-gap-6{gap:var(--bui-space-6)}.xs\:bui-gap-7{gap:var(--bui-space-7)}.xs\:bui-gap-8{gap:var(--bui-space-8)}.xs\:bui-gap-9{gap:var(--bui-space-9)}.xs\:bui-gap-10{gap:var(--bui-space-10)}.xs\:bui-gap-11{gap:var(--bui-space-11)}.xs\:bui-gap-12{gap:var(--bui-space-12)}.xs\:bui-gap-13{gap:var(--bui-space-13)}.xs\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=768px){.sm\:bui-gap{gap:var(--gap-sm)}.sm\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.sm\:bui-gap-1{gap:var(--bui-space-1)}.sm\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.sm\:bui-gap-2{gap:var(--bui-space-2)}.sm\:bui-gap-3{gap:var(--bui-space-3)}.sm\:bui-gap-4{gap:var(--bui-space-4)}.sm\:bui-gap-5{gap:var(--bui-space-5)}.sm\:bui-gap-6{gap:var(--bui-space-6)}.sm\:bui-gap-7{gap:var(--bui-space-7)}.sm\:bui-gap-8{gap:var(--bui-space-8)}.sm\:bui-gap-9{gap:var(--bui-space-9)}.sm\:bui-gap-10{gap:var(--bui-space-10)}.sm\:bui-gap-11{gap:var(--bui-space-11)}.sm\:bui-gap-12{gap:var(--bui-space-12)}.sm\:bui-gap-13{gap:var(--bui-space-13)}.sm\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=1024px){.md\:bui-gap{gap:var(--gap-md)}.md\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.md\:bui-gap-1{gap:var(--bui-space-1)}.md\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.md\:bui-gap-2{gap:var(--bui-space-2)}.md\:bui-gap-3{gap:var(--bui-space-3)}.md\:bui-gap-4{gap:var(--bui-space-4)}.md\:bui-gap-5{gap:var(--bui-space-5)}.md\:bui-gap-6{gap:var(--bui-space-6)}.md\:bui-gap-7{gap:var(--bui-space-7)}.md\:bui-gap-8{gap:var(--bui-space-8)}.md\:bui-gap-9{gap:var(--bui-space-9)}.md\:bui-gap-10{gap:var(--bui-space-10)}.md\:bui-gap-11{gap:var(--bui-space-11)}.md\:bui-gap-12{gap:var(--bui-space-12)}.md\:bui-gap-13{gap:var(--bui-space-13)}.md\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=1280px){.lg\:bui-gap{gap:var(--gap-lg)}.lg\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.lg\:bui-gap-1{gap:var(--bui-space-1)}.lg\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.lg\:bui-gap-2{gap:var(--bui-space-2)}.lg\:bui-gap-3{gap:var(--bui-space-3)}.lg\:bui-gap-4{gap:var(--bui-space-4)}.lg\:bui-gap-5{gap:var(--bui-space-5)}.lg\:bui-gap-6{gap:var(--bui-space-6)}.lg\:bui-gap-7{gap:var(--bui-space-7)}.lg\:bui-gap-8{gap:var(--bui-space-8)}.lg\:bui-gap-9{gap:var(--bui-space-9)}.lg\:bui-gap-10{gap:var(--bui-space-10)}.lg\:bui-gap-11{gap:var(--bui-space-11)}.lg\:bui-gap-12{gap:var(--bui-space-12)}.lg\:bui-gap-13{gap:var(--bui-space-13)}.lg\:bui-gap-14{gap:var(--bui-space-14)}}@media (width>=1536px){.xl\:bui-gap{gap:var(--gap-xl)}.xl\:bui-gap-0\.5{gap:var(--bui-space-0_5)}.xl\:bui-gap-1{gap:var(--bui-space-1)}.xl\:bui-gap-1\.5{gap:var(--bui-space-1_5)}.xl\:bui-gap-2{gap:var(--bui-space-2)}.xl\:bui-gap-3{gap:var(--bui-space-3)}.xl\:bui-gap-4{gap:var(--bui-space-4)}.xl\:bui-gap-5{gap:var(--bui-space-5)}.xl\:bui-gap-6{gap:var(--bui-space-6)}.xl\:bui-gap-7{gap:var(--bui-space-7)}.xl\:bui-gap-8{gap:var(--bui-space-8)}.xl\:bui-gap-9{gap:var(--bui-space-9)}.xl\:bui-gap-10{gap:var(--bui-space-10)}.xl\:bui-gap-11{gap:var(--bui-space-11)}.xl\:bui-gap-12{gap:var(--bui-space-12)}.xl\:bui-gap-13{gap:var(--bui-space-13)}.xl\:bui-gap-14{gap:var(--bui-space-14)}}.bui-align-start{align-items:start}.bui-align-center{align-items:center}.bui-align-end{align-items:end}.bui-align-baseline{align-items:baseline}.bui-align-stretch{align-items:stretch}.bui-jc-start{justify-content:start}.bui-jc-center{justify-content:center}.bui-jc-end{justify-content:end}.bui-jc-between{justify-content:space-between}.bui-fd-row{flex-direction:row}.bui-fd-column{flex-direction:column}.bui-fd-row-reverse{flex-direction:row-reverse}.bui-fd-column-reverse{flex-direction:column-reverse}@media (width>=640px){.xs\:bui-align-start{align-items:start}.xs\:bui-align-center{align-items:center}.xs\:bui-align-end{align-items:end}.xs\:bui-align-stretch{align-items:stretch}.xs\:bui-jc-start{justify-content:start}.xs\:bui-jc-center{justify-content:center}.xs\:bui-jc-end{justify-content:end}.xs\:bui-jc-between{justify-content:space-between}.xs\:bui-fd-row{flex-direction:row}.xs\:bui-fd-column{flex-direction:column}.xs\:bui-fd-row-reverse{flex-direction:row-reverse}.xs\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=768px){.sm\:bui-align-start{align-items:start}.sm\:bui-align-center{align-items:center}.sm\:bui-align-end{align-items:end}.sm\:bui-align-stretch{align-items:stretch}.sm\:bui-jc-start{justify-content:start}.sm\:bui-jc-center{justify-content:center}.sm\:bui-jc-end{justify-content:end}.sm\:bui-jc-between{justify-content:space-between}.sm\:bui-fd-row{flex-direction:row}.sm\:bui-fd-column{flex-direction:column}.sm\:bui-fd-row-reverse{flex-direction:row-reverse}.sm\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=1024px){.md\:bui-align-start{align-items:start}.md\:bui-align-center{align-items:center}.md\:bui-align-end{align-items:end}.md\:bui-align-stretch{align-items:stretch}.md\:bui-jc-start{justify-content:start}.md\:bui-jc-center{justify-content:center}.md\:bui-jc-end{justify-content:end}.md\:bui-jc-between{justify-content:space-between}.md\:bui-fd-row{flex-direction:row}.md\:bui-fd-column{flex-direction:column}.md\:bui-fd-row-reverse{flex-direction:row-reverse}.md\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=1280px){.lg\:bui-align-start{align-items:start}.lg\:bui-align-center{align-items:center}.lg\:bui-align-end{align-items:end}.lg\:bui-align-stretch{align-items:stretch}.lg\:bui-jc-start{justify-content:start}.lg\:bui-jc-center{justify-content:center}.lg\:bui-jc-end{justify-content:end}.lg\:bui-jc-between{justify-content:space-between}.lg\:bui-fd-row{flex-direction:row}.lg\:bui-fd-column{flex-direction:column}.lg\:bui-fd-row-reverse{flex-direction:row-reverse}.lg\:bui-fd-column-reverse{flex-direction:column-reverse}}@media (width>=1536px){.xl\:bui-align-start{align-items:start}.xl\:bui-align-center{align-items:center}.xl\:bui-align-end{align-items:end}.xl\:bui-align-stretch{align-items:stretch}.xl\:bui-jc-start{justify-content:start}.xl\:bui-jc-center{justify-content:center}.xl\:bui-jc-end{justify-content:end}.xl\:bui-jc-between{justify-content:space-between}.xl\:bui-fd-row{flex-direction:row}.xl\:bui-fd-column{flex-direction:column}.xl\:bui-fd-row-reverse{flex-direction:row-reverse}.xl\:bui-fd-column-reverse{flex-direction:column-reverse}}} \ No newline at end of file +@layer tokens { + :root { + --bui-font-regular: system-ui; + --bui-font-monospace: ui-monospace, 'Menlo', 'Monaco', 'Consolas', + 'Liberation Mono', 'Courier New', monospace; + --bui-font-weight-regular: 400; + --bui-font-weight-bold: 600; + --bui-font-size-1: 0.625rem; + --bui-font-size-2: 0.75rem; + --bui-font-size-3: 0.875rem; + --bui-font-size-4: 1rem; + --bui-font-size-5: 1.25rem; + --bui-font-size-6: 1.5rem; + --bui-font-size-7: 2rem; + --bui-font-size-8: 3rem; + --bui-font-size-9: 4rem; + --bui-font-size-10: 5.75rem; + --bui-space: 0.25rem; + --bui-space-0_5: calc(var(--bui-space) * 0.5); + --bui-space-1: var(--bui-space); + --bui-space-1_5: calc(var(--bui-space) * 1.5); + --bui-space-2: calc(var(--bui-space) * 2); + --bui-space-3: calc(var(--bui-space) * 3); + --bui-space-4: calc(var(--bui-space) * 4); + --bui-space-5: calc(var(--bui-space) * 5); + --bui-space-6: calc(var(--bui-space) * 6); + --bui-space-7: calc(var(--bui-space) * 7); + --bui-space-8: calc(var(--bui-space) * 8); + --bui-space-9: calc(var(--bui-space) * 9); + --bui-space-10: calc(var(--bui-space) * 10); + --bui-space-11: calc(var(--bui-space) * 11); + --bui-space-12: calc(var(--bui-space) * 12); + --bui-space-13: calc(var(--bui-space) * 13); + --bui-space-14: calc(var(--bui-space) * 14); + --bui-radius-1: calc(0.125rem); + --bui-radius-2: calc(0.25rem); + --bui-radius-3: calc(0.5rem); + --bui-radius-4: calc(0.75rem); + --bui-radius-5: calc(1rem); + --bui-radius-6: calc(1.25rem); + --bui-radius-full: 9999px; + --bui-black: #000; + --bui-white: #fff; + --bui-gray-1: #f8f8f8; + --bui-gray-2: #ececec; + --bui-gray-3: #d9d9d9; + --bui-gray-4: #c1c1c1; + --bui-gray-5: #9e9e9e; + --bui-gray-6: #8c8c8c; + --bui-gray-7: #757575; + --bui-gray-8: #595959; + --bui-bg-surface-0: var(--bui-gray-1); + --bui-bg-surface-1: var(--bui-white); + --bui-bg-surface-2: var(--bui-gray-1); + --bui-bg-surface-3: var(--bui-gray-2); + --bui-bg-solid: #1f5493; + --bui-bg-solid-hover: #163a66; + --bui-bg-solid-pressed: #0f2b4e; + --bui-bg-solid-disabled: #163a66; + --bui-bg-neutral-on-surface-0: oklch(0% 0 0/0.06); + --bui-bg-neutral-on-surface-0-hover: oklch(0% 0 0/0.12); + --bui-bg-neutral-on-surface-0-pressed: oklch(0% 0 0/0.16); + --bui-bg-neutral-on-surface-0-disabled: oklch(0% 0 0/0.06); + --bui-bg-neutral-on-surface-1: oklch(0% 0 0/0.06); + --bui-bg-neutral-on-surface-1-hover: oklch(0% 0 0/0.12); + --bui-bg-neutral-on-surface-1-pressed: oklch(0% 0 0/0.16); + --bui-bg-neutral-on-surface-1-disabled: oklch(0% 0 0/0.06); + --bui-bg-neutral-on-surface-2: oklch(0% 0 0/0.06); + --bui-bg-neutral-on-surface-2-hover: oklch(0% 0 0/0.12); + --bui-bg-neutral-on-surface-2-pressed: oklch(0% 0 0/0.16); + --bui-bg-neutral-on-surface-2-disabled: oklch(0% 0 0/0.06); + --bui-bg-neutral-on-surface-3: oklch(0% 0 0/0.06); + --bui-bg-neutral-on-surface-3-hover: oklch(0% 0 0/0.12); + --bui-bg-neutral-on-surface-3-pressed: oklch(0% 0 0/0.16); + --bui-bg-neutral-on-surface-3-disabled: oklch(0% 0 0/0.06); + --bui-bg-danger: #ffe2e2; + --bui-bg-warning: #ffedd5; + --bui-bg-success: #dcfce7; + --bui-bg-info: #dbeafe; + --bui-fg-primary: var(--bui-black); + --bui-fg-secondary: var(--bui-gray-7); + --bui-fg-disabled: #9e9e9e; + --bui-fg-solid: var(--bui-white); + --bui-fg-solid-disabled: #98a8bc; + --bui-fg-danger-on-bg: #991919; + --bui-fg-warning-on-bg: #92310a; + --bui-fg-success-on-bg: #116932; + --bui-fg-info-on-bg: #173da6; + --bui-fg-danger: #ec3b18; + --bui-fg-warning: #ef7a32; + --bui-fg-success: #1ed760; + --bui-fg-info: #0d74ce; + --bui-border: #0000001a; + --bui-border-hover: #0003; + --bui-border-pressed: #0006; + --bui-border-disabled: #0000001a; + --bui-border-info: #7ea9d6; + --bui-border-danger: #f87a7a; + --bui-border-warning: #e36d05; + --bui-border-success: #53db83; + --bui-ring: #1f5493; + --bui-scrollbar: #a0a0a03b; + --bui-scrollbar-thumb: #a0a0a0; + --bui-shadow: 0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a; + --bui-animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; + } + [data-theme-mode='dark'] { + --bui-gray-1: #191919; + --bui-gray-2: #242424; + --bui-gray-3: #373737; + --bui-gray-4: #464646; + --bui-gray-5: #575757; + --bui-gray-6: #7b7b7b; + --bui-gray-7: #9e9e9e; + --bui-gray-8: #b4b4b4; + --bui-bg-surface-0: #333; + --bui-bg-surface-1: var(--bui-gray-1); + --bui-bg-surface-2: var(--bui-gray-2); + --bui-bg-surface-3: var(--bui-gray-3); + --bui-bg-solid: #9cc9ff; + --bui-bg-solid-hover: #83b9fd; + --bui-bg-solid-pressed: #83b9fd; + --bui-bg-solid-disabled: #1b3d68; + --bui-bg-neutral-on-surface-0: oklch(100% 0 0/0.1); + --bui-bg-neutral-on-surface-0-hover: oklch(100% 0 0/0.14); + --bui-bg-neutral-on-surface-0-pressed: oklch(100% 0 0/0.2); + --bui-bg-neutral-on-surface-0-disabled: oklch(100% 0 0/0.1); + --bui-bg-neutral-on-surface-1: oklch(100% 0 0/0.06); + --bui-bg-neutral-on-surface-1-hover: oklch(100% 0 0/0.1); + --bui-bg-neutral-on-surface-1-pressed: oklch(100% 0 0/0.16); + --bui-bg-neutral-on-surface-1-disabled: oklch(100% 0 0/0.06); + --bui-bg-neutral-on-surface-2: oklch(100% 0 0/0.08); + --bui-bg-neutral-on-surface-2-hover: oklch(100% 0 0/0.12); + --bui-bg-neutral-on-surface-2-pressed: oklch(100% 0 0/0.2); + --bui-bg-neutral-on-surface-2-disabled: oklch(100% 0 0/0.08); + --bui-bg-neutral-on-surface-3: oklch(100% 0 0/0.08); + --bui-bg-neutral-on-surface-3-hover: oklch(100% 0 0/0.12); + --bui-bg-neutral-on-surface-3-pressed: oklch(100% 0 0/0.2); + --bui-bg-neutral-on-surface-3-disabled: oklch(100% 0 0/0.08); + --bui-bg-danger: #300c0c; + --bui-bg-warning: #302008; + --bui-bg-success: #042713; + --bui-bg-info: #132049; + --bui-fg-primary: var(--bui-white); + --bui-fg-secondary: var(--bui-gray-7); + --bui-fg-disabled: var(--bui-gray-7); + --bui-fg-solid: #101821; + --bui-fg-solid-disabled: #6191cc; + --bui-fg-danger-on-bg: #fca5a5; + --bui-fg-warning-on-bg: #fdba74; + --bui-fg-success-on-bg: #86efac; + --bui-fg-info-on-bg: #a3cfff; + --bui-fg-danger: #ff5a30; + --bui-fg-warning: #ffa057; + --bui-fg-success: #1ed760; + --bui-fg-info: #70b8ff; + --bui-border: #ffffff1f; + --bui-border-hover: #fff6; + --bui-border-pressed: #ffffff80; + --bui-border-disabled: #fff3; + --bui-border-info: #7ea9d6; + --bui-border-danger: #f87a7a; + --bui-border-warning: #e36d05; + --bui-border-success: #53db83; + --bui-ring: #1f5493; + --bui-scrollbar: #3636363a; + --bui-scrollbar-thumb: #575757; + --bui-shadow: none; + } +} +@layer base { + *, + :before, + :after { + box-sizing: border-box; + } + html { + -webkit-text-size-adjust: 100%; + tab-size: 4; + font-family: system-ui, Segoe UI, Roboto, Helvetica, Arial, sans-serif, + Apple Color Emoji, Segoe UI Emoji; + line-height: 1.15; + } + body { + margin: 0; + } + b, + strong { + font-weight: bolder; + } + code, + kbd, + samp, + pre { + font-family: ui-monospace, SFMono-Regular, Consolas, Liberation Mono, Menlo, + monospace; + font-size: 1em; + } + small { + font-size: 80%; + } + sub, + sup { + vertical-align: baseline; + font-size: 75%; + line-height: 0; + position: relative; + } + sub { + bottom: -0.25em; + } + sup { + top: -0.5em; + } + table { + border-color: currentColor; + } + button, + input, + optgroup, + select, + textarea { + margin: 0; + font-family: inherit; + font-size: 100%; + line-height: 1.15; + } + button, + [type='button'], + [type='reset'], + [type='submit'] { + -webkit-appearance: button; + } + legend { + padding: 0; + } + progress { + vertical-align: baseline; + } + ::-webkit-inner-spin-button, + ::-webkit-outer-spin-button { + height: auto; + } + [type='search'] { + -webkit-appearance: textfield; + outline-offset: -2px; + } + ::-webkit-search-decoration { + -webkit-appearance: none; + } + ::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; + } + summary { + display: list-item; + } + :where(a) { + color: inherit; + text-decoration: none; + } + @keyframes pulse { + 50% { + opacity: 0.5; + } + } + body { + background-color: var(--bui-bg-surface-0); + color: var(--bui-fg-primary); + font-family: var(--bui-font-regular); + font-weight: var(--bui-font-weight-regular); + font-size: var(--bui-font-size-3); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + [data-theme-mode='dark'] { + color-scheme: dark; + } + [data-theme-mode='light'] { + color-scheme: light; + } +} +@layer components; +@layer utilities { + .bui-p { + padding: var(--p); + } + .bui-p-0\.5 { + padding: var(--bui-space-0_5); + } + .bui-p-1 { + padding: var(--bui-space-1); + } + .bui-p-1\.5 { + padding: var(--bui-space-1_5); + } + .bui-p-2 { + padding: var(--bui-space-2); + } + .bui-p-3 { + padding: var(--bui-space-3); + } + .bui-p-4 { + padding: var(--bui-space-4); + } + .bui-p-5 { + padding: var(--bui-space-5); + } + .bui-p-6 { + padding: var(--bui-space-6); + } + .bui-p-7 { + padding: var(--bui-space-7); + } + .bui-p-8 { + padding: var(--bui-space-8); + } + .bui-p-9 { + padding: var(--bui-space-9); + } + .bui-p-10 { + padding: var(--bui-space-10); + } + .bui-p-11 { + padding: var(--bui-space-11); + } + .bui-p-12 { + padding: var(--bui-space-12); + } + .bui-p-13 { + padding: var(--bui-space-13); + } + .bui-p-14 { + padding: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-p { + padding: var(--p-xs); + } + .xs\:bui-p-0\.5 { + padding: var(--bui-space-0_5); + } + .xs\:bui-p-1 { + padding: var(--bui-space-1); + } + .xs\:bui-p-1\.5 { + padding: var(--bui-space-1_5); + } + .xs\:bui-p-2 { + padding: var(--bui-space-2); + } + .xs\:bui-p-3 { + padding: var(--bui-space-3); + } + .xs\:bui-p-4 { + padding: var(--bui-space-4); + } + .xs\:bui-p-5 { + padding: var(--bui-space-5); + } + .xs\:bui-p-6 { + padding: var(--bui-space-6); + } + .xs\:bui-p-7 { + padding: var(--bui-space-7); + } + .xs\:bui-p-8 { + padding: var(--bui-space-8); + } + .xs\:bui-p-9 { + padding: var(--bui-space-9); + } + .xs\:bui-p-10 { + padding: var(--bui-space-10); + } + .xs\:bui-p-11 { + padding: var(--bui-space-11); + } + .xs\:bui-p-12 { + padding: var(--bui-space-12); + } + .xs\:bui-p-13 { + padding: var(--bui-space-13); + } + .xs\:bui-p-14 { + padding: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-p { + padding: var(--p-sm); + } + .sm\:bui-p-0\.5 { + padding: var(--bui-space-0_5); + } + .sm\:bui-p-1 { + padding: var(--bui-space-1); + } + .sm\:bui-p-1\.5 { + padding: var(--bui-space-1_5); + } + .sm\:bui-p-2 { + padding: var(--bui-space-2); + } + .sm\:bui-p-3 { + padding: var(--bui-space-3); + } + .sm\:bui-p-4 { + padding: var(--bui-space-4); + } + .sm\:bui-p-5 { + padding: var(--bui-space-5); + } + .sm\:bui-p-6 { + padding: var(--bui-space-6); + } + .sm\:bui-p-7 { + padding: var(--bui-space-7); + } + .sm\:bui-p-8 { + padding: var(--bui-space-8); + } + .sm\:bui-p-9 { + padding: var(--bui-space-9); + } + .sm\:bui-p-10 { + padding: var(--bui-space-10); + } + .sm\:bui-p-11 { + padding: var(--bui-space-11); + } + .sm\:bui-p-12 { + padding: var(--bui-space-12); + } + .sm\:bui-p-13 { + padding: var(--bui-space-13); + } + .sm\:bui-p-14 { + padding: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-p { + padding: var(--p-md); + } + .md\:bui-p-0\.5 { + padding: var(--bui-space-0_5); + } + .md\:bui-p-1 { + padding: var(--bui-space-1); + } + .md\:bui-p-1\.5 { + padding: var(--bui-space-1_5); + } + .md\:bui-p-2 { + padding: var(--bui-space-2); + } + .md\:bui-p-3 { + padding: var(--bui-space-3); + } + .md\:bui-p-4 { + padding: var(--bui-space-4); + } + .md\:bui-p-5 { + padding: var(--bui-space-5); + } + .md\:bui-p-6 { + padding: var(--bui-space-6); + } + .md\:bui-p-7 { + padding: var(--bui-space-7); + } + .md\:bui-p-8 { + padding: var(--bui-space-8); + } + .md\:bui-p-9 { + padding: var(--bui-space-9); + } + .md\:bui-p-10 { + padding: var(--bui-space-10); + } + .md\:bui-p-11 { + padding: var(--bui-space-11); + } + .md\:bui-p-12 { + padding: var(--bui-space-12); + } + .md\:bui-p-13 { + padding: var(--bui-space-13); + } + .md\:bui-p-14 { + padding: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-p { + padding: var(--p-lg); + } + .lg\:bui-p-0\.5 { + padding: var(--bui-space-0_5); + } + .lg\:bui-p-1 { + padding: var(--bui-space-1); + } + .lg\:bui-p-1\.5 { + padding: var(--bui-space-1_5); + } + .lg\:bui-p-2 { + padding: var(--bui-space-2); + } + .lg\:bui-p-3 { + padding: var(--bui-space-3); + } + .lg\:bui-p-4 { + padding: var(--bui-space-4); + } + .lg\:bui-p-5 { + padding: var(--bui-space-5); + } + .lg\:bui-p-6 { + padding: var(--bui-space-6); + } + .lg\:bui-p-7 { + padding: var(--bui-space-7); + } + .lg\:bui-p-8 { + padding: var(--bui-space-8); + } + .lg\:bui-p-9 { + padding: var(--bui-space-9); + } + .lg\:bui-p-10 { + padding: var(--bui-space-10); + } + .lg\:bui-p-11 { + padding: var(--bui-space-11); + } + .lg\:bui-p-12 { + padding: var(--bui-space-12); + } + .lg\:bui-p-13 { + padding: var(--bui-space-13); + } + .lg\:bui-p-14 { + padding: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-p { + padding: var(--p-xl); + } + .xl\:bui-p-0\.5 { + padding: var(--bui-space-0_5); + } + .xl\:bui-p-1 { + padding: var(--bui-space-1); + } + .xl\:bui-p-1\.5 { + padding: var(--bui-space-1_5); + } + .xl\:bui-p-2 { + padding: var(--bui-space-2); + } + .xl\:bui-p-3 { + padding: var(--bui-space-3); + } + .xl\:bui-p-4 { + padding: var(--bui-space-4); + } + .xl\:bui-p-5 { + padding: var(--bui-space-5); + } + .xl\:bui-p-6 { + padding: var(--bui-space-6); + } + .xl\:bui-p-7 { + padding: var(--bui-space-7); + } + .xl\:bui-p-8 { + padding: var(--bui-space-8); + } + .xl\:bui-p-9 { + padding: var(--bui-space-9); + } + .xl\:bui-p-10 { + padding: var(--bui-space-10); + } + .xl\:bui-p-11 { + padding: var(--bui-space-11); + } + .xl\:bui-p-12 { + padding: var(--bui-space-12); + } + .xl\:bui-p-13 { + padding: var(--bui-space-13); + } + .xl\:bui-p-14 { + padding: var(--bui-space-14); + } + } + .bui-pl { + padding-left: var(--pl); + } + .bui-pl-0\.5 { + padding-left: var(--bui-space-0_5); + } + .bui-pl-1 { + padding-left: var(--bui-space-1); + } + .bui-pl-1\.5 { + padding-left: var(--bui-space-1_5); + } + .bui-pl-2 { + padding-left: var(--bui-space-2); + } + .bui-pl-3 { + padding-left: var(--bui-space-3); + } + .bui-pl-4 { + padding-left: var(--bui-space-4); + } + .bui-pl-5 { + padding-left: var(--bui-space-5); + } + .bui-pl-6 { + padding-left: var(--bui-space-6); + } + .bui-pl-7 { + padding-left: var(--bui-space-7); + } + .bui-pl-8 { + padding-left: var(--bui-space-8); + } + .bui-pl-9 { + padding-left: var(--bui-space-9); + } + .bui-pl-10 { + padding-left: var(--bui-space-10); + } + .bui-pl-11 { + padding-left: var(--bui-space-11); + } + .bui-pl-12 { + padding-left: var(--bui-space-12); + } + .bui-pl-13 { + padding-left: var(--bui-space-13); + } + .bui-pl-14 { + padding-left: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-pl { + padding-left: var(--pl-xs); + } + .xs\:bui-pl-0\.5 { + padding-left: var(--bui-space-0_5); + } + .xs\:bui-pl-1 { + padding-left: var(--bui-space-1); + } + .xs\:bui-pl-1\.5 { + padding-left: var(--bui-space-1_5); + } + .xs\:bui-pl-2 { + padding-left: var(--bui-space-2); + } + .xs\:bui-pl-3 { + padding-left: var(--bui-space-3); + } + .xs\:bui-pl-4 { + padding-left: var(--bui-space-4); + } + .xs\:bui-pl-5 { + padding-left: var(--bui-space-5); + } + .xs\:bui-pl-6 { + padding-left: var(--bui-space-6); + } + .xs\:bui-pl-7 { + padding-left: var(--bui-space-7); + } + .xs\:bui-pl-8 { + padding-left: var(--bui-space-8); + } + .xs\:bui-pl-9 { + padding-left: var(--bui-space-9); + } + .xs\:bui-pl-10 { + padding-left: var(--bui-space-10); + } + .xs\:bui-pl-11 { + padding-left: var(--bui-space-11); + } + .xs\:bui-pl-12 { + padding-left: var(--bui-space-12); + } + .xs\:bui-pl-13 { + padding-left: var(--bui-space-13); + } + .xs\:bui-pl-14 { + padding-left: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-pl { + padding-left: var(--pl-sm); + } + .sm\:bui-pl-0\.5 { + padding-left: var(--bui-space-0_5); + } + .sm\:bui-pl-1 { + padding-left: var(--bui-space-1); + } + .sm\:bui-pl-1\.5 { + padding-left: var(--bui-space-1_5); + } + .sm\:bui-pl-2 { + padding-left: var(--bui-space-2); + } + .sm\:bui-pl-3 { + padding-left: var(--bui-space-3); + } + .sm\:bui-pl-4 { + padding-left: var(--bui-space-4); + } + .sm\:bui-pl-5 { + padding-left: var(--bui-space-5); + } + .sm\:bui-pl-6 { + padding-left: var(--bui-space-6); + } + .sm\:bui-pl-7 { + padding-left: var(--bui-space-7); + } + .sm\:bui-pl-8 { + padding-left: var(--bui-space-8); + } + .sm\:bui-pl-9 { + padding-left: var(--bui-space-9); + } + .sm\:bui-pl-10 { + padding-left: var(--bui-space-10); + } + .sm\:bui-pl-11 { + padding-left: var(--bui-space-11); + } + .sm\:bui-pl-12 { + padding-left: var(--bui-space-12); + } + .sm\:bui-pl-13 { + padding-left: var(--bui-space-13); + } + .sm\:bui-pl-14 { + padding-left: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-pl { + padding-left: var(--pl-md); + } + .md\:bui-pl-0\.5 { + padding-left: var(--bui-space-0_5); + } + .md\:bui-pl-1 { + padding-left: var(--bui-space-1); + } + .md\:bui-pl-1\.5 { + padding-left: var(--bui-space-1_5); + } + .md\:bui-pl-2 { + padding-left: var(--bui-space-2); + } + .md\:bui-pl-3 { + padding-left: var(--bui-space-3); + } + .md\:bui-pl-4 { + padding-left: var(--bui-space-4); + } + .md\:bui-pl-5 { + padding-left: var(--bui-space-5); + } + .md\:bui-pl-6 { + padding-left: var(--bui-space-6); + } + .md\:bui-pl-7 { + padding-left: var(--bui-space-7); + } + .md\:bui-pl-8 { + padding-left: var(--bui-space-8); + } + .md\:bui-pl-9 { + padding-left: var(--bui-space-9); + } + .md\:bui-pl-10 { + padding-left: var(--bui-space-10); + } + .md\:bui-pl-11 { + padding-left: var(--bui-space-11); + } + .md\:bui-pl-12 { + padding-left: var(--bui-space-12); + } + .md\:bui-pl-13 { + padding-left: var(--bui-space-13); + } + .md\:bui-pl-14 { + padding-left: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-pl { + padding-left: var(--pl-lg); + } + .lg\:bui-pl-0\.5 { + padding-left: var(--bui-space-0_5); + } + .lg\:bui-pl-1 { + padding-left: var(--bui-space-1); + } + .lg\:bui-pl-1\.5 { + padding-left: var(--bui-space-1_5); + } + .lg\:bui-pl-2 { + padding-left: var(--bui-space-2); + } + .lg\:bui-pl-3 { + padding-left: var(--bui-space-3); + } + .lg\:bui-pl-4 { + padding-left: var(--bui-space-4); + } + .lg\:bui-pl-5 { + padding-left: var(--bui-space-5); + } + .lg\:bui-pl-6 { + padding-left: var(--bui-space-6); + } + .lg\:bui-pl-7 { + padding-left: var(--bui-space-7); + } + .lg\:bui-pl-8 { + padding-left: var(--bui-space-8); + } + .lg\:bui-pl-9 { + padding-left: var(--bui-space-9); + } + .lg\:bui-pl-10 { + padding-left: var(--bui-space-10); + } + .lg\:bui-pl-11 { + padding-left: var(--bui-space-11); + } + .lg\:bui-pl-12 { + padding-left: var(--bui-space-12); + } + .lg\:bui-pl-13 { + padding-left: var(--bui-space-13); + } + .lg\:bui-pl-14 { + padding-left: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-pl { + padding-left: var(--pl-xl); + } + .xl\:bui-pl-0\.5 { + padding-left: var(--bui-space-0_5); + } + .xl\:bui-pl-1 { + padding-left: var(--bui-space-1); + } + .xl\:bui-pl-1\.5 { + padding-left: var(--bui-space-1_5); + } + .xl\:bui-pl-2 { + padding-left: var(--bui-space-2); + } + .xl\:bui-pl-3 { + padding-left: var(--bui-space-3); + } + .xl\:bui-pl-4 { + padding-left: var(--bui-space-4); + } + .xl\:bui-pl-5 { + padding-left: var(--bui-space-5); + } + .xl\:bui-pl-6 { + padding-left: var(--bui-space-6); + } + .xl\:bui-pl-7 { + padding-left: var(--bui-space-7); + } + .xl\:bui-pl-8 { + padding-left: var(--bui-space-8); + } + .xl\:bui-pl-9 { + padding-left: var(--bui-space-9); + } + .xl\:bui-pl-10 { + padding-left: var(--bui-space-10); + } + .xl\:bui-pl-11 { + padding-left: var(--bui-space-11); + } + .xl\:bui-pl-12 { + padding-left: var(--bui-space-12); + } + .xl\:bui-pl-13 { + padding-left: var(--bui-space-13); + } + .xl\:bui-pl-14 { + padding-left: var(--bui-space-14); + } + } + .bui-pr { + padding-right: var(--pr); + } + .bui-pr-0\.5 { + padding-right: var(--bui-space-0_5); + } + .bui-pr-1 { + padding-right: var(--bui-space-1); + } + .bui-pr-1\.5 { + padding-right: var(--bui-space-1_5); + } + .bui-pr-2 { + padding-right: var(--bui-space-2); + } + .bui-pr-3 { + padding-right: var(--bui-space-3); + } + .bui-pr-4 { + padding-right: var(--bui-space-4); + } + .bui-pr-5 { + padding-right: var(--bui-space-5); + } + .bui-pr-6 { + padding-right: var(--bui-space-6); + } + .bui-pr-7 { + padding-right: var(--bui-space-7); + } + .bui-pr-8 { + padding-right: var(--bui-space-8); + } + .bui-pr-9 { + padding-right: var(--bui-space-9); + } + .bui-pr-10 { + padding-right: var(--bui-space-10); + } + .bui-pr-11 { + padding-right: var(--bui-space-11); + } + .bui-pr-12 { + padding-right: var(--bui-space-12); + } + .bui-pr-13 { + padding-right: var(--bui-space-13); + } + .bui-pr-14 { + padding-right: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-pr { + padding-right: var(--pr-xs); + } + .xs\:bui-pr-0\.5 { + padding-right: var(--bui-space-0_5); + } + .xs\:bui-pr-1 { + padding-right: var(--bui-space-1); + } + .xs\:bui-pr-1\.5 { + padding-right: var(--bui-space-1_5); + } + .xs\:bui-pr-2 { + padding-right: var(--bui-space-2); + } + .xs\:bui-pr-3 { + padding-right: var(--bui-space-3); + } + .xs\:bui-pr-4 { + padding-right: var(--bui-space-4); + } + .xs\:bui-pr-5 { + padding-right: var(--bui-space-5); + } + .xs\:bui-pr-6 { + padding-right: var(--bui-space-6); + } + .xs\:bui-pr-7 { + padding-right: var(--bui-space-7); + } + .xs\:bui-pr-8 { + padding-right: var(--bui-space-8); + } + .xs\:bui-pr-9 { + padding-right: var(--bui-space-9); + } + .xs\:bui-pr-10 { + padding-right: var(--bui-space-10); + } + .xs\:bui-pr-11 { + padding-right: var(--bui-space-11); + } + .xs\:bui-pr-12 { + padding-right: var(--bui-space-12); + } + .xs\:bui-pr-13 { + padding-right: var(--bui-space-13); + } + .xs\:bui-pr-14 { + padding-right: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-pr { + padding-right: var(--pr-sm); + } + .sm\:bui-pr-0\.5 { + padding-right: var(--bui-space-0_5); + } + .sm\:bui-pr-1 { + padding-right: var(--bui-space-1); + } + .sm\:bui-pr-1\.5 { + padding-right: var(--bui-space-1_5); + } + .sm\:bui-pr-2 { + padding-right: var(--bui-space-2); + } + .sm\:bui-pr-3 { + padding-right: var(--bui-space-3); + } + .sm\:bui-pr-4 { + padding-right: var(--bui-space-4); + } + .sm\:bui-pr-5 { + padding-right: var(--bui-space-5); + } + .sm\:bui-pr-6 { + padding-right: var(--bui-space-6); + } + .sm\:bui-pr-7 { + padding-right: var(--bui-space-7); + } + .sm\:bui-pr-8 { + padding-right: var(--bui-space-8); + } + .sm\:bui-pr-9 { + padding-right: var(--bui-space-9); + } + .sm\:bui-pr-10 { + padding-right: var(--bui-space-10); + } + .sm\:bui-pr-11 { + padding-right: var(--bui-space-11); + } + .sm\:bui-pr-12 { + padding-right: var(--bui-space-12); + } + .sm\:bui-pr-13 { + padding-right: var(--bui-space-13); + } + .sm\:bui-pr-14 { + padding-right: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-pr { + padding-right: var(--pr-md); + } + .md\:bui-pr-0\.5 { + padding-right: var(--bui-space-0_5); + } + .md\:bui-pr-1 { + padding-right: var(--bui-space-1); + } + .md\:bui-pr-1\.5 { + padding-right: var(--bui-space-1_5); + } + .md\:bui-pr-2 { + padding-right: var(--bui-space-2); + } + .md\:bui-pr-3 { + padding-right: var(--bui-space-3); + } + .md\:bui-pr-4 { + padding-right: var(--bui-space-4); + } + .md\:bui-pr-5 { + padding-right: var(--bui-space-5); + } + .md\:bui-pr-6 { + padding-right: var(--bui-space-6); + } + .md\:bui-pr-7 { + padding-right: var(--bui-space-7); + } + .md\:bui-pr-8 { + padding-right: var(--bui-space-8); + } + .md\:bui-pr-9 { + padding-right: var(--bui-space-9); + } + .md\:bui-pr-10 { + padding-right: var(--bui-space-10); + } + .md\:bui-pr-11 { + padding-right: var(--bui-space-11); + } + .md\:bui-pr-12 { + padding-right: var(--bui-space-12); + } + .md\:bui-pr-13 { + padding-right: var(--bui-space-13); + } + .md\:bui-pr-14 { + padding-right: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-pr { + padding-right: var(--pr-lg); + } + .lg\:bui-pr-0\.5 { + padding-right: var(--bui-space-0_5); + } + .lg\:bui-pr-1 { + padding-right: var(--bui-space-1); + } + .lg\:bui-pr-1\.5 { + padding-right: var(--bui-space-1_5); + } + .lg\:bui-pr-2 { + padding-right: var(--bui-space-2); + } + .lg\:bui-pr-3 { + padding-right: var(--bui-space-3); + } + .lg\:bui-pr-4 { + padding-right: var(--bui-space-4); + } + .lg\:bui-pr-5 { + padding-right: var(--bui-space-5); + } + .lg\:bui-pr-6 { + padding-right: var(--bui-space-6); + } + .lg\:bui-pr-7 { + padding-right: var(--bui-space-7); + } + .lg\:bui-pr-8 { + padding-right: var(--bui-space-8); + } + .lg\:bui-pr-9 { + padding-right: var(--bui-space-9); + } + .lg\:bui-pr-10 { + padding-right: var(--bui-space-10); + } + .lg\:bui-pr-11 { + padding-right: var(--bui-space-11); + } + .lg\:bui-pr-12 { + padding-right: var(--bui-space-12); + } + .lg\:bui-pr-13 { + padding-right: var(--bui-space-13); + } + .lg\:bui-pr-14 { + padding-right: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-pr { + padding-right: var(--pr-xl); + } + .xl\:bui-pr-0\.5 { + padding-right: var(--bui-space-0_5); + } + .xl\:bui-pr-1 { + padding-right: var(--bui-space-1); + } + .xl\:bui-pr-1\.5 { + padding-right: var(--bui-space-1_5); + } + .xl\:bui-pr-2 { + padding-right: var(--bui-space-2); + } + .xl\:bui-pr-3 { + padding-right: var(--bui-space-3); + } + .xl\:bui-pr-4 { + padding-right: var(--bui-space-4); + } + .xl\:bui-pr-5 { + padding-right: var(--bui-space-5); + } + .xl\:bui-pr-6 { + padding-right: var(--bui-space-6); + } + .xl\:bui-pr-7 { + padding-right: var(--bui-space-7); + } + .xl\:bui-pr-8 { + padding-right: var(--bui-space-8); + } + .xl\:bui-pr-9 { + padding-right: var(--bui-space-9); + } + .xl\:bui-pr-10 { + padding-right: var(--bui-space-10); + } + .xl\:bui-pr-11 { + padding-right: var(--bui-space-11); + } + .xl\:bui-pr-12 { + padding-right: var(--bui-space-12); + } + .xl\:bui-pr-13 { + padding-right: var(--bui-space-13); + } + .xl\:bui-pr-14 { + padding-right: var(--bui-space-14); + } + } + .bui-pt { + padding-top: var(--pt); + } + .bui-pt-0\.5 { + padding-top: var(--bui-space-0_5); + } + .bui-pt-1 { + padding-top: var(--bui-space-1); + } + .bui-pt-1\.5 { + padding-top: var(--bui-space-1_5); + } + .bui-pt-2 { + padding-top: var(--bui-space-2); + } + .bui-pt-3 { + padding-top: var(--bui-space-3); + } + .bui-pt-4 { + padding-top: var(--bui-space-4); + } + .bui-pt-5 { + padding-top: var(--bui-space-5); + } + .bui-pt-6 { + padding-top: var(--bui-space-6); + } + .bui-pt-7 { + padding-top: var(--bui-space-7); + } + .bui-pt-8 { + padding-top: var(--bui-space-8); + } + .bui-pt-9 { + padding-top: var(--bui-space-9); + } + .bui-pt-10 { + padding-top: var(--bui-space-10); + } + .bui-pt-11 { + padding-top: var(--bui-space-11); + } + .bui-pt-12 { + padding-top: var(--bui-space-12); + } + .bui-pt-13 { + padding-top: var(--bui-space-13); + } + .bui-pt-14 { + padding-top: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-pt { + padding-top: var(--pt-xs); + } + .xs\:bui-pt-0\.5 { + padding-top: var(--bui-space-0_5); + } + .xs\:bui-pt-1 { + padding-top: var(--bui-space-1); + } + .xs\:bui-pt-1\.5 { + padding-top: var(--bui-space-1_5); + } + .xs\:bui-pt-2 { + padding-top: var(--bui-space-2); + } + .xs\:bui-pt-3 { + padding-top: var(--bui-space-3); + } + .xs\:bui-pt-4 { + padding-top: var(--bui-space-4); + } + .xs\:bui-pt-5 { + padding-top: var(--bui-space-5); + } + .xs\:bui-pt-6 { + padding-top: var(--bui-space-6); + } + .xs\:bui-pt-7 { + padding-top: var(--bui-space-7); + } + .xs\:bui-pt-8 { + padding-top: var(--bui-space-8); + } + .xs\:bui-pt-9 { + padding-top: var(--bui-space-9); + } + .xs\:bui-pt-10 { + padding-top: var(--bui-space-10); + } + .xs\:bui-pt-11 { + padding-top: var(--bui-space-11); + } + .xs\:bui-pt-12 { + padding-top: var(--bui-space-12); + } + .xs\:bui-pt-13 { + padding-top: var(--bui-space-13); + } + .xs\:bui-pt-14 { + padding-top: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-pt { + padding-top: var(--pt-sm); + } + .sm\:bui-pt-0\.5 { + padding-top: var(--bui-space-0_5); + } + .sm\:bui-pt-1 { + padding-top: var(--bui-space-1); + } + .sm\:bui-pt-1\.5 { + padding-top: var(--bui-space-1_5); + } + .sm\:bui-pt-2 { + padding-top: var(--bui-space-2); + } + .sm\:bui-pt-3 { + padding-top: var(--bui-space-3); + } + .sm\:bui-pt-4 { + padding-top: var(--bui-space-4); + } + .sm\:bui-pt-5 { + padding-top: var(--bui-space-5); + } + .sm\:bui-pt-6 { + padding-top: var(--bui-space-6); + } + .sm\:bui-pt-7 { + padding-top: var(--bui-space-7); + } + .sm\:bui-pt-8 { + padding-top: var(--bui-space-8); + } + .sm\:bui-pt-9 { + padding-top: var(--bui-space-9); + } + .sm\:bui-pt-10 { + padding-top: var(--bui-space-10); + } + .sm\:bui-pt-11 { + padding-top: var(--bui-space-11); + } + .sm\:bui-pt-12 { + padding-top: var(--bui-space-12); + } + .sm\:bui-pt-13 { + padding-top: var(--bui-space-13); + } + .sm\:bui-pt-14 { + padding-top: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-pt { + padding-top: var(--pt-md); + } + .md\:bui-pt-0\.5 { + padding-top: var(--bui-space-0_5); + } + .md\:bui-pt-1 { + padding-top: var(--bui-space-1); + } + .md\:bui-pt-1\.5 { + padding-top: var(--bui-space-1_5); + } + .md\:bui-pt-2 { + padding-top: var(--bui-space-2); + } + .md\:bui-pt-3 { + padding-top: var(--bui-space-3); + } + .md\:bui-pt-4 { + padding-top: var(--bui-space-4); + } + .md\:bui-pt-5 { + padding-top: var(--bui-space-5); + } + .md\:bui-pt-6 { + padding-top: var(--bui-space-6); + } + .md\:bui-pt-7 { + padding-top: var(--bui-space-7); + } + .md\:bui-pt-8 { + padding-top: var(--bui-space-8); + } + .md\:bui-pt-9 { + padding-top: var(--bui-space-9); + } + .md\:bui-pt-10 { + padding-top: var(--bui-space-10); + } + .md\:bui-pt-11 { + padding-top: var(--bui-space-11); + } + .md\:bui-pt-12 { + padding-top: var(--bui-space-12); + } + .md\:bui-pt-13 { + padding-top: var(--bui-space-13); + } + .md\:bui-pt-14 { + padding-top: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-pt { + padding-top: var(--pt-lg); + } + .lg\:bui-pt-0\.5 { + padding-top: var(--bui-space-0_5); + } + .lg\:bui-pt-1 { + padding-top: var(--bui-space-1); + } + .lg\:bui-pt-1\.5 { + padding-top: var(--bui-space-1_5); + } + .lg\:bui-pt-2 { + padding-top: var(--bui-space-2); + } + .lg\:bui-pt-3 { + padding-top: var(--bui-space-3); + } + .lg\:bui-pt-4 { + padding-top: var(--bui-space-4); + } + .lg\:bui-pt-5 { + padding-top: var(--bui-space-5); + } + .lg\:bui-pt-6 { + padding-top: var(--bui-space-6); + } + .lg\:bui-pt-7 { + padding-top: var(--bui-space-7); + } + .lg\:bui-pt-8 { + padding-top: var(--bui-space-8); + } + .lg\:bui-pt-9 { + padding-top: var(--bui-space-9); + } + .lg\:bui-pt-10 { + padding-top: var(--bui-space-10); + } + .lg\:bui-pt-11 { + padding-top: var(--bui-space-11); + } + .lg\:bui-pt-12 { + padding-top: var(--bui-space-12); + } + .lg\:bui-pt-13 { + padding-top: var(--bui-space-13); + } + .lg\:bui-pt-14 { + padding-top: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-pt { + padding-top: var(--pt-xl); + } + .xl\:bui-pt-0\.5 { + padding-top: var(--bui-space-0_5); + } + .xl\:bui-pt-1 { + padding-top: var(--bui-space-1); + } + .xl\:bui-pt-1\.5 { + padding-top: var(--bui-space-1_5); + } + .xl\:bui-pt-2 { + padding-top: var(--bui-space-2); + } + .xl\:bui-pt-3 { + padding-top: var(--bui-space-3); + } + .xl\:bui-pt-4 { + padding-top: var(--bui-space-4); + } + .xl\:bui-pt-5 { + padding-top: var(--bui-space-5); + } + .xl\:bui-pt-6 { + padding-top: var(--bui-space-6); + } + .xl\:bui-pt-7 { + padding-top: var(--bui-space-7); + } + .xl\:bui-pt-8 { + padding-top: var(--bui-space-8); + } + .xl\:bui-pt-9 { + padding-top: var(--bui-space-9); + } + .xl\:bui-pt-10 { + padding-top: var(--bui-space-10); + } + .xl\:bui-pt-11 { + padding-top: var(--bui-space-11); + } + .xl\:bui-pt-12 { + padding-top: var(--bui-space-12); + } + .xl\:bui-pt-13 { + padding-top: var(--bui-space-13); + } + .xl\:bui-pt-14 { + padding-top: var(--bui-space-14); + } + } + .bui-pb { + padding-bottom: var(--pb); + } + .bui-pb-0\.5 { + padding-bottom: var(--bui-space-0_5); + } + .bui-pb-1 { + padding-bottom: var(--bui-space-1); + } + .bui-pb-1\.5 { + padding-bottom: var(--bui-space-1_5); + } + .bui-pb-2 { + padding-bottom: var(--bui-space-2); + } + .bui-pb-3 { + padding-bottom: var(--bui-space-3); + } + .bui-pb-4 { + padding-bottom: var(--bui-space-4); + } + .bui-pb-5 { + padding-bottom: var(--bui-space-5); + } + .bui-pb-6 { + padding-bottom: var(--bui-space-6); + } + .bui-pb-7 { + padding-bottom: var(--bui-space-7); + } + .bui-pb-8 { + padding-bottom: var(--bui-space-8); + } + .bui-pb-9 { + padding-bottom: var(--bui-space-9); + } + .bui-pb-10 { + padding-bottom: var(--bui-space-10); + } + .bui-pb-11 { + padding-bottom: var(--bui-space-11); + } + .bui-pb-12 { + padding-bottom: var(--bui-space-12); + } + .bui-pb-13 { + padding-bottom: var(--bui-space-13); + } + .bui-pb-14 { + padding-bottom: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-pb { + padding-bottom: var(--pb-xs); + } + .xs\:bui-pb-0\.5 { + padding-bottom: var(--bui-space-0_5); + } + .xs\:bui-pb-1 { + padding-bottom: var(--bui-space-1); + } + .xs\:bui-pb-1\.5 { + padding-bottom: var(--bui-space-1_5); + } + .xs\:bui-pb-2 { + padding-bottom: var(--bui-space-2); + } + .xs\:bui-pb-3 { + padding-bottom: var(--bui-space-3); + } + .xs\:bui-pb-4 { + padding-bottom: var(--bui-space-4); + } + .xs\:bui-pb-5 { + padding-bottom: var(--bui-space-5); + } + .xs\:bui-pb-6 { + padding-bottom: var(--bui-space-6); + } + .xs\:bui-pb-7 { + padding-bottom: var(--bui-space-7); + } + .xs\:bui-pb-8 { + padding-bottom: var(--bui-space-8); + } + .xs\:bui-pb-9 { + padding-bottom: var(--bui-space-9); + } + .xs\:bui-pb-10 { + padding-bottom: var(--bui-space-10); + } + .xs\:bui-pb-11 { + padding-bottom: var(--bui-space-11); + } + .xs\:bui-pb-12 { + padding-bottom: var(--bui-space-12); + } + .xs\:bui-pb-13 { + padding-bottom: var(--bui-space-13); + } + .xs\:bui-pb-14 { + padding-bottom: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-pb { + padding-bottom: var(--pb-sm); + } + .sm\:bui-pb-0\.5 { + padding-bottom: var(--bui-space-0_5); + } + .sm\:bui-pb-1 { + padding-bottom: var(--bui-space-1); + } + .sm\:bui-pb-1\.5 { + padding-bottom: var(--bui-space-1_5); + } + .sm\:bui-pb-2 { + padding-bottom: var(--bui-space-2); + } + .sm\:bui-pb-3 { + padding-bottom: var(--bui-space-3); + } + .sm\:bui-pb-4 { + padding-bottom: var(--bui-space-4); + } + .sm\:bui-pb-5 { + padding-bottom: var(--bui-space-5); + } + .sm\:bui-pb-6 { + padding-bottom: var(--bui-space-6); + } + .sm\:bui-pb-7 { + padding-bottom: var(--bui-space-7); + } + .sm\:bui-pb-8 { + padding-bottom: var(--bui-space-8); + } + .sm\:bui-pb-9 { + padding-bottom: var(--bui-space-9); + } + .sm\:bui-pb-10 { + padding-bottom: var(--bui-space-10); + } + .sm\:bui-pb-11 { + padding-bottom: var(--bui-space-11); + } + .sm\:bui-pb-12 { + padding-bottom: var(--bui-space-12); + } + .sm\:bui-pb-13 { + padding-bottom: var(--bui-space-13); + } + .sm\:bui-pb-14 { + padding-bottom: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-pb { + padding-bottom: var(--pb-md); + } + .md\:bui-pb-0\.5 { + padding-bottom: var(--bui-space-0_5); + } + .md\:bui-pb-1 { + padding-bottom: var(--bui-space-1); + } + .md\:bui-pb-1\.5 { + padding-bottom: var(--bui-space-1_5); + } + .md\:bui-pb-2 { + padding-bottom: var(--bui-space-2); + } + .md\:bui-pb-3 { + padding-bottom: var(--bui-space-3); + } + .md\:bui-pb-4 { + padding-bottom: var(--bui-space-4); + } + .md\:bui-pb-5 { + padding-bottom: var(--bui-space-5); + } + .md\:bui-pb-6 { + padding-bottom: var(--bui-space-6); + } + .md\:bui-pb-7 { + padding-bottom: var(--bui-space-7); + } + .md\:bui-pb-8 { + padding-bottom: var(--bui-space-8); + } + .md\:bui-pb-9 { + padding-bottom: var(--bui-space-9); + } + .md\:bui-pb-10 { + padding-bottom: var(--bui-space-10); + } + .md\:bui-pb-11 { + padding-bottom: var(--bui-space-11); + } + .md\:bui-pb-12 { + padding-bottom: var(--bui-space-12); + } + .md\:bui-pb-13 { + padding-bottom: var(--bui-space-13); + } + .md\:bui-pb-14 { + padding-bottom: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-pb { + padding-bottom: var(--pb-lg); + } + .lg\:bui-pb-0\.5 { + padding-bottom: var(--bui-space-0_5); + } + .lg\:bui-pb-1 { + padding-bottom: var(--bui-space-1); + } + .lg\:bui-pb-1\.5 { + padding-bottom: var(--bui-space-1_5); + } + .lg\:bui-pb-2 { + padding-bottom: var(--bui-space-2); + } + .lg\:bui-pb-3 { + padding-bottom: var(--bui-space-3); + } + .lg\:bui-pb-4 { + padding-bottom: var(--bui-space-4); + } + .lg\:bui-pb-5 { + padding-bottom: var(--bui-space-5); + } + .lg\:bui-pb-6 { + padding-bottom: var(--bui-space-6); + } + .lg\:bui-pb-7 { + padding-bottom: var(--bui-space-7); + } + .lg\:bui-pb-8 { + padding-bottom: var(--bui-space-8); + } + .lg\:bui-pb-9 { + padding-bottom: var(--bui-space-9); + } + .lg\:bui-pb-10 { + padding-bottom: var(--bui-space-10); + } + .lg\:bui-pb-11 { + padding-bottom: var(--bui-space-11); + } + .lg\:bui-pb-12 { + padding-bottom: var(--bui-space-12); + } + .lg\:bui-pb-13 { + padding-bottom: var(--bui-space-13); + } + .lg\:bui-pb-14 { + padding-bottom: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-pb { + padding-bottom: var(--pb-xl); + } + .xl\:bui-pb-0\.5 { + padding-bottom: var(--bui-space-0_5); + } + .xl\:bui-pb-1 { + padding-bottom: var(--bui-space-1); + } + .xl\:bui-pb-1\.5 { + padding-bottom: var(--bui-space-1_5); + } + .xl\:bui-pb-2 { + padding-bottom: var(--bui-space-2); + } + .xl\:bui-pb-3 { + padding-bottom: var(--bui-space-3); + } + .xl\:bui-pb-4 { + padding-bottom: var(--bui-space-4); + } + .xl\:bui-pb-5 { + padding-bottom: var(--bui-space-5); + } + .xl\:bui-pb-6 { + padding-bottom: var(--bui-space-6); + } + .xl\:bui-pb-7 { + padding-bottom: var(--bui-space-7); + } + .xl\:bui-pb-8 { + padding-bottom: var(--bui-space-8); + } + .xl\:bui-pb-9 { + padding-bottom: var(--bui-space-9); + } + .xl\:bui-pb-10 { + padding-bottom: var(--bui-space-10); + } + .xl\:bui-pb-11 { + padding-bottom: var(--bui-space-11); + } + .xl\:bui-pb-12 { + padding-bottom: var(--bui-space-12); + } + .xl\:bui-pb-13 { + padding-bottom: var(--bui-space-13); + } + .xl\:bui-pb-14 { + padding-bottom: var(--bui-space-14); + } + } + .bui-py { + padding-top: var(--py); + padding-bottom: var(--py); + } + .bui-py-0\.5 { + padding-top: var(--bui-space-0_5); + padding-bottom: var(--bui-space-0_5); + } + .bui-py-1 { + padding-top: var(--bui-space-1); + padding-bottom: var(--bui-space-1); + } + .bui-py-1\.5 { + padding-top: var(--bui-space-1_5); + padding-bottom: var(--bui-space-1_5); + } + .bui-py-2 { + padding-top: var(--bui-space-2); + padding-bottom: var(--bui-space-2); + } + .bui-py-3 { + padding-top: var(--bui-space-3); + padding-bottom: var(--bui-space-3); + } + .bui-py-4 { + padding-top: var(--bui-space-4); + padding-bottom: var(--bui-space-4); + } + .bui-py-5 { + padding-top: var(--bui-space-5); + padding-bottom: var(--bui-space-5); + } + .bui-py-6 { + padding-top: var(--bui-space-6); + padding-bottom: var(--bui-space-6); + } + .bui-py-7 { + padding-top: var(--bui-space-7); + padding-bottom: var(--bui-space-7); + } + .bui-py-8 { + padding-top: var(--bui-space-8); + padding-bottom: var(--bui-space-8); + } + .bui-py-9 { + padding-top: var(--bui-space-9); + padding-bottom: var(--bui-space-9); + } + .bui-py-10 { + padding-top: var(--bui-space-10); + padding-bottom: var(--bui-space-10); + } + .bui-py-11 { + padding-top: var(--bui-space-11); + padding-bottom: var(--bui-space-11); + } + .bui-py-12 { + padding-top: var(--bui-space-12); + padding-bottom: var(--bui-space-12); + } + .bui-py-13 { + padding-top: var(--bui-space-13); + padding-bottom: var(--bui-space-13); + } + .bui-py-14 { + padding-top: var(--bui-space-14); + padding-bottom: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-py { + padding-top: var(--py-xs); + padding-bottom: var(--py-xs); + } + .xs\:bui-py-0\.5 { + padding-top: var(--bui-space-0_5); + padding-bottom: var(--bui-space-0_5); + } + .xs\:bui-py-1 { + padding-top: var(--bui-space-1); + padding-bottom: var(--bui-space-1); + } + .xs\:bui-py-1\.5 { + padding-top: var(--bui-space-1_5); + padding-bottom: var(--bui-space-1_5); + } + .xs\:bui-py-2 { + padding-top: var(--bui-space-2); + padding-bottom: var(--bui-space-2); + } + .xs\:bui-py-3 { + padding-top: var(--bui-space-3); + padding-bottom: var(--bui-space-3); + } + .xs\:bui-py-4 { + padding-top: var(--bui-space-4); + padding-bottom: var(--bui-space-4); + } + .xs\:bui-py-5 { + padding-top: var(--bui-space-5); + padding-bottom: var(--bui-space-5); + } + .xs\:bui-py-6 { + padding-top: var(--bui-space-6); + padding-bottom: var(--bui-space-6); + } + .xs\:bui-py-7 { + padding-top: var(--bui-space-7); + padding-bottom: var(--bui-space-7); + } + .xs\:bui-py-8 { + padding-top: var(--bui-space-8); + padding-bottom: var(--bui-space-8); + } + .xs\:bui-py-9 { + padding-top: var(--bui-space-9); + padding-bottom: var(--bui-space-9); + } + .xs\:bui-py-10 { + padding-top: var(--bui-space-10); + padding-bottom: var(--bui-space-10); + } + .xs\:bui-py-11 { + padding-top: var(--bui-space-11); + padding-bottom: var(--bui-space-11); + } + .xs\:bui-py-12 { + padding-top: var(--bui-space-12); + padding-bottom: var(--bui-space-12); + } + .xs\:bui-py-13 { + padding-top: var(--bui-space-13); + padding-bottom: var(--bui-space-13); + } + .xs\:bui-py-14 { + padding-top: var(--bui-space-14); + padding-bottom: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-py { + padding-top: var(--py-sm); + padding-bottom: var(--py-sm); + } + .sm\:bui-py-0\.5 { + padding-top: var(--bui-space-0_5); + padding-bottom: var(--bui-space-0_5); + } + .sm\:bui-py-1 { + padding-top: var(--bui-space-1); + padding-bottom: var(--bui-space-1); + } + .sm\:bui-py-1\.5 { + padding-top: var(--bui-space-1_5); + padding-bottom: var(--bui-space-1_5); + } + .sm\:bui-py-2 { + padding-top: var(--bui-space-2); + padding-bottom: var(--bui-space-2); + } + .sm\:bui-py-3 { + padding-top: var(--bui-space-3); + padding-bottom: var(--bui-space-3); + } + .sm\:bui-py-4 { + padding-top: var(--bui-space-4); + padding-bottom: var(--bui-space-4); + } + .sm\:bui-py-5 { + padding-top: var(--bui-space-5); + padding-bottom: var(--bui-space-5); + } + .sm\:bui-py-6 { + padding-top: var(--bui-space-6); + padding-bottom: var(--bui-space-6); + } + .sm\:bui-py-7 { + padding-top: var(--bui-space-7); + padding-bottom: var(--bui-space-7); + } + .sm\:bui-py-8 { + padding-top: var(--bui-space-8); + padding-bottom: var(--bui-space-8); + } + .sm\:bui-py-9 { + padding-top: var(--bui-space-9); + padding-bottom: var(--bui-space-9); + } + .sm\:bui-py-10 { + padding-top: var(--bui-space-10); + padding-bottom: var(--bui-space-10); + } + .sm\:bui-py-11 { + padding-top: var(--bui-space-11); + padding-bottom: var(--bui-space-11); + } + .sm\:bui-py-12 { + padding-top: var(--bui-space-12); + padding-bottom: var(--bui-space-12); + } + .sm\:bui-py-13 { + padding-top: var(--bui-space-13); + padding-bottom: var(--bui-space-13); + } + .sm\:bui-py-14 { + padding-top: var(--bui-space-14); + padding-bottom: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-py { + padding-top: var(--py-md); + padding-bottom: var(--py-md); + } + .md\:bui-py-0\.5 { + padding-top: var(--bui-space-0_5); + padding-bottom: var(--bui-space-0_5); + } + .md\:bui-py-1 { + padding-top: var(--bui-space-1); + padding-bottom: var(--bui-space-1); + } + .md\:bui-py-1\.5 { + padding-top: var(--bui-space-1_5); + padding-bottom: var(--bui-space-1_5); + } + .md\:bui-py-2 { + padding-top: var(--bui-space-2); + padding-bottom: var(--bui-space-2); + } + .md\:bui-py-3 { + padding-top: var(--bui-space-3); + padding-bottom: var(--bui-space-3); + } + .md\:bui-py-4 { + padding-top: var(--bui-space-4); + padding-bottom: var(--bui-space-4); + } + .md\:bui-py-5 { + padding-top: var(--bui-space-5); + padding-bottom: var(--bui-space-5); + } + .md\:bui-py-6 { + padding-top: var(--bui-space-6); + padding-bottom: var(--bui-space-6); + } + .md\:bui-py-7 { + padding-top: var(--bui-space-7); + padding-bottom: var(--bui-space-7); + } + .md\:bui-py-8 { + padding-top: var(--bui-space-8); + padding-bottom: var(--bui-space-8); + } + .md\:bui-py-9 { + padding-top: var(--bui-space-9); + padding-bottom: var(--bui-space-9); + } + .md\:bui-py-10 { + padding-top: var(--bui-space-10); + padding-bottom: var(--bui-space-10); + } + .md\:bui-py-11 { + padding-top: var(--bui-space-11); + padding-bottom: var(--bui-space-11); + } + .md\:bui-py-12 { + padding-top: var(--bui-space-12); + padding-bottom: var(--bui-space-12); + } + .md\:bui-py-13 { + padding-top: var(--bui-space-13); + padding-bottom: var(--bui-space-13); + } + .md\:bui-py-14 { + padding-top: var(--bui-space-14); + padding-bottom: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-py { + padding-top: var(--py-lg); + padding-bottom: var(--py-lg); + } + .lg\:bui-py-0\.5 { + padding-top: var(--bui-space-0_5); + padding-bottom: var(--bui-space-0_5); + } + .lg\:bui-py-1 { + padding-top: var(--bui-space-1); + padding-bottom: var(--bui-space-1); + } + .lg\:bui-py-1\.5 { + padding-top: var(--bui-space-1_5); + padding-bottom: var(--bui-space-1_5); + } + .lg\:bui-py-2 { + padding-top: var(--bui-space-2); + padding-bottom: var(--bui-space-2); + } + .lg\:bui-py-3 { + padding-top: var(--bui-space-3); + padding-bottom: var(--bui-space-3); + } + .lg\:bui-py-4 { + padding-top: var(--bui-space-4); + padding-bottom: var(--bui-space-4); + } + .lg\:bui-py-5 { + padding-top: var(--bui-space-5); + padding-bottom: var(--bui-space-5); + } + .lg\:bui-py-6 { + padding-top: var(--bui-space-6); + padding-bottom: var(--bui-space-6); + } + .lg\:bui-py-7 { + padding-top: var(--bui-space-7); + padding-bottom: var(--bui-space-7); + } + .lg\:bui-py-8 { + padding-top: var(--bui-space-8); + padding-bottom: var(--bui-space-8); + } + .lg\:bui-py-9 { + padding-top: var(--bui-space-9); + padding-bottom: var(--bui-space-9); + } + .lg\:bui-py-10 { + padding-top: var(--bui-space-10); + padding-bottom: var(--bui-space-10); + } + .lg\:bui-py-11 { + padding-top: var(--bui-space-11); + padding-bottom: var(--bui-space-11); + } + .lg\:bui-py-12 { + padding-top: var(--bui-space-12); + padding-bottom: var(--bui-space-12); + } + .lg\:bui-py-13 { + padding-top: var(--bui-space-13); + padding-bottom: var(--bui-space-13); + } + .lg\:bui-py-14 { + padding-top: var(--bui-space-14); + padding-bottom: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-py { + padding-top: var(--py-xl); + padding-bottom: var(--py-xl); + } + .xl\:bui-py-0\.5 { + padding-top: var(--bui-space-0_5); + padding-bottom: var(--bui-space-0_5); + } + .xl\:bui-py-1 { + padding-top: var(--bui-space-1); + padding-bottom: var(--bui-space-1); + } + .xl\:bui-py-1\.5 { + padding-top: var(--bui-space-1_5); + padding-bottom: var(--bui-space-1_5); + } + .xl\:bui-py-2 { + padding-top: var(--bui-space-2); + padding-bottom: var(--bui-space-2); + } + .xl\:bui-py-3 { + padding-top: var(--bui-space-3); + padding-bottom: var(--bui-space-3); + } + .xl\:bui-py-4 { + padding-top: var(--bui-space-4); + padding-bottom: var(--bui-space-4); + } + .xl\:bui-py-5 { + padding-top: var(--bui-space-5); + padding-bottom: var(--bui-space-5); + } + .xl\:bui-py-6 { + padding-top: var(--bui-space-6); + padding-bottom: var(--bui-space-6); + } + .xl\:bui-py-7 { + padding-top: var(--bui-space-7); + padding-bottom: var(--bui-space-7); + } + .xl\:bui-py-8 { + padding-top: var(--bui-space-8); + padding-bottom: var(--bui-space-8); + } + .xl\:bui-py-9 { + padding-top: var(--bui-space-9); + padding-bottom: var(--bui-space-9); + } + .xl\:bui-py-10 { + padding-top: var(--bui-space-10); + padding-bottom: var(--bui-space-10); + } + .xl\:bui-py-11 { + padding-top: var(--bui-space-11); + padding-bottom: var(--bui-space-11); + } + .xl\:bui-py-12 { + padding-top: var(--bui-space-12); + padding-bottom: var(--bui-space-12); + } + .xl\:bui-py-13 { + padding-top: var(--bui-space-13); + padding-bottom: var(--bui-space-13); + } + .xl\:bui-py-14 { + padding-top: var(--bui-space-14); + padding-bottom: var(--bui-space-14); + } + } + .bui-px { + padding-left: var(--px); + padding-right: var(--px); + } + .bui-px-0\.5 { + padding-left: var(--bui-space-0_5); + padding-right: var(--bui-space-0_5); + } + .bui-px-1 { + padding-left: var(--bui-space-1); + padding-right: var(--bui-space-1); + } + .bui-px-1\.5 { + padding-left: var(--bui-space-1_5); + padding-right: var(--bui-space-1_5); + } + .bui-px-2 { + padding-left: var(--bui-space-2); + padding-right: var(--bui-space-2); + } + .bui-px-3 { + padding-left: var(--bui-space-3); + padding-right: var(--bui-space-3); + } + .bui-px-4 { + padding-left: var(--bui-space-4); + padding-right: var(--bui-space-4); + } + .bui-px-5 { + padding-left: var(--bui-space-5); + padding-right: var(--bui-space-5); + } + .bui-px-6 { + padding-left: var(--bui-space-6); + padding-right: var(--bui-space-6); + } + .bui-px-7 { + padding-left: var(--bui-space-7); + padding-right: var(--bui-space-7); + } + .bui-px-8 { + padding-left: var(--bui-space-8); + padding-right: var(--bui-space-8); + } + .bui-px-9 { + padding-left: var(--bui-space-9); + padding-right: var(--bui-space-9); + } + .bui-px-10 { + padding-left: var(--bui-space-10); + padding-right: var(--bui-space-10); + } + .bui-px-11 { + padding-left: var(--bui-space-11); + padding-right: var(--bui-space-11); + } + .bui-px-12 { + padding-left: var(--bui-space-12); + padding-right: var(--bui-space-12); + } + .bui-px-13 { + padding-left: var(--bui-space-13); + padding-right: var(--bui-space-13); + } + .bui-px-14 { + padding-left: var(--bui-space-14); + padding-right: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-px { + padding-left: var(--px-xs); + padding-right: var(--px-xs); + } + .xs\:bui-px-0\.5 { + padding-left: var(--bui-space-0_5); + padding-right: var(--bui-space-0_5); + } + .xs\:bui-px-1 { + padding-left: var(--bui-space-1); + padding-right: var(--bui-space-1); + } + .xs\:bui-px-1\.5 { + padding-left: var(--bui-space-1_5); + padding-right: var(--bui-space-1_5); + } + .xs\:bui-px-2 { + padding-left: var(--bui-space-2); + padding-right: var(--bui-space-2); + } + .xs\:bui-px-3 { + padding-left: var(--bui-space-3); + padding-right: var(--bui-space-3); + } + .xs\:bui-px-4 { + padding-left: var(--bui-space-4); + padding-right: var(--bui-space-4); + } + .xs\:bui-px-5 { + padding-left: var(--bui-space-5); + padding-right: var(--bui-space-5); + } + .xs\:bui-px-6 { + padding-left: var(--bui-space-6); + padding-right: var(--bui-space-6); + } + .xs\:bui-px-7 { + padding-left: var(--bui-space-7); + padding-right: var(--bui-space-7); + } + .xs\:bui-px-8 { + padding-left: var(--bui-space-8); + padding-right: var(--bui-space-8); + } + .xs\:bui-px-9 { + padding-left: var(--bui-space-9); + padding-right: var(--bui-space-9); + } + .xs\:bui-px-10 { + padding-left: var(--bui-space-10); + padding-right: var(--bui-space-10); + } + .xs\:bui-px-11 { + padding-left: var(--bui-space-11); + padding-right: var(--bui-space-11); + } + .xs\:bui-px-12 { + padding-left: var(--bui-space-12); + padding-right: var(--bui-space-12); + } + .xs\:bui-px-13 { + padding-left: var(--bui-space-13); + padding-right: var(--bui-space-13); + } + .xs\:bui-px-14 { + padding-left: var(--bui-space-14); + padding-right: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-px { + padding-left: var(--px-sm); + padding-right: var(--px-sm); + } + .sm\:bui-px-0\.5 { + padding-left: var(--bui-space-0_5); + padding-right: var(--bui-space-0_5); + } + .sm\:bui-px-1 { + padding-left: var(--bui-space-1); + padding-right: var(--bui-space-1); + } + .sm\:bui-px-1\.5 { + padding-left: var(--bui-space-1_5); + padding-right: var(--bui-space-1_5); + } + .sm\:bui-px-2 { + padding-left: var(--bui-space-2); + padding-right: var(--bui-space-2); + } + .sm\:bui-px-3 { + padding-left: var(--bui-space-3); + padding-right: var(--bui-space-3); + } + .sm\:bui-px-4 { + padding-left: var(--bui-space-4); + padding-right: var(--bui-space-4); + } + .sm\:bui-px-5 { + padding-left: var(--bui-space-5); + padding-right: var(--bui-space-5); + } + .sm\:bui-px-6 { + padding-left: var(--bui-space-6); + padding-right: var(--bui-space-6); + } + .sm\:bui-px-7 { + padding-left: var(--bui-space-7); + padding-right: var(--bui-space-7); + } + .sm\:bui-px-8 { + padding-left: var(--bui-space-8); + padding-right: var(--bui-space-8); + } + .sm\:bui-px-9 { + padding-left: var(--bui-space-9); + padding-right: var(--bui-space-9); + } + .sm\:bui-px-10 { + padding-left: var(--bui-space-10); + padding-right: var(--bui-space-10); + } + .sm\:bui-px-11 { + padding-left: var(--bui-space-11); + padding-right: var(--bui-space-11); + } + .sm\:bui-px-12 { + padding-left: var(--bui-space-12); + padding-right: var(--bui-space-12); + } + .sm\:bui-px-13 { + padding-left: var(--bui-space-13); + padding-right: var(--bui-space-13); + } + .sm\:bui-px-14 { + padding-left: var(--bui-space-14); + padding-right: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-px { + padding-left: var(--px-md); + padding-right: var(--px-md); + } + .md\:bui-px-0\.5 { + padding-left: var(--bui-space-0_5); + padding-right: var(--bui-space-0_5); + } + .md\:bui-px-1 { + padding-left: var(--bui-space-1); + padding-right: var(--bui-space-1); + } + .md\:bui-px-1\.5 { + padding-left: var(--bui-space-1_5); + padding-right: var(--bui-space-1_5); + } + .md\:bui-px-2 { + padding-left: var(--bui-space-2); + padding-right: var(--bui-space-2); + } + .md\:bui-px-3 { + padding-left: var(--bui-space-3); + padding-right: var(--bui-space-3); + } + .md\:bui-px-4 { + padding-left: var(--bui-space-4); + padding-right: var(--bui-space-4); + } + .md\:bui-px-5 { + padding-left: var(--bui-space-5); + padding-right: var(--bui-space-5); + } + .md\:bui-px-6 { + padding-left: var(--bui-space-6); + padding-right: var(--bui-space-6); + } + .md\:bui-px-7 { + padding-left: var(--bui-space-7); + padding-right: var(--bui-space-7); + } + .md\:bui-px-8 { + padding-left: var(--bui-space-8); + padding-right: var(--bui-space-8); + } + .md\:bui-px-9 { + padding-left: var(--bui-space-9); + padding-right: var(--bui-space-9); + } + .md\:bui-px-10 { + padding-left: var(--bui-space-10); + padding-right: var(--bui-space-10); + } + .md\:bui-px-11 { + padding-left: var(--bui-space-11); + padding-right: var(--bui-space-11); + } + .md\:bui-px-12 { + padding-left: var(--bui-space-12); + padding-right: var(--bui-space-12); + } + .md\:bui-px-13 { + padding-left: var(--bui-space-13); + padding-right: var(--bui-space-13); + } + .md\:bui-px-14 { + padding-left: var(--bui-space-14); + padding-right: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-px { + padding-left: var(--px-lg); + padding-right: var(--px-lg); + } + .lg\:bui-px-0\.5 { + padding-left: var(--bui-space-0_5); + padding-right: var(--bui-space-0_5); + } + .lg\:bui-px-1 { + padding-left: var(--bui-space-1); + padding-right: var(--bui-space-1); + } + .lg\:bui-px-1\.5 { + padding-left: var(--bui-space-1_5); + padding-right: var(--bui-space-1_5); + } + .lg\:bui-px-2 { + padding-left: var(--bui-space-2); + padding-right: var(--bui-space-2); + } + .lg\:bui-px-3 { + padding-left: var(--bui-space-3); + padding-right: var(--bui-space-3); + } + .lg\:bui-px-4 { + padding-left: var(--bui-space-4); + padding-right: var(--bui-space-4); + } + .lg\:bui-px-5 { + padding-left: var(--bui-space-5); + padding-right: var(--bui-space-5); + } + .lg\:bui-px-6 { + padding-left: var(--bui-space-6); + padding-right: var(--bui-space-6); + } + .lg\:bui-px-7 { + padding-left: var(--bui-space-7); + padding-right: var(--bui-space-7); + } + .lg\:bui-px-8 { + padding-left: var(--bui-space-8); + padding-right: var(--bui-space-8); + } + .lg\:bui-px-9 { + padding-left: var(--bui-space-9); + padding-right: var(--bui-space-9); + } + .lg\:bui-px-10 { + padding-left: var(--bui-space-10); + padding-right: var(--bui-space-10); + } + .lg\:bui-px-11 { + padding-left: var(--bui-space-11); + padding-right: var(--bui-space-11); + } + .lg\:bui-px-12 { + padding-left: var(--bui-space-12); + padding-right: var(--bui-space-12); + } + .lg\:bui-px-13 { + padding-left: var(--bui-space-13); + padding-right: var(--bui-space-13); + } + .lg\:bui-px-14 { + padding-left: var(--bui-space-14); + padding-right: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-px { + padding-left: var(--px-xl); + padding-right: var(--px-xl); + } + .xl\:bui-px-0\.5 { + padding-left: var(--bui-space-0_5); + padding-right: var(--bui-space-0_5); + } + .xl\:bui-px-1 { + padding-left: var(--bui-space-1); + padding-right: var(--bui-space-1); + } + .xl\:bui-px-1\.5 { + padding-left: var(--bui-space-1_5); + padding-right: var(--bui-space-1_5); + } + .xl\:bui-px-2 { + padding-left: var(--bui-space-2); + padding-right: var(--bui-space-2); + } + .xl\:bui-px-3 { + padding-left: var(--bui-space-3); + padding-right: var(--bui-space-3); + } + .xl\:bui-px-4 { + padding-left: var(--bui-space-4); + padding-right: var(--bui-space-4); + } + .xl\:bui-px-5 { + padding-left: var(--bui-space-5); + padding-right: var(--bui-space-5); + } + .xl\:bui-px-6 { + padding-left: var(--bui-space-6); + padding-right: var(--bui-space-6); + } + .xl\:bui-px-7 { + padding-left: var(--bui-space-7); + padding-right: var(--bui-space-7); + } + .xl\:bui-px-8 { + padding-left: var(--bui-space-8); + padding-right: var(--bui-space-8); + } + .xl\:bui-px-9 { + padding-left: var(--bui-space-9); + padding-right: var(--bui-space-9); + } + .xl\:bui-px-10 { + padding-left: var(--bui-space-10); + padding-right: var(--bui-space-10); + } + .xl\:bui-px-11 { + padding-left: var(--bui-space-11); + padding-right: var(--bui-space-11); + } + .xl\:bui-px-12 { + padding-left: var(--bui-space-12); + padding-right: var(--bui-space-12); + } + .xl\:bui-px-13 { + padding-left: var(--bui-space-13); + padding-right: var(--bui-space-13); + } + .xl\:bui-px-14 { + padding-left: var(--bui-space-14); + padding-right: var(--bui-space-14); + } + } + .bui-m { + margin: var(--m); + } + .bui-m-0\.5 { + margin: var(--bui-space-0_5); + } + .bui-m-1 { + margin: var(--bui-space-1); + } + .bui-m-1\.5 { + margin: var(--bui-space-1_5); + } + .bui-m-2 { + margin: var(--bui-space-2); + } + .bui-m-3 { + margin: var(--bui-space-3); + } + .bui-m-4 { + margin: var(--bui-space-4); + } + .bui-m-5 { + margin: var(--bui-space-5); + } + .bui-m-6 { + margin: var(--bui-space-6); + } + .bui-m-7 { + margin: var(--bui-space-7); + } + .bui-m-8 { + margin: var(--bui-space-8); + } + .bui-m-9 { + margin: var(--bui-space-9); + } + .bui-m-10 { + margin: var(--bui-space-10); + } + .bui-m-11 { + margin: var(--bui-space-11); + } + .bui-m-12 { + margin: var(--bui-space-12); + } + .bui-m-13 { + margin: var(--bui-space-13); + } + .bui-m-14 { + margin: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-m { + margin: var(--p-xs); + } + .xs\:bui-m-0\.5 { + margin: var(--bui-space-0_5); + } + .xs\:bui-m-1 { + margin: var(--bui-space-1); + } + .xs\:bui-m-1\.5 { + margin: var(--bui-space-1_5); + } + .xs\:bui-m-2 { + margin: var(--bui-space-2); + } + .xs\:bui-m-3 { + margin: var(--bui-space-3); + } + .xs\:bui-m-4 { + margin: var(--bui-space-4); + } + .xs\:bui-m-5 { + margin: var(--bui-space-5); + } + .xs\:bui-m-6 { + margin: var(--bui-space-6); + } + .xs\:bui-m-7 { + margin: var(--bui-space-7); + } + .xs\:bui-m-8 { + margin: var(--bui-space-8); + } + .xs\:bui-m-9 { + margin: var(--bui-space-9); + } + .xs\:bui-m-10 { + margin: var(--bui-space-10); + } + .xs\:bui-m-11 { + margin: var(--bui-space-11); + } + .xs\:bui-m-12 { + margin: var(--bui-space-12); + } + .xs\:bui-m-13 { + margin: var(--bui-space-13); + } + .xs\:bui-m-14 { + margin: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-m { + margin: var(--p-sm); + } + .sm\:bui-m-0\.5 { + margin: var(--bui-space-0_5); + } + .sm\:bui-m-1 { + margin: var(--bui-space-1); + } + .sm\:bui-m-1\.5 { + margin: var(--bui-space-1_5); + } + .sm\:bui-m-2 { + margin: var(--bui-space-2); + } + .sm\:bui-m-3 { + margin: var(--bui-space-3); + } + .sm\:bui-m-4 { + margin: var(--bui-space-4); + } + .sm\:bui-m-5 { + margin: var(--bui-space-5); + } + .sm\:bui-m-6 { + margin: var(--bui-space-6); + } + .sm\:bui-m-7 { + margin: var(--bui-space-7); + } + .sm\:bui-m-8 { + margin: var(--bui-space-8); + } + .sm\:bui-m-9 { + margin: var(--bui-space-9); + } + .sm\:bui-m-10 { + margin: var(--bui-space-10); + } + .sm\:bui-m-11 { + margin: var(--bui-space-11); + } + .sm\:bui-m-12 { + margin: var(--bui-space-12); + } + .sm\:bui-m-13 { + margin: var(--bui-space-13); + } + .sm\:bui-m-14 { + margin: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-m { + margin: var(--p-md); + } + .md\:bui-m-0\.5 { + margin: var(--bui-space-0_5); + } + .md\:bui-m-1 { + margin: var(--bui-space-1); + } + .md\:bui-m-1\.5 { + margin: var(--bui-space-1_5); + } + .md\:bui-m-2 { + margin: var(--bui-space-2); + } + .md\:bui-m-3 { + margin: var(--bui-space-3); + } + .md\:bui-m-4 { + margin: var(--bui-space-4); + } + .md\:bui-m-5 { + margin: var(--bui-space-5); + } + .md\:bui-m-6 { + margin: var(--bui-space-6); + } + .md\:bui-m-7 { + margin: var(--bui-space-7); + } + .md\:bui-m-8 { + margin: var(--bui-space-8); + } + .md\:bui-m-9 { + margin: var(--bui-space-9); + } + .md\:bui-m-10 { + margin: var(--bui-space-10); + } + .md\:bui-m-11 { + margin: var(--bui-space-11); + } + .md\:bui-m-12 { + margin: var(--bui-space-12); + } + .md\:bui-m-13 { + margin: var(--bui-space-13); + } + .md\:bui-m-14 { + margin: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-m { + margin: var(--p-lg); + } + .lg\:bui-m-0\.5 { + margin: var(--bui-space-0_5); + } + .lg\:bui-m-1 { + margin: var(--bui-space-1); + } + .lg\:bui-m-1\.5 { + margin: var(--bui-space-1_5); + } + .lg\:bui-m-2 { + margin: var(--bui-space-2); + } + .lg\:bui-m-3 { + margin: var(--bui-space-3); + } + .lg\:bui-m-4 { + margin: var(--bui-space-4); + } + .lg\:bui-m-5 { + margin: var(--bui-space-5); + } + .lg\:bui-m-6 { + margin: var(--bui-space-6); + } + .lg\:bui-m-7 { + margin: var(--bui-space-7); + } + .lg\:bui-m-8 { + margin: var(--bui-space-8); + } + .lg\:bui-m-9 { + margin: var(--bui-space-9); + } + .lg\:bui-m-10 { + margin: var(--bui-space-10); + } + .lg\:bui-m-11 { + margin: var(--bui-space-11); + } + .lg\:bui-m-12 { + margin: var(--bui-space-12); + } + .lg\:bui-m-13 { + margin: var(--bui-space-13); + } + .lg\:bui-m-14 { + margin: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-m { + margin: var(--p-xl); + } + .xl\:bui-m-0\.5 { + margin: var(--bui-space-0_5); + } + .xl\:bui-m-1 { + margin: var(--bui-space-1); + } + .xl\:bui-m-1\.5 { + margin: var(--bui-space-1_5); + } + .xl\:bui-m-2 { + margin: var(--bui-space-2); + } + .xl\:bui-m-3 { + margin: var(--bui-space-3); + } + .xl\:bui-m-4 { + margin: var(--bui-space-4); + } + .xl\:bui-m-5 { + margin: var(--bui-space-5); + } + .xl\:bui-m-6 { + margin: var(--bui-space-6); + } + .xl\:bui-m-7 { + margin: var(--bui-space-7); + } + .xl\:bui-m-8 { + margin: var(--bui-space-8); + } + .xl\:bui-m-9 { + margin: var(--bui-space-9); + } + .xl\:bui-m-10 { + margin: var(--bui-space-10); + } + .xl\:bui-m-11 { + margin: var(--bui-space-11); + } + .xl\:bui-m-12 { + margin: var(--bui-space-12); + } + .xl\:bui-m-13 { + margin: var(--bui-space-13); + } + .xl\:bui-m-14 { + margin: var(--bui-space-14); + } + } + .bui-ml { + margin-left: var(--ml); + } + .bui-ml-0\.5 { + margin-left: var(--bui-space-0_5); + } + .bui-ml-1 { + margin-left: var(--bui-space-1); + } + .bui-ml-1\.5 { + margin-left: var(--bui-space-1_5); + } + .bui-ml-2 { + margin-left: var(--bui-space-2); + } + .bui-ml-3 { + margin-left: var(--bui-space-3); + } + .bui-ml-4 { + margin-left: var(--bui-space-4); + } + .bui-ml-5 { + margin-left: var(--bui-space-5); + } + .bui-ml-6 { + margin-left: var(--bui-space-6); + } + .bui-ml-7 { + margin-left: var(--bui-space-7); + } + .bui-ml-8 { + margin-left: var(--bui-space-8); + } + .bui-ml-9 { + margin-left: var(--bui-space-9); + } + .bui-ml-10 { + margin-left: var(--bui-space-10); + } + .bui-ml-11 { + margin-left: var(--bui-space-11); + } + .bui-ml-12 { + margin-left: var(--bui-space-12); + } + .bui-ml-13 { + margin-left: var(--bui-space-13); + } + .bui-ml-14 { + margin-left: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-ml { + margin-left: var(--ml-xs); + } + .xs\:bui-ml-0\.5 { + margin-left: var(--bui-space-0_5); + } + .xs\:bui-ml-1 { + margin-left: var(--bui-space-1); + } + .xs\:bui-ml-1\.5 { + margin-left: var(--bui-space-1_5); + } + .xs\:bui-ml-2 { + margin-left: var(--bui-space-2); + } + .xs\:bui-ml-3 { + margin-left: var(--bui-space-3); + } + .xs\:bui-ml-4 { + margin-left: var(--bui-space-4); + } + .xs\:bui-ml-5 { + margin-left: var(--bui-space-5); + } + .xs\:bui-ml-6 { + margin-left: var(--bui-space-6); + } + .xs\:bui-ml-7 { + margin-left: var(--bui-space-7); + } + .xs\:bui-ml-8 { + margin-left: var(--bui-space-8); + } + .xs\:bui-ml-9 { + margin-left: var(--bui-space-9); + } + .xs\:bui-ml-10 { + margin-left: var(--bui-space-10); + } + .xs\:bui-ml-11 { + margin-left: var(--bui-space-11); + } + .xs\:bui-ml-12 { + margin-left: var(--bui-space-12); + } + .xs\:bui-ml-13 { + margin-left: var(--bui-space-13); + } + .xs\:bui-ml-14 { + margin-left: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-ml { + margin-left: var(--ml-sm); + } + .sm\:bui-ml-0\.5 { + margin-left: var(--bui-space-0_5); + } + .sm\:bui-ml-1 { + margin-left: var(--bui-space-1); + } + .sm\:bui-ml-1\.5 { + margin-left: var(--bui-space-1_5); + } + .sm\:bui-ml-2 { + margin-left: var(--bui-space-2); + } + .sm\:bui-ml-3 { + margin-left: var(--bui-space-3); + } + .sm\:bui-ml-4 { + margin-left: var(--bui-space-4); + } + .sm\:bui-ml-5 { + margin-left: var(--bui-space-5); + } + .sm\:bui-ml-6 { + margin-left: var(--bui-space-6); + } + .sm\:bui-ml-7 { + margin-left: var(--bui-space-7); + } + .sm\:bui-ml-8 { + margin-left: var(--bui-space-8); + } + .sm\:bui-ml-9 { + margin-left: var(--bui-space-9); + } + .sm\:bui-ml-10 { + margin-left: var(--bui-space-10); + } + .sm\:bui-ml-11 { + margin-left: var(--bui-space-11); + } + .sm\:bui-ml-12 { + margin-left: var(--bui-space-12); + } + .sm\:bui-ml-13 { + margin-left: var(--bui-space-13); + } + .sm\:bui-ml-14 { + margin-left: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-ml { + margin-left: var(--ml-md); + } + .md\:bui-ml-0\.5 { + margin-left: var(--bui-space-0_5); + } + .md\:bui-ml-1 { + margin-left: var(--bui-space-1); + } + .md\:bui-ml-1\.5 { + margin-left: var(--bui-space-1_5); + } + .md\:bui-ml-2 { + margin-left: var(--bui-space-2); + } + .md\:bui-ml-3 { + margin-left: var(--bui-space-3); + } + .md\:bui-ml-4 { + margin-left: var(--bui-space-4); + } + .md\:bui-ml-5 { + margin-left: var(--bui-space-5); + } + .md\:bui-ml-6 { + margin-left: var(--bui-space-6); + } + .md\:bui-ml-7 { + margin-left: var(--bui-space-7); + } + .md\:bui-ml-8 { + margin-left: var(--bui-space-8); + } + .md\:bui-ml-9 { + margin-left: var(--bui-space-9); + } + .md\:bui-ml-10 { + margin-left: var(--bui-space-10); + } + .md\:bui-ml-11 { + margin-left: var(--bui-space-11); + } + .md\:bui-ml-12 { + margin-left: var(--bui-space-12); + } + .md\:bui-ml-13 { + margin-left: var(--bui-space-13); + } + .md\:bui-ml-14 { + margin-left: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-ml { + margin-left: var(--ml-lg); + } + .lg\:bui-ml-0\.5 { + margin-left: var(--bui-space-0_5); + } + .lg\:bui-ml-1 { + margin-left: var(--bui-space-1); + } + .lg\:bui-ml-1\.5 { + margin-left: var(--bui-space-1_5); + } + .lg\:bui-ml-2 { + margin-left: var(--bui-space-2); + } + .lg\:bui-ml-3 { + margin-left: var(--bui-space-3); + } + .lg\:bui-ml-4 { + margin-left: var(--bui-space-4); + } + .lg\:bui-ml-5 { + margin-left: var(--bui-space-5); + } + .lg\:bui-ml-6 { + margin-left: var(--bui-space-6); + } + .lg\:bui-ml-7 { + margin-left: var(--bui-space-7); + } + .lg\:bui-ml-8 { + margin-left: var(--bui-space-8); + } + .lg\:bui-ml-9 { + margin-left: var(--bui-space-9); + } + .lg\:bui-ml-10 { + margin-left: var(--bui-space-10); + } + .lg\:bui-ml-11 { + margin-left: var(--bui-space-11); + } + .lg\:bui-ml-12 { + margin-left: var(--bui-space-12); + } + .lg\:bui-ml-13 { + margin-left: var(--bui-space-13); + } + .lg\:bui-ml-14 { + margin-left: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-ml { + margin-left: var(--ml-xl); + } + .xl\:bui-ml-0\.5 { + margin-left: var(--bui-space-0_5); + } + .xl\:bui-ml-1 { + margin-left: var(--bui-space-1); + } + .xl\:bui-ml-1\.5 { + margin-left: var(--bui-space-1_5); + } + .xl\:bui-ml-2 { + margin-left: var(--bui-space-2); + } + .xl\:bui-ml-3 { + margin-left: var(--bui-space-3); + } + .xl\:bui-ml-4 { + margin-left: var(--bui-space-4); + } + .xl\:bui-ml-5 { + margin-left: var(--bui-space-5); + } + .xl\:bui-ml-6 { + margin-left: var(--bui-space-6); + } + .xl\:bui-ml-7 { + margin-left: var(--bui-space-7); + } + .xl\:bui-ml-8 { + margin-left: var(--bui-space-8); + } + .xl\:bui-ml-9 { + margin-left: var(--bui-space-9); + } + .xl\:bui-ml-10 { + margin-left: var(--bui-space-10); + } + .xl\:bui-ml-11 { + margin-left: var(--bui-space-11); + } + .xl\:bui-ml-12 { + margin-left: var(--bui-space-12); + } + .xl\:bui-ml-13 { + margin-left: var(--bui-space-13); + } + .xl\:bui-ml-14 { + margin-left: var(--bui-space-14); + } + } + .bui-mr { + margin-right: var(--mr); + } + .bui-mr-0\.5 { + margin-right: var(--bui-space-0_5); + } + .bui-mr-1 { + margin-right: var(--bui-space-1); + } + .bui-mr-1\.5 { + margin-right: var(--bui-space-1_5); + } + .bui-mr-2 { + margin-right: var(--bui-space-2); + } + .bui-mr-3 { + margin-right: var(--bui-space-3); + } + .bui-mr-4 { + margin-right: var(--bui-space-4); + } + .bui-mr-5 { + margin-right: var(--bui-space-5); + } + .bui-mr-6 { + margin-right: var(--bui-space-6); + } + .bui-mr-7 { + margin-right: var(--bui-space-7); + } + .bui-mr-8 { + margin-right: var(--bui-space-8); + } + .bui-mr-9 { + margin-right: var(--bui-space-9); + } + .bui-mr-10 { + margin-right: var(--bui-space-10); + } + .bui-mr-11 { + margin-right: var(--bui-space-11); + } + .bui-mr-12 { + margin-right: var(--bui-space-12); + } + .bui-mr-13 { + margin-right: var(--bui-space-13); + } + .bui-mr-14 { + margin-right: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-mr { + margin-right: var(--mr-xs); + } + .xs\:bui-mr-0\.5 { + margin-right: var(--bui-space-0_5); + } + .xs\:bui-mr-1 { + margin-right: var(--bui-space-1); + } + .xs\:bui-mr-1\.5 { + margin-right: var(--bui-space-1_5); + } + .xs\:bui-mr-2 { + margin-right: var(--bui-space-2); + } + .xs\:bui-mr-3 { + margin-right: var(--bui-space-3); + } + .xs\:bui-mr-4 { + margin-right: var(--bui-space-4); + } + .xs\:bui-mr-5 { + margin-right: var(--bui-space-5); + } + .xs\:bui-mr-6 { + margin-right: var(--bui-space-6); + } + .xs\:bui-mr-7 { + margin-right: var(--bui-space-7); + } + .xs\:bui-mr-8 { + margin-right: var(--bui-space-8); + } + .xs\:bui-mr-9 { + margin-right: var(--bui-space-9); + } + .xs\:bui-mr-10 { + margin-right: var(--bui-space-10); + } + .xs\:bui-mr-11 { + margin-right: var(--bui-space-11); + } + .xs\:bui-mr-12 { + margin-right: var(--bui-space-12); + } + .xs\:bui-mr-13 { + margin-right: var(--bui-space-13); + } + .xs\:bui-mr-14 { + margin-right: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-mr { + margin-right: var(--mr-sm); + } + .sm\:bui-mr-0\.5 { + margin-right: var(--bui-space-0_5); + } + .sm\:bui-mr-1 { + margin-right: var(--bui-space-1); + } + .sm\:bui-mr-1\.5 { + margin-right: var(--bui-space-1_5); + } + .sm\:bui-mr-2 { + margin-right: var(--bui-space-2); + } + .sm\:bui-mr-3 { + margin-right: var(--bui-space-3); + } + .sm\:bui-mr-4 { + margin-right: var(--bui-space-4); + } + .sm\:bui-mr-5 { + margin-right: var(--bui-space-5); + } + .sm\:bui-mr-6 { + margin-right: var(--bui-space-6); + } + .sm\:bui-mr-7 { + margin-right: var(--bui-space-7); + } + .sm\:bui-mr-8 { + margin-right: var(--bui-space-8); + } + .sm\:bui-mr-9 { + margin-right: var(--bui-space-9); + } + .sm\:bui-mr-10 { + margin-right: var(--bui-space-10); + } + .sm\:bui-mr-11 { + margin-right: var(--bui-space-11); + } + .sm\:bui-mr-12 { + margin-right: var(--bui-space-12); + } + .sm\:bui-mr-13 { + margin-right: var(--bui-space-13); + } + .sm\:bui-mr-14 { + margin-right: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-mr { + margin-right: var(--mr-md); + } + .md\:bui-mr-0\.5 { + margin-right: var(--bui-space-0_5); + } + .md\:bui-mr-1 { + margin-right: var(--bui-space-1); + } + .md\:bui-mr-1\.5 { + margin-right: var(--bui-space-1_5); + } + .md\:bui-mr-2 { + margin-right: var(--bui-space-2); + } + .md\:bui-mr-3 { + margin-right: var(--bui-space-3); + } + .md\:bui-mr-4 { + margin-right: var(--bui-space-4); + } + .md\:bui-mr-5 { + margin-right: var(--bui-space-5); + } + .md\:bui-mr-6 { + margin-right: var(--bui-space-6); + } + .md\:bui-mr-7 { + margin-right: var(--bui-space-7); + } + .md\:bui-mr-8 { + margin-right: var(--bui-space-8); + } + .md\:bui-mr-9 { + margin-right: var(--bui-space-9); + } + .md\:bui-mr-10 { + margin-right: var(--bui-space-10); + } + .md\:bui-mr-11 { + margin-right: var(--bui-space-11); + } + .md\:bui-mr-12 { + margin-right: var(--bui-space-12); + } + .md\:bui-mr-13 { + margin-right: var(--bui-space-13); + } + .md\:bui-mr-14 { + margin-right: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-mr { + margin-right: var(--mr-lg); + } + .lg\:bui-mr-0\.5 { + margin-right: var(--bui-space-0_5); + } + .lg\:bui-mr-1 { + margin-right: var(--bui-space-1); + } + .lg\:bui-mr-1\.5 { + margin-right: var(--bui-space-1_5); + } + .lg\:bui-mr-2 { + margin-right: var(--bui-space-2); + } + .lg\:bui-mr-3 { + margin-right: var(--bui-space-3); + } + .lg\:bui-mr-4 { + margin-right: var(--bui-space-4); + } + .lg\:bui-mr-5 { + margin-right: var(--bui-space-5); + } + .lg\:bui-mr-6 { + margin-right: var(--bui-space-6); + } + .lg\:bui-mr-7 { + margin-right: var(--bui-space-7); + } + .lg\:bui-mr-8 { + margin-right: var(--bui-space-8); + } + .lg\:bui-mr-9 { + margin-right: var(--bui-space-9); + } + .lg\:bui-mr-10 { + margin-right: var(--bui-space-10); + } + .lg\:bui-mr-11 { + margin-right: var(--bui-space-11); + } + .lg\:bui-mr-12 { + margin-right: var(--bui-space-12); + } + .lg\:bui-mr-13 { + margin-right: var(--bui-space-13); + } + .lg\:bui-mr-14 { + margin-right: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-mr { + margin-right: var(--mr-xl); + } + .xl\:bui-mr-0\.5 { + margin-right: var(--bui-space-0_5); + } + .xl\:bui-mr-1 { + margin-right: var(--bui-space-1); + } + .xl\:bui-mr-1\.5 { + margin-right: var(--bui-space-1_5); + } + .xl\:bui-mr-2 { + margin-right: var(--bui-space-2); + } + .xl\:bui-mr-3 { + margin-right: var(--bui-space-3); + } + .xl\:bui-mr-4 { + margin-right: var(--bui-space-4); + } + .xl\:bui-mr-5 { + margin-right: var(--bui-space-5); + } + .xl\:bui-mr-6 { + margin-right: var(--bui-space-6); + } + .xl\:bui-mr-7 { + margin-right: var(--bui-space-7); + } + .xl\:bui-mr-8 { + margin-right: var(--bui-space-8); + } + .xl\:bui-mr-9 { + margin-right: var(--bui-space-9); + } + .xl\:bui-mr-10 { + margin-right: var(--bui-space-10); + } + .xl\:bui-mr-11 { + margin-right: var(--bui-space-11); + } + .xl\:bui-mr-12 { + margin-right: var(--bui-space-12); + } + .xl\:bui-mr-13 { + margin-right: var(--bui-space-13); + } + .xl\:bui-mr-14 { + margin-right: var(--bui-space-14); + } + } + .bui-mt { + margin-top: var(--mt); + } + .bui-mt-0\.5 { + margin-top: var(--bui-space-0_5); + } + .bui-mt-1 { + margin-top: var(--bui-space-1); + } + .bui-mt-1\.5 { + margin-top: var(--bui-space-1_5); + } + .bui-mt-2 { + margin-top: var(--bui-space-2); + } + .bui-mt-3 { + margin-top: var(--bui-space-3); + } + .bui-mt-4 { + margin-top: var(--bui-space-4); + } + .bui-mt-5 { + margin-top: var(--bui-space-5); + } + .bui-mt-6 { + margin-top: var(--bui-space-6); + } + .bui-mt-7 { + margin-top: var(--bui-space-7); + } + .bui-mt-8 { + margin-top: var(--bui-space-8); + } + .bui-mt-9 { + margin-top: var(--bui-space-9); + } + .bui-mt-10 { + margin-top: var(--bui-space-10); + } + .bui-mt-11 { + margin-top: var(--bui-space-11); + } + .bui-mt-12 { + margin-top: var(--bui-space-12); + } + .bui-mt-13 { + margin-top: var(--bui-space-13); + } + .bui-mt-14 { + margin-top: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-mt { + margin-top: var(--mt-xs); + } + .xs\:bui-mt-0\.5 { + margin-top: var(--bui-space-0_5); + } + .xs\:bui-mt-1 { + margin-top: var(--bui-space-1); + } + .xs\:bui-mt-1\.5 { + margin-top: var(--bui-space-1_5); + } + .xs\:bui-mt-2 { + margin-top: var(--bui-space-2); + } + .xs\:bui-mt-3 { + margin-top: var(--bui-space-3); + } + .xs\:bui-mt-4 { + margin-top: var(--bui-space-4); + } + .xs\:bui-mt-5 { + margin-top: var(--bui-space-5); + } + .xs\:bui-mt-6 { + margin-top: var(--bui-space-6); + } + .xs\:bui-mt-7 { + margin-top: var(--bui-space-7); + } + .xs\:bui-mt-8 { + margin-top: var(--bui-space-8); + } + .xs\:bui-mt-9 { + margin-top: var(--bui-space-9); + } + .xs\:bui-mt-10 { + margin-top: var(--bui-space-10); + } + .xs\:bui-mt-11 { + margin-top: var(--bui-space-11); + } + .xs\:bui-mt-12 { + margin-top: var(--bui-space-12); + } + .xs\:bui-mt-13 { + margin-top: var(--bui-space-13); + } + .xs\:bui-mt-14 { + margin-top: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-mt { + margin-top: var(--mt-sm); + } + .sm\:bui-mt-0\.5 { + margin-top: var(--bui-space-0_5); + } + .sm\:bui-mt-1 { + margin-top: var(--bui-space-1); + } + .sm\:bui-mt-1\.5 { + margin-top: var(--bui-space-1_5); + } + .sm\:bui-mt-2 { + margin-top: var(--bui-space-2); + } + .sm\:bui-mt-3 { + margin-top: var(--bui-space-3); + } + .sm\:bui-mt-4 { + margin-top: var(--bui-space-4); + } + .sm\:bui-mt-5 { + margin-top: var(--bui-space-5); + } + .sm\:bui-mt-6 { + margin-top: var(--bui-space-6); + } + .sm\:bui-mt-7 { + margin-top: var(--bui-space-7); + } + .sm\:bui-mt-8 { + margin-top: var(--bui-space-8); + } + .sm\:bui-mt-9 { + margin-top: var(--bui-space-9); + } + .sm\:bui-mt-10 { + margin-top: var(--bui-space-10); + } + .sm\:bui-mt-11 { + margin-top: var(--bui-space-11); + } + .sm\:bui-mt-12 { + margin-top: var(--bui-space-12); + } + .sm\:bui-mt-13 { + margin-top: var(--bui-space-13); + } + .sm\:bui-mt-14 { + margin-top: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-mt { + margin-top: var(--mt-md); + } + .md\:bui-mt-0\.5 { + margin-top: var(--bui-space-0_5); + } + .md\:bui-mt-1 { + margin-top: var(--bui-space-1); + } + .md\:bui-mt-1\.5 { + margin-top: var(--bui-space-1_5); + } + .md\:bui-mt-2 { + margin-top: var(--bui-space-2); + } + .md\:bui-mt-3 { + margin-top: var(--bui-space-3); + } + .md\:bui-mt-4 { + margin-top: var(--bui-space-4); + } + .md\:bui-mt-5 { + margin-top: var(--bui-space-5); + } + .md\:bui-mt-6 { + margin-top: var(--bui-space-6); + } + .md\:bui-mt-7 { + margin-top: var(--bui-space-7); + } + .md\:bui-mt-8 { + margin-top: var(--bui-space-8); + } + .md\:bui-mt-9 { + margin-top: var(--bui-space-9); + } + .md\:bui-mt-10 { + margin-top: var(--bui-space-10); + } + .md\:bui-mt-11 { + margin-top: var(--bui-space-11); + } + .md\:bui-mt-12 { + margin-top: var(--bui-space-12); + } + .md\:bui-mt-13 { + margin-top: var(--bui-space-13); + } + .md\:bui-mt-14 { + margin-top: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-mt { + margin-top: var(--mt-lg); + } + .lg\:bui-mt-0\.5 { + margin-top: var(--bui-space-0_5); + } + .lg\:bui-mt-1 { + margin-top: var(--bui-space-1); + } + .lg\:bui-mt-1\.5 { + margin-top: var(--bui-space-1_5); + } + .lg\:bui-mt-2 { + margin-top: var(--bui-space-2); + } + .lg\:bui-mt-3 { + margin-top: var(--bui-space-3); + } + .lg\:bui-mt-4 { + margin-top: var(--bui-space-4); + } + .lg\:bui-mt-5 { + margin-top: var(--bui-space-5); + } + .lg\:bui-mt-6 { + margin-top: var(--bui-space-6); + } + .lg\:bui-mt-7 { + margin-top: var(--bui-space-7); + } + .lg\:bui-mt-8 { + margin-top: var(--bui-space-8); + } + .lg\:bui-mt-9 { + margin-top: var(--bui-space-9); + } + .lg\:bui-mt-10 { + margin-top: var(--bui-space-10); + } + .lg\:bui-mt-11 { + margin-top: var(--bui-space-11); + } + .lg\:bui-mt-12 { + margin-top: var(--bui-space-12); + } + .lg\:bui-mt-13 { + margin-top: var(--bui-space-13); + } + .lg\:bui-mt-14 { + margin-top: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-mt { + margin-top: var(--mt-xl); + } + .xl\:bui-mt-0\.5 { + margin-top: var(--bui-space-0_5); + } + .xl\:bui-mt-1 { + margin-top: var(--bui-space-1); + } + .xl\:bui-mt-1\.5 { + margin-top: var(--bui-space-1_5); + } + .xl\:bui-mt-2 { + margin-top: var(--bui-space-2); + } + .xl\:bui-mt-3 { + margin-top: var(--bui-space-3); + } + .xl\:bui-mt-4 { + margin-top: var(--bui-space-4); + } + .xl\:bui-mt-5 { + margin-top: var(--bui-space-5); + } + .xl\:bui-mt-6 { + margin-top: var(--bui-space-6); + } + .xl\:bui-mt-7 { + margin-top: var(--bui-space-7); + } + .xl\:bui-mt-8 { + margin-top: var(--bui-space-8); + } + .xl\:bui-mt-9 { + margin-top: var(--bui-space-9); + } + .xl\:bui-mt-10 { + margin-top: var(--bui-space-10); + } + .xl\:bui-mt-11 { + margin-top: var(--bui-space-11); + } + .xl\:bui-mt-12 { + margin-top: var(--bui-space-12); + } + .xl\:bui-mt-13 { + margin-top: var(--bui-space-13); + } + .xl\:bui-mt-14 { + margin-top: var(--bui-space-14); + } + } + .bui-mb { + margin-bottom: var(--mb); + } + .bui-mb-0\.5 { + margin-bottom: var(--bui-space-0_5); + } + .bui-mb-1 { + margin-bottom: var(--bui-space-1); + } + .bui-mb-1\.5 { + margin-bottom: var(--bui-space-1_5); + } + .bui-mb-2 { + margin-bottom: var(--bui-space-2); + } + .bui-mb-3 { + margin-bottom: var(--bui-space-3); + } + .bui-mb-4 { + margin-bottom: var(--bui-space-4); + } + .bui-mb-5 { + margin-bottom: var(--bui-space-5); + } + .bui-mb-6 { + margin-bottom: var(--bui-space-6); + } + .bui-mb-7 { + margin-bottom: var(--bui-space-7); + } + .bui-mb-8 { + margin-bottom: var(--bui-space-8); + } + .bui-mb-9 { + margin-bottom: var(--bui-space-9); + } + .bui-mb-10 { + margin-bottom: var(--bui-space-10); + } + .bui-mb-11 { + margin-bottom: var(--bui-space-11); + } + .bui-mb-12 { + margin-bottom: var(--bui-space-12); + } + .bui-mb-13 { + margin-bottom: var(--bui-space-13); + } + .bui-mb-14 { + margin-bottom: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-mb { + margin-bottom: var(--mb-xs); + } + .xs\:bui-mb-0\.5 { + margin-bottom: var(--bui-space-0_5); + } + .xs\:bui-mb-1 { + margin-bottom: var(--bui-space-1); + } + .xs\:bui-mb-1\.5 { + margin-bottom: var(--bui-space-1_5); + } + .xs\:bui-mb-2 { + margin-bottom: var(--bui-space-2); + } + .xs\:bui-mb-3 { + margin-bottom: var(--bui-space-3); + } + .xs\:bui-mb-4 { + margin-bottom: var(--bui-space-4); + } + .xs\:bui-mb-5 { + margin-bottom: var(--bui-space-5); + } + .xs\:bui-mb-6 { + margin-bottom: var(--bui-space-6); + } + .xs\:bui-mb-7 { + margin-bottom: var(--bui-space-7); + } + .xs\:bui-mb-8 { + margin-bottom: var(--bui-space-8); + } + .xs\:bui-mb-9 { + margin-bottom: var(--bui-space-9); + } + .xs\:bui-mb-10 { + margin-bottom: var(--bui-space-10); + } + .xs\:bui-mb-11 { + margin-bottom: var(--bui-space-11); + } + .xs\:bui-mb-12 { + margin-bottom: var(--bui-space-12); + } + .xs\:bui-mb-13 { + margin-bottom: var(--bui-space-13); + } + .xs\:bui-mb-14 { + margin-bottom: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-mb { + margin-bottom: var(--mb-sm); + } + .sm\:bui-mb-0\.5 { + margin-bottom: var(--bui-space-0_5); + } + .sm\:bui-mb-1 { + margin-bottom: var(--bui-space-1); + } + .sm\:bui-mb-1\.5 { + margin-bottom: var(--bui-space-1_5); + } + .sm\:bui-mb-2 { + margin-bottom: var(--bui-space-2); + } + .sm\:bui-mb-3 { + margin-bottom: var(--bui-space-3); + } + .sm\:bui-mb-4 { + margin-bottom: var(--bui-space-4); + } + .sm\:bui-mb-5 { + margin-bottom: var(--bui-space-5); + } + .sm\:bui-mb-6 { + margin-bottom: var(--bui-space-6); + } + .sm\:bui-mb-7 { + margin-bottom: var(--bui-space-7); + } + .sm\:bui-mb-8 { + margin-bottom: var(--bui-space-8); + } + .sm\:bui-mb-9 { + margin-bottom: var(--bui-space-9); + } + .sm\:bui-mb-10 { + margin-bottom: var(--bui-space-10); + } + .sm\:bui-mb-11 { + margin-bottom: var(--bui-space-11); + } + .sm\:bui-mb-12 { + margin-bottom: var(--bui-space-12); + } + .sm\:bui-mb-13 { + margin-bottom: var(--bui-space-13); + } + .sm\:bui-mb-14 { + margin-bottom: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-mb { + margin-bottom: var(--mb-md); + } + .md\:bui-mb-0\.5 { + margin-bottom: var(--bui-space-0_5); + } + .md\:bui-mb-1 { + margin-bottom: var(--bui-space-1); + } + .md\:bui-mb-1\.5 { + margin-bottom: var(--bui-space-1_5); + } + .md\:bui-mb-2 { + margin-bottom: var(--bui-space-2); + } + .md\:bui-mb-3 { + margin-bottom: var(--bui-space-3); + } + .md\:bui-mb-4 { + margin-bottom: var(--bui-space-4); + } + .md\:bui-mb-5 { + margin-bottom: var(--bui-space-5); + } + .md\:bui-mb-6 { + margin-bottom: var(--bui-space-6); + } + .md\:bui-mb-7 { + margin-bottom: var(--bui-space-7); + } + .md\:bui-mb-8 { + margin-bottom: var(--bui-space-8); + } + .md\:bui-mb-9 { + margin-bottom: var(--bui-space-9); + } + .md\:bui-mb-10 { + margin-bottom: var(--bui-space-10); + } + .md\:bui-mb-11 { + margin-bottom: var(--bui-space-11); + } + .md\:bui-mb-12 { + margin-bottom: var(--bui-space-12); + } + .md\:bui-mb-13 { + margin-bottom: var(--bui-space-13); + } + .md\:bui-mb-14 { + margin-bottom: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-mb { + margin-bottom: var(--mb-lg); + } + .lg\:bui-mb-0\.5 { + margin-bottom: var(--bui-space-0_5); + } + .lg\:bui-mb-1 { + margin-bottom: var(--bui-space-1); + } + .lg\:bui-mb-1\.5 { + margin-bottom: var(--bui-space-1_5); + } + .lg\:bui-mb-2 { + margin-bottom: var(--bui-space-2); + } + .lg\:bui-mb-3 { + margin-bottom: var(--bui-space-3); + } + .lg\:bui-mb-4 { + margin-bottom: var(--bui-space-4); + } + .lg\:bui-mb-5 { + margin-bottom: var(--bui-space-5); + } + .lg\:bui-mb-6 { + margin-bottom: var(--bui-space-6); + } + .lg\:bui-mb-7 { + margin-bottom: var(--bui-space-7); + } + .lg\:bui-mb-8 { + margin-bottom: var(--bui-space-8); + } + .lg\:bui-mb-9 { + margin-bottom: var(--bui-space-9); + } + .lg\:bui-mb-10 { + margin-bottom: var(--bui-space-10); + } + .lg\:bui-mb-11 { + margin-bottom: var(--bui-space-11); + } + .lg\:bui-mb-12 { + margin-bottom: var(--bui-space-12); + } + .lg\:bui-mb-13 { + margin-bottom: var(--bui-space-13); + } + .lg\:bui-mb-14 { + margin-bottom: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-mb { + margin-bottom: var(--mb-xl); + } + .xl\:bui-mb-0\.5 { + margin-bottom: var(--bui-space-0_5); + } + .xl\:bui-mb-1 { + margin-bottom: var(--bui-space-1); + } + .xl\:bui-mb-1\.5 { + margin-bottom: var(--bui-space-1_5); + } + .xl\:bui-mb-2 { + margin-bottom: var(--bui-space-2); + } + .xl\:bui-mb-3 { + margin-bottom: var(--bui-space-3); + } + .xl\:bui-mb-4 { + margin-bottom: var(--bui-space-4); + } + .xl\:bui-mb-5 { + margin-bottom: var(--bui-space-5); + } + .xl\:bui-mb-6 { + margin-bottom: var(--bui-space-6); + } + .xl\:bui-mb-7 { + margin-bottom: var(--bui-space-7); + } + .xl\:bui-mb-8 { + margin-bottom: var(--bui-space-8); + } + .xl\:bui-mb-9 { + margin-bottom: var(--bui-space-9); + } + .xl\:bui-mb-10 { + margin-bottom: var(--bui-space-10); + } + .xl\:bui-mb-11 { + margin-bottom: var(--bui-space-11); + } + .xl\:bui-mb-12 { + margin-bottom: var(--bui-space-12); + } + .xl\:bui-mb-13 { + margin-bottom: var(--bui-space-13); + } + .xl\:bui-mb-14 { + margin-bottom: var(--bui-space-14); + } + } + .bui-my { + margin-top: var(--my); + margin-bottom: var(--my); + } + .bui-my-0\.5 { + margin-top: var(--bui-space-0_5); + margin-bottom: var(--bui-space-0_5); + } + .bui-my-1 { + margin-top: var(--bui-space-1); + margin-bottom: var(--bui-space-1); + } + .bui-my-1\.5 { + margin-top: var(--bui-space-1_5); + margin-bottom: var(--bui-space-1_5); + } + .bui-my-2 { + margin-top: var(--bui-space-2); + margin-bottom: var(--bui-space-2); + } + .bui-my-3 { + margin-top: var(--bui-space-3); + margin-bottom: var(--bui-space-3); + } + .bui-my-4 { + margin-top: var(--bui-space-4); + margin-bottom: var(--bui-space-4); + } + .bui-my-5 { + margin-top: var(--bui-space-5); + margin-bottom: var(--bui-space-5); + } + .bui-my-6 { + margin-top: var(--bui-space-6); + margin-bottom: var(--bui-space-6); + } + .bui-my-7 { + margin-top: var(--bui-space-7); + margin-bottom: var(--bui-space-7); + } + .bui-my-8 { + margin-top: var(--bui-space-8); + margin-bottom: var(--bui-space-8); + } + .bui-my-9 { + margin-top: var(--bui-space-9); + margin-bottom: var(--bui-space-9); + } + .bui-my-10 { + margin-top: var(--bui-space-10); + margin-bottom: var(--bui-space-10); + } + .bui-my-11 { + margin-top: var(--bui-space-11); + margin-bottom: var(--bui-space-11); + } + .bui-my-12 { + margin-top: var(--bui-space-12); + margin-bottom: var(--bui-space-12); + } + .bui-my-13 { + margin-top: var(--bui-space-13); + margin-bottom: var(--bui-space-13); + } + .bui-my-14 { + margin-top: var(--bui-space-14); + margin-bottom: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-my { + margin-top: var(--my-xs); + margin-bottom: var(--my-xs); + } + .xs\:bui-my-0\.5 { + margin-top: var(--bui-space-0_5); + margin-bottom: var(--bui-space-0_5); + } + .xs\:bui-my-1 { + margin-top: var(--bui-space-1); + margin-bottom: var(--bui-space-1); + } + .xs\:bui-my-1\.5 { + margin-top: var(--bui-space-1_5); + margin-bottom: var(--bui-space-1_5); + } + .xs\:bui-my-2 { + margin-top: var(--bui-space-2); + margin-bottom: var(--bui-space-2); + } + .xs\:bui-my-3 { + margin-top: var(--bui-space-3); + margin-bottom: var(--bui-space-3); + } + .xs\:bui-my-4 { + margin-top: var(--bui-space-4); + margin-bottom: var(--bui-space-4); + } + .xs\:bui-my-5 { + margin-top: var(--bui-space-5); + margin-bottom: var(--bui-space-5); + } + .xs\:bui-my-6 { + margin-top: var(--bui-space-6); + margin-bottom: var(--bui-space-6); + } + .xs\:bui-my-7 { + margin-top: var(--bui-space-7); + margin-bottom: var(--bui-space-7); + } + .xs\:bui-my-8 { + margin-top: var(--bui-space-8); + margin-bottom: var(--bui-space-8); + } + .xs\:bui-my-9 { + margin-top: var(--bui-space-9); + margin-bottom: var(--bui-space-9); + } + .xs\:bui-my-10 { + margin-top: var(--bui-space-10); + margin-bottom: var(--bui-space-10); + } + .xs\:bui-my-11 { + margin-top: var(--bui-space-11); + margin-bottom: var(--bui-space-11); + } + .xs\:bui-my-12 { + margin-top: var(--bui-space-12); + margin-bottom: var(--bui-space-12); + } + .xs\:bui-my-13 { + margin-top: var(--bui-space-13); + margin-bottom: var(--bui-space-13); + } + .xs\:bui-my-14 { + margin-top: var(--bui-space-14); + margin-bottom: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-my { + margin-top: var(--my-sm); + margin-bottom: var(--my-sm); + } + .sm\:bui-my-0\.5 { + margin-top: var(--bui-space-0_5); + margin-bottom: var(--bui-space-0_5); + } + .sm\:bui-my-1 { + margin-top: var(--bui-space-1); + margin-bottom: var(--bui-space-1); + } + .sm\:bui-my-1\.5 { + margin-top: var(--bui-space-1_5); + margin-bottom: var(--bui-space-1_5); + } + .sm\:bui-my-2 { + margin-top: var(--bui-space-2); + margin-bottom: var(--bui-space-2); + } + .sm\:bui-my-3 { + margin-top: var(--bui-space-3); + margin-bottom: var(--bui-space-3); + } + .sm\:bui-my-4 { + margin-top: var(--bui-space-4); + margin-bottom: var(--bui-space-4); + } + .sm\:bui-my-5 { + margin-top: var(--bui-space-5); + margin-bottom: var(--bui-space-5); + } + .sm\:bui-my-6 { + margin-top: var(--bui-space-6); + margin-bottom: var(--bui-space-6); + } + .sm\:bui-my-7 { + margin-top: var(--bui-space-7); + margin-bottom: var(--bui-space-7); + } + .sm\:bui-my-8 { + margin-top: var(--bui-space-8); + margin-bottom: var(--bui-space-8); + } + .sm\:bui-my-9 { + margin-top: var(--bui-space-9); + margin-bottom: var(--bui-space-9); + } + .sm\:bui-my-10 { + margin-top: var(--bui-space-10); + margin-bottom: var(--bui-space-10); + } + .sm\:bui-my-11 { + margin-top: var(--bui-space-11); + margin-bottom: var(--bui-space-11); + } + .sm\:bui-my-12 { + margin-top: var(--bui-space-12); + margin-bottom: var(--bui-space-12); + } + .sm\:bui-my-13 { + margin-top: var(--bui-space-13); + margin-bottom: var(--bui-space-13); + } + .sm\:bui-my-14 { + margin-top: var(--bui-space-14); + margin-bottom: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-my { + margin-top: var(--my-md); + margin-bottom: var(--my-md); + } + .md\:bui-my-0\.5 { + margin-top: var(--bui-space-0_5); + margin-bottom: var(--bui-space-0_5); + } + .md\:bui-my-1 { + margin-top: var(--bui-space-1); + margin-bottom: var(--bui-space-1); + } + .md\:bui-my-1\.5 { + margin-top: var(--bui-space-1_5); + margin-bottom: var(--bui-space-1_5); + } + .md\:bui-my-2 { + margin-top: var(--bui-space-2); + margin-bottom: var(--bui-space-2); + } + .md\:bui-my-3 { + margin-top: var(--bui-space-3); + margin-bottom: var(--bui-space-3); + } + .md\:bui-my-4 { + margin-top: var(--bui-space-4); + margin-bottom: var(--bui-space-4); + } + .md\:bui-my-5 { + margin-top: var(--bui-space-5); + margin-bottom: var(--bui-space-5); + } + .md\:bui-my-6 { + margin-top: var(--bui-space-6); + margin-bottom: var(--bui-space-6); + } + .md\:bui-my-7 { + margin-top: var(--bui-space-7); + margin-bottom: var(--bui-space-7); + } + .md\:bui-my-8 { + margin-top: var(--bui-space-8); + margin-bottom: var(--bui-space-8); + } + .md\:bui-my-9 { + margin-top: var(--bui-space-9); + margin-bottom: var(--bui-space-9); + } + .md\:bui-my-10 { + margin-top: var(--bui-space-10); + margin-bottom: var(--bui-space-10); + } + .md\:bui-my-11 { + margin-top: var(--bui-space-11); + margin-bottom: var(--bui-space-11); + } + .md\:bui-my-12 { + margin-top: var(--bui-space-12); + margin-bottom: var(--bui-space-12); + } + .md\:bui-my-13 { + margin-top: var(--bui-space-13); + margin-bottom: var(--bui-space-13); + } + .md\:bui-my-14 { + margin-top: var(--bui-space-14); + margin-bottom: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-my { + margin-top: var(--my-lg); + margin-bottom: var(--my-lg); + } + .lg\:bui-my-0\.5 { + margin-top: var(--bui-space-0_5); + margin-bottom: var(--bui-space-0_5); + } + .lg\:bui-my-1 { + margin-top: var(--bui-space-1); + margin-bottom: var(--bui-space-1); + } + .lg\:bui-my-1\.5 { + margin-top: var(--bui-space-1_5); + margin-bottom: var(--bui-space-1_5); + } + .lg\:bui-my-2 { + margin-top: var(--bui-space-2); + margin-bottom: var(--bui-space-2); + } + .lg\:bui-my-3 { + margin-top: var(--bui-space-3); + margin-bottom: var(--bui-space-3); + } + .lg\:bui-my-4 { + margin-top: var(--bui-space-4); + margin-bottom: var(--bui-space-4); + } + .lg\:bui-my-5 { + margin-top: var(--bui-space-5); + margin-bottom: var(--bui-space-5); + } + .lg\:bui-my-6 { + margin-top: var(--bui-space-6); + margin-bottom: var(--bui-space-6); + } + .lg\:bui-my-7 { + margin-top: var(--bui-space-7); + margin-bottom: var(--bui-space-7); + } + .lg\:bui-my-8 { + margin-top: var(--bui-space-8); + margin-bottom: var(--bui-space-8); + } + .lg\:bui-my-9 { + margin-top: var(--bui-space-9); + margin-bottom: var(--bui-space-9); + } + .lg\:bui-my-10 { + margin-top: var(--bui-space-10); + margin-bottom: var(--bui-space-10); + } + .lg\:bui-my-11 { + margin-top: var(--bui-space-11); + margin-bottom: var(--bui-space-11); + } + .lg\:bui-my-12 { + margin-top: var(--bui-space-12); + margin-bottom: var(--bui-space-12); + } + .lg\:bui-my-13 { + margin-top: var(--bui-space-13); + margin-bottom: var(--bui-space-13); + } + .lg\:bui-my-14 { + margin-top: var(--bui-space-14); + margin-bottom: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-my { + margin-top: var(--my-xl); + margin-bottom: var(--my-xl); + } + .xl\:bui-my-0\.5 { + margin-top: var(--bui-space-0_5); + margin-bottom: var(--bui-space-0_5); + } + .xl\:bui-my-1 { + margin-top: var(--bui-space-1); + margin-bottom: var(--bui-space-1); + } + .xl\:bui-my-1\.5 { + margin-top: var(--bui-space-1_5); + margin-bottom: var(--bui-space-1_5); + } + .xl\:bui-my-2 { + margin-top: var(--bui-space-2); + margin-bottom: var(--bui-space-2); + } + .xl\:bui-my-3 { + margin-top: var(--bui-space-3); + margin-bottom: var(--bui-space-3); + } + .xl\:bui-my-4 { + margin-top: var(--bui-space-4); + margin-bottom: var(--bui-space-4); + } + .xl\:bui-my-5 { + margin-top: var(--bui-space-5); + margin-bottom: var(--bui-space-5); + } + .xl\:bui-my-6 { + margin-top: var(--bui-space-6); + margin-bottom: var(--bui-space-6); + } + .xl\:bui-my-7 { + margin-top: var(--bui-space-7); + margin-bottom: var(--bui-space-7); + } + .xl\:bui-my-8 { + margin-top: var(--bui-space-8); + margin-bottom: var(--bui-space-8); + } + .xl\:bui-my-9 { + margin-top: var(--bui-space-9); + margin-bottom: var(--bui-space-9); + } + .xl\:bui-my-10 { + margin-top: var(--bui-space-10); + margin-bottom: var(--bui-space-10); + } + .xl\:bui-my-11 { + margin-top: var(--bui-space-11); + margin-bottom: var(--bui-space-11); + } + .xl\:bui-my-12 { + margin-top: var(--bui-space-12); + margin-bottom: var(--bui-space-12); + } + .xl\:bui-my-13 { + margin-top: var(--bui-space-13); + margin-bottom: var(--bui-space-13); + } + .xl\:bui-my-14 { + margin-top: var(--bui-space-14); + margin-bottom: var(--bui-space-14); + } + } + .bui-mx { + margin-left: var(--mx); + margin-right: var(--mx); + } + .bui-mx-0\.5 { + margin-left: var(--bui-space-0_5); + margin-right: var(--bui-space-0_5); + } + .bui-mx-1 { + margin-left: var(--bui-space-1); + margin-right: var(--bui-space-1); + } + .bui-mx-1\.5 { + margin-left: var(--bui-space-1_5); + margin-right: var(--bui-space-1_5); + } + .bui-mx-2 { + margin-left: var(--bui-space-2); + margin-right: var(--bui-space-2); + } + .bui-mx-3 { + margin-left: var(--bui-space-3); + margin-right: var(--bui-space-3); + } + .bui-mx-4 { + margin-left: var(--bui-space-4); + margin-right: var(--bui-space-4); + } + .bui-mx-5 { + margin-left: var(--bui-space-5); + margin-right: var(--bui-space-5); + } + .bui-mx-6 { + margin-left: var(--bui-space-6); + margin-right: var(--bui-space-6); + } + .bui-mx-7 { + margin-left: var(--bui-space-7); + margin-right: var(--bui-space-7); + } + .bui-mx-8 { + margin-left: var(--bui-space-8); + margin-right: var(--bui-space-8); + } + .bui-mx-9 { + margin-left: var(--bui-space-9); + margin-right: var(--bui-space-9); + } + .bui-mx-10 { + margin-left: var(--bui-space-10); + margin-right: var(--bui-space-10); + } + .bui-mx-11 { + margin-left: var(--bui-space-11); + margin-right: var(--bui-space-11); + } + .bui-mx-12 { + margin-left: var(--bui-space-12); + margin-right: var(--bui-space-12); + } + .bui-mx-13 { + margin-left: var(--bui-space-13); + margin-right: var(--bui-space-13); + } + .bui-mx-14 { + margin-left: var(--bui-space-14); + margin-right: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-mx { + margin-left: var(--mx-xs); + margin-right: var(--mx-xs); + } + .xs\:bui-mx-0\.5 { + margin-left: var(--bui-space-0_5); + margin-right: var(--bui-space-0_5); + } + .xs\:bui-mx-1 { + margin-left: var(--bui-space-1); + margin-right: var(--bui-space-1); + } + .xs\:bui-mx-1\.5 { + margin-left: var(--bui-space-1_5); + margin-right: var(--bui-space-1_5); + } + .xs\:bui-mx-2 { + margin-left: var(--bui-space-2); + margin-right: var(--bui-space-2); + } + .xs\:bui-mx-3 { + margin-left: var(--bui-space-3); + margin-right: var(--bui-space-3); + } + .xs\:bui-mx-4 { + margin-left: var(--bui-space-4); + margin-right: var(--bui-space-4); + } + .xs\:bui-mx-5 { + margin-left: var(--bui-space-5); + margin-right: var(--bui-space-5); + } + .xs\:bui-mx-6 { + margin-left: var(--bui-space-6); + margin-right: var(--bui-space-6); + } + .xs\:bui-mx-7 { + margin-left: var(--bui-space-7); + margin-right: var(--bui-space-7); + } + .xs\:bui-mx-8 { + margin-left: var(--bui-space-8); + margin-right: var(--bui-space-8); + } + .xs\:bui-mx-9 { + margin-left: var(--bui-space-9); + margin-right: var(--bui-space-9); + } + .xs\:bui-mx-10 { + margin-left: var(--bui-space-10); + margin-right: var(--bui-space-10); + } + .xs\:bui-mx-11 { + margin-left: var(--bui-space-11); + margin-right: var(--bui-space-11); + } + .xs\:bui-mx-12 { + margin-left: var(--bui-space-12); + margin-right: var(--bui-space-12); + } + .xs\:bui-mx-13 { + margin-left: var(--bui-space-13); + margin-right: var(--bui-space-13); + } + .xs\:bui-mx-14 { + margin-left: var(--bui-space-14); + margin-right: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-mx { + margin-left: var(--mx-sm); + margin-right: var(--mx-sm); + } + .sm\:bui-mx-0\.5 { + margin-left: var(--bui-space-0_5); + margin-right: var(--bui-space-0_5); + } + .sm\:bui-mx-1 { + margin-left: var(--bui-space-1); + margin-right: var(--bui-space-1); + } + .sm\:bui-mx-1\.5 { + margin-left: var(--bui-space-1_5); + margin-right: var(--bui-space-1_5); + } + .sm\:bui-mx-2 { + margin-left: var(--bui-space-2); + margin-right: var(--bui-space-2); + } + .sm\:bui-mx-3 { + margin-left: var(--bui-space-3); + margin-right: var(--bui-space-3); + } + .sm\:bui-mx-4 { + margin-left: var(--bui-space-4); + margin-right: var(--bui-space-4); + } + .sm\:bui-mx-5 { + margin-left: var(--bui-space-5); + margin-right: var(--bui-space-5); + } + .sm\:bui-mx-6 { + margin-left: var(--bui-space-6); + margin-right: var(--bui-space-6); + } + .sm\:bui-mx-7 { + margin-left: var(--bui-space-7); + margin-right: var(--bui-space-7); + } + .sm\:bui-mx-8 { + margin-left: var(--bui-space-8); + margin-right: var(--bui-space-8); + } + .sm\:bui-mx-9 { + margin-left: var(--bui-space-9); + margin-right: var(--bui-space-9); + } + .sm\:bui-mx-10 { + margin-left: var(--bui-space-10); + margin-right: var(--bui-space-10); + } + .sm\:bui-mx-11 { + margin-left: var(--bui-space-11); + margin-right: var(--bui-space-11); + } + .sm\:bui-mx-12 { + margin-left: var(--bui-space-12); + margin-right: var(--bui-space-12); + } + .sm\:bui-mx-13 { + margin-left: var(--bui-space-13); + margin-right: var(--bui-space-13); + } + .sm\:bui-mx-14 { + margin-left: var(--bui-space-14); + margin-right: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-mx { + margin-left: var(--mx-md); + margin-right: var(--mx-md); + } + .md\:bui-mx-0\.5 { + margin-left: var(--bui-space-0_5); + margin-right: var(--bui-space-0_5); + } + .md\:bui-mx-1 { + margin-left: var(--bui-space-1); + margin-right: var(--bui-space-1); + } + .md\:bui-mx-1\.5 { + margin-left: var(--bui-space-1_5); + margin-right: var(--bui-space-1_5); + } + .md\:bui-mx-2 { + margin-left: var(--bui-space-2); + margin-right: var(--bui-space-2); + } + .md\:bui-mx-3 { + margin-left: var(--bui-space-3); + margin-right: var(--bui-space-3); + } + .md\:bui-mx-4 { + margin-left: var(--bui-space-4); + margin-right: var(--bui-space-4); + } + .md\:bui-mx-5 { + margin-left: var(--bui-space-5); + margin-right: var(--bui-space-5); + } + .md\:bui-mx-6 { + margin-left: var(--bui-space-6); + margin-right: var(--bui-space-6); + } + .md\:bui-mx-7 { + margin-left: var(--bui-space-7); + margin-right: var(--bui-space-7); + } + .md\:bui-mx-8 { + margin-left: var(--bui-space-8); + margin-right: var(--bui-space-8); + } + .md\:bui-mx-9 { + margin-left: var(--bui-space-9); + margin-right: var(--bui-space-9); + } + .md\:bui-mx-10 { + margin-left: var(--bui-space-10); + margin-right: var(--bui-space-10); + } + .md\:bui-mx-11 { + margin-left: var(--bui-space-11); + margin-right: var(--bui-space-11); + } + .md\:bui-mx-12 { + margin-left: var(--bui-space-12); + margin-right: var(--bui-space-12); + } + .md\:bui-mx-13 { + margin-left: var(--bui-space-13); + margin-right: var(--bui-space-13); + } + .md\:bui-mx-14 { + margin-left: var(--bui-space-14); + margin-right: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-mx { + margin-left: var(--mx-lg); + margin-right: var(--mx-lg); + } + .lg\:bui-mx-0\.5 { + margin-left: var(--bui-space-0_5); + margin-right: var(--bui-space-0_5); + } + .lg\:bui-mx-1 { + margin-left: var(--bui-space-1); + margin-right: var(--bui-space-1); + } + .lg\:bui-mx-1\.5 { + margin-left: var(--bui-space-1_5); + margin-right: var(--bui-space-1_5); + } + .lg\:bui-mx-2 { + margin-left: var(--bui-space-2); + margin-right: var(--bui-space-2); + } + .lg\:bui-mx-3 { + margin-left: var(--bui-space-3); + margin-right: var(--bui-space-3); + } + .lg\:bui-mx-4 { + margin-left: var(--bui-space-4); + margin-right: var(--bui-space-4); + } + .lg\:bui-mx-5 { + margin-left: var(--bui-space-5); + margin-right: var(--bui-space-5); + } + .lg\:bui-mx-6 { + margin-left: var(--bui-space-6); + margin-right: var(--bui-space-6); + } + .lg\:bui-mx-7 { + margin-left: var(--bui-space-7); + margin-right: var(--bui-space-7); + } + .lg\:bui-mx-8 { + margin-left: var(--bui-space-8); + margin-right: var(--bui-space-8); + } + .lg\:bui-mx-9 { + margin-left: var(--bui-space-9); + margin-right: var(--bui-space-9); + } + .lg\:bui-mx-10 { + margin-left: var(--bui-space-10); + margin-right: var(--bui-space-10); + } + .lg\:bui-mx-11 { + margin-left: var(--bui-space-11); + margin-right: var(--bui-space-11); + } + .lg\:bui-mx-12 { + margin-left: var(--bui-space-12); + margin-right: var(--bui-space-12); + } + .lg\:bui-mx-13 { + margin-left: var(--bui-space-13); + margin-right: var(--bui-space-13); + } + .lg\:bui-mx-14 { + margin-left: var(--bui-space-14); + margin-right: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-mx { + margin-left: var(--mx-xl); + margin-right: var(--mx-xl); + } + .xl\:bui-mx-0\.5 { + margin-left: var(--bui-space-0_5); + margin-right: var(--bui-space-0_5); + } + .xl\:bui-mx-1 { + margin-left: var(--bui-space-1); + margin-right: var(--bui-space-1); + } + .xl\:bui-mx-1\.5 { + margin-left: var(--bui-space-1_5); + margin-right: var(--bui-space-1_5); + } + .xl\:bui-mx-2 { + margin-left: var(--bui-space-2); + margin-right: var(--bui-space-2); + } + .xl\:bui-mx-3 { + margin-left: var(--bui-space-3); + margin-right: var(--bui-space-3); + } + .xl\:bui-mx-4 { + margin-left: var(--bui-space-4); + margin-right: var(--bui-space-4); + } + .xl\:bui-mx-5 { + margin-left: var(--bui-space-5); + margin-right: var(--bui-space-5); + } + .xl\:bui-mx-6 { + margin-left: var(--bui-space-6); + margin-right: var(--bui-space-6); + } + .xl\:bui-mx-7 { + margin-left: var(--bui-space-7); + margin-right: var(--bui-space-7); + } + .xl\:bui-mx-8 { + margin-left: var(--bui-space-8); + margin-right: var(--bui-space-8); + } + .xl\:bui-mx-9 { + margin-left: var(--bui-space-9); + margin-right: var(--bui-space-9); + } + .xl\:bui-mx-10 { + margin-left: var(--bui-space-10); + margin-right: var(--bui-space-10); + } + .xl\:bui-mx-11 { + margin-left: var(--bui-space-11); + margin-right: var(--bui-space-11); + } + .xl\:bui-mx-12 { + margin-left: var(--bui-space-12); + margin-right: var(--bui-space-12); + } + .xl\:bui-mx-13 { + margin-left: var(--bui-space-13); + margin-right: var(--bui-space-13); + } + .xl\:bui-mx-14 { + margin-left: var(--bui-space-14); + margin-right: var(--bui-space-14); + } + } + .bui-display-none { + display: none; + } + .bui-display-inline { + display: inline; + } + .bui-display-inline-block { + display: inline-block; + } + .bui-display-block { + display: block; + } + @media (width>=640px) { + .xs\:bui-display-none { + display: none; + } + .xs\:bui-display-inline { + display: inline; + } + .xs\:bui-display-inline-block { + display: inline-block; + } + .xs\:bui-display-block { + display: block; + } + } + @media (width>=768px) { + .sm\:bui-display-none { + display: none; + } + .sm\:bui-display-inline { + display: inline; + } + .sm\:bui-display-inline-block { + display: inline-block; + } + .sm\:bui-display-block { + display: block; + } + } + @media (width>=1024px) { + .md\:bui-display-none { + display: none; + } + .md\:bui-display-inline { + display: inline; + } + .md\:bui-display-inline-block { + display: inline-block; + } + .md\:bui-display-block { + display: block; + } + } + @media (width>=1280px) { + .lg\:bui-display-none { + display: none; + } + .lg\:bui-display-inline { + display: inline; + } + .lg\:bui-display-inline-block { + display: inline-block; + } + .lg\:bui-display-block { + display: block; + } + } + @media (width>=1536px) { + .xl\:bui-display-none { + display: none; + } + .xl\:bui-display-inline { + display: inline; + } + .xl\:bui-display-inline-block { + display: inline-block; + } + .xl\:bui-display-block { + display: block; + } + } + .bui-w { + width: var(--width); + } + .bui-min-w { + min-width: var(--min-width); + } + .bui-max-w { + max-width: var(--max-width); + } + @media (width>=640px) { + .xs\:bui-w { + width: var(--width); + } + .xs\:bui-min-w { + min-width: var(--min-width); + } + .xs\:bui-max-w { + max-width: var(--max-width); + } + } + @media (width>=768px) { + .sm\:bui-w { + width: var(--width); + } + .sm\:bui-min-w { + min-width: var(--min-width); + } + .sm\:bui-max-w { + max-width: var(--max-width); + } + } + @media (width>=1024px) { + .md\:bui-w { + width: var(--width); + } + .md\:bui-min-w { + min-width: var(--min-width); + } + .md\:bui-max-w { + max-width: var(--max-width); + } + } + @media (width>=1280px) { + .lg\:bui-w { + width: var(--width); + } + .lg\:bui-min-w { + min-width: var(--min-width); + } + .lg\:bui-max-w { + max-width: var(--max-width); + } + } + @media (width>=1536px) { + .xl\:bui-w { + width: var(--width); + } + .xl\:bui-min-w { + min-width: var(--min-width); + } + .xl\:bui-max-w { + max-width: var(--max-width); + } + } + .bui-h { + height: var(--height); + } + .bui-min-h { + min-height: var(--min-height); + } + .bui-max-h { + max-height: var(--max-height); + } + @media (width>=640px) { + .xs\:bui-h { + height: var(--height); + } + .xs\:bui-min-h { + min-height: var(--min-height); + } + .xs\:bui-max-h { + max-height: var(--max-height); + } + } + @media (width>=768px) { + .sm\:bui-h { + height: var(--height); + } + .sm\:bui-min-h { + min-height: var(--min-height); + } + .sm\:bui-max-h { + max-height: var(--max-height); + } + } + @media (width>=1024px) { + .md\:bui-h { + height: var(--height); + } + .md\:bui-min-h { + min-height: var(--min-height); + } + .md\:bui-max-h { + max-height: var(--max-height); + } + } + @media (width>=1280px) { + .lg\:bui-h { + height: var(--height); + } + .lg\:bui-min-h { + min-height: var(--min-height); + } + .lg\:bui-max-h { + max-height: var(--max-height); + } + } + @media (width>=1536px) { + .xl\:bui-h { + height: var(--height); + } + .xl\:bui-min-h { + min-height: var(--min-height); + } + .xl\:bui-max-h { + max-height: var(--max-height); + } + } + .bui-position-absolute { + position: absolute; + } + .bui-position-fixed { + position: fixed; + } + .bui-position-sticky { + position: sticky; + } + .bui-position-relative { + position: relative; + } + .bui-position-static { + position: static; + } + @media (width>=640px) { + .xs\:bui-position-absolute { + position: absolute; + } + .xs\:bui-position-fixed { + position: fixed; + } + .xs\:bui-position-sticky { + position: sticky; + } + .xs\:bui-position-relative { + position: relative; + } + .xs\:bui-position-static { + position: static; + } + } + @media (width>=768px) { + .sm\:bui-position-absolute { + position: absolute; + } + .sm\:bui-position-fixed { + position: fixed; + } + .sm\:bui-position-sticky { + position: sticky; + } + .sm\:bui-position-relative { + position: relative; + } + .sm\:bui-position-static { + position: static; + } + } + @media (width>=1024px) { + .md\:bui-position-absolute { + position: absolute; + } + .md\:bui-position-fixed { + position: fixed; + } + .md\:bui-position-sticky { + position: sticky; + } + .md\:bui-position-relative { + position: relative; + } + .md\:bui-position-static { + position: static; + } + } + @media (width>=1280px) { + .lg\:bui-position-absolute { + position: absolute; + } + .lg\:bui-position-fixed { + position: fixed; + } + .lg\:bui-position-sticky { + position: sticky; + } + .lg\:bui-position-relative { + position: relative; + } + .lg\:bui-position-static { + position: static; + } + } + @media (width>=1536px) { + .xl\:bui-position-absolute { + position: absolute; + } + .xl\:bui-position-fixed { + position: fixed; + } + .xl\:bui-position-sticky { + position: sticky; + } + .xl\:bui-position-relative { + position: relative; + } + .xl\:bui-position-static { + position: static; + } + } + .bui-columns-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + .bui-columns-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + .bui-columns-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .bui-columns-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + .bui-columns-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + .bui-columns-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + .bui-columns-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + .bui-columns-8 { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + .bui-columns-9 { + grid-template-columns: repeat(9, minmax(0, 1fr)); + } + .bui-columns-10 { + grid-template-columns: repeat(10, minmax(0, 1fr)); + } + .bui-columns-11 { + grid-template-columns: repeat(11, minmax(0, 1fr)); + } + .bui-columns-12 { + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + .bui-columns-auto { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + .bui-col-span-1 { + grid-column: span 1 / span 1; + } + .bui-col-span-2 { + grid-column: span 2 / span 2; + } + .bui-col-span-3 { + grid-column: span 3 / span 3; + } + .bui-col-span-4 { + grid-column: span 4 / span 4; + } + .bui-col-span-5 { + grid-column: span 5 / span 5; + } + .bui-col-span-6 { + grid-column: span 6 / span 6; + } + .bui-col-span-7 { + grid-column: span 7 / span 7; + } + .bui-col-span-8 { + grid-column: span 8 / span 8; + } + .bui-col-span-9 { + grid-column: span 9 / span 9; + } + .bui-col-span-10 { + grid-column: span 10 / span 10; + } + .bui-col-span-11 { + grid-column: span 11 / span 11; + } + .bui-col-span-12 { + grid-column: span 12 / span 12; + } + .bui-col-span-auto { + grid-column: span auto/span auto; + } + .bui-col-start-1 { + grid-column-start: 1; + } + .bui-col-start-2 { + grid-column-start: 2; + } + .bui-col-start-3 { + grid-column-start: 3; + } + .bui-col-start-4 { + grid-column-start: 4; + } + .bui-col-start-5 { + grid-column-start: 5; + } + .bui-col-start-6 { + grid-column-start: 6; + } + .bui-col-start-7 { + grid-column-start: 7; + } + .bui-col-start-8 { + grid-column-start: 8; + } + .bui-col-start-9 { + grid-column-start: 9; + } + .bui-col-start-10 { + grid-column-start: 10; + } + .bui-col-start-11 { + grid-column-start: 11; + } + .bui-col-start-12 { + grid-column-start: 12; + } + .bui-col-start-13 { + grid-column-start: 13; + } + .bui-col-start-auto { + grid-column-start: auto; + } + .bui-col-end-1 { + grid-column-end: 1; + } + .bui-col-end-2 { + grid-column-end: 2; + } + .bui-col-end-3 { + grid-column-end: 3; + } + .bui-col-end-4 { + grid-column-end: 4; + } + .bui-col-end-5 { + grid-column-end: 5; + } + .bui-col-end-6 { + grid-column-end: 6; + } + .bui-col-end-7 { + grid-column-end: 7; + } + .bui-col-end-8 { + grid-column-end: 8; + } + .bui-col-end-9 { + grid-column-end: 9; + } + .bui-col-end-10 { + grid-column-end: 10; + } + .bui-col-end-11 { + grid-column-end: 11; + } + .bui-col-end-12 { + grid-column-end: 12; + } + .bui-col-end-13 { + grid-column-end: 13; + } + .bui-col-end-auto { + grid-column-end: auto; + } + .bui-row-span-1 { + grid-row: span 1 / span 1; + } + .bui-row-span-2 { + grid-row: span 2 / span 2; + } + .bui-row-span-3 { + grid-row: span 3 / span 3; + } + .bui-row-span-4 { + grid-row: span 4 / span 4; + } + .bui-row-span-5 { + grid-row: span 5 / span 5; + } + .bui-row-span-6 { + grid-row: span 6 / span 6; + } + .bui-row-span-7 { + grid-row: span 7 / span 7; + } + .bui-row-span-8 { + grid-row: span 8 / span 8; + } + .bui-row-span-9 { + grid-row: span 9 / span 9; + } + .bui-row-span-10 { + grid-row: span 10 / span 10; + } + .bui-row-span-11 { + grid-row: span 11 / span 11; + } + .bui-row-span-12 { + grid-row: span 12 / span 12; + } + .bui-row-span-auto { + grid-row: span auto/span auto; + } + @media (width>=640px) { + .xs\:bui-columns-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + .xs\:bui-columns-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + .xs\:bui-columns-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .xs\:bui-columns-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + .xs\:bui-columns-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + .xs\:bui-columns-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + .xs\:bui-columns-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + .xs\:bui-columns-8 { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + .xs\:bui-columns-9 { + grid-template-columns: repeat(9, minmax(0, 1fr)); + } + .xs\:bui-columns-10 { + grid-template-columns: repeat(10, minmax(0, 1fr)); + } + .xs\:bui-columns-11 { + grid-template-columns: repeat(11, minmax(0, 1fr)); + } + .xs\:bui-columns-12 { + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + .xs\:bui-columns-auto { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + .xs\:bui-col-span-1 { + grid-column: span 1 / span 1; + } + .xs\:bui-col-span-2 { + grid-column: span 2 / span 2; + } + .xs\:bui-col-span-3 { + grid-column: span 3 / span 3; + } + .xs\:bui-col-span-4 { + grid-column: span 4 / span 4; + } + .xs\:bui-col-span-5 { + grid-column: span 5 / span 5; + } + .xs\:bui-col-span-6 { + grid-column: span 6 / span 6; + } + .xs\:bui-col-span-7 { + grid-column: span 7 / span 7; + } + .xs\:bui-col-span-8 { + grid-column: span 8 / span 8; + } + .xs\:bui-col-span-9 { + grid-column: span 9 / span 9; + } + .xs\:bui-col-span-10 { + grid-column: span 10 / span 10; + } + .xs\:bui-col-span-11 { + grid-column: span 11 / span 11; + } + .xs\:bui-col-span-12 { + grid-column: span 12 / span 12; + } + .xs\:bui-col-span-auto { + grid-column: span auto/span auto; + } + .xs\:bui-col-start-1 { + grid-column-start: 1; + } + .xs\:bui-col-start-2 { + grid-column-start: 2; + } + .xs\:bui-col-start-3 { + grid-column-start: 3; + } + .xs\:bui-col-start-4 { + grid-column-start: 4; + } + .xs\:bui-col-start-5 { + grid-column-start: 5; + } + .xs\:bui-col-start-6 { + grid-column-start: 6; + } + .xs\:bui-col-start-7 { + grid-column-start: 7; + } + .xs\:bui-col-start-8 { + grid-column-start: 8; + } + .xs\:bui-col-start-9 { + grid-column-start: 9; + } + .xs\:bui-col-start-10 { + grid-column-start: 10; + } + .xs\:bui-col-start-11 { + grid-column-start: 11; + } + .xs\:bui-col-start-12 { + grid-column-start: 12; + } + .xs\:bui-col-start-13 { + grid-column-start: 13; + } + .xs\:bui-col-start-auto { + grid-column-start: auto; + } + .xs\:bui-col-end-1 { + grid-column-end: 1; + } + .xs\:bui-col-end-2 { + grid-column-end: 2; + } + .xs\:bui-col-end-3 { + grid-column-end: 3; + } + .xs\:bui-col-end-4 { + grid-column-end: 4; + } + .xs\:bui-col-end-5 { + grid-column-end: 5; + } + .xs\:bui-col-end-6 { + grid-column-end: 6; + } + .xs\:bui-col-end-7 { + grid-column-end: 7; + } + .xs\:bui-col-end-8 { + grid-column-end: 8; + } + .xs\:bui-col-end-9 { + grid-column-end: 9; + } + .xs\:bui-col-end-10 { + grid-column-end: 10; + } + .xs\:bui-col-end-11 { + grid-column-end: 11; + } + .xs\:bui-col-end-12 { + grid-column-end: 12; + } + .xs\:bui-col-end-13 { + grid-column-end: 13; + } + .xs\:bui-col-end-auto { + grid-column-end: auto; + } + .xs\:bui-row-span-1 { + grid-row: span 1 / span 1; + } + .xs\:bui-row-span-2 { + grid-row: span 2 / span 2; + } + .xs\:bui-row-span-3 { + grid-row: span 3 / span 3; + } + .xs\:bui-row-span-4 { + grid-row: span 4 / span 4; + } + .xs\:bui-row-span-5 { + grid-row: span 5 / span 5; + } + .xs\:bui-row-span-6 { + grid-row: span 6 / span 6; + } + .xs\:bui-row-span-7 { + grid-row: span 7 / span 7; + } + .xs\:bui-row-span-8 { + grid-row: span 8 / span 8; + } + .xs\:bui-row-span-9 { + grid-row: span 9 / span 9; + } + .xs\:bui-row-span-10 { + grid-row: span 10 / span 10; + } + .xs\:bui-row-span-11 { + grid-row: span 11 / span 11; + } + .xs\:bui-row-span-12 { + grid-row: span 12 / span 12; + } + .xs\:bui-row-span-auto { + grid-row: span auto/span auto; + } + } + @media (width>=768px) { + .sm\:bui-columns-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + .sm\:bui-columns-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + .sm\:bui-columns-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .sm\:bui-columns-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + .sm\:bui-columns-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + .sm\:bui-columns-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + .sm\:bui-columns-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + .sm\:bui-columns-8 { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + .sm\:bui-columns-9 { + grid-template-columns: repeat(9, minmax(0, 1fr)); + } + .sm\:bui-columns-10 { + grid-template-columns: repeat(10, minmax(0, 1fr)); + } + .sm\:bui-columns-11 { + grid-template-columns: repeat(11, minmax(0, 1fr)); + } + .sm\:bui-columns-12 { + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + .sm\:bui-columns-auto { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + .sm\:bui-col-span-1 { + grid-column: span 1 / span 1; + } + .sm\:bui-col-span-2 { + grid-column: span 2 / span 2; + } + .sm\:bui-col-span-3 { + grid-column: span 3 / span 3; + } + .sm\:bui-col-span-4 { + grid-column: span 4 / span 4; + } + .sm\:bui-col-span-5 { + grid-column: span 5 / span 5; + } + .sm\:bui-col-span-6 { + grid-column: span 6 / span 6; + } + .sm\:bui-col-span-7 { + grid-column: span 7 / span 7; + } + .sm\:bui-col-span-8 { + grid-column: span 8 / span 8; + } + .sm\:bui-col-span-9 { + grid-column: span 9 / span 9; + } + .sm\:bui-col-span-10 { + grid-column: span 10 / span 10; + } + .sm\:bui-col-span-11 { + grid-column: span 11 / span 11; + } + .sm\:bui-col-span-12 { + grid-column: span 12 / span 12; + } + .sm\:bui-col-span-auto { + grid-column: span auto/span auto; + } + .sm\:bui-col-start-1 { + grid-column-start: 1; + } + .sm\:bui-col-start-2 { + grid-column-start: 2; + } + .sm\:bui-col-start-3 { + grid-column-start: 3; + } + .sm\:bui-col-start-4 { + grid-column-start: 4; + } + .sm\:bui-col-start-5 { + grid-column-start: 5; + } + .sm\:bui-col-start-6 { + grid-column-start: 6; + } + .sm\:bui-col-start-7 { + grid-column-start: 7; + } + .sm\:bui-col-start-8 { + grid-column-start: 8; + } + .sm\:bui-col-start-9 { + grid-column-start: 9; + } + .sm\:bui-col-start-10 { + grid-column-start: 10; + } + .sm\:bui-col-start-11 { + grid-column-start: 11; + } + .sm\:bui-col-start-12 { + grid-column-start: 12; + } + .sm\:bui-col-start-13 { + grid-column-start: 13; + } + .sm\:bui-col-start-auto { + grid-column-start: auto; + } + .sm\:bui-col-end-1 { + grid-column-end: 1; + } + .sm\:bui-col-end-2 { + grid-column-end: 2; + } + .sm\:bui-col-end-3 { + grid-column-end: 3; + } + .sm\:bui-col-end-4 { + grid-column-end: 4; + } + .sm\:bui-col-end-5 { + grid-column-end: 5; + } + .sm\:bui-col-end-6 { + grid-column-end: 6; + } + .sm\:bui-col-end-7 { + grid-column-end: 7; + } + .sm\:bui-col-end-8 { + grid-column-end: 8; + } + .sm\:bui-col-end-9 { + grid-column-end: 9; + } + .sm\:bui-col-end-10 { + grid-column-end: 10; + } + .sm\:bui-col-end-11 { + grid-column-end: 11; + } + .sm\:bui-col-end-12 { + grid-column-end: 12; + } + .sm\:bui-col-end-13 { + grid-column-end: 13; + } + .sm\:bui-col-end-auto { + grid-column-end: auto; + } + .sm\:bui-row-span-1 { + grid-row: span 1 / span 1; + } + .sm\:bui-row-span-2 { + grid-row: span 2 / span 2; + } + .sm\:bui-row-span-3 { + grid-row: span 3 / span 3; + } + .sm\:bui-row-span-4 { + grid-row: span 4 / span 4; + } + .sm\:bui-row-span-5 { + grid-row: span 5 / span 5; + } + .sm\:bui-row-span-6 { + grid-row: span 6 / span 6; + } + .sm\:bui-row-span-7 { + grid-row: span 7 / span 7; + } + .sm\:bui-row-span-8 { + grid-row: span 8 / span 8; + } + .sm\:bui-row-span-9 { + grid-row: span 9 / span 9; + } + .sm\:bui-row-span-10 { + grid-row: span 10 / span 10; + } + .sm\:bui-row-span-11 { + grid-row: span 11 / span 11; + } + .sm\:bui-row-span-12 { + grid-row: span 12 / span 12; + } + .sm\:bui-row-span-auto { + grid-row: span auto/span auto; + } + } + @media (width>=1024px) { + .md\:bui-columns-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + .md\:bui-columns-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + .md\:bui-columns-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .md\:bui-columns-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + .md\:bui-columns-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + .md\:bui-columns-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + .md\:bui-columns-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + .md\:bui-columns-8 { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + .md\:bui-columns-9 { + grid-template-columns: repeat(9, minmax(0, 1fr)); + } + .md\:bui-columns-10 { + grid-template-columns: repeat(10, minmax(0, 1fr)); + } + .md\:bui-columns-11 { + grid-template-columns: repeat(11, minmax(0, 1fr)); + } + .md\:bui-columns-12 { + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + .md\:bui-columns-auto { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + .md\:bui-col-span-1 { + grid-column: span 1 / span 1; + } + .md\:bui-col-span-2 { + grid-column: span 2 / span 2; + } + .md\:bui-col-span-3 { + grid-column: span 3 / span 3; + } + .md\:bui-col-span-4 { + grid-column: span 4 / span 4; + } + .md\:bui-col-span-5 { + grid-column: span 5 / span 5; + } + .md\:bui-col-span-6 { + grid-column: span 6 / span 6; + } + .md\:bui-col-span-7 { + grid-column: span 7 / span 7; + } + .md\:bui-col-span-8 { + grid-column: span 8 / span 8; + } + .md\:bui-col-span-9 { + grid-column: span 9 / span 9; + } + .md\:bui-col-span-10 { + grid-column: span 10 / span 10; + } + .md\:bui-col-span-11 { + grid-column: span 11 / span 11; + } + .md\:bui-col-span-12 { + grid-column: span 12 / span 12; + } + .md\:bui-col-span-auto { + grid-column: span auto/span auto; + } + .md\:bui-col-start-1 { + grid-column-start: 1; + } + .md\:bui-col-start-2 { + grid-column-start: 2; + } + .md\:bui-col-start-3 { + grid-column-start: 3; + } + .md\:bui-col-start-4 { + grid-column-start: 4; + } + .md\:bui-col-start-5 { + grid-column-start: 5; + } + .md\:bui-col-start-6 { + grid-column-start: 6; + } + .md\:bui-col-start-7 { + grid-column-start: 7; + } + .md\:bui-col-start-8 { + grid-column-start: 8; + } + .md\:bui-col-start-9 { + grid-column-start: 9; + } + .md\:bui-col-start-10 { + grid-column-start: 10; + } + .md\:bui-col-start-11 { + grid-column-start: 11; + } + .md\:bui-col-start-12 { + grid-column-start: 12; + } + .md\:bui-col-start-13 { + grid-column-start: 13; + } + .md\:bui-col-start-auto { + grid-column-start: auto; + } + .md\:bui-col-end-1 { + grid-column-end: 1; + } + .md\:bui-col-end-2 { + grid-column-end: 2; + } + .md\:bui-col-end-3 { + grid-column-end: 3; + } + .md\:bui-col-end-4 { + grid-column-end: 4; + } + .md\:bui-col-end-5 { + grid-column-end: 5; + } + .md\:bui-col-end-6 { + grid-column-end: 6; + } + .md\:bui-col-end-7 { + grid-column-end: 7; + } + .md\:bui-col-end-8 { + grid-column-end: 8; + } + .md\:bui-col-end-9 { + grid-column-end: 9; + } + .md\:bui-col-end-10 { + grid-column-end: 10; + } + .md\:bui-col-end-11 { + grid-column-end: 11; + } + .md\:bui-col-end-12 { + grid-column-end: 12; + } + .md\:bui-col-end-13 { + grid-column-end: 13; + } + .md\:bui-col-end-auto { + grid-column-end: auto; + } + .md\:bui-row-span-1 { + grid-row: span 1 / span 1; + } + .md\:bui-row-span-2 { + grid-row: span 2 / span 2; + } + .md\:bui-row-span-3 { + grid-row: span 3 / span 3; + } + .md\:bui-row-span-4 { + grid-row: span 4 / span 4; + } + .md\:bui-row-span-5 { + grid-row: span 5 / span 5; + } + .md\:bui-row-span-6 { + grid-row: span 6 / span 6; + } + .md\:bui-row-span-7 { + grid-row: span 7 / span 7; + } + .md\:bui-row-span-8 { + grid-row: span 8 / span 8; + } + .md\:bui-row-span-9 { + grid-row: span 9 / span 9; + } + .md\:bui-row-span-10 { + grid-row: span 10 / span 10; + } + .md\:bui-row-span-11 { + grid-row: span 11 / span 11; + } + .md\:bui-row-span-12 { + grid-row: span 12 / span 12; + } + .md\:bui-row-span-auto { + grid-row: span auto/span auto; + } + } + @media (width>=1280px) { + .lg\:bui-columns-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + .lg\:bui-columns-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + .lg\:bui-columns-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .lg\:bui-columns-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + .lg\:bui-columns-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + .lg\:bui-columns-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + .lg\:bui-columns-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + .lg\:bui-columns-8 { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + .lg\:bui-columns-9 { + grid-template-columns: repeat(9, minmax(0, 1fr)); + } + .lg\:bui-columns-10 { + grid-template-columns: repeat(10, minmax(0, 1fr)); + } + .lg\:bui-columns-11 { + grid-template-columns: repeat(11, minmax(0, 1fr)); + } + .lg\:bui-columns-12 { + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + .lg\:bui-columns-auto { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + .lg\:bui-col-span-1 { + grid-column: span 1 / span 1; + } + .lg\:bui-col-span-2 { + grid-column: span 2 / span 2; + } + .lg\:bui-col-span-3 { + grid-column: span 3 / span 3; + } + .lg\:bui-col-span-4 { + grid-column: span 4 / span 4; + } + .lg\:bui-col-span-5 { + grid-column: span 5 / span 5; + } + .lg\:bui-col-span-6 { + grid-column: span 6 / span 6; + } + .lg\:bui-col-span-7 { + grid-column: span 7 / span 7; + } + .lg\:bui-col-span-8 { + grid-column: span 8 / span 8; + } + .lg\:bui-col-span-9 { + grid-column: span 9 / span 9; + } + .lg\:bui-col-span-10 { + grid-column: span 10 / span 10; + } + .lg\:bui-col-span-11 { + grid-column: span 11 / span 11; + } + .lg\:bui-col-span-12 { + grid-column: span 12 / span 12; + } + .lg\:bui-col-span-auto { + grid-column: span auto/span auto; + } + .lg\:bui-col-start-1 { + grid-column-start: 1; + } + .lg\:bui-col-start-2 { + grid-column-start: 2; + } + .lg\:bui-col-start-3 { + grid-column-start: 3; + } + .lg\:bui-col-start-4 { + grid-column-start: 4; + } + .lg\:bui-col-start-5 { + grid-column-start: 5; + } + .lg\:bui-col-start-6 { + grid-column-start: 6; + } + .lg\:bui-col-start-7 { + grid-column-start: 7; + } + .lg\:bui-col-start-8 { + grid-column-start: 8; + } + .lg\:bui-col-start-9 { + grid-column-start: 9; + } + .lg\:bui-col-start-10 { + grid-column-start: 10; + } + .lg\:bui-col-start-11 { + grid-column-start: 11; + } + .lg\:bui-col-start-12 { + grid-column-start: 12; + } + .lg\:bui-col-start-13 { + grid-column-start: 13; + } + .lg\:bui-col-start-auto { + grid-column-start: auto; + } + .lg\:bui-col-end-1 { + grid-column-end: 1; + } + .lg\:bui-col-end-2 { + grid-column-end: 2; + } + .lg\:bui-col-end-3 { + grid-column-end: 3; + } + .lg\:bui-col-end-4 { + grid-column-end: 4; + } + .lg\:bui-col-end-5 { + grid-column-end: 5; + } + .lg\:bui-col-end-6 { + grid-column-end: 6; + } + .lg\:bui-col-end-7 { + grid-column-end: 7; + } + .lg\:bui-col-end-8 { + grid-column-end: 8; + } + .lg\:bui-col-end-9 { + grid-column-end: 9; + } + .lg\:bui-col-end-10 { + grid-column-end: 10; + } + .lg\:bui-col-end-11 { + grid-column-end: 11; + } + .lg\:bui-col-end-12 { + grid-column-end: 12; + } + .lg\:bui-col-end-13 { + grid-column-end: 13; + } + .lg\:bui-col-end-auto { + grid-column-end: auto; + } + .lg\:bui-row-span-1 { + grid-row: span 1 / span 1; + } + .lg\:bui-row-span-2 { + grid-row: span 2 / span 2; + } + .lg\:bui-row-span-3 { + grid-row: span 3 / span 3; + } + .lg\:bui-row-span-4 { + grid-row: span 4 / span 4; + } + .lg\:bui-row-span-5 { + grid-row: span 5 / span 5; + } + .lg\:bui-row-span-6 { + grid-row: span 6 / span 6; + } + .lg\:bui-row-span-7 { + grid-row: span 7 / span 7; + } + .lg\:bui-row-span-8 { + grid-row: span 8 / span 8; + } + .lg\:bui-row-span-9 { + grid-row: span 9 / span 9; + } + .lg\:bui-row-span-10 { + grid-row: span 10 / span 10; + } + .lg\:bui-row-span-11 { + grid-row: span 11 / span 11; + } + .lg\:bui-row-span-12 { + grid-row: span 12 / span 12; + } + .lg\:bui-row-span-auto { + grid-row: span auto/span auto; + } + } + @media (width>=1536px) { + .xl\:bui-columns-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + .xl\:bui-columns-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + .xl\:bui-columns-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .xl\:bui-columns-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + .xl\:bui-columns-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + .xl\:bui-columns-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + .xl\:bui-columns-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + .xl\:bui-columns-8 { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + .xl\:bui-columns-9 { + grid-template-columns: repeat(9, minmax(0, 1fr)); + } + .xl\:bui-columns-10 { + grid-template-columns: repeat(10, minmax(0, 1fr)); + } + .xl\:bui-columns-11 { + grid-template-columns: repeat(11, minmax(0, 1fr)); + } + .xl\:bui-columns-12 { + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + .xl\:bui-columns-auto { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + .xl\:bui-col-span-1 { + grid-column: span 1 / span 1; + } + .xl\:bui-col-span-2 { + grid-column: span 2 / span 2; + } + .xl\:bui-col-span-3 { + grid-column: span 3 / span 3; + } + .xl\:bui-col-span-4 { + grid-column: span 4 / span 4; + } + .xl\:bui-col-span-5 { + grid-column: span 5 / span 5; + } + .xl\:bui-col-span-6 { + grid-column: span 6 / span 6; + } + .xl\:bui-col-span-7 { + grid-column: span 7 / span 7; + } + .xl\:bui-col-span-8 { + grid-column: span 8 / span 8; + } + .xl\:bui-col-span-9 { + grid-column: span 9 / span 9; + } + .xl\:bui-col-span-10 { + grid-column: span 10 / span 10; + } + .xl\:bui-col-span-11 { + grid-column: span 11 / span 11; + } + .xl\:bui-col-span-12 { + grid-column: span 12 / span 12; + } + .xl\:bui-col-span-auto { + grid-column: span auto/span auto; + } + .xl\:bui-col-start-1 { + grid-column-start: 1; + } + .xl\:bui-col-start-2 { + grid-column-start: 2; + } + .xl\:bui-col-start-3 { + grid-column-start: 3; + } + .xl\:bui-col-start-4 { + grid-column-start: 4; + } + .xl\:bui-col-start-5 { + grid-column-start: 5; + } + .xl\:bui-col-start-6 { + grid-column-start: 6; + } + .xl\:bui-col-start-7 { + grid-column-start: 7; + } + .xl\:bui-col-start-8 { + grid-column-start: 8; + } + .xl\:bui-col-start-9 { + grid-column-start: 9; + } + .xl\:bui-col-start-10 { + grid-column-start: 10; + } + .xl\:bui-col-start-11 { + grid-column-start: 11; + } + .xl\:bui-col-start-12 { + grid-column-start: 12; + } + .xl\:bui-col-start-13 { + grid-column-start: 13; + } + .xl\:bui-col-start-auto { + grid-column-start: auto; + } + .xl\:bui-col-end-1 { + grid-column-end: 1; + } + .xl\:bui-col-end-2 { + grid-column-end: 2; + } + .xl\:bui-col-end-3 { + grid-column-end: 3; + } + .xl\:bui-col-end-4 { + grid-column-end: 4; + } + .xl\:bui-col-end-5 { + grid-column-end: 5; + } + .xl\:bui-col-end-6 { + grid-column-end: 6; + } + .xl\:bui-col-end-7 { + grid-column-end: 7; + } + .xl\:bui-col-end-8 { + grid-column-end: 8; + } + .xl\:bui-col-end-9 { + grid-column-end: 9; + } + .xl\:bui-col-end-10 { + grid-column-end: 10; + } + .xl\:bui-col-end-11 { + grid-column-end: 11; + } + .xl\:bui-col-end-12 { + grid-column-end: 12; + } + .xl\:bui-col-end-13 { + grid-column-end: 13; + } + .xl\:bui-col-end-auto { + grid-column-end: auto; + } + .xl\:bui-row-span-1 { + grid-row: span 1 / span 1; + } + .xl\:bui-row-span-2 { + grid-row: span 2 / span 2; + } + .xl\:bui-row-span-3 { + grid-row: span 3 / span 3; + } + .xl\:bui-row-span-4 { + grid-row: span 4 / span 4; + } + .xl\:bui-row-span-5 { + grid-row: span 5 / span 5; + } + .xl\:bui-row-span-6 { + grid-row: span 6 / span 6; + } + .xl\:bui-row-span-7 { + grid-row: span 7 / span 7; + } + .xl\:bui-row-span-8 { + grid-row: span 8 / span 8; + } + .xl\:bui-row-span-9 { + grid-row: span 9 / span 9; + } + .xl\:bui-row-span-10 { + grid-row: span 10 / span 10; + } + .xl\:bui-row-span-11 { + grid-row: span 11 / span 11; + } + .xl\:bui-row-span-12 { + grid-row: span 12 / span 12; + } + .xl\:bui-row-span-auto { + grid-row: span auto/span auto; + } + } + .bui-gap { + gap: var(--gap); + } + .bui-gap-0\.5 { + gap: var(--bui-space-0_5); + } + .bui-gap-1 { + gap: var(--bui-space-1); + } + .bui-gap-1\.5 { + gap: var(--bui-space-1_5); + } + .bui-gap-2 { + gap: var(--bui-space-2); + } + .bui-gap-3 { + gap: var(--bui-space-3); + } + .bui-gap-4 { + gap: var(--bui-space-4); + } + .bui-gap-5 { + gap: var(--bui-space-5); + } + .bui-gap-6 { + gap: var(--bui-space-6); + } + .bui-gap-7 { + gap: var(--bui-space-7); + } + .bui-gap-8 { + gap: var(--bui-space-8); + } + .bui-gap-9 { + gap: var(--bui-space-9); + } + .bui-gap-10 { + gap: var(--bui-space-10); + } + .bui-gap-11 { + gap: var(--bui-space-11); + } + .bui-gap-12 { + gap: var(--bui-space-12); + } + .bui-gap-13 { + gap: var(--bui-space-13); + } + .bui-gap-14 { + gap: var(--bui-space-14); + } + @media (width>=640px) { + .xs\:bui-gap { + gap: var(--gap-xs); + } + .xs\:bui-gap-0\.5 { + gap: var(--bui-space-0_5); + } + .xs\:bui-gap-1 { + gap: var(--bui-space-1); + } + .xs\:bui-gap-1\.5 { + gap: var(--bui-space-1_5); + } + .xs\:bui-gap-2 { + gap: var(--bui-space-2); + } + .xs\:bui-gap-3 { + gap: var(--bui-space-3); + } + .xs\:bui-gap-4 { + gap: var(--bui-space-4); + } + .xs\:bui-gap-5 { + gap: var(--bui-space-5); + } + .xs\:bui-gap-6 { + gap: var(--bui-space-6); + } + .xs\:bui-gap-7 { + gap: var(--bui-space-7); + } + .xs\:bui-gap-8 { + gap: var(--bui-space-8); + } + .xs\:bui-gap-9 { + gap: var(--bui-space-9); + } + .xs\:bui-gap-10 { + gap: var(--bui-space-10); + } + .xs\:bui-gap-11 { + gap: var(--bui-space-11); + } + .xs\:bui-gap-12 { + gap: var(--bui-space-12); + } + .xs\:bui-gap-13 { + gap: var(--bui-space-13); + } + .xs\:bui-gap-14 { + gap: var(--bui-space-14); + } + } + @media (width>=768px) { + .sm\:bui-gap { + gap: var(--gap-sm); + } + .sm\:bui-gap-0\.5 { + gap: var(--bui-space-0_5); + } + .sm\:bui-gap-1 { + gap: var(--bui-space-1); + } + .sm\:bui-gap-1\.5 { + gap: var(--bui-space-1_5); + } + .sm\:bui-gap-2 { + gap: var(--bui-space-2); + } + .sm\:bui-gap-3 { + gap: var(--bui-space-3); + } + .sm\:bui-gap-4 { + gap: var(--bui-space-4); + } + .sm\:bui-gap-5 { + gap: var(--bui-space-5); + } + .sm\:bui-gap-6 { + gap: var(--bui-space-6); + } + .sm\:bui-gap-7 { + gap: var(--bui-space-7); + } + .sm\:bui-gap-8 { + gap: var(--bui-space-8); + } + .sm\:bui-gap-9 { + gap: var(--bui-space-9); + } + .sm\:bui-gap-10 { + gap: var(--bui-space-10); + } + .sm\:bui-gap-11 { + gap: var(--bui-space-11); + } + .sm\:bui-gap-12 { + gap: var(--bui-space-12); + } + .sm\:bui-gap-13 { + gap: var(--bui-space-13); + } + .sm\:bui-gap-14 { + gap: var(--bui-space-14); + } + } + @media (width>=1024px) { + .md\:bui-gap { + gap: var(--gap-md); + } + .md\:bui-gap-0\.5 { + gap: var(--bui-space-0_5); + } + .md\:bui-gap-1 { + gap: var(--bui-space-1); + } + .md\:bui-gap-1\.5 { + gap: var(--bui-space-1_5); + } + .md\:bui-gap-2 { + gap: var(--bui-space-2); + } + .md\:bui-gap-3 { + gap: var(--bui-space-3); + } + .md\:bui-gap-4 { + gap: var(--bui-space-4); + } + .md\:bui-gap-5 { + gap: var(--bui-space-5); + } + .md\:bui-gap-6 { + gap: var(--bui-space-6); + } + .md\:bui-gap-7 { + gap: var(--bui-space-7); + } + .md\:bui-gap-8 { + gap: var(--bui-space-8); + } + .md\:bui-gap-9 { + gap: var(--bui-space-9); + } + .md\:bui-gap-10 { + gap: var(--bui-space-10); + } + .md\:bui-gap-11 { + gap: var(--bui-space-11); + } + .md\:bui-gap-12 { + gap: var(--bui-space-12); + } + .md\:bui-gap-13 { + gap: var(--bui-space-13); + } + .md\:bui-gap-14 { + gap: var(--bui-space-14); + } + } + @media (width>=1280px) { + .lg\:bui-gap { + gap: var(--gap-lg); + } + .lg\:bui-gap-0\.5 { + gap: var(--bui-space-0_5); + } + .lg\:bui-gap-1 { + gap: var(--bui-space-1); + } + .lg\:bui-gap-1\.5 { + gap: var(--bui-space-1_5); + } + .lg\:bui-gap-2 { + gap: var(--bui-space-2); + } + .lg\:bui-gap-3 { + gap: var(--bui-space-3); + } + .lg\:bui-gap-4 { + gap: var(--bui-space-4); + } + .lg\:bui-gap-5 { + gap: var(--bui-space-5); + } + .lg\:bui-gap-6 { + gap: var(--bui-space-6); + } + .lg\:bui-gap-7 { + gap: var(--bui-space-7); + } + .lg\:bui-gap-8 { + gap: var(--bui-space-8); + } + .lg\:bui-gap-9 { + gap: var(--bui-space-9); + } + .lg\:bui-gap-10 { + gap: var(--bui-space-10); + } + .lg\:bui-gap-11 { + gap: var(--bui-space-11); + } + .lg\:bui-gap-12 { + gap: var(--bui-space-12); + } + .lg\:bui-gap-13 { + gap: var(--bui-space-13); + } + .lg\:bui-gap-14 { + gap: var(--bui-space-14); + } + } + @media (width>=1536px) { + .xl\:bui-gap { + gap: var(--gap-xl); + } + .xl\:bui-gap-0\.5 { + gap: var(--bui-space-0_5); + } + .xl\:bui-gap-1 { + gap: var(--bui-space-1); + } + .xl\:bui-gap-1\.5 { + gap: var(--bui-space-1_5); + } + .xl\:bui-gap-2 { + gap: var(--bui-space-2); + } + .xl\:bui-gap-3 { + gap: var(--bui-space-3); + } + .xl\:bui-gap-4 { + gap: var(--bui-space-4); + } + .xl\:bui-gap-5 { + gap: var(--bui-space-5); + } + .xl\:bui-gap-6 { + gap: var(--bui-space-6); + } + .xl\:bui-gap-7 { + gap: var(--bui-space-7); + } + .xl\:bui-gap-8 { + gap: var(--bui-space-8); + } + .xl\:bui-gap-9 { + gap: var(--bui-space-9); + } + .xl\:bui-gap-10 { + gap: var(--bui-space-10); + } + .xl\:bui-gap-11 { + gap: var(--bui-space-11); + } + .xl\:bui-gap-12 { + gap: var(--bui-space-12); + } + .xl\:bui-gap-13 { + gap: var(--bui-space-13); + } + .xl\:bui-gap-14 { + gap: var(--bui-space-14); + } + } + .bui-align-start { + align-items: start; + } + .bui-align-center { + align-items: center; + } + .bui-align-end { + align-items: end; + } + .bui-align-baseline { + align-items: baseline; + } + .bui-align-stretch { + align-items: stretch; + } + .bui-jc-start { + justify-content: start; + } + .bui-jc-center { + justify-content: center; + } + .bui-jc-end { + justify-content: end; + } + .bui-jc-between { + justify-content: space-between; + } + .bui-fd-row { + flex-direction: row; + } + .bui-fd-column { + flex-direction: column; + } + .bui-fd-row-reverse { + flex-direction: row-reverse; + } + .bui-fd-column-reverse { + flex-direction: column-reverse; + } + @media (width>=640px) { + .xs\:bui-align-start { + align-items: start; + } + .xs\:bui-align-center { + align-items: center; + } + .xs\:bui-align-end { + align-items: end; + } + .xs\:bui-align-stretch { + align-items: stretch; + } + .xs\:bui-jc-start { + justify-content: start; + } + .xs\:bui-jc-center { + justify-content: center; + } + .xs\:bui-jc-end { + justify-content: end; + } + .xs\:bui-jc-between { + justify-content: space-between; + } + .xs\:bui-fd-row { + flex-direction: row; + } + .xs\:bui-fd-column { + flex-direction: column; + } + .xs\:bui-fd-row-reverse { + flex-direction: row-reverse; + } + .xs\:bui-fd-column-reverse { + flex-direction: column-reverse; + } + } + @media (width>=768px) { + .sm\:bui-align-start { + align-items: start; + } + .sm\:bui-align-center { + align-items: center; + } + .sm\:bui-align-end { + align-items: end; + } + .sm\:bui-align-stretch { + align-items: stretch; + } + .sm\:bui-jc-start { + justify-content: start; + } + .sm\:bui-jc-center { + justify-content: center; + } + .sm\:bui-jc-end { + justify-content: end; + } + .sm\:bui-jc-between { + justify-content: space-between; + } + .sm\:bui-fd-row { + flex-direction: row; + } + .sm\:bui-fd-column { + flex-direction: column; + } + .sm\:bui-fd-row-reverse { + flex-direction: row-reverse; + } + .sm\:bui-fd-column-reverse { + flex-direction: column-reverse; + } + } + @media (width>=1024px) { + .md\:bui-align-start { + align-items: start; + } + .md\:bui-align-center { + align-items: center; + } + .md\:bui-align-end { + align-items: end; + } + .md\:bui-align-stretch { + align-items: stretch; + } + .md\:bui-jc-start { + justify-content: start; + } + .md\:bui-jc-center { + justify-content: center; + } + .md\:bui-jc-end { + justify-content: end; + } + .md\:bui-jc-between { + justify-content: space-between; + } + .md\:bui-fd-row { + flex-direction: row; + } + .md\:bui-fd-column { + flex-direction: column; + } + .md\:bui-fd-row-reverse { + flex-direction: row-reverse; + } + .md\:bui-fd-column-reverse { + flex-direction: column-reverse; + } + } + @media (width>=1280px) { + .lg\:bui-align-start { + align-items: start; + } + .lg\:bui-align-center { + align-items: center; + } + .lg\:bui-align-end { + align-items: end; + } + .lg\:bui-align-stretch { + align-items: stretch; + } + .lg\:bui-jc-start { + justify-content: start; + } + .lg\:bui-jc-center { + justify-content: center; + } + .lg\:bui-jc-end { + justify-content: end; + } + .lg\:bui-jc-between { + justify-content: space-between; + } + .lg\:bui-fd-row { + flex-direction: row; + } + .lg\:bui-fd-column { + flex-direction: column; + } + .lg\:bui-fd-row-reverse { + flex-direction: row-reverse; + } + .lg\:bui-fd-column-reverse { + flex-direction: column-reverse; + } + } + @media (width>=1536px) { + .xl\:bui-align-start { + align-items: start; + } + .xl\:bui-align-center { + align-items: center; + } + .xl\:bui-align-end { + align-items: end; + } + .xl\:bui-align-stretch { + align-items: stretch; + } + .xl\:bui-jc-start { + justify-content: start; + } + .xl\:bui-jc-center { + justify-content: center; + } + .xl\:bui-jc-end { + justify-content: end; + } + .xl\:bui-jc-between { + justify-content: space-between; + } + .xl\:bui-fd-row { + flex-direction: row; + } + .xl\:bui-fd-column { + flex-direction: column; + } + .xl\:bui-fd-row-reverse { + flex-direction: row-reverse; + } + .xl\:bui-fd-column-reverse { + flex-direction: column-reverse; + } + } +} diff --git a/docs-ui/src/css/theme-spotify.css b/docs-ui/src/css/theme-spotify.css index 233c924a6d..dc660b5b5d 100644 --- a/docs-ui/src/css/theme-spotify.css +++ b/docs-ui/src/css/theme-spotify.css @@ -1 +1,239 @@ -@font-face{font-family:CircularSpTitle;font-weight:900;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSpTitle-Black-4588c99025b967475c31695b0743dd1a.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSpTitle-Black-506746f387a26f25aa3d023b3e501d34.woff)format("woff")}@font-face{font-family:CircularSpTitle;font-weight:700;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSpTitle-Bold-b2586b06a2e1522e9d879d84c2792a58.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSpTitle-Bold-1624fb2df28c20d7203d7fb86ce8b481.woff)format("woff")}@font-face{font-family:CircularSp;font-weight:700;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSp-Bold-602e7aefc706aa36c6ec1324b9bbc461.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSp-Bold-856afe2da4ba4e61239b129e2c16d633.woff)format("woff")}@font-face{font-family:CircularSp;font-weight:400;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSp-Book-a00e99ef9996a3a157fb6b746856d04f.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSp-Book-3f73da7d35bd81c706bce7bbb84964de.woff)format("woff")}@font-face{font-family:CircularSp;font-weight:700;font-display:swap;unicode-range:U+0,U+D,U+20-7E,U+A0-17E,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1B5-1B6,U+1C4-1C6,U+1F1-1F3,U+1FA-1FF,U+218-21B,U+237,U+259,U+2BB-2BC,U+2C6-2C7,U+2C9,U+2D8-2DD,U+300-301,U+303,U+309,U+323,U+394,U+3A9,U+3BC,U+3C0,U+1E80-1E85,U+1E8A-1E8B,U+1EA0-1EF9,U+1FD6,U+2007-2008,U+200B,U+2010-2011,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2042,U+2044,U+2051,U+2070,U+2074-2079,U+2080-2089,U+20AB-20AC,U+2113,U+2117,U+2122,U+2126,U+2160-2169,U+216C-216F,U+2190-2193,U+2196-2199,U+21A9,U+21B0-21B5,U+21C6,U+2202,U+2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+22C5,U+24C5,U+25A0-25A1,U+25AF,U+25B2-25B3,U+25CA-25CB,U+25CF,U+262E,U+2713,U+2715,U+2780-2788,U+E000,U+E002,U+F6C3,U+FB00-FB04,U+FEFF,U+FF0C,U+FF0E,U+FF1A-FF1B,U+FFFF;src:url(https://encore.scdn.co/fonts/CircularSp-Bold-602e7aefc706aa36c6ec1324b9bbc461.woff2)format("woff2"),url(https://encore.scdn.co/fonts/CircularSp-Bold-856afe2da4ba4e61239b129e2c16d633.woff)format("woff")}[data-theme-name=spotify]{--bui-font-text:CircularSp,CircularSp-Arab,CircularSp-Hebr,CircularSp-Cyrl,CircularSp-Grek,CircularSp-Deva;--bui-font-title:CircularSpTitle,CircularSp-Arab,CircularSp-Hebr,CircularSp-Cyrl,CircularSp-Grek,CircularSp-Deva;--bui-font-regular:CircularSp,CircularSp-Arab,CircularSp-Hebr,CircularSp-Cyrl,CircularSp-Grek,CircularSp-Deva;& .bui-Button{border-radius:var(--bui-radius-3);padding-inline:var(--bui-space-3)}& .bui-ButtonIcon{padding:0}& .bui-MenuPopup{box-sizing:border-box;max-width:21.25rem}& .bui-MenuSubmenuTrigger,& .bui-MenuItem{height:auto;min-height:2rem}& .bui-Text{font-family:var(--bui-font-text)}& .bui-Heading{font-family:var(--bui-font-title)}& .bui-TableRow{border-radius:var(--bui-radius-4);border:none}& .bui-TableRow:hover td:first-child{border-top-left-radius:var(--bui-radius-2);border-bottom-left-radius:var(--bui-radius-2)}& .bui-TableRow:hover td:last-child{border-top-right-radius:var(--bui-radius-2);border-bottom-right-radius:var(--bui-radius-2)}& .bui-TableBody:before,& .bui-TableBody:after{line-height:var(--bui-space-1);content:"‌";display:block}& .bui-TableHeader .bui-TableRow{border-bottom:1px solid var(--bui-border)}& .bui-TableHead{font-size:var(--bui-font-size-2);color:var(--bui-fg-secondary);font-weight:var(--bui-font-weight-regular)}& .bui-HeaderToolbar{padding-top:var(--bui-space-2);padding-inline:var(--bui-space-2)}& .bui-HeaderToolbarWrapper{border-radius:var(--bui-radius-3);padding-inline:var(--bui-space-3);border:none}& .bui-HeaderToolbarControls{right:calc(var(--bui-space-3) - 1px)}& .bui-HeaderTabsWrapper{margin-top:var(--bui-space-2);margin-inline:var(--bui-space-2);border-radius:var(--bui-radius-3);padding-inline:var(--bui-space-1);border:none}& .bui-Input{border-radius:var(--bui-radius-3)}& .bui-Tag{border-radius:var(--bui-radius-full)}}[data-theme-mode=light][data-theme-name=spotify]{--bui-bg-solid:#1ed760;--bui-bg-solid-hover:#3be477;--bui-bg-solid-pressed:#1abc54;--bui-bg-solid-disabled:#0f6c30;--bui-fg-primary:var(--bui-black);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-solid:var(--bui-black);--bui-fg-solid-disabled:#62ab7c;--bui-border:var(--bui-gray-3);--bui-border-hover:#0000004d;--bui-border-pressed:#00000080;--bui-border-disabled:#0000001a;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#0003;& .bui-HeaderToolbarWrapper,& .bui-HeaderTabsWrapper{border:1px solid var(--bui-border)}}[data-theme-mode=dark][data-theme-name=spotify]{--bui-bg-surface-0:var(--bui-black);--bui-bg-solid:#1ed760;--bui-bg-solid-hover:#3be477;--bui-bg-solid-pressed:#1abc54;--bui-bg-solid-disabled:#0f6c30;--bui-bg-danger:#3b1219;--bui-bg-warning:#302008;--bui-bg-success:#132d21;--bui-fg-primary:var(--bui-white);--bui-fg-secondary:var(--bui-gray-7);--bui-fg-disabled:var(--bui-gray-5);--bui-fg-solid:var(--bui-black);--bui-fg-solid-disabled:#072f15;--bui-fg-danger:#e22b2b;--bui-fg-warning:#e36d05;--bui-fg-success:#1db954;--bui-border:var(--bui-gray-3);--bui-border-hover:#fff6;--bui-border-pressed:#ffffff80;--bui-border-disabled:#fff3;--bui-border-danger:#f87a7a;--bui-border-warning:#e36d05;--bui-border-success:#53db83;--bui-ring:#fff3} \ No newline at end of file +@font-face { + font-family: CircularSpTitle; + font-weight: 900; + font-display: swap; + unicode-range: U+0, U+D, U+20-7E, U+A0-17E, U+18F, U+192, U+1A0-1A1, U+1AF-1B0, + U+1B5-1B6, U+1C4-1C6, U+1F1-1F3, U+1FA-1FF, U+218-21B, U+237, U+259, + U+2BB-2BC, U+2C6-2C7, U+2C9, U+2D8-2DD, U+300-301, U+303, U+309, U+323, + U+394, U+3A9, U+3BC, U+3C0, U+1E80-1E85, U+1E8A-1E8B, U+1EA0-1EF9, U+1FD6, + U+2007-2008, U+200B, U+2010-2011, U+2013-2014, U+2018-201A, U+201C-201E, + U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2042, U+2044, + U+2051, U+2070, U+2074-2079, U+2080-2089, U+20AB-20AC, U+2113, U+2117, + U+2122, U+2126, U+2160-2169, U+216C-216F, U+2190-2193, U+2196-2199, U+21A9, + U+21B0-21B5, U+21C6, U+2202, U+2206, U+220F, U+2211-2212, U+2215, + U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+22C5, U+24C5, + U+25A0-25A1, U+25AF, U+25B2-25B3, U+25CA-25CB, U+25CF, U+262E, U+2713, + U+2715, U+2780-2788, U+E000, U+E002, U+F6C3, U+FB00-FB04, U+FEFF, U+FF0C, + U+FF0E, U+FF1A-FF1B, U+FFFF; + src: url(https://encore.scdn.co/fonts/CircularSpTitle-Black-4588c99025b967475c31695b0743dd1a.woff2) + format('woff2'), + url(https://encore.scdn.co/fonts/CircularSpTitle-Black-506746f387a26f25aa3d023b3e501d34.woff) + format('woff'); +} +@font-face { + font-family: CircularSpTitle; + font-weight: 700; + font-display: swap; + unicode-range: U+0, U+D, U+20-7E, U+A0-17E, U+18F, U+192, U+1A0-1A1, U+1AF-1B0, + U+1B5-1B6, U+1C4-1C6, U+1F1-1F3, U+1FA-1FF, U+218-21B, U+237, U+259, + U+2BB-2BC, U+2C6-2C7, U+2C9, U+2D8-2DD, U+300-301, U+303, U+309, U+323, + U+394, U+3A9, U+3BC, U+3C0, U+1E80-1E85, U+1E8A-1E8B, U+1EA0-1EF9, U+1FD6, + U+2007-2008, U+200B, U+2010-2011, U+2013-2014, U+2018-201A, U+201C-201E, + U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2042, U+2044, + U+2051, U+2070, U+2074-2079, U+2080-2089, U+20AB-20AC, U+2113, U+2117, + U+2122, U+2126, U+2160-2169, U+216C-216F, U+2190-2193, U+2196-2199, U+21A9, + U+21B0-21B5, U+21C6, U+2202, U+2206, U+220F, U+2211-2212, U+2215, + U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+22C5, U+24C5, + U+25A0-25A1, U+25AF, U+25B2-25B3, U+25CA-25CB, U+25CF, U+262E, U+2713, + U+2715, U+2780-2788, U+E000, U+E002, U+F6C3, U+FB00-FB04, U+FEFF, U+FF0C, + U+FF0E, U+FF1A-FF1B, U+FFFF; + src: url(https://encore.scdn.co/fonts/CircularSpTitle-Bold-b2586b06a2e1522e9d879d84c2792a58.woff2) + format('woff2'), + url(https://encore.scdn.co/fonts/CircularSpTitle-Bold-1624fb2df28c20d7203d7fb86ce8b481.woff) + format('woff'); +} +@font-face { + font-family: CircularSp; + font-weight: 700; + font-display: swap; + unicode-range: U+0, U+D, U+20-7E, U+A0-17E, U+18F, U+192, U+1A0-1A1, U+1AF-1B0, + U+1B5-1B6, U+1C4-1C6, U+1F1-1F3, U+1FA-1FF, U+218-21B, U+237, U+259, + U+2BB-2BC, U+2C6-2C7, U+2C9, U+2D8-2DD, U+300-301, U+303, U+309, U+323, + U+394, U+3A9, U+3BC, U+3C0, U+1E80-1E85, U+1E8A-1E8B, U+1EA0-1EF9, U+1FD6, + U+2007-2008, U+200B, U+2010-2011, U+2013-2014, U+2018-201A, U+201C-201E, + U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2042, U+2044, + U+2051, U+2070, U+2074-2079, U+2080-2089, U+20AB-20AC, U+2113, U+2117, + U+2122, U+2126, U+2160-2169, U+216C-216F, U+2190-2193, U+2196-2199, U+21A9, + U+21B0-21B5, U+21C6, U+2202, U+2206, U+220F, U+2211-2212, U+2215, + U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+22C5, U+24C5, + U+25A0-25A1, U+25AF, U+25B2-25B3, U+25CA-25CB, U+25CF, U+262E, U+2713, + U+2715, U+2780-2788, U+E000, U+E002, U+F6C3, U+FB00-FB04, U+FEFF, U+FF0C, + U+FF0E, U+FF1A-FF1B, U+FFFF; + src: url(https://encore.scdn.co/fonts/CircularSp-Bold-602e7aefc706aa36c6ec1324b9bbc461.woff2) + format('woff2'), + url(https://encore.scdn.co/fonts/CircularSp-Bold-856afe2da4ba4e61239b129e2c16d633.woff) + format('woff'); +} +@font-face { + font-family: CircularSp; + font-weight: 400; + font-display: swap; + unicode-range: U+0, U+D, U+20-7E, U+A0-17E, U+18F, U+192, U+1A0-1A1, U+1AF-1B0, + U+1B5-1B6, U+1C4-1C6, U+1F1-1F3, U+1FA-1FF, U+218-21B, U+237, U+259, + U+2BB-2BC, U+2C6-2C7, U+2C9, U+2D8-2DD, U+300-301, U+303, U+309, U+323, + U+394, U+3A9, U+3BC, U+3C0, U+1E80-1E85, U+1E8A-1E8B, U+1EA0-1EF9, U+1FD6, + U+2007-2008, U+200B, U+2010-2011, U+2013-2014, U+2018-201A, U+201C-201E, + U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2042, U+2044, + U+2051, U+2070, U+2074-2079, U+2080-2089, U+20AB-20AC, U+2113, U+2117, + U+2122, U+2126, U+2160-2169, U+216C-216F, U+2190-2193, U+2196-2199, U+21A9, + U+21B0-21B5, U+21C6, U+2202, U+2206, U+220F, U+2211-2212, U+2215, + U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+22C5, U+24C5, + U+25A0-25A1, U+25AF, U+25B2-25B3, U+25CA-25CB, U+25CF, U+262E, U+2713, + U+2715, U+2780-2788, U+E000, U+E002, U+F6C3, U+FB00-FB04, U+FEFF, U+FF0C, + U+FF0E, U+FF1A-FF1B, U+FFFF; + src: url(https://encore.scdn.co/fonts/CircularSp-Book-a00e99ef9996a3a157fb6b746856d04f.woff2) + format('woff2'), + url(https://encore.scdn.co/fonts/CircularSp-Book-3f73da7d35bd81c706bce7bbb84964de.woff) + format('woff'); +} +@font-face { + font-family: CircularSp; + font-weight: 700; + font-display: swap; + unicode-range: U+0, U+D, U+20-7E, U+A0-17E, U+18F, U+192, U+1A0-1A1, U+1AF-1B0, + U+1B5-1B6, U+1C4-1C6, U+1F1-1F3, U+1FA-1FF, U+218-21B, U+237, U+259, + U+2BB-2BC, U+2C6-2C7, U+2C9, U+2D8-2DD, U+300-301, U+303, U+309, U+323, + U+394, U+3A9, U+3BC, U+3C0, U+1E80-1E85, U+1E8A-1E8B, U+1EA0-1EF9, U+1FD6, + U+2007-2008, U+200B, U+2010-2011, U+2013-2014, U+2018-201A, U+201C-201E, + U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2042, U+2044, + U+2051, U+2070, U+2074-2079, U+2080-2089, U+20AB-20AC, U+2113, U+2117, + U+2122, U+2126, U+2160-2169, U+216C-216F, U+2190-2193, U+2196-2199, U+21A9, + U+21B0-21B5, U+21C6, U+2202, U+2206, U+220F, U+2211-2212, U+2215, + U+2219-221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+22C5, U+24C5, + U+25A0-25A1, U+25AF, U+25B2-25B3, U+25CA-25CB, U+25CF, U+262E, U+2713, + U+2715, U+2780-2788, U+E000, U+E002, U+F6C3, U+FB00-FB04, U+FEFF, U+FF0C, + U+FF0E, U+FF1A-FF1B, U+FFFF; + src: url(https://encore.scdn.co/fonts/CircularSp-Bold-602e7aefc706aa36c6ec1324b9bbc461.woff2) + format('woff2'), + url(https://encore.scdn.co/fonts/CircularSp-Bold-856afe2da4ba4e61239b129e2c16d633.woff) + format('woff'); +} +[data-theme-name='spotify'] { + --bui-font-text: CircularSp, CircularSp-Arab, CircularSp-Hebr, CircularSp-Cyrl, + CircularSp-Grek, CircularSp-Deva; + --bui-font-title: CircularSpTitle, CircularSp-Arab, CircularSp-Hebr, + CircularSp-Cyrl, CircularSp-Grek, CircularSp-Deva; + --bui-font-regular: CircularSp, CircularSp-Arab, CircularSp-Hebr, + CircularSp-Cyrl, CircularSp-Grek, CircularSp-Deva; + & .bui-Button { + border-radius: var(--bui-radius-3); + padding-inline: var(--bui-space-3); + } + & .bui-ButtonIcon { + padding: 0; + } + & .bui-MenuPopup { + box-sizing: border-box; + max-width: 21.25rem; + } + & .bui-MenuSubmenuTrigger, + & .bui-MenuItem { + height: auto; + min-height: 2rem; + } + & .bui-Text { + font-family: var(--bui-font-text); + } + & .bui-Heading { + font-family: var(--bui-font-title); + } + & .bui-TableRow { + border-radius: var(--bui-radius-4); + border: none; + } + & .bui-TableRow:hover td:first-child { + border-top-left-radius: var(--bui-radius-2); + border-bottom-left-radius: var(--bui-radius-2); + } + & .bui-TableRow:hover td:last-child { + border-top-right-radius: var(--bui-radius-2); + border-bottom-right-radius: var(--bui-radius-2); + } + & .bui-TableBody:before, + & .bui-TableBody:after { + line-height: var(--bui-space-1); + content: '‌'; + display: block; + } + & .bui-TableHeader .bui-TableRow { + border-bottom: 1px solid var(--bui-border); + } + & .bui-TableHead { + font-size: var(--bui-font-size-2); + color: var(--bui-fg-secondary); + font-weight: var(--bui-font-weight-regular); + } + & .bui-HeaderToolbar { + padding-top: var(--bui-space-2); + padding-inline: var(--bui-space-2); + } + & .bui-HeaderToolbarWrapper { + border-radius: var(--bui-radius-3); + padding-inline: var(--bui-space-3); + border: none; + } + & .bui-HeaderToolbarControls { + right: calc(var(--bui-space-3) - 1px); + } + & .bui-HeaderTabsWrapper { + margin-top: var(--bui-space-2); + margin-inline: var(--bui-space-2); + border-radius: var(--bui-radius-3); + padding-inline: var(--bui-space-1); + border: none; + } + & .bui-Input { + border-radius: var(--bui-radius-3); + } + & .bui-Tag { + border-radius: var(--bui-radius-full); + } +} +[data-theme-mode='light'][data-theme-name='spotify'] { + --bui-bg-solid: #1ed760; + --bui-bg-solid-hover: #3be477; + --bui-bg-solid-pressed: #1abc54; + --bui-bg-solid-disabled: #0f6c30; + --bui-fg-primary: var(--bui-black); + --bui-fg-secondary: var(--bui-gray-7); + --bui-fg-solid: var(--bui-black); + --bui-fg-solid-disabled: #62ab7c; + --bui-border: var(--bui-gray-3); + --bui-border-hover: #0000004d; + --bui-border-pressed: #00000080; + --bui-border-disabled: #0000001a; + --bui-border-danger: #f87a7a; + --bui-border-warning: #e36d05; + --bui-border-success: #53db83; + --bui-ring: #0003; + & .bui-HeaderToolbarWrapper, + & .bui-HeaderTabsWrapper { + border: 1px solid var(--bui-border); + } +} +[data-theme-mode='dark'][data-theme-name='spotify'] { + --bui-bg-surface-0: var(--bui-black); + --bui-bg-solid: #1ed760; + --bui-bg-solid-hover: #3be477; + --bui-bg-solid-pressed: #1abc54; + --bui-bg-solid-disabled: #0f6c30; + --bui-bg-danger: #3b1219; + --bui-bg-warning: #302008; + --bui-bg-success: #132d21; + --bui-fg-primary: var(--bui-white); + --bui-fg-secondary: var(--bui-gray-7); + --bui-fg-disabled: var(--bui-gray-5); + --bui-fg-solid: var(--bui-black); + --bui-fg-solid-disabled: #072f15; + --bui-fg-danger: #e22b2b; + --bui-fg-warning: #e36d05; + --bui-fg-success: #1db954; + --bui-border: var(--bui-gray-3); + --bui-border-hover: #fff6; + --bui-border-pressed: #ffffff80; + --bui-border-disabled: #fff3; + --bui-border-danger: #f87a7a; + --bui-border-warning: #e36d05; + --bui-border-success: #53db83; + --bui-ring: #fff3; +} diff --git a/packages/ui/src/components/HeaderPage/HeaderPage.tsx b/packages/ui/src/components/HeaderPage/HeaderPage.tsx index efa7ea8d58..8b1ef31874 100644 --- a/packages/ui/src/components/HeaderPage/HeaderPage.tsx +++ b/packages/ui/src/components/HeaderPage/HeaderPage.tsx @@ -56,6 +56,7 @@ export const HeaderPage = (props: HeaderPageProps) => { color="secondary" truncate style={{ maxWidth: '240px' }} + standalone > {breadcrumb.label} diff --git a/packages/ui/src/css/tokens.css b/packages/ui/src/css/tokens.css index 3747636e18..9cd6ea98e5 100644 --- a/packages/ui/src/css/tokens.css +++ b/packages/ui/src/css/tokens.css @@ -118,7 +118,6 @@ --bui-bg-warning: #ffedd5; --bui-bg-success: #dcfce7; --bui-bg-info: #dbeafe; - /* Foreground colors */ --bui-fg-primary: var(--bui-black); @@ -132,10 +131,10 @@ --bui-fg-warning-on-bg: #92310a; --bui-fg-success-on-bg: #116932; --bui-fg-info-on-bg: #173da6; - --bui-fg-danger: #EC3B18; - --bui-fg-warning: #EF7A32; - --bui-fg-success: #1ED760; - --bui-fg-info: #0D74CE; + --bui-fg-danger: #ec3b18; + --bui-fg-warning: #ef7a32; + --bui-fg-success: #1ed760; + --bui-fg-info: #0d74ce; /* Border colors */ --bui-border: rgba(0, 0, 0, 0.1); @@ -222,10 +221,10 @@ --bui-fg-warning-on-bg: #fdba74; --bui-fg-success-on-bg: #86efac; --bui-fg-info-on-bg: #a3cfff; - --bui-fg-danger: #FF5A30; - --bui-fg-warning: #FFA057; - --bui-fg-success: #1ED760; - --bui-fg-info: #70B8FF; + --bui-fg-danger: #ff5a30; + --bui-fg-warning: #ffa057; + --bui-fg-success: #1ed760; + --bui-fg-info: #70b8ff; /* Border colors */ --bui-border: rgba(255, 255, 255, 0.12); From c5794413407a9e842e3b910ff9614c06f4941aaa Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Fri, 30 Jan 2026 18:38:07 +0000 Subject: [PATCH 088/107] Update report.api.md Signed-off-by: Charles de Dreuille --- packages/ui/report.api.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/ui/report.api.md b/packages/ui/report.api.md index efe88de249..ae76c8a8d0 100644 --- a/packages/ui/report.api.md +++ b/packages/ui/report.api.md @@ -1113,6 +1113,7 @@ export const LinkDefinition: { 'danger', 'warning', 'success', + 'info', ]; readonly truncate: readonly [true, false]; readonly standalone: readonly [true, false]; @@ -1925,6 +1926,7 @@ export const TextDefinition: { 'danger', 'warning', 'success', + 'info', ]; readonly truncate: readonly [true, false]; }; From 3c455d41516d70ba952192b12627f2a32b7387cb Mon Sep 17 00:00:00 2001 From: benjdlambert Date: Fri, 30 Jan 2026 19:22:00 +0100 Subject: [PATCH 089/107] chore: small tweaks Signed-off-by: benjdlambert --- .changeset/sharp-doodles-retire.md | 5 + .../mkdocs_with_duplicate_merge_hooks.yml | 12 + .../__fixtures__/mkdocs_with_hooks.yml | 5 + .../mkdocs_with_merge_key_hooks.yml | 8 + .../mkdocs_with_parser_differential_hooks.yml | 16 + .../src/stages/generate/helpers.test.ts | 328 +++++++++++++++++- .../src/stages/generate/helpers.ts | 70 ++++ .../src/stages/generate/mkdocsPatchers.ts | 58 +++- .../src/stages/generate/techdocs.ts | 10 + 9 files changed, 509 insertions(+), 3 deletions(-) create mode 100644 .changeset/sharp-doodles-retire.md create mode 100644 plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_duplicate_merge_hooks.yml create mode 100644 plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_hooks.yml create mode 100644 plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_merge_key_hooks.yml create mode 100644 plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_parser_differential_hooks.yml diff --git a/.changeset/sharp-doodles-retire.md b/.changeset/sharp-doodles-retire.md new file mode 100644 index 0000000000..2062b7ec34 --- /dev/null +++ b/.changeset/sharp-doodles-retire.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-node': patch +--- + +Some security fixes diff --git a/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_duplicate_merge_hooks.yml b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_duplicate_merge_hooks.yml new file mode 100644 index 0000000000..145412e730 --- /dev/null +++ b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_duplicate_merge_hooks.yml @@ -0,0 +1,12 @@ +# This file uses duplicate merge keys (<<) which causes parser differential: +# - js-yaml: hooks: null (first merge key wins) +# - PyYAML: hooks: [hello.py] (last merge key wins) +site_name: Test +plugins: + - techdocs-core +array_base: &array_base + hooks: [hello.py] +null_base: &null_base + hooks: null +<<: *null_base +<<: *array_base diff --git a/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_hooks.yml b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_hooks.yml new file mode 100644 index 0000000000..333ba6db36 --- /dev/null +++ b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_hooks.yml @@ -0,0 +1,5 @@ +site_name: Test site name +site_description: Test site description +hooks: + - hooks/my_hook.py + - hooks/another_hook.py diff --git a/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_merge_key_hooks.yml b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_merge_key_hooks.yml new file mode 100644 index 0000000000..f3b5dbdc93 --- /dev/null +++ b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_merge_key_hooks.yml @@ -0,0 +1,8 @@ +site_name: Test +plugins: + - techdocs-core +extra: + array_hooks: &array_hooks + hooks: + - custom_hook.py +<<: *array_hooks diff --git a/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_parser_differential_hooks.yml b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_parser_differential_hooks.yml new file mode 100644 index 0000000000..42f574dcaf --- /dev/null +++ b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_parser_differential_hooks.yml @@ -0,0 +1,16 @@ +# This file intentionally uses duplicate merge keys (<<) which is technically +# invalid YAML, but is accepted by most parsers with different behaviors: +# - js-yaml: uses the first merge key value (hooks: null) +# - PyYAML: uses the last merge key value (hooks: [custom_hook.py]) +# This tests that sanitization catches hooks regardless of parser interpretation. +site_name: Test +plugins: + - techdocs-core +extra: + null_hooks: &null_hooks + hooks: null + array_hooks: &array_hooks + hooks: + - custom_hook.py +<<: *null_hooks +<<: *array_hooks diff --git a/plugins/techdocs-node/src/stages/generate/helpers.test.ts b/plugins/techdocs-node/src/stages/generate/helpers.test.ts index 8a066e2c42..fd428fd23a 100644 --- a/plugins/techdocs-node/src/stages/generate/helpers.test.ts +++ b/plugins/techdocs-node/src/stages/generate/helpers.test.ts @@ -30,11 +30,13 @@ import { getRepoUrlFromLocationAnnotation, patchIndexPreBuild, storeEtagMetadata, + validateDocsDirectory, validateMkdocsYaml, } from './helpers'; import { patchMkdocsYmlPreBuild, patchMkdocsYmlWithPlugins, + sanitizeMkdocsYml, } from './mkdocsPatchers'; import yaml from 'js-yaml'; @@ -92,6 +94,24 @@ const mkdocsYmlWithAdditionalPluginsWithConfig = fs.readFileSync( const mkdocsYmlWithEnvTag = fs.readFileSync( resolvePath(__filename, '../__fixtures__/mkdocs_with_env_tag.yml'), ); +const mkdocsYmlWithHooks = fs.readFileSync( + resolvePath(__filename, '../__fixtures__/mkdocs_with_hooks.yml'), +); +const mkdocsYmlWithMergeKeyHooks = fs.readFileSync( + resolvePath(__filename, '../__fixtures__/mkdocs_with_merge_key_hooks.yml'), +); +const mkdocsYmlWithParserDifferentialHooks = fs.readFileSync( + resolvePath( + __filename, + '../__fixtures__/mkdocs_with_parser_differential_hooks.yml', + ), +); +const mkdocsYmlWithDuplicateMergeHooks = fs.readFileSync( + resolvePath( + __filename, + '../__fixtures__/mkdocs_with_duplicate_merge_hooks.yml', + ), +); const mockLogger = mockServices.logger.mock(); const warn = jest.spyOn(mockLogger, 'warn'); @@ -441,8 +461,6 @@ describe('helpers', () => { }; expect(parsedYml.plugins).toHaveLength(4); expect(parsedYml.plugins).toContain('techdocs-core'); - // we want our original object with its properties to be preserved, and for the basic string form of the plugin - // to NOT be added as well. expect(parsedYml.plugins).not.toContain('custom-plugin'); expect(parsedYml.plugins).toContainEqual({ 'custom-plugin': { with: { configuration: 1 } }, @@ -727,4 +745,310 @@ describe('helpers', () => { ).resolves.toBeUndefined(); }); }); + + describe('sanitizeMkdocsYml', () => { + beforeEach(() => { + warn.mockClear(); + mockDir.setContent({ + 'mkdocs_with_hooks.yml': mkdocsYmlWithHooks, + 'mkdocs.yml': mkdocsYml, + }); + }); + + it('should remove disallowed keys from mkdocs.yml and log a warning', async () => { + await sanitizeMkdocsYml( + mockDir.resolve('mkdocs_with_hooks.yml'), + mockLogger, + ); + + const updatedMkdocsYml = await fs.readFile( + mockDir.resolve('mkdocs_with_hooks.yml'), + ); + const parsedYml = yaml.load(updatedMkdocsYml.toString()) as { + hooks?: string[]; + site_name: string; + }; + expect(parsedYml.hooks).toBeUndefined(); + expect(parsedYml.site_name).toBe('Test site name'); + expect(warn).toHaveBeenCalledWith( + expect.stringContaining( + 'Removed the following unsupported configuration keys from mkdocs.yml: hooks', + ), + ); + }); + + it('should not modify mkdocs.yml when no disallowed keys are present', async () => { + await sanitizeMkdocsYml(mockDir.resolve('mkdocs.yml'), mockLogger); + + const updatedMkdocsYml = await fs.readFile(mockDir.resolve('mkdocs.yml')); + const parsedYml = yaml.load(updatedMkdocsYml.toString()) as { + hooks?: string[]; + site_name: string; + }; + expect(parsedYml.hooks).toBeUndefined(); + expect(parsedYml.site_name).toBe('Test site name'); + expect(warn).not.toHaveBeenCalled(); + }); + + it('should remove multiple disallowed keys and list them all in the warning', async () => { + const mkdocsWithMultipleDisallowed = `site_name: Test +hooks: + - hook.py +some_unknown_key: value +another_unknown: true +`; + mockDir.setContent({ + 'mkdocs_multiple.yml': mkdocsWithMultipleDisallowed, + }); + + await sanitizeMkdocsYml( + mockDir.resolve('mkdocs_multiple.yml'), + mockLogger, + ); + + const updatedMkdocsYml = await fs.readFile( + mockDir.resolve('mkdocs_multiple.yml'), + ); + const parsedYml = yaml.load(updatedMkdocsYml.toString()) as Record< + string, + unknown + >; + expect(parsedYml.hooks).toBeUndefined(); + expect(parsedYml.some_unknown_key).toBeUndefined(); + expect(parsedYml.another_unknown).toBeUndefined(); + expect(parsedYml.site_name).toBe('Test'); + expect(warn).toHaveBeenCalledWith( + expect.stringMatching( + /Removed the following unsupported configuration keys.*hooks.*some_unknown_key.*another_unknown|Removed the following unsupported configuration keys.*hooks.*another_unknown.*some_unknown_key/, + ), + ); + }); + + it('should remove hooks introduced via YAML merge keys', async () => { + mockDir.setContent({ + 'mkdocs_merge_keys.yml': mkdocsYmlWithMergeKeyHooks, + }); + + await sanitizeMkdocsYml( + mockDir.resolve('mkdocs_merge_keys.yml'), + mockLogger, + ); + + const updatedMkdocsYml = await fs.readFile( + mockDir.resolve('mkdocs_merge_keys.yml'), + ); + const parsedYml = yaml.load(updatedMkdocsYml.toString()) as Record< + string, + unknown + >; + + expect(parsedYml.hooks).toBeUndefined(); + expect(parsedYml.site_name).toBe('Test'); + expect(parsedYml.plugins).toEqual(['techdocs-core']); + expect(updatedMkdocsYml.toString()).not.toContain('<<:'); + + expect(warn).toHaveBeenCalledWith( + expect.stringContaining( + 'Removed the following unsupported configuration keys from mkdocs.yml: hooks', + ), + ); + }); + + it('should remove hooks when parsers interpret duplicate merge keys differently', async () => { + mockDir.setContent({ + 'mkdocs_parser_diff.yml': mkdocsYmlWithParserDifferentialHooks, + }); + + await sanitizeMkdocsYml( + mockDir.resolve('mkdocs_parser_diff.yml'), + mockLogger, + ); + + const updatedMkdocsYml = await fs.readFile( + mockDir.resolve('mkdocs_parser_diff.yml'), + ); + const parsedYml = yaml.load(updatedMkdocsYml.toString()) as Record< + string, + unknown + >; + + expect(parsedYml.hooks).toBeUndefined(); + expect(parsedYml.site_name).toBe('Test'); + expect(parsedYml.plugins).toEqual(['techdocs-core']); + expect(parsedYml.extra).toBeDefined(); + expect(updatedMkdocsYml.toString()).not.toContain('<<:'); + + expect(warn).toHaveBeenCalledWith( + expect.stringContaining( + 'Removed the following unsupported configuration keys from mkdocs.yml: hooks', + ), + ); + }); + + it('should remove hooks with duplicate merge keys and top-level anchors', async () => { + mockDir.setContent({ + 'mkdocs_duplicate_merge.yml': mkdocsYmlWithDuplicateMergeHooks, + }); + + await sanitizeMkdocsYml( + mockDir.resolve('mkdocs_duplicate_merge.yml'), + mockLogger, + ); + + const updatedMkdocsYml = await fs.readFile( + mockDir.resolve('mkdocs_duplicate_merge.yml'), + ); + const parsedYml = yaml.load(updatedMkdocsYml.toString()) as Record< + string, + unknown + >; + + expect(parsedYml.hooks).toBeUndefined(); + expect(parsedYml.site_name).toBe('Test'); + expect(parsedYml.plugins).toEqual(['techdocs-core']); + expect(updatedMkdocsYml.toString()).not.toContain('<<:'); + + expect(warn).toHaveBeenCalledWith(expect.stringContaining('hooks')); + }); + }); + + describe('validateDocsDirectory', () => { + it('should pass for a valid docs directory with no symlinks', async () => { + mockDir.setContent({ + docs: { + 'index.md': 'Hello', + 'guide.md': 'Guide content', + }, + }); + + await expect( + validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), + ).resolves.toBeUndefined(); + }); + + it('should pass for symlinks pointing within the input directory', async () => { + mockDir.setContent({ + docs: { + 'index.md': 'Hello', + }, + 'other.md': 'Other content', + }); + + // Create a symlink within the input directory + await fs.symlink( + mockDir.resolve('other.md'), + mockDir.resolve('docs/link.md'), + ); + + await expect( + validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), + ).resolves.toBeUndefined(); + }); + + it('should reject symlinks pointing outside the input directory', async () => { + const anotherMockDir = createMockDirectory(); + + mockDir.setContent({ + docs: { + 'index.md': 'Hello', + }, + }); + + anotherMockDir.setContent({ + tmp: { + secret: 'password', + }, + }); + + // Create a symlink pointing outside the input directory + await fs.symlink( + anotherMockDir.resolve('tmp/secret'), + mockDir.resolve('docs/escape.md'), + ); + + await expect( + validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), + ).rejects.toThrow(/not allowed to refer to a location outside/i); + }); + + it('should reject symlinks to sensitive files like /etc/passwd', async () => { + mockDir.setContent({ + docs: { + 'index.md': 'Hello', + }, + }); + + // Create a symlink to /etc/passwd + await fs.symlink('/etc/passwd', mockDir.resolve('docs/passwd.md')); + + await expect( + validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), + ).rejects.toThrow(/not allowed to refer to a location outside/i); + }); + + it('should reject symlinks in nested directories', async () => { + mockDir.setContent({ + docs: { + 'index.md': 'Hello', + nested: { + 'page.md': 'Nested page', + }, + }, + }); + + // Create a symlink in a nested directory pointing outside + await fs.symlink('/etc/passwd', mockDir.resolve('docs/nested/escape.md')); + + await expect( + validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), + ).rejects.toThrow(/not allowed to refer to a location outside/i); + }); + + it('should reject directory symlinks pointing outside', async () => { + const anotherMockDir = createMockDirectory(); + + mockDir.setContent({ + docs: { + 'index.md': 'Hello', + }, + }); + + anotherMockDir.setContent({ + tmp: { + secret: 'password', + }, + }); + + // Create a directory symlink pointing outside + await fs.symlink( + anotherMockDir.path, + mockDir.resolve('docs/external-dir'), + ); + + await expect( + validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), + ).rejects.toThrow(/not allowed to refer to a location outside/i); + }); + + it('should pass for directory symlinks within input directory', async () => { + mockDir.setContent({ + docs: { + 'index.md': 'Hello', + }, + assets: { + 'image.png': 'binary content', + }, + }); + + // Create a directory symlink within input directory + await fs.symlink( + mockDir.resolve('assets'), + mockDir.resolve('docs/assets'), + ); + + await expect( + validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), + ).resolves.toBeUndefined(); + }); + }); }); diff --git a/plugins/techdocs-node/src/stages/generate/helpers.ts b/plugins/techdocs-node/src/stages/generate/helpers.ts index fa0311b47c..1b0813f18d 100644 --- a/plugins/techdocs-node/src/stages/generate/helpers.ts +++ b/plugins/techdocs-node/src/stages/generate/helpers.ts @@ -15,6 +15,7 @@ */ import { isChildPath, LoggerService } from '@backstage/backend-plugin-api'; +import { NotAllowedError } from '@backstage/errors'; import { Entity } from '@backstage/catalog-model'; import { assertError, ForwardedError } from '@backstage/errors'; import { ScmIntegrationRegistry } from '@backstage/integration'; @@ -266,6 +267,51 @@ export const getMkdocsYml = async ( }; }; +/** + * Allowlist of MkDocs configuration keys supported by TechDocs. + * + * @see https://www.mkdocs.org/user-guide/configuration/ + */ +export const ALLOWED_MKDOCS_KEYS = new Set([ + // Site information + 'site_name', + 'site_url', + 'site_description', + 'site_author', + // Repository + 'repo_url', + 'repo_name', + 'edit_uri', + 'edit_uri_template', + // Build directories + 'docs_dir', + 'site_dir', + // Documentation layout + 'nav', + 'exclude_docs', + 'not_in_nav', + // Build settings + 'theme', + 'plugins', + 'markdown_extensions', + 'extra', + 'extra_css', + 'extra_templates', + // Preview controls + 'use_directory_urls', + 'strict', + 'dev_addr', + 'watch', + // Metadata + 'copyright', + 'remote_branch', + 'remote_name', + 'validation', + // Deprecated + 'google_analytics', + 'INHERIT', +]); + /** * Validating mkdocs config file for incorrect/insecure values * Throws on invalid configs @@ -288,6 +334,7 @@ export const validateMkdocsYaml = async ( } const parsedMkdocsYml: Record = mkdocsYml; + if ( parsedMkdocsYml.docs_dir && !isChildPath(inputDir, resolvePath(inputDir, parsedMkdocsYml.docs_dir)) @@ -300,6 +347,29 @@ export const validateMkdocsYaml = async ( return parsedMkdocsYml.docs_dir; }; +/** + * Validates that the docs directory doesn't contain symlinks pointing outside + * the input directory. This prevents path traversal attacks where malicious + * symlinks could be used to read arbitrary files from the host filesystem. + * + * @param docsDir - The docs directory to validate (absolute path) + * @param inputDir - The root input directory that symlinks must stay within + */ +export const validateDocsDirectory = async ( + docsDir: string, + inputDir: string, +): Promise => { + const files = await getFileTreeRecursively(docsDir); + + for (const file of files) { + if (!isChildPath(inputDir, file)) { + throw new NotAllowedError( + `Path ${file} is not allowed to refer to a location outside ${inputDir}`, + ); + } + } +}; + /** * Update docs/index.md file before TechDocs generator uses it to generate docs site, * falling back to docs/README.md or README.md in case a default docs/index.md diff --git a/plugins/techdocs-node/src/stages/generate/mkdocsPatchers.ts b/plugins/techdocs-node/src/stages/generate/mkdocsPatchers.ts index 804c06f129..cd506d3b28 100644 --- a/plugins/techdocs-node/src/stages/generate/mkdocsPatchers.ts +++ b/plugins/techdocs-node/src/stages/generate/mkdocsPatchers.ts @@ -16,7 +16,11 @@ import fs from 'fs-extra'; import yaml from 'js-yaml'; import { ParsedLocationAnnotation } from '../../helpers'; -import { getRepoUrlFromLocationAnnotation, MKDOCS_SCHEMA } from './helpers'; +import { + ALLOWED_MKDOCS_KEYS, + getRepoUrlFromLocationAnnotation, + MKDOCS_SCHEMA, +} from './helpers'; import { assertError } from '@backstage/errors'; import { ScmIntegrationRegistry } from '@backstage/integration'; import { LoggerService } from '@backstage/backend-plugin-api'; @@ -180,3 +184,55 @@ export const patchMkdocsYmlWithPlugins = async ( return changesMade; }); }; + +/** + * Sanitize mkdocs.yml by keeping only allowed configuration keys. + * + * TechDocs only supports a subset of MkDocs configuration options. + * This function reconstructs the config with only allowed keys, + * discarding everything else. This approach ensures that any unknown + * or potentially dangerous configuration options are not passed to MkDocs. + * + * The file is always rewritten to ensure YAML features like merge keys + * and anchors are resolved into plain configuration. + * + * @param mkdocsYmlPath - Absolute path to mkdocs.yml or equivalent of a docs site + * @param logger - A logger instance + */ +export const sanitizeMkdocsYml = async ( + mkdocsYmlPath: string, + logger: LoggerService, +) => { + await patchMkdocsFile(mkdocsYmlPath, logger, mkdocsYml => { + // Identify keys that will be removed for logging + const removedKeys = Object.keys(mkdocsYml).filter( + key => !ALLOWED_MKDOCS_KEYS.has(key), + ); + + if (removedKeys.length > 0) { + logger.warn( + `Removed the following unsupported configuration keys from mkdocs.yml: ${removedKeys.join( + ', ', + )}. ` + + `TechDocs only supports a subset of MkDocs configuration options.`, + ); + } + + // Build a new object with only allowed keys + const sanitized: Record = {}; + for (const key of ALLOWED_MKDOCS_KEYS) { + if (key in mkdocsYml) { + sanitized[key] = (mkdocsYml as Record)[key]; + } + } + + // Clear the original object and copy sanitized values back + for (const key of Object.keys(mkdocsYml)) { + delete (mkdocsYml as Record)[key]; + } + Object.assign(mkdocsYml, sanitized); + + // Always rewrite to ensure clean YAML output (resolves merge keys, anchors, etc.) + return true; + }); +}; diff --git a/plugins/techdocs-node/src/stages/generate/techdocs.ts b/plugins/techdocs-node/src/stages/generate/techdocs.ts index 077963b6c7..ed357c5c81 100644 --- a/plugins/techdocs-node/src/stages/generate/techdocs.ts +++ b/plugins/techdocs-node/src/stages/generate/techdocs.ts @@ -26,12 +26,14 @@ import { patchIndexPreBuild, runCommand, storeEtagMetadata, + validateDocsDirectory, validateMkdocsYaml, } from './helpers'; import { patchMkdocsYmlPreBuild, patchMkdocsYmlWithPlugins, + sanitizeMkdocsYml, } from './mkdocsPatchers'; import { GeneratorBase, @@ -112,6 +114,14 @@ export class TechdocsGenerator implements GeneratorBase { // validate the docs_dir first const docsDir = await validateMkdocsYaml(inputDir, content); + // Remove unsupported configuration keys + await sanitizeMkdocsYml(mkdocsYmlPath, childLogger); + + // Validate that no symlinks in the docs directory point outside the input directory + // This prevents path traversal attacks where malicious symlinks could leak host files + const resolvedDocsDir = path.join(inputDir, docsDir ?? 'docs'); + await validateDocsDirectory(resolvedDocsDir, inputDir); + if (parsedLocationAnnotation) { await patchMkdocsYmlPreBuild( mkdocsYmlPath, From 58ab0221ac062c5eb0fb87b37b56a24de979e463 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jan 2026 20:51:51 +0000 Subject: [PATCH 090/107] chore(deps): update dependency undici to v7.19.2 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 1a06512610..9c6c9c034f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -49329,9 +49329,9 @@ __metadata: linkType: hard "undici@npm:^7.16.0, undici@npm:^7.2.3": - version: 7.19.0 - resolution: "undici@npm:7.19.0" - checksum: 10/5a60b11ed23b2eea74e71123595ffe2b91005b80295051e1ba89119ee9b547ea09c395fd992d7609e0507452177853a8c0405d1a9e7938b2e17292b7aeaba6b0 + version: 7.19.2 + resolution: "undici@npm:7.19.2" + checksum: 10/26a01804402e5f09d02a5d09607e42096828698dddbcf32132dd313af4fda99f3c04ed84d884e28528f945a5b77d87df5c01ec6c1bdc918fd28878cb35f1cb4a languageName: node linkType: hard From 4b373cf252465c942792bc8a6cc865ce798e8844 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Fri, 30 Jan 2026 20:57:13 +0000 Subject: [PATCH 091/107] Revert "Merge branch 'master' into bui-links" Signed-off-by: Charles de Dreuille --- .changeset/sharp-doodles-retire.md | 5 - .../mkdocs_with_duplicate_merge_hooks.yml | 12 - .../__fixtures__/mkdocs_with_hooks.yml | 5 - .../mkdocs_with_merge_key_hooks.yml | 8 - .../mkdocs_with_parser_differential_hooks.yml | 16 - .../src/stages/generate/helpers.test.ts | 306 +----------------- .../src/stages/generate/helpers.ts | 70 ---- .../src/stages/generate/mkdocsPatchers.ts | 58 +--- .../src/stages/generate/techdocs.ts | 10 - yarn.lock | 34 +- 10 files changed, 20 insertions(+), 504 deletions(-) delete mode 100644 .changeset/sharp-doodles-retire.md delete mode 100644 plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_duplicate_merge_hooks.yml delete mode 100644 plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_hooks.yml delete mode 100644 plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_merge_key_hooks.yml delete mode 100644 plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_parser_differential_hooks.yml diff --git a/.changeset/sharp-doodles-retire.md b/.changeset/sharp-doodles-retire.md deleted file mode 100644 index 2062b7ec34..0000000000 --- a/.changeset/sharp-doodles-retire.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs-node': patch ---- - -Some security fixes diff --git a/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_duplicate_merge_hooks.yml b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_duplicate_merge_hooks.yml deleted file mode 100644 index 145412e730..0000000000 --- a/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_duplicate_merge_hooks.yml +++ /dev/null @@ -1,12 +0,0 @@ -# This file uses duplicate merge keys (<<) which causes parser differential: -# - js-yaml: hooks: null (first merge key wins) -# - PyYAML: hooks: [hello.py] (last merge key wins) -site_name: Test -plugins: - - techdocs-core -array_base: &array_base - hooks: [hello.py] -null_base: &null_base - hooks: null -<<: *null_base -<<: *array_base diff --git a/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_hooks.yml b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_hooks.yml deleted file mode 100644 index 333ba6db36..0000000000 --- a/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_hooks.yml +++ /dev/null @@ -1,5 +0,0 @@ -site_name: Test site name -site_description: Test site description -hooks: - - hooks/my_hook.py - - hooks/another_hook.py diff --git a/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_merge_key_hooks.yml b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_merge_key_hooks.yml deleted file mode 100644 index f3b5dbdc93..0000000000 --- a/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_merge_key_hooks.yml +++ /dev/null @@ -1,8 +0,0 @@ -site_name: Test -plugins: - - techdocs-core -extra: - array_hooks: &array_hooks - hooks: - - custom_hook.py -<<: *array_hooks diff --git a/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_parser_differential_hooks.yml b/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_parser_differential_hooks.yml deleted file mode 100644 index 42f574dcaf..0000000000 --- a/plugins/techdocs-node/src/stages/generate/__fixtures__/mkdocs_with_parser_differential_hooks.yml +++ /dev/null @@ -1,16 +0,0 @@ -# This file intentionally uses duplicate merge keys (<<) which is technically -# invalid YAML, but is accepted by most parsers with different behaviors: -# - js-yaml: uses the first merge key value (hooks: null) -# - PyYAML: uses the last merge key value (hooks: [custom_hook.py]) -# This tests that sanitization catches hooks regardless of parser interpretation. -site_name: Test -plugins: - - techdocs-core -extra: - null_hooks: &null_hooks - hooks: null - array_hooks: &array_hooks - hooks: - - custom_hook.py -<<: *null_hooks -<<: *array_hooks diff --git a/plugins/techdocs-node/src/stages/generate/helpers.test.ts b/plugins/techdocs-node/src/stages/generate/helpers.test.ts index 9b24ab9aa9..8a066e2c42 100644 --- a/plugins/techdocs-node/src/stages/generate/helpers.test.ts +++ b/plugins/techdocs-node/src/stages/generate/helpers.test.ts @@ -30,13 +30,11 @@ import { getRepoUrlFromLocationAnnotation, patchIndexPreBuild, storeEtagMetadata, - validateDocsDirectory, validateMkdocsYaml, } from './helpers'; import { patchMkdocsYmlPreBuild, patchMkdocsYmlWithPlugins, - sanitizeMkdocsYml, } from './mkdocsPatchers'; import yaml from 'js-yaml'; @@ -94,24 +92,6 @@ const mkdocsYmlWithAdditionalPluginsWithConfig = fs.readFileSync( const mkdocsYmlWithEnvTag = fs.readFileSync( resolvePath(__filename, '../__fixtures__/mkdocs_with_env_tag.yml'), ); -const mkdocsYmlWithHooks = fs.readFileSync( - resolvePath(__filename, '../__fixtures__/mkdocs_with_hooks.yml'), -); -const mkdocsYmlWithMergeKeyHooks = fs.readFileSync( - resolvePath(__filename, '../__fixtures__/mkdocs_with_merge_key_hooks.yml'), -); -const mkdocsYmlWithParserDifferentialHooks = fs.readFileSync( - resolvePath( - __filename, - '../__fixtures__/mkdocs_with_parser_differential_hooks.yml', - ), -); -const mkdocsYmlWithDuplicateMergeHooks = fs.readFileSync( - resolvePath( - __filename, - '../__fixtures__/mkdocs_with_duplicate_merge_hooks.yml', - ), -); const mockLogger = mockServices.logger.mock(); const warn = jest.spyOn(mockLogger, 'warn'); @@ -461,6 +441,8 @@ describe('helpers', () => { }; expect(parsedYml.plugins).toHaveLength(4); expect(parsedYml.plugins).toContain('techdocs-core'); + // we want our original object with its properties to be preserved, and for the basic string form of the plugin + // to NOT be added as well. expect(parsedYml.plugins).not.toContain('custom-plugin'); expect(parsedYml.plugins).toContainEqual({ 'custom-plugin': { with: { configuration: 1 } }, @@ -745,288 +727,4 @@ describe('helpers', () => { ).resolves.toBeUndefined(); }); }); - - describe('sanitizeMkdocsYml', () => { - beforeEach(() => { - warn.mockClear(); - mockDir.setContent({ - 'mkdocs_with_hooks.yml': mkdocsYmlWithHooks, - 'mkdocs.yml': mkdocsYml, - }); - }); - - it('should remove disallowed keys from mkdocs.yml and log a warning', async () => { - await sanitizeMkdocsYml( - mockDir.resolve('mkdocs_with_hooks.yml'), - mockLogger, - ); - - const updatedMkdocsYml = await fs.readFile( - mockDir.resolve('mkdocs_with_hooks.yml'), - ); - const parsedYml = yaml.load(updatedMkdocsYml.toString()) as { - hooks?: string[]; - site_name: string; - }; - expect(parsedYml.hooks).toBeUndefined(); - expect(parsedYml.site_name).toBe('Test site name'); - expect(warn).toHaveBeenCalledWith( - expect.stringContaining( - 'Removed the following unsupported configuration keys from mkdocs.yml: hooks', - ), - ); - }); - - it('should not modify mkdocs.yml when no disallowed keys are present', async () => { - await sanitizeMkdocsYml(mockDir.resolve('mkdocs.yml'), mockLogger); - - const updatedMkdocsYml = await fs.readFile(mockDir.resolve('mkdocs.yml')); - const parsedYml = yaml.load(updatedMkdocsYml.toString()) as { - hooks?: string[]; - site_name: string; - }; - expect(parsedYml.hooks).toBeUndefined(); - expect(parsedYml.site_name).toBe('Test site name'); - expect(warn).not.toHaveBeenCalled(); - }); - - it('should remove multiple disallowed keys and list them all in the warning', async () => { - const mkdocsWithMultipleDisallowed = `site_name: Test -hooks: - - hook.py -some_unknown_key: value -another_unknown: true -`; - mockDir.setContent({ - 'mkdocs_multiple.yml': mkdocsWithMultipleDisallowed, - }); - - await sanitizeMkdocsYml( - mockDir.resolve('mkdocs_multiple.yml'), - mockLogger, - ); - - const updatedMkdocsYml = await fs.readFile( - mockDir.resolve('mkdocs_multiple.yml'), - ); - const parsedYml = yaml.load(updatedMkdocsYml.toString()) as Record< - string, - unknown - >; - expect(parsedYml.hooks).toBeUndefined(); - expect(parsedYml.some_unknown_key).toBeUndefined(); - expect(parsedYml.another_unknown).toBeUndefined(); - expect(parsedYml.site_name).toBe('Test'); - expect(warn).toHaveBeenCalledWith( - expect.stringMatching( - /Removed the following unsupported configuration keys.*hooks.*some_unknown_key.*another_unknown|Removed the following unsupported configuration keys.*hooks.*another_unknown.*some_unknown_key/, - ), - ); - }); - - it('should remove hooks introduced via YAML merge keys', async () => { - mockDir.setContent({ - 'mkdocs_merge_keys.yml': mkdocsYmlWithMergeKeyHooks, - }); - - await sanitizeMkdocsYml( - mockDir.resolve('mkdocs_merge_keys.yml'), - mockLogger, - ); - - const updatedMkdocsYml = await fs.readFile( - mockDir.resolve('mkdocs_merge_keys.yml'), - ); - const parsedYml = yaml.load(updatedMkdocsYml.toString()) as Record< - string, - unknown - >; - - expect(parsedYml.hooks).toBeUndefined(); - expect(parsedYml.site_name).toBe('Test'); - expect(parsedYml.plugins).toEqual(['techdocs-core']); - expect(updatedMkdocsYml.toString()).not.toContain('<<:'); - - expect(warn).toHaveBeenCalledWith( - expect.stringContaining( - 'Removed the following unsupported configuration keys from mkdocs.yml: hooks', - ), - ); - }); - - it('should remove hooks when parsers interpret duplicate merge keys differently', async () => { - mockDir.setContent({ - 'mkdocs_parser_diff.yml': mkdocsYmlWithParserDifferentialHooks, - }); - - await sanitizeMkdocsYml( - mockDir.resolve('mkdocs_parser_diff.yml'), - mockLogger, - ); - - const updatedMkdocsYml = await fs.readFile( - mockDir.resolve('mkdocs_parser_diff.yml'), - ); - const parsedYml = yaml.load(updatedMkdocsYml.toString()) as Record< - string, - unknown - >; - - expect(parsedYml.hooks).toBeUndefined(); - expect(parsedYml.site_name).toBe('Test'); - expect(parsedYml.plugins).toEqual(['techdocs-core']); - expect(parsedYml.extra).toBeDefined(); - expect(updatedMkdocsYml.toString()).not.toContain('<<:'); - - expect(warn).toHaveBeenCalledWith( - expect.stringContaining( - 'Removed the following unsupported configuration keys from mkdocs.yml: hooks', - ), - ); - }); - - it('should remove hooks with duplicate merge keys and top-level anchors', async () => { - mockDir.setContent({ - 'mkdocs_duplicate_merge.yml': mkdocsYmlWithDuplicateMergeHooks, - }); - - await sanitizeMkdocsYml( - mockDir.resolve('mkdocs_duplicate_merge.yml'), - mockLogger, - ); - - const updatedMkdocsYml = await fs.readFile( - mockDir.resolve('mkdocs_duplicate_merge.yml'), - ); - const parsedYml = yaml.load(updatedMkdocsYml.toString()) as Record< - string, - unknown - >; - - expect(parsedYml.hooks).toBeUndefined(); - expect(parsedYml.site_name).toBe('Test'); - expect(parsedYml.plugins).toEqual(['techdocs-core']); - expect(updatedMkdocsYml.toString()).not.toContain('<<:'); - - expect(warn).toHaveBeenCalledWith(expect.stringContaining('hooks')); - }); - }); - - describe('validateDocsDirectory', () => { - it('should pass for a valid docs directory with no symlinks', async () => { - mockDir.setContent({ - docs: { - 'index.md': 'Hello', - 'guide.md': 'Guide content', - }, - }); - - await expect( - validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), - ).resolves.toBeUndefined(); - }); - - it('should pass for symlinks pointing within the input directory', async () => { - mockDir.setContent({ - docs: { - 'index.md': 'Hello', - }, - 'other.md': 'Other content', - }); - - // Create a symlink within the input directory - await fs.symlink( - mockDir.resolve('other.md'), - mockDir.resolve('docs/link.md'), - ); - - await expect( - validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), - ).resolves.toBeUndefined(); - }); - - it('should reject symlinks pointing outside the input directory', async () => { - mockDir.setContent({ - docs: { - 'index.md': 'Hello', - }, - }); - - // Create a symlink pointing outside the input directory - await fs.symlink('/tmp', mockDir.resolve('docs/escape.md')); - - await expect( - validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), - ).rejects.toThrow(/not allowed to refer to a location outside/i); - }); - - it('should reject symlinks to sensitive files like /etc/passwd', async () => { - mockDir.setContent({ - docs: { - 'index.md': 'Hello', - }, - }); - - // Create a symlink to /etc/passwd - await fs.symlink('/etc/passwd', mockDir.resolve('docs/passwd.md')); - - await expect( - validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), - ).rejects.toThrow(/not allowed to refer to a location outside/i); - }); - - it('should reject symlinks in nested directories', async () => { - mockDir.setContent({ - docs: { - 'index.md': 'Hello', - nested: { - 'page.md': 'Nested page', - }, - }, - }); - - // Create a symlink in a nested directory pointing outside - await fs.symlink('/etc/passwd', mockDir.resolve('docs/nested/escape.md')); - - await expect( - validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), - ).rejects.toThrow(/not allowed to refer to a location outside/i); - }); - - it('should reject directory symlinks pointing outside', async () => { - mockDir.setContent({ - docs: { - 'index.md': 'Hello', - }, - }); - - // Create a directory symlink pointing outside - await fs.symlink('/tmp', mockDir.resolve('docs/external-dir')); - - await expect( - validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), - ).rejects.toThrow(/not allowed to refer to a location outside/i); - }); - - it('should pass for directory symlinks within input directory', async () => { - mockDir.setContent({ - docs: { - 'index.md': 'Hello', - }, - assets: { - 'image.png': 'binary content', - }, - }); - - // Create a directory symlink within input directory - await fs.symlink( - mockDir.resolve('assets'), - mockDir.resolve('docs/assets'), - ); - - await expect( - validateDocsDirectory(mockDir.resolve('docs'), mockDir.path), - ).resolves.toBeUndefined(); - }); - }); }); diff --git a/plugins/techdocs-node/src/stages/generate/helpers.ts b/plugins/techdocs-node/src/stages/generate/helpers.ts index 1b0813f18d..fa0311b47c 100644 --- a/plugins/techdocs-node/src/stages/generate/helpers.ts +++ b/plugins/techdocs-node/src/stages/generate/helpers.ts @@ -15,7 +15,6 @@ */ import { isChildPath, LoggerService } from '@backstage/backend-plugin-api'; -import { NotAllowedError } from '@backstage/errors'; import { Entity } from '@backstage/catalog-model'; import { assertError, ForwardedError } from '@backstage/errors'; import { ScmIntegrationRegistry } from '@backstage/integration'; @@ -267,51 +266,6 @@ export const getMkdocsYml = async ( }; }; -/** - * Allowlist of MkDocs configuration keys supported by TechDocs. - * - * @see https://www.mkdocs.org/user-guide/configuration/ - */ -export const ALLOWED_MKDOCS_KEYS = new Set([ - // Site information - 'site_name', - 'site_url', - 'site_description', - 'site_author', - // Repository - 'repo_url', - 'repo_name', - 'edit_uri', - 'edit_uri_template', - // Build directories - 'docs_dir', - 'site_dir', - // Documentation layout - 'nav', - 'exclude_docs', - 'not_in_nav', - // Build settings - 'theme', - 'plugins', - 'markdown_extensions', - 'extra', - 'extra_css', - 'extra_templates', - // Preview controls - 'use_directory_urls', - 'strict', - 'dev_addr', - 'watch', - // Metadata - 'copyright', - 'remote_branch', - 'remote_name', - 'validation', - // Deprecated - 'google_analytics', - 'INHERIT', -]); - /** * Validating mkdocs config file for incorrect/insecure values * Throws on invalid configs @@ -334,7 +288,6 @@ export const validateMkdocsYaml = async ( } const parsedMkdocsYml: Record = mkdocsYml; - if ( parsedMkdocsYml.docs_dir && !isChildPath(inputDir, resolvePath(inputDir, parsedMkdocsYml.docs_dir)) @@ -347,29 +300,6 @@ export const validateMkdocsYaml = async ( return parsedMkdocsYml.docs_dir; }; -/** - * Validates that the docs directory doesn't contain symlinks pointing outside - * the input directory. This prevents path traversal attacks where malicious - * symlinks could be used to read arbitrary files from the host filesystem. - * - * @param docsDir - The docs directory to validate (absolute path) - * @param inputDir - The root input directory that symlinks must stay within - */ -export const validateDocsDirectory = async ( - docsDir: string, - inputDir: string, -): Promise => { - const files = await getFileTreeRecursively(docsDir); - - for (const file of files) { - if (!isChildPath(inputDir, file)) { - throw new NotAllowedError( - `Path ${file} is not allowed to refer to a location outside ${inputDir}`, - ); - } - } -}; - /** * Update docs/index.md file before TechDocs generator uses it to generate docs site, * falling back to docs/README.md or README.md in case a default docs/index.md diff --git a/plugins/techdocs-node/src/stages/generate/mkdocsPatchers.ts b/plugins/techdocs-node/src/stages/generate/mkdocsPatchers.ts index cd506d3b28..804c06f129 100644 --- a/plugins/techdocs-node/src/stages/generate/mkdocsPatchers.ts +++ b/plugins/techdocs-node/src/stages/generate/mkdocsPatchers.ts @@ -16,11 +16,7 @@ import fs from 'fs-extra'; import yaml from 'js-yaml'; import { ParsedLocationAnnotation } from '../../helpers'; -import { - ALLOWED_MKDOCS_KEYS, - getRepoUrlFromLocationAnnotation, - MKDOCS_SCHEMA, -} from './helpers'; +import { getRepoUrlFromLocationAnnotation, MKDOCS_SCHEMA } from './helpers'; import { assertError } from '@backstage/errors'; import { ScmIntegrationRegistry } from '@backstage/integration'; import { LoggerService } from '@backstage/backend-plugin-api'; @@ -184,55 +180,3 @@ export const patchMkdocsYmlWithPlugins = async ( return changesMade; }); }; - -/** - * Sanitize mkdocs.yml by keeping only allowed configuration keys. - * - * TechDocs only supports a subset of MkDocs configuration options. - * This function reconstructs the config with only allowed keys, - * discarding everything else. This approach ensures that any unknown - * or potentially dangerous configuration options are not passed to MkDocs. - * - * The file is always rewritten to ensure YAML features like merge keys - * and anchors are resolved into plain configuration. - * - * @param mkdocsYmlPath - Absolute path to mkdocs.yml or equivalent of a docs site - * @param logger - A logger instance - */ -export const sanitizeMkdocsYml = async ( - mkdocsYmlPath: string, - logger: LoggerService, -) => { - await patchMkdocsFile(mkdocsYmlPath, logger, mkdocsYml => { - // Identify keys that will be removed for logging - const removedKeys = Object.keys(mkdocsYml).filter( - key => !ALLOWED_MKDOCS_KEYS.has(key), - ); - - if (removedKeys.length > 0) { - logger.warn( - `Removed the following unsupported configuration keys from mkdocs.yml: ${removedKeys.join( - ', ', - )}. ` + - `TechDocs only supports a subset of MkDocs configuration options.`, - ); - } - - // Build a new object with only allowed keys - const sanitized: Record = {}; - for (const key of ALLOWED_MKDOCS_KEYS) { - if (key in mkdocsYml) { - sanitized[key] = (mkdocsYml as Record)[key]; - } - } - - // Clear the original object and copy sanitized values back - for (const key of Object.keys(mkdocsYml)) { - delete (mkdocsYml as Record)[key]; - } - Object.assign(mkdocsYml, sanitized); - - // Always rewrite to ensure clean YAML output (resolves merge keys, anchors, etc.) - return true; - }); -}; diff --git a/plugins/techdocs-node/src/stages/generate/techdocs.ts b/plugins/techdocs-node/src/stages/generate/techdocs.ts index ed357c5c81..077963b6c7 100644 --- a/plugins/techdocs-node/src/stages/generate/techdocs.ts +++ b/plugins/techdocs-node/src/stages/generate/techdocs.ts @@ -26,14 +26,12 @@ import { patchIndexPreBuild, runCommand, storeEtagMetadata, - validateDocsDirectory, validateMkdocsYaml, } from './helpers'; import { patchMkdocsYmlPreBuild, patchMkdocsYmlWithPlugins, - sanitizeMkdocsYml, } from './mkdocsPatchers'; import { GeneratorBase, @@ -114,14 +112,6 @@ export class TechdocsGenerator implements GeneratorBase { // validate the docs_dir first const docsDir = await validateMkdocsYaml(inputDir, content); - // Remove unsupported configuration keys - await sanitizeMkdocsYml(mkdocsYmlPath, childLogger); - - // Validate that no symlinks in the docs directory point outside the input directory - // This prevents path traversal attacks where malicious symlinks could leak host files - const resolvedDocsDir = path.join(inputDir, docsDir ?? 'docs'); - await validateDocsDirectory(resolvedDocsDir, inputDir); - if (parsedLocationAnnotation) { await patchMkdocsYmlPreBuild( mkdocsYmlPath, diff --git a/yarn.lock b/yarn.lock index 5d7b790adf..7b2c5703e7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -27589,6 +27589,13 @@ __metadata: languageName: node linkType: hard +"cookie-signature@npm:1.0.7, cookie-signature@npm:~1.0.6": + version: 1.0.7 + resolution: "cookie-signature@npm:1.0.7" + checksum: 10/1a62808cd30d15fb43b70e19829b64d04b0802d8ef00275b57d152de4ae6a3208ca05c197b6668d104c4d9de389e53ccc2d3bc6bcaaffd9602461417d8c40710 + languageName: node + linkType: hard + "cookie-signature@npm:^1.2.1, cookie-signature@npm:^1.2.2": version: 1.2.2 resolution: "cookie-signature@npm:1.2.2" @@ -27596,14 +27603,7 @@ __metadata: languageName: node linkType: hard -"cookie-signature@npm:~1.0.6, cookie-signature@npm:~1.0.7": - version: 1.0.7 - resolution: "cookie-signature@npm:1.0.7" - checksum: 10/1a62808cd30d15fb43b70e19829b64d04b0802d8ef00275b57d152de4ae6a3208ca05c197b6668d104c4d9de389e53ccc2d3bc6bcaaffd9602461417d8c40710 - languageName: node - linkType: hard - -"cookie@npm:0.7.2, cookie@npm:^0.7.0, cookie@npm:^0.7.1, cookie@npm:^0.7.2, cookie@npm:~0.7.1, cookie@npm:~0.7.2": +"cookie@npm:0.7.2, cookie@npm:^0.7.0, cookie@npm:^0.7.1, cookie@npm:^0.7.2, cookie@npm:~0.7.1": version: 0.7.2 resolution: "cookie@npm:0.7.2" checksum: 10/24b286c556420d4ba4e9bc09120c9d3db7d28ace2bd0f8ccee82422ce42322f73c8312441271e5eefafbead725980e5996cc02766dbb89a90ac7f5636ede608f @@ -28487,7 +28487,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:2.6.9, debug@npm:^2.6.0, debug@npm:~2.6.9": +"debug@npm:2.6.9, debug@npm:^2.6.0": version: 2.6.9 resolution: "debug@npm:2.6.9" dependencies: @@ -31059,18 +31059,18 @@ __metadata: linkType: hard "express-session@npm:^1.17.1, express-session@npm:^1.17.3": - version: 1.19.0 - resolution: "express-session@npm:1.19.0" + version: 1.18.2 + resolution: "express-session@npm:1.18.2" dependencies: - cookie: "npm:~0.7.2" - cookie-signature: "npm:~1.0.7" - debug: "npm:~2.6.9" + cookie: "npm:0.7.2" + cookie-signature: "npm:1.0.7" + debug: "npm:2.6.9" depd: "npm:~2.0.0" on-headers: "npm:~1.1.0" parseurl: "npm:~1.3.3" - safe-buffer: "npm:~5.2.1" + safe-buffer: "npm:5.2.1" uid-safe: "npm:~2.1.5" - checksum: 10/5f36b51d344ec40adb5b9cd8a915fd694cdaf64832632411d4f6e6de8e9a83d873a20389e9c3cce966fece76a18c0384c5f2763b3ac089f801e8d6e92cb543e6 + checksum: 10/1a89a4d3e579e1d2a729dc604c254c3e942b24a279681371c2d8042b1080f9e6de4ca787a091ec1a9178c9f2cc5c19bcb9f3929632d44db8972263e26c2cc4b8 languageName: node linkType: hard @@ -45678,7 +45678,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0, safe-buffer@npm:~5.2.1": +"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10/32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451 From c5f06791f8de7c35437423b98a9912b39d71233a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jan 2026 21:04:40 +0000 Subject: [PATCH 092/107] chore(deps): update dependency motion to v12.29.2 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs-ui/yarn.lock | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/docs-ui/yarn.lock b/docs-ui/yarn.lock index 76899bcb6b..54fa18ffc8 100644 --- a/docs-ui/yarn.lock +++ b/docs-ui/yarn.lock @@ -3307,12 +3307,12 @@ __metadata: languageName: node linkType: hard -"framer-motion@npm:^12.28.1": - version: 12.28.1 - resolution: "framer-motion@npm:12.28.1" +"framer-motion@npm:^12.29.2": + version: 12.29.2 + resolution: "framer-motion@npm:12.29.2" dependencies: - motion-dom: "npm:^12.28.1" - motion-utils: "npm:^12.27.2" + motion-dom: "npm:^12.29.2" + motion-utils: "npm:^12.29.2" tslib: "npm:^2.4.0" peerDependencies: "@emotion/is-prop-valid": "*" @@ -3325,7 +3325,7 @@ __metadata: optional: true react-dom: optional: true - checksum: 10/f8101df55b9e2c9ca7eb362aaff250ba2f77ef01770cbf3d27bc9c2103504d247936b4e62f2a4059bc1a0a878f558d32407db9b182976fdd48b2549d0631be54 + checksum: 10/13ea43efa814e4df1f3a0bf7ee6c1736f3f01b96cb677e560b62d58db8768f00a53c17156bb5bf6bf06b786370468495dbb6b0a83e3b5b5289e5235046ccb03b languageName: node linkType: hard @@ -5056,27 +5056,27 @@ __metadata: languageName: node linkType: hard -"motion-dom@npm:^12.28.1": - version: 12.28.1 - resolution: "motion-dom@npm:12.28.1" +"motion-dom@npm:^12.29.2": + version: 12.29.2 + resolution: "motion-dom@npm:12.29.2" dependencies: - motion-utils: "npm:^12.27.2" - checksum: 10/a0ba8bbd137d4b21df4fe517c2a9e02c891270974f212909929aadcc3043a3655bb28d2eceeb58152ee0ce25381fe0dd1a06c3b1e48ba15a5b13ec20938b42b0 + motion-utils: "npm:^12.29.2" + checksum: 10/d1eeb6840363cc2b4d1e1c2d9a91becc117bb64747482b1a99f7f2d4da709f049c9544c3a566c641cada368037019c0fafd3e7cf56f0477e88d65e9886bcdc40 languageName: node linkType: hard -"motion-utils@npm:^12.27.2": - version: 12.27.2 - resolution: "motion-utils@npm:12.27.2" - checksum: 10/e4c4724b1bf11d5c6dca17e8c2fd42dc7270f03ca1fd1669908e3b8bb2cd528669c7aab8df134fedbc94806edb2f9e0e9f84c66cbe77d0cb923733417b5f9f79 +"motion-utils@npm:^12.29.2": + version: 12.29.2 + resolution: "motion-utils@npm:12.29.2" + checksum: 10/ae5f9be58c07939af72334894ed1a18653d724946182a718dc3d11268ef26e63804c3f16dee5a6110596d4406b539c4513822b74f86adebef9488601c34b18b7 languageName: node linkType: hard "motion@npm:^12.4.1": - version: 12.28.1 - resolution: "motion@npm:12.28.1" + version: 12.29.2 + resolution: "motion@npm:12.29.2" dependencies: - framer-motion: "npm:^12.28.1" + framer-motion: "npm:^12.29.2" tslib: "npm:^2.4.0" peerDependencies: "@emotion/is-prop-valid": "*" @@ -5089,7 +5089,7 @@ __metadata: optional: true react-dom: optional: true - checksum: 10/4ad4e36ec237f22341db24a3beb87d3126facc52acde4d02d8b59cf3cbb98512e7e2aefe3256cc6e00e53a44fcaf01c998c427d79a113048b5a676524608cac5 + checksum: 10/0480a984192dd0f884709a007c1d28f31ff5fcdecb6674517edbe11ac0e318efc845373f35800e0606899613e6617ec87b1c09d5ecf3f5a5aeb3eb25fef22c7d languageName: node linkType: hard From d1ff2f94fcbf5e80d9c6f194a0b82623d7c37ae3 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 31 Jan 2026 10:34:45 +0100 Subject: [PATCH 093/107] docs: fix proxy extension point import path Signed-off-by: Patrik Oldsberg --- docs/plugins/proxying.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/plugins/proxying.md b/docs/plugins/proxying.md index 72ad09a113..bd89fc6c36 100644 --- a/docs/plugins/proxying.md +++ b/docs/plugins/proxying.md @@ -142,7 +142,7 @@ Example: ```ts import { createBackendModule } from '@backstage/backend-plugin-api'; -import { proxyEndpointsExtensionPoint } from '@backstage/plugin-proxy-node'; +import { proxyEndpointsExtensionPoint } from '@backstage/plugin-proxy-node/alpha'; backend.add( createBackendModule({ From ed2a168fc3e3ddfba9f2b40de6f4f55bf4757709 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 2 Feb 2026 00:52:41 +0100 Subject: [PATCH 094/107] REVIEWING.md: update to use waiting-for:* labels Signed-off-by: Patrik Oldsberg --- LABELS.md | 8 ++++---- REVIEWING.md | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/LABELS.md b/LABELS.md index 732b4034dc..8e9a55feef 100644 --- a/LABELS.md +++ b/LABELS.md @@ -101,10 +101,10 @@ These labels indicate a workflow status for the owners. The following labels indicate the status of a pull request: -- `status:needs-review` - The pull request needs a review and will be visible in the review queue unless already assigned an owner. -- `status:needs-changes` - Changes have been requested by a reviewer and the pull request will not receive a review until the changes are made. A comment made on the pull request by the author will also push it back into the review queue. -- `status:needs-decision` - The pull request has been marked as more complex and needs a decision from the owners. Progress can still be made and discussion can continue, but expect the review to take longer. These pull requests are often good candidates to bring to a [SIG](https://github.com/backstage/community/tree/main/sigs) meeting. -- `status:awaiting-merge` - The pull request has been approved and is awaiting merge. If you have write access and authored the pull request you can merge it yourself. If you do not have access to merge and the pull request has not been merged within a day of approval, please notify the assigned reviewer. +- `waiting-for:review` - The pull request needs a review and will be visible in the review queue unless already assigned an owner. +- `waiting-for:author` - Changes have been requested by a reviewer and the pull request will not receive a review until the changes are made. A comment made on the pull request by the author will also push it back into the review queue. +- `waiting-for:decision` - The pull request has been marked as more complex and needs a decision from the owners. Progress can still be made and discussion can continue, but expect the review to take longer. These pull requests are often good candidates to bring to a [SIG](https://github.com/backstage/community/tree/main/sigs) meeting. +- `waiting-for:merge` - The pull request has been approved and is awaiting merge. If you have write access and authored the pull request you can merge it yourself. If you do not have access to merge and the pull request has not been merged within a day of approval, please notify the assigned reviewer. The following labels indicate the size of a pull request: diff --git a/REVIEWING.md b/REVIEWING.md index 1c49854f3c..38ebed991f 100644 --- a/REVIEWING.md +++ b/REVIEWING.md @@ -24,13 +24,13 @@ Reviewers should use the "request changes" option when they believe changes are Members of the `@backstage/reviewers` do not have any specific areas that they should focus on, they can choose to filter and focus on reviews from any part of the project. They do not assign themselves specific pull requests, but instead leave reviews directly on pull requests without any further process. -Reviews from this group still have meaningful impact on the review process, as they are picked up by project automation. Approving reviews will add the `reviewer-approved` label to the pull request, which greatly increases its priority and visibility for owners in the area. Likewise, requesting changes will add the `status:needs-changes` label to the pull request, which will remove it from the review queue until the author has commented or made changes. +Reviews from this group still have meaningful impact on the review process, as they are picked up by project automation. Approving reviews will add the `reviewer-approved` label to the pull request, which greatly increases its priority and visibility for owners in the area. Likewise, requesting changes will add the `waiting-for:author` label to the pull request, which will remove it from the review queue until the author has commented or made changes. ### Review process for Project Area Maintainers Project area maintainers are responsible for reviewing and ultimately merging or closing pull requests towards their project area. They should use the global or filtered board for their project area to find pull requests to review. When they find a pull request that they want to review, they should assign themselves to the pull request, removing it from the review queue and placing it on their personal review board. -Once a pull request has been assigned a single owner, it is their responsibility to review and eventually merge or close the pull request. They manage all ongoing requests on their personal review board, typically prioritizing the ones at the top of the board marked with `status:needs-review`. If a pull request is left unreviewed for too long, it will automatically be unassigned and returned to the review queue. Once a pull request has been approved by the assigned owner, the owner should merge the pull request themselves if it is an outside contribution, but otherwise generally leave that to the author of the PR. +Once a pull request has been assigned a single owner, it is their responsibility to review and eventually merge or close the pull request. They manage all ongoing requests on their personal review board, typically prioritizing the ones at the top of the board marked with `waiting-for:review`. If a pull request is left unreviewed for too long, it will automatically be unassigned and returned to the review queue. Once a pull request has been approved by the assigned owner, the owner should merge the pull request themselves if it is an outside contribution, but otherwise generally leave that to the author of the PR. Some pull requests may require review from multiple project areas. In these cases the most relevant owner should assign themselves and coordinate with the other owners for additional reviews. If the most relevant owner is not clear, this is preferably solved in a discussion among the owners. Frequent conflicts should lead to a discussion whether `CODEOWNERS` should be updated to simplify the review process. If some owners are currently unavailable, other owners can assign themselves to the pull request and bring it to the point where they approve the changes for their area, and then send the pull request back to the review queue. From fb87aa90a35bbac6683e49dcd8a489bfe6132d48 Mon Sep 17 00:00:00 2001 From: nojaf Date: Mon, 2 Feb 2026 09:26:07 +0100 Subject: [PATCH 095/107] docs: add documentation for Elasticsearch auth extension point Signed-off-by: nojaf --- docs/features/search/search-engines.md | 62 ++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/docs/features/search/search-engines.md b/docs/features/search/search-engines.md index 07cf11aae5..5b8f546b40 100644 --- a/docs/features/search/search-engines.md +++ b/docs/features/search/search-engines.md @@ -291,3 +291,65 @@ search: fuzziness: AUTO prefixLength: 3; ``` + +### Custom Authentication Extension Point + +For enterprise environments that require dynamic authentication mechanisms such as bearer tokens with automatic rotation, the Elasticsearch module provides an authentication extension point. This is useful when: + +- Using OAuth2/OIDC identity providers for service authentication +- Tokens need to be refreshed automatically (e.g., tokens that expire hourly) +- Integrating with internal identity services +- Running Elasticsearch/OpenSearch clusters secured by token-based authentication + +To use custom authentication, create a backend module that provides an auth provider: + +```ts title="packages/backend/src/modules/elasticsearchAuth.ts" +import { createBackendModule } from '@backstage/backend-plugin-api'; +import { elasticsearchAuthExtensionPoint } from '@backstage/plugin-search-backend-module-elasticsearch'; + +export default createBackendModule({ + pluginId: 'search', + moduleId: 'elasticsearch-custom-auth', + register(env) { + env.registerInit({ + deps: { + elasticsearchAuth: elasticsearchAuthExtensionPoint, + }, + async init({ elasticsearchAuth }) { + elasticsearchAuth.setAuthProvider({ + async getAuthHeaders() { + // Fetch token from your identity service + const token = await myTokenService.getToken(); + return { Authorization: `Bearer ${token}` }; + }, + }); + }, + }); + }, +}); +``` + +Then register this module in your backend: + +```ts title="packages/backend/src/index.ts" +const backend = createBackend(); + +// Other plugins... + +backend.add(import('@backstage/plugin-search-backend')); +backend.add(import('@backstage/plugin-search-backend-module-elasticsearch')); + +/* highlight-add-start */ +backend.add(import('./modules/elasticsearchAuth')); +/* highlight-add-end */ + +backend.start(); +``` + +The `getAuthHeaders` method is called before each request, allowing for just-in-time token retrieval and automatic rotation. When an auth provider is configured, it takes precedence over any static authentication in `app-config.yaml`. + +:::note Note + +Custom authentication is supported for the `elastic`, `opensearch`, and default providers. The `aws` provider uses AWS SigV4 request signing and does not support custom auth providers. + +::: From 0e9578d93e655f9d02ad2756c579626bea452de6 Mon Sep 17 00:00:00 2001 From: Johan Persson Date: Thu, 29 Jan 2026 17:16:43 +0100 Subject: [PATCH 096/107] feat(catalog-react): migrate UnregisterEntityDialog to Backstage UI Migrated UnregisterEntityDialog from Material UI to Backstage UI components. - Replaced MUI Dialog, Button, Alert, Box with BUI equivalents - Refactored to hook-based architecture with separate body components - Added proper button loading states during async actions - Extracted shared AdvancedDeleteAccordion component - No breaking changes to public API Signed-off-by: Johan Persson --- .changeset/dull-ants-pull.md | 5 + plugins/catalog-react/package.json | 1 + .../UnregisterEntityDialog.tsx | 538 ++++++++++-------- yarn.lock | 1 + 4 files changed, 317 insertions(+), 228 deletions(-) create mode 100644 .changeset/dull-ants-pull.md diff --git a/.changeset/dull-ants-pull.md b/.changeset/dull-ants-pull.md new file mode 100644 index 0000000000..66adf0898f --- /dev/null +++ b/.changeset/dull-ants-pull.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': minor +--- + +Migrated `UnregisterEntityDialog` from Material UI to Backstage UI components. diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index 4d137e524f..584fe79014 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -74,6 +74,7 @@ "@backstage/plugin-permission-common": "workspace:^", "@backstage/plugin-permission-react": "workspace:^", "@backstage/types": "workspace:^", + "@backstage/ui": "workspace:^", "@backstage/version-bridge": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", diff --git a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx index 54086a55a5..d1e13f4ef1 100644 --- a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx +++ b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx @@ -14,256 +14,302 @@ * limitations under the License. */ -import { Entity } from '@backstage/catalog-model'; +import { CompoundEntityRef, Entity } from '@backstage/catalog-model'; import { EntityRefLink } from '../EntityRefLink'; -import Box from '@material-ui/core/Box'; -import Button from '@material-ui/core/Button'; -import Dialog from '@material-ui/core/Dialog'; -import DialogActions from '@material-ui/core/DialogActions'; -import DialogContent from '@material-ui/core/DialogContent'; -import DialogContentText from '@material-ui/core/DialogContentText'; -import DialogTitle from '@material-ui/core/DialogTitle'; -import Divider from '@material-ui/core/Divider'; import { makeStyles } from '@material-ui/core/styles'; -import Alert from '@material-ui/lab/Alert'; -import { useCallback, useState } from 'react'; -import { useUnregisterEntityDialogState } from './useUnregisterEntityDialogState'; +import { ReactNode, useCallback, useState } from 'react'; +import { + UseUnregisterEntityDialogState, + useUnregisterEntityDialogState, +} from './useUnregisterEntityDialogState'; import { alertApiRef, configApiRef, useApi } from '@backstage/core-plugin-api'; import { Progress, ResponseErrorPanel } from '@backstage/core-components'; import { assertError } from '@backstage/errors'; import { catalogReactTranslationRef } from '../../translation'; import { useTranslationRef } from '@backstage/core-plugin-api/alpha'; +import { + Accordion, + AccordionPanel, + AccordionTrigger, + Alert, + Box, + Button, + Dialog, + DialogBody, + DialogFooter, + DialogHeader, + Text, +} from '@backstage/ui'; const useStyles = makeStyles({ - advancedButton: { - fontSize: '0.7em', - }, - dialogActions: { - display: 'inline-block', + bodyContent: { + overflowWrap: 'break-word', }, }); -const Contents = ({ - entity, - onConfirm, - onClose, -}: { - entity: Entity; - onConfirm: () => any; - onClose: () => any; -}) => { +type DialogHandlers = { + state: UseUnregisterEntityDialogState; + busyAction: 'unregister' | 'delete' | null; + onUnregister: () => Promise; + onDelete: () => Promise; + onClose: () => void; +}; + +function useUnregisterDialogHandlers( + entity: Entity, + onConfirm: () => void, + onClose: () => void, +): DialogHandlers { const alertApi = useApi(alertApiRef); - const configApi = useApi(configApiRef); - const classes = useStyles(); const state = useUnregisterEntityDialogState(entity); - const [showDelete, setShowDelete] = useState(false); - const [busy, setBusy] = useState(false); - const appTitle = configApi.getOptionalString('app.title') ?? 'Backstage'; + const [busyAction, setBusyAction] = useState<'unregister' | 'delete' | null>( + null, + ); const { t } = useTranslationRef(catalogReactTranslationRef); - const onUnregister = useCallback( - async function onUnregisterFn() { - if ('unregisterLocation' in state) { - setBusy(true); - try { - await state.unregisterLocation(); - onConfirm(); - } catch (err) { - assertError(err); - alertApi.post({ message: err.message }); - } finally { - setBusy(false); - } + const onUnregister = useCallback(async () => { + if ('unregisterLocation' in state) { + setBusyAction('unregister'); + try { + await state.unregisterLocation(); + onConfirm(); + } catch (err) { + assertError(err); + alertApi.post({ message: err.message }); + } finally { + setBusyAction(null); } - }, - [alertApi, onConfirm, state], - ); + } + }, [alertApi, onConfirm, state]); - const onDelete = useCallback( - async function onDeleteFn() { - if ('deleteEntity' in state) { - setBusy(true); - try { - await state.deleteEntity(); - const entityName = entity.metadata.title ?? entity.metadata.name; - onConfirm(); - alertApi.post({ - message: t('unregisterEntityDialog.deleteEntitySuccessMessage', { - entityName, - }), - severity: 'success', - display: 'transient', - }); - } catch (err) { - assertError(err); - alertApi.post({ message: err.message }); - } finally { - setBusy(false); - } + const onDelete = useCallback(async () => { + if ('deleteEntity' in state) { + setBusyAction('delete'); + try { + await state.deleteEntity(); + const entityName = entity.metadata.title ?? entity.metadata.name; + onConfirm(); + alertApi.post({ + message: t('unregisterEntityDialog.deleteEntitySuccessMessage', { + entityName, + }), + severity: 'success', + display: 'transient', + }); + } catch (err) { + assertError(err); + alertApi.post({ message: err.message }); + } finally { + setBusyAction(null); } - }, - [alertApi, onConfirm, state, entity, t], - ); + } + }, [alertApi, onConfirm, state, entity, t]); - const DialogActionsPanel = () => ( - - - - ); + return { state, busyAction, onUnregister, onDelete, onClose }; +} - if (state.type === 'loading') { - return ; - } +function AdvancedDeleteAccordion({ + triggerTitle, + description, + onDelete, + busyAction, +}: { + triggerTitle: string; + description: string; + onDelete: () => void; + busyAction: 'unregister' | 'delete' | null; +}) { + const { t } = useTranslationRef(catalogReactTranslationRef); - if (state.type === 'error') { - return ; - } - - if (state.type === 'bootstrap') { - return ( - <> - - {t('unregisterEntityDialog.bootstrapState.title', { - appTitle, - location: state.location, - })} - - - - {!showDelete && ( - <> - - - - )} - - {showDelete && ( - <> - - {t('unregisterEntityDialog.bootstrapState.advancedDescription')} - - - - - )} - - - ); - } - - if (state.type === 'only-delete') { - return ( - <> - - {t('unregisterEntityDialog.onlyDeleteStateTitle')} - - - - - ); - } - - if (state.type === 'unregister') { - return ( - <> - - {t('unregisterEntityDialog.unregisterState.title')} - - - {state.colocatedEntities.map(e => ( -
  • - -
  • - ))} -
    - - {t('unregisterEntityDialog.unregisterState.subTitle')} - - -
  • {state.location}
  • -
    - - {t('unregisterEntityDialog.unregisterState.description', { - appTitle, - })} - - - - {!showDelete && ( - - - - )} - - - {showDelete && ( - <> - - - - - {t('unregisterEntityDialog.unregisterState.advancedDescription')} - + return ( + + + + + {description} + - - )} - - ); - } + + + + + ); +} + +function BootstrapBody({ + location, + appTitle, + onDelete, + busyAction, +}: { + location: string; + appTitle: string; + onDelete: () => void; + busyAction: 'unregister' | 'delete' | null; +}) { + const { t } = useTranslationRef(catalogReactTranslationRef); return ( - - {t('unregisterEntityDialog.errorStateTitle')} - + <> + + + ); -}; +} + +function OnlyDeleteBody() { + const { t } = useTranslationRef(catalogReactTranslationRef); + + return {t('unregisterEntityDialog.onlyDeleteStateTitle')}; +} + +function UnregisterBody({ + state, + appTitle, + onDelete, + busyAction, +}: { + state: Extract; + appTitle: string; + onDelete: () => void; + busyAction: 'unregister' | 'delete' | null; +}) { + const { t } = useTranslationRef(catalogReactTranslationRef); + + return ( + <> + {t('unregisterEntityDialog.unregisterState.title')} +
      + {state.colocatedEntities.map((e: CompoundEntityRef) => ( +
    • + +
    • + ))} +
    + {t('unregisterEntityDialog.unregisterState.subTitle')} +
      +
    • {state.location}
    • +
    + + {t('unregisterEntityDialog.unregisterState.description', { + appTitle, + })} + + + + ); +} + +function useDialogContent( + handlers: DialogHandlers, + appTitle: string, +): { body: ReactNode; actionButton: ReactNode | null } { + const { t } = useTranslationRef(catalogReactTranslationRef); + const { state, busyAction, onUnregister, onDelete } = handlers; + + switch (state.type) { + case 'loading': + return { body: , actionButton: null }; + case 'error': + return { + body: , + actionButton: null, + }; + case 'bootstrap': + return { + body: ( + + ), + actionButton: null, + }; + case 'only-delete': + return { + body: , + actionButton: ( + + ), + }; + case 'unregister': + return { + body: ( + + ), + actionButton: ( + + ), + }; + default: + return { + body: ( + + ), + actionButton: null, + }; + } +} /** @public */ export type UnregisterEntityDialogProps = { @@ -273,18 +319,54 @@ export type UnregisterEntityDialogProps = { entity: Entity; }; +function DialogContents({ + entity, + onConfirm, + onClose, +}: { + entity: Entity; + onConfirm: () => void; + onClose: () => void; +}) { + const classes = useStyles(); + const { t } = useTranslationRef(catalogReactTranslationRef); + const configApi = useApi(configApiRef); + const appTitle = configApi.getOptionalString('app.title') ?? 'Backstage'; + + const handlers = useUnregisterDialogHandlers(entity, onConfirm, onClose); + const { body, actionButton } = useDialogContent(handlers, appTitle); + + return ( + <> + {t('unregisterEntityDialog.title')} + {body} + + + {actionButton} + + + ); +} + /** @public */ export const UnregisterEntityDialog = (props: UnregisterEntityDialogProps) => { const { open, onConfirm, onClose, entity } = props; - const { t } = useTranslationRef(catalogReactTranslationRef); + return ( - - - {t('unregisterEntityDialog.title')} - - - - + !isOpen && onClose()} + width={600} + > + {open && ( + + )} ); }; diff --git a/yarn.lock b/yarn.lock index d5683239f0..465548e3db 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5400,6 +5400,7 @@ __metadata: "@backstage/plugin-scaffolder-common": "workspace:^" "@backstage/test-utils": "workspace:^" "@backstage/types": "workspace:^" + "@backstage/ui": "workspace:^" "@backstage/version-bridge": "workspace:^" "@material-ui/core": "npm:^4.12.2" "@material-ui/icons": "npm:^4.9.1" From 62318ac5c9e869726de717f7d354a9c15c6b291c Mon Sep 17 00:00:00 2001 From: Johan Persson Date: Fri, 30 Jan 2026 13:56:24 +0100 Subject: [PATCH 097/107] ci(e2e): add BUI build step to E2E workflows The @backstage/ui package has a custom build script that is not recognized by `yarn backstage-cli repo build`, so it gets skipped. This caused E2E tests to fail when packages import JavaScript components from @backstage/ui. Add explicit BUI build step to Linux and Windows E2E workflows, matching the pattern already used in ci.yml and deploy_packages.yml. Signed-off-by: Johan Persson --- .github/workflows/verify_e2e-linux.yml | 2 ++ .github/workflows/verify_e2e-windows.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/verify_e2e-linux.yml b/.github/workflows/verify_e2e-linux.yml index 41ae7c06d0..1b98f8ec9a 100644 --- a/.github/workflows/verify_e2e-linux.yml +++ b/.github/workflows/verify_e2e-linux.yml @@ -66,6 +66,8 @@ jobs: - run: yarn tsc - run: yarn backstage-cli repo build + # BUI has a custom build script and needs to be built separately + - run: yarn --cwd packages/ui build - name: run E2E test run: | sudo sysctl fs.inotify.max_user_watches=524288 diff --git a/.github/workflows/verify_e2e-windows.yml b/.github/workflows/verify_e2e-windows.yml index 561963cc05..773d7d89f0 100644 --- a/.github/workflows/verify_e2e-windows.yml +++ b/.github/workflows/verify_e2e-windows.yml @@ -86,6 +86,8 @@ jobs: - run: yarn tsc - run: yarn backstage-cli repo build + # BUI has a custom build script and needs to be built separately + - run: yarn --cwd packages/ui build - name: run E2E test run: yarn e2e-test run env: From 05aac34984121f8c8a7b7c7360b099ef8e7a41e6 Mon Sep 17 00:00:00 2001 From: Johan Persson Date: Mon, 2 Feb 2026 12:45:24 +0100 Subject: [PATCH 098/107] feat(catalog): migrate DeleteEntityDialog and EntityOrphanWarning to Backstage UI Migrated DeleteEntityDialog and EntityOrphanWarning components from Material UI to Backstage UI. - DeleteEntityDialog now uses BUI Dialog, DialogHeader, DialogFooter, and Button components - EntityOrphanWarning now uses BUI Alert with an action button instead of a clickable alert - Updated translation: removed "Click here to delete" from description - Added new translation key `deleteEntity.actionButtonTitle` Signed-off-by: Johan Persson --- .changeset/smart-spoons-scream.md | 7 +++++ plugins/catalog/package.json | 1 + plugins/catalog/report-alpha.api.md | 3 +- plugins/catalog/src/alpha/translation.ts | 3 +- .../DeleteEntityDialog.tsx | 28 ++++++------------- .../EntityOrphanWarning.test.tsx | 5 +++- .../EntityOrphanWarning.tsx | 20 ++++++++++--- yarn.lock | 1 + 8 files changed, 42 insertions(+), 26 deletions(-) create mode 100644 .changeset/smart-spoons-scream.md diff --git a/.changeset/smart-spoons-scream.md b/.changeset/smart-spoons-scream.md new file mode 100644 index 0000000000..5abebc3ec5 --- /dev/null +++ b/.changeset/smart-spoons-scream.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-catalog': minor +--- + +Migrated `DeleteEntityDialog` and `EntityOrphanWarning` components to Backstage UI. + +The `deleteEntity.description` translation key no longer includes "Click here to delete" text. A new `deleteEntity.actionButtonTitle` key was added for the action button. diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index adfa7e15c0..75ecca801c 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -75,6 +75,7 @@ "@backstage/plugin-techdocs-common": "workspace:^", "@backstage/plugin-techdocs-react": "workspace:^", "@backstage/types": "workspace:^", + "@backstage/ui": "workspace:^", "@backstage/version-bridge": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", diff --git a/plugins/catalog/report-alpha.api.md b/plugins/catalog/report-alpha.api.md index e83089b611..950b7a4383 100644 --- a/plugins/catalog/report-alpha.api.md +++ b/plugins/catalog/report-alpha.api.md @@ -33,10 +33,11 @@ import { TranslationRef } from '@backstage/frontend-plugin-api'; export const catalogTranslationRef: TranslationRef< 'catalog', { - readonly 'deleteEntity.description': 'This entity is not referenced by any location and is therefore not receiving updates. Click here to delete.'; + readonly 'deleteEntity.description': 'This entity is not referenced by any location and is therefore not receiving updates.'; readonly 'deleteEntity.cancelButtonTitle': 'Cancel'; readonly 'deleteEntity.deleteButtonTitle': 'Delete'; readonly 'deleteEntity.dialogTitle': 'Are you sure you want to delete this entity?'; + readonly 'deleteEntity.actionButtonTitle': 'Delete entity'; readonly 'indexPage.title': '{{orgName}} Catalog'; readonly 'indexPage.createButtonTitle': 'Create'; readonly 'indexPage.supportButtonContent': 'All your software catalog entities'; diff --git a/plugins/catalog/src/alpha/translation.ts b/plugins/catalog/src/alpha/translation.ts index 2dc2f2d34e..498104db45 100644 --- a/plugins/catalog/src/alpha/translation.ts +++ b/plugins/catalog/src/alpha/translation.ts @@ -126,7 +126,8 @@ export const catalogTranslationRef = createTranslationRef({ deleteButtonTitle: 'Delete', cancelButtonTitle: 'Cancel', description: - 'This entity is not referenced by any location and is therefore not receiving updates. Click here to delete.', + 'This entity is not referenced by any location and is therefore not receiving updates.', + actionButtonTitle: 'Delete entity', }, entityProcessingErrorsDescription: 'The error below originates from', entityRelationWarningDescription: diff --git a/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.tsx b/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.tsx index e435ac2c48..2c350aebc5 100644 --- a/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.tsx +++ b/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.tsx @@ -16,15 +16,12 @@ import { Entity } from '@backstage/catalog-model'; import { catalogApiRef } from '@backstage/plugin-catalog-react'; -import Button from '@material-ui/core/Button'; -import Dialog from '@material-ui/core/Dialog'; -import DialogActions from '@material-ui/core/DialogActions'; -import DialogTitle from '@material-ui/core/DialogTitle'; import { useState } from 'react'; import { alertApiRef, useApi } from '@backstage/core-plugin-api'; import { assertError } from '@backstage/errors'; import { catalogTranslationRef } from '../../alpha/translation'; import { useTranslationRef } from '@backstage/core-plugin-api/alpha'; +import { Button, Dialog, DialogFooter, DialogHeader } from '@backstage/ui'; interface DeleteEntityDialogProps { open: boolean; @@ -55,23 +52,16 @@ export function DeleteEntityDialog(props: DeleteEntityDialogProps) { }; return ( - - - {t('deleteEntity.dialogTitle')} - - - - - + + ); } diff --git a/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.test.tsx b/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.test.tsx index bcf75ad08b..0b9f5889a0 100644 --- a/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.test.tsx +++ b/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.test.tsx @@ -61,8 +61,11 @@ describe('', () => { ); expect( screen.getByText( - 'This entity is not referenced by any location and is therefore not receiving updates. Click here to delete.', + 'This entity is not referenced by any location and is therefore not receiving updates.', ), ).toBeInTheDocument(); + expect( + screen.getByRole('button', { name: 'Delete entity' }), + ).toBeInTheDocument(); }); }); diff --git a/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.tsx b/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.tsx index 582e1a0a44..c179cd8662 100644 --- a/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.tsx +++ b/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.tsx @@ -16,7 +16,6 @@ import { Entity } from '@backstage/catalog-model'; import { useEntity } from '@backstage/plugin-catalog-react'; -import Alert from '@material-ui/lab/Alert'; import { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { DeleteEntityDialog } from './DeleteEntityDialog'; @@ -24,6 +23,7 @@ import { useRouteRef } from '@backstage/core-plugin-api'; import { rootRouteRef } from '../../routes'; import { catalogTranslationRef } from '../../alpha/translation'; import { useTranslationRef } from '@backstage/core-plugin-api/alpha'; +import { Alert, Button } from '@backstage/ui'; /** * Returns true if the given entity has the orphan annotation given by the @@ -55,9 +55,21 @@ export function EntityOrphanWarning() { return ( <> - setConfirmationDialogOpen(true)}> - {t('deleteEntity.description')} - + setConfirmationDialogOpen(true)} + > + {t('deleteEntity.actionButtonTitle')} + + } + /> Date: Mon, 2 Feb 2026 14:17:36 +0100 Subject: [PATCH 099/107] docs(changeset): simplify changelog entry for elasticsearch bulk refresh fix Signed-off-by: nojaf --- .changeset/fix-opensearch-bulk-refresh.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.changeset/fix-opensearch-bulk-refresh.md b/.changeset/fix-opensearch-bulk-refresh.md index 29657235a1..17a791519d 100644 --- a/.changeset/fix-opensearch-bulk-refresh.md +++ b/.changeset/fix-opensearch-bulk-refresh.md @@ -2,8 +2,4 @@ '@backstage/plugin-search-backend-module-elasticsearch': patch --- -Fixed inefficient bulk refresh behavior where `refreshOnCompletion: true` caused a full cluster refresh of all indexes instead of refreshing only the specific index being populated. - -When using the Elasticsearch/OpenSearch bulk helper, passing `refreshOnCompletion: true` triggers a refresh of `_all` indexes. This change restores the original behavior of passing the specific index name, ensuring only the target index is refreshed after bulk indexing completes. - -This fix improves performance for OpenSearch/Elasticsearch deployments, especially in multi-tenant environments or clusters with many indexes. +Fixed bulk indexing to refresh only the target index instead of all indexes, improving performance in multi-index deployments. From 04ce15e84db8dfcd1a88cf19f5f3eacd06dbea00 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Feb 2026 14:57:47 +0000 Subject: [PATCH 100/107] chore(deps): update dependency tar to v7.5.7 [security] Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 62b5c7e234..bf53ccbb1c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -47972,15 +47972,15 @@ __metadata: linkType: hard "tar@npm:^7.4.3, tar@npm:^7.5.6": - version: 7.5.6 - resolution: "tar@npm:7.5.6" + version: 7.5.7 + resolution: "tar@npm:7.5.7" dependencies: "@isaacs/fs-minipass": "npm:^4.0.0" chownr: "npm:^3.0.0" minipass: "npm:^7.1.2" minizlib: "npm:^3.1.0" yallist: "npm:^5.0.0" - checksum: 10/cf4a84d79b9327fcf765f2ea16de4702b9b8dd7dc6b1840b16e0f999628d96b81b2c7efbf83d4eb42b0164856f1db887a5a61ffef97d36cdb77cac742219f9ee + checksum: 10/0d6938dd32fe5c0f17c8098d92bd9889ee0ed9d11f12381b8146b6e8c87bb5aa49feec7abc42463f0597503d8e89e4c4c0b42bff1a5a38444e918b4878b7fd21 languageName: node linkType: hard From 8175607ad9f761379423ca5e9b244b799cfe98c2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Feb 2026 14:58:58 +0000 Subject: [PATCH 101/107] chore(deps): update dependency cors to v2.8.6 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 62b5c7e234..66fc88c8cc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -27681,12 +27681,12 @@ __metadata: linkType: hard "cors@npm:^2.8.4, cors@npm:^2.8.5": - version: 2.8.5 - resolution: "cors@npm:2.8.5" + version: 2.8.6 + resolution: "cors@npm:2.8.6" dependencies: object-assign: "npm:^4" vary: "npm:^1" - checksum: 10/66e88e08edee7cbce9d92b4d28a2028c88772a4c73e02f143ed8ca76789f9b59444eed6b1c167139e76fa662998c151322720093ba229f9941365ada5a6fc2c6 + checksum: 10/aa7174305b21ceb90f9c84f4eaa32f04432d333addbfdc0d1eb7310393c48902e5364aada5ac2f5d054528d63b3179238444475426fcb74e1e345077de485727 languageName: node linkType: hard From 22a10bde0f3e06b590314979a09c0b4ca586a4ab Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Feb 2026 14:59:20 +0000 Subject: [PATCH 102/107] chore(deps): update dependency mysql2 to v3.16.2 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/yarn.lock b/yarn.lock index 62b5c7e234..4c16fae242 100644 --- a/yarn.lock +++ b/yarn.lock @@ -25234,10 +25234,10 @@ __metadata: languageName: node linkType: hard -"aws-ssl-profiles@npm:^1.1.1": - version: 1.1.1 - resolution: "aws-ssl-profiles@npm:1.1.1" - checksum: 10/7293640f29d7b9baf62bcc4e36228c0b7cd435053bbe5535a367dc7fcd76ffdf7f1c7078181147f5d666cc316abb65ce098e64e403f882a49937a4942080a8ea +"aws-ssl-profiles@npm:^1.1.2": + version: 1.1.2 + resolution: "aws-ssl-profiles@npm:1.1.2" + checksum: 10/af9e5c5e6e343e0f299106acaf03106a7458be69772d004f3e4cf0e3649bb41131b594126fcbc997ad89d73752d9e1d72886c72fcc8649ac5d590459d6b75827 languageName: node linkType: hard @@ -33939,12 +33939,12 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:^0.7.0": - version: 0.7.0 - resolution: "iconv-lite@npm:0.7.0" +"iconv-lite@npm:^0.7.0, iconv-lite@npm:^0.7.2": + version: 0.7.2 + resolution: "iconv-lite@npm:0.7.2" dependencies: safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 10/5bfc897fedfb7e29991ae5ef1c061ed4f864005f8c6d61ef34aba6a3885c04bd207b278c0642b041383aeac2d11645b4319d0ca7b863b0be4be0cde1c9238ca7 + checksum: 10/24c937b532f868e938386b62410b303b7c767ce3d08dc2829cbe59464d5a26ef86ae5ad1af6b34eec43ddfea39e7d101638644b0178d67262fa87015d59f983a languageName: node linkType: hard @@ -37724,10 +37724,10 @@ __metadata: languageName: node linkType: hard -"long@npm:^5.0.0, long@npm:^5.2.1": - version: 5.2.3 - resolution: "long@npm:5.2.3" - checksum: 10/9167ec6947a825b827c30da169a7384eec6c0c9ec2f0b9c74da2e93d81159bbe39fb09c3f13dae9721d4b807ccfa09797a7dd1012f5d478e3e33ca3c78b608e6 +"long@npm:^5.0.0, long@npm:^5.3.2": + version: 5.3.2 + resolution: "long@npm:5.3.2" + checksum: 10/b6b55ddae56fcce2864d37119d6b02fe28f6dd6d9e44fd22705f86a9254b9321bd69e9ffe35263b4846d54aba197c64882adcb8c543f2383c1e41284b321ea64 languageName: node linkType: hard @@ -37851,7 +37851,7 @@ __metadata: languageName: node linkType: hard -"lru.min@npm:^1.0.0, lru.min@npm:^1.1.0": +"lru.min@npm:^1.1.0, lru.min@npm:^1.1.3": version: 1.1.3 resolution: "lru.min@npm:1.1.3" checksum: 10/b741bf51e6f2620f35f66657c31a37bb4e6aaa3d7f4dfd8a657cd4e6a4d75be881057d71f54a907a4938d5993677d92cdfa71203054a73af6978514ba73767ee @@ -39654,19 +39654,19 @@ __metadata: linkType: hard "mysql2@npm:^3.0.0": - version: 3.16.1 - resolution: "mysql2@npm:3.16.1" + version: 3.16.2 + resolution: "mysql2@npm:3.16.2" dependencies: - aws-ssl-profiles: "npm:^1.1.1" + aws-ssl-profiles: "npm:^1.1.2" denque: "npm:^2.1.0" generate-function: "npm:^2.3.1" - iconv-lite: "npm:^0.7.0" - long: "npm:^5.2.1" - lru.min: "npm:^1.0.0" + iconv-lite: "npm:^0.7.2" + long: "npm:^5.3.2" + lru.min: "npm:^1.1.3" named-placeholders: "npm:^1.1.6" seq-queue: "npm:^0.0.5" - sqlstring: "npm:^2.3.2" - checksum: 10/c4e61df1e7855161966f2efd83f08322403e876194d9bc514606e1be2a91326e94d7d18b9d398c625df91a5df1e5ba73ff44c2a54c5238e1b04c00b876072215 + sqlstring: "npm:^2.3.3" + checksum: 10/b44cff80bb804b56eec422cce65555ea3879d8bb1ccc0e1e26df09c8300167a123396e8591da09c1f8769d16d498f9aa454d0b0a11e53235cfd403f0f6597ba2 languageName: node linkType: hard @@ -46872,10 +46872,10 @@ __metadata: languageName: node linkType: hard -"sqlstring@npm:^2.3.2": - version: 2.3.2 - resolution: "sqlstring@npm:2.3.2" - checksum: 10/56fd2851ce6054f1185722bf7da4dbbd1ed24af64073ce58f142d5f6c62451d4a6dbad80999880debcdf764b37340f8f93155d641983e619a13abe5531849255 +"sqlstring@npm:^2.3.3": + version: 2.3.3 + resolution: "sqlstring@npm:2.3.3" + checksum: 10/4e5a25af2d77a031fe00694034bf9fd822ddc3a483c9383124b120aa6b9ae9ab71e173cd29fba9c653998ebfef9e97be668957839960b9b3dc1afcb45f1ddb64 languageName: node linkType: hard From 196d619318e4c19be72d4584a36b55f3e569115b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Feb 2026 15:02:35 +0000 Subject: [PATCH 103/107] chore(deps): update dependency core-js to v3.48.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 62b5c7e234..434694086d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -27660,9 +27660,9 @@ __metadata: linkType: hard "core-js@npm:^3.6.5": - version: 3.47.0 - resolution: "core-js@npm:3.47.0" - checksum: 10/c02dc6a091c7e6799e3527dc06a428c44bbcff7f8f6ee700ff818b90aa2ebaf1f17b0234146e692811da97cda5a39a6095ecadec9fd1a74b1135103eb0e96cb1 + version: 3.48.0 + resolution: "core-js@npm:3.48.0" + checksum: 10/08bb3cc9b3225b905e72370c18257a14bb5563946d9eb7496799e0ee4f13231768b980ffe98434df7dbd0f8209bd2c19519938a2fa94846b2c82c2d5aa804037 languageName: node linkType: hard From ea358e53df90af3178f52b45ea129676d303aad1 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 2 Feb 2026 16:20:45 +0100 Subject: [PATCH 104/107] workflows: add v2 PR automation workflow Signed-off-by: Patrik Oldsberg --- .github/workflows/sync_pull_requests.yml | 29 ++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/sync_pull_requests.yml diff --git a/.github/workflows/sync_pull_requests.yml b/.github/workflows/sync_pull_requests.yml new file mode 100644 index 0000000000..647b7dbe93 --- /dev/null +++ b/.github/workflows/sync_pull_requests.yml @@ -0,0 +1,29 @@ +name: Sync Pull Requests + +on: + pull_request_target: + types: [opened, synchronize, reopened, labeled, unlabeled] + pull_request_review: + types: [submitted, dismissed] + issue_comment: + types: [created, edited] + +jobs: + label: + # prevent running towards forks and from bots + if: github.repository == 'backstage/backstage' && github.event.sender.type != 'Bot' + runs-on: ubuntu-latest + steps: + - name: Harden Runner + uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3 + with: + egress-policy: audit + + - name: Backstage PR automation + uses: backstage/actions/pr-automation@67179ab45898a95ba94a4b196131a3241d72a2a1 # v0.7.0 + with: + app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }} + private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }} + installation-id: ${{ secrets.BACKSTAGE_GOALIE_INSTALLATION_ID }} + project-owner: backstage + project-number: '14' From 5d71d7e0b45993a29a123a62d8d2c71182d329ef Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 2 Feb 2026 19:41:24 +0100 Subject: [PATCH 105/107] Apply suggestions from code review Signed-off-by: Patrik Oldsberg --- .changeset/odd-lemons-occur.md | 2 +- .changeset/slow-numbers-study.md | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.changeset/odd-lemons-occur.md b/.changeset/odd-lemons-occur.md index 2b536bf012..695ed3c80c 100644 --- a/.changeset/odd-lemons-occur.md +++ b/.changeset/odd-lemons-occur.md @@ -2,4 +2,4 @@ '@backstage/frontend-plugin-api': minor --- -new deprecation warning will be thrown by the framework `pluginId` should have letters, digits, and dashes, starting with a letter +Plugin IDs that do not match the standard format are deprecated (letters, digits, and dashes only, starting with a letter). Plugin IDs that do no match this format will be rejected in a future release. diff --git a/.changeset/slow-numbers-study.md b/.changeset/slow-numbers-study.md index e53009bffa..fe7203e169 100644 --- a/.changeset/slow-numbers-study.md +++ b/.changeset/slow-numbers-study.md @@ -2,4 +2,6 @@ '@backstage/backend-plugin-api': minor --- -The backend will now throw an error if a plugin or a module doesn't have a valid ID +Plugin IDs that do not match the standard format are deprecated (letters, digits, and dashes only, starting with a letter). Plugin IDs that do no match this format will be rejected in a future release. + +In addition, plugin IDs that don't match the legacy pattern that also allows underscores, with be rejected. From 283c1b47424facd211c14feefce3838bd3b45af8 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 2 Feb 2026 20:27:46 +0100 Subject: [PATCH 106/107] .github/copilot-instructions: add pull request scoring Signed-off-by: Patrik Oldsberg --- .github/copilot-instructions.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index ee3fe6fda0..6a5c5beb81 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -42,3 +42,15 @@ Never update ESLint, Prettier, or TypeScript configuration files unless specific ## Repository Structure See `/docs/contribute/project-structure.md` for a detailed description of the repository structure. + +## Pull Request Reviews + +When reviewing a pull request you MUST calculate a priority score between 0 and 100, where a higher score indicates higher priority. You MUST include the score as an HTML comment at the very beginning of the "PR Overview" section, using the following format: ``. + +The score MUST be calculated as a sum of the following: + +- **60% Guideline Adherence**: How well does the pull request follow the project guidelines in `/STYLE.md`, `/REVIEWING.md`, `/CONTRIBUTING.md`, and `/SECURITY.md`? A pull request that fully adheres to all guidelines scores 60 points, while one that violates multiple guidelines scores closer to 0. + +- **40% Complexity**: How straightforward is the pull request? A simple bug fix or documentation update scores the full 40 points. A complex API change, new feature, or architectural modification scores closer to 0. + +Higher priority pull requests (higher scores) are those that are both well-crafted according to project standards AND easy to review and merge quickly. From a69269def15dc710ed9f67be5fd2fb4370711147 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 2 Feb 2026 22:23:34 +0100 Subject: [PATCH 107/107] workflows: bump and split pull request review automation Signed-off-by: Patrik Oldsberg --- .../workflows/sync_pull-requests-trigger.yml | 65 +++++++++++++++++++ ...ll_requests.yml => sync_pull-requests.yml} | 21 +++--- 2 files changed, 76 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/sync_pull-requests-trigger.yml rename .github/workflows/{sync_pull_requests.yml => sync_pull-requests.yml} (54%) diff --git a/.github/workflows/sync_pull-requests-trigger.yml b/.github/workflows/sync_pull-requests-trigger.yml new file mode 100644 index 0000000000..499e7a1e1d --- /dev/null +++ b/.github/workflows/sync_pull-requests-trigger.yml @@ -0,0 +1,65 @@ +name: Sync Pull Requests Trigger + +on: + pull_request_target: + types: [opened, synchronize, reopened, labeled, unlabeled] + pull_request_review: + types: [submitted, dismissed] + issue_comment: + types: [created] + +concurrency: + group: sync-pr-trigger-${{ github.event.pull_request.number || github.event.issue.number }} + cancel-in-progress: true + +jobs: + # Run directly for pull_request_target since it has secrets access + label: + if: > + github.repository == 'backstage/backstage' && + github.event.sender.type != 'Bot' && + github.event_name == 'pull_request_target' + runs-on: ubuntu-latest + steps: + - name: Harden Runner + uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3 + with: + egress-policy: audit + + - name: Backstage PR automation + uses: backstage/actions/pr-automation@c0110c14def021f64b4774335b0d55ac705b9318 # v0.7.1 + with: + app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }} + private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }} + installation-id: ${{ secrets.BACKSTAGE_GOALIE_INSTALLATION_ID }} + project-owner: backstage + project-number: '14' + + # Dispatch event for other triggers to be processed with secrets access + trigger: + if: > + github.repository == 'backstage/backstage' && + github.event.sender.type != 'Bot' && + github.event_name != 'pull_request_target' && + (github.event.pull_request || github.event.issue.pull_request) + runs-on: ubuntu-latest + steps: + - name: Harden Runner + uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3 + with: + egress-policy: audit + + - name: Dispatch sync event + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + await github.rest.repos.createDispatchEvent({ + owner: context.repo.owner, + repo: context.repo.repo, + event_type: 'sync-pull-requests', + client_payload: { + 'pr-number': String(context.payload.pull_request?.number || context.payload.issue?.number), + 'label-added': context.payload.action === 'labeled' ? context.payload.label?.name : '', + 'review-state': context.payload.review?.state || '', + }, + }); diff --git a/.github/workflows/sync_pull_requests.yml b/.github/workflows/sync_pull-requests.yml similarity index 54% rename from .github/workflows/sync_pull_requests.yml rename to .github/workflows/sync_pull-requests.yml index 647b7dbe93..af75906ac2 100644 --- a/.github/workflows/sync_pull_requests.yml +++ b/.github/workflows/sync_pull-requests.yml @@ -1,17 +1,15 @@ name: Sync Pull Requests on: - pull_request_target: - types: [opened, synchronize, reopened, labeled, unlabeled] - pull_request_review: - types: [submitted, dismissed] - issue_comment: - types: [created, edited] + repository_dispatch: + types: [sync-pull-requests] + +concurrency: + group: sync-pr-${{ github.event.client_payload.pr-number }} + cancel-in-progress: true jobs: - label: - # prevent running towards forks and from bots - if: github.repository == 'backstage/backstage' && github.event.sender.type != 'Bot' + run: runs-on: ubuntu-latest steps: - name: Harden Runner @@ -20,10 +18,13 @@ jobs: egress-policy: audit - name: Backstage PR automation - uses: backstage/actions/pr-automation@67179ab45898a95ba94a4b196131a3241d72a2a1 # v0.7.0 + uses: backstage/actions/pr-automation@c0110c14def021f64b4774335b0d55ac705b9318 # v0.7.1 with: app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }} private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }} installation-id: ${{ secrets.BACKSTAGE_GOALIE_INSTALLATION_ID }} project-owner: backstage project-number: '14' + pr-number: ${{ github.event.client_payload.pr-number }} + label-added: ${{ github.event.client_payload.label-added }} + review-state: ${{ github.event.client_payload.review-state }}